@bynder/compact-view 5.1.3 → 5.1.4

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 (376) hide show
  1. package/ActiveFilter.js +33 -0
  2. package/ActiveFilter.js.map +1 -0
  3. package/ActiveFilters.js +81 -0
  4. package/ActiveFilters.js.map +1 -0
  5. package/AddMedia.js +90 -0
  6. package/AddMedia.js.map +1 -0
  7. package/Advanced.js +66 -0
  8. package/Advanced.js.map +1 -0
  9. package/App.d.ts +1 -1
  10. package/App.js +89 -0
  11. package/App.js.map +1 -0
  12. package/AssetCard.js +172 -0
  13. package/AssetCard.js.map +1 -0
  14. package/AssetCardMetaproperties.js +47 -0
  15. package/AssetCardMetaproperties.js.map +1 -0
  16. package/AssetFilter.js +158 -0
  17. package/AssetFilter.js.map +1 -0
  18. package/AssetFilterContext.js +162 -0
  19. package/AssetFilterContext.js.map +1 -0
  20. package/AssetItem.js +40 -0
  21. package/AssetItem.js.map +1 -0
  22. package/AssetList.js +158 -0
  23. package/AssetList.js.map +1 -0
  24. package/AssetTypeItem.js +34 -0
  25. package/AssetTypeItem.js.map +1 -0
  26. package/AssetsView.js +61 -0
  27. package/AssetsView.js.map +1 -0
  28. package/Autocomplete.js +148 -0
  29. package/Autocomplete.js.map +1 -0
  30. package/ButtonAction.js +14 -0
  31. package/ButtonAction.js.map +1 -0
  32. package/CardSkeleton.js +31 -0
  33. package/CardSkeleton.js.map +1 -0
  34. package/Checkbox.styles.js +38 -0
  35. package/Checkbox.styles.js.map +1 -0
  36. package/Chip.js +43 -0
  37. package/Chip.js.map +1 -0
  38. package/CollectionCard.js +56 -0
  39. package/CollectionCard.js.map +1 -0
  40. package/CollectionItem.js +41 -0
  41. package/CollectionItem.js.map +1 -0
  42. package/CollectionList.js +53 -0
  43. package/CollectionList.js.map +1 -0
  44. package/CollectionView.js +73 -0
  45. package/CollectionView.js.map +1 -0
  46. package/CollectionsView.js +58 -0
  47. package/CollectionsView.js.map +1 -0
  48. package/ConfigContext.js +18 -0
  49. package/ConfigContext.js.map +1 -0
  50. package/ConnectButton.js +20 -0
  51. package/ConnectButton.js.map +1 -0
  52. package/Container.js +52 -0
  53. package/Container.js.map +1 -0
  54. package/ContextAction.js +42 -0
  55. package/ContextAction.js.map +1 -0
  56. package/Dat/Dat.d.ts +2 -12
  57. package/Dat/DatDropdownItem.d.ts +1 -1
  58. package/Dat/index.d.ts +0 -1
  59. package/Dat.js +90 -0
  60. package/Dat.js.map +1 -0
  61. package/DatDropdownItem.js +47 -0
  62. package/DatDropdownItem.js.map +1 -0
  63. package/DesignSystemContext.js +12 -0
  64. package/DesignSystemContext.js.map +1 -0
  65. package/DirectionSelect.js +43 -0
  66. package/DirectionSelect.js.map +1 -0
  67. package/DocumentIcon.js +69 -0
  68. package/DocumentIcon.js.map +1 -0
  69. package/DomainInput.js +39 -0
  70. package/DomainInput.js.map +1 -0
  71. package/DragSelect.js +144 -0
  72. package/DragSelect.js.map +1 -0
  73. package/Dropdown.js +72 -0
  74. package/Dropdown.js.map +1 -0
  75. package/DropdownContent.js +59 -0
  76. package/DropdownContent.js.map +1 -0
  77. package/DropdownListItem.js +52 -0
  78. package/DropdownListItem.js.map +1 -0
  79. package/ErrorIcon.js +48 -0
  80. package/ErrorIcon.js.map +1 -0
  81. package/ErrorMessage.js +40 -0
  82. package/ErrorMessage.js.map +1 -0
  83. package/FieldSelect.js +74 -0
  84. package/FieldSelect.js.map +1 -0
  85. package/FileSelector.js +239 -0
  86. package/FileSelector.js.map +1 -0
  87. package/Header.js +42 -0
  88. package/Header.js.map +1 -0
  89. package/HorizontalScroll.js +51 -0
  90. package/HorizontalScroll.js.map +1 -0
  91. package/InfiniteScroll.js +26 -0
  92. package/InfiniteScroll.js.map +1 -0
  93. package/LeftArrow.js +31 -0
  94. package/LeftArrow.js.map +1 -0
  95. package/LoginComponent.js +32 -0
  96. package/LoginComponent.js.map +1 -0
  97. package/LoginContext.js +85 -0
  98. package/LoginContext.js.map +1 -0
  99. package/MetapropertyFilterContent.js +25 -0
  100. package/MetapropertyFilterContent.js.map +1 -0
  101. package/MetapropertyOption.js +24 -0
  102. package/MetapropertyOption.js.map +1 -0
  103. package/Modal.js +48 -0
  104. package/Modal.js.map +1 -0
  105. package/NoResults.js +51 -0
  106. package/NoResults.js.map +1 -0
  107. package/Oops.js +54 -0
  108. package/Oops.js.map +1 -0
  109. package/Option.js +50 -0
  110. package/Option.js.map +1 -0
  111. package/RefreshingSpinner.js +22 -0
  112. package/RefreshingSpinner.js.map +1 -0
  113. package/ReportModal.js +51 -0
  114. package/ReportModal.js.map +1 -0
  115. package/RightArrow.js +31 -0
  116. package/RightArrow.js.map +1 -0
  117. package/RootElementContext.js +12 -0
  118. package/RootElementContext.js.map +1 -0
  119. package/SearchInput.js +76 -0
  120. package/SearchInput.js.map +1 -0
  121. package/SelectedItemContainer.js +44 -0
  122. package/SelectedItemContainer.js.map +1 -0
  123. package/SelectedItems.js +27 -0
  124. package/SelectedItems.js.map +1 -0
  125. package/SelectionContext.js +144 -0
  126. package/SelectionContext.js.map +1 -0
  127. package/SelectionFooter.js +65 -0
  128. package/SelectionFooter.js.map +1 -0
  129. package/ShadowRoot.js +11 -0
  130. package/ShadowRoot.js.map +1 -0
  131. package/ShadowRootInternal.js +78 -0
  132. package/ShadowRootInternal.js.map +1 -0
  133. package/Shield.js +25 -0
  134. package/Shield.js.map +1 -0
  135. package/Skeleton.js +43 -0
  136. package/Skeleton.js.map +1 -0
  137. package/SmartFilterContent.js +11 -0
  138. package/SmartFilterContent.js.map +1 -0
  139. package/SmartFilterSelect.js +91 -0
  140. package/SmartFilterSelect.js.map +1 -0
  141. package/Smartfilters.js +186 -0
  142. package/Smartfilters.js.map +1 -0
  143. package/Spinner.js +32 -0
  144. package/Spinner.js.map +1 -0
  145. package/StatefulAssetList.js +100 -0
  146. package/StatefulAssetList.js.map +1 -0
  147. package/Styles.css.js +5 -0
  148. package/Styles.css.js.map +1 -0
  149. package/SwitchNLS.js +80 -0
  150. package/SwitchNLS.js.map +1 -0
  151. package/TagItem.js +38 -0
  152. package/TagItem.js.map +1 -0
  153. package/Tags.js +48 -0
  154. package/Tags.js.map +1 -0
  155. package/Theming.js +30 -0
  156. package/Theming.js.map +1 -0
  157. package/Toolbar.js +53 -0
  158. package/Toolbar.js.map +1 -0
  159. package/Tooltip.js +81 -0
  160. package/Tooltip.js.map +1 -0
  161. package/ViewSwitch.js +45 -0
  162. package/ViewSwitch.js.map +1 -0
  163. package/api/filterAssets.d.ts +1 -1
  164. package/api/getCollections.d.ts +1 -1
  165. package/api/getFilters.d.ts +1 -1
  166. package/api/getSimilarityAssets.d.ts +1 -1
  167. package/api/index.d.ts +2 -2
  168. package/api/rest/autocomplete.d.ts +1 -1
  169. package/api/rest/getAssetCounts.d.ts +2 -2
  170. package/api/rest/getInitialFilters.d.ts +2 -2
  171. package/api/rest/getMetapropertiesOptions.d.ts +1 -1
  172. package/app-config/ConfigContext.d.ts +3 -4
  173. package/app-config/appConfig.type.guard.d.ts +1 -1
  174. package/asset.type.js +31 -0
  175. package/asset.type.js.map +1 -0
  176. package/asyncDebounce.js +14 -0
  177. package/asyncDebounce.js.map +1 -0
  178. package/auth.js +35 -0
  179. package/auth.js.map +1 -0
  180. package/autocomplete2.js +25 -0
  181. package/autocomplete2.js.map +1 -0
  182. package/base64Converter.js +15 -0
  183. package/base64Converter.js.map +1 -0
  184. package/chunk.js +10 -0
  185. package/chunk.js.map +1 -0
  186. package/class.js +7 -0
  187. package/class.js.map +1 -0
  188. package/combineFilters.js +9 -0
  189. package/combineFilters.js.map +1 -0
  190. package/combineMetaproperties.js +25 -0
  191. package/combineMetaproperties.js.map +1 -0
  192. package/common/components/CardSkeleton.d.ts +1 -1
  193. package/common/components/Checkbox.styles.d.ts +4 -4
  194. package/common/components/Chip.d.ts +1 -1
  195. package/common/components/DocumentIcon.d.ts +1 -1
  196. package/common/components/DragSelect.d.ts +1 -1
  197. package/common/components/HorizontalScroll.d.ts +1 -1
  198. package/common/components/InfiniteScroll.d.ts +1 -1
  199. package/common/components/LeftArrow.d.ts +1 -1
  200. package/common/components/Modal.d.ts +1 -1
  201. package/common/components/NoResults.d.ts +1 -1
  202. package/common/components/RightArrow.d.ts +1 -1
  203. package/common/components/Skeleton.d.ts +1 -1
  204. package/common/components/Spinner.d.ts +1 -1
  205. package/common/components/Tooltip.d.ts +1 -1
  206. package/common/components/dropdown/Dropdown.d.ts +1 -1
  207. package/common/components/dropdown/DropdownContent.d.ts +1 -1
  208. package/common/components/dropdown/DropdownListItem.d.ts +1 -1
  209. package/common/hooks/useClickOutside.d.ts +1 -1
  210. package/constants.js +15 -0
  211. package/constants.js.map +1 -0
  212. package/createSelectors.js +11 -0
  213. package/createSelectors.js.map +1 -0
  214. package/crypto.js +21 -0
  215. package/crypto.js.map +1 -0
  216. package/error-handling/ErrorIcon.d.ts +1 -1
  217. package/error-handling/ErrorMessage.d.ts +1 -1
  218. package/error-handling/Oops.d.ts +1 -1
  219. package/error-handling/ReportModal.d.ts +1 -1
  220. package/error-handling/Shield.d.ts +1 -1
  221. package/filter/AssetFilter.d.ts +1 -1
  222. package/filter/AssetFilterContext.d.ts +3 -3
  223. package/filter/active-filters/ActiveFilter.d.ts +1 -1
  224. package/filter/active-filters/ActiveFilters.d.ts +1 -1
  225. package/filter/filters/advanced/Advanced.d.ts +1 -1
  226. package/filter/filters/advanced/AssetTypeItem.d.ts +1 -1
  227. package/filter/filters/metaproperty/Metaproperty.d.ts +1 -1
  228. package/filter/filters/metaproperty/MetapropertyFilterContent.d.ts +1 -1
  229. package/filter/filters/metaproperty/MetapropertyOption.d.ts +1 -1
  230. package/filter/filters/metaproperty/SmartFilterContent.d.ts +1 -1
  231. package/filter/filters/smartfilters/Metaproperties/Autocomplete.d.ts +3 -3
  232. package/filter/filters/smartfilters/Metaproperties/Option.d.ts +2 -2
  233. package/filter/filters/smartfilters/Metaproperties/SmartFilterSelect.d.ts +2 -2
  234. package/filter/filters/smartfilters/Smartfilters.d.ts +2 -2
  235. package/filter/filters/tags/TagItem.d.ts +1 -1
  236. package/filter/filters/tags/Tags.d.ts +1 -1
  237. package/filterAssets.js +175 -0
  238. package/filterAssets.js.map +1 -0
  239. package/filterEmptyMetaproperties.js +11 -0
  240. package/filterEmptyMetaproperties.js.map +1 -0
  241. package/getAsset.js +70 -0
  242. package/getAsset.js.map +1 -0
  243. package/getAssetCounts.js +27 -0
  244. package/getAssetCounts.js.map +1 -0
  245. package/getAssets.js +137 -0
  246. package/getAssets.js.map +1 -0
  247. package/getCollections.js +78 -0
  248. package/getCollections.js.map +1 -0
  249. package/getFilters.js +84 -0
  250. package/getFilters.js.map +1 -0
  251. package/getInitialFilters.js +51 -0
  252. package/getInitialFilters.js.map +1 -0
  253. package/getMetapropertiesOptions.js +31 -0
  254. package/getMetapropertiesOptions.js.map +1 -0
  255. package/getSimilarityAssets.js +141 -0
  256. package/getSimilarityAssets.js.map +1 -0
  257. package/handlers.js +11 -0
  258. package/handlers.js.map +1 -0
  259. package/helpers.js +7 -0
  260. package/helpers.js.map +1 -0
  261. package/index.js +9 -1162
  262. package/index.js.map +1 -0
  263. package/index2.js +18 -0
  264. package/index2.js.map +1 -0
  265. package/index3.js +36 -0
  266. package/index3.js.map +1 -0
  267. package/index4.js +20 -0
  268. package/index4.js.map +1 -0
  269. package/logger.js +7 -0
  270. package/logger.js.map +1 -0
  271. package/login/LoginComponent.d.ts +1 -1
  272. package/login/LoginContext.d.ts +1 -1
  273. package/login/components/ConnectButton.d.ts +1 -1
  274. package/login/components/Container.d.ts +1 -1
  275. package/login/components/DomainInput.d.ts +1 -1
  276. package/login/components/Header.d.ts +1 -1
  277. package/login/components/RefreshingSpinner.d.ts +1 -1
  278. package/loginwindow.js +84 -0
  279. package/loginwindow.js.map +1 -0
  280. package/normalizeResponse.js +31 -0
  281. package/normalizeResponse.js.map +1 -0
  282. package/oauth2.js +87 -0
  283. package/oauth2.js.map +1 -0
  284. package/order/DirectionSelect.d.ts +1 -1
  285. package/order/FieldSelect.d.ts +2 -2
  286. package/package.json +2 -9
  287. package/result.type.js +25 -0
  288. package/result.type.js.map +1 -0
  289. package/router/RouterContext.d.ts +1 -1
  290. package/search/SearchInput.d.ts +1 -1
  291. package/search/SwitchNLS.d.ts +1 -1
  292. package/search/index.d.ts +0 -2
  293. package/select/FileSelector.d.ts +1 -1
  294. package/select/SelectionContext.d.ts +1 -1
  295. package/select/SelectionFooter.d.ts +1 -1
  296. package/select/add-media/AddMedia.d.ts +1 -1
  297. package/select/add-media/ButtonAction.d.ts +1 -1
  298. package/select/current-selection/AssetItem.d.ts +1 -1
  299. package/select/current-selection/CollectionItem.d.ts +1 -1
  300. package/select/current-selection/SelectedItemContainer.d.ts +1 -1
  301. package/select/current-selection/SelectedItems.d.ts +1 -1
  302. package/store/useDatStore.d.ts +73 -0
  303. package/store/useOrderingStore.d.ts +2 -2
  304. package/store/useRouterStore.d.ts +4 -4
  305. package/store/useSearchStore.d.ts +69 -0
  306. package/store/useSimilaritySearchStore.d.ts +67 -0
  307. package/style/DesignSystemContext.d.ts +1 -1
  308. package/style/RootElementContext.d.ts +1 -1
  309. package/style/Theming.d.ts +1 -1
  310. package/style/shadowroot/ShadowRoot.d.ts +1 -1
  311. package/style/shadowroot/ShadowRootInternal.d.ts +1 -1
  312. package/text.js +9 -0
  313. package/text.js.map +1 -0
  314. package/toolbar/Toolbar.d.ts +1 -1
  315. package/toolbar/ViewSwitch.d.ts +1 -1
  316. package/trimMetapropertyValue.js +6 -0
  317. package/trimMetapropertyValue.js.map +1 -0
  318. package/url.js +7 -0
  319. package/url.js.map +1 -0
  320. package/useAccountDomain.js +33 -0
  321. package/useAccountDomain.js.map +1 -0
  322. package/useAuthInformation.js +42 -0
  323. package/useAuthInformation.js.map +1 -0
  324. package/useClickOutside.js +16 -0
  325. package/useClickOutside.js.map +1 -0
  326. package/useDatStore.js +62 -0
  327. package/useDatStore.js.map +1 -0
  328. package/useDimensions.js +31 -0
  329. package/useDimensions.js.map +1 -0
  330. package/useOrderingStore.js +27 -0
  331. package/useOrderingStore.js.map +1 -0
  332. package/useRouterStore.js +21 -0
  333. package/useRouterStore.js.map +1 -0
  334. package/useSearchStore.js +49 -0
  335. package/useSearchStore.js.map +1 -0
  336. package/useSimilaritySearchStore.js +28 -0
  337. package/useSimilaritySearchStore.js.map +1 -0
  338. package/utils/base64Converter.d.ts +1 -1
  339. package/utils/combineFilters.d.ts +1 -1
  340. package/utils/combineMetaproperties.d.ts +2 -2
  341. package/utils/filterEmptyMetaproperties.d.ts +1 -1
  342. package/utils/getMetaPropertiesForFilter.d.ts +1 -1
  343. package/utils/normalizeResponse.d.ts +1 -1
  344. package/utils.js +49 -0
  345. package/utils.js.map +1 -0
  346. package/utils2.js +51 -0
  347. package/utils2.js.map +1 -0
  348. package/views/asset/AssetList.d.ts +5 -3
  349. package/views/asset/AssetsView.d.ts +1 -1
  350. package/views/asset/StatefulAssetList.d.ts +2 -2
  351. package/views/asset/asset-card/AssetCard.d.ts +1 -1
  352. package/views/asset/asset-card/AssetCardMetaproperties.d.ts +3 -3
  353. package/views/asset/asset-card/ContextAction.d.ts +1 -1
  354. package/views/collection/CollectionView.d.ts +1 -1
  355. package/views/collections/CollectionCard.d.ts +1 -1
  356. package/views/collections/CollectionList.d.ts +1 -1
  357. package/views/collections/CollectionsView.d.ts +1 -1
  358. package/Dat/DatContext.d.ts +0 -12
  359. package/__tests__/utils/index.d.ts +0 -116
  360. package/api/__tests__/testMocks/mocks.d.ts +0 -14
  361. package/api/__tests__/utils.d.ts +0 -10
  362. package/common/components/__mocks__/Tooltip.d.ts +0 -6
  363. package/common/components/__tests__/utils.d.ts +0 -34
  364. package/error-handling/__tests__/utils.d.ts +0 -56
  365. package/filter/__tests__/utils.d.ts +0 -13
  366. package/index.mjs +0 -1163
  367. package/login/__tests__/mocks.d.ts +0 -1
  368. package/login/__tests__/utils.d.ts +0 -41
  369. package/search/SearchContext.d.ts +0 -25
  370. package/search/SimilaritySearchContext.d.ts +0 -21
  371. package/search/__mocks__/SimilaritySearchContext.d.ts +0 -5
  372. package/select/__tests__/utils.d.ts +0 -11
  373. package/style/shadowroot/__mocks__/ShadowRoot.d.ts +0 -4
  374. package/utils/__mocks__/logger.d.ts +0 -4
  375. package/views/asset/__tests__/utils.d.ts +0 -7
  376. package/views/collections/__tests__/utils.d.ts +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DirectionSelect.js","sources":["../../src/order/DirectionSelect.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { IconSortOrder } from '@bynder/icons';\nimport { Button, token } from '@bynder/design-system';\n\nimport { __ } from '../localization';\nimport { Direction, useOrderingByPage } from '@src/store/useOrderingStore';\nimport { useRouterSelectors } from '@src/store/useRouterStore';\n\nexport function DirectionSelect({ nlSearch = false }: { nlSearch?: boolean }) {\n\tconst page = useRouterSelectors.use.page();\n\tconst [ordering, setOrdering] = useOrderingByPage(page.page);\n\n\tconst titleOfDirectionMap = {\n\t\tASC: __('Ascending'),\n\t\tDESC: __('Descending'),\n\t};\n\n\tconst oppositeDirectionMap: Record<Direction, Direction> = {\n\t\tASC: 'DESC',\n\t\tDESC: 'ASC',\n\t};\n\n\tfunction handleClick() {\n\t\tsetOrdering({ field: ordering.field, direction: oppositeDirectionMap[ordering.direction] });\n\t}\n\n\treturn (\n\t\t<SortButton\n\t\t\tvariant=\"clean\"\n\t\t\tisSmall\n\t\t\ttitle={titleOfDirectionMap[ordering.direction]}\n\t\t\tonClick={handleClick}\n\t\t\ticon={<SortIcon $isAscending={ordering.direction === 'ASC'} />}\n\t\t\tisDisabled={nlSearch}\n\t\t/>\n\t);\n}\n\nconst SortButton = styled(Button)`\n\tborder-radius: 5px 0 0 5px;\n\tborder: 1px solid #d9dee1;\n\theight: 42px;\n`;\n\nconst SortIcon = styled(IconSortOrder)<{ $isAscending: boolean }>`\n\twidth: ${token.spacing6};\n\theight: ${token.spacing6};\n\t${(p) => p.$isAscending && `transform: scaleY(-1)`}\n`;\n"],"names":["DirectionSelect","nlSearch","page","useRouterSelectors","ordering","setOrdering","useOrderingByPage","titleOfDirectionMap","__","oppositeDirectionMap","handleClick","jsx","SortButton","SortIcon","styled","Button","IconSortOrder","token","p"],"mappings":";;;;;;;AASO,SAASA,EAAgB,EAAE,UAAAC,IAAW,MAAiC;AAC7E,QAAMC,IAAOC,EAAmB,IAAI,KAAA,GAC9B,CAACC,GAAUC,CAAW,IAAIC,EAAkBJ,EAAK,IAAI,GAErDK,IAAsB;AAAA,IAC3B,KAAKC,EAAG,WAAW;AAAA,IACnB,MAAMA,EAAG,YAAY;AAAA,EAAA,GAGhBC,IAAqD;AAAA,IAC1D,KAAK;AAAA,IACL,MAAM;AAAA,EAAA;AAGP,WAASC,IAAc;AACtB,IAAAL,EAAY,EAAE,OAAOD,EAAS,OAAO,WAAWK,EAAqBL,EAAS,SAAS,GAAG;AAAA,EAC3F;AAEA,SACC,gBAAAO;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,SAAQ;AAAA,MACR,SAAO;AAAA,MACP,OAAOL,EAAoBH,EAAS,SAAS;AAAA,MAC7C,SAASM;AAAA,MACT,MAAM,gBAAAC,EAACE,GAAA,EAAS,cAAcT,EAAS,cAAc,OAAO;AAAA,MAC5D,YAAYH;AAAA,IAAA;AAAA,EAAA;AAGf;AAEA,MAAMW,IAAaE,EAAOC,CAAM;AAAA;AAAA;AAAA;AAAA,GAM1BF,IAAWC,EAAOE,CAAa;AAAA,UAC3BC,EAAM,QAAQ;AAAA,WACbA,EAAM,QAAQ;AAAA,GACtB,CAACC,MAAMA,EAAE,gBAAgB,uBAAuB;AAAA;"}
@@ -0,0 +1,69 @@
1
+ import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
+ function r() {
3
+ return /* @__PURE__ */ i("svg", { viewBox: "0 5 60 82", className: "h-20", children: [
4
+ /* @__PURE__ */ i("defs", { children: [
5
+ /* @__PURE__ */ i(
6
+ "filter",
7
+ {
8
+ x: "-1.7%",
9
+ y: "-1.2%",
10
+ width: "103.3%",
11
+ height: "105%",
12
+ filterUnits: "objectBoundingBox",
13
+ id: "prefix__a",
14
+ children: [
15
+ /* @__PURE__ */ e("feOffset", { dy: "2", in: "SourceAlpha", result: "shadowOffsetOuter1" }),
16
+ /* @__PURE__ */ e(
17
+ "feColorMatrix",
18
+ {
19
+ values: "0 0 0 0 0 0 0 0 0 0.133333333 0 0 0 0 0.2 0 0 0 0.05 0",
20
+ in: "shadowOffsetOuter1"
21
+ }
22
+ )
23
+ ]
24
+ }
25
+ ),
26
+ /* @__PURE__ */ i(
27
+ "filter",
28
+ {
29
+ x: "-5%",
30
+ y: "-5%",
31
+ width: "110%",
32
+ height: "120%",
33
+ filterUnits: "objectBoundingBox",
34
+ id: "prefix__c",
35
+ children: [
36
+ /* @__PURE__ */ e("feOffset", { dy: "2", in: "SourceAlpha", result: "shadowOffsetOuter1" }),
37
+ /* @__PURE__ */ e(
38
+ "feColorMatrix",
39
+ {
40
+ values: "0 0 0 0 0 0 0 0 0 0.133333333 0 0 0 0 0.2 0 0 0 0.05 0",
41
+ in: "shadowOffsetOuter1"
42
+ }
43
+ )
44
+ ]
45
+ }
46
+ ),
47
+ /* @__PURE__ */ e(
48
+ "path",
49
+ {
50
+ d: "M5 5h35l20 20v55a5 5 0 01-5 5H5a5 5 0 01-5-5V10a5 5 0 015-5z",
51
+ id: "prefix__b"
52
+ }
53
+ ),
54
+ /* @__PURE__ */ e("path", { d: "M40 5l20 20H45a5 5 0 01-5-5V5z", id: "prefix__d" })
55
+ ] }),
56
+ /* @__PURE__ */ i("g", { fill: "none", fillRule: "evenodd", children: [
57
+ /* @__PURE__ */ e("use", { fill: "#000", filter: "url(#prefix__a)", xlinkHref: "#prefix__b" }),
58
+ /* @__PURE__ */ e("use", { fill: "#FFF", xlinkHref: "#prefix__b" }),
59
+ /* @__PURE__ */ i("g", { fillRule: "nonzero", children: [
60
+ /* @__PURE__ */ e("use", { fill: "#000", filter: "url(#prefix__c)", xlinkHref: "#prefix__d" }),
61
+ /* @__PURE__ */ e("use", { fill: "#FFF", xlinkHref: "#prefix__d" })
62
+ ] })
63
+ ] })
64
+ ] });
65
+ }
66
+ export {
67
+ r as DocumentIcon
68
+ };
69
+ //# sourceMappingURL=DocumentIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DocumentIcon.js","sources":["../../src/common/components/DocumentIcon.tsx"],"sourcesContent":["import React from 'react';\n\nexport function DocumentIcon() {\n\treturn (\n\t\t<svg viewBox=\"0 5 60 82\" className=\"h-20\">\n\t\t\t<defs>\n\t\t\t\t<filter\n\t\t\t\t\tx=\"-1.7%\"\n\t\t\t\t\ty=\"-1.2%\"\n\t\t\t\t\twidth=\"103.3%\"\n\t\t\t\t\theight=\"105%\"\n\t\t\t\t\tfilterUnits=\"objectBoundingBox\"\n\t\t\t\t\tid=\"prefix__a\"\n\t\t\t\t>\n\t\t\t\t\t<feOffset dy=\"2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0.133333333 0 0 0 0 0.2 0 0 0 0.05 0\"\n\t\t\t\t\t\tin=\"shadowOffsetOuter1\"\n\t\t\t\t\t/>\n\t\t\t\t</filter>\n\t\t\t\t<filter\n\t\t\t\t\tx=\"-5%\"\n\t\t\t\t\ty=\"-5%\"\n\t\t\t\t\twidth=\"110%\"\n\t\t\t\t\theight=\"120%\"\n\t\t\t\t\tfilterUnits=\"objectBoundingBox\"\n\t\t\t\t\tid=\"prefix__c\"\n\t\t\t\t>\n\t\t\t\t\t<feOffset dy=\"2\" in=\"SourceAlpha\" result=\"shadowOffsetOuter1\" />\n\t\t\t\t\t<feColorMatrix\n\t\t\t\t\t\tvalues=\"0 0 0 0 0 0 0 0 0 0.133333333 0 0 0 0 0.2 0 0 0 0.05 0\"\n\t\t\t\t\t\tin=\"shadowOffsetOuter1\"\n\t\t\t\t\t/>\n\t\t\t\t</filter>\n\t\t\t\t<path\n\t\t\t\t\td=\"M5 5h35l20 20v55a5 5 0 01-5 5H5a5 5 0 01-5-5V10a5 5 0 015-5z\"\n\t\t\t\t\tid=\"prefix__b\"\n\t\t\t\t/>\n\t\t\t\t<path d=\"M40 5l20 20H45a5 5 0 01-5-5V5z\" id=\"prefix__d\" />\n\t\t\t</defs>\n\t\t\t<g fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<use fill=\"#000\" filter=\"url(#prefix__a)\" xlinkHref=\"#prefix__b\" />\n\t\t\t\t<use fill=\"#FFF\" xlinkHref=\"#prefix__b\" />\n\t\t\t\t<g fillRule=\"nonzero\">\n\t\t\t\t\t<use fill=\"#000\" filter=\"url(#prefix__c)\" xlinkHref=\"#prefix__d\" />\n\t\t\t\t\t<use fill=\"#FFF\" xlinkHref=\"#prefix__d\" />\n\t\t\t\t</g>\n\t\t\t</g>\n\t\t</svg>\n\t);\n}\n"],"names":["DocumentIcon","jsxs","jsx"],"mappings":";AAEO,SAASA,IAAe;AAC9B,SACC,gBAAAC,EAAC,OAAA,EAAI,SAAQ,aAAY,WAAU,QAClC,UAAA;AAAA,IAAA,gBAAAA,EAAC,QAAA,EACA,UAAA;AAAA,MAAA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,GAAE;AAAA,UACF,GAAE;AAAA,UACF,OAAM;AAAA,UACN,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,IAAG;AAAA,UAEH,UAAA;AAAA,YAAA,gBAAAC,EAAC,cAAS,IAAG,KAAI,IAAG,eAAc,QAAO,sBAAqB;AAAA,YAC9D,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,QAAO;AAAA,gBACP,IAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAED,gBAAAD;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,GAAE;AAAA,UACF,GAAE;AAAA,UACF,OAAM;AAAA,UACN,QAAO;AAAA,UACP,aAAY;AAAA,UACZ,IAAG;AAAA,UAEH,UAAA;AAAA,YAAA,gBAAAC,EAAC,cAAS,IAAG,KAAI,IAAG,eAAc,QAAO,sBAAqB;AAAA,YAC9D,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACA,QAAO;AAAA,gBACP,IAAG;AAAA,cAAA;AAAA,YAAA;AAAA,UACJ;AAAA,QAAA;AAAA,MAAA;AAAA,MAED,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,GAAE;AAAA,UACF,IAAG;AAAA,QAAA;AAAA,MAAA;AAAA,MAEJ,gBAAAA,EAAC,QAAA,EAAK,GAAE,kCAAiC,IAAG,YAAA,CAAY;AAAA,IAAA,GACzD;AAAA,IACA,gBAAAD,EAAC,KAAA,EAAE,MAAK,QAAO,UAAS,WACvB,UAAA;AAAA,MAAA,gBAAAC,EAAC,SAAI,MAAK,QAAO,QAAO,mBAAkB,WAAU,cAAa;AAAA,MACjE,gBAAAA,EAAC,OAAA,EAAI,MAAK,QAAO,WAAU,cAAa;AAAA,MACxC,gBAAAD,EAAC,KAAA,EAAE,UAAS,WACX,UAAA;AAAA,QAAA,gBAAAC,EAAC,SAAI,MAAK,QAAO,QAAO,mBAAkB,WAAU,cAAa;AAAA,QACjE,gBAAAA,EAAC,OAAA,EAAI,MAAK,QAAO,WAAU,aAAA,CAAa;AAAA,MAAA,EAAA,CACzC;AAAA,IAAA,EAAA,CACD;AAAA,EAAA,GACD;AAEF;"}
package/DomainInput.js ADDED
@@ -0,0 +1,39 @@
1
+ import { jsx as n } from "react/jsx-runtime";
2
+ import t from "styled-components";
3
+ import { token as m, InputField as h } from "@bynder/design-system";
4
+ import { Spinner as c } from "./Spinner.js";
5
+ import { __ as o } from "./index2.js";
6
+ function C({ status: i, isReadOnly: e, value: r, onChange: a, onSubmit: l }) {
7
+ function d(p) {
8
+ i === "valid" && p.keyCode === 13 && l();
9
+ }
10
+ return /* @__PURE__ */ n(g, { children: /* @__PURE__ */ n(
11
+ h,
12
+ {
13
+ type: "url",
14
+ value: r,
15
+ placeholder: "yourdomain.bynder.com",
16
+ label: o("Enter the portal domain"),
17
+ onChange: a,
18
+ onKeyDown: d,
19
+ isInvalid: i === "invalid",
20
+ helperText: i === "invalid" && o("This portal domain does not exist"),
21
+ hasClearButton: i !== "validating" && !e,
22
+ iconRight: i === "validating" ? /* @__PURE__ */ n(v, { role: "alert", "aria-live": "polite", children: /* @__PURE__ */ n(c, { isRelative: !0, isNotUsingMargin: !0 }) }) : void 0,
23
+ isDisabled: e,
24
+ "data-testid": "login-input"
25
+ }
26
+ ) });
27
+ }
28
+ const g = t.div`
29
+ margin: ${m.spacing4} 0;
30
+ width: 320px;
31
+ `, v = t.div`
32
+ height: 100%;
33
+ display: flex;
34
+ align-items: center;
35
+ `;
36
+ export {
37
+ C as DomainInput
38
+ };
39
+ //# sourceMappingURL=DomainInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DomainInput.js","sources":["../../src/login/components/DomainInput.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { InputField, token } from '@bynder/design-system';\n\nimport { Spinner } from '../../common/components/Spinner';\nimport { __ } from '../../localization';\nimport { DomainStatus } from '../useAccountDomain';\n\ninterface Props {\n\tvalue: string;\n\tisReadOnly: boolean;\n\tstatus: DomainStatus;\n\tonSubmit: () => void;\n\tonChange: (value: string) => void;\n}\n\nexport function DomainInput({ status, isReadOnly, value, onChange, onSubmit }: Props) {\n\tfunction handleKeyDown(event: React.KeyboardEvent<HTMLInputElement>) {\n\t\tif (status === 'valid' && event.keyCode === 13) {\n\t\t\tonSubmit();\n\t\t}\n\t}\n\n\treturn (\n\t\t<Container>\n\t\t\t<InputField\n\t\t\t\ttype=\"url\"\n\t\t\t\tvalue={value}\n\t\t\t\tplaceholder=\"yourdomain.bynder.com\"\n\t\t\t\tlabel={__('Enter the portal domain')}\n\t\t\t\tonChange={onChange}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\tisInvalid={status === 'invalid'}\n\t\t\t\thelperText={status === 'invalid' && __('This portal domain does not exist')}\n\t\t\t\thasClearButton={status !== 'validating' && !isReadOnly}\n\t\t\t\ticonRight={\n\t\t\t\t\tstatus === 'validating' ? (\n\t\t\t\t\t\t<LoadingContainer role=\"alert\" aria-live=\"polite\">\n\t\t\t\t\t\t\t<Spinner isRelative isNotUsingMargin />\n\t\t\t\t\t\t</LoadingContainer>\n\t\t\t\t\t) : undefined\n\t\t\t\t}\n\t\t\t\tisDisabled={isReadOnly}\n\t\t\t\tdata-testid=\"login-input\"\n\t\t\t/>\n\t\t</Container>\n\t);\n}\n\nconst Container = styled.div`\n\tmargin: ${token.spacing4} 0;\n\twidth: 320px;\n`;\n\nconst LoadingContainer = styled.div`\n\theight: 100%;\n\tdisplay: flex;\n\talign-items: center;\n`;\n// margin-top: -${token.spacing4};\n"],"names":["DomainInput","status","isReadOnly","value","onChange","onSubmit","handleKeyDown","event","Container","jsx","InputField","__","LoadingContainer","Spinner","styled","token"],"mappings":";;;;;AAgBO,SAASA,EAAY,EAAE,QAAAC,GAAQ,YAAAC,GAAY,OAAAC,GAAO,UAAAC,GAAU,UAAAC,KAAmB;AACrF,WAASC,EAAcC,GAA8C;AACpE,IAAIN,MAAW,WAAWM,EAAM,YAAY,MAC3CF,EAAA;AAAA,EAEF;AAEA,2BACEG,GAAA,EACA,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,OAAAP;AAAA,MACA,aAAY;AAAA,MACZ,OAAOQ,EAAG,yBAAyB;AAAA,MACnC,UAAAP;AAAA,MACA,WAAWE;AAAA,MACX,WAAWL,MAAW;AAAA,MACtB,YAAYA,MAAW,aAAaU,EAAG,mCAAmC;AAAA,MAC1E,gBAAgBV,MAAW,gBAAgB,CAACC;AAAA,MAC5C,WACCD,MAAW,eACV,gBAAAQ,EAACG,GAAA,EAAiB,MAAK,SAAQ,aAAU,UACxC,UAAA,gBAAAH,EAACI,KAAQ,YAAU,IAAC,kBAAgB,GAAA,CAAC,GACtC,IACG;AAAA,MAEL,YAAYX;AAAA,MACZ,eAAY;AAAA,IAAA;AAAA,EAAA,GAEd;AAEF;AAEA,MAAMM,IAAYM,EAAO;AAAA,WACdC,EAAM,QAAQ;AAAA;AAAA,GAInBH,IAAmBE,EAAO;AAAA;AAAA;AAAA;AAAA;"}
package/DragSelect.js ADDED
@@ -0,0 +1,144 @@
1
+ import { jsx as j } from "react/jsx-runtime";
2
+ import z, { useState as T, useRef as S, useEffect as f, useCallback as x } from "react";
3
+ import { createPortal as G } from "react-dom";
4
+ import { useDebounce as W } from "use-debounce";
5
+ import { useRootElement as H } from "./RootElementContext.js";
6
+ const L = {
7
+ x: null,
8
+ y: null
9
+ }, K = 0, J = "data-drag-select-id", O = "drag-select-container", V = 10, $ = 50, Q = 10, de = ({
10
+ dragContainer: n,
11
+ selectionBoxCustomAttr: e,
12
+ onSelect: m,
13
+ onDeselect: l,
14
+ onDragStart: h,
15
+ onDragEnd: u
16
+ }) => {
17
+ const [E, R] = T(L), [d, D] = T(L), [C] = W(d, V, {
18
+ leading: !0,
19
+ maxWait: V
20
+ }), [M, X] = T(), o = H(), w = z.useMemo(
21
+ () => Z(
22
+ E,
23
+ C,
24
+ o.querySelector(".cv-root")
25
+ ),
26
+ [E, C, o]
27
+ ), [N] = W(
28
+ w,
29
+ $,
30
+ {
31
+ leading: !1,
32
+ maxWait: $
33
+ }
34
+ ), [v, Y] = T([]), y = se(v), c = S(E), g = S(d), i = S(
35
+ c.current.x !== null && c.current.y !== null && g.current.x !== null && g.current.y !== null
36
+ ), B = S({
37
+ shiftKey: !1,
38
+ metaKey: !1
39
+ });
40
+ f(() => (document.addEventListener("keydown", p, !1), document.addEventListener("keyup", p, !1), () => {
41
+ document.removeEventListener("keydown", p, !1), document.removeEventListener("keyup", p, !1);
42
+ }), []);
43
+ const p = ({ shiftKey: t, metaKey: r }) => {
44
+ const s = t || r ? "inverse" : "select";
45
+ B.current = { shiftKey: t, metaKey: r }, i.current && s !== M && X(s);
46
+ };
47
+ f(() => {
48
+ let t;
49
+ return typeof h == "function" && i.current ? (p(B.current), h(M ?? "select")) : typeof u == "function" && !i.current && (t = setTimeout(() => u(M ?? "select"), Q)), () => clearTimeout(t);
50
+ }, [i.current, M]);
51
+ const A = (t) => {
52
+ c.current = t, R(t), k();
53
+ }, U = (t) => {
54
+ g.current = t, D(t), k();
55
+ }, k = () => {
56
+ i.current = c.current.x !== null && c.current.y !== null && g.current.x !== null && g.current.y !== null;
57
+ }, I = x(({ clientY: t, clientX: r }) => {
58
+ const s = c.current.x !== null, a = Math.abs(c.current.x ?? 0 - r) >= 1 || Math.abs(c.current.y ?? 0 - t) >= 1;
59
+ !s || !a || U({
60
+ x: r,
61
+ y: t
62
+ });
63
+ }, []), _ = x(() => {
64
+ o.removeEventListener("mousemove", I), o.removeEventListener("mouseup", _), A(L), U(L);
65
+ }, [I, o]), P = x(
66
+ ({ clientY: t, clientX: r, button: s }) => {
67
+ s === K && (o.addEventListener("mousemove", I), o.addEventListener("mouseup", _), A({
68
+ x: r,
69
+ y: t
70
+ }));
71
+ },
72
+ [I, _, o]
73
+ // eslint-disable-line react-hooks/exhaustive-deps
74
+ );
75
+ f(() => {
76
+ const t = o.querySelector(n);
77
+ return t && (ne(o), t.addEventListener("mousedown", P)), () => {
78
+ t && (t.removeEventListener("mousedown", P), oe(o));
79
+ };
80
+ }, [n, P, I, _, o]), f(() => {
81
+ const t = o.querySelectorAll(`[${J}]`), r = Array.from(t).reduce((s, a) => {
82
+ const b = te(a);
83
+ return a instanceof HTMLElement && ee(b, N) && a.dataset.dragSelectId && s.push(a.dataset.dragSelectId), s;
84
+ }, []);
85
+ Y(r);
86
+ }, [N, o]), f(() => {
87
+ if (!y || y === v || !i.current)
88
+ return;
89
+ const t = v.filter((s) => !y.includes(s)), r = y.filter(
90
+ (s) => !v.includes(s)
91
+ );
92
+ t.length && m(t), r.length && l(r);
93
+ }, [v, y, m, l, i]);
94
+ const q = o.querySelector(`#${O}`);
95
+ return !i.current || !q ? null : G(
96
+ /* @__PURE__ */ j(
97
+ "div",
98
+ {
99
+ ...e,
100
+ style: e.style ? {
101
+ ...F,
102
+ ...e.style,
103
+ ...w
104
+ } : { ...F, ...w },
105
+ "data-testid": "drag-selection"
106
+ }
107
+ ),
108
+ q
109
+ );
110
+ }, F = { position: "absolute", zIndex: 100 }, Z = (n, e, m) => {
111
+ if (!n.x || !n.y || !e.x || !e.y || !m)
112
+ return { left: 0, top: 0, height: 0, width: 0 };
113
+ const l = m.getBoundingClientRect(), h = Math.max(e.x, 0);
114
+ let u = Math.min(n.x, h);
115
+ u = Math.max(u, l.left + 4);
116
+ const E = Math.min(n.y, e.y), R = Math.abs(e.y - n.y);
117
+ let d = Math.abs(h - n.x);
118
+ const D = l.width + l.left - u - 4;
119
+ return d = Math.min(d, D), { left: u, top: E, height: R, width: d };
120
+ }, ee = (n, e) => n.left <= e.left + e.width && n.left + n.width >= e.left && n.top <= e.top + e.height && n.top + n.height >= e.top, te = (n) => {
121
+ const e = n.getBoundingClientRect();
122
+ return {
123
+ left: e.left,
124
+ top: e.top + window.scrollY,
125
+ height: e.height,
126
+ width: e.width
127
+ };
128
+ }, ne = (n) => {
129
+ const e = document.createElement("div");
130
+ e.id = O, n.appendChild(e);
131
+ }, oe = (n) => {
132
+ const e = n.querySelector(`#${O}`);
133
+ e && e.remove();
134
+ }, se = (n) => {
135
+ const e = S();
136
+ return f(() => {
137
+ e.current = n;
138
+ }), e.current;
139
+ };
140
+ export {
141
+ de as DragSelect,
142
+ Z as getSelectionBoxRect
143
+ };
144
+ //# sourceMappingURL=DragSelect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DragSelect.js","sources":["../../src/common/components/DragSelect.tsx"],"sourcesContent":["/*\n * This component is adapted from the DragSelect component used in the flagship application:\n * https://github.com/Bynder/paramount/blob/1aef68acaccf837e018856a47f2329ccb6ad1c1f/src/common/components/DragSelect.tsx\n *\n * The only changes that were made was adding the 'useRootElement' hook and then using that root instead of the 'document'\n * object when querying for elements and adding event listeners.\n */\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport { useDebounce } from 'use-debounce';\n\nimport { useRootElement } from '../../style/RootElementContext';\n\nexport type DragAction = 'select' | 'inverse';\n\ntype Rect = {\n\tleft: number;\n\ttop: number;\n\theight: number;\n\twidth: number;\n};\n\ntype Position = {\n\tx: number | null;\n\ty: number | null;\n};\n\nconst INITIAL_POSITION: Position = {\n\tx: null,\n\ty: null,\n};\n\nconst LEFT_MOUSE_BUTTON_ID = 0;\nconst DATA_ATTRIBUTE_ID = 'data-drag-select-id';\nconst CONTAINER_DIV_ID = 'drag-select-container';\nconst DRAW_SELECTION_BOX_DEBOUNCE_MS = 10;\nconst CALCULATE_INTERSECTIONS_DEBOUNCE_MS = 50;\nconst POST_DRAG_DELAY_MS = 10;\n\ntype Props = {\n\tdragContainer: string;\n\tselectionBoxCustomAttr: React.HTMLAttributes<HTMLElement>;\n\tonSelect: (selectedIds: string[]) => void;\n\tonDeselect: (deselectedIds: string[]) => void;\n\tonDragStart?: (action: DragAction) => void;\n\tonDragEnd?: (action: DragAction) => void;\n};\n\nexport const DragSelect = ({\n\tdragContainer,\n\tselectionBoxCustomAttr,\n\tonSelect,\n\tonDeselect,\n\tonDragStart,\n\tonDragEnd,\n}: Props) => {\n\tconst [startPosition, setStartPosition] = useState<Position>(INITIAL_POSITION);\n\tconst [endPosition, setEndPosition] = useState<Position>(INITIAL_POSITION);\n\tconst [debouncedEndPosition] = useDebounce(endPosition, DRAW_SELECTION_BOX_DEBOUNCE_MS, {\n\t\tleading: true,\n\t\tmaxWait: DRAW_SELECTION_BOX_DEBOUNCE_MS,\n\t});\n\tconst [action, setAction] = useState<DragAction>();\n\tconst root = useRootElement();\n\n\tconst selectionBoxRect = React.useMemo(\n\t\t() =>\n\t\t\tgetSelectionBoxRect(\n\t\t\t\tstartPosition,\n\t\t\t\tdebouncedEndPosition,\n\t\t\t\troot.querySelector('.cv-root'),\n\t\t\t),\n\t\t[startPosition, debouncedEndPosition, root],\n\t);\n\n\tconst [debouncedSelectionBoxRect] = useDebounce(\n\t\tselectionBoxRect,\n\t\tCALCULATE_INTERSECTIONS_DEBOUNCE_MS,\n\t\t{\n\t\t\tleading: false,\n\t\t\tmaxWait: CALCULATE_INTERSECTIONS_DEBOUNCE_MS,\n\t\t},\n\t);\n\tconst [selectedIds, setSelectedIds] = useState<string[]>([]);\n\tconst prevSelectedIds = usePrevious(selectedIds);\n\n\t// Using ref because state is not accessible in onMouseMove,\n\t// keydown & keyup event callbacks.\n\tconst startPositionRef = useRef(startPosition);\n\tconst endPositionRef = useRef(endPosition);\n\tconst isSelectionBoxVisible = useRef<boolean>(\n\t\tstartPositionRef.current.x !== null &&\n\t\t\tstartPositionRef.current.y !== null &&\n\t\t\tendPositionRef.current.x !== null &&\n\t\t\tendPositionRef.current.y !== null,\n\t);\n\tconst keysPressed = useRef({\n\t\tshiftKey: false,\n\t\tmetaKey: false,\n\t});\n\n\tuseEffect(() => {\n\t\tdocument.addEventListener('keydown', onKeyInteraction, false);\n\t\tdocument.addEventListener('keyup', onKeyInteraction, false);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', onKeyInteraction, false);\n\t\t\tdocument.removeEventListener('keyup', onKeyInteraction, false);\n\t\t};\n\t}, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tconst onKeyInteraction = ({ shiftKey, metaKey }: KeyboardEvent) => {\n\t\tconst newAction = shiftKey || metaKey ? 'inverse' : 'select';\n\t\tkeysPressed.current = { shiftKey, metaKey };\n\n\t\t// We only want to set action if we are currently dragging\n\t\t// and the action has changed.\n\t\tif (isSelectionBoxVisible.current && newAction !== action) {\n\t\t\tsetAction(newAction);\n\t\t}\n\t};\n\tuseEffect(() => {\n\t\tlet timeoutFunc;\n\n\t\tif (typeof onDragStart === 'function' && isSelectionBoxVisible.current) {\n\t\t\t// Check if keys were pressed before we started dragging\n\t\t\tonKeyInteraction(keysPressed.current as KeyboardEvent);\n\t\t\tonDragStart(action ?? 'select');\n\t\t} else if (typeof onDragEnd === 'function' && !isSelectionBoxVisible.current) {\n\t\t\ttimeoutFunc = setTimeout(() => onDragEnd(action ?? 'select'), POST_DRAG_DELAY_MS);\n\t\t}\n\n\t\treturn () => clearTimeout(timeoutFunc);\n\t\t// onDragStart and onDragEnd are external functions which should not trigger the effect.\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [isSelectionBoxVisible.current, action]);\n\n\tconst updateStartPosition = (position: Position) => {\n\t\tstartPositionRef.current = position;\n\t\tsetStartPosition(position);\n\t\tupdateIsSelectionBoxVisible();\n\t};\n\n\tconst updateEndPosition = (position: Position) => {\n\t\tendPositionRef.current = position;\n\t\tsetEndPosition(position);\n\t\tupdateIsSelectionBoxVisible();\n\t};\n\n\tconst updateIsSelectionBoxVisible = () => {\n\t\tisSelectionBoxVisible.current =\n\t\t\tstartPositionRef.current.x !== null &&\n\t\t\tstartPositionRef.current.y !== null &&\n\t\t\tendPositionRef.current.x !== null &&\n\t\t\tendPositionRef.current.y !== null;\n\t};\n\n\tconst onMouseMove = useCallback(({ clientY, clientX }: MouseEvent) => {\n\t\tconst hasStartPosition = startPositionRef.current.x !== null;\n\t\tconst isDragging =\n\t\t\tMath.abs(startPositionRef.current.x ?? 0 - clientX) >= 1 ||\n\t\t\tMath.abs(startPositionRef.current.y ?? 0 - clientY) >= 1;\n\n\t\tif (!hasStartPosition || !isDragging) {\n\t\t\treturn;\n\t\t}\n\n\t\tupdateEndPosition({\n\t\t\tx: clientX,\n\t\t\ty: clientY,\n\t\t});\n\t}, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tconst onMouseUp = useCallback(() => {\n\t\troot.removeEventListener('mousemove', onMouseMove);\n\t\troot.removeEventListener('mouseup', onMouseUp);\n\n\t\tupdateStartPosition(INITIAL_POSITION);\n\t\tupdateEndPosition(INITIAL_POSITION);\n\t}, [onMouseMove, root]); // eslint-disable-line react-hooks/exhaustive-deps\n\n\tconst onMouseDown = useCallback(\n\t\t({ clientY, clientX, button }: MouseEvent) => {\n\t\t\tif (button === LEFT_MOUSE_BUTTON_ID) {\n\t\t\t\troot.addEventListener('mousemove', onMouseMove);\n\t\t\t\troot.addEventListener('mouseup', onMouseUp);\n\n\t\t\t\tupdateStartPosition({\n\t\t\t\t\tx: clientX,\n\t\t\t\t\ty: clientY,\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t[onMouseMove, onMouseUp, root], // eslint-disable-line react-hooks/exhaustive-deps\n\t);\n\n\tuseEffect(() => {\n\t\tconst dragContainerElement = root.querySelector(dragContainer);\n\n\t\tif (dragContainerElement) {\n\t\t\tcreateMountingDiv(root);\n\t\t\tdragContainerElement.addEventListener('mousedown', onMouseDown);\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (dragContainerElement) {\n\t\t\t\tdragContainerElement.removeEventListener('mousedown', onMouseDown);\n\t\t\t\tremoveMountingDiv(root);\n\t\t\t}\n\t\t};\n\t}, [dragContainer, onMouseDown, onMouseMove, onMouseUp, root]);\n\n\tuseEffect(() => {\n\t\tconst selectableBoxes = root.querySelectorAll(`[${DATA_ATTRIBUTE_ID}]`);\n\t\tconst _selectedIds = Array.from(selectableBoxes).reduce((boxes: string[], box: Element) => {\n\t\t\tconst selectableBoxRect = getAbsoluteBoundingClientRect(box);\n\n\t\t\tif (\n\t\t\t\tbox instanceof HTMLElement &&\n\t\t\t\tboxesIntersect(selectableBoxRect, debouncedSelectionBoxRect) &&\n\t\t\t\tbox.dataset.dragSelectId\n\t\t\t) {\n\t\t\t\tboxes.push(box.dataset.dragSelectId);\n\t\t\t}\n\n\t\t\treturn boxes;\n\t\t}, []);\n\n\t\tsetSelectedIds(_selectedIds);\n\t}, [debouncedSelectionBoxRect, root]);\n\n\tuseEffect(() => {\n\t\tif (!prevSelectedIds || prevSelectedIds === selectedIds || !isSelectionBoxVisible.current) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst addedIds = selectedIds.filter((selectedId) => !prevSelectedIds.includes(selectedId));\n\t\tconst removedIds = prevSelectedIds.filter(\n\t\t\t(prevSelectedId) => !selectedIds.includes(prevSelectedId),\n\t\t);\n\n\t\tif (addedIds.length) {\n\t\t\tonSelect(addedIds);\n\t\t}\n\n\t\tif (removedIds.length) {\n\t\t\tonDeselect(removedIds);\n\t\t}\n\t}, [selectedIds, prevSelectedIds, onSelect, onDeselect, isSelectionBoxVisible]);\n\n\tconst containerDiv = root.querySelector(`#${CONTAINER_DIV_ID}`);\n\n\tif (!isSelectionBoxVisible.current || !containerDiv) return null;\n\n\treturn createPortal(\n\t\t<div\n\t\t\t{...selectionBoxCustomAttr}\n\t\t\tstyle={\n\t\t\t\tselectionBoxCustomAttr.style\n\t\t\t\t\t? {\n\t\t\t\t\t\t\t...SELECTION_BOX_STYLE,\n\t\t\t\t\t\t\t...selectionBoxCustomAttr.style,\n\t\t\t\t\t\t\t...selectionBoxRect,\n\t\t\t\t\t }\n\t\t\t\t\t: { ...SELECTION_BOX_STYLE, ...selectionBoxRect }\n\t\t\t}\n\t\t\tdata-testid=\"drag-selection\"\n\t\t/>,\n\t\tcontainerDiv,\n\t);\n};\n\nexport const makeSelectable = ({ id }: { id: string }) => ({\n\t[DATA_ATTRIBUTE_ID]: id,\n});\n\nconst SELECTION_BOX_STYLE: React.CSSProperties = { position: 'absolute', zIndex: 100 };\n\nexport const getSelectionBoxRect = (\n\tstart: Position,\n\tend: Position,\n\trootElement: Element | null,\n): Rect => {\n\tif (!start.x || !start.y || !end.x || !end.y || !rootElement) {\n\t\treturn { left: 0, top: 0, height: 0, width: 0 };\n\t}\n\n\tconst rootRect = rootElement.getBoundingClientRect();\n\n\tconst endX = Math.max(end.x, 0);\n\tlet left = Math.min(start.x, endX);\n\tleft = Math.max(left, rootRect.left + 4);\n\n\tconst top = Math.min(start.y, end.y);\n\tconst height = Math.abs(end.y - start.y);\n\n\tlet width = Math.abs(endX - start.x);\n\tconst maxWidth = rootRect.width + rootRect.left - left - 4;\n\twidth = Math.min(width, maxWidth);\n\n\treturn { left, top, height, width };\n};\n\nconst boxesIntersect = (boxA: Rect, boxB: Rect) =>\n\tboxA.left <= boxB.left + boxB.width &&\n\tboxA.left + boxA.width >= boxB.left &&\n\tboxA.top <= boxB.top + boxB.height &&\n\tboxA.top + boxA.height >= boxB.top;\n\nconst getAbsoluteBoundingClientRect = (element: Element): Rect => {\n\tconst rect = element.getBoundingClientRect();\n\n\treturn {\n\t\tleft: rect.left,\n\t\ttop: rect.top + window.scrollY,\n\t\theight: rect.height,\n\t\twidth: rect.width,\n\t};\n};\n\nconst createMountingDiv = (root: Element) => {\n\tconst mountingDiv = document.createElement('div');\n\tmountingDiv.id = CONTAINER_DIV_ID;\n\troot.appendChild(mountingDiv);\n};\n\nconst removeMountingDiv = (root: Element) => {\n\tconst mountingDiv = root.querySelector(`#${CONTAINER_DIV_ID}`);\n\n\tif (mountingDiv) {\n\t\tmountingDiv.remove();\n\t}\n};\n\nconst usePrevious = <T extends unknown>(value: T): T | undefined => {\n\tconst ref = useRef<T>();\n\tuseEffect(() => {\n\t\tref.current = value;\n\t});\n\n\treturn ref.current;\n};\n"],"names":["INITIAL_POSITION","LEFT_MOUSE_BUTTON_ID","DATA_ATTRIBUTE_ID","CONTAINER_DIV_ID","DRAW_SELECTION_BOX_DEBOUNCE_MS","CALCULATE_INTERSECTIONS_DEBOUNCE_MS","POST_DRAG_DELAY_MS","DragSelect","dragContainer","selectionBoxCustomAttr","onSelect","onDeselect","onDragStart","onDragEnd","startPosition","setStartPosition","useState","endPosition","setEndPosition","debouncedEndPosition","useDebounce","action","setAction","root","useRootElement","selectionBoxRect","React","getSelectionBoxRect","debouncedSelectionBoxRect","selectedIds","setSelectedIds","prevSelectedIds","usePrevious","startPositionRef","useRef","endPositionRef","isSelectionBoxVisible","keysPressed","useEffect","onKeyInteraction","shiftKey","metaKey","newAction","timeoutFunc","updateStartPosition","position","updateIsSelectionBoxVisible","updateEndPosition","onMouseMove","useCallback","clientY","clientX","hasStartPosition","isDragging","onMouseUp","onMouseDown","button","dragContainerElement","createMountingDiv","removeMountingDiv","selectableBoxes","_selectedIds","boxes","box","selectableBoxRect","getAbsoluteBoundingClientRect","boxesIntersect","addedIds","selectedId","removedIds","prevSelectedId","containerDiv","createPortal","jsx","SELECTION_BOX_STYLE","start","end","rootElement","rootRect","endX","left","top","height","width","maxWidth","boxA","boxB","element","rect","mountingDiv","value","ref"],"mappings":"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"}
package/Dropdown.js ADDED
@@ -0,0 +1,72 @@
1
+ import { jsxs as l, Fragment as w, jsx as i } from "react/jsx-runtime";
2
+ import { useState as h, useRef as D, useMemo as $ } from "react";
3
+ import r from "styled-components";
4
+ import { token as v, Button as x } from "@bynder/design-system";
5
+ import { DropdownContent as C } from "./DropdownContent.js";
6
+ import { useAssetFilter as A } from "./AssetFilterContext.js";
7
+ function N({
8
+ buttonKind: t = "clean",
9
+ direction: c = "Down",
10
+ isSmall: m,
11
+ fadeIn: f,
12
+ isMetapropertyDropdown: u,
13
+ ...n
14
+ }) {
15
+ const a = A(), s = b(), [e, p] = h(!1), d = D(null), o = () => {
16
+ p((g) => !g), a.setDropdownState(!a.isDropdownActive);
17
+ };
18
+ return /* @__PURE__ */ l(w, { children: [
19
+ /* @__PURE__ */ i(I, { $fadeIn: !!f, children: /* @__PURE__ */ l(
20
+ x,
21
+ {
22
+ variant: t,
23
+ isSmall: m,
24
+ onClick: o,
25
+ ref: d,
26
+ isDisabled: n.disabled,
27
+ isPressed: e,
28
+ "aria-haspopup": !0,
29
+ "aria-expanded": e,
30
+ "aria-controls": s,
31
+ "data-testid": "button",
32
+ children: [
33
+ /* @__PURE__ */ i(k, { title: n.alt, children: n.title }),
34
+ /* @__PURE__ */ i(S, { $active: e, className: "fa fa-caret-down" })
35
+ ]
36
+ }
37
+ ) }),
38
+ e && /* @__PURE__ */ i(
39
+ C,
40
+ {
41
+ isPaddingContent: n.isPaddingContent,
42
+ onClickOutside: o,
43
+ direction: c,
44
+ target: d,
45
+ id: s,
46
+ isMetapropertyDropdown: u,
47
+ children: n.children(o)
48
+ }
49
+ )
50
+ ] });
51
+ }
52
+ function b() {
53
+ return $(
54
+ () => `dropdownmenu-${Date.now()}-${Math.random().toString(36).substring(2)}`,
55
+ []
56
+ );
57
+ }
58
+ const I = r.div`
59
+ text-transform: inherit;
60
+ ${(t) => t.$fadeIn ? "animation: var(--fade-in-down);" : ""}
61
+ `, S = r.i`
62
+ margin-left: ${v.spacing3};
63
+ transition: transform 200ms;
64
+ ${(t) => t.$active ? "transform: rotate(180deg);" : ""}
65
+ `, k = r.span`
66
+ display: inline-flex;
67
+ align-items: center;
68
+ `;
69
+ export {
70
+ N as Dropdown
71
+ };
72
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","sources":["../../src/common/components/dropdown/Dropdown.tsx"],"sourcesContent":["import React, { useMemo, useRef, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button, token } from '@bynder/design-system';\nimport { DropdownContent } from './DropdownContent';\nimport { useAssetFilter } from '@src/filter/AssetFilterContext';\n\ninterface Props {\n\tclassName?: string;\n\tfadeIn?: boolean;\n\tbuttonKind?: 'clean' | 'secondary';\n\tisSmall?: boolean;\n\tdirection?: 'Down' | 'Up';\n\ttitle: React.ReactNode;\n\talt?: string;\n\tdisabled?: boolean;\n\tisPaddingContent?: boolean;\n\tisMetapropertyDropdown?: boolean;\n\tchildren: (toggle: () => void) => React.ReactNode;\n}\n\nexport function Dropdown({\n\tbuttonKind = 'clean',\n\tdirection = 'Down',\n\tisSmall,\n\tfadeIn,\n\tisMetapropertyDropdown,\n\t...props\n}: Props) {\n\tconst assetFilterState = useAssetFilter();\n\n\tconst menuId = useId();\n\tconst [active, setActive] = useState(false);\n\tconst target = useRef<HTMLButtonElement | null>(null);\n\tconst toggle = () => {\n\t\tsetActive((prevActive) => !prevActive);\n\t\tassetFilterState.setDropdownState(!assetFilterState.isDropdownActive);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<AnimationWrapper $fadeIn={Boolean(fadeIn)}>\n\t\t\t\t<Button\n\t\t\t\t\tvariant={buttonKind}\n\t\t\t\t\tisSmall={isSmall}\n\t\t\t\t\tonClick={toggle}\n\t\t\t\t\tref={target}\n\t\t\t\t\tisDisabled={props.disabled}\n\t\t\t\t\tisPressed={active}\n\t\t\t\t\taria-haspopup\n\t\t\t\t\taria-expanded={active}\n\t\t\t\t\taria-controls={menuId}\n\t\t\t\t\tdata-testid=\"button\"\n\t\t\t\t>\n\t\t\t\t\t<DropdownTitle title={props.alt}>{props.title}</DropdownTitle>\n\t\t\t\t\t<CaretDownArrow $active={active} className=\"fa fa-caret-down\" />\n\t\t\t\t</Button>\n\t\t\t</AnimationWrapper>\n\n\t\t\t{active && (\n\t\t\t\t<DropdownContent\n\t\t\t\t\tisPaddingContent={props.isPaddingContent}\n\t\t\t\t\tonClickOutside={toggle}\n\t\t\t\t\tdirection={direction}\n\t\t\t\t\ttarget={target}\n\t\t\t\t\tid={menuId}\n\t\t\t\t\tisMetapropertyDropdown={isMetapropertyDropdown}\n\t\t\t\t>\n\t\t\t\t\t{props.children(toggle)}\n\t\t\t\t</DropdownContent>\n\t\t\t)}\n\t\t</>\n\t);\n}\n\nfunction useId(): string {\n\treturn useMemo(\n\t\t() => `dropdownmenu-${Date.now()}-${Math.random().toString(36).substring(2)}`,\n\t\t[],\n\t);\n}\n\nconst AnimationWrapper = styled.div<{ $fadeIn: boolean }>`\n\ttext-transform: inherit;\n\t${(p) => (p.$fadeIn ? `animation: var(--fade-in-down);` : '')}\n`;\n\nconst CaretDownArrow = styled.i<{ $active?: boolean }>`\n\tmargin-left: ${token.spacing3};\n\ttransition: transform 200ms;\n\t${(p) => (p.$active ? 'transform: rotate(180deg);' : '')}\n`;\n\nconst DropdownTitle = styled.span`\n\tdisplay: inline-flex;\n\talign-items: center;\n`;\n"],"names":["Dropdown","buttonKind","direction","isSmall","fadeIn","isMetapropertyDropdown","props","assetFilterState","useAssetFilter","menuId","useId","active","setActive","useState","target","useRef","toggle","prevActive","jsxs","Fragment","jsx","AnimationWrapper","Button","DropdownTitle","CaretDownArrow","DropdownContent","useMemo","styled","p","token"],"mappings":";;;;;;AAoBO,SAASA,EAAS;AAAA,EACxB,YAAAC,IAAa;AAAA,EACb,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,wBAAAC;AAAA,EACA,GAAGC;AACJ,GAAU;AACT,QAAMC,IAAmBC,EAAA,GAEnBC,IAASC,EAAA,GACT,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAK,GACpCC,IAASC,EAAiC,IAAI,GAC9CC,IAAS,MAAM;AACpB,IAAAJ,EAAU,CAACK,MAAe,CAACA,CAAU,GACrCV,EAAiB,iBAAiB,CAACA,EAAiB,gBAAgB;AAAA,EACrE;AAEA,SACC,gBAAAW,EAAAC,GAAA,EACC,UAAA;AAAA,IAAA,gBAAAC,EAACC,GAAA,EAAiB,SAAS,EAAQjB,GAClC,UAAA,gBAAAc;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,SAASrB;AAAA,QACT,SAAAE;AAAA,QACA,SAASa;AAAA,QACT,KAAKF;AAAA,QACL,YAAYR,EAAM;AAAA,QAClB,WAAWK;AAAA,QACX,iBAAa;AAAA,QACb,iBAAeA;AAAA,QACf,iBAAeF;AAAA,QACf,eAAY;AAAA,QAEZ,UAAA;AAAA,UAAA,gBAAAW,EAACG,GAAA,EAAc,OAAOjB,EAAM,KAAM,YAAM,OAAM;AAAA,UAC9C,gBAAAc,EAACI,GAAA,EAAe,SAASb,GAAQ,WAAU,mBAAA,CAAmB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEhE;AAAA,IAECA,KACA,gBAAAS;AAAA,MAACK;AAAA,MAAA;AAAA,QACA,kBAAkBnB,EAAM;AAAA,QACxB,gBAAgBU;AAAA,QAChB,WAAAd;AAAA,QACA,QAAAY;AAAA,QACA,IAAIL;AAAA,QACJ,wBAAAJ;AAAA,QAEC,UAAAC,EAAM,SAASU,CAAM;AAAA,MAAA;AAAA,IAAA;AAAA,EACvB,GAEF;AAEF;AAEA,SAASN,IAAgB;AACxB,SAAOgB;AAAA,IACN,MAAM,gBAAgB,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;AAAA,IAC3E,CAAA;AAAA,EAAC;AAEH;AAEA,MAAML,IAAmBM,EAAO;AAAA;AAAA,GAE7B,CAACC,MAAOA,EAAE,UAAU,oCAAoC,EAAG;AAAA,GAGxDJ,IAAiBG,EAAO;AAAA,gBACdE,EAAM,QAAQ;AAAA;AAAA,GAE3B,CAACD,MAAOA,EAAE,UAAU,+BAA+B,EAAG;AAAA,GAGnDL,IAAgBI,EAAO;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,59 @@
1
+ import { jsx as b } from "react/jsx-runtime";
2
+ import { useRef as W, useState as y, useLayoutEffect as R } from "react";
3
+ import { createPortal as D } from "react-dom";
4
+ import { styled as H } from "styled-components";
5
+ import { token as k } from "@bynder/design-system";
6
+ import { useClickOutside as O } from "./useClickOutside.js";
7
+ import { useRootElement as P } from "./RootElementContext.js";
8
+ import { concatClasses as S } from "./class.js";
9
+ function U(t) {
10
+ const n = W(null), [, d] = y(0);
11
+ O([t.target, n], t.onClickOutside);
12
+ const i = !!document.querySelector("#compactViewContainer");
13
+ R(() => {
14
+ d(
15
+ t.target.current !== null ? t.target.current.getBoundingClientRect().x : 0
16
+ );
17
+ }, [t.target]);
18
+ const c = P();
19
+ if (c === null || t.target.current === null)
20
+ return null;
21
+ const a = () => t.isMetapropertyDropdown ? i ? "39%" : o < 1120 ? u : 1120 : 300, s = () => {
22
+ const v = n.current && r + n.current.clientWidth > o ? void 0 : r;
23
+ return i ? "initial" : v;
24
+ }, e = t.target.current.getBoundingClientRect(), r = e.x, o = window.innerWidth - 32, u = o - 16, l = 280, m = a(), g = 600, f = s(), x = n.current && r + n.current.clientWidth > o ? 24 : void 0, h = t.direction === "Down" ? e.top + e.height : void 0, w = t.direction === "Up" ? window.innerHeight - e.top : void 0, C = {
25
+ left: f,
26
+ right: x,
27
+ top: h,
28
+ bottom: w,
29
+ minWidth: l,
30
+ maxWidth: m,
31
+ maxHeight: g
32
+ }, p = S("cv-root cv-dropdown");
33
+ return D(
34
+ /* @__PURE__ */ b(
35
+ B,
36
+ {
37
+ role: "menu",
38
+ id: t.id,
39
+ className: p,
40
+ ref: n,
41
+ style: C,
42
+ isPaddingContent: t.isPaddingContent,
43
+ children: t.children
44
+ }
45
+ ),
46
+ c
47
+ );
48
+ }
49
+ const B = H.div`
50
+ padding: ${({ isPaddingContent: t }) => t ? `${k.spacing3} 0` : "0"};
51
+ user-select: none;
52
+ border-radius: 6px;
53
+ border: 1px solid rgba(3, 16, 38, 0.17);
54
+ box-shadow: 0px 0px 1px 0px rgba(3, 16, 38, 0.1), 0px 8px 12px -2px rgba(3, 16, 38, 0.1);
55
+ `;
56
+ export {
57
+ U as DropdownContent
58
+ };
59
+ //# sourceMappingURL=DropdownContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownContent.js","sources":["../../src/common/components/dropdown/DropdownContent.tsx"],"sourcesContent":["import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { styled } from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { useClickOutside } from '../../hooks/useClickOutside';\nimport { useRootElement } from '../../../style/RootElementContext';\nimport { concatClasses } from '../../../utils/class';\n\ninterface DropdownContentProps {\n\tonClickOutside: () => void;\n\tdirection: 'Down' | 'Up';\n\ttarget: React.MutableRefObject<Element | null>;\n\tchildren: React.ReactNode;\n\tid: string;\n\tisPaddingContent?: boolean;\n\tisMetapropertyDropdown?: boolean;\n}\n\nexport function DropdownContent(props: DropdownContentProps) {\n\tconst overlay = useRef<HTMLDivElement | null>(null);\n\tconst [, setState] = useState(0.0);\n\n\tuseClickOutside([props.target, overlay], props.onClickOutside);\n\n\tconst isCompactViewContainer = !!document.querySelector('#compactViewContainer');\n\n\t// Hack to force recalculation of position after dropdown button rerenders\n\tuseLayoutEffect(() => {\n\t\tsetState(\n\t\t\tprops.target.current !== null ? props.target.current.getBoundingClientRect().x : 0.0,\n\t\t);\n\t}, [props.target]);\n\n\tconst root = useRootElement();\n\n\tif (root === null || props.target.current === null) {\n\t\treturn null;\n\t}\n\n\tconst maxWidthHandler = () => {\n\t\tif (!props.isMetapropertyDropdown) {\n\t\t\treturn 300;\n\t\t}\n\n\t\tif (isCompactViewContainer) {\n\t\t\treturn '39%';\n\t\t}\n\n\t\t// 1120 is max size of dropdown element per designs\n\t\treturn viewportWidth < 1120 ? viewportWidthOffset : 1120;\n\t};\n\n\tconst leftHandler = () => {\n\t\tconst left =\n\t\t\toverlay.current && x + overlay.current.clientWidth > viewportWidth ? undefined : x;\n\n\t\treturn isCompactViewContainer ? 'initial' : left;\n\t};\n\n\tconst boundingRect = props.target.current.getBoundingClientRect();\n\tconst x = boundingRect.x;\n\t// 32 is the padding around the root element\n\tconst viewportWidth = window.innerWidth - 32;\n\t// 16px is to account for offset from edge of modal. Designs have it at 8px on each side.\n\tconst viewportWidthOffset = viewportWidth - 16;\n\n\tconst minWidth = 280;\n\tconst maxWidth = maxWidthHandler();\n\tconst maxHeight = 600;\n\n\tconst left = leftHandler();\n\t// 24 is padding around modal (16px) + 8px from the designs as the dropdown is offset from the edge\n\tconst right =\n\t\toverlay.current && x + overlay.current.clientWidth > viewportWidth ? 24 : undefined;\n\n\tconst top = props.direction === 'Down' ? boundingRect.top + boundingRect.height : undefined;\n\tconst bottom = props.direction === 'Up' ? window.innerHeight - boundingRect.top : undefined;\n\n\tconst style: React.CSSProperties = {\n\t\tleft,\n\t\tright,\n\t\ttop,\n\t\tbottom,\n\t\tminWidth,\n\t\tmaxWidth,\n\t\tmaxHeight,\n\t};\n\tconst className = concatClasses('cv-root cv-dropdown');\n\n\treturn createPortal(\n\t\t<DropdownContentContainer\n\t\t\trole=\"menu\"\n\t\t\tid={props.id}\n\t\t\tclassName={className}\n\t\t\tref={overlay}\n\t\t\tstyle={style}\n\t\t\tisPaddingContent={props.isPaddingContent}\n\t\t>\n\t\t\t{props.children}\n\t\t</DropdownContentContainer>,\n\t\troot,\n\t);\n}\n\nconst DropdownContentContainer = styled.div<{ isPaddingContent?: boolean }>`\n\tpadding: ${({ isPaddingContent }) => (isPaddingContent ? `${token.spacing3} 0` : '0')};\n\tuser-select: none;\n\tborder-radius: 6px;\n\tborder: 1px solid rgba(3, 16, 38, 0.17);\n\tbox-shadow: 0px 0px 1px 0px rgba(3, 16, 38, 0.1), 0px 8px 12px -2px rgba(3, 16, 38, 0.1);\n`;\n"],"names":["DropdownContent","props","overlay","useRef","setState","useState","useClickOutside","isCompactViewContainer","useLayoutEffect","root","useRootElement","maxWidthHandler","viewportWidth","viewportWidthOffset","leftHandler","left","x","boundingRect","minWidth","maxWidth","maxHeight","right","top","bottom","style","className","concatClasses","createPortal","jsx","DropdownContentContainer","styled","isPaddingContent","token"],"mappings":";;;;;;;;AAmBO,SAASA,EAAgBC,GAA6B;AAC5D,QAAMC,IAAUC,EAA8B,IAAI,GAC5C,GAAGC,CAAQ,IAAIC,EAAS,CAAG;AAEjC,EAAAC,EAAgB,CAACL,EAAM,QAAQC,CAAO,GAAGD,EAAM,cAAc;AAE7D,QAAMM,IAAyB,CAAC,CAAC,SAAS,cAAc,uBAAuB;AAG/E,EAAAC,EAAgB,MAAM;AACrB,IAAAJ;AAAA,MACCH,EAAM,OAAO,YAAY,OAAOA,EAAM,OAAO,QAAQ,sBAAA,EAAwB,IAAI;AAAA,IAAA;AAAA,EAEnF,GAAG,CAACA,EAAM,MAAM,CAAC;AAEjB,QAAMQ,IAAOC,EAAA;AAEb,MAAID,MAAS,QAAQR,EAAM,OAAO,YAAY;AAC7C,WAAO;AAGR,QAAMU,IAAkB,MAClBV,EAAM,yBAIPM,IACI,QAIDK,IAAgB,OAAOC,IAAsB,OAR5C,KAWHC,IAAc,MAAM;AACzB,UAAMC,IACLb,EAAQ,WAAWc,IAAId,EAAQ,QAAQ,cAAcU,IAAgB,SAAYI;AAElF,WAAOT,IAAyB,YAAYQ;AAAAA,EAC7C,GAEME,IAAehB,EAAM,OAAO,QAAQ,sBAAA,GACpCe,IAAIC,EAAa,GAEjBL,IAAgB,OAAO,aAAa,IAEpCC,IAAsBD,IAAgB,IAEtCM,IAAW,KACXC,IAAWR,EAAA,GACXS,IAAY,KAEZL,IAAOD,EAAA,GAEPO,IACLnB,EAAQ,WAAWc,IAAId,EAAQ,QAAQ,cAAcU,IAAgB,KAAK,QAErEU,IAAMrB,EAAM,cAAc,SAASgB,EAAa,MAAMA,EAAa,SAAS,QAC5EM,IAAStB,EAAM,cAAc,OAAO,OAAO,cAAcgB,EAAa,MAAM,QAE5EO,IAA6B;AAAA,IAClC,MAAAT;AAAA,IACA,OAAAM;AAAA,IACA,KAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAAL;AAAA,IACA,UAAAC;AAAA,IACA,WAAAC;AAAA,EAAA,GAEKK,IAAYC,EAAc,qBAAqB;AAErD,SAAOC;AAAA,IACN,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACA,MAAK;AAAA,QACL,IAAI5B,EAAM;AAAA,QACV,WAAAwB;AAAA,QACA,KAAKvB;AAAA,QACL,OAAAsB;AAAA,QACA,kBAAkBvB,EAAM;AAAA,QAEvB,UAAAA,EAAM;AAAA,MAAA;AAAA,IAAA;AAAA,IAERQ;AAAA,EAAA;AAEF;AAEA,MAAMoB,IAA2BC,EAAO;AAAA,YAC5B,CAAC,EAAE,kBAAAC,EAAA,MAAwBA,IAAmB,GAAGC,EAAM,QAAQ,OAAO,GAAI;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -0,0 +1,52 @@
1
+ import { jsx as n, jsxs as e } from "react/jsx-runtime";
2
+ import { styled as r } from "styled-components";
3
+ import { token as o } from "@bynder/design-system";
4
+ import { IconCheck as a } from "@bynder/icons";
5
+ function m({ selected: i = !1, ...t }) {
6
+ return /* @__PURE__ */ n("li", { children: /* @__PURE__ */ e(
7
+ c,
8
+ {
9
+ type: "button",
10
+ onClick: t.onClick,
11
+ role: "menuitemradio",
12
+ "aria-checked": i,
13
+ tabIndex: -1,
14
+ "data-testid": "dropdown-list-item",
15
+ $isSelected: i,
16
+ $isFieldSelect: t.isFieldSelect,
17
+ children: [
18
+ t.children,
19
+ i && /* @__PURE__ */ n(l, {})
20
+ ]
21
+ }
22
+ ) });
23
+ }
24
+ const c = r.button`
25
+ display: flex;
26
+ align-items: center;
27
+ cursor: pointer;
28
+ width: 100%;
29
+ color: ${(i) => i.$isSelected ? "rgba(0, 34, 51, 0.8);" : "rgba(0, 34, 51, 0.5)"};
30
+ text-align: left;
31
+ transition-property: color, background-color, border-color, opacity;
32
+ transition-timing-function: linear;
33
+ transition-duration: 0.05s;
34
+ border: 0 solid rgba(0, 34, 51, 0.1);
35
+ background-color: transparent;
36
+ font-size: ${o.fontSize75};
37
+ padding: ${(i) => i.$isFieldSelect ? `1px ${o.spacing5}` : `${o.spacing3} ${o.spacing4}`};
38
+
39
+ &:hover {
40
+ color: rgba(0, 34, 51, 0.8);
41
+ background-color: rgba(0, 34, 51, 0.03);
42
+ }
43
+ `, l = r(a)`
44
+ margin-left: ${o.spacing4};
45
+ height: ${o.spacing6};
46
+ width: ${o.spacing6};
47
+ animation: fade-in 150ms ease-out;
48
+ `;
49
+ export {
50
+ m as DropdownListItem
51
+ };
52
+ //# sourceMappingURL=DropdownListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownListItem.js","sources":["../../src/common/components/dropdown/DropdownListItem.tsx"],"sourcesContent":["import React from 'react';\nimport { styled } from 'styled-components';\nimport { token } from '@bynder/design-system';\nimport { IconCheck } from '@bynder/icons';\n\ninterface ListItemProps {\n\tclassName?: string;\n\tonClick?: () => void;\n\tselected?: boolean;\n\tchildren: React.ReactNode;\n\tisFieldSelect?: boolean;\n}\n\nexport function DropdownListItem({ selected = false, ...props }: ListItemProps) {\n\treturn (\n\t\t<li>\n\t\t\t<DropdownButton\n\t\t\t\ttype=\"button\"\n\t\t\t\tonClick={props.onClick}\n\t\t\t\trole=\"menuitemradio\"\n\t\t\t\taria-checked={selected}\n\t\t\t\ttabIndex={-1}\n\t\t\t\tdata-testid=\"dropdown-list-item\"\n\t\t\t\t$isSelected={selected}\n\t\t\t\t$isFieldSelect={props.isFieldSelect}\n\t\t\t>\n\t\t\t\t{props.children}\n\n\t\t\t\t{selected && <CheckIcon />}\n\t\t\t</DropdownButton>\n\t\t</li>\n\t);\n}\n\nconst DropdownButton = styled.button<{ $isSelected: boolean; $isFieldSelect?: boolean }>`\n\tdisplay: flex;\n\talign-items: center;\n\tcursor: pointer;\n\twidth: 100%;\n\tcolor: ${(p) => (p.$isSelected ? 'rgba(0, 34, 51, 0.8);' : 'rgba(0, 34, 51, 0.5)')};\n\ttext-align: left;\n\ttransition-property: color, background-color, border-color, opacity;\n\ttransition-timing-function: linear;\n\ttransition-duration: 0.05s;\n\tborder: 0 solid rgba(0, 34, 51, 0.1);\n\tbackground-color: transparent;\n\tfont-size: ${token.fontSize75};\n\tpadding: ${(p) =>\n\t\tp.$isFieldSelect ? `1px ${token.spacing5}` : `${token.spacing3} ${token.spacing4}`};\n\n\t&:hover {\n\t\tcolor: rgba(0, 34, 51, 0.8);\n\t\tbackground-color: rgba(0, 34, 51, 0.03);\n\t}\n`;\n\nconst CheckIcon = styled(IconCheck)`\n\tmargin-left: ${token.spacing4};\n\theight: ${token.spacing6};\n\twidth: ${token.spacing6};\n\tanimation: fade-in 150ms ease-out;\n`;\n"],"names":["DropdownListItem","selected","props","jsxs","DropdownButton","CheckIcon","styled","p","token","IconCheck"],"mappings":";;;;AAaO,SAASA,EAAiB,EAAE,UAAAC,IAAW,IAAO,GAAGC,KAAwB;AAC/E,2BACE,MAAA,EACA,UAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,MAAK;AAAA,MACL,SAASF,EAAM;AAAA,MACf,MAAK;AAAA,MACL,gBAAcD;AAAA,MACd,UAAU;AAAA,MACV,eAAY;AAAA,MACZ,aAAaA;AAAA,MACb,gBAAgBC,EAAM;AAAA,MAErB,UAAA;AAAA,QAAAA,EAAM;AAAA,QAEND,uBAAaI,GAAA,CAAA,CAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAE1B;AAEF;AAEA,MAAMD,IAAiBE,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,UAKpB,CAACC,MAAOA,EAAE,cAAc,0BAA0B,sBAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAOrEC,EAAM,UAAU;AAAA,YAClB,CAACD,MACXA,EAAE,iBAAiB,OAAOC,EAAM,QAAQ,KAAK,GAAGA,EAAM,QAAQ,IAAIA,EAAM,QAAQ,EAAE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQ9EH,IAAYC,EAAOG,CAAS;AAAA,gBAClBD,EAAM,QAAQ;AAAA,WACnBA,EAAM,QAAQ;AAAA,UACfA,EAAM,QAAQ;AAAA;AAAA;"}
package/ErrorIcon.js ADDED
@@ -0,0 +1,48 @@
1
+ import { jsxs as i, jsx as l } from "react/jsx-runtime";
2
+ function e() {
3
+ return /* @__PURE__ */ i("svg", { width: "190", height: "130", children: [
4
+ /* @__PURE__ */ i("defs", { children: [
5
+ /* @__PURE__ */ i("linearGradient", { id: "prefix__b", x1: "100%", x2: "25.598%", y1: "11.782%", y2: "100%", children: [
6
+ /* @__PURE__ */ l("stop", { offset: "0%", stopColor: "#F8FAFC" }),
7
+ /* @__PURE__ */ l("stop", { offset: "100%", stopColor: "#EFF2F4" })
8
+ ] }),
9
+ /* @__PURE__ */ l("rect", { id: "prefix__a", width: "190", height: "130", rx: "3" })
10
+ ] }),
11
+ /* @__PURE__ */ i("g", { fill: "none", fillRule: "evenodd", children: [
12
+ /* @__PURE__ */ l("mask", { id: "prefix__c", fill: "#fff", children: /* @__PURE__ */ l("use", { xlinkHref: "#prefix__a" }) }),
13
+ /* @__PURE__ */ l("use", { fill: "url(#prefix__b)", xlinkHref: "#prefix__a" }),
14
+ /* @__PURE__ */ i("g", { mask: "url(#prefix__c)", children: [
15
+ /* @__PURE__ */ l(
16
+ "path",
17
+ {
18
+ fill: "#F5A623",
19
+ d: "M100.296 45.951l23.01 43.23A6 6 0 01118.009 98H71.991a6 6 0 01-5.297-8.82l23.01-43.229a6 6 0 0110.592 0z"
20
+ }
21
+ ),
22
+ /* @__PURE__ */ l(
23
+ "path",
24
+ {
25
+ fill: "#FFF",
26
+ fillRule: "nonzero",
27
+ d: "M93.21 60h3.58a2 2 0 011.99 2.199l-1.6 16A2 2 0 0195.19 80h-.38a2 2 0 01-1.99-1.801l-1.6-16A2 2 0 0193.21 60zM95 84a3 3 0 110 6 3 3 0 010-6z"
28
+ }
29
+ )
30
+ ] }),
31
+ /* @__PURE__ */ l(
32
+ "path",
33
+ {
34
+ fill: "#EEF1F3",
35
+ d: "M3 0h184a3 3 0 013 3v13H0V3a3 3 0 013-3z",
36
+ mask: "url(#prefix__c)"
37
+ }
38
+ ),
39
+ /* @__PURE__ */ l("circle", { cx: "11", cy: "8", r: "3", fill: "#023", fillOpacity: "0.1", mask: "url(#prefix__c)" }),
40
+ /* @__PURE__ */ l("circle", { cx: "20", cy: "8", r: "3", fill: "#023", fillOpacity: "0.1", mask: "url(#prefix__c)" }),
41
+ /* @__PURE__ */ l("circle", { cx: "29", cy: "8", r: "3", fill: "#023", fillOpacity: "0.1", mask: "url(#prefix__c)" })
42
+ ] })
43
+ ] });
44
+ }
45
+ export {
46
+ e as ErrorIcon
47
+ };
48
+ //# sourceMappingURL=ErrorIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorIcon.js","sources":["../../src/error-handling/ErrorIcon.tsx"],"sourcesContent":["import React from 'react';\n\nexport function ErrorIcon() {\n\treturn (\n\t\t<svg width=\"190\" height=\"130\">\n\t\t\t<defs>\n\t\t\t\t<linearGradient id=\"prefix__b\" x1=\"100%\" x2=\"25.598%\" y1=\"11.782%\" y2=\"100%\">\n\t\t\t\t\t<stop offset=\"0%\" stopColor=\"#F8FAFC\" />\n\t\t\t\t\t<stop offset=\"100%\" stopColor=\"#EFF2F4\" />\n\t\t\t\t</linearGradient>\n\t\t\t\t<rect id=\"prefix__a\" width=\"190\" height=\"130\" rx=\"3\" />\n\t\t\t</defs>\n\t\t\t<g fill=\"none\" fillRule=\"evenodd\">\n\t\t\t\t<mask id=\"prefix__c\" fill=\"#fff\">\n\t\t\t\t\t<use xlinkHref=\"#prefix__a\" />\n\t\t\t\t</mask>\n\t\t\t\t<use fill=\"url(#prefix__b)\" xlinkHref=\"#prefix__a\" />\n\t\t\t\t<g mask=\"url(#prefix__c)\">\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill=\"#F5A623\"\n\t\t\t\t\t\td=\"M100.296 45.951l23.01 43.23A6 6 0 01118.009 98H71.991a6 6 0 01-5.297-8.82l23.01-43.229a6 6 0 0110.592 0z\"\n\t\t\t\t\t/>\n\t\t\t\t\t<path\n\t\t\t\t\t\tfill=\"#FFF\"\n\t\t\t\t\t\tfillRule=\"nonzero\"\n\t\t\t\t\t\td=\"M93.21 60h3.58a2 2 0 011.99 2.199l-1.6 16A2 2 0 0195.19 80h-.38a2 2 0 01-1.99-1.801l-1.6-16A2 2 0 0193.21 60zM95 84a3 3 0 110 6 3 3 0 010-6z\"\n\t\t\t\t\t/>\n\t\t\t\t</g>\n\t\t\t\t<path\n\t\t\t\t\tfill=\"#EEF1F3\"\n\t\t\t\t\td=\"M3 0h184a3 3 0 013 3v13H0V3a3 3 0 013-3z\"\n\t\t\t\t\tmask=\"url(#prefix__c)\"\n\t\t\t\t/>\n\t\t\t\t<circle cx=\"11\" cy=\"8\" r=\"3\" fill=\"#023\" fillOpacity=\"0.1\" mask=\"url(#prefix__c)\" />\n\t\t\t\t<circle cx=\"20\" cy=\"8\" r=\"3\" fill=\"#023\" fillOpacity=\"0.1\" mask=\"url(#prefix__c)\" />\n\t\t\t\t<circle cx=\"29\" cy=\"8\" r=\"3\" fill=\"#023\" fillOpacity=\"0.1\" mask=\"url(#prefix__c)\" />\n\t\t\t</g>\n\t\t</svg>\n\t);\n}\n"],"names":["ErrorIcon","jsxs","jsx"],"mappings":";AAEO,SAASA,IAAY;AAC3B,SACC,gBAAAC,EAAC,OAAA,EAAI,OAAM,OAAM,QAAO,OACvB,UAAA;AAAA,IAAA,gBAAAA,EAAC,QAAA,EACA,UAAA;AAAA,MAAA,gBAAAA,EAAC,kBAAA,EAAe,IAAG,aAAY,IAAG,QAAO,IAAG,WAAU,IAAG,WAAU,IAAG,QACrE,UAAA;AAAA,QAAA,gBAAAC,EAAC,QAAA,EAAK,QAAO,MAAK,WAAU,WAAU;AAAA,QACtC,gBAAAA,EAAC,QAAA,EAAK,QAAO,QAAO,WAAU,UAAA,CAAU;AAAA,MAAA,GACzC;AAAA,MACA,gBAAAA,EAAC,UAAK,IAAG,aAAY,OAAM,OAAM,QAAO,OAAM,IAAG,IAAA,CAAI;AAAA,IAAA,GACtD;AAAA,IACA,gBAAAD,EAAC,KAAA,EAAE,MAAK,QAAO,UAAS,WACvB,UAAA;AAAA,MAAA,gBAAAC,EAAC,QAAA,EAAK,IAAG,aAAY,MAAK,QACzB,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,aAAA,CAAa,EAAA,CAC7B;AAAA,MACA,gBAAAA,EAAC,OAAA,EAAI,MAAK,mBAAkB,WAAU,cAAa;AAAA,MACnD,gBAAAD,EAAC,KAAA,EAAE,MAAK,mBACP,UAAA;AAAA,QAAA,gBAAAC;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,GAAE;AAAA,UAAA;AAAA,QAAA;AAAA,QAEH,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACA,MAAK;AAAA,YACL,UAAS;AAAA,YACT,GAAE;AAAA,UAAA;AAAA,QAAA;AAAA,MACH,GACD;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACA,MAAK;AAAA,UACL,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAEN,gBAAAA,EAAC,UAAA,EAAO,IAAG,MAAK,IAAG,KAAI,GAAE,KAAI,MAAK,QAAO,aAAY,OAAM,MAAK,mBAAkB;AAAA,MAClF,gBAAAA,EAAC,UAAA,EAAO,IAAG,MAAK,IAAG,KAAI,GAAE,KAAI,MAAK,QAAO,aAAY,OAAM,MAAK,mBAAkB;AAAA,MAClF,gBAAAA,EAAC,UAAA,EAAO,IAAG,MAAK,IAAG,KAAI,GAAE,KAAI,MAAK,QAAO,aAAY,OAAM,MAAK,kBAAA,CAAkB;AAAA,IAAA,EAAA,CACnF;AAAA,EAAA,GACD;AAEF;"}
@@ -0,0 +1,40 @@
1
+ import { jsxs as e, Fragment as c, jsx as r } from "react/jsx-runtime";
2
+ import i from "styled-components";
3
+ import { token as n, Button as a } from "@bynder/design-system";
4
+ import { __ as t } from "./index2.js";
5
+ import { ErrorIcon as s } from "./ErrorIcon.js";
6
+ function u(o) {
7
+ return /* @__PURE__ */ e(c, { children: [
8
+ /* @__PURE__ */ r(s, {}),
9
+ /* @__PURE__ */ r(l, { children: t("Oops! Something went wrong") }),
10
+ /* @__PURE__ */ r(p, { children: t("Please try again or get in contact with our customer support.") }),
11
+ /* @__PURE__ */ e(m, { children: [
12
+ /* @__PURE__ */ r(
13
+ a,
14
+ {
15
+ variant: "secondary",
16
+ title: t("Send report"),
17
+ onClick: o.onClickSend,
18
+ isDisabled: o.isReportSent,
19
+ children: o.isReportSent ? t("Report sent") : t("Send report...")
20
+ }
21
+ ),
22
+ /* @__PURE__ */ r(a, { variant: "primary", title: t("Try again"), onClick: o.onClickRetry, children: t("Try again") })
23
+ ] })
24
+ ] });
25
+ }
26
+ const l = i.h1`
27
+ margin-top: ${n.spacing8};
28
+ font-size: ${n.fontSize400};
29
+ `, p = i.span`
30
+ margin-top: ${n.spacing5};
31
+ color: ${n.colorTextDisabled};
32
+ `, m = i.div`
33
+ margin-top: ${n.spacing7};
34
+ display: flex;
35
+ gap: ${n.spacing3};
36
+ `;
37
+ export {
38
+ u as ErrorMessage
39
+ };
40
+ //# sourceMappingURL=ErrorMessage.js.map