@loadsmart/loadsmart-ui 7.5.0 → 7.7.0-beta.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 (492) hide show
  1. package/README.md +15 -1
  2. package/dist/DragDropFile.context-oKnUu6d3.js +33 -0
  3. package/dist/{DragDropFile.context-D-EBrXnw.js.map → DragDropFile.context-oKnUu6d3.js.map} +1 -1
  4. package/dist/index.js +9104 -253
  5. package/dist/index.js.map +1 -1
  6. package/dist/miranda-compatibility.theme-C_FEacSw.js +2528 -0
  7. package/dist/miranda-compatibility.theme-C_FEacSw.js.map +1 -0
  8. package/dist/prop-B8LY6G2g.js +81 -0
  9. package/dist/{prop-pWSEOvKc.js.map → prop-B8LY6G2g.js.map} +1 -1
  10. package/dist/testing/index.js +282 -1
  11. package/dist/testing/index.js.map +1 -1
  12. package/dist/theming/index.js +22 -1
  13. package/dist/theming/index.js.map +1 -1
  14. package/dist/toArray-Dxb1kUxx.js +14 -0
  15. package/dist/toArray-Dxb1kUxx.js.map +1 -0
  16. package/dist/tools/index.js +6 -1
  17. package/dist/tools/index.js.map +1 -1
  18. package/package.json +28 -57
  19. package/dist/DragDropFile.context-D-EBrXnw.js +0 -2
  20. package/dist/DragDropFile.context-jVTIKfj5.mjs +0 -29
  21. package/dist/DragDropFile.context-jVTIKfj5.mjs.map +0 -1
  22. package/dist/index.mjs +0 -9310
  23. package/dist/index.mjs.map +0 -1
  24. package/dist/miranda-compatibility.theme-C3Dt-45K.js +0 -2
  25. package/dist/miranda-compatibility.theme-C3Dt-45K.js.map +0 -1
  26. package/dist/miranda-compatibility.theme-ClCWbTIT.mjs +0 -2525
  27. package/dist/miranda-compatibility.theme-ClCWbTIT.mjs.map +0 -1
  28. package/dist/prop-C4yDbi0C.mjs +0 -53
  29. package/dist/prop-C4yDbi0C.mjs.map +0 -1
  30. package/dist/prop-pWSEOvKc.js +0 -2
  31. package/dist/testing/index.mjs +0 -227
  32. package/dist/testing/index.mjs.map +0 -1
  33. package/dist/theming/index.mjs +0 -19
  34. package/dist/theming/index.mjs.map +0 -1
  35. package/dist/toArray-BJfx0Xhj.mjs +0 -38
  36. package/dist/toArray-BJfx0Xhj.mjs.map +0 -1
  37. package/dist/toArray-Dw6F-w3t.js +0 -2
  38. package/dist/toArray-Dw6F-w3t.js.map +0 -1
  39. package/dist/tools/index.mjs +0 -7
  40. package/dist/tools/index.mjs.map +0 -1
  41. package/src/@types/@loadsmart/utilsFunction.d.ts +0 -5
  42. package/src/@types/@loadsmart/utilsObject.d.ts +0 -5
  43. package/src/@types/svg.d.ts +0 -4
  44. package/src/addons/Theme/register.js +0 -590
  45. package/src/common/BackButton/BackButton.tsx +0 -18
  46. package/src/common/BackButton/index.ts +0 -2
  47. package/src/common/CloseButton/CloseButton.tsx +0 -55
  48. package/src/common/CloseButton/index.ts +0 -2
  49. package/src/common/SelectionWrapper.tsx +0 -130
  50. package/src/components/Accordion/Accordion.context.tsx +0 -36
  51. package/src/components/Accordion/Accordion.stories.tsx +0 -186
  52. package/src/components/Accordion/Accordion.test.tsx +0 -209
  53. package/src/components/Accordion/Accordion.tsx +0 -233
  54. package/src/components/Accordion/index.ts +0 -2
  55. package/src/components/Banner/Banner.stories.tsx +0 -213
  56. package/src/components/Banner/Banner.test.tsx +0 -118
  57. package/src/components/Banner/Banner.tsx +0 -418
  58. package/src/components/Banner/index.tsx +0 -2
  59. package/src/components/Breadcrumbs/Breadbrumbs.test.tsx +0 -125
  60. package/src/components/Breadcrumbs/Breadcrumb.tsx +0 -92
  61. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -21
  62. package/src/components/Breadcrumbs/Breadcrumbs.tsx +0 -54
  63. package/src/components/Breadcrumbs/index.ts +0 -4
  64. package/src/components/Button/Button.stories.tsx +0 -174
  65. package/src/components/Button/Button.test.tsx +0 -57
  66. package/src/components/Button/Button.tsx +0 -576
  67. package/src/components/Button/index.tsx +0 -2
  68. package/src/components/Calendar/Calendar.helpers.ts +0 -15
  69. package/src/components/Calendar/Calendar.stories.tsx +0 -168
  70. package/src/components/Calendar/Calendar.test.tsx +0 -316
  71. package/src/components/Calendar/Calendar.tsx +0 -130
  72. package/src/components/Calendar/Calendar.types.ts +0 -68
  73. package/src/components/Calendar/Date.helper.test.ts +0 -847
  74. package/src/components/Calendar/Date.helper.ts +0 -461
  75. package/src/components/Calendar/DateFormat.helper.test.ts +0 -171
  76. package/src/components/Calendar/DateFormat.helper.ts +0 -195
  77. package/src/components/Calendar/Month.helper.test.ts +0 -187
  78. package/src/components/Calendar/Month.helper.ts +0 -172
  79. package/src/components/Calendar/PickerModeToggle.tsx +0 -61
  80. package/src/components/Calendar/Pickers/DayPicker.test.tsx +0 -85
  81. package/src/components/Calendar/Pickers/DayPicker.tsx +0 -127
  82. package/src/components/Calendar/Pickers/MonthPicker.test.tsx +0 -77
  83. package/src/components/Calendar/Pickers/MonthPicker.tsx +0 -51
  84. package/src/components/Calendar/Pickers/PickerButton.tsx +0 -119
  85. package/src/components/Calendar/Pickers/YearPicker.test.tsx +0 -75
  86. package/src/components/Calendar/Pickers/YearPicker.tsx +0 -52
  87. package/src/components/Calendar/index.ts +0 -10
  88. package/src/components/Calendar/useCalendar.ts +0 -190
  89. package/src/components/Calendar/usePickerMode.ts +0 -48
  90. package/src/components/Card/Card.stories.tsx +0 -117
  91. package/src/components/Card/Card.test.tsx +0 -139
  92. package/src/components/Card/Card.tsx +0 -106
  93. package/src/components/Card/CardTitle.tsx +0 -43
  94. package/src/components/Card/index.ts +0 -2
  95. package/src/components/Checkbox/Checkbox.stories.tsx +0 -79
  96. package/src/components/Checkbox/Checkbox.test.tsx +0 -66
  97. package/src/components/Checkbox/Checkbox.tsx +0 -170
  98. package/src/components/Checkbox/index.ts +0 -2
  99. package/src/components/DatePicker/DatePicker.stories.tsx +0 -113
  100. package/src/components/DatePicker/DatePicker.test.tsx +0 -174
  101. package/src/components/DatePicker/DatePicker.tsx +0 -140
  102. package/src/components/DatePicker/DatePicker.types.ts +0 -30
  103. package/src/components/DatePicker/DateRangePicker.stories.tsx +0 -128
  104. package/src/components/DatePicker/DateRangePicker.test.tsx +0 -267
  105. package/src/components/DatePicker/DateRangePicker.tsx +0 -110
  106. package/src/components/DatePicker/index.ts +0 -3
  107. package/src/components/DatePicker/useDatePicker.ts +0 -201
  108. package/src/components/DatePicker/useDateRangePicker.ts +0 -224
  109. package/src/components/Dialog/Dialog.stories.tsx +0 -227
  110. package/src/components/Dialog/Dialog.test.tsx +0 -74
  111. package/src/components/Dialog/Dialog.tsx +0 -139
  112. package/src/components/Dialog/index.tsx +0 -4
  113. package/src/components/Dialog/useDialog.tsx +0 -59
  114. package/src/components/DragDropFile/DragDropFile.context.tsx +0 -39
  115. package/src/components/DragDropFile/DragDropFile.stories.tsx +0 -183
  116. package/src/components/DragDropFile/DragDropFile.tsx +0 -11
  117. package/src/components/DragDropFile/components/DropZone.test.tsx +0 -108
  118. package/src/components/DragDropFile/components/DropZone.tsx +0 -145
  119. package/src/components/DragDropFile/components/FileItem.tsx +0 -117
  120. package/src/components/DragDropFile/components/FileList.test.tsx +0 -119
  121. package/src/components/DragDropFile/components/FileList.tsx +0 -47
  122. package/src/components/DragDropFile/components/Wrapper.tsx +0 -22
  123. package/src/components/DragDropFile/index.ts +0 -9
  124. package/src/components/DragDropFile/mocks.ts +0 -23
  125. package/src/components/DragDropFile/styles.tsx +0 -81
  126. package/src/components/DragDropFile/types.ts +0 -85
  127. package/src/components/Drawer/Drawer.stories.tsx +0 -83
  128. package/src/components/Drawer/Drawer.test.tsx +0 -90
  129. package/src/components/Drawer/Drawer.tsx +0 -225
  130. package/src/components/Drawer/index.ts +0 -4
  131. package/src/components/Dropdown/Dropdown.context.ts +0 -13
  132. package/src/components/Dropdown/Dropdown.fixtures.ts +0 -15
  133. package/src/components/Dropdown/Dropdown.stories.tsx +0 -259
  134. package/src/components/Dropdown/Dropdown.test.tsx +0 -173
  135. package/src/components/Dropdown/Dropdown.tsx +0 -141
  136. package/src/components/Dropdown/Dropdown.types.ts +0 -59
  137. package/src/components/Dropdown/DropdownMenu.tsx +0 -263
  138. package/src/components/Dropdown/DropdownTrigger.tsx +0 -368
  139. package/src/components/Dropdown/index.ts +0 -15
  140. package/src/components/Dropdown/useDropdown.test.ts +0 -96
  141. package/src/components/Dropdown/useDropdown.ts +0 -65
  142. package/src/components/EmptyState/EmptyState.mocks.tsx +0 -60
  143. package/src/components/EmptyState/EmptyState.stories.tsx +0 -239
  144. package/src/components/EmptyState/EmptyState.test.tsx +0 -101
  145. package/src/components/EmptyState/EmptyState.tsx +0 -22
  146. package/src/components/EmptyState/EmptyState.types.ts +0 -59
  147. package/src/components/EmptyState/EmptyStateWithIcon.tsx +0 -42
  148. package/src/components/EmptyState/EmptyStateWithIllustration.tsx +0 -72
  149. package/src/components/EmptyState/Illustration.tsx +0 -29
  150. package/src/components/EmptyState/index.ts +0 -4
  151. package/src/components/ErrorMessage/ErrorMessage.stories.tsx +0 -26
  152. package/src/components/ErrorMessage/ErrorMessage.test.tsx +0 -24
  153. package/src/components/ErrorMessage/ErrorMessage.tsx +0 -19
  154. package/src/components/ErrorMessage/index.ts +0 -2
  155. package/src/components/HighlightMatch/HighlightMatch.stories.tsx +0 -24
  156. package/src/components/HighlightMatch/HighlightMatch.test.tsx +0 -37
  157. package/src/components/HighlightMatch/HighlightMatch.tsx +0 -29
  158. package/src/components/HighlightMatch/index.ts +0 -2
  159. package/src/components/Icon/Icon.tsx +0 -55
  160. package/src/components/Icon/assets/back.svg +0 -4
  161. package/src/components/Icon/assets/burger-menu.svg +0 -3
  162. package/src/components/Icon/assets/calendar.svg +0 -5
  163. package/src/components/Icon/assets/caret-down.svg +0 -4
  164. package/src/components/Icon/assets/caret-left.svg +0 -4
  165. package/src/components/Icon/assets/caret-right-last.svg +0 -4
  166. package/src/components/Icon/assets/caret-right.svg +0 -4
  167. package/src/components/Icon/assets/check.svg +0 -4
  168. package/src/components/Icon/assets/chevron-down.svg +0 -3
  169. package/src/components/Icon/assets/circle.svg +0 -3
  170. package/src/components/Icon/assets/close.svg +0 -4
  171. package/src/components/Icon/assets/dots-horizontal.svg +0 -1
  172. package/src/components/Icon/assets/information.svg +0 -4
  173. package/src/components/Icon/assets/minus.svg +0 -4
  174. package/src/components/Icon/assets/plus.svg +0 -4
  175. package/src/components/Icon/assets/refresh.svg +0 -3
  176. package/src/components/Icon/assets/sort-asc.svg +0 -7
  177. package/src/components/Icon/assets/sort-desc.svg +0 -7
  178. package/src/components/Icon/assets/sort.svg +0 -7
  179. package/src/components/Icon/assets/upload.svg +0 -3
  180. package/src/components/Icon/assets/warning.svg +0 -4
  181. package/src/components/Icon/index.ts +0 -2
  182. package/src/components/IconFactory/IconFactory.fixtures.tsx +0 -31
  183. package/src/components/IconFactory/IconFactory.stories.tsx +0 -120
  184. package/src/components/IconFactory/IconFactory.test.tsx +0 -36
  185. package/src/components/IconFactory/IconFactory.tsx +0 -75
  186. package/src/components/IconFactory/index.ts +0 -2
  187. package/src/components/Label/Label.stories.tsx +0 -47
  188. package/src/components/Label/Label.test.tsx +0 -80
  189. package/src/components/Label/Label.tsx +0 -120
  190. package/src/components/Label/index.ts +0 -2
  191. package/src/components/Layout/Box.tsx +0 -98
  192. package/src/components/Layout/Grid.tsx +0 -42
  193. package/src/components/Layout/Group.tsx +0 -55
  194. package/src/components/Layout/Layout.stories.tsx +0 -412
  195. package/src/components/Layout/Layout.tsx +0 -19
  196. package/src/components/Layout/Layout.types.ts +0 -9
  197. package/src/components/Layout/Layout.utils.ts +0 -20
  198. package/src/components/Layout/Sidebar.tsx +0 -75
  199. package/src/components/Layout/Stack.tsx +0 -63
  200. package/src/components/Layout/Switcher.tsx +0 -48
  201. package/src/components/Layout/index.tsx +0 -8
  202. package/src/components/Link/Link.stories.tsx +0 -22
  203. package/src/components/Link/Link.test.tsx +0 -79
  204. package/src/components/Link/Link.tsx +0 -114
  205. package/src/components/Link/index.ts +0 -3
  206. package/src/components/Link/useSafeLink.ts +0 -49
  207. package/src/components/Loaders/LoadingBar.stories.tsx +0 -36
  208. package/src/components/Loaders/LoadingBar.test.tsx +0 -35
  209. package/src/components/Loaders/LoadingBar.tsx +0 -65
  210. package/src/components/Loaders/LoadingDots.stories.tsx +0 -69
  211. package/src/components/Loaders/LoadingDots.test.tsx +0 -22
  212. package/src/components/Loaders/LoadingDots.tsx +0 -68
  213. package/src/components/Loaders/Spinner.stories.tsx +0 -24
  214. package/src/components/Loaders/Spinner.test.tsx +0 -35
  215. package/src/components/Loaders/Spinner.tsx +0 -68
  216. package/src/components/Loaders/index.tsx +0 -3
  217. package/src/components/Modal/Modal.stories.tsx +0 -121
  218. package/src/components/Modal/Modal.test.tsx +0 -46
  219. package/src/components/Modal/Modal.tsx +0 -163
  220. package/src/components/Modal/index.tsx +0 -2
  221. package/src/components/Pagination/Pagination.constants.ts +0 -7
  222. package/src/components/Pagination/Pagination.helper.ts +0 -88
  223. package/src/components/Pagination/Pagination.stories.tsx +0 -29
  224. package/src/components/Pagination/Pagination.test.tsx +0 -102
  225. package/src/components/Pagination/Pagination.tsx +0 -34
  226. package/src/components/Pagination/Pagination.types.ts +0 -55
  227. package/src/components/Pagination/PaginationItem.tsx +0 -74
  228. package/src/components/Pagination/index.ts +0 -2
  229. package/src/components/Pagination/usePagination.test.ts +0 -188
  230. package/src/components/Pagination/usePagination.ts +0 -87
  231. package/src/components/Popover/Popover.stories.tsx +0 -50
  232. package/src/components/Popover/Popover.test.tsx +0 -22
  233. package/src/components/Popover/Popover.tsx +0 -110
  234. package/src/components/Popover/Popover.types.ts +0 -39
  235. package/src/components/Popover/index.ts +0 -11
  236. package/src/components/ProgressBar/ProgressBar.stories.tsx +0 -47
  237. package/src/components/ProgressBar/ProgressBar.test.tsx +0 -40
  238. package/src/components/ProgressBar/ProgressBar.tsx +0 -89
  239. package/src/components/ProgressBar/index.tsx +0 -2
  240. package/src/components/Radio/Radio.stories.tsx +0 -75
  241. package/src/components/Radio/Radio.test.tsx +0 -66
  242. package/src/components/Radio/Radio.tsx +0 -153
  243. package/src/components/Radio/index.ts +0 -2
  244. package/src/components/Section/Section.test.tsx +0 -35
  245. package/src/components/Section/Section.tsx +0 -66
  246. package/src/components/Section/Sections.stories.tsx +0 -56
  247. package/src/components/Section/index.ts +0 -2
  248. package/src/components/Select/Select.constants.ts +0 -12
  249. package/src/components/Select/Select.context.ts +0 -11
  250. package/src/components/Select/Select.fixtures.ts +0 -167
  251. package/src/components/Select/Select.stories.tsx +0 -780
  252. package/src/components/Select/Select.test.tsx +0 -1109
  253. package/src/components/Select/Select.tsx +0 -271
  254. package/src/components/Select/Select.types.ts +0 -148
  255. package/src/components/Select/SelectCreatableOption.tsx +0 -20
  256. package/src/components/Select/SelectEmpty.test.tsx +0 -15
  257. package/src/components/Select/SelectEmpty.tsx +0 -29
  258. package/src/components/Select/SelectOption.test.tsx +0 -78
  259. package/src/components/Select/SelectOption.tsx +0 -79
  260. package/src/components/Select/SelectTrigger.tsx +0 -83
  261. package/src/components/Select/components.tsx +0 -14
  262. package/src/components/Select/index.ts +0 -12
  263. package/src/components/Select/useSelect.helpers.test.ts +0 -184
  264. package/src/components/Select/useSelect.helpers.ts +0 -63
  265. package/src/components/Select/useSelect.test.ts +0 -207
  266. package/src/components/Select/useSelect.ts +0 -540
  267. package/src/components/Select/useSelectExternal.ts +0 -26
  268. package/src/components/SideNavigation/Logo/Logo.test.tsx +0 -19
  269. package/src/components/SideNavigation/Logo/Logo.tsx +0 -26
  270. package/src/components/SideNavigation/Logo/index.ts +0 -1
  271. package/src/components/SideNavigation/Menu/Menu.test.tsx +0 -65
  272. package/src/components/SideNavigation/Menu/Menu.tsx +0 -53
  273. package/src/components/SideNavigation/Menu/MenuBaseItem.tsx +0 -64
  274. package/src/components/SideNavigation/Menu/MenuExpandable.tsx +0 -107
  275. package/src/components/SideNavigation/Menu/MenuLink.tsx +0 -37
  276. package/src/components/SideNavigation/Menu/index.ts +0 -1
  277. package/src/components/SideNavigation/Separator/Separator.test.tsx +0 -14
  278. package/src/components/SideNavigation/Separator/Separator.tsx +0 -20
  279. package/src/components/SideNavigation/Separator/index.ts +0 -1
  280. package/src/components/SideNavigation/SideNavigation.stories.tsx +0 -69
  281. package/src/components/SideNavigation/SideNavigation.test.tsx +0 -21
  282. package/src/components/SideNavigation/SideNavigation.tsx +0 -47
  283. package/src/components/SideNavigation/index.ts +0 -5
  284. package/src/components/SideNavigation/useSideNavigation.ts +0 -36
  285. package/src/components/Steps/ProgressSteps/ProgressStep.tsx +0 -163
  286. package/src/components/Steps/ProgressSteps/ProgressSteps.tsx +0 -37
  287. package/src/components/Steps/ProgressSteps/index.ts +0 -1
  288. package/src/components/Steps/Steps.fixtures.ts +0 -11
  289. package/src/components/Steps/Steps.helpers.ts +0 -11
  290. package/src/components/Steps/Steps.stories.tsx +0 -65
  291. package/src/components/Steps/Steps.test.tsx +0 -78
  292. package/src/components/Steps/Steps.tsx +0 -53
  293. package/src/components/Steps/Steps.types.ts +0 -5
  294. package/src/components/Steps/StepsContext.ts +0 -5
  295. package/src/components/Steps/StepsStep.tsx +0 -58
  296. package/src/components/Steps/index.ts +0 -6
  297. package/src/components/Steps/useStep.test.tsx +0 -217
  298. package/src/components/Steps/useSteps.ts +0 -131
  299. package/src/components/Switch/Switch.stories.tsx +0 -65
  300. package/src/components/Switch/Switch.test.tsx +0 -60
  301. package/src/components/Switch/Switch.tsx +0 -209
  302. package/src/components/Switch/index.ts +0 -2
  303. package/src/components/Table/Selection.tsx +0 -202
  304. package/src/components/Table/Table.fixtures.ts +0 -101
  305. package/src/components/Table/Table.stories.tsx +0 -568
  306. package/src/components/Table/Table.test.tsx +0 -310
  307. package/src/components/Table/Table.tsx +0 -523
  308. package/src/components/Table/Table.types.ts +0 -93
  309. package/src/components/Table/TableSortHandle.tsx +0 -31
  310. package/src/components/Table/index.tsx +0 -2
  311. package/src/components/Table/useSortBy.test.ts +0 -96
  312. package/src/components/Table/useSortBy.ts +0 -92
  313. package/src/components/Table/useSortBy.types.ts +0 -21
  314. package/src/components/TablePagination/RowsPerPage.tsx +0 -81
  315. package/src/components/TablePagination/TablePagination.stories.tsx +0 -42
  316. package/src/components/TablePagination/TablePagination.styles.ts +0 -13
  317. package/src/components/TablePagination/TablePagination.test.tsx +0 -111
  318. package/src/components/TablePagination/TablePagination.tsx +0 -49
  319. package/src/components/TablePagination/TablePagination.types.ts +0 -69
  320. package/src/components/TablePagination/TablePaginationActions.tsx +0 -144
  321. package/src/components/TablePagination/index.ts +0 -2
  322. package/src/components/Tabs/Tabs.stories.tsx +0 -78
  323. package/src/components/Tabs/Tabs.test.tsx +0 -103
  324. package/src/components/Tabs/Tabs.tsx +0 -287
  325. package/src/components/Tabs/Tabs.types.ts +0 -7
  326. package/src/components/Tabs/TabsContext.ts +0 -10
  327. package/src/components/Tabs/index.ts +0 -2
  328. package/src/components/Tag/Tag.stories.tsx +0 -112
  329. package/src/components/Tag/Tag.test.tsx +0 -19
  330. package/src/components/Tag/Tag.tsx +0 -393
  331. package/src/components/Tag/index.ts +0 -2
  332. package/src/components/Text/Text.stories.tsx +0 -59
  333. package/src/components/Text/Text.test.tsx +0 -48
  334. package/src/components/Text/Text.tsx +0 -14
  335. package/src/components/Text/index.ts +0 -2
  336. package/src/components/TextField/TextField.stories.tsx +0 -90
  337. package/src/components/TextField/TextField.test.tsx +0 -36
  338. package/src/components/TextField/TextField.tsx +0 -244
  339. package/src/components/TextField/index.ts +0 -6
  340. package/src/components/TextField/useTextField.tsx +0 -26
  341. package/src/components/Textarea/Textarea.stories.tsx +0 -101
  342. package/src/components/Textarea/Textarea.test.tsx +0 -14
  343. package/src/components/Textarea/Textarea.tsx +0 -230
  344. package/src/components/Textarea/index.ts +0 -2
  345. package/src/components/Toast/Toast.stories.tsx +0 -50
  346. package/src/components/Toast/Toast.test.tsx +0 -24
  347. package/src/components/Toast/Toast.tsx +0 -141
  348. package/src/components/Toast/icons/close.svg +0 -3
  349. package/src/components/Toast/icons/danger.svg +0 -4
  350. package/src/components/Toast/icons/neutral.svg +0 -4
  351. package/src/components/Toast/icons/success.svg +0 -3
  352. package/src/components/Toast/icons/warning.svg +0 -4
  353. package/src/components/Toast/index.tsx +0 -2
  354. package/src/components/ToggleGroup/Toggle.test.tsx +0 -76
  355. package/src/components/ToggleGroup/Toggle.tsx +0 -158
  356. package/src/components/ToggleGroup/ToggleGroup.constants.ts +0 -16
  357. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -145
  358. package/src/components/ToggleGroup/ToggleGroup.test.tsx +0 -237
  359. package/src/components/ToggleGroup/ToggleGroup.tsx +0 -165
  360. package/src/components/ToggleGroup/ToggleGroup.types.ts +0 -35
  361. package/src/components/ToggleGroup/ToggleGroupContext.ts +0 -13
  362. package/src/components/ToggleGroup/index.ts +0 -3
  363. package/src/components/Tooltip/Tooltip.stories.tsx +0 -82
  364. package/src/components/Tooltip/Tooltip.test.tsx +0 -49
  365. package/src/components/Tooltip/Tooltip.tsx +0 -185
  366. package/src/components/Tooltip/index.ts +0 -2
  367. package/src/components/TopNavigation/Logo/Logo.test.tsx +0 -21
  368. package/src/components/TopNavigation/Logo/Logo.tsx +0 -20
  369. package/src/components/TopNavigation/Logo/index.ts +0 -1
  370. package/src/components/TopNavigation/Menu/Menu.test.tsx +0 -125
  371. package/src/components/TopNavigation/Menu/Menu.tsx +0 -62
  372. package/src/components/TopNavigation/Menu/MenuItemDropdown.tsx +0 -118
  373. package/src/components/TopNavigation/Menu/MenuItemIcon.tsx +0 -50
  374. package/src/components/TopNavigation/Menu/index.ts +0 -1
  375. package/src/components/TopNavigation/OpenSideNavButton/OpenSideNavButton.tsx +0 -28
  376. package/src/components/TopNavigation/OpenSideNavButton/index.ts +0 -1
  377. package/src/components/TopNavigation/TopNavigation.stories.tsx +0 -42
  378. package/src/components/TopNavigation/TopNavigation.tsx +0 -47
  379. package/src/components/TopNavigation/index.ts +0 -2
  380. package/src/components/VisuallyHidden/VisuallyHidden.mdx +0 -26
  381. package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -32
  382. package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +0 -18
  383. package/src/components/VisuallyHidden/VisuallyHidden.tsx +0 -6
  384. package/src/components/VisuallyHidden/index.ts +0 -1
  385. package/src/docs/tools/DatePickerEvent.stories.mdx +0 -108
  386. package/src/docs/tools/DragDropFileEvent.stories.mdx +0 -75
  387. package/src/docs/tools/conditional.stories.mdx +0 -251
  388. package/src/docs/tools/selectEvent.stories.mdx +0 -121
  389. package/src/hooks/useClickOutside/index.ts +0 -1
  390. package/src/hooks/useClickOutside/useClickOutside.test.tsx +0 -116
  391. package/src/hooks/useClickOutside/useClickOutside.ts +0 -65
  392. package/src/hooks/useDidMount/index.ts +0 -1
  393. package/src/hooks/useDidMount/useDidMount.test.tsx +0 -38
  394. package/src/hooks/useDidMount/useDidMount.ts +0 -20
  395. package/src/hooks/useFingerprint/index.ts +0 -1
  396. package/src/hooks/useFingerprint/useFingerprint.test.ts +0 -76
  397. package/src/hooks/useFingerprint/useFingerprint.ts +0 -94
  398. package/src/hooks/useFocusTrap/index.ts +0 -2
  399. package/src/hooks/useFocusTrap/useFocusTrap.stories.tsx +0 -87
  400. package/src/hooks/useFocusTrap/useFocusTrap.test.tsx +0 -129
  401. package/src/hooks/useFocusTrap/useFocusTrap.ts +0 -187
  402. package/src/hooks/useFocusWithin/index.ts +0 -2
  403. package/src/hooks/useFocusWithin/useFocusWithin.test.tsx +0 -71
  404. package/src/hooks/useFocusWithin/useFocusWithin.ts +0 -62
  405. package/src/hooks/useHeightExpansionToggler/index.ts +0 -2
  406. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.test.tsx +0 -85
  407. package/src/hooks/useHeightExpansionToggler/useHeightExpansionToggler.ts +0 -54
  408. package/src/hooks/useID/index.ts +0 -1
  409. package/src/hooks/useID/useID.ts +0 -18
  410. package/src/hooks/useSelectable/SelectableStrategy.test.ts +0 -424
  411. package/src/hooks/useSelectable/SelectableStrategy.ts +0 -143
  412. package/src/hooks/useSelectable/index.ts +0 -8
  413. package/src/hooks/useSelectable/useSelectable.test.ts +0 -221
  414. package/src/hooks/useSelectable/useSelectable.ts +0 -156
  415. package/src/hooks/useSelectable/useSelectable.types.ts +0 -45
  416. package/src/hooks/useWindowResize/index.ts +0 -1
  417. package/src/hooks/useWindowResize/useWindowResize.ts +0 -27
  418. package/src/index.ts +0 -188
  419. package/src/stories/assets/code-brackets.svg +0 -1
  420. package/src/stories/assets/colors.svg +0 -1
  421. package/src/stories/assets/comments.svg +0 -1
  422. package/src/stories/assets/direction.svg +0 -1
  423. package/src/stories/assets/flow.svg +0 -1
  424. package/src/stories/assets/plugin.svg +0 -1
  425. package/src/stories/assets/repo.svg +0 -1
  426. package/src/stories/assets/stackalt.svg +0 -1
  427. package/src/stories/introduction.stories.mdx +0 -57
  428. package/src/stories/startPage.stories.mdx +0 -95
  429. package/src/styles/activatable.tsx +0 -30
  430. package/src/styles/disableable.tsx +0 -45
  431. package/src/styles/ellipsizable.tsx +0 -14
  432. package/src/styles/focusable.tsx +0 -32
  433. package/src/styles/font.test.ts +0 -31
  434. package/src/styles/font.tsx +0 -40
  435. package/src/styles/hidden.tsx +0 -29
  436. package/src/styles/hoverable.tsx +0 -30
  437. package/src/styles/transition.tsx +0 -25
  438. package/src/styles/typography.test.ts +0 -93
  439. package/src/styles/typography.ts +0 -190
  440. package/src/testing/DatePickerEvent/DatePickerEvent.ts +0 -117
  441. package/src/testing/DatePickerEvent/DateRangePickerEvent.ts +0 -83
  442. package/src/testing/DatePickerEvent/index.ts +0 -2
  443. package/src/testing/DragDropFileEvent/DragDropFileEvent.ts +0 -56
  444. package/src/testing/DragDropFileEvent/index.ts +0 -1
  445. package/src/testing/SelectEvent/SelectEvent.test.tsx +0 -192
  446. package/src/testing/SelectEvent/SelectEvent.ts +0 -264
  447. package/src/testing/SelectEvent/index.ts +0 -1
  448. package/src/testing/getInterpolatedStyles/getInterpolatedStyles.ts +0 -25
  449. package/src/testing/getInterpolatedStyles/index.ts +0 -1
  450. package/src/testing/index.ts +0 -6
  451. package/src/testing/renderWithDragDropFileProvider/index.ts +0 -1
  452. package/src/testing/renderWithDragDropFileProvider/renderWithDragDropFileProvider.tsx +0 -28
  453. package/src/tests/generator.ts +0 -127
  454. package/src/tests/renderer.tsx +0 -39
  455. package/src/theming/index.ts +0 -42
  456. package/src/theming/themes/alice.theme.ts +0 -1022
  457. package/src/theming/themes/index.ts +0 -3
  458. package/src/theming/themes/loadsmart.theme.ts +0 -1019
  459. package/src/theming/themes/miranda-compatibility.theme.ts +0 -972
  460. package/src/theming/theming.helpers.ts +0 -95
  461. package/src/tools/conditional.test.ts +0 -166
  462. package/src/tools/conditional.ts +0 -127
  463. package/src/tools/index.ts +0 -2
  464. package/src/tools/prop.test.ts +0 -52
  465. package/src/tools/prop.ts +0 -36
  466. package/src/utils/toolset/awaitTo.ts +0 -24
  467. package/src/utils/toolset/flatten.ts +0 -3
  468. package/src/utils/toolset/formatBytes.test.ts +0 -45
  469. package/src/utils/toolset/formatBytes.ts +0 -18
  470. package/src/utils/toolset/get.ts +0 -2
  471. package/src/utils/toolset/getID.test.ts +0 -57
  472. package/src/utils/toolset/getID.ts +0 -93
  473. package/src/utils/toolset/getOrdinalSuffix.test.ts +0 -27
  474. package/src/utils/toolset/getOrdinalSuffix.ts +0 -15
  475. package/src/utils/toolset/highlightMatch.test.tsx +0 -32
  476. package/src/utils/toolset/highlightMatch.tsx +0 -32
  477. package/src/utils/toolset/interleave.test.ts +0 -40
  478. package/src/utils/toolset/interleave.ts +0 -23
  479. package/src/utils/toolset/isEmpty.ts +0 -2
  480. package/src/utils/toolset/isThenable.test.ts +0 -40
  481. package/src/utils/toolset/isThenable.ts +0 -14
  482. package/src/utils/toolset/keyboard.ts +0 -50
  483. package/src/utils/toolset/omit.ts +0 -2
  484. package/src/utils/toolset/pluralize.ts +0 -16
  485. package/src/utils/toolset/range.ts +0 -2
  486. package/src/utils/toolset/rem.ts +0 -7
  487. package/src/utils/toolset/styledCompounds.ts +0 -22
  488. package/src/utils/toolset/toArray.ts +0 -16
  489. package/src/utils/types/ColorScheme.ts +0 -3
  490. package/src/utils/types/EventLike.ts +0 -11
  491. package/src/utils/types/InterpolatedStyle.ts +0 -3
  492. package/src/utils/types/Status.ts +0 -8
@@ -1,173 +0,0 @@
1
- import React from 'react'
2
- import { composeStories } from '@storybook/react'
3
-
4
- import { ACTIONS, PROFILE_ACTIONS, SUBSCRIPTION_ACTIONS } from './Dropdown.fixtures'
5
- import * as stories from './Dropdown.stories'
6
- import generator from '../../tests/generator'
7
- import renderer, { screen, user, waitFor } from '../../tests/renderer'
8
-
9
- const { Playground, WithSections, Extended } = composeStories(stories)
10
-
11
- describe('Dropdown', () => {
12
- describe('Generic', () => {
13
- const setup = (overrides?: Partial<stories.DropdownStoryProps>) =>
14
- renderer(<Playground {...overrides} />).render()
15
-
16
- it('starts collapsed', () => {
17
- setup()
18
-
19
- screen.getByText('Actions')
20
-
21
- for (let i = 0; i < ACTIONS.length; i++) {
22
- expect(screen.queryByText(ACTIONS[i].label)).not.toBeInTheDocument()
23
- }
24
- })
25
-
26
- it('renders all options when expanded', async () => {
27
- setup()
28
-
29
- user.click(screen.getByText('Actions'))
30
-
31
- expect(await screen.findByText(ACTIONS[0].label)).toBeInTheDocument()
32
-
33
- for (let i = 1; i < ACTIONS.length; i++) {
34
- expect(screen.getByText(ACTIONS[i].label)).toBeInTheDocument()
35
- }
36
- })
37
-
38
- it('performs option click and collapses', async () => {
39
- setup()
40
-
41
- user.click(screen.getByText('Actions'))
42
-
43
- await screen.findByTestId('dropdown-menu')
44
-
45
- const items = screen.getAllByTestId('dropdown-menu-item')
46
- expect(items.length).toBe(ACTIONS.length)
47
-
48
- const indexToClick = generator.natural({ min: 0, max: items.length - 1 })
49
- const itemToClick = items[indexToClick]
50
-
51
- user.click(itemToClick)
52
- expect(screen.getByTestId('output')).toHaveTextContent(ACTIONS[indexToClick].label)
53
-
54
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
55
- })
56
-
57
- it('does not toggles when disabled', async () => {
58
- setup({ disabled: true })
59
-
60
- user.click(screen.getByText('Actions'), undefined, {
61
- skipPointerEventsCheck: true,
62
- })
63
-
64
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
65
- })
66
- })
67
-
68
- describe('With Sections', () => {
69
- const setup = (overrides?: stories.DropdownStoryProps) =>
70
- renderer(<WithSections {...overrides} />).render()
71
-
72
- it('starts collapsed', () => {
73
- setup()
74
-
75
- screen.getByText('Sections')
76
-
77
- for (let i = 0; i < ACTIONS.length; i++) {
78
- expect(screen.queryByText(ACTIONS[i].label)).not.toBeInTheDocument()
79
- }
80
- })
81
-
82
- it('renders all sections and their options when expanded', async () => {
83
- setup()
84
-
85
- user.click(screen.getByText('Sections'))
86
-
87
- await screen.findByTestId('dropdown-menu')
88
-
89
- screen.getByText('My profile')
90
-
91
- for (let i = 0; i < PROFILE_ACTIONS.length; i++) {
92
- expect(screen.getByText(PROFILE_ACTIONS[i].label)).toBeInTheDocument()
93
- }
94
-
95
- screen.getByText('Subscription')
96
-
97
- for (let i = 0; i < SUBSCRIPTION_ACTIONS.length; i++) {
98
- expect(screen.getByText(SUBSCRIPTION_ACTIONS[i].label)).toBeInTheDocument()
99
- }
100
- })
101
-
102
- it('performs option click and collapses', async () => {
103
- const SECTION_ACTIONS = [...PROFILE_ACTIONS, ...SUBSCRIPTION_ACTIONS]
104
-
105
- setup()
106
-
107
- user.click(screen.getByText('Sections'))
108
-
109
- await screen.findByTestId('dropdown-menu')
110
-
111
- const items = screen.getAllByTestId('dropdown-menu-item')
112
- expect(items.length).toBe(SECTION_ACTIONS.length)
113
-
114
- const indexToClick = generator.natural({ min: 0, max: items.length - 1 })
115
- const itemToClick = items[indexToClick]
116
-
117
- user.click(itemToClick)
118
- expect(screen.getByTestId('output')).toHaveTextContent(SECTION_ACTIONS[indexToClick].label)
119
-
120
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
121
- })
122
- })
123
-
124
- describe('With Header and Footer', () => {
125
- const setup = (overrides?: stories.DropdownStoryProps) =>
126
- renderer(<Extended {...overrides} />).render()
127
-
128
- it('starts collapsed', () => {
129
- setup()
130
-
131
- screen.getByText('With Header & Footer')
132
-
133
- for (let i = 0; i < ACTIONS.length; i++) {
134
- expect(screen.queryByText(ACTIONS[i].label)).not.toBeInTheDocument()
135
- }
136
- })
137
-
138
- it('renders header, footer, and options when expanded', async () => {
139
- setup()
140
-
141
- user.click(screen.getByText('With Header & Footer'))
142
-
143
- await screen.findByTestId('dropdown-menu')
144
-
145
- screen.getByText('Header')
146
-
147
- for (let i = 0; i < ACTIONS.length; i++) {
148
- expect(screen.getByText(ACTIONS[i].label)).toBeInTheDocument()
149
- }
150
-
151
- screen.getByText('A cool footer')
152
- })
153
-
154
- it('performs option click and collapses', async () => {
155
- setup()
156
-
157
- user.click(screen.getByText('With Header & Footer'))
158
-
159
- await screen.findByTestId('dropdown-menu')
160
-
161
- const items = screen.getAllByTestId('dropdown-menu-item')
162
- expect(items.length).toBe(ACTIONS.length)
163
-
164
- const indexToClick = generator.natural({ min: 0, max: items.length - 1 })
165
- const itemToClick = items[indexToClick]
166
-
167
- user.click(itemToClick)
168
- expect(screen.getByTestId('output')).toHaveTextContent(ACTIONS[indexToClick].label)
169
-
170
- await waitFor(() => expect(screen.queryByTestId('dropdown-menu')).not.toBeInTheDocument())
171
- })
172
- })
173
- })
@@ -1,141 +0,0 @@
1
- import React, { useMemo, useRef } from 'react'
2
- import styled from 'styled-components'
3
-
4
- import {
5
- DropdownMenu,
6
- DropdownMenuItem,
7
- DropdownMenuSection,
8
- DropdownSeparator,
9
- } from './DropdownMenu'
10
- import { useClickOutside } from 'hooks/useClickOutside'
11
- import DropdownContext from './Dropdown.context'
12
- import DropdownTrigger from './DropdownTrigger'
13
- import hidden from 'styles/hidden'
14
- import useDropdown from './useDropdown'
15
- import { Popover } from 'components/Popover'
16
-
17
- import type { DropdownProps, GenericDropdownProps, DropdownMenuProps } from './Dropdown.types'
18
- import type { PopoverAlign } from 'components/Popover'
19
-
20
- const DropdownWrapper = styled.div`
21
- position: relative;
22
- `
23
-
24
- const HiddenCloseButton = styled.button.attrs({
25
- type: 'button',
26
- tabIndex: -1,
27
- })`
28
- ${hidden(true)}
29
- `
30
-
31
- function useDeprecatedAlignFromMenu({
32
- children,
33
- align,
34
- }: React.PropsWithChildren<{ align?: PopoverAlign }>): PopoverAlign {
35
- let result: PopoverAlign | undefined
36
-
37
- if (align) {
38
- return align
39
- }
40
-
41
- React.Children.forEach(children, (child) => {
42
- if (React.isValidElement<DropdownMenuProps>(child) && child.type === DropdownMenu) {
43
- result = child.props.align
44
- }
45
- })
46
-
47
- return (result || align) as PopoverAlign
48
- }
49
-
50
- // TODO: add focus trap here to allow navigating options with keyboard
51
-
52
- /**
53
- * Generic dropdown component that allows composing its pieces as desired.
54
- *
55
- * Based on:
56
- * - https://www.w3.org/TR/2017/REC-wai-aria-1.1-20171214/#menu
57
- * - https://www.w3.org/WAI/tutorials/menus/application-menus/
58
- *
59
- * @param props
60
- * @returns
61
- */
62
- export function GenericDropdown(props: GenericDropdownProps): JSX.Element {
63
- const {
64
- children,
65
- expanded,
66
- toggle,
67
- disabled = false,
68
- expandDisabled = false,
69
- onBlur,
70
- position,
71
- ...others
72
- } = props
73
- const contextValue = useMemo(
74
- () => ({ expanded, toggle, disabled, expandDisabled }),
75
- [expanded, toggle, disabled, expandDisabled]
76
- )
77
- const ref = useRef(null)
78
-
79
- const align = useDeprecatedAlignFromMenu(props)
80
-
81
- useClickOutside(
82
- ref,
83
- function handleClickOutside(event?: MouseEvent | TouchEvent | KeyboardEvent) {
84
- onBlur?.(event)
85
-
86
- if (!expanded) {
87
- return
88
- }
89
-
90
- toggle()
91
- }
92
- )
93
-
94
- return (
95
- <DropdownWrapper {...others} role="menubar" ref={ref}>
96
- <DropdownContext.Provider value={contextValue}>
97
- <HiddenCloseButton disabled={disabled} onClick={toggle}>
98
- Close
99
- </HiddenCloseButton>
100
- <Popover strategy="fixed" position={position} align={align}>
101
- {children}
102
- </Popover>
103
- </DropdownContext.Provider>
104
- </DropdownWrapper>
105
- )
106
- }
107
-
108
- /**
109
- * @example
110
- <Dropdown>
111
- <Dropdown.Trigger>Download</Dropdown.Trigger>
112
- <Dropdown.Menu
113
- header={<p className="px-2">Header</p>}
114
- footer={<p className="px-2">A cool footer</p>}
115
- >
116
- {[{label: 'Hello', value: 'hi'}, { label: 'World', value: 'planet' }].map(({ label, value }) => (
117
- <Dropdown.Item
118
- key={value}
119
- onClick={() => {
120
- setMessage(label)
121
- }}
122
- >
123
- {label}
124
- </Dropdown.Item>
125
- ))}
126
- </Dropdown.Menu>
127
- </Dropdown>
128
- */
129
- function Dropdown(props: DropdownProps): JSX.Element {
130
- const dropdownProps = useDropdown(props)
131
-
132
- return <GenericDropdown {...props} {...dropdownProps} />
133
- }
134
-
135
- Dropdown.Trigger = DropdownTrigger
136
- Dropdown.Menu = DropdownMenu
137
- Dropdown.Section = DropdownMenuSection
138
- Dropdown.Item = DropdownMenuItem
139
- Dropdown.Separator = DropdownSeparator
140
-
141
- export default Dropdown
@@ -1,59 +0,0 @@
1
- import type { PopoverPlacement } from 'components/Popover'
2
- import type { ButtonProps } from 'components/Button'
3
- import type { ButtonHTMLAttributes, HTMLAttributes, ReactNode } from 'react'
4
-
5
- export interface useDropdownProps {
6
- expanded: boolean
7
- toggle: () => void
8
- }
9
-
10
- export interface useDropdownReturn {
11
- expanded: boolean
12
- toggle: () => void
13
- expand: () => void
14
- collapse: () => void
15
- }
16
-
17
- export interface DropdownProps
18
- extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onBlur'>,
19
- PopoverPlacement {
20
- disabled?: boolean
21
- /**
22
- * Use this prop to not allow the dropdown to be expanded.
23
- * While the `disabled` prop applies to the whole dropdown trigger element, this one only disables the TriggerHandle.
24
- */
25
- expandDisabled?: boolean
26
- onBlur?: (event?: MouseEvent | TouchEvent | KeyboardEvent) => void
27
- }
28
-
29
- export interface GenericDropdownProps extends DropdownProps, useDropdownProps {}
30
-
31
- export type DropdownTriggerProps = ButtonProps & {
32
- outlined?: boolean
33
- }
34
-
35
- export interface DropdownMenuProps extends HTMLAttributes<HTMLDivElement> {
36
- header?: ReactNode
37
- footer?: ReactNode
38
- /**
39
- * @deprecated Use the `align` prop on <Dropdown> wrapper instead.
40
- */
41
- align?: 'start' | 'end'
42
- }
43
-
44
- export interface DropdownMenuItemProps extends ButtonHTMLAttributes<HTMLButtonElement> {
45
- leading?: ReactNode
46
- trailing?: ReactNode
47
- onClick?: (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => boolean | undefined | void
48
- }
49
-
50
- export interface DropdownMenuSectionProps extends HTMLAttributes<HTMLDivElement> {
51
- header: ReactNode
52
- }
53
-
54
- export interface DropdownContextReturn {
55
- disabled: boolean
56
- expandDisabled: boolean
57
- expanded: boolean
58
- toggle: () => void
59
- }
@@ -1,263 +0,0 @@
1
- import React, { forwardRef, useContext } from 'react'
2
- import styled from 'styled-components'
3
-
4
- import { getToken as token } from 'theming'
5
- import { Popover } from 'components/Popover'
6
- import disableable from 'styles/disableable'
7
- import DropdownContext from './Dropdown.context'
8
- import focusable from 'styles/focusable'
9
- import font from 'styles/font'
10
- import hoverable from 'styles/hoverable'
11
- import transition from 'styles/transition'
12
- import useID from 'hooks/useID'
13
-
14
- import type {
15
- DropdownMenuItemProps,
16
- DropdownMenuProps,
17
- DropdownMenuSectionProps,
18
- } from './Dropdown.types'
19
-
20
- /**
21
- * TODO: add aria-labelledby that should refer to the dropdown label to the role="menu" container.
22
- * TODO: navigate through items using arrow keys.
23
- * TODO: add animation for a smooth open/close effect.
24
- */
25
-
26
- const StyledPopover = styled(Popover.Floating)`
27
- z-index: ${token('z-index-droplist')};
28
-
29
- min-width: 10em;
30
-
31
- background: ${token('dropdown-background')};
32
- border: 1px solid ${token('dropdown-border-color')};
33
- border-radius: ${token('dropdown-border-radius')};
34
- box-shadow: ${token('dropdown-shadow')};
35
- width: max-content;
36
- `
37
-
38
- const StyledSpan = styled.span`
39
- display: inline-flex;
40
- flex-flow: row nowrap;
41
- align-items: center;
42
- justify-content: center;
43
-
44
- font-size: 1em;
45
- `
46
-
47
- const Leading = styled(StyledSpan)`
48
- /* placeholder */
49
- `
50
-
51
- const Trailing = styled(StyledSpan)`
52
- /* placeholder */
53
- `
54
-
55
- const Children = styled.span`
56
- display: inline-flex;
57
- flex-flow: row nowrap;
58
- align-items: center;
59
- justify-content: flex-start;
60
- padding: ${token('space-s')} 0;
61
-
62
- white-space: nowrap;
63
- `
64
-
65
- const DropdownItemWrapper = styled.button`
66
- ${transition()}
67
-
68
- display: inline-flex;
69
- justify-content: flex-start;
70
- align-items: center;
71
-
72
- ${font({
73
- height: 'font-height-3',
74
- weight: 'font-weight-medium',
75
- })}
76
- font-size: ${token('font-size-4')};
77
-
78
- min-height: 36px;
79
- flex: 1 0;
80
-
81
- border: none;
82
- border-radius: ${token('border-radius-s')};
83
- background: ${token('color-neutral-white')};
84
-
85
- color: ${token('color-neutral-darker')};
86
-
87
- padding: 0 ${token('space-s')};
88
-
89
- margin: 0 ${token('space-s')};
90
-
91
- cursor: pointer;
92
-
93
- ${hoverable`
94
- background: ${token('color-neutral-lighter')};
95
- `}
96
-
97
- ${focusable`
98
- background: ${token('color-neutral-lighter')};
99
- `}
100
-
101
- ${disableable()}
102
-
103
- ${Children} {
104
- flex: 1 0 auto;
105
-
106
- text-align: left;
107
- }
108
-
109
- ${Leading}, ${Trailing} {
110
- flex: 0 1 auto;
111
- }
112
-
113
- ${Leading} + ${Children} {
114
- margin: 0 0 0 ${token('space-s')};
115
- }
116
-
117
- ${Children} + ${Trailing} {
118
- margin: 0 0 0 ${token('space-s')};
119
- }
120
- `
121
-
122
- const DropdownSectionHeader = styled.strong`
123
- display: flex;
124
- justify-content: flex-start;
125
- align-items: center;
126
-
127
- ${font({
128
- height: 'font-height-3',
129
- weight: 'font-weight-bold',
130
- })}
131
-
132
- font-size: ${token('font-size-4')};
133
-
134
- margin: 0 ${token('space-s')};
135
- `
136
-
137
- const DropdownSectionWrapper = styled.div`
138
- display: flex;
139
- flex-direction: column;
140
- `
141
-
142
- const GenericDropdownMenuWrapper = styled.div`
143
- display: flex;
144
- flex-direction: column;
145
- padding: ${token('space-s')} 0;
146
-
147
- ${font({
148
- height: 'font-height-3',
149
- weight: 'font-weight-medium',
150
- })}
151
-
152
- font-size: ${token('font-size-4')};
153
- `
154
-
155
- const DropdownMenuWrapper = styled(GenericDropdownMenuWrapper)`
156
- max-height: 240px;
157
- overflow-y: auto;
158
- max-width: 100%;
159
- width: 100%;
160
-
161
- ${DropdownItemWrapper} + ${DropdownItemWrapper},
162
- ${DropdownSectionHeader} + ${DropdownItemWrapper} {
163
- margin-top: ${token('space-2xs')};
164
- }
165
-
166
- ${DropdownSectionWrapper} + ${DropdownSectionWrapper} {
167
- margin: ${token('space-m')} 0 0 0;
168
- }
169
-
170
- ${GenericDropdownMenuWrapper} + &,
171
- & + ${GenericDropdownMenuWrapper},
172
- ${GenericDropdownMenuWrapper} + ${GenericDropdownMenuWrapper} {
173
- border-top: 2px solid ${token('color-neutral-lighter')};
174
- }
175
- `
176
-
177
- export const DropdownSeparator = styled.hr.attrs({
178
- 'aria-hidden': true,
179
- })`
180
- display: block;
181
- height: 2px;
182
-
183
- margin: ${token('space-s')} 0;
184
-
185
- border: 0;
186
- border-bottom: 2px solid ${token('card-separator-background')};
187
- `
188
-
189
- export const DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(function DropdownMenu(
190
- props: DropdownMenuProps,
191
- ref
192
- ): JSX.Element | null {
193
- const context = useContext(DropdownContext)
194
-
195
- if (!context) {
196
- throw new Error('DropdownMenu must be inside a DropdownContext')
197
- }
198
-
199
- const { children, header, footer, ...others } = props
200
- const { expanded } = context
201
-
202
- if (!expanded) {
203
- return null
204
- }
205
-
206
- return (
207
- <StyledPopover role="presentation">
208
- {header && <GenericDropdownMenuWrapper>{header}</GenericDropdownMenuWrapper>}
209
- {children && (
210
- <DropdownMenuWrapper ref={ref} role="menu" data-testid="dropdown-menu" {...others}>
211
- {children}
212
- </DropdownMenuWrapper>
213
- )}
214
- {footer && <GenericDropdownMenuWrapper>{footer}</GenericDropdownMenuWrapper>}
215
- </StyledPopover>
216
- )
217
- })
218
-
219
- export function DropdownMenuItem(props: DropdownMenuItemProps): JSX.Element {
220
- const context = useContext(DropdownContext)
221
- const { leading, children, trailing, onClick, ...others } = props
222
- const id = useID(others.id)
223
-
224
- if (!context) {
225
- throw new Error('DropdownMenuItem must be inside a DropdownContext')
226
- }
227
-
228
- const { toggle } = context
229
-
230
- return (
231
- <DropdownItemWrapper
232
- role="menuitem"
233
- type="button"
234
- data-testid="dropdown-menu-item"
235
- {...others}
236
- aria-labelledby={id}
237
- onClick={(e) => {
238
- e.persist()
239
-
240
- const shouldKeepOpen = onClick?.(e)
241
-
242
- if (!shouldKeepOpen) {
243
- toggle()
244
- }
245
- }}
246
- >
247
- {leading && <Leading>{leading}</Leading>}
248
- <Children id={id}>{children}</Children>
249
- {trailing && <Trailing>{trailing}</Trailing>}
250
- </DropdownItemWrapper>
251
- )
252
- }
253
-
254
- export function DropdownMenuSection(props: DropdownMenuSectionProps): JSX.Element {
255
- const { children, header, ...others } = props
256
-
257
- return (
258
- <DropdownSectionWrapper data-testid="dropdown-menu-section" {...others} role="presentation">
259
- <DropdownSectionHeader>{header}</DropdownSectionHeader>
260
- {children}
261
- </DropdownSectionWrapper>
262
- )
263
- }