@loadsmart/loadsmart-ui 8.0.0 → 8.0.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 (184) hide show
  1. package/dist/DragDropFile.context-oKnUu6d3.js.map +1 -1
  2. package/dist/common/BackButton/BackButton.d.ts +2 -1
  3. package/dist/common/CloseButton/CloseButton.d.ts +3 -2
  4. package/dist/common/SelectionWrapper.d.ts +8 -8
  5. package/dist/components/Accordion/Accordion.context.d.ts +6 -6
  6. package/dist/components/Accordion/Accordion.d.ts +11 -11
  7. package/dist/components/Accordion/Accordion.stories.d.ts +5 -4
  8. package/dist/components/Banner/Banner.d.ts +14 -14
  9. package/dist/components/Banner/Banner.stories.d.ts +11 -11
  10. package/dist/components/Breadcrumbs/Breadcrumb.d.ts +5 -5
  11. package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +6 -6
  12. package/dist/components/Button/Button.d.ts +8 -8
  13. package/dist/components/Button/Button.stories.d.ts +7 -7
  14. package/dist/components/Calendar/Calendar.d.ts +3 -2
  15. package/dist/components/Calendar/Calendar.stories.d.ts +3 -2
  16. package/dist/components/Calendar/Calendar.types.d.ts +4 -4
  17. package/dist/components/Calendar/Date.helper.d.ts +27 -54
  18. package/dist/components/Calendar/DateFormat.helper.d.ts +1 -3
  19. package/dist/components/Calendar/Month.helper.d.ts +5 -5
  20. package/dist/components/Calendar/PickerModeToggle.d.ts +2 -1
  21. package/dist/components/Calendar/Pickers/DayPicker.d.ts +2 -1
  22. package/dist/components/Calendar/Pickers/MonthPicker.d.ts +2 -1
  23. package/dist/components/Calendar/Pickers/YearPicker.d.ts +2 -1
  24. package/dist/components/Calendar/useCalendar.d.ts +4 -9
  25. package/dist/components/Card/Card.d.ts +5 -5
  26. package/dist/components/Card/CardTitle.d.ts +3 -3
  27. package/dist/components/Checkbox/Checkbox.d.ts +6 -6
  28. package/dist/components/Checkbox/Checkbox.stories.d.ts +2 -1
  29. package/dist/components/DatePicker/DatePicker.d.ts +2 -2
  30. package/dist/components/DatePicker/DatePicker.stories.d.ts +2 -1
  31. package/dist/components/DatePicker/DateRangePicker.d.ts +2 -1
  32. package/dist/components/DatePicker/DateRangePicker.stories.d.ts +2 -1
  33. package/dist/components/Dialog/Dialog.d.ts +13 -13
  34. package/dist/components/Dialog/Dialog.stories.d.ts +10 -9
  35. package/dist/components/DragDropFile/DragDropFile.context.d.ts +1 -1
  36. package/dist/components/DragDropFile/DragDropFile.d.ts +2 -2
  37. package/dist/components/DragDropFile/DragDropFile.stories.d.ts +5 -4
  38. package/dist/components/DragDropFile/components/DropZone.d.ts +2 -1
  39. package/dist/components/DragDropFile/components/FileItem.d.ts +2 -1
  40. package/dist/components/DragDropFile/components/FileList.d.ts +2 -1
  41. package/dist/components/DragDropFile/types.d.ts +4 -4
  42. package/dist/components/Drawer/Drawer.d.ts +7 -7
  43. package/dist/components/Dropdown/Dropdown.d.ts +2 -5
  44. package/dist/components/Dropdown/Dropdown.types.d.ts +1 -1
  45. package/dist/components/Dropdown/DropdownMenu.d.ts +2 -2
  46. package/dist/components/Dropdown/DropdownTrigger.d.ts +9 -9
  47. package/dist/components/EmptyState/EmptyState.d.ts +1 -1
  48. package/dist/components/EmptyState/EmptyState.stories.d.ts +8 -7
  49. package/dist/components/EmptyState/EmptyState.types.d.ts +2 -2
  50. package/dist/components/EmptyState/index.d.ts +1 -1
  51. package/dist/components/ErrorMessage/ErrorMessage.stories.d.ts +3 -2
  52. package/dist/components/HighlightMatch/HighlightMatch.d.ts +4 -4
  53. package/dist/components/IconFactory/IconFactory.d.ts +8 -8
  54. package/dist/components/IconFactory/IconFactory.fixtures.d.ts +6 -6
  55. package/dist/components/Label/Label.d.ts +9 -9
  56. package/dist/components/Label/Label.stories.d.ts +2 -1
  57. package/dist/components/Layout/Box.d.ts +8 -9
  58. package/dist/components/Layout/Grid.d.ts +4 -5
  59. package/dist/components/Layout/Group.d.ts +5 -6
  60. package/dist/components/Layout/Layout.stories.d.ts +8 -7
  61. package/dist/components/Layout/Sidebar.d.ts +6 -7
  62. package/dist/components/Layout/Stack.d.ts +5 -6
  63. package/dist/components/Layout/Switcher.d.ts +5 -6
  64. package/dist/components/Link/Link.d.ts +3 -3
  65. package/dist/components/Link/Link.stories.d.ts +2 -1
  66. package/dist/components/Loaders/LoadingBar.d.ts +6 -6
  67. package/dist/components/Loaders/LoadingDots.d.ts +4 -3
  68. package/dist/components/Loaders/Spinner.d.ts +4 -3
  69. package/dist/components/Modal/Modal.d.ts +3 -3
  70. package/dist/components/Modal/Modal.stories.d.ts +4 -3
  71. package/dist/components/Pagination/Pagination.d.ts +2 -1
  72. package/dist/components/Pagination/Pagination.types.d.ts +4 -4
  73. package/dist/components/Pagination/PaginationItem.d.ts +2 -1
  74. package/dist/components/Popover/Popover.d.ts +4 -3
  75. package/dist/components/ProgressBar/ProgressBar.d.ts +6 -6
  76. package/dist/components/ProgressBar/ProgressBar.stories.d.ts +2 -1
  77. package/dist/components/Radio/Radio.d.ts +6 -6
  78. package/dist/components/Radio/Radio.stories.d.ts +2 -1
  79. package/dist/components/Section/Section.d.ts +4 -4
  80. package/dist/components/Section/Sections.stories.d.ts +2 -1
  81. package/dist/components/Select/Select.d.ts +1 -1
  82. package/dist/components/Select/Select.fixtures.d.ts +4 -4
  83. package/dist/components/Select/Select.types.d.ts +14 -14
  84. package/dist/components/Select/SelectCreatableOption.d.ts +2 -1
  85. package/dist/components/Select/SelectEmpty.d.ts +2 -1
  86. package/dist/components/Select/SelectOption.d.ts +2 -1
  87. package/dist/components/Select/useSelect.d.ts +0 -2
  88. package/dist/components/SideNavigation/Logo/Logo.d.ts +4 -4
  89. package/dist/components/SideNavigation/Menu/Menu.d.ts +5 -5
  90. package/dist/components/SideNavigation/Menu/MenuBaseItem.d.ts +7 -7
  91. package/dist/components/SideNavigation/Menu/MenuExpandable.d.ts +3 -3
  92. package/dist/components/SideNavigation/Menu/MenuLink.d.ts +5 -5
  93. package/dist/components/SideNavigation/Separator/Separator.d.ts +3 -2
  94. package/dist/components/SideNavigation/SideNavigation.d.ts +13 -13
  95. package/dist/components/SideNavigation/SideNavigation.stories.d.ts +2 -1
  96. package/dist/components/Steps/ProgressSteps/ProgressStep.d.ts +5 -5
  97. package/dist/components/Steps/ProgressSteps/ProgressSteps.d.ts +4 -3
  98. package/dist/components/Steps/Steps.d.ts +7 -7
  99. package/dist/components/Steps/Steps.types.d.ts +2 -2
  100. package/dist/components/Steps/StepsStep.d.ts +4 -4
  101. package/dist/components/Steps/useSteps.d.ts +2 -2
  102. package/dist/components/Switch/Switch.d.ts +6 -6
  103. package/dist/components/Table/Selection.d.ts +5 -5
  104. package/dist/components/Table/Table.d.ts +14 -13
  105. package/dist/components/Table/Table.stories.d.ts +7 -6
  106. package/dist/components/Table/Table.types.d.ts +5 -5
  107. package/dist/components/Table/TableSortHandle.d.ts +3 -2
  108. package/dist/components/Table/useSortBy.d.ts +3 -3
  109. package/dist/components/TablePagination/RowsPerPage.d.ts +2 -1
  110. package/dist/components/TablePagination/TablePagination.d.ts +2 -1
  111. package/dist/components/TablePagination/TablePaginationActions.d.ts +1 -1
  112. package/dist/components/Tabs/Tabs.d.ts +10 -10
  113. package/dist/components/Tabs/Tabs.stories.d.ts +3 -2
  114. package/dist/components/Tag/Tag.d.ts +11 -11
  115. package/dist/components/Tag/Tag.stories.d.ts +5 -5
  116. package/dist/components/TextField/TextField.d.ts +7 -7
  117. package/dist/components/TextField/TextField.stories.d.ts +2 -1
  118. package/dist/components/Textarea/Textarea.d.ts +7 -7
  119. package/dist/components/Textarea/Textarea.stories.d.ts +2 -1
  120. package/dist/components/Toast/Toast.d.ts +7 -7
  121. package/dist/components/Toast/Toast.stories.d.ts +2 -1
  122. package/dist/components/ToggleGroup/Toggle.d.ts +2 -1
  123. package/dist/components/ToggleGroup/ToggleGroup.d.ts +3 -2
  124. package/dist/components/Tooltip/Tooltip.d.ts +6 -6
  125. package/dist/components/Tooltip/Tooltip.stories.d.ts +4 -3
  126. package/dist/components/TopNavigation/Logo/Logo.d.ts +4 -4
  127. package/dist/components/TopNavigation/Menu/Menu.d.ts +7 -7
  128. package/dist/components/TopNavigation/Menu/MenuItemDropdown.d.ts +8 -8
  129. package/dist/components/TopNavigation/Menu/MenuItemIcon.d.ts +7 -7
  130. package/dist/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.d.ts +6 -5
  131. package/dist/components/TopNavigation/TopNavigation.d.ts +5 -5
  132. package/dist/components/TopNavigation/TopNavigation.stories.d.ts +2 -1
  133. package/dist/components/VisuallyHidden/VisuallyHidden.stories.d.ts +2 -1
  134. package/dist/hooks/useDidMount/useDidMount.d.ts +1 -1
  135. package/dist/hooks/useFingerprint/useFingerprint.d.ts +0 -1
  136. package/dist/hooks/useFocusTrap/useFocusTrap.d.ts +7 -8
  137. package/dist/hooks/useFocusWithin/useFocusWithin.d.ts +1 -1
  138. package/dist/hooks/useHeightExpansionToggler/useHeightExpansionToggler.d.ts +3 -3
  139. package/dist/hooks/useSelectable/SelectableStrategy.d.ts +4 -4
  140. package/dist/hooks/useSelectable/useSelectable.types.d.ts +2 -2
  141. package/dist/index.js +316 -257
  142. package/dist/index.js.map +1 -1
  143. package/dist/{miranda-compatibility.theme-kYNEZ7mW.js → miranda-compatibility.theme-CIu9fa89.js} +2 -2
  144. package/dist/miranda-compatibility.theme-CIu9fa89.js.map +1 -0
  145. package/dist/{prop-K2Z3EsyG.js → prop-Fs2axl9W.js} +12 -18
  146. package/dist/prop-Fs2axl9W.js.map +1 -0
  147. package/dist/styles/activatable.d.ts +2 -3
  148. package/dist/styles/disableable.d.ts +3 -3
  149. package/dist/styles/ellipsizable.d.ts +1 -2
  150. package/dist/styles/focusable.d.ts +3 -3
  151. package/dist/styles/font.d.ts +0 -1
  152. package/dist/styles/hidden.d.ts +1 -2
  153. package/dist/styles/hoverable.d.ts +3 -3
  154. package/dist/styles/transition.d.ts +0 -1
  155. package/dist/styles/typography.d.ts +6 -7
  156. package/dist/testing/DatePickerEvent/DatePickerEvent.d.ts +7 -12
  157. package/dist/testing/DatePickerEvent/DateRangePickerEvent.d.ts +7 -12
  158. package/dist/testing/SelectEvent/SelectEvent.d.ts +11 -19
  159. package/dist/testing/getInterpolatedStyles/getInterpolatedStyles.d.ts +2 -2
  160. package/dist/testing/index.js +7 -9
  161. package/dist/testing/index.js.map +1 -1
  162. package/dist/tests/generator.d.ts +2 -2
  163. package/dist/tests/renderer.d.ts +5 -4
  164. package/dist/theming/index.d.ts +3 -3
  165. package/dist/theming/index.js +2 -2
  166. package/dist/theming/index.js.map +1 -1
  167. package/dist/theming/theming.helpers.d.ts +2 -2
  168. package/dist/toArray-BJJzFRD1.js +13 -0
  169. package/dist/toArray-BJJzFRD1.js.map +1 -0
  170. package/dist/tools/conditional.d.ts +3 -3
  171. package/dist/tools/index.js +1 -1
  172. package/dist/tools/prop.d.ts +1 -1
  173. package/dist/utils/toolset/getID.d.ts +0 -6
  174. package/dist/utils/toolset/highlightMatch.d.ts +5 -6
  175. package/dist/utils/toolset/keyboard.d.ts +3 -4
  176. package/dist/utils/toolset/toArray.d.ts +7 -1
  177. package/package.json +53 -56
  178. package/dist/miranda-compatibility.theme-kYNEZ7mW.js.map +0 -1
  179. package/dist/prop-K2Z3EsyG.js.map +0 -1
  180. package/dist/toArray-Dxb1kUxx.js +0 -14
  181. package/dist/toArray-Dxb1kUxx.js.map +0 -1
  182. package/dist/utils/toolset/flatten.d.ts +0 -2
  183. package/dist/utils/toolset/isThenable.d.ts +0 -5
  184. package/dist/utils/toolset/isThenable.test.d.ts +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/styles/transition.tsx","../src/components/IconFactory/IconFactory.tsx","../src/components/Icon/assets/back.svg","../src/components/Icon/assets/burger-menu.svg","../src/components/Icon/assets/calendar.svg","../src/components/Icon/assets/caret-down.svg","../src/components/Icon/assets/caret-left.svg","../src/components/Icon/assets/check.svg","../src/components/Icon/assets/chevron-down.svg","../src/components/Icon/assets/caret-right.svg","../src/components/Icon/assets/circle.svg","../src/components/Icon/assets/close.svg","../src/components/Icon/assets/information.svg","../src/components/Icon/assets/minus.svg","../src/components/Icon/assets/plus.svg","../src/components/Icon/assets/refresh.svg","../src/components/Icon/assets/sort-asc.svg","../src/components/Icon/assets/sort-desc.svg","../src/components/Icon/assets/sort.svg","../src/components/Icon/assets/upload.svg","../src/components/Icon/assets/warning.svg","../src/components/Icon/assets/dots-horizontal.svg","../src/components/Icon/assets/caret-right-last.svg","../src/components/Icon/Icon.tsx","../src/utils/toolset/interleave.ts","../src/styles/activatable.tsx","../src/styles/disableable.tsx","../src/styles/ellipsizable.tsx","../src/styles/focusable.tsx","../src/styles/hoverable.tsx","../src/styles/font.tsx","../src/styles/typography.ts","../src/components/Loaders/Spinner.tsx","../src/components/Layout/Layout.utils.ts","../src/components/Layout/Group.tsx","../src/components/Layout/Stack.tsx","../src/components/Layout/Box.tsx","../src/components/Layout/Sidebar.tsx","../src/components/Layout/Switcher.tsx","../src/components/Layout/Grid.tsx","../src/components/Layout/Layout.tsx","../src/components/Loaders/LoadingBar.tsx","../src/components/Loaders/LoadingDots.tsx","../src/components/Button/Button.tsx","../src/common/CloseButton/CloseButton.tsx","../src/common/BackButton/BackButton.tsx","../src/common/SelectionWrapper.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/hooks/useFocusWithin/useFocusWithin.ts","../src/utils/types/Status.ts","../src/components/TextField/TextField.tsx","../src/components/TextField/useTextField.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Link/useSafeLink.ts","../src/components/Link/Link.tsx","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/hooks/useDidMount/useDidMount.ts","../src/hooks/useSelectable/SelectableStrategy.ts","../src/utils/toolset/getID.ts","../src/hooks/useFingerprint/useFingerprint.ts","../src/hooks/useSelectable/useSelectable.ts","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/ToggleGroup/Toggle.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tabs/TabsContext.ts","../src/hooks/useID/useID.ts","../src/components/Tabs/Tabs.tsx","../src/components/Section/Section.tsx","../src/styles/hidden.tsx","../src/components/Accordion/Accordion.context.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Banner/Banner.tsx","../src/components/Text/Text.tsx","../src/components/Modal/Modal.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Dialog/useDialog.tsx","../src/components/Popover/Popover.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Label/Label.tsx","../src/components/Pagination/Pagination.constants.ts","../src/components/Pagination/PaginationItem.tsx","../src/components/Pagination/Pagination.helper.ts","../src/components/Pagination/usePagination.ts","../src/components/Pagination/Pagination.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/Switch/Switch.tsx","../src/components/Tag/Tag.tsx","../src/components/Toast/Toast.tsx","../src/components/Steps/Steps.helpers.ts","../src/components/Steps/StepsContext.ts","../src/components/Steps/ProgressSteps/ProgressStep.tsx","../src/components/Steps/ProgressSteps/ProgressSteps.tsx","../src/components/Steps/StepsStep.tsx","../src/components/Steps/Steps.tsx","../src/components/Steps/useSteps.ts","../src/components/Card/CardTitle.tsx","../src/components/Card/Card.tsx","../src/components/Dropdown/Dropdown.context.ts","../src/components/Dropdown/DropdownMenu.tsx","../src/utils/toolset/keyboard.ts","../src/hooks/useClickOutside/useClickOutside.ts","../src/components/Dropdown/DropdownTrigger.tsx","../src/components/Dropdown/useDropdown.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/Select/Select.context.ts","../src/utils/toolset/pluralize.ts","../src/components/Select/SelectTrigger.tsx","../src/hooks/useFocusTrap/useFocusTrap.ts","../src/utils/toolset/isThenable.ts","../src/components/Select/Select.constants.ts","../src/components/Select/useSelect.helpers.ts","../src/components/Select/useSelect.ts","../src/utils/toolset/highlightMatch.tsx","../src/components/HighlightMatch/HighlightMatch.tsx","../src/components/Select/SelectOption.tsx","../src/components/Select/SelectEmpty.tsx","../src/components/Select/SelectCreatableOption.tsx","../src/components/Select/components.tsx","../src/components/Select/Select.tsx","../src/components/Select/useSelectExternal.ts","../src/components/SideNavigation/Logo/Logo.tsx","../src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts","../src/components/SideNavigation/Menu/MenuBaseItem.tsx","../src/components/SideNavigation/Menu/MenuLink.tsx","../src/components/SideNavigation/Menu/MenuExpandable.tsx","../src/utils/toolset/styledCompounds.ts","../src/components/SideNavigation/Menu/Menu.tsx","../src/components/SideNavigation/Separator/Separator.tsx","../src/components/SideNavigation/SideNavigation.tsx","../src/hooks/useWindowResize/useWindowResize.ts","../src/components/SideNavigation/useSideNavigation.ts","../src/components/Drawer/Drawer.tsx","../src/components/Table/Selection.tsx","../src/components/Table/TableSortHandle.tsx","../src/components/Table/Table.tsx","../src/components/TopNavigation/Logo/Logo.tsx","../src/components/TopNavigation/Menu/MenuItemDropdown.tsx","../src/components/TopNavigation/Menu/MenuItemIcon.tsx","../src/components/TopNavigation/Menu/Menu.tsx","../src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx","../src/components/TopNavigation/TopNavigation.tsx","../src/components/EmptyState/EmptyStateWithIcon.tsx","../src/components/EmptyState/Illustration.tsx","../src/components/EmptyState/EmptyStateWithIllustration.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Calendar/Month.helper.ts","../src/components/Calendar/PickerModeToggle.tsx","../src/components/Calendar/Date.helper.ts","../src/components/Calendar/useCalendar.ts","../src/utils/toolset/getOrdinalSuffix.ts","../src/components/Calendar/DateFormat.helper.ts","../src/components/Calendar/Pickers/PickerButton.tsx","../src/components/Calendar/Pickers/DayPicker.tsx","../src/components/Calendar/Pickers/MonthPicker.tsx","../src/components/Calendar/Pickers/YearPicker.tsx","../src/components/Calendar/usePickerMode.ts","../src/components/Calendar/Calendar.tsx","../src/components/Calendar/Calendar.helpers.ts","../src/components/DatePicker/useDatePicker.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/useDateRangePicker.ts","../src/components/DatePicker/DateRangePicker.tsx","../src/components/ErrorMessage/ErrorMessage.tsx","../src/components/DragDropFile/styles.tsx","../src/components/DragDropFile/components/Wrapper.tsx","../src/components/DragDropFile/components/DropZone.tsx","../src/utils/toolset/formatBytes.ts","../src/components/DragDropFile/components/FileItem.tsx","../src/components/DragDropFile/components/FileList.tsx","../src/components/DragDropFile/DragDropFile.tsx","../src/components/TablePagination/TablePagination.styles.ts","../src/components/TablePagination/TablePaginationActions.tsx","../src/components/TablePagination/RowsPerPage.tsx","../src/components/TablePagination/TablePagination.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx"],"sourcesContent":["interface TransitionStyleOptions {\n property?: string\n timingFunction?: string\n duration?: string\n}\n\n/**\n * Add basic CSS style for default transition parameters\n * @returns {string}\n */\nfunction transitionStyle(options?: TransitionStyleOptions): string {\n // TODO: add parameter to type of transition\n\n return `\n transition-property: ${\n options?.property ||\n 'background, border-color, box-shadow, color, fill, left, stroke, transform, opacity'\n };\n transition-timing-function: ${options?.timingFunction || 'cubic-bezier(0.4, 0, 0.2, 1)'};\n transition-duration: ${options?.duration || '450ms'};\n transition-delay: 0ms;\n `\n}\n\nexport default transitionStyle\n","import React, { ReactNode, ComponentType, type ReactElement } from 'react'\nimport styled from 'styled-components'\n\nimport transition from 'styles/transition'\nimport { getToken as token } from 'theming'\n\nimport type { ThemeToken } from 'theming'\n\ntype ThemeColors = keyof {\n [ColorToken in ThemeToken as ColorToken extends `color-${infer Token}`\n ? Token\n : never]: ColorToken\n}\n\nconst Wrapper = styled.span<{ $color?: ThemeColors }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n &,\n & > svg {\n ${transition({\n property: 'transform',\n })}\n\n /*\n * prop('$color', 'currentColor')\n * Not using the prop helper function since we can't return\n * an evaluated token from it\n */\n color: ${(props) =>\n props.$color ? token(`color-${props.$color}` as ThemeToken, props) : 'currentColor'};\n\n fill: currentColor;\n }\n`\n\nexport interface IconProps<T> {\n name: keyof T\n size?: string | number\n width?: string | number\n height?: string | number\n className?: string\n color?: ThemeColors\n}\n\nexport type IconMapping = Record<string, ComponentType<Omit<IconProps<string>, 'name'>>>\n\nexport function UnknownIcon(): ReactElement {\n return <span aria-label=\"Unknown icon\">&#9785;</span>\n}\n\nfunction IconFactory(map: IconMapping): ComponentType<IconProps<typeof map>> {\n function getIcon(name: keyof typeof map): ComponentType<Omit<IconProps<typeof map>, 'name'>> {\n name = String(name || '').toLowerCase()\n\n if (!(name in map)) return UnknownIcon\n\n return map[name]\n }\n\n return function Icon(props: IconProps<typeof map>) {\n const { name, size, width = '1em', height = '1em', className, color, ...rest } = props\n\n const I = getIcon(name)\n return (\n <Wrapper className={className} $color={color}>\n <I width={size || width} height={size || height} {...rest} />\n </Wrapper>\n )\n }\n}\n\nexport default IconFactory\n","import * as React from \"react\";\nconst SvgBack = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 0h24v24H0V0z\", fill: \"none\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" }));\nexport default SvgBack;\n","import * as React from \"react\";\nconst SvgBurgerMenu = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4 37.6667H44V33.2222H4V37.6667ZM4 26.5556H44V22.1111H4V26.5556ZM4 11V15.4444H44V11H4Z\", fill: \"#313336\" }));\nexport default SvgBurgerMenu;\n","import * as React from \"react\";\nconst SvgCalendar = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 0h24v24H0V0z\", fill: \"none\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" }));\nexport default SvgCalendar;\n","import * as React from \"react\";\nconst SvgCaretDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M24 30L13 19H35L24 30Z\", clipRule: \"evenodd\" }));\nexport default SvgCaretDown;\n","import * as React from \"react\";\nconst SvgCaretLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M30 42.3848L34.2426 38.1421L20.1005 24L34.2426 9.85786L30 5.61522L15.8579 19.7574L11.6152 24L15.8579 28.2426L30 42.3848Z\" }));\nexport default SvgCaretLeft;\n","import * as React from \"react\";\nconst SvgCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M44.4203 13.3431L40.1777 9.1005L18.9645 30.3137L9.06496 20.4142L4.82232 24.6569L14.7218 34.5563L18.9645 38.799L23.2071 34.5563L44.4203 13.3431Z\" }));\nexport default SvgCheck;\n","import * as React from \"react\";\nconst SvgChevronDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6-1.41-1.41z\" }));\nexport default SvgChevronDown;\n","import * as React from \"react\";\nconst SvgCaretRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M18 5.61522L13.7574 9.85786L27.8995 24L13.7574 38.1421L18 42.3848L32.1421 28.2426L36.3848 24L32.1421 19.7574L18 5.61522Z\" }));\nexport default SvgCaretRight;\n","import * as React from \"react\";\nconst SvgCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 18 18\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 9, r: 9, fillRule: \"evenodd\" }));\nexport default SvgCircle;\n","import * as React from \"react\";\nconst SvgClose = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.0711 4.69671L15.3033 2.92894L10 8.23224L4.6967 2.92894L2.92893 4.69671L8.23223 10L2.92893 15.3033L4.6967 17.0711L10 11.7678L15.3033 17.0711L17.0711 15.3033L11.7678 10L17.0711 4.69671Z\" }));\nexport default SvgClose;\n","import * as React from \"react\";\nconst SvgInformation = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M12 2C6.48625 2 2 6.48625 2 12C2 17.5138 6.48625 22 12 22C17.5138 22 22 17.5138 22 12C22 6.48625 17.5138 2 12 2ZM12 19.2727C11.2473 19.2727 10.6364 18.6618 10.6364 17.9091C10.6364 17.1564 11.2473 16.5455 12 16.5455C12.7527 16.5455 13.3636 17.1564 13.3636 17.9091C13.3636 18.6618 12.7527 19.2727 12 19.2727ZM13.3636 14.2727H10.6364L10.6364 5.18182L13.3636 5.18182L13.3636 14.2727Z\" }));\nexport default SvgInformation;\n","import * as React from \"react\";\nconst SvgMinus = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 0h24v24H0V0z\", fill: \"none\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 13H5v-2h14v2z\" }));\nexport default SvgMinus;\n","import * as React from \"react\";\nconst SvgPlus = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { fill: \"none\", height: 24, width: 24 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6V13z\" }));\nexport default SvgPlus;\n","import * as React from \"react\";\nconst SvgRefresh = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.782 1.5a4.499 4.499 0 0 0-4.437 3.785l-.89-.888-.705.705 2.123 2.123 2.12-2.122-.708-.708-.935.935A3.503 3.503 0 0 1 6.782 2.5c1.93 0 3.5 1.57 3.5 3.5s-1.57 3.5-3.5 3.5v1a4.5 4.5 0 0 0 0-9Z\" }));\nexport default SvgRefresh;\n","import * as React from \"react\";\nconst SvgSortAsc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 11\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_1\", fill: \"#313336\", d: \"m4.58334,0l4.58332,4.41667l-9.16666,0l4.58334,-4.41667z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_2\", fill: \"#CACCCF\", d: \"m4.58335,10.83337l-4.58333,-4.4167l9.16664,0l-4.58331,4.4167z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }));\nexport default SvgSortAsc;\n","import * as React from \"react\";\nconst SvgSortDesc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 11\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_1\", fill: \"#CACCCF\", d: \"m4.58334,0l4.58332,4.41667l-9.16666,0l4.58334,-4.41667z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_2\", fill: \"#313336\", d: \"m4.58335,10.83337l-4.58333,-4.4167l9.16664,0l-4.58331,4.4167z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }));\nexport default SvgSortDesc;\n","import * as React from \"react\";\nconst SvgSort = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 11\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_1\", fill: \"#313336\", d: \"m4.58334,0l4.58332,4.41667l-9.16666,0l4.58334,-4.41667z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_2\", fill: \"#313336\", d: \"m4.58335,10.83337l-4.58333,-4.4167l9.16664,0l-4.58331,4.4167z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }));\nexport default SvgSort;\n","import * as React from \"react\";\nconst SvgUpload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M39.0129 20.0894H29.9817V36.097H19.0291V20.0894H9.01953L24.1351 5L39.0129 20.0894ZM9 40V44H39V40H9Z\" }));\nexport default SvgUpload;\n","import * as React from \"react\";\nconst SvgWarning = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { clipRule: \"evenodd\", d: \"M3.79753 20.9444H20.2031C21.1809 20.9444 21.8064 19.9034 21.3454 19.0421L13.142 3.68477C12.655 2.77174 11.3443 2.77174 10.856 3.68477L2.65392 19.0421C2.19415 19.9034 2.8197 20.9444 3.79753 20.9444ZM10.7045 9.30522H13.2948V14.4782H10.7045V9.30522ZM11.9996 15.7715C12.7146 15.7715 13.2948 16.3508 13.2948 17.0647C13.2948 17.7786 12.7146 18.358 11.9996 18.358C11.2847 18.358 10.7045 17.7786 10.7045 17.0647C10.7045 16.3508 11.2847 15.7715 11.9996 15.7715Z\" }));\nexport default SvgWarning;\n","import * as React from \"react\";\nconst SvgDotsHorizontal = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 24a5 5 0 11-10 0 5 5 0 0110 0zm15 0a5 5 0 11-10 0 5 5 0 0110 0zm15 0a5 5 0 11-10 0 5 5 0 0110 0z\", fill: \"currentColor\", fillRule: \"evenodd\" }));\nexport default SvgDotsHorizontal;\n","import * as React from \"react\";\nconst SvgCaretRightLast = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", fill: \"currentColor\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M18.2501 6.38126L14.1842 10.4471L27.7371 24L14.1842 37.5529L18.2501 41.6187L31.803 28.0659L35.8688 24L31.803 19.9341L18.2501 6.38126Z\" }), /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M40.2922 38.375L44.1256 38.375L44.1256 9.625L40.2922 9.625L40.2922 38.375Z\" }));\nexport default SvgCaretRightLast;\n","import { IconFactory } from '../IconFactory'\n\nimport BackIcon from './assets/back.svg'\nimport BurguerMenuIcon from './assets/burger-menu.svg'\nimport CalendarIcon from './assets/calendar.svg'\nimport CaretDownIcon from './assets/caret-down.svg'\nimport CaretLeftIcon from './assets/caret-left.svg'\nimport CheckIcon from './assets/check.svg'\nimport ChevronDownIcon from './assets/chevron-down.svg'\nimport ChevronRightIcon from './assets/caret-right.svg'\nimport CircleIcon from './assets/circle.svg'\nimport CloseIcon from './assets/close.svg'\nimport InformationIcon from './assets/information.svg'\nimport MinusIcon from './assets/minus.svg'\nimport PlusIcon from './assets/plus.svg'\nimport RefreshIcon from './assets/refresh.svg'\nimport SortAscIcon from './assets/sort-asc.svg'\nimport SortDescIcon from './assets/sort-desc.svg'\nimport SortIcon from './assets/sort.svg'\nimport UploadIcon from './assets/upload.svg'\nimport WarningIcon from './assets/warning.svg'\nimport DotsHorizontalIcon from './assets/dots-horizontal.svg'\nimport CaretRightLastIcon from './assets/caret-right-last.svg'\n\nimport type { IconProps as GenericIconProps } from '../IconFactory'\n\nconst icons = {\n 'burguer-menu': BurguerMenuIcon,\n calendar: CalendarIcon,\n 'caret-down': CaretDownIcon,\n 'caret-left': CaretLeftIcon,\n 'caret-right': ChevronRightIcon,\n 'chevron-down': ChevronDownIcon,\n back: BackIcon,\n check: CheckIcon,\n circle: CircleIcon,\n close: CloseIcon,\n information: InformationIcon,\n minus: MinusIcon,\n plus: PlusIcon,\n refresh: RefreshIcon,\n sort: SortIcon,\n 'sort-asc': SortAscIcon,\n 'sort-desc': SortDescIcon,\n upload: UploadIcon,\n warning: WarningIcon,\n 'dots-horizontal': DotsHorizontalIcon,\n 'caret-right-last': CaretRightLastIcon,\n}\n\nconst Icon = IconFactory(icons)\n\nexport type IconProps = GenericIconProps<typeof icons>\n\nexport default Icon\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport flatten from './flatten'\nimport isEmpty from './isEmpty'\nimport toArray from './toArray'\n\n// TODO: add this helper to @loadsmart/utils\n\nfunction interleave<T>(array1: Array<T>, array2: Array<T>): T[] {\n const safeArray1 = toArray(array1)\n const safeArray2 = toArray(array2)\n\n if (isEmpty(safeArray1) && isEmpty(safeArray2)) {\n return []\n } else if (isEmpty(safeArray1)) {\n return safeArray2\n } else if (isEmpty(safeArray2)) {\n return safeArray1\n }\n\n return flatten(safeArray1.map((element, index) => [element, safeArray2[index]]))\n}\n\nexport default interleave\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n\n/**\n * Add basic CSS style wrapping block for `:active` state.\n * It returns an array to allow handling of nested interpolation\n * @param {ReadonlyArray<string> | Array<string>} strings - String parts for the interpolation.\n * @param {any[]} args - Interpolated items.\n * @returns {any[]}\n */\nfunction activatableStyle(\n strings?: ReadonlyArray<string> | Array<string>,\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = (strings || []).concat() // ReadonlyArray -> Array\n\n return [\n `\n &:enabled:not(.is-disabled) {\n &:active {`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n }\n `,\n ]\n}\n\nexport default activatableStyle\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n\n/**\n * Add basic CSS style wrapping block for `:disabled` state or `.is-disabled` class.\n * It returns an array to allow handling of nested interpolation\n * @param {ReadonlyArray<string> | Array<string>} strings - String parts for the interpolation.\n * @param {any[]} args - Interpolated items.\n * @returns {any[]}\n */\nfunction disableableStyle(\n strings?: ReadonlyArray<string> | Array<string>,\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = (strings || []).concat() // ReadonlyArray -> Array\n\n return [\n `\n &.is-disabled,\n &:disabled {\n cursor: not-allowed;\n opacity: 0.40;\n\n user-select: none;\n\n &:active {\n pointer-events: none;\n }`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n\n // prevent overlapping the opacity for nested disabled elements\n .is-disabled &.is-disabled,\n .is-disabled &[disabled],\n [disabled] &[disabled],\n [disabled] &.is-disabled {\n opacity: 1 !important;\n }\n `,\n ]\n}\n\nexport default disableableStyle\n","/**\n * Add basic CSS style for ellipsizing the content of an element.\n * Setting `max-width` is a responsability of the caller.\n * @returns {string}\n */\nfunction ellipsizableStyle(): string {\n return `\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n `\n}\n\nexport default ellipsizableStyle\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n/**\n * Add basic CSS style wrapping block for `:active` state.\n * It returns an array to allow handling of nested interpolation\n * @param {ReadonlyArray<string> | Array<string>} strings - String parts for the interpolation.\n * @param {any[]} args - Interpolated items.\n * @returns {any[]}\n */\nfunction focusableStyle(\n strings?: ReadonlyArray<string> | Array<string>,\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = (strings || []).concat() // ReadonlyArray -> Aray\n\n return [\n `\n outline: none;\n\n &:focus,\n &:focus-within,\n &.is-focused {\n outline: none;`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n `,\n ]\n}\n\nexport default focusableStyle\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n\n/**\n * Add basic CSS style wrapping block for `:hover` state; it includes check for non-disabled (`:enabled` or not `.is-disabled`) elements.\n * It returns an array to allow handling of nested interpolation\n * @param {ReadonlyArray<string> | Array<string>} strings - String parts for the interpolation.\n * @param {any[]} args - Interpolated items.\n * @returns {any[]}\n */\nfunction hoverableStyle(\n strings?: ReadonlyArray<string> | Array<string>,\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = (strings || []).concat() // ReadonlyArray -> Array\n\n return [\n `\n &:not(.is-disabled):not(:disabled) {\n &:hover {`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n }\n `,\n ]\n}\n\nexport default hoverableStyle\n","import { css } from 'styled-components'\nimport type { FlattenInterpolation } from 'styled-components'\n\nimport { getToken } from 'theming'\nimport type { ThemedProps, ThemeToken } from 'theming'\n\ninterface FontStyleOptions {\n size?: ThemeToken\n family?: ThemeToken\n weight?: ThemeToken\n height?: ThemeToken\n color?: ThemeToken\n transform?: 'uppercase' | 'none'\n}\n\n/**\n * Add basic CSS style for default font\n * @returns {FlattenInterpolation}\n */\nfunction fontStyle({\n color = 'color-neutral-darkest',\n weight = 'font-weight-regular',\n size = 'font-size-4',\n family = 'font-family-default',\n height = 'font-height-3',\n transform = 'none',\n}: FontStyleOptions): FlattenInterpolation<ThemedProps> {\n return css`\n color: ${getToken(color)};\n font-weight: ${getToken(weight)};\n font-size: ${getToken(size)};\n font-family: ${getToken(family)};\n line-height: ${getToken(height)};\n text-transform: ${transform};\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n `\n}\n\nexport default fontStyle\n","import { css } from 'styled-components'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport conditional from 'tools/conditional'\nimport type { ThemeToken } from 'theming'\nimport fontStyle from './font'\n\nexport type TypographyOptions = {\n italic?: boolean\n color?: ThemeToken\n}\n\ntype PropertiesToken = {\n fontSize: ThemeToken\n lineHeight: ThemeToken\n fontWeight: ThemeToken\n fontFamily?: ThemeToken\n textTransform?: 'none' | 'uppercase'\n color?: ThemeToken\n}\n\nexport type TypographyVariants =\n | 'heading-lg'\n | 'heading-md'\n | 'heading-md-bold'\n | 'heading-sm'\n | 'heading-sm-bold'\n | 'body'\n | 'body-bold'\n | 'caption'\n | 'caption-bold'\n | 'number-sm'\n | 'number-md'\n | 'button-sm'\n | 'button-md'\n | 'button-lg'\n | 'table-header-sm'\n | 'table-header-md'\n | 'chips-sm'\n | 'link'\n\ntype TypographyProperties = Record<TypographyVariants, PropertiesToken>\n\nexport const typographyProperties: TypographyProperties = {\n 'heading-lg': {\n fontSize: 'font-size-1',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n },\n 'heading-md': {\n fontSize: 'font-size-2',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n },\n 'heading-md-bold': {\n fontSize: 'font-size-2',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-bold',\n },\n 'heading-sm': {\n fontSize: 'font-size-3',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-medium',\n },\n 'heading-sm-bold': {\n fontSize: 'font-size-3',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n },\n body: {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-medium',\n },\n 'body-bold': {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n },\n caption: {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-medium',\n },\n 'caption-bold': {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n },\n 'number-sm': {\n fontFamily: 'font-family-monospace',\n fontSize: 'font-size-5',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n },\n 'number-md': {\n fontFamily: 'font-family-monospace',\n fontSize: 'font-size-4',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n },\n 'button-sm': {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'button-md': {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'button-lg': {\n fontSize: 'font-size-3',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'table-header-sm': {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-bold',\n },\n 'table-header-md': {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'chips-sm': {\n fontSize: 'font-size-6',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n link: {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n color: 'color-accent',\n },\n}\n\nconst DEFAULT_VARIANT: TypographyVariants = 'body'\n\nfunction getPropertiesByVariant(variant: TypographyVariants) {\n return variant in typographyProperties\n ? typographyProperties[variant]\n : typographyProperties[DEFAULT_VARIANT]\n}\n\n/**\n * Standard styles for screen-rendered text\n * @param {TypographyVariants} variant Name of the variant\n * @param {TypographyOptions} options Add boldness, italics and color\n * @returns {FlattenInterpolation}\n */\nfunction typography<P>(\n variant: TypographyVariants | ((props: P) => string) = DEFAULT_VARIANT,\n options?: TypographyOptions\n) {\n if (isFunction(variant)) {\n return (props: P) => typography(variant(props) as TypographyVariants, options)\n }\n\n const properties = getPropertiesByVariant(variant)\n\n return css`\n ${fontStyle({\n family: properties.fontFamily,\n height: properties.lineHeight,\n size: properties.fontSize,\n weight: properties.fontWeight,\n transform: properties.textTransform,\n color: properties.color || options?.color,\n })}\n\n ${conditional({\n 'font-style: italic;': options?.italic,\n })};\n `\n}\n\nexport default typography\n","import React from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nconst ANIMATION_DURATION = 0.8\n\nconst animation = keyframes`\n 0% { opacity: 0 }\n 25% { opacity: 1 }\n 50% { opacity: 0.66 }\n 75% { opacity: 0.33; }\n 100% { opacity: 0 }\n`\n\ninterface LayerProps {\n index: number\n}\n\nconst Layer = styled.path<LayerProps>`\n animation-name: ${animation};\n animation-duration: ${ANIMATION_DURATION}s;\n animation-delay: -${(props) => props.index * (ANIMATION_DURATION / 4)}s;\n animation-iteration-count: infinite;\n`\n\nexport interface SpinnerProps {\n title?: string\n size: number\n}\n\nexport default function Spinner({ title, size, ...props }: SpinnerProps): JSX.Element {\n return (\n <svg\n {...props}\n viewBox=\"0 0 48 48\"\n fillRule=\"evenodd\"\n strokeLinejoin=\"round\"\n strokeMiterlimit=\"2\"\n clipRule=\"evenodd\"\n width={size}\n height={size}\n >\n <title>{title || 'Loading'}</title>\n <g\n id=\"surface1\"\n transform=\"matrix(0.0806777,0,0,0.0806777,0,-9.96047)\"\n fill=\"#33CC60\"\n fillRule=\"nonzero\"\n >\n <Layer\n index={0}\n d=\"M362.176,638.695C366.445,638.695 370.535,637 373.527,633.996L505.332,502.211L224.305,502.211C222.074,502.211 220.066,501.316 218.617,499.855L84.488,633.996C87.395,636.902 91.406,638.695 95.82,638.695L362.176,638.695Z\"\n />\n <Layer\n index={1}\n d=\"M376.164,482.289L512.648,482.289L512.648,217.34C512.648,212.906 510.855,208.898 507.945,205.988L373.809,340.121C375.266,341.578 376.164,343.59 376.164,345.805L376.164,482.289Z\"\n />\n <Layer\n index={2}\n d=\"M500.48,201.746L235.535,201.746L235.535,338.23L372.02,338.23C374.234,338.23 376.246,339.129 377.703,340.586L511.832,206.445C508.926,203.539 504.918,201.746 500.48,201.746Z\"\n />\n <Layer\n index={3}\n d=\"M215.449,495.488L215.449,214.461L83.668,346.262C80.66,349.289 78.965,353.359 78.965,357.625L78.965,623.973C78.965,628.398 80.758,632.406 83.668,635.313L217.805,501.176C216.348,499.715 215.449,497.707 215.449,495.488Z\"\n />\n </g>\n </svg>\n )\n}\n","import { css } from 'styled-components'\n\nimport type { FlattenInterpolation } from 'styled-components'\nimport type { ThemedProps } from 'theming'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nexport const getSpace = (prop: string): FlattenInterpolation<ThemedProps> => css`\n ${conditional({\n 'space-none': whenProps({ [prop]: 'none' }),\n 'space-2xs': whenProps({ [prop]: '2xs' }),\n 'space-xs': whenProps({ [prop]: 'xs' }),\n 'space-s': whenProps({ [prop]: 's' }),\n 'space-m': whenProps({ [prop]: 'm' }),\n 'space-l': whenProps({ [prop]: 'l' }),\n 'space-xl': whenProps({ [prop]: 'xl' }),\n 'space-2xl': whenProps({ [prop]: '2xl' }),\n 'space-3xl': whenProps({ [prop]: '3xl' }),\n })}\n`\n","import React from 'react'\nimport type { HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nimport { getSpace } from './Layout.utils'\nimport type { Spacing, JustifyValue, AlignValue } from './Layout.types'\n\nexport interface GroupProps extends HTMLAttributes<HTMLElement> {\n space?: Spacing\n justify?: JustifyValue\n align?: AlignValue\n as?: string | React.ComponentType<any>\n}\n\nconst GroupContainer = styled.div<{\n $space: GroupProps['space']\n $justify: GroupProps['justify']\n $align: GroupProps['align']\n}>`\n display: flex;\n flex-wrap: wrap;\n gap: ${getSpace('$space')};\n\n align-items: ${conditional({\n center: whenProps({ $align: 'center' }),\n 'flex-start': whenProps({ $align: 'flex-start' }),\n 'flex-end': whenProps({ $align: 'flex-end' }),\n stretch: whenProps({ $align: 'stretch' }),\n })};\n\n justify-content: ${conditional({\n center: whenProps({ $justify: 'center' }),\n 'flex-start': whenProps({ $justify: 'flex-start' }),\n 'flex-end': whenProps({ $justify: 'flex-end' }),\n 'space-between': whenProps({ $justify: 'space-between' }),\n 'space-around': whenProps({ $justify: 'space-around' }),\n 'space-evenly': whenProps({ $justify: 'space-evenly' }),\n })};\n`\n\n/**\n * Group layout component.\n * @param {GroupProps} props\n */\nexport function Group(props: GroupProps): JSX.Element {\n const { space = 'm', justify = 'flex-start', align = 'flex-start', children, ...rest } = props\n\n return (\n <GroupContainer $space={space} $justify={justify} $align={align} {...rest}>\n {children}\n </GroupContainer>\n )\n}\n","import React from 'react'\nimport type { HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nimport { getSpace } from './Layout.utils'\nimport type { Spacing, JustifyValue, AlignValue } from './Layout.types'\n\nexport interface StackProps extends HTMLAttributes<HTMLElement> {\n space?: Spacing\n justify?: JustifyValue\n align?: AlignValue\n as?: string | React.ComponentType<any>\n}\n\nexport const StackContainer = styled.div<{\n $space: StackProps['space']\n $justify: StackProps['justify']\n $align: StackProps['align']\n}>`\n display: flex;\n flex-direction: column;\n\n align-items: ${conditional({\n center: whenProps({ $align: 'center' }),\n 'flex-start': whenProps({ $align: 'flex-start' }),\n 'flex-end': whenProps({ $align: 'flex-end' }),\n stretch: whenProps({ $align: 'stretch' }),\n })};\n\n justify-content: ${conditional({\n center: whenProps({ $justify: 'center' }),\n 'flex-start': whenProps({ $justify: 'flex-start' }),\n 'flex-end': whenProps({ $justify: 'flex-end' }),\n 'space-between': whenProps({ $justify: 'space-between' }),\n 'space-around': whenProps({ $justify: 'space-around' }),\n 'space-evenly': whenProps({ $justify: 'space-evenly' }),\n })};\n\n & > * {\n margin-top: 0;\n margin-bottom: 0;\n }\n\n & > * + * {\n margin-top: ${getSpace('$space')};\n }\n`\n\n/**\n * Stack layout component.\n * @param {StackProps} props\n */\nexport function Stack(props: StackProps): JSX.Element {\n const { space = 'm', justify = 'flex-start', align = 'stretch', children, ...rest } = props\n\n return (\n <StackContainer $space={space} $justify={justify} $align={align} {...rest}>\n {children}\n </StackContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport type { Spacing } from './Layout.types'\nimport { getSpace } from './Layout.utils'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface BoxProps extends HTMLAttributes<HTMLElement> {\n background?: 'transparent' | 'neutral-white' | 'neutral-lighter' | 'neutral-lightest'\n padding?: Spacing\n borderRadius?: 'none' | 's' | 'm' | 'l'\n borderWidth?: 'medium' | 'thin' | 'none'\n borderColor?: 'neutral-darker' | 'neutral-light' | 'neutral-lighter' | 'neutral-white' | 'primary'\n textAlign?: 'left' | 'center' | 'right'\n}\n\nconst BoxContainer = styled.div<{\n $background: BoxProps['background']\n $padding: BoxProps['padding']\n $borderRadius: BoxProps['borderRadius']\n $borderWidth: BoxProps['borderWidth']\n $borderColor: BoxProps['borderColor']\n $textAlign: BoxProps['textAlign']\n}>`\n padding: ${getSpace('$padding')};\n\n color: ${token('color-neutral-darker')};\n\n text-align: ${conditional({\n left: whenProps({ $textAlign: 'left' }),\n center: whenProps({ $textAlign: 'center' }),\n right: whenProps({ $textAlign: 'right' }),\n })};\n\n background-color: ${conditional({\n 'color-transparent': whenProps({ $background: 'transparent' }),\n 'color-neutral-white': whenProps({ $background: 'neutral-white' }),\n 'color-neutral-lighter': whenProps({ $background: 'neutral-lighter' }),\n 'color-neutral-lightest': whenProps({ $background: 'neutral-lightest' }),\n })};\n\n border-color: ${conditional({\n 'color-neutral-darker': whenProps({ $borderColor: 'neutral-darker' }),\n 'color-neutral-light': whenProps({ $borderColor: 'neutral-light' }),\n 'color-neutral-lighter': whenProps({ $borderColor: 'neutral-lighter' }),\n 'color-neutral-white': whenProps({ $borderColor: 'neutral-white' }),\n 'color-primary': whenProps({ $borderColor: 'primary' }),\n })};\n\n border-style: solid;\n\n border-width: ${conditional({\n 'border-width-medium': whenProps({ $borderWidth: 'medium' }),\n 'border-width-thin': whenProps({ $borderWidth: 'thin' }),\n 'border-width-none': whenProps({ $borderWidth: 'none' }),\n })};\n\n border-radius: ${conditional({\n 'border-radius-none': whenProps({ $borderRadius: 'none' }),\n 'border-radius-s': whenProps({ $borderRadius: 's' }),\n 'border-radius-m': whenProps({ $borderRadius: 'm' }),\n 'border-radius-l': whenProps({ $borderRadius: 'l' }),\n })};\n`\n\n/**\n * Box layout component.\n * @param {BoxProps} props\n */\nexport function Box(props: BoxProps): JSX.Element {\n const {\n background = 'transparent',\n borderColor = 'neutral-light',\n borderRadius = 's',\n borderWidth = 'none',\n padding = 'm',\n textAlign = 'left',\n children,\n ...rest\n } = props\n\n return (\n <BoxContainer\n $background={background}\n $borderColor={borderColor}\n $borderRadius={borderRadius}\n $borderWidth={borderWidth}\n $padding={padding}\n $textAlign={textAlign}\n {...rest}\n >\n {children}\n </BoxContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport prop from 'tools/prop'\n\nimport type { Spacing } from './Layout.types'\nimport { getSpace } from './Layout.utils'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n space?: Spacing\n reversed?: boolean\n sideWidth?: string\n minContentWidth?: string\n}\n\nconst SidebarContainer = styled.div<{\n $space: SidebarProps['space']\n $reversed: SidebarProps['reversed']\n $sideWidth: SidebarProps['sideWidth']\n $minContentWidth: SidebarProps['minContentWidth']\n}>`\n display: flex;\n flex-wrap: wrap;\n\n gap: ${getSpace('$space')};\n\n &\n > ${conditional({\n ':first-child': whenProps({ $reversed: false }),\n ':last-child': whenProps({ $reversed: true }),\n })} {\n flex-basis: ${prop('$sideWidth')};\n flex-grow: 1;\n }\n\n &\n > ${conditional({\n ':first-child': whenProps({ $reversed: true }),\n ':last-child': whenProps({ $reversed: false }),\n })} {\n flex-basis: 0;\n flex-grow: 999;\n min-width: ${prop('$minContentWidth')};\n }\n`\n\n/**\n * Sidebar layout component.\n * @param {SidebarProps} props\n */\nexport function Sidebar(props: SidebarProps): JSX.Element {\n const {\n minContentWidth = '50%',\n reversed = false,\n sideWidth = 'auto',\n space = 'm',\n children,\n ...rest\n } = props\n\n return (\n <SidebarContainer\n $minContentWidth={minContentWidth}\n $reversed={reversed}\n $sideWidth={sideWidth}\n $space={space}\n {...rest}\n >\n {children}\n </SidebarContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport prop from 'tools/prop'\n\nimport type { Spacing } from './Layout.types'\nimport { getSpace } from './Layout.utils'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface SwitcherProps extends HTMLAttributes<HTMLElement> {\n space?: Spacing\n threshold?: string\n limit?: number\n}\n\nconst SwitcherContainer = styled.div<{\n $space: SwitcherProps['space']\n $threshold: SwitcherProps['threshold']\n $limit: SwitcherProps['limit']\n}>`\n display: flex;\n flex-wrap: wrap;\n gap: ${getSpace('$space')};\n\n > * {\n flex-basis: calc((${prop('$threshold')} - 100%) * 999);\n flex-grow: 1;\n }\n\n & > :nth-last-child(n + ${prop('$limit')}),\n & > :nth-last-child(n + ${prop('$limit')}) ~ * {\n flex-basis: 100%;\n }\n`\n\n/**\n * Switcher layout component.\n * @param {SwitcherProps} props\n */\nexport function Switcher(props: SwitcherProps): JSX.Element {\n const { limit = 4, space = 's', threshold = '10rem', children, ...rest } = props\n\n return (\n <SwitcherContainer $space={space} $threshold={threshold} $limit={limit + 1} {...rest}>\n {children}\n </SwitcherContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport prop from 'tools/prop'\n\nimport { getSpace } from 'components/Layout/Layout.utils'\nimport type { Spacing } from './Layout.types'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface GridProps extends HTMLAttributes<HTMLElement> {\n space?: Spacing\n minColumnWidth?: string\n}\n\nconst GridContainer = styled.div<{\n $space: GridProps['space']\n $minColumnWidth: GridProps['minColumnWidth']\n}>`\n display: grid;\n grid-gap: ${getSpace('$space')};\n\n @supports (width: min(${prop('$minColumnWidth')}, 100%)) {\n & {\n grid-template-columns: repeat(auto-fit, minmax(min(${prop('$minColumnWidth')}, 100%), 1fr));\n }\n }\n`\n\n/**\n * Grid layout component.\n * @param {GridProps} props\n */\nexport function Grid(props: GridProps): JSX.Element {\n const { space = 'm', minColumnWidth = '50%', children, ...rest } = props\n\n return (\n <GridContainer $space={space} $minColumnWidth={minColumnWidth} {...rest}>\n {children}\n </GridContainer>\n )\n}\n","import { Group } from './Group'\nimport { Stack } from './Stack'\nimport { Box } from './Box'\nimport { Sidebar } from './Sidebar'\nimport { Switcher } from './Switcher'\nimport { Grid } from './Grid'\n\nconst Layout = (): null => {\n return null\n}\n\nLayout.Group = Group\nLayout.Stack = Stack\nLayout.Box = Box\nLayout.Sidebar = Sidebar\nLayout.Switcher = Switcher\nLayout.Grid = Grid\n\nexport default Layout\n","import { Layout } from 'components/Layout'\nimport React from 'react'\nimport styled, { keyframes } from 'styled-components'\nimport { getToken as token } from 'theming'\n\nconst loading = keyframes` \n from {\n width: 0\n }\n to {\n width: 100%\n } \n`\n\nexport const Bar = styled.div<{ width?: number; velocity?: number }>`\n position: relative;\n\n width: ${({ width }) => (width ? `${width}px` : '100%')};\n height: ${token('space-s')};\n overflow: hidden;\n\n background-color: ${token('color-neutral-light')};\n border-radius: ${token('border-radius-m')};\n\n &:before {\n position: absolute;\n\n display: block;\n width: 100%;\n height: ${token('space-s')};\n\n background-color: ${token('color-primary')};\n\n animation: ${loading} ${({ velocity }) => (velocity && velocity > 0 ? velocity : 2.5)}s linear\n infinite;\n\n content: '';\n }\n`\n\nexport interface LoadingBarProps {\n alignment?: 'left' | 'center' | 'right'\n title?: React.ReactNode\n secondaryTitle?: React.ReactNode\n width?: number | undefined\n velocity?: number | undefined\n}\n\nexport default function LoadingBar({\n alignment,\n title,\n secondaryTitle,\n width = undefined,\n velocity = 2.5,\n}: LoadingBarProps): JSX.Element {\n return (\n <Layout.Box textAlign={alignment}>\n <Layout.Stack space=\"s\">\n {title}\n <Bar width={width} velocity={velocity} />\n {secondaryTitle}\n </Layout.Stack>\n </Layout.Box>\n )\n}\n","import React from 'react'\nimport styled, { keyframes } from 'styled-components'\nimport conditional, { whenProps } from 'tools/conditional'\nimport prop from 'tools/prop'\nimport { getToken as token } from 'theming'\n\nconst pulse = keyframes`\n 50% {\n opacity: 0.2;\n }\n\n 100% {\n opacity: 1;\n }\n`\n\nconst Wrapper = styled.div`\n text-align: center;\n\n div:nth-child(1) {\n animation: ${pulse} 1s infinite ease-in-out -0.2s;\n }\n\n div:nth-child(2) {\n animation: ${pulse} 1s infinite ease-in-out -0.1s;\n }\n\n div:nth-child(3) {\n animation: ${pulse} 1s infinite ease-in-out 0s;\n }\n`\n\ninterface DotProps {\n size?: number\n variant?: 'light' | 'dark'\n}\n\nconst Dot = styled.div<DotProps>`\n display: inline-block;\n width: ${prop('size')}px;\n height: ${prop('size')}px;\n margin: ${token('space-2xs')};\n\n background-color: ${conditional({\n 'color-neutral-white': whenProps({ variant: 'light' }),\n 'color-neutral-dark': whenProps({ variant: 'dark' }),\n })};\n border-radius: ${token('border-radius-circle')};\n`\n\nexport interface LoadingDotsProps {\n size?: number\n variant?: 'dark' | 'light'\n}\n\nexport default function LoadingDots({\n size = 10,\n variant = 'dark',\n ...props\n}: LoadingDotsProps): JSX.Element {\n return (\n <Wrapper role=\"progressbar\" aria-label=\"Loading\" {...props}>\n <Dot size={size} variant={variant} />\n <Dot size={size} variant={variant} />\n <Dot size={size} variant={variant} />\n </Wrapper>\n )\n}\n","import React, { forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport ellipsizable from 'styles/ellipsizable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport omit from 'utils/toolset/omit'\nimport rem from 'utils/toolset/rem'\nimport transition from 'styles/transition'\nimport typography from 'styles/typography'\n\nimport { LoadingDots } from 'components/Loaders'\n\nimport type { ButtonHTMLAttributes, ForwardedRef, ReactNode } from 'react'\nimport type { IconProps } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport type { LoadingDotsProps } from 'components/Loaders'\n\nexport type ButtonVariants = 'primary' | 'secondary' | 'warning' | 'icon' | 'tertiary'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n className?: string\n leading?: ReactNode\n scheme?: ColorScheme\n trailing?: ReactNode\n variant?: ButtonVariants\n scale?: 'small' | 'default' | 'large'\n loading?: boolean\n}\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n padding: ${rem('6px')} 0;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Trailing = styled(StyledSpan)`\n /* placeholder */\n`\n\nexport const Children = styled.span<ButtonProps>`\n ${({ children }) =>\n typeof children === 'string'\n ? ellipsizable()\n : `\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n `}\n\n padding: ${rem('6px')} 0;\n`\n\nconst BaseStyledButton = styled.button<{\n $scale: ButtonProps['scale']\n $loading?: ButtonProps['loading']\n}>`\n ${transition()}\n\n ${typography(\n conditional({\n 'button-md': whenProps({ $scale: 'default' }),\n 'button-sm': whenProps({ $scale: 'small' }),\n 'button-lg': whenProps({ $scale: 'large' }),\n })\n )}\n\n box-sizing: border-box;\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n text-transform: uppercase;\n text-align: center;\n\n cursor: pointer;\n\n border-radius: ${token('border-radius-s')};\n border-width: ${token('border-width-thin')};\n border-style: solid;\n border-color: ${token('color-neutral-darker')};\n\n height: ${conditional({\n 'button-height': whenProps({ $scale: 'default' }),\n 'button-small-height': whenProps({ $scale: 'small' }),\n 'button-large-height': whenProps({ $scale: 'large' }),\n })};\n\n padding: 0 8px;\n\n ${disableable()}\n\n ${({ $loading }) =>\n $loading\n ? css`\n pointer-events: none;\n position: relative;\n `\n : ''}\n\n ${Leading} {\n margin: 0 ${token('space-xs')} 0 0;\n }\n\n ${Trailing} {\n margin: 0 0 0 ${token('space-xs')};\n }\n`\n\nconst StyledButton = styled(BaseStyledButton)<{\n $variant: ButtonProps['variant']\n $scale: ButtonProps['scale']\n $scheme: ButtonProps['scheme']\n}>`\n width: ${conditional({\n 'button-width': whenProps({ $variant: ['primary', 'secondary', 'warning', 'tertiary'] }),\n 'button-icon-width': whenProps({ $variant: 'icon', $scale: 'default' }),\n 'button-icon-small-width': whenProps({ $variant: 'icon', $scale: 'small' }),\n 'button-icon-large-width': whenProps({ $variant: 'icon', $scale: 'large' }),\n })};\n\n height: ${conditional({\n 'button-height': whenProps({ $scale: 'default' }),\n 'button-small-height': whenProps({ $scale: 'small' }),\n 'button-large-height': whenProps({ $scale: 'large' }),\n })};\n\n color: ${conditional({\n 'button-primary-color': whenProps({ $variant: 'primary' }),\n 'button-secondary-color': whenProps({ $variant: 'secondary', $scheme: 'light' }),\n 'button-secondary-dark-color': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-color': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color': whenProps({ $variant: 'warning' }),\n 'button-icon-color': whenProps({ $variant: 'icon' }),\n })};\n\n background: ${conditional({\n 'button-primary-background': whenProps({ $variant: 'primary' }),\n 'button-secondary-background': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background': whenProps({\n $variant: 'tertiary',\n }),\n 'button-warning-background': whenProps({ $variant: 'warning' }),\n 'button-icon-background': whenProps({ $variant: 'icon' }),\n })};\n\n border-color: ${conditional({\n 'button-primary-border-color': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color': whenProps({ $variant: 'secondary', $scheme: 'light' }),\n 'button-secondary-dark-border-color': whenProps({ $variant: 'secondary', $scheme: 'dark' }),\n 'button-tertiary-border-color': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color': whenProps({ $variant: 'icon' }),\n })};\n border-radius: ${conditional({\n 'button-border-radius': whenProps({ $variant: ['primary', 'secondary', 'warning'] }),\n 'button-icon-border-radius': whenProps({ $variant: 'icon' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'button-primary-background--hover': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background--hover': whenProps({\n $variant: 'tertiary',\n }),\n 'button-warning-background--hover': whenProps({ $variant: 'warning' }),\n 'button-icon-background--hover': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--hover': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-border-color--hover': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color--hover': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--hover': whenProps({ $variant: 'icon' }),\n })};\n color: ${conditional({\n 'button-primary-color--hover': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-color--hover': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color--hover': whenProps({ $variant: 'warning' }),\n 'button-icon-color--hover': whenProps({ $variant: 'icon' }),\n })};\n `}\n\n ${disableable`\n background: ${conditional({\n 'button-primary-background--disabled': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background--disabled': whenProps({ $variant: 'tertiary' }),\n 'button-warning-background--disabled': whenProps({ $variant: 'warning' }),\n 'button-icon-background--disabled': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--disabled': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-border-color--disabled': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color--disabled': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--disabled': whenProps({ $variant: 'icon' }),\n })};\n color: ${conditional({\n 'button-primary-color--disabled': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-color--disabled': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color--disabled': whenProps({ $variant: 'warning' }),\n 'button-icon-color--disabled': whenProps({ $variant: 'icon' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'button-primary-background--focus': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background--focus': whenProps({ $variant: 'tertiary' }),\n 'button-warning-background--focus': whenProps({ $variant: 'warning' }),\n 'button-icon-background--focus': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--focus': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-border-color--focus': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color--focus': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--focus': whenProps({ $variant: 'icon' }),\n })};\n color: ${conditional({\n 'button-primary-color--focus': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--focus': whenProps({ $variant: 'secondary', $scheme: 'dark' }),\n 'button-tertiary-color--focus': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color--focus': whenProps({ $variant: 'warning' }),\n 'button-icon-color--focus': whenProps({ $variant: 'icon' }),\n })};\n\n box-shadow: ${conditional({\n 'button-primary-box-shadow': whenProps({ $variant: 'primary' }),\n 'button-secondary-box-shadow': whenProps({ $variant: 'secondary' }),\n 'button-warning-box-shadow': whenProps({ $variant: 'warning' }),\n 'button-tertiary-box-shadow': whenProps({ $variant: 'tertiary' }),\n 'button-icon-box-shadow': whenProps({ $variant: 'icon' }),\n })};\n\n outline: ${conditional({\n 'button-primary-outline': whenProps({ $variant: 'primary' }),\n 'button-secondary-outline': whenProps({ $variant: 'secondary' }),\n 'button-tertiary-outline': whenProps({ $variant: 'tertiary' }),\n 'button-warning-outline': whenProps({ $variant: 'warning' }),\n 'button-icon-outline': whenProps({ $variant: 'icon' }),\n })};\n\n outline-offset: ${token('button-outline-offset')};\n `}\n\n ${activatable`\n background: ${conditional({\n 'button-primary-background--active': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--active': whenProps({\n $variant: ['secondary', 'tertiary'],\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--active': whenProps({\n $variant: ['secondary', 'tertiary'],\n $scheme: 'dark',\n }),\n 'button-warning-background--active': whenProps({ $variant: 'warning' }),\n 'button-icon-background--active': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--active': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--active': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--active': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-warning-border-color--active': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--active': whenProps({ $variant: 'icon' }),\n 'color-transparent': whenProps({ $variant: 'tertiary' }),\n })};\n color: ${conditional({\n 'button-primary-color--active': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--active': whenProps({\n $variant: ['secondary', 'tertiary'],\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--active': whenProps({ $variant: 'secondary', $scheme: 'dark' }),\n 'button-warning-color--active': whenProps({ $variant: 'warning' }),\n 'button-icon-color--active': whenProps({ $variant: 'icon' }),\n })};\n `}\n\n ${Children} {\n margin: 0 ${token('button-spacing-x')};\n }\n\n ${Leading} {\n margin: 0 0 0 ${token('button-spacing-x')};\n }\n\n ${Trailing} {\n margin: 0 ${token('button-spacing-x')} 0 0;\n }\n`\n\nconst StyledSelector = styled(StyledButton)`\n ${Children} {\n flex: 1;\n }\n\n ${Trailing} {\n margin: 0;\n }\n`\n\nconst TextHidden = styled.span`\n transform: scale(0);\n`\n\n/**\n * Accessible attributes in `LoadingDots` aren't necessary\n * because the `Button` will keep its content, but invisible\n */\nconst StyledLoadingDots = styled(LoadingDots).attrs({\n 'aria-label': undefined,\n role: 'presentation',\n})`\n position: absolute;\n left: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n`\n\nconst ButtonLoadingDots = ({\n buttonVariant = 'secondary',\n ...remainingProps\n}: Omit<LoadingDotsProps, 'variant'> & { buttonVariant?: ButtonVariants }) => {\n const buttonLightVariants = new Set(['secondary', 'warning', 'icon', 'tertiary'])\n /**\n * Change LoadingDots variant between `light` and `dark` to have contrast with Button's variant\n */\n const loadingDotsVariant: 'dark' | 'light' = buttonLightVariants.has(buttonVariant)\n ? 'dark'\n : 'light'\n\n return <StyledLoadingDots {...remainingProps} variant={loadingDotsVariant} />\n}\n\nfunction ButtonChildrenWrapper({\n loading,\n children,\n variant,\n}: Pick<ButtonProps, 'loading' | 'children' | 'variant'>) {\n if (loading) {\n return (\n <>\n <ButtonLoadingDots buttonVariant={variant} />\n <TextHidden>{children}</TextHidden>\n </>\n )\n }\n\n return <>{children}</>\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, ButtonProps>(function BaseButton(\n {\n scale = 'default',\n children,\n leading,\n trailing,\n loading,\n disabled,\n variant,\n ...others\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n return (\n <BaseStyledButton\n ref={ref}\n {...others}\n aria-disabled={loading ? 'true' : undefined}\n disabled={disabled}\n $scale={scale}\n $loading={loading}\n >\n <ButtonChildrenWrapper loading={loading} variant={variant}>\n {leading && <Leading aria-hidden=\"true\">{leading}</Leading>}\n <Children loading={loading}>{children}</Children>\n {trailing && <Trailing aria-hidden=\"true\">{trailing}</Trailing>}\n </ButtonChildrenWrapper>\n </BaseStyledButton>\n )\n})\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n type = 'button',\n scheme = 'light',\n scale = 'default',\n variant = 'secondary',\n children,\n leading,\n trailing,\n disabled,\n loading,\n ...others\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n return (\n <StyledButton\n ref={ref}\n {...others}\n type={type}\n aria-disabled={loading ? 'true' : undefined}\n disabled={disabled}\n $scheme={scheme}\n $scale={scale}\n $variant={variant}\n $loading={loading}\n >\n <ButtonChildrenWrapper loading={loading} variant={variant}>\n {leading && <Leading>{leading}</Leading>}\n <Children>{children}</Children>\n {trailing && <Trailing>{trailing}</Trailing>}\n </ButtonChildrenWrapper>\n </StyledButton>\n )\n})\n\nexport function Caret(props: Omit<IconProps, 'name'>): JSX.Element {\n return <Icon size={20} {...props} name=\"caret-down\" />\n}\n\nexport const SelectorButton = forwardRef<HTMLButtonElement, ButtonProps>(function SelectorButton(\n {\n scheme = 'light',\n scale = 'default',\n type = 'button',\n variant = 'secondary',\n children,\n trailing,\n disabled,\n loading,\n ...others\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n others = omit<ButtonProps>(others, ['leading'])\n\n return (\n <StyledSelector\n ref={ref}\n {...others}\n type={type}\n aria-disabled={loading ? 'true' : undefined}\n disabled={disabled}\n $loading={loading}\n $scheme={scheme}\n $scale={scale}\n $variant={variant}\n >\n <ButtonChildrenWrapper loading={loading} variant={variant}>\n <Children>{children}</Children>\n {trailing && <Trailing>{trailing}</Trailing>}\n </ButtonChildrenWrapper>\n </StyledSelector>\n )\n})\n\nexport type IconButtonProps = Omit<ButtonProps, 'leading' | 'trailing' | 'variant' | 'loading'>\n\nexport const IconButton = forwardRef<HTMLButtonElement, ButtonProps>(function IconButton(\n { scheme = 'light', scale = 'default', type = 'button', children, ...others }: IconButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n others = omit<ButtonProps>(others, ['leading', 'trailing', 'variant'])\n\n return (\n <StyledButton ref={ref} {...others} type={type} $scheme={scheme} $scale={scale} $variant=\"icon\">\n <Children>{children}</Children>\n </StyledButton>\n )\n})\n\nexport default Button\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport focusable from 'styles/focusable'\n\nimport type { ButtonProps } from 'components/Button'\n\nexport interface CloseButtonProps extends ButtonProps {\n size?: string | number\n}\n\nconst Button = styled(BaseButton)`\n border: none;\n border-radius: ${token('border-radius-circle')};\n\n color: ${token('color-neutral-darker')};\n\n background: ${token('color-transparent')};\n\n padding: ${token('space-xs')};\n\n font-size: ${token('font-size-3')};\n\n /*\n * button height is set in the BaseButton component\n * we set width here to ensure a perfectly rounded button\n */\n width: ${conditional({\n 'button-height': whenProps({ scale: 'default' }),\n 'button-small-height': whenProps({ scale: 'small' }),\n 'button-large-height': whenProps({ scale: 'large' }),\n })};\n\n ${focusable`\n box-shadow: ${token('button-icon-box-shadow')};\n\n outline: ${token('button-icon-outline')};\n outline-offset: ${token('button-outline-offset')};\n `}\n`\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction CloseButton({ scale = 'small', size = 16, ...others }: CloseButtonProps): JSX.Element {\n return (\n <Button scale={scale} {...others}>\n <Icon name=\"close\" size={size} />\n </Button>\n )\n}\n\nexport default CloseButton\n","import React from 'react'\n\nimport { IconButton } from 'components/Button'\nimport { Icon } from 'components/Icon'\n\nimport type { ButtonProps } from 'components/Button'\n\nexport type BackButtonProps = Omit<ButtonProps, 'children'>\n\nfunction BackButton({ scale = 'small', ...others }: BackButtonProps): JSX.Element {\n return (\n <IconButton scale={scale} {...others}>\n <Icon name=\"back\" size={16} />\n </IconButton>\n )\n}\n\nexport default BackButton\n","import React, { LabelHTMLAttributes, ReactNode } from 'react'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\n\nexport interface SelectionStyleProps {\n scale?: 'small' | 'default'\n scheme?: ColorScheme\n disabled?: boolean\n}\n\nexport interface SelectionWrapperProps\n extends LabelHTMLAttributes<HTMLLabelElement>,\n SelectionStyleProps {\n selector: ReactNode\n leading?: ReactNode\n trailing?: ReactNode\n}\n\nconst SelectorWrapper = styled.span`\n position: relative;\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Trailing = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Children = styled.span`\n /* placeholder */\n`\n\nconst StyledLabel = styled.label<SelectionStyleProps>`\n box-sizing: border-box;\n\n ${transition()}\n ${font({\n weight: 'checkbox-font-weight',\n })}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n\n cursor: pointer;\n\n border-radius: ${token('border-radius-s')};\n\n font-size: ${conditional({\n 'checkbox-font-size': whenProps({ scale: 'default' }),\n 'checkbox-small-font-size': whenProps({ scale: 'small' }),\n })};\n\n color: ${conditional({\n 'checkbox-color': whenProps({ scheme: 'light' }),\n 'checkbox-dark-color': whenProps({ scheme: 'dark' }),\n })};\n\n ${Children} {\n margin: 0 ${token('space-xs')};\n }\n\n ${SelectorWrapper} {\n margin: 0 ${token('space-xs')} 0 0;\n }\n\n ${Leading} {\n margin: 0 ${token('space-xs')};\n }\n\n ${Trailing} {\n margin: 0 0 0 ${token('space-xs')};\n }\n\n ${disableable()}\n\n ${focusable`\n outline: ${token('checkbox-selector-outline')};\n outline-offset: ${token('checkbox-selector-outline-offset')};\n `}\n`\n\nfunction SelectionWrapper({\n selector,\n children,\n leading,\n trailing,\n className,\n disabled = false,\n ...others\n}: SelectionWrapperProps): JSX.Element {\n return (\n <StyledLabel\n className={clsx(className, {\n 'is-disabled': disabled,\n })}\n {...others}\n >\n {selector && <SelectorWrapper>{selector}</SelectorWrapper>}\n {leading && <Leading data-testid=\"selection-leading\">{leading}</Leading>}\n <Children>{children}</Children>\n {trailing && <Trailing data-testid=\"selection-trailing\">{trailing}</Trailing>}\n </StyledLabel>\n )\n}\n\nexport default SelectionWrapper\n","import React, { Fragment, InputHTMLAttributes, ReactNode } from 'react'\nimport clsx from 'clsx'\n\nimport { Icon } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport SelectionWrapper, { SelectionStyleProps } from 'common/SelectionWrapper'\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\n\nexport interface CheckboxProps extends InputHTMLAttributes<HTMLInputElement>, SelectionStyleProps {\n leading?: ReactNode\n scheme?: ColorScheme\n trailing?: ReactNode\n}\n\nconst Check = styled(Icon)<SelectionStyleProps>`\n position: absolute;\n top: 50%;\n\n left: 50%;\n\n transform: translate(-50%, -50%);\n\n pointer-events: none;\n`\n\nconst Selector = styled.input<SelectionStyleProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n\n cursor: pointer;\n\n appearance: none;\n\n outline: none;\n\n color: white;\n\n height: ${token('checkbox-selector-size')};\n width: ${token('checkbox-selector-size')};\n\n border-radius: ${token('checkbox-selector-border-radius')};\n border-width: ${token('button-border-width')};\n border-style: solid;\n\n border-color: ${conditional({\n 'checkbox-selector-border-color': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color': whenProps({ scheme: 'dark' }),\n })};\n\n background: ${conditional({\n 'checkbox-selector-background': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background': whenProps({ scheme: 'dark' }),\n })};\n\n :checked {\n background-color: ${token('checkbox-selector-checked-background')};\n border-color: ${token('checkbox-selector-checked-border-color')};\n }\n\n :checked + ${Check} {\n color: ${token('checkbox-selector-icon-color')};\n }\n\n :not(:checked) + ${Check} {\n color: transparent;\n }\n\n ${disableable`\n background: ${conditional({\n 'checkbox-selector-background--disabled': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background--disabled': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'checkbox-selector-border-color--disabled': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color--disabled': whenProps({ scheme: 'dark' }),\n })};\n :checked {\n background-color: ${token('checkbox-selector-checked-background--disabled')};\n border-color: ${token('checkbox-selector-checked-border-color--disabled')};\n }\n `}\n\n ${hoverable`\n background: ${conditional({\n 'checkbox-selector-background--hover': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background--hover': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'checkbox-selector-border-color--hover': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n\n :checked {\n background-color: ${token('checkbox-selector-checked-background--hover')};\n border-color: ${token('checkbox-selector-checked-border-color--hover')};\n }\n\n :checked + ${Check} {\n color: ${token('checkbox-selector-icon-color')};\n }\n `}\n\n ${focusable`\n background: ${conditional({\n 'checkbox-selector-background--focus': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background--focus': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'checkbox-selector-border-color--focus': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n :checked {\n background-color: ${token('checkbox-selector-checked-background--focus')};\n border-color: ${token('checkbox-selector-checked-border-color--focus')};\n }\n :checked + ${Check} {\n color: ${token('checkbox-selector-icon-color')};\n }\n\n box-shadow: ${token('checkbox-selector-box-shadow')};\n `}\n`\n\nfunction Checkbox({\n className,\n disabled,\n children,\n leading,\n trailing,\n scheme = 'light',\n scale = 'default',\n ...others\n}: CheckboxProps): JSX.Element {\n return (\n <SelectionWrapper\n scheme={scheme}\n scale={scale}\n selector={\n <Fragment>\n <Selector\n data-testid=\"selector\"\n {...others}\n scheme={scheme}\n disabled={disabled}\n type=\"checkbox\"\n />\n <Check name=\"check\" size={14} className=\"check\" />\n </Fragment>\n }\n leading={leading}\n trailing={trailing}\n className={clsx({ 'is-disabled': disabled }, className)}\n data-testid=\"checkbox\"\n >\n {children}\n </SelectionWrapper>\n )\n}\n\nexport default Checkbox\n","import React, { Fragment, InputHTMLAttributes, ReactNode } from 'react'\nimport clsx from 'clsx'\n\nimport { Icon } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport SelectionWrapper, { SelectionStyleProps } from 'common/SelectionWrapper'\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\n\nexport interface RadioProps extends InputHTMLAttributes<HTMLInputElement>, SelectionStyleProps {\n leading?: ReactNode\n scheme?: ColorScheme\n trailing?: ReactNode\n}\n\nconst Check = styled(Icon)<SelectionStyleProps>`\n position: absolute;\n top: 50%;\n\n left: 50%;\n\n width: 10px;\n height: 10px;\n\n transform: translate(-50%, -50%);\n\n pointer-events: none;\n\n fill: currentColor;\n`\n\nconst Selector = styled.input<SelectionStyleProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n\n cursor: pointer;\n\n appearance: none;\n\n outline: none;\n\n color: white;\n\n height: ${token('radio-small-selector-size')};\n width: ${token('radio-small-selector-size')};\n\n border-radius: ${token('radio-selector-border-radius')};\n border-width: ${token('button-border-width')};\n border-style: solid;\n\n background: ${conditional({\n 'radio-selector-background': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background': whenProps({ scheme: 'dark' }),\n })};\n\n &:not(:checked) {\n border-color: ${conditional({\n 'radio-selector-border-color': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color': whenProps({ scheme: 'dark' }),\n })};\n\n + ${Check} {\n color: transparent;\n }\n }\n\n &:checked {\n border-color: ${token('radio-selector-border-color--checked')};\n\n + ${Check} {\n color: ${token('radio-selector-border-color--checked')};\n }\n }\n\n ${disableable`\n background: ${conditional({\n 'radio-selector-background--disabled': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background--disabled': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'radio-selector-border-color--disabled': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color--disabled': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${hoverable`\n background: ${conditional({\n 'radio-selector-background--hover': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background--hover': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'radio-selector-border-color--hover': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'radio-selector-background--focus': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background--focus': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'radio-selector-border-color--focus': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n box-shadow: ${token('radio-selector-box-shadow')};\n `}\n`\n\nfunction Radio({\n className,\n disabled,\n children,\n leading,\n trailing,\n scheme = 'light',\n ...others\n}: RadioProps): JSX.Element {\n return (\n <SelectionWrapper\n scheme={scheme}\n selector={\n <Fragment>\n <Selector\n data-testid=\"selector\"\n {...others}\n scheme={scheme}\n disabled={disabled}\n type=\"radio\"\n />\n <Check name=\"circle\" className=\"check\" />\n </Fragment>\n }\n leading={leading}\n trailing={trailing}\n className={clsx({ 'is-disabled': disabled }, className)}\n data-testid=\"radio\"\n >\n {children}\n </SelectionWrapper>\n )\n}\n\nexport default Radio\n","import { useEffect, useState, useCallback, useRef } from 'react'\n\nimport type { RefObject } from 'react'\n\nexport interface useFocusWithinProps {\n onFocus?: () => void\n onBlur?: () => void\n}\n\n/**\n * As CSS's focus-within is not fully supported, this hook\n * helps with identifying focus within elements.\n * @param {Object} props - Hook props\n */\nfunction useFocusWithin<T>(props: useFocusWithinProps = {}): {\n ref: RefObject<T>\n focused: boolean\n} {\n const { onFocus, onBlur } = props\n const [focused, setFocused] = useState(false)\n const containerRef = useRef<T>(null)\n\n function getContainer() {\n return containerRef.current as unknown as HTMLElement\n }\n\n const handleFocus = useCallback(\n function handleFocus() {\n onFocus?.()\n setFocused(true)\n },\n [onFocus]\n )\n\n const handleBlur = useCallback(\n function handleBlur() {\n onBlur?.()\n setFocused(false)\n },\n [onBlur]\n )\n\n useEffect(\n function updateContainerRef() {\n getContainer()?.addEventListener('focusin', handleFocus)\n getContainer()?.addEventListener('focusout', handleBlur)\n\n return function unsubscribe() {\n getContainer()?.removeEventListener('focusin', handleFocus)\n getContainer()?.removeEventListener('focusout', handleBlur)\n }\n },\n [containerRef, handleBlur, handleFocus]\n )\n\n return {\n ref: containerRef,\n focused,\n }\n}\n\nexport default useFocusWithin\n","enum Status {\n Success = 'success',\n Danger = 'danger',\n Warn = 'warn',\n Neutral = 'neutral',\n}\n\nexport default Status\n","import React, { forwardRef } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport { useFocusWithin } from 'hooks/useFocusWithin'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport Status from 'utils/types/Status'\nimport transition from 'styles/transition'\n\nimport type { InputHTMLAttributes, ReactNode } from 'react'\n\ninterface WithAdditionalProps {\n scale?: 'small' | 'default' | 'large'\n status?: Status\n scheme?: ColorScheme\n leading?: ReactNode\n trailing?: ReactNode\n}\n\nexport interface TextFieldProps extends InputHTMLAttributes<HTMLInputElement>, WithAdditionalProps {\n className?: string\n children?: ReactNode\n}\n\nconst InputWrapper = styled.div<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n\n height: ${conditional({\n 'text-field-height': whenProps({ scale: 'default' }),\n 'text-field-small-height': whenProps({ scale: 'small' }),\n 'text-field-large-height': whenProps({ scale: 'large' }),\n })};\n min-width: 0;\n\n ${font({\n height: 'text-field-font-height',\n })}\n\n font-size: ${conditional({\n 'text-field-font-size': whenProps({ scale: 'default' }),\n 'text-field-small-font-size': whenProps({ scale: 'small' }),\n 'text-field-large-font-size': whenProps({ scale: 'large' }),\n })};\n\n border-radius: ${token('text-field-border-radius')};\n border-width: 1px;\n border-style: solid;\n\n background: ${conditional({\n 'text-field-background': whenProps({ scheme: 'light' }),\n 'text-field-dark-background': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'text-field-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'text-field-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'text-field-danger-border-color': whenProps({ status: Status.Danger }),\n 'text-field-success-border-color': whenProps({ status: Status.Success }),\n })};\n\n color: ${conditional({\n 'text-field-color': whenProps({ scheme: 'light' }),\n 'text-field-dark-color': whenProps({ scheme: 'dark' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'text-field-background--hover': whenProps({ scheme: 'light' }),\n 'text-field-dark-background--hover': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'text-field-border-color--hover': whenProps({ scheme: 'light' }),\n 'text-field-dark-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'text-field-background--focus': whenProps({ scheme: 'light' }),\n 'text-field-dark-background--focus': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'text-field-border-color--focus': whenProps({ scheme: 'light' }),\n 'text-field-dark-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n box-shadow: ${conditional({\n 'text-field-box-shadow': whenProps({ scheme: 'light' }),\n 'text-field-dark-box-shadow': whenProps({ scheme: 'dark' }),\n })};\n\n outline: ${token('text-field-outline')};\n outline-offset: ${token('text-field-outline-offset')};\n `}\n\n ${disableable()}\n`\n\nconst StyledSpan = styled.span<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n color: ${conditional({\n 'text-field-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'text-field-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'text-field-danger-border-color': whenProps({ status: Status.Danger }),\n 'text-field-success-border-color': whenProps({ status: Status.Success }),\n })};\n`\n\nexport const Leading = styled(StyledSpan)<WithAdditionalProps>`\n margin: 0 0 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })};\n`\n\nexport const Trailing = styled(StyledSpan)<WithAdditionalProps>`\n margin: 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })}\n 0 0;\n`\n\nconst StyledInput = styled.input<WithAdditionalProps>`\n ${transition()}\n\n ${font({\n height: 'text-field-font-height',\n })}\n\n background: transparent;\n\n padding: ${conditional({\n 'text-field-padding-y': whenProps({ scale: 'default' }),\n 'text-field-small-padding-y': whenProps({ scale: 'small' }),\n 'text-field-large-padding-y': whenProps({ scale: 'large' }),\n })}\n 0;\n\n margin: 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })};\n\n border: none;\n\n flex: 1;\n\n min-width: 0;\n\n ${focusable()}\n ${disableable()}\n\n /* suppress the clear button for IE */\n &[type=\"search\"]::-ms-clear,\n &[type=\"search\"]::-ms-reveal {\n display: none;\n width: 0;\n height: 0;\n }\n\n /* suppress the clear button for Chromium-based browsers */\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n display: none;\n }\n`\n\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n props: TextFieldProps,\n ref\n): JSX.Element {\n const {\n disabled = false,\n status = Status.Neutral,\n scheme = 'light',\n scale = 'default',\n className,\n leading,\n trailing,\n ...others\n } = props\n const { ref: containerRef, focused } = useFocusWithin<HTMLDivElement>()\n\n return (\n <InputWrapper\n className={clsx(className, {\n 'is-disabled': disabled,\n 'is-focused': focused,\n })}\n scheme={scheme}\n status={status}\n scale={scale}\n ref={containerRef}\n >\n {leading && (\n <Leading status={status} scheme={scheme} scale={scale}>\n {leading}\n </Leading>\n )}\n <StyledInput\n ref={ref}\n type=\"text\"\n data-testid=\"input\"\n {...others}\n scale={scale}\n status={status}\n scheme={scheme}\n leading={leading}\n trailing={trailing}\n disabled={disabled}\n />\n {trailing && (\n <Trailing status={status} scheme={scheme} scale={scale}>\n {trailing}\n </Trailing>\n )}\n </InputWrapper>\n )\n})\n\nexport default TextField\n","import { useCallback, useState } from 'react'\n\nimport type { ChangeEvent } from 'react'\nimport type { TextFieldProps } from './TextField'\n\ntype InputValue = string | number | readonly string[] | undefined\ntype ReturnType = [InputValue, (e: ChangeEvent<HTMLInputElement>) => void]\n\nfunction useTextField({ onChange: onChangeProp, value: valueProp }: TextFieldProps): ReturnType {\n const [value, setValue] = useState(valueProp || '')\n\n const onChange = useCallback(\n function handleChange(e: ChangeEvent<HTMLInputElement>) {\n const {\n target: { value },\n } = e\n setValue(value)\n onChangeProp?.(e)\n },\n [onChangeProp]\n )\n\n return [value, onChange]\n}\n\nexport default useTextField\n","import React, { forwardRef } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport { useFocusWithin } from 'hooks/useFocusWithin'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport Status from 'utils/types/Status'\nimport transition from 'styles/transition'\n\nimport type { TextareaHTMLAttributes, ReactNode } from 'react'\n\ninterface WithAdditionalProps {\n scale?: 'small' | 'default' | 'large'\n status?: Status\n scheme?: ColorScheme\n leading?: ReactNode\n trailing?: ReactNode\n}\n\nexport interface TextareaProps\n extends TextareaHTMLAttributes<HTMLTextAreaElement>,\n WithAdditionalProps {\n className?: string\n children?: ReactNode\n}\n\nconst TextareaWrapper = styled.div<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n\n min-height: ${token('textarea-min-height')};\n\n ${font({\n height: 'textarea-font-height',\n })}\n\n font-size: ${conditional({\n 'textarea-font-size': whenProps({ scale: 'default' }),\n 'textarea-small-font-size': whenProps({ scale: 'small' }),\n 'textarea-large-font-size': whenProps({ scale: 'large' }),\n })};\n\n border-radius: ${token('textarea-border-radius')};\n border-width: 1px;\n border-style: solid;\n\n background: ${conditional({\n 'textarea-background': whenProps({ scheme: 'light' }),\n 'textarea-dark-background': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'textarea-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'textarea-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'textarea-danger-border-color': whenProps({ status: Status.Danger }),\n 'textarea-success-border-color': whenProps({ status: Status.Success }),\n })};\n\n color: ${conditional({\n 'textarea-color': whenProps({ scheme: 'light' }),\n 'textarea-dark-color': whenProps({ scheme: 'dark' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'textarea-background--hover': whenProps({ scheme: 'light' }),\n 'textarea-dark-background--hover': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'textarea-border-color--hover': whenProps({ scheme: 'light' }),\n 'textarea-dark-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'textarea-background--focus': whenProps({ scheme: 'light' }),\n 'textarea-dark-background--focus': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'textarea-border-color--focus': whenProps({ scheme: 'light' }),\n 'textarea-dark-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n box-shadow: ${conditional({\n 'textarea-box-shadow': whenProps({ scheme: 'light' }),\n 'textarea-dark-box-shadow': whenProps({ scheme: 'dark' }),\n })};\n\n outline: ${token('textarea-outline')};\n outline-offset: ${token('textarea-outline-offset')};\n `}\n\n ${disableable()}\n`\n\nconst StyledSpan = styled.span<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n color: ${conditional({\n 'textarea-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'textarea-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'textarea-danger-border-color': whenProps({ status: Status.Danger }),\n 'textarea-success-border-color': whenProps({ status: Status.Success }),\n })};\n`\n\nconst Leading = styled(StyledSpan)<WithAdditionalProps>`\n align-items: flex-start;\n\n margin: 0 0 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })};\n\n padding: ${token('space-s')} 0;\n`\n\nconst Trailing = styled(StyledSpan)<WithAdditionalProps>`\n align-items: flex-start;\n\n margin: 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })}\n 0 0;\n\n padding: ${token('space-s')} 0;\n`\n\nconst StyledTextarea = styled.textarea<WithAdditionalProps>`\n ${transition()}\n\n ${font({\n height: 'textarea-font-height',\n })}\n\n background: transparent;\n\n padding: ${conditional({\n 'textarea-padding-y': whenProps({ scale: 'default' }),\n 'textarea-small-padding-y': whenProps({ scale: 'small' }),\n 'textarea-large-padding-y': whenProps({ scale: 'large' }),\n })}\n 0;\n\n margin: 0\n ${conditional({\n 'textarea-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'textarea-small-padding-x': whenProps({ scale: 'small' }),\n })};\n\n border: none;\n\n flex: 1 0 auto;\n\n ${focusable()}\n ${disableable()}\n`\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n props: TextareaProps,\n ref\n): JSX.Element {\n const {\n disabled = false,\n status = Status.Neutral,\n scheme = 'light',\n scale = 'default',\n className,\n leading,\n trailing,\n ...others\n } = props\n const { ref: containerRef, focused } = useFocusWithin<HTMLDivElement>()\n\n return (\n <TextareaWrapper\n className={clsx(className, {\n 'is-disabled': disabled,\n 'is-focused': focused,\n })}\n scheme={scheme}\n scale={scale}\n status={status}\n ref={containerRef}\n >\n {leading && (\n <Leading status={status} scheme={scheme} scale={scale}>\n {leading}\n </Leading>\n )}\n <StyledTextarea\n ref={ref}\n data-testid=\"textarea\"\n {...others}\n scale={scale}\n status={status}\n scheme={scheme}\n leading={leading}\n trailing={trailing}\n disabled={disabled}\n />\n {trailing && (\n <Trailing status={status} scheme={scheme} scale={scale}>\n {trailing}\n </Trailing>\n )}\n </TextareaWrapper>\n )\n})\n\nexport default Textarea\n","import type { AnchorHTMLAttributes } from 'react'\nimport { isBlank } from '@loadsmart/utils-string'\n\nconst INSECURE_HREF = /^javascript:/i\n\nfunction checkHref(props: AnchorHTMLAttributes<HTMLAnchorElement>) {\n const { href, ...others } = props\n\n if (isBlank(href || '')) {\n return props\n }\n\n if (INSECURE_HREF.test(`${href || ''}`)) {\n // security risk, thus, removing it\n return others\n }\n\n return props\n}\n\nfunction checkTarget({ target, rel }: AnchorHTMLAttributes<HTMLAnchorElement>) {\n if (isBlank(target || '')) {\n return { target, rel }\n }\n\n const sanitizedRel = new Set((rel || '').split(/\\s+/).filter(Boolean))\n\n if (target === '_blank') {\n sanitizedRel.add('noopener')\n }\n\n /**\n * To avoid exploitation of the window.opener API, Adding noreferrer,\n * as recommended in https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n */\n sanitizedRel.add('noreferrer')\n\n return { rel: Array.from(sanitizedRel).join(' '), target }\n}\n\nfunction useSafeLink(\n props: AnchorHTMLAttributes<HTMLAnchorElement>\n): AnchorHTMLAttributes<HTMLAnchorElement> {\n const { rel, target } = checkTarget(props) || {}\n\n return { ...checkHref(props), rel, target }\n}\n\nexport default useSafeLink\n","import React, { forwardRef } from 'react'\nimport type { AnchorHTMLAttributes, ForwardedRef } from 'react'\nimport clsx from 'clsx'\nimport styled, { css } from 'styled-components'\n\nimport useSafeLink from './useSafeLink'\nimport font from 'styles/font'\nimport transition from 'styles/transition'\nimport ellipsizable from 'styles/ellipsizable'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport disableable from 'styles/disableable'\nimport { getToken as token } from 'theming'\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n className?: string\n disabled?: boolean\n}\n\nconst StyledBaseAnchor = styled.a`\n ${font({\n height: 'link-font-height',\n weight: 'link-font-weight',\n })}\n ${transition()}\n\n ${ellipsizable()}\n\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n text-align: center;\n font-size: ${token('link-font-size')};\n color: ${token('color-neutral-darker')};\n text-decoration: none;\n\n min-height: 24px;\n\n border-radius: ${token('border-radius-s')};\n\n ${hoverable`\n text-decoration: underline;\n font-weight: ${token('link-font-weight--hover')};\n `}\n\n ${focusable`\n box-shadow: ${token('link-box-shadow')};\n outline: ${token('link-outline')};\n outline-offset: ${token('link-outline-offset')};\n `}\n\n ${disableable``}\n\n ${({ children }) =>\n 'string' == typeof children &&\n // to prevent layout shift on hover, https://css-tricks.com/bold-on-hover-without-the-layout-shift/\n css`\n &::after {\n height: 0;\n overflow: hidden;\n\n font-weight: ${token('link-font-weight--hover')};\n\n visibility: hidden;\n\n content: attr(data-text);\n content: attr(data-text) / '';\n user-select: none;\n pointer-events: none;\n\n @media speech {\n display: none;\n }\n }\n `}\n`\n\nexport const BaseLink = forwardRef(function BaseLink(\n { disabled = false, ...props }: LinkProps,\n forwardedRef: ForwardedRef<HTMLAnchorElement>\n): JSX.Element {\n const { href = '/', children, className, target = '_self', ...others } = useSafeLink(props)\n\n return (\n <StyledBaseAnchor\n className={clsx(\n {\n 'is-disabled': disabled,\n },\n className\n )}\n href={href}\n target={target}\n {...others}\n ref={forwardedRef}\n data-text={'string' == typeof children ? children : ''}\n data-testid=\"link\"\n >\n {children}\n </StyledBaseAnchor>\n )\n})\n\nconst StyledAnchor = styled(BaseLink)<LinkProps>`\n color: ${token('link-color')};\n`\n\nfunction Link(props: LinkProps): JSX.Element {\n return <StyledAnchor {...props} />\n}\n\nexport default Link\n","import React, { HTMLAttributes } from 'react'\nimport { isNil } from '@loadsmart/utils-object'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\n\nimport { Link } from '../Link'\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n active?: boolean\n label: string\n url?: string\n}\n\nconst StyledLink = styled(Link)`\n font-size: ${token('breadcrumbs-font-size')};\n line-height: ${token('breadcrumbs-font-height')};\n`\n\nconst StyledLi = styled.li<BreadcrumbProps>`\n ${font({\n height: 'breadcrumbs-font-height',\n weight: 'breadcrumbs-font-weight',\n })}\n\n position: relative;\n\n display: inline-flex;\n align-items: center;\n\n font-weight: ${conditional({\n 'breadcrumbs-font-weight': whenProps({ active: false }),\n 'breadcrumbs-font-weight--active': whenProps({ active: true }),\n })};\n\n font-size: ${token('breadcrumbs-font-size')};\n line-height: ${token('breadcrumbs-font-height')};\n\n & + & {\n margin: 0 0 0 ${token('breadcrumbs-spacing-x')};\n }\n\n &:not(:only-child):not(:last-child)::after {\n position: absolute;\n left: calc(100% + 14px);\n\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('breadcrumbs-font-size')};\n\n line-height: ${token('breadcrumbs-font-height')};\n\n content: '/';\n }\n`\n\nfunction getWrappedLabel(props: Partial<BreadcrumbProps>) {\n const { url, label, onClick, active, ...rest } = props\n\n if (isNil(url) && !onClick) {\n return label\n }\n\n return (\n <StyledLink\n href={url}\n target=\"_self\"\n onClick={onClick}\n {...(active && { 'aria-current': 'page' })}\n {...rest}\n >\n {label}\n </StyledLink>\n )\n}\n\nfunction Breadcrumb({ active, label, url, ...rest }: BreadcrumbProps): JSX.Element {\n return (\n <StyledLi\n className={clsx({ 'is-active': active })}\n label={label}\n data-testid=\"breadcrumb\"\n active={active}\n >\n {getWrappedLabel({ label, url, active, ...rest })}\n </StyledLi>\n )\n}\n\nexport default Breadcrumb\n","import React, { MouseEvent } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport Breadcrumb, { BreadcrumbProps } from './Breadcrumb'\nimport BackButton from 'common/BackButton'\n\nexport interface BreadcrumbsProps {\n className?: string\n disabled?: boolean\n entries: BreadcrumbProps[]\n onBack?: (e: MouseEvent<HTMLButtonElement>) => void\n}\n\nconst StyledWrapper = styled.nav`\n display: flex;\n flex-direction: row;\n`\n\nconst StyledOl = styled.ol`\n display: flex;\n flex-direction: row;\n margin: 0;\n\n padding: 0;\n\n list-style: none;\n`\n\nconst StyledBackButton = styled(BackButton)`\n margin: 0 ${token('space-m')} 0 0;\n`\n\nfunction Breadcrumbs({ entries = [], onBack, disabled, ...others }: BreadcrumbsProps): JSX.Element {\n return (\n <StyledWrapper aria-label=\"Breadcrumb\" {...others}>\n {onBack && (\n <StyledBackButton\n data-testid=\"breadcrumbs-back\"\n onClick={onBack}\n disabled={disabled}\n aria-label=\"Back to previous page\"\n />\n )}\n\n <StyledOl data-testid=\"breadcrumbs\">\n {entries.map((entry: BreadcrumbProps) => {\n return <Breadcrumb key={entry.label} {...entry} />\n })}\n </StyledOl>\n </StyledWrapper>\n )\n}\nexport default Breadcrumbs\n","import { useRef, useEffect } from 'react'\n\n/**\n * Hook useful to trigger action conditionally based\n * on if the component is mounted.\n * Be aware that your effect, callback, memo, etc cannot list is\n * as a dependency, otherwise it will be triggered at the wrong moment.\n * @returns {boolean} Whether the component is mounted or not.\n */\nfunction useDidMount(): boolean {\n const counter = useRef(0)\n\n useEffect(function onMount() {\n counter.current = 1\n }, [])\n\n return counter.current > 0\n}\n\nexport default useDidMount\n","import get from 'utils/toolset/get'\n\nimport type {\n Selectable,\n SelectableAdapter,\n SelectableKeyType,\n SelectableState,\n SelectableStrategy,\n} from './useSelectable.types'\n\nexport type SelectableStrategyContext<T extends Selectable> = {\n getAdapter: (type?: string) => SelectableAdapter<T>\n}\n\nconst GenericAdapter: SelectableAdapter<unknown> = {\n getKey(o): string {\n return get(o, 'value')!\n },\n}\n\nfunction createSelectionStrategy<T extends Selectable>(props: {\n multiple?: boolean\n adapters: Record<string, SelectableAdapter<T>>\n}): SelectableStrategy<T> {\n const { adapters, multiple } = props\n\n const context: SelectableStrategyContext<T> = {\n getAdapter(type?: string) {\n if (type == null) {\n return GenericAdapter\n }\n\n return adapters[type] || GenericAdapter\n },\n }\n\n if (multiple) {\n return MultipleSelectionStrategy(context)\n }\n\n return SingleSelectionStrategy(context)\n}\n\nexport function SingleSelectionStrategy<T extends Selectable>(\n context: SelectableStrategyContext<T>\n): SelectableStrategy<T> {\n return {\n type() {\n return 'single'\n },\n init(items: T[]) {\n return this.select(items, new Map())\n },\n select(items: T[]) {\n const newSelection = new Map<SelectableKeyType, T>()\n\n for (let i = 0; i < items.slice(0, 1).length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n newSelection.set(adapter.getKey(items[i]), items[i])\n }\n\n return newSelection\n },\n unselect(keys: SelectableKeyType[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < keys.length; i++) {\n newSelection.delete(keys[i])\n }\n\n return newSelection\n },\n toggle(items: T[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>()\n\n for (let i = 0; i < items.slice(0, 1).length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n\n if (!selection.has(adapter.getKey(items[i]))) {\n newSelection.set(adapter.getKey(items[i]), items[i])\n }\n }\n\n return newSelection\n },\n clear() {\n return new Map<SelectableKeyType, T>()\n },\n }\n}\n\nexport function MultipleSelectionStrategy<T extends Selectable>(\n context: SelectableStrategyContext<T>\n): SelectableStrategy<T> {\n return {\n type() {\n return 'multiple'\n },\n init(items: T[]) {\n return this.select(items, new Map<SelectableKeyType, T>())\n },\n select(items: T[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < items.length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n newSelection.set(adapter.getKey(items[i]), items[i])\n }\n\n return newSelection\n },\n unselect(keys: SelectableKeyType[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < keys.length; i++) {\n newSelection.delete(keys[i])\n }\n\n return newSelection\n },\n toggle(items: T[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < items.length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n const key = adapter.getKey(items[i])\n\n if (!selection.has(key)) {\n newSelection.set(key, items[i])\n } else {\n newSelection.delete(key)\n }\n }\n\n return newSelection\n },\n clear() {\n return new Map<SelectableKeyType, T>()\n },\n }\n}\n\nexport default createSelectionStrategy\n","import range from './range'\n\nconst MAX_LENGTH = 15\nconst INITIAL_LENGTH = 2\nconst ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-'\n\n/**\n *\n * @param {Object} options - Options\n * @param\n * @returns\n */\nexport function IDGenerator({\n maxIDLength,\n initialIDLength,\n alphabet,\n}: {\n maxIDLength: number\n initialIDLength: number\n alphabet: string\n}): () => string {\n let currentLength = initialIDLength\n\n // eslint-disable-next-line prefer-const\n let filledCharacters = [\n ...(Array(maxIDLength - currentLength).fill(-1) as number[]),\n ...(Array(currentLength).fill(0) as number[]),\n ]\n\n let availableIDs = range(initialIDLength, maxIDLength + 1).reduce(\n // using arrangement with repetition formula\n (acc: number, n: number) => acc + Math.pow(alphabet.length, n),\n 0\n )\n\n return function getID() {\n if (availableIDs == 0) {\n throw new Error(`No more IDs available with the provided alphabet and max length`)\n }\n\n availableIDs--\n const newID = filledCharacters.slice(-1 * currentLength).map((at: number) => alphabet[at])\n\n /**\n * [0, 0, 0, 0]\n * ^ at\n */\n let at = filledCharacters.length\n\n /**\n * move to the left in the `filledCharacters` array if\n * we have surpassed the last possible character in `alphabet`.\n * That means:\n * [0,0,0,(alphabet.length - 1)]\n * Becomes:\n * [0,0,1,0]\n */\n\n do {\n at--\n filledCharacters[at] = (filledCharacters[at] + 1) % alphabet.length\n } while (filledCharacters[at] == 0 && at >= filledCharacters.length - currentLength)\n\n /**\n * if we moved to the left as much as `currentLength` allowed,\n * and we have incremented as many times as we could, for each\n * position so we're back to `0`, due to the module operation,\n * i.e., if `currentLength = 3`, for example:\n *\n * [0, 0, 0, 0]\n * ^ currentLength\n * ^at\n *\n * So we need to increase `currentLength` to start incrementing from there:\n * [0, 0, 0, 0]\n * ^ currentLength\n */\n if (filledCharacters.length - at > currentLength) {\n currentLength++\n }\n\n return `genid-${newID.join('')}`\n }\n}\n\n// this configuration is capable of generating 469172025408063600 different IDs.\nconst getID = IDGenerator({\n maxIDLength: MAX_LENGTH,\n alphabet: ALPHABET,\n initialIDLength: INITIAL_LENGTH,\n})\n\nexport default getID\n","import { useState, useRef } from 'react'\n\nimport getID from 'utils/toolset/getID'\nimport isEmpty from 'utils/toolset/isEmpty'\n\ntype FingerprintAdapter<T> = (item: T) => string\n\n/**\n * This hook helps with stabilizing changes for components that rely on non-primitive props, more specifically, arrays,\n * objects, maps, sets and so on; when we need to update an internal state based on such types of prop, we might run into an infinite loop.\n * By creating a fingerprint - a string that identifies that set of items - we can garantee that the same set of items will\n * always return the same fingerprint, thus, making check for changes more predictable.\n *\n * @param adapter - adapter function that gets a unique identifier for each item in the `items` prop\n * @param items - list of items whose fingerprint should be checked.\n * @returns\n */\nfunction useFingerprint<T>(\n adapter: FingerprintAdapter<T>,\n items: T[]\n): {\n fingerprint: string\n getFingerprint: (items?: T[] | null, insert?: boolean) => string\n resetFingerprint: (items: T[]) => void\n hasSameFingerprint: (otherItems: T[]) => boolean\n} {\n const knownRef = useRef({} as Record<string, T | string>)\n const [fingerprint, setFingerprint] = useState(() => getFingerprint('', items, true))\n\n /**\n * Get a fingerprint based on the sorted items identifiers.\n *\n * @param {string[]} items - array of items\n * @param {boolean} update - update `known` with the provided `items`, if it contains different set of items.\n * @returns {string}\n */\n function getFingerprint(currentFingerprint: string, items?: T[] | null, update = false) {\n const known = knownRef.current\n\n const safeItems = items || []\n\n let newKnown: Record<string, T | string> = {}\n let hasSameItems = Object.keys(known).length === safeItems.length\n\n for (let i = 0; i < safeItems.length; i++) {\n const item = safeItems[i]\n const key = adapter(item)\n\n hasSameItems = hasSameItems && known[key] != null\n\n newKnown = {\n ...newKnown,\n // we associate a previously created or a new random value to compose the fingerprint\n [key]: known[key] ?? getID(),\n }\n }\n\n if (hasSameItems) {\n return currentFingerprint\n }\n\n if (update) {\n knownRef.current = newKnown\n }\n\n const fingerprint = Object.keys(newKnown)\n .sort()\n .reduce((fingerprint, item) => {\n return `${fingerprint}${newKnown[item] as string}`\n }, '')\n\n return fingerprint\n }\n\n return {\n fingerprint,\n getFingerprint(items?: T[] | null, update = false) {\n return getFingerprint(fingerprint, items, update)\n },\n resetFingerprint(items: T[]) {\n setFingerprint(getFingerprint(fingerprint, items, true))\n },\n /**\n * Check if the provided items have the same fingerprint.\n * @param {string[]} otherItems - items\n * @returns {boolean}\n */\n hasSameFingerprint(otherItems: T[]) {\n return fingerprint === getFingerprint(fingerprint, otherItems)\n },\n }\n}\n\nexport default useFingerprint\n","import { createContext, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { identity } from '@loadsmart/utils-function'\n\nimport { useDidMount } from 'hooks/useDidMount'\nimport createSelectionStrategy from './SelectableStrategy'\nimport toArray from 'utils/toolset/toArray'\nimport useFingerprint from 'hooks/useFingerprint'\n\nimport type { Context } from 'react'\nimport type {\n Selectable,\n SelectableAction,\n SelectableKeyType,\n SelectableState,\n SelectableStrategy,\n useSelectableProps,\n useSelectableReturn,\n} from './useSelectable.types'\n\nconst DEFAULT_ADAPTERS = {}\n\n/**\n * Create a generic manager for collection selection.\n * @returns\n */\nfunction createUseSelectable<T extends Selectable>() {\n return function useSelectable(props: useSelectableProps<T>): useSelectableReturn<T> {\n const { adapters, multiple, onChange } = props\n\n const didMount = useDidMount()\n\n const strategy = useMemo<SelectableStrategy<T>>(() => {\n return createSelectionStrategy<T>({\n adapters: adapters || DEFAULT_ADAPTERS,\n multiple: Boolean(multiple),\n })\n }, [adapters, multiple])\n\n function reducer(state: SelectableState<T>, action: SelectableAction<T>) {\n switch (action.type) {\n case 'select':\n return strategy.select(action.payload, state)\n case 'unselect':\n return strategy.unselect(action.payload, state)\n case 'toggle':\n return strategy.toggle(action.payload, state)\n case 'clear':\n return strategy.clear(state)\n case 'reset':\n return action.payload\n }\n }\n\n function initializer() {\n return strategy.init(toArray(props.selected))\n }\n\n const [selected, dispatch] = useReducer(reducer, new Map<SelectableKeyType, T>(), initializer)\n const { resetFingerprint, hasSameFingerprint } = useFingerprint<string>(\n identity,\n [...selected.keys()].map(String)\n )\n const propagateChangeRef = useRef(false)\n\n function type() {\n return strategy.type()\n }\n\n function select(items: T | T[]) {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'select',\n payload: toArray(items),\n })\n }\n\n function unselect(keys: SelectableKeyType | SelectableKeyType[]) {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'unselect',\n payload: toArray(keys),\n })\n }\n\n function toggle(items: T | T[]) {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'toggle',\n payload: toArray(items),\n })\n }\n\n function clear() {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'clear',\n })\n }\n\n useEffect(\n function handleChange() {\n if (didMount && propagateChangeRef.current) {\n onChange?.(selected)\n }\n\n propagateChangeRef.current = false\n },\n /**\n * We don't want to update when didMount or the onChange callback changes, because we're only interested\n * in changes to the selected state.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selected]\n )\n\n useEffect(\n function updateOnSelectedPropChange() {\n const newSelected = initializer()\n const keys = [...newSelected.keys()].map(String)\n\n if (hasSameFingerprint(keys)) {\n return\n }\n\n propagateChangeRef.current = false\n\n resetFingerprint(keys)\n dispatch({\n type: 'reset',\n payload: newSelected,\n })\n },\n /**\n * initializer is not relevant for our changes, that's why its ommitted.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.selected, hasSameFingerprint, resetFingerprint]\n )\n\n return { type, selected, select, unselect, toggle, clear }\n }\n}\n\nexport function createSelectable<T extends Selectable>(): {\n SelectableContext: Context<useSelectableReturn<T>>\n useSelectable: (props: useSelectableProps<T>) => useSelectableReturn<T>\n} {\n const SelectableContext = createContext<useSelectableReturn<T>>({} as useSelectableReturn<T>)\n const useSelectable = createUseSelectable<T>()\n\n return { SelectableContext, useSelectable }\n}\n","import React from 'react'\nimport { createSelectable } from 'hooks/useSelectable'\n\nimport type { ToggleGroupProps, ToggleOption } from './ToggleGroup.types'\n\nconst ToggleGroupContext = React.createContext<Pick<ToggleGroupProps, 'scale' | 'disabled'>>({\n scale: 'default',\n disabled: false,\n})\n\nexport const { SelectableContext, useSelectable } = createSelectable<ToggleOption>()\n\nexport default ToggleGroupContext\n","import React, { useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport ToggleGroupContext, { SelectableContext } from './ToggleGroupContext'\n\nimport type { ToggleGroupOptionProps, ToggleGroupType } from './ToggleGroup.types'\n\nconst ToggleButton = styled(BaseButton)<{ $type: ToggleGroupType }>`\n text-transform: ${token('toggle-text-transform')};\n\n background-color: ${conditional({\n 'toggle-background-color': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color': whenProps({ 'aria-checked': true }),\n })};\n\n border-color: ${conditional({\n 'toggle-single-border-color': whenProps({ $type: 'single', 'aria-checked': false }),\n 'toggle-single-checked-border-color': whenProps({ $type: 'single', 'aria-checked': true }),\n 'toggle-multiple-border-color': whenProps({ $type: 'multiple', 'aria-checked': false }),\n 'toggle-multiple-checked-border-color': whenProps({ $type: 'multiple', 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color': whenProps({ 'aria-checked': true }),\n })};\n\n padding: ${token('space-xs')} ${token('space-s')};\n\n ${hoverable`\n border-color: ${conditional({\n 'toggle-multiple-border-color--hover': whenProps({ $type: 'multiple' }),\n 'toggle-single-border-color--hover': whenProps({ $type: 'single' }),\n })};\n\n background-color: ${conditional({\n 'toggle-background-color--hover': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--hover': whenProps({ 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color--hover': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--hover': whenProps({ 'aria-checked': true }),\n })};\n `}\n\n ${focusable`\n border-color: ${conditional({\n 'toggle-multiple-border-color--focus': whenProps({ $type: 'multiple' }),\n 'toggle-single-border-color--focus': whenProps({ $type: 'single' }),\n })};\n\n background-color: ${conditional({\n 'toggle-background-color--focus': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--focus': whenProps({ 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color--focus': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--focus': whenProps({ 'aria-checked': true }),\n })};\n\n box-shadow: ${token('toggle-box-shadow')};\n outline: ${token('toggle-outline')};\n outline-offset: ${token('toggle-outline-offset')};\n `}\n\n ${activatable`\n border-color: ${conditional({\n 'toggle-multiple-border-color--active': whenProps({ $type: 'multiple' }),\n 'toggle-single-border-color--active': whenProps({ $type: 'single' }),\n })};\n\n background-color: ${conditional({\n 'toggle-background-color--active': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--active': whenProps({ 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color--active': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--active': whenProps({ 'aria-checked': true }),\n })};\n `}\n\n ${disableable`\n background-color: ${conditional({\n 'toggle-background-color--disabled': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--disabled': whenProps({ 'aria-checked': true }),\n })};\n\n border-color: ${conditional({\n 'toggle-single-border-color--disabled': whenProps({ $type: 'single', 'aria-checked': false }),\n 'toggle-single-checked-border-color--disabled': whenProps({\n $type: 'single',\n 'aria-checked': true,\n }),\n 'toggle-multiple-border-color--disabled': whenProps({\n $type: 'multiple',\n 'aria-checked': false,\n }),\n 'toggle-multiple-checked-border-color--disabled': whenProps({\n $type: 'multiple',\n 'aria-checked': true,\n }),\n })};\n\n color: ${conditional({\n 'toggle-color--disabled': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--disabled': whenProps({ 'aria-checked': true }),\n })};\n `}\n`\n\nfunction isMultiple(type: ToggleGroupType) {\n return type === 'multiple'\n}\n\nfunction Toggle({ value, children, disabled, ...others }: ToggleGroupOptionProps): JSX.Element {\n const group = useContext(ToggleGroupContext)\n const selectable = useContext(SelectableContext)\n\n if (isEmpty(selectable)) {\n throw Error('A Toggle options must be rendered inside a ToggleGroup')\n }\n\n const selected = selectable.selected.has(value)\n\n return (\n <ToggleButton\n {...others}\n $type={selectable.type()}\n type=\"button\"\n role={isMultiple(selectable.type()) ? 'checkbox' : 'radio'}\n aria-checked={selected}\n disabled={Boolean(disabled || group.disabled)}\n onClick={() => {\n if (isMultiple(selectable.type())) {\n selectable.toggle({ value })\n } else {\n selectable.select({ value })\n }\n }}\n scale={group.scale}\n >\n {children}\n </ToggleButton>\n )\n}\n\nexport default styled(Toggle)({})\n","import React, { useCallback } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport conditional, { whenProps } from 'tools/conditional'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport toArray from 'utils/toolset/toArray'\nimport Toggle from './Toggle'\nimport ToggleGroupContext, { SelectableContext, useSelectable } from './ToggleGroupContext'\n\nimport type {\n ToggleGroupOptionProps,\n ToggleGroupProps,\n ToggleOption,\n ToggleGroupOptionValue,\n SelectedToggleGroupOptions,\n} from './ToggleGroup.types'\nimport type { SelectableState } from '../../hooks/useSelectable'\n\nconst Container = styled(Group)<{ $multiple: boolean; $scale: ToggleGroupProps['scale'] }>`\n padding: ${conditional({\n 'toggle-group-multiple-padding': whenProps({ $multiple: true }),\n 'toggle-group-single-padding': whenProps({ $multiple: false }),\n })};\n\n border-color: ${conditional({\n 'toggle-group-multiple-border-color': whenProps({ $multiple: true }),\n 'toggle-group-single-border-color': whenProps({ $multiple: false }),\n })};\n\n border-style: ${conditional({\n 'toggle-group-multiple-border-style': whenProps({ $multiple: true }),\n 'toggle-group-single-border-style': whenProps({ $multiple: false }),\n })};\n\n border-width: ${conditional({\n 'toggle-group-multiple-border-width': whenProps({ $multiple: true }),\n 'toggle-group-single-border-width': whenProps({ $multiple: false }),\n })};\n\n border-radius: ${conditional({\n 'toggle-group-multiple-border-radius': whenProps({ $multiple: true }),\n 'toggle-group-single-border-radius': whenProps({ $multiple: false }),\n })};\n\n &.are-disabled {\n border-color: ${token('toggle-group-border-color--disabled')};\n }\n\n ${Toggle} {\n height: ${conditional({\n 'toggle-single-height': whenProps({ $multiple: false, $scale: 'default' }),\n 'toggle-single-small-height': whenProps({ $multiple: false, $scale: 'small' }),\n 'toggle-multiple-height': whenProps({ $multiple: true, $scale: 'default' }),\n 'toggle-multiple-small-height': whenProps({ $multiple: true, $scale: 'small' }),\n })};\n\n font-size: ${conditional({\n 'toggle-single-font-size': whenProps({ $multiple: false, $scale: 'default' }),\n 'toggle-single-small-font-size': whenProps({ $multiple: false, $scale: 'small' }),\n 'toggle-multiple-font-size': whenProps({ $multiple: true, $scale: 'default' }),\n 'toggle-multiple-small-font-size': whenProps({ $multiple: true, $scale: 'small' }),\n })};\n }\n`\n\nfunction fromValueToSelected(\n value: ToggleGroupOptionValue | ToggleGroupOptionValue[]\n): ToggleOption[] {\n const valueAsArray = toArray(value)\n\n return valueAsArray.map((value) => ({ value }))\n}\n\nfunction fromSelectedToValue(\n selected: SelectedToggleGroupOptions,\n multiple: boolean\n): ToggleGroupOptionValue | ToggleGroupOptionValue[] | null {\n const pairs = Array.from(selected)\n\n if (multiple) {\n const value: ToggleGroupOptionValue[] = []\n for (const [, option] of pairs) {\n value.push(option.value)\n }\n\n return value\n } else {\n if (isEmpty(pairs)) {\n return null\n }\n const [[, option]] = pairs\n return option.value\n }\n}\n\nconst DEFAULT_SELECTED = [] as ToggleGroupOptionValue[]\n\nfunction ToggleGroup(props: ToggleGroupProps): JSX.Element {\n const {\n disabled = false,\n multiple = false,\n scale = 'default',\n id,\n name,\n onChange,\n options,\n children,\n className,\n ...others\n } = props\n const selectable = useSelectable({\n multiple,\n selected: fromValueToSelected(props.value ?? DEFAULT_SELECTED),\n onChange: useCallback(\n function handleSelectionChange(selected: SelectableState<ToggleOption>) {\n onChange?.({\n target: { id, name: name ?? '', value: fromSelectedToValue(selected, multiple) },\n })\n },\n [id, multiple, name, onChange]\n ),\n })\n\n return (\n <Container\n {...others}\n className={clsx(className, {\n 'are-disabled': disabled,\n })}\n id={id}\n role={multiple ? 'group' : 'radiogroup'}\n align=\"center\"\n space=\"xs\"\n $multiple={multiple}\n $scale={scale}\n >\n <ToggleGroupContext.Provider value={{ scale, disabled }}>\n <SelectableContext.Provider value={selectable}>\n {children ??\n (options || []).map(function renderOption(option: ToggleGroupOptionProps) {\n const { label, value, ...others } = option\n const key = String(value)\n\n return (\n <Toggle\n key={key}\n {...others}\n disabled={Boolean(disabled || option.disabled)}\n value={value}\n >\n {label}\n </Toggle>\n )\n })}\n </SelectableContext.Provider>\n </ToggleGroupContext.Provider>\n </Container>\n )\n}\n\nToggleGroup.Option = Toggle\n\nexport default ToggleGroup\n","import { createContext } from 'react'\n\ninterface TabContextValue {\n id: string\n activeTab: string\n setActiveTab: (name: string) => void\n direction?: 'horizontal' | 'vertical'\n}\n\nexport const TabContext = createContext<TabContextValue>({} as TabContextValue)\n","import React from 'react'\n\nimport getID from 'utils/toolset/getID'\n\nfunction useID(propId?: string): string {\n const [id, setID] = React.useState(() => propId || getID())\n\n React.useEffect(\n function updateID() {\n setID(propId || getID())\n },\n [propId]\n )\n\n return id\n}\n\nexport default useID\n","import React, {\n HTMLAttributes,\n useContext,\n useState,\n useEffect,\n ChangeEvent,\n ReactNode,\n} from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { TabContext } from './TabsContext'\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport disableable from 'styles/disableable'\nimport transition from 'styles/transition'\nimport useID from 'hooks/useID'\n\nimport type { WithDirectionProps, WithActiveProps } from './Tabs.types'\nimport clsx from 'clsx'\n\nconst TabsItemsWrapper = styled.ul`\n display: flex;\n\n padding: 0;\n\n border-bottom-color: ${token('color-neutral-lighter')};\n border-bottom-width: 2px;\n border-bottom-style: solid;\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Children = styled(StyledSpan)`\n flex: 1;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst StyledListItem = styled.li`\n display: flex;\n`\n\nconst StyledLabel = styled.label<WithActiveProps & WithDirectionProps>`\n ${font({\n height: 'font-height-2',\n weight: 'font-weight-bold',\n })}\n ${transition()}\n\n font-size: ${token('font-size-4')};\n text-transform: uppercase;\n text-align: ${conditional({\n center: whenProps({ direction: 'vertical' }),\n justify: whenProps({ direction: 'horizontal' }),\n })};\n\n ${hoverable`\n color: ${token('color-neutral-darker')};\n background-color: ${token('color-neutral-light')}33;\n `}\n\n ${disableable`\n color: ${token('color-neutral-dark')}33;\n background-color: ${token('color-neutral-light')};\n `}\n\n padding: ${token('space-m')} ${token('space-l')};\n display: inline-flex;\n flex-direction: ${conditional({\n row: whenProps({ direction: 'horizontal' }),\n column: whenProps({ direction: 'vertical' }),\n })};\n\n cursor: pointer;\n\n position: relative;\n bottom: -2px;\n\n border-bottom-width: 2px;\n border-bottom-style: solid;\n\n border-color: ${conditional({\n 'color-transparent': whenProps({ active: false }),\n 'color-primary': whenProps({ active: true }),\n })};\n\n color: ${conditional({\n 'color-neutral': whenProps({ active: false }),\n 'neutral-darker': whenProps({ active: true }),\n })};\n\n ${Leading} + ${Children} {\n margin: ${conditional({\n '0': whenProps({ direction: 'horizontal' }),\n 'space-2xs': whenProps({ direction: 'vertical' }),\n })}\n 0 0\n ${conditional({\n 'space-s': whenProps({ direction: 'horizontal' }),\n '0': whenProps({ direction: 'vertical' }),\n })};\n }\n`\n\ntype TabsItemsProps = HTMLAttributes<HTMLUListElement>\n\nfunction TabsItems({ children, ...props }: TabsItemsProps) {\n return (\n <TabsItemsWrapper {...props} role=\"tablist\">\n {children}\n </TabsItemsWrapper>\n )\n}\n\ninterface TabsItemProps extends HTMLAttributes<HTMLInputElement> {\n name: string\n default?: boolean\n leading?: ReactNode\n disabled?: boolean\n}\n\nfunction TabsItem({\n children,\n name,\n default: isDefault,\n className,\n onChange,\n leading,\n disabled = false,\n ...props\n}: TabsItemProps) {\n const { id: tabId, setActiveTab, activeTab, direction } = useContext(TabContext)\n\n const isActive = activeTab === name\n\n function handleSelect(event: ChangeEvent<HTMLInputElement>) {\n setActiveTab(name)\n onChange?.(event)\n }\n\n useEffect(() => {\n if (!activeTab && isDefault) {\n setActiveTab(name)\n }\n }, [activeTab, name, setActiveTab, isDefault])\n\n return (\n <StyledListItem role=\"tab\" aria-selected={isActive ? 'true' : 'false'}>\n <StyledLabel\n className={clsx(\n {\n 'is-disabled': disabled,\n },\n className\n )}\n active={activeTab === name}\n direction={direction}\n >\n <input\n {...props}\n value={name}\n checked={isActive}\n disabled={disabled}\n type=\"radio\"\n name={tabId}\n onChange={handleSelect}\n hidden\n />\n {leading && <Leading>{leading}</Leading>}\n {children && <Children>{children}</Children>}\n </StyledLabel>\n </StyledListItem>\n )\n}\n\ntype PanelsItemsProps = HTMLAttributes<HTMLDivElement>\n\nconst PanelsItemsWrapper = styled.div`\n /* placeholder */\n`\n\nconst PanelsItemWrapper = styled.article`\n display: ${conditional({\n block: whenProps({ 'aria-hidden': false }),\n none: whenProps({ 'aria-hidden': true }),\n })};\n`\n\nfunction PanelsItems({ children, ...props }: PanelsItemsProps) {\n return <PanelsItemsWrapper {...props}>{children}</PanelsItemsWrapper>\n}\n\ninterface PanelsItemProps extends HTMLAttributes<HTMLElement> {\n name: string\n /**\n * Renders the Panel.Item only when is visible\n * @default false\n */\n lazy?: boolean\n}\n\nfunction PanelsItem({ children, name, lazy = false, ...props }: PanelsItemProps) {\n const { activeTab } = useContext(TabContext)\n\n const hidden = activeTab !== name\n\n return (\n <PanelsItemWrapper {...props} role=\"tabpanel\" aria-hidden={hidden}>\n {lazy && hidden ? null : children}\n </PanelsItemWrapper>\n )\n}\n\nexport interface TabsProps extends HTMLAttributes<HTMLElement>, WithDirectionProps {\n activeTab?: string\n onTabChange?: (tab: string) => void\n}\n\nconst TabsWrapper = styled.div`\n ${TabsItemsWrapper} + ${PanelsItemsWrapper} {\n margin: ${token('space-xl')} 0 0 0;\n }\n`\n\n/**\n * @example\n * <Tabs>\n <Tabs.Items>\n <Tabs.Item name=\"tab-1\" default>\n Tabs 1\n </Tabs.Item>\n <Tabs.Item name=\"tab-2\">Tabs 2</Tabs.Item>\n </Tabs.Items>\n <Tabs.Panels>\n <Tabs.Panel name=\"tab-1\">first content</Tabs.Panel>\n <Tabs.Panel name=\"tab-2\">second content</Tabs.Panel>\n </Tabs.Panels>\n * </Tabs>\n */\nfunction Tabs({\n children,\n direction = 'horizontal',\n id: propId,\n activeTab: propTab = '',\n onTabChange,\n ...props\n}: TabsProps): JSX.Element {\n const [activeTab, setActiveTab] = useState(propTab)\n const id = useID(propId)\n\n useEffect(() => {\n if (propTab) {\n setActiveTab(propTab)\n }\n }, [propTab])\n\n useEffect(() => {\n onTabChange?.(activeTab)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTab])\n\n return (\n <TabsWrapper {...props}>\n <TabContext.Provider value={{ activeTab, setActiveTab, id, direction }}>\n {children}\n </TabContext.Provider>\n </TabsWrapper>\n )\n}\n\nTabs.Items = TabsItems\nTabs.Item = TabsItem\nTabs.Panels = PanelsItems\nTabs.Panel = PanelsItem\n\nexport default Tabs\n","import React, { HTMLAttributes, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\n\nexport type SectionProps = HTMLAttributes<HTMLElement>\n\nconst StyledSection = styled.section`\n ${font({\n height: 'font-height-2',\n })}\n`\n\nconst StyledSectionTitle = styled.section`\n ${font({\n weight: 'font-weight-bold',\n height: 'font-height-2',\n })}\n\n font-size: ${token('font-size-3')};\n color: ${token('color-neutral-darker')};\n\n border-bottom: 2px solid ${token('color-neutral-light')};\n\n padding: ${token('space-s')} ${token('space-xs')};\n margin-bottom: ${token('space-l')};\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Leading = styled(StyledSpan)`\n margin: 0 ${token('button-spacing-x')} 0 0;\n`\n\nexport interface SectionTitleProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode\n leading?: ReactNode\n}\n\nfunction SectionTitle({ children, leading, ...others }: SectionTitleProps) {\n return (\n <StyledSectionTitle data-testid=\"section-title\" {...others}>\n {leading && <Leading>{leading}</Leading>}\n {children}\n </StyledSectionTitle>\n )\n}\n\nfunction Section({ children, ...others }: SectionProps): JSX.Element {\n return (\n <StyledSection data-testid=\"section\" {...others}>\n {children}\n </StyledSection>\n )\n}\n\nSection.Title = SectionTitle\n\nexport default Section\n","/**\n * Add basic CSS style for hide elements\n * @param {boolean} accessible - should keep element visible for screen readers\n * @returns {string}\n */\nfunction hiddenStyle(accessible = false): string {\n if (accessible) {\n return `\n border: 0 !important;\n clip: rect(0 0 0 0) !important;\n clip-path: inset(50%) !important;\n height: 1px !important;\n margin: -1px !important;\n overflow: hidden !important;\n padding: 0 !important;\n position: absolute !important;\n white-space: nowrap !important;\n width: 1px !important;\n pointer-events: none;\n `\n }\n\n return `\n display: none !important;\n opacity: 0 !important;\n `\n}\n\nexport default hiddenStyle\n","import React, { createContext, ReactNode, useState } from 'react'\n\ntype AccordionContextType = [boolean, () => void]\nconst AccordionContext = createContext<AccordionContextType | undefined>(undefined)\n\nfunction AccordionProvider({\n expanded,\n children,\n onExpandedChange,\n initialExpanded = false,\n}: {\n children: ReactNode\n initialExpanded?: boolean\n expanded?: boolean\n onExpandedChange?: (expanded: boolean) => void\n}): JSX.Element {\n const [openState, setOpenState] = useState(initialExpanded)\n const open = expanded ?? openState\n\n function toggle() {\n onExpandedChange?.(!open)\n setOpenState(!open)\n }\n\n return <AccordionContext.Provider value={[open, toggle]}>{children}</AccordionContext.Provider>\n}\n\nfunction useAccordionContext(): AccordionContextType {\n const context = React.useContext(AccordionContext)\n if (!context) {\n throw new Error('useAccordionContext must be used within an AccordionProvider')\n }\n return context\n}\n\nexport { AccordionProvider, useAccordionContext }\n","import React, { Fragment } from 'react'\nimport type { PropsWithChildren, HTMLAttributes, ReactNode } from 'react'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\nimport { identity, isFunction } from '@loadsmart/utils-function'\n\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport transition from 'styles/transition'\nimport ellipsizable from 'styles/ellipsizable'\nimport hidden from 'styles/hidden'\n\nimport { AccordionProvider, useAccordionContext } from './Accordion.context'\n\nconst StyledWrapper = styled.article<{ open: boolean }>`\n background: ${token('color-neutral-white')};\n border: 1px solid\n ${conditional({\n 'color-neutral-light': whenProps({ open: false }),\n 'color-accent': whenProps({ open: true }),\n })};\n border-radius: ${token('border-radius-s')};\n\n ${hoverable`\n border-color: ${token('color-accent')};\n `}\n`\n\nconst StyledToggle = styled.button<{ open: boolean }>`\n ${font({\n height: 'font-height-2',\n })}\n\n ${transition()}\n\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n\n font-size: ${token('font-size-3')};\n font-weight: ${conditional({\n 'font-weight-regular': whenProps({ open: false }),\n 'font-weight-bold': whenProps({ open: true }),\n })};\n text-align: left;\n\n cursor: pointer;\n\n color: ${token('color-neutral-darker')};\n\n background-color: ${token('color-transparent')};\n border-radius: ${token('border-radius-s')};\n border: none;\n box-sizing: border-box;\n\n padding: ${token('space-s')} ${token('space-m')};\n\n width: 100%;\n\n ${hoverable`\n background: ${token('color-neutral-lighter')};\n `}\n\n ${focusable`\n box-shadow: ${token('shadow-glow-primary')};\n `}\n`\n\nconst StyledContent = styled.section<{ open: boolean }>`\n ${font({\n height: 'font-height-2',\n weight: 'font-weight-medium',\n })}\n\n padding-left: ${conditional({\n '0': whenProps({ open: false }),\n 'space-m': whenProps({ open: true }),\n })};\n padding-right: ${conditional({\n '0': whenProps({ open: false }),\n 'space-m': whenProps({ open: true }),\n })};\n padding-top: ${conditional({\n '0': whenProps({ open: false }),\n 'space-xl': whenProps({ open: true }),\n })};\n padding-bottom: ${conditional({\n '0': whenProps({ open: false }),\n 'space-s': whenProps({ open: true }),\n })};\n\n overflow-x: hidden;\n overflow-y: auto;\n`\n\nconst HiddenInput = styled.input`\n ${hidden()}\n\n &:not(:checked) + ${StyledContent} {\n height: 0;\n }\n\n &:checked + ${StyledContent} {\n height: 100%;\n }\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Leading = styled(StyledSpan)`\n margin: 0 ${token('space-xs')} 0 0;\n`\n\nconst Trailing = styled(StyledSpan)`\n margin: 0 0 0 auto;\n`\n\nconst Children = styled.span`\n pointer-events: none;\n\n ${ellipsizable()}\n`\n\nfunction ToggleIndicator({ open }: { open: boolean }) {\n return <Icon name={open ? 'minus' : 'plus'} size={16} />\n}\n\nfunction AccordionWrapper({\n children,\n ...others\n}: PropsWithChildren<HTMLAttributes<HTMLElement>>): JSX.Element {\n const [open] = useAccordionContext()\n return (\n <StyledWrapper data-testid=\"accordion\" open={open} {...others}>\n {children}\n </StyledWrapper>\n )\n}\n\nexport type AccordionToggleProps = {\n leading?: ReactNode | ((expanded: boolean) => ReactNode)\n trailing?: ReactNode | ((expanded: boolean) => ReactNode)\n}\n\nfunction AccordionToggle({\n leading,\n trailing: propsTrailing,\n children,\n}: PropsWithChildren<AccordionToggleProps>): JSX.Element {\n const [open, toggle] = useAccordionContext()\n\n const trailing = propsTrailing === undefined ? <ToggleIndicator open={open} /> : propsTrailing\n\n return (\n <StyledToggle open={open} onClick={toggle} type=\"button\" data-testid=\"accordion-toggle\">\n {leading && (\n <Leading data-testid=\"accordion-toggle-leading\">\n {isFunction(leading) ? leading(open) : leading}\n </Leading>\n )}\n <Children>{children}</Children>\n {trailing && (\n <Trailing data-testid=\"accordion-toggle-trailing\">\n {isFunction(trailing) ? trailing(open) : trailing}\n </Trailing>\n )}\n </StyledToggle>\n )\n}\n\nexport type AccordionBodyProps = HTMLAttributes<HTMLElement>\n\nfunction AccordionBody({ children, ...props }: PropsWithChildren<AccordionBodyProps>): JSX.Element {\n const [open] = useAccordionContext()\n\n return (\n <Fragment>\n <HiddenInput type=\"checkbox\" checked={open} onChange={identity} />\n <StyledContent\n open={open}\n className={clsx({\n 'is-open': open,\n })}\n aria-hidden={!open ? 'true' : 'false'}\n data-testid=\"accordion-content\"\n {...props}\n >\n {children}\n </StyledContent>\n </Fragment>\n )\n}\n\nexport interface AccordionProps extends HTMLAttributes<HTMLElement> {\n expanded?: boolean\n initialExpanded?: boolean\n onExpandedChange?: (expanded: boolean) => void\n}\n\nfunction Accordion({\n children,\n expanded,\n initialExpanded,\n onExpandedChange,\n ...others\n}: AccordionProps): JSX.Element {\n return (\n <AccordionProvider\n expanded={expanded}\n initialExpanded={initialExpanded}\n onExpandedChange={onExpandedChange}\n >\n <AccordionWrapper {...others}>{children}</AccordionWrapper>\n </AccordionProvider>\n )\n}\n\nAccordion.Toggle = AccordionToggle\nAccordion.Body = AccordionBody\n\nexport default Accordion\n","/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nimport React, { ReactElement, useState } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport { Icon as DefaultIcon } from 'components/Icon'\n\nimport { BaseButton } from 'components/Button'\nimport DefaultCloseButton from 'common/CloseButton'\n\nexport interface BannerProps {\n className?: string\n variant?: 'success' | 'danger' | 'warning' | 'neutral'\n icon?: JSX.Element\n scale?: 'default' | 'large'\n title?: string | ReactElement\n description?: string | ReactElement\n onClose?: () => void\n dismissible?: boolean\n}\n\nexport interface BannerActionProps extends BannerProps {\n action?: string\n secondaryAction?: string\n onActionButtonClick?: () => void\n onSecondaryActionButtonClick?: () => void\n}\n\ninterface VariantProps {\n variant?: 'success' | 'danger' | 'warning' | 'neutral'\n}\n\nconst Description = styled.div`\n color: ${token('banner-description-color')};\n font-size: ${token('banner-font-size')};\n line-height: ${token('banner-font-height')};\n text-align: left;\n`\n\nconst Title = styled.div<VariantProps>`\n font-weight: ${token('banner-title-font-weight')};\n font-size: ${token('banner-font-size')};\n line-height: ${token('banner-font-height')};\n text-align: left;\n`\n\nconst TextSection = styled.div<{ $dismissible?: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-items: center;\n padding-right: ${conditional({\n 'space-xl': whenProps({ $dismissible: true }),\n })};\n`\n\nconst StyledBanner = styled.div<Omit<BannerProps, 'dismissible'>>`\n position: relative;\n\n display: flex;\n flex-wrap: ${conditional({\n wrap: whenProps({ scale: 'default' }),\n 'no-wrap': whenProps({ scale: 'large' }),\n })};\n align-items: center;\n min-width: ${token('banner-min-width')};\n\n min-height: ${conditional({\n 'banner-default-height': whenProps({ scale: 'default' }),\n })};\n padding: ${conditional({\n 'banner-default-padding-y': whenProps({ scale: 'default' }),\n 'banner-large-padding': whenProps({ scale: 'large' }),\n })}\n ${conditional({\n 'banner-default-padding-x': whenProps({ scale: 'default' }),\n 'banner-large-padding': whenProps({ scale: 'large' }),\n })};\n\n color: ${conditional({\n 'banner-title-color-success': whenProps({ variant: 'success' }),\n 'banner-title-color-danger': whenProps({ variant: 'danger' }),\n 'banner-title-color-warning': whenProps({ variant: 'warning' }),\n 'banner-title-color-neutral': whenProps({ variant: 'neutral' }),\n })};\n\n background: ${conditional({\n 'banner-background-success': whenProps({ variant: 'success' }),\n 'banner-background-warning': whenProps({ variant: 'warning' }),\n 'banner-background-danger': whenProps({ variant: 'danger' }),\n 'banner-background-neutral': whenProps({ variant: 'neutral' }),\n })};\n\n border-color: ${conditional({\n 'banner-border-color-success': whenProps({ variant: 'success' }),\n 'banner-border-color-warning': whenProps({ variant: 'warning' }),\n 'banner-border-color-danger': whenProps({ variant: 'danger' }),\n 'banner-border-color-neutral': whenProps({ variant: 'neutral' }),\n })};\n border-style: solid;\n border-width: ${token('banner-border-width')};\n\n border-radius: ${token('banner-border-radius')};\n`\n\nexport const CloseButton = styled(DefaultCloseButton)`\n position: absolute;\n top: ${conditional({\n 'banner-default-close-top': whenProps({ scale: 'default' }),\n 'banner-large-close-top': whenProps({ scale: 'large' }),\n })};\n right: ${conditional({\n 'banner-default-close-right': whenProps({ scale: 'default' }),\n 'banner-large-close-right': whenProps({ scale: 'large' }),\n })};\n\n width: ${token('banner-icon-width')};\n height: ${token('banner-icon-height')};\n`\n\nconst IconWrapper = styled.span<{ scale: string }>`\n display: inline-flex;\n align-items: center;\n\n align-self: ${conditional({\n 'banner-default-icon-alignment': whenProps({ scale: 'default' }),\n 'banner-large-icon-alignment': whenProps({ scale: 'large' }),\n })};\n justify-content: center;\n\n margin-right: ${token('banner-icon-margin-right')};\n`\n\nexport const Icon = styled(DefaultIcon)`\n width: ${token('banner-icon-width')};\n height: ${token('banner-icon-height')};\n`\n\nconst Button = styled(BaseButton)`\n min-width: 88px;\n margin-top: ${token('space-s')};\n margin-left: ${conditional({\n '0': whenProps({ variant: 'primary' }),\n 'banner-secondary-button-margin-left': whenProps({ variant: 'secondary' }),\n })};\n\n color: ${conditional({\n 'banner-button-text-color': whenProps({ variant: 'primary' }),\n 'banner-button-background-danger': whenProps({ variant: 'secondary', className: 'danger' }),\n 'banner-button-background-warning': whenProps({ variant: 'secondary', className: 'warning' }),\n 'banner-button-background-neutral': whenProps({ variant: 'secondary', className: 'neutral' }),\n 'banner-button-background-success': whenProps({ variant: 'secondary', className: 'success' }),\n })};\n\n background-color: ${conditional({\n 'banner-button-background-success': whenProps({ variant: 'primary', className: 'success' }),\n 'banner-button-background-danger': whenProps({ variant: 'primary', className: 'danger' }),\n 'banner-button-background-warning': whenProps({ variant: 'primary', className: 'warning' }),\n 'banner-button-background-neutral': whenProps({ variant: 'primary', className: 'neutral' }),\n 'banner-button-background-secondary': whenProps({ variant: 'secondary' }),\n })};\n\n border-color: ${conditional({\n 'banner-button-background-success': whenProps({ className: 'success' }),\n 'banner-button-background-danger': whenProps({ className: 'danger' }),\n 'banner-button-background-warning': whenProps({ className: 'warning' }),\n 'banner-button-background-neutral': whenProps({ className: 'neutral' }),\n })};\n`\nconst InlineButton = styled(Button)`\n flex-shrink: 0;\n align-self: center;\n`\n\nconst ButtonWrapper = styled.div`\n display: flex;\n margin-top: -${token('space-s')};\n margin-right: 0;\n margin-left: auto;\n`\n\nconst LargeButtonWrapper = styled.div`\n display: flex;\n margin-left: 0;\n`\n\nconst TextWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-right: ${token('space-s')};\n`\n\nconst getAlertIcon = (variant: string, scale: string, icon?: JSX.Element) => {\n if (icon) {\n return <IconWrapper scale={scale}>{icon}</IconWrapper>\n }\n\n let iconName = ''\n switch (variant) {\n case 'success':\n iconName = 'check'\n break\n case 'danger':\n case 'warning':\n iconName = 'warning'\n break\n default:\n iconName = 'information'\n }\n\n return (\n <IconWrapper scale={scale}>\n <Icon name={iconName} size={24} />\n </IconWrapper>\n )\n}\n\nfunction Banner({\n scale = 'default',\n variant = 'neutral',\n icon,\n title,\n description,\n onClose,\n dismissible = true,\n ...others\n}: BannerProps) {\n const [visible, setVisible] = useState<boolean>(true)\n\n if (!visible) return null\n\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n <TextWrapper>\n {getAlertIcon(variant, scale, icon)}\n <TextSection $dismissible={dismissible}>\n {scale === 'default' ? (\n React.isValidElement(title) ? (\n title\n ) : (\n <Title variant={variant}>{title}</Title>\n )\n ) : (\n <>\n {React.isValidElement(title) ? title : <Title>{title}</Title>}\n {description &&\n (React.isValidElement(description) ? (\n description\n ) : (\n <Description>{description}</Description>\n ))}\n </>\n )}\n </TextSection>\n </TextWrapper>\n {dismissible && (\n <CloseButton\n scale={scale}\n onClick={() => {\n onClose?.()\n setVisible(false)\n }}\n type=\"button\"\n data-testid=\"close-button\"\n >\n <Icon name=\"close\" size={20} />\n </CloseButton>\n )}\n </StyledBanner>\n )\n}\n\nexport function BannerLarge({\n scale = 'large',\n variant = 'neutral',\n icon,\n title,\n description,\n onClose,\n dismissible = true,\n ...others\n}: BannerProps) {\n const [visible, setVisible] = useState<boolean>(true)\n\n if (!visible) return null\n\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n {getAlertIcon(variant, scale, icon)}\n <TextSection $dismissible={dismissible}>\n {React.isValidElement(title) ? title : <Title>{title}</Title>}\n {React.isValidElement(description) ? description : <Description>{description}</Description>}\n </TextSection>\n {dismissible && (\n <CloseButton\n scale={scale}\n onClick={() => {\n onClose?.()\n setVisible(false)\n }}\n type=\"button\"\n >\n <Icon name=\"close\" size={16} />\n </CloseButton>\n )}\n </StyledBanner>\n )\n}\n\nexport function BannerAction({\n scale = 'default',\n variant = 'neutral',\n icon,\n title,\n action,\n secondaryAction,\n onActionButtonClick,\n onSecondaryActionButtonClick,\n ...others\n}: BannerActionProps): JSX.Element {\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n <TextWrapper>\n {getAlertIcon(variant, scale, icon)}\n <TextSection>\n {React.isValidElement(title) ? title : <Title variant={variant}>{title}</Title>}\n </TextSection>\n </TextWrapper>\n <ButtonWrapper>\n <InlineButton\n scale=\"small\"\n variant=\"primary\"\n className={variant}\n type=\"button\"\n onClick={onActionButtonClick}\n >\n {action}\n </InlineButton>\n {secondaryAction && (\n <InlineButton\n scale=\"small\"\n className={variant}\n variant=\"secondary\"\n type=\"button\"\n onClick={onSecondaryActionButtonClick}\n >\n {secondaryAction}\n </InlineButton>\n )}\n </ButtonWrapper>\n </StyledBanner>\n )\n}\n\nexport function BannerActionLarge({\n scale = 'large',\n variant = 'neutral',\n icon,\n title,\n description,\n action,\n secondaryAction,\n onActionButtonClick,\n onSecondaryActionButtonClick,\n onClose,\n dismissible = false,\n ...others\n}: BannerActionProps) {\n const [visible, setVisible] = useState<boolean>(true)\n\n if (!visible) return null\n\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n {getAlertIcon(variant, scale, icon)}\n <TextSection $dismissible={dismissible}>\n {React.isValidElement(title) ? title : <Title>{title}</Title>}\n {React.isValidElement(description) ? description : <Description>{description}</Description>}\n <LargeButtonWrapper>\n <Button\n scale=\"small\"\n variant=\"primary\"\n className={variant}\n type=\"button\"\n onClick={onActionButtonClick}\n >\n {action}\n </Button>\n {secondaryAction && (\n <Button\n scale=\"small\"\n className={variant}\n variant=\"secondary\"\n type=\"button\"\n onClick={onSecondaryActionButtonClick}\n >\n {secondaryAction}\n </Button>\n )}\n </LargeButtonWrapper>\n </TextSection>\n {dismissible && (\n <CloseButton\n scale={scale}\n onClick={() => {\n onClose?.()\n setVisible(false)\n }}\n >\n <Icon name=\"close\" size={16} />\n </CloseButton>\n )}\n </StyledBanner>\n )\n}\n\nexport default Banner\n","import type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport typography, { TypographyOptions, TypographyVariants } from 'styles/typography'\n\nexport type TextProps = PropsWithChildren<{\n variant?: TypographyVariants\n italic?: TypographyOptions['italic']\n color?: TypographyOptions['color']\n}>\n\nexport default styled.span<TextProps>`\n ${({ variant, italic, color }) => typography(variant, { italic, color })}\n`\n","import React, { PropsWithChildren } from 'react'\nimport ReactDOM from 'react-dom'\nimport styled, { css } from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport { Text } from 'components/Text'\nimport CloseButton from 'common/CloseButton'\nimport rem from 'utils/toolset/rem'\n\ninterface WithScaleProps {\n scale?: 'small' | 'default' | 'large'\n}\n\nexport interface ModalProps extends WithScaleProps {\n className?: string\n id?: string\n open: boolean\n fullscreen?: boolean\n onOverlayClick?: () => void\n}\n\ninterface ModalWrapperProps {\n className?: string\n id?: string\n open: boolean\n fullscreen: boolean\n}\n\ninterface ContentProps extends WithScaleProps {\n fullscreen: boolean\n}\n\nconst ModalWrapper = styled.div<ModalWrapperProps>`\n position: fixed;\n top: 0;\n left: 0;\n\n z-index: ${token('z-index-overlay')};\n\n display: ${conditional({\n flex: whenProps({ open: true }),\n none: whenProps({ open: false }),\n })};\n align-items: center;\n justify-content: center;\n width: 100%;\n\n height: 100%;\n\n background: ${token('modal-overlay-background')};\n`\n\nconst HeaderWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: content-box;\n height: ${token('space-xl')};\n margin-bottom: ${token('space-l')};\n padding-bottom: ${token('space-s')};\n\n border-bottom: 1px solid ${token('color-neutral-light')};\n`\nconst Close = styled(CloseButton).attrs({\n size: 16,\n})`\n position: absolute;\n top: ${rem('36px')};\n right: ${rem('36px')};\n`\n\nconst Content = styled.div<ContentProps>`\n background: white;\n border-radius: ${token('border-radius-s')};\n box-shadow: ${token('shadow-modal')};\n\n padding: ${token('space-xl')};\n\n margin: 0 auto;\n\n position: relative;\n\n outline: none;\n\n z-index: ${token('z-index-modal')};\n\n ${({ fullscreen }) =>\n fullscreen &&\n css`\n position: absolute;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100vh;\n `}\n\n ${({ fullscreen }) =>\n !fullscreen &&\n css`\n position: relative;\n left: auto;\n\n width: 80%;\n max-width: ${conditional({\n 'modal-small-max-width': whenProps({ scale: 'small' }),\n 'modal-max-width': whenProps({ scale: 'default' }),\n 'modal-large-max-width': whenProps({ scale: 'large' }),\n })};\n height: auto;\n `}\n`\n\nconst Header = ({ title, children }: PropsWithChildren<{ title: string }>) => {\n return (\n <HeaderWrapper>\n {title && (\n <Text variant=\"heading-md-bold\" color=\"color-neutral-darkest\">\n {title}\n </Text>\n )}\n {children}\n </HeaderWrapper>\n )\n}\n\nfunction Modal({\n scale = 'default',\n children,\n open,\n fullscreen = false,\n onOverlayClick = () => null,\n ...others\n}: PropsWithChildren<ModalProps>): JSX.Element {\n return ReactDOM.createPortal(\n <ModalWrapper\n open={open}\n fullscreen={fullscreen}\n onClick={onOverlayClick}\n data-testid=\"modal-overlay\"\n {...others}\n >\n <Content\n role=\"dialog\"\n aria-modal=\"true\"\n fullscreen={fullscreen}\n scale={scale}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n {children}\n </Content>\n </ModalWrapper>,\n document.body\n )\n}\n\nModal.Header = Header\nModal.Close = Close\n\nexport default Modal\n","import React, { ReactNode } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nimport { Modal } from '../Modal'\nimport { Button } from '../Button'\nimport type { ButtonProps } from '../Button'\nimport conditional, { whenProps } from 'tools/conditional'\nimport rem from 'utils/toolset/rem'\n\ninterface WithScaleProps {\n scale?: 'small' | 'default' | 'large'\n}\n\nexport interface DialogProps extends WithScaleProps {\n className?: string\n id?: string\n open: boolean\n children: ReactNode\n onOverlayClick?: () => void\n}\n\nconst Header = styled.h1`\n padding-bottom: ${token('space-s')};\n\n color: ${token('dialog-header-color')};\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('font-size-2')};\n line-height: ${token('font-height-2')};\n text-align: center;\n\n border-bottom: 1px solid ${token('dialog-header-border-color')};\n`\nconst Body = styled.div`\n margin-top: ${token('space-l')};\n margin-bottom: ${token('space-l')};\n\n color: ${token('dialog-body-font-color')};\n font-size: ${token('font-size-4')};\n line-height: ${token('font-height-3')};\n text-align: center;\n`\n\nconst ActionWrapper = styled.div`\n button {\n width: 100%;\n margin-bottom: ${token('space-s')};\n }\n`\n\nconst Close = styled(Modal.Close)`\n top: ${token('space-xl')};\n right: ${rem('36px')};\n`\n\nconst StyledDialogActions = styled.div<{ $scale: string; $direction: string }>`\n display: flex;\n flex-flow: ${conditional({\n 'row-reverse': whenProps({ $direction: 'horizontal' }),\n column: whenProps({ $direction: 'vertical' }),\n })};\n justify-content: ${conditional({\n center: whenProps({ $scale: 'small' }),\n end: whenProps({ $scale: ['default', 'large'] }),\n })};\n\n ${ActionWrapper}:last-child {\n margin-right: ${conditional({\n 'space-m': whenProps({ $direction: 'horizontal' }),\n initial: whenProps({ $direction: 'vertical' }),\n })}};\n }\n`\n\nfunction DialogActions({\n scale = 'default',\n direction = 'vertical',\n children,\n}: {\n scale?: 'small' | 'default' | 'large'\n direction?: 'vertical' | 'horizontal'\n children: ReactNode\n}) {\n return (\n <StyledDialogActions $scale={scale} $direction={direction}>\n {children}\n </StyledDialogActions>\n )\n}\n\nexport interface DialogActionConfirmProps extends Omit<ButtonProps, 'onClick' | 'variant'> {\n onConfirm: () => void\n}\n\nfunction DialogActionConfirm({\n onConfirm = () => void 0,\n children = 'CONFIRM',\n ...others\n}: DialogActionConfirmProps) {\n return (\n <ActionWrapper>\n <Button {...others} onClick={onConfirm} variant=\"primary\">\n {children}\n </Button>\n </ActionWrapper>\n )\n}\n\nexport interface DialogActionCancelProps extends Omit<ButtonProps, 'onClick' | 'variant'> {\n onCancel: () => void\n}\n\nfunction DialogActionCancel({\n onCancel = () => void 0,\n children = 'CANCEL',\n ...others\n}: DialogActionCancelProps) {\n return (\n <ActionWrapper>\n <Button {...others} onClick={onCancel} variant=\"secondary\">\n {children}\n </Button>\n </ActionWrapper>\n )\n}\n\nfunction Dialog({ scale = 'default', open, ...others }: DialogProps): JSX.Element {\n return <Modal open={open} scale={scale} {...others} />\n}\n\nDialog.Header = Header\nDialog.Body = Body\nDialog.ActionConfirm = DialogActionConfirm\nDialog.ActionCancel = DialogActionCancel\nDialog.Actions = DialogActions\nDialog.Close = Close\n\nexport default Dialog\n","import { useCallback, useEffect, useState } from 'react'\n\nexport interface useDialogProps {\n open: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nfunction useDialog({ open: openProp, onOpen, onClose }: useDialogProps): {\n open: boolean\n show: () => void\n hide: () => void\n toggle: () => void\n} {\n const [open, setOpen] = useState(openProp)\n\n const show = useCallback(\n function show() {\n setOpen(true)\n onOpen?.()\n },\n [onOpen]\n )\n\n const hide = useCallback(\n function hide() {\n setOpen(false)\n onClose?.()\n },\n [onClose]\n )\n\n const toggle = useCallback(\n function toggle() {\n if (open) {\n hide()\n } else {\n show()\n }\n },\n [hide, open, show]\n )\n\n useEffect(\n function updateState() {\n setOpen(openProp)\n },\n [openProp]\n )\n\n return {\n open,\n show,\n hide,\n toggle,\n }\n}\n\nexport default useDialog\n","import React, { CSSProperties, useMemo, useRef } from 'react'\nimport { useFloating, offset, flip, shift, arrow, autoUpdate } from '@floating-ui/react-dom'\nimport type { Placement } from '@floating-ui/react-dom'\n\nimport type {\n PopoverAlign,\n PopoverFloatingProps,\n PopoverPosition,\n PopoverProps,\n PopoverReferenceProps,\n UsePopoverReturn,\n} from './Popover.types'\n\nconst PopoverContext = React.createContext<UsePopoverReturn | undefined>(undefined)\n\nexport function usePopover(): UsePopoverReturn {\n const value = React.useContext(PopoverContext)\n\n if (!value) {\n throw new Error('usePopover must be used within a <Popover> Provider')\n }\n\n return value\n}\n\nfunction Popover(props: PopoverProps): JSX.Element {\n const arrowRef = useRef<HTMLElement | null>(null)\n\n const { position = 'bottom', align = 'start', strategy = 'fixed' } = props\n\n const desiredPlacement: Placement = `${position}${\n align === 'center' ? '' : `-${align}`\n }` as Placement\n\n const floating = useFloating({\n placement: desiredPlacement,\n strategy,\n middleware: [offset(10), flip(), shift(), arrow({ element: arrowRef, padding: 8 })],\n // TODO: FloatingUI docs states that `autoUpdate` is expensive.\n // This should be properly investidated since it's the way to\n // update fixed positions after scrolling.\n whileElementsMounted: autoUpdate,\n })\n\n const [resultPosition = position, resultAlign = align] = floating.placement.split('-') as [\n PopoverPosition,\n PopoverAlign,\n ]\n\n const value = useMemo<UsePopoverReturn>(\n () => ({\n strategy,\n register: {\n setReference: floating.refs.setReference,\n setFloating: floating.refs.setFloating,\n setArrow: arrowRef,\n },\n result: {\n floatingStyles: floating.floatingStyles,\n arrow: { top: floating.middlewareData.arrow?.y, left: floating.middlewareData.arrow?.x },\n position: resultPosition,\n align: resultAlign,\n },\n }),\n [\n floating.refs.setFloating,\n floating.middlewareData.arrow?.x,\n floating.middlewareData.arrow?.y,\n floating.refs.setReference,\n floating.floatingStyles,\n resultAlign,\n resultPosition,\n strategy,\n ]\n )\n\n return <PopoverContext.Provider value={value}>{props.children}</PopoverContext.Provider>\n}\n\nfunction PopoverReference({ children, ...others }: PopoverReferenceProps): JSX.Element {\n const { register } = usePopover()\n\n return (\n <div ref={register.setReference} {...others}>\n {children}\n </div>\n )\n}\n\nfunction PopoverFloating({ children, style, ...others }: PopoverFloatingProps): JSX.Element {\n const { register, result } = usePopover()\n\n return (\n <div\n ref={register.setFloating}\n {...others}\n style={{\n ...result.floatingStyles,\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nPopover.Floating = PopoverFloating\nPopover.Reference = PopoverReference\n\nexport default Popover\n","import React, { HTMLAttributes, ReactNode, useCallback, useState } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport focusable from 'styles/focusable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport { Popover, usePopover } from 'components/Popover'\nimport typography from 'styles/typography'\n\nimport type { PopoverAlign, PopoverPosition } from 'components/Popover'\n\nexport enum TooltipPosition {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n}\n\nexport enum TooltipAlign {\n Start = 'start',\n Center = 'center',\n End = 'end',\n}\n\nexport interface TooltipProps extends HTMLAttributes<HTMLDivElement> {\n message: ReactNode\n scheme?: ColorScheme\n position?: TooltipPosition | PopoverPosition\n align?: TooltipAlign | PopoverAlign\n}\n\ntype ContainerProps = Pick<TooltipProps, 'scheme'>\n\nconst Container = styled.div<ContainerProps>`\n display: inline-block;\n\n position: relative;\n\n cursor: help;\n\n ${focusable`\n outline: ${conditional({\n '$tooltip-outline': whenProps({ scheme: 'light' }),\n '$tooltip-dark-outline': whenProps({ scheme: 'dark' }),\n })};\n `}\n`\n\nconst Bubble = styled(Popover.Floating)`\n ${typography('body')}\n\n white-space: initial;\n\n min-width: ${token('tooltip-min-width')};\n max-width: ${token('tooltip-max-width')};\n width: max-content;\n\n z-index: ${token('z-index-tooltip')};\n\n background: ${token('tooltip-background')};\n box-shadow: ${token('tooltip-shadow')};\n border-radius: ${token('tooltip-border-radius')};\n\n padding: ${token('tooltip-padding-y')} ${token('tooltip-padding-x')};\n\n color: ${token('tooltip-color')};\n font-size: ${token('tooltip-font-size')};\n line-height: ${token('tooltip-font-height')};\n`\n\ntype ArrowProps = Pick<TooltipProps, 'position'> & {\n top?: number\n left?: number\n}\n\nconst StyledArrow = styled.span<ArrowProps>`\n position: absolute;\n\n width: 0;\n height: 0;\n display: block;\n\n background: transparent;\n border-style: solid;\n\n z-index: ${token('z-index-tooltip')};\n\n ${({ top }) => top && `top: ${top}px;`}\n ${({ left }) => left && `left: ${left}px;`}\n\n ${({ position }) =>\n position === 'top' &&\n css`\n bottom: -8px;\n\n border-color: ${token('tooltip-background')} transparent transparent transparent;\n border-width: 12px 10px 0 10px;\n `}\n\n ${({ position }) =>\n position === 'bottom' &&\n css`\n top: -8px;\n\n border-color: transparent transparent ${token('tooltip-background')} transparent;\n border-width: 0 10px 12px 10px;\n `}\n\n ${({ position }) =>\n position === 'left' &&\n css`\n right: -8px;\n\n border-color: transparent transparent transparent ${token('tooltip-background')};\n border-width: 10px 0 10px 12px;\n `}\n\n ${({ position }) =>\n position === 'right' &&\n css`\n left: -8px;\n\n border-color: transparent ${token('tooltip-background')} transparent transparent;\n border-width: 10px 12px 10px 0;\n `}\n`\n\nfunction Arrow() {\n const { register, result } = usePopover()\n\n return (\n <StyledArrow\n ref={(element) => (register.setArrow.current = element)}\n position={result.position}\n top={result.arrow.top}\n left={result.arrow.left}\n />\n )\n}\n\nfunction Tooltip({\n children,\n message,\n scheme,\n position = TooltipPosition.Top,\n align = TooltipAlign.Center,\n ...rest\n}: PropsWithChildren<TooltipProps>): JSX.Element {\n const [visible, setVisible] = useState(false)\n\n const showTooltip = useCallback(() => {\n setVisible(true)\n }, [])\n\n const hideTooltip = useCallback(() => {\n setVisible(false)\n }, [])\n\n return (\n <Container\n {...rest}\n onFocus={showTooltip}\n onBlur={hideTooltip}\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n tabIndex={0}\n scheme={scheme}\n >\n <Popover position={position} align={align}>\n {visible && (\n <Bubble role=\"tooltip\">\n {message}\n <Arrow />\n </Bubble>\n )}\n\n <Popover.Reference>{children}</Popover.Reference>\n </Popover>\n </Container>\n )\n}\n\nexport default Tooltip\n","import React, { ReactNode } from 'react'\nimport type { LabelHTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\nimport { isNil } from '@loadsmart/utils-object'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport ellipsizable from 'styles/ellipsizable'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\n\nimport { Tooltip, TooltipProps } from '../Tooltip'\n\ntype AcceptedType = 'label' | 'div' | 'span'\n\ninterface WithAdditionalProps {\n as?: AcceptedType\n disabled?: boolean\n required?: boolean\n scheme?: ColorScheme\n tip?: ReactNode\n tipProps?: Omit<TooltipProps, 'message'>\n}\n\nexport interface LabelProps\n extends LabelHTMLAttributes<HTMLLabelElement | HTMLDivElement | HTMLSpanElement>,\n WithAdditionalProps {\n className?: string\n}\n\nconst StyledWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n\n line-height: ${token('font-height-2')};\n ${disableable()}\n`\n\nconst StyledChildren = styled.span<WithAdditionalProps>`\n display: inline-block;\n\n ${font({\n height: 'label-font-height',\n weight: 'label-font-weight',\n })}\n\n font-size: ${token('label-font-size')};\n color: ${conditional({\n 'label-font-color': whenProps({ scheme: 'light' }),\n 'color-neutral-white': whenProps({ scheme: 'dark' }),\n })};\n ${ellipsizable()}\n`\n\nconst StyledRequired = styled.sup`\n top: 0;\n\n color: ${token('label-required-color')};\n font-size: ${token('label-font-size')};\n`\n\nconst StyledTooltipAnchor = styled.span<WithAdditionalProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin: 0 0 0 ${token('label-tooltip-margin-left')};\n\n color: ${conditional({\n 'label-tooltip-font-color': whenProps({ scheme: 'light' }),\n 'label-tooltip-dark-font-color': whenProps({ scheme: 'dark' }),\n })};\n font-weight: ${token('label-tooltip-font-weight')};\n font-size: ${token('label-tooltip-font-size')};\n\n background: ${conditional({\n 'label-tooltip-background-color': whenProps({ scheme: 'light' }),\n 'label-tooltip-dark-background-color': whenProps({ scheme: 'dark' }),\n })};\n border-radius: ${token('border-radius-circle')};\n`\n\nfunction Label({\n as = 'label',\n children,\n className,\n disabled = false,\n required,\n scheme = 'light',\n tip,\n tipProps = {},\n ...others\n}: LabelProps): JSX.Element {\n const tag = String(as || 'label') as AcceptedType\n\n return (\n <StyledWrapper\n data-testid=\"label\"\n as={tag}\n className={clsx(className, {\n 'is-disabled': disabled,\n })}\n {...others}\n >\n <StyledChildren scheme={scheme}>{children}</StyledChildren>\n {required && <StyledRequired>*</StyledRequired>}\n {!isNil(tip) && (\n <Tooltip scheme={scheme} message={tip || ''} {...tipProps}>\n <StyledTooltipAnchor scheme={scheme}>?</StyledTooltipAnchor>\n </Tooltip>\n )}\n </StyledWrapper>\n )\n}\n\nexport default Label\n","export const PAGINATION_ITEM_TYPE = {\n endEllipsis: 'end-ellipsis',\n next: 'next',\n page: 'page',\n previous: 'previous',\n startEllipsis: 'start-ellipsis',\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\n\nimport { BaseButton, IconButton as IconButtonDefault } from 'components/Button'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\n\nimport type { PaginationItemProps } from './Pagination.types'\nimport { PAGINATION_ITEM_TYPE } from './Pagination.constants'\n\nconst IconButton = styled(IconButtonDefault)`\n margin: ${token('space-xs')};\n`\n\nconst PageButton = styled(BaseButton)`\n background-color: transparent;\n border: none;\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n `}\n\n ${hoverable`\n * {\n text-decoration: underline;\n color: ${token('color-neutral-dark')};\n }\n `}\n\n ${Text} {\n color: ${conditional({\n 'color-accent': whenProps({ 'aria-current': true }),\n })};\n text-decoration: ${conditional({\n underline: whenProps({ 'aria-current': true }),\n })};\n }\n`\n\nconst ICONS_NAME: Record<string, string> = {\n previous: 'caret-left',\n next: 'caret-right',\n}\n\nfunction PaginationItem(props: PaginationItemProps): JSX.Element {\n const { itemType: type, page, ...others } = props\n\n const iconName = ICONS_NAME[type]\n\n if (iconName) {\n return (\n <IconButton {...others} id={iconName} aria-label={`Go to ${type} page`}>\n <Icon name={iconName} size={16} />\n </IconButton>\n )\n }\n\n return (\n <PageButton {...others} aria-label={`Go to page ${page?.toString() ?? ''}`}>\n <Text variant=\"body\">\n {[PAGINATION_ITEM_TYPE.endEllipsis, PAGINATION_ITEM_TYPE.startEllipsis].includes(type)\n ? '...'\n : page}\n </Text>\n </PageButton>\n )\n}\n\nexport default PaginationItem\n","import { PAGINATION_ITEM_TYPE } from './Pagination.constants'\nimport type { PaginationHelperArgs } from './Pagination.types'\n\nexport class PaginationHelper {\n boundaryCount: number\n count: number\n page: number\n siblingCount: number\n\n constructor({ boundaryCount, count, page, siblingCount }: PaginationHelperArgs) {\n this.boundaryCount = boundaryCount\n this.count = count\n this.page = page\n this.siblingCount = siblingCount\n }\n\n range(start: number, end: number): number[] {\n const length = end - start + 1\n return Array.from({ length }, (_, i) => start + i)\n }\n\n getStartPages(): number[] {\n return this.range(1, Math.min(this.boundaryCount, this.count))\n }\n\n getEndPages(): number[] {\n return this.range(\n Math.max(this.count - this.boundaryCount + 1, this.boundaryCount + 1),\n this.count\n )\n }\n\n getSibilingsStart(): number {\n return Math.max(\n Math.min(\n // Natural start\n this.page - this.siblingCount,\n // Lower boundary when page is high\n this.count - this.boundaryCount - this.siblingCount * 2 - 1\n ),\n // Greater than startPages\n this.boundaryCount + 2\n )\n }\n\n getSibilingsEnd(): number {\n const endPages = this.getEndPages()\n\n return Math.min(\n Math.max(\n // Natural end\n this.page + this.siblingCount,\n // Upper boundary when page is low\n this.boundaryCount + this.siblingCount * 2 + 2\n ),\n // Less than endPages\n endPages.length > 0 ? endPages[0] - 2 : this.count - 1\n )\n }\n\n getStartEllipsis(): number[] | string[] {\n const siblingsStart = this.getSibilingsStart()\n\n if (siblingsStart > this.boundaryCount + 2) {\n return [PAGINATION_ITEM_TYPE.startEllipsis]\n }\n\n if (this.boundaryCount + 1 < this.count - this.boundaryCount) {\n return [this.boundaryCount + 1]\n }\n\n return []\n }\n\n getEndEllipsis(): number[] | string[] {\n const siblingsEnd = this.getSibilingsEnd()\n\n if (siblingsEnd < this.count - this.boundaryCount - 1) {\n return [PAGINATION_ITEM_TYPE.endEllipsis]\n }\n\n if (this.count - this.boundaryCount > this.boundaryCount) {\n return [this.count - this.boundaryCount]\n }\n\n return []\n }\n}\n","import { PAGINATION_ITEM_TYPE } from './Pagination.constants'\nimport { PaginationHelper } from './Pagination.helper'\nimport type { usePaginationProps, usePaginationReturn } from './Pagination.types'\n\nfunction usePagination(props: usePaginationProps): usePaginationReturn[] {\n const {\n boundaryCount = 1,\n count,\n disabled = false,\n onChange: handleChange,\n page,\n siblingCount = 1,\n } = props\n\n const paginationHelper = new PaginationHelper({ boundaryCount, count, page, siblingCount })\n\n function handleClick({ page }: { page: number | null }) {\n if (page) {\n handleChange({ page })\n }\n }\n\n const startPages = paginationHelper.getStartPages()\n const endPages = paginationHelper.getEndPages()\n\n const siblingsStart = paginationHelper.getSibilingsStart()\n const siblingsEnd = paginationHelper.getSibilingsEnd()\n\n // Basic list of items to render\n // e.g. itemList = ['previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next']\n const itemList = [\n PAGINATION_ITEM_TYPE.previous,\n ...startPages,\n\n // Start ellipsis\n ...paginationHelper.getStartEllipsis(),\n\n // Sibling pages\n ...paginationHelper.range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n ...paginationHelper.getEndEllipsis(),\n\n ...endPages,\n PAGINATION_ITEM_TYPE.next,\n ]\n\n function getButtonPage(item: string | number): number | null {\n if (typeof item === 'number') {\n return item\n } else {\n switch (item) {\n case PAGINATION_ITEM_TYPE.previous:\n return page - 1\n case PAGINATION_ITEM_TYPE.next:\n return page + 1\n case PAGINATION_ITEM_TYPE.startEllipsis:\n return siblingsStart - 1\n case PAGINATION_ITEM_TYPE.endEllipsis:\n return siblingsEnd + 1\n default:\n return null\n }\n }\n }\n\n function isDisabled(item: string | number): boolean {\n if (item === PAGINATION_ITEM_TYPE.previous) return page <= 1\n if (item === PAGINATION_ITEM_TYPE.next) return page >= count\n\n return false\n }\n\n return itemList.map((item) => {\n const isNumber = typeof item === 'number'\n\n return {\n onClick: () => handleClick({ page: getButtonPage(item) }),\n itemType: isNumber ? PAGINATION_ITEM_TYPE.page : item.toString(),\n page: getButtonPage(item),\n disabled: disabled || isDisabled(item),\n ...(isNumber && { 'aria-current': item === page }),\n }\n })\n}\n\nexport default usePagination\n","import React from 'react'\n\nimport { Layout } from 'components/Layout'\n\nimport PaginationItem from './PaginationItem'\nimport usePagination from './usePagination'\n\nimport type { PaginationProps } from './Pagination.types'\n\nfunction Pagination(props: PaginationProps): JSX.Element {\n const {\n boundaryCount = 1,\n count,\n disabled = false,\n onChange,\n page,\n siblingCount = 1,\n ...others\n } = props\n\n const items = usePagination({ boundaryCount, count, disabled, onChange, page, siblingCount })\n\n return (\n <nav aria-label=\"pagination navigation\" {...others}>\n <Layout.Group space=\"none\" align=\"center\">\n {items.map((item) => (\n <PaginationItem {...item} key={`${item.itemType}${item.page || ''}`} />\n ))}\n </Layout.Group>\n </nav>\n )\n}\n\nexport default Pagination\n","import React, { BaseHTMLAttributes } from 'react'\nimport styled, { css } from 'styled-components'\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport Status from 'utils/types/Status'\n\nconst Bar = styled.div<{ rounded: boolean }>`\n align-items: center;\n display: flex;\n flex-grow: 0;\n flex-shrink: 1;\n\n justify-content: center;\n overflow: hidden;\n width: 100%;\n\n position: relative;\n\n height: ${token('progressbar-height')};\n\n ${({ rounded }) =>\n rounded &&\n css`\n border-radius: ${token('progressbar-height')};\n `}\n`\n\nconst Line = styled.span`\n width: 100%;\n height: 1px;\n\n background: ${token('progressbar-line')};\n background: black;\n`\n\ntype ProgressProps = Pick<ProgressBarProps, 'value' | 'rounded' | 'status'>\nconst Progress = styled.span<ProgressProps>`\n position: absolute;\n top: 0;\n left: 0;\n\n width: ${({ value }) => value}%;\n height: ${token('progressbar-height')};\n\n background: ${conditional({\n 'progressbar-neutral-fill': whenProps({ status: Status.Neutral }),\n 'progressbar-success-fill': whenProps({ status: Status.Success }),\n 'progressbar-warning-fill': whenProps({ status: Status.Warn }),\n 'progressbar-danger-fill': whenProps({ status: Status.Danger }),\n })};\n border-radius: ${conditional({\n ['progressbar-height']: whenProps({ rounded: true }),\n })};\n\n transition: 600ms ease;\n`\n\nexport interface ProgressBarProps extends BaseHTMLAttributes<HTMLDivElement> {\n value?: number\n status?: string\n rounded?: boolean\n showLine?: boolean\n}\n\nexport function ProgressBar({\n value = 60,\n status = Status.Neutral,\n rounded = false,\n showLine = false,\n ...extra\n}: ProgressBarProps): JSX.Element {\n const clampedValue = Math.max(0, Math.min(value, 100))\n\n return (\n <Bar\n role=\"progressBar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n rounded={rounded}\n {...extra}\n >\n {showLine && <Line />}\n <Progress value={clampedValue} rounded={rounded} status={status} />\n </Bar>\n )\n}\n\nexport default ProgressBar\n","import React, { ChangeEvent, InputHTMLAttributes } from 'react'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hidden from 'styles/hidden'\nimport hoverable from 'styles/hoverable'\nimport { getToken as token } from 'theming'\n\nimport transition from 'styles/transition'\n\ninterface WithAdditionalProps {\n active?: boolean\n onToggle?: (event: ChangeEvent<HTMLInputElement>) => void\n scale?: 'default' | 'large'\n}\n\nexport interface SwitchProps extends InputHTMLAttributes<HTMLInputElement>, WithAdditionalProps {\n className?: string\n}\n\nconst SwitchWrapper = styled.label<WithAdditionalProps>`\n ${transition()}\n\n ${font({})};\n\n user-select: none;\n\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n\n position: relative;\n\n display: inline-flex;\n\n width: ${conditional({\n 'switch-width': whenProps({ scale: 'default' }),\n 'switch-large-width': whenProps({ scale: 'large' }),\n })};\n height: ${conditional({\n 'switch-height': whenProps({ scale: 'default' }),\n 'switch-large-height': whenProps({ scale: 'large' }),\n })};\n\n background-color: ${conditional({\n 'switch-inactive-background-color': whenProps({ active: false }),\n 'switch-active-background-color': whenProps({ active: true }),\n })};\n\n border-radius: ${conditional({\n 'switch-border-radius': whenProps({ scale: 'default' }),\n 'switch-large-border-radius': whenProps({ scale: 'large' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'switch-inactive-background-color--hover': whenProps({ active: false }),\n 'switch-active-background-color--hover': whenProps({ active: true }),\n })};\n `}\n\n ${focusable`\n box-shadow: ${token('switch-box-shadow')};\n outline: ${token('switch-outline')};\n outline-offset: ${token('switch-outline-offset')};\n `}\n\n ${disableable``}\n`\n\nconst Slider = styled.span<WithAdditionalProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n :before {\n position: absolute;\n bottom: ${conditional({\n 'switch-slider-y': whenProps({ scale: 'default', active: false }),\n 'switch-slider-active-y': whenProps({ scale: 'default', active: true }),\n 'switch-slider-large-y': whenProps({ scale: 'large', active: false }),\n 'switch-slider-large-active-y': whenProps({ scale: 'large', active: true }),\n })};\n left: ${conditional({\n 'switch-slider-x': whenProps({ scale: 'default', active: false }),\n 'switch-slider-active-x': whenProps({ scale: 'default', active: true }),\n 'switch-slider-large-x': whenProps({ scale: 'large', active: false }),\n 'switch-slider-large-active-x': whenProps({ scale: 'large', active: true }),\n })};\n\n width: ${conditional({\n 'switch-slider-size': whenProps({ scale: 'default' }),\n 'switch-slider-large-size': whenProps({ scale: 'large' }),\n })};\n\n height: ${conditional({\n 'switch-slider-size': whenProps({ scale: 'default' }),\n 'switch-slider-large-size': whenProps({ scale: 'large' }),\n })};\n\n background-color: ${token('switch-slider-background-color')};\n border-radius: ${token('switch-slider-border-radius')};\n\n ${transition({\n timingFunction: 'ease-out',\n duration: '150ms',\n })}\n\n content: '';\n }\n`\n\nconst HiddenInput = styled.input`\n ${hidden(true)}\n`\n\nconst ActiveIcon = styled(Icon)<WithAdditionalProps>`\n position: absolute;\n top: ${conditional({\n 'switch-icon-active-y': whenProps({ scale: 'default' }),\n 'switch-large-icon-active-y': whenProps({ scale: 'large' }),\n })};\n left: ${conditional({\n 'switch-icon-active-x': whenProps({ scale: 'default' }),\n 'switch-large-icon-active-x': whenProps({ scale: 'large' }),\n })};\n\n width: ${conditional({\n 'switch-icon-width': whenProps({ scale: 'default' }),\n 'switch-large-icon-width': whenProps({ scale: 'large' }),\n })};\n\n height: ${conditional({\n 'switch-icon-height': whenProps({ scale: 'default' }),\n 'switch-large-icon-height': whenProps({ scale: 'large' }),\n })};\n\n color: ${token('switch-icon-color')};\n`\n\nconst InactiveIcon = styled(Icon)<WithAdditionalProps>`\n position: absolute;\n top: ${conditional({\n 'switch-icon-inactive-y': whenProps({ scale: 'default' }),\n 'switch-large-icon-inactive-y': whenProps({ scale: 'large' }),\n })};\n left: ${conditional({\n 'switch-icon-inactive-x': whenProps({ scale: 'default' }),\n 'switch-large-icon-inactive-x': whenProps({ scale: 'large' }),\n })};\n\n width: ${conditional({\n 'switch-icon-width': whenProps({ scale: 'default' }),\n 'switch-large-icon-width': whenProps({ scale: 'large' }),\n })};\n\n height: ${conditional({\n 'switch-icon-height': whenProps({ scale: 'default' }),\n 'switch-large-icon-height': whenProps({ scale: 'large' }),\n })};\n\n color: ${token('switch-icon-color')};\n`\n\nfunction Switch({\n active = false,\n className,\n disabled = false,\n name,\n onToggle,\n scale = 'default',\n ...others\n}: SwitchProps): JSX.Element {\n return (\n <SwitchWrapper\n htmlFor={name}\n title={active ? 'active' : 'inactive'}\n active={active}\n className={clsx(className, {\n 'is-disabled': disabled,\n })}\n scale={scale}\n >\n {active ? (\n <ActiveIcon name=\"check\" scale={scale} data-testid=\"switch-icon-active\" />\n ) : (\n <InactiveIcon name=\"close\" scale={scale} data-testid=\"switch-icon-inactive\" />\n )}\n <Slider active={active} scale={scale} />\n <HiddenInput\n type=\"checkbox\"\n {...others}\n id={name}\n name={name}\n checked={active}\n disabled={disabled}\n onChange={onToggle}\n />\n </SwitchWrapper>\n )\n}\n\nexport default Switch\n","import React, { ReactNode } from 'react'\nimport styled from 'styled-components'\n\nimport { Icon } from 'components/Icon'\n\n// tools\nimport conditional, { whenProps } from 'tools/conditional'\n// styles\nimport typography from 'styles/typography'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport { getToken as token } from 'theming'\n\nimport type { ButtonHTMLAttributes } from 'react'\n\n// interfaces\ninterface WithSizeProps {\n size?: 'small' | 'default' | 'large'\n}\n\ninterface WithVariantProps {\n variant?: 'accent' | 'danger' | 'default' | 'outlined' | 'success' | 'warning'\n}\n\nexport interface TagProps extends React.HTMLAttributes<HTMLElement>, WithSizeProps {\n className?: string\n children?: ReactNode\n disabled?: boolean\n leading?: ReactNode\n removable?: boolean\n variant?: 'accent' | 'danger' | 'default' | 'outlined' | 'success' | 'warning'\n onRemove?: () => void\n getRemoveButtonProps?: () => Partial<ButtonHTMLAttributes<HTMLButtonElement>> & {\n 'data-testid'?: string\n }\n}\n\n// styled elements\nconst StyledTag = styled.span`\n display: inline-flex;\n\n position: relative;\n\n width: auto;\n\n z-index: 0;\n\n ${disableable`\n opacity: ${token('opacity-60')};\n `}\n`\n\nconst StyledSpan = styled.span<TagProps>`\n ${transition()}\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n box-sizing: border-box;\n\n text-decoration: none;\n\n ${typography(\n conditional({\n 'chips-sm': whenProps({ size: 'small' }),\n 'caption-bold': whenProps({ size: 'default' }),\n 'body-bold': whenProps({ size: 'large' }),\n })\n )}\n\n line-height: initial;\n\n text-transform: ${conditional({\n 'tag-transform': whenProps({ size: 'default' }),\n 'tag-small-transform': whenProps({ size: 'small' }),\n 'tag-large-transform': whenProps({ size: 'large' }),\n })};\n\n padding: ${conditional({\n 'tag-small-spacing': whenProps({ size: 'small', removable: (removable) => !removable }),\n 'tag-spacing': whenProps({\n size: (size) => !['small', 'large'].includes(size ?? ''),\n removable: (removable) => !removable,\n }),\n 'tag-large-spacing': whenProps({ size: 'large', removable: (removable) => !removable }),\n 'tag-removable-spacing': whenProps([{ size: (size) => size !== 'small', removable: true }]),\n 'tag-small-removable-spacing': whenProps([{ size: 'small', removable: true }]),\n })};\n\n min-width: ${token('tag-width')};\n height: ${conditional({\n 'tag-height': whenProps({ size: 'default' }),\n 'tag-small-height': whenProps({ size: 'small' }),\n 'tag-large-height': whenProps({ size: 'large' }),\n })};\n\n font-weight: ${conditional({\n 'tag-font-weight': whenProps({ size: 'default' }),\n 'tag-small-font-weight': whenProps({ size: 'small' }),\n 'tag-large-font-weight': whenProps({ size: 'large' }),\n })};\n\n color: ${conditional({\n 'tag-default-color': whenProps({ variant: 'default' }),\n 'tag-outlined-color': whenProps({ variant: 'outlined' }),\n 'tag-accent-color': whenProps({ variant: 'accent' }),\n 'tag-success-color': whenProps({ variant: 'success' }),\n 'tag-warning-color': whenProps({ variant: 'warning' }),\n 'tag-danger-color': whenProps({ variant: 'danger' }),\n })};\n\n background: ${conditional({\n 'tag-default-background': whenProps({ variant: 'default' }),\n 'tag-outlined-background': whenProps({ variant: 'outlined' }),\n 'tag-accent-background': whenProps({ variant: 'accent' }),\n 'tag-success-background': whenProps({ variant: 'success' }),\n 'tag-warning-background': whenProps({ variant: 'warning' }),\n 'tag-danger-background': whenProps({ variant: 'danger' }),\n })};\n\n border-radius: ${token('tag-border-radius')};\n border-width: ${token('tag-border-width')};\n border-style: solid;\n\n border-color: ${conditional({\n 'tag-default-border-color': whenProps({ variant: 'default' }),\n 'tag-outlined-border-color': whenProps({ variant: 'outlined' }),\n 'tag-accent-border-color': whenProps({ variant: 'accent' }),\n 'tag-success-border-color': whenProps({ variant: 'success' }),\n 'tag-warning-border-color': whenProps({ variant: 'warning' }),\n 'tag-danger-border-color': whenProps({ variant: 'danger' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'tag-default-background--hover': whenProps([\n { variant: 'default', removable: true },\n { variant: 'default', href: Boolean },\n ]),\n 'tag-outlined-background--hover': whenProps([\n { variant: 'outlined', removable: true },\n { variant: 'outlined', href: Boolean },\n ]),\n 'tag-accent-background--hover': whenProps([\n { variant: 'accent', removable: true },\n { variant: 'accent', href: Boolean },\n ]),\n 'tag-success-background--hover': whenProps([\n { variant: 'success', removable: true },\n { variant: 'success', href: Boolean },\n ]),\n 'tag-warning-background--hover': whenProps([\n { variant: 'warning', removable: true },\n { variant: 'warning', href: Boolean },\n ]),\n 'tag-danger-background--hover': whenProps([\n { variant: 'danger', removable: true },\n { variant: 'danger', href: Boolean },\n ]),\n })};\n\n border-color: ${conditional({\n 'tag-default-border-color--hover': whenProps([\n { variant: 'default', removable: true },\n { variant: 'default', href: Boolean },\n ]),\n 'tag-outlined-border-color--hover': whenProps([\n { variant: 'outlined', removable: true },\n { variant: 'outlined', href: Boolean },\n ]),\n 'tag-accent-border-color--hover': whenProps([\n { variant: 'accent', removable: true },\n { variant: 'accent', href: Boolean },\n ]),\n 'tag-success-border-color--hover': whenProps([\n { variant: 'success', removable: true },\n { variant: 'success', href: Boolean },\n ]),\n 'tag-warning-border-color--hover': whenProps([\n { variant: 'warning', removable: true },\n { variant: 'warning', href: Boolean },\n ]),\n 'tag-danger-border-color--hover': whenProps([\n { variant: 'danger', removable: true },\n { variant: 'danger', href: Boolean },\n ]),\n })};\n\n color: ${conditional({\n 'tag-default-color--hover': whenProps([\n { variant: 'default', removable: true },\n { variant: 'default', href: Boolean },\n ]),\n 'tag-outlined-color--hover': whenProps([\n { variant: 'outlined', removable: true },\n { variant: 'outlined', href: Boolean },\n ]),\n 'tag-accent-color--hover': whenProps([\n { variant: 'accent', removable: true },\n { variant: 'accent', href: Boolean },\n ]),\n 'tag-success-color--hover': whenProps([\n { variant: 'success', removable: true },\n { variant: 'success', href: Boolean },\n ]),\n 'tag-warning-color--hover': whenProps([\n { variant: 'warning', removable: true },\n { variant: 'warning', href: Boolean },\n ]),\n 'tag-danger-color--hover': whenProps([\n { variant: 'danger', removable: true },\n { variant: 'danger', href: Boolean },\n ]),\n })};\n `}\n\n ${focusable`\n color: ${conditional({\n 'tag-default-color--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-color--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-color--focus': whenProps({ variant: 'accent' }),\n 'tag-success-color--focus': whenProps({ variant: 'success' }),\n 'tag-warning-color--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-color--focus': whenProps({ variant: 'danger' }),\n })};\n background: ${conditional({\n 'tag-default-background--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-background--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-background--focus': whenProps({ variant: 'accent' }),\n 'tag-success-background--focus': whenProps({ variant: 'success' }),\n 'tag-warning-background--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-background--focus': whenProps({ variant: 'danger' }),\n })};\n box-shadow: ${token('tag-box-shadow')};\n outline: ${conditional({\n 'tag-default-outline': whenProps({ variant: 'default' }),\n 'tag-outlined-outline': whenProps({ variant: 'outlined' }),\n 'tag-accent-outline': whenProps({ variant: 'accent' }),\n 'tag-success-outline': whenProps({ variant: 'success' }),\n 'tag-warning-outline': whenProps({ variant: 'warning' }),\n 'tag-danger-outline': whenProps({ variant: 'danger' }),\n })};\n outline-offset: ${token('tag-outline-offset')};\n `}\n\n ${disableable`\n opacity: ${token('opacity-60')};\n `}\n`\n\nconst Leading = styled.span<WithSizeProps>`\n display: ${conditional({\n 'tag-leading-display': whenProps({ size: 'default' }),\n 'tag-small-leading-display': whenProps({ size: 'small' }),\n 'tag-large-leading-display': whenProps({ size: 'large' }),\n })};\n margin: 0 ${token('tag-icon-spacing')} 0 0;\n\n color: currentColor;\n\n fill: currentColor;\n`\n\nconst StyledCloseButton = styled.button<WithSizeProps & WithVariantProps>`\n z-index: 2;\n\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n cursor: pointer;\n\n background: ${token('tag-remove-button-background')};\n border-radius: ${token('tag-remove-button-border-radius')};\n border: 0;\n\n width: ${conditional({\n 'tag-remove-button-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-size': whenProps({ size: 'large' }),\n })};\n\n height: ${conditional({\n 'tag-remove-button-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-size': whenProps({ size: 'large' }),\n })};\n\n padding: 0;\n\n ${disableable`\n opacity: ${token('opacity-60')};\n `}\n\n ${focusable``}\n\n &:focus + ${StyledSpan} {\n color: ${conditional({\n 'tag-default-color--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-color--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-color--focus': whenProps({ variant: 'accent' }),\n 'tag-success-color--focus': whenProps({ variant: 'success' }),\n 'tag-warning-color--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-color--focus': whenProps({ variant: 'danger' }),\n })};\n\n background: ${conditional({\n 'tag-default-background--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-background--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-background--focus': whenProps({ variant: 'accent' }),\n 'tag-success-background--focus': whenProps({ variant: 'success' }),\n 'tag-warning-background--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-background--focus': whenProps({ variant: 'danger' }),\n })};\n box-shadow: ${token('tag-box-shadow')};\n }\n`\n\nconst CloseIcon = styled(Icon)<WithSizeProps & WithVariantProps>`\n width: ${conditional({\n 'tag-remove-button-icon-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-icon-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-icon-size': whenProps({ size: 'large' }),\n })};\n\n height: ${conditional({\n 'tag-remove-button-icon-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-icon-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-icon-size': whenProps({ size: 'large' }),\n })};\n\n color: ${conditional({\n 'tag-default-color': whenProps({ variant: 'default' }),\n 'tag-outlined-color': whenProps({ variant: 'outlined' }),\n 'tag-accent-color': whenProps({ variant: 'accent' }),\n 'tag-success-color': whenProps({ variant: 'success' }),\n 'tag-warning-color': whenProps({ variant: 'warning' }),\n 'tag-danger-color': whenProps({ variant: 'danger' }),\n })};\n\n fill: currentColor;\n`\n\nconst StyledSpacer = styled.span<WithSizeProps>`\n display: inline-block;\n width: ${conditional({\n '0': whenProps({ size: 'small' }),\n 'space-xs': whenProps({ size: 'default' }),\n 'space-s': whenProps({ size: 'large' }),\n })};\n`\n\n// components\nfunction Tag(props: TagProps): JSX.Element {\n const {\n children,\n leading,\n size = 'default',\n onRemove,\n variant,\n removable,\n getRemoveButtonProps,\n disabled = false,\n ...others\n } = props\n\n return (\n <StyledTag>\n <StyledSpan size={size} variant={variant} {...others}>\n {leading && <Leading size={size}>{leading}</Leading>}\n {children}\n {removable && !disabled && (\n <>\n <StyledSpacer aria-hidden=\"true\" size={size} />\n <StyledCloseButton\n type=\"button\"\n {...getRemoveButtonProps?.()}\n size={size}\n onClick={onRemove}\n >\n <CloseIcon name=\"close\" variant={variant} size={size} />\n </StyledCloseButton>\n </>\n )}\n </StyledSpan>\n </StyledTag>\n )\n}\n\nexport default Tag\n","import React, { BaseHTMLAttributes, useEffect, useState } from 'react'\nimport styled from 'styled-components'\n\nimport { Icon } from 'components/Icon'\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport Status from 'utils/types/Status'\n\nimport DefaultCloseButton from 'common/CloseButton'\n\nimport { ProgressBar } from 'components/ProgressBar'\n\ntype ContainerProps = Pick<ToastProps, 'status'>\nconst Container = styled.div<ContainerProps>`\n position: relative;\n\n width: ${token('toast-width')};\n max-width: 100%;\n padding: ${token('toast-padding-y')} ${token('toast-padding-x')};\n overflow: hidden;\n\n color: ${token('toast-font-color')};\n font-weight: ${token('toast-font-weight')};\n font-size: ${token('toast-font-size')};\n line-height: ${token('toast-font-height')};\n\n background: ${conditional({\n 'toast-neutral-background': whenProps({ status: Status.Neutral }),\n 'toast-success-background': whenProps({ status: Status.Success }),\n 'toast-warning-background': whenProps({ status: Status.Warn }),\n 'toast-danger-background': whenProps({ status: Status.Danger }),\n })};\n border-radius: ${token('toast-border-radius')};\n box-shadow: ${token('toast-shadow')};\n`\n\nconst Content = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-around;\n`\n\nconst Leading = styled.span`\n position: absolute;\n`\n\nconst ToastCountDown = styled(ProgressBar)`\n position: absolute;\n bottom: 0;\n left: 0;\n`\nconst CloseButton = styled(DefaultCloseButton)`\n position: absolute;\n\n top: ${token('toast-close-y')};\n right: ${token('toast-close-x')};\n\n color: ${token('color-neutral-white')};\n`\n\nexport interface ToastProps extends BaseHTMLAttributes<HTMLDivElement> {\n message: string\n status?: Status\n timeout?: number\n showIcon?: boolean\n onClose: () => void\n}\n\nconst INTERVAL = 300 //ms\n\nfunction Toast({\n message,\n onClose,\n timeout,\n showIcon = false,\n status = Status.Neutral,\n}: ToastProps): JSX.Element {\n const [count, setCount] = useState(100)\n\n /**\n * this is a quick solution for the progress/countdown effect,\n * we can use requestAnimationFrame or some other library to\n * better implement this in the future\n */\n useEffect(() => {\n if (!timeout) return\n\n const decrementBy = (INTERVAL * 100) / timeout\n const interval = window.setTimeout(() => {\n if (count <= 0) {\n window.clearTimeout(interval)\n onClose()\n } else {\n setCount((value) => value - decrementBy)\n }\n }, INTERVAL)\n\n return () => {\n window.clearTimeout(interval)\n }\n }, [count, onClose, timeout])\n\n return (\n <Container status={status} aria-live=\"polite\" role=\"alert\">\n {showIcon && (\n <Leading>\n <ToastIcon status={status} />\n </Leading>\n )}\n <Content>{message}</Content>\n {Boolean(timeout) && <ToastCountDown value={count} status={status} />}\n {onClose && <CloseButton onClick={onClose} size={14} />}\n </Container>\n )\n}\n\ninterface ToastIconProps {\n status: Status\n}\n\nfunction ToastIcon({ status }: ToastIconProps) {\n let iconName = ''\n\n switch (status) {\n case Status.Success:\n iconName = 'check'\n break\n\n case Status.Warn:\n case Status.Danger:\n iconName = 'warning'\n break\n\n default:\n iconName = 'information'\n }\n\n return <Icon name={iconName} size={20} />\n}\n\nexport default Toast\n","export function check(id: string): void {\n const radioElement = document.getElementById(id) as HTMLInputElement\n\n if (radioElement) {\n radioElement.checked = true\n }\n}\n\nexport function getPanelRadioID(id: number | string): string {\n return `rg-wizard-step-radio-${id}`\n}\n","import React from 'react'\n\nconst StepsContext = React.createContext<string | number>('')\n\nexport default StepsContext\n","import React, { ReactNode } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport transition from 'styles/transition'\n\nimport type { Step } from '../Steps.types'\n\nexport interface StepsProgressProps {\n steps: Array<Step>\n current: number | string\n}\n\nconst StepConnector = styled.span<{ complete: boolean }>`\n position: absolute;\n top: ${conditional({\n 'steps-conector-top': whenProps({ complete: false }),\n 'steps-conector-top--complete': whenProps({ complete: true }),\n })};\n right: calc(-50% + ${token('steps-indicator-size')} / 2);\n left: calc(50% + ${token('steps-indicator-size')} / 2);\n\n z-index: 0;\n\n height: ${conditional({\n 'steps-conector-height': whenProps({ complete: false }),\n 'steps-conector-height--complete': whenProps({ complete: true }),\n })};\n\n background: ${conditional({\n 'steps-progress-step-background-color': whenProps({ complete: false }),\n 'steps-progress-step-background-color--complete': whenProps({ complete: true }),\n })};\n`\n\nconst ProgressStepWrapper = styled.li`\n position: relative;\n\n flex: 1;\n\n text-align: center;\n\n list-style: none;\n\n &:last-child ${StepConnector} {\n display: none;\n }\n`\n\nconst ProgressStepContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n padding: 0 ${token('space-s')};\n`\n\nconst StepIndicator = styled.span<{ current: boolean; complete: boolean }>`\n ${transition()}\n\n ${font({\n weight: 'font-weight-bold',\n height: 'steps-indicator-size',\n })}\n\n font-size: ${token('font-size-4')};\n\n height: ${token('steps-indicator-size')};\n width: ${token('steps-indicator-size')};\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-width: 2px;\n border-style: solid;\n border-color: ${conditional({\n 'steps-progress-step-background-color--complete': whenProps([\n { current: true, complete: [true, false] },\n { current: false, complete: true },\n ]),\n 'steps-progress-step-background-color': whenProps({ current: false, complete: false }),\n })};\n border-radius: ${token('border-radius-circle')};\n\n background: ${conditional({\n 'steps-progress-step-background-color--complete': whenProps([\n { current: false, complete: true },\n ]),\n 'color-neutral-white': whenProps([\n { current: true, complete: [true, false] },\n { current: false, complete: false },\n ]),\n })};\n\n color: ${conditional({\n 'steps-progress-step-background-color': whenProps({ current: false, complete: false }),\n 'color-neutral-white': whenProps({ current: false, complete: true }),\n 'steps-progress-step-background-color--complete': whenProps({ current: true }),\n })};\n`\n\nconst StepLabel = styled.span<{ current: boolean; complete: boolean }>`\n ${font({\n height: 'font-height-2',\n })}\n\n position: relative;\n\n font-weight: ${conditional({\n 'font-weight-medium': whenProps({ current: false }),\n 'font-weight-bold': whenProps({ current: true }),\n })};\n\n color: ${conditional({\n 'color-neutral-darker': whenProps([{ current: true }, { current: false, complete: true }]),\n 'color-neutral': whenProps({ current: false, complete: false }),\n })};\n\n font-size: ${token('font-size-4')};\n\n display: flex;\n flex-direction: row;\n\n align-items: center;\n justify-content: center;\n\n text-align: center;\n\n margin: ${token('space-xs')} 0 0 0;\n`\n\nfunction ProgressStep(props: { step: Step; current: boolean; indicator: ReactNode }): JSX.Element {\n const { step, current, indicator } = props\n\n return (\n <ProgressStepWrapper>\n <ProgressStepContainer\n data-testid=\"steps-timeline-entry\"\n className={clsx({\n 'is-current': current,\n 'is-complete': step.complete,\n })}\n >\n <StepIndicator aria-hidden=\"true\" current={current} complete={step.complete}>\n {indicator}\n </StepIndicator>\n\n <StepLabel current={current} complete={step.complete}>\n {step.label}\n </StepLabel>\n\n <StepConnector complete={step.complete} />\n </ProgressStepContainer>\n </ProgressStepWrapper>\n )\n}\n\nexport default ProgressStep\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport ProgressStep from './ProgressStep'\n\nimport type { Step } from '../Steps.types'\n\nexport interface StepsProgressProps {\n steps: Array<Step>\n current: number | string\n}\n\nconst ProgressWrapper = styled.ol<{ steps: Step[] }>`\n position: relative;\n\n display: flex;\n flex-direction: row;\n\n padding: ${token('steps-progress-padding-y')} ${token('steps-progress-padding-x')};\n`\n\nfunction StepsProgress(props: StepsProgressProps): JSX.Element {\n const { steps, current } = props\n\n return (\n <ProgressWrapper steps={steps || []}>\n {(steps || []).map(function renderStep(step, index) {\n const { id } = step\n\n return <ProgressStep key={id} current={current === id} indicator={index + 1} step={step} />\n })}\n </ProgressWrapper>\n )\n}\n\nexport default StepsProgress\n","import React, { Fragment, useContext } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { getPanelRadioID } from './Steps.helpers'\nimport { getToken as token } from 'theming'\nimport font from 'styles/font'\nimport hidden from 'styles/hidden'\nimport StepsContext from './StepsContext'\n\nexport interface StepsStepProps {\n id: number | string\n className?: string\n}\n\nconst Selector = styled.input`\n ${hidden(true)}\n`\n\nexport const StepWrapper = styled.article`\n ${font({\n weight: 'font-weight-medium',\n height: 'font-height-2',\n })}\n\n padding: 0 ${token('steps-step-padding-x')} ${token('steps-step-padding-y')};\n\n ${Selector} + & {\n display: none;\n }\n\n ${Selector}:checked + & {\n display: block;\n }\n`\n\nfunction StepsStep({ children, id, ...others }: PropsWithChildren<StepsStepProps>): JSX.Element {\n const StepsID = useContext(StepsContext)\n\n return (\n <Fragment>\n <Selector\n type=\"radio\"\n className=\"visually-hidden\"\n id={getPanelRadioID(id)}\n name={String(StepsID)}\n value={id}\n data-testid=\"panel-radio\"\n tabIndex={-1}\n />\n <StepWrapper data-testid=\"steps-step\" {...others} id={String(id)}>\n {children}\n </StepWrapper>\n </Fragment>\n )\n}\n\nexport default StepsStep\n","import React, { useEffect } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { check, getPanelRadioID } from './Steps.helpers'\nimport { getToken as token } from 'theming'\nimport StepsContext from './StepsContext'\nimport StepsProgress from './ProgressSteps'\nimport StepsStep from './StepsStep'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport type { Step } from './Steps.types'\nexport interface StepsProps {\n current: number | string\n id: number | string\n steps: Array<Step>\n className?: string\n scheme?: ColorScheme\n}\n\nconst StepsWrapper = styled.section`\n display: block;\n width: 100%;\n\n color: ${token('steps-color')};\n`\n\n// TODO: improve by extracting steps props right from children.\nfunction Steps({\n id,\n children,\n current,\n steps,\n ...others\n}: PropsWithChildren<StepsProps>): JSX.Element {\n useEffect(\n function showCurrentStep() {\n check(getPanelRadioID(current))\n },\n [current]\n )\n\n return (\n <StepsWrapper id={String(id)} {...others}>\n <StepsProgress current={current} steps={steps} />\n <StepsContext.Provider value={id}>{children}</StepsContext.Provider>\n </StepsWrapper>\n )\n}\n\nSteps.Step = StepsStep\n\nexport default Steps\n","import { useEffect, useReducer, useRef, Dispatch } from 'react'\n\nimport get from 'utils/toolset/get'\nimport type { Step } from './Steps.types'\n\nexport interface useStepsProps {\n steps: Array<Step>\n current?: number | string\n}\n\ntype State = { current: number | string; steps: Array<Step> }\ntype Action =\n | { type: 'navigate'; payload: { stepID: number | string } }\n | { type: 'next' }\n | { type: 'previous' }\n | { type: 'complete'; payload: { stepID: number | string } }\n | { type: 'reset'; payload: State }\n\nfunction useSteps({ steps, current: currentProp }: useStepsProps): [State, Dispatch<Action>] {\n const stepIndexByID = useRef<Record<number | string, number>>({})\n\n useEffect(\n function initStepIndexByIDMap() {\n stepIndexByID.current = {}\n ;(steps || []).forEach((step, index) => {\n stepIndexByID.current[step.id] = index\n })\n },\n [steps]\n )\n\n const [state, dispatch] = useReducer(reducer, init(steps, currentProp))\n\n function reducer(state: State, action: Action): State {\n const { current } = state\n\n // TODO: improve using object to map each case as individual functions\n switch (action.type) {\n case 'previous': {\n const currentIndex = getStepIndex(current)\n\n if (currentIndex == null) {\n return state\n }\n\n const newCurrentIndex = Math.max(currentIndex - 1, 0)\n\n return {\n ...state,\n current: steps[newCurrentIndex]?.id,\n }\n }\n case 'next': {\n const currentIndex = getStepIndex(current)\n\n if (currentIndex == null) {\n return state\n }\n\n const newCurrentIndex = Math.min(currentIndex + 1, steps.length - 1)\n\n return {\n ...state,\n current: steps[newCurrentIndex]?.id,\n }\n }\n case 'navigate': {\n const { stepID } = action.payload\n const currentIndex = getStepIndex(current)\n const stepIndex = getStepIndex(stepID)\n const step = get(steps, stepIndex)\n\n if (!step) {\n return state\n }\n\n return {\n ...state,\n current: steps[stepIndex]?.id || steps[currentIndex]?.id,\n }\n }\n case 'complete': {\n const { stepID } = action.payload\n const { steps } = state\n\n const stepIndex = getStepIndex(stepID)\n const step = get(steps, stepIndex)\n\n if (!step) {\n return state\n }\n\n return {\n ...state,\n steps: [\n ...steps.slice(0, stepIndex),\n { ...step, complete: true },\n ...steps.slice(stepIndex + 1),\n ],\n }\n }\n case 'reset': {\n const { steps, current } = action.payload\n\n return {\n ...state,\n ...init(steps, current),\n }\n }\n default:\n return state\n }\n }\n\n // TODO: gather step info to feed Steps component\n function init(steps: Array<Step>, current?: number | string): State {\n return {\n current: current || get(steps, '0.id')!,\n steps,\n }\n }\n\n function getStepIndex(stepID: number | string): number {\n return stepIndexByID.current[stepID]\n }\n\n // TODO: write helper functions to abstract inner dispatch mechanism\n return [state, dispatch]\n}\n\nexport default useSteps\n","import React, { ReactNode, HTMLAttributes } from 'react'\n\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\n\nexport interface CardTitleProps extends HTMLAttributes<HTMLElement> {\n leading?: ReactNode\n}\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Leading = styled(StyledSpan)`\n margin-right: ${token('space-xs')};\n`\n\nconst Wrapper = styled.div`\n padding: ${token('card-padding-y')} ${token('card-padding-x')} 0;\n\n color: ${token('card-color')};\n font-weight: ${token('card-title-font-weight')};\n font-size: ${token('card-title-font-size')};\n line-height: ${token('card-title-font-height')};\n`\n\nfunction CardTitle({ children, leading, ...others }: CardTitleProps): JSX.Element {\n return (\n <Wrapper {...others}>\n {leading && <Leading>{leading}</Leading>}\n {children}\n </Wrapper>\n )\n}\n\nexport { Wrapper as CardTitleWrapper }\n\nexport default CardTitle\n","import React, { HTMLAttributes, ReactNode } from 'react'\n\nimport { getToken as token } from 'theming'\nimport CardTitle, { CardTitleWrapper } from './CardTitle'\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport Status from 'utils/types/Status'\nimport styled, { css } from 'styled-components'\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n children: ReactNode\n status?: Status\n flagged?: boolean\n}\n\nconst CardSubtitle = styled.div`\n padding: 0 ${token('card-padding-x')} ${token('card-padding-y')};\n\n color: ${token('card-color')};\n font-weight: ${token('card-subtitle-font-weight')};\n font-size: ${token('card-subtitle-font-size')};\n`\n\nconst CardSeparator = styled.hr`\n display: block;\n height: 1px;\n margin: 0;\n\n border: 0;\n border-bottom: 1px solid ${token('card-separator-background')};\n`\n\nconst CardBody = styled.div`\n padding: ${token('card-padding-y')} ${token('card-padding-x')};\n`\n\nconst Wrapper = styled.div`\n ${font({})}\n\n display: flex;\n flex-direction: row;\n\n color: ${token('card-color')};\n\n ${CardTitleWrapper} + ${CardSubtitle} {\n margin-top: ${token('space-xs')};\n }\n\n ${CardTitleWrapper} + ${CardSeparator} {\n margin-top: ${token('card-padding-y')};\n }\n\n border: 1px solid ${token('card-border-color')};\n border-radius: ${token('card-border-radius')};\n background: ${token('card-background')};\n`\n\nconst Container = styled.div<{ flagged: boolean }>`\n display: flex;\n flex: 1;\n flex-direction: column;\n\n line-height: ${token('card-font-height')};\n\n ${({ flagged }) =>\n flagged &&\n css`\n ${CardSeparator} {\n margin-left: calc(-1 * ${token('space-s')});\n }\n `}\n`\n\nconst Flag = styled.span<{ status: Status }>`\n display: block;\n flex: 0 0 ${token('card-flag-width')};\n\n background: ${conditional({\n 'card-flag-background-neutral': whenProps({ status: Status.Neutral }),\n 'card-flag-background-danger': whenProps({ status: Status.Danger }),\n 'card-flag-background-warning': whenProps({ status: Status.Warn }),\n 'card-flag-background-success': whenProps({ status: Status.Success }),\n })};\n border-radius: ${token('card-border-radius')} 0 0 ${token('card-border-radius')};\n`\n\nfunction Card({\n flagged = false,\n status = Status.Neutral,\n children,\n ...others\n}: CardProps): JSX.Element {\n return (\n <Wrapper {...others}>\n {flagged && <Flag status={status} aria-label={status} />}\n <Container flagged={flagged}>{children}</Container>\n </Wrapper>\n )\n}\n\nCard.Title = CardTitle\nCard.Subtitle = CardSubtitle\nCard.Separator = CardSeparator\nCard.Body = CardBody\n\nexport default Card\n","import { createContext } from 'react'\nimport type { DropdownContextReturn } from './Dropdown.types'\n\nconst DropdownContext = createContext<DropdownContextReturn>({\n disabled: false,\n expandDisabled: false,\n expanded: false,\n toggle: function () {\n // nothing\n },\n})\n\nexport default DropdownContext\n","import React, { forwardRef, useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Popover } from 'components/Popover'\nimport disableable from 'styles/disableable'\nimport DropdownContext from './Dropdown.context'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport useID from 'hooks/useID'\n\nimport type {\n DropdownMenuItemProps,\n DropdownMenuProps,\n DropdownMenuSectionProps,\n} from './Dropdown.types'\n\n/**\n * TODO: add aria-labelledby that should refer to the dropdown label to the role=\"menu\" container.\n * TODO: navigate through items using arrow keys.\n * TODO: add animation for a smooth open/close effect.\n */\n\nconst StyledPopover = styled(Popover.Floating)`\n z-index: ${token('z-index-droplist')};\n\n min-width: 10em;\n\n background: ${token('dropdown-background')};\n border: 1px solid ${token('dropdown-border-color')};\n border-radius: ${token('dropdown-border-radius')};\n box-shadow: ${token('dropdown-shadow')};\n width: max-content;\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n font-size: 1em;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Trailing = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Children = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n padding: ${token('space-s')} 0;\n\n white-space: nowrap;\n`\n\nconst DropdownItemWrapper = styled.button`\n ${transition()}\n\n display: inline-flex;\n justify-content: flex-start;\n align-items: center;\n\n ${font({\n height: 'font-height-3',\n weight: 'font-weight-medium',\n })}\n font-size: ${token('font-size-4')};\n\n min-height: 36px;\n flex: 1 0;\n\n border: none;\n border-radius: ${token('border-radius-s')};\n background: ${token('color-neutral-white')};\n\n color: ${token('color-neutral-darker')};\n\n padding: 0 ${token('space-s')};\n\n margin: 0 ${token('space-s')};\n\n cursor: pointer;\n\n ${hoverable`\n background: ${token('color-neutral-lighter')};\n `}\n\n ${focusable`\n background: ${token('color-neutral-lighter')};\n `}\n\n ${disableable()}\n\n ${Children} {\n flex: 1 0 auto;\n\n text-align: left;\n }\n\n ${Leading}, ${Trailing} {\n flex: 0 1 auto;\n }\n\n ${Leading} + ${Children} {\n margin: 0 0 0 ${token('space-s')};\n }\n\n ${Children} + ${Trailing} {\n margin: 0 0 0 ${token('space-s')};\n }\n`\n\nconst DropdownSectionHeader = styled.strong`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n\n ${font({\n height: 'font-height-3',\n weight: 'font-weight-bold',\n })}\n\n font-size: ${token('font-size-4')};\n\n margin: 0 ${token('space-s')};\n`\n\nconst DropdownSectionWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst GenericDropdownMenuWrapper = styled.div`\n display: flex;\n flex-direction: column;\n padding: ${token('space-s')} 0;\n\n ${font({\n height: 'font-height-3',\n weight: 'font-weight-medium',\n })}\n\n font-size: ${token('font-size-4')};\n`\n\nconst DropdownMenuWrapper = styled(GenericDropdownMenuWrapper)`\n max-height: 240px;\n overflow-y: auto;\n max-width: 100%;\n width: 100%;\n\n ${DropdownItemWrapper} + ${DropdownItemWrapper},\n ${DropdownSectionHeader} + ${DropdownItemWrapper} {\n margin-top: ${token('space-2xs')};\n }\n\n ${DropdownSectionWrapper} + ${DropdownSectionWrapper} {\n margin: ${token('space-m')} 0 0 0;\n }\n\n ${GenericDropdownMenuWrapper} + &,\n & + ${GenericDropdownMenuWrapper},\n ${GenericDropdownMenuWrapper} + ${GenericDropdownMenuWrapper} {\n border-top: 2px solid ${token('color-neutral-lighter')};\n }\n`\n\nexport const DropdownSeparator = styled.hr.attrs({\n 'aria-hidden': true,\n})`\n display: block;\n height: 2px;\n\n margin: ${token('space-s')} 0;\n\n border: 0;\n border-bottom: 2px solid ${token('card-separator-background')};\n`\n\nexport const DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(function DropdownMenu(\n props: DropdownMenuProps,\n ref\n): JSX.Element | null {\n const context = useContext(DropdownContext)\n\n if (!context) {\n throw new Error('DropdownMenu must be inside a DropdownContext')\n }\n\n const { children, header, footer, ...others } = props\n const { expanded } = context\n\n if (!expanded) {\n return null\n }\n\n return (\n <StyledPopover role=\"presentation\">\n {header && <GenericDropdownMenuWrapper>{header}</GenericDropdownMenuWrapper>}\n {children && (\n <DropdownMenuWrapper ref={ref} role=\"menu\" data-testid=\"dropdown-menu\" {...others}>\n {children}\n </DropdownMenuWrapper>\n )}\n {footer && <GenericDropdownMenuWrapper>{footer}</GenericDropdownMenuWrapper>}\n </StyledPopover>\n )\n})\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps): JSX.Element {\n const context = useContext(DropdownContext)\n const { leading, children, trailing, onClick, ...others } = props\n const id = useID(others.id)\n\n if (!context) {\n throw new Error('DropdownMenuItem must be inside a DropdownContext')\n }\n\n const { toggle } = context\n\n return (\n <DropdownItemWrapper\n role=\"menuitem\"\n type=\"button\"\n data-testid=\"dropdown-menu-item\"\n {...others}\n aria-labelledby={id}\n onClick={(e) => {\n e.persist()\n\n const shouldKeepOpen = onClick?.(e)\n\n if (!shouldKeepOpen) {\n toggle()\n }\n }}\n >\n {leading && <Leading>{leading}</Leading>}\n <Children id={id}>{children}</Children>\n {trailing && <Trailing>{trailing}</Trailing>}\n </DropdownItemWrapper>\n )\n}\n\nexport function DropdownMenuSection(props: DropdownMenuSectionProps): JSX.Element {\n const { children, header, ...others } = props\n\n return (\n <DropdownSectionWrapper data-testid=\"dropdown-menu-section\" {...others} role=\"presentation\">\n <DropdownSectionHeader>{header}</DropdownSectionHeader>\n {children}\n </DropdownSectionWrapper>\n )\n}\n","import toArray from './toArray'\n\nimport type { KeyboardEvent } from 'react'\n\n// this is merely a helper for key code names\nconst SUPPORTED_KEYS = {\n ALT: 'Alt',\n ARROW_DOWN: 'ArrowDown',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_UP: 'ArrowUp',\n CONTROL: 'Control',\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n SHIFT: 'Shift',\n SPACE: ' ',\n TAB: 'Tab',\n E_LOWERCASE: 'e',\n DOT: '.',\n PLUS: '+',\n MINUS: '-',\n}\n\nexport type SupportedKey = keyof typeof SUPPORTED_KEYS\n\n// Based on https://github.com/downshift-js/downshift/blob/26c93a539dad09e41adba69ddc3a7d7ecccfc8bb/src/utils.js#L285\nexport function getKeyboardKey(e: KeyboardEvent): KeyboardEvent['key'] {\n // IE\n if (e.keyCode >= 37 && e.keyCode <= 40 && e.key.indexOf('Arrow') !== 0) {\n return `Arrow${e.key}`\n }\n\n return e.key\n}\n\nfunction KeyboardKey(e: KeyboardEvent): {\n is(otherKeys: SupportedKey | SupportedKey[]): boolean\n} {\n const key = getKeyboardKey(e)\n\n return {\n is(otherKeys: SupportedKey | SupportedKey[]) {\n const expectedKeys = toArray(otherKeys).map((otherKey) => SUPPORTED_KEYS[otherKey])\n\n return toArray(expectedKeys).includes(key)\n },\n }\n}\n\nexport default KeyboardKey\n","import React, { useCallback, useEffect, useState } from 'react'\n\nimport KeyboardKey from 'utils/toolset/keyboard'\n\nimport type { RefObject } from 'react'\n\nfunction useClickOutside<T extends HTMLElement>(\n container: RefObject<T>,\n callback: (event?: MouseEvent | TouchEvent | KeyboardEvent) => void,\n disabled = false\n): void {\n const [active, setActive] = useState(false)\n\n const getContainer = useCallback(\n function getContainer() {\n return container.current\n },\n [container]\n )\n\n const handleEvent = useCallback(\n function handleEvent(event: MouseEvent | TouchEvent | KeyboardEvent) {\n function hasPressedEsc() {\n return KeyboardKey(event as unknown as React.KeyboardEvent).is('ESCAPE')\n }\n\n if (!getContainer() || disabled) {\n return\n }\n\n const target = event.target as Node\n const hasTarget = getContainer()?.contains(target)\n\n if (!active && hasTarget) {\n setActive(true)\n } else if (active && (!hasTarget || hasPressedEsc())) {\n setActive(false)\n callback(event)\n }\n },\n [active, callback, disabled, getContainer]\n )\n\n useEffect(() => {\n function subscribe() {\n document.addEventListener('mousedown', handleEvent, true)\n document.addEventListener('touchend', handleEvent, true)\n document.addEventListener('keyup', handleEvent)\n }\n\n function unsubscribe() {\n document.removeEventListener('mousedown', handleEvent, true)\n document.removeEventListener('touchend', handleEvent, true)\n document.removeEventListener('keyup', handleEvent)\n }\n\n subscribe()\n\n return () => {\n unsubscribe()\n }\n }, [handleEvent])\n}\n\nexport default useClickOutside\n","import React, { useContext } from 'react'\nimport clsx from 'clsx'\nimport styled, { css } from 'styled-components'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport { BaseButton, SelectorButton, ButtonProps } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Icon as DefaultIcon } from 'components/Icon'\nimport { useFocusWithin } from 'hooks/useFocusWithin'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport DropdownContext from './Dropdown.context'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport typography from 'styles/typography'\n\nimport type { ButtonHTMLAttributes, HTMLAttributes, MouseEvent } from 'react'\nimport type { DropdownTriggerProps, DropdownContextReturn } from './Dropdown.types'\nimport type { IconProps } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport { Popover } from 'components/Popover'\n\n/**\n * TODO: throw an error if context is not available\n */\n\ntype DropdownTriggerWrapperProps = {\n disabled: boolean\n scheme: ColorScheme\n $outlined: boolean\n $scale: DropdownTriggerProps['scale']\n}\n\ntype TriggerButtonProps = ButtonProps & {\n outlined: boolean\n}\n\nconst dropdownExpandedStyle = css`\n &[aria-expanded='true'] {\n color: ${token('dropdown-trigger-expanded-color')};\n }\n`\n\nconst triggerButtonAttrs = (props: { outlined: boolean }) => {\n const outlined = typeof props.outlined === 'boolean' ? props.outlined : true\n if (outlined) {\n return props\n }\n\n return {\n ...props,\n variant: 'tertiary',\n }\n}\n\nconst TriggerButton = styled(\n SelectorButton as React.ForwardRefExoticComponent<TriggerButtonProps>\n).attrs(triggerButtonAttrs)`\n flex: 1;\n\n justify-content: flex-start;\n\n border: none;\n\n height: ${token('dropdown-trigger-height')};\n\n text-transform: ${conditional({\n capitalize: whenProps({ outlined: false, variant: 'tertiary' }),\n uppercase: whenProps({ outlined: true }),\n })};\n\n font-weight: ${conditional({\n 'font-weight-regular': whenProps({ outlined: false }),\n })};\n\n ${hoverable`\n border-color: ${conditional({\n 'color-transparent': whenProps({ outlined: false }),\n })};\n\n font-weight: ${conditional({\n 'font-weight-bold': whenProps({ outlined: false }),\n })};\n\n ${dropdownExpandedStyle}\n `}\n\n ${focusable`\n box-shadow: ${conditional({\n none: whenProps({ outlined: false }),\n })};\n\n background-color: ${conditional({\n 'color-transparent': whenProps({ outlined: false }),\n })};\n\n font-weight: ${conditional({\n 'font-weight-bold': whenProps({ outlined: false }),\n })};\n\n\n ${dropdownExpandedStyle}\n `}\n\n ${({ children, outlined }) => {\n if (outlined === false && typeof children === 'string') {\n return css`\n & > span:first-child {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n\n text-decoration: none;\n }\n\n & > span:first-child::after {\n height: 0;\n overflow: hidden;\n\n font-weight: ${token('font-weight-bold')};\n\n visibility: hidden;\n\n /* @REVIEW: since this is a span descendant of a button\n I'm using the direct value of children the solution inside Link\n relies on data-text attribute */\n\n content: '${children}';\n content: '${children}' / '';\n user-select: none;\n pointer-events: none;\n\n @media speech {\n display: none;\n }\n }\n `\n }\n }}\n`\n\nconst DropdownTriggerWrapper = styled.div<DropdownTriggerWrapperProps>`\n ${transition()}\n\n ${typography(\n conditional({\n 'button-md': whenProps({ $scale: 'default' }),\n 'button-sm': whenProps({ $scale: 'small' }),\n 'button-lg': whenProps({ $scale: 'large' }),\n })\n )}\n\n display: flex;\n justify-content: flex-start;\n align-items: center;\n\n border-radius: ${token('button-border-radius')};\n border-width: ${token('button-border-width')};\n border-style: solid;\n border-color: ${conditional({\n 'dropdown-trigger-border-color': whenProps({ scheme: 'light', $outlined: true }),\n 'dropdown-trigger-dark-border-color': whenProps({ scheme: 'dark', $outlined: true }),\n 'dropdown-trigger-outlined-border-color': whenProps({ $outlined: false }),\n })};\n\n font-size: ${token('font-size-4')};\n\n color: ${token('color-neutral-darker')};\n\n box-sizing: border-box;\n\n flex: 1;\n\n ${hoverable`\n border-color: ${conditional({\n 'button-secondary-border-color--hover': whenProps({ scheme: 'light', $outlined: true }),\n 'button-secondary-dark-border-color--hover': whenProps({\n scheme: 'dark',\n $outlined: true,\n }),\n })};\n `}\n\n ${disableable`\n border-color: ${conditional({\n 'button-secondary-border-color--disabled': whenProps({ scheme: 'light' }),\n 'button-secondary-dark-border-color--disabled': whenProps({\n scheme: 'dark',\n }),\n })};\n `}\n\n ${focusable`\n border-color: ${conditional({\n 'button-primary-border-color--focus': whenProps({ variant: 'primary', $outlined: true }),\n 'button-secondary-border-color--focus': whenProps({ scheme: 'light', $outlined: true }),\n 'button-secondary-dark-border-color--focus': whenProps({\n scheme: 'dark',\n $outlined: true,\n }),\n 'button-warning-border-color--focus': whenProps({ variant: 'warning', $outlined: true }),\n 'button-icon-border-color--focus': whenProps({ variant: 'icon', $outlined: true }),\n 'color-transparent': whenProps({ $outlined: false }),\n })};\n\n box-shadow: ${conditional({ 'dropdown-trigger-box-shadow': whenProps({ $outlined: true }) })};\n outline: ${token('dropdown-trigger-outline')};\n outline-offset: ${token('dropdown-trigger-outline-offset')};\n `}\n\n ${activatable`\n border-color: ${conditional({\n 'button-secondary-border-color--active': whenProps({ scheme: 'light', $outlined: true }),\n 'button-secondary-dark-border-color--active': whenProps({\n scheme: 'dark',\n $outlined: true,\n }),\n })};\n `}\n`\n\nconst TriggerHandle = styled(BaseButton)`\n ${focusable()}\n\n background: ${token('color-transparent')};\n border-radius: 0 ${token('border-radius-s')} ${token('border-radius-s')} 0;\n border: none;\n\n height: ${token('dropdown-trigger-height')};\n`\n\nconst RotatableIcon = styled(DefaultIcon)<{ $rotate: boolean }>`\n ${conditional({\n 'transform: rotate(180deg);': whenProps({ $rotate: true }),\n })}\n`\n\nexport interface DropdownTriggerButtonProps extends Omit<DropdownTriggerProps, 'children'> {\n children: DropdownTriggerProps['children'] | ((args: DropdownContextReturn) => React.ReactNode)\n}\n\nfunction Caret(props: Omit<IconProps, 'name'> & { $rotate: boolean }) {\n return <RotatableIcon size={20} {...props} name=\"chevron-down\" />\n}\n\nfunction DropdownTriggerButton(props: DropdownTriggerButtonProps): JSX.Element {\n const contextValue = useContext(DropdownContext)\n const { toggle, disabled, expanded } = contextValue\n const { children, onClick, ...others } = props\n\n function handleClick(e: MouseEvent<HTMLButtonElement>) {\n e.persist()\n\n toggle()\n onClick?.(e)\n }\n\n function renderChildren() {\n if (isFunction(children)) {\n return children(contextValue)\n }\n\n return children\n }\n\n // TODO: add aria-labelledby that should refer to the button and the dropdown label\n return (\n <TriggerButton\n trailing={<Caret $rotate={expanded} />}\n onClick={handleClick}\n {...others}\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={expanded}\n aria-disabled={disabled}\n disabled={disabled}\n >\n {renderChildren()}\n </TriggerButton>\n )\n}\n\nfunction DropdownTriggerHandle(props: ButtonHTMLAttributes<HTMLButtonElement>): JSX.Element {\n const { toggle, expanded, disabled, expandDisabled } = useContext(DropdownContext)\n const { onClick, ...others } = props\n\n function handleClick(e: MouseEvent<HTMLButtonElement>) {\n e.persist()\n\n toggle()\n onClick?.(e)\n }\n\n return (\n <TriggerHandle\n onClick={handleClick}\n data-testid=\"dropdown-trigger-handle\"\n {...others}\n disabled={disabled || expandDisabled}\n type=\"button\"\n tabIndex={-1}\n >\n <Caret $rotate={expanded} />\n </TriggerHandle>\n )\n}\n\nexport interface GenericDropdownTriggerProps extends HTMLAttributes<HTMLDivElement> {\n disabled?: boolean\n scheme?: ColorScheme\n outlined?: boolean\n scale?: DropdownTriggerProps['scale']\n}\n\nexport function GenericDropdownTrigger(props: GenericDropdownTriggerProps): JSX.Element {\n const context = useContext(DropdownContext)\n const { ref, focused } = useFocusWithin<HTMLDivElement>()\n\n if (!context) {\n throw new Error('DropdownTrigger must be inside a DropdownContext')\n }\n\n const { children, className, scheme = 'light', outlined = true, scale, ...others } = props\n const { disabled } = context\n\n return (\n <DropdownTriggerWrapper\n role=\"presentation\"\n {...others}\n ref={ref}\n className={clsx(\n {\n 'is-disabled': disabled,\n 'is-focused': focused,\n },\n className\n )}\n disabled={disabled}\n scheme={scheme}\n $scale={scale}\n $outlined={outlined}\n >\n {children}\n </DropdownTriggerWrapper>\n )\n}\n\nfunction DropdownTrigger(props: DropdownTriggerProps): JSX.Element {\n const { children, className, ...others } = props\n\n return (\n <Popover.Reference>\n <GenericDropdownTrigger className={className} outlined={props.outlined} scale={props.scale}>\n <DropdownTriggerButton {...others} data-text={children}>\n {children}\n </DropdownTriggerButton>\n </GenericDropdownTrigger>\n </Popover.Reference>\n )\n}\n\nDropdownTrigger.Button = DropdownTriggerButton\nDropdownTrigger.Handle = DropdownTriggerHandle\n\nexport default DropdownTrigger\n","import { useCallback, useEffect, useState } from 'react'\n\nimport type { DropdownProps } from './Dropdown.types'\n\nexport interface useDropdownProps {\n expanded: boolean\n toggle: () => void\n}\n\nexport interface GenericDropdownProps extends DropdownProps, useDropdownProps {}\n\nfunction useDropdown({ disabled, expandDisabled }: DropdownProps): {\n expanded: boolean\n toggle: () => void\n expand: () => void\n collapse: () => void\n} {\n const [expanded, setExpanded] = useState(false)\n\n const toggle = useCallback(\n function toggle() {\n if (disabled || expandDisabled) {\n return\n }\n\n setExpanded((isExpanded) => !isExpanded)\n },\n [disabled, expandDisabled]\n )\n\n const expand = useCallback(\n function toggle() {\n if (disabled || expandDisabled) {\n return\n }\n\n setExpanded(true)\n },\n [disabled, expandDisabled]\n )\n\n const collapse = useCallback(\n function toggle() {\n if (disabled || expandDisabled) {\n return\n }\n\n setExpanded(false)\n },\n [disabled, expandDisabled]\n )\n\n useEffect(\n function closeWhenDisabled() {\n if ((disabled || expandDisabled) && expanded) {\n setExpanded(false)\n }\n },\n [disabled, expandDisabled, expanded]\n )\n\n return { expanded, toggle, expand, collapse }\n}\n\nexport default useDropdown\n","import React, { useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\nimport {\n DropdownMenu,\n DropdownMenuItem,\n DropdownMenuSection,\n DropdownSeparator,\n} from './DropdownMenu'\nimport { useClickOutside } from 'hooks/useClickOutside'\nimport DropdownContext from './Dropdown.context'\nimport DropdownTrigger from './DropdownTrigger'\nimport hidden from 'styles/hidden'\nimport useDropdown from './useDropdown'\nimport { Popover } from 'components/Popover'\n\nimport type { DropdownProps, GenericDropdownProps, DropdownMenuProps } from './Dropdown.types'\nimport type { PopoverAlign } from 'components/Popover'\n\nconst DropdownWrapper = styled.div`\n position: relative;\n`\n\nconst HiddenCloseButton = styled.button.attrs({\n type: 'button',\n tabIndex: -1,\n})`\n ${hidden(true)}\n`\n\nfunction useDeprecatedAlignFromMenu({\n children,\n align,\n}: React.PropsWithChildren<{ align?: PopoverAlign }>): PopoverAlign {\n let result: PopoverAlign | undefined\n\n if (align) {\n return align\n }\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement<DropdownMenuProps>(child) && child.type === DropdownMenu) {\n result = child.props.align\n }\n })\n\n return (result || align) as PopoverAlign\n}\n\n// TODO: add focus trap here to allow navigating options with keyboard\n\n/**\n * Generic dropdown component that allows composing its pieces as desired.\n *\n * Based on:\n * - https://www.w3.org/TR/2017/REC-wai-aria-1.1-20171214/#menu\n * - https://www.w3.org/WAI/tutorials/menus/application-menus/\n *\n * @param props\n * @returns\n */\nexport function GenericDropdown(props: GenericDropdownProps): JSX.Element {\n const {\n children,\n expanded,\n toggle,\n disabled = false,\n expandDisabled = false,\n onBlur,\n position,\n ...others\n } = props\n const contextValue = useMemo(\n () => ({ expanded, toggle, disabled, expandDisabled }),\n [expanded, toggle, disabled, expandDisabled]\n )\n const ref = useRef(null)\n\n const align = useDeprecatedAlignFromMenu(props)\n\n useClickOutside(\n ref,\n function handleClickOutside(event?: MouseEvent | TouchEvent | KeyboardEvent) {\n onBlur?.(event)\n\n if (!expanded) {\n return\n }\n\n toggle()\n }\n )\n\n return (\n <DropdownWrapper {...others} role=\"menubar\" ref={ref}>\n <DropdownContext.Provider value={contextValue}>\n <HiddenCloseButton disabled={disabled} onClick={toggle}>\n Close\n </HiddenCloseButton>\n <Popover strategy=\"fixed\" position={position} align={align}>\n {children}\n </Popover>\n </DropdownContext.Provider>\n </DropdownWrapper>\n )\n}\n\n/**\n * @example\n <Dropdown>\n <Dropdown.Trigger>Download</Dropdown.Trigger>\n <Dropdown.Menu\n header={<p className=\"px-2\">Header</p>}\n footer={<p className=\"px-2\">A cool footer</p>}\n >\n {[{label: 'Hello', value: 'hi'}, { label: 'World', value: 'planet' }].map(({ label, value }) => (\n <Dropdown.Item\n key={value}\n onClick={() => {\n setMessage(label)\n }}\n >\n {label}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n */\nfunction Dropdown(props: DropdownProps): JSX.Element {\n const dropdownProps = useDropdown(props)\n\n return <GenericDropdown {...props} {...dropdownProps} />\n}\n\nDropdown.Trigger = DropdownTrigger\nDropdown.Menu = DropdownMenu\nDropdown.Section = DropdownMenuSection\nDropdown.Item = DropdownMenuItem\nDropdown.Separator = DropdownSeparator\n\nexport default Dropdown\n","import { createContext } from 'react'\nimport { createSelectable } from 'hooks/useSelectable'\n\nimport type { Option, useSelectReturn } from './Select.types'\n\nconst { SelectableContext, useSelectable } = createSelectable<Option>()\n\nexport { SelectableContext, useSelectable }\n\nconst SelectContext = createContext<useSelectReturn | null>(null)\nexport { SelectContext }\n","/**\n * Helper that returns the plural form if count is different than 1, otherwise the singular one.\n * @example\n * let total = 3\n * `Item${pluralize(total)}` // \"Items\"\n * `Child${pluralize(total, 'ren')}` // \"Children\"\n * `Pe${pluralize(total, 'ople', 'rson')}` // \"People\"\n * `${pluralize(total, 'People', 'Person')}` // \"People\"\n * @param count - total of items\n * @param plural - defaults to \"s\"\n * @param singular - defaults to \"\"\n * @returns plural or singular.\n */\nexport default function pluralize(count: number, plural = 's', singular = ''): string {\n return count !== 1 ? plural : singular\n}\n","import React, { useContext, forwardRef } from 'react'\nimport styled from 'styled-components'\n\nimport { DropdownContext, DropdownTrigger, GenericDropdownTrigger } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { TextField, Trailing } from 'components/TextField'\nimport focusable from 'styles/focusable'\n\nimport type { SelectTriggerProps } from './Select.types'\nimport { isFunction } from '@loadsmart/utils-function'\nimport { usePopover } from 'components/Popover'\n\nconst GenericSelectTrigger = styled(GenericDropdownTrigger)`\n background: ${token('color-neutral-white')};\n`\n\nconst SelectTriggerSearchField = styled(TextField)`\n ${focusable`\n box-shadow: none;\n `}\n\n background-color: transparent;\n\n border: none;\n border-radius: ${token('border-radius-s')} 0 0 ${token('border-radius-s')};\n\n height: ${token('select-trigger-height')};\n\n flex: 1;\n\n ${Trailing} {\n margin: 0 ${token('space-xs')} 0 0;\n }\n`\n\nconst Separator = styled.span`\n height: 100%;\n\n margin: 0;\n\n border-right-color: ${token('color-neutral-light')};\n border-right-width: 1px;\n border-right-style: solid;\n`\n\nconst SelectTrigger = forwardRef<HTMLInputElement, SelectTriggerProps>(function SelectTrigger(\n props: SelectTriggerProps,\n ref\n) {\n const { className, ...others } = props\n const { disabled, expanded, toggle } = useContext(DropdownContext)\n\n const { register } = usePopover()\n\n function handleClick() {\n if (!expanded) {\n toggle()\n }\n }\n\n return (\n <GenericSelectTrigger className={className}>\n <SelectTriggerSearchField\n {...others}\n data-testid=\"select-trigger-search-field\"\n ref={(node) => {\n if (isFunction(ref)) {\n ref(node)\n }\n\n register.setReference(node)\n }}\n type=\"search\"\n disabled={disabled}\n onClick={handleClick}\n />\n <Separator />\n <DropdownTrigger.Handle data-testid=\"select-trigger-handle\" />\n </GenericSelectTrigger>\n )\n})\n\nexport default SelectTrigger\n","import React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport KeyboardKey, { getKeyboardKey } from 'utils/toolset/keyboard'\nimport isEmpty from 'utils/toolset/isEmpty'\n\nimport type { SupportedKey } from 'utils/toolset/keyboard'\n\nexport interface useFocusTrapProps {\n onActivate?: () => void\n onDeactivate?: () => void\n keys?: SupportedKey[]\n}\n\nfunction getFocusedIndexAfterKeyPress(\n e: React.KeyboardEvent,\n currentFocused: number,\n focusableCounter: number\n): number {\n const keyHandler: Record<React.KeyboardEvent['key'], (e: React.KeyboardEvent) => number> = {\n Tab(e: React.KeyboardEvent): number {\n return e.shiftKey ? -1 : 1\n },\n ArrowUp() {\n return -1\n },\n ArrowDown() {\n return 1\n },\n }\n\n function unknownKey() {\n return 0\n }\n\n const key = getKeyboardKey(e)\n const increment = (keyHandler[key] || unknownKey)(e)\n\n if (currentFocused === -1 && increment === -1) {\n /**\n * Prevent to skip one element when the initial increment is -1\n * and `currentFocused` is -1, we don't .\n * e.g.: focus has just been activated and user presses arrow up.\n */\n return (increment + focusableCounter) % focusableCounter\n }\n\n return (currentFocused + increment + focusableCounter) % focusableCounter\n}\n\nfunction getTabbableDescendants<T extends HTMLElement>(container: T | null) {\n if (container == null) {\n return []\n }\n\n // TODO: add support for other focusable elements\n return Array.from(container.querySelectorAll('button') || [])\n}\n\n/**\n * Custom hook that limits the focusable elements within a container, when activated.\n *\n * Based on https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets.\n *\n * @param {useFocusTrapProps} props\n * @param {RefObject} props.containerRef - Ref to the container that will be the boundary for the focus trap.\n * @param {() => void} props.onActivate - Called when the focus trap is activated.\n * @param {() => void} props.onDeactivate - Called when the focus trap is deactivated.\n * @param {(KeyboardEvent['key'])[]} props.keys - Keys that will move the focus inside\n * the container (The current implementation only track focus for button elements). We current\n * support `Tab`, `ArrowUp`, and `ArrowDown` keys. If not provided, only the `Tab` key will be used.\n * @returns {Object}\n */\nfunction useFocusTrap<T extends HTMLElement>(\n props: useFocusTrapProps\n): {\n containerRef: (container: T | null) => void\n active: boolean\n activate: () => void\n deactivate: () => void\n} {\n const { keys, onActivate, onDeactivate } = props\n\n const [active, setActive] = useState(false)\n const [currentFocused, setCurrentFocused] = useState(-1)\n const mutationObserverRef = useRef<MutationObserver>()\n const [focusableDescendants, setFocusableDescendants] = useState<HTMLElement[]>([])\n\n function subscribeToDOMMutationEvents(container: HTMLElement) {\n mutationObserverRef.current = new MutationObserver(function () {\n setFocusableDescendants(getTabbableDescendants(container))\n })\n\n mutationObserverRef.current.observe(container, { childList: true })\n }\n\n function unsubscribeToDOMMutationEvents() {\n setCurrentFocused(-1)\n if (mutationObserverRef.current) {\n mutationObserverRef.current?.disconnect()\n }\n }\n\n const containerRef = useCallback(function initialize(container: HTMLElement | null) {\n if (container != null) {\n setFocusableDescendants(getTabbableDescendants(container))\n subscribeToDOMMutationEvents(container)\n } else {\n unsubscribeToDOMMutationEvents()\n }\n }, [])\n\n useEffect(function onMount() {\n return function onUnmount() {\n unsubscribeToDOMMutationEvents()\n }\n }, [])\n\n useEffect(\n function subscribeToKeyEvents() {\n function handleKeyDownEvent(evt: KeyboardEvent) {\n /**\n * Brace yourselves for the nasty casting from globalThis.KeyboardEvent, which is\n * the type used in the `addEventListener` callback, to React.KeyboardEvent ¯\\_(ツ)_/¯\n */\n const e = evt as unknown as React.KeyboardEvent\n\n const supportedKeys = [...(keys || ['TAB'])]\n\n if (!KeyboardKey(e).is(supportedKeys) || isEmpty(focusableDescendants)) {\n return\n }\n\n e.preventDefault()\n\n const newCurrentFocused = getFocusedIndexAfterKeyPress(\n e,\n currentFocused,\n focusableDescendants.length\n )\n setCurrentFocused(newCurrentFocused)\n focusableDescendants[newCurrentFocused].focus()\n }\n\n function subscribe() {\n document.addEventListener('keydown', handleKeyDownEvent)\n }\n\n function unsubscribe() {\n document.removeEventListener('keydown', handleKeyDownEvent)\n }\n\n if (active) {\n subscribe()\n }\n\n return function unsubscribeToKeyEvents() {\n unsubscribe()\n }\n },\n [active, keys, currentFocused, focusableDescendants]\n )\n\n const activate = useCallback(\n function activate() {\n setActive(true)\n onActivate?.()\n },\n [onActivate]\n )\n\n const deactivate = useCallback(\n function deactivate() {\n setActive(false)\n onDeactivate?.()\n },\n [onDeactivate]\n )\n\n return {\n containerRef,\n active,\n activate,\n deactivate,\n }\n}\n\nexport default useFocusTrap\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isObject } from '@loadsmart/utils-object'\nimport { isFunction } from '@loadsmart/utils-function'\n\ninterface Thenable {\n then(): any\n}\n\n// TODO: add this helper to @loadsmart/utils\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexport function isThenable(object: any): object is Thenable {\n return isObject(object) && isFunction((object as Thenable)['then'])\n}\n","import get from 'utils/toolset/get'\n\nimport type { SelectAdapter } from './Select.types'\n\nexport const GenericAdapter: SelectAdapter<unknown> = {\n getKey(o): string {\n return get(o, 'value')!\n },\n getLabel(o): string {\n return get(o, 'label')!\n },\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { GenericAdapter } from './Select.constants'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport toArray from 'utils/toolset/toArray'\n\nimport type { SelectAdapter, SelectValue, Option, Adapters, SelectProps } from './Select.types'\n\nexport function getAdapter(adapters: Adapters, type?: string): SelectAdapter<any> {\n if (type == null) {\n return GenericAdapter\n }\n\n return adapters[type] || GenericAdapter\n}\n\nexport function getValue(selection: SelectValue, multiple?: boolean): Option | Option[] | null {\n const pairs = Array.from(selection)\n\n if (isEmpty(pairs)) {\n return null\n }\n\n if (multiple) {\n const options = []\n for (const [, option] of pairs) {\n options.push(option)\n }\n\n return options\n } else {\n const [[, option]] = pairs\n return option\n }\n}\n\nexport function toSelection(value: SelectProps['value']): Option[] {\n const safeValue = toArray(value || [])\n\n return safeValue.filter((option) => !isEmpty(option))\n}\n\nexport function getDisplayValue(\n adapters: Adapters,\n selection: SelectValue,\n multiple?: boolean\n): string {\n if (selection.size == 0) {\n return ''\n }\n\n if (multiple) {\n return ''\n } else {\n const value = getValue(selection, multiple)\n const adapter = getAdapter(adapters, (value as Option)._type)\n return adapter.getLabel(value) ?? ''\n }\n}\n\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping\nexport function escapeRegExp(value: string): string {\n return String(value || '').replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isFunction } from '@loadsmart/utils-function'\nimport { isNil } from '@loadsmart/utils-object'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport isEmpty from 'utils/toolset/isEmpty'\nimport { useDropdown } from 'components/Dropdown'\nimport { useDidMount } from 'hooks/useDidMount'\nimport { useFocusTrap } from 'hooks/useFocusTrap'\nimport type { SelectableKeyType } from 'hooks/useSelectable'\nimport to from 'utils/toolset/awaitTo'\nimport { isThenable } from 'utils/toolset/isThenable'\nimport toArray from 'utils/toolset/toArray'\nimport { GenericAdapter } from './Select.constants'\nimport { useSelectable } from './Select.context'\nimport {\n escapeRegExp,\n getAdapter,\n getDisplayValue,\n getValue,\n toSelection,\n} from './useSelect.helpers'\n\nimport type { ChangeEvent, FocusEvent } from 'react'\nimport type {\n Adapters,\n GenericOption,\n Option,\n SelectDatasource,\n SelectDatasourceFunction,\n SelectProps,\n SelectStatus,\n SelectValue,\n useSelectReturn,\n} from './Select.types'\n\nasync function getData(datasources: SelectDatasource<any>[], query: string) {\n const regex = new RegExp(escapeRegExp(query), 'i')\n\n const promises = []\n const types: string[] = []\n\n for (const ds of datasources) {\n promises.push(Promise.resolve(ds.fetch({ query, regex })))\n types.push(ds.type)\n }\n\n // We use Promise.allSettled here because Promise.all rejects as soon as one promise fails\n // But we want to continue with the next datasource when one fails.\n const results = await Promise.allSettled(promises)\n\n let items: Option[] = []\n\n results.forEach((result, index) => {\n if (result.status === 'rejected') {\n return\n }\n\n const type = types[index]\n\n items = items.concat(\n (result.value || []).map((item) => {\n return {\n ...item,\n _type: type,\n } as Option\n })\n )\n })\n\n return items\n}\n\nfunction getDatasources(props: SelectProps) {\n function getDatasourceFromOptions(\n options?: GenericOption[] | null\n ): SelectDatasourceFunction<any>[] {\n if (!options) {\n return []\n }\n\n return [\n function useGenericDatasource() {\n return {\n type: 'generic',\n adapter: GenericAdapter,\n fetch: function fetch({ regex }) {\n return options.filter(({ label }) => regex.test(label))\n },\n }\n },\n ]\n }\n\n let datasources: SelectDatasourceFunction<any>[] = []\n\n datasources = datasources.concat(props.datasources || [])\n datasources = datasources.concat(getDatasourceFromOptions(props.options))\n\n return datasources.map((ds) => ds())\n}\n\nfunction extractAdapters(datasources: SelectDatasource<any>[]) {\n return toArray(datasources).reduce((map, ds) => {\n return {\n ...map,\n [ds.type]: ds.adapter,\n }\n }, {})\n}\n\nfunction TriggerOnFocusHandler(e: FocusEvent<HTMLInputElement>) {\n e.target.select()\n}\n\nfunction mapOptions(items: Option[], adapters: Adapters) {\n const options = new Map<SelectableKeyType, Option>()\n\n items.forEach((item) => {\n const adapter = getAdapter(adapters, item._type)\n options.set(adapter.getKey(item), item)\n })\n\n return options\n}\n\nfunction useOptions<T = any>(props: { datasources: SelectDatasource<T>[]; adapters: Adapters }) {\n const { datasources, adapters } = props\n const [options, setOptions] = useState(new Map<SelectableKeyType, Option>())\n const [status, setStatus] = useState<SelectStatus>('idle')\n\n const timeoutRef = useRef<number>()\n\n function cancelPendingFetch() {\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current)\n }\n }\n\n const fetchAfterTimeout = useCallback(\n function fetchAfterTimeout(query: string) {\n cancelPendingFetch()\n /**\n * The `pending-query` status represents that the 'fetching' has been started\n * but it has been debounced and the internal fetch has not yet been called.\n * This is important because at this point the status is not idle\n * as the fetching has already started.\n */\n setStatus('pending-query')\n\n async function fetch() {\n setOptions(new Map<SelectableKeyType, Option>())\n setStatus('querying')\n\n const items = await getData(datasources, query)\n\n setOptions(mapOptions(items, adapters))\n setStatus('queried')\n }\n\n timeoutRef.current = setTimeout(() => void fetch(), 750)\n },\n [adapters, datasources]\n )\n\n const clear = useCallback(function clear() {\n setStatus('idle')\n setOptions(new Map<SelectableKeyType, Option>())\n }, [])\n\n const get = useCallback(\n function get() {\n return Array.from(options.values())\n },\n [options]\n )\n\n const reset = useCallback(\n function reset() {\n clear()\n fetchAfterTimeout('')\n },\n [clear, fetchAfterTimeout]\n )\n\n const getOptionByKey = useCallback(\n function getOptionByKey(key: SelectableKeyType) {\n return options.get(key)\n },\n [options]\n )\n\n useEffect(() => {\n return () => {\n cancelPendingFetch()\n }\n }, [])\n\n return {\n get,\n fetch: fetchAfterTimeout,\n clear,\n status,\n getOptionByKey,\n reset,\n }\n}\n\n// TODO: keep adapter resolution in a single place\n// TODO: prevent state changes after unmount (`useMounted` hook from Alice Frontend)\n/**\n * Based on https://www.w3.org/TR/wai-aria-practices-1.1/examples/combobox/aria1.1pattern/listbox-combo.html\n * @param props\n * @returns\n */\nfunction useSelect(props: SelectProps): useSelectReturn {\n const didMount = useDidMount()\n const {\n multiple,\n onQueryChange,\n onChange,\n onCreate,\n getInputProps,\n id,\n name,\n disabled = false,\n onBlur,\n isValidNewOption = (query: string) => Boolean(query),\n createOptionPosition = 'last',\n } = props\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const datasources = useMemo<SelectDatasource<any>[]>(\n () => getDatasources(props),\n [props.datasources, props.options]\n )\n const adapters = useMemo<Adapters>(() => extractAdapters(datasources), [datasources])\n\n const selectable = useSelectable({\n selected: toSelection(props.value),\n multiple,\n adapters,\n onChange: useCallback(\n function handleSelectionChange(selected: SelectValue) {\n onChange?.({ target: { id, name, value: getValue(selected, multiple) } })\n },\n [id, multiple, name, onChange]\n ),\n })\n\n const triggerRef = useRef<HTMLInputElement>()\n const focusTrap = useFocusTrap({\n keys: ['ARROW_UP', 'ARROW_DOWN'],\n onDeactivate() {\n triggerRef.current?.focus()\n },\n })\n\n const [queryTyped, setQueryTyped] = useState(false)\n const [query, setQuery] = useState<string>(\n getDisplayValue(adapters, selectable.selected, multiple)\n )\n const options = useOptions({ datasources, adapters })\n\n const expandDisabled = useMemo(\n () =>\n !query.length &&\n isEmpty(options.get()) &&\n isEmpty(selectable.selected) &&\n isFunction(isValidNewOption)\n ? !isValidNewOption(query)\n : !isValidNewOption,\n [query, options, selectable.selected, isValidNewOption]\n )\n\n const dropdown = useDropdown({ ...props, expandDisabled })\n\n useEffect(() => {\n if (queryTyped) {\n options.fetch(query)\n dropdown.expand()\n }\n }, [query, queryTyped])\n\n const getSelectableOption = useCallback(\n function getSelectableOption(option: Option) {\n const adapter = getAdapter(adapters, option._type)\n\n const value = adapter.getKey(option)\n const label = adapter.getLabel(option)\n const checked = selectable.selected.has(value)\n\n return { label, value, checked }\n },\n [adapters, selectable.selected]\n )\n\n const getOption = useCallback(\n function getOption(value: SelectableKeyType) {\n let option = options.getOptionByKey(value)\n\n if (!option) {\n option = selectable.selected.get(value)\n }\n\n return option\n },\n [options, selectable.selected]\n )\n\n const toggleOption = useCallback(\n function toggleOption(option: Option) {\n selectable.toggle(option)\n },\n [selectable]\n )\n\n const getDropdownProps = useCallback(\n function getDropdownProps() {\n return {\n toggle: dropdown.toggle,\n expanded: dropdown.expanded,\n onBlur(event?: MouseEvent | TouchEvent | KeyboardEvent) {\n setQueryTyped(false)\n\n if (!multiple) {\n setQuery(getDisplayValue(adapters, selectable.selected, multiple))\n } else {\n setQuery('')\n }\n options.reset()\n onBlur?.(event)\n },\n expandDisabled,\n }\n },\n [\n adapters,\n dropdown.expanded,\n dropdown.toggle,\n multiple,\n options,\n selectable.selected,\n onBlur,\n expandDisabled,\n ]\n )\n\n const getTriggerProps = useCallback(\n function getTriggerProps() {\n return {\n ...getInputProps?.(),\n id,\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n triggerRef.current = node\n }\n },\n value: query,\n onChange(e: ChangeEvent<HTMLInputElement>) {\n const sanitizedValue = e.target.value.replace(/\\s+/, '')\n\n setQueryTyped(sanitizedValue !== '')\n onQueryChange?.(e)\n setQuery(e.target.value)\n },\n onFocus: TriggerOnFocusHandler,\n }\n },\n [id, query, onQueryChange, dropdown, options, selectable.selected]\n )\n\n const getClearProps = useCallback(\n function getClearProps() {\n return {\n onClick() {\n setQueryTyped(false)\n setQuery('')\n selectable.clear()\n options.reset()\n triggerRef.current?.focus()\n },\n }\n },\n [options, selectable]\n )\n\n const getMenuProps = useCallback(\n function getMenuProps() {\n return {\n ref: focusTrap.containerRef,\n role: 'listbox',\n }\n },\n [focusTrap.containerRef]\n )\n\n const getOptionProps = useCallback(\n function getOptionProps({ option }: { option: Option }) {\n const { value, checked, label } = getSelectableOption(option)\n\n return {\n role: 'option',\n 'aria-selected': checked,\n id: String(value),\n onClick() {\n setQueryTyped(false)\n\n if (!multiple) {\n setQueryTyped(false)\n }\n toggleOption(option)\n\n return multiple\n },\n tabIndex: -1,\n }\n },\n [getSelectableOption, toggleOption, multiple]\n )\n\n const getCreatebleProps = useCallback(\n function getCreatebleProps() {\n return {\n onClick: function onClick() {\n async function asyncOnClick() {\n if (!isFunction(onCreate)) return\n\n const onCreateReturn = onCreate(query)\n\n let option\n if (onCreateReturn) {\n if (isThenable(onCreateReturn)) {\n option = await onCreateReturn\n } else {\n option = onCreateReturn\n }\n }\n\n options.fetch(query)\n\n if (option) {\n toggleOption(option)\n }\n }\n\n void asyncOnClick()\n\n return multiple\n },\n tabIndex: -1,\n }\n },\n [multiple, onCreate, query, options, toggleOption]\n )\n\n const isCreatable = useCallback(\n function isCreatable() {\n const findByLabel = (item: Option) =>\n getSelectableOption(item).label.toLocaleLowerCase() === query.toLocaleLowerCase()\n\n function isQueryEqualAnOption() {\n return !isNil(\n [...options.get(), ...Array.from(selectable.selected.values())].find(findByLabel)\n )\n }\n\n function getIsValidNewOption() {\n if (isFunction(isValidNewOption)) {\n return isValidNewOption(query) && !isQueryEqualAnOption()\n }\n\n return isValidNewOption\n }\n\n return isFunction(onCreate) && options.status === 'queried' && getIsValidNewOption()\n },\n [getSelectableOption, isValidNewOption, onCreate, options, query, selectable.selected]\n )\n\n useEffect(\n function onInit() {\n options.fetch('')\n },\n // we just want to load any initial options that a datasource may have available\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [datasources]\n )\n\n useEffect(\n function onDropdownToggle() {\n if (!props.autoFocus && !didMount) {\n return\n }\n if (dropdown.expanded) {\n focusTrap.activate()\n } else {\n focusTrap.deactivate()\n }\n },\n /**\n * We are interested in activating/deactivating our\n * focus trap when the dropdown changes its expanded state.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dropdown.expanded]\n )\n\n useEffect(\n function updateOnSelectedChange() {\n if (!multiple) {\n setQuery(getDisplayValue(adapters, selectable.selected, multiple))\n }\n },\n [adapters, multiple, selectable.selected]\n )\n\n return {\n status: options.status,\n options: options.get(),\n value: getValue(selectable.selected, multiple),\n query,\n disabled,\n\n selectable,\n\n getMenuProps,\n getSelectableOption,\n getOption,\n getOptionProps,\n getTriggerProps,\n getClearProps,\n getDropdownProps,\n getCreatebleProps,\n isCreatable,\n createOptionPosition,\n }\n}\n\nexport default useSelect\n","import React from 'react'\n\n/**\n * A function that wraps a match into `mark` element to be highlighted.\n * @example\n *\n * @param {string} - label to be split\n * @param {string} - match to be found\n * @returns {ReactNode} - an element with marked match\n */\nexport default function highlightMatch(str: string, match: string): JSX.Element {\n if (str == null || match == null) {\n return <>{str}</>\n }\n\n // the explicit coercion here ensures that we'll be dealing with strings even in vanilla JS code\n const index = String(str).toLowerCase().indexOf(String(match).toLowerCase())\n\n if (index === -1) return <>{str}</>\n\n const pre = str.slice(0, index)\n const mid = str.slice(index, index + match.length)\n const post = str.slice(index + match.length)\n\n return (\n <>\n {pre}\n <mark>{mid}</mark>\n {post}\n </>\n )\n}\n","import React, { HTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\n\nimport highlightMatch from 'utils/toolset/highlightMatch'\n\nexport type HighlightMatchProps = {\n text: string\n match: string\n} & HTMLAttributes<HTMLSpanElement>\n\nconst HighlightMatchWrapper = styled.span`\n /* highlightMatch splits the label into separate HTML elements, thus we need\n to preserve white-spaces, otherwise the browser wouldn't render them. */\n white-space: pre;\n\n mark {\n color: inherit;\n font-weight: ${token('font-weight-bold')};\n\n background-color: ${token('color-transparent')};\n }\n`\n\nconst HighlightMatch = ({ text, match, ...props }: HighlightMatchProps): JSX.Element => {\n return <HighlightMatchWrapper {...props}>{highlightMatch(text, match)}</HighlightMatchWrapper>\n}\n\nexport default HighlightMatch\n","import React, { useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { Checkbox } from 'components/Checkbox'\nimport { Dropdown } from 'components/Dropdown'\nimport { HighlightMatch } from 'components/HighlightMatch'\nimport { Icon as DefaultIcon } from 'components/Icon'\nimport { Group as DefaultGroup } from 'components/Layout'\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\n\nimport { SelectContext } from './Select.context'\n\nimport type { DropdownMenuItemProps } from 'components/Dropdown'\nimport type { SelectOptionProps } from './Select.types'\n\nconst Group = styled(DefaultGroup).attrs({\n as: 'span',\n})`\n /* placeholder */\n`\n\nconst Icon = styled(DefaultIcon)`\n color: ${token('select-selected-option-check-color')};\n`\n\nconst DefaultSelectOption = styled(Dropdown.Item)<DropdownMenuItemProps>`\n background: ${conditional({\n 'select-selected-option-background-color': whenProps({ 'aria-selected': true }),\n 'color-neutral-white': whenProps({ 'aria-selected': false }),\n })};\n`\n\nfunction SelectOption({\n children,\n value,\n leading,\n trailing,\n ...rest\n}: SelectOptionProps): JSX.Element {\n const select =\n useContext(SelectContext) ||\n (() => {\n throw new Error('Options should be wrapped in a SelectContext')\n })()\n\n const type = select.selectable.type()\n const option = select.getOption(value) || {}\n const { checked, label } = select.getSelectableOption(option)\n\n function renderContent() {\n if (children) return children\n if (checked && type === 'multiple') return label\n\n return <HighlightMatch text={label} match={select.query} />\n }\n\n return (\n <DefaultSelectOption\n {...rest}\n {...select.getOptionProps({ option })}\n leading={\n type === 'multiple' ? (\n <Group align=\"center\" space=\"s\">\n <Checkbox scale=\"small\" defaultChecked={checked} />\n {leading}\n </Group>\n ) : (\n leading\n )\n }\n trailing={type === 'single' ? checked ? <Icon name=\"check\" /> : null : trailing}\n >\n {renderContent()}\n </DefaultSelectOption>\n )\n}\n\nexport default SelectOption\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport type { SelectEmptyProps } from './Select.types'\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n box-sizing: border-box;\n margin: 0 ${token('space-s')};\n padding: ${token('space-s')};\n\n color: ${token('color-neutral')};\n\n font-size: 1em;\n line-height: ${token('font-height-3')};\n\n background: ${token('color-transparent')};\n`\n\nfunction SelectEmpty({ children, ...others }: SelectEmptyProps): JSX.Element {\n return <Wrapper {...others}>{children}</Wrapper>\n}\n\nexport default SelectEmpty\n","import React, { useContext } from 'react'\nimport { Dropdown } from 'components/Dropdown'\nimport { SelectContext } from './Select.context'\nimport type { SelectCreatableOptionProps } from './Select.types'\n\nfunction SelectCreatableOption({ children, ...rest }: SelectCreatableOptionProps): JSX.Element {\n const select =\n useContext(SelectContext) ||\n (() => {\n throw new Error('SelectCreatableOption should be wrapped in a SelectContext')\n })()\n\n return (\n <Dropdown.Item {...rest} {...select.getCreatebleProps()}>\n {children || `Add \"${select.query}\"`}\n </Dropdown.Item>\n )\n}\n\nexport default SelectCreatableOption\n","import type { Components, CreatableOptionType } from './Select.types'\nimport SelectCreatableOption from './SelectCreatableOption'\nimport SelectEmpty from './SelectEmpty'\nimport SelectOption from './SelectOption'\n\nconst defaultComponents = {\n Option: SelectOption,\n Empty: SelectEmpty,\n CreatableOption: SelectCreatableOption as CreatableOptionType,\n}\n\nexport function getComponents(components?: Components): Required<Components> {\n return { ...defaultComponents, ...components }\n}\n","import React, { Fragment, forwardRef } from 'react'\nimport styled from 'styled-components'\n\nimport { Dropdown, GenericDropdown } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { SelectableContext, SelectContext } from './Select.context'\nimport { Tag } from 'components/Tag'\nimport { Text } from 'components/Text'\nimport CloseButton from 'common/CloseButton'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport omit from 'utils/toolset/omit'\nimport pluralize from 'utils/toolset/pluralize'\nimport SelectTrigger from './SelectTrigger'\nimport toArray from 'utils/toolset/toArray'\nimport useSelect from './useSelect'\nimport SelectOption from './SelectOption'\nimport SelectEmpty from './SelectEmpty'\nimport SelectCreatableOption from './SelectCreatableOption'\nimport { getComponents } from './components'\n\nimport type { DropdownMenuProps } from 'components/Dropdown'\nimport type {\n SelectProps,\n useSelectReturn,\n SelectStatus,\n Components,\n SelectableOption,\n} from './Select.types'\n\nconst OMITTED_PROPS = [\n 'id',\n 'name',\n 'datasources',\n 'onChange',\n 'onQueryChange',\n 'onCreate',\n 'options',\n 'value',\n]\n\nconst Loading = styled.span`\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 2em;\n\n height: 2em;\n padding: ${token('space-xs')};\n\n font-size: ${token('font-size-3')};\n`\n\nfunction getCommonClearButtonProps() {\n return {\n 'data-testid': 'select-trigger-clear',\n }\n}\n\nconst SelectMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(function SelectMenu(\n props: DropdownMenuProps,\n ref\n): JSX.Element {\n return <Dropdown.Menu ref={ref} {...props} role=\"listbox\" />\n})\n\nfunction ClearMultiple({ select }: { select: useSelectReturn }) {\n const { onClick } = select.getClearProps()\n const total = toArray(select.value).length\n\n return (\n <div data-testid=\"select-trigger-clear-counter\">\n <Tag\n removable\n size=\"default\"\n variant=\"accent\"\n onRemove={onClick}\n title={`${total} selected option${pluralize(total)}`}\n getRemoveButtonProps={getCommonClearButtonProps}\n disabled={select.disabled}\n >\n {total}\n </Tag>\n </div>\n )\n}\n\nconst Divider = styled.hr`\n width: calc(100% - ${token('space-m')});\n height: 1px;\n margin: ${token('space-m')} ${token('space-s')};\n\n background-color: ${token('color-neutral-lighter')};\n border: 0;\n`\n\nconst DividerText = styled(Text)`\n position: absolute;\n top: ${token('space-s')};\n\n padding-right: ${token('space-xs')};\n padding-left: ${token('space-m')};\n\n background-color: ${token('color-neutral-white')};\n`\n\nfunction isQuerying(status: SelectStatus) {\n return ['pending-query', 'querying'].includes(status)\n}\n\ntype SeparatorProps = {\n status: SelectStatus\n after?: unknown[]\n before?: unknown[]\n}\n\nfunction Separator({ status, after = [], before = [] }: SeparatorProps): JSX.Element {\n if (!isQuerying(status)) {\n if (isEmpty(after) && !isEmpty(before)) return <Divider />\n if (isEmpty(after)) return <Fragment />\n }\n\n return (\n <div style={{ position: 'relative' }}>\n <Divider />\n <DividerText variant=\"caption-bold\" color=\"color-neutral-light\">\n {isQuerying(status) ? 'Loading...' : `${after.length} option${pluralize(after.length)}`}\n </DividerText>\n </div>\n )\n}\n\nfunction renderOptionsSingle(select: useSelectReturn, components?: Components): JSX.Element {\n const { Option, Empty, CreatableOption } = getComponents(components)\n const isCreatable = select.isCreatable()\n\n if (isQuerying(select.status) && isEmpty(select.options)) {\n return <SelectEmpty>Loading...</SelectEmpty>\n }\n\n if (isEmpty(select.options)) {\n if (isCreatable) {\n return <CreatableOption />\n }\n\n return <Empty>No results found.</Empty>\n }\n\n return (\n <>\n {select.createOptionPosition === 'first' && isCreatable ? <CreatableOption /> : null}\n {select.options.map((option) => {\n const { value } = select.getSelectableOption(option)\n return <Option key={String(value)} value={value} />\n })}\n {select.createOptionPosition === 'last' && isCreatable ? <CreatableOption /> : null}\n </>\n )\n}\n\nfunction renderOptionsMultiple(select: useSelectReturn, components?: Components): JSX.Element {\n const { Option, Empty, CreatableOption } = getComponents(components)\n const isCreatable = select.isCreatable()\n\n const selectedOptions = Array.from(select.selectable.selected.values()).map((selectable) =>\n select.getSelectableOption(selectable)\n )\n\n const remainingOptions = select.options.reduce((remaining, selectable) => {\n const option = select.getSelectableOption(selectable)\n\n if (option.checked) {\n return remaining\n }\n\n return [...remaining, option]\n }, [] as SelectableOption[])\n\n let remaining = (\n <Fragment>\n {select.createOptionPosition === 'first' && isCreatable ? <CreatableOption /> : null}\n {remainingOptions.map((option) => (\n <Option key={String(option.value)} value={option.value} />\n ))}\n {select.createOptionPosition === 'last' && isCreatable ? <CreatableOption /> : null}\n </Fragment>\n )\n\n if (!isQuerying(select.status) && isEmpty(remainingOptions)) {\n remaining = isCreatable ? <CreatableOption /> : <Empty>No more options.</Empty>\n }\n\n if (!isQuerying(select.status) && isEmpty(select.options)) {\n remaining = isCreatable ? <CreatableOption /> : <Empty>No results found.</Empty>\n }\n\n return (\n <Fragment>\n {selectedOptions.map((option) => (\n <Option key={String(option.value)} value={option.value} />\n ))}\n <Separator status={select.status} before={selectedOptions} after={remainingOptions} />\n {remaining}\n </Fragment>\n )\n}\n\nfunction Select(props: SelectProps): JSX.Element {\n const { multiple, placeholder, components, hideClear = false, ...others } = props\n\n const select = useSelect(props)\n\n function renderOptions() {\n if (multiple) {\n return renderOptionsMultiple(select, components)\n }\n\n return renderOptionsSingle(select, components)\n }\n\n function getTrailing() {\n if (isQuerying(select.status)) {\n return <Loading data-testid=\"select-trigger-loading\">&middot;&middot;&middot;</Loading>\n }\n\n if (!select.value) {\n return null\n }\n\n if (multiple) {\n return <ClearMultiple select={select} />\n }\n\n if (select.disabled || hideClear) {\n return null\n }\n\n return (\n <CloseButton\n size={12}\n {...getCommonClearButtonProps()}\n {...select.getClearProps()}\n type=\"button\"\n />\n )\n }\n\n return (\n <GenericDropdown {...omit(others, OMITTED_PROPS)} {...select.getDropdownProps()}>\n <SelectableContext.Provider value={select.selectable}>\n <SelectTrigger\n {...select.getTriggerProps()}\n trailing={getTrailing()}\n placeholder={placeholder}\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n />\n <SelectMenu {...select.getMenuProps()}>\n <SelectContext.Provider value={select}>{renderOptions()}</SelectContext.Provider>\n </SelectMenu>\n </SelectableContext.Provider>\n </GenericDropdown>\n )\n}\n\nSelect.Trigger = SelectTrigger\nSelect.Option = SelectOption\nSelect.Empty = SelectEmpty\nSelect.CreatableOption = SelectCreatableOption\n\nexport default Select\n","import { useCallback, useContext } from 'react'\n\nimport { SelectContext } from './Select.context'\nimport type { Option, useSelectExternalReturn } from './Select.types'\n\nexport function useSelectExternal(): useSelectExternalReturn {\n const select =\n useContext(SelectContext) ||\n (() => {\n throw new Error('useSelect should be wrapped in a SelectContext')\n })()\n\n const isChecked = useCallback(\n function isChecked(option: Option) {\n const { checked } = select.getSelectableOption(option)\n return checked\n },\n [select]\n )\n\n return {\n query: select.query,\n getOption: select.getOption,\n isChecked,\n }\n}\n","import React from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { BaseLink } from 'components/Link'\n\nexport type LogoProps = PropsWithChildren<{\n url: string\n className?: string\n}>\n\nconst Container = styled.div`\n padding-right: ${token('space-l')};\n padding-left: ${token('space-l')};\n`\n\nfunction Logo({ className, url, children }: LogoProps): JSX.Element {\n return (\n <Container className={className}>\n <BaseLink href={url}>{children}</BaseLink>\n </Container>\n )\n}\n\nexport default styled(Logo)<LogoProps>({})\n","import { RefObject, useEffect, useLayoutEffect, useReducer, useState } from 'react'\nimport type { CSSProperties } from 'styled-components'\n\nimport { useDidMount } from 'hooks/useDidMount'\n\nfunction updateHeight(set: (value: number) => void, el: HTMLElement | null) {\n if (el) {\n const { height } = el.getBoundingClientRect()\n set(height)\n }\n}\n\nexport type HeightExpansionToggler = {\n expanded: boolean\n toggle: () => void\n height: CSSProperties['height']\n}\n\n/**\n * A React Hook to help you expand or collapse an element by\n * checking its total height and controlling a boolean flag\n * @param {React.RefObject} targetElRef - Ref of the wrapper element\n */\nfunction useHeightExpansionToggler(targetElRef: RefObject<HTMLElement>): HeightExpansionToggler {\n const [state, toggleState] = useReducer((prevState) => !prevState, false)\n const [totalHeight, setTotalHeight] = useState<CSSProperties['height']>(0)\n\n useLayoutEffect(() => {\n updateHeight(setTotalHeight, targetElRef.current)\n }, [targetElRef])\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n updateHeight(setTotalHeight, targetElRef.current)\n })\n\n if (targetElRef.current) {\n observer.observe(targetElRef.current, { childList: true })\n }\n\n return () => observer.disconnect()\n }, [targetElRef])\n\n const mounted = useDidMount()\n const finalHeight = !mounted ? 'auto' : state ? totalHeight : 0\n\n return {\n expanded: state,\n toggle: toggleState,\n height: finalHeight,\n }\n}\n\nexport default useHeightExpansionToggler\n","import React from 'react'\nimport type { ReactNode, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport focusable from 'styles/focusable'\nimport transition from 'styles/transition'\nimport { getToken as token } from 'theming'\nimport rem from 'utils/toolset/rem'\nimport type { MenuLinkProps } from './MenuLink'\n\nexport type MenuBaseItemProps = HTMLAttributes<HTMLElement> & {\n label: string\n leading?: ReactNode\n trailing?: ReactNode\n url?: string\n subItems?: MenuLinkProps[]\n}\n\nconst StyledMenuItem = styled.button`\n ${transition({ duration: '0.25s' })};\n\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n padding: ${token('space-s')} 0;\n padding-right: ${rem('12px')};\n padding-left: ${token('space-l')};\n\n color: ${token('color-neutral-white')};\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('font-size-4')};\n line-height: ${token('font-height-3')};\n\n cursor: pointer;\n\n ${focusable`\n color: ${token('side-navigation-menu-item-color--focus')};\n `}\n`\n\nconst Leading = styled.div`\n display: flex;\n align-items: center;\n padding-right: ${token('space-s')};\n`\n\nconst Flex = styled.div`\n display: flex;\n`\n\nfunction MenuBaseItem({ label, leading, trailing, ...props }: MenuBaseItemProps): JSX.Element {\n return (\n <StyledMenuItem {...props}>\n <Flex>\n {leading && <Leading>{leading}</Leading>}\n {label}\n </Flex>\n {trailing && trailing}\n </StyledMenuItem>\n )\n}\n\nexport default MenuBaseItem\n","import React from 'react'\nimport type { ReactNode } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport hoverable from 'styles/hoverable'\nimport MenuBaseItem from './MenuBaseItem'\n\nconst StyledMenuItem = styled(({ url, ...props }) => (\n <MenuBaseItem as={url ? 'a' : 'button'} {...props} />\n))`\n ${hoverable`\n color: ${token('side-navigation-menu-link-color--hover')};\n `}\n\n ${({ active }) =>\n active\n ? css`\n background-color: ${token('side-navigation-menu-link-background-color--active')};\n box-shadow: inset ${token('space-xs')} 0\n ${token('side-navigation-menu-link-box-shadow-color--active')};\n `\n : ''}\n`\n\nexport type MenuLinkProps = React.HTMLAttributes<HTMLAnchorElement> & {\n label: string\n leading?: ReactNode\n trailing?: ReactNode\n url?: string\n}\n\nfunction MenuLink({ url, ...props }: MenuLinkProps): JSX.Element {\n return <StyledMenuItem href={url} url={url} {...props} role=\"menuitem\" />\n}\n\nexport default styled(MenuLink)({})\n","import React, { Fragment, useRef } from 'react'\nimport type { PropsWithChildren, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport type { CSSProperties } from 'styled-components'\n\nimport { Icon } from 'components/Icon'\nimport { conditional, whenProps, prop } from 'tools/index'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\nimport { useHeightExpansionToggler } from 'hooks/useHeightExpansionToggler'\n\nimport MenuLink from './MenuLink'\nimport MenuBaseItem from './MenuBaseItem'\n\ninterface IExpandable {\n $expanded?: boolean\n $height?: CSSProperties['height']\n}\n\nconst IconWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-left: ${token('space-s')};\n`\n\nconst StyledIcon = styled(Icon)<IExpandable>`\n color: ${token('color-neutral')};\n\n transform: rotate(\n ${conditional({\n '0deg': whenProps({ $expanded: true }),\n '-90deg': whenProps({ $expanded: false }),\n })}\n );\n`\n\nconst ExpandableItems = styled.div<IExpandable>`\n overflow: hidden;\n ${transition({ property: 'height' })}\n\n height: ${prop('$height', 0)}px;\n\n ${MenuLink} {\n padding-left: ${token('space-xl')};\n }\n`\n\nconst ItemsWrapper = styled.div<IExpandable>`\n ${transition()}\n\n opacity: ${conditional({\n 0: whenProps({ $expanded: false }),\n 1: whenProps({ $expanded: true }),\n })};\n\n transform: translateY(\n ${conditional({\n '-10%': whenProps({ $expanded: false }),\n '0%': whenProps({ $expanded: true }),\n })}\n );\n`\n\nexport type MenuExpandableProps = HTMLAttributes<HTMLDivElement> &\n PropsWithChildren<{\n label: string\n }>\n\nfunction MenuExpandable({ label, children, ...props }: MenuExpandableProps): JSX.Element {\n const expandableItemsRef = useRef<HTMLDivElement>(null)\n const { expanded, toggle, height } = useHeightExpansionToggler(expandableItemsRef)\n\n return (\n <div {...props} role=\"none\">\n <MenuBaseItem\n onClick={toggle}\n label={label}\n trailing={\n <IconWrapper>\n <StyledIcon $expanded={expanded} name=\"chevron-down\" size={16} />\n </IconWrapper>\n }\n aria-haspopup=\"true\"\n aria-expanded={expanded}\n />\n <ExpandableItems $height={height} role=\"menu\">\n <ItemsWrapper $expanded={expanded} ref={expandableItemsRef} role=\"presentation\">\n <Fragment>\n {React.Children.map(children, (child) => {\n if (!child) return null\n\n if (typeof child === 'object' && 'type' in child) {\n return React.cloneElement(child, {\n key: label,\n tabIndex: expanded ? 0 : -1,\n ariaHidden: !expanded,\n })\n }\n\n return child\n })}\n </Fragment>\n </ItemsWrapper>\n </ExpandableItems>\n </div>\n )\n}\n\nexport default MenuExpandable\n","import type { StyledComponent } from 'styled-components'\n\n/**\n * Helper that returns the plural form if count is different than 1, otherwise the singular one.\n * @example\n * const StyledParent = styled.div``\n * styledCompounds(StyledParent, { Child: (props) => <div /> })\n * <StyledParent.Child />\n * @param StyledComponent - Parent instance of a styled-component\n * @param compounds - Object with compound components\n * @returns Parent component with type-safe accessable compound components\n */\nexport function styledCompounds<\n A extends StyledComponent<React.ComponentType, Record<string, unknown>>,\n B extends Record<string, unknown>,\n>(Parent: A, compounds: B): A & B {\n Object.keys(compounds).forEach((key) => {\n // @ts-expect-error StyledComponent is read-only\n Parent[key] = compounds[key]\n })\n return Parent as A & B\n}\n","import React, { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nimport MenuExpandable from './MenuExpandable'\nimport type { MenuExpandableProps } from './MenuExpandable'\nimport MenuLink from './MenuLink'\nimport type { MenuLinkProps } from './MenuLink'\nimport useID from 'hooks/useID'\nimport { styledCompounds } from 'utils/toolset/styledCompounds'\n\nconst MenuTitle = styled.div`\n padding: ${token('space-s')} 0;\n padding-left: ${token('space-l')};\n\n color: ${token('color-neutral')};\n\n font-weight: ${token('side-navigation-menu-title-font-weight')};\n font-size: ${token('side-navigation-menu-title-font-size')};\n line-height: ${token('side-navigation-menu-title-line-height')};\n text-transform: uppercase;\n`\n\nexport interface MenuProps extends React.HTMLAttributes<HTMLDivElement> {\n label?: string\n}\n\nfunction Menu({ label, children, ...props }: MenuProps): JSX.Element {\n const menuId = useID()\n\n return (\n <div role=\"menubar\" aria-labelledby={menuId} {...props}>\n {label && <MenuTitle id={menuId}>{label}</MenuTitle>}\n\n {children}\n </div>\n )\n}\n\ntype MenuItemProps = { active?: boolean } & PropsWithChildren<MenuLinkProps & MenuExpandableProps>\n\nfunction MenuItem(props: MenuItemProps) {\n if (props.children) {\n return <MenuExpandable {...props} />\n }\n\n return <MenuLink {...props} />\n}\n\nconst StyledMenu = styled(Menu)({})\n\nexport default styledCompounds(StyledMenu, { Item: MenuItem, SubItem: MenuLink })\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nconst Line = styled.hr`\n margin: ${token('side-navigation-component-margin-top')} 0;\n\n color: ${token('side-navigation-separator-color')};\n`\n\nexport interface SeparatorProps {\n className?: string\n}\n\nfunction Separator(props: SeparatorProps): JSX.Element {\n return <Line {...props} role=\"separator\" />\n}\n\nexport default Separator\n","import CloseButton from 'common/CloseButton'\nimport type { CloseButtonProps } from 'common/CloseButton'\nimport React, { ReactNode } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nimport { Logo } from './Logo'\nimport { Menu } from './Menu'\nimport { Separator } from './Separator'\n\nconst Container = styled.aside`\n z-index: ${token('z-index-overlay')};\n /* this was needed to force the side-navigation-width inside flex containers */\n flex: 0 0 ${token('side-navigation-width')};\n width: ${token('side-navigation-width')};\n min-height: 100vh;\n padding-top: ${token('space-l')};\n padding-bottom: ${token('space-l')};\n overflow: auto;\n\n background-color: ${token('side-navigation-background-color')};\n\n ${Logo} + * {\n margin-top: ${token('space-xl')};\n }\n\n ${Menu} + ${Menu} {\n margin-top: ${token('space-m')};\n }\n`\n\nexport interface SideNavigationProps {\n className?: string\n children: ReactNode\n}\n\nfunction SideNavigation({ className, children }: SideNavigationProps): JSX.Element {\n return <Container className={className}>{children}</Container>\n}\n\nSideNavigation.Logo = Logo\nSideNavigation.Menu = Menu\nSideNavigation.Separator = Separator\nSideNavigation.CloseButton = styled(CloseButton)<CloseButtonProps>({})\n\nexport default SideNavigation\n","import { useState, useEffect } from 'react'\n\nfunction useWindowSize() {\n const [windowSize, setWindowSize] = useState<{\n width: number\n height: number\n }>({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n\n useEffect(() => {\n function handleResize() {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', handleResize)\n\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n return windowSize\n}\n\nexport default useWindowSize\n","import { CustomTheme, getToken as token } from 'theming'\nimport { useTheme } from 'styled-components'\nimport useDialog from 'components/Dialog/useDialog'\nimport { useMemo } from 'react'\nimport useWindowResize from 'hooks/useWindowResize'\nimport { BASE_PIXELS } from 'utils/toolset/rem'\n\nexport interface useSideNavigationProps {\n open: boolean\n show: () => void\n hide: () => void\n toggle: () => void\n}\n\nfunction transformInPixels(value: string): number {\n if (value.indexOf('rem') >= 0) {\n return parseFloat(value) * BASE_PIXELS\n }\n\n return parseFloat(value)\n}\n\nfunction useSideNavigation(): useSideNavigationProps {\n const size = useWindowResize()\n const theme = useTheme() as CustomTheme\n\n const shouldOpen = useMemo(() => {\n const breakpoint = token('side-navigation-collapsing-breakpoint', { theme }) as string\n const breakpointInPixels = transformInPixels(breakpoint)\n return size.width > breakpointInPixels\n }, [size])\n\n return useDialog({ open: shouldOpen })\n}\n\nexport default useSideNavigation\n","import type { PropsWithChildren } from 'react'\nimport React, { ReactNode, useEffect, useRef, useState } from 'react'\nimport ReactDOM from 'react-dom'\nimport styled from 'styled-components'\n\nimport transition from 'styles/transition'\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport DefaultCloseButton from 'common/CloseButton'\n\nexport interface DrawerProps {\n children?: ReactNode\n className?: string\n open: boolean\n onClose?: () => void\n onClickOutside?: () => void\n}\n\nconst StyledAside = styled.aside<Pick<DrawerProps, 'open'>>`\n position: fixed;\n top: 0;\n left: 0;\n\n z-index: ${token('z-index-overlay')};\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n\n background: ${token('modal-overlay-background')};\n\n visibility: ${conditional({\n visible: whenProps({ open: true }),\n hidden: whenProps({ open: false }),\n })};\n`\n\nconst CloseButton = styled(DefaultCloseButton)`\n position: absolute;\n top: 32px;\n left: -48px;\n\n background-color: ${token('color-neutral-lighter')};\n`\n\nconst StyledSection = styled.section<Pick<DrawerProps, 'open'>>`\n position: fixed;\n top: 0;\n right: 0;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 40vw;\n height: 100%;\n\n background-color: ${token('color-neutral-lightest')};\n border-radius: ${token('border-radius-s')};\n box-shadow: ${token('shadow-modal')};\n\n transform: ${conditional({\n 'translateX(100%)': whenProps({\n open: false,\n }),\n 'translateX(0px)': whenProps({\n open: true,\n }),\n })};\n\n ${transition({\n property: 'transform',\n duration: '200ms',\n })}\n`\n\nconst StyledHeader = styled.header`\n display: flex;\n align-items: center;\n justify-content: center;\n\n padding: ${token('space-xl')};\n\n color: ${token('color-neutral-darker')};\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('font-size-2')};\n text-align: center;\n\n border-bottom-color: ${token('color-neutral-light')};\n border-bottom-width: 1px;\n border-bottom-style: solid;\n`\n\nconst StyledBody = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n\n padding: ${token('space-xl')};\n\n overflow: auto;\n`\n\nconst StyledFooter = styled.footer`\n display: flex;\n\n padding: ${token('space-xl')};\n\n border-top-color: ${token('color-neutral-light')};\n border-top-width: 1px;\n border-top-style: solid;\n`\n\nexport interface DrawerHeaderProps {\n className?: string\n}\n\nfunction DrawerHeader({\n children,\n className,\n ...others\n}: PropsWithChildren<DrawerHeaderProps>): JSX.Element {\n return (\n <StyledHeader {...others} className={className}>\n {children}\n </StyledHeader>\n )\n}\n\nexport interface DrawerBodyProps {\n className?: string\n}\n\nfunction DrawerBody({\n children,\n className,\n ...others\n}: PropsWithChildren<DrawerHeaderProps>): JSX.Element {\n return (\n <StyledBody {...others} className={className}>\n {children}\n </StyledBody>\n )\n}\n\nexport interface DrawerFooterProps {\n className?: string\n}\n\nfunction DrawerFooter({\n children,\n className,\n ...others\n}: PropsWithChildren<DrawerFooterProps>): JSX.Element {\n return (\n <StyledFooter {...others} className={className}>\n {children}\n </StyledFooter>\n )\n}\n\nfunction Drawer({\n className,\n children,\n open,\n onClose,\n onClickOutside,\n ...others\n}: DrawerProps): JSX.Element {\n const [invisible, setInvisible] = useState(!open)\n const ref = useRef<HTMLElement>(null)\n\n function handleTransitionEnd() {\n if (!open) {\n setInvisible(true)\n }\n }\n\n useEffect(() => {\n if (open) {\n setInvisible(false)\n }\n }, [open])\n\n useEffect(() => {\n const currentRef = ref.current\n\n if (currentRef && onClickOutside) {\n const handleClick = (event: MouseEvent) => {\n const hasClickedOutside = currentRef.isSameNode(event.target as Element)\n\n if (hasClickedOutside) onClickOutside()\n }\n\n currentRef.addEventListener('mouseup', handleClick)\n\n return () => currentRef.removeEventListener('mouseup', handleClick)\n }\n }, [onClickOutside])\n\n return ReactDOM.createPortal(\n <StyledAside open={!invisible} ref={ref}>\n <StyledSection\n {...others}\n className={className}\n open={open}\n onTransitionEnd={handleTransitionEnd}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"drawer\"\n >\n {Boolean(onClose) && <CloseButton onClick={onClose} aria-label=\"close\" />}\n {children}\n </StyledSection>\n </StyledAside>,\n document.body\n )\n}\n\nDrawer.Header = DrawerHeader\nDrawer.Body = DrawerBody\nDrawer.Footer = DrawerFooter\n\nexport default Drawer\n","/* eslint-disable @typescript-eslint/no-empty-function */\nimport React, { useCallback, useState, createContext, useContext } from 'react'\nimport type { PropsWithChildren } from 'react'\n\nimport { createSelectable } from 'hooks/useSelectable'\nimport type { Selectable, SelectableState, SelectableKeyType } from 'hooks/useSelectable'\nimport type { useSelectableProps } from 'hooks/useSelectable/useSelectable.types'\n\nexport type TableSelectableRow = Selectable & {\n value?: string | number | boolean\n}\n\nexport type TableSelectionSelectable<T extends Selectable = TableSelectableRow> = Omit<\n useSelectableProps<T>,\n 'onChange'\n> & {\n onChange: (selected: T[]) => void\n}\n\nexport type TableSelectionConfig<T extends Selectable = TableSelectableRow> =\n | boolean\n | Partial<TableSelectionSelectable<T>>\n\nexport interface TableSelectionCore<T extends Selectable = TableSelectableRow> {\n selected?: SelectableState<T>\n config: TableSelectionSelectable<T>\n allRowsAreSelected: boolean\n toggle: (key: T) => void\n toggleAll: () => void\n clear: () => void\n register: (key?: T) => void\n}\n\nfunction getSelectableProps<T extends Selectable = TableSelectableRow>(\n config?: TableSelectionConfig<T>\n): TableSelectionSelectable<T> {\n const defaults: TableSelectionSelectable<T> = {\n multiple: true,\n selected: [],\n onChange() {},\n adapters: {\n generic: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getKey: (row) => row.value as string,\n },\n },\n }\n\n if (!config || config === true) return defaults\n\n return {\n ...defaults,\n ...config,\n }\n}\n\nexport function useTableSelectionCore<T extends Selectable>(\n config?: TableSelectionConfig<T>\n): TableSelectionCore<T> {\n const { useSelectable } = createSelectable<T>()\n\n const [registered, setRegistered] = useState<T[]>([])\n\n const selectableProps = getSelectableProps(config)\n\n const { selected, toggle, select, unselect, clear } = useSelectable({\n ...selectableProps,\n onChange(value) {\n return selectableProps.onChange(value ? [...value.values()] : [])\n },\n })\n\n const allRowsAreSelected = selected.size === registered.length\n\n const getKey = useCallback(\n (row: T): SelectableKeyType => {\n const { adapters } = selectableProps\n\n const adapter = adapters?.[row._type || 'generic']\n const key = adapter?.getKey(row) ?? ''\n\n return key\n },\n [selectableProps]\n )\n\n const register = useCallback(\n (row?: T) => {\n if (!row) return\n\n const key = getKey(row)\n\n setRegistered((prev) => {\n const alreadyRegistered = prev.some((prevRow) => getKey(prevRow) === key)\n\n if (alreadyRegistered) {\n return prev\n }\n\n return [...prev, row]\n })\n },\n [getKey]\n )\n\n function toggleAll() {\n if (allRowsAreSelected) {\n registered.forEach((row) => {\n const key = getKey(row)\n\n if (!key) return\n\n unselect(key)\n })\n } else {\n registered.forEach((row) => select(row))\n }\n }\n\n return {\n allRowsAreSelected,\n config: selectableProps,\n selected,\n toggle,\n toggleAll,\n clear,\n register,\n }\n}\n\nexport const TableSelectionContext = createContext<TableSelectionCore>({\n selected: undefined,\n config: {} as TableSelectionSelectable,\n allRowsAreSelected: false,\n toggle() {},\n toggleAll() {},\n clear() {},\n register() {},\n})\n\ntype TableSelectionProviderProps = PropsWithChildren<{\n selection?: TableSelectionConfig\n}>\n\nexport function TableSelectionProvider({\n children,\n selection,\n}: TableSelectionProviderProps): JSX.Element {\n const selectionCore = useTableSelectionCore(selection)\n\n return (\n <TableSelectionContext.Provider value={selectionCore}>\n {children}\n </TableSelectionContext.Provider>\n )\n}\n\nexport function useTableSelection<\n T extends Selectable = TableSelectableRow,\n>(): TableSelectionCore<T> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return useContext(TableSelectionContext)\n}\n\ntype TableSelectionHook<T extends Selectable = TableSelectableRow> = {\n values: T[]\n clear: TableSelectionCore<T>['clear']\n}\n\nexport function useSelection<T extends Selectable = TableSelectableRow>(): TableSelectionHook<T> {\n const { selected, clear } = useTableSelection<T>()\n\n return {\n values: selected ? [...selected.values()] : [],\n clear,\n }\n}\n\nexport function isCellSelected<T extends Selectable>(\n value: T,\n selectedRows: SelectableState<T>,\n config: TableSelectionSelectable<T>\n): boolean {\n const { adapters } = config\n\n const adapter = adapters?.[value._type || 'generic']\n const key = adapter?.getKey(value)\n\n if (!key) return false\n\n return selectedRows.has(key)\n}\n\nexport function useIsCellSelected<T extends Selectable = TableSelectableRow>(value?: T): boolean {\n const { selected, config } = useTableSelection<T>()\n\n if (!value || !selected) return false\n\n return isCellSelected(value, selected, config)\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport { Box as DefaultBox } from 'components/Layout'\nimport type { SortDirection } from './useSortBy.types'\n\nimport type { BoxProps } from 'components/Layout/Box'\n\ninterface TableSortHandleProps extends BoxProps {\n order?: SortDirection | null\n}\n\nconst Box = styled(DefaultBox)`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n\n margin-left: ${token('space-xs')};\n`\n\nfunction TableSortHandle({ order, ...rest }: TableSortHandleProps): JSX.Element | null {\n return (\n <Box {...rest} padding=\"none\">\n <Icon name={order != null ? `sort-${order}` : 'sort'} width=\"0.75em\" height=\"0.85em\" />\n </Box>\n )\n}\n\nexport default TableSortHandle\n","import React, { Children, Fragment, isValidElement, useEffect, useState } from 'react'\nimport styled, { css } from 'styled-components'\nimport type { ReactNode } from 'react'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport { getToken as token } from 'theming'\nimport { conditional, whenProps, prop } from 'tools/index'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport { Checkbox } from 'components/Checkbox'\nimport { Radio } from 'components/Radio'\nimport { Link } from 'components/Link'\nimport { Text } from 'components/Text'\nimport { Dropdown } from 'components/Dropdown'\nimport { Layout } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport { Children as InternalButton } from 'components/Button/Button'\n\nimport {\n isCellSelected,\n TableSelectionProvider,\n useIsCellSelected,\n useSelection,\n useTableSelection,\n type TableSelectableRow,\n} from './Selection'\nimport TableSortHandle from './TableSortHandle'\n\nimport type {\n TableProps,\n TableSectionProps,\n TableRowProps,\n TableCellProps,\n TableCaptionProps,\n TableSelectionProps,\n SelectionCellProps,\n TablePickerItemProps,\n TablePickerProps,\n ExpandableTableRowProps,\n} from './Table.types'\nimport type { Selectable } from '../../hooks/useSelectable'\n\nconst StyledTableBody = styled.tbody`\n /* placeholder */\n`\n\nconst StyledTableFoot = styled.tfoot`\n box-shadow: 0 -1px 0 ${token('color-neutral')};\n`\n\nconst StyledTableCaption = styled.caption<{ $position?: 'top' | 'bottom' }>`\n ${conditional({\n ['border-bottom']: whenProps([{ $position: ['top', undefined] }]),\n ['border-top']: whenProps({ $position: 'bottom' }),\n })}: solid 1px ${token('color-neutral-lighter')};\n\n ${conditional({\n ['margin-bottom']: whenProps([{ $position: ['top', undefined] }]),\n ['margin-top']: whenProps({ $position: 'bottom' }),\n })}: ${token('space-m')};\n padding: ${token('space-m')} ${token('space-s')};\n\n text-align: left;\n\n caption-side: ${prop('$position', 'top')};\n background-color: ${token('color-neutral-white')};\n`\n\nconst StyledCell = css<{ alignment?: string }>`\n color: ${token('color-neutral-darker')};\n text-align: ${prop('alignment', 'left')};\n vertical-align: middle;\n`\n\nconst StyledTableCell = styled.td<{ alignment?: string; format?: string }>`\n ${StyledCell}\n\n font-family: ${conditional({\n 'font-family-monospace': whenProps({ format: ['number', 'currency'] }),\n 'font-family-default': whenProps({ format: 'default' }),\n })};\n`\n\nconst StyledTableHeadCell = styled.th<{\n alignment?: string\n clickable: boolean\n}>`\n ${StyledCell}\n\n font-family: ${token('font-family-default')};\n\n font-weight: ${token('font-weight-bold')};\n\n text-transform: capitalize;\n\n cursor: ${conditional({\n pointer: whenProps({ clickable: true }),\n normal: whenProps({ clickable: false }),\n })};\n`\n\nconst StyledTableHead = styled.thead`\n border: 1px solid ${token('color-neutral-lighter')};\n\n ${StyledTableCell} {\n padding: ${token('space-s')};\n\n font-weight: ${token('font-weight-bold')};\n text-transform: capitalize;\n }\n`\n\nconst StyledTableRow = styled.tr<{ selected: boolean; isExpanded: boolean }>`\n ${StyledTableHead} > & {\n background-color: ${token('color-neutral-lightest')};\n }\n\n ${StyledTableFoot} > & {\n background-color: ${token('color-neutral-lightest')};\n }\n\n background-color: ${conditional({\n 'table-row-selected-color': whenProps({ selected: true }),\n 'color-neutral-white': whenProps({ selected: false }),\n })};\n ${hoverable`\n background-color: ${conditional({\n 'table-row-selected-color': whenProps({ selected: true }),\n })} !important;\n `}\n\n border-color: ${token('color-neutral-lighter')};\n border-width: 1px;\n border-top-style: solid;\n border-right-style: solid;\n border-left-style: solid;\n border-bottom-style: ${conditional({\n solid: whenProps({ isExpanded: false }),\n hidden: whenProps({ isExpanded: true }),\n })};\n\n box-shadow: ${conditional({\n '0px 3px 3px 0px #C1CED9': whenProps({ isExpanded: true }),\n none: whenProps({ isExpanded: false }),\n })};\n\n ${StyledTableBody} > & {\n ${hoverable`\n background-color: ${token('color-neutral-lighter')};\n `}\n\n ${focusable`\n box-shadow: inset ${token('shadow-glow-primary')};\n `}\n }\n`\n\nconst StyledExpandableContentRow = styled.tr`\n border-color: ${token('color-neutral-lighter')};\n border-width: 1px;\n border-top-style: hidden;\n border-right-style: solid;\n border-left-style: solid;\n border-bottom-style: solid;\n`\n\nconst StyledTable = styled.table<{ scale?: string }>`\n width: 100%;\n\n white-space: nowrap;\n\n background-color: ${token('color-neutral-lightest')};\n\n border-collapse: collapse;\n\n ${StyledTableBody} ${StyledTableRow} {\n height: ${conditional({\n '24px': whenProps({ scale: 'small' }),\n '48px': whenProps({ scale: 'default' }),\n '80px': whenProps({ scale: 'large' }),\n })};\n }\n\n ${StyledTableHeadCell},\n ${StyledTableCell} {\n padding: ${conditional({\n 'space-xs': whenProps({ scale: 'small' }),\n 'space-s': whenProps({ scale: ['default', 'large'] }),\n })};\n\n font-size: ${conditional({\n 'font-size-5': whenProps({ scale: 'small' }),\n 'font-size-4': whenProps({ scale: ['default', 'large'] }),\n })};\n }\n`\n\nconst RotatableIcon = styled(Icon)<{ $rotate: boolean }>`\n ${conditional({\n 'transform: rotate(90deg);': whenProps({ $rotate: true }),\n })}\n`\n\nfunction Table<T extends TableSelectableRow>({\n children,\n selection,\n scale = 'default',\n ...others\n}: TableProps<T>): JSX.Element {\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <TableSelectionProvider selection={selection}>\n <StyledTable scale={scale} {...others}>\n {children}\n </StyledTable>\n </TableSelectionProvider>\n )\n}\n\nconst TableCaptionInner = styled.div<{ $height?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: ${prop('$height', 36)}px;\n`\n\nfunction TableCaption({ children, position, height }: TableCaptionProps): JSX.Element {\n return (\n <StyledTableCaption $position={position}>\n <TableCaptionInner $height={height}>{children}</TableCaptionInner>\n </StyledTableCaption>\n )\n}\n\nfunction TableHead({ children, ...others }: TableSectionProps): JSX.Element {\n return <StyledTableHead {...others}>{children}</StyledTableHead>\n}\n\nfunction TableBody({ children, ...others }: TableSectionProps): JSX.Element {\n return <StyledTableBody {...others}>{children}</StyledTableBody>\n}\n\nfunction TableCell({\n children,\n alignment = 'left',\n format = 'default',\n ...others\n}: TableCellProps): JSX.Element {\n return (\n <StyledTableCell alignment={alignment} format={format} {...others}>\n {children}\n </StyledTableCell>\n )\n}\n\nfunction SelectionCell<T extends TableSelectableRow>({\n value,\n ...props\n}: SelectionCellProps<T>): JSX.Element {\n const { toggle, register, config } = useTableSelection()\n\n const selected = useIsCellSelected(value)\n\n const action = () => toggle(value as T)\n\n useEffect(() => {\n register(value)\n }, [value, register])\n\n if (props.children) {\n return (\n <TableCell>\n {props.children({\n selected,\n toggle: action,\n })}\n </TableCell>\n )\n }\n\n const Input = config.multiple ? Checkbox : Radio\n\n return (\n <TableCell {...props}>\n {value ? <Input checked={selected} scale=\"small\" onChange={action} /> : null}\n </TableCell>\n )\n}\n\nfunction SelectionHeadCell<T extends TableSelectableRow>(\n props: SelectionCellProps<T>\n): JSX.Element {\n const { allRowsAreSelected, toggleAll, config } = useTableSelection()\n\n const selected = allRowsAreSelected\n const action = () => toggleAll()\n\n if (props.children) {\n return <TableHeadCell {...props}>{props.children({ selected, toggle: action })}</TableHeadCell>\n }\n\n const Input = config.multiple ? Checkbox : Fragment\n\n return (\n <TableHeadCell {...props}>\n <Input checked={selected} scale=\"small\" onChange={action} />\n </TableHeadCell>\n )\n}\n\nfunction TableRow({ children, ...others }: TableRowProps): JSX.Element {\n const selected = useIsRowSelected(children)\n\n return (\n <StyledTableRow {...others} selected={selected} isExpanded={false}>\n {children}\n </StyledTableRow>\n )\n}\n\nfunction ExpandableTableRow({\n expandableContent,\n expanded,\n leading: propsLeading,\n children,\n onExpandedChange,\n initialExpanded = false,\n ...others\n}: ExpandableTableRowProps): JSX.Element {\n const [openState, setOpenState] = useState(initialExpanded)\n\n const selected = useIsRowSelected(children)\n\n const open = expanded ?? openState\n const isExpanded = Boolean(open && expandableContent)\n const colSpan = Array.isArray(children) ? children.length + 1 : 1\n\n let leading: ReactNode = <RotatableIcon name=\"caret-right\" $rotate={open} />\n if (propsLeading) {\n leading = isFunction(propsLeading) ? propsLeading(open) : propsLeading\n }\n\n function toggle() {\n if (!expandableContent) return\n\n onExpandedChange?.(!open)\n setOpenState(!open)\n }\n\n return (\n <>\n <StyledTableRow {...others} onClick={toggle} isExpanded={isExpanded} selected={selected}>\n <TableCell>{expandableContent && leading}</TableCell>\n {children}\n </StyledTableRow>\n {isExpanded && (\n <StyledExpandableContentRow>\n <StyledTableCell colSpan={colSpan}>{expandableContent}</StyledTableCell>\n </StyledExpandableContentRow>\n )}\n </>\n )\n}\n\nfunction TableHeadCell({\n alignment = 'left',\n children,\n onClick,\n ...others\n}: TableCellProps): JSX.Element {\n return (\n <StyledTableHeadCell\n clickable={onClick != null}\n alignment={alignment}\n onClick={onClick}\n {...others}\n >\n <Layout.Group space=\"xs\" align=\"center\">\n {children}\n </Layout.Group>\n </StyledTableHeadCell>\n )\n}\n\nconst ActionsWrapper = styled.div`\n display: flex;\n gap: ${token('space-s')};\n margin-left: auto;\n`\n\nfunction TableSelectionActions({ buttons, children, ...others }: TableSelectionProps): JSX.Element {\n const { values, clear } = useSelection()\n\n return (\n <ActionsWrapper {...others}>\n {values.length > 0 ? (\n <>\n {buttons.map((Action, i) => (\n <Action key={i} values={values} />\n ))}\n <Link\n onClick={(e) => {\n e.preventDefault()\n clear()\n }}\n >\n <Text variant=\"link\">CANCEL</Text>\n </Link>\n </>\n ) : (\n children\n )}\n </ActionsWrapper>\n )\n}\n\nconst StyledPickerTrigger = styled(Dropdown.Trigger.Button)`\n padding: 0;\n\n ${InternalButton} {\n margin: ${token('space-2xs')};\n }\n`\n\nfunction TablePickerItem<T>({\n option,\n checked,\n children,\n ...props\n}: TablePickerItemProps<T>): JSX.Element {\n return (\n <Dropdown.Item\n leading={\n checked ? (\n <Icon name=\"check\" size=\"16\" color=\"neutral-darker\" />\n ) : (\n <Layout.Box padding=\"s\" />\n )\n }\n role=\"option\"\n aria-selected={checked ? 'true' : 'false'}\n {...props}\n >\n {children ||\n (option &&\n (option.option ||\n option.title ||\n (typeof option.key !== 'symbol' ? option.key : null))) ||\n 'Column'}\n </Dropdown.Item>\n )\n}\n\nconst TriggerIcon = styled(Icon).attrs({\n name: 'dots-horizontal',\n size: '12',\n color: 'neutral-darker',\n})`\n transform: rotate(90deg);\n`\n\nfunction TablePicker<T>({\n value,\n onChange,\n options,\n align,\n children,\n trigger: propsTrigger,\n ...props\n}: TablePickerProps<T>): JSX.Element {\n return (\n <Dropdown align={align}>\n <StyledPickerTrigger trailing={null} scale=\"small\" {...props}>\n {propsTrigger !== undefined ? (\n ({ expanded }) => (isFunction(propsTrigger) ? propsTrigger(expanded) : propsTrigger)\n ) : (\n <TriggerIcon />\n )}\n </StyledPickerTrigger>\n <Dropdown.Menu role=\"listbox\">\n {children ||\n options?.map((option, i) => (\n <TablePickerItem\n key={i}\n option={option}\n checked={option.key === value?.key}\n onClick={() => onChange?.(option)}\n />\n ))}\n </Dropdown.Menu>\n </Dropdown>\n )\n}\n\nfunction useIsRowSelected(children: ReactNode): boolean {\n const { selected, config } = useTableSelection()\n\n if (!selected) return false\n\n const arrChildren = Children.toArray(children)\n\n const selectionCellChild = arrChildren.find((child) => {\n return isValidElement(child) && child.type === SelectionCell\n })\n\n if (!selectionCellChild) return false\n\n const { value } = (selectionCellChild as React.ReactElement).props as SelectionCellProps\n\n if (!value) return false\n\n return isCellSelected(value, selected, config)\n}\n\nTable.Head = TableHead\nTable.Body = TableBody\nTable.Row = TableRow\nTable.Cell = TableCell\nTable.HeadCell = TableHeadCell\nTable.Foot = StyledTableFoot\nTable.Caption = TableCaption\nTable.Selection = {\n Actions: TableSelectionActions,\n Cell: SelectionCell,\n HeadCell: SelectionHeadCell,\n}\nTable.ExpandableRow = ExpandableTableRow\nTable.SortHandle = TableSortHandle\nTablePicker.Item = TablePickerItem\nTable.Picker = TablePicker\n\nexport { useSelection }\n\nexport default Table\n","import React from 'react'\nimport type { PropsWithChildren } from 'react'\n\nimport { BaseLink } from 'components/Link'\nimport styled from 'styled-components'\n\nexport type LogoProps = PropsWithChildren<{\n url: string\n className?: string\n}>\n\nfunction Logo({ url, className, children }: LogoProps): JSX.Element {\n return (\n <BaseLink className={className} href={url}>\n {children}\n </BaseLink>\n )\n}\n\nexport default styled(Logo)<LogoProps>({})\n","import React from 'react'\nimport type { PropsWithChildren, ReactNode, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport { Dropdown, DropdownMenu, DropdownMenuItem, DropdownTrigger } from 'components/Dropdown'\nimport { BaseLink } from 'components/Link'\nimport useID from 'hooks/useID'\nimport ellipsizable from 'styles/ellipsizable'\nimport typography from 'styles/typography'\nimport { Popover } from 'components/Popover'\n\nexport const MenuDropdown = styled(Dropdown)({})\n\nexport const MenuDropdownSeparator = styled.hr`\n margin: ${token('space-s')} ${token('space-m')};\n\n color: ${token('top-navigation-dropdown-separator-color')};\n`\n\nconst MenuDropdownTrigger = styled(DropdownTrigger.Handle)`\n color: ${token('top-navigation-dropdown-trigger-color')};\n`\n\nexport const MenuDropdownLabel = styled.label`\n ${transition()}\n\n align-items: center;\n display: flex;\n\n ${typography('body-bold', { color: 'top-navigation-item-color' })}\n\n cursor: pointer;\n\n ${focusable`\n color: ${token('top-navigation-item-color--hover')};\n `}\n`\n\nconst Ellipsizable = styled.span<{ $max: number }>`\n ${ellipsizable()}\n\n max-width: ${(props) => props.$max}px;\n`\n\nconst IconWrapper = styled.div`\n width: ${token('space-m')};\n`\n\nconst MenuDropdownSubItemLink = styled(BaseLink)`\n align-items: stretch;\n ${typography('body', { color: 'top-navigation-dropdown-subitem-color' })}\n\n ${hoverable`\n text-decoration: none;\n font-weight: inherit;\n `}\n\n ${focusable`\n > * {\n background-color: ${token('color-neutral-lighter')}\n }\n `}\n`\n\ntype MenuDropdownSubItemProps = HTMLAttributes<HTMLElement> & {\n label: string\n url?: string\n icon?: ReactNode\n separator?: boolean\n}\n\nexport function MenuDropdownSubItem({\n icon,\n label,\n url,\n ...rest\n}: MenuDropdownSubItemProps): JSX.Element {\n return url ? (\n <MenuDropdownSubItemLink {...rest} href={url}>\n <DropdownMenuItem tabIndex={-1} leading={<IconWrapper>{icon}</IconWrapper>}>\n {label}\n </DropdownMenuItem>\n </MenuDropdownSubItemLink>\n ) : (\n <DropdownMenuItem leading={<IconWrapper>{icon}</IconWrapper>} {...rest}>\n {label}\n </DropdownMenuItem>\n )\n}\n\nexport type MenuItemDropdownProps = PropsWithChildren<{\n label: string\n}>\n\nfunction MenuItemDropdown(props: MenuItemDropdownProps): JSX.Element {\n const { label, children, ...rest } = props\n const labelId = useID()\n\n return (\n <MenuDropdown align=\"end\" key={label}>\n <Popover.Reference>\n <MenuDropdownLabel>\n <Ellipsizable $max={120} id={labelId}>\n {label}\n </Ellipsizable>\n <MenuDropdownTrigger {...rest} tabIndex={0} aria-labelledby={labelId} />\n </MenuDropdownLabel>\n </Popover.Reference>\n <DropdownMenu>{children}</DropdownMenu>\n </MenuDropdown>\n )\n}\n\nexport { MenuItemDropdown }\n","import React from 'react'\nimport type { ReactNode } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport { BaseLink } from 'components/Link'\nimport conditional, { whenProps } from 'tools/conditional'\nimport typography from 'styles/typography'\n\nconst MenuLink = styled(BaseLink)<{ hasIcon?: boolean }>`\n ${typography('body-bold')}\n\n color: ${conditional({\n 'top-navigation-item-icon-color': whenProps({ hasIcon: true }),\n 'top-navigation-item-color': whenProps({ hasIcon: false }),\n })};\n\n ${hoverable`\n text-decoration: none;\n color: ${token('top-navigation-item-color--hover')};\n `}\n\n ${focusable`\n color: ${token('top-navigation-item-color--hover')};\n `}\n`\n\ntype MenuItemIconProps = {\n label: string\n icon?: ReactNode\n url?: string\n}\n\nexport function MenuItemIcon({ url, icon, label, ...rest }: MenuItemIconProps): JSX.Element {\n if (icon) {\n return (\n <MenuLink {...rest} href={url} hasIcon title={label}>\n {icon}\n </MenuLink>\n )\n }\n\n return (\n <MenuLink {...rest} href={url}>\n {label}\n </MenuLink>\n )\n}\n","import React from 'react'\nimport type { PropsWithChildren, ReactNode, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport {\n MenuItemDropdown,\n MenuDropdown,\n MenuDropdownSubItem,\n MenuDropdownSeparator,\n} from './MenuItemDropdown'\nimport { MenuItemIcon } from './MenuItemIcon'\nimport conditional, { whenProps } from 'tools/conditional'\n\ntype MenuItemProps = HTMLAttributes<HTMLElement> &\n PropsWithChildren<{\n label: string\n icon?: ReactNode\n url?: string\n }>\n\nexport type MenuProps = PropsWithChildren<{\n align?: 'left' | 'right'\n}>\n\nconst MenuContainer = styled.nav<{ $align: MenuProps['align'] }>`\n ${conditional({\n 'margin-left: auto;': whenProps({ $align: 'right' }),\n })}\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${token('space-m')};\n }\n\n & > * + ${MenuDropdown} {\n margin-left: ${token('space-xl')};\n }\n`\n\nfunction MenuItem(props: MenuItemProps): JSX.Element {\n if (props.children) {\n return <MenuItemDropdown {...props} />\n }\n\n return <MenuItemIcon {...props} />\n}\n\nfunction Menu(props: MenuProps): JSX.Element {\n const { align = 'left' } = props\n\n return <MenuContainer $align={align}>{props.children}</MenuContainer>\n}\n\nMenu.Item = MenuItem\nMenu.SubItem = MenuDropdownSubItem\nMenu.Separator = MenuDropdownSeparator\n\nexport default Menu\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\n\nexport type OpenSideNavButtonProps = {\n className?: string\n onClick: () => void\n}\n\nconst Container = styled.button`\n margin-right: ${token('space-2xl')};\n\n background: none;\n border: none;\n cursor: pointer;\n`\n\nfunction OpenSideNavButton({ className, onClick }: OpenSideNavButtonProps): JSX.Element {\n return (\n <Container className={className} onClick={onClick}>\n <Icon name=\"burguer-menu\" size={24} data-testid=\"toggle-sidenav\" />\n </Container>\n )\n}\n\nexport default styled(OpenSideNavButton)<OpenSideNavButtonProps>({})\n","import React from 'react'\nimport type { ReactNode } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Logo } from './Logo'\nimport { Menu } from './Menu'\nimport { MenuDropdownLabel } from './Menu/MenuItemDropdown'\nimport { OpenSideNavButton } from './OpenSideNavButton'\n\n/* We need to remove the 8px padding-right that DropdownTrigger adds (because of\n BaseStyledButton), in order to keep it always 40px to the right, but only when\n it's the last child. DropdownTigger isn't a StyledComponent so we need to use\n MenuDropdownLabel here since it's the one that wraps DropdownTigger */\nconst removeRightPadding = css`\n > :last-child ${MenuDropdownLabel} {\n margin-right: -${token('space-m')};\n }\n`\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n height: ${token('top-navigation-height')};\n padding: 0 ${token('space-2xl')};\n\n background-color: ${token('top-navigation-background-color')};\n border-bottom: solid 1px ${token('top-navigation-border-color')};\n\n ${removeRightPadding}\n`\n\nexport interface TopNavigationProps {\n children?: ReactNode\n}\n\nfunction TopNavigation({ children }: TopNavigationProps): JSX.Element {\n return <Container>{children}</Container>\n}\n\nTopNavigation.Logo = Logo\nTopNavigation.Menu = Menu\nTopNavigation.OpenSideNavButton = OpenSideNavButton\n\nexport default TopNavigation\n","import React, { FC, Fragment } from 'react'\nimport styled from 'styled-components'\n\nimport type { EmptyStateWithIconProps } from './EmptyState.types'\n\nimport { Stack, Group } from 'components/Layout'\nimport Text from 'components/Text/Text'\nimport Button from 'components/Button/Button'\n\nconst VerticalWrapper = styled(Stack)`\n text-align: center;\n`\n\nconst EmptyStateWithIcon: FC<EmptyStateWithIconProps> = ({\n variant = 'card',\n icon,\n title,\n action,\n children,\n ...props\n}: EmptyStateWithIconProps) => {\n const isHorizontal = variant === 'horizontal-card'\n const Wrapper = isHorizontal ? Group : VerticalWrapper\n\n return (\n <Wrapper {...props} space={isHorizontal ? 's' : 'xs'} align=\"center\" justify=\"center\">\n {children || (\n <Fragment>\n {icon}\n <Text variant=\"caption-bold\">{title}</Text>\n {action && (\n <Button variant=\"primary\" scale=\"small\" {...action}>\n {action.label}\n </Button>\n )}\n </Fragment>\n )}\n </Wrapper>\n )\n}\n\nexport default EmptyStateWithIcon\n","import React, { FC } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nimport type { IllustrationProps } from './EmptyState.types'\n\nconst Wrapper = styled.div<Pick<IllustrationProps, 'scale'>>`\n & > img:first-of-type,\n SVG:first-of-type {\n height: ${conditional({\n '240px': whenProps({ scale: 'large' }),\n '120px': whenProps({ scale: 'default' }),\n })};\n object-fit: cover;\n }\n`\n\nexport const Illustration: FC<IllustrationProps> = ({\n illustration,\n scale,\n ...props\n}: IllustrationProps) => (\n <Wrapper scale={scale} {...props}>\n {typeof illustration === 'string' ? <img src={illustration} alt=\"\" /> : illustration}\n </Wrapper>\n)\n\nexport default Illustration\n","import React, { FC, Fragment } from 'react'\nimport styled from 'styled-components'\n\nimport { Stack } from 'components/Layout'\nimport Text from 'components/Text/Text'\nimport Button from 'components/Button/Button'\n\nimport type { EmptyStateWithIllustrationProps } from './EmptyState.types'\nimport Illustration from './Illustration'\n\nconst Wrapper = styled(Stack)`\n max-width: 320px;\n\n text-align: center;\n`\n\nconst EmptyStateWithIllustration: FC<EmptyStateWithIllustrationProps> = ({\n variant = 'page',\n illustration,\n title,\n description,\n action,\n children,\n ...props\n}: EmptyStateWithIllustrationProps) => {\n const isPageVariant = variant === 'page'\n\n return (\n <Wrapper {...props} align=\"center\" justify=\"center\" space=\"m\">\n {children || (\n <Fragment>\n {illustration && (\n <Illustration illustration={illustration} scale={isPageVariant ? 'large' : 'default'} />\n )}\n {(title || description) && (\n <Stack space=\"xs\">\n {title && (\n <Text\n variant={isPageVariant ? 'heading-sm-bold' : 'body-bold'}\n color={isPageVariant ? 'color-neutral-darkest' : 'color-neutral-darker'}\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n data-testid=\"empty-state-description\"\n variant={isPageVariant ? 'body' : 'caption'}\n color=\"color-neutral-darkest\"\n >\n {description}\n </Text>\n )}\n </Stack>\n )}\n {action && (\n <Button\n className=\"empty-state-action\"\n variant=\"primary\"\n scale={isPageVariant ? 'default' : 'small'}\n {...action}\n >\n {action.label}\n </Button>\n )}\n </Fragment>\n )}\n </Wrapper>\n )\n}\n\nexport default EmptyStateWithIllustration\n","import React from 'react'\n\nimport type {\n EmptyStateProps,\n EmptyStateWithIconProps,\n EmptyStateWithIllustrationProps,\n} from './EmptyState.types'\n\nimport EmptyStateWithIcon from './EmptyStateWithIcon'\nimport EmptyStateWithIllustration from './EmptyStateWithIllustration'\nimport Illustration from './Illustration'\n\nconst EmptyState = (props: EmptyStateProps): JSX.Element => {\n if (['card', 'horizontal-card'].includes(props.variant)) {\n return <EmptyStateWithIcon {...(props as EmptyStateWithIconProps)} />\n }\n return <EmptyStateWithIllustration {...(props as EmptyStateWithIllustrationProps)} />\n}\n\nEmptyState.Illustration = Illustration\n\nexport default EmptyState\n","export function aliased<T>(aliasMap: Record<number | string, T>, alias: number | string): T {\n return aliasMap[String(alias).toLowerCase()]\n}\n\nexport const MONTH_BY_ALIAS = {\n 0: 'january',\n jan: 'january',\n january: 'january',\n\n 1: 'february',\n feb: 'february',\n february: 'february',\n\n 2: 'march',\n mar: 'march',\n march: 'march',\n\n 3: 'april',\n apr: 'april',\n april: 'april',\n\n 4: 'may',\n may: 'may',\n\n 5: 'june',\n jun: 'june',\n june: 'june',\n\n 6: 'july',\n jul: 'july',\n july: 'july',\n\n 7: 'august',\n aug: 'august',\n august: 'august',\n\n 8: 'september',\n sep: 'september',\n september: 'september',\n\n 9: 'october',\n oct: 'october',\n october: 'october',\n\n 10: 'november',\n nov: 'november',\n november: 'november',\n\n 11: 'december',\n dec: 'december',\n december: 'december',\n}\n\nexport type CalendarMonthAlias = keyof typeof MONTH_BY_ALIAS\n\nexport type CalendarMonth = {\n name: string\n /**\n * Integer value representing the month, beginning with 0 for January to 11 for December.\n * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\n */\n index: number\n}\n\nexport const MONTH_BY_NAME: Record<string, CalendarMonth> = {\n january: {\n name: 'January',\n index: 0,\n },\n february: {\n name: 'February',\n index: 1,\n },\n march: {\n name: 'March',\n index: 2,\n },\n april: {\n name: 'April',\n index: 3,\n },\n may: {\n name: 'May',\n index: 4,\n },\n june: {\n name: 'June',\n index: 5,\n },\n july: {\n name: 'July',\n index: 6,\n },\n august: {\n name: 'August',\n index: 7,\n },\n september: {\n name: 'September',\n index: 8,\n },\n october: {\n name: 'October',\n index: 9,\n },\n november: {\n name: 'November',\n index: 10,\n },\n december: {\n name: 'December',\n index: 11,\n },\n}\n\nfunction getMonthByAlias(alias: CalendarMonthAlias): CalendarMonth {\n alias = aliased(MONTH_BY_ALIAS, alias) as CalendarMonthAlias\n\n return MONTH_BY_NAME[alias]\n}\n\nfunction getAllMonths() {\n return (Object.keys(MONTH_BY_NAME) as CalendarMonthAlias[]).map((alias) => {\n return getMonthByAlias(alias)\n })\n}\n\nfunction MonthHelper(alias: CalendarMonthAlias): {\n get(): CalendarMonth\n format(representation?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow'): string\n is(other: CalendarMonthAlias): boolean\n} {\n const month = getMonthByAlias(alias)\n\n return {\n get() {\n return month\n },\n /**\n * Follows same values available in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat.\n * * \"numeric\" (e.g., 3)\n * * \"2-digit\" (e.g., 03)\n * * \"long\" (e.g., March)\n * * \"short\" (e.g., Mar)\n * * \"narrow\" (e.g., M)\n */\n format(representation: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'long') {\n switch (representation) {\n case 'numeric':\n return String(month.index + 1)\n case '2-digit':\n return String(month.index + 1).padStart(2, '0')\n case 'short':\n return month.name.slice(0, 3)\n case 'narrow':\n return month.name.slice(0, 1)\n default:\n return month.name\n }\n },\n is(other: CalendarMonthAlias) {\n return (\n getMonthByAlias(other) != null &&\n aliased(MONTH_BY_ALIAS, alias) === aliased(MONTH_BY_ALIAS, other)\n )\n },\n }\n}\n\nMonthHelper.getAll = getAllMonths\n\nexport default MonthHelper\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport focusable from 'styles/focusable'\nimport disableable from 'styles/disableable'\nimport typography from 'styles/typography'\n\nimport type { ButtonProps } from 'components/Button'\n\nconst Button = styled(BaseButton)`\n user-select: none;\n\n ${typography(\n conditional({\n 'body-bold': whenProps({ 'aria-expanded': true }),\n body: whenProps({ 'aria-expanded': false }),\n })\n )};\n border-color: transparent;\n background-color: transparent;\n\n color: ${token('color-neutral-dark')};\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n `}\n\n ${disableable`\n pointer-events: none;\n opacity: 1;\n `}\n`\n\nconst Caret = styled(Icon)<{ $rotate: boolean }>`\n ${conditional({\n 'transform: rotate(180deg);': whenProps({ $rotate: true }),\n })}\n`\n\nfunction PickerModeToggle(\n props: Omit<ButtonProps & { expanded: boolean }, 'trailing'>\n): JSX.Element {\n const { expanded, disabled, ...others } = props\n\n return (\n <Button\n type=\"button\"\n {...others}\n aria-haspopup=\"true\"\n aria-expanded={expanded}\n disabled={disabled}\n trailing={!disabled && <Caret name=\"chevron-down\" size={16} $rotate={expanded} />}\n />\n )\n}\n\nexport default PickerModeToggle\n","import { isFunction } from '@loadsmart/utils-function'\nimport isEmpty from 'utils/toolset/isEmpty'\n\nexport type DateHelperOptions = {\n normalize?: boolean\n}\n\nexport const DEFAULT_OPTIONS: DateHelperOptions = {\n normalize: true,\n}\n\nexport type InputDate = string | number | Date\n\ntype Unit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond'\ntype Operator = '>=' | '>' | '=' | '<' | '<='\n\nexport type DateConstraint =\n | InputDate\n | [InputDate, InputDate]\n | [null, InputDate]\n | [InputDate, null]\n\nexport type FunctionConstraint = (day: CalendarDate) => boolean\n\nexport type CalendarConstraint = DateConstraint | FunctionConstraint\n\nexport interface CalendarDate {\n /**\n * Get `Date` object representing this date.\n * @returns {Date}\n */\n get(): Date\n /**\n * Get the year using Universal Coordinated Time (UTC).\n * @returns {number}\n */\n getYear(): number\n /**\n * Gets the month using Universal Coordinated Time (UTC).\n * @returns {number}\n */\n getMonth(): number\n /**\n * Get the day-of-the-month, using Universal Coordinated Time (UTC).\n * @returns {number}\n */\n getDate(): number\n /**\n * Get the time value in milliseconds.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @returns {number}\n */\n getTime(): number\n /**\n * Get the day of the week.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @returns {number}\n */\n getWeekday(): number\n /**\n * Get the hours value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @returns {number}\n */\n getHours(): number\n /**\n * Get the minutes value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @returns {number}\n */\n getMinutes(): number\n /**\n * Get the seconds value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @returns {number}\n */\n getSeconds(): number\n /**\n * Get the milliseconds value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @returns {number}\n */\n getMilliseconds(): number\n /**\n * Check if the current date matches **at least one** of the provided constraints.\n *\n * [!] Be aware that all dates in this comparison will be normalized to 12:00:00 (UTC).\n *\n * @param {...CalendarConstraint[]} constraintsArg\n * @returns {boolean}\n */\n matches(...constraints: CalendarConstraint[]): boolean\n /**\n * Set the given `value` to the `unit` property of this instance.\n * This function mutates the internal date instance.\n * @param {Unit} unit\n * @param {number} value\n * @returns {CalendarDate}\n */\n set(unit: Unit, value: number): CalendarDate\n /**\n * Return a copy of this instance, adding the given `value` to the `unit` property.\n * @param {Unit} unit\n * @param {number} value\n * @returns {CalendarDate}\n */\n add(unit: Unit, value: number): CalendarDate\n /**\n * Return a copy of this instance, subtracting the given `value` from the `unit` property.\n * @param {Unit} unit\n * @param {number} value\n * @returns {CalendarDate}\n */\n subtract(unit: Unit, value: number): CalendarDate\n /**\n * Compare this date with the given `other`.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @param {Operator} operator - type of comparison to be performed.\n * @param {CalendarDate} other - Other `CalendarDate` to compare with.\n * @param {Unit} [precision] - notice that the precision increases with the evaluated period, so year < month < day < hour < minute < second < millisecond. Default is 'day'.\n * @return {boolean} comparison result\n */\n is(operator: Operator, other: CalendarDate, precision?: string): boolean\n /**\n * Return this date as a string value in ISO format.\n * @returns {string}\n */\n toString(): string\n}\n\nexport type CalendarDateRange = [CalendarDate | null, CalendarDate | null]\n\n/**\n * Ideally, follow the date/time string formats:\n * * `YYYY-MM-DD`\n * * `YYYY-MM-DDTHH:mm:ss.sssZ`\n * * `YYYY-MM-DDTHH:mm:ss.sss+00:00`\n *\n * `dateArg` is expected to have timezone information or to be UTC.\n *\n * By default, we normalize the input date to 12:00:00 (UTC); this simplifies comparison of dates; be mindful\n * of this when using this helper for time relate logic.\n * You can disable this behavior by passing `options.normalize: false`.\n *\n * @param {InputDate} [dateArg]\n * @return {CalendarDate}\n */\nfunction DateHelper(dateArg?: InputDate, optionsArg = DEFAULT_OPTIONS): CalendarDate {\n const options = { ...DEFAULT_OPTIONS, ...optionsArg }\n const utcDate = (function normalizeToUTC() {\n let date = new Date()\n\n if (dateArg != null) {\n date = new Date(dateArg)\n }\n\n // create a date with local timezone based on the UTC input date\n const utcDate = new Date(\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n options.normalize ? 12 : date.getUTCHours(),\n options.normalize ? 0 : date.getUTCMinutes(),\n options.normalize ? 0 : date.getUTCSeconds(),\n options.normalize ? 0 : date.getUTCMilliseconds()\n )\n )\n\n return utcDate\n })()\n\n return {\n get() {\n return utcDate\n },\n getYear() {\n return utcDate.getUTCFullYear()\n },\n getMonth() {\n return utcDate.getUTCMonth()\n },\n getDate() {\n return utcDate.getUTCDate()\n },\n getTime() {\n return utcDate.getTime()\n },\n getWeekday() {\n return utcDate.getUTCDay()\n },\n getHours() {\n return utcDate.getUTCHours()\n },\n getMinutes() {\n return utcDate.getUTCMinutes()\n },\n getSeconds() {\n return utcDate.getUTCSeconds()\n },\n getMilliseconds() {\n return utcDate.getUTCMilliseconds()\n },\n matches(...constraints: CalendarConstraint[]): boolean {\n if (isEmpty(constraints)) {\n return false\n }\n\n const constraintEvaluators = constraints.map(getConstraintEvaluator)\n const date = DateHelper(utcDate)\n\n return constraintEvaluators.some((evaluator) => {\n return evaluator(date)\n })\n },\n add(unit: Unit, value: number) {\n return add(utcDate, unit, value)\n },\n subtract(unit: Unit, value: number) {\n return add(utcDate, unit, -1 * value)\n },\n set(unit: Unit, value: number) {\n const newValue = {\n year: utcDate.getUTCFullYear(),\n month: utcDate.getUTCMonth(),\n day: utcDate.getUTCDate(),\n hour: utcDate.getUTCHours(),\n minute: utcDate.getUTCMinutes(),\n second: utcDate.getUTCSeconds(),\n millisecond: utcDate.getUTCMilliseconds(),\n [unit]: value,\n }\n\n utcDate.setUTCFullYear(newValue.year)\n utcDate.setUTCMonth(newValue.month)\n utcDate.setUTCDate(newValue.day)\n utcDate.setUTCHours(newValue.hour)\n utcDate.setUTCMinutes(newValue.minute)\n utcDate.setUTCSeconds(newValue.second)\n utcDate.setUTCMilliseconds(newValue.millisecond)\n\n return this\n },\n is(operator: Operator, other: CalendarDate, precision?: Unit): boolean {\n function compare(a: number, b: number) {\n let result\n\n switch (operator) {\n case '>=':\n result = a >= b\n break\n case '>':\n result = a > b\n break\n case '<':\n result = a < b\n break\n case '<=':\n result = a <= b\n break\n default:\n result = a === b\n break\n }\n\n return result\n }\n\n return compare(\n getComparableDate(utcDate, precision),\n getComparableDate(other.get(), precision)\n )\n },\n toString(): string {\n return utcDate.toISOString()\n },\n }\n}\n\n/**\n * This method takes a date and a unit of precision and then normalizes the given date based on that precision.\n * The return will be the timestamp of the normalized date\n *\n * @example\n * ```js\n * getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'hour')) // returns 1665680400000\n *\n * // '2022-10-13T17:42:19.948Z' will be normalized to '2022-10-13T17:00:00.000Z'\n * // 1665680400000 is equal to: new Date('2022-10-13T17:00:00.000Z').getTime()\n * ```\n *\n * @param {Date} date\n * @param {Unit} precision\n * @returns {number}\n */\nexport function getComparableDate(date: Date, precision: Unit = 'day'): number {\n const DATE_ZERO = MIN_SUPPORTED_DATE.toString()\n const COMPARE_TO = {\n year: 4,\n month: 7,\n day: 10,\n hour: 13,\n minute: 16,\n second: 19,\n millisecond: 24,\n }\n const sliceIndex = COMPARE_TO[precision]\n\n if (sliceIndex == null) {\n throw new Error(`precision ${precision} is not supported`)\n }\n\n const normalizedPart = DATE_ZERO.slice(sliceIndex)\n const datePart = date.toISOString().slice(0, sliceIndex)\n const normalizedDate = `${datePart}${normalizedPart}`\n\n return new Date(normalizedDate).getTime()\n}\n\n/**\n * Constraints represent ranges of dates, inclusive in both ends.\n * Returns an array representing the initial and final timestamps (after the transformations applied by `DateHelper`).\n *\n * @example\n * ```js\n * // to represent a range that starts and ends in the same date\n * getConstraintRange(1643371200000) // returns [1643371200000, 1643371200000]\n * getConstraintRange([1643371200000, 1643371200000]) // returns [1643371200000, 1643371200000]\n * getConstraintRange('2022-01-28T12:00:00.000Z') // returns [1643371200000, 1643371200000]\n * getConstraintRange(['2022-01-28T12:00:00.000Z', '2022-01-28T12:00:00.000Z']) // returns [1643371200000, 1643371200000]\n *\n * // to represent a range that starts at one date and ends at another\n * getConstraintRange([1641038400000, 1643371200000]) // returns [1641038400000, 1643371200000]\n * getConstraintRange(['2022-01-01T12:00:00.000Z', '2022-01-28T12:00:00.000Z']) // returns [1641038400000, 1643371200000]\n *\n * // to represent a range that starts at one date and has no end\n * getConstraintRange([1641038400000, null]) // returns [1641038400000, `MAX_SUPPORTED_DATE`]\n * getConstraintRange(['2022-01-01T12:00:00.000Z', null]) // returns [1641038400000, `MAX_SUPPORTED_DATE`]\n *\n * // to represent a range that ends at one date and has no start\n * getConstraintRange([null, 1643371200000]) // returns [0, 1643371200000]\n * getConstraintRange([null, '2022-01-28T12:00:00.000Z']) // returns [0, 1643371200000]\n * ```\n * @param rangeArg\n * @returns\n */\nexport function getConstraintRange(rangeArg: DateConstraint): [number, number] {\n let range: [number, number]\n\n if (!Array.isArray(rangeArg)) {\n const timestamp = DateHelper(rangeArg).getTime()\n range = [timestamp, timestamp]\n } else {\n const rangeStart = rangeArg[0] != null ? DateHelper(rangeArg[0]) : MIN_SUPPORTED_DATE\n const rangeEnd = rangeArg[1] != null ? DateHelper(rangeArg[1]) : MAX_SUPPORTED_DATE\n\n range = [rangeStart.getTime(), rangeEnd.getTime()]\n }\n\n return range\n}\n\n/**\n * Add the given `value` to the provided `unit` of the provided `date`.\n * @param {Date} date - Date where the operation should be performed.\n * @param {Unit} unit - period\n * @param {number} value - value to be added\n * @returns {Date} new date after the operation.\n */\nfunction add(date: Date, unit: Unit, value: number): CalendarDate {\n const increment = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n [unit]: value,\n }\n\n const newDate = new Date(\n Date.UTC(\n date.getUTCFullYear() + increment.year,\n date.getUTCMonth() + increment.month,\n date.getUTCDate() + increment.day,\n date.getUTCHours() + increment.hour,\n date.getUTCMinutes() + increment.minute,\n date.getUTCSeconds() + increment.second,\n date.getUTCMilliseconds() + increment.millisecond\n )\n )\n\n // Do not normalize the clone since all units must be preserved.\n return DateHelper(newDate, { normalize: false })\n}\n\n/**\n * Wrap range constraint into a function and return a function constraint untouched.\n * @param {CalendarConstraint} constraint\n * @returns {(day: CalendarDate) => boolean}\n */\nexport function getConstraintEvaluator(\n constraint: CalendarConstraint\n): (day: CalendarDate) => boolean {\n if (isFunction(constraint)) {\n return constraint\n }\n\n const [start, end] = getConstraintRange(constraint)\n\n return function matches(day: CalendarDate): boolean {\n if (start > end) {\n throw new InvalidDateConstraintError([start, end])\n }\n\n return start <= day.getTime() && day.getTime() <= end\n }\n}\n\nexport function padded(value: number | string, maxLength = 2): string {\n return String(value).padStart(maxLength, '0')\n}\n\nexport class InvalidDateConstraintError extends Error {\n constructor([start, end]: [number, number]) {\n super(`Invalid constraint: [${start}, ${end}]`)\n }\n}\n\nexport const TODAY = DateHelper()\n\n/**\n * Maximum and minimum supported `Date`.\n * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps\n */\nexport const MIN_SUPPORTED_DATE = DateHelper(0, { normalize: false })\nexport const MAX_SUPPORTED_DATE = DateHelper(8.64e15 - 1)\n\nexport default DateHelper\n","import { useEffect, useState } from 'react'\n\nimport { useDidMount } from 'hooks/useDidMount'\nimport toArray from 'utils/toolset/toArray'\n\nimport DateHelper, { TODAY } from './Date.helper'\nimport type { useCalendarProps, useCalendarReturn, RenderableMonth } from './Calendar.types'\n\nfunction useCalendar(props: useCalendarProps): useCalendarReturn {\n const { constraints, onSelect, mode = 'single' } = props\n const amountOfMonthsToRender = mode == 'single' ? 1 : 2\n\n const didMount = useDidMount()\n const [selected, setSelected] = useState<ReturnType<typeof getSelectionPair>>(() =>\n getSelectionPair(props.selected)\n )\n const [renderableMonths, setRenderableMonths] = useState<ReturnType<typeof getRenderableMonths>>(\n () => {\n const month = props.month != null ? props.month : TODAY.getMonth()\n const year = props.year != null ? props.year : TODAY.getYear()\n\n return getRenderableMonths(year, month, amountOfMonthsToRender)\n }\n )\n\n /**\n * Set the month to be rendered (or initial month when calendar is in range mode).\n * @param {Object} args\n * @param {number} [args.month] - Initial month to be rendered, if not provided, the current initial month will be used.\n * @param {number} [args.year] - Initial year to be rendered, if not provided, the current initial month will be used.\n */\n function set(args: { month?: number; year?: number }) {\n const [initialMonth] = renderableMonths\n const date = new Date(args.year ?? initialMonth.year, args.month ?? initialMonth.month)\n\n setRenderableMonths(\n getRenderableMonths(date.getFullYear(), date.getMonth(), amountOfMonthsToRender)\n )\n }\n\n /**\n * Select day or day range.\n * @param range `null` to clear selection, selection range start, or an array with selection start and end.\n */\n function select(range: useCalendarProps['selected']) {\n const [start, end] = getSelectionPair(range)\n\n function getSelectionBoundary(boundary?: string | number | null): string | null {\n if (boundary != null) {\n return DateHelper(boundary).toString()\n }\n\n return null\n }\n\n setSelected([start, end])\n\n if (didMount) {\n // prevent calling onSelect when initialized with value\n onSelect?.([getSelectionBoundary(start), getSelectionBoundary(end)])\n }\n }\n\n /**\n * Clear calendar selection.\n */\n function clear() {\n select([null, null])\n }\n\n useEffect(\n function onMonthOrYearPropsChange() {\n set({\n month: props.month,\n year: props.year,\n })\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.month, props.year]\n )\n\n useEffect(\n function onSelectedPropChange() {\n const newSelected = getSelectionPair(props.selected)\n\n if (newSelected[0] != selected[0] || newSelected[1] != selected[1]) {\n setSelected(newSelected)\n }\n },\n // we just intend to update the internal state when the prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.selected]\n )\n\n return {\n mode,\n months: renderableMonths,\n selected,\n constraints: toArray(constraints || []),\n clear,\n set,\n select,\n }\n}\n\nconst DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1000\n\n/**\n * Generate the whole grid of days,\n * @param {number} year\n * @param {number }month\n * @returns {RenderableMonth}\n */\nexport function getRenderableMonth(year: number, month: number): RenderableMonth {\n const date = DateHelper(Date.UTC(year, month))\n\n const firstDayOfTheWeek = date.getWeekday()\n const totalDaysInMonth = 32 - new Date(Date.UTC(year, month, 32)).getUTCDate()\n\n const days = []\n\n /**\n * Filling days of previous month.\n * If the month does not start on Sunday, then we need to generate only the days of\n * the previous month to fill out the grid.\n */\n for (let index = firstDayOfTheWeek; index > 0; index--) {\n days.push(DateHelper(date.getTime() - index * DAY_IN_MILLISECONDS))\n }\n\n // Filling days of current month\n for (let index = 0; index < totalDaysInMonth; index++) {\n days.push(DateHelper(date.getTime() + index * DAY_IN_MILLISECONDS))\n }\n\n /**\n * Filling days of next month, just enough to complete the grid.\n */\n for (let index = 0; (firstDayOfTheWeek + totalDaysInMonth + index) % 7 != 0; index++) {\n days.push(DateHelper(date.getTime() + (totalDaysInMonth + index) * DAY_IN_MILLISECONDS))\n }\n\n return {\n month: date.getMonth(),\n year: date.getYear(),\n days,\n }\n}\n\n/**\n *\n * @param {number} year\n * @param {number} month\n * @param {number?} amount - number of months to be generated. Default value is 1.\n * @returns\n */\nexport function getRenderableMonths(\n year: number,\n month: number,\n amount = 1\n): ReturnType<typeof getRenderableMonth>[] {\n if (month < 0 || month > 11) {\n throw new Error(\n 'Invalid month! Please, provide a number between 0 (January) and 11 (December).'\n )\n }\n\n // TODO: validate accepted year range?\n\n const months = new Array<ReturnType<typeof getRenderableMonth>>()\n\n for (let i = 0; i < amount; i++) {\n months.push(getRenderableMonth(year, month + i))\n }\n\n return months\n}\n\nexport function getSelectionPair(\n selected?: null | [string | number | null, string | number | null]\n): [number | null, number | null] {\n const [start, end] = toArray(selected)\n\n return [\n start != null ? DateHelper(start).getTime() : null,\n end != null ? DateHelper(end ?? start).getTime() : null,\n ]\n}\n\nexport default useCalendar\n","export const getOrdinalSuffix = (number: number): 'st' | 'nd' | 'rd' | 'th' => {\n if (number % 10 === 1 && number !== 11) {\n return 'st'\n }\n\n if (number % 10 === 2 && number !== 12) {\n return 'nd'\n }\n\n if (number % 10 === 3 && number !== 13) {\n return 'rd'\n }\n\n return 'th'\n}\n","import { identity } from '@loadsmart/utils-function'\nimport { padded } from './Date.helper'\n\nimport type { CalendarDate } from './Date.helper'\nimport { getOrdinalSuffix } from 'utils/toolset/getOrdinalSuffix'\n\nexport interface DateFormat {\n format(date: CalendarDate): string\n}\n\nconst getTokenValue = (date: CalendarDate, token: string) => {\n const value = DEFAULT_FORMATTERS[token].format(date.get())\n\n return (ADDITIONAL_FORMATTERS[token] || identity)(value)\n}\n\n/**\n * This helpers provides a convenient layer on top of `Intl.DateTimeFormat`,\n * using common tokens (based on `momentjs`) to format dates.\n */\nexport default function DateFormatHelper(format: string): DateFormat {\n const tokens = tokenizer(format)\n\n return {\n format(date: CalendarDate) {\n return tokens\n .map((token, index) => {\n const previousIndex = index - 1\n const previousToken = tokens[previousIndex]\n\n if (token in DEFAULT_FORMATTERS) {\n return getTokenValue(date, token)\n }\n\n if (token in COMPOUND_FORMATTERS && COMPOUND_FORMATTERS[token].valid(previousToken)) {\n return COMPOUND_FORMATTERS[token].format(getTokenValue(date, previousToken))\n }\n\n return token\n })\n .join('')\n },\n }\n}\n\n/**\n * Supported tokens:\n *\n *| | Token | Output |\n *| :----------------------------- | :---- | :---------------------------------------- |\n *| Month | MM | 01, 02, ..., 11, 12 |\n *| | MMM | Jan, Feb, ..., Nov, Dec |\n *| | MMMM | January, February, ..., November,December |\n *| Day of Month | D | 1, 2, ..., 30, 31 |\n *| Day of Month with leading 0 | DD | 01, 02, ..., 30, 31 |\n *| Day of week | ddd | Sun, Mon, ... Fri, Sat |\n *| | dddd | Sunday, Monday, ..., Friday, Saturday |\n *| Year | YYYY | 1970, 1971, ..., 2029, 2030 |\n *| Hour | HH | 00, 01, ..., 22, 23 |\n *| | hh | 00, 01, ..., 11, 12 |\n *| Minute | mm | 01, 02, ..., 58, 59 |\n *| Seconds | ss | 01, 02, ..., 58, 59 |\n *| Post or ante meridiem | a | am, pm |\n *| | A | AM, PM |\n *| Ordinal numbers | o | 1st, 2nd, 3rd, ..., 10th |\n *| Scaped sequence | [] | |\n *\n * @param format\n * @returns\n */\nexport function tokenizer(format: string): string[] {\n function getType(char?: string): string {\n if (\n char != undefined &&\n ['M', 'd', 'D', 'Y', 'H', 'h', 'm', 's', 'A', 'a', 'o'].includes(char)\n ) {\n return 'token'\n }\n\n return 'string'\n }\n\n const tokens: string[] = []\n\n let i = 0\n let prev\n let isEscaping = false\n\n while (i < format.length) {\n const at = Math.max(0, tokens.length - 1)\n\n const char = format.charAt(i)\n i++\n\n if (['[', ']'].includes(char)) {\n isEscaping = char === '['\n } else if (isEscaping) {\n tokens[at] = `${tokens[at] || ''}${char}`\n } else if (prev !== char && [getType(prev), getType(char)].includes('token')) {\n // we just need to start a new piece of string if we found a possible valid token\n tokens.push(char)\n } else {\n tokens[at] = `${tokens[at] || ''}${char}`\n }\n\n prev = char\n }\n\n return tokens\n}\n\n/**\n * TODO: Evaluate the need to add the following pollyfills:\n * - https://formatjs.io/docs/polyfills/intl-datetimeformat/\n * - https://formatjs.io/docs/polyfills/intl-getcanonicallocales/\n * - https://formatjs.io/docs/polyfills/intl-locale/\n * - https://formatjs.io/docs/polyfills/intl-numberformat/\n * - https://formatjs.io/docs/polyfills/intl-pluralrules/\n */\nconst DEFAULT_FORMATTERS: Record<string, Intl.DateTimeFormat> = {\n MM: new Intl.DateTimeFormat('en-US', {\n month: '2-digit',\n }),\n MMM: new Intl.DateTimeFormat('en-US', {\n month: 'short',\n }),\n MMMM: new Intl.DateTimeFormat('en-US', {\n month: 'long',\n }),\n D: new Intl.DateTimeFormat('en-US', {\n day: 'numeric',\n }),\n DD: new Intl.DateTimeFormat('en-US', {\n day: '2-digit',\n }),\n ddd: new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n }),\n dddd: new Intl.DateTimeFormat('en-US', {\n weekday: 'long',\n }),\n YYYY: new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n }),\n HH: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hourCycle: 'h23',\n }),\n hh: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hour12: true,\n }),\n mm: new Intl.DateTimeFormat('en-US', {\n minute: '2-digit',\n hour12: false,\n }),\n ss: new Intl.DateTimeFormat('en-US', {\n second: '2-digit',\n hour12: false,\n }),\n a: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hour12: true,\n }),\n A: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hour12: true,\n }),\n}\n\n/**\n * Apply additional formatting.\n *\n * Padding, for example, is applied in some cases due to [this](https://bugs.chromium.org/p/chromium/issues/detail?id=527926) bug.\n */\nconst ADDITIONAL_FORMATTERS: Record<string, (value: string) => string> = {\n hh: (value: string) => (value ? padded(value.split(/\\s/)[0], 2) : value),\n HH: (value: string) => (value ? padded(value, 2) : value),\n mm: (value: string) => (value ? padded(value, 2) : value),\n ss: (value: string) => (value ? padded(value, 2) : value),\n a: (value: string) => (value ? (value.split(/\\s/)[1] || '').toLowerCase() : value),\n A: (value: string) => (value ? (value.split(/\\s/)[1] || '').toUpperCase() : value),\n}\n\ntype CompoundFormatter = {\n valid: (token: string) => boolean\n format: (value: string) => string\n}\n\nconst COMPOUND_FORMATTERS: Record<string, CompoundFormatter> = {\n o: {\n valid: (token) => new Set(['D', 'DD']).has(token),\n format: (value: string) => getOrdinalSuffix(parseInt(value, 10)),\n },\n}\n","import styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport typography from 'styles/typography'\n\nconst PickerButton = styled(BaseButton)<{\n $status:\n | 'default'\n | 'current-day'\n | 'faded'\n | 'selection-start'\n | 'selection-end'\n | 'selection'\n | 'next-month-day'\n}>`\n ${typography(\n conditional({\n body: whenProps({ $status: ['default', 'faded'] }),\n 'body-bold': whenProps({\n $status: ['current-day', 'selection-start', 'selection', 'selection-end'],\n }),\n })\n )}\n\n user-select: none;\n\n height: 100%;\n\n border-radius: 0;\n\n color: ${conditional({\n 'color-neutral-lighter': whenProps({\n $status: ['selection-start', 'selection', 'selection-end'],\n }),\n 'color-neutral-darker': whenProps({ $status: ['default', 'faded'] }),\n 'color-neutral-dark': whenProps({ $status: 'next-month-day' }),\n 'color-accent': whenProps({ $status: 'current-day' }),\n })};\n\n background: ${conditional({\n 'color-transparent': whenProps({ $status: ['default', 'faded', 'next-month-day'] }),\n 'color-neutral-darker': whenProps({ $status: ['selection-start', 'selection-end'] }),\n 'color-neutral': whenProps({ $status: 'selection' }),\n 'color-neutral-lightest': whenProps({ $status: 'current-day' }),\n })};\n\n border-color: ${conditional({\n 'color-transparent': whenProps({ $status: ['default', 'faded', 'next-month-day'] }),\n 'color-neutral-darker': whenProps({ $status: ['selection-start', 'selection-end'] }),\n 'color-neutral': whenProps({ $status: 'selection' }),\n 'color-neutral-light': whenProps({ $status: 'current-day' }),\n })};\n\n ${conditional({\n 'opacity: 0.4;': whenProps({ $status: 'faded' }),\n 'opacity: 1;': whenProps({ $status: (status) => status !== 'faded' }),\n })}\n\n padding: ${token('space-xs')} ${token('space-s')};\n\n ${hoverable`\n border-color: ${token('color-neutral')};\n background-color: ${conditional({\n 'color-transparent': whenProps({ $status: ['default', 'faded', 'next-month-day'] }),\n 'color-neutral-dark': whenProps({\n $status: ['selection-start', 'selection', 'selection-end'],\n }),\n 'color-neutral-lightest': whenProps({ $status: 'current-day' }),\n })};\n color: ${conditional({\n 'color-neutral-dark': whenProps({ $status: ['default', 'faded'] }),\n 'color-neutral-lightest': whenProps({\n $status: ['selection-start', 'selection', 'selection-end'],\n }),\n })};\n\n font-weight: ${token('font-weight-bold')};\n `}\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n font-weight: ${token('font-weight-bold')};\n `}\n\n ${activatable`\n border-color: ${token('color-neutral')};\n background-color: ${conditional({\n 'color-transparent': whenProps({ 'aria-checked': false }),\n 'color-neutral': whenProps({ 'aria-checked': true }),\n })};\n color: ${conditional({\n 'color-neutral': whenProps({ 'aria-checked': false }),\n 'color-neutral-white': whenProps({ 'aria-checked': true }),\n })};\n `}\n\n ${disableable`\n background-color: ${token('color-transparent')};\n border-color: ${conditional({\n 'color-neutral-darkest': whenProps({ 'aria-checked': true }),\n 'color-transparent': whenProps({ 'aria-checked': false }),\n })};\n\n color: ${token('color-neutral-darker')};\n `}\n\n visibility: ${conditional({\n visible: whenProps({ 'aria-hidden': false }),\n hidden: whenProps({ 'aria-hidden': true }),\n })};\n`\n\nexport default styled(PickerButton)({})\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport { Text as DefaultText } from 'components/Text'\nimport { TODAY } from '../Date.helper'\nimport DateFormatHelper from '../DateFormat.helper'\nimport PickerButton from './PickerButton'\n\nimport type { CalendarDate } from '../Date.helper'\nimport type { CalendarPickerProps, RenderableMonth, useCalendarReturn } from '../Calendar.types'\n\nexport const WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nfunction getStatus(calendar: useCalendarReturn, date: CalendarDate) {\n const isPastYearDay =\n date.getYear() < calendar.months[0].year && date.getMonth() > calendar.months[0].month\n\n if (calendar.selected[0] == date.getTime()) {\n return 'selection-start'\n } else if (calendar.selected[1] == date.getTime()) {\n return 'selection-end'\n } else if (\n calendar.selected[0] != null &&\n date.getTime() > calendar.selected[0] &&\n calendar.selected[1] != null &&\n date.getTime() < calendar.selected[1]\n ) {\n return 'selection'\n } else if (\n calendar.mode === 'single' &&\n (isPastYearDay || date.getMonth() < calendar.months[0].month)\n ) {\n return 'faded'\n } else if (calendar.mode === 'single' && date.getMonth() > calendar.months[0].month) {\n return 'next-month-day'\n } else if (date.getTime() == TODAY.getTime()) {\n return 'current-day'\n }\n\n return 'default'\n}\n\nconst Text = styled(DefaultText)`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n user-select: none;\n`\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: ${token('space-2xs')};\n grid-template-rows: 1.25rem repeat(auto-fill, 2.5rem);\n grid-template-columns: repeat(7, 2.5rem);\n`\n\n/**\n * filling days of previous month\n * TODO: supress this for range selection\n */\nfunction CalendarDayPicker({ calendar, onDayClick }: CalendarPickerProps): JSX.Element {\n function renderDaysOfWeek() {\n return WEEKDAYS.map((weekday) => (\n <Text\n key={weekday}\n as=\"abbr\"\n variant=\"chips-sm\"\n color=\"color-neutral\"\n style={{ textDecoration: 'none' }}\n >\n {weekday}\n </Text>\n ))\n }\n\n function renderDaysOfMonth(month: RenderableMonth) {\n const constraints = calendar.constraints || []\n\n return month.days.map((day) => {\n const status = getStatus(calendar, day)\n const formatted = formatter.format(day)\n const isDisabled = day.matches(...constraints)\n\n if (calendar.mode === 'range' && day.getMonth() !== month.month) {\n return <span key={formatted} aria-hidden></span>\n }\n\n return (\n <PickerButton\n key={formatted}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={['selection-start', 'selection', 'selection-end'].includes(status)}\n aria-label={formatted}\n disabled={isDisabled}\n onClick={() => {\n if (!isDisabled && onDayClick) {\n onDayClick(day.getTime())\n }\n }}\n $status={status}\n >\n <time dateTime={day.toString()}>{day.getDate()}</time>\n </PickerButton>\n )\n })\n }\n\n return (\n <Group>\n {calendar.months.map((month) => {\n return (\n <Grid key={`${month.year}${month.month}`} role=\"group\" data-testid=\"calendar-day-picker\">\n {renderDaysOfWeek()}\n {renderDaysOfMonth(month)}\n </Grid>\n )\n })}\n </Group>\n )\n}\n\nexport default CalendarDayPicker\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport MonthHelper from '../Month.helper'\nimport PickerButton from './PickerButton'\n\nimport type { useCalendarReturn, CalendarPickerProps } from '../Calendar.types'\nimport type { CalendarMonth, CalendarMonthAlias } from '../Month.helper'\n\nconst Container = styled.div`\n display: grid;\n grid-auto-rows: 3.75rem;\n grid-gap: ${token('space-2xs')};\n grid-template-columns: repeat(3, 1fr);\n`\n\nfunction getStatus(calendar: useCalendarReturn, month: CalendarMonth) {\n if (calendar.months[0].month == month.index) {\n return 'selection-start'\n }\n\n return 'default'\n}\n\nfunction CalendarMonthPicker({ calendar, mode }: CalendarPickerProps): JSX.Element {\n return (\n <Container role=\"radiogroup\" data-testid=\"calendar-month-picker\">\n {MonthHelper.getAll().map((month) => (\n <PickerButton\n key={month.index}\n type=\"button\"\n role=\"radio\"\n aria-checked={month.index == calendar.months[0].month}\n aria-label={`Select month ${month.name}`}\n onClick={() => {\n calendar.set({ month: month.index })\n mode.dispatch({ type: 'set-mode', payload: 'day-picker' })\n }}\n $status={getStatus(calendar, month)}\n >\n <time dateTime={`${calendar.months[0].year}-${month.index + 1}`}>\n {MonthHelper(month.name as CalendarMonthAlias).format('short')}\n </time>\n </PickerButton>\n ))}\n </Container>\n )\n}\n\nexport default CalendarMonthPicker\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport DefaultPickerButton from './PickerButton'\nimport range from 'utils/toolset/range'\n\nimport type { useCalendarReturn, CalendarPickerProps } from '../Calendar.types'\n\nconst Container = styled.div`\n display: grid;\n grid-auto-rows: 2.875rem;\n grid-gap: ${token('space-2xs')};\n grid-template-columns: repeat(4, 1fr);\n`\n\nconst PickerButton = styled(DefaultPickerButton)`\n block-size: 46px;\n`\n\nfunction getStatus(calendar: useCalendarReturn, year: number) {\n if (calendar.months[0].year == year) {\n return 'selection-start'\n }\n\n return 'default'\n}\n\nfunction CalendarYearPicker({ calendar, mode }: CalendarPickerProps): JSX.Element {\n return (\n <Container role=\"radiogroup\" data-testid=\"calendar-year-picker\">\n {range(2012, 2032).map((year) => (\n <PickerButton\n key={year}\n type=\"button\"\n role=\"radio\"\n aria-checked={year == calendar.months[0].year}\n aria-label={`Select year ${year}`}\n onClick={() => {\n calendar.set({ year })\n mode.dispatch({ type: 'set-mode', payload: 'month-picker' })\n }}\n $status={getStatus(calendar, year)}\n >\n {year}\n </PickerButton>\n ))}\n </Container>\n )\n}\n\nexport default CalendarYearPicker\n","import { useReducer } from 'react'\n\nimport DayPicker from './Pickers/DayPicker'\nimport MonthPicker from './Pickers/MonthPicker'\nimport YearPicker from './Pickers/YearPicker'\n\nimport type {\n PickerMode,\n PickerModeAction,\n usePickerModeProps,\n usePickerModeReturn,\n} from './Calendar.types'\n\nfunction usePickerMode(props?: usePickerModeProps): usePickerModeReturn {\n function reducer(state: PickerMode, action: PickerModeAction) {\n switch (action.type) {\n case 'set-mode':\n return action.payload\n case 'toggle-mode':\n if (state != action.payload) {\n return action.payload\n }\n\n return 'day-picker'\n default:\n return state\n }\n }\n\n const [mode, dispatch] = useReducer(reducer, props?.mode || 'day-picker')\n\n return {\n get() {\n return mode\n },\n is(other: PickerMode) {\n return other != null && other === mode\n },\n dispatch,\n Picker: {\n 'day-picker': DayPicker,\n 'month-picker': MonthPicker,\n 'year-picker': YearPicker,\n }[mode],\n }\n}\n\nexport default usePickerMode\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Group, Stack } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport MonthHelper from './Month.helper'\nimport PickerModeToggle from './PickerModeToggle'\nimport typography from 'styles/typography'\nimport useCalendar from './useCalendar'\nimport usePickerMode from './usePickerMode'\n\nimport type { CalendarMonthAlias } from './Month.helper'\nimport type { CalendarProps, GenericCalendarProps } from './Calendar.types'\n\nconst Container = styled(Stack)`\n ${typography('body')}\n min-width: calc((7 * 2.5rem) + (6 * ${token('space-2xs')}));\n`\n\nconst BorderlessButton = styled(BaseButton)`\n ${typography('body-bold')}\n border-color: transparent;\n background-color: transparent;\n\n color: ${token('color-neutral')};\n\n inline-size: 40px;\n\n visibility: ${conditional({\n visible: whenProps({ 'aria-hidden': false }),\n hidden: whenProps({ 'aria-hidden': true }),\n })};\n\n ${hoverable`\n color: ${token('color-neutral-dark')};\n `}\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n `}\n`\n\n/**\n * Implementation based on\n * * https://medium.com/swlh/build-a-date-picker-in-15mins-using-javascript-react-from-scratch-f6932c77db09\n * * https://codepen.io/zellwk/pen/xNpKwp\n */\nexport function GenericCalendar(props: GenericCalendarProps): JSX.Element {\n const { calendar, onDayClick, onMonthClick, onYearClick, ...others } = props\n const mode = usePickerMode()\n\n const { Picker } = mode\n\n return (\n <Container space=\"xs\" {...others}>\n <Group>\n <BorderlessButton\n type=\"button\"\n aria-label=\"Navigate to previous month\"\n aria-hidden={!mode.is('day-picker')}\n onClick={() => {\n calendar.set({ month: calendar.months[0].month - 1 })\n }}\n >\n <Icon name=\"caret-left\" size={16} />\n </BorderlessButton>\n\n {calendar.months.map((month) => {\n return (\n <Group key={month.month} space=\"xs\" align=\"center\" justify=\"center\" style={{ flex: 1 }}>\n <PickerModeToggle\n aria-label=\"Open month selection\"\n onClick={() => {\n mode.dispatch({ type: 'toggle-mode', payload: 'month-picker' })\n }}\n expanded={mode.is('month-picker')}\n disabled={calendar.mode == 'range'}\n >\n {MonthHelper(month.month as CalendarMonthAlias).format('long')}\n </PickerModeToggle>\n\n <PickerModeToggle\n aria-label=\"Open year selection\"\n onClick={() => {\n mode.dispatch({ type: 'toggle-mode', payload: 'year-picker' })\n }}\n expanded={mode.is('year-picker')}\n disabled={calendar.mode == 'range'}\n >\n {month.year}\n </PickerModeToggle>\n </Group>\n )\n })}\n <BorderlessButton\n type=\"button\"\n aria-label=\"Navigate to next month\"\n aria-hidden={!mode.is('day-picker')}\n onClick={() => {\n calendar.set({ month: calendar.months[0].month + 1 })\n }}\n >\n <Icon name=\"caret-right\" size={16} />\n </BorderlessButton>\n </Group>\n\n <Picker\n calendar={calendar}\n mode={mode}\n onDayClick={onDayClick}\n onMonthClick={onMonthClick}\n onYearClick={onYearClick}\n />\n </Container>\n )\n}\n\nfunction Calendar(props: CalendarProps): JSX.Element {\n const { year, month, selected, constraints, onSelect, mode, ...rest } = props\n const calendar = useCalendar({ year, month, selected, constraints, mode, onSelect })\n\n return <GenericCalendar calendar={calendar} {...rest} />\n}\n\nexport default Calendar\n","import DateFormatHelper from './DateFormat.helper'\nimport DateHelper from './Date.helper'\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nexport function getSelection(\n selection?: number | string | null | [number | string | null, number | string | null]\n): [null | number, null | number] {\n const [start, end] = Array.isArray(selection) ? selection : [selection, selection]\n\n return [\n start != null ? DateHelper(start).getTime() : null,\n end != null ? DateHelper(end).getTime() : null,\n ]\n}\n","import { useEffect, useRef } from 'react'\n\nimport { useDropdown } from 'components/Dropdown'\nimport { TODAY, DateFormatHelper, DateHelper, useCalendar } from 'components/Calendar'\n\nimport { getSelection } from '../Calendar/Calendar.helpers'\n\nimport type { CalendarDate } from 'components/Calendar'\nimport type { DatePickerProps } from './DatePicker.types'\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nexport function formatDate(date?: number | string | null): string {\n if (!date || Number.isNaN(new Date(date).getTime())) {\n return ''\n }\n\n return formatter.format(DateHelper(date))\n}\n\nexport function getInitialCalendarSetup(\n selection: number | string | null | [number | string | null, number | string | null]\n) {\n const [selectionStart] = getSelection(selection)\n\n if (!selectionStart) {\n return {\n month: TODAY.getMonth(),\n year: TODAY.getYear(),\n }\n }\n\n const startDate = DateHelper(selectionStart)\n\n return {\n month: startDate.getMonth(),\n year: startDate.getYear(),\n }\n}\n\nexport function setInputValue(input: HTMLInputElement | null, value: string) {\n if (input != null) {\n input.value = value\n }\n}\n\nexport function getInputValue(input?: HTMLInputElement | null) {\n if (input != null) {\n return input.value\n }\n\n return null\n}\n\nfunction useDatePicker(props: DatePickerProps) {\n const { constraints, disabled, id, name, onChange, value, ...rest } = props\n\n const dropdown = useDropdown({ disabled })\n const calendar = useCalendar({\n mode: 'single',\n constraints,\n onSelect: handleDateSelect,\n })\n\n const inputRef = useRef<HTMLInputElement>()\n\n function handleDateSelect(selection: [string | null, string | null]) {\n if (!inputRef.current) {\n return\n }\n\n const [formattedDate] = getSelection(selection).map(formatDate)\n\n /**\n * This check ensures we will keep the valid date the user typed as-is and, since we're using\n * an uncontrolled input, ensures that the formatting that happens in `getFormattedSelection`\n * will not interfere with cursor position when we set the input value.\n * Bottom line is: if the input already contains the select date, no change is necessary.\n */\n if (formattedDate != formatDate(getInputValue(inputRef.current))) {\n setInputValue(inputRef.current, formattedDate)\n }\n\n onChange?.({ target: { id, name, value: selection[0] } })\n }\n\n function handleDateInputChange(date: CalendarDate) {\n if (date != null) {\n const timestamp = date.getTime()\n\n calendar.select([timestamp, timestamp])\n } else {\n calendar.clear()\n }\n }\n\n function handleDateInputClick() {\n if (!dropdown.expanded) {\n calendar.set(getInitialCalendarSetup(calendar.selected))\n dropdown.toggle()\n }\n }\n\n function handleDayClick(timestamp: number) {\n calendar.select([timestamp, timestamp])\n dropdown.collapse()\n }\n\n function handleClearClick() {\n calendar.clear()\n inputRef.current?.focus()\n }\n\n function getDropdownProps() {\n return {\n disabled,\n toggle: dropdown.toggle,\n expanded: dropdown.expanded,\n onBlur() {\n if (!inputRef.current) {\n return\n }\n\n const [currSelectedDate] = getSelection(calendar.selected).map(formatDate)\n const currInputValue = getInputValue(inputRef.current)\n\n if (currInputValue == currSelectedDate) {\n return\n }\n\n if (!currInputValue) {\n calendar.clear()\n } else {\n setInputValue(inputRef.current, currSelectedDate)\n }\n },\n }\n }\n\n function getCalendarProps() {\n return {\n ...rest.getCalendarProps?.(),\n calendar,\n onDayClick: handleDayClick,\n }\n }\n\n function getInputProps() {\n return {\n ...rest.getInputProps?.(),\n id,\n name,\n disabled,\n onChange: handleDateInputChange,\n onClick: handleDateInputClick,\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n inputRef.current = node\n }\n },\n }\n }\n\n function getClearProps() {\n return {\n onClick: handleClearClick,\n }\n }\n\n useEffect(\n function onValuePropChange() {\n if (!inputRef.current) {\n return\n }\n\n const [newSelection] = getSelection(value)\n const [currSelection] = calendar.selected\n\n if (newSelection != currSelection) {\n setInputValue(inputRef.current, formatDate(newSelection))\n\n calendar.select([newSelection, newSelection])\n calendar.set(getInitialCalendarSetup([newSelection, newSelection]))\n }\n },\n // we just intend to update the selection when the prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value]\n )\n\n return {\n value: getSelection(calendar.selected).map(formatDate),\n\n getDropdownProps,\n getInputProps,\n getClearProps,\n getCalendarProps,\n }\n}\n\nexport default useDatePicker\n","import React, { useContext, forwardRef } from 'react'\nimport styled from 'styled-components'\n\nimport { DateFormatHelper, DateHelper, GenericCalendar } from 'components/Calendar'\nimport { Dropdown, DropdownContext, GenericDropdown } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport { TextField as DefaultTextField } from 'components/TextField'\nimport CloseButton from 'common/CloseButton'\nimport useDatePicker from './useDatePicker'\nimport { Popover } from 'components/Popover'\n\nimport type { CalendarDate } from 'components/Calendar'\nimport type { ChangeEvent } from 'react'\nimport type { DatePickerProps } from './DatePicker.types'\nimport type { TextFieldProps } from 'components/TextField'\n\n/**\n * https://www.regular-expressions.info/dates.html\n * https://learning.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s04.html#validation-dates-problem\n */\nconst DATE_REGEX = /^(1[0-2]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/(19|20)\\d{2}$/\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nconst TextField = styled(DefaultTextField)`\n & > input {\n width: 10ch;\n }\n`\n\nconst DropdownMenu = styled(Dropdown.Menu)`\n width: max-content;\n min-width: initial;\n max-height: initial;\n padding: ${token('space-m')};\n overflow-y: initial;\n`\n\nexport const ClearButton = styled(CloseButton)`\n width: 1em;\n height: 1em;\n\n margin-left: calc(-1 * ${token('space-s')}); // compensate for input's padding-left\n`\n\ninterface DateInputProps extends Omit<TextFieldProps, 'onChange'> {\n onChange: (date: CalendarDate) => void\n}\n\nexport const DateInput = forwardRef<HTMLInputElement, DateInputProps>(function DateInput(\n props: DateInputProps,\n ref\n): JSX.Element {\n const { onChange, ...rest } = props\n const dropdown = useContext(DropdownContext)\n\n function handleInputChange(event: ChangeEvent<HTMLInputElement>) {\n const {\n target: { value },\n } = event\n\n if (!DATE_REGEX.test(value)) {\n return\n }\n\n onChange(DateHelper(value))\n }\n\n // TODO: use type=\"date\" when IE is no longer in the way\n return (\n <TextField\n placeholder=\"00/00/0000\"\n {...rest}\n ref={ref}\n type=\"text\"\n disabled={dropdown.disabled}\n leading={<Icon name=\"calendar\" />}\n onChange={handleInputChange}\n />\n )\n})\n\nfunction DatePicker(props: DatePickerProps): JSX.Element {\n const {\n id,\n name,\n value,\n onChange,\n disabled,\n constraints,\n getInputProps,\n getCalendarProps,\n placement,\n } = props\n\n const datePicker = useDatePicker({\n constraints,\n disabled,\n id,\n name,\n value,\n onChange,\n getInputProps,\n getCalendarProps,\n })\n\n function renderTrailing() {\n const [currSelectedDate] = datePicker.value\n\n if (!disabled && currSelectedDate) {\n return (\n <ClearButton\n size={12}\n type=\"button\"\n aria-label=\"Clear selection\"\n {...datePicker.getClearProps()}\n />\n )\n }\n\n return null\n }\n\n return (\n <GenericDropdown {...placement} {...datePicker.getDropdownProps()}>\n <Popover.Reference>\n <Group space=\"s\">\n <DateInput trailing={renderTrailing()} {...datePicker.getInputProps()} />\n </Group>\n </Popover.Reference>\n <DropdownMenu>\n <GenericCalendar {...datePicker.getCalendarProps()} />\n </DropdownMenu>\n </GenericDropdown>\n )\n}\n\nexport default DatePicker\n","import { useEffect, useRef } from 'react'\n\nimport { formatDate, getInitialCalendarSetup, getInputValue, setInputValue } from './useDatePicker'\nimport { getSelection } from '../Calendar/Calendar.helpers'\nimport { useCalendar } from 'components/Calendar'\nimport { useDropdown } from 'components/Dropdown'\n\nimport type { CalendarDate } from 'components/Calendar'\nimport type { DateRangePickerProps } from './DatePicker.types'\n\nconst AT_RANGE_START = 0\nconst AT_RANGE_END = 1\n\nfunction useDateRangePicker(props: DateRangePickerProps) {\n const { constraints, disabled, id, name, onChange, value, ...rest } = props\n\n const dropdown = useDropdown({ disabled })\n const calendar = useCalendar({\n mode: 'range',\n constraints,\n onSelect: handleDateSelect,\n })\n\n const inputsRef = useRef<[HTMLInputElement | null, HTMLInputElement | null]>([null, null])\n const currentlyPickingRef = useRef<'range-start' | 'range-end' | 'none'>('none')\n\n function handleDateSelect(selected: [string | null, string | null]) {\n ;[AT_RANGE_START, AT_RANGE_END].forEach((index) => {\n const input = inputsRef.current[index]\n const formattedDate = formatDate(selected[index])\n\n /**\n * This check ensures we will keep the valid date the user typed as-is and, since we're using\n * an uncontrolled input, ensures that the formatting that happens in `formatDate`\n * will not interfere with cursor position when we set the input value.\n * Bottom line is: if the input already contains the select date, no change is necessary.\n */\n if (formattedDate != formatDate(getInputValue(input))) {\n setInputValue(input, formattedDate)\n }\n })\n\n onChange?.({ target: { id, name, value: selected } })\n }\n\n function getDateInputChangeHandler(index: number) {\n return function handleDateInputChange(date: CalendarDate) {\n if (date != null) {\n const timestamp = date.getTime()\n\n const newSelected: typeof calendar.selected = [...calendar.selected]\n newSelected[index] = timestamp\n\n calendar.select(newSelected)\n } else {\n calendar.clear()\n }\n }\n }\n\n function handleDateInputClick() {\n if (!dropdown.expanded) {\n calendar.set(getInitialCalendarSetup(calendar.selected))\n dropdown.toggle()\n }\n }\n\n function handleDayClick(timestamp: number) {\n const [rangeStart, rangeEnd] = calendar.selected\n\n if (currentlyPickingRef.current == 'range-start') {\n if (rangeEnd != null) {\n calendar.select([timestamp, rangeEnd].sort() as [number, number])\n inputsRef.current[AT_RANGE_START]?.focus()\n } else {\n calendar.select([timestamp, rangeEnd])\n inputsRef.current[AT_RANGE_END]?.focus()\n }\n } else if (currentlyPickingRef.current == 'range-end') {\n if (rangeStart != null) {\n calendar.select([rangeStart, timestamp].sort() as [number, number])\n } else {\n calendar.select([rangeStart, timestamp])\n }\n\n inputsRef.current[AT_RANGE_END]?.focus()\n }\n }\n\n function handleClearClick() {\n calendar.clear()\n inputsRef.current[AT_RANGE_START]?.focus()\n }\n\n function handleDropdownBlur() {\n currentlyPickingRef.current = 'none'\n\n if ([AT_RANGE_START, AT_RANGE_END].some((index) => !inputsRef.current[index])) {\n return\n }\n\n if ([AT_RANGE_START, AT_RANGE_END].every((index) => !getInputValue(inputsRef.current[index]))) {\n calendar.clear()\n } else {\n const selected = getSelection(calendar.selected).map(formatDate)\n\n ;[AT_RANGE_START, AT_RANGE_END].forEach((index) => {\n setInputValue(inputsRef.current[index], selected[index])\n })\n }\n }\n\n function handleDoneClick() {\n handleDropdownBlur()\n dropdown.collapse()\n }\n\n function getDropdownProps() {\n return {\n disabled,\n toggle: dropdown.toggle,\n expanded: dropdown.expanded,\n onBlur: handleDropdownBlur,\n }\n }\n\n function getCalendarProps() {\n return {\n ...rest.getCalendarProps?.(),\n calendar,\n onDayClick: handleDayClick,\n }\n }\n\n function getRangeStartInputProps() {\n return {\n ...rest.getRangeStartInputProps?.(),\n id: id != null ? `${id}-start` : id,\n name: name != null ? `${name}-start` : name,\n disabled,\n onChange: getDateInputChangeHandler(AT_RANGE_START),\n onClick: handleDateInputClick,\n onFocus() {\n currentlyPickingRef.current = 'range-start'\n },\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n inputsRef.current[AT_RANGE_START] = node\n }\n },\n }\n }\n\n function getRangeEndInputProps() {\n return {\n ...rest.getRangeEndInputProps?.(),\n id: id != null ? `${id}-end` : id,\n name: name != null ? `${name}-end` : name,\n disabled,\n onChange: getDateInputChangeHandler(AT_RANGE_END),\n onClick: handleDateInputClick,\n onFocus() {\n currentlyPickingRef.current = 'range-end'\n },\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n inputsRef.current[AT_RANGE_END] = node\n }\n },\n }\n }\n\n function getClearProps() {\n return {\n onClick: handleClearClick,\n }\n }\n\n function getDoneProps() {\n return {\n onClick: handleDoneClick,\n }\n }\n\n useEffect(\n function onValuePropChange() {\n if ([AT_RANGE_START, AT_RANGE_END].some((index) => !inputsRef.current[index])) {\n return\n }\n\n const newSelected = getSelection(value)\n const currSelected = calendar.selected\n\n const hasChanged = [AT_RANGE_START, AT_RANGE_END].some((index) => {\n return newSelected[index] != currSelected[index]\n })\n\n if (hasChanged) {\n ;[AT_RANGE_START, AT_RANGE_END].forEach((index) => {\n setInputValue(inputsRef.current[index], formatDate(newSelected[index]))\n })\n\n calendar.select(newSelected)\n calendar.set(getInitialCalendarSetup(newSelected))\n }\n },\n // we just intend to update the selection when the prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value]\n )\n\n return {\n value: getSelection(calendar.selected).map(formatDate),\n\n getDropdownProps,\n getRangeStartInputProps,\n getRangeEndInputProps,\n getClearProps,\n getCalendarProps,\n getDoneProps,\n }\n}\n\nexport default useDateRangePicker\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { Button } from 'components/Button'\nimport { ClearButton, DateInput } from './DatePicker'\nimport { DateFormatHelper, GenericCalendar } from 'components/Calendar'\nimport { Dropdown, GenericDropdown } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport { Popover } from 'components/Popover'\nimport useDateRangePicker from './useDateRangePicker'\n\nimport type { DateRangePickerProps } from './DatePicker.types'\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nconst DropdownMenu = styled(Dropdown.Menu)`\n width: max-content;\n min-width: initial;\n max-height: initial;\n padding: ${token('space-m')};\n overflow-y: initial;\n`\n\nconst DropdownFooter = styled.div`\n padding-right: ${token('space-m')};\n padding-left: ${token('space-m')};\n`\n\nfunction DateRangePicker(props: DateRangePickerProps): JSX.Element {\n const {\n id,\n name,\n value,\n onChange,\n disabled,\n constraints,\n getRangeStartInputProps,\n getRangeEndInputProps,\n getCalendarProps,\n placement,\n } = props\n\n const dateRangePicker = useDateRangePicker({\n constraints,\n disabled,\n id,\n name,\n value,\n onChange,\n getRangeStartInputProps,\n getRangeEndInputProps,\n getCalendarProps,\n })\n\n function renderRangeEndTrailing() {\n const [currRangeStart, currRangeEnd] = dateRangePicker.value\n\n if (!disabled && (currRangeStart || currRangeEnd)) {\n return (\n <ClearButton\n size={12}\n type=\"button\"\n aria-label=\"Clear selection\"\n {...dateRangePicker.getClearProps()}\n />\n )\n }\n\n return null\n }\n\n function renderDropdownFooter() {\n return (\n <DropdownFooter>\n <Group space=\"s\" justify=\"flex-end\">\n <Button type=\"button\" scale=\"small\" {...dateRangePicker.getClearProps()}>\n Clear\n </Button>\n <Button type=\"button\" scale=\"small\" variant=\"primary\" {...dateRangePicker.getDoneProps()}>\n Done\n </Button>\n </Group>\n </DropdownFooter>\n )\n }\n\n return (\n <GenericDropdown {...placement} {...dateRangePicker.getDropdownProps()}>\n <Popover.Reference>\n <Group space=\"s\">\n <DateInput\n {...dateRangePicker.getRangeStartInputProps()}\n data-testid=\"input-date-range-start\"\n />\n <DateInput\n trailing={renderRangeEndTrailing()}\n {...dateRangePicker.getRangeEndInputProps()}\n data-testid=\"input-date-range-end\"\n />\n </Group>\n </Popover.Reference>\n <DropdownMenu footer={renderDropdownFooter()}>\n <GenericCalendar {...dateRangePicker.getCalendarProps()} />\n </DropdownMenu>\n </GenericDropdown>\n )\n}\n\nexport default DateRangePicker\n","import React from 'react'\n\nimport { TextProps, Text } from 'components/Text'\n\nexport type ErrorMessageProps = Partial<TextProps>\n\nconst ErrorMessage = ({ children, ...props }: ErrorMessageProps) => {\n if (!children) {\n return null\n }\n\n return (\n <Text as=\"p\" variant=\"caption-bold\" color=\"color-danger\" {...props}>\n {children}\n </Text>\n )\n}\n\nexport default ErrorMessage\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport prop from 'tools/prop'\nimport transition from 'styles/transition'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport disableable from 'styles/disableable'\nimport hidden from 'styles/hidden'\n\nimport { StackProps, Stack } from 'components/Layout/Stack'\nimport { Icon } from 'components/Icon'\n\nimport type { DropZoneProps } from './types'\n\nexport const DragDropFileWrapper = styled(Stack)<{ withFileList: boolean }>`\n width: 100%;\n\n & > label + p {\n margin-top: ${conditional({\n 'space-m': whenProps({ withFileList: true }),\n 'space-l': whenProps({ withFileList: false }),\n })};\n }\n`\n\nexport const DropZoneWrapper = styled((props: StackProps) => <Stack as=\"label\" {...props} />)<\n Pick<DropZoneProps, 'disabled' | 'error'>\n>`\n ${transition({ property: 'border-color, box-shadow, opacity' })}\n\n cursor: pointer;\n\n background-color: ${getToken('color-neutral-white')};\n border-radius: ${getToken('border-radius-s')};\n border: 2px dashed;\n border-color: ${conditional({\n 'color-neutral-light': whenProps({ error: false }),\n 'color-danger': whenProps({ disabled: false, error: true }),\n })};\n\n padding: ${getToken('space-l')} ${getToken('space-3xl')};\n\n text-align: center;\n\n ${hoverable`\n border-color: ${conditional({\n 'color-accent': whenProps({ disabled: false, error: false }),\n })};\n `}\n\n ${focusable`\n border-color: ${conditional({\n 'color-accent': whenProps({ disabled: false, error: false }),\n })};\n box-shadow: ${getToken('shadow-glow-primary')};\n `}\n\n ${disableable()}\n`\n\nexport const HiddenInput = styled.input`\n ${hidden()}\n`\n\nexport const UploadIcon = styled(Icon)`\n color: ${getToken('color-neutral')};\n`\n\nexport const FileListUL = styled((props: StackProps) => <Stack as=\"ul\" {...props} />)`\n padding: 0;\n`\n\nexport const Divider = styled.div`\n width: 1px;\n height: 16px;\n\n background-color: ${getToken('color-neutral-darker')};\n`\n","import React from 'react'\n\nimport isEmpty from 'utils/toolset/isEmpty'\n\nimport { useDragDropFileContext } from '../DragDropFile.context'\nimport { DragDropFileWrapper } from '../styles'\nimport type { WrapperProps } from '../types'\n\n/**\n * This is a `Stack` component customized with the needed spacing between the DragDropFile inner components\n */\nconst Wrapper = ({ children, ...props }: WrapperProps) => {\n const { fileList } = useDragDropFileContext()\n\n return (\n <DragDropFileWrapper space=\"l\" withFileList={!isEmpty(fileList)} {...props}>\n {children}\n </DragDropFileWrapper>\n )\n}\n\nexport default Wrapper\n","import React, { useRef, useState, useCallback } from 'react'\nimport clsx from 'clsx'\n\nimport toArray from 'utils/toolset/toArray'\nimport KeyboardKey from 'utils/toolset/keyboard'\nimport pluralize from 'utils/toolset/pluralize'\n\nimport { Text } from 'components/Text'\n\nimport { useDragDropFileContext } from '../DragDropFile.context'\n\nimport { DropZoneWrapper, HiddenInput, UploadIcon } from '../styles'\nimport type { DropZoneProps } from '../types'\n\nconst DropZone = ({\n className,\n hint,\n multiple = false,\n accept,\n disabled = false,\n error = false,\n renderCustomContent,\n ...props\n}: DropZoneProps): JSX.Element => {\n const { onFilesAdded } = useDragDropFileContext()\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [isDragging, setIsDragging] = useState(false)\n\n const onChangeInput = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n onFilesAdded(Array.from(event.currentTarget.files || []))\n },\n [onFilesAdded]\n )\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent) => {\n if (!disabled && inputRef.current && KeyboardKey(event).is('ENTER')) {\n inputRef.current.click()\n }\n },\n [disabled, inputRef]\n )\n\n const onDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!disabled) {\n if (isDragging) {\n setIsDragging(false)\n }\n\n onFilesAdded(Array.from(event.dataTransfer.files || []))\n }\n },\n [disabled, isDragging, onFilesAdded]\n )\n\n const onDragStart = useCallback((event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n }, [])\n\n const onDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n\n if (!disabled && !isDragging) {\n setIsDragging(true)\n }\n },\n [disabled, isDragging]\n )\n\n const onDragLeave = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n\n if (isDragging) {\n setIsDragging(false)\n }\n },\n [isDragging]\n )\n\n const renderDefaultContent = useCallback(\n () => (\n <>\n <UploadIcon name=\"upload\" size={48} />\n <Text variant=\"body\" color=\"color-neutral-darker\">\n {`Drag and drop your ${pluralize(Number(!multiple), 'files', 'file')} here or `}\n <Text as=\"a\" color={disabled ? 'color-neutral' : 'color-accent'} variant=\"body-bold\">\n {`Browse ${pluralize(Number(!multiple), 'Files', 'File')}`}\n </Text>\n </Text>\n {hint && (\n <Text variant=\"caption\" color=\"color-neutral-dark\">\n {hint}\n </Text>\n )}\n </>\n ),\n [multiple, disabled, hint]\n )\n\n return (\n <DropZoneWrapper\n space=\"m\"\n align=\"center\"\n justify=\"center\"\n className={clsx(className, {\n 'is-disabled': disabled,\n 'is-focused': isDragging,\n })}\n disabled={disabled}\n error={error}\n tabIndex={0}\n role=\"button\"\n aria-pressed=\"false\"\n onKeyPress={onKeyPress}\n onDrop={onDrop}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragLeave={onDragLeave}\n >\n {(renderCustomContent || renderDefaultContent)({ isDragging })}\n <HiddenInput\n onInput={onChangeInput}\n type=\"file\"\n ref={inputRef}\n accept={accept ? toArray(accept).join(',') : undefined}\n disabled={disabled}\n multiple={multiple}\n {...props}\n />\n </DropZoneWrapper>\n )\n}\n\nexport default DropZone\n","export const BYTES_PER_KILOBYTE = 1024\nexport const FILE_SIZE_ABBREVIATIONS = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n\nconst formatBytes = (bytes: number, decimals = 2) => {\n const bytesValue = Number(bytes)\n\n if (!bytesValue || bytesValue < 0) {\n return '0B'\n }\n\n const dm = Math.max(0, decimals)\n const unit = Math.floor(Math.log(bytesValue) / Math.log(BYTES_PER_KILOBYTE))\n const unitAbbr = FILE_SIZE_ABBREVIATIONS[Math.min(unit, FILE_SIZE_ABBREVIATIONS.length - 1)]\n\n return `${parseFloat((bytesValue / Math.pow(BYTES_PER_KILOBYTE, unit)).toFixed(dm))}${unitAbbr}`\n}\n\nexport default formatBytes\n","import React from 'react'\n\nimport formatBytes from 'utils/toolset/formatBytes'\n\nimport { Stack, Group } from 'components/Layout'\nimport { Bar } from 'components/Loaders/LoadingBar'\nimport { Button } from 'components/Button'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\n\nimport type { FileItemProps, FileStatus } from '../types'\nimport { Divider } from '../styles'\n\nconst FileName = ({ file }: Pick<FileItemProps, 'file'>): JSX.Element =>\n file.size ? (\n <Group space=\"m\" align=\"center\">\n <Text variant=\"caption\">{file.name}</Text>\n <Text variant=\"number-sm\">{formatBytes(file.size)}</Text>\n </Group>\n ) : (\n <Text variant=\"caption\">{file.name}</Text>\n )\n\ntype FileActionButtonProps = Pick<FileItemProps, 'onRemove' | 'onRetry' | 'disabled'> & {\n type: 'remove' | 'retry'\n}\n\nconst FileActionButton = ({\n type,\n onRemove,\n onRetry,\n disabled,\n}: FileActionButtonProps): JSX.Element => {\n const { iconName, label, onClick } =\n type === 'remove'\n ? {\n iconName: 'close',\n label: 'REMOVE',\n onClick: onRemove,\n }\n : {\n iconName: 'refresh',\n label: 'RETRY',\n onClick: onRetry,\n }\n\n return (\n <Button\n scale=\"small\"\n variant=\"tertiary\"\n leading={<Icon name={iconName} size={12} />}\n onClick={onClick}\n disabled={disabled}\n >\n {label}\n </Button>\n )\n}\n\nconst LoadingFile = ({ file, ...actionProps }: FileItemProps): JSX.Element => (\n <Stack as=\"li\" space=\"s\">\n <Group align=\"center\" justify=\"space-between\">\n <FileName file={file} />\n <FileActionButton type=\"remove\" {...actionProps} />\n </Group>\n <Bar />\n </Stack>\n)\n\nconst ErrorFile = ({ file, errorMessage, ...actionProps }: FileItemProps): JSX.Element => (\n <Stack as=\"li\" space=\"s\">\n <Group align=\"center\" justify=\"space-between\">\n <Group space=\"s\" align=\"center\">\n <Icon name=\"warning\" size={12} />\n <FileName file={file} />\n </Group>\n {actionProps.onRetry ? (\n <Group space=\"none\" align=\"center\">\n <FileActionButton type=\"retry\" {...actionProps} />\n <Divider />\n <FileActionButton type=\"remove\" {...actionProps} />\n </Group>\n ) : (\n <FileActionButton type=\"remove\" {...actionProps} />\n )}\n </Group>\n {errorMessage && (\n <Text variant=\"caption\" color=\"color-danger\">\n {errorMessage}\n </Text>\n )}\n </Stack>\n)\n\nconst SuccessFile = ({ file, ...actionProps }: FileItemProps): JSX.Element => (\n <Group as=\"li\" align=\"center\" justify=\"space-between\">\n <Group space=\"s\" align=\"center\">\n <Icon name=\"check\" size={12} />\n <FileName file={file} />\n </Group>\n <FileActionButton type=\"remove\" {...actionProps} />\n </Group>\n)\n\nconst FILE_ITEM_BY_STATUS: Record<FileStatus, (props: FileItemProps) => JSX.Element> = {\n loading: LoadingFile,\n error: ErrorFile,\n success: SuccessFile,\n}\n\nconst FileItem = (props: FileItemProps): JSX.Element => {\n const FileItemComponent = FILE_ITEM_BY_STATUS[props.status]\n\n return <FileItemComponent {...props} />\n}\n\nexport default FileItem\n","import React from 'react'\n\nimport isEmpty from 'utils/toolset/isEmpty'\nimport pluralize from 'utils/toolset/pluralize'\n\nimport { Stack } from 'components/Layout'\nimport { Text } from 'components/Text'\n\nimport { useDragDropFileContext } from '../DragDropFile.context'\n\nimport type { FileListProps } from '../types'\nimport { FileListUL } from '../styles'\n\nimport FileItem from './FileItem'\n\nconst FileList = ({ disabled, ...props }: FileListProps): JSX.Element | null => {\n const { fileList, onRemoveFile, onRetryUpload } = useDragDropFileContext()\n\n if (isEmpty(fileList)) {\n return null\n }\n\n const uploadedFiles = fileList.filter((file) => file.status === 'success').length\n\n return (\n <Stack space=\"m\" {...props}>\n <Text variant=\"heading-sm-bold\">{`${uploadedFiles} ${pluralize(\n uploadedFiles,\n 'Files',\n 'File'\n )} uploaded`}</Text>\n <FileListUL space=\"m\">\n {fileList.map((item, index) => (\n <FileItem\n key={`file-${item.file.name}-${index}`}\n disabled={disabled}\n onRemove={() => onRemoveFile(item, index)}\n onRetry={onRetryUpload ? () => onRetryUpload(item, index) : undefined}\n {...item}\n />\n ))}\n </FileListUL>\n </Stack>\n )\n}\n\nexport default FileList\n","import Wrapper from './components/Wrapper'\nimport DropZone from './components/DropZone'\nimport FileList from './components/FileList'\n\nconst DragDropFile = (): null => null\n\nDragDropFile.Wrapper = Wrapper\nDragDropFile.DropZone = DropZone\nDragDropFile.FileList = FileList\n\nexport default DragDropFile\n","import styled from 'styled-components'\nimport { Button } from 'components/Button'\n\nexport const NoPaddingButton = styled(Button).attrs({\n variant: 'tertiary',\n scale: 'small',\n})`\n padding: 0;\n\n > span {\n margin: 0 !important;\n }\n`\n","import React, { ChangeEvent, KeyboardEvent, useEffect, useState } from 'react'\n\nimport { Layout } from 'components/Layout'\nimport { Text } from 'components/Text'\nimport { TextField } from 'components/TextField'\nimport type { TablePaginationActionsProps } from 'components/TablePagination/TablePagination.types'\nimport styled from 'styled-components'\nimport { Icon, IconProps } from 'components/Icon'\nimport Keyboard from 'utils/toolset/keyboard'\nimport { NoPaddingButton } from './TablePagination.styles'\nimport { prop } from 'tools/index'\n\nexport const ActionIcon = styled(Icon).attrs({\n color: 'neutral-darker',\n size: '16',\n})<IconProps & { rotate?: number }>`\n transform: rotate(${prop('rotate', 0)}deg);\n`\n\nfunction TablePaginationActions({\n variant = 'default',\n disabled = false,\n onPageChange,\n page,\n count,\n rowsPerPage,\n}: TablePaginationActionsProps): JSX.Element {\n const totalPages = Math.ceil(count / rowsPerPage)\n const [pageValue, setPageValue] = useState<number | ''>(page + 1)\n const isCompact = variant === 'compact'\n\n useEffect(() => {\n setPageValue(page + 1)\n }, [page])\n\n const handleFirstPageClick = () => {\n onPageChange(0)\n }\n\n const handlePreviousPageClick = () => {\n onPageChange(page - 1)\n }\n\n const handleNextPageClick = () => {\n onPageChange(page + 1)\n }\n\n const handleLastPageClick = () => {\n onPageChange(totalPages - 1)\n }\n\n const publishPageChange = () => {\n if (pageValue && pageValue - 1 !== page) {\n onPageChange(pageValue - 1)\n }\n }\n\n const handleKeyUp = (e: KeyboardEvent) => {\n if (Keyboard(e).is('ENTER')) {\n publishPageChange()\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (Keyboard(e).is(['E_LOWERCASE', 'DOT', 'MINUS', 'PLUS'])) {\n e.preventDefault()\n }\n }\n\n const handlePageChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value === '') {\n setPageValue('')\n return\n }\n\n const numberValue = Number(e.target.value)\n\n if (!numberValue || numberValue < 1 || numberValue > totalPages) return\n\n setPageValue(numberValue)\n }\n\n return (\n <Layout.Group space=\"s\" align=\"center\">\n {!isCompact && (\n <NoPaddingButton\n onClick={handleFirstPageClick}\n disabled={page === 0 || disabled}\n title=\"First page\"\n >\n <ActionIcon name=\"caret-right-last\" rotate={180} />\n </NoPaddingButton>\n )}\n <NoPaddingButton\n onClick={handlePreviousPageClick}\n disabled={page === 0 || disabled}\n title=\"Previous page\"\n >\n <ActionIcon name=\"caret-left\" />\n </NoPaddingButton>\n {!isCompact && (\n <>\n <TextField\n type=\"number\"\n min={1}\n max={totalPages}\n disabled={disabled || totalPages === 1}\n onChange={handlePageChange}\n onBlur={publishPageChange}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n scale=\"small\"\n value={count ? pageValue : 0}\n title=\"Page\"\n />\n <Text variant=\"body\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n of{' '}\n <Text variant=\"body-bold\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {totalPages}\n </Text>\n </Text>\n </>\n )}\n <NoPaddingButton\n onClick={handleNextPageClick}\n disabled={page >= totalPages - 1 || disabled}\n title=\"Next page\"\n >\n <ActionIcon name=\"caret-right\" />\n </NoPaddingButton>\n {!isCompact && (\n <NoPaddingButton\n onClick={handleLastPageClick}\n disabled={page >= totalPages - 1 || disabled}\n title=\"Last page\"\n >\n <ActionIcon name=\"caret-right-last\" />\n </NoPaddingButton>\n )}\n </Layout.Group>\n )\n}\n\nexport default TablePaginationActions\n","import React from 'react'\nimport { Text } from 'components/Text'\nimport { Dropdown, DropdownContext } from 'components/Dropdown'\nimport { Layout } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport type { RowsPerPageProps } from './TablePagination.types'\nimport type { ButtonProps } from 'components/Button'\nimport { NoPaddingButton } from './TablePagination.styles'\nimport { Popover } from 'components/Popover'\n\nconst TriggerButton = (props: Omit<ButtonProps, 'scale' | 'variant'>) => {\n const { toggle } = React.useContext(DropdownContext)\n\n return (\n <Popover.Reference>\n <NoPaddingButton data-testid=\"rows-per-page-button\" onClick={toggle} {...props}>\n <Icon name=\"caret-down\" size={16} color=\"neutral-darker\" />\n </NoPaddingButton>\n </Popover.Reference>\n )\n}\n\nfunction RowsPerPage({\n page,\n rowsPerPage,\n onRowsPerPageChange,\n labelRowsPerPage,\n count,\n rowsPerPageOptions,\n disabled = false,\n position = 'bottom',\n align = 'start',\n}: RowsPerPageProps): JSX.Element {\n const getItemsRange = () => {\n if (!count) {\n return 0\n }\n\n const from = page * rowsPerPage + 1\n let to = (page + 1) * rowsPerPage\n\n if (to > count) {\n to = count\n }\n\n return `${from}-${to}`\n }\n\n return (\n <Layout.Group space=\"s\" align=\"center\">\n <Text variant=\"caption\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {labelRowsPerPage}\n </Text>\n <Text variant=\"body\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n <Text variant=\"body-bold\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {getItemsRange()}\n </Text>{' '}\n of{' '}\n <Text variant=\"body-bold\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {count}\n </Text>\n </Text>\n <Dropdown position={position} align={align}>\n <TriggerButton disabled={disabled} />\n <Dropdown.Menu>\n {rowsPerPageOptions.map((option) => (\n <Dropdown.Item\n key={option}\n onClick={() => onRowsPerPageChange(option)}\n trailing={option === rowsPerPage && <Icon name=\"check\" size={20} color=\"accent\" />}\n >\n {option} per page\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n </Layout.Group>\n )\n}\n\nexport default RowsPerPage\n","import React from 'react'\n\nimport { Layout } from 'components/Layout'\n\nimport type { TablePaginationProps } from './TablePagination.types'\nimport TablePaginationActions from 'components/TablePagination/TablePaginationActions'\nimport RowsPerPage from 'components/TablePagination/RowsPerPage'\n\nfunction TablePagination(props: TablePaginationProps): JSX.Element {\n const {\n variant = 'default',\n count,\n labelRowsPerPage = 'Rows per page:',\n onPageChange,\n onRowsPerPageChange,\n page,\n rowsPerPage = 50,\n rowsPerPageOptions = [10, 25, 50, 100],\n disabled = false,\n rowsPerPagePlacement,\n ...rest\n } = props\n\n return (\n <Layout.Group space=\"xl\" align=\"center\" justify=\"space-between\" {...rest}>\n <RowsPerPage\n page={page}\n count={count}\n onRowsPerPageChange={onRowsPerPageChange}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n labelRowsPerPage={labelRowsPerPage}\n disabled={disabled || !count}\n position={rowsPerPagePlacement?.position}\n align={rowsPerPagePlacement?.align}\n />\n <TablePaginationActions\n variant={variant}\n page={page}\n onPageChange={onPageChange}\n rowsPerPage={rowsPerPage}\n count={count}\n disabled={disabled || !count}\n />\n </Layout.Group>\n )\n}\n\nexport default TablePagination\n","import styled from 'styled-components'\nimport hiddenStyle from 'styles/hidden'\n\nexport const VisuallyHidden = styled.span`\n ${hiddenStyle(true)}\n`\n"],"names":["transitionStyle","options","property","timingFunction","duration","Wrapper","styled","span","withConfig","displayName","componentId","transition","props","$color","token","UnknownIcon","React","IconFactory","map","getIcon","name","String","toLowerCase","Icon","size","width","height","className","color","rest","I","icons","BurguerMenuIcon","calendar","CalendarIcon","CaretDownIcon","CaretLeftIcon","ChevronRightIcon","ChevronDownIcon","back","BackIcon","check","CheckIcon","circle","CircleIcon","close","CloseIcon","information","InformationIcon","minus","MinusIcon","plus","PlusIcon","refresh","RefreshIcon","sort","SortIcon","SortAscIcon","SortDescIcon","upload","UploadIcon","warning","WarningIcon","DotsHorizontalIcon","CaretRightLastIcon","interleave","array1","array2","safeArray1","toArray","safeArray2","isEmpty","flatten","element","index","activatableStyle","strings","args","safeStrings","concat","disableableStyle","ellipsizableStyle","focusableStyle","hoverableStyle","fontStyle","weight","family","transform","css","getToken","typographyProperties","fontSize","lineHeight","fontWeight","body","caption","fontFamily","textTransform","link","DEFAULT_VARIANT","getPropertiesByVariant","variant","typography","isFunction","properties","conditional","italic","ANIMATION_DURATION","animation","keyframes","Layer","path","Spinner","title","getSpace","prop","whenProps","GroupContainer","div","center","$align","stretch","$justify","Group","space","justify","align","children","StackContainer","Stack","BoxContainer","left","$textAlign","right","$background","$borderColor","$borderWidth","$borderRadius","Box","background","borderColor","borderRadius","borderWidth","padding","textAlign","SidebarContainer","$reversed","Sidebar","minContentWidth","reversed","sideWidth","SwitcherContainer","Switcher","limit","threshold","GridContainer","Grid","minColumnWidth","Layout","loading","Bar","velocity","LoadingBar","alignment","secondaryTitle","undefined","pulse","Dot","LoadingDots","StyledSpan","rem","Leading","Trailing","Children","ButtonProps","ellipsizable","BaseStyledButton","button","$scale","disableable","$loading","StyledButton","$variant","$scheme","hoverable","focusable","activatable","StyledSelector","TextHidden","StyledLoadingDots","attrs","role","ButtonLoadingDots","buttonVariant","remainingProps","buttonLightVariants","Set","loadingDotsVariant","has","ButtonChildrenWrapper","BaseButton","forwardRef","scale","leading","trailing","disabled","others","ref","Button","type","scheme","Caret","SelectorButton","omit","IconButton","CloseButton","BackButton","SelectorWrapper","StyledLabel","label","SelectionStyleProps","font","SelectionWrapper","selector","clsx","Check","Selector","input","Checkbox","Radio","useFocusWithin","onFocus","onBlur","focused","setFocused","useState","containerRef","useRef","getContainer","current","handleFocus","useCallback","handleBlur","useEffect","updateContainerRef","addEventListener","unsubscribe","removeEventListener","Status","Success","Danger","Warn","Neutral","InputWrapper","WithAdditionalProps","status","StyledInput","TextField","useTextField","onChange","onChangeProp","value","valueProp","setValue","handleChange","e","target","TextareaWrapper","StyledTextarea","textarea","Textarea","INSECURE_HREF","checkHref","href","isBlank","test","checkTarget","rel","sanitizedRel","split","filter","Boolean","add","Array","from","join","useSafeLink","StyledBaseAnchor","a","BaseLink","forwardedRef","StyledAnchor","Link","StyledLink","StyledLi","li","active","getWrappedLabel","url","onClick","isNil","Breadcrumb","StyledWrapper","nav","StyledOl","ol","StyledBackButton","Breadcrumbs","entries","onBack","entry","useDidMount","counter","onMount","GenericAdapter","getKey","o","get","createSelectionStrategy","adapters","multiple","context","getAdapter","MultipleSelectionStrategy","SingleSelectionStrategy","init","items","select","Map","newSelection","i","slice","length","adapter","_type","set","unselect","keys","selection","delete","toggle","clear","key","MAX_LENGTH","INITIAL_LENGTH","ALPHABET","IDGenerator","maxIDLength","initialIDLength","alphabet","currentLength","filledCharacters","fill","availableIDs","range","reduce","acc","n","Math","pow","getID","Error","newID","at","useFingerprint","knownRef","fingerprint","setFingerprint","getFingerprint","currentFingerprint","update","known","safeItems","newKnown","hasSameItems","Object","item","resetFingerprint","hasSameFingerprint","otherItems","DEFAULT_ADAPTERS","createUseSelectable","useSelectable","didMount","strategy","useMemo","reducer","state","action","payload","initializer","selected","dispatch","useReducer","identity","propagateChangeRef","updateOnSelectedPropChange","newSelected","createSelectable","SelectableContext","createContext","ToggleGroupContext","ToggleButton","$type","isMultiple","Toggle","group","useContext","selectable","Container","$multiple","fromValueToSelected","valueAsArray","fromSelectedToValue","pairs","option","push","DEFAULT_SELECTED","ToggleGroup","id","handleSelectionChange","renderOption","Option","TabContext","useID","propId","setID","updateID","TabsItemsWrapper","ul","StyledListItem","direction","row","column","TabsItems","TabsItem","default","isDefault","tabId","setActiveTab","activeTab","isActive","handleSelect","event","PanelsItemsWrapper","PanelsItemWrapper","article","block","none","PanelsItems","PanelsItem","lazy","hidden","TabsWrapper","Tabs","propTab","onTabChange","Items","Item","Panels","Panel","StyledSection","section","StyledSectionTitle","SectionTitle","Section","Title","hiddenStyle","accessible","AccordionContext","AccordionProvider","expanded","onExpandedChange","initialExpanded","openState","setOpenState","open","useAccordionContext","StyledToggle","StyledContent","HiddenInput","ToggleIndicator","AccordionWrapper","AccordionToggle","propsTrailing","AccordionBody","Accordion","Body","Description","TextSection","$dismissible","StyledBanner","Omit","wrap","DefaultCloseButton","IconWrapper","DefaultIcon","InlineButton","ButtonWrapper","LargeButtonWrapper","TextWrapper","getAlertIcon","icon","iconName","Banner","description","onClose","dismissible","visible","setVisible","isValidElement","BannerLarge","BannerAction","secondaryAction","onActionButtonClick","onSecondaryActionButtonClick","BannerActionLarge","TextProps","ModalWrapper","ModalWrapperProps","flex","HeaderWrapper","Close","Content","ContentProps","fullscreen","Header","Text","Modal","onOverlayClick","ReactDOM","createPortal","stopPropagation","document","h1","ActionWrapper","StyledDialogActions","$direction","end","initial","DialogActions","DialogActionConfirm","onConfirm","DialogActionCancel","onCancel","Dialog","ActionConfirm","ActionCancel","Actions","useDialog","openProp","onOpen","setOpen","show","hide","updateState","PopoverContext","usePopover","Popover","arrowRef","position","desiredPlacement","floating","useFloating","placement","middleware","offset","flip","shift","arrow","whileElementsMounted","autoUpdate","resultPosition","resultAlign","register","setReference","refs","setFloating","setArrow","result","floatingStyles","top","middlewareData","y","x","PopoverReference","PopoverFloating","style","Floating","Reference","TooltipPosition","Top","Bottom","Left","Right","TooltipAlign","Start","Center","End","ContainerProps","Bubble","StyledArrow","ArrowProps","Arrow","Tooltip","message","showTooltip","hideTooltip","StyledChildren","StyledRequired","sup","StyledTooltipAnchor","Label","as","required","tip","tipProps","tag","PAGINATION_ITEM_TYPE","endEllipsis","next","page","previous","startEllipsis","IconButtonDefault","PageButton","underline","ICONS_NAME","PaginationItem","itemType","toString","includes","PaginationHelper","boundaryCount","count","siblingCount","constructor","start","_","getStartPages","min","getEndPages","max","getSibilingsStart","getSibilingsEnd","endPages","getStartEllipsis","siblingsStart","getEndEllipsis","siblingsEnd","usePagination","paginationHelper","handleClick","startPages","itemList","getButtonPage","isDisabled","isNumber","Pagination","rounded","Line","Progress","ProgressProps","ProgressBar","showLine","extra","clampedValue","SwitchWrapper","Slider","ActiveIcon","InactiveIcon","Switch","onToggle","StyledTag","TagProps","removable","StyledCloseButton","StyledSpacer","Tag","onRemove","getRemoveButtonProps","ToastCountDown","INTERVAL","Toast","timeout","showIcon","setCount","decrementBy","interval","window","setTimeout","clearTimeout","ToastIcon","radioElement","getElementById","checked","getPanelRadioID","StepsContext","StepConnector","complete","ProgressStepWrapper","ProgressStepContainer","StepIndicator","StepLabel","ProgressStep","step","indicator","ProgressWrapper","StepsProgress","steps","renderStep","StepWrapper","StepsStep","StepsID","StepsWrapper","Steps","showCurrentStep","Step","useSteps","currentProp","stepIndexByID","initStepIndexByIDMap","forEach","currentIndex","getStepIndex","newCurrentIndex","stepID","stepIndex","CardTitle","CardSubtitle","CardSeparator","hr","CardBody","CardTitleWrapper","flagged","Flag","Card","Subtitle","Separator","DropdownContext","expandDisabled","StyledPopover","DropdownItemWrapper","DropdownSectionHeader","strong","DropdownSectionWrapper","GenericDropdownMenuWrapper","DropdownMenuWrapper","DropdownSeparator","DropdownMenu","header","footer","DropdownMenuItem","persist","shouldKeepOpen","DropdownMenuSection","SUPPORTED_KEYS","ALT","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","CONTROL","ENTER","ESCAPE","SHIFT","SPACE","TAB","E_LOWERCASE","DOT","PLUS","MINUS","getKeyboardKey","keyCode","indexOf","KeyboardKey","is","otherKeys","expectedKeys","otherKey","useClickOutside","container","callback","setActive","handleEvent","hasPressedEsc","hasTarget","contains","subscribe","dropdownExpandedStyle","triggerButtonAttrs","outlined","TriggerButton","capitalize","uppercase","DropdownTriggerWrapper","DropdownTriggerWrapperProps","$outlined","TriggerHandle","RotatableIcon","$rotate","DropdownTriggerButton","contextValue","renderChildren","DropdownTriggerHandle","GenericDropdownTrigger","DropdownTrigger","Handle","useDropdown","setExpanded","isExpanded","expand","collapse","closeWhenDisabled","DropdownWrapper","HiddenCloseButton","tabIndex","useDeprecatedAlignFromMenu","child","GenericDropdown","handleClickOutside","Dropdown","dropdownProps","Trigger","Menu","SelectContext","pluralize","plural","singular","GenericSelectTrigger","SelectTriggerSearchField","SelectTrigger","node","getFocusedIndexAfterKeyPress","currentFocused","focusableCounter","keyHandler","Tab","shiftKey","ArrowUp","ArrowDown","unknownKey","increment","getTabbableDescendants","querySelectorAll","useFocusTrap","onActivate","onDeactivate","setCurrentFocused","mutationObserverRef","focusableDescendants","setFocusableDescendants","subscribeToDOMMutationEvents","MutationObserver","observe","childList","unsubscribeToDOMMutationEvents","disconnect","initialize","onUnmount","subscribeToKeyEvents","handleKeyDownEvent","evt","supportedKeys","preventDefault","newCurrentFocused","focus","unsubscribeToKeyEvents","activate","deactivate","isThenable","object","isObject","getLabel","getValue","toSelection","safeValue","getDisplayValue","escapeRegExp","replace","getData","datasources","query","regex","RegExp","promises","types","ds","Promise","resolve","fetch","results","allSettled","getDatasources","getDatasourceFromOptions","useGenericDatasource","extractAdapters","TriggerOnFocusHandler","mapOptions","useOptions","setOptions","setStatus","timeoutRef","cancelPendingFetch","fetchAfterTimeout","values","reset","getOptionByKey","useSelect","onQueryChange","onCreate","getInputProps","isValidNewOption","createOptionPosition","triggerRef","focusTrap","queryTyped","setQueryTyped","setQuery","dropdown","getSelectableOption","getOption","toggleOption","getDropdownProps","getTriggerProps","sanitizedValue","getClearProps","getMenuProps","getOptionProps","getCreatebleProps","asyncOnClick","onCreateReturn","isCreatable","findByLabel","toLocaleLowerCase","isQueryEqualAnOption","find","getIsValidNewOption","onInit","onDropdownToggle","autoFocus","updateOnSelectedChange","highlightMatch","str","match","pre","mid","post","HighlightMatchWrapper","HighlightMatch","text","DefaultGroup","DefaultSelectOption","SelectOption","renderContent","SelectEmpty","SelectCreatableOption","defaultComponents","Empty","CreatableOption","getComponents","components","OMITTED_PROPS","Loading","getCommonClearButtonProps","SelectMenu","ClearMultiple","total","Divider","DividerText","isQuerying","after","before","renderOptionsSingle","renderOptionsMultiple","selectedOptions","remainingOptions","remaining","Select","placeholder","hideClear","renderOptions","getTrailing","useSelectExternal","isChecked","Logo","updateHeight","el","getBoundingClientRect","useHeightExpansionToggler","targetElRef","toggleState","prevState","totalHeight","setTotalHeight","useLayoutEffect","observer","mounted","finalHeight","StyledMenuItem","Flex","MenuBaseItem","MenuLink","StyledIcon","IExpandable","$expanded","ExpandableItems","ItemsWrapper","MenuExpandable","expandableItemsRef","cloneElement","ariaHidden","styledCompounds","Parent","compounds","MenuTitle","menuId","MenuItem","StyledMenu","SubItem","aside","SideNavigation","useWindowSize","windowSize","setWindowSize","innerWidth","innerHeight","handleResize","transformInPixels","parseFloat","BASE_PIXELS","useSideNavigation","useWindowResize","theme","useTheme","shouldOpen","breakpoint","breakpointInPixels","StyledAside","Pick","StyledHeader","StyledBody","StyledFooter","DrawerHeader","DrawerBody","DrawerFooter","Drawer","onClickOutside","invisible","setInvisible","handleTransitionEnd","currentRef","hasClickedOutside","isSameNode","Footer","getSelectableProps","config","defaults","generic","useTableSelectionCore","registered","setRegistered","selectableProps","allRowsAreSelected","prev","alreadyRegistered","some","prevRow","toggleAll","TableSelectionContext","TableSelectionProvider","selectionCore","useTableSelection","useSelection","isCellSelected","selectedRows","useIsCellSelected","DefaultBox","TableSortHandle","order","StyledTableBody","tbody","StyledTableFoot","tfoot","StyledTableCaption","$position","StyledCell","StyledTableCell","td","format","StyledTableHeadCell","th","pointer","clickable","normal","StyledTableHead","thead","StyledTableRow","tr","solid","StyledExpandableContentRow","StyledTable","table","Table","TableCaptionInner","TableCaption","TableHead","TableBody","TableCell","SelectionCell","Input","SelectionHeadCell","Fragment","TableRow","useIsRowSelected","ExpandableTableRow","expandableContent","propsLeading","colSpan","isArray","TableHeadCell","ActionsWrapper","TableSelectionActions","buttons","Action","StyledPickerTrigger","InternalButton","TablePickerItem","TriggerIcon","TablePicker","trigger","propsTrigger","arrChildren","selectionCellChild","Head","Row","Cell","HeadCell","Foot","Caption","Selection","ExpandableRow","SortHandle","Picker","MenuDropdown","MenuDropdownSeparator","MenuDropdownTrigger","MenuDropdownLabel","Ellipsizable","$max","MenuDropdownSubItemLink","MenuDropdownSubItem","MenuItemDropdown","labelId","hasIcon","MenuItemIcon","MenuContainer","OpenSideNavButton","removeRightPadding","TopNavigation","VerticalWrapper","EmptyStateWithIcon","isHorizontal","Illustration","illustration","EmptyStateWithIllustration","isPageVariant","EmptyState","aliased","aliasMap","alias","MONTH_BY_ALIAS","jan","january","feb","february","mar","march","apr","april","may","jun","june","jul","july","aug","august","sep","september","oct","october","nov","november","dec","december","MONTH_BY_NAME","getMonthByAlias","getAllMonths","MonthHelper","month","representation","padStart","other","getAll","PickerModeToggle","DEFAULT_OPTIONS","normalize","DateHelper","dateArg","optionsArg","utcDate","normalizeToUTC","date","Date","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getYear","getMonth","getDate","getTime","getWeekday","getUTCDay","getHours","getMinutes","getSeconds","getMilliseconds","matches","constraints","constraintEvaluators","getConstraintEvaluator","evaluator","unit","subtract","newValue","year","day","hour","minute","second","millisecond","setUTCFullYear","setUTCMonth","setUTCDate","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","operator","precision","compare","b","getComparableDate","toISOString","DATE_ZERO","MIN_SUPPORTED_DATE","COMPARE_TO","sliceIndex","normalizedPart","datePart","normalizedDate","getConstraintRange","rangeArg","timestamp","rangeStart","rangeEnd","MAX_SUPPORTED_DATE","newDate","constraint","InvalidDateConstraintError","padded","maxLength","TODAY","useCalendar","onSelect","mode","amountOfMonthsToRender","setSelected","getSelectionPair","renderableMonths","setRenderableMonths","getRenderableMonths","initialMonth","getFullYear","getSelectionBoundary","boundary","onMonthOrYearPropsChange","onSelectedPropChange","months","DAY_IN_MILLISECONDS","getRenderableMonth","firstDayOfTheWeek","totalDaysInMonth","days","amount","getOrdinalSuffix","number","getTokenValue","DEFAULT_FORMATTERS","ADDITIONAL_FORMATTERS","DateFormatHelper","tokens","tokenizer","previousIndex","previousToken","COMPOUND_FORMATTERS","valid","getType","char","isEscaping","charAt","MM","Intl","DateTimeFormat","MMM","MMMM","D","DD","ddd","weekday","dddd","YYYY","HH","hourCycle","hh","hour12","mm","ss","A","toUpperCase","parseInt","PickerButton","$status","WEEKDAYS","formatter","getStatus","isPastYearDay","DefaultText","CalendarDayPicker","onDayClick","renderDaysOfWeek","textDecoration","renderDaysOfMonth","formatted","CalendarMonthPicker","DefaultPickerButton","CalendarYearPicker","usePickerMode","DayPicker","MonthPicker","YearPicker","BorderlessButton","GenericCalendar","onMonthClick","onYearClick","Calendar","getSelection","formatDate","Number","isNaN","getInitialCalendarSetup","selectionStart","startDate","setInputValue","getInputValue","useDatePicker","handleDateSelect","inputRef","formattedDate","handleDateInputChange","handleDateInputClick","handleDayClick","handleClearClick","currSelectedDate","currInputValue","getCalendarProps","onValuePropChange","currSelection","DATE_REGEX","DefaultTextField","ClearButton","DateInput","handleInputChange","DatePicker","datePicker","renderTrailing","AT_RANGE_START","AT_RANGE_END","useDateRangePicker","inputsRef","currentlyPickingRef","getDateInputChangeHandler","handleDropdownBlur","every","handleDoneClick","getRangeStartInputProps","getRangeEndInputProps","getDoneProps","currSelected","hasChanged","DropdownFooter","DateRangePicker","dateRangePicker","renderRangeEndTrailing","currRangeStart","currRangeEnd","renderDropdownFooter","ErrorMessage","DragDropFileWrapper","withFileList","DropZoneWrapper","error","FileListUL","fileList","useDragDropFileContext","DropZone","hint","accept","renderCustomContent","onFilesAdded","isDragging","setIsDragging","onChangeInput","currentTarget","files","onKeyPress","click","onDrop","dataTransfer","onDragStart","onDragOver","onDragLeave","renderDefaultContent","BYTES_PER_KILOBYTE","FILE_SIZE_ABBREVIATIONS","formatBytes","bytes","decimals","bytesValue","dm","floor","log","unitAbbr","toFixed","FileName","file","FileActionButton","onRetry","LoadingFile","actionProps","ErrorFile","errorMessage","SuccessFile","FILE_ITEM_BY_STATUS","success","FileItem","FileItemComponent","FileList","onRemoveFile","onRetryUpload","uploadedFiles","DragDropFile","NoPaddingButton","ActionIcon","TablePaginationActions","onPageChange","rowsPerPage","totalPages","ceil","pageValue","setPageValue","isCompact","handleFirstPageClick","handlePreviousPageClick","handleNextPageClick","handleLastPageClick","publishPageChange","handleKeyUp","Keyboard","handleKeyDown","handlePageChange","numberValue","RowsPerPage","onRowsPerPageChange","labelRowsPerPage","rowsPerPageOptions","getItemsRange","to","TablePagination","rowsPerPagePlacement","VisuallyHidden"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/styles/transition.tsx","../src/components/IconFactory/IconFactory.tsx","../src/components/Icon/assets/back.svg","../src/components/Icon/assets/burger-menu.svg","../src/components/Icon/assets/calendar.svg","../src/components/Icon/assets/caret-down.svg","../src/components/Icon/assets/caret-left.svg","../src/components/Icon/assets/check.svg","../src/components/Icon/assets/chevron-down.svg","../src/components/Icon/assets/caret-right.svg","../src/components/Icon/assets/circle.svg","../src/components/Icon/assets/close.svg","../src/components/Icon/assets/information.svg","../src/components/Icon/assets/minus.svg","../src/components/Icon/assets/plus.svg","../src/components/Icon/assets/refresh.svg","../src/components/Icon/assets/sort-asc.svg","../src/components/Icon/assets/sort-desc.svg","../src/components/Icon/assets/sort.svg","../src/components/Icon/assets/upload.svg","../src/components/Icon/assets/warning.svg","../src/components/Icon/assets/dots-horizontal.svg","../src/components/Icon/assets/caret-right-last.svg","../src/components/Icon/Icon.tsx","../src/utils/toolset/interleave.ts","../src/styles/activatable.tsx","../src/styles/disableable.tsx","../src/styles/ellipsizable.tsx","../src/styles/focusable.tsx","../src/styles/hoverable.tsx","../src/styles/font.tsx","../src/styles/typography.ts","../src/components/Loaders/Spinner.tsx","../src/components/Layout/Layout.utils.ts","../src/components/Layout/Group.tsx","../src/components/Layout/Stack.tsx","../src/components/Layout/Box.tsx","../src/components/Layout/Sidebar.tsx","../src/components/Layout/Switcher.tsx","../src/components/Layout/Grid.tsx","../src/components/Layout/Layout.tsx","../src/components/Loaders/LoadingBar.tsx","../src/components/Loaders/LoadingDots.tsx","../src/components/Button/Button.tsx","../src/common/CloseButton/CloseButton.tsx","../src/common/BackButton/BackButton.tsx","../src/common/SelectionWrapper.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/hooks/useFocusWithin/useFocusWithin.ts","../src/utils/types/Status.ts","../src/components/TextField/TextField.tsx","../src/components/TextField/useTextField.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Link/useSafeLink.ts","../src/components/Link/Link.tsx","../src/components/Breadcrumbs/Breadcrumb.tsx","../src/components/Breadcrumbs/Breadcrumbs.tsx","../src/hooks/useDidMount/useDidMount.ts","../src/hooks/useSelectable/SelectableStrategy.ts","../src/utils/toolset/getID.ts","../src/hooks/useFingerprint/useFingerprint.ts","../src/hooks/useSelectable/useSelectable.ts","../src/components/ToggleGroup/ToggleGroupContext.ts","../src/components/ToggleGroup/Toggle.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Tabs/TabsContext.ts","../src/hooks/useID/useID.ts","../src/components/Tabs/Tabs.tsx","../src/components/Section/Section.tsx","../src/styles/hidden.tsx","../src/components/Accordion/Accordion.context.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Banner/Banner.tsx","../src/components/Text/Text.tsx","../src/components/Modal/Modal.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Dialog/useDialog.tsx","../src/components/Popover/Popover.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Label/Label.tsx","../src/components/Pagination/Pagination.constants.ts","../src/components/Pagination/PaginationItem.tsx","../src/components/Pagination/Pagination.helper.ts","../src/components/Pagination/usePagination.ts","../src/components/Pagination/Pagination.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/Switch/Switch.tsx","../src/components/Tag/Tag.tsx","../src/components/Toast/Toast.tsx","../src/components/Steps/Steps.helpers.ts","../src/components/Steps/StepsContext.ts","../src/components/Steps/ProgressSteps/ProgressStep.tsx","../src/components/Steps/ProgressSteps/ProgressSteps.tsx","../src/components/Steps/StepsStep.tsx","../src/components/Steps/Steps.tsx","../src/components/Steps/useSteps.ts","../src/components/Card/CardTitle.tsx","../src/components/Card/Card.tsx","../src/components/Dropdown/Dropdown.context.ts","../src/components/Dropdown/DropdownMenu.tsx","../src/utils/toolset/keyboard.ts","../src/hooks/useClickOutside/useClickOutside.ts","../src/components/Dropdown/DropdownTrigger.tsx","../src/components/Dropdown/useDropdown.ts","../src/components/Dropdown/Dropdown.tsx","../src/components/Select/Select.context.ts","../src/utils/toolset/pluralize.ts","../src/components/Select/SelectTrigger.tsx","../src/hooks/useFocusTrap/useFocusTrap.ts","../src/components/Select/Select.constants.ts","../src/components/Select/useSelect.helpers.ts","../src/components/Select/useSelect.ts","../src/utils/toolset/highlightMatch.tsx","../src/components/HighlightMatch/HighlightMatch.tsx","../src/components/Select/SelectOption.tsx","../src/components/Select/SelectEmpty.tsx","../src/components/Select/SelectCreatableOption.tsx","../src/components/Select/components.tsx","../src/components/Select/Select.tsx","../src/components/Select/useSelectExternal.ts","../src/components/SideNavigation/Logo/Logo.tsx","../src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts","../src/components/SideNavigation/Menu/MenuBaseItem.tsx","../src/components/SideNavigation/Menu/MenuLink.tsx","../src/components/SideNavigation/Menu/MenuExpandable.tsx","../src/utils/toolset/styledCompounds.ts","../src/components/SideNavigation/Menu/Menu.tsx","../src/components/SideNavigation/Separator/Separator.tsx","../src/components/SideNavigation/SideNavigation.tsx","../src/hooks/useWindowResize/useWindowResize.ts","../src/components/SideNavigation/useSideNavigation.ts","../src/components/Drawer/Drawer.tsx","../src/components/Table/Selection.tsx","../src/components/Table/TableSortHandle.tsx","../src/components/Table/Table.tsx","../src/components/TopNavigation/Logo/Logo.tsx","../src/components/TopNavigation/Menu/MenuItemDropdown.tsx","../src/components/TopNavigation/Menu/MenuItemIcon.tsx","../src/components/TopNavigation/Menu/Menu.tsx","../src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx","../src/components/TopNavigation/TopNavigation.tsx","../src/components/EmptyState/EmptyStateWithIcon.tsx","../src/components/EmptyState/Illustration.tsx","../src/components/EmptyState/EmptyStateWithIllustration.tsx","../src/components/EmptyState/EmptyState.tsx","../src/components/Calendar/Month.helper.ts","../src/components/Calendar/PickerModeToggle.tsx","../src/components/Calendar/Date.helper.ts","../src/components/Calendar/useCalendar.ts","../src/utils/toolset/getOrdinalSuffix.ts","../src/components/Calendar/DateFormat.helper.ts","../src/components/Calendar/Pickers/PickerButton.tsx","../src/components/Calendar/Pickers/DayPicker.tsx","../src/components/Calendar/Pickers/MonthPicker.tsx","../src/components/Calendar/Pickers/YearPicker.tsx","../src/components/Calendar/usePickerMode.ts","../src/components/Calendar/Calendar.tsx","../src/components/Calendar/Calendar.helpers.ts","../src/components/DatePicker/useDatePicker.ts","../src/components/DatePicker/DatePicker.tsx","../src/components/DatePicker/useDateRangePicker.ts","../src/components/DatePicker/DateRangePicker.tsx","../src/components/ErrorMessage/ErrorMessage.tsx","../src/components/DragDropFile/styles.tsx","../src/components/DragDropFile/components/Wrapper.tsx","../src/components/DragDropFile/components/DropZone.tsx","../src/utils/toolset/formatBytes.ts","../src/components/DragDropFile/components/FileItem.tsx","../src/components/DragDropFile/components/FileList.tsx","../src/components/DragDropFile/DragDropFile.tsx","../src/components/TablePagination/TablePagination.styles.ts","../src/components/TablePagination/TablePaginationActions.tsx","../src/components/TablePagination/RowsPerPage.tsx","../src/components/TablePagination/TablePagination.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx"],"sourcesContent":["interface TransitionStyleOptions {\n property?: string\n timingFunction?: string\n duration?: string\n}\n\n/**\n * Add basic CSS style for default transition parameters\n */\nfunction transitionStyle(options?: TransitionStyleOptions): string {\n // TODO: add parameter to type of transition\n\n return `\n transition-property: ${\n options?.property ||\n 'background, border-color, box-shadow, color, fill, left, stroke, transform, opacity'\n };\n transition-timing-function: ${options?.timingFunction || 'cubic-bezier(0.4, 0, 0.2, 1)'};\n transition-duration: ${options?.duration || '450ms'};\n transition-delay: 0ms;\n `\n}\n\nexport default transitionStyle\n","import type { ComponentType } from 'react'\nimport React, { type ReactNode } from 'react'\nimport styled from 'styled-components'\n\nimport transition from 'styles/transition'\nimport { getToken as token } from 'theming'\n\nimport type { ThemeToken } from 'theming'\n\ntype ThemeColors = keyof {\n [ColorToken in ThemeToken as ColorToken extends `color-${infer Token}`\n ? Token\n : never]: ColorToken\n}\n\nconst Wrapper = styled.span<{ $color?: ThemeColors }>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n &,\n & > svg {\n ${transition({\n property: 'transform',\n })}\n\n /*\n * prop('$color', 'currentColor')\n * Not using the prop helper function since we can't return\n * an evaluated token from it\n */\n color: ${(props) =>\n props.$color ? token(`color-${props.$color}` as ThemeToken, props) : 'currentColor'};\n\n fill: currentColor;\n }\n`\n\nexport interface IconProps<T> {\n readonly name: keyof T\n readonly size?: string | number\n readonly width?: string | number\n readonly height?: string | number\n readonly className?: string\n readonly color?: ThemeColors\n}\n\nexport type IconMapping = Record<string, ComponentType<Omit<IconProps<string>, 'name'>>>\n\nexport function UnknownIcon(): ReactNode {\n return <span aria-label=\"Unknown icon\">&#9785;</span>\n}\n\nfunction IconFactory(map: IconMapping): ComponentType<IconProps<typeof map>> {\n function getIcon(name: keyof typeof map): ComponentType<Omit<IconProps<typeof map>, 'name'>> {\n name = (name ?? '').toLowerCase()\n\n if (!(name in map)) {\n return UnknownIcon\n }\n\n return map[name]\n }\n\n return function Icon(props: IconProps<typeof map>) {\n const { name, size, width = '1em', height = '1em', className, color, ...rest } = props\n\n const I = getIcon(name)\n return (\n <Wrapper className={className} $color={color}>\n <I width={size || width} height={size || height} {...rest} />\n </Wrapper>\n )\n }\n}\n\nexport default IconFactory\n","import * as React from \"react\";\nconst SvgBack = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 0h24v24H0V0z\", fill: \"none\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\" }));\nexport default SvgBack;\n","import * as React from \"react\";\nconst SvgBurgerMenu = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M4 37.6667H44V33.2222H4V37.6667ZM4 26.5556H44V22.1111H4V26.5556ZM4 11V15.4444H44V11H4Z\", fill: \"#313336\" }));\nexport default SvgBurgerMenu;\n","import * as React from \"react\";\nconst SvgCalendar = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 0h24v24H0V0z\", fill: \"none\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 18H4V10h16v11zm0-13H4V5h16v3z\" }));\nexport default SvgCalendar;\n","import * as React from \"react\";\nconst SvgCaretDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M24 30L13 19H35L24 30Z\", clipRule: \"evenodd\" }));\nexport default SvgCaretDown;\n","import * as React from \"react\";\nconst SvgCaretLeft = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M30 42.3848L34.2426 38.1421L20.1005 24L34.2426 9.85786L30 5.61522L15.8579 19.7574L11.6152 24L15.8579 28.2426L30 42.3848Z\" }));\nexport default SvgCaretLeft;\n","import * as React from \"react\";\nconst SvgCheck = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M44.4203 13.3431L40.1777 9.1005L18.9645 30.3137L9.06496 20.4142L4.82232 24.6569L14.7218 34.5563L18.9645 38.799L23.2071 34.5563L44.4203 13.3431Z\" }));\nexport default SvgCheck;\n","import * as React from \"react\";\nconst SvgChevronDown = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6-1.41-1.41z\" }));\nexport default SvgChevronDown;\n","import * as React from \"react\";\nconst SvgCaretRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M18 5.61522L13.7574 9.85786L27.8995 24L13.7574 38.1421L18 42.3848L32.1421 28.2426L36.3848 24L32.1421 19.7574L18 5.61522Z\" }));\nexport default SvgCaretRight;\n","import * as React from \"react\";\nconst SvgCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 18 18\", ...props }, /* @__PURE__ */ React.createElement(\"circle\", { cx: 9, cy: 9, r: 9, fillRule: \"evenodd\" }));\nexport default SvgCircle;\n","import * as React from \"react\";\nconst SvgClose = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 20 20\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M17.0711 4.69671L15.3033 2.92894L10 8.23224L4.6967 2.92894L2.92893 4.69671L8.23223 10L2.92893 15.3033L4.6967 17.0711L10 11.7678L15.3033 17.0711L17.0711 15.3033L11.7678 10L17.0711 4.69671Z\" }));\nexport default SvgClose;\n","import * as React from \"react\";\nconst SvgInformation = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M12 2C6.48625 2 2 6.48625 2 12C2 17.5138 6.48625 22 12 22C17.5138 22 22 17.5138 22 12C22 6.48625 17.5138 2 12 2ZM12 19.2727C11.2473 19.2727 10.6364 18.6618 10.6364 17.9091C10.6364 17.1564 11.2473 16.5455 12 16.5455C12.7527 16.5455 13.3636 17.1564 13.3636 17.9091C13.3636 18.6618 12.7527 19.2727 12 19.2727ZM13.3636 14.2727H10.6364L10.6364 5.18182L13.3636 5.18182L13.3636 14.2727Z\" }));\nexport default SvgInformation;\n","import * as React from \"react\";\nconst SvgMinus = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M0 0h24v24H0V0z\", fill: \"none\" }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M19 13H5v-2h14v2z\" }));\nexport default SvgMinus;\n","import * as React from \"react\";\nconst SvgPlus = (props) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"rect\", { fill: \"none\", height: 24, width: 24 }), /* @__PURE__ */ React.createElement(\"path\", { d: \"M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6V13z\" }));\nexport default SvgPlus;\n","import * as React from \"react\";\nconst SvgRefresh = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 12 12\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M6.782 1.5a4.499 4.499 0 0 0-4.437 3.785l-.89-.888-.705.705 2.123 2.123 2.12-2.122-.708-.708-.935.935A3.503 3.503 0 0 1 6.782 2.5c1.93 0 3.5 1.57 3.5 3.5s-1.57 3.5-3.5 3.5v1a4.5 4.5 0 0 0 0-9Z\" }));\nexport default SvgRefresh;\n","import * as React from \"react\";\nconst SvgSortAsc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 11\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_1\", fill: \"#313336\", d: \"m4.58334,0l4.58332,4.41667l-9.16666,0l4.58334,-4.41667z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_2\", fill: \"#CACCCF\", d: \"m4.58335,10.83337l-4.58333,-4.4167l9.16664,0l-4.58331,4.4167z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }));\nexport default SvgSortAsc;\n","import * as React from \"react\";\nconst SvgSortDesc = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 11\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_1\", fill: \"#CACCCF\", d: \"m4.58334,0l4.58332,4.41667l-9.16666,0l4.58334,-4.41667z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_2\", fill: \"#313336\", d: \"m4.58335,10.83337l-4.58333,-4.4167l9.16664,0l-4.58331,4.4167z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }));\nexport default SvgSortDesc;\n","import * as React from \"react\";\nconst SvgSort = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 10 11\", xmlns: \"http://www.w3.org/2000/svg\", fill: \"none\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_1\", fill: \"#313336\", d: \"m4.58334,0l4.58332,4.41667l-9.16666,0l4.58334,-4.41667z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }), /* @__PURE__ */ React.createElement(\"path\", { id: \"svg_2\", fill: \"#313336\", d: \"m4.58335,10.83337l-4.58333,-4.4167l9.16664,0l-4.58331,4.4167z\", clipRule: \"evenodd\", fillRule: \"evenodd\" }));\nexport default SvgSort;\n","import * as React from \"react\";\nconst SvgUpload = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M39.0129 20.0894H29.9817V36.097H19.0291V20.0894H9.01953L24.1351 5L39.0129 20.0894ZM9 40V44H39V40H9Z\" }));\nexport default SvgUpload;\n","import * as React from \"react\";\nconst SvgWarning = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 24 24\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { clipRule: \"evenodd\", d: \"M3.79753 20.9444H20.2031C21.1809 20.9444 21.8064 19.9034 21.3454 19.0421L13.142 3.68477C12.655 2.77174 11.3443 2.77174 10.856 3.68477L2.65392 19.0421C2.19415 19.9034 2.8197 20.9444 3.79753 20.9444ZM10.7045 9.30522H13.2948V14.4782H10.7045V9.30522ZM11.9996 15.7715C12.7146 15.7715 13.2948 16.3508 13.2948 17.0647C13.2948 17.7786 12.7146 18.358 11.9996 18.358C11.2847 18.358 10.7045 17.7786 10.7045 17.0647C10.7045 16.3508 11.2847 15.7715 11.9996 15.7715Z\" }));\nexport default SvgWarning;\n","import * as React from \"react\";\nconst SvgDotsHorizontal = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M14 24a5 5 0 11-10 0 5 5 0 0110 0zm15 0a5 5 0 11-10 0 5 5 0 0110 0zm15 0a5 5 0 11-10 0 5 5 0 0110 0z\", fill: \"currentColor\", fillRule: \"evenodd\" }));\nexport default SvgDotsHorizontal;\n","import * as React from \"react\";\nconst SvgCaretRightLast = (props) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 48 48\", fill: \"currentColor\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M18.2501 6.38126L14.1842 10.4471L27.7371 24L14.1842 37.5529L18.2501 41.6187L31.803 28.0659L35.8688 24L31.803 19.9341L18.2501 6.38126Z\" }), /* @__PURE__ */ React.createElement(\"path\", { fillRule: \"evenodd\", clipRule: \"evenodd\", d: \"M40.2922 38.375L44.1256 38.375L44.1256 9.625L40.2922 9.625L40.2922 38.375Z\" }));\nexport default SvgCaretRightLast;\n","import { IconFactory } from '../IconFactory'\n\nimport BackIcon from './assets/back.svg'\nimport BurguerMenuIcon from './assets/burger-menu.svg'\nimport CalendarIcon from './assets/calendar.svg'\nimport CaretDownIcon from './assets/caret-down.svg'\nimport CaretLeftIcon from './assets/caret-left.svg'\nimport CheckIcon from './assets/check.svg'\nimport ChevronDownIcon from './assets/chevron-down.svg'\nimport ChevronRightIcon from './assets/caret-right.svg'\nimport CircleIcon from './assets/circle.svg'\nimport CloseIcon from './assets/close.svg'\nimport InformationIcon from './assets/information.svg'\nimport MinusIcon from './assets/minus.svg'\nimport PlusIcon from './assets/plus.svg'\nimport RefreshIcon from './assets/refresh.svg'\nimport SortAscIcon from './assets/sort-asc.svg'\nimport SortDescIcon from './assets/sort-desc.svg'\nimport SortIcon from './assets/sort.svg'\nimport UploadIcon from './assets/upload.svg'\nimport WarningIcon from './assets/warning.svg'\nimport DotsHorizontalIcon from './assets/dots-horizontal.svg'\nimport CaretRightLastIcon from './assets/caret-right-last.svg'\n\nimport type { IconProps as GenericIconProps } from '../IconFactory'\n\nconst icons = {\n 'burguer-menu': BurguerMenuIcon,\n calendar: CalendarIcon,\n 'caret-down': CaretDownIcon,\n 'caret-left': CaretLeftIcon,\n 'caret-right': ChevronRightIcon,\n 'chevron-down': ChevronDownIcon,\n back: BackIcon,\n check: CheckIcon,\n circle: CircleIcon,\n close: CloseIcon,\n information: InformationIcon,\n minus: MinusIcon,\n plus: PlusIcon,\n refresh: RefreshIcon,\n sort: SortIcon,\n 'sort-asc': SortAscIcon,\n 'sort-desc': SortDescIcon,\n upload: UploadIcon,\n warning: WarningIcon,\n 'dots-horizontal': DotsHorizontalIcon,\n 'caret-right-last': CaretRightLastIcon,\n}\n\nconst Icon = IconFactory(icons)\n\nexport type IconProps = GenericIconProps<typeof icons>\n\nexport default Icon\n","import isEmpty from './isEmpty'\nimport toArray from './toArray'\n\n// TODO: add this helper to @loadsmart/utils\n\nfunction interleave<T>(array1: Array<T>, array2: Array<T>): T[] {\n const safeArray1 = toArray(array1)\n const safeArray2 = toArray(array2)\n\n if (isEmpty(safeArray1) && isEmpty(safeArray2)) {\n return []\n }\n if (isEmpty(safeArray1)) {\n return safeArray2\n }\n if (isEmpty(safeArray2)) {\n return safeArray1\n }\n\n return safeArray1.flatMap((element, index) => [element, safeArray2[index]])\n}\n\nexport default interleave\n","import interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n\n/**\n * Add basic CSS style wrapping block for `:active` state.\n * It returns an array to allow handling of nested interpolation\n * @param strings - String parts for the interpolation.\n * @param args - Interpolated items.\n */\nfunction activatableStyle(\n strings: ReadonlyArray<string> | Array<string> = [],\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = strings.concat() // ReadonlyArray -> Array\n\n return [\n `\n &:enabled:not(.is-disabled) {\n &:active {`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n }\n `,\n ]\n}\n\nexport default activatableStyle\n","import interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n\n/**\n * Add basic CSS style wrapping block for `:disabled` state or `.is-disabled` class.\n * It returns an array to allow handling of nested interpolation\n * @param strings - String parts for the interpolation.\n * @param args - Interpolated items.\n * @returns Interpolated style array.\n */\nfunction disableableStyle(\n strings: ReadonlyArray<string> | Array<string> = [],\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = strings.concat() // ReadonlyArray -> Array\n\n return [\n `\n &.is-disabled,\n &:disabled {\n cursor: not-allowed;\n opacity: 0.40;\n\n user-select: none;\n\n &:active {\n pointer-events: none;\n }`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n\n // prevent overlapping the opacity for nested disabled elements\n .is-disabled &.is-disabled,\n .is-disabled &[disabled],\n [disabled] &[disabled],\n [disabled] &.is-disabled {\n opacity: 1 !important;\n }\n `,\n ]\n}\n\nexport default disableableStyle\n","/**\n * Add basic CSS style for ellipsizing the content of an element.\n * Setting `max-width` is a responsibility of the caller.\n */\nfunction ellipsizableStyle(): string {\n return `\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n `\n}\n\nexport default ellipsizableStyle\n","import interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n/**\n * Add basic CSS style wrapping block for `:active` state.\n * It returns an array to allow handling of nested interpolation\n * @param strings - String parts for the interpolation.\n * @param args - Interpolated items.\n * @returns Interpolated style array.\n */\nfunction focusableStyle(\n strings: ReadonlyArray<string> | Array<string> = [],\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = strings.concat() // ReadonlyArray -> Array\n\n return [\n `\n outline: none;\n\n &:focus,\n &:focus-within,\n &.is-focused {\n outline: none;`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n `,\n ]\n}\n\nexport default focusableStyle\n","import interleave from 'utils/toolset/interleave'\nimport type { InterpolatedStyle } from 'utils/types/InterpolatedStyle'\n\n/**\n * Add basic CSS style wrapping block for `:hover` state; it includes check for non-disabled (`:enabled` or not `.is-disabled`) elements.\n * It returns an array to allow handling of nested interpolation\n * @param strings - String parts for the interpolation.\n * @param args - Interpolated items.\n * @returns Interpolated style array.\n */\nfunction hoverableStyle(\n strings: ReadonlyArray<string> | Array<string> = [],\n ...args: any[]\n): InterpolatedStyle {\n const safeStrings = strings.concat() // ReadonlyArray -> Array\n\n return [\n `\n &:not(.is-disabled):not(:disabled) {\n &:hover {`,\n ...(interleave(safeStrings, args) as InterpolatedStyle),\n `\n }\n }\n `,\n ]\n}\n\nexport default hoverableStyle\n","import { css } from 'styled-components'\nimport type { FlattenInterpolation } from 'styled-components'\n\nimport { getToken } from 'theming'\nimport type { ThemedProps, ThemeToken } from 'theming'\n\ninterface FontStyleOptions {\n size?: ThemeToken\n family?: ThemeToken\n weight?: ThemeToken\n height?: ThemeToken\n color?: ThemeToken\n transform?: 'uppercase' | 'none'\n}\n\n/**\n * Add basic CSS style for default font\n */\nfunction fontStyle({\n color = 'color-neutral-darkest',\n weight = 'font-weight-regular',\n size = 'font-size-4',\n family = 'font-family-default',\n height = 'font-height-3',\n transform = 'none',\n}: FontStyleOptions): FlattenInterpolation<ThemedProps> {\n return css`\n color: ${getToken(color)};\n font-weight: ${getToken(weight)};\n font-size: ${getToken(size)};\n font-family: ${getToken(family)};\n line-height: ${getToken(height)};\n text-transform: ${transform};\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n `\n}\n\nexport default fontStyle\n","import { css } from 'styled-components'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport conditional from 'tools/conditional'\nimport type { ThemeToken } from 'theming'\nimport fontStyle from './font'\n\nexport interface TypographyOptions {\n italic?: boolean\n color?: ThemeToken\n}\n\ninterface PropertiesToken {\n fontSize: ThemeToken\n lineHeight: ThemeToken\n fontWeight: ThemeToken\n fontFamily?: ThemeToken\n textTransform?: 'none' | 'uppercase'\n color?: ThemeToken\n}\n\nexport type TypographyVariants =\n | 'heading-lg'\n | 'heading-md'\n | 'heading-md-bold'\n | 'heading-sm'\n | 'heading-sm-bold'\n | 'body'\n | 'body-bold'\n | 'caption'\n | 'caption-bold'\n | 'number-sm'\n | 'number-md'\n | 'button-sm'\n | 'button-md'\n | 'button-lg'\n | 'table-header-sm'\n | 'table-header-md'\n | 'chips-sm'\n | 'link'\n\ntype TypographyProperties = Record<TypographyVariants, PropertiesToken>\n\nexport const typographyProperties: TypographyProperties = {\n 'heading-lg': {\n fontSize: 'font-size-1',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n },\n 'heading-md': {\n fontSize: 'font-size-2',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n },\n 'heading-md-bold': {\n fontSize: 'font-size-2',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-bold',\n },\n 'heading-sm': {\n fontSize: 'font-size-3',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-medium',\n },\n 'heading-sm-bold': {\n fontSize: 'font-size-3',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n },\n body: {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-medium',\n },\n 'body-bold': {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n },\n caption: {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-medium',\n },\n 'caption-bold': {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n },\n 'number-sm': {\n fontFamily: 'font-family-monospace',\n fontSize: 'font-size-5',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n },\n 'number-md': {\n fontFamily: 'font-family-monospace',\n fontSize: 'font-size-4',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n },\n 'button-sm': {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'button-md': {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'button-lg': {\n fontSize: 'font-size-3',\n lineHeight: 'font-height-1',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'table-header-sm': {\n fontSize: 'font-size-5',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-bold',\n },\n 'table-header-md': {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n 'chips-sm': {\n fontSize: 'font-size-6',\n lineHeight: 'font-height-3',\n fontWeight: 'font-weight-bold',\n textTransform: 'uppercase',\n },\n link: {\n fontSize: 'font-size-4',\n lineHeight: 'font-height-2',\n fontWeight: 'font-weight-medium',\n color: 'color-accent',\n },\n}\n\nconst DEFAULT_VARIANT: TypographyVariants = 'body'\n\nfunction getPropertiesByVariant(variant: TypographyVariants) {\n return variant in typographyProperties\n ? typographyProperties[variant]\n : typographyProperties[DEFAULT_VARIANT]\n}\n\n/**\n * Standard styles for screen-rendered text\n * @param variant Name of the variant\n * @param options Add boldness, italics and color\n */\nfunction typography<P>(\n variant: TypographyVariants | ((props: P) => string) = DEFAULT_VARIANT,\n options?: TypographyOptions\n) {\n if (isFunction(variant)) {\n return (props: P) => typography(variant(props) as TypographyVariants, options)\n }\n\n const properties = getPropertiesByVariant(variant)\n\n return css`\n ${fontStyle({\n family: properties.fontFamily,\n height: properties.lineHeight,\n size: properties.fontSize,\n weight: properties.fontWeight,\n transform: properties.textTransform,\n color: properties.color || options?.color,\n })}\n\n ${conditional({\n 'font-style: italic;': options?.italic,\n })};\n `\n}\n\nexport default typography\n","import React from 'react'\nimport styled, { keyframes } from 'styled-components'\n\nconst ANIMATION_DURATION = 0.8\n\nconst animation = keyframes`\n 0% { opacity: 0 }\n 25% { opacity: 1 }\n 50% { opacity: 0.66 }\n 75% { opacity: 0.33; }\n 100% { opacity: 0 }\n`\n\ninterface LayerProps {\n index: number\n}\n\nconst Layer = styled.path<LayerProps>`\n animation-name: ${animation};\n animation-duration: ${ANIMATION_DURATION}s;\n animation-delay: -${(props) => props.index * (ANIMATION_DURATION / 4)}s;\n animation-iteration-count: infinite;\n`\n\nexport interface SpinnerProps {\n readonly title?: string\n readonly size: number\n}\n\nexport default function Spinner({ title, size, ...props }: SpinnerProps) {\n return (\n <svg\n {...props}\n viewBox=\"0 0 48 48\"\n fillRule=\"evenodd\"\n strokeLinejoin=\"round\"\n strokeMiterlimit=\"2\"\n clipRule=\"evenodd\"\n width={size}\n height={size}\n >\n <title>{title || 'Loading'}</title>\n <g\n id=\"surface1\"\n transform=\"matrix(0.0806777,0,0,0.0806777,0,-9.96047)\"\n fill=\"#33CC60\"\n fillRule=\"nonzero\"\n >\n <Layer\n index={0}\n d=\"M362.176,638.695C366.445,638.695 370.535,637 373.527,633.996L505.332,502.211L224.305,502.211C222.074,502.211 220.066,501.316 218.617,499.855L84.488,633.996C87.395,636.902 91.406,638.695 95.82,638.695L362.176,638.695Z\"\n />\n <Layer\n index={1}\n d=\"M376.164,482.289L512.648,482.289L512.648,217.34C512.648,212.906 510.855,208.898 507.945,205.988L373.809,340.121C375.266,341.578 376.164,343.59 376.164,345.805L376.164,482.289Z\"\n />\n <Layer\n index={2}\n d=\"M500.48,201.746L235.535,201.746L235.535,338.23L372.02,338.23C374.234,338.23 376.246,339.129 377.703,340.586L511.832,206.445C508.926,203.539 504.918,201.746 500.48,201.746Z\"\n />\n <Layer\n index={3}\n d=\"M215.449,495.488L215.449,214.461L83.668,346.262C80.66,349.289 78.965,353.359 78.965,357.625L78.965,623.973C78.965,628.398 80.758,632.406 83.668,635.313L217.805,501.176C216.348,499.715 215.449,497.707 215.449,495.488Z\"\n />\n </g>\n </svg>\n )\n}\n","import { css } from 'styled-components'\n\nimport type { FlattenInterpolation } from 'styled-components'\nimport type { ThemedProps } from 'theming'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nexport const getSpace = (prop: string): FlattenInterpolation<ThemedProps> => css`\n ${conditional({\n 'space-none': whenProps({ [prop]: 'none' }),\n 'space-2xs': whenProps({ [prop]: '2xs' }),\n 'space-xs': whenProps({ [prop]: 'xs' }),\n 'space-s': whenProps({ [prop]: 's' }),\n 'space-m': whenProps({ [prop]: 'm' }),\n 'space-l': whenProps({ [prop]: 'l' }),\n 'space-xl': whenProps({ [prop]: 'xl' }),\n 'space-2xl': whenProps({ [prop]: '2xl' }),\n 'space-3xl': whenProps({ [prop]: '3xl' }),\n })}\n`\n","import React from 'react'\nimport type { HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nimport { getSpace } from './Layout.utils'\nimport type { Spacing, JustifyValue, AlignValue } from './Layout.types'\n\nexport interface GroupProps extends HTMLAttributes<HTMLElement> {\n readonly space?: Spacing\n readonly justify?: JustifyValue\n readonly align?: AlignValue\n readonly as?: string | React.ComponentType<any>\n}\n\nconst GroupContainer = styled.div<{\n $space: GroupProps['space']\n $justify: GroupProps['justify']\n $align: GroupProps['align']\n}>`\n display: flex;\n flex-wrap: wrap;\n gap: ${getSpace('$space')};\n\n align-items: ${conditional({\n center: whenProps({ $align: 'center' }),\n 'flex-start': whenProps({ $align: 'flex-start' }),\n 'flex-end': whenProps({ $align: 'flex-end' }),\n stretch: whenProps({ $align: 'stretch' }),\n })};\n\n justify-content: ${conditional({\n center: whenProps({ $justify: 'center' }),\n 'flex-start': whenProps({ $justify: 'flex-start' }),\n 'flex-end': whenProps({ $justify: 'flex-end' }),\n 'space-between': whenProps({ $justify: 'space-between' }),\n 'space-around': whenProps({ $justify: 'space-around' }),\n 'space-evenly': whenProps({ $justify: 'space-evenly' }),\n })};\n`\n\n/**\n * Group layout component.\n */\nexport function Group(props: GroupProps) {\n const { space = 'm', justify = 'flex-start', align = 'flex-start', children, ...rest } = props\n\n return (\n <GroupContainer $space={space} $justify={justify} $align={align} {...rest}>\n {children}\n </GroupContainer>\n )\n}\n","import React from 'react'\nimport type { HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nimport { getSpace } from './Layout.utils'\nimport type { Spacing, JustifyValue, AlignValue } from './Layout.types'\n\nexport interface StackProps extends HTMLAttributes<HTMLElement> {\n readonly space?: Spacing\n readonly justify?: JustifyValue\n readonly align?: AlignValue\n readonly as?: string | React.ComponentType<any>\n}\n\nexport const StackContainer = styled.div<{\n $space: StackProps['space']\n $justify: StackProps['justify']\n $align: StackProps['align']\n}>`\n display: flex;\n flex-direction: column;\n\n align-items: ${conditional({\n center: whenProps({ $align: 'center' }),\n 'flex-start': whenProps({ $align: 'flex-start' }),\n 'flex-end': whenProps({ $align: 'flex-end' }),\n stretch: whenProps({ $align: 'stretch' }),\n })};\n\n justify-content: ${conditional({\n center: whenProps({ $justify: 'center' }),\n 'flex-start': whenProps({ $justify: 'flex-start' }),\n 'flex-end': whenProps({ $justify: 'flex-end' }),\n 'space-between': whenProps({ $justify: 'space-between' }),\n 'space-around': whenProps({ $justify: 'space-around' }),\n 'space-evenly': whenProps({ $justify: 'space-evenly' }),\n })};\n\n & > * {\n margin-top: 0;\n margin-bottom: 0;\n }\n\n & > * + * {\n margin-top: ${getSpace('$space')};\n }\n`\n\n/**\n * Stack layout component.\n */\nexport function Stack(props: StackProps) {\n const { space = 'm', justify = 'flex-start', align = 'stretch', children, ...rest } = props\n\n return (\n <StackContainer $space={space} $justify={justify} $align={align} {...rest}>\n {children}\n </StackContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport type { Spacing } from './Layout.types'\nimport { getSpace } from './Layout.utils'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface BoxProps extends HTMLAttributes<HTMLElement> {\n readonly background?: 'transparent' | 'neutral-white' | 'neutral-lighter' | 'neutral-lightest'\n readonly padding?: Spacing\n readonly borderRadius?: 'none' | 's' | 'm' | 'l'\n readonly borderWidth?: 'medium' | 'thin' | 'none'\n readonly borderColor?:\n | 'neutral-darker'\n | 'neutral-light'\n | 'neutral-lighter'\n | 'neutral-white'\n | 'primary'\n readonly textAlign?: 'left' | 'center' | 'right'\n}\n\nconst BoxContainer = styled.div<{\n $background: BoxProps['background']\n $padding: BoxProps['padding']\n $borderRadius: BoxProps['borderRadius']\n $borderWidth: BoxProps['borderWidth']\n $borderColor: BoxProps['borderColor']\n $textAlign: BoxProps['textAlign']\n}>`\n padding: ${getSpace('$padding')};\n\n color: ${token('color-neutral-darker')};\n\n text-align: ${conditional({\n left: whenProps({ $textAlign: 'left' }),\n center: whenProps({ $textAlign: 'center' }),\n right: whenProps({ $textAlign: 'right' }),\n })};\n\n background-color: ${conditional({\n 'color-transparent': whenProps({ $background: 'transparent' }),\n 'color-neutral-white': whenProps({ $background: 'neutral-white' }),\n 'color-neutral-lighter': whenProps({ $background: 'neutral-lighter' }),\n 'color-neutral-lightest': whenProps({ $background: 'neutral-lightest' }),\n })};\n\n border-color: ${conditional({\n 'color-neutral-darker': whenProps({ $borderColor: 'neutral-darker' }),\n 'color-neutral-light': whenProps({ $borderColor: 'neutral-light' }),\n 'color-neutral-lighter': whenProps({ $borderColor: 'neutral-lighter' }),\n 'color-neutral-white': whenProps({ $borderColor: 'neutral-white' }),\n 'color-primary': whenProps({ $borderColor: 'primary' }),\n })};\n\n border-style: solid;\n\n border-width: ${conditional({\n 'border-width-medium': whenProps({ $borderWidth: 'medium' }),\n 'border-width-thin': whenProps({ $borderWidth: 'thin' }),\n 'border-width-none': whenProps({ $borderWidth: 'none' }),\n })};\n\n border-radius: ${conditional({\n 'border-radius-none': whenProps({ $borderRadius: 'none' }),\n 'border-radius-s': whenProps({ $borderRadius: 's' }),\n 'border-radius-m': whenProps({ $borderRadius: 'm' }),\n 'border-radius-l': whenProps({ $borderRadius: 'l' }),\n })};\n`\n\n/**\n * Box layout component.\n */\nexport function Box(props: BoxProps) {\n const {\n background = 'transparent',\n borderColor = 'neutral-light',\n borderRadius = 's',\n borderWidth = 'none',\n padding = 'm',\n textAlign = 'left',\n children,\n ...rest\n } = props\n\n return (\n <BoxContainer\n $background={background}\n $borderColor={borderColor}\n $borderRadius={borderRadius}\n $borderWidth={borderWidth}\n $padding={padding}\n $textAlign={textAlign}\n {...rest}\n >\n {children}\n </BoxContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport prop from 'tools/prop'\n\nimport type { Spacing } from './Layout.types'\nimport { getSpace } from './Layout.utils'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n readonly space?: Spacing\n readonly reversed?: boolean\n readonly sideWidth?: string\n readonly minContentWidth?: string\n}\n\nconst SidebarContainer = styled.div<{\n $space: SidebarProps['space']\n $reversed: SidebarProps['reversed']\n $sideWidth: SidebarProps['sideWidth']\n $minContentWidth: SidebarProps['minContentWidth']\n}>`\n display: flex;\n flex-wrap: wrap;\n\n gap: ${getSpace('$space')};\n\n &\n > ${conditional({\n ':first-child': whenProps({ $reversed: false }),\n ':last-child': whenProps({ $reversed: true }),\n })} {\n flex-basis: ${prop('$sideWidth')};\n flex-grow: 1;\n }\n\n &\n > ${conditional({\n ':first-child': whenProps({ $reversed: true }),\n ':last-child': whenProps({ $reversed: false }),\n })} {\n flex-basis: 0;\n flex-grow: 999;\n min-width: ${prop('$minContentWidth')};\n }\n`\n\n/**\n * Sidebar layout component.\n */\nexport function Sidebar(props: SidebarProps) {\n const {\n minContentWidth = '50%',\n reversed = false,\n sideWidth = 'auto',\n space = 'm',\n children,\n ...rest\n } = props\n\n return (\n <SidebarContainer\n $minContentWidth={minContentWidth}\n $reversed={reversed}\n $sideWidth={sideWidth}\n $space={space}\n {...rest}\n >\n {children}\n </SidebarContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\nimport prop from 'tools/prop'\n\nimport type { Spacing } from './Layout.types'\nimport { getSpace } from './Layout.utils'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface SwitcherProps extends HTMLAttributes<HTMLElement> {\n readonly space?: Spacing\n readonly threshold?: string\n readonly limit?: number\n}\n\nconst SwitcherContainer = styled.div<{\n $space: SwitcherProps['space']\n $threshold: SwitcherProps['threshold']\n $limit: SwitcherProps['limit']\n}>`\n display: flex;\n flex-wrap: wrap;\n gap: ${getSpace('$space')};\n\n > * {\n flex-basis: calc((${prop('$threshold')} - 100%) * 999);\n flex-grow: 1;\n }\n\n & > :nth-last-child(n + ${prop('$limit')}),\n & > :nth-last-child(n + ${prop('$limit')}) ~ * {\n flex-basis: 100%;\n }\n`\n\n/**\n * Switcher layout component.\n */\nexport function Switcher(props: SwitcherProps) {\n const { limit = 4, space = 's', threshold = '10rem', children, ...rest } = props\n\n return (\n <SwitcherContainer $space={space} $threshold={threshold} $limit={limit + 1} {...rest}>\n {children}\n </SwitcherContainer>\n )\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport prop from 'tools/prop'\n\nimport { getSpace } from 'components/Layout/Layout.utils'\nimport type { Spacing } from './Layout.types'\n\nimport type { HTMLAttributes } from 'react'\n\nexport interface GridProps extends HTMLAttributes<HTMLElement> {\n readonly space?: Spacing\n readonly minColumnWidth?: string\n}\n\nconst GridContainer = styled.div<{\n $space: GridProps['space']\n $minColumnWidth: GridProps['minColumnWidth']\n}>`\n display: grid;\n grid-gap: ${getSpace('$space')};\n\n @supports (width: min(${prop('$minColumnWidth')}, 100%)) {\n & {\n grid-template-columns: repeat(auto-fit, minmax(min(${prop('$minColumnWidth')}, 100%), 1fr));\n }\n }\n`\n\n/**\n * Grid layout component.\n */\nexport function Grid(props: GridProps) {\n const { space = 'm', minColumnWidth = '50%', children, ...rest } = props\n\n return (\n <GridContainer $space={space} $minColumnWidth={minColumnWidth} {...rest}>\n {children}\n </GridContainer>\n )\n}\n","import { Group } from './Group'\nimport { Stack } from './Stack'\nimport { Box } from './Box'\nimport { Sidebar } from './Sidebar'\nimport { Switcher } from './Switcher'\nimport { Grid } from './Grid'\n\nconst Layout = (): null => {\n return null\n}\n\nLayout.Group = Group\nLayout.Stack = Stack\nLayout.Box = Box\nLayout.Sidebar = Sidebar\nLayout.Switcher = Switcher\nLayout.Grid = Grid\n\nexport default Layout\n","import { Layout } from 'components/Layout'\nimport React from 'react'\nimport styled, { keyframes } from 'styled-components'\nimport { getToken as token } from 'theming'\n\nconst loading = keyframes`\n from {\n width: 0\n }\n to {\n width: 100%\n }\n`\n\nexport const Bar = styled.div<{ width?: number; velocity?: number }>`\n position: relative;\n\n width: ${({ width }) => (width ? `${width}px` : '100%')};\n height: ${token('space-s')};\n overflow: hidden;\n\n background-color: ${token('color-neutral-light')};\n border-radius: ${token('border-radius-m')};\n\n &:before {\n position: absolute;\n\n display: block;\n width: 100%;\n height: ${token('space-s')};\n\n background-color: ${token('color-primary')};\n\n animation: ${loading} ${({ velocity }) => (velocity && velocity > 0 ? velocity : 2.5)}s linear\n infinite;\n\n content: '';\n }\n`\n\nexport interface LoadingBarProps {\n readonly alignment?: 'left' | 'center' | 'right'\n readonly title?: React.ReactNode\n readonly secondaryTitle?: React.ReactNode\n readonly width?: number | undefined\n readonly velocity?: number | undefined\n}\n\nexport default function LoadingBar({\n alignment,\n title,\n secondaryTitle,\n width,\n velocity = 2.5,\n}: LoadingBarProps) {\n return (\n <Layout.Box textAlign={alignment}>\n <Layout.Stack space=\"s\">\n {title}\n <Bar width={width} velocity={velocity} />\n {secondaryTitle}\n </Layout.Stack>\n </Layout.Box>\n )\n}\n","import React from 'react'\nimport styled, { keyframes } from 'styled-components'\nimport conditional, { whenProps } from 'tools/conditional'\nimport prop from 'tools/prop'\nimport { getToken as token } from 'theming'\n\nconst pulse = keyframes`\n 50% {\n opacity: 0.2;\n }\n\n 100% {\n opacity: 1;\n }\n`\n\nconst Wrapper = styled.div`\n text-align: center;\n\n div:nth-child(1) {\n animation: ${pulse} 1s infinite ease-in-out -0.2s;\n }\n\n div:nth-child(2) {\n animation: ${pulse} 1s infinite ease-in-out -0.1s;\n }\n\n div:nth-child(3) {\n animation: ${pulse} 1s infinite ease-in-out 0s;\n }\n`\n\ninterface DotProps {\n size?: number\n variant?: 'light' | 'dark'\n}\n\nconst Dot = styled.div<DotProps>`\n display: inline-block;\n width: ${prop('size')}px;\n height: ${prop('size')}px;\n margin: ${token('space-2xs')};\n\n background-color: ${conditional({\n 'color-neutral-white': whenProps({ variant: 'light' }),\n 'color-neutral-dark': whenProps({ variant: 'dark' }),\n })};\n border-radius: ${token('border-radius-circle')};\n`\n\nexport interface LoadingDotsProps {\n readonly size?: number\n readonly variant?: 'dark' | 'light'\n}\n\nexport default function LoadingDots({ size = 10, variant = 'dark', ...props }: LoadingDotsProps) {\n return (\n <Wrapper role=\"progressbar\" aria-label=\"Loading\" {...props}>\n <Dot size={size} variant={variant} />\n <Dot size={size} variant={variant} />\n <Dot size={size} variant={variant} />\n </Wrapper>\n )\n}\n","import React, { forwardRef } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport ellipsizable from 'styles/ellipsizable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport omit from 'utils/toolset/omit'\nimport rem from 'utils/toolset/rem'\nimport transition from 'styles/transition'\nimport typography from 'styles/typography'\n\nimport { LoadingDots } from 'components/Loaders'\n\nimport type { ButtonHTMLAttributes, ForwardedRef, ReactNode } from 'react'\nimport type { IconProps } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport type { LoadingDotsProps } from 'components/Loaders'\n\nexport type ButtonVariants = 'primary' | 'secondary' | 'warning' | 'icon' | 'tertiary'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n readonly className?: string\n readonly leading?: ReactNode\n readonly scheme?: ColorScheme\n readonly trailing?: ReactNode\n readonly variant?: ButtonVariants\n readonly scale?: 'small' | 'default' | 'large'\n readonly loading?: boolean\n}\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n padding: ${rem('6px')} 0;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Trailing = styled(StyledSpan)`\n /* placeholder */\n`\n\nexport const Children = styled.span<ButtonProps>`\n ${({ children }) =>\n typeof children === 'string'\n ? ellipsizable()\n : `\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n `}\n\n padding: ${rem('6px')} 0;\n`\n\nconst BaseStyledButton = styled.button<{\n $scale: ButtonProps['scale']\n $loading?: ButtonProps['loading']\n}>`\n ${transition()}\n\n ${typography(\n conditional({\n 'button-md': whenProps({ $scale: 'default' }),\n 'button-sm': whenProps({ $scale: 'small' }),\n 'button-lg': whenProps({ $scale: 'large' }),\n })\n )}\n\n box-sizing: border-box;\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n text-transform: uppercase;\n text-align: center;\n\n cursor: pointer;\n\n border-radius: ${token('border-radius-s')};\n border-width: ${token('border-width-thin')};\n border-style: solid;\n border-color: ${token('color-neutral-darker')};\n\n height: ${conditional({\n 'button-height': whenProps({ $scale: 'default' }),\n 'button-small-height': whenProps({ $scale: 'small' }),\n 'button-large-height': whenProps({ $scale: 'large' }),\n })};\n\n padding: 0 8px;\n\n ${disableable()}\n\n ${({ $loading }) =>\n $loading\n ? css`\n pointer-events: none;\n position: relative;\n `\n : ''}\n\n ${Leading} {\n margin: 0 ${token('space-xs')} 0 0;\n }\n\n ${Trailing} {\n margin: 0 0 0 ${token('space-xs')};\n }\n`\n\nconst StyledButton = styled(BaseStyledButton)<{\n $variant: ButtonProps['variant']\n $scale: ButtonProps['scale']\n $scheme: ButtonProps['scheme']\n}>`\n width: ${conditional({\n 'button-width': whenProps({ $variant: ['primary', 'secondary', 'warning', 'tertiary'] }),\n 'button-icon-width': whenProps({ $variant: 'icon', $scale: 'default' }),\n 'button-icon-small-width': whenProps({ $variant: 'icon', $scale: 'small' }),\n 'button-icon-large-width': whenProps({ $variant: 'icon', $scale: 'large' }),\n })};\n\n height: ${conditional({\n 'button-height': whenProps({ $scale: 'default' }),\n 'button-small-height': whenProps({ $scale: 'small' }),\n 'button-large-height': whenProps({ $scale: 'large' }),\n })};\n\n color: ${conditional({\n 'button-primary-color': whenProps({ $variant: 'primary' }),\n 'button-secondary-color': whenProps({ $variant: 'secondary', $scheme: 'light' }),\n 'button-secondary-dark-color': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-color': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color': whenProps({ $variant: 'warning' }),\n 'button-icon-color': whenProps({ $variant: 'icon' }),\n })};\n\n background: ${conditional({\n 'button-primary-background': whenProps({ $variant: 'primary' }),\n 'button-secondary-background': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background': whenProps({\n $variant: 'tertiary',\n }),\n 'button-warning-background': whenProps({ $variant: 'warning' }),\n 'button-icon-background': whenProps({ $variant: 'icon' }),\n })};\n\n border-color: ${conditional({\n 'button-primary-border-color': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color': whenProps({ $variant: 'secondary', $scheme: 'light' }),\n 'button-secondary-dark-border-color': whenProps({ $variant: 'secondary', $scheme: 'dark' }),\n 'button-tertiary-border-color': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color': whenProps({ $variant: 'icon' }),\n })};\n border-radius: ${conditional({\n 'button-border-radius': whenProps({ $variant: ['primary', 'secondary', 'warning'] }),\n 'button-icon-border-radius': whenProps({ $variant: 'icon' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'button-primary-background--hover': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background--hover': whenProps({\n $variant: 'tertiary',\n }),\n 'button-warning-background--hover': whenProps({ $variant: 'warning' }),\n 'button-icon-background--hover': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--hover': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-border-color--hover': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color--hover': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--hover': whenProps({ $variant: 'icon' }),\n })};\n color: ${conditional({\n 'button-primary-color--hover': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--hover': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-color--hover': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color--hover': whenProps({ $variant: 'warning' }),\n 'button-icon-color--hover': whenProps({ $variant: 'icon' }),\n })};\n `}\n\n ${disableable`\n background: ${conditional({\n 'button-primary-background--disabled': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background--disabled': whenProps({ $variant: 'tertiary' }),\n 'button-warning-background--disabled': whenProps({ $variant: 'warning' }),\n 'button-icon-background--disabled': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--disabled': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-border-color--disabled': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color--disabled': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--disabled': whenProps({ $variant: 'icon' }),\n })};\n color: ${conditional({\n 'button-primary-color--disabled': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--disabled': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-color--disabled': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color--disabled': whenProps({ $variant: 'warning' }),\n 'button-icon-color--disabled': whenProps({ $variant: 'icon' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'button-primary-background--focus': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-background--focus': whenProps({ $variant: 'tertiary' }),\n 'button-warning-background--focus': whenProps({ $variant: 'warning' }),\n 'button-icon-background--focus': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--focus': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-tertiary-border-color--focus': whenProps({ $variant: 'tertiary' }),\n 'button-warning-border-color--focus': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--focus': whenProps({ $variant: 'icon' }),\n })};\n color: ${conditional({\n 'button-primary-color--focus': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--focus': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--focus': whenProps({ $variant: 'secondary', $scheme: 'dark' }),\n 'button-tertiary-color--focus': whenProps({ $variant: 'tertiary' }),\n 'button-warning-color--focus': whenProps({ $variant: 'warning' }),\n 'button-icon-color--focus': whenProps({ $variant: 'icon' }),\n })};\n\n box-shadow: ${conditional({\n 'button-primary-box-shadow': whenProps({ $variant: 'primary' }),\n 'button-secondary-box-shadow': whenProps({ $variant: 'secondary' }),\n 'button-warning-box-shadow': whenProps({ $variant: 'warning' }),\n 'button-tertiary-box-shadow': whenProps({ $variant: 'tertiary' }),\n 'button-icon-box-shadow': whenProps({ $variant: 'icon' }),\n })};\n\n outline: ${conditional({\n 'button-primary-outline': whenProps({ $variant: 'primary' }),\n 'button-secondary-outline': whenProps({ $variant: 'secondary' }),\n 'button-tertiary-outline': whenProps({ $variant: 'tertiary' }),\n 'button-warning-outline': whenProps({ $variant: 'warning' }),\n 'button-icon-outline': whenProps({ $variant: 'icon' }),\n })};\n\n outline-offset: ${token('button-outline-offset')};\n `}\n\n ${activatable`\n background: ${conditional({\n 'button-primary-background--active': whenProps({ $variant: 'primary' }),\n 'button-secondary-background--active': whenProps({\n $variant: ['secondary', 'tertiary'],\n $scheme: 'light',\n }),\n 'button-secondary-dark-background--active': whenProps({\n $variant: ['secondary', 'tertiary'],\n $scheme: 'dark',\n }),\n 'button-warning-background--active': whenProps({ $variant: 'warning' }),\n 'button-icon-background--active': whenProps({ $variant: 'icon' }),\n })};\n border-color: ${conditional({\n 'button-primary-border-color--active': whenProps({ $variant: 'primary' }),\n 'button-secondary-border-color--active': whenProps({\n $variant: 'secondary',\n $scheme: 'light',\n }),\n 'button-secondary-dark-border-color--active': whenProps({\n $variant: 'secondary',\n $scheme: 'dark',\n }),\n 'button-warning-border-color--active': whenProps({ $variant: 'warning' }),\n 'button-icon-border-color--active': whenProps({ $variant: 'icon' }),\n 'color-transparent': whenProps({ $variant: 'tertiary' }),\n })};\n color: ${conditional({\n 'button-primary-color--active': whenProps({ $variant: 'primary' }),\n 'button-secondary-color--active': whenProps({\n $variant: ['secondary', 'tertiary'],\n $scheme: 'light',\n }),\n 'button-secondary-dark-color--active': whenProps({ $variant: 'secondary', $scheme: 'dark' }),\n 'button-warning-color--active': whenProps({ $variant: 'warning' }),\n 'button-icon-color--active': whenProps({ $variant: 'icon' }),\n })};\n `}\n\n ${Children} {\n margin: 0 ${token('button-spacing-x')};\n }\n\n ${Leading} {\n margin: 0 0 0 ${token('button-spacing-x')};\n }\n\n ${Trailing} {\n margin: 0 ${token('button-spacing-x')} 0 0;\n }\n`\n\nconst StyledSelector = styled(StyledButton)`\n ${Children} {\n flex: 1;\n }\n\n ${Trailing} {\n margin: 0;\n }\n`\n\nconst TextHidden = styled.span`\n transform: scale(0);\n`\n\n/**\n * Accessible attributes in `LoadingDots` aren't necessary\n * because the `Button` will keep its content, but invisible\n */\nconst StyledLoadingDots = styled(LoadingDots).attrs({\n 'aria-label': undefined,\n role: 'presentation',\n})`\n position: absolute;\n left: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n width: 100%;\n`\n\nconst ButtonLoadingDots = ({\n buttonVariant = 'secondary',\n ...remainingProps\n}: Omit<LoadingDotsProps, 'variant'> & { readonly buttonVariant?: ButtonVariants }) => {\n const buttonLightVariants = new Set(['secondary', 'warning', 'icon', 'tertiary'])\n /**\n * Change LoadingDots variant between `light` and `dark` to have contrast with Button's variant\n */\n const loadingDotsVariant: 'dark' | 'light' = buttonLightVariants.has(buttonVariant)\n ? 'dark'\n : 'light'\n\n return <StyledLoadingDots {...remainingProps} variant={loadingDotsVariant} />\n}\n\nfunction ButtonChildrenWrapper({\n loading,\n children,\n variant,\n}: Pick<ButtonProps, 'loading' | 'children' | 'variant'>) {\n if (loading) {\n return (\n <>\n <ButtonLoadingDots buttonVariant={variant} />\n <TextHidden>{children}</TextHidden>\n </>\n )\n }\n\n return children\n}\n\nexport const BaseButton = forwardRef<HTMLButtonElement, ButtonProps>(function BaseButton(\n {\n scale = 'default',\n children,\n leading,\n trailing,\n loading,\n disabled,\n variant,\n ...others\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n return (\n <BaseStyledButton\n ref={ref}\n {...others}\n aria-disabled={loading ? 'true' : undefined}\n disabled={disabled}\n $scale={scale}\n $loading={loading}\n >\n <ButtonChildrenWrapper loading={loading} variant={variant}>\n {leading && <Leading aria-hidden=\"true\">{leading}</Leading>}\n <Children loading={loading}>{children}</Children>\n {trailing && <Trailing aria-hidden=\"true\">{trailing}</Trailing>}\n </ButtonChildrenWrapper>\n </BaseStyledButton>\n )\n})\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n type = 'button',\n scheme = 'light',\n scale = 'default',\n variant = 'secondary',\n children,\n leading,\n trailing,\n disabled,\n loading,\n ...others\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n return (\n <StyledButton\n ref={ref}\n {...others}\n type={type}\n aria-disabled={loading ? 'true' : undefined}\n disabled={disabled}\n $scheme={scheme}\n $scale={scale}\n $variant={variant}\n $loading={loading}\n >\n <ButtonChildrenWrapper loading={loading} variant={variant}>\n {leading && <Leading>{leading}</Leading>}\n <Children>{children}</Children>\n {trailing && <Trailing>{trailing}</Trailing>}\n </ButtonChildrenWrapper>\n </StyledButton>\n )\n})\n\nexport function Caret(props: Omit<IconProps, 'name'>) {\n return <Icon size={20} {...props} name=\"caret-down\" />\n}\n\nexport const SelectorButton = forwardRef<HTMLButtonElement, ButtonProps>(function SelectorButton(\n {\n scheme = 'light',\n scale = 'default',\n type = 'button',\n variant = 'secondary',\n children,\n trailing,\n disabled,\n loading,\n ...others\n }: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n others = omit<ButtonProps>(others, ['leading'])\n\n return (\n <StyledSelector\n ref={ref}\n {...others}\n type={type}\n aria-disabled={loading ? 'true' : undefined}\n disabled={disabled}\n $loading={loading}\n $scheme={scheme}\n $scale={scale}\n $variant={variant}\n >\n <ButtonChildrenWrapper loading={loading} variant={variant}>\n <Children>{children}</Children>\n {trailing && <Trailing>{trailing}</Trailing>}\n </ButtonChildrenWrapper>\n </StyledSelector>\n )\n})\n\nexport type IconButtonProps = Omit<ButtonProps, 'leading' | 'trailing' | 'variant' | 'loading'>\n\nexport const IconButton = forwardRef<HTMLButtonElement, ButtonProps>(function IconButton(\n { scheme = 'light', scale = 'default', type = 'button', children, ...others }: IconButtonProps,\n ref: ForwardedRef<HTMLButtonElement>\n) {\n others = omit<ButtonProps>(others, ['leading', 'trailing', 'variant'])\n\n return (\n <StyledButton ref={ref} {...others} type={type} $scheme={scheme} $scale={scale} $variant=\"icon\">\n <Children>{children}</Children>\n </StyledButton>\n )\n})\n\nexport default Button\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport focusable from 'styles/focusable'\n\nimport type { ButtonProps } from 'components/Button'\n\nexport interface CloseButtonProps extends ButtonProps {\n readonly size?: string | number\n}\n\nconst Button = styled(BaseButton)`\n border: none;\n border-radius: ${token('border-radius-circle')};\n\n color: ${token('color-neutral-darker')};\n\n background: ${token('color-transparent')};\n\n padding: ${token('space-xs')};\n\n font-size: ${token('font-size-3')};\n\n /*\n * button height is set in the BaseButton component\n * we set width here to ensure a perfectly rounded button\n */\n width: ${conditional({\n 'button-height': whenProps({ scale: 'default' }),\n 'button-small-height': whenProps({ scale: 'small' }),\n 'button-large-height': whenProps({ scale: 'large' }),\n })};\n\n ${focusable`\n box-shadow: ${token('button-icon-box-shadow')};\n\n outline: ${token('button-icon-outline')};\n outline-offset: ${token('button-outline-offset')};\n `}\n`\n\nfunction CloseButton({ scale = 'small', size = 16, ...others }: CloseButtonProps) {\n return (\n <Button scale={scale} {...others}>\n <Icon name=\"close\" size={size} />\n </Button>\n )\n}\n\nexport default CloseButton\n","import React from 'react'\n\nimport { IconButton } from 'components/Button'\nimport { Icon } from 'components/Icon'\n\nimport type { ButtonProps } from 'components/Button'\n\nexport type BackButtonProps = Omit<ButtonProps, 'children'>\n\nfunction BackButton({ scale = 'small', ...others }: BackButtonProps) {\n return (\n <IconButton scale={scale} {...others}>\n <Icon name=\"back\" size={16} />\n </IconButton>\n )\n}\n\nexport default BackButton\n","import type { LabelHTMLAttributes, ReactNode } from 'react'\nimport React from 'react'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\n\nexport interface SelectionStyleProps {\n readonly scale?: 'small' | 'default'\n readonly scheme?: ColorScheme\n readonly disabled?: boolean\n}\n\nexport interface SelectionWrapperProps\n extends LabelHTMLAttributes<HTMLLabelElement>, SelectionStyleProps {\n readonly selector: ReactNode\n readonly leading?: ReactNode\n readonly trailing?: ReactNode\n}\n\nconst SelectorWrapper = styled.span`\n position: relative;\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Trailing = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Children = styled.span`\n /* placeholder */\n`\n\nconst StyledLabel = styled.label<SelectionStyleProps>`\n box-sizing: border-box;\n\n ${transition()}\n ${font({\n weight: 'checkbox-font-weight',\n })}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n\n cursor: pointer;\n\n border-radius: ${token('border-radius-s')};\n\n font-size: ${conditional({\n 'checkbox-font-size': whenProps({ scale: 'default' }),\n 'checkbox-small-font-size': whenProps({ scale: 'small' }),\n })};\n\n color: ${conditional({\n 'checkbox-color': whenProps({ scheme: 'light' }),\n 'checkbox-dark-color': whenProps({ scheme: 'dark' }),\n })};\n\n ${Children} {\n margin: 0 ${token('space-xs')};\n }\n\n ${SelectorWrapper} {\n margin: 0 ${token('space-xs')} 0 0;\n }\n\n ${Leading} {\n margin: 0 ${token('space-xs')};\n }\n\n ${Trailing} {\n margin: 0 0 0 ${token('space-xs')};\n }\n\n ${disableable()}\n\n ${focusable`\n outline: ${token('checkbox-selector-outline')};\n outline-offset: ${token('checkbox-selector-outline-offset')};\n `}\n`\n\nfunction SelectionWrapper({\n selector,\n children,\n leading,\n trailing,\n className,\n disabled = false,\n ...others\n}: SelectionWrapperProps) {\n return (\n <StyledLabel\n className={clsx(className, {\n 'is-disabled': disabled,\n })}\n {...others}\n >\n {selector && <SelectorWrapper>{selector}</SelectorWrapper>}\n {leading && <Leading data-testid=\"selection-leading\">{leading}</Leading>}\n <Children>{children}</Children>\n {trailing && <Trailing data-testid=\"selection-trailing\">{trailing}</Trailing>}\n </StyledLabel>\n )\n}\n\nexport default SelectionWrapper\n","import type { InputHTMLAttributes, ReactNode } from 'react'\nimport React from 'react'\nimport clsx from 'clsx'\n\nimport { Icon } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport type { SelectionStyleProps } from 'common/SelectionWrapper'\nimport SelectionWrapper from 'common/SelectionWrapper'\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\n\nexport interface CheckboxProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'disabled'>, SelectionStyleProps {\n readonly leading?: ReactNode\n readonly scheme?: ColorScheme\n readonly trailing?: ReactNode\n}\n\nconst Check = styled(Icon)<SelectionStyleProps>`\n position: absolute;\n top: 50%;\n\n left: 50%;\n\n transform: translate(-50%, -50%);\n\n pointer-events: none;\n`\n\nconst Selector = styled.input<SelectionStyleProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n\n cursor: pointer;\n\n appearance: none;\n\n outline: none;\n\n color: white;\n\n height: ${token('checkbox-selector-size')};\n width: ${token('checkbox-selector-size')};\n\n border-radius: ${token('checkbox-selector-border-radius')};\n border-width: ${token('button-border-width')};\n border-style: solid;\n\n border-color: ${conditional({\n 'checkbox-selector-border-color': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color': whenProps({ scheme: 'dark' }),\n })};\n\n background: ${conditional({\n 'checkbox-selector-background': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background': whenProps({ scheme: 'dark' }),\n })};\n\n :checked {\n background-color: ${token('checkbox-selector-checked-background')};\n border-color: ${token('checkbox-selector-checked-border-color')};\n }\n\n :checked + ${Check} {\n color: ${token('checkbox-selector-icon-color')};\n }\n\n :not(:checked) + ${Check} {\n color: transparent;\n }\n\n ${disableable`\n background: ${conditional({\n 'checkbox-selector-background--disabled': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background--disabled': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'checkbox-selector-border-color--disabled': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color--disabled': whenProps({ scheme: 'dark' }),\n })};\n :checked {\n background-color: ${token('checkbox-selector-checked-background--disabled')};\n border-color: ${token('checkbox-selector-checked-border-color--disabled')};\n }\n `}\n\n ${hoverable`\n background: ${conditional({\n 'checkbox-selector-background--hover': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background--hover': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'checkbox-selector-border-color--hover': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n\n :checked {\n background-color: ${token('checkbox-selector-checked-background--hover')};\n border-color: ${token('checkbox-selector-checked-border-color--hover')};\n }\n\n :checked + ${Check} {\n color: ${token('checkbox-selector-icon-color')};\n }\n `}\n\n ${focusable`\n background: ${conditional({\n 'checkbox-selector-background--focus': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-background--focus': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'checkbox-selector-border-color--focus': whenProps({ scheme: 'light' }),\n 'checkbox-dark-selector-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n :checked {\n background-color: ${token('checkbox-selector-checked-background--focus')};\n border-color: ${token('checkbox-selector-checked-border-color--focus')};\n }\n :checked + ${Check} {\n color: ${token('checkbox-selector-icon-color')};\n }\n\n box-shadow: ${token('checkbox-selector-box-shadow')};\n `}\n`\n\nfunction Checkbox({\n className,\n disabled,\n children,\n leading,\n trailing,\n scheme = 'light',\n scale = 'default',\n ...others\n}: CheckboxProps) {\n return (\n <SelectionWrapper\n scheme={scheme}\n scale={scale}\n selector={\n <>\n <Selector\n data-testid=\"selector\"\n {...others}\n scheme={scheme}\n disabled={disabled}\n type=\"checkbox\"\n />\n <Check name=\"check\" size={14} className=\"check\" />\n </>\n }\n leading={leading}\n trailing={trailing}\n className={clsx({ 'is-disabled': disabled }, className)}\n data-testid=\"checkbox\"\n >\n {children}\n </SelectionWrapper>\n )\n}\n\nexport default Checkbox\n","import type { InputHTMLAttributes, ReactNode } from 'react'\nimport React from 'react'\nimport clsx from 'clsx'\n\nimport { Icon } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport type { SelectionStyleProps } from 'common/SelectionWrapper'\nimport SelectionWrapper from 'common/SelectionWrapper'\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\n\nexport interface RadioProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'disabled'>, SelectionStyleProps {\n readonly leading?: ReactNode\n readonly scheme?: ColorScheme\n readonly trailing?: ReactNode\n}\n\nconst Check = styled(Icon)<SelectionStyleProps>`\n position: absolute;\n top: 50%;\n\n left: 50%;\n\n width: 10px;\n height: 10px;\n\n transform: translate(-50%, -50%);\n\n pointer-events: none;\n\n fill: currentColor;\n`\n\nconst Selector = styled.input<SelectionStyleProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n\n cursor: pointer;\n\n appearance: none;\n\n outline: none;\n\n color: white;\n\n height: ${token('radio-small-selector-size')};\n width: ${token('radio-small-selector-size')};\n\n border-radius: ${token('radio-selector-border-radius')};\n border-width: ${token('button-border-width')};\n border-style: solid;\n\n background: ${conditional({\n 'radio-selector-background': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background': whenProps({ scheme: 'dark' }),\n })};\n\n &:not(:checked) {\n border-color: ${conditional({\n 'radio-selector-border-color': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color': whenProps({ scheme: 'dark' }),\n })};\n\n + ${Check} {\n color: transparent;\n }\n }\n\n &:checked {\n border-color: ${token('radio-selector-border-color--checked')};\n\n + ${Check} {\n color: ${token('radio-selector-border-color--checked')};\n }\n }\n\n ${disableable`\n background: ${conditional({\n 'radio-selector-background--disabled': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background--disabled': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'radio-selector-border-color--disabled': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color--disabled': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${hoverable`\n background: ${conditional({\n 'radio-selector-background--hover': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background--hover': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'radio-selector-border-color--hover': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'radio-selector-background--focus': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-background--focus': whenProps({ scheme: 'dark' }),\n })};\n border-color: ${conditional({\n 'radio-selector-border-color--focus': whenProps({ scheme: 'light' }),\n 'radio-dark-selector-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n box-shadow: ${token('radio-selector-box-shadow')};\n `}\n`\n\nfunction Radio({\n className,\n disabled,\n children,\n leading,\n trailing,\n scheme = 'light',\n ...others\n}: RadioProps) {\n return (\n <SelectionWrapper\n scheme={scheme}\n selector={\n <>\n <Selector\n data-testid=\"selector\"\n {...others}\n scheme={scheme}\n disabled={disabled}\n type=\"radio\"\n />\n <Check name=\"circle\" className=\"check\" />\n </>\n }\n leading={leading}\n trailing={trailing}\n className={clsx({ 'is-disabled': disabled }, className)}\n data-testid=\"radio\"\n >\n {children}\n </SelectionWrapper>\n )\n}\n\nexport default Radio\n","import { useEffect, useState, useCallback, useRef } from 'react'\n\nimport type { RefObject } from 'react'\n\nexport interface useFocusWithinProps {\n onFocus?: () => void\n onBlur?: () => void\n}\n\n/**\n * As CSS's focus-within is not fully supported, this hook\n * helps with identifying focus within elements.\n * @param props - Hook props\n */\nfunction useFocusWithin<T>(props: useFocusWithinProps = {}): {\n ref: RefObject<T>\n focused: boolean\n} {\n const { onFocus, onBlur } = props\n const [focused, setFocused] = useState(false)\n const containerRef = useRef<T>(null)\n\n function getContainer() {\n return containerRef.current as unknown as HTMLElement\n }\n\n const handleFocus = useCallback(\n function handleFocus() {\n onFocus?.()\n setFocused(true)\n },\n [onFocus]\n )\n\n const handleBlur = useCallback(\n function handleBlur() {\n onBlur?.()\n setFocused(false)\n },\n [onBlur]\n )\n\n useEffect(\n function updateContainerRef() {\n getContainer()?.addEventListener('focusin', handleFocus)\n getContainer()?.addEventListener('focusout', handleBlur)\n\n return function unsubscribe() {\n getContainer()?.removeEventListener('focusin', handleFocus)\n getContainer()?.removeEventListener('focusout', handleBlur)\n }\n },\n [containerRef, handleBlur, handleFocus]\n )\n\n return {\n ref: containerRef,\n focused,\n }\n}\n\nexport default useFocusWithin\n","enum Status {\n Success = 'success',\n Danger = 'danger',\n Warn = 'warn',\n Neutral = 'neutral',\n}\n\nexport default Status\n","import React, { forwardRef } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport { useFocusWithin } from 'hooks/useFocusWithin'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport Status from 'utils/types/Status'\nimport transition from 'styles/transition'\n\nimport type { InputHTMLAttributes, ReactNode } from 'react'\n\ninterface WithAdditionalProps {\n readonly scale?: 'small' | 'default' | 'large'\n readonly status?: Status\n readonly scheme?: ColorScheme\n readonly leading?: ReactNode\n readonly trailing?: ReactNode\n}\n\nexport interface TextFieldProps extends InputHTMLAttributes<HTMLInputElement>, WithAdditionalProps {\n readonly className?: string\n readonly children?: ReactNode\n}\n\nconst InputWrapper = styled.div<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n\n height: ${conditional({\n 'text-field-height': whenProps({ scale: 'default' }),\n 'text-field-small-height': whenProps({ scale: 'small' }),\n 'text-field-large-height': whenProps({ scale: 'large' }),\n })};\n min-width: 0;\n\n ${font({\n height: 'text-field-font-height',\n })}\n\n font-size: ${conditional({\n 'text-field-font-size': whenProps({ scale: 'default' }),\n 'text-field-small-font-size': whenProps({ scale: 'small' }),\n 'text-field-large-font-size': whenProps({ scale: 'large' }),\n })};\n\n border-radius: ${token('text-field-border-radius')};\n border-width: 1px;\n border-style: solid;\n\n background: ${conditional({\n 'text-field-background': whenProps({ scheme: 'light' }),\n 'text-field-dark-background': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'text-field-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'text-field-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'text-field-danger-border-color': whenProps({ status: Status.Danger }),\n 'text-field-success-border-color': whenProps({ status: Status.Success }),\n })};\n\n color: ${conditional({\n 'text-field-color': whenProps({ scheme: 'light' }),\n 'text-field-dark-color': whenProps({ scheme: 'dark' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'text-field-background--hover': whenProps({ scheme: 'light' }),\n 'text-field-dark-background--hover': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'text-field-border-color--hover': whenProps({ scheme: 'light' }),\n 'text-field-dark-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'text-field-background--focus': whenProps({ scheme: 'light' }),\n 'text-field-dark-background--focus': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'text-field-border-color--focus': whenProps({ scheme: 'light' }),\n 'text-field-dark-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n box-shadow: ${conditional({\n 'text-field-box-shadow': whenProps({ scheme: 'light' }),\n 'text-field-dark-box-shadow': whenProps({ scheme: 'dark' }),\n })};\n\n outline: ${token('text-field-outline')};\n outline-offset: ${token('text-field-outline-offset')};\n `}\n\n ${disableable()}\n`\n\nconst StyledSpan = styled.span<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n color: ${conditional({\n 'text-field-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'text-field-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'text-field-danger-border-color': whenProps({ status: Status.Danger }),\n 'text-field-success-border-color': whenProps({ status: Status.Success }),\n })};\n`\n\nexport const Leading = styled(StyledSpan)<WithAdditionalProps>`\n margin: 0 0 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })};\n`\n\nexport const Trailing = styled(StyledSpan)<WithAdditionalProps>`\n margin: 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })}\n 0 0;\n`\n\nconst StyledInput = styled.input<WithAdditionalProps>`\n ${transition()}\n\n ${font({\n height: 'text-field-font-height',\n })}\n\n background: transparent;\n\n padding: ${conditional({\n 'text-field-padding-y': whenProps({ scale: 'default' }),\n 'text-field-small-padding-y': whenProps({ scale: 'small' }),\n 'text-field-large-padding-y': whenProps({ scale: 'large' }),\n })}\n 0;\n\n margin: 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })};\n\n border: none;\n\n flex: 1;\n\n min-width: 0;\n\n ${focusable()}\n ${disableable()}\n\n /* suppress the clear button for IE */\n &[type=\"search\"]::-ms-clear,\n &[type=\"search\"]::-ms-reveal {\n display: none;\n width: 0;\n height: 0;\n }\n\n /* suppress the clear button for Chromium-based browsers */\n &[type='search']::-webkit-search-decoration,\n &[type='search']::-webkit-search-cancel-button,\n &[type='search']::-webkit-search-results-button,\n &[type='search']::-webkit-search-results-decoration {\n display: none;\n }\n`\n\nconst TextField = forwardRef<HTMLInputElement, TextFieldProps>(function TextField(\n props: TextFieldProps,\n ref\n) {\n const {\n disabled = false,\n status = Status.Neutral,\n scheme = 'light',\n scale = 'default',\n className,\n leading,\n trailing,\n ...others\n } = props\n const { ref: containerRef, focused } = useFocusWithin<HTMLDivElement>()\n\n return (\n <InputWrapper\n className={clsx(className, {\n 'is-disabled': disabled,\n 'is-focused': focused,\n })}\n scheme={scheme}\n status={status}\n scale={scale}\n ref={containerRef}\n >\n {leading && (\n <Leading status={status} scheme={scheme} scale={scale}>\n {leading}\n </Leading>\n )}\n <StyledInput\n ref={ref}\n type=\"text\"\n data-testid=\"input\"\n {...others}\n scale={scale}\n status={status}\n scheme={scheme}\n leading={leading}\n trailing={trailing}\n disabled={disabled}\n />\n {trailing && (\n <Trailing status={status} scheme={scheme} scale={scale}>\n {trailing}\n </Trailing>\n )}\n </InputWrapper>\n )\n})\n\nexport default TextField\n","import { useCallback, useState } from 'react'\n\nimport type { ChangeEvent } from 'react'\nimport type { TextFieldProps } from './TextField'\n\ntype InputValue = string | number | readonly string[] | undefined\ntype ReturnType = [InputValue, (e: ChangeEvent<HTMLInputElement>) => void]\n\nfunction useTextField({ onChange: onChangeProp, value: valueProp }: TextFieldProps): ReturnType {\n const [value, setValue] = useState(valueProp || '')\n\n const onChange = useCallback(\n function handleChange(event: ChangeEvent<HTMLInputElement>) {\n setValue(event.target.value)\n onChangeProp?.(event)\n },\n [onChangeProp]\n )\n\n return [value, onChange]\n}\n\nexport default useTextField\n","import React, { forwardRef } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport { useFocusWithin } from 'hooks/useFocusWithin'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport Status from 'utils/types/Status'\nimport transition from 'styles/transition'\n\nimport type { TextareaHTMLAttributes, ReactNode } from 'react'\n\ninterface WithAdditionalProps {\n readonly scale?: 'small' | 'default' | 'large'\n readonly status?: Status\n readonly scheme?: ColorScheme\n readonly leading?: ReactNode\n readonly trailing?: ReactNode\n}\n\nexport interface TextareaProps\n extends TextareaHTMLAttributes<HTMLTextAreaElement>, WithAdditionalProps {\n readonly className?: string\n readonly children?: ReactNode\n}\n\nconst TextareaWrapper = styled.div<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n\n min-height: ${token('textarea-min-height')};\n\n ${font({\n height: 'textarea-font-height',\n })}\n\n font-size: ${conditional({\n 'textarea-font-size': whenProps({ scale: 'default' }),\n 'textarea-small-font-size': whenProps({ scale: 'small' }),\n 'textarea-large-font-size': whenProps({ scale: 'large' }),\n })};\n\n border-radius: ${token('textarea-border-radius')};\n border-width: 1px;\n border-style: solid;\n\n background: ${conditional({\n 'textarea-background': whenProps({ scheme: 'light' }),\n 'textarea-dark-background': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'textarea-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'textarea-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'textarea-danger-border-color': whenProps({ status: Status.Danger }),\n 'textarea-success-border-color': whenProps({ status: Status.Success }),\n })};\n\n color: ${conditional({\n 'textarea-color': whenProps({ scheme: 'light' }),\n 'textarea-dark-color': whenProps({ scheme: 'dark' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'textarea-background--hover': whenProps({ scheme: 'light' }),\n 'textarea-dark-background--hover': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'textarea-border-color--hover': whenProps({ scheme: 'light' }),\n 'textarea-dark-border-color--hover': whenProps({ scheme: 'dark' }),\n })};\n `}\n\n ${focusable`\n background: ${conditional({\n 'textarea-background--focus': whenProps({ scheme: 'light' }),\n 'textarea-dark-background--focus': whenProps({ scheme: 'dark' }),\n })};\n\n border-color: ${conditional({\n 'textarea-border-color--focus': whenProps({ scheme: 'light' }),\n 'textarea-dark-border-color--focus': whenProps({ scheme: 'dark' }),\n })};\n\n box-shadow: ${conditional({\n 'textarea-box-shadow': whenProps({ scheme: 'light' }),\n 'textarea-dark-box-shadow': whenProps({ scheme: 'dark' }),\n })};\n\n outline: ${token('textarea-outline')};\n outline-offset: ${token('textarea-outline-offset')};\n `}\n\n ${disableable()}\n`\n\nconst StyledSpan = styled.span<WithAdditionalProps>`\n ${transition()}\n\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n color: ${conditional({\n 'textarea-border-color': whenProps({ scheme: 'light', status: Status.Neutral }),\n 'textarea-dark-border-color': whenProps({ scheme: 'dark', status: Status.Neutral }),\n 'textarea-danger-border-color': whenProps({ status: Status.Danger }),\n 'textarea-success-border-color': whenProps({ status: Status.Success }),\n })};\n`\n\nconst Leading = styled(StyledSpan)<WithAdditionalProps>`\n align-items: flex-start;\n\n margin: 0 0 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })};\n\n padding: ${token('space-s')} 0;\n`\n\nconst Trailing = styled(StyledSpan)<WithAdditionalProps>`\n align-items: flex-start;\n\n margin: 0\n ${conditional({\n 'text-field-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'text-field-small-padding-x': whenProps({ scale: 'small' }),\n })}\n 0 0;\n\n padding: ${token('space-s')} 0;\n`\n\nconst StyledTextarea = styled.textarea<WithAdditionalProps>`\n ${transition()}\n\n ${font({\n height: 'textarea-font-height',\n })}\n\n background: transparent;\n\n padding: ${conditional({\n 'textarea-padding-y': whenProps({ scale: 'default' }),\n 'textarea-small-padding-y': whenProps({ scale: 'small' }),\n 'textarea-large-padding-y': whenProps({ scale: 'large' }),\n })}\n 0;\n\n margin: 0\n ${conditional({\n 'textarea-padding-x': whenProps({ scale: ['default', 'large'] }),\n 'textarea-small-padding-x': whenProps({ scale: 'small' }),\n })};\n\n border: none;\n\n flex: 1 0 auto;\n\n ${focusable()}\n ${disableable()}\n`\n\nconst Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(function Textarea(\n props: TextareaProps,\n ref\n) {\n const {\n disabled = false,\n status = Status.Neutral,\n scheme = 'light',\n scale = 'default',\n className,\n leading,\n trailing,\n ...others\n } = props\n const { ref: containerRef, focused } = useFocusWithin<HTMLDivElement>()\n\n return (\n <TextareaWrapper\n className={clsx(className, {\n 'is-disabled': disabled,\n 'is-focused': focused,\n })}\n scheme={scheme}\n scale={scale}\n status={status}\n ref={containerRef}\n >\n {leading && (\n <Leading status={status} scheme={scheme} scale={scale}>\n {leading}\n </Leading>\n )}\n <StyledTextarea\n ref={ref}\n data-testid=\"textarea\"\n {...others}\n scale={scale}\n status={status}\n scheme={scheme}\n leading={leading}\n trailing={trailing}\n disabled={disabled}\n />\n {trailing && (\n <Trailing status={status} scheme={scheme} scale={scale}>\n {trailing}\n </Trailing>\n )}\n </TextareaWrapper>\n )\n})\n\nexport default Textarea\n","import type { AnchorHTMLAttributes } from 'react'\nimport { isBlank } from '@loadsmart/utils-string'\n\nconst INSECURE_HREF = /^javascript:/i\n\nfunction checkHref(props: AnchorHTMLAttributes<HTMLAnchorElement>) {\n const { href, ...others } = props\n\n if (isBlank(href || '')) {\n return props\n }\n\n // Normalize href to prevent bypassing security checks with whitespace or control characters\n // Strip leading control characters (ASCII 0-31) and trim whitespace\n const normalizedHref = (href || '')\n .trim()\n // eslint-disable-next-line no-control-regex -- prevents \" javascript:alert()\" or \"\\u0000javascript:alert()\"\n .replace(/^[\\u0000-\\u001F]+/u, '')\n\n if (INSECURE_HREF.test(normalizedHref)) {\n // security risk, thus, removing it\n return others\n }\n\n return props\n}\n\nfunction checkTarget({ target, rel }: AnchorHTMLAttributes<HTMLAnchorElement>) {\n if (isBlank(target || '')) {\n return { target, rel }\n }\n\n const sanitizedRel = new Set((rel || '').split(/\\s+/).filter(Boolean))\n\n if (target === '_blank') {\n sanitizedRel.add('noopener')\n }\n\n /**\n * To avoid exploitation of the window.opener API, Adding noreferrer,\n * as recommended in https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a\n */\n sanitizedRel.add('noreferrer')\n\n return { rel: Array.from(sanitizedRel).join(' '), target }\n}\n\nfunction useSafeLink(\n props: AnchorHTMLAttributes<HTMLAnchorElement>\n): AnchorHTMLAttributes<HTMLAnchorElement> {\n const { rel, target } = checkTarget(props) || {}\n\n return { ...checkHref(props), rel, target }\n}\n\nexport default useSafeLink\n","import React, { forwardRef } from 'react'\nimport type { AnchorHTMLAttributes, ForwardedRef } from 'react'\nimport clsx from 'clsx'\nimport styled, { css } from 'styled-components'\n\nimport useSafeLink from './useSafeLink'\nimport font from 'styles/font'\nimport transition from 'styles/transition'\nimport ellipsizable from 'styles/ellipsizable'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport disableable from 'styles/disableable'\nimport { getToken as token } from 'theming'\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n readonly className?: string\n readonly disabled?: boolean\n}\n\nconst StyledBaseAnchor = styled.a`\n ${font({\n height: 'link-font-height',\n weight: 'link-font-weight',\n })}\n ${transition()}\n\n ${ellipsizable()}\n\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n text-align: center;\n font-size: ${token('link-font-size')};\n color: ${token('color-neutral-darker')};\n text-decoration: none;\n\n min-height: 24px;\n\n border-radius: ${token('border-radius-s')};\n\n ${hoverable`\n text-decoration: underline;\n font-weight: ${token('link-font-weight--hover')};\n `}\n\n ${focusable`\n box-shadow: ${token('link-box-shadow')};\n outline: ${token('link-outline')};\n outline-offset: ${token('link-outline-offset')};\n `}\n\n ${disableable``}\n\n ${({ children }) =>\n 'string' == typeof children &&\n // to prevent layout shift on hover, https://css-tricks.com/bold-on-hover-without-the-layout-shift/\n css`\n &::after {\n height: 0;\n overflow: hidden;\n\n font-weight: ${token('link-font-weight--hover')};\n\n visibility: hidden;\n\n content: attr(data-text);\n content: attr(data-text) / '';\n user-select: none;\n pointer-events: none;\n\n @media speech {\n display: none;\n }\n }\n `}\n`\n\nexport const BaseLink = forwardRef(function BaseLink(\n { disabled = false, ...props }: LinkProps,\n forwardedRef: ForwardedRef<HTMLAnchorElement>\n) {\n const { href = '/', children, className, target = '_self', ...others } = useSafeLink(props)\n\n return (\n <StyledBaseAnchor\n className={clsx(\n {\n 'is-disabled': disabled,\n },\n className\n )}\n href={href}\n target={target}\n {...others}\n ref={forwardedRef}\n data-text={'string' == typeof children ? children : ''}\n data-testid=\"link\"\n >\n {children}\n </StyledBaseAnchor>\n )\n})\n\nconst StyledAnchor = styled(BaseLink)<LinkProps>`\n color: ${token('link-color')};\n`\n\nfunction Link(props: LinkProps) {\n return <StyledAnchor {...props} />\n}\n\nexport default Link\n","import type { HTMLAttributes } from 'react'\nimport React from 'react'\nimport { isNil } from '@loadsmart/utils-object'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\n\nimport { Link } from '../Link'\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n readonly active?: boolean\n readonly label: string\n readonly url?: string\n}\n\nconst StyledLink = styled(Link)`\n font-size: ${token('breadcrumbs-font-size')};\n line-height: ${token('breadcrumbs-font-height')};\n`\n\nconst StyledLi = styled.li<BreadcrumbProps>`\n ${font({\n height: 'breadcrumbs-font-height',\n weight: 'breadcrumbs-font-weight',\n })}\n\n position: relative;\n\n display: inline-flex;\n align-items: center;\n\n font-weight: ${conditional({\n 'breadcrumbs-font-weight': whenProps({ active: false }),\n 'breadcrumbs-font-weight--active': whenProps({ active: true }),\n })};\n\n font-size: ${token('breadcrumbs-font-size')};\n line-height: ${token('breadcrumbs-font-height')};\n\n & + & {\n margin: 0 0 0 ${token('breadcrumbs-spacing-x')};\n }\n\n &:not(:only-child):not(:last-child)::after {\n position: absolute;\n left: calc(100% + 14px);\n\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('breadcrumbs-font-size')};\n\n line-height: ${token('breadcrumbs-font-height')};\n\n content: '/';\n }\n`\n\nfunction getWrappedLabel(props: Partial<BreadcrumbProps>) {\n const { url, label, onClick, active, ...rest } = props\n\n if (isNil(url) && !onClick) {\n return label\n }\n\n return (\n <StyledLink\n href={url}\n target=\"_self\"\n onClick={onClick}\n {...(active && { 'aria-current': 'page' })}\n {...rest}\n >\n {label}\n </StyledLink>\n )\n}\n\nfunction Breadcrumb({ active, label, url, ...rest }: BreadcrumbProps) {\n return (\n <StyledLi\n className={clsx({ 'is-active': active })}\n label={label}\n data-testid=\"breadcrumb\"\n active={active}\n >\n {getWrappedLabel({ label, url, active, ...rest })}\n </StyledLi>\n )\n}\n\nexport default Breadcrumb\n","import type { MouseEvent } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport type { BreadcrumbProps } from './Breadcrumb'\nimport Breadcrumb from './Breadcrumb'\nimport BackButton from 'common/BackButton'\n\nexport interface BreadcrumbsProps {\n readonly className?: string\n readonly disabled?: boolean\n readonly entries: BreadcrumbProps[]\n readonly onBack?: (e: MouseEvent<HTMLButtonElement>) => void\n}\n\nconst StyledWrapper = styled.nav`\n display: flex;\n flex-direction: row;\n`\n\nconst StyledOl = styled.ol`\n display: flex;\n flex-direction: row;\n margin: 0;\n\n padding: 0;\n\n list-style: none;\n`\n\nconst StyledBackButton = styled(BackButton)`\n margin: 0 ${token('space-m')} 0 0;\n`\n\nfunction Breadcrumbs({ entries, onBack, disabled, ...others }: BreadcrumbsProps) {\n return (\n <StyledWrapper aria-label=\"Breadcrumb\" {...others}>\n {onBack && (\n <StyledBackButton\n data-testid=\"breadcrumbs-back\"\n onClick={onBack}\n disabled={disabled}\n aria-label=\"Back to previous page\"\n />\n )}\n\n <StyledOl data-testid=\"breadcrumbs\">\n {entries.map((entry: BreadcrumbProps) => {\n return <Breadcrumb key={entry.label} {...entry} />\n })}\n </StyledOl>\n </StyledWrapper>\n )\n}\nexport default Breadcrumbs\n","import { useRef, useEffect } from 'react'\n\n/**\n * Hook useful to trigger action conditionally based\n * on if the component is mounted.\n * Be aware that your effect, callback, memo, etc cannot list is\n * as a dependency, otherwise it will be triggered at the wrong moment.\n * @returns Whether the component is mounted or not.\n */\nfunction useDidMount(): boolean {\n const counter = useRef(0)\n\n useEffect(function onMount() {\n counter.current = 1\n }, [])\n\n return counter.current > 0\n}\n\nexport default useDidMount\n","import get from 'utils/toolset/get'\n\nimport type {\n Selectable,\n SelectableAdapter,\n SelectableKeyType,\n SelectableState,\n SelectableStrategy,\n} from './useSelectable.types'\n\nexport interface SelectableStrategyContext<T extends Selectable> {\n getAdapter: (type?: string) => SelectableAdapter<T>\n}\n\nconst GenericAdapter: SelectableAdapter<unknown> = {\n getKey(o): string {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n return get(o, 'value')!\n },\n}\n\nexport function SingleSelectionStrategy<T extends Selectable>(\n context: SelectableStrategyContext<T>\n): SelectableStrategy<T> {\n return {\n type() {\n return 'single'\n },\n init(items: T[]) {\n return this.select(items, new Map())\n },\n select(items: T[]) {\n const newSelection = new Map<SelectableKeyType, T>()\n\n for (let i = 0; i < items.slice(0, 1).length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n newSelection.set(adapter.getKey(items[i]), items[i])\n }\n\n return newSelection\n },\n unselect(keys: SelectableKeyType[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < keys.length; i++) {\n newSelection.delete(keys[i])\n }\n\n return newSelection\n },\n toggle(items: T[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>()\n\n for (let i = 0; i < items.slice(0, 1).length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n\n if (!selection.has(adapter.getKey(items[i]))) {\n newSelection.set(adapter.getKey(items[i]), items[i])\n }\n }\n\n return newSelection\n },\n clear() {\n return new Map<SelectableKeyType, T>()\n },\n }\n}\n\nexport function MultipleSelectionStrategy<T extends Selectable>(\n context: SelectableStrategyContext<T>\n): SelectableStrategy<T> {\n return {\n type() {\n return 'multiple'\n },\n init(items: T[]) {\n return this.select(items, new Map<SelectableKeyType, T>())\n },\n select(items: T[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < items.length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n newSelection.set(adapter.getKey(items[i]), items[i])\n }\n\n return newSelection\n },\n unselect(keys: SelectableKeyType[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < keys.length; i++) {\n newSelection.delete(keys[i])\n }\n\n return newSelection\n },\n toggle(items: T[], selection: SelectableState<T>) {\n const newSelection = new Map<SelectableKeyType, T>(selection)\n\n for (let i = 0; i < items.length; i++) {\n const adapter = context.getAdapter(items[i]._type)\n const key = adapter.getKey(items[i])\n\n if (!selection.has(key)) {\n newSelection.set(key, items[i])\n } else {\n newSelection.delete(key)\n }\n }\n\n return newSelection\n },\n clear() {\n return new Map<SelectableKeyType, T>()\n },\n }\n}\n\nfunction createSelectionStrategy<T extends Selectable>(props: {\n multiple?: boolean\n adapters: Record<string, SelectableAdapter<T>>\n}): SelectableStrategy<T> {\n const { adapters, multiple } = props\n\n const context: SelectableStrategyContext<T> = {\n getAdapter(type?: string) {\n if (type == null) {\n return GenericAdapter\n }\n\n return adapters[type] || GenericAdapter\n },\n }\n\n if (multiple) {\n return MultipleSelectionStrategy(context)\n }\n\n return SingleSelectionStrategy(context)\n}\n\nexport default createSelectionStrategy\n","import range from './range'\n\nconst MAX_LENGTH = 15\nconst INITIAL_LENGTH = 2\nconst ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz-'\n\nexport function IDGenerator({\n maxIDLength,\n initialIDLength,\n alphabet,\n}: {\n maxIDLength: number\n initialIDLength: number\n alphabet: string\n}): () => string {\n let currentLength = initialIDLength\n\n // eslint-disable-next-line prefer-const\n let filledCharacters = [\n ...(Array.from({ length: maxIDLength - currentLength }).fill(-1) as number[]),\n ...(Array.from({ length: currentLength }).fill(0) as number[]),\n ]\n\n let availableIDs = range(initialIDLength, maxIDLength + 1).reduce(\n // using arrangement with repetition formula\n (acc: number, n: number) => acc + Math.pow(alphabet.length, n),\n 0\n )\n\n return function getID() {\n if (availableIDs == 0) {\n throw new Error(`No more IDs available with the provided alphabet and max length`)\n }\n\n availableIDs--\n const newID = filledCharacters.slice(-1 * currentLength).map((at: number) => alphabet[at])\n\n /**\n * [0, 0, 0, 0]\n * ^ at\n */\n let at = filledCharacters.length\n\n /**\n * move to the left in the `filledCharacters` array if\n * we have surpassed the last possible character in `alphabet`.\n * That means:\n * [0,0,0,(alphabet.length - 1)]\n * Becomes:\n * [0,0,1,0]\n */\n\n do {\n at--\n filledCharacters[at] = (filledCharacters[at] + 1) % alphabet.length\n } while (filledCharacters[at] == 0 && at >= filledCharacters.length - currentLength)\n\n /**\n * if we moved to the left as much as `currentLength` allowed,\n * and we have incremented as many times as we could, for each\n * position so we're back to `0`, due to the module operation,\n * i.e., if `currentLength = 3`, for example:\n *\n * [0, 0, 0, 0]\n * ^ currentLength\n * ^at\n *\n * So we need to increase `currentLength` to start incrementing from there:\n * [0, 0, 0, 0]\n * ^ currentLength\n */\n if (filledCharacters.length - at > currentLength) {\n currentLength++\n }\n\n return `genid-${newID.join('')}`\n }\n}\n\n// this configuration is capable of generating 469172025408063600 different IDs.\nconst getID = IDGenerator({\n maxIDLength: MAX_LENGTH,\n alphabet: ALPHABET,\n initialIDLength: INITIAL_LENGTH,\n})\n\nexport default getID\n","import { useState, useRef } from 'react'\n\nimport getID from 'utils/toolset/getID'\n\ntype FingerprintAdapter<T> = (item: T) => string\n\n/**\n * This hook helps with stabilizing changes for components that rely on non-primitive props, more specifically, arrays,\n * objects, maps, sets and so on; when we need to update an internal state based on such types of prop, we might run into an infinite loop.\n * By creating a fingerprint - a string that identifies that set of items - we can garantee that the same set of items will\n * always return the same fingerprint, thus, making check for changes more predictable.\n *\n * @param adapter - adapter function that gets a unique identifier for each item in the `items` prop\n * @param items - list of items whose fingerprint should be checked.\n */\nfunction useFingerprint<T>(\n adapter: FingerprintAdapter<T>,\n items: T[]\n): {\n fingerprint: string\n getFingerprint: (items?: T[] | null, insert?: boolean) => string\n resetFingerprint: (items: T[]) => void\n hasSameFingerprint: (otherItems: T[]) => boolean\n} {\n const knownRef = useRef({} as Record<string, T | string>)\n const [fingerprint, setFingerprint] = useState(() => getFingerprint('', items, true))\n\n /**\n * Get a fingerprint based on the sorted items identifiers.\n *\n * @param fingerprintItems - array of items\n * @param update - update `known` with the provided `items`, if it contains different set of items.\n */\n function getFingerprint(\n currentFingerprint: string,\n fingerprintItems?: T[] | null,\n update = false\n ): string {\n const known = knownRef.current\n\n const safeItems = fingerprintItems ?? []\n\n let newKnown: Record<string, T | string> = {}\n let hasSameItems = Object.keys(known).length === safeItems.length\n\n for (let i = 0; i < safeItems.length; i++) {\n const item = safeItems[i]\n const key = adapter(item)\n\n hasSameItems = hasSameItems && known[key] != null\n\n newKnown = {\n ...newKnown,\n // we associate a previously created or a new random value to compose the fingerprint\n [key]: known[key] ?? getID(),\n }\n }\n\n if (hasSameItems) {\n return currentFingerprint\n }\n\n if (update) {\n knownRef.current = newKnown\n }\n\n return Object.keys(newKnown)\n\n .sort()\n .reduce((computedSignature, item) => {\n return `${computedSignature}${newKnown[item] as string}`\n }, '')\n }\n\n return {\n fingerprint,\n getFingerprint(fingerprintItems?: T[] | null, update = false) {\n return getFingerprint(fingerprint, fingerprintItems, update)\n },\n resetFingerprint(fingerprintItems: T[]) {\n setFingerprint(getFingerprint(fingerprint, fingerprintItems, true))\n },\n /**\n * Check if the provided items have the same fingerprint.\n */\n hasSameFingerprint(otherItems: T[]): boolean {\n return fingerprint === getFingerprint(fingerprint, otherItems)\n },\n }\n}\n\nexport default useFingerprint\n","import { createContext, useEffect, useMemo, useReducer, useRef } from 'react'\nimport { identity } from '@loadsmart/utils-function'\n\nimport { useDidMount } from 'hooks/useDidMount'\nimport createSelectionStrategy from './SelectableStrategy'\nimport toArray from 'utils/toolset/toArray'\nimport useFingerprint from 'hooks/useFingerprint'\n\nimport type { Context } from 'react'\nimport type {\n Selectable,\n SelectableAction,\n SelectableKeyType,\n SelectableState,\n SelectableStrategy,\n useSelectableProps,\n useSelectableReturn,\n} from './useSelectable.types'\n\nconst DEFAULT_ADAPTERS = {}\n\n/**\n * Create a generic manager for collection selection.\n */\nfunction createUseSelectable<T extends Selectable>() {\n return function useSelectable(props: useSelectableProps<T>): useSelectableReturn<T> {\n const { adapters, multiple, onChange } = props\n\n const didMount = useDidMount()\n\n const strategy = useMemo<SelectableStrategy<T>>(() => {\n return createSelectionStrategy<T>({\n adapters: adapters || DEFAULT_ADAPTERS,\n multiple: Boolean(multiple),\n })\n }, [adapters, multiple])\n\n function reducer(state: SelectableState<T>, action: SelectableAction<T>) {\n switch (action.type) {\n case 'select':\n return strategy.select(action.payload, state)\n case 'unselect':\n return strategy.unselect(action.payload, state)\n case 'toggle':\n return strategy.toggle(action.payload, state)\n case 'clear':\n return strategy.clear(state)\n case 'reset':\n return action.payload\n }\n }\n\n function initializer() {\n return strategy.init(toArray(props.selected))\n }\n\n const [selected, dispatch] = useReducer(reducer, new Map<SelectableKeyType, T>(), initializer)\n const { resetFingerprint, hasSameFingerprint } = useFingerprint<string>(\n identity,\n [...selected.keys()].map(String)\n )\n const propagateChangeRef = useRef(false)\n\n function type() {\n return strategy.type()\n }\n\n function select(items: T | T[]) {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'select',\n payload: toArray(items),\n })\n }\n\n function unselect(keys: SelectableKeyType | SelectableKeyType[]) {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'unselect',\n payload: toArray(keys),\n })\n }\n\n function toggle(items: T | T[]) {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'toggle',\n payload: toArray(items),\n })\n }\n\n function clear() {\n propagateChangeRef.current = true\n\n dispatch({\n type: 'clear',\n })\n }\n\n useEffect(\n function handleChange() {\n if (didMount && propagateChangeRef.current) {\n onChange?.(selected)\n }\n\n propagateChangeRef.current = false\n },\n /**\n * We don't want to update when didMount or the onChange callback changes, because we're only interested\n * in changes to the selected state.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [selected]\n )\n\n useEffect(\n function updateOnSelectedPropChange() {\n const newSelected = initializer()\n const keys = [...newSelected.keys()].map(String)\n\n if (hasSameFingerprint(keys)) {\n return\n }\n\n propagateChangeRef.current = false\n\n resetFingerprint(keys)\n dispatch({\n type: 'reset',\n payload: newSelected,\n })\n },\n /**\n * initializer is not relevant for our changes, that's why its ommitted.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.selected, hasSameFingerprint, resetFingerprint]\n )\n\n return { type, selected, select, unselect, toggle, clear }\n }\n}\n\nexport function createSelectable<T extends Selectable>(): {\n SelectableContext: Context<useSelectableReturn<T>>\n useSelectable: (props: useSelectableProps<T>) => useSelectableReturn<T>\n} {\n const SelectableContext = createContext<useSelectableReturn<T>>({} as useSelectableReturn<T>)\n const useSelectable = createUseSelectable<T>()\n\n return { SelectableContext, useSelectable }\n}\n","import React from 'react'\nimport { createSelectable } from 'hooks/useSelectable'\n\nimport type { ToggleGroupProps, ToggleOption } from './ToggleGroup.types'\n\nconst ToggleGroupContext = React.createContext<Pick<ToggleGroupProps, 'scale' | 'disabled'>>({\n scale: 'default',\n disabled: false,\n})\n\nexport const { SelectableContext, useSelectable } = createSelectable<ToggleOption>()\n\nexport default ToggleGroupContext\n","import React, { useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport ToggleGroupContext, { SelectableContext } from './ToggleGroupContext'\n\nimport type { ToggleGroupOptionProps, ToggleGroupType } from './ToggleGroup.types'\n\nconst ToggleButton = styled(BaseButton)<{ $type: ToggleGroupType }>`\n text-transform: ${token('toggle-text-transform')};\n\n background-color: ${conditional({\n 'toggle-background-color': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color': whenProps({ 'aria-checked': true }),\n })};\n\n border-color: ${conditional({\n 'toggle-single-border-color': whenProps({ $type: 'single', 'aria-checked': false }),\n 'toggle-single-checked-border-color': whenProps({ $type: 'single', 'aria-checked': true }),\n 'toggle-multiple-border-color': whenProps({ $type: 'multiple', 'aria-checked': false }),\n 'toggle-multiple-checked-border-color': whenProps({ $type: 'multiple', 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color': whenProps({ 'aria-checked': true }),\n })};\n\n padding: ${token('space-xs')} ${token('space-s')};\n\n ${hoverable`\n border-color: ${conditional({\n 'toggle-multiple-border-color--hover': whenProps({ $type: 'multiple' }),\n 'toggle-single-border-color--hover': whenProps({ $type: 'single' }),\n })};\n\n background-color: ${conditional({\n 'toggle-background-color--hover': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--hover': whenProps({ 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color--hover': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--hover': whenProps({ 'aria-checked': true }),\n })};\n `}\n\n ${focusable`\n border-color: ${conditional({\n 'toggle-multiple-border-color--focus': whenProps({ $type: 'multiple' }),\n 'toggle-single-border-color--focus': whenProps({ $type: 'single' }),\n })};\n\n background-color: ${conditional({\n 'toggle-background-color--focus': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--focus': whenProps({ 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color--focus': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--focus': whenProps({ 'aria-checked': true }),\n })};\n\n box-shadow: ${token('toggle-box-shadow')};\n outline: ${token('toggle-outline')};\n outline-offset: ${token('toggle-outline-offset')};\n `}\n\n ${activatable`\n border-color: ${conditional({\n 'toggle-multiple-border-color--active': whenProps({ $type: 'multiple' }),\n 'toggle-single-border-color--active': whenProps({ $type: 'single' }),\n })};\n\n background-color: ${conditional({\n 'toggle-background-color--active': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--active': whenProps({ 'aria-checked': true }),\n })};\n\n color: ${conditional({\n 'toggle-color--active': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--active': whenProps({ 'aria-checked': true }),\n })};\n `}\n\n ${disableable`\n background-color: ${conditional({\n 'toggle-background-color--disabled': whenProps({ 'aria-checked': false }),\n 'toggle-checked-background-color--disabled': whenProps({ 'aria-checked': true }),\n })};\n\n border-color: ${conditional({\n 'toggle-single-border-color--disabled': whenProps({ $type: 'single', 'aria-checked': false }),\n 'toggle-single-checked-border-color--disabled': whenProps({\n $type: 'single',\n 'aria-checked': true,\n }),\n 'toggle-multiple-border-color--disabled': whenProps({\n $type: 'multiple',\n 'aria-checked': false,\n }),\n 'toggle-multiple-checked-border-color--disabled': whenProps({\n $type: 'multiple',\n 'aria-checked': true,\n }),\n })};\n\n color: ${conditional({\n 'toggle-color--disabled': whenProps({ 'aria-checked': false }),\n 'toggle-checked-color--disabled': whenProps({ 'aria-checked': true }),\n })};\n `}\n`\n\nfunction isMultiple(type: ToggleGroupType) {\n return type === 'multiple'\n}\n\nfunction Toggle({ value, children, disabled, ...others }: ToggleGroupOptionProps) {\n const group = useContext(ToggleGroupContext)\n const selectable = useContext(SelectableContext)\n\n if (isEmpty(selectable)) {\n throw new Error('A Toggle options must be rendered inside a ToggleGroup')\n }\n\n const selected = selectable.selected.has(value)\n\n return (\n <ToggleButton\n {...others}\n $type={selectable.type()}\n type=\"button\"\n role={isMultiple(selectable.type()) ? 'checkbox' : 'radio'}\n aria-checked={selected}\n disabled={Boolean(disabled || group.disabled)}\n onClick={() => {\n if (isMultiple(selectable.type())) {\n selectable.toggle({ value })\n } else {\n selectable.select({ value })\n }\n }}\n scale={group.scale}\n >\n {children}\n </ToggleButton>\n )\n}\n\nexport default styled(Toggle)({})\n","import React, { useCallback } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport conditional, { whenProps } from 'tools/conditional'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport toArray from 'utils/toolset/toArray'\nimport Toggle from './Toggle'\nimport ToggleGroupContext, { SelectableContext, useSelectable } from './ToggleGroupContext'\n\nimport type {\n ToggleGroupOptionProps,\n ToggleGroupProps,\n ToggleOption,\n ToggleGroupOptionValue,\n SelectedToggleGroupOptions,\n} from './ToggleGroup.types'\nimport type { SelectableState } from '../../hooks/useSelectable'\n\nconst Container = styled(Group)<{ $multiple: boolean; $scale: ToggleGroupProps['scale'] }>`\n padding: ${conditional({\n 'toggle-group-multiple-padding': whenProps({ $multiple: true }),\n 'toggle-group-single-padding': whenProps({ $multiple: false }),\n })};\n\n border-color: ${conditional({\n 'toggle-group-multiple-border-color': whenProps({ $multiple: true }),\n 'toggle-group-single-border-color': whenProps({ $multiple: false }),\n })};\n\n border-style: ${conditional({\n 'toggle-group-multiple-border-style': whenProps({ $multiple: true }),\n 'toggle-group-single-border-style': whenProps({ $multiple: false }),\n })};\n\n border-width: ${conditional({\n 'toggle-group-multiple-border-width': whenProps({ $multiple: true }),\n 'toggle-group-single-border-width': whenProps({ $multiple: false }),\n })};\n\n border-radius: ${conditional({\n 'toggle-group-multiple-border-radius': whenProps({ $multiple: true }),\n 'toggle-group-single-border-radius': whenProps({ $multiple: false }),\n })};\n\n &.are-disabled {\n border-color: ${token('toggle-group-border-color--disabled')};\n }\n\n ${Toggle} {\n height: ${conditional({\n 'toggle-single-height': whenProps({ $multiple: false, $scale: 'default' }),\n 'toggle-single-small-height': whenProps({ $multiple: false, $scale: 'small' }),\n 'toggle-multiple-height': whenProps({ $multiple: true, $scale: 'default' }),\n 'toggle-multiple-small-height': whenProps({ $multiple: true, $scale: 'small' }),\n })};\n\n font-size: ${conditional({\n 'toggle-single-font-size': whenProps({ $multiple: false, $scale: 'default' }),\n 'toggle-single-small-font-size': whenProps({ $multiple: false, $scale: 'small' }),\n 'toggle-multiple-font-size': whenProps({ $multiple: true, $scale: 'default' }),\n 'toggle-multiple-small-font-size': whenProps({ $multiple: true, $scale: 'small' }),\n })};\n }\n`\n\nfunction fromValueToSelected(\n value: ToggleGroupOptionValue | ToggleGroupOptionValue[]\n): ToggleOption[] {\n const valueAsArray = toArray(value)\n\n return valueAsArray.map((optionValue) => ({ value: optionValue }))\n}\n\nfunction fromSelectedToValue(\n selected: SelectedToggleGroupOptions,\n multiple: boolean\n): ToggleGroupOptionValue | ToggleGroupOptionValue[] | null {\n const pairs = Array.from(selected)\n\n if (multiple) {\n const value: ToggleGroupOptionValue[] = []\n for (const [, option] of pairs) {\n value.push(option.value)\n }\n\n return value\n }\n if (isEmpty(pairs)) {\n return null\n }\n const [[, option]] = pairs\n return option.value\n}\n\nconst DEFAULT_SELECTED: ToggleGroupOptionValue[] = []\n\nfunction ToggleGroup(props: ToggleGroupProps) {\n const {\n value,\n disabled = false,\n multiple = false,\n scale = 'default',\n id,\n name,\n onChange,\n options,\n children,\n className,\n ...others\n } = props\n const selectable = useSelectable({\n multiple,\n selected: fromValueToSelected(value ?? DEFAULT_SELECTED),\n onChange: useCallback(\n function handleSelectionChange(selected: SelectableState<ToggleOption>) {\n onChange?.({\n target: { id, name: name ?? '', value: fromSelectedToValue(selected, multiple) },\n })\n },\n [id, multiple, name, onChange]\n ),\n })\n\n return (\n <Container\n {...others}\n className={clsx(className, {\n 'are-disabled': disabled,\n })}\n id={id}\n role={multiple ? 'group' : 'radiogroup'}\n align=\"center\"\n space=\"xs\"\n $multiple={multiple}\n $scale={scale}\n >\n <ToggleGroupContext.Provider value={{ scale, disabled }}>\n <SelectableContext.Provider value={selectable}>\n {children ??\n options?.map(function renderOption(option: ToggleGroupOptionProps) {\n const { label, value: optionValue, ...additionalProps } = option\n const key = String(optionValue)\n\n return (\n <Toggle\n key={key}\n {...additionalProps}\n disabled={Boolean(disabled || option.disabled)}\n value={optionValue}\n >\n {label}\n </Toggle>\n )\n })}\n </SelectableContext.Provider>\n </ToggleGroupContext.Provider>\n </Container>\n )\n}\n\nToggleGroup.Option = Toggle\n\nexport default ToggleGroup\n","import { createContext } from 'react'\n\ninterface TabContextValue {\n id: string\n activeTab: string\n setActiveTab: (name: string) => void\n direction?: 'horizontal' | 'vertical'\n}\n\nexport const TabContext = createContext<TabContextValue>({} as TabContextValue)\n","import React from 'react'\n\nimport getID from 'utils/toolset/getID'\n\nfunction useID(propId?: string): string {\n const [id, setID] = React.useState(() => propId || getID())\n\n React.useEffect(\n function updateID() {\n setID(propId || getID())\n },\n [propId]\n )\n\n return id\n}\n\nexport default useID\n","import type { HTMLAttributes, ChangeEvent, ReactNode } from 'react'\nimport React, { useContext, useState, useEffect } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { TabContext } from './TabsContext'\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport disableable from 'styles/disableable'\nimport transition from 'styles/transition'\nimport useID from 'hooks/useID'\n\nimport type { WithDirectionProps, WithActiveProps } from './Tabs.types'\nimport clsx from 'clsx'\n\nconst TabsItemsWrapper = styled.ul`\n display: flex;\n\n padding: 0;\n\n border-bottom-color: ${token('color-neutral-lighter')};\n border-bottom-width: 2px;\n border-bottom-style: solid;\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Children = styled(StyledSpan)`\n flex: 1;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst StyledListItem = styled.li`\n display: flex;\n`\n\nconst StyledLabel = styled.label<WithActiveProps & WithDirectionProps>`\n ${font({\n height: 'font-height-2',\n weight: 'font-weight-bold',\n })}\n ${transition()}\n\n font-size: ${token('font-size-4')};\n text-transform: uppercase;\n text-align: ${conditional({\n center: whenProps({ direction: 'vertical' }),\n justify: whenProps({ direction: 'horizontal' }),\n })};\n\n ${hoverable`\n color: ${token('color-neutral-darker')};\n background-color: ${token('color-neutral-light')}33;\n `}\n\n ${disableable`\n color: ${token('color-neutral-dark')}33;\n background-color: ${token('color-neutral-light')};\n `}\n\n padding: ${token('space-m')} ${token('space-l')};\n display: inline-flex;\n flex-direction: ${conditional({\n row: whenProps({ direction: 'horizontal' }),\n column: whenProps({ direction: 'vertical' }),\n })};\n\n cursor: pointer;\n\n position: relative;\n bottom: -2px;\n\n border-bottom-width: 2px;\n border-bottom-style: solid;\n\n border-color: ${conditional({\n 'color-transparent': whenProps({ active: false }),\n 'color-primary': whenProps({ active: true }),\n })};\n\n color: ${conditional({\n 'color-neutral': whenProps({ active: false }),\n 'neutral-darker': whenProps({ active: true }),\n })};\n\n ${Leading} + ${Children} {\n margin: ${conditional({\n '0': whenProps({ direction: 'horizontal' }),\n 'space-2xs': whenProps({ direction: 'vertical' }),\n })}\n 0 0\n ${conditional({\n 'space-s': whenProps({ direction: 'horizontal' }),\n '0': whenProps({ direction: 'vertical' }),\n })};\n }\n`\n\ntype TabsItemsProps = HTMLAttributes<HTMLUListElement>\n\nfunction TabsItems({ children, ...props }: TabsItemsProps) {\n return (\n <TabsItemsWrapper {...props} role=\"tablist\">\n {children}\n </TabsItemsWrapper>\n )\n}\n\ninterface TabsItemProps extends HTMLAttributes<HTMLInputElement> {\n readonly name: string\n readonly default?: boolean\n readonly leading?: ReactNode\n readonly disabled?: boolean\n}\n\nfunction TabsItem({\n children,\n name,\n default: isDefault,\n className,\n onChange,\n leading,\n disabled = false,\n ...props\n}: TabsItemProps) {\n const { id: tabId, setActiveTab, activeTab, direction } = useContext(TabContext)\n\n const isActive = activeTab === name\n\n const handleSelect = (event: ChangeEvent<HTMLInputElement>) => {\n setActiveTab(name)\n onChange?.(event)\n }\n\n useEffect(() => {\n if (!activeTab && isDefault) {\n setActiveTab(name)\n }\n }, [activeTab, name, setActiveTab, isDefault])\n\n return (\n <StyledListItem role=\"tab\" aria-selected={isActive ? 'true' : 'false'}>\n <StyledLabel\n className={clsx(\n {\n 'is-disabled': disabled,\n },\n className\n )}\n active={activeTab === name}\n direction={direction}\n >\n <input\n {...props}\n value={name}\n checked={isActive}\n disabled={disabled}\n type=\"radio\"\n name={tabId}\n onChange={handleSelect}\n hidden\n />\n {leading && <Leading>{leading}</Leading>}\n {children && <Children>{children}</Children>}\n </StyledLabel>\n </StyledListItem>\n )\n}\n\ntype PanelsItemsProps = HTMLAttributes<HTMLDivElement>\n\nconst PanelsItemsWrapper = styled.div`\n /* placeholder */\n`\n\nconst PanelsItemWrapper = styled.article`\n display: ${conditional({\n block: whenProps({ 'aria-hidden': false }),\n none: whenProps({ 'aria-hidden': true }),\n })};\n`\n\nfunction PanelsItems({ children, ...props }: PanelsItemsProps) {\n return <PanelsItemsWrapper {...props}>{children}</PanelsItemsWrapper>\n}\n\ninterface PanelsItemProps extends HTMLAttributes<HTMLElement> {\n readonly name: string\n /**\n * Renders the Panel.Item only when is visible\n * @default false\n */\n readonly lazy?: boolean\n}\n\nfunction PanelsItem({ children, name, lazy = false, ...props }: PanelsItemProps) {\n const { activeTab } = useContext(TabContext)\n\n const hidden = activeTab !== name\n\n return (\n <PanelsItemWrapper {...props} role=\"tabpanel\" aria-hidden={hidden}>\n {lazy && hidden ? null : children}\n </PanelsItemWrapper>\n )\n}\n\nexport interface TabsProps extends HTMLAttributes<HTMLElement>, WithDirectionProps {\n readonly activeTab?: string\n readonly onTabChange?: (tab: string) => void\n}\n\nconst TabsWrapper = styled.div`\n ${TabsItemsWrapper} + ${PanelsItemsWrapper} {\n margin: ${token('space-xl')} 0 0 0;\n }\n`\n\n/**\n * @example\n * <Tabs>\n <Tabs.Items>\n <Tabs.Item name=\"tab-1\" default>\n Tabs 1\n </Tabs.Item>\n <Tabs.Item name=\"tab-2\">Tabs 2</Tabs.Item>\n </Tabs.Items>\n <Tabs.Panels>\n <Tabs.Panel name=\"tab-1\">first content</Tabs.Panel>\n <Tabs.Panel name=\"tab-2\">second content</Tabs.Panel>\n </Tabs.Panels>\n * </Tabs>\n */\nfunction Tabs({\n children,\n direction = 'horizontal',\n id: propId,\n activeTab: propTab = '',\n onTabChange,\n ...props\n}: TabsProps) {\n const [activeTab, setActiveTab] = useState(propTab)\n const id = useID(propId)\n\n useEffect(() => {\n if (propTab) {\n setActiveTab(propTab)\n }\n }, [propTab])\n\n useEffect(() => {\n onTabChange?.(activeTab)\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeTab])\n\n return (\n <TabsWrapper {...props}>\n <TabContext.Provider value={{ activeTab, setActiveTab, id, direction }}>\n {children}\n </TabContext.Provider>\n </TabsWrapper>\n )\n}\n\nTabs.Items = TabsItems\nTabs.Item = TabsItem\nTabs.Panels = PanelsItems\nTabs.Panel = PanelsItem\n\nexport default Tabs\n","import type { HTMLAttributes, ReactNode } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\n\nexport type SectionProps = HTMLAttributes<HTMLElement>\n\nconst StyledSection = styled.section`\n ${font({\n height: 'font-height-2',\n })}\n`\n\nconst StyledSectionTitle = styled.section`\n ${font({\n weight: 'font-weight-bold',\n height: 'font-height-2',\n })}\n\n font-size: ${token('font-size-3')};\n color: ${token('color-neutral-darker')};\n\n border-bottom: 2px solid ${token('color-neutral-light')};\n\n padding: ${token('space-s')} ${token('space-xs')};\n margin-bottom: ${token('space-l')};\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Leading = styled(StyledSpan)`\n margin: 0 ${token('button-spacing-x')} 0 0;\n`\n\nexport interface SectionTitleProps extends HTMLAttributes<HTMLElement> {\n readonly children: ReactNode\n readonly leading?: ReactNode\n}\n\nfunction SectionTitle({ children, leading, ...others }: SectionTitleProps) {\n return (\n <StyledSectionTitle data-testid=\"section-title\" {...others}>\n {leading && <Leading>{leading}</Leading>}\n {children}\n </StyledSectionTitle>\n )\n}\n\nfunction Section({ children, ...others }: SectionProps) {\n return (\n <StyledSection data-testid=\"section\" {...others}>\n {children}\n </StyledSection>\n )\n}\n\nSection.Title = SectionTitle\n\nexport default Section\n","/**\n * Add basic CSS style for hide elements\n * @param accessible - should keep element visible for screen readers\n */\nfunction hiddenStyle(accessible = false): string {\n if (accessible) {\n return `\n border: 0 !important;\n clip: rect(0 0 0 0) !important;\n clip-path: inset(50%) !important;\n height: 1px !important;\n margin: -1px !important;\n overflow: hidden !important;\n padding: 0 !important;\n position: absolute !important;\n white-space: nowrap !important;\n width: 1px !important;\n pointer-events: none;\n `\n }\n\n return `\n display: none !important;\n opacity: 0 !important;\n `\n}\n\nexport default hiddenStyle\n","import type { ReactNode } from 'react'\nimport React, { createContext, useState } from 'react'\n\ntype AccordionContextType = [boolean, () => void]\nconst AccordionContext = createContext<AccordionContextType | undefined>(undefined)\n\nfunction AccordionProvider({\n expanded,\n children,\n onExpandedChange,\n initialExpanded = false,\n}: {\n readonly children: ReactNode\n readonly initialExpanded?: boolean\n readonly expanded?: boolean\n readonly onExpandedChange?: (expanded: boolean) => void\n}) {\n const [openState, setOpenState] = useState(initialExpanded)\n const open = expanded ?? openState\n\n function toggle() {\n onExpandedChange?.(!open)\n setOpenState(!open)\n }\n\n return <AccordionContext.Provider value={[open, toggle]}>{children}</AccordionContext.Provider>\n}\n\nfunction useAccordionContext(): AccordionContextType {\n const context = React.useContext(AccordionContext)\n if (!context) {\n throw new Error('useAccordionContext must be used within an AccordionProvider')\n }\n return context\n}\n\nexport { AccordionProvider, useAccordionContext }\n","import React from 'react'\nimport type { PropsWithChildren, HTMLAttributes, ReactNode } from 'react'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\nimport { identity, isFunction } from '@loadsmart/utils-function'\n\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport transition from 'styles/transition'\nimport ellipsizable from 'styles/ellipsizable'\nimport hidden from 'styles/hidden'\n\nimport { AccordionProvider, useAccordionContext } from './Accordion.context'\n\nconst StyledWrapper = styled.article<{ open: boolean }>`\n background: ${token('color-neutral-white')};\n border: 1px solid\n ${conditional({\n 'color-neutral-light': whenProps({ open: false }),\n 'color-accent': whenProps({ open: true }),\n })};\n border-radius: ${token('border-radius-s')};\n\n ${hoverable`\n border-color: ${token('color-accent')};\n `}\n`\n\nconst StyledToggle = styled.button<{ open: boolean }>`\n ${font({\n height: 'font-height-2',\n })}\n\n ${transition()}\n\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n\n font-size: ${token('font-size-3')};\n font-weight: ${conditional({\n 'font-weight-regular': whenProps({ open: false }),\n 'font-weight-bold': whenProps({ open: true }),\n })};\n text-align: left;\n\n cursor: pointer;\n\n color: ${token('color-neutral-darker')};\n\n background-color: ${token('color-transparent')};\n border-radius: ${token('border-radius-s')};\n border: none;\n box-sizing: border-box;\n\n padding: ${token('space-s')} ${token('space-m')};\n\n width: 100%;\n\n ${hoverable`\n background: ${token('color-neutral-lighter')};\n `}\n\n ${focusable`\n box-shadow: ${token('shadow-glow-primary')};\n `}\n`\n\nconst StyledContent = styled.section<{ open: boolean }>`\n ${font({\n height: 'font-height-2',\n weight: 'font-weight-medium',\n })}\n\n padding-left: ${conditional({\n '0': whenProps({ open: false }),\n 'space-m': whenProps({ open: true }),\n })};\n padding-right: ${conditional({\n '0': whenProps({ open: false }),\n 'space-m': whenProps({ open: true }),\n })};\n padding-top: ${conditional({\n '0': whenProps({ open: false }),\n 'space-xl': whenProps({ open: true }),\n })};\n padding-bottom: ${conditional({\n '0': whenProps({ open: false }),\n 'space-s': whenProps({ open: true }),\n })};\n\n overflow-x: hidden;\n overflow-y: auto;\n`\n\nconst HiddenInput = styled.input`\n ${hidden()}\n\n &:not(:checked) + ${StyledContent} {\n height: 0;\n }\n\n &:checked + ${StyledContent} {\n height: 100%;\n }\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Leading = styled(StyledSpan)`\n margin: 0 ${token('space-xs')} 0 0;\n`\n\nconst Trailing = styled(StyledSpan)`\n margin: 0 0 0 auto;\n`\n\nconst Children = styled.span`\n pointer-events: none;\n\n ${ellipsizable()}\n`\n\nfunction ToggleIndicator({ open }: { readonly open: boolean }) {\n return <Icon name={open ? 'minus' : 'plus'} size={16} />\n}\n\nfunction AccordionWrapper({ children, ...others }: PropsWithChildren<HTMLAttributes<HTMLElement>>) {\n const [open] = useAccordionContext()\n return (\n <StyledWrapper data-testid=\"accordion\" open={open} {...others}>\n {children}\n </StyledWrapper>\n )\n}\n\nexport interface AccordionToggleProps {\n readonly leading?: ReactNode | ((expanded: boolean) => ReactNode)\n readonly trailing?: ReactNode | ((expanded: boolean) => ReactNode)\n}\n\nfunction AccordionToggle({\n leading,\n trailing: propsTrailing,\n children,\n}: PropsWithChildren<AccordionToggleProps>) {\n const [open, toggle] = useAccordionContext()\n\n const trailing = propsTrailing === undefined ? <ToggleIndicator open={open} /> : propsTrailing\n\n return (\n <StyledToggle open={open} onClick={toggle} type=\"button\" data-testid=\"accordion-toggle\">\n {leading && (\n <Leading data-testid=\"accordion-toggle-leading\">\n {isFunction(leading) ? leading(open) : leading}\n </Leading>\n )}\n <Children>{children}</Children>\n {trailing && (\n <Trailing data-testid=\"accordion-toggle-trailing\">\n {isFunction(trailing) ? trailing(open) : trailing}\n </Trailing>\n )}\n </StyledToggle>\n )\n}\n\nexport type AccordionBodyProps = HTMLAttributes<HTMLElement>\n\nfunction AccordionBody({ children, ...props }: PropsWithChildren<AccordionBodyProps>) {\n const [open] = useAccordionContext()\n\n return (\n <>\n <HiddenInput type=\"checkbox\" checked={open} onChange={identity} />\n <StyledContent\n open={open}\n className={clsx({\n 'is-open': open,\n })}\n aria-hidden={!open ? 'true' : 'false'}\n data-testid=\"accordion-content\"\n {...props}\n >\n {children}\n </StyledContent>\n </>\n )\n}\n\nexport interface AccordionProps extends HTMLAttributes<HTMLElement> {\n readonly expanded?: boolean\n readonly initialExpanded?: boolean\n readonly onExpandedChange?: (expanded: boolean) => void\n}\n\nfunction Accordion({\n children,\n expanded,\n initialExpanded,\n onExpandedChange,\n ...others\n}: AccordionProps) {\n return (\n <AccordionProvider\n expanded={expanded}\n initialExpanded={initialExpanded}\n onExpandedChange={onExpandedChange}\n >\n <AccordionWrapper {...others}>{children}</AccordionWrapper>\n </AccordionProvider>\n )\n}\n\nAccordion.Toggle = AccordionToggle\nAccordion.Body = AccordionBody\n\nexport default Accordion\n","import type { ReactNode } from 'react'\nimport React, { useState } from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport { Icon as DefaultIcon } from 'components/Icon'\n\nimport { BaseButton } from 'components/Button'\nimport DefaultCloseButton from 'common/CloseButton'\n\nexport interface BannerProps {\n readonly className?: string\n readonly variant?: 'success' | 'danger' | 'warning' | 'neutral'\n readonly icon?: ReactNode\n readonly scale?: 'default' | 'large'\n readonly title?: string | ReactNode\n readonly description?: string | ReactNode\n readonly onClose?: () => void\n readonly dismissible?: boolean\n}\n\nexport interface BannerActionProps extends BannerProps {\n readonly action?: string\n readonly secondaryAction?: string\n readonly onActionButtonClick?: () => void\n readonly onSecondaryActionButtonClick?: () => void\n}\n\ninterface VariantProps {\n variant?: 'success' | 'danger' | 'warning' | 'neutral'\n}\n\nconst Description = styled.div`\n color: ${token('banner-description-color')};\n font-size: ${token('banner-font-size')};\n line-height: ${token('banner-font-height')};\n text-align: left;\n`\n\nconst Title = styled.div<VariantProps>`\n font-weight: ${token('banner-title-font-weight')};\n font-size: ${token('banner-font-size')};\n line-height: ${token('banner-font-height')};\n text-align: left;\n`\n\nconst TextSection = styled.div<{ $dismissible?: boolean }>`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-items: center;\n padding-right: ${conditional({\n 'space-xl': whenProps({ $dismissible: true }),\n })};\n`\n\nconst StyledBanner = styled.div<Omit<BannerProps, 'dismissible'>>`\n position: relative;\n\n display: flex;\n flex-wrap: ${conditional({\n wrap: whenProps({ scale: 'default' }),\n 'no-wrap': whenProps({ scale: 'large' }),\n })};\n align-items: center;\n min-width: ${token('banner-min-width')};\n\n min-height: ${conditional({\n 'banner-default-height': whenProps({ scale: 'default' }),\n })};\n padding: ${conditional({\n 'banner-default-padding-y': whenProps({ scale: 'default' }),\n 'banner-large-padding': whenProps({ scale: 'large' }),\n })}\n ${conditional({\n 'banner-default-padding-x': whenProps({ scale: 'default' }),\n 'banner-large-padding': whenProps({ scale: 'large' }),\n })};\n\n color: ${conditional({\n 'banner-title-color-success': whenProps({ variant: 'success' }),\n 'banner-title-color-danger': whenProps({ variant: 'danger' }),\n 'banner-title-color-warning': whenProps({ variant: 'warning' }),\n 'banner-title-color-neutral': whenProps({ variant: 'neutral' }),\n })};\n\n background: ${conditional({\n 'banner-background-success': whenProps({ variant: 'success' }),\n 'banner-background-warning': whenProps({ variant: 'warning' }),\n 'banner-background-danger': whenProps({ variant: 'danger' }),\n 'banner-background-neutral': whenProps({ variant: 'neutral' }),\n })};\n\n border-color: ${conditional({\n 'banner-border-color-success': whenProps({ variant: 'success' }),\n 'banner-border-color-warning': whenProps({ variant: 'warning' }),\n 'banner-border-color-danger': whenProps({ variant: 'danger' }),\n 'banner-border-color-neutral': whenProps({ variant: 'neutral' }),\n })};\n border-style: solid;\n border-width: ${token('banner-border-width')};\n\n border-radius: ${token('banner-border-radius')};\n`\n\nexport const CloseButton = styled(DefaultCloseButton)`\n position: absolute;\n top: ${conditional({\n 'banner-default-close-top': whenProps({ scale: 'default' }),\n 'banner-large-close-top': whenProps({ scale: 'large' }),\n })};\n right: ${conditional({\n 'banner-default-close-right': whenProps({ scale: 'default' }),\n 'banner-large-close-right': whenProps({ scale: 'large' }),\n })};\n\n width: ${token('banner-icon-width')};\n height: ${token('banner-icon-height')};\n`\n\nconst IconWrapper = styled.span<{ scale: string }>`\n display: inline-flex;\n align-items: center;\n\n align-self: ${conditional({\n 'banner-default-icon-alignment': whenProps({ scale: 'default' }),\n 'banner-large-icon-alignment': whenProps({ scale: 'large' }),\n })};\n justify-content: center;\n\n margin-right: ${token('banner-icon-margin-right')};\n`\n\nexport const Icon = styled(DefaultIcon)`\n width: ${token('banner-icon-width')};\n height: ${token('banner-icon-height')};\n`\n\nconst Button = styled(BaseButton)`\n min-width: 88px;\n margin-top: ${token('space-s')};\n margin-left: ${conditional({\n '0': whenProps({ variant: 'primary' }),\n 'banner-secondary-button-margin-left': whenProps({ variant: 'secondary' }),\n })};\n\n color: ${conditional({\n 'banner-button-text-color': whenProps({ variant: 'primary' }),\n 'banner-button-background-danger': whenProps({ variant: 'secondary', className: 'danger' }),\n 'banner-button-background-warning': whenProps({ variant: 'secondary', className: 'warning' }),\n 'banner-button-background-neutral': whenProps({ variant: 'secondary', className: 'neutral' }),\n 'banner-button-background-success': whenProps({ variant: 'secondary', className: 'success' }),\n })};\n\n background-color: ${conditional({\n 'banner-button-background-success': whenProps({ variant: 'primary', className: 'success' }),\n 'banner-button-background-danger': whenProps({ variant: 'primary', className: 'danger' }),\n 'banner-button-background-warning': whenProps({ variant: 'primary', className: 'warning' }),\n 'banner-button-background-neutral': whenProps({ variant: 'primary', className: 'neutral' }),\n 'banner-button-background-secondary': whenProps({ variant: 'secondary' }),\n })};\n\n border-color: ${conditional({\n 'banner-button-background-success': whenProps({ className: 'success' }),\n 'banner-button-background-danger': whenProps({ className: 'danger' }),\n 'banner-button-background-warning': whenProps({ className: 'warning' }),\n 'banner-button-background-neutral': whenProps({ className: 'neutral' }),\n })};\n`\nconst InlineButton = styled(Button)`\n flex-shrink: 0;\n align-self: center;\n`\n\nconst ButtonWrapper = styled.div`\n display: flex;\n margin-top: -${token('space-s')};\n margin-right: 0;\n margin-left: auto;\n`\n\nconst LargeButtonWrapper = styled.div`\n display: flex;\n margin-left: 0;\n`\n\nconst TextWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-right: ${token('space-s')};\n`\n\nconst getAlertIcon = (variant: string, scale: string, icon?: ReactNode) => {\n if (icon) {\n return <IconWrapper scale={scale}>{icon}</IconWrapper>\n }\n\n let iconName = ''\n switch (variant) {\n case 'success':\n iconName = 'check'\n break\n case 'danger':\n case 'warning':\n iconName = 'warning'\n break\n default:\n iconName = 'information'\n }\n\n return (\n <IconWrapper scale={scale}>\n <Icon name={iconName} size={24} />\n </IconWrapper>\n )\n}\n\nfunction Banner({\n scale = 'default',\n variant = 'neutral',\n icon,\n title,\n description,\n onClose,\n dismissible = true,\n ...others\n}: BannerProps) {\n const [visible, setVisible] = useState<boolean>(true)\n\n if (!visible) {\n return null\n }\n\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n <TextWrapper>\n {getAlertIcon(variant, scale, icon)}\n <TextSection $dismissible={dismissible}>\n {scale === 'default' ? (\n React.isValidElement(title) ? (\n title\n ) : (\n <Title variant={variant}>{title}</Title>\n )\n ) : (\n <>\n {React.isValidElement(title) ? title : <Title>{title}</Title>}\n {description &&\n (React.isValidElement(description) ? (\n description\n ) : (\n <Description>{description}</Description>\n ))}\n </>\n )}\n </TextSection>\n </TextWrapper>\n {dismissible && (\n <CloseButton\n scale={scale}\n onClick={() => {\n onClose?.()\n setVisible(false)\n }}\n type=\"button\"\n data-testid=\"close-button\"\n >\n <Icon name=\"close\" size={20} />\n </CloseButton>\n )}\n </StyledBanner>\n )\n}\n\nexport function BannerLarge({\n scale = 'large',\n variant = 'neutral',\n icon,\n title,\n description,\n onClose,\n dismissible = true,\n ...others\n}: BannerProps) {\n const [visible, setVisible] = useState<boolean>(true)\n\n if (!visible) {\n return null\n }\n\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n {getAlertIcon(variant, scale, icon)}\n <TextSection $dismissible={dismissible}>\n {React.isValidElement(title) ? title : <Title>{title}</Title>}\n {React.isValidElement(description) ? description : <Description>{description}</Description>}\n </TextSection>\n {dismissible && (\n <CloseButton\n scale={scale}\n onClick={() => {\n onClose?.()\n setVisible(false)\n }}\n type=\"button\"\n >\n <Icon name=\"close\" size={16} />\n </CloseButton>\n )}\n </StyledBanner>\n )\n}\n\nexport function BannerAction({\n scale = 'default',\n variant = 'neutral',\n icon,\n title,\n action,\n secondaryAction,\n onActionButtonClick,\n onSecondaryActionButtonClick,\n ...others\n}: BannerActionProps) {\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n <TextWrapper>\n {getAlertIcon(variant, scale, icon)}\n <TextSection>\n {React.isValidElement(title) ? title : <Title variant={variant}>{title}</Title>}\n </TextSection>\n </TextWrapper>\n <ButtonWrapper>\n <InlineButton\n scale=\"small\"\n variant=\"primary\"\n className={variant}\n type=\"button\"\n onClick={onActionButtonClick}\n >\n {action}\n </InlineButton>\n {secondaryAction && (\n <InlineButton\n scale=\"small\"\n className={variant}\n variant=\"secondary\"\n type=\"button\"\n onClick={onSecondaryActionButtonClick}\n >\n {secondaryAction}\n </InlineButton>\n )}\n </ButtonWrapper>\n </StyledBanner>\n )\n}\n\nexport function BannerActionLarge({\n scale = 'large',\n variant = 'neutral',\n icon,\n title,\n description,\n action,\n secondaryAction,\n onActionButtonClick,\n onSecondaryActionButtonClick,\n onClose,\n dismissible = false,\n ...others\n}: BannerActionProps) {\n const [visible, setVisible] = useState<boolean>(true)\n\n if (!visible) {\n return null\n }\n\n return (\n <StyledBanner {...others} scale={scale} variant={variant}>\n {getAlertIcon(variant, scale, icon)}\n <TextSection $dismissible={dismissible}>\n {React.isValidElement(title) ? title : <Title>{title}</Title>}\n {React.isValidElement(description) ? description : <Description>{description}</Description>}\n <LargeButtonWrapper>\n <Button\n scale=\"small\"\n variant=\"primary\"\n className={variant}\n type=\"button\"\n onClick={onActionButtonClick}\n >\n {action}\n </Button>\n {secondaryAction && (\n <Button\n scale=\"small\"\n className={variant}\n variant=\"secondary\"\n type=\"button\"\n onClick={onSecondaryActionButtonClick}\n >\n {secondaryAction}\n </Button>\n )}\n </LargeButtonWrapper>\n </TextSection>\n {dismissible && (\n <CloseButton\n scale={scale}\n onClick={() => {\n onClose?.()\n setVisible(false)\n }}\n >\n <Icon name=\"close\" size={16} />\n </CloseButton>\n )}\n </StyledBanner>\n )\n}\n\nexport default Banner\n","import type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport type { TypographyOptions, TypographyVariants } from 'styles/typography'\nimport typography from 'styles/typography'\n\nexport type TextProps = PropsWithChildren<{\n variant?: TypographyVariants\n italic?: TypographyOptions['italic']\n color?: TypographyOptions['color']\n}>\n\nexport default styled.span<TextProps>`\n ${({ variant, italic, color }) => typography(variant, { italic, color })}\n`\n","import type { PropsWithChildren } from 'react'\nimport React from 'react'\nimport ReactDOM from 'react-dom'\nimport styled, { css } from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport { Text } from 'components/Text'\nimport CloseButton from 'common/CloseButton'\nimport rem from 'utils/toolset/rem'\n\ninterface WithScaleProps {\n scale?: 'small' | 'default' | 'large'\n}\n\nexport interface ModalProps extends WithScaleProps {\n className?: string\n id?: string\n open: boolean\n fullscreen?: boolean\n onOverlayClick?: () => void\n}\n\ninterface ModalWrapperProps {\n className?: string\n id?: string\n open: boolean\n fullscreen: boolean\n}\n\ninterface ContentProps extends WithScaleProps {\n fullscreen: boolean\n}\n\nconst ModalWrapper = styled.div<ModalWrapperProps>`\n position: fixed;\n top: 0;\n left: 0;\n\n z-index: ${token('z-index-overlay')};\n\n display: ${conditional({\n flex: whenProps({ open: true }),\n none: whenProps({ open: false }),\n })};\n align-items: center;\n justify-content: center;\n width: 100%;\n\n height: 100%;\n\n background: ${token('modal-overlay-background')};\n`\n\nconst HeaderWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: content-box;\n height: ${token('space-xl')};\n margin-bottom: ${token('space-l')};\n padding-bottom: ${token('space-s')};\n\n border-bottom: 1px solid ${token('color-neutral-light')};\n`\nconst Close = styled(CloseButton).attrs({\n size: 16,\n})`\n position: absolute;\n top: ${rem('36px')};\n right: ${rem('36px')};\n`\n\nconst Content = styled.div<ContentProps>`\n background: white;\n border-radius: ${token('border-radius-s')};\n box-shadow: ${token('shadow-modal')};\n\n padding: ${token('space-xl')};\n\n margin: 0 auto;\n\n position: relative;\n\n outline: none;\n\n z-index: ${token('z-index-modal')};\n\n ${({ fullscreen }) =>\n fullscreen &&\n css`\n position: absolute;\n top: 0;\n left: 0;\n\n width: 100%;\n height: 100vh;\n `}\n\n ${({ fullscreen }) =>\n !fullscreen &&\n css`\n position: relative;\n left: auto;\n\n width: 80%;\n max-width: ${conditional({\n 'modal-small-max-width': whenProps({ scale: 'small' }),\n 'modal-max-width': whenProps({ scale: 'default' }),\n 'modal-large-max-width': whenProps({ scale: 'large' }),\n })};\n height: auto;\n `}\n`\n\nconst Header = ({ title, children }: PropsWithChildren<{ readonly title: string }>) => {\n return (\n <HeaderWrapper>\n {title && (\n <Text variant=\"heading-md-bold\" color=\"color-neutral-darkest\">\n {title}\n </Text>\n )}\n {children}\n </HeaderWrapper>\n )\n}\n\nfunction Modal({\n scale = 'default',\n children,\n open,\n fullscreen = false,\n onOverlayClick = () => null,\n ...others\n}: PropsWithChildren<ModalProps>) {\n return ReactDOM.createPortal(\n <ModalWrapper\n open={open}\n fullscreen={fullscreen}\n onClick={onOverlayClick}\n data-testid=\"modal-overlay\"\n {...others}\n >\n <Content\n role=\"dialog\"\n aria-modal=\"true\"\n fullscreen={fullscreen}\n scale={scale}\n onClick={(e) => {\n e.stopPropagation()\n }}\n >\n {children}\n </Content>\n </ModalWrapper>,\n document.body\n )\n}\n\nModal.Header = Header\nModal.Close = Close\n\nexport default Modal\n","import type { ReactNode } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nimport { Modal } from '../Modal'\nimport { Button } from '../Button'\nimport type { ButtonProps } from '../Button'\nimport conditional, { whenProps } from 'tools/conditional'\nimport rem from 'utils/toolset/rem'\n\ninterface WithScaleProps {\n readonly scale?: 'small' | 'default' | 'large'\n}\n\nexport interface DialogProps extends WithScaleProps {\n readonly className?: string\n readonly id?: string\n readonly open: boolean\n readonly children: ReactNode\n readonly onOverlayClick?: () => void\n}\n\nconst Header = styled.h1`\n padding-bottom: ${token('space-s')};\n\n color: ${token('dialog-header-color')};\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('font-size-2')};\n line-height: ${token('font-height-2')};\n text-align: center;\n\n border-bottom: 1px solid ${token('dialog-header-border-color')};\n`\nconst Body = styled.div`\n margin-top: ${token('space-l')};\n margin-bottom: ${token('space-l')};\n\n color: ${token('dialog-body-font-color')};\n font-size: ${token('font-size-4')};\n line-height: ${token('font-height-3')};\n text-align: center;\n`\n\nconst ActionWrapper = styled.div`\n button {\n width: 100%;\n margin-bottom: ${token('space-s')};\n }\n`\n\nconst Close = styled(Modal.Close)`\n top: ${token('space-xl')};\n right: ${rem('36px')};\n`\n\nconst StyledDialogActions = styled.div<{ $scale: string; $direction: string }>`\n display: flex;\n flex-flow: ${conditional({\n 'row-reverse': whenProps({ $direction: 'horizontal' }),\n column: whenProps({ $direction: 'vertical' }),\n })};\n justify-content: ${conditional({\n center: whenProps({ $scale: 'small' }),\n end: whenProps({ $scale: ['default', 'large'] }),\n })};\n\n ${ActionWrapper}:last-child {\n margin-right: ${conditional({\n 'space-m': whenProps({ $direction: 'horizontal' }),\n initial: whenProps({ $direction: 'vertical' }),\n })}};\n }\n`\n\nfunction DialogActions({\n scale = 'default',\n direction = 'vertical',\n children,\n}: {\n readonly scale?: 'small' | 'default' | 'large'\n readonly direction?: 'vertical' | 'horizontal'\n readonly children: ReactNode\n}) {\n return (\n <StyledDialogActions $scale={scale} $direction={direction}>\n {children}\n </StyledDialogActions>\n )\n}\n\nexport interface DialogActionConfirmProps extends Omit<ButtonProps, 'onClick' | 'variant'> {\n readonly onConfirm: () => void\n}\n\nfunction DialogActionConfirm({\n onConfirm,\n children = 'CONFIRM',\n ...others\n}: DialogActionConfirmProps) {\n return (\n <ActionWrapper>\n <Button {...others} onClick={onConfirm} variant=\"primary\">\n {children}\n </Button>\n </ActionWrapper>\n )\n}\n\nexport interface DialogActionCancelProps extends Omit<ButtonProps, 'onClick' | 'variant'> {\n readonly onCancel: () => void\n}\n\nfunction DialogActionCancel({ onCancel, children = 'CANCEL', ...others }: DialogActionCancelProps) {\n return (\n <ActionWrapper>\n <Button {...others} onClick={onCancel} variant=\"secondary\">\n {children}\n </Button>\n </ActionWrapper>\n )\n}\n\nfunction Dialog({ scale = 'default', open, ...others }: DialogProps) {\n return <Modal open={open} scale={scale} {...others} />\n}\n\nDialog.Header = Header\nDialog.Body = Body\nDialog.ActionConfirm = DialogActionConfirm\nDialog.ActionCancel = DialogActionCancel\nDialog.Actions = DialogActions\nDialog.Close = Close\n\nexport default Dialog\n","import { useCallback, useEffect, useState } from 'react'\n\nexport interface useDialogProps {\n open: boolean\n onOpen?: () => void\n onClose?: () => void\n}\n\nfunction useDialog({ open: openProp, onOpen, onClose }: useDialogProps): {\n open: boolean\n show: () => void\n hide: () => void\n toggle: () => void\n} {\n const [open, setOpen] = useState(openProp)\n\n const show = useCallback(\n function show() {\n setOpen(true)\n onOpen?.()\n },\n [onOpen]\n )\n\n const hide = useCallback(\n function hide() {\n setOpen(false)\n onClose?.()\n },\n [onClose]\n )\n\n const toggle = useCallback(\n function toggle() {\n if (open) {\n hide()\n } else {\n show()\n }\n },\n [hide, open, show]\n )\n\n useEffect(\n function updateState() {\n setOpen(openProp)\n },\n [openProp]\n )\n\n return {\n open,\n show,\n hide,\n toggle,\n }\n}\n\nexport default useDialog\n","import React, { useMemo, useRef } from 'react'\nimport { useFloating, offset, flip, shift, arrow, autoUpdate } from '@floating-ui/react-dom'\nimport type { Placement } from '@floating-ui/react-dom'\n\nimport type {\n PopoverAlign,\n PopoverFloatingProps,\n PopoverPosition,\n PopoverProps,\n PopoverReferenceProps,\n UsePopoverReturn,\n} from './Popover.types'\n\nconst PopoverContext = React.createContext<UsePopoverReturn | undefined>(undefined)\n\nexport function usePopover(): UsePopoverReturn {\n const value = React.useContext(PopoverContext)\n\n if (!value) {\n throw new Error('usePopover must be used within a <Popover> Provider')\n }\n\n return value\n}\n\nfunction Popover(props: PopoverProps) {\n const arrowRef = useRef<HTMLElement | null>(null)\n\n const { position = 'bottom', align = 'start', strategy = 'fixed' } = props\n\n const desiredPlacement: Placement = `${position}${\n align === 'center' ? '' : `-${align}`\n }` as Placement\n\n const floating = useFloating({\n placement: desiredPlacement,\n strategy,\n middleware: [offset(10), flip(), shift(), arrow({ element: arrowRef, padding: 8 })],\n // TODO: FloatingUI docs states that `autoUpdate` is expensive.\n // This should be properly investidated since it's the way to\n // update fixed positions after scrolling.\n whileElementsMounted: autoUpdate,\n })\n\n const [resultPosition, resultAlign] = floating.placement.split('-') as [\n PopoverPosition,\n PopoverAlign,\n ]\n\n const value = useMemo<UsePopoverReturn>(\n () => ({\n strategy,\n register: {\n setReference: floating.refs.setReference,\n setFloating: floating.refs.setFloating,\n setArrow: arrowRef,\n },\n result: {\n floatingStyles: floating.floatingStyles,\n arrow: { top: floating.middlewareData.arrow?.y, left: floating.middlewareData.arrow?.x },\n position: resultPosition,\n align: resultAlign,\n },\n }),\n [\n floating.refs.setFloating,\n floating.middlewareData.arrow?.x,\n floating.middlewareData.arrow?.y,\n floating.refs.setReference,\n floating.floatingStyles,\n resultAlign,\n resultPosition,\n strategy,\n ]\n )\n\n return <PopoverContext.Provider value={value}>{props.children}</PopoverContext.Provider>\n}\n\nfunction PopoverReference({ children, ...others }: PopoverReferenceProps) {\n const { register } = usePopover()\n\n return (\n <div ref={register.setReference} {...others}>\n {children}\n </div>\n )\n}\n\nfunction PopoverFloating({ children, style, ...others }: PopoverFloatingProps) {\n const { register, result } = usePopover()\n\n return (\n <div\n ref={register.setFloating}\n {...others}\n style={{\n ...result.floatingStyles,\n ...style,\n }}\n >\n {children}\n </div>\n )\n}\n\nPopover.Floating = PopoverFloating\nPopover.Reference = PopoverReference\n\nexport default Popover\n","import React, { useCallback, useState } from 'react'\nimport type { PropsWithChildren, HTMLAttributes, ReactNode } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport focusable from 'styles/focusable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport { Popover, usePopover } from 'components/Popover'\nimport typography from 'styles/typography'\n\nimport type { PopoverAlign, PopoverPosition } from 'components/Popover'\n\nexport enum TooltipPosition {\n Top = 'top',\n Bottom = 'bottom',\n Left = 'left',\n Right = 'right',\n}\n\nexport enum TooltipAlign {\n Start = 'start',\n Center = 'center',\n End = 'end',\n}\n\nexport interface TooltipProps extends HTMLAttributes<HTMLDivElement> {\n readonly message: ReactNode\n readonly scheme?: ColorScheme\n readonly position?: TooltipPosition | PopoverPosition\n readonly align?: TooltipAlign | PopoverAlign\n}\n\ntype ContainerProps = Pick<TooltipProps, 'scheme'>\n\nconst Container = styled.div<ContainerProps>`\n display: inline-block;\n\n position: relative;\n\n cursor: help;\n\n ${focusable`\n outline: ${conditional({\n '$tooltip-outline': whenProps({ scheme: 'light' }),\n '$tooltip-dark-outline': whenProps({ scheme: 'dark' }),\n })};\n `}\n`\n\nconst Bubble = styled(Popover.Floating)`\n ${typography('body')}\n\n white-space: initial;\n\n min-width: ${token('tooltip-min-width')};\n max-width: ${token('tooltip-max-width')};\n width: max-content;\n\n z-index: ${token('z-index-tooltip')};\n\n background: ${token('tooltip-background')};\n box-shadow: ${token('tooltip-shadow')};\n border-radius: ${token('tooltip-border-radius')};\n\n padding: ${token('tooltip-padding-y')} ${token('tooltip-padding-x')};\n\n color: ${token('tooltip-color')};\n font-size: ${token('tooltip-font-size')};\n line-height: ${token('tooltip-font-height')};\n`\n\ntype ArrowProps = Pick<TooltipProps, 'position'> & {\n top?: number\n left?: number\n}\n\nconst StyledArrow = styled.span<ArrowProps>`\n position: absolute;\n\n width: 0;\n height: 0;\n display: block;\n\n background: transparent;\n border-style: solid;\n\n z-index: ${token('z-index-tooltip')};\n\n ${({ top }) => top && `top: ${top}px;`}\n ${({ left }) => left && `left: ${left}px;`}\n\n ${({ position }) =>\n position === 'top' &&\n css`\n bottom: -8px;\n\n border-color: ${token('tooltip-background')} transparent transparent transparent;\n border-width: 12px 10px 0 10px;\n `}\n\n ${({ position }) =>\n position === 'bottom' &&\n css`\n top: -8px;\n\n border-color: transparent transparent ${token('tooltip-background')} transparent;\n border-width: 0 10px 12px 10px;\n `}\n\n ${({ position }) =>\n position === 'left' &&\n css`\n right: -8px;\n\n border-color: transparent transparent transparent ${token('tooltip-background')};\n border-width: 10px 0 10px 12px;\n `}\n\n ${({ position }) =>\n position === 'right' &&\n css`\n left: -8px;\n\n border-color: transparent ${token('tooltip-background')} transparent transparent;\n border-width: 10px 12px 10px 0;\n `}\n`\n\nfunction Arrow() {\n const { register, result } = usePopover()\n\n return (\n <StyledArrow\n ref={(element) => (register.setArrow.current = element)}\n position={result.position}\n top={result.arrow.top}\n left={result.arrow.left}\n />\n )\n}\n\nfunction Tooltip({\n children,\n message,\n scheme,\n position = TooltipPosition.Top,\n align = TooltipAlign.Center,\n ...rest\n}: PropsWithChildren<TooltipProps>) {\n const [visible, setVisible] = useState(false)\n\n const showTooltip = useCallback(() => {\n setVisible(true)\n }, [])\n\n const hideTooltip = useCallback(() => {\n setVisible(false)\n }, [])\n\n return (\n <Container\n {...rest}\n onFocus={showTooltip}\n onBlur={hideTooltip}\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n tabIndex={0}\n scheme={scheme}\n >\n <Popover position={position} align={align}>\n {visible && (\n <Bubble role=\"tooltip\">\n {message}\n <Arrow />\n </Bubble>\n )}\n\n <Popover.Reference>{children}</Popover.Reference>\n </Popover>\n </Container>\n )\n}\n\nexport default Tooltip\n","import React from 'react'\nimport type { LabelHTMLAttributes, ReactNode } from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\nimport { isNil } from '@loadsmart/utils-object'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport ellipsizable from 'styles/ellipsizable'\nimport font from 'styles/font'\nimport { getToken as token } from 'theming'\n\nimport type { TooltipProps } from '../Tooltip'\nimport { Tooltip } from '../Tooltip'\n\ntype AcceptedType = 'label' | 'div' | 'span'\n\ninterface WithAdditionalProps {\n readonly as?: AcceptedType\n readonly disabled?: boolean\n readonly required?: boolean\n readonly scheme?: ColorScheme\n readonly tip?: ReactNode\n readonly tipProps?: Omit<TooltipProps, 'message'>\n}\n\nexport interface LabelProps\n extends\n LabelHTMLAttributes<HTMLLabelElement | HTMLDivElement | HTMLSpanElement>,\n WithAdditionalProps {\n readonly className?: string\n}\n\nconst StyledWrapper = styled.div`\n display: inline-flex;\n align-items: center;\n justify-content: flex-start;\n\n line-height: ${token('font-height-2')};\n ${disableable()}\n`\n\nconst StyledChildren = styled.span<WithAdditionalProps>`\n display: inline-block;\n\n ${font({\n height: 'label-font-height',\n weight: 'label-font-weight',\n })}\n\n font-size: ${token('label-font-size')};\n color: ${conditional({\n 'label-font-color': whenProps({ scheme: 'light' }),\n 'color-neutral-white': whenProps({ scheme: 'dark' }),\n })};\n ${ellipsizable()}\n`\n\nconst StyledRequired = styled.sup`\n top: 0;\n\n color: ${token('label-required-color')};\n font-size: ${token('label-font-size')};\n`\n\nconst StyledTooltipAnchor = styled.span<WithAdditionalProps>`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n margin: 0 0 0 ${token('label-tooltip-margin-left')};\n\n color: ${conditional({\n 'label-tooltip-font-color': whenProps({ scheme: 'light' }),\n 'label-tooltip-dark-font-color': whenProps({ scheme: 'dark' }),\n })};\n font-weight: ${token('label-tooltip-font-weight')};\n font-size: ${token('label-tooltip-font-size')};\n\n background: ${conditional({\n 'label-tooltip-background-color': whenProps({ scheme: 'light' }),\n 'label-tooltip-dark-background-color': whenProps({ scheme: 'dark' }),\n })};\n border-radius: ${token('border-radius-circle')};\n`\n\nfunction Label({\n as = 'label',\n children,\n className,\n disabled = false,\n required,\n scheme = 'light',\n tip,\n tipProps = {},\n ...others\n}: LabelProps) {\n const tag = as || 'label'\n\n return (\n <StyledWrapper\n data-testid=\"label\"\n as={tag}\n className={clsx(className, {\n 'is-disabled': disabled,\n })}\n {...others}\n >\n <StyledChildren scheme={scheme}>{children}</StyledChildren>\n {required && <StyledRequired>*</StyledRequired>}\n {!isNil(tip) && (\n <Tooltip scheme={scheme} message={tip || ''} {...tipProps}>\n <StyledTooltipAnchor scheme={scheme}>?</StyledTooltipAnchor>\n </Tooltip>\n )}\n </StyledWrapper>\n )\n}\n\nexport default Label\n","export const PAGINATION_ITEM_TYPE = {\n endEllipsis: 'end-ellipsis',\n next: 'next',\n page: 'page',\n previous: 'previous',\n startEllipsis: 'start-ellipsis',\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\n\nimport { BaseButton, IconButton as IconButtonDefault } from 'components/Button'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\n\nimport type { PaginationItemProps } from './Pagination.types'\nimport { PAGINATION_ITEM_TYPE } from './Pagination.constants'\n\nconst IconButton = styled(IconButtonDefault)`\n margin: ${token('space-xs')};\n`\n\nconst PageButton = styled(BaseButton)`\n background-color: transparent;\n border: none;\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n `}\n\n ${hoverable`\n * {\n text-decoration: underline;\n color: ${token('color-neutral-dark')};\n }\n `}\n\n ${Text} {\n color: ${conditional({\n 'color-accent': whenProps({ 'aria-current': true }),\n })};\n text-decoration: ${conditional({\n underline: whenProps({ 'aria-current': true }),\n })};\n }\n`\n\nconst ICONS_NAME: Record<string, string> = {\n previous: 'caret-left',\n next: 'caret-right',\n}\n\nfunction PaginationItem(props: PaginationItemProps) {\n const { itemType: type, page, ...others } = props\n\n const iconName = ICONS_NAME[type]\n\n if (iconName) {\n return (\n <IconButton {...others} id={iconName} aria-label={`Go to ${type} page`}>\n <Icon name={iconName} size={16} />\n </IconButton>\n )\n }\n\n return (\n <PageButton {...others} aria-label={`Go to page ${page?.toString() ?? ''}`}>\n <Text variant=\"body\">\n {[PAGINATION_ITEM_TYPE.endEllipsis, PAGINATION_ITEM_TYPE.startEllipsis].includes(type)\n ? '...'\n : page}\n </Text>\n </PageButton>\n )\n}\n\nexport default PaginationItem\n","import { PAGINATION_ITEM_TYPE } from './Pagination.constants'\nimport type { PaginationHelperArgs } from './Pagination.types'\n\nexport class PaginationHelper {\n boundaryCount: number\n count: number\n page: number\n siblingCount: number\n\n constructor({ boundaryCount, count, page, siblingCount }: PaginationHelperArgs) {\n this.boundaryCount = boundaryCount\n this.count = count\n this.page = page\n this.siblingCount = siblingCount\n }\n\n range(start: number, end: number): number[] {\n const length = end - start + 1\n return Array.from({ length }, (_, i) => start + i)\n }\n\n getStartPages(): number[] {\n return this.range(1, Math.min(this.boundaryCount, this.count))\n }\n\n getEndPages(): number[] {\n return this.range(\n Math.max(this.count - this.boundaryCount + 1, this.boundaryCount + 1),\n this.count\n )\n }\n\n getSibilingsStart(): number {\n return Math.max(\n Math.min(\n // Natural start\n this.page - this.siblingCount,\n // Lower boundary when page is high\n this.count - this.boundaryCount - this.siblingCount * 2 - 1\n ),\n // Greater than startPages\n this.boundaryCount + 2\n )\n }\n\n getSibilingsEnd(): number {\n const endPages = this.getEndPages()\n\n return Math.min(\n Math.max(\n // Natural end\n this.page + this.siblingCount,\n // Upper boundary when page is low\n this.boundaryCount + this.siblingCount * 2 + 2\n ),\n // Less than endPages\n endPages.length > 0 ? endPages[0] - 2 : this.count - 1\n )\n }\n\n getStartEllipsis(): number[] | string[] {\n const siblingsStart = this.getSibilingsStart()\n\n if (siblingsStart > this.boundaryCount + 2) {\n return [PAGINATION_ITEM_TYPE.startEllipsis]\n }\n\n if (this.boundaryCount + 1 < this.count - this.boundaryCount) {\n return [this.boundaryCount + 1]\n }\n\n return []\n }\n\n getEndEllipsis(): number[] | string[] {\n const siblingsEnd = this.getSibilingsEnd()\n\n if (siblingsEnd < this.count - this.boundaryCount - 1) {\n return [PAGINATION_ITEM_TYPE.endEllipsis]\n }\n\n if (this.count - this.boundaryCount > this.boundaryCount) {\n return [this.count - this.boundaryCount]\n }\n\n return []\n }\n}\n","import { PAGINATION_ITEM_TYPE } from './Pagination.constants'\nimport { PaginationHelper } from './Pagination.helper'\nimport type { usePaginationProps, usePaginationReturn } from './Pagination.types'\n\nfunction usePagination(props: usePaginationProps): usePaginationReturn[] {\n const {\n boundaryCount = 1,\n count,\n disabled = false,\n onChange: handleChange,\n page,\n siblingCount = 1,\n } = props\n\n const paginationHelper = new PaginationHelper({ boundaryCount, count, page, siblingCount })\n\n function handleClick({ page }: { page: number | null }) {\n if (page) {\n handleChange({ page })\n }\n }\n\n const startPages = paginationHelper.getStartPages()\n const endPages = paginationHelper.getEndPages()\n\n const siblingsStart = paginationHelper.getSibilingsStart()\n const siblingsEnd = paginationHelper.getSibilingsEnd()\n\n // Basic list of items to render\n // e.g. itemList = ['previous', 1, 'ellipsis', 4, 5, 6, 'ellipsis', 10, 'next']\n const itemList = [\n PAGINATION_ITEM_TYPE.previous,\n ...startPages,\n\n // Start ellipsis\n ...paginationHelper.getStartEllipsis(),\n\n // Sibling pages\n ...paginationHelper.range(siblingsStart, siblingsEnd),\n\n // End ellipsis\n ...paginationHelper.getEndEllipsis(),\n\n ...endPages,\n PAGINATION_ITEM_TYPE.next,\n ]\n\n function getButtonPage(item: string | number): number | null {\n if (typeof item === 'number') {\n return item\n }\n switch (item) {\n case PAGINATION_ITEM_TYPE.previous:\n return page - 1\n case PAGINATION_ITEM_TYPE.next:\n return page + 1\n case PAGINATION_ITEM_TYPE.startEllipsis:\n return siblingsStart - 1\n case PAGINATION_ITEM_TYPE.endEllipsis:\n return siblingsEnd + 1\n default:\n return null\n }\n }\n\n function isDisabled(item: string | number): boolean {\n if (item === PAGINATION_ITEM_TYPE.previous) {\n return page <= 1\n }\n if (item === PAGINATION_ITEM_TYPE.next) {\n return page >= count\n }\n\n return false\n }\n\n return itemList.map((item) => {\n const isNumber = typeof item === 'number'\n\n return {\n onClick: () => {\n handleClick({ page: getButtonPage(item) })\n },\n itemType: isNumber ? PAGINATION_ITEM_TYPE.page : item,\n page: getButtonPage(item),\n disabled: disabled || isDisabled(item),\n ...(isNumber && { 'aria-current': item === page }),\n }\n })\n}\n\nexport default usePagination\n","import React from 'react'\n\nimport { Layout } from 'components/Layout'\n\nimport PaginationItem from './PaginationItem'\nimport usePagination from './usePagination'\n\nimport type { PaginationProps } from './Pagination.types'\n\nfunction Pagination(props: PaginationProps) {\n const {\n boundaryCount = 1,\n count,\n disabled = false,\n onChange,\n page,\n siblingCount = 1,\n ...others\n } = props\n\n const items = usePagination({ boundaryCount, count, disabled, onChange, page, siblingCount })\n\n return (\n <nav aria-label=\"pagination navigation\" {...others}>\n <Layout.Group space=\"none\" align=\"center\">\n {items.map((item) => (\n <PaginationItem key={`${item.itemType}${item.page || ''}`} {...item} />\n ))}\n </Layout.Group>\n </nav>\n )\n}\n\nexport default Pagination\n","import type { BaseHTMLAttributes } from 'react'\nimport React from 'react'\nimport styled, { css } from 'styled-components'\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport Status from 'utils/types/Status'\n\nconst Bar = styled.div<{ rounded: boolean }>`\n align-items: center;\n display: flex;\n flex-grow: 0;\n flex-shrink: 1;\n\n justify-content: center;\n overflow: hidden;\n width: 100%;\n\n position: relative;\n\n height: ${token('progressbar-height')};\n\n ${({ rounded }) =>\n rounded &&\n css`\n border-radius: ${token('progressbar-height')};\n `}\n`\n\nconst Line = styled.span`\n width: 100%;\n height: 1px;\n\n background: ${token('progressbar-line')};\n background: black;\n`\n\ntype ProgressProps = Pick<ProgressBarProps, 'value' | 'rounded' | 'status'>\nconst Progress = styled.span<ProgressProps>`\n position: absolute;\n top: 0;\n left: 0;\n\n width: ${({ value }) => value}%;\n height: ${token('progressbar-height')};\n\n background: ${conditional({\n 'progressbar-neutral-fill': whenProps({ status: Status.Neutral }),\n 'progressbar-success-fill': whenProps({ status: Status.Success }),\n 'progressbar-warning-fill': whenProps({ status: Status.Warn }),\n 'progressbar-danger-fill': whenProps({ status: Status.Danger }),\n })};\n border-radius: ${conditional({\n ['progressbar-height']: whenProps({ rounded: true }),\n })};\n\n transition: 600ms ease;\n`\n\nexport interface ProgressBarProps extends BaseHTMLAttributes<HTMLDivElement> {\n readonly value?: number\n readonly status?: string\n readonly rounded?: boolean\n readonly showLine?: boolean\n}\n\nexport function ProgressBar({\n value = 60,\n status = Status.Neutral,\n rounded = false,\n showLine = false,\n ...extra\n}: ProgressBarProps) {\n const clampedValue = Math.max(0, Math.min(value, 100))\n\n return (\n <Bar\n role=\"progressBar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n rounded={rounded}\n {...extra}\n >\n {showLine && <Line />}\n <Progress value={clampedValue} rounded={rounded} status={status} />\n </Bar>\n )\n}\n\nexport default ProgressBar\n","import type { ChangeEvent, InputHTMLAttributes } from 'react'\nimport React from 'react'\nimport clsx from 'clsx'\nimport styled from 'styled-components'\n\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hidden from 'styles/hidden'\nimport hoverable from 'styles/hoverable'\nimport { getToken as token } from 'theming'\n\nimport transition from 'styles/transition'\n\ninterface WithAdditionalProps {\n readonly active?: boolean\n readonly onToggle?: (event: ChangeEvent<HTMLInputElement>) => void\n readonly scale?: 'default' | 'large'\n}\n\nexport interface SwitchProps extends InputHTMLAttributes<HTMLInputElement>, WithAdditionalProps {\n readonly className?: string\n}\n\nconst SwitchWrapper = styled.label<WithAdditionalProps>`\n ${transition()}\n\n ${font({})};\n\n user-select: none;\n\n cursor: pointer;\n -webkit-tap-highlight-color: transparent;\n\n position: relative;\n\n display: inline-flex;\n\n width: ${conditional({\n 'switch-width': whenProps({ scale: 'default' }),\n 'switch-large-width': whenProps({ scale: 'large' }),\n })};\n height: ${conditional({\n 'switch-height': whenProps({ scale: 'default' }),\n 'switch-large-height': whenProps({ scale: 'large' }),\n })};\n\n background-color: ${conditional({\n 'switch-inactive-background-color': whenProps({ active: false }),\n 'switch-active-background-color': whenProps({ active: true }),\n })};\n\n border-radius: ${conditional({\n 'switch-border-radius': whenProps({ scale: 'default' }),\n 'switch-large-border-radius': whenProps({ scale: 'large' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'switch-inactive-background-color--hover': whenProps({ active: false }),\n 'switch-active-background-color--hover': whenProps({ active: true }),\n })};\n `}\n\n ${focusable`\n box-shadow: ${token('switch-box-shadow')};\n outline: ${token('switch-outline')};\n outline-offset: ${token('switch-outline-offset')};\n `}\n\n ${disableable``}\n`\n\nconst Slider = styled.span<WithAdditionalProps>`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n\n :before {\n position: absolute;\n bottom: ${conditional({\n 'switch-slider-y': whenProps({ scale: 'default', active: false }),\n 'switch-slider-active-y': whenProps({ scale: 'default', active: true }),\n 'switch-slider-large-y': whenProps({ scale: 'large', active: false }),\n 'switch-slider-large-active-y': whenProps({ scale: 'large', active: true }),\n })};\n left: ${conditional({\n 'switch-slider-x': whenProps({ scale: 'default', active: false }),\n 'switch-slider-active-x': whenProps({ scale: 'default', active: true }),\n 'switch-slider-large-x': whenProps({ scale: 'large', active: false }),\n 'switch-slider-large-active-x': whenProps({ scale: 'large', active: true }),\n })};\n\n width: ${conditional({\n 'switch-slider-size': whenProps({ scale: 'default' }),\n 'switch-slider-large-size': whenProps({ scale: 'large' }),\n })};\n\n height: ${conditional({\n 'switch-slider-size': whenProps({ scale: 'default' }),\n 'switch-slider-large-size': whenProps({ scale: 'large' }),\n })};\n\n background-color: ${token('switch-slider-background-color')};\n border-radius: ${token('switch-slider-border-radius')};\n\n ${transition({\n timingFunction: 'ease-out',\n duration: '150ms',\n })}\n\n content: '';\n }\n`\n\nconst HiddenInput = styled.input`\n ${hidden(true)}\n`\n\nconst ActiveIcon = styled(Icon)<WithAdditionalProps>`\n position: absolute;\n top: ${conditional({\n 'switch-icon-active-y': whenProps({ scale: 'default' }),\n 'switch-large-icon-active-y': whenProps({ scale: 'large' }),\n })};\n left: ${conditional({\n 'switch-icon-active-x': whenProps({ scale: 'default' }),\n 'switch-large-icon-active-x': whenProps({ scale: 'large' }),\n })};\n\n width: ${conditional({\n 'switch-icon-width': whenProps({ scale: 'default' }),\n 'switch-large-icon-width': whenProps({ scale: 'large' }),\n })};\n\n height: ${conditional({\n 'switch-icon-height': whenProps({ scale: 'default' }),\n 'switch-large-icon-height': whenProps({ scale: 'large' }),\n })};\n\n color: ${token('switch-icon-color')};\n`\n\nconst InactiveIcon = styled(Icon)<WithAdditionalProps>`\n position: absolute;\n top: ${conditional({\n 'switch-icon-inactive-y': whenProps({ scale: 'default' }),\n 'switch-large-icon-inactive-y': whenProps({ scale: 'large' }),\n })};\n left: ${conditional({\n 'switch-icon-inactive-x': whenProps({ scale: 'default' }),\n 'switch-large-icon-inactive-x': whenProps({ scale: 'large' }),\n })};\n\n width: ${conditional({\n 'switch-icon-width': whenProps({ scale: 'default' }),\n 'switch-large-icon-width': whenProps({ scale: 'large' }),\n })};\n\n height: ${conditional({\n 'switch-icon-height': whenProps({ scale: 'default' }),\n 'switch-large-icon-height': whenProps({ scale: 'large' }),\n })};\n\n color: ${token('switch-icon-color')};\n`\n\nfunction Switch({\n active = false,\n className,\n disabled = false,\n name,\n onToggle,\n scale = 'default',\n ...others\n}: SwitchProps) {\n return (\n <SwitchWrapper\n htmlFor={name}\n title={active ? 'active' : 'inactive'}\n active={active}\n className={clsx(className, {\n 'is-disabled': disabled,\n })}\n scale={scale}\n >\n {active ? (\n <ActiveIcon name=\"check\" scale={scale} data-testid=\"switch-icon-active\" />\n ) : (\n <InactiveIcon name=\"close\" scale={scale} data-testid=\"switch-icon-inactive\" />\n )}\n <Slider active={active} scale={scale} />\n <HiddenInput\n type=\"checkbox\"\n {...others}\n id={name}\n name={name}\n checked={active}\n disabled={disabled}\n onChange={onToggle}\n />\n </SwitchWrapper>\n )\n}\n\nexport default Switch\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { Icon } from 'components/Icon'\n\n// tools\nimport conditional, { whenProps } from 'tools/conditional'\n// styles\nimport typography from 'styles/typography'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport { getToken as token } from 'theming'\n\nimport type { ButtonHTMLAttributes, ReactNode } from 'react'\n\n// interfaces\ninterface WithSizeProps {\n readonly size?: 'small' | 'default' | 'large'\n}\n\ninterface WithVariantProps {\n variant?: 'accent' | 'danger' | 'default' | 'outlined' | 'success' | 'warning'\n}\n\nexport interface TagProps extends React.HTMLAttributes<HTMLElement>, WithSizeProps {\n readonly className?: string\n readonly children?: ReactNode\n readonly disabled?: boolean\n readonly leading?: ReactNode\n readonly removable?: boolean\n readonly variant?: 'accent' | 'danger' | 'default' | 'outlined' | 'success' | 'warning'\n readonly onRemove?: () => void\n readonly getRemoveButtonProps?: () => Partial<ButtonHTMLAttributes<HTMLButtonElement>> & {\n 'data-testid'?: string\n }\n}\n\n// styled elements\nconst StyledTag = styled.span`\n display: inline-flex;\n\n position: relative;\n\n width: auto;\n\n z-index: 0;\n\n ${disableable`\n opacity: ${token('opacity-60')};\n `}\n`\n\nconst StyledSpan = styled.span<TagProps>`\n ${transition()}\n\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n box-sizing: border-box;\n\n text-decoration: none;\n\n ${typography(\n conditional({\n 'chips-sm': whenProps({ size: 'small' }),\n 'caption-bold': whenProps({ size: 'default' }),\n 'body-bold': whenProps({ size: 'large' }),\n })\n )}\n\n line-height: initial;\n\n text-transform: ${conditional({\n 'tag-transform': whenProps({ size: 'default' }),\n 'tag-small-transform': whenProps({ size: 'small' }),\n 'tag-large-transform': whenProps({ size: 'large' }),\n })};\n\n padding: ${conditional({\n 'tag-small-spacing': whenProps({ size: 'small', removable: (removable) => !removable }),\n 'tag-spacing': whenProps({\n size: (size) => !['small', 'large'].includes(size ?? ''),\n removable: (removable) => !removable,\n }),\n 'tag-large-spacing': whenProps({ size: 'large', removable: (removable) => !removable }),\n 'tag-removable-spacing': whenProps([{ size: (size) => size !== 'small', removable: true }]),\n 'tag-small-removable-spacing': whenProps([{ size: 'small', removable: true }]),\n })};\n\n min-width: ${token('tag-width')};\n height: ${conditional({\n 'tag-height': whenProps({ size: 'default' }),\n 'tag-small-height': whenProps({ size: 'small' }),\n 'tag-large-height': whenProps({ size: 'large' }),\n })};\n\n font-weight: ${conditional({\n 'tag-font-weight': whenProps({ size: 'default' }),\n 'tag-small-font-weight': whenProps({ size: 'small' }),\n 'tag-large-font-weight': whenProps({ size: 'large' }),\n })};\n\n color: ${conditional({\n 'tag-default-color': whenProps({ variant: 'default' }),\n 'tag-outlined-color': whenProps({ variant: 'outlined' }),\n 'tag-accent-color': whenProps({ variant: 'accent' }),\n 'tag-success-color': whenProps({ variant: 'success' }),\n 'tag-warning-color': whenProps({ variant: 'warning' }),\n 'tag-danger-color': whenProps({ variant: 'danger' }),\n })};\n\n background: ${conditional({\n 'tag-default-background': whenProps({ variant: 'default' }),\n 'tag-outlined-background': whenProps({ variant: 'outlined' }),\n 'tag-accent-background': whenProps({ variant: 'accent' }),\n 'tag-success-background': whenProps({ variant: 'success' }),\n 'tag-warning-background': whenProps({ variant: 'warning' }),\n 'tag-danger-background': whenProps({ variant: 'danger' }),\n })};\n\n border-radius: ${token('tag-border-radius')};\n border-width: ${token('tag-border-width')};\n border-style: solid;\n\n border-color: ${conditional({\n 'tag-default-border-color': whenProps({ variant: 'default' }),\n 'tag-outlined-border-color': whenProps({ variant: 'outlined' }),\n 'tag-accent-border-color': whenProps({ variant: 'accent' }),\n 'tag-success-border-color': whenProps({ variant: 'success' }),\n 'tag-warning-border-color': whenProps({ variant: 'warning' }),\n 'tag-danger-border-color': whenProps({ variant: 'danger' }),\n })};\n\n ${hoverable`\n background: ${conditional({\n 'tag-default-background--hover': whenProps([\n { variant: 'default', removable: true },\n { variant: 'default', href: Boolean },\n ]),\n 'tag-outlined-background--hover': whenProps([\n { variant: 'outlined', removable: true },\n { variant: 'outlined', href: Boolean },\n ]),\n 'tag-accent-background--hover': whenProps([\n { variant: 'accent', removable: true },\n { variant: 'accent', href: Boolean },\n ]),\n 'tag-success-background--hover': whenProps([\n { variant: 'success', removable: true },\n { variant: 'success', href: Boolean },\n ]),\n 'tag-warning-background--hover': whenProps([\n { variant: 'warning', removable: true },\n { variant: 'warning', href: Boolean },\n ]),\n 'tag-danger-background--hover': whenProps([\n { variant: 'danger', removable: true },\n { variant: 'danger', href: Boolean },\n ]),\n })};\n\n border-color: ${conditional({\n 'tag-default-border-color--hover': whenProps([\n { variant: 'default', removable: true },\n { variant: 'default', href: Boolean },\n ]),\n 'tag-outlined-border-color--hover': whenProps([\n { variant: 'outlined', removable: true },\n { variant: 'outlined', href: Boolean },\n ]),\n 'tag-accent-border-color--hover': whenProps([\n { variant: 'accent', removable: true },\n { variant: 'accent', href: Boolean },\n ]),\n 'tag-success-border-color--hover': whenProps([\n { variant: 'success', removable: true },\n { variant: 'success', href: Boolean },\n ]),\n 'tag-warning-border-color--hover': whenProps([\n { variant: 'warning', removable: true },\n { variant: 'warning', href: Boolean },\n ]),\n 'tag-danger-border-color--hover': whenProps([\n { variant: 'danger', removable: true },\n { variant: 'danger', href: Boolean },\n ]),\n })};\n\n color: ${conditional({\n 'tag-default-color--hover': whenProps([\n { variant: 'default', removable: true },\n { variant: 'default', href: Boolean },\n ]),\n 'tag-outlined-color--hover': whenProps([\n { variant: 'outlined', removable: true },\n { variant: 'outlined', href: Boolean },\n ]),\n 'tag-accent-color--hover': whenProps([\n { variant: 'accent', removable: true },\n { variant: 'accent', href: Boolean },\n ]),\n 'tag-success-color--hover': whenProps([\n { variant: 'success', removable: true },\n { variant: 'success', href: Boolean },\n ]),\n 'tag-warning-color--hover': whenProps([\n { variant: 'warning', removable: true },\n { variant: 'warning', href: Boolean },\n ]),\n 'tag-danger-color--hover': whenProps([\n { variant: 'danger', removable: true },\n { variant: 'danger', href: Boolean },\n ]),\n })};\n `}\n\n ${focusable`\n color: ${conditional({\n 'tag-default-color--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-color--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-color--focus': whenProps({ variant: 'accent' }),\n 'tag-success-color--focus': whenProps({ variant: 'success' }),\n 'tag-warning-color--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-color--focus': whenProps({ variant: 'danger' }),\n })};\n background: ${conditional({\n 'tag-default-background--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-background--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-background--focus': whenProps({ variant: 'accent' }),\n 'tag-success-background--focus': whenProps({ variant: 'success' }),\n 'tag-warning-background--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-background--focus': whenProps({ variant: 'danger' }),\n })};\n box-shadow: ${token('tag-box-shadow')};\n outline: ${conditional({\n 'tag-default-outline': whenProps({ variant: 'default' }),\n 'tag-outlined-outline': whenProps({ variant: 'outlined' }),\n 'tag-accent-outline': whenProps({ variant: 'accent' }),\n 'tag-success-outline': whenProps({ variant: 'success' }),\n 'tag-warning-outline': whenProps({ variant: 'warning' }),\n 'tag-danger-outline': whenProps({ variant: 'danger' }),\n })};\n outline-offset: ${token('tag-outline-offset')};\n `}\n\n ${disableable`\n opacity: ${token('opacity-60')};\n `}\n`\n\nconst Leading = styled.span<WithSizeProps>`\n display: ${conditional({\n 'tag-leading-display': whenProps({ size: 'default' }),\n 'tag-small-leading-display': whenProps({ size: 'small' }),\n 'tag-large-leading-display': whenProps({ size: 'large' }),\n })};\n margin: 0 ${token('tag-icon-spacing')} 0 0;\n\n color: currentColor;\n\n fill: currentColor;\n`\n\nconst StyledCloseButton = styled.button<WithSizeProps & WithVariantProps>`\n z-index: 2;\n\n display: inline-flex;\n justify-content: center;\n align-items: center;\n\n cursor: pointer;\n\n background: ${token('tag-remove-button-background')};\n border-radius: ${token('tag-remove-button-border-radius')};\n border: 0;\n\n width: ${conditional({\n 'tag-remove-button-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-size': whenProps({ size: 'large' }),\n })};\n\n height: ${conditional({\n 'tag-remove-button-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-size': whenProps({ size: 'large' }),\n })};\n\n padding: 0;\n\n ${disableable`\n opacity: ${token('opacity-60')};\n `}\n\n ${focusable``}\n\n &:focus + ${StyledSpan} {\n color: ${conditional({\n 'tag-default-color--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-color--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-color--focus': whenProps({ variant: 'accent' }),\n 'tag-success-color--focus': whenProps({ variant: 'success' }),\n 'tag-warning-color--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-color--focus': whenProps({ variant: 'danger' }),\n })};\n\n background: ${conditional({\n 'tag-default-background--focus': whenProps({ variant: 'default' }),\n 'tag-outlined-background--focus': whenProps({ variant: 'outlined' }),\n 'tag-accent-background--focus': whenProps({ variant: 'accent' }),\n 'tag-success-background--focus': whenProps({ variant: 'success' }),\n 'tag-warning-background--focus': whenProps({ variant: 'warning' }),\n 'tag-danger-background--focus': whenProps({ variant: 'danger' }),\n })};\n box-shadow: ${token('tag-box-shadow')};\n }\n`\n\nconst CloseIcon = styled(Icon)<WithSizeProps & WithVariantProps>`\n width: ${conditional({\n 'tag-remove-button-icon-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-icon-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-icon-size': whenProps({ size: 'large' }),\n })};\n\n height: ${conditional({\n 'tag-remove-button-icon-size': whenProps({ size: 'default' }),\n 'tag-small-remove-button-icon-size': whenProps({ size: 'small' }),\n 'tag-large-remove-button-icon-size': whenProps({ size: 'large' }),\n })};\n\n color: ${conditional({\n 'tag-default-color': whenProps({ variant: 'default' }),\n 'tag-outlined-color': whenProps({ variant: 'outlined' }),\n 'tag-accent-color': whenProps({ variant: 'accent' }),\n 'tag-success-color': whenProps({ variant: 'success' }),\n 'tag-warning-color': whenProps({ variant: 'warning' }),\n 'tag-danger-color': whenProps({ variant: 'danger' }),\n })};\n\n fill: currentColor;\n`\n\nconst StyledSpacer = styled.span<WithSizeProps>`\n display: inline-block;\n width: ${conditional({\n '0': whenProps({ size: 'small' }),\n 'space-xs': whenProps({ size: 'default' }),\n 'space-s': whenProps({ size: 'large' }),\n })};\n`\n\n// components\nfunction Tag(props: TagProps) {\n const {\n children,\n leading,\n size = 'default',\n onRemove,\n variant,\n removable,\n getRemoveButtonProps,\n disabled = false,\n ...others\n } = props\n\n return (\n <StyledTag>\n <StyledSpan size={size} variant={variant} {...others}>\n {leading && <Leading size={size}>{leading}</Leading>}\n {children}\n {removable && !disabled && (\n <>\n <StyledSpacer aria-hidden=\"true\" size={size} />\n <StyledCloseButton\n type=\"button\"\n {...getRemoveButtonProps?.()}\n size={size}\n onClick={onRemove}\n >\n <CloseIcon name=\"close\" variant={variant} size={size} />\n </StyledCloseButton>\n </>\n )}\n </StyledSpan>\n </StyledTag>\n )\n}\n\nexport default Tag\n","import type { BaseHTMLAttributes } from 'react'\nimport React, { useEffect, useState } from 'react'\nimport styled from 'styled-components'\n\nimport { Icon } from 'components/Icon'\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport Status from 'utils/types/Status'\n\nimport DefaultCloseButton from 'common/CloseButton'\n\nimport { ProgressBar } from 'components/ProgressBar'\n\ntype ContainerProps = Pick<ToastProps, 'status'>\nconst Container = styled.div<ContainerProps>`\n position: relative;\n\n width: ${token('toast-width')};\n max-width: 100%;\n padding: ${token('toast-padding-y')} ${token('toast-padding-x')};\n overflow: hidden;\n\n color: ${token('toast-font-color')};\n font-weight: ${token('toast-font-weight')};\n font-size: ${token('toast-font-size')};\n line-height: ${token('toast-font-height')};\n\n background: ${conditional({\n 'toast-neutral-background': whenProps({ status: Status.Neutral }),\n 'toast-success-background': whenProps({ status: Status.Success }),\n 'toast-warning-background': whenProps({ status: Status.Warn }),\n 'toast-danger-background': whenProps({ status: Status.Danger }),\n })};\n border-radius: ${token('toast-border-radius')};\n box-shadow: ${token('toast-shadow')};\n`\n\nconst Content = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-around;\n`\n\nconst Leading = styled.span`\n position: absolute;\n`\n\nconst ToastCountDown = styled(ProgressBar)`\n position: absolute;\n bottom: 0;\n left: 0;\n`\nconst CloseButton = styled(DefaultCloseButton)`\n position: absolute;\n\n top: ${token('toast-close-y')};\n right: ${token('toast-close-x')};\n\n color: ${token('color-neutral-white')};\n`\n\nexport interface ToastProps extends BaseHTMLAttributes<HTMLDivElement> {\n readonly message: string\n readonly status?: Status\n readonly timeout?: number\n readonly showIcon?: boolean\n readonly onClose: () => void\n}\n\nconst INTERVAL = 300 //ms\n\nfunction Toast({\n message,\n onClose,\n timeout,\n showIcon = false,\n status = Status.Neutral,\n}: ToastProps) {\n const [count, setCount] = useState(100)\n\n /**\n * this is a quick solution for the progress/countdown effect,\n * we can use requestAnimationFrame or some other library to\n * better implement this in the future\n */\n useEffect(() => {\n if (!timeout) {\n return\n }\n\n const decrementBy = (INTERVAL * 100) / timeout\n const interval = globalThis.setTimeout(() => {\n if (count <= 0) {\n globalThis.clearTimeout(interval)\n onClose()\n } else {\n setCount((value) => value - decrementBy)\n }\n }, INTERVAL)\n\n return () => {\n globalThis.clearTimeout(interval)\n }\n }, [count, onClose, timeout])\n\n return (\n <Container status={status} aria-live=\"polite\" role=\"alert\">\n {showIcon && (\n <Leading>\n <ToastIcon status={status} />\n </Leading>\n )}\n <Content>{message}</Content>\n {Boolean(timeout) && <ToastCountDown value={count} status={status} />}\n <CloseButton onClick={onClose} size={14} />\n </Container>\n )\n}\n\ninterface ToastIconProps {\n readonly status: Status\n}\n\nfunction ToastIcon({ status }: ToastIconProps) {\n let iconName = ''\n\n switch (status) {\n case Status.Success:\n iconName = 'check'\n break\n\n case Status.Warn:\n case Status.Danger:\n iconName = 'warning'\n break\n\n default:\n iconName = 'information'\n }\n\n return <Icon name={iconName} size={20} />\n}\n\nexport default Toast\n","export function check(id: string): void {\n const radioElement = document.getElementById(id) as HTMLInputElement\n\n if (radioElement) {\n radioElement.checked = true\n }\n}\n\nexport function getPanelRadioID(id: number | string): string {\n return `rg-wizard-step-radio-${id}`\n}\n","import React from 'react'\n\nconst StepsContext = React.createContext<string | number>('')\n\nexport default StepsContext\n","import type { ReactNode } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\nimport clsx from 'clsx'\n\nimport { getToken as token } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport transition from 'styles/transition'\n\nimport type { Step } from '../Steps.types'\n\nexport interface StepsProgressProps {\n steps: Array<Step>\n current: number | string\n}\n\nconst StepConnector = styled.span<{ complete: boolean }>`\n position: absolute;\n top: ${conditional({\n 'steps-conector-top': whenProps({ complete: false }),\n 'steps-conector-top--complete': whenProps({ complete: true }),\n })};\n right: calc(-50% + ${token('steps-indicator-size')} / 2);\n left: calc(50% + ${token('steps-indicator-size')} / 2);\n\n z-index: 0;\n\n height: ${conditional({\n 'steps-conector-height': whenProps({ complete: false }),\n 'steps-conector-height--complete': whenProps({ complete: true }),\n })};\n\n background: ${conditional({\n 'steps-progress-step-background-color': whenProps({ complete: false }),\n 'steps-progress-step-background-color--complete': whenProps({ complete: true }),\n })};\n`\n\nconst ProgressStepWrapper = styled.li`\n position: relative;\n\n flex: 1;\n\n text-align: center;\n\n list-style: none;\n\n &:last-child ${StepConnector} {\n display: none;\n }\n`\n\nconst ProgressStepContainer = styled.div`\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n\n padding: 0 ${token('space-s')};\n`\n\nconst StepIndicator = styled.span<{ current: boolean; complete: boolean }>`\n ${transition()}\n\n ${font({\n weight: 'font-weight-bold',\n height: 'steps-indicator-size',\n })}\n\n font-size: ${token('font-size-4')};\n\n height: ${token('steps-indicator-size')};\n width: ${token('steps-indicator-size')};\n\n display: flex;\n justify-content: center;\n align-items: center;\n\n border-width: 2px;\n border-style: solid;\n border-color: ${conditional({\n 'steps-progress-step-background-color--complete': whenProps([\n { current: true, complete: [true, false] },\n { current: false, complete: true },\n ]),\n 'steps-progress-step-background-color': whenProps({ current: false, complete: false }),\n })};\n border-radius: ${token('border-radius-circle')};\n\n background: ${conditional({\n 'steps-progress-step-background-color--complete': whenProps([\n { current: false, complete: true },\n ]),\n 'color-neutral-white': whenProps([\n { current: true, complete: [true, false] },\n { current: false, complete: false },\n ]),\n })};\n\n color: ${conditional({\n 'steps-progress-step-background-color': whenProps({ current: false, complete: false }),\n 'color-neutral-white': whenProps({ current: false, complete: true }),\n 'steps-progress-step-background-color--complete': whenProps({ current: true }),\n })};\n`\n\nconst StepLabel = styled.span<{ current: boolean; complete: boolean }>`\n ${font({\n height: 'font-height-2',\n })}\n\n position: relative;\n\n font-weight: ${conditional({\n 'font-weight-medium': whenProps({ current: false }),\n 'font-weight-bold': whenProps({ current: true }),\n })};\n\n color: ${conditional({\n 'color-neutral-darker': whenProps([{ current: true }, { current: false, complete: true }]),\n 'color-neutral': whenProps({ current: false, complete: false }),\n })};\n\n font-size: ${token('font-size-4')};\n\n display: flex;\n flex-direction: row;\n\n align-items: center;\n justify-content: center;\n\n text-align: center;\n\n margin: ${token('space-xs')} 0 0 0;\n`\n\nfunction ProgressStep(props: {\n readonly step: Step\n readonly current: boolean\n readonly indicator: ReactNode\n}) {\n const { step, current, indicator } = props\n\n return (\n <ProgressStepWrapper>\n <ProgressStepContainer\n data-testid=\"steps-timeline-entry\"\n className={clsx({\n 'is-current': current,\n 'is-complete': step.complete,\n })}\n >\n <StepIndicator aria-hidden=\"true\" current={current} complete={step.complete}>\n {indicator}\n </StepIndicator>\n\n <StepLabel current={current} complete={step.complete}>\n {step.label}\n </StepLabel>\n\n <StepConnector complete={step.complete} />\n </ProgressStepContainer>\n </ProgressStepWrapper>\n )\n}\n\nexport default ProgressStep\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport ProgressStep from './ProgressStep'\n\nimport type { Step } from '../Steps.types'\n\nexport interface StepsProgressProps {\n readonly steps: Array<Step>\n readonly current: number | string\n}\n\nconst ProgressWrapper = styled.ol<{ steps: Step[] }>`\n position: relative;\n\n display: flex;\n flex-direction: row;\n\n padding: ${token('steps-progress-padding-y')} ${token('steps-progress-padding-x')};\n`\n\nfunction StepsProgress(props: StepsProgressProps) {\n const { steps, current } = props\n\n return (\n <ProgressWrapper steps={steps}>\n {steps.map(function renderStep(step, index) {\n const { id } = step\n\n return <ProgressStep key={id} current={current === id} indicator={index + 1} step={step} />\n })}\n </ProgressWrapper>\n )\n}\n\nexport default StepsProgress\n","import React, { useContext } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { getPanelRadioID } from './Steps.helpers'\nimport { getToken as token } from 'theming'\nimport font from 'styles/font'\nimport hidden from 'styles/hidden'\nimport StepsContext from './StepsContext'\n\nexport interface StepsStepProps {\n readonly id: number | string\n readonly className?: string\n}\n\nconst Selector = styled.input`\n ${hidden(true)}\n`\n\nexport const StepWrapper = styled.article`\n ${font({\n weight: 'font-weight-medium',\n height: 'font-height-2',\n })}\n\n padding: 0 ${token('steps-step-padding-x')} ${token('steps-step-padding-y')};\n\n ${Selector} + & {\n display: none;\n }\n\n ${Selector}:checked + & {\n display: block;\n }\n`\n\nfunction StepsStep({ children, id, ...others }: PropsWithChildren<StepsStepProps>) {\n const StepsID = useContext(StepsContext)\n\n return (\n <>\n <Selector\n type=\"radio\"\n className=\"visually-hidden\"\n id={getPanelRadioID(id)}\n name={String(StepsID)}\n value={id}\n data-testid=\"panel-radio\"\n tabIndex={-1}\n />\n <StepWrapper data-testid=\"steps-step\" {...others} id={String(id)}>\n {children}\n </StepWrapper>\n </>\n )\n}\n\nexport default StepsStep\n","import React, { useEffect } from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { check, getPanelRadioID } from './Steps.helpers'\nimport { getToken as token } from 'theming'\nimport StepsContext from './StepsContext'\nimport StepsProgress from './ProgressSteps'\nimport StepsStep from './StepsStep'\n\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport type { Step } from './Steps.types'\nexport interface StepsProps {\n readonly current: number | string\n readonly id: number | string\n readonly steps: Array<Step>\n readonly className?: string\n readonly scheme?: ColorScheme\n}\n\nconst StepsWrapper = styled.section`\n display: block;\n width: 100%;\n\n color: ${token('steps-color')};\n`\n\n// TODO: improve by extracting steps props right from children.\nfunction Steps({ id, children, current, steps, ...others }: PropsWithChildren<StepsProps>) {\n useEffect(\n function showCurrentStep() {\n check(getPanelRadioID(current))\n },\n [current]\n )\n\n return (\n <StepsWrapper id={String(id)} {...others}>\n <StepsProgress current={current} steps={steps} />\n <StepsContext.Provider value={id}>{children}</StepsContext.Provider>\n </StepsWrapper>\n )\n}\n\nSteps.Step = StepsStep\n\nexport default Steps\n","import type { Dispatch } from 'react'\nimport { useEffect, useReducer, useRef } from 'react'\n\nimport get from 'utils/toolset/get'\nimport type { Step } from './Steps.types'\n\nexport interface useStepsProps {\n steps: Array<Step>\n current?: number | string\n}\n\ninterface State {\n current: number | string\n steps: Array<Step>\n}\ntype Action =\n | { type: 'navigate'; payload: { stepID: number | string } }\n | { type: 'next' }\n | { type: 'previous' }\n | { type: 'complete'; payload: { stepID: number | string } }\n | { type: 'reset'; payload: State }\n\nfunction useSteps({ steps, current: currentProp }: useStepsProps): [State, Dispatch<Action>] {\n const stepIndexByID = useRef<Record<number | string, number>>({})\n\n useEffect(\n function initStepIndexByIDMap() {\n stepIndexByID.current = {}\n for (const [index, step] of steps.entries()) {\n stepIndexByID.current[step.id] = index\n }\n },\n [steps]\n )\n\n const [state, dispatch] = useReducer(reducer, init(steps, currentProp))\n\n function reducer(state: State, action: Action): State {\n const { current } = state\n\n // TODO: improve using object to map each case as individual functions\n switch (action.type) {\n case 'previous': {\n const currentIndex = getStepIndex(current)\n\n if (currentIndex == null) {\n return state\n }\n\n const newCurrentIndex = Math.max(currentIndex - 1, 0)\n\n return {\n ...state,\n current: steps[newCurrentIndex]?.id,\n }\n }\n case 'next': {\n const currentIndex = getStepIndex(current)\n\n if (currentIndex == null) {\n return state\n }\n\n const newCurrentIndex = Math.min(currentIndex + 1, steps.length - 1)\n\n return {\n ...state,\n current: steps[newCurrentIndex]?.id,\n }\n }\n case 'navigate': {\n const { stepID } = action.payload\n const currentIndex = getStepIndex(current)\n const stepIndex = getStepIndex(stepID)\n const step = get(steps, stepIndex)\n\n if (!step) {\n return state\n }\n\n return {\n ...state,\n current: steps[stepIndex]?.id || steps[currentIndex]?.id,\n }\n }\n case 'complete': {\n const { stepID } = action.payload\n const { steps } = state\n\n const stepIndex = getStepIndex(stepID)\n const step = get(steps, stepIndex)\n\n if (!step) {\n return state\n }\n\n return {\n ...state,\n steps: [\n ...steps.slice(0, stepIndex),\n { ...step, complete: true },\n ...steps.slice(stepIndex + 1),\n ],\n }\n }\n case 'reset': {\n const { steps, current } = action.payload\n\n return {\n ...state,\n ...init(steps, current),\n }\n }\n default:\n return state\n }\n }\n\n // TODO: gather step info to feed Steps component\n function init(steps: Array<Step>, current?: number | string): State {\n return {\n current: current || get(steps, '0.id'),\n steps,\n }\n }\n\n function getStepIndex(stepID: number | string): number {\n return stepIndexByID.current[stepID]\n }\n\n // TODO: write helper functions to abstract inner dispatch mechanism\n return [state, dispatch]\n}\n\nexport default useSteps\n","import type { ReactNode, HTMLAttributes } from 'react'\nimport React from 'react'\n\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\n\nexport interface CardTitleProps extends HTMLAttributes<HTMLElement> {\n readonly leading?: ReactNode\n}\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n pointer-events: none;\n`\n\nconst Leading = styled(StyledSpan)`\n margin-right: ${token('space-xs')};\n`\n\nconst Wrapper = styled.div`\n padding: ${token('card-padding-y')} ${token('card-padding-x')} 0;\n\n color: ${token('card-color')};\n font-weight: ${token('card-title-font-weight')};\n font-size: ${token('card-title-font-size')};\n line-height: ${token('card-title-font-height')};\n`\n\nfunction CardTitle({ children, leading, ...others }: CardTitleProps) {\n return (\n <Wrapper {...others}>\n {leading && <Leading>{leading}</Leading>}\n {children}\n </Wrapper>\n )\n}\n\nexport { Wrapper as CardTitleWrapper }\n\nexport default CardTitle\n","import type { HTMLAttributes, ReactNode } from 'react'\nimport React from 'react'\n\nimport { getToken as token } from 'theming'\nimport CardTitle, { CardTitleWrapper } from './CardTitle'\nimport conditional, { whenProps } from 'tools/conditional'\nimport font from 'styles/font'\nimport Status from 'utils/types/Status'\nimport styled, { css } from 'styled-components'\n\nexport interface CardProps extends HTMLAttributes<HTMLElement> {\n readonly children: ReactNode\n readonly status?: Status\n readonly flagged?: boolean\n}\n\nconst CardSubtitle = styled.div`\n padding: 0 ${token('card-padding-x')} ${token('card-padding-y')};\n\n color: ${token('card-color')};\n font-weight: ${token('card-subtitle-font-weight')};\n font-size: ${token('card-subtitle-font-size')};\n`\n\nconst CardSeparator = styled.hr`\n display: block;\n height: 1px;\n margin: 0;\n\n border: 0;\n border-bottom: 1px solid ${token('card-separator-background')};\n`\n\nconst CardBody = styled.div`\n padding: ${token('card-padding-y')} ${token('card-padding-x')};\n`\n\nconst Wrapper = styled.div`\n ${font({})}\n\n display: flex;\n flex-direction: row;\n\n color: ${token('card-color')};\n\n ${CardTitleWrapper} + ${CardSubtitle} {\n margin-top: ${token('space-xs')};\n }\n\n ${CardTitleWrapper} + ${CardSeparator} {\n margin-top: ${token('card-padding-y')};\n }\n\n border: 1px solid ${token('card-border-color')};\n border-radius: ${token('card-border-radius')};\n background: ${token('card-background')};\n`\n\nconst Container = styled.div<{ flagged: boolean }>`\n display: flex;\n flex: 1;\n flex-direction: column;\n\n line-height: ${token('card-font-height')};\n\n ${({ flagged }) =>\n flagged &&\n css`\n ${CardSeparator} {\n margin-left: calc(-1 * ${token('space-s')});\n }\n `}\n`\n\nconst Flag = styled.span<{ status: Status }>`\n display: block;\n flex: 0 0 ${token('card-flag-width')};\n\n background: ${conditional({\n 'card-flag-background-neutral': whenProps({ status: Status.Neutral }),\n 'card-flag-background-danger': whenProps({ status: Status.Danger }),\n 'card-flag-background-warning': whenProps({ status: Status.Warn }),\n 'card-flag-background-success': whenProps({ status: Status.Success }),\n })};\n border-radius: ${token('card-border-radius')} 0 0 ${token('card-border-radius')};\n`\n\nfunction Card({ flagged = false, status = Status.Neutral, children, ...others }: CardProps) {\n return (\n <Wrapper {...others}>\n {flagged && <Flag status={status} aria-label={status} />}\n <Container flagged={flagged}>{children}</Container>\n </Wrapper>\n )\n}\n\nCard.Title = CardTitle\nCard.Subtitle = CardSubtitle\nCard.Separator = CardSeparator\nCard.Body = CardBody\n\nexport default Card\n","import { createContext } from 'react'\nimport type { DropdownContextReturn } from './Dropdown.types'\n\nconst DropdownContext = createContext<DropdownContextReturn>({\n disabled: false,\n expandDisabled: false,\n expanded: false,\n toggle() {\n // nothing\n },\n})\n\nexport default DropdownContext\n","import React, { forwardRef, useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Popover } from 'components/Popover'\nimport disableable from 'styles/disableable'\nimport DropdownContext from './Dropdown.context'\nimport focusable from 'styles/focusable'\nimport font from 'styles/font'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport useID from 'hooks/useID'\n\nimport type {\n DropdownMenuItemProps,\n DropdownMenuProps,\n DropdownMenuSectionProps,\n} from './Dropdown.types'\n\n/**\n * TODO: add aria-labelledby that should refer to the dropdown label to the role=\"menu\" container.\n * TODO: navigate through items using arrow keys.\n * TODO: add animation for a smooth open/close effect.\n */\n\nconst StyledPopover = styled(Popover.Floating)`\n z-index: ${token('z-index-droplist')};\n\n min-width: 10em;\n\n background: ${token('dropdown-background')};\n border: 1px solid ${token('dropdown-border-color')};\n border-radius: ${token('dropdown-border-radius')};\n box-shadow: ${token('dropdown-shadow')};\n width: max-content;\n`\n\nconst StyledSpan = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n\n font-size: 1em;\n`\n\nconst Leading = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Trailing = styled(StyledSpan)`\n /* placeholder */\n`\n\nconst Children = styled.span`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: flex-start;\n padding: ${token('space-s')} 0;\n\n white-space: nowrap;\n`\n\nconst DropdownItemWrapper = styled.button`\n ${transition()}\n\n display: inline-flex;\n justify-content: flex-start;\n align-items: center;\n\n ${font({\n height: 'font-height-3',\n weight: 'font-weight-medium',\n })}\n font-size: ${token('font-size-4')};\n\n min-height: 36px;\n flex: 1 0;\n\n border: none;\n border-radius: ${token('border-radius-s')};\n background: ${token('color-neutral-white')};\n\n color: ${token('color-neutral-darker')};\n\n padding: 0 ${token('space-s')};\n\n margin: 0 ${token('space-s')};\n\n cursor: pointer;\n\n ${hoverable`\n background: ${token('color-neutral-lighter')};\n `}\n\n ${focusable`\n background: ${token('color-neutral-lighter')};\n `}\n\n ${disableable()}\n\n ${Children} {\n flex: 1 0 auto;\n\n text-align: left;\n }\n\n ${Leading}, ${Trailing} {\n flex: 0 1 auto;\n }\n\n ${Leading} + ${Children} {\n margin: 0 0 0 ${token('space-s')};\n }\n\n ${Children} + ${Trailing} {\n margin: 0 0 0 ${token('space-s')};\n }\n`\n\nconst DropdownSectionHeader = styled.strong`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n\n ${font({\n height: 'font-height-3',\n weight: 'font-weight-bold',\n })}\n\n font-size: ${token('font-size-4')};\n\n margin: 0 ${token('space-s')};\n`\n\nconst DropdownSectionWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`\n\nconst GenericDropdownMenuWrapper = styled.div`\n display: flex;\n flex-direction: column;\n padding: ${token('space-s')} 0;\n\n ${font({\n height: 'font-height-3',\n weight: 'font-weight-medium',\n })}\n\n font-size: ${token('font-size-4')};\n`\n\nconst DropdownMenuWrapper = styled(GenericDropdownMenuWrapper)`\n max-height: 240px;\n overflow-y: auto;\n max-width: 100%;\n width: 100%;\n\n ${DropdownItemWrapper} + ${DropdownItemWrapper},\n ${DropdownSectionHeader} + ${DropdownItemWrapper} {\n margin-top: ${token('space-2xs')};\n }\n\n ${DropdownSectionWrapper} + ${DropdownSectionWrapper} {\n margin: ${token('space-m')} 0 0 0;\n }\n\n ${GenericDropdownMenuWrapper} + &,\n & + ${GenericDropdownMenuWrapper},\n ${GenericDropdownMenuWrapper} + ${GenericDropdownMenuWrapper} {\n border-top: 2px solid ${token('color-neutral-lighter')};\n }\n`\n\nexport const DropdownSeparator = styled.hr.attrs({\n 'aria-hidden': true,\n})`\n display: block;\n height: 2px;\n\n margin: ${token('space-s')} 0;\n\n border: 0;\n border-bottom: 2px solid ${token('card-separator-background')};\n`\n\nexport const DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(function DropdownMenu(\n props: DropdownMenuProps,\n ref\n) {\n const context = useContext(DropdownContext)\n\n if (!context) {\n throw new Error('DropdownMenu must be inside a DropdownContext')\n }\n\n const { children, header, footer, ...others } = props\n const { expanded } = context\n\n if (!expanded) {\n return null\n }\n\n return (\n <StyledPopover role=\"presentation\">\n {header && <GenericDropdownMenuWrapper>{header}</GenericDropdownMenuWrapper>}\n {children && (\n <DropdownMenuWrapper ref={ref} role=\"menu\" data-testid=\"dropdown-menu\" {...others}>\n {children}\n </DropdownMenuWrapper>\n )}\n {footer && <GenericDropdownMenuWrapper>{footer}</GenericDropdownMenuWrapper>}\n </StyledPopover>\n )\n})\n\nexport function DropdownMenuItem(props: DropdownMenuItemProps) {\n const context = useContext(DropdownContext)\n const { leading, children, trailing, onClick, ...others } = props\n const id = useID(others.id)\n\n if (!context) {\n throw new Error('DropdownMenuItem must be inside a DropdownContext')\n }\n\n const { toggle } = context\n\n return (\n <DropdownItemWrapper\n role=\"menuitem\"\n type=\"button\"\n data-testid=\"dropdown-menu-item\"\n {...others}\n aria-labelledby={id}\n onClick={(e) => {\n e.persist()\n\n const shouldKeepOpen = onClick?.(e)\n\n if (!shouldKeepOpen) {\n toggle()\n }\n }}\n >\n {leading && <Leading>{leading}</Leading>}\n <Children id={id}>{children}</Children>\n {trailing && <Trailing>{trailing}</Trailing>}\n </DropdownItemWrapper>\n )\n}\n\nexport function DropdownMenuSection(props: DropdownMenuSectionProps) {\n const { children, header, ...others } = props\n\n return (\n <DropdownSectionWrapper data-testid=\"dropdown-menu-section\" {...others} role=\"presentation\">\n <DropdownSectionHeader>{header}</DropdownSectionHeader>\n {children}\n </DropdownSectionWrapper>\n )\n}\n","import type React from 'react'\nimport toArray from './toArray'\n\n// this is merely a helper for key code names\nconst SUPPORTED_KEYS = {\n ALT: 'Alt',\n ARROW_DOWN: 'ArrowDown',\n ARROW_LEFT: 'ArrowLeft',\n ARROW_RIGHT: 'ArrowRight',\n ARROW_UP: 'ArrowUp',\n CONTROL: 'Control',\n ENTER: 'Enter',\n ESCAPE: 'Escape',\n SHIFT: 'Shift',\n SPACE: ' ',\n TAB: 'Tab',\n E_LOWERCASE: 'e',\n DOT: '.',\n PLUS: '+',\n MINUS: '-',\n}\n\nexport type SupportedKey = keyof typeof SUPPORTED_KEYS\n\nfunction KeyboardKey(event: KeyboardEvent | React.KeyboardEvent): {\n is: (otherKeys: SupportedKey | SupportedKey[]) => boolean\n} {\n return {\n is(otherKeys: SupportedKey | SupportedKey[]) {\n const expectedKeys = toArray(otherKeys).map((otherKey) => SUPPORTED_KEYS[otherKey])\n\n return toArray(expectedKeys).includes(event.key)\n },\n }\n}\n\nexport default KeyboardKey\n","import { useCallback, useEffect, useState } from 'react'\n\nimport KeyboardKey from 'utils/toolset/keyboard'\n\nimport type { RefObject } from 'react'\n\nfunction useClickOutside<T extends HTMLElement>(\n container: RefObject<T>,\n callback: (event?: MouseEvent | TouchEvent | KeyboardEvent) => void,\n disabled = false\n): void {\n const [active, setActive] = useState(false)\n\n const getContainer = useCallback(\n function getContainer() {\n return container.current\n },\n [container]\n )\n\n const handleEvent = useCallback(\n function handleEvent(event: MouseEvent | TouchEvent | KeyboardEvent) {\n if (!getContainer() || disabled) {\n return\n }\n\n const target = event.target as Node\n const hasTarget = getContainer()?.contains(target)\n\n if (!active && hasTarget) {\n setActive(true)\n } else if (\n active &&\n (!hasTarget || (event instanceof KeyboardEvent && KeyboardKey(event).is('ESCAPE')))\n ) {\n setActive(false)\n callback(event)\n }\n },\n [active, callback, disabled, getContainer]\n )\n\n useEffect(() => {\n function subscribe() {\n document.addEventListener('mousedown', handleEvent, true)\n document.addEventListener('touchend', handleEvent, true)\n document.addEventListener('keyup', handleEvent)\n }\n\n function unsubscribe() {\n document.removeEventListener('mousedown', handleEvent, true)\n document.removeEventListener('touchend', handleEvent, true)\n document.removeEventListener('keyup', handleEvent)\n }\n\n subscribe()\n\n return () => {\n unsubscribe()\n }\n }, [handleEvent])\n}\n\nexport default useClickOutside\n","import React, { useContext } from 'react'\nimport clsx from 'clsx'\nimport styled, { css } from 'styled-components'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport type { ButtonProps } from 'components/Button'\nimport { BaseButton, SelectorButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Icon as DefaultIcon } from 'components/Icon'\nimport { useFocusWithin } from 'hooks/useFocusWithin'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport DropdownContext from './Dropdown.context'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport typography from 'styles/typography'\n\nimport type { ButtonHTMLAttributes, HTMLAttributes, MouseEvent } from 'react'\nimport type { DropdownTriggerProps, DropdownContextReturn } from './Dropdown.types'\nimport type { IconProps } from 'components/Icon'\nimport type ColorScheme from 'utils/types/ColorScheme'\nimport { Popover } from 'components/Popover'\n\n/**\n * TODO: throw an error if context is not available\n */\n\ninterface DropdownTriggerWrapperProps {\n disabled: boolean\n scheme: ColorScheme\n $outlined: boolean\n $scale: DropdownTriggerProps['scale']\n}\n\ntype TriggerButtonProps = ButtonProps & {\n outlined: boolean\n}\n\nconst dropdownExpandedStyle = css`\n &[aria-expanded='true'] {\n color: ${token('dropdown-trigger-expanded-color')};\n }\n`\n\nconst triggerButtonAttrs = (props: { outlined: boolean }) => {\n const outlined = typeof props.outlined === 'boolean' ? props.outlined : true\n if (outlined) {\n return props\n }\n\n return {\n ...props,\n variant: 'tertiary',\n }\n}\n\nconst TriggerButton = styled(\n SelectorButton as React.ForwardRefExoticComponent<TriggerButtonProps>\n).attrs(triggerButtonAttrs)`\n flex: 1;\n\n justify-content: flex-start;\n\n border: none;\n\n height: ${token('dropdown-trigger-height')};\n\n text-transform: ${conditional({\n capitalize: whenProps({ outlined: false, variant: 'tertiary' }),\n uppercase: whenProps({ outlined: true }),\n })};\n\n font-weight: ${conditional({\n 'font-weight-regular': whenProps({ outlined: false }),\n })};\n\n ${hoverable`\n border-color: ${conditional({\n 'color-transparent': whenProps({ outlined: false }),\n })};\n\n font-weight: ${conditional({\n 'font-weight-bold': whenProps({ outlined: false }),\n })};\n\n ${dropdownExpandedStyle}\n `}\n\n ${focusable`\n box-shadow: ${conditional({\n none: whenProps({ outlined: false }),\n })};\n\n background-color: ${conditional({\n 'color-transparent': whenProps({ outlined: false }),\n })};\n\n font-weight: ${conditional({\n 'font-weight-bold': whenProps({ outlined: false }),\n })};\n\n\n ${dropdownExpandedStyle}\n `}\n\n ${({ children, outlined }) => {\n if (!outlined && typeof children === 'string') {\n return css`\n & > span:first-child {\n display: inline-flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n\n text-decoration: none;\n }\n\n & > span:first-child::after {\n height: 0;\n overflow: hidden;\n\n font-weight: ${token('font-weight-bold')};\n\n visibility: hidden;\n\n /* @REVIEW: since this is a span descendant of a button\n I'm using the direct value of children the solution inside Link\n relies on data-text attribute */\n\n content: '${children}';\n content: '${children}' / '';\n user-select: none;\n pointer-events: none;\n\n @media speech {\n display: none;\n }\n }\n `\n }\n }}\n`\n\nconst DropdownTriggerWrapper = styled.div<DropdownTriggerWrapperProps>`\n ${transition()}\n\n ${typography(\n conditional({\n 'button-md': whenProps({ $scale: 'default' }),\n 'button-sm': whenProps({ $scale: 'small' }),\n 'button-lg': whenProps({ $scale: 'large' }),\n })\n )}\n\n display: flex;\n justify-content: flex-start;\n align-items: center;\n\n border-radius: ${token('button-border-radius')};\n border-width: ${token('button-border-width')};\n border-style: solid;\n border-color: ${conditional({\n 'dropdown-trigger-border-color': whenProps({ scheme: 'light', $outlined: true }),\n 'dropdown-trigger-dark-border-color': whenProps({ scheme: 'dark', $outlined: true }),\n 'dropdown-trigger-outlined-border-color': whenProps({ $outlined: false }),\n })};\n\n font-size: ${token('font-size-4')};\n\n color: ${token('color-neutral-darker')};\n\n box-sizing: border-box;\n\n flex: 1;\n\n ${hoverable`\n border-color: ${conditional({\n 'button-secondary-border-color--hover': whenProps({ scheme: 'light', $outlined: true }),\n 'button-secondary-dark-border-color--hover': whenProps({\n scheme: 'dark',\n $outlined: true,\n }),\n })};\n `}\n\n ${disableable`\n border-color: ${conditional({\n 'button-secondary-border-color--disabled': whenProps({ scheme: 'light' }),\n 'button-secondary-dark-border-color--disabled': whenProps({\n scheme: 'dark',\n }),\n })};\n `}\n\n ${focusable`\n border-color: ${conditional({\n 'button-primary-border-color--focus': whenProps({ variant: 'primary', $outlined: true }),\n 'button-secondary-border-color--focus': whenProps({ scheme: 'light', $outlined: true }),\n 'button-secondary-dark-border-color--focus': whenProps({\n scheme: 'dark',\n $outlined: true,\n }),\n 'button-warning-border-color--focus': whenProps({ variant: 'warning', $outlined: true }),\n 'button-icon-border-color--focus': whenProps({ variant: 'icon', $outlined: true }),\n 'color-transparent': whenProps({ $outlined: false }),\n })};\n\n box-shadow: ${conditional({ 'dropdown-trigger-box-shadow': whenProps({ $outlined: true }) })};\n outline: ${token('dropdown-trigger-outline')};\n outline-offset: ${token('dropdown-trigger-outline-offset')};\n `}\n\n ${activatable`\n border-color: ${conditional({\n 'button-secondary-border-color--active': whenProps({ scheme: 'light', $outlined: true }),\n 'button-secondary-dark-border-color--active': whenProps({\n scheme: 'dark',\n $outlined: true,\n }),\n })};\n `}\n`\n\nconst TriggerHandle = styled(BaseButton)`\n ${focusable()}\n\n background: ${token('color-transparent')};\n border-radius: 0 ${token('border-radius-s')} ${token('border-radius-s')} 0;\n border: none;\n\n height: ${token('dropdown-trigger-height')};\n`\n\nconst RotatableIcon = styled(DefaultIcon)<{ $rotate: boolean }>`\n ${conditional({\n 'transform: rotate(180deg);': whenProps({ $rotate: true }),\n })}\n`\n\nexport interface DropdownTriggerButtonProps extends Omit<DropdownTriggerProps, 'children'> {\n readonly children:\n | DropdownTriggerProps['children']\n | ((args: DropdownContextReturn) => React.ReactNode)\n}\n\nfunction Caret(props: Omit<IconProps, 'name'> & { readonly $rotate: boolean }) {\n return <RotatableIcon size={20} {...props} name=\"chevron-down\" />\n}\n\nfunction DropdownTriggerButton(props: DropdownTriggerButtonProps) {\n const contextValue = useContext(DropdownContext)\n const { toggle, disabled, expanded } = contextValue\n const { children, onClick, ...others } = props\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n e.persist()\n\n toggle()\n onClick?.(e)\n }\n\n function renderChildren() {\n if (isFunction(children)) {\n return children(contextValue)\n }\n\n return children\n }\n\n // TODO: add aria-labelledby that should refer to the button and the dropdown label\n return (\n <TriggerButton\n trailing={<Caret $rotate={expanded} />}\n onClick={handleClick}\n {...others}\n type=\"button\"\n aria-haspopup=\"true\"\n aria-expanded={expanded}\n aria-disabled={disabled}\n disabled={disabled}\n >\n {renderChildren()}\n </TriggerButton>\n )\n}\n\nfunction DropdownTriggerHandle(props: ButtonHTMLAttributes<HTMLButtonElement>) {\n const { toggle, expanded, disabled, expandDisabled } = useContext(DropdownContext)\n const { onClick, ...others } = props\n\n const handleClick = (e: MouseEvent<HTMLButtonElement>) => {\n e.persist()\n\n toggle()\n onClick?.(e)\n }\n\n return (\n <TriggerHandle\n onClick={handleClick}\n data-testid=\"dropdown-trigger-handle\"\n {...others}\n disabled={disabled || expandDisabled}\n type=\"button\"\n tabIndex={-1}\n >\n <Caret $rotate={expanded} />\n </TriggerHandle>\n )\n}\n\nexport interface GenericDropdownTriggerProps extends HTMLAttributes<HTMLDivElement> {\n readonly disabled?: boolean\n readonly scheme?: ColorScheme\n readonly outlined?: boolean\n readonly scale?: DropdownTriggerProps['scale']\n}\n\nexport function GenericDropdownTrigger(props: GenericDropdownTriggerProps) {\n const context = useContext(DropdownContext)\n const { ref, focused } = useFocusWithin<HTMLDivElement>()\n\n if (!context) {\n throw new Error('DropdownTrigger must be inside a DropdownContext')\n }\n\n const { children, className, scheme = 'light', outlined = true, scale, ...others } = props\n const { disabled } = context\n\n return (\n <DropdownTriggerWrapper\n role=\"presentation\"\n {...others}\n ref={ref}\n className={clsx(\n {\n 'is-disabled': disabled,\n 'is-focused': focused,\n },\n className\n )}\n disabled={disabled}\n scheme={scheme}\n $scale={scale}\n $outlined={outlined}\n >\n {children}\n </DropdownTriggerWrapper>\n )\n}\n\nfunction DropdownTrigger(props: DropdownTriggerProps) {\n const { children, className, ...others } = props\n\n return (\n <Popover.Reference>\n <GenericDropdownTrigger className={className} outlined={props.outlined} scale={props.scale}>\n <DropdownTriggerButton {...others} data-text={children}>\n {children}\n </DropdownTriggerButton>\n </GenericDropdownTrigger>\n </Popover.Reference>\n )\n}\n\nDropdownTrigger.Button = DropdownTriggerButton\nDropdownTrigger.Handle = DropdownTriggerHandle\n\nexport default DropdownTrigger\n","import { useCallback, useEffect, useState } from 'react'\n\nimport type { DropdownProps } from './Dropdown.types'\n\nexport interface useDropdownProps {\n expanded: boolean\n toggle: () => void\n}\n\nexport interface GenericDropdownProps extends DropdownProps, useDropdownProps {}\n\nfunction useDropdown({ disabled, expandDisabled }: DropdownProps): {\n expanded: boolean\n toggle: () => void\n expand: () => void\n collapse: () => void\n} {\n const [expanded, setExpanded] = useState(false)\n\n const toggle = useCallback(\n function toggle() {\n if (disabled || expandDisabled) {\n return\n }\n\n setExpanded((isExpanded) => !isExpanded)\n },\n [disabled, expandDisabled]\n )\n\n const expand = useCallback(\n function toggle() {\n if (disabled || expandDisabled) {\n return\n }\n\n setExpanded(true)\n },\n [disabled, expandDisabled]\n )\n\n const collapse = useCallback(\n function toggle() {\n if (disabled || expandDisabled) {\n return\n }\n\n setExpanded(false)\n },\n [disabled, expandDisabled]\n )\n\n useEffect(\n function closeWhenDisabled() {\n if ((disabled || expandDisabled) && expanded) {\n setExpanded(false)\n }\n },\n [disabled, expandDisabled, expanded]\n )\n\n return { expanded, toggle, expand, collapse }\n}\n\nexport default useDropdown\n","import React, { useMemo, useRef } from 'react'\nimport styled from 'styled-components'\n\nimport {\n DropdownMenu,\n DropdownMenuItem,\n DropdownMenuSection,\n DropdownSeparator,\n} from './DropdownMenu'\nimport { useClickOutside } from 'hooks/useClickOutside'\nimport DropdownContext from './Dropdown.context'\nimport DropdownTrigger from './DropdownTrigger'\nimport hidden from 'styles/hidden'\nimport useDropdown from './useDropdown'\nimport { Popover } from 'components/Popover'\n\nimport type { DropdownProps, GenericDropdownProps, DropdownMenuProps } from './Dropdown.types'\nimport type { PopoverAlign } from 'components/Popover'\n\nconst DropdownWrapper = styled.div`\n position: relative;\n`\n\nconst HiddenCloseButton = styled.button.attrs({\n type: 'button',\n tabIndex: -1,\n})`\n ${hidden(true)}\n`\n\nfunction useDeprecatedAlignFromMenu({\n children,\n align,\n}: React.PropsWithChildren<{ align?: PopoverAlign }>): PopoverAlign {\n let result: PopoverAlign | undefined\n\n if (align) {\n return align\n }\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement<DropdownMenuProps>(child) && child.type === DropdownMenu) {\n result = child.props.align\n }\n })\n\n return (result || align) as PopoverAlign\n}\n\n// TODO: add focus trap here to allow navigating options with keyboard\n\n/**\n * Generic dropdown component that allows composing its pieces as desired.\n *\n * Based on:\n * - https://www.w3.org/TR/2017/REC-wai-aria-1.1-20171214/#menu\n * - https://www.w3.org/WAI/tutorials/menus/application-menus/\n */\nexport function GenericDropdown(props: GenericDropdownProps) {\n const {\n children,\n expanded,\n toggle,\n disabled = false,\n expandDisabled = false,\n onBlur,\n position,\n ...others\n } = props\n const contextValue = useMemo(\n () => ({ expanded, toggle, disabled, expandDisabled }),\n [expanded, toggle, disabled, expandDisabled]\n )\n const ref = useRef(null)\n\n const align = useDeprecatedAlignFromMenu(props)\n\n useClickOutside(\n ref,\n function handleClickOutside(event?: MouseEvent | TouchEvent | KeyboardEvent) {\n onBlur?.(event)\n\n if (!expanded) {\n return\n }\n\n toggle()\n }\n )\n\n return (\n <DropdownWrapper {...others} role=\"menubar\" ref={ref}>\n <DropdownContext.Provider value={contextValue}>\n <HiddenCloseButton disabled={disabled} onClick={toggle}>\n Close\n </HiddenCloseButton>\n <Popover strategy=\"fixed\" position={position} align={align}>\n {children}\n </Popover>\n </DropdownContext.Provider>\n </DropdownWrapper>\n )\n}\n\n/**\n * @example\n <Dropdown>\n <Dropdown.Trigger>Download</Dropdown.Trigger>\n <Dropdown.Menu\n header={<p className=\"px-2\">Header</p>}\n footer={<p className=\"px-2\">A cool footer</p>}\n >\n {[{label: 'Hello', value: 'hi'}, { label: 'World', value: 'planet' }].map(({ label, value }) => (\n <Dropdown.Item\n key={value}\n onClick={() => {\n setMessage(label)\n }}\n >\n {label}\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n */\nfunction Dropdown(props: DropdownProps) {\n const dropdownProps = useDropdown(props)\n\n return <GenericDropdown {...props} {...dropdownProps} />\n}\n\nDropdown.Trigger = DropdownTrigger\nDropdown.Menu = DropdownMenu\nDropdown.Section = DropdownMenuSection\nDropdown.Item = DropdownMenuItem\nDropdown.Separator = DropdownSeparator\n\nexport default Dropdown\n","import { createContext } from 'react'\nimport { createSelectable } from 'hooks/useSelectable'\n\nimport type { Option, useSelectReturn } from './Select.types'\n\nconst { SelectableContext, useSelectable } = createSelectable<Option>()\n\nexport { SelectableContext, useSelectable }\n\nconst SelectContext = createContext<useSelectReturn | null>(null)\nexport { SelectContext }\n","/**\n * Helper that returns the plural form if count is different than 1, otherwise the singular one.\n * @example\n * let total = 3\n * `Item${pluralize(total)}` // \"Items\"\n * `Child${pluralize(total, 'ren')}` // \"Children\"\n * `Pe${pluralize(total, 'ople', 'rson')}` // \"People\"\n * `${pluralize(total, 'People', 'Person')}` // \"People\"\n * @param count - total of items\n * @param plural - defaults to \"s\"\n * @param singular - defaults to \"\"\n * @returns plural or singular.\n */\nexport default function pluralize(count: number, plural = 's', singular = ''): string {\n return count !== 1 ? plural : singular\n}\n","import React, { useContext, forwardRef } from 'react'\nimport styled from 'styled-components'\n\nimport { DropdownContext, DropdownTrigger, GenericDropdownTrigger } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { TextField, Trailing } from 'components/TextField'\nimport focusable from 'styles/focusable'\n\nimport type { SelectTriggerProps } from './Select.types'\nimport { isFunction } from '@loadsmart/utils-function'\nimport { usePopover } from 'components/Popover'\n\nconst GenericSelectTrigger = styled(GenericDropdownTrigger)`\n background: ${token('color-neutral-white')};\n`\n\nconst SelectTriggerSearchField = styled(TextField)`\n ${focusable`\n box-shadow: none;\n `}\n\n background-color: transparent;\n\n border: none;\n border-radius: ${token('border-radius-s')} 0 0 ${token('border-radius-s')};\n\n height: ${token('select-trigger-height')};\n\n flex: 1;\n\n ${Trailing} {\n margin: 0 ${token('space-xs')} 0 0;\n }\n`\n\nconst Separator = styled.span`\n height: 100%;\n\n margin: 0;\n\n border-right-color: ${token('color-neutral-light')};\n border-right-width: 1px;\n border-right-style: solid;\n`\n\nconst SelectTrigger = forwardRef<HTMLInputElement, SelectTriggerProps>(function SelectTrigger(\n props: SelectTriggerProps,\n ref\n) {\n const { className, ...others } = props\n const { disabled, expanded, toggle } = useContext(DropdownContext)\n\n const { register } = usePopover()\n\n const handleClick = () => {\n if (!expanded) {\n toggle()\n }\n }\n\n return (\n <GenericSelectTrigger className={className}>\n <SelectTriggerSearchField\n {...others}\n data-testid=\"select-trigger-search-field\"\n ref={(node) => {\n if (isFunction(ref)) {\n ref(node)\n }\n\n register.setReference(node)\n }}\n type=\"search\"\n disabled={disabled}\n onClick={handleClick}\n />\n <Separator />\n <DropdownTrigger.Handle data-testid=\"select-trigger-handle\" />\n </GenericSelectTrigger>\n )\n})\n\nexport default SelectTrigger\n","import { useCallback, useEffect, useRef, useState } from 'react'\n\nimport KeyboardKey from 'utils/toolset/keyboard'\nimport isEmpty from 'utils/toolset/isEmpty'\n\nimport type { SupportedKey } from 'utils/toolset/keyboard'\n\nexport interface useFocusTrapProps {\n onActivate?: () => void\n onDeactivate?: () => void\n keys?: SupportedKey[]\n}\n\nfunction getFocusedIndexAfterKeyPress(\n e: KeyboardEvent,\n currentFocused: number,\n focusableCounter: number\n): number {\n const keyHandler: Record<KeyboardEvent['key'], (e: KeyboardEvent) => number> = {\n Tab(event: KeyboardEvent): number {\n return event.shiftKey ? -1 : 1\n },\n ArrowUp() {\n return -1\n },\n ArrowDown() {\n return 1\n },\n }\n\n function unknownKey() {\n return 0\n }\n\n const key = e.key\n\n const increment = (keyHandler[key] || unknownKey)(e)\n\n if (currentFocused === -1 && increment === -1) {\n /**\n * Prevent to skip one element when the initial increment is -1\n * and `currentFocused` is -1, we don't .\n * e.g.: focus has just been activated and user presses arrow up.\n */\n return (increment + focusableCounter) % focusableCounter\n }\n\n return (currentFocused + increment + focusableCounter) % focusableCounter\n}\n\nfunction getTabbableDescendants(container: HTMLElement | null) {\n if (container == null) {\n return []\n }\n\n // TODO: add support for other focusable elements\n return Array.from(container.querySelectorAll('button'))\n}\n\n/**\n * Custom hook that limits the focusable elements within a container, when activated.\n *\n * Based on https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets.\n *\n * @param props\n * @param props.containerRef - Ref to the container that will be the boundary for the focus trap.\n * @param props.onActivate - Called when the focus trap is activated.\n * @param props.onDeactivate - Called when the focus trap is deactivated.\n * @param props.keys - Keys that will move the focus inside\n * the container (The current implementation only track focus for button elements). We current\n * support `Tab`, `ArrowUp`, and `ArrowDown` keys. If not provided, only the `Tab` key will be used.\n */\nfunction useFocusTrap(props: useFocusTrapProps): {\n containerRef: (container: HTMLElement | null) => void\n active: boolean\n activate: () => void\n deactivate: () => void\n} {\n const { keys, onActivate, onDeactivate } = props\n\n const [active, setActive] = useState(false)\n const [currentFocused, setCurrentFocused] = useState(-1)\n const mutationObserverRef = useRef<MutationObserver>()\n const [focusableDescendants, setFocusableDescendants] = useState<HTMLElement[]>([])\n\n function subscribeToDOMMutationEvents(container: HTMLElement) {\n mutationObserverRef.current = new MutationObserver(() => {\n setFocusableDescendants(getTabbableDescendants(container))\n })\n\n mutationObserverRef.current.observe(container, { childList: true })\n }\n\n function unsubscribeToDOMMutationEvents() {\n setCurrentFocused(-1)\n if (mutationObserverRef.current) {\n mutationObserverRef.current.disconnect()\n }\n }\n\n const containerRef = useCallback(function initialize(container: HTMLElement | null) {\n if (container != null) {\n setFocusableDescendants(getTabbableDescendants(container))\n subscribeToDOMMutationEvents(container)\n } else {\n unsubscribeToDOMMutationEvents()\n }\n }, [])\n\n useEffect(function onMount() {\n return function onUnmount() {\n unsubscribeToDOMMutationEvents()\n }\n }, [])\n\n useEffect(\n function subscribeToKeyEvents() {\n function handleKeyDownEvent(evt: KeyboardEvent) {\n /**\n * Brace yourselves for the nasty casting from globalThis.KeyboardEvent, which is\n * the type used in the `addEventListener` callback, to React.KeyboardEvent ¯\\_(ツ)_/¯\n */\n const e = evt\n\n const supportedKeys = [...(keys || ['TAB'])]\n\n if (!KeyboardKey(e).is(supportedKeys) || isEmpty(focusableDescendants)) {\n return\n }\n\n e.preventDefault()\n\n const newCurrentFocused = getFocusedIndexAfterKeyPress(\n e,\n currentFocused,\n focusableDescendants.length\n )\n setCurrentFocused(newCurrentFocused)\n focusableDescendants[newCurrentFocused].focus()\n }\n\n function subscribe() {\n document.addEventListener('keydown', handleKeyDownEvent)\n }\n\n function unsubscribe() {\n document.removeEventListener('keydown', handleKeyDownEvent)\n }\n\n if (active) {\n subscribe()\n }\n\n return function unsubscribeToKeyEvents() {\n unsubscribe()\n }\n },\n [active, keys, currentFocused, focusableDescendants]\n )\n\n const activate = useCallback(\n function activate() {\n setActive(true)\n onActivate?.()\n },\n [onActivate]\n )\n\n const deactivate = useCallback(\n function deactivate() {\n setActive(false)\n onDeactivate?.()\n },\n [onDeactivate]\n )\n\n return {\n containerRef,\n active,\n activate,\n deactivate,\n }\n}\n\nexport default useFocusTrap\n","import get from 'utils/toolset/get'\n\nimport type { SelectAdapter } from './Select.types'\n\nexport const GenericAdapter: SelectAdapter<unknown> = {\n getKey(o): string {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n return get(o, 'value')!\n },\n getLabel(o): string {\n // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression\n return get(o, 'label')!\n },\n}\n","import { GenericAdapter } from './Select.constants'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport toArray from 'utils/toolset/toArray'\n\nimport type { SelectAdapter, SelectValue, Option, Adapters, SelectProps } from './Select.types'\n\nexport function getAdapter(adapters: Adapters, type?: string): SelectAdapter<any> {\n if (type == null) {\n return GenericAdapter\n }\n\n return adapters[type] || GenericAdapter\n}\n\nexport function getValue(selection: SelectValue, multiple?: boolean): Option | Option[] | null {\n const pairs = Array.from(selection)\n\n if (isEmpty(pairs)) {\n return null\n }\n\n if (multiple) {\n const options = []\n for (const [, option] of pairs) {\n options.push(option)\n }\n\n return options\n }\n const [[, option]] = pairs\n return option\n}\n\nexport function toSelection(value: SelectProps['value']): Option[] {\n const safeValue = toArray(value ?? [])\n\n return safeValue.filter((option) => !isEmpty(option))\n}\n\nexport function getDisplayValue(\n adapters: Adapters,\n selection: SelectValue,\n multiple?: boolean\n): string {\n if (selection.size == 0) {\n return ''\n }\n\n if (multiple) {\n return ''\n }\n const value = getValue(selection, multiple)\n const adapter = getAdapter(adapters, (value as Option)._type)\n return adapter.getLabel(value) ?? ''\n}\n\n// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping\nexport function escapeRegExp(value: string): string {\n return (value || '').replaceAll(/[.*+?^${}()|[\\]\\\\]/g, String.raw`\\$&`)\n}\n","import { isFunction } from '@loadsmart/utils-function'\nimport { isNil } from '@loadsmart/utils-object'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport isEmpty from 'utils/toolset/isEmpty'\nimport { useDropdown } from 'components/Dropdown'\nimport { useDidMount } from 'hooks/useDidMount'\nimport { useFocusTrap } from 'hooks/useFocusTrap'\nimport type { SelectableKeyType } from 'hooks/useSelectable'\nimport toArray from 'utils/toolset/toArray'\nimport { GenericAdapter } from './Select.constants'\nimport { useSelectable } from './Select.context'\nimport {\n escapeRegExp,\n getAdapter,\n getDisplayValue,\n getValue,\n toSelection,\n} from './useSelect.helpers'\n\nimport type { ChangeEvent, FocusEvent } from 'react'\nimport type {\n Adapters,\n GenericOption,\n Option,\n SelectDatasource,\n SelectDatasourceFunction,\n SelectProps,\n SelectStatus,\n SelectValue,\n useSelectReturn,\n} from './Select.types'\n\nasync function getData(datasources: SelectDatasource<any>[], query: string) {\n const regex = new RegExp(escapeRegExp(query), 'i')\n\n const promises = []\n const types: string[] = []\n\n for (const ds of datasources) {\n promises.push(Promise.resolve(ds.fetch({ query, regex })))\n types.push(ds.type)\n }\n\n // We use Promise.allSettled here because Promise.all rejects as soon as one promise fails\n // But we want to continue with the next datasource when one fails.\n const results = await Promise.allSettled(promises)\n\n let items: Option[] = []\n\n for (const [index, result] of results.entries()) {\n if (result.status === 'rejected') {\n continue\n }\n\n const type = types[index]\n\n items = items.concat(\n (result.value || []).map((item) => {\n return {\n ...item,\n _type: type,\n } as Option\n })\n )\n }\n\n return items\n}\n\nfunction getDatasources(props: SelectProps) {\n function getDatasourceFromOptions(\n options?: GenericOption[] | null\n ): SelectDatasourceFunction<any>[] {\n if (!options) {\n return []\n }\n\n return [\n function useGenericDatasource() {\n return {\n type: 'generic',\n adapter: GenericAdapter,\n fetch: function fetch({ regex }) {\n return options.filter(({ label }) => regex.test(label))\n },\n }\n },\n ]\n }\n\n let datasources: SelectDatasourceFunction<any>[] = []\n\n datasources = datasources.concat(props.datasources || [])\n datasources = datasources.concat(getDatasourceFromOptions(props.options))\n\n return datasources.map((ds) => ds())\n}\n\nfunction extractAdapters(datasources: SelectDatasource<any>[]) {\n return toArray(datasources).reduce((map, ds) => {\n return {\n ...map,\n [ds.type]: ds.adapter,\n }\n }, {})\n}\n\nfunction TriggerOnFocusHandler(e: FocusEvent<HTMLInputElement>) {\n e.target.select()\n}\n\nfunction mapOptions(items: Option[], adapters: Adapters) {\n const options = new Map<SelectableKeyType, Option>()\n\n for (const item of items) {\n const adapter = getAdapter(adapters, item._type)\n options.set(adapter.getKey(item), item)\n }\n\n return options\n}\n\nfunction useOptions<T = any>(props: { datasources: SelectDatasource<T>[]; adapters: Adapters }) {\n const { datasources, adapters } = props\n const [options, setOptions] = useState(new Map<SelectableKeyType, Option>())\n const [status, setStatus] = useState<SelectStatus>('idle')\n\n const timeoutRef = useRef<number>()\n\n function cancelPendingFetch() {\n if (timeoutRef.current != null) {\n clearTimeout(timeoutRef.current)\n }\n }\n\n const fetchAfterTimeout = useCallback(\n function fetchAfterTimeout(query: string) {\n cancelPendingFetch()\n /**\n * The `pending-query` status represents that the 'fetching' has been started\n * but it has been debounced and the internal fetch has not yet been called.\n * This is important because at this point the status is not idle\n * as the fetching has already started.\n */\n setStatus('pending-query')\n\n async function fetch() {\n setOptions(new Map<SelectableKeyType, Option>())\n setStatus('querying')\n\n const items = await getData(datasources, query)\n\n setOptions(mapOptions(items, adapters))\n setStatus('queried')\n }\n\n timeoutRef.current = setTimeout(() => void fetch(), 750)\n },\n [adapters, datasources]\n )\n\n const clear = useCallback(function clear() {\n setStatus('idle')\n setOptions(new Map<SelectableKeyType, Option>())\n }, [])\n\n const get = useCallback(\n function get() {\n return Array.from(options.values())\n },\n [options]\n )\n\n const reset = useCallback(\n function reset() {\n clear()\n fetchAfterTimeout('')\n },\n [clear, fetchAfterTimeout]\n )\n\n const getOptionByKey = useCallback(\n function getOptionByKey(key: SelectableKeyType) {\n return options.get(key)\n },\n [options]\n )\n\n useEffect(() => {\n return () => {\n cancelPendingFetch()\n }\n }, [])\n\n return {\n get,\n fetch: fetchAfterTimeout,\n clear,\n status,\n getOptionByKey,\n reset,\n }\n}\n\n// TODO: keep adapter resolution in a single place\n// TODO: prevent state changes after unmount (`useMounted` hook from Alice Frontend)\n/**\n * Based on https://www.w3.org/TR/wai-aria-practices-1.1/examples/combobox/aria1.1pattern/listbox-combo.html\n */\nfunction useSelect(props: SelectProps): useSelectReturn {\n const didMount = useDidMount()\n const {\n multiple,\n onQueryChange,\n onChange,\n onCreate,\n getInputProps,\n id,\n name,\n disabled = false,\n onBlur,\n isValidNewOption = Boolean,\n createOptionPosition = 'last',\n } = props\n\n const datasources = useMemo<SelectDatasource<any>[]>(\n () => getDatasources(props),\n [props.datasources, props.options]\n )\n const adapters = useMemo<Adapters>(() => extractAdapters(datasources), [datasources])\n\n const selectable = useSelectable({\n selected: toSelection(props.value),\n multiple,\n adapters,\n onChange: useCallback(\n function handleSelectionChange(selected: SelectValue) {\n onChange?.({ target: { id, name, value: getValue(selected, multiple) } })\n },\n [id, multiple, name, onChange]\n ),\n })\n\n const triggerRef = useRef<HTMLInputElement>()\n const focusTrap = useFocusTrap({\n keys: ['ARROW_UP', 'ARROW_DOWN'],\n onDeactivate() {\n triggerRef.current?.focus()\n },\n })\n\n const [queryTyped, setQueryTyped] = useState(false)\n const [query, setQuery] = useState<string>(\n getDisplayValue(adapters, selectable.selected, multiple)\n )\n const options = useOptions({ datasources, adapters })\n\n const expandDisabled = useMemo(\n () =>\n !query.length &&\n isEmpty(options.get()) &&\n isEmpty(selectable.selected) &&\n isFunction(isValidNewOption)\n ? !isValidNewOption(query)\n : !isValidNewOption,\n [query, options, selectable.selected, isValidNewOption]\n )\n\n const dropdown = useDropdown({ ...props, expandDisabled })\n\n useEffect(() => {\n if (queryTyped) {\n options.fetch(query)\n dropdown.expand()\n }\n }, [query, queryTyped])\n\n const getSelectableOption = useCallback(\n function getSelectableOption(option: Option) {\n const adapter = getAdapter(adapters, option._type)\n\n const value = adapter.getKey(option)\n const label = adapter.getLabel(option)\n const checked = selectable.selected.has(value)\n\n return { label, value, checked }\n },\n [adapters, selectable.selected]\n )\n\n const getOption = useCallback(\n function getOption(value: SelectableKeyType) {\n let option = options.getOptionByKey(value)\n\n if (!option) {\n option = selectable.selected.get(value)\n }\n\n return option\n },\n [options, selectable.selected]\n )\n\n const toggleOption = useCallback(\n function toggleOption(option: Option) {\n selectable.toggle(option)\n },\n [selectable]\n )\n\n const getDropdownProps = useCallback(\n function getDropdownProps() {\n return {\n toggle: dropdown.toggle,\n expanded: dropdown.expanded,\n onBlur(event?: MouseEvent | TouchEvent | KeyboardEvent) {\n setQueryTyped(false)\n\n if (multiple) {\n setQuery('')\n } else {\n setQuery(getDisplayValue(adapters, selectable.selected, multiple))\n }\n options.reset()\n onBlur?.(event)\n },\n expandDisabled,\n }\n },\n [\n adapters,\n dropdown.expanded,\n dropdown.toggle,\n multiple,\n options,\n selectable.selected,\n onBlur,\n expandDisabled,\n ]\n )\n\n const getTriggerProps = useCallback(\n function getTriggerProps() {\n return {\n ...getInputProps?.(),\n id,\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n triggerRef.current = node\n }\n },\n value: query,\n onChange(e: ChangeEvent<HTMLInputElement>) {\n const sanitizedValue = e.target.value.replace(/\\s+/, '')\n\n setQueryTyped(sanitizedValue !== '')\n onQueryChange?.(e)\n setQuery(e.target.value)\n },\n onFocus: TriggerOnFocusHandler,\n }\n },\n [id, query, onQueryChange, dropdown, options, selectable.selected]\n )\n\n const getClearProps = useCallback(\n function getClearProps() {\n return {\n onClick() {\n setQueryTyped(false)\n setQuery('')\n selectable.clear()\n options.reset()\n triggerRef.current?.focus()\n },\n }\n },\n [options, selectable]\n )\n\n const getMenuProps = useCallback(\n function getMenuProps() {\n return {\n ref: focusTrap.containerRef,\n role: 'listbox',\n }\n },\n [focusTrap.containerRef]\n )\n\n const getOptionProps = useCallback(\n function getOptionProps({ option }: { option: Option }) {\n const { value, checked } = getSelectableOption(option)\n\n return {\n role: 'option',\n 'aria-selected': checked,\n id: String(value),\n onClick() {\n setQueryTyped(false)\n\n if (!multiple) {\n setQueryTyped(false)\n }\n toggleOption(option)\n\n return multiple\n },\n tabIndex: -1,\n }\n },\n [getSelectableOption, toggleOption, multiple]\n )\n\n const getCreatebleProps = useCallback(\n function getCreatebleProps() {\n return {\n onClick: function onClick() {\n async function asyncOnClick() {\n if (!isFunction(onCreate)) {\n return\n }\n\n const onCreateReturn = onCreate(query)\n\n let option\n if (onCreateReturn) {\n option = await onCreateReturn\n }\n\n options.fetch(query)\n\n if (option) {\n toggleOption(option)\n }\n }\n\n void asyncOnClick()\n\n return multiple\n },\n tabIndex: -1,\n }\n },\n [multiple, onCreate, query, options, toggleOption]\n )\n\n const isCreatable = useCallback(\n function isCreatable() {\n const findByLabel = (item: Option) =>\n getSelectableOption(item).label.toLocaleLowerCase() === query.toLocaleLowerCase()\n\n function isQueryEqualAnOption() {\n return !isNil(\n [...options.get(), ...Array.from(selectable.selected.values())].find(findByLabel)\n )\n }\n\n function getIsValidNewOption() {\n if (isFunction(isValidNewOption)) {\n return isValidNewOption(query) && !isQueryEqualAnOption()\n }\n\n return isValidNewOption\n }\n\n return isFunction(onCreate) && options.status === 'queried' && getIsValidNewOption()\n },\n [getSelectableOption, isValidNewOption, onCreate, options, query, selectable.selected]\n )\n\n useEffect(\n function onInit() {\n options.fetch('')\n },\n // we just want to load any initial options that a datasource may have available\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [datasources]\n )\n\n useEffect(\n function onDropdownToggle() {\n if (!props.autoFocus && !didMount) {\n return\n }\n if (dropdown.expanded) {\n focusTrap.activate()\n } else {\n focusTrap.deactivate()\n }\n },\n /**\n * We are interested in activating/deactivating our\n * focus trap when the dropdown changes its expanded state.\n */\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [dropdown.expanded]\n )\n\n useEffect(\n function updateOnSelectedChange() {\n if (!multiple) {\n setQuery(getDisplayValue(adapters, selectable.selected, multiple))\n }\n },\n [adapters, multiple, selectable.selected]\n )\n\n return {\n status: options.status,\n options: options.get(),\n value: getValue(selectable.selected, multiple),\n query,\n disabled,\n\n selectable,\n\n getMenuProps,\n getSelectableOption,\n getOption,\n getOptionProps,\n getTriggerProps,\n getClearProps,\n getDropdownProps,\n getCreatebleProps,\n isCreatable,\n createOptionPosition,\n }\n}\n\nexport default useSelect\n","import React from 'react'\n\n/**\n * A function that wraps a match into `mark` element to be highlighted.\n * @param label to be split\n * @param match to be found\n * @returns an element with marked match\n */\nexport default function highlightMatch(str?: string, match?: string): React.ReactNode {\n if (str == null || match == null) {\n return str\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-conversion -- the explicit coercion here ensures that we'll be dealing with strings even in vanilla JS code\n const index = String(str).toLowerCase().indexOf(String(match).toLowerCase())\n\n if (index === -1) {\n return str\n }\n\n const pre = str.slice(0, index)\n const mid = str.slice(index, index + match.length)\n const post = str.slice(index + match.length)\n\n return (\n <>\n {pre}\n <mark>{mid}</mark>\n {post}\n </>\n )\n}\n","import type { HTMLAttributes } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\nimport { getToken as token } from 'theming'\n\nimport highlightMatch from 'utils/toolset/highlightMatch'\n\nexport type HighlightMatchProps = {\n readonly text: string\n readonly match: string\n} & HTMLAttributes<HTMLSpanElement>\n\nconst HighlightMatchWrapper = styled.span`\n /* highlightMatch splits the label into separate HTML elements, thus we need\n to preserve white-spaces, otherwise the browser wouldn't render them. */\n white-space: pre;\n\n mark {\n color: inherit;\n font-weight: ${token('font-weight-bold')};\n\n background-color: ${token('color-transparent')};\n }\n`\n\nconst HighlightMatch = ({ text, match, ...props }: HighlightMatchProps) => {\n return <HighlightMatchWrapper {...props}>{highlightMatch(text, match)}</HighlightMatchWrapper>\n}\n\nexport default HighlightMatch\n","import React, { useContext } from 'react'\nimport styled from 'styled-components'\n\nimport { Checkbox } from 'components/Checkbox'\nimport { Dropdown } from 'components/Dropdown'\nimport { HighlightMatch } from 'components/HighlightMatch'\nimport { Icon as DefaultIcon } from 'components/Icon'\nimport { Group as DefaultGroup } from 'components/Layout'\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\n\nimport { SelectContext } from './Select.context'\n\nimport type { DropdownMenuItemProps } from 'components/Dropdown'\nimport type { SelectOptionProps } from './Select.types'\n\nconst Group = styled(DefaultGroup).attrs({\n as: 'span',\n})`\n /* placeholder */\n`\n\nconst Icon = styled(DefaultIcon)`\n color: ${token('select-selected-option-check-color')};\n`\n\nconst DefaultSelectOption = styled(Dropdown.Item)<DropdownMenuItemProps>`\n background: ${conditional({\n 'select-selected-option-background-color': whenProps({ 'aria-selected': true }),\n 'color-neutral-white': whenProps({ 'aria-selected': false }),\n })};\n`\n\nfunction SelectOption({ children, value, leading, trailing, ...rest }: SelectOptionProps) {\n const select =\n useContext(SelectContext) ||\n (() => {\n throw new Error('Options should be wrapped in a SelectContext')\n })()\n\n const type = select.selectable.type()\n const option = select.getOption(value) || {}\n const { checked, label } = select.getSelectableOption(option)\n\n function renderContent() {\n if (children) {\n return children\n }\n if (checked && type === 'multiple') {\n return label\n }\n\n return <HighlightMatch text={label} match={select.query} />\n }\n\n return (\n <DefaultSelectOption\n {...rest}\n {...select.getOptionProps({ option })}\n leading={\n type === 'multiple' ? (\n <Group align=\"center\" space=\"s\">\n <Checkbox scale=\"small\" defaultChecked={checked} />\n {leading}\n </Group>\n ) : (\n leading\n )\n }\n trailing={type === 'single' ? checked ? <Icon name=\"check\" /> : null : trailing}\n >\n {renderContent()}\n </DefaultSelectOption>\n )\n}\n\nexport default SelectOption\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport type { SelectEmptyProps } from './Select.types'\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n justify-content: center;\n\n box-sizing: border-box;\n margin: 0 ${token('space-s')};\n padding: ${token('space-s')};\n\n color: ${token('color-neutral')};\n\n font-size: 1em;\n line-height: ${token('font-height-3')};\n\n background: ${token('color-transparent')};\n`\n\nfunction SelectEmpty({ children, ...others }: SelectEmptyProps) {\n return <Wrapper {...others}>{children}</Wrapper>\n}\n\nexport default SelectEmpty\n","import React, { useContext } from 'react'\nimport { Dropdown } from 'components/Dropdown'\nimport { SelectContext } from './Select.context'\nimport type { SelectCreatableOptionProps } from './Select.types'\n\nfunction SelectCreatableOption({ children, ...rest }: SelectCreatableOptionProps) {\n const select =\n useContext(SelectContext) ||\n (() => {\n throw new Error('SelectCreatableOption should be wrapped in a SelectContext')\n })()\n\n return (\n <Dropdown.Item {...rest} {...select.getCreatebleProps()}>\n {children || `Add \"${select.query}\"`}\n </Dropdown.Item>\n )\n}\n\nexport default SelectCreatableOption\n","import type { Components, CreatableOptionType } from './Select.types'\nimport SelectCreatableOption from './SelectCreatableOption'\nimport SelectEmpty from './SelectEmpty'\nimport SelectOption from './SelectOption'\n\nconst defaultComponents = {\n Option: SelectOption,\n Empty: SelectEmpty,\n CreatableOption: SelectCreatableOption as CreatableOptionType,\n}\n\nexport function getComponents(components?: Components): Required<Components> {\n return { ...defaultComponents, ...components }\n}\n","import React, { forwardRef, type ReactNode } from 'react'\nimport styled from 'styled-components'\n\nimport { Dropdown, GenericDropdown } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { SelectableContext, SelectContext } from './Select.context'\nimport { Tag } from 'components/Tag'\nimport { Text } from 'components/Text'\nimport CloseButton from 'common/CloseButton'\nimport isEmpty from 'utils/toolset/isEmpty'\nimport omit from 'utils/toolset/omit'\nimport pluralize from 'utils/toolset/pluralize'\nimport SelectTrigger from './SelectTrigger'\nimport toArray from 'utils/toolset/toArray'\nimport useSelect from './useSelect'\nimport SelectOption from './SelectOption'\nimport SelectEmpty from './SelectEmpty'\nimport SelectCreatableOption from './SelectCreatableOption'\nimport { getComponents } from './components'\n\nimport type { DropdownMenuProps } from 'components/Dropdown'\nimport type {\n SelectProps,\n useSelectReturn,\n SelectStatus,\n Components,\n SelectableOption,\n} from './Select.types'\n\nconst OMITTED_PROPS = [\n 'id',\n 'name',\n 'datasources',\n 'onChange',\n 'onQueryChange',\n 'onCreate',\n 'options',\n 'value',\n]\n\nconst Loading = styled.span`\n display: inline-flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n width: 2em;\n\n height: 2em;\n padding: ${token('space-xs')};\n\n font-size: ${token('font-size-3')};\n`\n\nfunction getCommonClearButtonProps() {\n return {\n 'data-testid': 'select-trigger-clear',\n }\n}\n\nconst SelectMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(function SelectMenu(\n props: DropdownMenuProps,\n ref\n) {\n return <Dropdown.Menu ref={ref} {...props} role=\"listbox\" />\n})\n\nfunction ClearMultiple({ select }: { readonly select: useSelectReturn }) {\n const { onClick } = select.getClearProps()\n const total = toArray(select.value).length\n\n return (\n <div data-testid=\"select-trigger-clear-counter\">\n <Tag\n removable\n size=\"default\"\n variant=\"accent\"\n onRemove={onClick}\n title={`${total} selected option${pluralize(total)}`}\n getRemoveButtonProps={getCommonClearButtonProps}\n disabled={select.disabled}\n >\n {total}\n </Tag>\n </div>\n )\n}\n\nconst Divider = styled.hr`\n width: calc(100% - ${token('space-m')});\n height: 1px;\n margin: ${token('space-m')} ${token('space-s')};\n\n background-color: ${token('color-neutral-lighter')};\n border: 0;\n`\n\nconst DividerText = styled(Text)`\n position: absolute;\n top: ${token('space-s')};\n\n padding-right: ${token('space-xs')};\n padding-left: ${token('space-m')};\n\n background-color: ${token('color-neutral-white')};\n`\n\nfunction isQuerying(status: SelectStatus) {\n return ['pending-query', 'querying'].includes(status)\n}\n\ninterface SeparatorProps {\n readonly status: SelectStatus\n readonly after?: unknown[]\n readonly before?: unknown[]\n}\n\nfunction Separator({ status, after = [], before = [] }: SeparatorProps): ReactNode {\n if (!isQuerying(status)) {\n if (isEmpty(after) && !isEmpty(before)) {\n return <Divider />\n }\n if (isEmpty(after)) {\n return null\n }\n }\n\n return (\n <div style={{ position: 'relative' }}>\n <Divider />\n <DividerText variant=\"caption-bold\" color=\"color-neutral-light\">\n {isQuerying(status) ? 'Loading...' : `${after.length} option${pluralize(after.length)}`}\n </DividerText>\n </div>\n )\n}\n\nfunction renderOptionsSingle(select: useSelectReturn, components?: Components) {\n const { Option, Empty, CreatableOption } = getComponents(components)\n const isCreatable = select.isCreatable()\n\n if (isQuerying(select.status) && isEmpty(select.options)) {\n return <SelectEmpty>Loading...</SelectEmpty>\n }\n\n if (isEmpty(select.options)) {\n if (isCreatable) {\n return <CreatableOption />\n }\n\n return <Empty>No results found.</Empty>\n }\n\n return (\n <>\n {select.createOptionPosition === 'first' && isCreatable ? <CreatableOption /> : null}\n {select.options.map((option) => {\n const { value } = select.getSelectableOption(option)\n return <Option key={String(value)} value={value} />\n })}\n {select.createOptionPosition === 'last' && isCreatable ? <CreatableOption /> : null}\n </>\n )\n}\n\nfunction renderOptionsMultiple(select: useSelectReturn, components?: Components) {\n const { Option, Empty, CreatableOption } = getComponents(components)\n const isCreatable = select.isCreatable()\n\n const selectedOptions = Array.from(select.selectable.selected.values()).map((selectable) =>\n select.getSelectableOption(selectable)\n )\n\n const remainingOptions = select.options.reduce<SelectableOption[]>((remaining, selectable) => {\n const option = select.getSelectableOption(selectable)\n\n if (option.checked) {\n return remaining\n }\n\n return [...remaining, option]\n }, [])\n\n let remaining = (\n <>\n {select.createOptionPosition === 'first' && isCreatable ? <CreatableOption /> : null}\n {remainingOptions.map((option) => (\n <Option key={String(option.value)} value={option.value} />\n ))}\n {select.createOptionPosition === 'last' && isCreatable ? <CreatableOption /> : null}\n </>\n )\n\n if (!isQuerying(select.status) && isEmpty(remainingOptions)) {\n remaining = isCreatable ? <CreatableOption /> : <Empty>No more options.</Empty>\n }\n\n if (!isQuerying(select.status) && isEmpty(select.options)) {\n remaining = isCreatable ? <CreatableOption /> : <Empty>No results found.</Empty>\n }\n\n return (\n <>\n {selectedOptions.map((option) => (\n <Option key={String(option.value)} value={option.value} />\n ))}\n <Separator status={select.status} before={selectedOptions} after={remainingOptions} />\n {remaining}\n </>\n )\n}\n\nfunction Select(props: SelectProps) {\n const { multiple, placeholder, components, hideClear = false, ...others } = props\n\n const select = useSelect(props)\n\n function renderOptions() {\n if (multiple) {\n return renderOptionsMultiple(select, components)\n }\n\n return renderOptionsSingle(select, components)\n }\n\n function getTrailing() {\n if (isQuerying(select.status)) {\n return <Loading data-testid=\"select-trigger-loading\">&middot;&middot;&middot;</Loading>\n }\n\n if (!select.value) {\n return null\n }\n\n if (multiple) {\n return <ClearMultiple select={select} />\n }\n\n if (select.disabled || hideClear) {\n return null\n }\n\n return (\n <CloseButton\n size={12}\n {...getCommonClearButtonProps()}\n {...select.getClearProps()}\n type=\"button\"\n />\n )\n }\n\n return (\n <GenericDropdown {...omit(others, OMITTED_PROPS)} {...select.getDropdownProps()}>\n <SelectableContext.Provider value={select.selectable}>\n <SelectTrigger\n {...select.getTriggerProps()}\n trailing={getTrailing()}\n placeholder={placeholder}\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n />\n <SelectMenu {...select.getMenuProps()}>\n <SelectContext.Provider value={select}>{renderOptions()}</SelectContext.Provider>\n </SelectMenu>\n </SelectableContext.Provider>\n </GenericDropdown>\n )\n}\n\nSelect.Trigger = SelectTrigger\nSelect.Option = SelectOption\nSelect.Empty = SelectEmpty\nSelect.CreatableOption = SelectCreatableOption\n\nexport default Select\n","import { useCallback, useContext } from 'react'\n\nimport { SelectContext } from './Select.context'\nimport type { Option, useSelectExternalReturn } from './Select.types'\n\nexport function useSelectExternal(): useSelectExternalReturn {\n const select =\n useContext(SelectContext) ||\n (() => {\n throw new Error('useSelect should be wrapped in a SelectContext')\n })()\n\n const isChecked = useCallback(\n function isChecked(option: Option) {\n const { checked } = select.getSelectableOption(option)\n return checked\n },\n [select]\n )\n\n return {\n query: select.query,\n getOption: select.getOption,\n isChecked,\n }\n}\n","import React from 'react'\nimport type { PropsWithChildren } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { BaseLink } from 'components/Link'\n\nexport type LogoProps = PropsWithChildren<{\n readonly url: string\n readonly className?: string\n}>\n\nconst Container = styled.div`\n padding-right: ${token('space-l')};\n padding-left: ${token('space-l')};\n`\n\nfunction Logo({ className, url, children }: LogoProps) {\n return (\n <Container className={className}>\n <BaseLink href={url}>{children}</BaseLink>\n </Container>\n )\n}\n\nexport default styled(Logo)<LogoProps>({})\n","import type { RefObject } from 'react'\nimport { useEffect, useLayoutEffect, useReducer, useState } from 'react'\nimport type { CSSProperties } from 'styled-components'\n\nimport { useDidMount } from 'hooks/useDidMount'\n\nfunction updateHeight(set: (value: number) => void, el: HTMLElement | null) {\n if (el) {\n const { height } = el.getBoundingClientRect()\n set(height)\n }\n}\n\nexport interface HeightExpansionToggler {\n expanded: boolean\n toggle: () => void\n height: CSSProperties['height']\n}\n\n/**\n * A React Hook to help you expand or collapse an element by\n * checking its total height and controlling a boolean flag\n * @param targetElRef - Ref of the wrapper element\n */\nfunction useHeightExpansionToggler(targetElRef: RefObject<HTMLElement>): HeightExpansionToggler {\n const [state, toggleState] = useReducer((prevState) => !prevState, false)\n const [totalHeight, setTotalHeight] = useState<CSSProperties['height']>(0)\n\n useLayoutEffect(() => {\n updateHeight(setTotalHeight, targetElRef.current)\n }, [targetElRef])\n\n useEffect(() => {\n const observer = new MutationObserver(() => {\n updateHeight(setTotalHeight, targetElRef.current)\n })\n\n if (targetElRef.current) {\n observer.observe(targetElRef.current, { childList: true })\n }\n\n return () => {\n observer.disconnect()\n }\n }, [targetElRef])\n\n const mounted = useDidMount()\n const finalHeight = !mounted ? 'auto' : state ? totalHeight : 0\n\n return {\n expanded: state,\n toggle: toggleState,\n height: finalHeight,\n }\n}\n\nexport default useHeightExpansionToggler\n","import React from 'react'\nimport type { ReactNode, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport focusable from 'styles/focusable'\nimport transition from 'styles/transition'\nimport { getToken as token } from 'theming'\nimport rem from 'utils/toolset/rem'\nimport type { MenuLinkProps } from './MenuLink'\n\nexport type MenuBaseItemProps = HTMLAttributes<HTMLElement> & {\n readonly label: string\n readonly leading?: ReactNode\n readonly trailing?: ReactNode\n readonly url?: string\n readonly subItems?: MenuLinkProps[]\n}\n\nconst StyledMenuItem = styled.button`\n ${transition({ duration: '0.25s' })};\n\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n padding: ${token('space-s')} 0;\n padding-right: ${rem('12px')};\n padding-left: ${token('space-l')};\n\n color: ${token('color-neutral-white')};\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('font-size-4')};\n line-height: ${token('font-height-3')};\n\n cursor: pointer;\n\n ${focusable`\n color: ${token('side-navigation-menu-item-color--focus')};\n `}\n`\n\nconst Leading = styled.div`\n display: flex;\n align-items: center;\n padding-right: ${token('space-s')};\n`\n\nconst Flex = styled.div`\n display: flex;\n`\n\nfunction MenuBaseItem({ label, leading, trailing, ...props }: MenuBaseItemProps) {\n return (\n <StyledMenuItem {...props}>\n <Flex>\n {leading && <Leading>{leading}</Leading>}\n {label}\n </Flex>\n {trailing && trailing}\n </StyledMenuItem>\n )\n}\n\nexport default MenuBaseItem\n","import React from 'react'\nimport type { ReactNode } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport hoverable from 'styles/hoverable'\nimport MenuBaseItem from './MenuBaseItem'\n\nconst StyledMenuItem = styled(({ url, ...props }) => (\n <MenuBaseItem as={url ? 'a' : 'button'} {...props} />\n))`\n ${hoverable`\n color: ${token('side-navigation-menu-link-color--hover')};\n `}\n\n ${({ active }) =>\n active\n ? css`\n background-color: ${token('side-navigation-menu-link-background-color--active')};\n box-shadow: inset ${token('space-xs')} 0\n ${token('side-navigation-menu-link-box-shadow-color--active')};\n `\n : ''}\n`\n\nexport type MenuLinkProps = React.HTMLAttributes<HTMLAnchorElement> & {\n readonly label: string\n readonly leading?: ReactNode\n readonly trailing?: ReactNode\n readonly url?: string\n}\n\nfunction MenuLink({ url, ...props }: MenuLinkProps) {\n return <StyledMenuItem href={url} url={url} {...props} role=\"menuitem\" />\n}\n\nexport default styled(MenuLink)({})\n","import React, { useRef } from 'react'\nimport type { PropsWithChildren, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\nimport type { CSSProperties } from 'styled-components'\n\nimport { Icon } from 'components/Icon'\nimport { conditional, whenProps, prop } from 'tools/index'\nimport { getToken as token } from 'theming'\nimport transition from 'styles/transition'\nimport { useHeightExpansionToggler } from 'hooks/useHeightExpansionToggler'\n\nimport MenuLink from './MenuLink'\nimport MenuBaseItem from './MenuBaseItem'\n\ninterface IExpandable {\n $expanded?: boolean\n $height?: CSSProperties['height']\n}\n\nconst IconWrapper = styled.div`\n display: flex;\n align-items: center;\n margin-left: ${token('space-s')};\n`\n\nconst StyledIcon = styled(Icon)<IExpandable>`\n color: ${token('color-neutral')};\n\n transform: rotate(\n ${conditional({\n '0deg': whenProps({ $expanded: true }),\n '-90deg': whenProps({ $expanded: false }),\n })}\n );\n`\n\nconst ExpandableItems = styled.div<IExpandable>`\n overflow: hidden;\n ${transition({ property: 'height' })}\n\n height: ${prop('$height', 0)}px;\n\n ${MenuLink} {\n padding-left: ${token('space-xl')};\n }\n`\n\nconst ItemsWrapper = styled.div<IExpandable>`\n ${transition()}\n\n opacity: ${conditional({\n 0: whenProps({ $expanded: false }),\n 1: whenProps({ $expanded: true }),\n })};\n\n transform: translateY(\n ${conditional({\n '-10%': whenProps({ $expanded: false }),\n '0%': whenProps({ $expanded: true }),\n })}\n );\n`\n\nexport type MenuExpandableProps = HTMLAttributes<HTMLDivElement> &\n PropsWithChildren<{\n readonly label: string\n }>\n\nfunction MenuExpandable({ label, children, ...props }: MenuExpandableProps) {\n const expandableItemsRef = useRef<HTMLDivElement>(null)\n const { expanded, toggle, height } = useHeightExpansionToggler(expandableItemsRef)\n\n return (\n <div {...props} role=\"none\">\n <MenuBaseItem\n onClick={toggle}\n label={label}\n trailing={\n <IconWrapper>\n <StyledIcon $expanded={expanded} name=\"chevron-down\" size={16} />\n </IconWrapper>\n }\n aria-haspopup=\"true\"\n aria-expanded={expanded}\n />\n <ExpandableItems $height={height} role=\"menu\">\n <ItemsWrapper $expanded={expanded} ref={expandableItemsRef} role=\"presentation\">\n <>\n {React.Children.map(children, (child) => {\n if (!child) {\n return null\n }\n\n if (typeof child === 'object' && 'type' in child) {\n return React.cloneElement(child, {\n key: label,\n tabIndex: expanded ? 0 : -1,\n ariaHidden: !expanded,\n })\n }\n\n return child\n })}\n </>\n </ItemsWrapper>\n </ExpandableItems>\n </div>\n )\n}\n\nexport default MenuExpandable\n","import type { StyledComponent } from 'styled-components'\n\n/**\n * Helper that returns the plural form if count is different than 1, otherwise the singular one.\n * @example\n * const StyledParent = styled.div``\n * styledCompounds(StyledParent, { Child: (props) => <div /> })\n * <StyledParent.Child />\n * @param StyledComponent - Parent instance of a styled-component\n * @param compounds - Object with compound components\n * @returns Parent component with type-safe accessable compound components\n */\nexport function styledCompounds<\n A extends StyledComponent<React.ComponentType, Record<string, unknown>>,\n B extends Record<string, unknown>,\n>(Parent: A, compounds: B): A & B {\n for (const key of Object.keys(compounds)) {\n // @ts-expect-error StyledComponent is read-only\n Parent[key] = compounds[key]\n }\n return Parent as A & B\n}\n","import type { PropsWithChildren } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nimport MenuExpandable from './MenuExpandable'\nimport type { MenuExpandableProps } from './MenuExpandable'\nimport MenuLink from './MenuLink'\nimport type { MenuLinkProps } from './MenuLink'\nimport useID from 'hooks/useID'\nimport { styledCompounds } from 'utils/toolset/styledCompounds'\n\nconst MenuTitle = styled.div`\n padding: ${token('space-s')} 0;\n padding-left: ${token('space-l')};\n\n color: ${token('color-neutral')};\n\n font-weight: ${token('side-navigation-menu-title-font-weight')};\n font-size: ${token('side-navigation-menu-title-font-size')};\n line-height: ${token('side-navigation-menu-title-line-height')};\n text-transform: uppercase;\n`\n\nexport interface MenuProps extends React.HTMLAttributes<HTMLDivElement> {\n readonly label?: string\n}\n\nfunction Menu({ label, children, ...props }: MenuProps) {\n const menuId = useID()\n\n return (\n <div role=\"menubar\" aria-labelledby={menuId} {...props}>\n {label && <MenuTitle id={menuId}>{label}</MenuTitle>}\n\n {children}\n </div>\n )\n}\n\ntype MenuItemProps = { readonly active?: boolean } & PropsWithChildren<\n MenuLinkProps & MenuExpandableProps\n>\n\nfunction MenuItem(props: MenuItemProps) {\n if (props.children) {\n return <MenuExpandable {...props} />\n }\n\n return <MenuLink {...props} />\n}\n\nconst StyledMenu = styled(Menu)({})\n\nexport default styledCompounds(StyledMenu, { Item: MenuItem, SubItem: MenuLink })\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nconst Line = styled.hr`\n margin: ${token('side-navigation-component-margin-top')} 0;\n\n color: ${token('side-navigation-separator-color')};\n`\n\nexport interface SeparatorProps {\n readonly className?: string\n}\n\nfunction Separator(props: SeparatorProps) {\n return <Line {...props} role=\"separator\" />\n}\n\nexport default Separator\n","import CloseButton from 'common/CloseButton'\nimport type { CloseButtonProps } from 'common/CloseButton'\nimport type { ReactNode } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\n\nimport { Logo } from './Logo'\nimport { Menu } from './Menu'\nimport { Separator } from './Separator'\n\nconst Container = styled.aside`\n z-index: ${token('z-index-overlay')};\n /* this was needed to force the side-navigation-width inside flex containers */\n flex: 0 0 ${token('side-navigation-width')};\n width: ${token('side-navigation-width')};\n min-height: 100vh;\n padding-top: ${token('space-l')};\n padding-bottom: ${token('space-l')};\n overflow: auto;\n\n background-color: ${token('side-navigation-background-color')};\n\n ${Logo} + * {\n margin-top: ${token('space-xl')};\n }\n\n ${Menu} + ${Menu} {\n margin-top: ${token('space-m')};\n }\n`\n\nexport interface SideNavigationProps {\n readonly className?: string\n readonly children: ReactNode\n}\n\nfunction SideNavigation({ className, children }: SideNavigationProps) {\n return <Container className={className}>{children}</Container>\n}\n\nSideNavigation.Logo = Logo\nSideNavigation.Menu = Menu\nSideNavigation.Separator = Separator\nSideNavigation.CloseButton = styled(CloseButton)<CloseButtonProps>({})\n\nexport default SideNavigation\n","import { useState, useEffect } from 'react'\n\nfunction useWindowSize() {\n const [windowSize, setWindowSize] = useState<{\n width: number\n height: number\n }>({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n\n useEffect(() => {\n function handleResize() {\n setWindowSize({\n width: window.innerWidth,\n height: window.innerHeight,\n })\n }\n\n window.addEventListener('resize', handleResize)\n\n return () => {\n window.removeEventListener('resize', handleResize)\n }\n }, [])\n return windowSize\n}\n\nexport default useWindowSize\n","import type { CustomTheme } from 'theming'\nimport { getToken as token } from 'theming'\nimport { useTheme } from 'styled-components'\nimport useDialog from 'components/Dialog/useDialog'\nimport { useMemo } from 'react'\nimport useWindowResize from 'hooks/useWindowResize'\nimport { BASE_PIXELS } from 'utils/toolset/rem'\n\nexport interface useSideNavigationProps {\n open: boolean\n show: () => void\n hide: () => void\n toggle: () => void\n}\n\nfunction transformInPixels(value: string): number {\n if (value.includes('rem')) {\n return Number.parseFloat(value) * BASE_PIXELS\n }\n\n return Number.parseFloat(value)\n}\n\nfunction useSideNavigation(): useSideNavigationProps {\n const size = useWindowResize()\n const theme = useTheme() as CustomTheme\n\n const shouldOpen = useMemo(() => {\n const breakpoint = token('side-navigation-collapsing-breakpoint', { theme }) as string\n const breakpointInPixels = transformInPixels(breakpoint)\n return size.width > breakpointInPixels\n }, [size])\n\n return useDialog({ open: shouldOpen })\n}\n\nexport default useSideNavigation\n","import type { PropsWithChildren, ReactNode } from 'react'\nimport React, { useEffect, useRef, useState } from 'react'\nimport ReactDOM from 'react-dom'\nimport styled from 'styled-components'\n\nimport transition from 'styles/transition'\nimport conditional, { whenProps } from 'tools/conditional'\nimport { getToken as token } from 'theming'\nimport DefaultCloseButton from 'common/CloseButton'\n\nexport interface DrawerProps {\n children?: ReactNode\n className?: string\n open: boolean\n onClose?: () => void\n onClickOutside?: () => void\n}\n\nconst StyledAside = styled.aside<Pick<DrawerProps, 'open'>>`\n position: fixed;\n top: 0;\n left: 0;\n\n z-index: ${token('z-index-overlay')};\n\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n\n background: ${token('modal-overlay-background')};\n\n visibility: ${conditional({\n visible: whenProps({ open: true }),\n hidden: whenProps({ open: false }),\n })};\n`\n\nconst CloseButton = styled(DefaultCloseButton)`\n position: absolute;\n top: 32px;\n left: -48px;\n\n background-color: ${token('color-neutral-lighter')};\n`\n\nconst StyledSection = styled.section<Pick<DrawerProps, 'open'>>`\n position: fixed;\n top: 0;\n right: 0;\n\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 40vw;\n height: 100%;\n\n background-color: ${token('color-neutral-lightest')};\n border-radius: ${token('border-radius-s')};\n box-shadow: ${token('shadow-modal')};\n\n transform: ${conditional({\n 'translateX(100%)': whenProps({\n open: false,\n }),\n 'translateX(0px)': whenProps({\n open: true,\n }),\n })};\n\n ${transition({\n property: 'transform',\n duration: '200ms',\n })}\n`\n\nconst StyledHeader = styled.header`\n display: flex;\n align-items: center;\n justify-content: center;\n\n padding: ${token('space-xl')};\n\n color: ${token('color-neutral-darker')};\n font-weight: ${token('font-weight-bold')};\n font-size: ${token('font-size-2')};\n text-align: center;\n\n border-bottom-color: ${token('color-neutral-light')};\n border-bottom-width: 1px;\n border-bottom-style: solid;\n`\n\nconst StyledBody = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n\n padding: ${token('space-xl')};\n\n overflow: auto;\n`\n\nconst StyledFooter = styled.footer`\n display: flex;\n\n padding: ${token('space-xl')};\n\n border-top-color: ${token('color-neutral-light')};\n border-top-width: 1px;\n border-top-style: solid;\n`\n\nexport interface DrawerHeaderProps {\n readonly className?: string\n}\n\nfunction DrawerHeader({ children, className, ...others }: PropsWithChildren<DrawerHeaderProps>) {\n return (\n <StyledHeader {...others} className={className}>\n {children}\n </StyledHeader>\n )\n}\n\nexport interface DrawerBodyProps {\n className?: string\n}\n\nfunction DrawerBody({ children, className, ...others }: PropsWithChildren<DrawerHeaderProps>) {\n return (\n <StyledBody {...others} className={className}>\n {children}\n </StyledBody>\n )\n}\n\nexport interface DrawerFooterProps {\n readonly className?: string\n}\n\nfunction DrawerFooter({ children, className, ...others }: PropsWithChildren<DrawerFooterProps>) {\n return (\n <StyledFooter {...others} className={className}>\n {children}\n </StyledFooter>\n )\n}\n\nfunction Drawer({ className, children, open, onClose, onClickOutside, ...others }: DrawerProps) {\n const [invisible, setInvisible] = useState(!open)\n const ref = useRef<HTMLElement>(null)\n\n const handleTransitionEnd = () => {\n if (!open) {\n setInvisible(true)\n }\n }\n\n useEffect(() => {\n if (open) {\n setInvisible(false)\n }\n }, [open])\n\n useEffect(() => {\n const currentRef = ref.current\n\n if (currentRef && onClickOutside) {\n const handleClick = (event: MouseEvent) => {\n const hasClickedOutside = currentRef.isSameNode(event.target as Element)\n\n if (hasClickedOutside) {\n onClickOutside()\n }\n }\n\n currentRef.addEventListener('mouseup', handleClick)\n\n return () => {\n currentRef.removeEventListener('mouseup', handleClick)\n }\n }\n }, [onClickOutside])\n\n return ReactDOM.createPortal(\n <StyledAside open={!invisible} ref={ref}>\n <StyledSection\n {...others}\n className={className}\n open={open}\n onTransitionEnd={handleTransitionEnd}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label=\"drawer\"\n >\n {Boolean(onClose) && <CloseButton onClick={onClose} aria-label=\"close\" />}\n {children}\n </StyledSection>\n </StyledAside>,\n document.body\n )\n}\n\nDrawer.Header = DrawerHeader\nDrawer.Body = DrawerBody\nDrawer.Footer = DrawerFooter\n\nexport default Drawer\n","import React, { useCallback, useState, createContext, useContext } from 'react'\nimport type { PropsWithChildren } from 'react'\n\nimport { createSelectable } from 'hooks/useSelectable'\nimport type { Selectable, SelectableState, SelectableKeyType } from 'hooks/useSelectable'\nimport type { useSelectableProps } from 'hooks/useSelectable/useSelectable.types'\n\nexport type TableSelectableRow = Selectable & {\n value?: string | number | boolean\n}\n\nexport type TableSelectionSelectable<T extends Selectable = TableSelectableRow> = Omit<\n useSelectableProps<T>,\n 'onChange'\n> & {\n onChange: (selected: T[]) => void\n}\n\nexport type TableSelectionConfig<T extends Selectable = TableSelectableRow> =\n | boolean\n | Partial<TableSelectionSelectable<T>>\n\nexport interface TableSelectionCore<T extends Selectable = TableSelectableRow> {\n selected?: SelectableState<T>\n config: TableSelectionSelectable<T>\n allRowsAreSelected: boolean\n toggle: (key: T) => void\n toggleAll: () => void\n clear: () => void\n register: (key?: T) => void\n}\n\nfunction getSelectableProps<T extends Selectable = TableSelectableRow>(\n config?: TableSelectionConfig<T>\n): TableSelectionSelectable<T> {\n const defaults: TableSelectionSelectable<T> = {\n multiple: true,\n selected: [],\n onChange() {},\n adapters: {\n generic: {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n getKey: (row) => row.value as string,\n },\n },\n }\n\n if (!config || config === true) {\n return defaults\n }\n\n return {\n ...defaults,\n ...config,\n }\n}\n\nexport function useTableSelectionCore<T extends Selectable>(\n config?: TableSelectionConfig<T>\n): TableSelectionCore<T> {\n const { useSelectable } = createSelectable<T>()\n\n const [registered, setRegistered] = useState<T[]>([])\n\n const selectableProps = getSelectableProps(config)\n\n const { selected, toggle, select, unselect, clear } = useSelectable({\n ...selectableProps,\n onChange(value) {\n selectableProps.onChange(value ? [...value.values()] : [])\n },\n })\n\n const allRowsAreSelected = selected.size === registered.length\n\n const getKey = useCallback(\n (row: T): SelectableKeyType => {\n const { adapters } = selectableProps\n\n const adapter = adapters?.[row._type || 'generic']\n const key = adapter?.getKey(row) ?? ''\n\n return key\n },\n [selectableProps]\n )\n\n const register = useCallback(\n (row?: T) => {\n if (!row) {\n return\n }\n\n const key = getKey(row)\n\n setRegistered((prev) => {\n const alreadyRegistered = prev.some((prevRow) => getKey(prevRow) === key)\n\n if (alreadyRegistered) {\n return prev\n }\n\n return [...prev, row]\n })\n },\n [getKey]\n )\n\n function toggleAll() {\n if (allRowsAreSelected) {\n for (const row of registered) {\n const key = getKey(row)\n\n if (!key) {\n continue\n }\n\n unselect(key)\n }\n } else {\n for (const row of registered) {\n select(row)\n }\n }\n }\n\n return {\n allRowsAreSelected,\n config: selectableProps,\n selected,\n toggle,\n toggleAll,\n clear,\n register,\n }\n}\n\nexport const TableSelectionContext = createContext<TableSelectionCore>({\n selected: undefined,\n config: {} as TableSelectionSelectable,\n allRowsAreSelected: false,\n toggle() {},\n toggleAll() {},\n clear() {},\n register() {},\n})\n\ntype TableSelectionProviderProps = PropsWithChildren<{\n readonly selection?: TableSelectionConfig\n}>\n\nexport function TableSelectionProvider({ children, selection }: TableSelectionProviderProps) {\n const selectionCore = useTableSelectionCore(selection)\n\n return (\n <TableSelectionContext.Provider value={selectionCore}>\n {children}\n </TableSelectionContext.Provider>\n )\n}\n\nexport function useTableSelection<\n T extends Selectable = TableSelectableRow,\n>(): TableSelectionCore<T> {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return useContext(TableSelectionContext)\n}\n\ninterface TableSelectionHook<T extends Selectable = TableSelectableRow> {\n values: T[]\n clear: TableSelectionCore<T>['clear']\n}\n\nexport function useSelection<T extends Selectable = TableSelectableRow>(): TableSelectionHook<T> {\n const { selected, clear } = useTableSelection<T>()\n\n return {\n values: selected ? [...selected.values()] : [],\n clear,\n }\n}\n\nexport function isCellSelected<T extends Selectable>(\n value: T,\n selectedRows: SelectableState<T>,\n config: TableSelectionSelectable<T>\n): boolean {\n const { adapters } = config\n\n const adapter = adapters?.[value._type || 'generic']\n const key = adapter?.getKey(value)\n\n if (!key) {\n return false\n }\n\n return selectedRows.has(key)\n}\n\nexport function useIsCellSelected(value?: Selectable): boolean {\n const { selected, config } = useTableSelection<Selectable>()\n\n if (!value || !selected) {\n return false\n }\n\n return isCellSelected(value, selected, config)\n}\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport { Box as DefaultBox } from 'components/Layout'\nimport type { SortDirection } from './useSortBy.types'\n\nimport type { BoxProps } from 'components/Layout/Box'\n\ninterface TableSortHandleProps extends BoxProps {\n readonly order?: SortDirection | null\n}\n\nconst Box = styled(DefaultBox)`\n display: inline-flex;\n flex-flow: row nowrap;\n align-items: center;\n\n margin-left: ${token('space-xs')};\n`\n\nfunction TableSortHandle({ order, ...rest }: TableSortHandleProps) {\n return (\n <Box {...rest} padding=\"none\">\n <Icon name={order != null ? `sort-${order}` : 'sort'} width=\"0.75em\" height=\"0.85em\" />\n </Box>\n )\n}\n\nexport default TableSortHandle\n","import React, { Children, Fragment, isValidElement, useEffect, useState } from 'react'\nimport styled, { css } from 'styled-components'\nimport type { ReactNode } from 'react'\nimport { isFunction } from '@loadsmart/utils-function'\n\nimport { getToken as token } from 'theming'\nimport { conditional, whenProps, prop } from 'tools/index'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport { Checkbox } from 'components/Checkbox'\nimport { Radio } from 'components/Radio'\nimport { Link } from 'components/Link'\nimport { Text } from 'components/Text'\nimport { Dropdown } from 'components/Dropdown'\nimport { Layout } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport { Children as InternalButton } from 'components/Button/Button'\n\nimport {\n isCellSelected,\n TableSelectionProvider,\n useIsCellSelected,\n useSelection,\n useTableSelection,\n type TableSelectableRow,\n} from './Selection'\nimport TableSortHandle from './TableSortHandle'\n\nimport type {\n TableProps,\n TableSectionProps,\n TableRowProps,\n TableCellProps,\n TableCaptionProps,\n TableSelectionProps,\n SelectionCellProps,\n TablePickerItemProps,\n TablePickerProps,\n ExpandableTableRowProps,\n} from './Table.types'\n\nconst StyledTableBody = styled.tbody`\n /* placeholder */\n`\n\nconst StyledTableFoot = styled.tfoot`\n box-shadow: 0 -1px 0 ${token('color-neutral')};\n`\n\nconst StyledTableCaption = styled.caption<{ $position?: 'top' | 'bottom' }>`\n ${conditional({\n ['border-bottom']: whenProps([{ $position: ['top', undefined] }]),\n ['border-top']: whenProps({ $position: 'bottom' }),\n })}: solid 1px ${token('color-neutral-lighter')};\n\n ${conditional({\n ['margin-bottom']: whenProps([{ $position: ['top', undefined] }]),\n ['margin-top']: whenProps({ $position: 'bottom' }),\n })}: ${token('space-m')};\n padding: ${token('space-m')} ${token('space-s')};\n\n text-align: left;\n\n caption-side: ${prop('$position', 'top')};\n background-color: ${token('color-neutral-white')};\n`\n\nconst StyledCell = css<{ alignment?: string }>`\n color: ${token('color-neutral-darker')};\n text-align: ${prop('alignment', 'left')};\n vertical-align: middle;\n`\n\nconst StyledTableCell = styled.td<{ alignment?: string; format?: string }>`\n ${StyledCell}\n\n font-family: ${conditional({\n 'font-family-monospace': whenProps({ format: ['number', 'currency'] }),\n 'font-family-default': whenProps({ format: 'default' }),\n })};\n`\n\nconst StyledTableHeadCell = styled.th<{\n alignment?: string\n clickable: boolean\n}>`\n ${StyledCell}\n\n font-family: ${token('font-family-default')};\n\n font-weight: ${token('font-weight-bold')};\n\n text-transform: capitalize;\n\n cursor: ${conditional({\n pointer: whenProps({ clickable: true }),\n normal: whenProps({ clickable: false }),\n })};\n`\n\nconst StyledTableHead = styled.thead`\n border: 1px solid ${token('color-neutral-lighter')};\n\n ${StyledTableCell} {\n padding: ${token('space-s')};\n\n font-weight: ${token('font-weight-bold')};\n text-transform: capitalize;\n }\n`\n\nconst StyledTableRow = styled.tr<{ selected: boolean; isExpanded: boolean }>`\n ${StyledTableHead} > & {\n background-color: ${token('color-neutral-lightest')};\n }\n\n ${StyledTableFoot} > & {\n background-color: ${token('color-neutral-lightest')};\n }\n\n background-color: ${conditional({\n 'table-row-selected-color': whenProps({ selected: true }),\n 'color-neutral-white': whenProps({ selected: false }),\n })};\n ${hoverable`\n background-color: ${conditional({\n 'table-row-selected-color': whenProps({ selected: true }),\n })} !important;\n `}\n\n border-color: ${token('color-neutral-lighter')};\n border-width: 1px;\n border-top-style: solid;\n border-right-style: solid;\n border-left-style: solid;\n border-bottom-style: ${conditional({\n solid: whenProps({ isExpanded: false }),\n hidden: whenProps({ isExpanded: true }),\n })};\n\n box-shadow: ${conditional({\n '0px 3px 3px 0px #C1CED9': whenProps({ isExpanded: true }),\n none: whenProps({ isExpanded: false }),\n })};\n\n ${StyledTableBody} > & {\n ${hoverable`\n background-color: ${token('color-neutral-lighter')};\n `}\n\n ${focusable`\n box-shadow: inset ${token('shadow-glow-primary')};\n `}\n }\n`\n\nconst StyledExpandableContentRow = styled.tr`\n border-color: ${token('color-neutral-lighter')};\n border-width: 1px;\n border-top-style: hidden;\n border-right-style: solid;\n border-left-style: solid;\n border-bottom-style: solid;\n`\n\nconst StyledTable = styled.table<{ scale?: string }>`\n width: 100%;\n\n white-space: nowrap;\n\n background-color: ${token('color-neutral-lightest')};\n\n border-collapse: collapse;\n\n ${StyledTableBody} ${StyledTableRow} {\n height: ${conditional({\n '24px': whenProps({ scale: 'small' }),\n '48px': whenProps({ scale: 'default' }),\n '80px': whenProps({ scale: 'large' }),\n })};\n }\n\n ${StyledTableHeadCell},\n ${StyledTableCell} {\n padding: ${conditional({\n 'space-xs': whenProps({ scale: 'small' }),\n 'space-s': whenProps({ scale: ['default', 'large'] }),\n })};\n\n font-size: ${conditional({\n 'font-size-5': whenProps({ scale: 'small' }),\n 'font-size-4': whenProps({ scale: ['default', 'large'] }),\n })};\n }\n`\n\nconst RotatableIcon = styled(Icon)<{ $rotate: boolean }>`\n ${conditional({\n 'transform: rotate(90deg);': whenProps({ $rotate: true }),\n })}\n`\n\nfunction Table<T extends TableSelectableRow>({\n children,\n selection,\n scale = 'default',\n ...others\n}: TableProps<T>) {\n return (\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n <TableSelectionProvider selection={selection}>\n <StyledTable scale={scale} {...others}>\n {children}\n </StyledTable>\n </TableSelectionProvider>\n )\n}\n\nconst TableCaptionInner = styled.div<{ $height?: number }>`\n display: flex;\n align-items: center;\n justify-content: space-between;\n min-height: ${prop('$height', 36)}px;\n`\n\nfunction TableCaption({ children, position, height }: TableCaptionProps) {\n return (\n <StyledTableCaption $position={position}>\n <TableCaptionInner $height={height}>{children}</TableCaptionInner>\n </StyledTableCaption>\n )\n}\n\nfunction TableHead({ children, ...others }: TableSectionProps) {\n return <StyledTableHead {...others}>{children}</StyledTableHead>\n}\n\nfunction TableBody({ children, ...others }: TableSectionProps) {\n return <StyledTableBody {...others}>{children}</StyledTableBody>\n}\n\nfunction TableCell({\n children,\n alignment = 'left',\n format = 'default',\n ...others\n}: TableCellProps) {\n return (\n <StyledTableCell alignment={alignment} format={format} {...others}>\n {children}\n </StyledTableCell>\n )\n}\n\nfunction SelectionCell<T extends TableSelectableRow>({ value, ...props }: SelectionCellProps<T>) {\n const { toggle, register, config } = useTableSelection()\n\n const selected = useIsCellSelected(value)\n\n const action = () => {\n toggle(value as T)\n }\n\n useEffect(() => {\n register(value)\n }, [value, register])\n\n if (props.children) {\n return (\n <TableCell>\n {props.children({\n selected,\n toggle: action,\n })}\n </TableCell>\n )\n }\n\n const Input = config.multiple ? Checkbox : Radio\n\n return (\n <TableCell {...props}>\n {value ? <Input checked={selected} scale=\"small\" onChange={action} /> : null}\n </TableCell>\n )\n}\n\nfunction SelectionHeadCell<T extends TableSelectableRow>({\n children,\n ...props\n}: SelectionCellProps<T>) {\n const { allRowsAreSelected, toggleAll, config } = useTableSelection()\n\n const selected = allRowsAreSelected\n const action = () => {\n toggleAll()\n }\n\n if (children) {\n return <TableHeadCell {...props}>{children({ selected, toggle: action })}</TableHeadCell>\n }\n\n const Input = config.multiple ? Checkbox : Fragment\n\n return (\n <TableHeadCell {...props}>\n <Input checked={selected} scale=\"small\" onChange={action} />\n </TableHeadCell>\n )\n}\n\nfunction TableRow({ children, ...others }: TableRowProps) {\n const selected = useIsRowSelected(children)\n\n return (\n <StyledTableRow {...others} selected={selected} isExpanded={false}>\n {children}\n </StyledTableRow>\n )\n}\n\nfunction ExpandableTableRow({\n expandableContent,\n expanded,\n leading: propsLeading,\n children,\n onExpandedChange,\n initialExpanded = false,\n ...others\n}: ExpandableTableRowProps) {\n const [openState, setOpenState] = useState(initialExpanded)\n\n const selected = useIsRowSelected(children)\n\n const open = expanded ?? openState\n const isExpanded = Boolean(open && expandableContent)\n const colSpan = Array.isArray(children) ? children.length + 1 : 1\n\n let leading: ReactNode = <RotatableIcon name=\"caret-right\" $rotate={open} />\n if (propsLeading) {\n leading = isFunction(propsLeading) ? propsLeading(open) : propsLeading\n }\n\n const toggle = () => {\n if (!expandableContent) {\n return\n }\n\n onExpandedChange?.(!open)\n setOpenState(!open)\n }\n\n return (\n <>\n <StyledTableRow {...others} onClick={toggle} isExpanded={isExpanded} selected={selected}>\n <TableCell>{expandableContent && leading}</TableCell>\n {children}\n </StyledTableRow>\n {isExpanded && (\n <StyledExpandableContentRow>\n <StyledTableCell colSpan={colSpan}>{expandableContent}</StyledTableCell>\n </StyledExpandableContentRow>\n )}\n </>\n )\n}\n\nfunction TableHeadCell({ alignment = 'left', children, onClick, ...others }: TableCellProps) {\n return (\n <StyledTableHeadCell\n clickable={onClick != null}\n alignment={alignment}\n onClick={onClick}\n {...others}\n >\n <Layout.Group space=\"xs\" align=\"center\">\n {children}\n </Layout.Group>\n </StyledTableHeadCell>\n )\n}\n\nconst ActionsWrapper = styled.div`\n display: flex;\n gap: ${token('space-s')};\n margin-left: auto;\n`\n\nfunction TableSelectionActions({ buttons, children, ...others }: TableSelectionProps) {\n const { values, clear } = useSelection()\n\n return (\n <ActionsWrapper {...others}>\n {values.length > 0 ? (\n <>\n {buttons.map((Action, i) => (\n <Action key={i} values={values} />\n ))}\n <Link\n onClick={(e) => {\n e.preventDefault()\n clear()\n }}\n >\n <Text variant=\"link\">CANCEL</Text>\n </Link>\n </>\n ) : (\n children\n )}\n </ActionsWrapper>\n )\n}\n\nconst StyledPickerTrigger = styled(Dropdown.Trigger.Button)`\n padding: 0;\n\n ${InternalButton} {\n margin: ${token('space-2xs')};\n }\n`\n\nfunction TablePickerItem<T>({ option, checked, children, ...props }: TablePickerItemProps<T>) {\n return (\n <Dropdown.Item\n leading={\n checked ? (\n <Icon name=\"check\" size=\"16\" color=\"neutral-darker\" />\n ) : (\n <Layout.Box padding=\"s\" />\n )\n }\n role=\"option\"\n aria-selected={checked ? 'true' : 'false'}\n {...props}\n >\n {children ||\n (option &&\n (option.option ||\n option.title ||\n (typeof option.key !== 'symbol' ? option.key : null))) ||\n 'Column'}\n </Dropdown.Item>\n )\n}\n\nconst TriggerIcon = styled(Icon).attrs({\n name: 'dots-horizontal',\n size: '12',\n color: 'neutral-darker',\n})`\n transform: rotate(90deg);\n`\n\nfunction TablePicker<T>({\n value,\n onChange,\n options,\n align,\n children,\n trigger: propsTrigger,\n ...props\n}: TablePickerProps<T>) {\n return (\n <Dropdown align={align}>\n <StyledPickerTrigger trailing={null} scale=\"small\" {...props}>\n {propsTrigger !== undefined ? (\n ({ expanded }) => (isFunction(propsTrigger) ? propsTrigger(expanded) : propsTrigger)\n ) : (\n <TriggerIcon />\n )}\n </StyledPickerTrigger>\n <Dropdown.Menu role=\"listbox\">\n {children ||\n options?.map((option) => (\n <TablePickerItem\n key={option.key}\n option={option}\n checked={option.key === value?.key}\n onClick={() => onChange?.(option)}\n />\n ))}\n </Dropdown.Menu>\n </Dropdown>\n )\n}\n\nfunction useIsRowSelected(children: ReactNode): boolean {\n const { selected, config } = useTableSelection()\n\n if (!selected) {\n return false\n }\n\n const arrChildren = Children.toArray(children)\n\n const selectionCellChild = arrChildren.find((child) => {\n return isValidElement(child) && child.type === SelectionCell\n })\n\n if (!selectionCellChild) {\n return false\n }\n\n const { value } = (selectionCellChild as React.ReactElement).props as SelectionCellProps\n\n if (!value) {\n return false\n }\n\n return isCellSelected(value, selected, config)\n}\n\nTable.Head = TableHead\nTable.Body = TableBody\nTable.Row = TableRow\nTable.Cell = TableCell\nTable.HeadCell = TableHeadCell\nTable.Foot = StyledTableFoot\nTable.Caption = TableCaption\nTable.Selection = {\n Actions: TableSelectionActions,\n Cell: SelectionCell,\n HeadCell: SelectionHeadCell,\n}\nTable.ExpandableRow = ExpandableTableRow\nTable.SortHandle = TableSortHandle\nTablePicker.Item = TablePickerItem\nTable.Picker = TablePicker\n\nexport { useSelection }\n\nexport default Table\n","import React from 'react'\nimport type { PropsWithChildren } from 'react'\n\nimport { BaseLink } from 'components/Link'\nimport styled from 'styled-components'\n\nexport type LogoProps = PropsWithChildren<{\n readonly url: string\n readonly className?: string\n}>\n\nfunction Logo({ url, className, children }: LogoProps) {\n return (\n <BaseLink className={className} href={url}>\n {children}\n </BaseLink>\n )\n}\n\nexport default styled(Logo)<LogoProps>({})\n","import React from 'react'\nimport type { PropsWithChildren, ReactNode, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport transition from 'styles/transition'\nimport { Dropdown, DropdownMenu, DropdownMenuItem, DropdownTrigger } from 'components/Dropdown'\nimport { BaseLink } from 'components/Link'\nimport useID from 'hooks/useID'\nimport ellipsizable from 'styles/ellipsizable'\nimport typography from 'styles/typography'\nimport { Popover } from 'components/Popover'\n\nexport const MenuDropdown = styled(Dropdown)({})\n\nexport const MenuDropdownSeparator = styled.hr`\n margin: ${token('space-s')} ${token('space-m')};\n\n color: ${token('top-navigation-dropdown-separator-color')};\n`\n\nconst MenuDropdownTrigger = styled(DropdownTrigger.Handle)`\n color: ${token('top-navigation-dropdown-trigger-color')};\n`\n\nexport const MenuDropdownLabel = styled.label`\n ${transition()}\n\n align-items: center;\n display: flex;\n\n ${typography('body-bold', { color: 'top-navigation-item-color' })}\n\n cursor: pointer;\n\n ${focusable`\n color: ${token('top-navigation-item-color--hover')};\n `}\n`\n\nconst Ellipsizable = styled.span<{ $max: number }>`\n ${ellipsizable()}\n\n max-width: ${(props) => props.$max}px;\n`\n\nconst IconWrapper = styled.div`\n width: ${token('space-m')};\n`\n\nconst MenuDropdownSubItemLink = styled(BaseLink)`\n align-items: stretch;\n ${typography('body', { color: 'top-navigation-dropdown-subitem-color' })}\n\n ${hoverable`\n text-decoration: none;\n font-weight: inherit;\n `}\n\n ${focusable`\n > * {\n background-color: ${token('color-neutral-lighter')}\n }\n `}\n`\n\ntype MenuDropdownSubItemProps = HTMLAttributes<HTMLElement> & {\n readonly label: string\n readonly url?: string\n readonly icon?: ReactNode\n readonly separator?: boolean\n}\n\nexport function MenuDropdownSubItem({ icon, label, url, ...rest }: MenuDropdownSubItemProps) {\n return url ? (\n <MenuDropdownSubItemLink {...rest} href={url}>\n <DropdownMenuItem tabIndex={-1} leading={<IconWrapper>{icon}</IconWrapper>}>\n {label}\n </DropdownMenuItem>\n </MenuDropdownSubItemLink>\n ) : (\n <DropdownMenuItem leading={<IconWrapper>{icon}</IconWrapper>} {...rest}>\n {label}\n </DropdownMenuItem>\n )\n}\n\nexport type MenuItemDropdownProps = PropsWithChildren<{\n readonly label: string\n}>\n\nfunction MenuItemDropdown(props: MenuItemDropdownProps) {\n const { label, children, ...rest } = props\n const labelId = useID()\n\n return (\n <MenuDropdown align=\"end\" key={label}>\n <Popover.Reference>\n <MenuDropdownLabel>\n <Ellipsizable $max={120} id={labelId}>\n {label}\n </Ellipsizable>\n <MenuDropdownTrigger {...rest} tabIndex={0} aria-labelledby={labelId} />\n </MenuDropdownLabel>\n </Popover.Reference>\n <DropdownMenu>{children}</DropdownMenu>\n </MenuDropdown>\n )\n}\n\nexport { MenuItemDropdown }\n","import React from 'react'\nimport type { ReactNode } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport { BaseLink } from 'components/Link'\nimport conditional, { whenProps } from 'tools/conditional'\nimport typography from 'styles/typography'\n\nconst MenuLink = styled(BaseLink)<{ hasIcon?: boolean }>`\n ${typography('body-bold')}\n\n color: ${conditional({\n 'top-navigation-item-icon-color': whenProps({ hasIcon: true }),\n 'top-navigation-item-color': whenProps({ hasIcon: false }),\n })};\n\n ${hoverable`\n text-decoration: none;\n color: ${token('top-navigation-item-color--hover')};\n `}\n\n ${focusable`\n color: ${token('top-navigation-item-color--hover')};\n `}\n`\n\ninterface MenuItemIconProps {\n readonly label: string\n readonly icon?: ReactNode\n readonly url?: string\n}\n\nexport function MenuItemIcon({ url, icon, label, ...rest }: MenuItemIconProps) {\n if (icon) {\n return (\n <MenuLink {...rest} href={url} hasIcon title={label}>\n {icon}\n </MenuLink>\n )\n }\n\n return (\n <MenuLink {...rest} href={url}>\n {label}\n </MenuLink>\n )\n}\n","import React from 'react'\nimport type { PropsWithChildren, ReactNode, HTMLAttributes } from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport {\n MenuItemDropdown,\n MenuDropdown,\n MenuDropdownSubItem,\n MenuDropdownSeparator,\n} from './MenuItemDropdown'\nimport { MenuItemIcon } from './MenuItemIcon'\nimport conditional, { whenProps } from 'tools/conditional'\n\ntype MenuItemProps = HTMLAttributes<HTMLElement> &\n PropsWithChildren<{\n readonly label: string\n readonly icon?: ReactNode\n readonly url?: string\n }>\n\nexport type MenuProps = PropsWithChildren<{\n readonly align?: 'left' | 'right'\n}>\n\nconst MenuContainer = styled.nav<{ $align: MenuProps['align'] }>`\n ${conditional({\n 'margin-left: auto;': whenProps({ $align: 'right' }),\n })}\n\n display: flex;\n flex-direction: row;\n align-items: center;\n\n & > * + * {\n margin-left: ${token('space-m')};\n }\n\n & > * + ${MenuDropdown} {\n margin-left: ${token('space-xl')};\n }\n`\n\nfunction MenuItem({ children, ...props }: MenuItemProps) {\n if (children) {\n return <MenuItemDropdown {...props}>{children}</MenuItemDropdown>\n }\n\n return <MenuItemIcon {...props} />\n}\n\nfunction Menu({ align = 'left', children }: MenuProps) {\n return <MenuContainer $align={align}>{children}</MenuContainer>\n}\n\nMenu.Item = MenuItem\nMenu.SubItem = MenuDropdownSubItem\nMenu.Separator = MenuDropdownSeparator\n\nexport default Menu\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\n\nexport interface OpenSideNavButtonProps {\n readonly className?: string\n readonly onClick: () => void\n}\n\nconst Container = styled.button`\n margin-right: ${token('space-2xl')};\n\n background: none;\n border: none;\n cursor: pointer;\n`\n\nfunction OpenSideNavButton({ className, onClick }: OpenSideNavButtonProps) {\n return (\n <Container className={className} onClick={onClick}>\n <Icon name=\"burguer-menu\" size={24} data-testid=\"toggle-sidenav\" />\n </Container>\n )\n}\n\nexport default styled(OpenSideNavButton)<OpenSideNavButtonProps>({})\n","import React from 'react'\nimport type { ReactNode } from 'react'\nimport styled, { css } from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Logo } from './Logo'\nimport { Menu } from './Menu'\nimport { MenuDropdownLabel } from './Menu/MenuItemDropdown'\nimport { OpenSideNavButton } from './OpenSideNavButton'\n\n/* We need to remove the 8px padding-right that DropdownTrigger adds (because of\n BaseStyledButton), in order to keep it always 40px to the right, but only when\n it's the last child. DropdownTigger isn't a StyledComponent so we need to use\n MenuDropdownLabel here since it's the one that wraps DropdownTigger */\nconst removeRightPadding = css`\n > :last-child ${MenuDropdownLabel} {\n margin-right: -${token('space-m')};\n }\n`\n\nconst Container = styled.div`\n display: flex;\n flex-direction: row;\n align-items: center;\n width: 100%;\n height: ${token('top-navigation-height')};\n padding: 0 ${token('space-2xl')};\n\n background-color: ${token('top-navigation-background-color')};\n border-bottom: solid 1px ${token('top-navigation-border-color')};\n\n ${removeRightPadding}\n`\n\nexport interface TopNavigationProps {\n readonly children?: ReactNode\n}\n\nfunction TopNavigation({ children }: TopNavigationProps) {\n return <Container>{children}</Container>\n}\n\nTopNavigation.Logo = Logo\nTopNavigation.Menu = Menu\nTopNavigation.OpenSideNavButton = OpenSideNavButton\n\nexport default TopNavigation\n","import type { FC } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport type { EmptyStateWithIconProps } from './EmptyState.types'\n\nimport { Stack, Group } from 'components/Layout'\nimport Text from 'components/Text/Text'\nimport Button from 'components/Button/Button'\n\nconst VerticalWrapper = styled(Stack)`\n text-align: center;\n`\n\nconst EmptyStateWithIcon: FC<EmptyStateWithIconProps> = ({\n variant,\n icon,\n title,\n action,\n children,\n ...props\n}: EmptyStateWithIconProps) => {\n const isHorizontal = variant === 'horizontal-card'\n const Wrapper = isHorizontal ? Group : VerticalWrapper\n\n return (\n <Wrapper {...props} space={isHorizontal ? 's' : 'xs'} align=\"center\" justify=\"center\">\n {children || (\n <>\n {icon}\n <Text variant=\"caption-bold\">{title}</Text>\n {action && (\n <Button variant=\"primary\" scale=\"small\" {...action}>\n {action.label}\n </Button>\n )}\n </>\n )}\n </Wrapper>\n )\n}\n\nexport default EmptyStateWithIcon\n","import type { FC } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport conditional, { whenProps } from 'tools/conditional'\n\nimport type { IllustrationProps } from './EmptyState.types'\n\nconst Wrapper = styled.div<Pick<IllustrationProps, 'scale'>>`\n & > img:first-of-type,\n SVG:first-of-type {\n height: ${conditional({\n '240px': whenProps({ scale: 'large' }),\n '120px': whenProps({ scale: 'default' }),\n })};\n object-fit: cover;\n }\n`\n\nexport const Illustration: FC<IllustrationProps> = ({\n illustration,\n scale,\n ...props\n}: IllustrationProps) => (\n <Wrapper scale={scale} {...props}>\n {typeof illustration === 'string' ? <img src={illustration} alt=\"\" /> : illustration}\n </Wrapper>\n)\n\nexport default Illustration\n","import type { FC } from 'react'\nimport React from 'react'\nimport styled from 'styled-components'\n\nimport { Stack } from 'components/Layout'\nimport Text from 'components/Text/Text'\nimport Button from 'components/Button/Button'\n\nimport type { EmptyStateWithIllustrationProps } from './EmptyState.types'\nimport Illustration from './Illustration'\n\nconst Wrapper = styled(Stack)`\n max-width: 320px;\n\n text-align: center;\n`\n\nconst EmptyStateWithIllustration: FC<EmptyStateWithIllustrationProps> = ({\n variant,\n illustration,\n title,\n description,\n action,\n children,\n ...props\n}: EmptyStateWithIllustrationProps) => {\n const isPageVariant = variant === 'page'\n\n return (\n <Wrapper {...props} align=\"center\" justify=\"center\" space=\"m\">\n {children || (\n <>\n {illustration && (\n <Illustration illustration={illustration} scale={isPageVariant ? 'large' : 'default'} />\n )}\n {(title || description) && (\n <Stack space=\"xs\">\n {title && (\n <Text\n variant={isPageVariant ? 'heading-sm-bold' : 'body-bold'}\n color={isPageVariant ? 'color-neutral-darkest' : 'color-neutral-darker'}\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n data-testid=\"empty-state-description\"\n variant={isPageVariant ? 'body' : 'caption'}\n color=\"color-neutral-darkest\"\n >\n {description}\n </Text>\n )}\n </Stack>\n )}\n {action && (\n <Button\n className=\"empty-state-action\"\n variant=\"primary\"\n scale={isPageVariant ? 'default' : 'small'}\n {...action}\n >\n {action.label}\n </Button>\n )}\n </>\n )}\n </Wrapper>\n )\n}\n\nexport default EmptyStateWithIllustration\n","import React from 'react'\n\nimport type {\n EmptyStateProps,\n EmptyStateWithIconProps,\n EmptyStateWithIllustrationProps,\n} from './EmptyState.types'\n\nimport EmptyStateWithIcon from './EmptyStateWithIcon'\nimport EmptyStateWithIllustration from './EmptyStateWithIllustration'\nimport Illustration from './Illustration'\n\nconst EmptyState = (props: EmptyStateProps) => {\n if (['card', 'horizontal-card'].includes(props.variant)) {\n return <EmptyStateWithIcon {...(props as EmptyStateWithIconProps)} />\n }\n return <EmptyStateWithIllustration {...(props as EmptyStateWithIllustrationProps)} />\n}\n\nEmptyState.Illustration = Illustration\n\nexport default EmptyState\n","export function aliased<T>(aliasMap: Record<number | string, T>, alias: number | string): T {\n return aliasMap[String(alias).toLowerCase()]\n}\n\nexport const MONTH_BY_ALIAS = {\n 0: 'january',\n jan: 'january',\n january: 'january',\n\n 1: 'february',\n feb: 'february',\n february: 'february',\n\n 2: 'march',\n mar: 'march',\n march: 'march',\n\n 3: 'april',\n apr: 'april',\n april: 'april',\n\n 4: 'may',\n may: 'may',\n\n 5: 'june',\n jun: 'june',\n june: 'june',\n\n 6: 'july',\n jul: 'july',\n july: 'july',\n\n 7: 'august',\n aug: 'august',\n august: 'august',\n\n 8: 'september',\n sep: 'september',\n september: 'september',\n\n 9: 'october',\n oct: 'october',\n october: 'october',\n\n 10: 'november',\n nov: 'november',\n november: 'november',\n\n 11: 'december',\n dec: 'december',\n december: 'december',\n}\n\nexport type CalendarMonthAlias = keyof typeof MONTH_BY_ALIAS\n\nexport interface CalendarMonth {\n name: string\n /**\n * Integer value representing the month, beginning with 0 for January to 11 for December.\n * Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/Date\n */\n index: number\n}\n\nexport const MONTH_BY_NAME: Record<string, CalendarMonth> = {\n january: {\n name: 'January',\n index: 0,\n },\n february: {\n name: 'February',\n index: 1,\n },\n march: {\n name: 'March',\n index: 2,\n },\n april: {\n name: 'April',\n index: 3,\n },\n may: {\n name: 'May',\n index: 4,\n },\n june: {\n name: 'June',\n index: 5,\n },\n july: {\n name: 'July',\n index: 6,\n },\n august: {\n name: 'August',\n index: 7,\n },\n september: {\n name: 'September',\n index: 8,\n },\n october: {\n name: 'October',\n index: 9,\n },\n november: {\n name: 'November',\n index: 10,\n },\n december: {\n name: 'December',\n index: 11,\n },\n}\n\nfunction getMonthByAlias(alias: CalendarMonthAlias): CalendarMonth {\n alias = aliased(MONTH_BY_ALIAS, alias) as CalendarMonthAlias\n\n return MONTH_BY_NAME[alias]\n}\n\nfunction getAllMonths() {\n return (Object.keys(MONTH_BY_NAME) as CalendarMonthAlias[]).map((alias) => {\n return getMonthByAlias(alias)\n })\n}\n\nfunction MonthHelper(alias: CalendarMonthAlias): {\n get: () => CalendarMonth\n format: (representation?: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow') => string\n is: (other: CalendarMonthAlias) => boolean\n} {\n const month = getMonthByAlias(alias)\n\n return {\n get() {\n return month\n },\n /**\n * Follows same values available in https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat.\n * * \"numeric\" (e.g., 3)\n * * \"2-digit\" (e.g., 03)\n * * \"long\" (e.g., March)\n * * \"short\" (e.g., Mar)\n * * \"narrow\" (e.g., M)\n */\n format(representation: 'numeric' | '2-digit' | 'long' | 'short' | 'narrow' = 'long') {\n switch (representation) {\n case 'numeric':\n return String(month.index + 1)\n case '2-digit':\n return String(month.index + 1).padStart(2, '0')\n case 'short':\n return month.name.slice(0, 3)\n case 'narrow':\n return month.name.slice(0, 1)\n default:\n return month.name\n }\n },\n is(other: CalendarMonthAlias) {\n return (\n getMonthByAlias(other) != null &&\n aliased(MONTH_BY_ALIAS, alias) === aliased(MONTH_BY_ALIAS, other)\n )\n },\n }\n}\n\nMonthHelper.getAll = getAllMonths\n\nexport default MonthHelper\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport focusable from 'styles/focusable'\nimport disableable from 'styles/disableable'\nimport typography from 'styles/typography'\n\nimport type { ButtonProps } from 'components/Button'\n\nconst Button = styled(BaseButton)`\n user-select: none;\n\n ${typography(\n conditional({\n 'body-bold': whenProps({ 'aria-expanded': true }),\n body: whenProps({ 'aria-expanded': false }),\n })\n )};\n border-color: transparent;\n background-color: transparent;\n\n color: ${token('color-neutral-dark')};\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n `}\n\n ${disableable`\n pointer-events: none;\n opacity: 1;\n `}\n`\n\nconst Caret = styled(Icon)<{ $rotate: boolean }>`\n ${conditional({\n 'transform: rotate(180deg);': whenProps({ $rotate: true }),\n })}\n`\n\nfunction PickerModeToggle(props: Omit<ButtonProps & { expanded: boolean }, 'trailing'>) {\n const { expanded, disabled, ...others } = props\n\n return (\n <Button\n type=\"button\"\n {...others}\n aria-haspopup=\"true\"\n aria-expanded={expanded}\n disabled={disabled}\n trailing={!disabled && <Caret name=\"chevron-down\" size={16} $rotate={expanded} />}\n />\n )\n}\n\nexport default PickerModeToggle\n","import { isFunction } from '@loadsmart/utils-function'\nimport isEmpty from 'utils/toolset/isEmpty'\n\nexport interface DateHelperOptions {\n normalize?: boolean\n}\n\nexport const DEFAULT_OPTIONS: DateHelperOptions = {\n normalize: true,\n}\n\nexport type InputDate = string | number | Date\n\nexport type Unit = 'year' | 'month' | 'day' | 'hour' | 'minute' | 'second' | 'millisecond'\ntype Operator = '>=' | '>' | '=' | '<' | '<='\n\nexport type DateConstraint =\n | InputDate\n | [InputDate, InputDate]\n | [null, InputDate]\n | [InputDate, null]\n\nexport type FunctionConstraint = (day: CalendarDate) => boolean\n\nexport type CalendarConstraint = DateConstraint | FunctionConstraint\n\nexport interface CalendarDate {\n /**\n * Get `Date` object representing this date.\n */\n get: () => Date\n /**\n * Get the year using Universal Coordinated Time (UTC).\n */\n getYear: () => number\n /**\n * Gets the month using Universal Coordinated Time (UTC).\n */\n getMonth: () => number\n /**\n * Get the day-of-the-month, using Universal Coordinated Time (UTC).\n */\n getDate: () => number\n /**\n * Get the time value in milliseconds.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n */\n getTime: () => number\n /**\n * Get the day of the week.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n */\n getWeekday: () => number\n /**\n * Get the hours value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n */\n getHours: () => number\n /**\n * Get the minutes value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n */\n getMinutes: () => number\n /**\n * Get the seconds value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n */\n getSeconds: () => number\n /**\n * Get the milliseconds value.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n */\n getMilliseconds: () => number\n /**\n * Check if the current date matches **at least one** of the provided constraints.\n *\n * [!] Be aware that all dates in this comparison will be normalized to 12:00:00 (UTC).\n *\n */\n matches: (...constraints: CalendarConstraint[]) => boolean\n /**\n * Set the given `value` to the `unit` property of this instance.\n * This function mutates the internal date instance.\n */\n set: (unit: Unit, value: number) => CalendarDate\n /**\n * Return a copy of this instance, adding the given `value` to the `unit` property.\n */\n add: (unit: Unit, value: number) => CalendarDate\n /**\n * Return a copy of this instance, subtracting the given `value` from the `unit` property.\n */\n subtract: (unit: Unit, value: number) => CalendarDate\n /**\n * Compare this date with the given `other`.\n *\n * [!] Be aware that it might be normalized to 12:00:00 (UTC), if you did not call the helper with\n * `options.normalize: false`.\n *\n * @param operator - type of comparison to be performed.\n * @param other - Other `CalendarDate` to compare with.\n * @param precision - notice that the precision increases with the evaluated period, so year < month < day < hour < minute < second < millisecond. Default is 'day'.\n * @return comparison result\n */\n is: (operator: Operator, other: CalendarDate, precision?: Unit) => boolean\n /**\n * Return this date as a string value in ISO format.\n */\n toString: () => string\n}\n\nexport type CalendarDateRange = [CalendarDate | null, CalendarDate | null]\n\n/**\n * Ideally, follow the date/time string formats:\n * * `YYYY-MM-DD`\n * * `YYYY-MM-DDTHH:mm:ss.sssZ`\n * * `YYYY-MM-DDTHH:mm:ss.sss+00:00`\n *\n * `dateArg` is expected to have timezone information or to be UTC.\n *\n * By default, we normalize the input date to 12:00:00 (UTC); this simplifies comparison of dates; be mindful\n * of this when using this helper for time relate logic.\n * You can disable this behavior by passing `options.normalize: false`.\n *\n * @param dateArg - The input date.\n */\nfunction DateHelper(dateArg?: InputDate, optionsArg = DEFAULT_OPTIONS): CalendarDate {\n const options = { ...DEFAULT_OPTIONS, ...optionsArg }\n const utcDate = (function normalizeToUTC() {\n let date = new Date()\n\n if (dateArg != null) {\n date = new Date(dateArg)\n }\n\n // create a date with local timezone based on the UTC input date\n const utcDate = new Date(\n Date.UTC(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate(),\n options.normalize ? 12 : date.getUTCHours(),\n options.normalize ? 0 : date.getUTCMinutes(),\n options.normalize ? 0 : date.getUTCSeconds(),\n options.normalize ? 0 : date.getUTCMilliseconds()\n )\n )\n\n return utcDate\n })()\n\n return {\n get() {\n return utcDate\n },\n getYear() {\n return utcDate.getUTCFullYear()\n },\n getMonth() {\n return utcDate.getUTCMonth()\n },\n getDate() {\n return utcDate.getUTCDate()\n },\n getTime() {\n return utcDate.getTime()\n },\n getWeekday() {\n return utcDate.getUTCDay()\n },\n getHours() {\n return utcDate.getUTCHours()\n },\n getMinutes() {\n return utcDate.getUTCMinutes()\n },\n getSeconds() {\n return utcDate.getUTCSeconds()\n },\n getMilliseconds() {\n return utcDate.getUTCMilliseconds()\n },\n matches(...constraints: CalendarConstraint[]): boolean {\n if (isEmpty(constraints)) {\n return false\n }\n\n const constraintEvaluators = constraints.map(getConstraintEvaluator)\n const date = DateHelper(utcDate)\n\n return constraintEvaluators.some((evaluator) => {\n return evaluator(date)\n })\n },\n add(unit: Unit, value: number) {\n return add(utcDate, unit, value)\n },\n subtract(unit: Unit, value: number) {\n return add(utcDate, unit, -1 * value)\n },\n set(unit: Unit, value: number) {\n const newValue = {\n year: utcDate.getUTCFullYear(),\n month: utcDate.getUTCMonth(),\n day: utcDate.getUTCDate(),\n hour: utcDate.getUTCHours(),\n minute: utcDate.getUTCMinutes(),\n second: utcDate.getUTCSeconds(),\n millisecond: utcDate.getUTCMilliseconds(),\n [unit]: value,\n }\n\n utcDate.setUTCFullYear(newValue.year)\n utcDate.setUTCMonth(newValue.month)\n utcDate.setUTCDate(newValue.day)\n utcDate.setUTCHours(newValue.hour)\n utcDate.setUTCMinutes(newValue.minute)\n utcDate.setUTCSeconds(newValue.second)\n utcDate.setUTCMilliseconds(newValue.millisecond)\n\n return this\n },\n is(operator: Operator, other: CalendarDate, precision?: Unit): boolean {\n function compare(a: number, b: number) {\n let result\n\n switch (operator) {\n case '>=':\n result = a >= b\n break\n case '>':\n result = a > b\n break\n case '<':\n result = a < b\n break\n case '<=':\n result = a <= b\n break\n default:\n result = a === b\n break\n }\n\n return result\n }\n\n return compare(\n getComparableDate(utcDate, precision),\n getComparableDate(other.get(), precision)\n )\n },\n toString(): string {\n return utcDate.toISOString()\n },\n }\n}\n\n/**\n * This method takes a date and a unit of precision and then normalizes the given date based on that precision.\n * The return will be the timestamp of the normalized date\n *\n * @example\n * ```js\n * getComparableDate(new Date('2022-10-13T17:42:19.948Z'), 'hour')) // returns 1665680400000\n *\n * // '2022-10-13T17:42:19.948Z' will be normalized to '2022-10-13T17:00:00.000Z'\n * // 1665680400000 is equal to: new Date('2022-10-13T17:00:00.000Z').getTime()\n * ```\n *\n * @param date - The input date.\n * @param precision - The unit of precision for normalization.\n * @returns The timestamp of the normalized date.\n */\nexport function getComparableDate(date: Date, precision: Unit = 'day'): number {\n const DATE_ZERO = MIN_SUPPORTED_DATE.toString()\n const COMPARE_TO = {\n year: 4,\n month: 7,\n day: 10,\n hour: 13,\n minute: 16,\n second: 19,\n millisecond: 24,\n }\n const sliceIndex = COMPARE_TO[precision]\n\n if (sliceIndex == null) {\n throw new Error(`precision ${precision} is not supported`)\n }\n\n const normalizedPart = DATE_ZERO.slice(sliceIndex)\n const datePart = date.toISOString().slice(0, sliceIndex)\n const normalizedDate = `${datePart}${normalizedPart}`\n\n return new Date(normalizedDate).getTime()\n}\n\n/**\n * Constraints represent ranges of dates, inclusive in both ends.\n * Returns an array representing the initial and final timestamps (after the transformations applied by `DateHelper`).\n *\n * @example\n * ```js\n * // to represent a range that starts and ends in the same date\n * getConstraintRange(1643371200000) // returns [1643371200000, 1643371200000]\n * getConstraintRange([1643371200000, 1643371200000]) // returns [1643371200000, 1643371200000]\n * getConstraintRange('2022-01-28T12:00:00.000Z') // returns [1643371200000, 1643371200000]\n * getConstraintRange(['2022-01-28T12:00:00.000Z', '2022-01-28T12:00:00.000Z']) // returns [1643371200000, 1643371200000]\n *\n * // to represent a range that starts at one date and ends at another\n * getConstraintRange([1641038400000, 1643371200000]) // returns [1641038400000, 1643371200000]\n * getConstraintRange(['2022-01-01T12:00:00.000Z', '2022-01-28T12:00:00.000Z']) // returns [1641038400000, 1643371200000]\n *\n * // to represent a range that starts at one date and has no end\n * getConstraintRange([1641038400000, null]) // returns [1641038400000, `MAX_SUPPORTED_DATE`]\n * getConstraintRange(['2022-01-01T12:00:00.000Z', null]) // returns [1641038400000, `MAX_SUPPORTED_DATE`]\n *\n * // to represent a range that ends at one date and has no start\n * getConstraintRange([null, 1643371200000]) // returns [0, 1643371200000]\n * getConstraintRange([null, '2022-01-28T12:00:00.000Z']) // returns [0, 1643371200000]\n * ```\n */\nexport function getConstraintRange(rangeArg: DateConstraint): [number, number] {\n let range: [number, number]\n\n if (!Array.isArray(rangeArg)) {\n const timestamp = DateHelper(rangeArg).getTime()\n range = [timestamp, timestamp]\n } else {\n const rangeStart = rangeArg[0] != null ? DateHelper(rangeArg[0]) : MIN_SUPPORTED_DATE\n const rangeEnd = rangeArg[1] != null ? DateHelper(rangeArg[1]) : MAX_SUPPORTED_DATE\n\n range = [rangeStart.getTime(), rangeEnd.getTime()]\n }\n\n return range\n}\n\n/**\n * Add the given `value` to the provided `unit` of the provided `date`.\n * @param date - Date where the operation should be performed.\n * @param unit - period\n * @param value - value to be added\n * @returns new date after the operation.\n */\nfunction add(date: Date, unit: Unit, value: number): CalendarDate {\n const increment = {\n year: 0,\n month: 0,\n day: 0,\n hour: 0,\n minute: 0,\n second: 0,\n millisecond: 0,\n [unit]: value,\n }\n\n const newDate = new Date(\n Date.UTC(\n date.getUTCFullYear() + increment.year,\n date.getUTCMonth() + increment.month,\n date.getUTCDate() + increment.day,\n date.getUTCHours() + increment.hour,\n date.getUTCMinutes() + increment.minute,\n date.getUTCSeconds() + increment.second,\n date.getUTCMilliseconds() + increment.millisecond\n )\n )\n\n // Do not normalize the clone since all units must be preserved.\n return DateHelper(newDate, { normalize: false })\n}\n\n/**\n * Wrap range constraint into a function and return a function constraint untouched.\n */\nexport function getConstraintEvaluator(\n constraint: CalendarConstraint\n): (day: CalendarDate) => boolean {\n if (isFunction(constraint)) {\n return constraint\n }\n\n const [start, end] = getConstraintRange(constraint)\n\n return function matches(day: CalendarDate): boolean {\n if (start > end) {\n throw new InvalidDateConstraintError([start, end])\n }\n\n return start <= day.getTime() && day.getTime() <= end\n }\n}\n\nexport function padded(value: number | string, maxLength = 2): string {\n return String(value).padStart(maxLength, '0')\n}\n\nexport class InvalidDateConstraintError extends Error {\n constructor([start, end]: [number, number]) {\n super(`Invalid constraint: [${start}, ${end}]`)\n }\n}\n\nexport const TODAY = DateHelper()\n\n/**\n * Maximum and minimum supported `Date`.\n * Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps\n */\nexport const MIN_SUPPORTED_DATE = DateHelper(0, { normalize: false })\nexport const MAX_SUPPORTED_DATE = DateHelper(8.64e15 - 1)\n\nexport default DateHelper\n","import { useEffect, useState } from 'react'\n\nimport { useDidMount } from 'hooks/useDidMount'\nimport toArray from 'utils/toolset/toArray'\n\nimport DateHelper, { TODAY } from './Date.helper'\nimport type { useCalendarProps, useCalendarReturn, RenderableMonth } from './Calendar.types'\n\nfunction useCalendar(props: useCalendarProps): useCalendarReturn {\n const { constraints, onSelect, mode = 'single' } = props\n const amountOfMonthsToRender = mode == 'single' ? 1 : 2\n\n const didMount = useDidMount()\n const [selected, setSelected] = useState<ReturnType<typeof getSelectionPair>>(() =>\n getSelectionPair(props.selected)\n )\n const [renderableMonths, setRenderableMonths] = useState<ReturnType<typeof getRenderableMonths>>(\n () => {\n const month = props.month != null ? props.month : TODAY.getMonth()\n const year = props.year != null ? props.year : TODAY.getYear()\n\n return getRenderableMonths(year, month, amountOfMonthsToRender)\n }\n )\n\n /**\n * Set the month to be rendered (or initial month when calendar is in range mode).\n * @param args\n * @param [args.month] - Initial month to be rendered, if not provided, the current initial month will be used.\n * @param [args.year] - Initial year to be rendered, if not provided, the current initial month will be used.\n */\n function set(args: { month?: number; year?: number }) {\n const [initialMonth] = renderableMonths\n const date = new Date(args.year ?? initialMonth.year, args.month ?? initialMonth.month)\n\n setRenderableMonths(\n getRenderableMonths(date.getFullYear(), date.getMonth(), amountOfMonthsToRender)\n )\n }\n\n /**\n * Select day or day range.\n * @param range `null` to clear selection, selection range start, or an array with selection start and end.\n */\n function select(range: useCalendarProps['selected']) {\n const [start, end] = getSelectionPair(range)\n\n function getSelectionBoundary(boundary?: string | number | null): string | null {\n if (boundary != null) {\n return DateHelper(boundary).toString()\n }\n\n return null\n }\n\n setSelected([start, end])\n\n if (didMount) {\n // prevent calling onSelect when initialized with value\n onSelect?.([getSelectionBoundary(start), getSelectionBoundary(end)])\n }\n }\n\n /**\n * Clear calendar selection.\n */\n function clear() {\n select([null, null])\n }\n\n useEffect(\n function onMonthOrYearPropsChange() {\n set({\n month: props.month,\n year: props.year,\n })\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.month, props.year]\n )\n\n useEffect(\n function onSelectedPropChange() {\n const newSelected = getSelectionPair(props.selected)\n\n if (newSelected[0] != selected[0] || newSelected[1] != selected[1]) {\n setSelected(newSelected)\n }\n },\n // we just intend to update the internal state when the prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.selected]\n )\n\n return {\n mode,\n months: renderableMonths,\n selected,\n constraints: toArray(constraints).filter((constraint) => constraint != null),\n clear,\n set,\n select,\n }\n}\n\nconst DAY_IN_MILLISECONDS = 24 * 60 * 60 * 1000\n\n/**\n * Generate the whole grid of days\n */\nexport function getRenderableMonth(year: number, month: number): RenderableMonth {\n const date = DateHelper(Date.UTC(year, month))\n\n const firstDayOfTheWeek = date.getWeekday()\n const totalDaysInMonth = 32 - new Date(Date.UTC(year, month, 32)).getUTCDate()\n\n const days = []\n\n /**\n * Filling days of previous month.\n * If the month does not start on Sunday, then we need to generate only the days of\n * the previous month to fill out the grid.\n */\n for (let index = firstDayOfTheWeek; index > 0; index--) {\n days.push(DateHelper(date.getTime() - index * DAY_IN_MILLISECONDS))\n }\n\n // Filling days of current month\n for (let index = 0; index < totalDaysInMonth; index++) {\n days.push(DateHelper(date.getTime() + index * DAY_IN_MILLISECONDS))\n }\n\n /**\n * Filling days of next month, just enough to complete the grid.\n */\n for (let index = 0; (firstDayOfTheWeek + totalDaysInMonth + index) % 7 != 0; index++) {\n days.push(DateHelper(date.getTime() + (totalDaysInMonth + index) * DAY_IN_MILLISECONDS))\n }\n\n return {\n month: date.getMonth(),\n year: date.getYear(),\n days,\n }\n}\n\n/**\n * @param year - year number, e.g., 2022\n * @param month - month index, where 0 is January and 11 is December\n * @param amount - number of months to be generated. Default value is 1.\n */\nexport function getRenderableMonths(\n year: number,\n month: number,\n amount = 1\n): ReturnType<typeof getRenderableMonth>[] {\n if (month < 0 || month > 11) {\n throw new Error(\n 'Invalid month! Please, provide a number between 0 (January) and 11 (December).'\n )\n }\n\n // TODO: validate accepted year range?\n\n const months = new Array<ReturnType<typeof getRenderableMonth>>()\n\n for (let i = 0; i < amount; i++) {\n months.push(getRenderableMonth(year, month + i))\n }\n\n return months\n}\n\nexport function getSelectionPair(\n selected?: null | [string | number | null, string | number | null]\n): [number | null, number | null] {\n const [start, end] = toArray(selected)\n\n return [\n start != null ? DateHelper(start).getTime() : null,\n end != null ? DateHelper(end ?? start).getTime() : null,\n ]\n}\n\nexport default useCalendar\n","export const getOrdinalSuffix = (number: number): 'st' | 'nd' | 'rd' | 'th' => {\n if (number % 10 === 1 && number !== 11) {\n return 'st'\n }\n\n if (number % 10 === 2 && number !== 12) {\n return 'nd'\n }\n\n if (number % 10 === 3 && number !== 13) {\n return 'rd'\n }\n\n return 'th'\n}\n","import { identity } from '@loadsmart/utils-function'\nimport { padded } from './Date.helper'\n\nimport type { CalendarDate } from './Date.helper'\nimport { getOrdinalSuffix } from 'utils/toolset/getOrdinalSuffix'\n\nexport interface DateFormat {\n format: (date: CalendarDate) => string\n}\n\nconst getTokenValue = (date: CalendarDate, token: string) => {\n const value = DEFAULT_FORMATTERS[token].format(date.get())\n\n return (ADDITIONAL_FORMATTERS[token] || identity)(value)\n}\n\n/**\n * This helpers provides a convenient layer on top of `Intl.DateTimeFormat`,\n * using common tokens (based on `momentjs`) to format dates.\n */\nexport default function DateFormatHelper(format: string): DateFormat {\n const tokens = tokenizer(format)\n\n return {\n format(date: CalendarDate) {\n return tokens\n .map((token, index) => {\n const previousIndex = index - 1\n const previousToken = tokens[previousIndex]\n\n if (token in DEFAULT_FORMATTERS) {\n return getTokenValue(date, token)\n }\n\n if (token in COMPOUND_FORMATTERS && COMPOUND_FORMATTERS[token].valid(previousToken)) {\n return COMPOUND_FORMATTERS[token].format(getTokenValue(date, previousToken))\n }\n\n return token\n })\n .join('')\n },\n }\n}\n\n/**\n * Supported tokens:\n *\n *| | Token | Output |\n *| :----------------------------- | :---- | :---------------------------------------- |\n *| Month | MM | 01, 02, ..., 11, 12 |\n *| | MMM | Jan, Feb, ..., Nov, Dec |\n *| | MMMM | January, February, ..., November,December |\n *| Day of Month | D | 1, 2, ..., 30, 31 |\n *| Day of Month with leading 0 | DD | 01, 02, ..., 30, 31 |\n *| Day of week | ddd | Sun, Mon, ... Fri, Sat |\n *| | dddd | Sunday, Monday, ..., Friday, Saturday |\n *| Year | YYYY | 1970, 1971, ..., 2029, 2030 |\n *| Hour | HH | 00, 01, ..., 22, 23 |\n *| | hh | 00, 01, ..., 11, 12 |\n *| Minute | mm | 01, 02, ..., 58, 59 |\n *| Seconds | ss | 01, 02, ..., 58, 59 |\n *| Post or ante meridiem | a | am, pm |\n *| | A | AM, PM |\n *| Ordinal numbers | o | 1st, 2nd, 3rd, ..., 10th |\n *| Scaped sequence | [] | |\n *\n */\nexport function tokenizer(format: string): string[] {\n function getType(char?: string): string {\n if (\n char != undefined &&\n ['M', 'd', 'D', 'Y', 'H', 'h', 'm', 's', 'A', 'a', 'o'].includes(char)\n ) {\n return 'token'\n }\n\n return 'string'\n }\n\n const tokens: string[] = []\n\n let i = 0\n let prev\n let isEscaping = false\n\n while (i < format.length) {\n const at = Math.max(0, tokens.length - 1)\n\n const char = format.charAt(i)\n i++\n\n if (['[', ']'].includes(char)) {\n isEscaping = char === '['\n } else if (isEscaping) {\n tokens[at] = `${tokens[at] || ''}${char}`\n } else if (prev !== char && [getType(prev), getType(char)].includes('token')) {\n // we just need to start a new piece of string if we found a possible valid token\n tokens.push(char)\n } else {\n tokens[at] = `${tokens[at] || ''}${char}`\n }\n\n prev = char\n }\n\n return tokens\n}\n\n/**\n * TODO: Evaluate the need to add the following pollyfills:\n * - https://formatjs.io/docs/polyfills/intl-datetimeformat/\n * - https://formatjs.io/docs/polyfills/intl-getcanonicallocales/\n * - https://formatjs.io/docs/polyfills/intl-locale/\n * - https://formatjs.io/docs/polyfills/intl-numberformat/\n * - https://formatjs.io/docs/polyfills/intl-pluralrules/\n */\nconst DEFAULT_FORMATTERS: Record<string, Intl.DateTimeFormat> = {\n MM: new Intl.DateTimeFormat('en-US', {\n month: '2-digit',\n }),\n MMM: new Intl.DateTimeFormat('en-US', {\n month: 'short',\n }),\n MMMM: new Intl.DateTimeFormat('en-US', {\n month: 'long',\n }),\n D: new Intl.DateTimeFormat('en-US', {\n day: 'numeric',\n }),\n DD: new Intl.DateTimeFormat('en-US', {\n day: '2-digit',\n }),\n ddd: new Intl.DateTimeFormat('en-US', {\n weekday: 'short',\n }),\n dddd: new Intl.DateTimeFormat('en-US', {\n weekday: 'long',\n }),\n YYYY: new Intl.DateTimeFormat('en-US', {\n year: 'numeric',\n }),\n HH: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hourCycle: 'h23',\n }),\n hh: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hour12: true,\n }),\n mm: new Intl.DateTimeFormat('en-US', {\n minute: '2-digit',\n hour12: false,\n }),\n ss: new Intl.DateTimeFormat('en-US', {\n second: '2-digit',\n hour12: false,\n }),\n a: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hour12: true,\n }),\n A: new Intl.DateTimeFormat('en-US', {\n hour: '2-digit',\n hour12: true,\n }),\n}\n\n/**\n * Apply additional formatting.\n *\n * Padding, for example, is applied in some cases due to [this](https://bugs.chromium.org/p/chromium/issues/detail?id=527926) bug.\n */\nconst ADDITIONAL_FORMATTERS: Record<string, (value: string) => string> = {\n hh: (value: string) => (value ? padded(value.split(/\\s/)[0], 2) : value),\n HH: (value: string) => (value ? padded(value, 2) : value),\n mm: (value: string) => (value ? padded(value, 2) : value),\n ss: (value: string) => (value ? padded(value, 2) : value),\n a: (value: string) => (value ? (value.split(/\\s/)[1] || '').toLowerCase() : value),\n A: (value: string) => (value ? (value.split(/\\s/)[1] || '').toUpperCase() : value),\n}\n\ninterface CompoundFormatter {\n valid: (token: string) => boolean\n format: (value: string) => string\n}\n\nconst COMPOUND_FORMATTERS: Record<string, CompoundFormatter> = {\n o: {\n valid: (token) => new Set(['D', 'DD']).has(token),\n format: (value: string) => getOrdinalSuffix(Number.parseInt(value, 10)),\n },\n}\n","import styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport activatable from 'styles/activatable'\nimport conditional, { whenProps } from 'tools/conditional'\nimport disableable from 'styles/disableable'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport typography from 'styles/typography'\n\nconst PickerButton = styled(BaseButton)<{\n $status:\n | 'default'\n | 'current-day'\n | 'faded'\n | 'selection-start'\n | 'selection-end'\n | 'selection'\n | 'next-month-day'\n}>`\n ${typography(\n conditional({\n body: whenProps({ $status: ['default', 'faded'] }),\n 'body-bold': whenProps({\n $status: ['current-day', 'selection-start', 'selection', 'selection-end'],\n }),\n })\n )}\n\n user-select: none;\n\n height: 100%;\n\n border-radius: 0;\n\n color: ${conditional({\n 'color-neutral-lighter': whenProps({\n $status: ['selection-start', 'selection', 'selection-end'],\n }),\n 'color-neutral-darker': whenProps({ $status: ['default', 'faded'] }),\n 'color-neutral-dark': whenProps({ $status: 'next-month-day' }),\n 'color-accent': whenProps({ $status: 'current-day' }),\n })};\n\n background: ${conditional({\n 'color-transparent': whenProps({ $status: ['default', 'faded', 'next-month-day'] }),\n 'color-neutral-darker': whenProps({ $status: ['selection-start', 'selection-end'] }),\n 'color-neutral': whenProps({ $status: 'selection' }),\n 'color-neutral-lightest': whenProps({ $status: 'current-day' }),\n })};\n\n border-color: ${conditional({\n 'color-transparent': whenProps({ $status: ['default', 'faded', 'next-month-day'] }),\n 'color-neutral-darker': whenProps({ $status: ['selection-start', 'selection-end'] }),\n 'color-neutral': whenProps({ $status: 'selection' }),\n 'color-neutral-light': whenProps({ $status: 'current-day' }),\n })};\n\n ${conditional({\n 'opacity: 0.4;': whenProps({ $status: 'faded' }),\n 'opacity: 1;': whenProps({ $status: (status) => status !== 'faded' }),\n })}\n\n padding: ${token('space-xs')} ${token('space-s')};\n\n ${hoverable`\n border-color: ${token('color-neutral')};\n background-color: ${conditional({\n 'color-transparent': whenProps({ $status: ['default', 'faded', 'next-month-day'] }),\n 'color-neutral-dark': whenProps({\n $status: ['selection-start', 'selection', 'selection-end'],\n }),\n 'color-neutral-lightest': whenProps({ $status: 'current-day' }),\n })};\n color: ${conditional({\n 'color-neutral-dark': whenProps({ $status: ['default', 'faded'] }),\n 'color-neutral-lightest': whenProps({\n $status: ['selection-start', 'selection', 'selection-end'],\n }),\n })};\n\n font-weight: ${token('font-weight-bold')};\n `}\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n font-weight: ${token('font-weight-bold')};\n `}\n\n ${activatable`\n border-color: ${token('color-neutral')};\n background-color: ${conditional({\n 'color-transparent': whenProps({ 'aria-checked': false }),\n 'color-neutral': whenProps({ 'aria-checked': true }),\n })};\n color: ${conditional({\n 'color-neutral': whenProps({ 'aria-checked': false }),\n 'color-neutral-white': whenProps({ 'aria-checked': true }),\n })};\n `}\n\n ${disableable`\n background-color: ${token('color-transparent')};\n border-color: ${conditional({\n 'color-neutral-darkest': whenProps({ 'aria-checked': true }),\n 'color-transparent': whenProps({ 'aria-checked': false }),\n })};\n\n color: ${token('color-neutral-darker')};\n `}\n\n visibility: ${conditional({\n visible: whenProps({ 'aria-hidden': false }),\n hidden: whenProps({ 'aria-hidden': true }),\n })};\n`\n\nexport default styled(PickerButton)({})\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport { Text as DefaultText } from 'components/Text'\nimport { TODAY } from '../Date.helper'\nimport DateFormatHelper from '../DateFormat.helper'\nimport PickerButton from './PickerButton'\n\nimport type { CalendarDate } from '../Date.helper'\nimport type { CalendarPickerProps, RenderableMonth, useCalendarReturn } from '../Calendar.types'\n\nexport const WEEKDAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nfunction getStatus(calendar: useCalendarReturn, date: CalendarDate) {\n const isPastYearDay =\n date.getYear() < calendar.months[0].year && date.getMonth() > calendar.months[0].month\n\n if (calendar.selected[0] == date.getTime()) {\n return 'selection-start'\n }\n if (calendar.selected[1] == date.getTime()) {\n return 'selection-end'\n }\n if (\n calendar.selected[0] != null &&\n date.getTime() > calendar.selected[0] &&\n calendar.selected[1] != null &&\n date.getTime() < calendar.selected[1]\n ) {\n return 'selection'\n }\n if (calendar.mode === 'single' && (isPastYearDay || date.getMonth() < calendar.months[0].month)) {\n return 'faded'\n }\n if (calendar.mode === 'single' && date.getMonth() > calendar.months[0].month) {\n return 'next-month-day'\n }\n if (date.getTime() == TODAY.getTime()) {\n return 'current-day'\n }\n\n return 'default'\n}\n\nconst Text = styled(DefaultText)`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n\n user-select: none;\n`\n\nconst Grid = styled.div`\n display: grid;\n grid-gap: ${token('space-2xs')};\n grid-template-rows: 1.25rem repeat(auto-fill, 2.5rem);\n grid-template-columns: repeat(7, 2.5rem);\n`\n\n/**\n * filling days of previous month\n * TODO: supress this for range selection\n */\nfunction CalendarDayPicker({ calendar, onDayClick }: CalendarPickerProps) {\n function renderDaysOfWeek() {\n return WEEKDAYS.map((weekday) => (\n <Text\n key={weekday}\n as=\"abbr\"\n variant=\"chips-sm\"\n color=\"color-neutral\"\n style={{ textDecoration: 'none' }}\n >\n {weekday}\n </Text>\n ))\n }\n\n function renderDaysOfMonth(month: RenderableMonth) {\n const constraints = calendar.constraints\n\n return month.days.map((day) => {\n const status = getStatus(calendar, day)\n const formatted = formatter.format(day)\n const isDisabled = day.matches(...constraints)\n\n if (calendar.mode === 'range' && day.getMonth() !== month.month) {\n return <span key={formatted} aria-hidden />\n }\n\n return (\n <PickerButton\n key={formatted}\n type=\"button\"\n role=\"checkbox\"\n aria-checked={['selection-start', 'selection', 'selection-end'].includes(status)}\n aria-label={formatted}\n disabled={isDisabled}\n onClick={() => {\n if (!isDisabled && onDayClick) {\n onDayClick(day.getTime())\n }\n }}\n $status={status}\n >\n <time dateTime={day.toString()}>{day.getDate()}</time>\n </PickerButton>\n )\n })\n }\n\n return (\n <Group>\n {calendar.months.map((month) => {\n return (\n <Grid key={`${month.year}${month.month}`} role=\"group\" data-testid=\"calendar-day-picker\">\n {renderDaysOfWeek()}\n {renderDaysOfMonth(month)}\n </Grid>\n )\n })}\n </Group>\n )\n}\n\nexport default CalendarDayPicker\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport MonthHelper from '../Month.helper'\nimport PickerButton from './PickerButton'\n\nimport type { useCalendarReturn, CalendarPickerProps } from '../Calendar.types'\nimport type { CalendarMonth, CalendarMonthAlias } from '../Month.helper'\n\nconst Container = styled.div`\n display: grid;\n grid-auto-rows: 3.75rem;\n grid-gap: ${token('space-2xs')};\n grid-template-columns: repeat(3, 1fr);\n`\n\nfunction getStatus(calendar: useCalendarReturn, month: CalendarMonth) {\n if (calendar.months[0].month == month.index) {\n return 'selection-start'\n }\n\n return 'default'\n}\n\nfunction CalendarMonthPicker({ calendar, mode }: CalendarPickerProps) {\n return (\n <Container role=\"radiogroup\" data-testid=\"calendar-month-picker\">\n {MonthHelper.getAll().map((month) => (\n <PickerButton\n key={month.index}\n type=\"button\"\n role=\"radio\"\n aria-checked={month.index == calendar.months[0].month}\n aria-label={`Select month ${month.name}`}\n onClick={() => {\n calendar.set({ month: month.index })\n mode.dispatch({ type: 'set-mode', payload: 'day-picker' })\n }}\n $status={getStatus(calendar, month)}\n >\n <time dateTime={`${calendar.months[0].year}-${month.index + 1}`}>\n {MonthHelper(month.name as CalendarMonthAlias).format('short')}\n </time>\n </PickerButton>\n ))}\n </Container>\n )\n}\n\nexport default CalendarMonthPicker\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken as token } from 'theming'\nimport DefaultPickerButton from './PickerButton'\nimport range from 'utils/toolset/range'\n\nimport type { useCalendarReturn, CalendarPickerProps } from '../Calendar.types'\n\nconst Container = styled.div`\n display: grid;\n grid-auto-rows: 2.875rem;\n grid-gap: ${token('space-2xs')};\n grid-template-columns: repeat(4, 1fr);\n`\n\nconst PickerButton = styled(DefaultPickerButton)`\n block-size: 46px;\n`\n\nfunction getStatus(calendar: useCalendarReturn, year: number) {\n if (calendar.months[0].year == year) {\n return 'selection-start'\n }\n\n return 'default'\n}\n\nfunction CalendarYearPicker({ calendar, mode }: CalendarPickerProps) {\n return (\n <Container role=\"radiogroup\" data-testid=\"calendar-year-picker\">\n {range(2012, 2032).map((year) => (\n <PickerButton\n key={year}\n type=\"button\"\n role=\"radio\"\n aria-checked={year == calendar.months[0].year}\n aria-label={`Select year ${year}`}\n onClick={() => {\n calendar.set({ year })\n mode.dispatch({ type: 'set-mode', payload: 'month-picker' })\n }}\n $status={getStatus(calendar, year)}\n >\n {year}\n </PickerButton>\n ))}\n </Container>\n )\n}\n\nexport default CalendarYearPicker\n","import { useReducer } from 'react'\n\nimport DayPicker from './Pickers/DayPicker'\nimport MonthPicker from './Pickers/MonthPicker'\nimport YearPicker from './Pickers/YearPicker'\n\nimport type {\n PickerMode,\n PickerModeAction,\n usePickerModeProps,\n usePickerModeReturn,\n} from './Calendar.types'\n\nfunction usePickerMode(props?: usePickerModeProps): usePickerModeReturn {\n function reducer(state: PickerMode, action: PickerModeAction) {\n switch (action.type) {\n case 'set-mode':\n return action.payload\n case 'toggle-mode':\n if (state != action.payload) {\n return action.payload\n }\n\n return 'day-picker'\n default:\n return state\n }\n }\n\n const [mode, dispatch] = useReducer(reducer, props?.mode || 'day-picker')\n\n return {\n get() {\n return mode\n },\n is(other: PickerMode) {\n return other != null && other === mode\n },\n dispatch,\n Picker: {\n 'day-picker': DayPicker,\n 'month-picker': MonthPicker,\n 'year-picker': YearPicker,\n }[mode],\n }\n}\n\nexport default usePickerMode\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { BaseButton } from 'components/Button'\nimport { getToken as token } from 'theming'\nimport { Group, Stack } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport conditional, { whenProps } from 'tools/conditional'\nimport focusable from 'styles/focusable'\nimport hoverable from 'styles/hoverable'\nimport MonthHelper from './Month.helper'\nimport PickerModeToggle from './PickerModeToggle'\nimport typography from 'styles/typography'\nimport useCalendar from './useCalendar'\nimport usePickerMode from './usePickerMode'\n\nimport type { CalendarMonthAlias } from './Month.helper'\nimport type { CalendarProps, GenericCalendarProps } from './Calendar.types'\n\nconst Container = styled(Stack)`\n ${typography('body')}\n min-width: calc((7 * 2.5rem) + (6 * ${token('space-2xs')}));\n`\n\nconst BorderlessButton = styled(BaseButton)`\n ${typography('body-bold')}\n border-color: transparent;\n background-color: transparent;\n\n color: ${token('color-neutral')};\n\n inline-size: 40px;\n\n visibility: ${conditional({\n visible: whenProps({ 'aria-hidden': false }),\n hidden: whenProps({ 'aria-hidden': true }),\n })};\n\n ${hoverable`\n color: ${token('color-neutral-dark')};\n `}\n\n ${focusable`\n box-shadow: ${token('button-primary-outline')};\n `}\n`\n\n/**\n * Implementation based on\n * * https://medium.com/swlh/build-a-date-picker-in-15mins-using-javascript-react-from-scratch-f6932c77db09\n * * https://codepen.io/zellwk/pen/xNpKwp\n */\nexport function GenericCalendar(props: GenericCalendarProps) {\n const { calendar, onDayClick, onMonthClick, onYearClick, ...others } = props\n const mode = usePickerMode()\n\n const { Picker } = mode\n\n return (\n <Container space=\"xs\" {...others}>\n <Group>\n <BorderlessButton\n type=\"button\"\n aria-label=\"Navigate to previous month\"\n aria-hidden={!mode.is('day-picker')}\n onClick={() => {\n calendar.set({ month: calendar.months[0].month - 1 })\n }}\n >\n <Icon name=\"caret-left\" size={16} />\n </BorderlessButton>\n\n {calendar.months.map((month) => {\n return (\n <Group key={month.month} space=\"xs\" align=\"center\" justify=\"center\" style={{ flex: 1 }}>\n <PickerModeToggle\n aria-label=\"Open month selection\"\n onClick={() => {\n mode.dispatch({ type: 'toggle-mode', payload: 'month-picker' })\n }}\n expanded={mode.is('month-picker')}\n disabled={calendar.mode == 'range'}\n >\n {MonthHelper(month.month as CalendarMonthAlias).format('long')}\n </PickerModeToggle>\n\n <PickerModeToggle\n aria-label=\"Open year selection\"\n onClick={() => {\n mode.dispatch({ type: 'toggle-mode', payload: 'year-picker' })\n }}\n expanded={mode.is('year-picker')}\n disabled={calendar.mode == 'range'}\n >\n {month.year}\n </PickerModeToggle>\n </Group>\n )\n })}\n <BorderlessButton\n type=\"button\"\n aria-label=\"Navigate to next month\"\n aria-hidden={!mode.is('day-picker')}\n onClick={() => {\n calendar.set({ month: calendar.months[0].month + 1 })\n }}\n >\n <Icon name=\"caret-right\" size={16} />\n </BorderlessButton>\n </Group>\n\n <Picker\n calendar={calendar}\n mode={mode}\n onDayClick={onDayClick}\n onMonthClick={onMonthClick}\n onYearClick={onYearClick}\n />\n </Container>\n )\n}\n\nfunction Calendar(props: CalendarProps) {\n const { year, month, selected, constraints, onSelect, mode, ...rest } = props\n const calendar = useCalendar({ year, month, selected, constraints, mode, onSelect })\n\n return <GenericCalendar calendar={calendar} {...rest} />\n}\n\nexport default Calendar\n","import DateFormatHelper from './DateFormat.helper'\nimport DateHelper from './Date.helper'\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nexport function getSelection(\n selection?: number | string | null | [number | string | null, number | string | null]\n): [null | number, null | number] {\n const [start, end] = Array.isArray(selection) ? selection : [selection, selection]\n\n return [\n start != null ? DateHelper(start).getTime() : null,\n end != null ? DateHelper(end).getTime() : null,\n ]\n}\n","import { useEffect, useRef } from 'react'\n\nimport { useDropdown } from 'components/Dropdown'\nimport { TODAY, DateFormatHelper, DateHelper, useCalendar } from 'components/Calendar'\n\nimport { getSelection } from '../Calendar/Calendar.helpers'\n\nimport type { CalendarDate } from 'components/Calendar'\nimport type { DatePickerProps } from './DatePicker.types'\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nexport function formatDate(date?: number | string | null): string {\n if (!date || Number.isNaN(new Date(date).getTime())) {\n return ''\n }\n\n return formatter.format(DateHelper(date))\n}\n\nexport function getInitialCalendarSetup(\n selection: number | string | null | [number | string | null, number | string | null]\n) {\n const [selectionStart] = getSelection(selection)\n\n if (!selectionStart) {\n return {\n month: TODAY.getMonth(),\n year: TODAY.getYear(),\n }\n }\n\n const startDate = DateHelper(selectionStart)\n\n return {\n month: startDate.getMonth(),\n year: startDate.getYear(),\n }\n}\n\nexport function setInputValue(input: HTMLInputElement | null, value: string) {\n if (input != null) {\n input.value = value\n }\n}\n\nexport function getInputValue(input?: HTMLInputElement | null) {\n if (input != null) {\n return input.value\n }\n\n return null\n}\n\nfunction useDatePicker(props: DatePickerProps) {\n const { constraints, disabled, id, name, onChange, value, ...rest } = props\n\n const dropdown = useDropdown({ disabled })\n const calendar = useCalendar({\n mode: 'single',\n constraints,\n onSelect: handleDateSelect,\n })\n\n const inputRef = useRef<HTMLInputElement>()\n\n function handleDateSelect(selection: [string | null, string | null]) {\n if (!inputRef.current) {\n return\n }\n\n const [formattedDate] = getSelection(selection).map(formatDate)\n\n /**\n * This check ensures we will keep the valid date the user typed as-is and, since we're using\n * an uncontrolled input, ensures that the formatting that happens in `getFormattedSelection`\n * will not interfere with cursor position when we set the input value.\n * Bottom line is: if the input already contains the select date, no change is necessary.\n */\n if (formattedDate != formatDate(getInputValue(inputRef.current))) {\n setInputValue(inputRef.current, formattedDate)\n }\n\n onChange?.({ target: { id, name, value: selection[0] } })\n }\n\n function handleDateInputChange(date: CalendarDate) {\n if (date != null) {\n const timestamp = date.getTime()\n\n calendar.select([timestamp, timestamp])\n } else {\n calendar.clear()\n }\n }\n\n function handleDateInputClick() {\n if (!dropdown.expanded) {\n calendar.set(getInitialCalendarSetup(calendar.selected))\n dropdown.toggle()\n }\n }\n\n function handleDayClick(timestamp: number) {\n calendar.select([timestamp, timestamp])\n dropdown.collapse()\n }\n\n function handleClearClick() {\n calendar.clear()\n inputRef.current?.focus()\n }\n\n function getDropdownProps() {\n return {\n disabled,\n toggle: dropdown.toggle,\n expanded: dropdown.expanded,\n onBlur() {\n if (!inputRef.current) {\n return\n }\n\n const [currSelectedDate] = getSelection(calendar.selected).map(formatDate)\n const currInputValue = getInputValue(inputRef.current)\n\n if (currInputValue == currSelectedDate) {\n return\n }\n\n if (!currInputValue) {\n calendar.clear()\n } else {\n setInputValue(inputRef.current, currSelectedDate)\n }\n },\n }\n }\n\n function getCalendarProps() {\n return {\n ...rest.getCalendarProps?.(),\n calendar,\n onDayClick: handleDayClick,\n }\n }\n\n function getInputProps() {\n return {\n ...rest.getInputProps?.(),\n id,\n name,\n disabled,\n onChange: handleDateInputChange,\n onClick: handleDateInputClick,\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n inputRef.current = node\n }\n },\n }\n }\n\n function getClearProps() {\n return {\n onClick: handleClearClick,\n }\n }\n\n useEffect(\n function onValuePropChange() {\n if (!inputRef.current) {\n return\n }\n\n const [newSelection] = getSelection(value)\n const [currSelection] = calendar.selected\n\n if (newSelection != currSelection) {\n setInputValue(inputRef.current, formatDate(newSelection))\n\n calendar.select([newSelection, newSelection])\n calendar.set(getInitialCalendarSetup([newSelection, newSelection]))\n }\n },\n // we just intend to update the selection when the prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value]\n )\n\n return {\n value: getSelection(calendar.selected).map(formatDate),\n\n getDropdownProps,\n getInputProps,\n getClearProps,\n getCalendarProps,\n }\n}\n\nexport default useDatePicker\n","import React, { useContext, forwardRef } from 'react'\nimport styled from 'styled-components'\n\nimport { DateFormatHelper, DateHelper, GenericCalendar } from 'components/Calendar'\nimport { Dropdown, DropdownContext, GenericDropdown } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport { TextField as DefaultTextField } from 'components/TextField'\nimport CloseButton from 'common/CloseButton'\nimport useDatePicker from './useDatePicker'\nimport { Popover } from 'components/Popover'\n\nimport type { CalendarDate } from 'components/Calendar'\nimport type { ChangeEvent } from 'react'\nimport type { DatePickerProps } from './DatePicker.types'\nimport type { TextFieldProps } from 'components/TextField'\n\n/**\n * https://www.regular-expressions.info/dates.html\n * https://learning.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/ch04s04.html#validation-dates-problem\n */\nconst DATE_REGEX = /^(1[0-2]|0?[1-9])\\/(3[01]|[12][0-9]|0?[1-9])\\/(19|20)\\d{2}$/\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nconst TextField = styled(DefaultTextField)`\n & > input {\n width: 10ch;\n }\n`\n\nconst DropdownMenu = styled(Dropdown.Menu)`\n width: max-content;\n min-width: initial;\n max-height: initial;\n padding: ${token('space-m')};\n overflow-y: initial;\n`\n\nexport const ClearButton = styled(CloseButton)`\n width: 1em;\n height: 1em;\n\n margin-left: calc(-1 * ${token('space-s')}); // compensate for input's padding-left\n`\n\ninterface DateInputProps extends Omit<TextFieldProps, 'onChange'> {\n readonly onChange: (date: CalendarDate) => void\n}\n\nexport const DateInput = forwardRef<HTMLInputElement, DateInputProps>(function DateInput(\n props: DateInputProps,\n ref\n) {\n const { onChange, ...rest } = props\n const dropdown = useContext(DropdownContext)\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n const {\n target: { value },\n } = event\n\n if (!DATE_REGEX.test(value)) {\n return\n }\n\n onChange(DateHelper(value))\n }\n\n // TODO: use type=\"date\" when IE is no longer in the way\n return (\n <TextField\n placeholder=\"00/00/0000\"\n {...rest}\n ref={ref}\n type=\"text\"\n disabled={dropdown.disabled}\n leading={<Icon name=\"calendar\" />}\n onChange={handleInputChange}\n />\n )\n})\n\nfunction DatePicker(props: DatePickerProps) {\n const {\n id,\n name,\n value,\n onChange,\n disabled,\n constraints,\n getInputProps,\n getCalendarProps,\n placement,\n } = props\n\n const datePicker = useDatePicker({\n constraints,\n disabled,\n id,\n name,\n value,\n onChange,\n getInputProps,\n getCalendarProps,\n })\n\n function renderTrailing() {\n const [currSelectedDate] = datePicker.value\n\n if (!disabled && currSelectedDate) {\n return (\n <ClearButton\n size={12}\n type=\"button\"\n aria-label=\"Clear selection\"\n {...datePicker.getClearProps()}\n />\n )\n }\n\n return null\n }\n\n return (\n <GenericDropdown {...placement} {...datePicker.getDropdownProps()}>\n <Popover.Reference>\n <Group space=\"s\">\n <DateInput trailing={renderTrailing()} {...datePicker.getInputProps()} />\n </Group>\n </Popover.Reference>\n <DropdownMenu>\n <GenericCalendar {...datePicker.getCalendarProps()} />\n </DropdownMenu>\n </GenericDropdown>\n )\n}\n\nexport default DatePicker\n","import { useEffect, useRef } from 'react'\n\nimport { formatDate, getInitialCalendarSetup, getInputValue, setInputValue } from './useDatePicker'\nimport { getSelection } from '../Calendar/Calendar.helpers'\nimport { useCalendar } from 'components/Calendar'\nimport { useDropdown } from 'components/Dropdown'\n\nimport type { CalendarDate } from 'components/Calendar'\nimport type { DateRangePickerProps } from './DatePicker.types'\n\nconst AT_RANGE_START = 0\nconst AT_RANGE_END = 1\n\nfunction useDateRangePicker(props: DateRangePickerProps) {\n const { constraints, disabled, id, name, onChange, value, ...rest } = props\n\n const dropdown = useDropdown({ disabled })\n const calendar = useCalendar({\n mode: 'range',\n constraints,\n onSelect: handleDateSelect,\n })\n\n const inputsRef = useRef<[HTMLInputElement | null, HTMLInputElement | null]>([null, null])\n const currentlyPickingRef = useRef<'range-start' | 'range-end' | 'none'>('none')\n\n function handleDateSelect(selected: [string | null, string | null]) {\n for (const index of [AT_RANGE_START, AT_RANGE_END]) {\n const input = inputsRef.current[index]\n const formattedDate = formatDate(selected[index])\n\n /**\n * This check ensures we will keep the valid date the user typed as-is and, since we're using\n * an uncontrolled input, ensures that the formatting that happens in `formatDate`\n * will not interfere with cursor position when we set the input value.\n * Bottom line is: if the input already contains the select date, no change is necessary.\n */\n if (formattedDate != formatDate(getInputValue(input))) {\n setInputValue(input, formattedDate)\n }\n }\n\n onChange?.({ target: { id, name, value: selected } })\n }\n\n function getDateInputChangeHandler(index: number) {\n return function handleDateInputChange(date: CalendarDate) {\n if (date != null) {\n const timestamp = date.getTime()\n\n const newSelected: typeof calendar.selected = [...calendar.selected]\n newSelected[index] = timestamp\n\n calendar.select(newSelected)\n } else {\n calendar.clear()\n }\n }\n }\n\n function handleDateInputClick() {\n if (!dropdown.expanded) {\n calendar.set(getInitialCalendarSetup(calendar.selected))\n dropdown.toggle()\n }\n }\n\n function handleDayClick(timestamp: number) {\n const [rangeStart, rangeEnd] = calendar.selected\n\n if (currentlyPickingRef.current == 'range-start') {\n if (rangeEnd != null) {\n calendar.select([timestamp, rangeEnd].sort() as [number, number])\n inputsRef.current[AT_RANGE_START]?.focus()\n } else {\n calendar.select([timestamp, rangeEnd])\n inputsRef.current[AT_RANGE_END]?.focus()\n }\n } else if (currentlyPickingRef.current == 'range-end') {\n if (rangeStart != null) {\n calendar.select([rangeStart, timestamp].sort() as [number, number])\n } else {\n calendar.select([rangeStart, timestamp])\n }\n\n inputsRef.current[AT_RANGE_END]?.focus()\n }\n }\n\n function handleClearClick() {\n calendar.clear()\n inputsRef.current[AT_RANGE_START]?.focus()\n }\n\n function handleDropdownBlur() {\n currentlyPickingRef.current = 'none'\n\n if ([AT_RANGE_START, AT_RANGE_END].some((index) => !inputsRef.current[index])) {\n return\n }\n\n if ([AT_RANGE_START, AT_RANGE_END].every((index) => !getInputValue(inputsRef.current[index]))) {\n calendar.clear()\n } else {\n const selected = getSelection(calendar.selected).map(formatDate)\n\n for (const index of [AT_RANGE_START, AT_RANGE_END]) {\n setInputValue(inputsRef.current[index], selected[index])\n }\n }\n }\n\n function handleDoneClick() {\n handleDropdownBlur()\n dropdown.collapse()\n }\n\n function getDropdownProps() {\n return {\n disabled,\n toggle: dropdown.toggle,\n expanded: dropdown.expanded,\n onBlur: handleDropdownBlur,\n }\n }\n\n function getCalendarProps() {\n return {\n ...rest.getCalendarProps?.(),\n calendar,\n onDayClick: handleDayClick,\n }\n }\n\n function getRangeStartInputProps() {\n return {\n ...rest.getRangeStartInputProps?.(),\n id: id != null ? `${id}-start` : id,\n name: name != null ? `${name}-start` : name,\n disabled,\n onChange: getDateInputChangeHandler(AT_RANGE_START),\n onClick: handleDateInputClick,\n onFocus() {\n currentlyPickingRef.current = 'range-start'\n },\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n inputsRef.current[AT_RANGE_START] = node\n }\n },\n }\n }\n\n function getRangeEndInputProps() {\n return {\n ...rest.getRangeEndInputProps?.(),\n id: id != null ? `${id}-end` : id,\n name: name != null ? `${name}-end` : name,\n disabled,\n onChange: getDateInputChangeHandler(AT_RANGE_END),\n onClick: handleDateInputClick,\n onFocus() {\n currentlyPickingRef.current = 'range-end'\n },\n ref(node: HTMLInputElement | null) {\n if (node != null) {\n inputsRef.current[AT_RANGE_END] = node\n }\n },\n }\n }\n\n function getClearProps() {\n return {\n onClick: handleClearClick,\n }\n }\n\n function getDoneProps() {\n return {\n onClick: handleDoneClick,\n }\n }\n\n useEffect(\n function onValuePropChange() {\n if ([AT_RANGE_START, AT_RANGE_END].some((index) => !inputsRef.current[index])) {\n return\n }\n\n const newSelected = getSelection(value)\n const currSelected = calendar.selected\n\n const hasChanged = [AT_RANGE_START, AT_RANGE_END].some((index) => {\n return newSelected[index] != currSelected[index]\n })\n\n if (hasChanged) {\n for (const index of [AT_RANGE_START, AT_RANGE_END]) {\n setInputValue(inputsRef.current[index], formatDate(newSelected[index]))\n }\n\n calendar.select(newSelected)\n calendar.set(getInitialCalendarSetup(newSelected))\n }\n },\n // we just intend to update the selection when the prop changes\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [value]\n )\n\n return {\n value: getSelection(calendar.selected).map(formatDate),\n\n getDropdownProps,\n getRangeStartInputProps,\n getRangeEndInputProps,\n getClearProps,\n getCalendarProps,\n getDoneProps,\n }\n}\n\nexport default useDateRangePicker\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { Button } from 'components/Button'\nimport { ClearButton, DateInput } from './DatePicker'\nimport { DateFormatHelper, GenericCalendar } from 'components/Calendar'\nimport { Dropdown, GenericDropdown } from 'components/Dropdown'\nimport { getToken as token } from 'theming'\nimport { Group } from 'components/Layout'\nimport { Popover } from 'components/Popover'\nimport useDateRangePicker from './useDateRangePicker'\n\nimport type { DateRangePickerProps } from './DatePicker.types'\n\nexport const formatter = DateFormatHelper('MM/DD/YYYY')\n\nconst DropdownMenu = styled(Dropdown.Menu)`\n width: max-content;\n min-width: initial;\n max-height: initial;\n padding: ${token('space-m')};\n overflow-y: initial;\n`\n\nconst DropdownFooter = styled.div`\n padding-right: ${token('space-m')};\n padding-left: ${token('space-m')};\n`\n\nfunction DateRangePicker(props: DateRangePickerProps) {\n const {\n id,\n name,\n value,\n onChange,\n disabled,\n constraints,\n getRangeStartInputProps,\n getRangeEndInputProps,\n getCalendarProps,\n placement,\n } = props\n\n const dateRangePicker = useDateRangePicker({\n constraints,\n disabled,\n id,\n name,\n value,\n onChange,\n getRangeStartInputProps,\n getRangeEndInputProps,\n getCalendarProps,\n })\n\n function renderRangeEndTrailing() {\n const [currRangeStart, currRangeEnd] = dateRangePicker.value\n\n if (!disabled && (currRangeStart || currRangeEnd)) {\n return (\n <ClearButton\n size={12}\n type=\"button\"\n aria-label=\"Clear selection\"\n {...dateRangePicker.getClearProps()}\n />\n )\n }\n\n return null\n }\n\n function renderDropdownFooter() {\n return (\n <DropdownFooter>\n <Group space=\"s\" justify=\"flex-end\">\n <Button type=\"button\" scale=\"small\" {...dateRangePicker.getClearProps()}>\n Clear\n </Button>\n <Button type=\"button\" scale=\"small\" variant=\"primary\" {...dateRangePicker.getDoneProps()}>\n Done\n </Button>\n </Group>\n </DropdownFooter>\n )\n }\n\n return (\n <GenericDropdown {...placement} {...dateRangePicker.getDropdownProps()}>\n <Popover.Reference>\n <Group space=\"s\">\n <DateInput\n {...dateRangePicker.getRangeStartInputProps()}\n data-testid=\"input-date-range-start\"\n />\n <DateInput\n trailing={renderRangeEndTrailing()}\n {...dateRangePicker.getRangeEndInputProps()}\n data-testid=\"input-date-range-end\"\n />\n </Group>\n </Popover.Reference>\n <DropdownMenu footer={renderDropdownFooter()}>\n <GenericCalendar {...dateRangePicker.getCalendarProps()} />\n </DropdownMenu>\n </GenericDropdown>\n )\n}\n\nexport default DateRangePicker\n","import React from 'react'\n\nimport type { TextProps } from 'components/Text'\nimport { Text } from 'components/Text'\n\nexport type ErrorMessageProps = Partial<TextProps>\n\nconst ErrorMessage = ({ children, ...props }: ErrorMessageProps) => {\n if (!children) {\n return null\n }\n\n return (\n <Text as=\"p\" variant=\"caption-bold\" color=\"color-danger\" {...props}>\n {children}\n </Text>\n )\n}\n\nexport default ErrorMessage\n","import React from 'react'\nimport styled from 'styled-components'\n\nimport { getToken } from 'theming'\nimport conditional, { whenProps } from 'tools/conditional'\nimport transition from 'styles/transition'\nimport hoverable from 'styles/hoverable'\nimport focusable from 'styles/focusable'\nimport disableable from 'styles/disableable'\nimport hidden from 'styles/hidden'\n\nimport type { StackProps } from 'components/Layout/Stack'\nimport { Stack } from 'components/Layout/Stack'\nimport { Icon } from 'components/Icon'\n\nimport type { DropZoneProps } from './types'\n\nexport const DragDropFileWrapper = styled(Stack)<{ withFileList: boolean }>`\n width: 100%;\n\n & > label + p {\n margin-top: ${conditional({\n 'space-m': whenProps({ withFileList: true }),\n 'space-l': whenProps({ withFileList: false }),\n })};\n }\n`\n\nexport const DropZoneWrapper = styled((props: StackProps) => <Stack as=\"label\" {...props} />)<\n Pick<DropZoneProps, 'disabled' | 'error'>\n>`\n ${transition({ property: 'border-color, box-shadow, opacity' })}\n\n cursor: pointer;\n\n background-color: ${getToken('color-neutral-white')};\n border-radius: ${getToken('border-radius-s')};\n border: 2px dashed;\n border-color: ${conditional({\n 'color-neutral-light': whenProps({ error: false }),\n 'color-danger': whenProps({ disabled: false, error: true }),\n })};\n\n padding: ${getToken('space-l')} ${getToken('space-3xl')};\n\n text-align: center;\n\n ${hoverable`\n border-color: ${conditional({\n 'color-accent': whenProps({ disabled: false, error: false }),\n })};\n `}\n\n ${focusable`\n border-color: ${conditional({\n 'color-accent': whenProps({ disabled: false, error: false }),\n })};\n box-shadow: ${getToken('shadow-glow-primary')};\n `}\n\n ${disableable()}\n`\n\nexport const HiddenInput = styled.input`\n ${hidden()}\n`\n\nexport const UploadIcon = styled(Icon)`\n color: ${getToken('color-neutral')};\n`\n\nexport const FileListUL = styled((props: StackProps) => <Stack as=\"ul\" {...props} />)`\n padding: 0;\n`\n\nexport const Divider = styled.div`\n width: 1px;\n height: 16px;\n\n background-color: ${getToken('color-neutral-darker')};\n`\n","import React from 'react'\n\nimport isEmpty from 'utils/toolset/isEmpty'\n\nimport { useDragDropFileContext } from '../DragDropFile.context'\nimport { DragDropFileWrapper } from '../styles'\nimport type { WrapperProps } from '../types'\n\n/**\n * This is a `Stack` component customized with the needed spacing between the DragDropFile inner components\n */\nconst Wrapper = ({ children, ...props }: WrapperProps) => {\n const { fileList } = useDragDropFileContext()\n\n return (\n <DragDropFileWrapper space=\"l\" withFileList={!isEmpty(fileList)} {...props}>\n {children}\n </DragDropFileWrapper>\n )\n}\n\nexport default Wrapper\n","import React, { useRef, useState, useCallback } from 'react'\nimport clsx from 'clsx'\n\nimport toArray from 'utils/toolset/toArray'\nimport KeyboardKey from 'utils/toolset/keyboard'\nimport pluralize from 'utils/toolset/pluralize'\n\nimport { Text } from 'components/Text'\n\nimport { useDragDropFileContext } from '../DragDropFile.context'\n\nimport { DropZoneWrapper, HiddenInput, UploadIcon } from '../styles'\nimport type { DropZoneProps } from '../types'\n\nconst DropZone = ({\n className,\n hint,\n multiple = false,\n accept,\n disabled = false,\n error = false,\n renderCustomContent,\n ...props\n}: DropZoneProps) => {\n const { onFilesAdded } = useDragDropFileContext()\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [isDragging, setIsDragging] = useState(false)\n\n const onChangeInput = useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n onFilesAdded(Array.from(event.currentTarget.files ?? []))\n },\n [onFilesAdded]\n )\n\n const onKeyPress = useCallback(\n (event: React.KeyboardEvent) => {\n if (!disabled && inputRef.current && KeyboardKey(event).is('ENTER')) {\n inputRef.current.click()\n }\n },\n [disabled, inputRef]\n )\n\n const onDrop = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!disabled) {\n if (isDragging) {\n setIsDragging(false)\n }\n\n onFilesAdded(Array.from(event.dataTransfer.files ?? []))\n }\n },\n [disabled, isDragging, onFilesAdded]\n )\n\n const onDragStart = useCallback((event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n }, [])\n\n const onDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n\n if (!disabled && !isDragging) {\n setIsDragging(true)\n }\n },\n [disabled, isDragging]\n )\n\n const onDragLeave = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n\n if (isDragging) {\n setIsDragging(false)\n }\n },\n [isDragging]\n )\n\n const renderDefaultContent = useCallback(\n () => (\n <>\n <UploadIcon name=\"upload\" size={48} />\n <Text variant=\"body\" color=\"color-neutral-darker\">\n {`Drag and drop your ${pluralize(Number(!multiple), 'files', 'file')} here or `}\n <Text as=\"a\" color={disabled ? 'color-neutral' : 'color-accent'} variant=\"body-bold\">\n {`Browse ${pluralize(Number(!multiple), 'Files', 'File')}`}\n </Text>\n </Text>\n {hint && (\n <Text variant=\"caption\" color=\"color-neutral-dark\">\n {hint}\n </Text>\n )}\n </>\n ),\n [multiple, disabled, hint]\n )\n\n return (\n <DropZoneWrapper\n space=\"m\"\n align=\"center\"\n justify=\"center\"\n className={clsx(className, {\n 'is-disabled': disabled,\n 'is-focused': isDragging,\n })}\n disabled={disabled}\n error={error}\n tabIndex={0}\n role=\"button\"\n aria-pressed=\"false\"\n onKeyPress={onKeyPress}\n onDrop={onDrop}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragLeave={onDragLeave}\n >\n {(renderCustomContent || renderDefaultContent)({ isDragging })}\n <HiddenInput\n onInput={onChangeInput}\n type=\"file\"\n ref={inputRef}\n accept={accept ? toArray(accept).join(',') : undefined}\n disabled={disabled}\n multiple={multiple}\n {...props}\n />\n </DropZoneWrapper>\n )\n}\n\nexport default DropZone\n","export const BYTES_PER_KILOBYTE = 1024\nexport const FILE_SIZE_ABBREVIATIONS = ['B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']\n\nconst formatBytes = (bytes: number, decimals = 2) => {\n const bytesValue = bytes\n\n if (!bytesValue || bytesValue < 0) {\n return '0B'\n }\n\n const dm = Math.max(0, decimals)\n const unit = Math.floor(Math.log(bytesValue) / Math.log(BYTES_PER_KILOBYTE))\n const unitAbbr = FILE_SIZE_ABBREVIATIONS[Math.min(unit, FILE_SIZE_ABBREVIATIONS.length - 1)]\n\n return `${Number.parseFloat((bytesValue / Math.pow(BYTES_PER_KILOBYTE, unit)).toFixed(dm))}${unitAbbr}`\n}\n\nexport default formatBytes\n","import React from 'react'\n\nimport formatBytes from 'utils/toolset/formatBytes'\n\nimport { Stack, Group } from 'components/Layout'\nimport { Bar } from 'components/Loaders/LoadingBar'\nimport { Button } from 'components/Button'\nimport { Icon } from 'components/Icon'\nimport { Text } from 'components/Text'\n\nimport type { FileItemProps, FileStatus } from '../types'\nimport { Divider } from '../styles'\n\nconst FileName = ({ file }: Pick<FileItemProps, 'file'>) =>\n file.size ? (\n <Group space=\"m\" align=\"center\">\n <Text variant=\"caption\">{file.name}</Text>\n <Text variant=\"number-sm\">{formatBytes(file.size)}</Text>\n </Group>\n ) : (\n <Text variant=\"caption\">{file.name}</Text>\n )\n\ntype FileActionButtonProps = Pick<FileItemProps, 'onRemove' | 'onRetry' | 'disabled'> & {\n readonly type: 'remove' | 'retry'\n}\n\nconst FileActionButton = ({ type, onRemove, onRetry, disabled }: FileActionButtonProps) => {\n const { iconName, label, onClick } =\n type === 'remove'\n ? {\n iconName: 'close',\n label: 'REMOVE',\n onClick: onRemove,\n }\n : {\n iconName: 'refresh',\n label: 'RETRY',\n onClick: onRetry,\n }\n\n return (\n <Button\n scale=\"small\"\n variant=\"tertiary\"\n leading={<Icon name={iconName} size={12} />}\n onClick={onClick}\n disabled={disabled}\n >\n {label}\n </Button>\n )\n}\n\nconst LoadingFile = ({ file, ...actionProps }: FileItemProps) => (\n <Stack as=\"li\" space=\"s\">\n <Group align=\"center\" justify=\"space-between\">\n <FileName file={file} />\n <FileActionButton type=\"remove\" {...actionProps} />\n </Group>\n <Bar />\n </Stack>\n)\n\nconst ErrorFile = ({ file, errorMessage, ...actionProps }: FileItemProps) => (\n <Stack as=\"li\" space=\"s\">\n <Group align=\"center\" justify=\"space-between\">\n <Group space=\"s\" align=\"center\">\n <Icon name=\"warning\" size={12} />\n <FileName file={file} />\n </Group>\n {actionProps.onRetry ? (\n <Group space=\"none\" align=\"center\">\n <FileActionButton type=\"retry\" {...actionProps} />\n <Divider />\n <FileActionButton type=\"remove\" {...actionProps} />\n </Group>\n ) : (\n <FileActionButton type=\"remove\" {...actionProps} />\n )}\n </Group>\n {errorMessage && (\n <Text variant=\"caption\" color=\"color-danger\">\n {errorMessage}\n </Text>\n )}\n </Stack>\n)\n\nconst SuccessFile = ({ file, ...actionProps }: FileItemProps) => (\n <Group as=\"li\" align=\"center\" justify=\"space-between\">\n <Group space=\"s\" align=\"center\">\n <Icon name=\"check\" size={12} />\n <FileName file={file} />\n </Group>\n <FileActionButton type=\"remove\" {...actionProps} />\n </Group>\n)\n\nconst FILE_ITEM_BY_STATUS: Record<FileStatus, (props: FileItemProps) => JSX.Element> = {\n loading: LoadingFile,\n error: ErrorFile,\n success: SuccessFile,\n}\n\nconst FileItem = (props: FileItemProps) => {\n const FileItemComponent = FILE_ITEM_BY_STATUS[props.status]\n\n return <FileItemComponent {...props} />\n}\n\nexport default FileItem\n","import React from 'react'\n\nimport isEmpty from 'utils/toolset/isEmpty'\nimport pluralize from 'utils/toolset/pluralize'\n\nimport { Stack } from 'components/Layout'\nimport { Text } from 'components/Text'\n\nimport { useDragDropFileContext } from '../DragDropFile.context'\n\nimport type { FileListProps } from '../types'\nimport { FileListUL } from '../styles'\n\nimport FileItem from './FileItem'\n\nconst FileList = ({ disabled, ...props }: FileListProps) => {\n const { fileList, onRemoveFile, onRetryUpload } = useDragDropFileContext()\n\n if (isEmpty(fileList)) {\n return null\n }\n\n const uploadedFiles = fileList.filter((file) => file.status === 'success').length\n\n return (\n <Stack space=\"m\" {...props}>\n <Text variant=\"heading-sm-bold\">{`${uploadedFiles} ${pluralize(\n uploadedFiles,\n 'Files',\n 'File'\n )} uploaded`}</Text>\n <FileListUL space=\"m\">\n {fileList.map((item, index) => (\n <FileItem\n key={`file-${item.file.name}-${index}`}\n disabled={disabled}\n onRemove={() => {\n onRemoveFile(item, index)\n }}\n onRetry={\n onRetryUpload\n ? () => {\n onRetryUpload(item, index)\n }\n : undefined\n }\n {...item}\n />\n ))}\n </FileListUL>\n </Stack>\n )\n}\n\nexport default FileList\n","import Wrapper from './components/Wrapper'\nimport DropZone from './components/DropZone'\nimport FileList from './components/FileList'\n\nconst DragDropFile = (): null => null\n\nDragDropFile.Wrapper = Wrapper\nDragDropFile.DropZone = DropZone\nDragDropFile.FileList = FileList\n\nexport default DragDropFile\n","import styled from 'styled-components'\nimport { Button } from 'components/Button'\n\nexport const NoPaddingButton = styled(Button).attrs({\n variant: 'tertiary',\n scale: 'small',\n})`\n padding: 0;\n\n > span {\n margin: 0 !important;\n }\n`\n","import type { ChangeEvent, KeyboardEvent } from 'react'\nimport React, { useEffect, useState } from 'react'\n\nimport { Layout } from 'components/Layout'\nimport { Text } from 'components/Text'\nimport { TextField } from 'components/TextField'\nimport type { TablePaginationActionsProps } from 'components/TablePagination/TablePagination.types'\nimport styled from 'styled-components'\nimport type { IconProps } from 'components/Icon'\nimport { Icon } from 'components/Icon'\nimport Keyboard from 'utils/toolset/keyboard'\nimport { NoPaddingButton } from './TablePagination.styles'\nimport { prop } from 'tools/index'\n\nexport const ActionIcon = styled(Icon).attrs({\n color: 'neutral-darker',\n size: '16',\n})<IconProps & { rotate?: number }>`\n transform: rotate(${prop('rotate', 0)}deg);\n`\n\nfunction TablePaginationActions({\n variant = 'default',\n disabled = false,\n onPageChange,\n page,\n count,\n rowsPerPage,\n}: TablePaginationActionsProps) {\n const totalPages = Math.ceil(count / rowsPerPage)\n const [pageValue, setPageValue] = useState<number | ''>(page + 1)\n const isCompact = variant === 'compact'\n\n useEffect(() => {\n setPageValue(page + 1)\n }, [page])\n\n const handleFirstPageClick = () => {\n onPageChange(0)\n }\n\n const handlePreviousPageClick = () => {\n onPageChange(page - 1)\n }\n\n const handleNextPageClick = () => {\n onPageChange(page + 1)\n }\n\n const handleLastPageClick = () => {\n onPageChange(totalPages - 1)\n }\n\n const publishPageChange = () => {\n if (pageValue && pageValue - 1 !== page) {\n onPageChange(pageValue - 1)\n }\n }\n\n const handleKeyUp = (e: KeyboardEvent) => {\n if (Keyboard(e).is('ENTER')) {\n publishPageChange()\n }\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (Keyboard(e).is(['E_LOWERCASE', 'DOT', 'MINUS', 'PLUS'])) {\n e.preventDefault()\n }\n }\n\n const handlePageChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value === '') {\n setPageValue('')\n return\n }\n\n const numberValue = Number(e.target.value)\n\n if (!numberValue || numberValue < 1 || numberValue > totalPages) {\n return\n }\n\n setPageValue(numberValue)\n }\n\n return (\n <Layout.Group space=\"s\" align=\"center\">\n {!isCompact && (\n <NoPaddingButton\n onClick={handleFirstPageClick}\n disabled={page === 0 || disabled}\n title=\"First page\"\n >\n <ActionIcon name=\"caret-right-last\" rotate={180} />\n </NoPaddingButton>\n )}\n <NoPaddingButton\n onClick={handlePreviousPageClick}\n disabled={page === 0 || disabled}\n title=\"Previous page\"\n >\n <ActionIcon name=\"caret-left\" />\n </NoPaddingButton>\n {!isCompact && (\n <>\n <TextField\n type=\"number\"\n min={1}\n max={totalPages}\n disabled={disabled || totalPages === 1}\n onChange={handlePageChange}\n onBlur={publishPageChange}\n onKeyUp={handleKeyUp}\n onKeyDown={handleKeyDown}\n scale=\"small\"\n value={count ? pageValue : 0}\n title=\"Page\"\n />\n <Text variant=\"body\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n of{' '}\n <Text variant=\"body-bold\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {totalPages}\n </Text>\n </Text>\n </>\n )}\n <NoPaddingButton\n onClick={handleNextPageClick}\n disabled={page >= totalPages - 1 || disabled}\n title=\"Next page\"\n >\n <ActionIcon name=\"caret-right\" />\n </NoPaddingButton>\n {!isCompact && (\n <NoPaddingButton\n onClick={handleLastPageClick}\n disabled={page >= totalPages - 1 || disabled}\n title=\"Last page\"\n >\n <ActionIcon name=\"caret-right-last\" />\n </NoPaddingButton>\n )}\n </Layout.Group>\n )\n}\n\nexport default TablePaginationActions\n","import React from 'react'\nimport { Text } from 'components/Text'\nimport { Dropdown, DropdownContext } from 'components/Dropdown'\nimport { Layout } from 'components/Layout'\nimport { Icon } from 'components/Icon'\nimport type { RowsPerPageProps } from './TablePagination.types'\nimport type { ButtonProps } from 'components/Button'\nimport { NoPaddingButton } from './TablePagination.styles'\nimport { Popover } from 'components/Popover'\n\nconst TriggerButton = (props: Omit<ButtonProps, 'scale' | 'variant'>) => {\n const { toggle } = React.useContext(DropdownContext)\n\n return (\n <Popover.Reference>\n <NoPaddingButton data-testid=\"rows-per-page-button\" onClick={toggle} {...props}>\n <Icon name=\"caret-down\" size={16} color=\"neutral-darker\" />\n </NoPaddingButton>\n </Popover.Reference>\n )\n}\n\nfunction RowsPerPage({\n page,\n rowsPerPage,\n onRowsPerPageChange,\n labelRowsPerPage,\n count,\n rowsPerPageOptions,\n disabled = false,\n position = 'bottom',\n align = 'start',\n}: RowsPerPageProps) {\n const getItemsRange = () => {\n if (!count) {\n return 0\n }\n\n const from = page * rowsPerPage + 1\n let to = (page + 1) * rowsPerPage\n\n if (to > count) {\n to = count\n }\n\n return `${from}-${to}`\n }\n\n return (\n <Layout.Group space=\"s\" align=\"center\">\n <Text variant=\"caption\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {labelRowsPerPage}\n </Text>\n <Text variant=\"body\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n <Text variant=\"body-bold\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {getItemsRange()}\n </Text>{' '}\n of{' '}\n <Text variant=\"body-bold\" color={disabled ? 'color-neutral' : 'color-neutral-dark'}>\n {count}\n </Text>\n </Text>\n <Dropdown position={position} align={align}>\n <TriggerButton disabled={disabled} />\n <Dropdown.Menu>\n {rowsPerPageOptions.map((option) => (\n <Dropdown.Item\n key={option}\n onClick={() => {\n onRowsPerPageChange(option)\n }}\n trailing={option === rowsPerPage && <Icon name=\"check\" size={20} color=\"accent\" />}\n >\n {option} per page\n </Dropdown.Item>\n ))}\n </Dropdown.Menu>\n </Dropdown>\n </Layout.Group>\n )\n}\n\nexport default RowsPerPage\n","import React from 'react'\n\nimport { Layout } from 'components/Layout'\n\nimport type { TablePaginationProps } from './TablePagination.types'\nimport TablePaginationActions from 'components/TablePagination/TablePaginationActions'\nimport RowsPerPage from 'components/TablePagination/RowsPerPage'\n\nfunction TablePagination(props: TablePaginationProps) {\n const {\n variant = 'default',\n count,\n labelRowsPerPage = 'Rows per page:',\n onPageChange,\n onRowsPerPageChange,\n page,\n rowsPerPage = 50,\n rowsPerPageOptions = [10, 25, 50, 100],\n disabled = false,\n rowsPerPagePlacement,\n ...rest\n } = props\n\n return (\n <Layout.Group space=\"xl\" align=\"center\" justify=\"space-between\" {...rest}>\n <RowsPerPage\n page={page}\n count={count}\n onRowsPerPageChange={onRowsPerPageChange}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n labelRowsPerPage={labelRowsPerPage}\n disabled={disabled || !count}\n position={rowsPerPagePlacement?.position}\n align={rowsPerPagePlacement?.align}\n />\n <TablePaginationActions\n variant={variant}\n page={page}\n onPageChange={onPageChange}\n rowsPerPage={rowsPerPage}\n count={count}\n disabled={disabled || !count}\n />\n </Layout.Group>\n )\n}\n\nexport default TablePagination\n","import styled from 'styled-components'\nimport hiddenStyle from 'styles/hidden'\n\nexport const VisuallyHidden = styled.span`\n ${hiddenStyle(true)}\n`\n"],"names":["transitionStyle","options","property","timingFunction","duration","Wrapper","styled","span","withConfig","displayName","componentId","transition","props","$color","token","UnknownIcon","React","IconFactory","map","getIcon","name","toLowerCase","Icon","size","width","height","className","color","rest","I","icons","BurguerMenuIcon","calendar","CalendarIcon","CaretDownIcon","CaretLeftIcon","ChevronRightIcon","ChevronDownIcon","back","BackIcon","check","CheckIcon","circle","CircleIcon","close","CloseIcon","information","InformationIcon","minus","MinusIcon","plus","PlusIcon","refresh","RefreshIcon","sort","SortIcon","SortAscIcon","SortDescIcon","upload","UploadIcon","warning","WarningIcon","DotsHorizontalIcon","CaretRightLastIcon","interleave","array1","array2","safeArray1","toArray","safeArray2","isEmpty","flatMap","element","index","activatableStyle","strings","args","safeStrings","concat","disableableStyle","ellipsizableStyle","focusableStyle","hoverableStyle","fontStyle","weight","family","transform","css","getToken","typographyProperties","fontSize","lineHeight","fontWeight","body","caption","fontFamily","textTransform","link","DEFAULT_VARIANT","getPropertiesByVariant","variant","typography","isFunction","properties","conditional","italic","ANIMATION_DURATION","animation","keyframes","Layer","path","Spinner","title","getSpace","prop","whenProps","GroupContainer","div","center","$align","stretch","$justify","Group","space","justify","align","children","StackContainer","Stack","BoxContainer","left","$textAlign","right","$background","$borderColor","$borderWidth","$borderRadius","Box","background","borderColor","borderRadius","borderWidth","padding","textAlign","SidebarContainer","$reversed","Sidebar","minContentWidth","reversed","sideWidth","SwitcherContainer","Switcher","limit","threshold","GridContainer","Grid","minColumnWidth","Layout","loading","Bar","velocity","LoadingBar","alignment","secondaryTitle","pulse","Dot","LoadingDots","StyledSpan","rem","Leading","Trailing","Children","ellipsizable","BaseStyledButton","button","$scale","disableable","$loading","StyledButton","$variant","$scheme","hoverable","focusable","activatable","StyledSelector","TextHidden","StyledLoadingDots","attrs","undefined","role","ButtonLoadingDots","buttonVariant","remainingProps","buttonLightVariants","Set","loadingDotsVariant","has","ButtonChildrenWrapper","BaseButton","forwardRef","scale","leading","trailing","disabled","others","ref","Button","type","scheme","Caret","SelectorButton","omit","IconButton","CloseButton","BackButton","SelectorWrapper","StyledLabel","label","font","SelectionWrapper","selector","clsx","Check","Selector","input","Checkbox","Radio","useFocusWithin","onFocus","onBlur","focused","setFocused","useState","containerRef","useRef","getContainer","current","handleFocus","useCallback","handleBlur","useEffect","updateContainerRef","addEventListener","unsubscribe","removeEventListener","Status","Success","Danger","Warn","Neutral","InputWrapper","status","StyledInput","TextField","useTextField","onChange","onChangeProp","value","valueProp","setValue","handleChange","event","target","TextareaWrapper","StyledTextarea","textarea","Textarea","INSECURE_HREF","checkHref","href","isBlank","normalizedHref","trim","replace","test","checkTarget","rel","sanitizedRel","split","filter","Boolean","add","Array","from","join","useSafeLink","StyledBaseAnchor","a","BaseLink","forwardedRef","StyledAnchor","Link","StyledLink","StyledLi","li","active","getWrappedLabel","url","onClick","isNil","Breadcrumb","StyledWrapper","nav","StyledOl","ol","StyledBackButton","Breadcrumbs","entries","onBack","entry","useDidMount","counter","onMount","GenericAdapter","getKey","o","get","SingleSelectionStrategy","context","init","items","select","Map","newSelection","i","slice","length","adapter","getAdapter","_type","set","unselect","keys","selection","delete","toggle","clear","MultipleSelectionStrategy","key","createSelectionStrategy","adapters","multiple","MAX_LENGTH","INITIAL_LENGTH","ALPHABET","IDGenerator","maxIDLength","initialIDLength","alphabet","currentLength","filledCharacters","fill","availableIDs","range","reduce","acc","n","Math","pow","getID","Error","newID","at","useFingerprint","knownRef","fingerprint","setFingerprint","getFingerprint","currentFingerprint","fingerprintItems","update","known","safeItems","newKnown","hasSameItems","Object","item","computedSignature","resetFingerprint","hasSameFingerprint","otherItems","DEFAULT_ADAPTERS","createUseSelectable","useSelectable","didMount","strategy","useMemo","reducer","state","action","payload","initializer","selected","dispatch","useReducer","identity","String","propagateChangeRef","updateOnSelectedPropChange","newSelected","createSelectable","SelectableContext","createContext","ToggleGroupContext","ToggleButton","$type","isMultiple","Toggle","group","useContext","selectable","Container","$multiple","fromValueToSelected","valueAsArray","optionValue","fromSelectedToValue","pairs","option","push","DEFAULT_SELECTED","ToggleGroup","id","handleSelectionChange","renderOption","additionalProps","Option","TabContext","useID","propId","setID","updateID","TabsItemsWrapper","ul","StyledListItem","direction","row","column","TabsItems","TabsItem","default","isDefault","tabId","setActiveTab","activeTab","isActive","handleSelect","PanelsItemsWrapper","PanelsItemWrapper","article","block","none","PanelsItems","PanelsItem","lazy","hidden","TabsWrapper","Tabs","propTab","onTabChange","Items","Item","Panels","Panel","StyledSection","section","StyledSectionTitle","SectionTitle","Section","Title","hiddenStyle","accessible","AccordionContext","AccordionProvider","expanded","onExpandedChange","initialExpanded","openState","setOpenState","open","useAccordionContext","StyledToggle","StyledContent","HiddenInput","ToggleIndicator","AccordionWrapper","AccordionToggle","propsTrailing","AccordionBody","Accordion","Body","Description","TextSection","$dismissible","StyledBanner","wrap","DefaultCloseButton","IconWrapper","DefaultIcon","InlineButton","ButtonWrapper","LargeButtonWrapper","TextWrapper","getAlertIcon","icon","iconName","Banner","description","onClose","dismissible","visible","setVisible","isValidElement","BannerLarge","BannerAction","secondaryAction","onActionButtonClick","onSecondaryActionButtonClick","BannerActionLarge","ModalWrapper","flex","HeaderWrapper","Close","Content","fullscreen","Header","Text","Modal","onOverlayClick","ReactDOM","createPortal","e","stopPropagation","document","h1","ActionWrapper","StyledDialogActions","$direction","end","initial","DialogActions","DialogActionConfirm","onConfirm","DialogActionCancel","onCancel","Dialog","ActionConfirm","ActionCancel","Actions","useDialog","openProp","onOpen","setOpen","show","hide","updateState","PopoverContext","usePopover","Popover","arrowRef","position","desiredPlacement","floating","useFloating","placement","middleware","offset","flip","shift","arrow","whileElementsMounted","autoUpdate","resultPosition","resultAlign","register","setReference","refs","setFloating","setArrow","result","floatingStyles","top","middlewareData","y","x","PopoverReference","PopoverFloating","style","Floating","Reference","TooltipPosition","Top","Bottom","Left","Right","TooltipAlign","Start","Center","End","Bubble","StyledArrow","Arrow","Tooltip","message","showTooltip","hideTooltip","StyledChildren","StyledRequired","sup","StyledTooltipAnchor","Label","as","required","tip","tipProps","tag","PAGINATION_ITEM_TYPE","endEllipsis","next","page","previous","startEllipsis","IconButtonDefault","PageButton","underline","ICONS_NAME","PaginationItem","itemType","toString","includes","PaginationHelper","boundaryCount","count","siblingCount","constructor","start","_","getStartPages","min","getEndPages","max","getSibilingsStart","getSibilingsEnd","endPages","getStartEllipsis","siblingsStart","getEndEllipsis","siblingsEnd","usePagination","paginationHelper","handleClick","startPages","itemList","getButtonPage","isDisabled","isNumber","Pagination","rounded","Line","Progress","ProgressBar","showLine","extra","clampedValue","SwitchWrapper","Slider","ActiveIcon","InactiveIcon","Switch","onToggle","StyledTag","removable","StyledCloseButton","StyledSpacer","Tag","onRemove","getRemoveButtonProps","ToastCountDown","INTERVAL","Toast","timeout","showIcon","setCount","decrementBy","interval","globalThis","setTimeout","clearTimeout","ToastIcon","radioElement","getElementById","checked","getPanelRadioID","StepsContext","StepConnector","complete","ProgressStepWrapper","ProgressStepContainer","StepIndicator","StepLabel","ProgressStep","step","indicator","ProgressWrapper","StepsProgress","steps","renderStep","StepWrapper","StepsStep","StepsID","StepsWrapper","Steps","showCurrentStep","Step","useSteps","currentProp","stepIndexByID","initStepIndexByIDMap","currentIndex","getStepIndex","newCurrentIndex","stepID","stepIndex","CardTitle","CardSubtitle","CardSeparator","hr","CardBody","CardTitleWrapper","flagged","Flag","Card","Subtitle","Separator","DropdownContext","expandDisabled","StyledPopover","DropdownItemWrapper","DropdownSectionHeader","strong","DropdownSectionWrapper","GenericDropdownMenuWrapper","DropdownMenuWrapper","DropdownSeparator","DropdownMenu","header","footer","DropdownMenuItem","persist","shouldKeepOpen","DropdownMenuSection","SUPPORTED_KEYS","ALT","ARROW_DOWN","ARROW_LEFT","ARROW_RIGHT","ARROW_UP","CONTROL","ENTER","ESCAPE","SHIFT","SPACE","TAB","E_LOWERCASE","DOT","PLUS","MINUS","KeyboardKey","is","otherKeys","expectedKeys","otherKey","useClickOutside","container","callback","setActive","handleEvent","hasTarget","contains","KeyboardEvent","subscribe","dropdownExpandedStyle","triggerButtonAttrs","outlined","TriggerButton","capitalize","uppercase","DropdownTriggerWrapper","$outlined","TriggerHandle","RotatableIcon","$rotate","DropdownTriggerButton","contextValue","renderChildren","DropdownTriggerHandle","GenericDropdownTrigger","DropdownTrigger","Handle","useDropdown","setExpanded","isExpanded","expand","collapse","closeWhenDisabled","DropdownWrapper","HiddenCloseButton","tabIndex","useDeprecatedAlignFromMenu","forEach","child","GenericDropdown","handleClickOutside","Dropdown","dropdownProps","Trigger","Menu","SelectContext","pluralize","plural","singular","GenericSelectTrigger","SelectTriggerSearchField","SelectTrigger","node","getFocusedIndexAfterKeyPress","currentFocused","focusableCounter","keyHandler","Tab","shiftKey","ArrowUp","ArrowDown","unknownKey","increment","getTabbableDescendants","querySelectorAll","useFocusTrap","onActivate","onDeactivate","setCurrentFocused","mutationObserverRef","focusableDescendants","setFocusableDescendants","subscribeToDOMMutationEvents","MutationObserver","observe","childList","unsubscribeToDOMMutationEvents","disconnect","initialize","onUnmount","subscribeToKeyEvents","handleKeyDownEvent","evt","supportedKeys","preventDefault","newCurrentFocused","focus","unsubscribeToKeyEvents","activate","deactivate","getLabel","getValue","toSelection","safeValue","getDisplayValue","escapeRegExp","replaceAll","raw","getData","datasources","query","regex","RegExp","promises","types","ds","Promise","resolve","fetch","results","allSettled","getDatasources","getDatasourceFromOptions","useGenericDatasource","extractAdapters","TriggerOnFocusHandler","mapOptions","useOptions","setOptions","setStatus","timeoutRef","cancelPendingFetch","fetchAfterTimeout","values","reset","getOptionByKey","useSelect","onQueryChange","onCreate","getInputProps","isValidNewOption","createOptionPosition","triggerRef","focusTrap","queryTyped","setQueryTyped","setQuery","dropdown","getSelectableOption","getOption","toggleOption","getDropdownProps","getTriggerProps","sanitizedValue","getClearProps","getMenuProps","getOptionProps","getCreatebleProps","asyncOnClick","onCreateReturn","isCreatable","findByLabel","toLocaleLowerCase","isQueryEqualAnOption","find","getIsValidNewOption","onInit","onDropdownToggle","autoFocus","updateOnSelectedChange","highlightMatch","str","match","indexOf","pre","mid","post","HighlightMatchWrapper","HighlightMatch","text","DefaultGroup","DefaultSelectOption","SelectOption","renderContent","SelectEmpty","SelectCreatableOption","defaultComponents","Empty","CreatableOption","getComponents","components","OMITTED_PROPS","Loading","getCommonClearButtonProps","SelectMenu","ClearMultiple","total","Divider","DividerText","isQuerying","after","before","renderOptionsSingle","renderOptionsMultiple","selectedOptions","remainingOptions","remaining","Select","placeholder","hideClear","renderOptions","getTrailing","useSelectExternal","isChecked","Logo","updateHeight","el","getBoundingClientRect","useHeightExpansionToggler","targetElRef","toggleState","prevState","totalHeight","setTotalHeight","useLayoutEffect","observer","mounted","finalHeight","StyledMenuItem","Flex","MenuBaseItem","MenuLink","StyledIcon","$expanded","ExpandableItems","ItemsWrapper","MenuExpandable","expandableItemsRef","cloneElement","ariaHidden","styledCompounds","Parent","compounds","MenuTitle","menuId","MenuItem","StyledMenu","SubItem","aside","SideNavigation","useWindowSize","windowSize","setWindowSize","window","innerWidth","innerHeight","handleResize","transformInPixels","Number","parseFloat","BASE_PIXELS","useSideNavigation","useWindowResize","theme","useTheme","shouldOpen","breakpoint","breakpointInPixels","StyledAside","StyledHeader","StyledBody","StyledFooter","DrawerHeader","DrawerBody","DrawerFooter","Drawer","onClickOutside","invisible","setInvisible","handleTransitionEnd","currentRef","hasClickedOutside","isSameNode","Footer","getSelectableProps","config","defaults","generic","useTableSelectionCore","registered","setRegistered","selectableProps","allRowsAreSelected","prev","alreadyRegistered","some","prevRow","toggleAll","TableSelectionContext","TableSelectionProvider","selectionCore","useTableSelection","useSelection","isCellSelected","selectedRows","useIsCellSelected","DefaultBox","TableSortHandle","order","StyledTableBody","tbody","StyledTableFoot","tfoot","StyledTableCaption","$position","StyledCell","StyledTableCell","td","format","StyledTableHeadCell","th","pointer","clickable","normal","StyledTableHead","thead","StyledTableRow","tr","solid","StyledExpandableContentRow","StyledTable","table","Table","TableCaptionInner","TableCaption","TableHead","TableBody","TableCell","SelectionCell","Input","SelectionHeadCell","Fragment","TableRow","useIsRowSelected","ExpandableTableRow","expandableContent","propsLeading","colSpan","isArray","TableHeadCell","ActionsWrapper","TableSelectionActions","buttons","Action","StyledPickerTrigger","InternalButton","TablePickerItem","TriggerIcon","TablePicker","trigger","propsTrigger","arrChildren","selectionCellChild","Head","Row","Cell","HeadCell","Foot","Caption","Selection","ExpandableRow","SortHandle","Picker","MenuDropdown","MenuDropdownSeparator","MenuDropdownTrigger","MenuDropdownLabel","Ellipsizable","$max","MenuDropdownSubItemLink","MenuDropdownSubItem","MenuItemDropdown","labelId","hasIcon","MenuItemIcon","MenuContainer","OpenSideNavButton","removeRightPadding","TopNavigation","VerticalWrapper","EmptyStateWithIcon","isHorizontal","Illustration","illustration","EmptyStateWithIllustration","isPageVariant","EmptyState","aliased","aliasMap","alias","MONTH_BY_ALIAS","jan","january","feb","february","mar","march","apr","april","may","jun","june","jul","july","aug","august","sep","september","oct","october","nov","november","dec","december","MONTH_BY_NAME","getMonthByAlias","getAllMonths","MonthHelper","month","representation","padStart","other","getAll","PickerModeToggle","DEFAULT_OPTIONS","normalize","DateHelper","dateArg","optionsArg","utcDate","normalizeToUTC","date","Date","UTC","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","getYear","getMonth","getDate","getTime","getWeekday","getUTCDay","getHours","getMinutes","getSeconds","getMilliseconds","matches","constraints","constraintEvaluators","getConstraintEvaluator","evaluator","unit","subtract","newValue","year","day","hour","minute","second","millisecond","setUTCFullYear","setUTCMonth","setUTCDate","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","operator","precision","compare","b","getComparableDate","toISOString","DATE_ZERO","MIN_SUPPORTED_DATE","COMPARE_TO","sliceIndex","normalizedPart","datePart","normalizedDate","getConstraintRange","rangeArg","timestamp","rangeStart","rangeEnd","MAX_SUPPORTED_DATE","newDate","constraint","InvalidDateConstraintError","padded","maxLength","TODAY","useCalendar","onSelect","mode","amountOfMonthsToRender","setSelected","getSelectionPair","renderableMonths","setRenderableMonths","getRenderableMonths","initialMonth","getFullYear","getSelectionBoundary","boundary","onMonthOrYearPropsChange","onSelectedPropChange","months","DAY_IN_MILLISECONDS","getRenderableMonth","firstDayOfTheWeek","totalDaysInMonth","days","amount","getOrdinalSuffix","number","getTokenValue","DEFAULT_FORMATTERS","ADDITIONAL_FORMATTERS","DateFormatHelper","tokens","tokenizer","previousIndex","previousToken","COMPOUND_FORMATTERS","valid","getType","char","isEscaping","charAt","MM","Intl","DateTimeFormat","MMM","MMMM","D","DD","ddd","weekday","dddd","YYYY","HH","hourCycle","hh","hour12","mm","ss","A","toUpperCase","parseInt","PickerButton","$status","WEEKDAYS","formatter","getStatus","isPastYearDay","DefaultText","CalendarDayPicker","onDayClick","renderDaysOfWeek","textDecoration","renderDaysOfMonth","formatted","CalendarMonthPicker","DefaultPickerButton","CalendarYearPicker","usePickerMode","DayPicker","MonthPicker","YearPicker","BorderlessButton","GenericCalendar","onMonthClick","onYearClick","Calendar","getSelection","formatDate","isNaN","getInitialCalendarSetup","selectionStart","startDate","setInputValue","getInputValue","useDatePicker","handleDateSelect","inputRef","formattedDate","handleDateInputChange","handleDateInputClick","handleDayClick","handleClearClick","currSelectedDate","currInputValue","getCalendarProps","onValuePropChange","currSelection","DATE_REGEX","DefaultTextField","ClearButton","DateInput","handleInputChange","DatePicker","datePicker","renderTrailing","AT_RANGE_START","AT_RANGE_END","useDateRangePicker","inputsRef","currentlyPickingRef","getDateInputChangeHandler","handleDropdownBlur","every","handleDoneClick","getRangeStartInputProps","getRangeEndInputProps","getDoneProps","currSelected","hasChanged","DropdownFooter","DateRangePicker","dateRangePicker","renderRangeEndTrailing","currRangeStart","currRangeEnd","renderDropdownFooter","ErrorMessage","DragDropFileWrapper","withFileList","DropZoneWrapper","error","FileListUL","fileList","useDragDropFileContext","DropZone","hint","accept","renderCustomContent","onFilesAdded","isDragging","setIsDragging","onChangeInput","currentTarget","files","onKeyPress","click","onDrop","dataTransfer","onDragStart","onDragOver","onDragLeave","renderDefaultContent","BYTES_PER_KILOBYTE","FILE_SIZE_ABBREVIATIONS","formatBytes","bytes","decimals","bytesValue","dm","floor","log","unitAbbr","toFixed","FileName","file","FileActionButton","onRetry","LoadingFile","actionProps","ErrorFile","errorMessage","SuccessFile","FILE_ITEM_BY_STATUS","success","FileItem","FileItemComponent","FileList","onRemoveFile","onRetryUpload","uploadedFiles","DragDropFile","NoPaddingButton","ActionIcon","TablePaginationActions","onPageChange","rowsPerPage","totalPages","ceil","pageValue","setPageValue","isCompact","handleFirstPageClick","handlePreviousPageClick","handleNextPageClick","handleLastPageClick","publishPageChange","handleKeyUp","Keyboard","handleKeyDown","handlePageChange","numberValue","RowsPerPage","onRowsPerPageChange","labelRowsPerPage","rowsPerPageOptions","getItemsRange","to","TablePagination","rowsPerPagePlacement","VisuallyHidden"],"mappings":"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"}