@plumile/ui 0.1.56 → 0.1.57

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 (322) hide show
  1. package/lib/esm/atomic/atoms/badge/Badge.js +17 -16
  2. package/lib/esm/atomic/atoms/badge/Badge.js.map +1 -1
  3. package/lib/esm/atomic/atoms/badge/badge.css.js +30 -8
  4. package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -1
  5. package/lib/esm/atomic/atoms/button/Button.js +46 -58
  6. package/lib/esm/atomic/atoms/button/Button.js.map +1 -1
  7. package/lib/esm/atomic/atoms/button/LinkButton.js +48 -62
  8. package/lib/esm/atomic/atoms/button/LinkButton.js.map +1 -1
  9. package/lib/esm/atomic/atoms/button/button.css.js +95 -16
  10. package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
  11. package/lib/esm/atomic/atoms/checkbox/Checkbox.js +37 -40
  12. package/lib/esm/atomic/atoms/checkbox/Checkbox.js.map +1 -1
  13. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +26 -11
  14. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
  15. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js +32 -31
  16. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js.map +1 -1
  17. package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js +18 -25
  18. package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js.map +1 -1
  19. package/lib/esm/atomic/atoms/input/Input.js +46 -40
  20. package/lib/esm/atomic/atoms/input/Input.js.map +1 -1
  21. package/lib/esm/atomic/atoms/input/input.css.js +32 -14
  22. package/lib/esm/atomic/atoms/input/input.css.js.map +1 -1
  23. package/lib/esm/atomic/atoms/label/Label.js +23 -16
  24. package/lib/esm/atomic/atoms/label/Label.js.map +1 -1
  25. package/lib/esm/atomic/atoms/label/label.css.js +27 -9
  26. package/lib/esm/atomic/atoms/label/label.css.js.map +1 -1
  27. package/lib/esm/atomic/atoms/textarea/Textarea.js +19 -18
  28. package/lib/esm/atomic/atoms/textarea/Textarea.js.map +1 -1
  29. package/lib/esm/atomic/atoms/textarea/textarea.css.js +32 -8
  30. package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -1
  31. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +47 -54
  32. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js.map +1 -1
  33. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +53 -60
  34. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js.map +1 -1
  35. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +62 -63
  36. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js.map +1 -1
  37. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +8 -30
  38. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js.map +1 -1
  39. package/lib/esm/atomic/molecules/breadcrumb_navigation/types.js +0 -2
  40. package/lib/esm/atomic/molecules/card/Card.css.js +8 -10
  41. package/lib/esm/atomic/molecules/card/Card.css.js.map +1 -1
  42. package/lib/esm/atomic/molecules/card/Card.js +24 -17
  43. package/lib/esm/atomic/molecules/card/Card.js.map +1 -1
  44. package/lib/esm/atomic/molecules/dropdown/Dropdown.js +148 -177
  45. package/lib/esm/atomic/molecules/dropdown/Dropdown.js.map +1 -1
  46. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +8 -13
  47. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js.map +1 -1
  48. package/lib/esm/atomic/molecules/form-actions/FormActions.js +31 -56
  49. package/lib/esm/atomic/molecules/form-actions/FormActions.js.map +1 -1
  50. package/lib/esm/atomic/molecules/tabs/Tabs.js +34 -33
  51. package/lib/esm/atomic/molecules/tabs/Tabs.js.map +1 -1
  52. package/lib/esm/atomic/molecules/tabs/tabs.css.js +18 -9
  53. package/lib/esm/atomic/molecules/tabs/tabs.css.js.map +1 -1
  54. package/lib/esm/atomic/molecules/toast/ToastProvider.js +82 -77
  55. package/lib/esm/atomic/molecules/toast/ToastProvider.js.map +1 -1
  56. package/lib/esm/atomic/molecules/toast/ToastViewport.js +75 -70
  57. package/lib/esm/atomic/molecules/toast/ToastViewport.js.map +1 -1
  58. package/lib/esm/atomic/molecules/toast/constants.js +6 -5
  59. package/lib/esm/atomic/molecules/toast/constants.js.map +1 -1
  60. package/lib/esm/atomic/molecules/toast/toast.css.js +18 -17
  61. package/lib/esm/atomic/molecules/toast/toast.css.js.map +1 -1
  62. package/lib/esm/components/charts/BillingUsageLineChart.js +140 -173
  63. package/lib/esm/components/charts/BillingUsageLineChart.js.map +1 -1
  64. package/lib/esm/components/charts/billingUsageLineChart.css.js +8 -12
  65. package/lib/esm/components/charts/billingUsageLineChart.css.js.map +1 -1
  66. package/lib/esm/components/data-table/DataTable.css.js +84 -24
  67. package/lib/esm/components/data-table/DataTable.css.js.map +1 -1
  68. package/lib/esm/components/data-table/DataTable.js +73 -140
  69. package/lib/esm/components/data-table/DataTable.js.map +1 -1
  70. package/lib/esm/components/data-table/TableCell.css.js +18 -15
  71. package/lib/esm/components/data-table/TableCell.css.js.map +1 -1
  72. package/lib/esm/components/data-table/TableCell.js +74 -73
  73. package/lib/esm/components/data-table/TableCell.js.map +1 -1
  74. package/lib/esm/components/data-table/TableCellBase.js +18 -15
  75. package/lib/esm/components/data-table/TableCellBase.js.map +1 -1
  76. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +8 -10
  77. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js.map +1 -1
  78. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +190 -248
  79. package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -1
  80. package/lib/esm/components/data-table/tableBreakpoints.js +28 -34
  81. package/lib/esm/components/data-table/tableBreakpoints.js.map +1 -1
  82. package/lib/esm/components/layout/ContentLayout.css.js +8 -18
  83. package/lib/esm/components/layout/ContentLayout.css.js.map +1 -1
  84. package/lib/esm/components/layout/ContentLayout.js +68 -78
  85. package/lib/esm/components/layout/ContentLayout.js.map +1 -1
  86. package/lib/esm/components/layout/TabsContentLayout.css.js +8 -11
  87. package/lib/esm/components/layout/TabsContentLayout.css.js.map +1 -1
  88. package/lib/esm/components/layout/TabsContentLayout.js +30 -13
  89. package/lib/esm/components/layout/TabsContentLayout.js.map +1 -1
  90. package/lib/esm/components/select/SimpleSelect.css.js +17 -22
  91. package/lib/esm/components/select/SimpleSelect.css.js.map +1 -1
  92. package/lib/esm/components/select/SimpleSelect.js +184 -184
  93. package/lib/esm/components/select/SimpleSelect.js.map +1 -1
  94. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js +8 -10
  95. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js.map +1 -1
  96. package/lib/esm/components/subscriptions/RefetchNeededBanner.js +31 -23
  97. package/lib/esm/components/subscriptions/RefetchNeededBanner.js.map +1 -1
  98. package/lib/esm/components/tile/InfoTile.css.js +8 -18
  99. package/lib/esm/components/tile/InfoTile.css.js.map +1 -1
  100. package/lib/esm/components/tile/InfoTile.js +62 -67
  101. package/lib/esm/components/tile/InfoTile.js.map +1 -1
  102. package/lib/esm/i18n/useUiTranslation.js +8 -7
  103. package/lib/esm/i18n/useUiTranslation.js.map +1 -1
  104. package/lib/esm/icons/BanSvg.js +29 -44
  105. package/lib/esm/icons/BanSvg.js.map +1 -1
  106. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js +26 -41
  107. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js.map +1 -1
  108. package/lib/esm/icons/ChatCheckSvg.js +27 -42
  109. package/lib/esm/icons/ChatCheckSvg.js.map +1 -1
  110. package/lib/esm/icons/ChatSizeLargeSvg.js +49 -70
  111. package/lib/esm/icons/ChatSizeLargeSvg.js.map +1 -1
  112. package/lib/esm/icons/ChatSizeMediumSvg.js +43 -61
  113. package/lib/esm/icons/ChatSizeMediumSvg.js.map +1 -1
  114. package/lib/esm/icons/ChatSizeSmallSvg.js +37 -52
  115. package/lib/esm/icons/ChatSizeSmallSvg.js.map +1 -1
  116. package/lib/esm/icons/ChatXSvg.js +27 -42
  117. package/lib/esm/icons/ChatXSvg.js.map +1 -1
  118. package/lib/esm/icons/CheckSvg.js +21 -30
  119. package/lib/esm/icons/CheckSvg.js.map +1 -1
  120. package/lib/esm/icons/ChevronDownSvg.js +21 -30
  121. package/lib/esm/icons/ChevronDownSvg.js.map +1 -1
  122. package/lib/esm/icons/ChevronLeftSvg.js +21 -30
  123. package/lib/esm/icons/ChevronLeftSvg.js.map +1 -1
  124. package/lib/esm/icons/ChevronRightSvg.js +21 -30
  125. package/lib/esm/icons/ChevronRightSvg.js.map +1 -1
  126. package/lib/esm/icons/ClockSvg.js +29 -44
  127. package/lib/esm/icons/ClockSvg.js.map +1 -1
  128. package/lib/esm/icons/CoinOffSvg.js +47 -65
  129. package/lib/esm/icons/CoinOffSvg.js.map +1 -1
  130. package/lib/esm/icons/CoinSvg.js +40 -55
  131. package/lib/esm/icons/CoinSvg.js.map +1 -1
  132. package/lib/esm/icons/DatabaseCheckSvg.js +47 -65
  133. package/lib/esm/icons/DatabaseCheckSvg.js.map +1 -1
  134. package/lib/esm/icons/DatabaseXSvg.js +47 -65
  135. package/lib/esm/icons/DatabaseXSvg.js.map +1 -1
  136. package/lib/esm/icons/DevModeSvg.js +21 -30
  137. package/lib/esm/icons/DevModeSvg.js.map +1 -1
  138. package/lib/esm/icons/EyeSvg.js +27 -33
  139. package/lib/esm/icons/EyeSvg.js.map +1 -1
  140. package/lib/esm/icons/FormErrorAlertSvg.js +37 -29
  141. package/lib/esm/icons/FormErrorAlertSvg.js.map +1 -1
  142. package/lib/esm/icons/GlobeSvg.js +18 -27
  143. package/lib/esm/icons/GlobeSvg.js.map +1 -1
  144. package/lib/esm/icons/GripDotsSvg.js +52 -29
  145. package/lib/esm/icons/GripDotsSvg.js.map +1 -1
  146. package/lib/esm/icons/HomeActivityAssignUserSvg.js +44 -62
  147. package/lib/esm/icons/HomeActivityAssignUserSvg.js.map +1 -1
  148. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js +27 -42
  149. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js.map +1 -1
  150. package/lib/esm/icons/HomeStatsClipboardSvg.js +27 -42
  151. package/lib/esm/icons/HomeStatsClipboardSvg.js.map +1 -1
  152. package/lib/esm/icons/HomeStatsClockSvg.js +27 -42
  153. package/lib/esm/icons/HomeStatsClockSvg.js.map +1 -1
  154. package/lib/esm/icons/KeyOffSvg.js +39 -54
  155. package/lib/esm/icons/KeyOffSvg.js.map +1 -1
  156. package/lib/esm/icons/KeySvg.js +39 -54
  157. package/lib/esm/icons/KeySvg.js.map +1 -1
  158. package/lib/esm/icons/KronexSvg.js +28 -43
  159. package/lib/esm/icons/KronexSvg.js.map +1 -1
  160. package/lib/esm/icons/LinkCheckSvg.js +37 -52
  161. package/lib/esm/icons/LinkCheckSvg.js.map +1 -1
  162. package/lib/esm/icons/LinkSvg.js +27 -42
  163. package/lib/esm/icons/LinkSvg.js.map +1 -1
  164. package/lib/esm/icons/LinkXSvg.js +37 -52
  165. package/lib/esm/icons/LinkXSvg.js.map +1 -1
  166. package/lib/esm/icons/LockOpenSvg.js +31 -46
  167. package/lib/esm/icons/LockOpenSvg.js.map +1 -1
  168. package/lib/esm/icons/LockSvg.js +31 -46
  169. package/lib/esm/icons/LockSvg.js.map +1 -1
  170. package/lib/esm/icons/MailCheckSvg.js +41 -56
  171. package/lib/esm/icons/MailCheckSvg.js.map +1 -1
  172. package/lib/esm/icons/MailSvg.js +31 -46
  173. package/lib/esm/icons/MailSvg.js.map +1 -1
  174. package/lib/esm/icons/MailXSvg.js +41 -56
  175. package/lib/esm/icons/MailXSvg.js.map +1 -1
  176. package/lib/esm/icons/ModalCloseSvg.js +27 -42
  177. package/lib/esm/icons/ModalCloseSvg.js.map +1 -1
  178. package/lib/esm/icons/PencilSvg.js +14 -20
  179. package/lib/esm/icons/PencilSvg.js.map +1 -1
  180. package/lib/esm/icons/PinFilledSvg.js +24 -40
  181. package/lib/esm/icons/PinFilledSvg.js.map +1 -1
  182. package/lib/esm/icons/PinSvg.js +27 -43
  183. package/lib/esm/icons/PinSvg.js.map +1 -1
  184. package/lib/esm/icons/ProfileDropdownLogoutSvg.js +37 -52
  185. package/lib/esm/icons/ProfileDropdownLogoutSvg.js.map +1 -1
  186. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js +27 -42
  187. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js.map +1 -1
  188. package/lib/esm/icons/ProjectsFolderSvg.js +21 -30
  189. package/lib/esm/icons/ProjectsFolderSvg.js.map +1 -1
  190. package/lib/esm/icons/RobotCheckSvg.js +60 -68
  191. package/lib/esm/icons/RobotCheckSvg.js.map +1 -1
  192. package/lib/esm/icons/RobotSvg.js +53 -58
  193. package/lib/esm/icons/RobotSvg.js.map +1 -1
  194. package/lib/esm/icons/RobotXSvg.js +60 -68
  195. package/lib/esm/icons/RobotXSvg.js.map +1 -1
  196. package/lib/esm/icons/RocketOffSvg.js +58 -83
  197. package/lib/esm/icons/RocketOffSvg.js.map +1 -1
  198. package/lib/esm/icons/RocketSvg.js +51 -73
  199. package/lib/esm/icons/RocketSvg.js.map +1 -1
  200. package/lib/esm/icons/SendCheckSvg.js +40 -55
  201. package/lib/esm/icons/SendCheckSvg.js.map +1 -1
  202. package/lib/esm/icons/SendMessageSvg.js +30 -45
  203. package/lib/esm/icons/SendMessageSvg.js.map +1 -1
  204. package/lib/esm/icons/SendXSvg.js +40 -55
  205. package/lib/esm/icons/SendXSvg.js.map +1 -1
  206. package/lib/esm/icons/SettingsCheckSvg.js +37 -52
  207. package/lib/esm/icons/SettingsCheckSvg.js.map +1 -1
  208. package/lib/esm/icons/SettingsXSvg.js +37 -52
  209. package/lib/esm/icons/SettingsXSvg.js.map +1 -1
  210. package/lib/esm/icons/ShieldLockSvg.js +41 -56
  211. package/lib/esm/icons/ShieldLockSvg.js.map +1 -1
  212. package/lib/esm/icons/ShieldOffSvg.js +27 -42
  213. package/lib/esm/icons/ShieldOffSvg.js.map +1 -1
  214. package/lib/esm/icons/SidebarHomeSvg.js +27 -42
  215. package/lib/esm/icons/SidebarHomeSvg.js.map +1 -1
  216. package/lib/esm/icons/SidebarInitiativesSvg.js +37 -52
  217. package/lib/esm/icons/SidebarInitiativesSvg.js.map +1 -1
  218. package/lib/esm/icons/SidebarPlusSvg.js +27 -42
  219. package/lib/esm/icons/SidebarPlusSvg.js.map +1 -1
  220. package/lib/esm/icons/SidebarSearchSvg.js +27 -42
  221. package/lib/esm/icons/SidebarSearchSvg.js.map +1 -1
  222. package/lib/esm/icons/SidebarSettingsSvg.js +27 -42
  223. package/lib/esm/icons/SidebarSettingsSvg.js.map +1 -1
  224. package/lib/esm/icons/SidebarTasksSvg.js +27 -42
  225. package/lib/esm/icons/SidebarTasksSvg.js.map +1 -1
  226. package/lib/esm/icons/SidebarTeamSvg.js +44 -62
  227. package/lib/esm/icons/SidebarTeamSvg.js.map +1 -1
  228. package/lib/esm/icons/TaskAttachmentSvg.js +21 -30
  229. package/lib/esm/icons/TaskAttachmentSvg.js.map +1 -1
  230. package/lib/esm/icons/TaskCalendarSvg.js +44 -62
  231. package/lib/esm/icons/TaskCalendarSvg.js.map +1 -1
  232. package/lib/esm/icons/TaskCommentBubbleSvg.js +21 -30
  233. package/lib/esm/icons/TaskCommentBubbleSvg.js.map +1 -1
  234. package/lib/esm/icons/TaskDeleteSvg.js +27 -42
  235. package/lib/esm/icons/TaskDeleteSvg.js.map +1 -1
  236. package/lib/esm/icons/TaskDependencyBlockedSvg.js +27 -43
  237. package/lib/esm/icons/TaskDependencyBlockedSvg.js.map +1 -1
  238. package/lib/esm/icons/TaskDependencyReadySvg.js +27 -43
  239. package/lib/esm/icons/TaskDependencyReadySvg.js.map +1 -1
  240. package/lib/esm/icons/TaskMenuDotsSvg.js +37 -52
  241. package/lib/esm/icons/TaskMenuDotsSvg.js.map +1 -1
  242. package/lib/esm/icons/TaskTagSvg.js +27 -42
  243. package/lib/esm/icons/TaskTagSvg.js.map +1 -1
  244. package/lib/esm/icons/TeamMemberEmailSvg.js +27 -42
  245. package/lib/esm/icons/TeamMemberEmailSvg.js.map +1 -1
  246. package/lib/esm/icons/TeamMemberLocationSvg.js +27 -42
  247. package/lib/esm/icons/TeamMemberLocationSvg.js.map +1 -1
  248. package/lib/esm/icons/WrenchSvg.js +21 -30
  249. package/lib/esm/icons/WrenchSvg.js.map +1 -1
  250. package/lib/esm/icons/XBadgeSvg.js +27 -42
  251. package/lib/esm/icons/XBadgeSvg.js.map +1 -1
  252. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js +30 -42
  253. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js.map +1 -1
  254. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js +22 -28
  255. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js.map +1 -1
  256. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js +41 -53
  257. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js.map +1 -1
  258. package/lib/esm/icons/markdown/MarkdownCopySvg.js +30 -42
  259. package/lib/esm/icons/markdown/MarkdownCopySvg.js.map +1 -1
  260. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js +39 -51
  261. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js.map +1 -1
  262. package/lib/esm/index.js +34 -77
  263. package/lib/esm/style.css +2 -0
  264. package/lib/esm/style.js +4 -0
  265. package/lib/esm/styles/slots.js +0 -2
  266. package/lib/esm/svg/ChevronDownIcon.js +11 -10
  267. package/lib/esm/svg/ChevronDownIcon.js.map +1 -1
  268. package/lib/esm/svg/ChevronRightIcon.js +11 -9
  269. package/lib/esm/svg/ChevronRightIcon.js.map +1 -1
  270. package/lib/esm/svg/GlobeIcon.js +11 -6
  271. package/lib/esm/svg/GlobeIcon.js.map +1 -1
  272. package/lib/esm/theme/ThemeProvider.js +33 -37
  273. package/lib/esm/theme/ThemeProvider.js.map +1 -1
  274. package/lib/esm/theme/VisuallyHidden.js +12 -8
  275. package/lib/esm/theme/VisuallyHidden.js.map +1 -1
  276. package/lib/esm/theme/accessibility.css.js +7 -8
  277. package/lib/esm/theme/accessibility.css.js.map +1 -1
  278. package/lib/esm/theme/colors.js +101 -100
  279. package/lib/esm/theme/colors.js.map +1 -1
  280. package/lib/esm/theme/common.js +122 -123
  281. package/lib/esm/theme/common.js.map +1 -1
  282. package/lib/esm/theme/containerQueries.js +14 -13
  283. package/lib/esm/theme/containerQueries.js.map +1 -1
  284. package/lib/esm/theme/global.css.js +1 -2
  285. package/lib/esm/theme/index.js +9 -28
  286. package/lib/esm/theme/sprinkles.css.js +68484 -9
  287. package/lib/esm/theme/sprinkles.css.js.map +1 -1
  288. package/lib/esm/theme/theme.css.js +1 -2
  289. package/lib/esm/theme/themeContract.js +1025 -1035
  290. package/lib/esm/theme/themeContract.js.map +1 -1
  291. package/lib/esm/theme/tools.js +16 -19
  292. package/lib/esm/theme/tools.js.map +1 -1
  293. package/lib/style.d.ts +5 -0
  294. package/lib/style.d.ts.map +1 -0
  295. package/lib/style.js +5 -0
  296. package/lib/types/style.d.ts +5 -0
  297. package/lib/types/style.d.ts.map +1 -0
  298. package/package.json +4 -3
  299. package/lib/esm/atomic/atoms/badge/badge.css.ts.vanilla-BxMgYgcH.css +0 -1
  300. package/lib/esm/atomic/atoms/button/button.css.ts.vanilla-BYFxDZro.css +0 -1
  301. package/lib/esm/atomic/atoms/checkbox/checkbox.css.ts.vanilla-D6TvWxlo.css +0 -1
  302. package/lib/esm/atomic/atoms/input/input.css.ts.vanilla-D_X5_tcn.css +0 -1
  303. package/lib/esm/atomic/atoms/textarea/textarea.css.ts.vanilla-IrvNTQEt.css +0 -1
  304. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.ts.vanilla-Bhz61Foa.css +0 -1
  305. package/lib/esm/atomic/molecules/breadcrumb_navigation/types.js.map +0 -1
  306. package/lib/esm/atomic/molecules/tabs/tabs.css.ts.vanilla-DQm5wO0K.css +0 -1
  307. package/lib/esm/atomic/molecules/toast/toast.css.ts.vanilla-2GtcGJsi.css +0 -1
  308. package/lib/esm/components/charts/billingUsageLineChart.css.ts.vanilla-7e3dy1Dj.css +0 -1
  309. package/lib/esm/components/data-table/DataTable.css.ts.vanilla-BLE98fwj.css +0 -1
  310. package/lib/esm/components/data-table/TableCell.css.ts.vanilla-i5QJvdbl.css +0 -1
  311. package/lib/esm/components/layout/ContentLayout.css.ts.vanilla-tn0RQdqM.css +0 -0
  312. package/lib/esm/components/select/SimpleSelect.css.ts.vanilla-Bil1v8q6.css +0 -1
  313. package/lib/esm/components/tile/InfoTile.css.ts.vanilla-ByCg4UKz.css +0 -1
  314. package/lib/esm/index.js.map +0 -1
  315. package/lib/esm/styles/slots.js.map +0 -1
  316. package/lib/esm/theme/accessibility.css.ts.vanilla-D6gfeWvf.css +0 -1
  317. package/lib/esm/theme/global.css.js.map +0 -1
  318. package/lib/esm/theme/global.css.ts.vanilla-ClXnHnoy.css +0 -1
  319. package/lib/esm/theme/index.js.map +0 -1
  320. package/lib/esm/theme/sprinkles.css.ts.vanilla-DOI5FNoi.css +0 -1
  321. package/lib/esm/theme/theme.css.js.map +0 -1
  322. package/lib/esm/theme/theme.css.ts.vanilla-a3SsXff5.css +0 -1
@@ -1,34 +1,35 @@
1
- import { jsx as r } from "react/jsx-runtime";
2
- import { useLocation as k, Link as L } from "@plumile/router";
3
- import { container as h, tabRecipe as v } from "./tabs.css.js";
4
- const x = L, R = (s) => {
5
- const { items: n, ariaLabel: o } = s, { pathname: c } = k();
6
- return /* @__PURE__ */ r("div", { role: "tablist", "aria-label": o, className: h, children: n.map((d) => {
7
- const { disabled: e, id: b, label: m, to: a } = d, f = c === a;
8
- let i;
9
- e && (i = !0);
10
- let t = "default", l;
11
- e ? (t = "disabled", l = -1) : f && (t = "active");
12
- const p = (u) => {
13
- e && u.preventDefault();
14
- };
15
- return /* @__PURE__ */ r(
16
- x,
17
- {
18
- exact: !0,
19
- "aria-disabled": i,
20
- className: v({ state: t }),
21
- role: "tab",
22
- to: a,
23
- tabIndex: l,
24
- onClick: p,
25
- children: m
26
- },
27
- b
28
- );
29
- }) });
1
+ import { container as e, tabRecipe as t } from "./tabs.css.js";
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ import { Link as r, useLocation as i } from "@plumile/router";
4
+ //#region src/atomic/molecules/tabs/Tabs.tsx
5
+ var a = r, o = (r) => {
6
+ let { items: o, ariaLabel: s } = r, { pathname: c } = i();
7
+ return /* @__PURE__ */ n("div", {
8
+ role: "tablist",
9
+ "aria-label": s,
10
+ className: e,
11
+ children: o.map((e) => {
12
+ let { disabled: r, id: i, label: o, to: s } = e, l = c === s, u;
13
+ r && (u = !0);
14
+ let d = "default", f;
15
+ r ? (d = "disabled", f = -1) : l && (d = "active");
16
+ let p = (e) => {
17
+ r && e.preventDefault();
18
+ };
19
+ return /* @__PURE__ */ n(a, {
20
+ exact: !0,
21
+ "aria-disabled": u,
22
+ className: t({ state: d }),
23
+ role: "tab",
24
+ to: s,
25
+ tabIndex: f,
26
+ onClick: p,
27
+ children: o
28
+ }, i);
29
+ })
30
+ });
30
31
  };
31
- export {
32
- R as Tabs
33
- };
34
- //# sourceMappingURL=Tabs.js.map
32
+ //#endregion
33
+ export { o as Tabs };
34
+
35
+ //# sourceMappingURL=Tabs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.js","sources":["../../../../../src/atomic/molecules/tabs/Tabs.tsx"],"sourcesContent":["import {\n type AnchorHTMLAttributes,\n type ComponentPropsWithoutRef,\n type JSX,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { Link, useLocation } from '@plumile/router';\n\nimport * as styles from './tabs.css.js';\n\nexport type TabsSelectEvent = MouseEvent<HTMLButtonElement | HTMLAnchorElement>;\n\ntype LinkComponentProps = ComponentPropsWithoutRef<typeof Link>;\ntype RouterLinkProps = LinkComponentProps &\n AnchorHTMLAttributes<HTMLAnchorElement>;\nconst RouterLink = Link as unknown as (props: RouterLinkProps) => JSX.Element;\n\ntype BaseTabItem = {\n id: string;\n label: ReactNode;\n disabled?: boolean;\n};\n\ntype NavigationTabItem = BaseTabItem & {\n to: NonNullable<LinkComponentProps['to']>;\n};\n\nexport type TabItem = NavigationTabItem;\n\nexport type TabsProps = {\n items: TabItem[];\n ariaLabel?: string;\n};\n\nexport const Tabs = (props: TabsProps): JSX.Element => {\n const { items, ariaLabel } = props;\n const { pathname } = useLocation();\n\n return (\n <div role=\"tablist\" aria-label={ariaLabel} className={styles.container}>\n {items.map((item) => {\n const { disabled, id, label, to } = item;\n const isActive = pathname === to;\n\n let ariaDisabled: true | undefined;\n if (disabled) {\n ariaDisabled = true;\n }\n\n type TabState = NonNullable<\n Parameters<typeof styles.tabRecipe>[0]\n >['state'];\n let tabState: TabState = 'default';\n let tabIndex: number | undefined;\n if (disabled) {\n tabState = 'disabled';\n tabIndex = -1;\n } else if (isActive) {\n tabState = 'active';\n }\n\n const handleLinkClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n }\n };\n\n return (\n <RouterLink\n key={id}\n exact\n aria-disabled={ariaDisabled}\n className={styles.tabRecipe({ state: tabState })}\n role=\"tab\"\n to={to}\n tabIndex={tabIndex}\n onClick={handleLinkClick}\n >\n {label}\n </RouterLink>\n );\n })}\n </div>\n );\n};\n"],"names":["RouterLink","Link","Tabs","props","items","ariaLabel","pathname","useLocation","jsx","styles.container","item","disabled","id","label","to","isActive","ariaDisabled","tabState","tabIndex","handleLinkClick","event","styles.tabRecipe"],"mappings":";;;AAgBA,MAAMA,IAAaC,GAmBNC,IAAO,CAACC,MAAkC;AACrD,QAAM,EAAE,OAAAC,GAAO,WAAAC,EAAA,IAAcF,GACvB,EAAE,UAAAG,EAAA,IAAaC,EAAA;AAErB,SACE,gBAAAC,EAAC,OAAA,EAAI,MAAK,WAAU,cAAYH,GAAW,WAAWI,GACnD,UAAAL,EAAM,IAAI,CAACM,MAAS;AACnB,UAAM,EAAE,UAAAC,GAAU,IAAAC,GAAI,OAAAC,GAAO,IAAAC,MAAOJ,GAC9BK,IAAWT,MAAaQ;AAE9B,QAAIE;AACJ,IAAIL,MACFK,IAAe;AAMjB,QAAIC,IAAqB,WACrBC;AACJ,IAAIP,KACFM,IAAW,YACXC,IAAW,MACFH,MACTE,IAAW;AAGb,UAAME,IAAkB,CAACC,MAAyC;AAChE,MAAIT,KACFS,EAAM,eAAA;AAAA,IAEV;AAEA,WACE,gBAAAZ;AAAA,MAACR;AAAA,MAAA;AAAA,QAEC,OAAK;AAAA,QACL,iBAAegB;AAAA,QACf,WAAWK,EAAiB,EAAE,OAAOJ,GAAU;AAAA,QAC/C,MAAK;AAAA,QACL,IAAAH;AAAA,QACA,UAAAI;AAAA,QACA,SAASC;AAAA,QAER,UAAAN;AAAA,MAAA;AAAA,MATID;AAAA,IAAA;AAAA,EAYX,CAAC,EAAA,CACH;AAEJ;"}
1
+ {"version":3,"file":"Tabs.js","names":[],"sources":["../../../../../src/atomic/molecules/tabs/Tabs.tsx"],"sourcesContent":["import {\n type AnchorHTMLAttributes,\n type ComponentPropsWithoutRef,\n type JSX,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { Link, useLocation } from '@plumile/router';\n\nimport * as styles from './tabs.css.js';\n\nexport type TabsSelectEvent = MouseEvent<HTMLButtonElement | HTMLAnchorElement>;\n\ntype LinkComponentProps = ComponentPropsWithoutRef<typeof Link>;\ntype RouterLinkProps = LinkComponentProps &\n AnchorHTMLAttributes<HTMLAnchorElement>;\nconst RouterLink = Link as unknown as (props: RouterLinkProps) => JSX.Element;\n\ntype BaseTabItem = {\n id: string;\n label: ReactNode;\n disabled?: boolean;\n};\n\ntype NavigationTabItem = BaseTabItem & {\n to: NonNullable<LinkComponentProps['to']>;\n};\n\nexport type TabItem = NavigationTabItem;\n\nexport type TabsProps = {\n items: TabItem[];\n ariaLabel?: string;\n};\n\nexport const Tabs = (props: TabsProps): JSX.Element => {\n const { items, ariaLabel } = props;\n const { pathname } = useLocation();\n\n return (\n <div role=\"tablist\" aria-label={ariaLabel} className={styles.container}>\n {items.map((item) => {\n const { disabled, id, label, to } = item;\n const isActive = pathname === to;\n\n let ariaDisabled: true | undefined;\n if (disabled) {\n ariaDisabled = true;\n }\n\n type TabState = NonNullable<\n Parameters<typeof styles.tabRecipe>[0]\n >['state'];\n let tabState: TabState = 'default';\n let tabIndex: number | undefined;\n if (disabled) {\n tabState = 'disabled';\n tabIndex = -1;\n } else if (isActive) {\n tabState = 'active';\n }\n\n const handleLinkClick = (event: MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n event.preventDefault();\n }\n };\n\n return (\n <RouterLink\n key={id}\n exact\n aria-disabled={ariaDisabled}\n className={styles.tabRecipe({ state: tabState })}\n role=\"tab\"\n to={to}\n tabIndex={tabIndex}\n onClick={handleLinkClick}\n >\n {label}\n </RouterLink>\n );\n })}\n </div>\n );\n};\n"],"mappings":";;;;AAgBA,IAAM,IAAa,GAmBN,KAAQ,MAAkC;CACrD,IAAM,EAAE,UAAO,iBAAc,GACvB,EAAE,gBAAa,GAAa;AAElC,QACE,kBAAC,OAAD;EAAK,MAAK;EAAU,cAAY;EAAW,WAAW;YACnD,EAAM,KAAK,MAAS;GACnB,IAAM,EAAE,aAAU,OAAI,UAAO,UAAO,GAC9B,IAAW,MAAa,GAE1B;AACJ,GAAI,MACF,IAAe;GAMjB,IAAI,IAAqB,WACrB;AACJ,GAAI,KACF,IAAW,YACX,IAAW,MACF,MACT,IAAW;GAGb,IAAM,KAAmB,MAAyC;AAChE,IAAI,KACF,EAAM,gBAAgB;;AAI1B,UACE,kBAAC,GAAD;IAEE,OAAA;IACA,iBAAe;IACf,WAAW,EAAiB,EAAE,OAAO,GAAU,CAAC;IAChD,MAAK;IACD;IACM;IACV,SAAS;cAER;IACU,EAVN,EAUM;IAEf;EACE,CAAA"}
@@ -1,9 +1,18 @@
1
- /* empty css */
2
- /* empty css */
3
- import { createRuntimeFn as b } from "@vanilla-extract/recipes/createRuntimeFn";
4
- var q = "_11tf63d0 txvbqb9io txvbqbajx txvbqbco txvbqbao6 txvbqbdnx", a = b({ defaultClassName: "_11tf63d6 _11tf63d2 _11tf63d1 txvbqbnvf txvbqboio txvbqbp5f txvbqblx6 txvbqb9jf txvbqbco txvbqbanx txvbqb76x txvbqb746 txvbqb8x txvbqbv8r txvbqb78 txvbqb6x txvbqb7k txvbqb5sx txvbqb36f txvbqbamf txvbqb3b txvbqbl3f txvbqbpsf", variantClassNames: { state: { default: "_11tf63d7 _11tf63d3", active: "_11tf63d8 _11tf63d4 txvbqbv7z txvbqb3jo txvbqbamo", disabled: "_11tf63d9 _11tf63d5 txvbqbv8t txvbqb2k txvbqbr" } }, defaultVariants: { state: "default" }, compoundVariants: [] });
5
- export {
6
- q as container,
7
- a as tabRecipe
8
- };
9
- //# sourceMappingURL=tabs.css.js.map
1
+ /* empty css */
2
+ /* empty css */
3
+ import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
4
+ //#region src/atomic/molecules/tabs/tabs.css.ts
5
+ var t = "_11tf63d0 txvbqb9io txvbqbajx txvbqbco txvbqbao6 txvbqbdnx", n = e({
6
+ defaultClassName: "_11tf63d6 _11tf63d2 _11tf63d1 txvbqbnvf txvbqboio txvbqbp5f txvbqblx6 txvbqb9jf txvbqbco txvbqbanx txvbqb76x txvbqb746 txvbqb8x txvbqbv8r txvbqb78 txvbqb6x txvbqb7k txvbqb5sx txvbqb36f txvbqbamf txvbqb3b txvbqbl3f txvbqbpsf",
7
+ variantClassNames: { state: {
8
+ default: "_11tf63d7 _11tf63d3",
9
+ active: "_11tf63d8 _11tf63d4 txvbqbv7z txvbqb3jo txvbqbamo",
10
+ disabled: "_11tf63d9 _11tf63d5 txvbqbv8t txvbqb2k txvbqbr"
11
+ } },
12
+ defaultVariants: { state: "default" },
13
+ compoundVariants: []
14
+ });
15
+ //#endregion
16
+ export { t as container, n as tabRecipe };
17
+
18
+ //# sourceMappingURL=tabs.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"tabs.css.js","names":[],"sources":["../../../../../src/atomic/molecules/tabs/tabs.css.ts"],"sourcesContent":["import { style } from '@vanilla-extract/css';\nimport { recipe, type RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { sprinkles } from '../../../theme/sprinkles.css.js';\nimport { vars } from '../../../theme/themeContract.js';\n\nexport const container = sprinkles({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n gap: 2,\n justifyContent: 'center',\n});\n\nconst tabBase = style([\n sprinkles({\n display: 'inline-flex',\n alignItems: 'center',\n gap: 1,\n borderTopLeftRadius: 'md',\n borderTopRightRadius: 'md',\n paddingX: 4,\n paddingY: 2,\n fontSize: 'sm',\n color: 'textSecondary',\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n borderBottomWidth: 2,\n borderBottomColor: 'transparent',\n fontWeight: 'medium',\n textDecoration: 'none',\n outline: 'none',\n position: 'relative',\n }),\n {\n marginBottom: '-1px',\n selectors: {\n '&:focus-visible': {\n outline: `2px solid ${vars.colors.primary}`,\n outlineOffset: '2px',\n color: vars.colors.primary,\n borderBottomColor: vars.colors.primary,\n },\n },\n },\n]);\n\nexport const tabRecipe = recipe({\n base: tabBase,\n variants: {\n state: {\n default: style({\n selectors: {\n '&:hover': {\n color: vars.colors.primary,\n borderBottomColor: vars.colors.primaryLight,\n },\n },\n }),\n active: sprinkles({\n color: 'primary',\n borderBottomColor: 'primary',\n fontWeight: 'semibold',\n }),\n disabled: sprinkles({\n color: 'textMuted',\n pointerEvents: 'none',\n cursor: 'not-allowed',\n }),\n },\n },\n defaultVariants: {\n state: 'default',\n },\n});\n\nexport type TabRecipeVariants = RecipeVariants<typeof tabRecipe>;\n"],"mappings":""}
@@ -1,78 +1,83 @@
1
- import { jsxs as E, jsx as x } from "react/jsx-runtime";
2
- import { createContext as k, useState as C, useRef as T, useCallback as l, useEffect as h, useMemo as S, useContext as b } from "react";
3
- import { ToastViewport as M } from "./ToastViewport.js";
4
- import { INFO_TOAST_DURATION_MS as O } from "./constants.js";
5
- const p = k(null), a = (o, s) => (c, u) => o.push({ kind: s, title: c, message: u }), D = ({
6
- children: o,
7
- maxToasts: s = 4
8
- }) => {
9
- const [c, u] = C([]), w = T(0), t = T(
10
- /* @__PURE__ */ new Map()
11
- ), f = l((r) => {
12
- const e = t.current.get(r);
13
- e != null && (clearTimeout(e), t.current.delete(r)), u((n) => n.filter((i) => i.id !== r));
14
- }, []), d = l(() => {
15
- t.current.forEach((r) => {
16
- clearTimeout(r);
17
- }), t.current.clear(), u([]);
18
- }, []), m = l(
19
- (r) => {
20
- const e = r.id ?? `toast-${w.current++}`;
21
- return u((n) => {
22
- const i = [...n, { ...r, kind: r.kind ?? "info", id: e }];
23
- return i.length > s ? i.slice(i.length - s) : i;
24
- }), e;
25
- },
26
- [s]
27
- );
28
- h(() => {
29
- const r = /* @__PURE__ */ new Set();
30
- c.forEach((e) => {
31
- if (e.kind !== "info" || (r.add(e.id), t.current.has(e.id)))
32
- return;
33
- const n = setTimeout(() => {
34
- t.current.delete(e.id), u((i) => i.filter((v) => v.id !== e.id));
35
- }, O);
36
- t.current.set(e.id, n);
37
- }), t.current.forEach((e, n) => {
38
- r.has(n) || (clearTimeout(e), t.current.delete(n));
39
- });
40
- }, [c]), h(() => {
41
- const r = t.current;
42
- return () => {
43
- r.forEach((e) => {
44
- clearTimeout(e);
45
- }), r.clear();
46
- };
47
- }, []);
48
- const g = S(() => {
49
- const r = {
50
- push: m,
51
- dismiss: f,
52
- clear: d,
53
- info: () => "",
54
- warning: () => "",
55
- error: () => ""
56
- };
57
- return {
58
- ...r,
59
- info: a(r, "info"),
60
- warning: a(r, "warning"),
61
- error: a(r, "error")
62
- };
63
- }, [d, f, m]);
64
- return /* @__PURE__ */ E(p.Provider, { value: g, children: [
65
- o,
66
- /* @__PURE__ */ x(M, { toasts: c, onDismiss: f })
67
- ] });
68
- }, N = () => {
69
- const o = b(p);
70
- if (o == null)
71
- throw new Error("useToast must be used within a ToastProvider");
72
- return o;
1
+ import { INFO_TOAST_DURATION_MS as e } from "./constants.js";
2
+ import { ToastViewport as t } from "./ToastViewport.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ import { createContext as i, useCallback as a, useContext as o, useEffect as s, useMemo as c, useRef as l, useState as u } from "react";
5
+ //#region src/atomic/molecules/toast/ToastProvider.tsx
6
+ var d = i(null), f = (e, t) => (n, r) => e.push({
7
+ kind: t,
8
+ title: n,
9
+ message: r
10
+ }), p = ({ children: i, maxToasts: o = 4 }) => {
11
+ let [p, m] = u([]), h = l(0), g = l(/* @__PURE__ */ new Map()), _ = a((e) => {
12
+ let t = g.current.get(e);
13
+ t != null && (clearTimeout(t), g.current.delete(e)), m((t) => t.filter((t) => t.id !== e));
14
+ }, []), v = a(() => {
15
+ g.current.forEach((e) => {
16
+ clearTimeout(e);
17
+ }), g.current.clear(), m([]);
18
+ }, []), y = a((e) => {
19
+ let t = e.id ?? `toast-${h.current++}`;
20
+ return m((n) => {
21
+ let r = [...n, {
22
+ ...e,
23
+ kind: e.kind ?? "info",
24
+ id: t
25
+ }];
26
+ return r.length > o ? r.slice(r.length - o) : r;
27
+ }), t;
28
+ }, [o]);
29
+ s(() => {
30
+ let t = /* @__PURE__ */ new Set();
31
+ p.forEach((n) => {
32
+ if (n.kind !== "info" || (t.add(n.id), g.current.has(n.id))) return;
33
+ let r = setTimeout(() => {
34
+ g.current.delete(n.id), m((e) => e.filter((e) => e.id !== n.id));
35
+ }, e);
36
+ g.current.set(n.id, r);
37
+ }), g.current.forEach((e, n) => {
38
+ t.has(n) || (clearTimeout(e), g.current.delete(n));
39
+ });
40
+ }, [p]), s(() => {
41
+ let e = g.current;
42
+ return () => {
43
+ e.forEach((e) => {
44
+ clearTimeout(e);
45
+ }), e.clear();
46
+ };
47
+ }, []);
48
+ let b = c(() => {
49
+ let e = {
50
+ push: y,
51
+ dismiss: _,
52
+ clear: v,
53
+ info: () => "",
54
+ warning: () => "",
55
+ error: () => ""
56
+ };
57
+ return {
58
+ ...e,
59
+ info: f(e, "info"),
60
+ warning: f(e, "warning"),
61
+ error: f(e, "error")
62
+ };
63
+ }, [
64
+ v,
65
+ _,
66
+ y
67
+ ]);
68
+ return /* @__PURE__ */ r(d.Provider, {
69
+ value: b,
70
+ children: [i, /* @__PURE__ */ n(t, {
71
+ toasts: p,
72
+ onDismiss: _
73
+ })]
74
+ });
75
+ }, m = () => {
76
+ let e = o(d);
77
+ if (e == null) throw Error("useToast must be used within a ToastProvider");
78
+ return e;
73
79
  };
74
- export {
75
- D as ToastProvider,
76
- N as useToast
77
- };
78
- //# sourceMappingURL=ToastProvider.js.map
80
+ //#endregion
81
+ export { p as ToastProvider, m as useToast };
82
+
83
+ //# sourceMappingURL=ToastProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToastProvider.js","sources":["../../../../../src/atomic/molecules/toast/ToastProvider.tsx"],"sourcesContent":["import {\n createContext,\n useEffect,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type JSX,\n type ReactNode,\n} from 'react';\n\nimport {\n ToastViewport,\n type ToastItem,\n type ToastKind,\n} from './ToastViewport.js';\nimport { INFO_TOAST_DURATION_MS } from './constants.js';\n\nexport type ToastApi = {\n push: (toast: Omit<ToastItem, 'id'> & { id?: string }) => string;\n dismiss: (toastId: string) => void;\n clear: () => void;\n info: (title: ReactNode, message?: ReactNode) => string;\n warning: (title: ReactNode, message?: ReactNode) => string;\n error: (title: ReactNode, message?: ReactNode) => string;\n};\n\nexport type ToastProviderProps = {\n children: ReactNode;\n maxToasts?: number;\n};\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\nconst pushWithKind = (api: ToastApi, kind: ToastKind) => {\n return (title: ReactNode, message?: ReactNode): string => {\n return api.push({ kind, title, message });\n };\n};\n\nexport const ToastProvider = ({\n children,\n maxToasts = 4,\n}: ToastProviderProps): JSX.Element => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const counter = useRef(0);\n const infoToastTimers = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const dismiss = useCallback((toastId: string) => {\n const timer = infoToastTimers.current.get(toastId);\n if (timer != null) {\n clearTimeout(timer);\n infoToastTimers.current.delete(toastId);\n }\n setToasts((prev) => {\n return prev.filter((t) => {\n return t.id !== toastId;\n });\n });\n }, []);\n\n const clear = useCallback(() => {\n infoToastTimers.current.forEach((timer) => {\n clearTimeout(timer);\n });\n infoToastTimers.current.clear();\n setToasts([]);\n }, []);\n\n const push = useCallback(\n (toast: Omit<ToastItem, 'id'> & { id?: string }): string => {\n const id = toast.id ?? `toast-${counter.current++}`;\n setToasts((prev) => {\n const next = [...prev, { ...toast, kind: toast.kind ?? 'info', id }];\n if (next.length > maxToasts) {\n return next.slice(next.length - maxToasts);\n }\n return next;\n });\n return id;\n },\n [maxToasts],\n );\n\n useEffect(() => {\n const activeInfoToastIds = new Set<string>();\n toasts.forEach((toast) => {\n if (toast.kind !== 'info') {\n return;\n }\n activeInfoToastIds.add(toast.id);\n if (infoToastTimers.current.has(toast.id)) {\n return;\n }\n const timer = setTimeout(() => {\n infoToastTimers.current.delete(toast.id);\n setToasts((prev) => {\n return prev.filter((item) => {\n return item.id !== toast.id;\n });\n });\n }, INFO_TOAST_DURATION_MS);\n infoToastTimers.current.set(toast.id, timer);\n });\n\n infoToastTimers.current.forEach((timer, toastId) => {\n if (activeInfoToastIds.has(toastId)) {\n return;\n }\n clearTimeout(timer);\n infoToastTimers.current.delete(toastId);\n });\n }, [toasts]);\n\n useEffect(() => {\n const timers = infoToastTimers.current;\n return () => {\n timers.forEach((timer) => {\n clearTimeout(timer);\n });\n timers.clear();\n };\n }, []);\n\n const api = useMemo<ToastApi>(() => {\n const base: ToastApi = {\n push,\n dismiss,\n clear,\n info: () => {\n return '';\n },\n warning: () => {\n return '';\n },\n error: () => {\n return '';\n },\n };\n return {\n ...base,\n info: pushWithKind(base, 'info'),\n warning: pushWithKind(base, 'warning'),\n error: pushWithKind(base, 'error'),\n };\n }, [clear, dismiss, push]);\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastViewport toasts={toasts} onDismiss={dismiss} />\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = (): ToastApi => {\n const value = useContext(ToastContext);\n if (value == null) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n return value;\n};\n"],"names":["ToastContext","createContext","pushWithKind","api","kind","title","message","ToastProvider","children","maxToasts","toasts","setToasts","useState","counter","useRef","infoToastTimers","dismiss","useCallback","toastId","timer","prev","t","clear","push","toast","id","next","useEffect","activeInfoToastIds","item","INFO_TOAST_DURATION_MS","timers","useMemo","base","jsxs","jsx","ToastViewport","useToast","value","useContext"],"mappings":";;;;AAiCA,MAAMA,IAAeC,EAA+B,IAAI,GAElDC,IAAe,CAACC,GAAeC,MAC5B,CAACC,GAAkBC,MACjBH,EAAI,KAAK,EAAE,MAAAC,GAAM,OAAAC,GAAO,SAAAC,GAAS,GAI/BC,IAAgB,CAAC;AAAA,EAC5B,UAAAC;AAAA,EACA,WAAAC,IAAY;AACd,MAAuC;AACrC,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAsB,CAAA,CAAE,GAC9CC,IAAUC,EAAO,CAAC,GAClBC,IAAkBD;AAAA,wBAClB,IAAA;AAAA,EAAI,GAGJE,IAAUC,EAAY,CAACC,MAAoB;AAC/C,UAAMC,IAAQJ,EAAgB,QAAQ,IAAIG,CAAO;AACjD,IAAIC,KAAS,SACX,aAAaA,CAAK,GAClBJ,EAAgB,QAAQ,OAAOG,CAAO,IAExCP,EAAU,CAACS,MACFA,EAAK,OAAO,CAACC,MACXA,EAAE,OAAOH,CACjB,CACF;AAAA,EACH,GAAG,CAAA,CAAE,GAECI,IAAQL,EAAY,MAAM;AAC9B,IAAAF,EAAgB,QAAQ,QAAQ,CAACI,MAAU;AACzC,mBAAaA,CAAK;AAAA,IACpB,CAAC,GACDJ,EAAgB,QAAQ,MAAA,GACxBJ,EAAU,CAAA,CAAE;AAAA,EACd,GAAG,CAAA,CAAE,GAECY,IAAON;AAAA,IACX,CAACO,MAA2D;AAC1D,YAAMC,IAAKD,EAAM,MAAM,SAASX,EAAQ,SAAS;AACjD,aAAAF,EAAU,CAACS,MAAS;AAClB,cAAMM,IAAO,CAAC,GAAGN,GAAM,EAAE,GAAGI,GAAO,MAAMA,EAAM,QAAQ,QAAQ,IAAAC,EAAA,CAAI;AACnE,eAAIC,EAAK,SAASjB,IACTiB,EAAK,MAAMA,EAAK,SAASjB,CAAS,IAEpCiB;AAAA,MACT,CAAC,GACMD;AAAA,IACT;AAAA,IACA,CAAChB,CAAS;AAAA,EAAA;AAGZ,EAAAkB,EAAU,MAAM;AACd,UAAMC,wBAAyB,IAAA;AAC/B,IAAAlB,EAAO,QAAQ,CAACc,MAAU;AAKxB,UAJIA,EAAM,SAAS,WAGnBI,EAAmB,IAAIJ,EAAM,EAAE,GAC3BT,EAAgB,QAAQ,IAAIS,EAAM,EAAE;AACtC;AAEF,YAAML,IAAQ,WAAW,MAAM;AAC7B,QAAAJ,EAAgB,QAAQ,OAAOS,EAAM,EAAE,GACvCb,EAAU,CAACS,MACFA,EAAK,OAAO,CAACS,MACXA,EAAK,OAAOL,EAAM,EAC1B,CACF;AAAA,MACH,GAAGM,CAAsB;AACzB,MAAAf,EAAgB,QAAQ,IAAIS,EAAM,IAAIL,CAAK;AAAA,IAC7C,CAAC,GAEDJ,EAAgB,QAAQ,QAAQ,CAACI,GAAOD,MAAY;AAClD,MAAIU,EAAmB,IAAIV,CAAO,MAGlC,aAAaC,CAAK,GAClBJ,EAAgB,QAAQ,OAAOG,CAAO;AAAA,IACxC,CAAC;AAAA,EACH,GAAG,CAACR,CAAM,CAAC,GAEXiB,EAAU,MAAM;AACd,UAAMI,IAAShB,EAAgB;AAC/B,WAAO,MAAM;AACX,MAAAgB,EAAO,QAAQ,CAACZ,MAAU;AACxB,qBAAaA,CAAK;AAAA,MACpB,CAAC,GACDY,EAAO,MAAA;AAAA,IACT;AAAA,EACF,GAAG,CAAA,CAAE;AAEL,QAAM5B,IAAM6B,EAAkB,MAAM;AAClC,UAAMC,IAAiB;AAAA,MACrB,MAAAV;AAAA,MACA,SAAAP;AAAA,MACA,OAAAM;AAAA,MACA,MAAM,MACG;AAAA,MAET,SAAS,MACA;AAAA,MAET,OAAO,MACE;AAAA,IACT;AAEF,WAAO;AAAA,MACL,GAAGW;AAAA,MACH,MAAM/B,EAAa+B,GAAM,MAAM;AAAA,MAC/B,SAAS/B,EAAa+B,GAAM,SAAS;AAAA,MACrC,OAAO/B,EAAa+B,GAAM,OAAO;AAAA,IAAA;AAAA,EAErC,GAAG,CAACX,GAAON,GAASO,CAAI,CAAC;AAEzB,SACE,gBAAAW,EAAClC,EAAa,UAAb,EAAsB,OAAOG,GAC3B,UAAA;AAAA,IAAAK;AAAA,IACD,gBAAA2B,EAACC,GAAA,EAAc,QAAA1B,GAAgB,WAAWM,EAAA,CAAS;AAAA,EAAA,GACrD;AAEJ,GAEaqB,IAAW,MAAgB;AACtC,QAAMC,IAAQC,EAAWvC,CAAY;AACrC,MAAIsC,KAAS;AACX,UAAM,IAAI,MAAM,8CAA8C;AAEhE,SAAOA;AACT;"}
1
+ {"version":3,"file":"ToastProvider.js","names":[],"sources":["../../../../../src/atomic/molecules/toast/ToastProvider.tsx"],"sourcesContent":["import {\n createContext,\n useEffect,\n useCallback,\n useContext,\n useMemo,\n useRef,\n useState,\n type JSX,\n type ReactNode,\n} from 'react';\n\nimport {\n ToastViewport,\n type ToastItem,\n type ToastKind,\n} from './ToastViewport.js';\nimport { INFO_TOAST_DURATION_MS } from './constants.js';\n\nexport type ToastApi = {\n push: (toast: Omit<ToastItem, 'id'> & { id?: string }) => string;\n dismiss: (toastId: string) => void;\n clear: () => void;\n info: (title: ReactNode, message?: ReactNode) => string;\n warning: (title: ReactNode, message?: ReactNode) => string;\n error: (title: ReactNode, message?: ReactNode) => string;\n};\n\nexport type ToastProviderProps = {\n children: ReactNode;\n maxToasts?: number;\n};\n\nconst ToastContext = createContext<ToastApi | null>(null);\n\nconst pushWithKind = (api: ToastApi, kind: ToastKind) => {\n return (title: ReactNode, message?: ReactNode): string => {\n return api.push({ kind, title, message });\n };\n};\n\nexport const ToastProvider = ({\n children,\n maxToasts = 4,\n}: ToastProviderProps): JSX.Element => {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const counter = useRef(0);\n const infoToastTimers = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const dismiss = useCallback((toastId: string) => {\n const timer = infoToastTimers.current.get(toastId);\n if (timer != null) {\n clearTimeout(timer);\n infoToastTimers.current.delete(toastId);\n }\n setToasts((prev) => {\n return prev.filter((t) => {\n return t.id !== toastId;\n });\n });\n }, []);\n\n const clear = useCallback(() => {\n infoToastTimers.current.forEach((timer) => {\n clearTimeout(timer);\n });\n infoToastTimers.current.clear();\n setToasts([]);\n }, []);\n\n const push = useCallback(\n (toast: Omit<ToastItem, 'id'> & { id?: string }): string => {\n const id = toast.id ?? `toast-${counter.current++}`;\n setToasts((prev) => {\n const next = [...prev, { ...toast, kind: toast.kind ?? 'info', id }];\n if (next.length > maxToasts) {\n return next.slice(next.length - maxToasts);\n }\n return next;\n });\n return id;\n },\n [maxToasts],\n );\n\n useEffect(() => {\n const activeInfoToastIds = new Set<string>();\n toasts.forEach((toast) => {\n if (toast.kind !== 'info') {\n return;\n }\n activeInfoToastIds.add(toast.id);\n if (infoToastTimers.current.has(toast.id)) {\n return;\n }\n const timer = setTimeout(() => {\n infoToastTimers.current.delete(toast.id);\n setToasts((prev) => {\n return prev.filter((item) => {\n return item.id !== toast.id;\n });\n });\n }, INFO_TOAST_DURATION_MS);\n infoToastTimers.current.set(toast.id, timer);\n });\n\n infoToastTimers.current.forEach((timer, toastId) => {\n if (activeInfoToastIds.has(toastId)) {\n return;\n }\n clearTimeout(timer);\n infoToastTimers.current.delete(toastId);\n });\n }, [toasts]);\n\n useEffect(() => {\n const timers = infoToastTimers.current;\n return () => {\n timers.forEach((timer) => {\n clearTimeout(timer);\n });\n timers.clear();\n };\n }, []);\n\n const api = useMemo<ToastApi>(() => {\n const base: ToastApi = {\n push,\n dismiss,\n clear,\n info: () => {\n return '';\n },\n warning: () => {\n return '';\n },\n error: () => {\n return '';\n },\n };\n return {\n ...base,\n info: pushWithKind(base, 'info'),\n warning: pushWithKind(base, 'warning'),\n error: pushWithKind(base, 'error'),\n };\n }, [clear, dismiss, push]);\n\n return (\n <ToastContext.Provider value={api}>\n {children}\n <ToastViewport toasts={toasts} onDismiss={dismiss} />\n </ToastContext.Provider>\n );\n};\n\nexport const useToast = (): ToastApi => {\n const value = useContext(ToastContext);\n if (value == null) {\n throw new Error('useToast must be used within a ToastProvider');\n }\n return value;\n};\n"],"mappings":";;;;;AAiCA,IAAM,IAAe,EAA+B,KAAK,EAEnD,KAAgB,GAAe,OAC3B,GAAkB,MACjB,EAAI,KAAK;CAAE;CAAM;CAAO;CAAS,CAAC,EAIhC,KAAiB,EAC5B,aACA,eAAY,QACyB;CACrC,IAAM,CAAC,GAAQ,KAAa,EAAsB,EAAE,CAAC,EAC/C,IAAU,EAAO,EAAE,EACnB,IAAkB,kBACtB,IAAI,KAAK,CACV,EAEK,IAAU,GAAa,MAAoB;EAC/C,IAAM,IAAQ,EAAgB,QAAQ,IAAI,EAAQ;AAKlD,EAJI,KAAS,SACX,aAAa,EAAM,EACnB,EAAgB,QAAQ,OAAO,EAAQ,GAEzC,GAAW,MACF,EAAK,QAAQ,MACX,EAAE,OAAO,EAChB,CACF;IACD,EAAE,CAAC,EAEA,IAAQ,QAAkB;AAK9B,EAJA,EAAgB,QAAQ,SAAS,MAAU;AACzC,gBAAa,EAAM;IACnB,EACF,EAAgB,QAAQ,OAAO,EAC/B,EAAU,EAAE,CAAC;IACZ,EAAE,CAAC,EAEA,IAAO,GACV,MAA2D;EAC1D,IAAM,IAAK,EAAM,MAAM,SAAS,EAAQ;AAQxC,SAPA,GAAW,MAAS;GAClB,IAAM,IAAO,CAAC,GAAG,GAAM;IAAE,GAAG;IAAO,MAAM,EAAM,QAAQ;IAAQ;IAAI,CAAC;AAIpE,UAHI,EAAK,SAAS,IACT,EAAK,MAAM,EAAK,SAAS,EAAU,GAErC;IACP,EACK;IAET,CAAC,EAAU,CACZ;AAgCD,CA9BA,QAAgB;EACd,IAAM,oBAAqB,IAAI,KAAa;AAoB5C,EAnBA,EAAO,SAAS,MAAU;AAKxB,OAJI,EAAM,SAAS,WAGnB,EAAmB,IAAI,EAAM,GAAG,EAC5B,EAAgB,QAAQ,IAAI,EAAM,GAAG,EACvC;GAEF,IAAM,IAAQ,iBAAiB;AAE7B,IADA,EAAgB,QAAQ,OAAO,EAAM,GAAG,EACxC,GAAW,MACF,EAAK,QAAQ,MACX,EAAK,OAAO,EAAM,GACzB,CACF;MACD,EAAuB;AAC1B,KAAgB,QAAQ,IAAI,EAAM,IAAI,EAAM;IAC5C,EAEF,EAAgB,QAAQ,SAAS,GAAO,MAAY;AAC9C,KAAmB,IAAI,EAAQ,KAGnC,aAAa,EAAM,EACnB,EAAgB,QAAQ,OAAO,EAAQ;IACvC;IACD,CAAC,EAAO,CAAC,EAEZ,QAAgB;EACd,IAAM,IAAS,EAAgB;AAC/B,eAAa;AAIX,GAHA,EAAO,SAAS,MAAU;AACxB,iBAAa,EAAM;KACnB,EACF,EAAO,OAAO;;IAEf,EAAE,CAAC;CAEN,IAAM,IAAM,QAAwB;EAClC,IAAM,IAAiB;GACrB;GACA;GACA;GACA,YACS;GAET,eACS;GAET,aACS;GAEV;AACD,SAAO;GACL,GAAG;GACH,MAAM,EAAa,GAAM,OAAO;GAChC,SAAS,EAAa,GAAM,UAAU;GACtC,OAAO,EAAa,GAAM,QAAQ;GACnC;IACA;EAAC;EAAO;EAAS;EAAK,CAAC;AAE1B,QACE,kBAAC,EAAa,UAAd;EAAuB,OAAO;YAA9B,CACG,GACD,kBAAC,GAAD;GAAuB;GAAQ,WAAW;GAAW,CAAA,CAC/B;;GAIf,UAA2B;CACtC,IAAM,IAAQ,EAAW,EAAa;AACtC,KAAI,KAAS,KACX,OAAU,MAAM,+CAA+C;AAEjE,QAAO"}
@@ -1,71 +1,76 @@
1
- import { jsx as e, jsxs as c } from "react/jsx-runtime";
2
- import { useMemo as v } from "react";
3
- import { ModalCloseSvg as g } from "../../../icons/ModalCloseSvg.js";
4
- import { Button as b } from "../../atoms/button/Button.js";
5
- import { useUiTranslation as k } from "../../../i18n/useUiTranslation.js";
6
- import { message as T, actions as x, header as y, title as C, closeButton as w, kindRecipe as A, toast as B, progressTrack as M, progressBar as O, viewport as S } from "./toast.css.js";
7
- import { cx as u } from "../../../theme/tools.js";
8
- import { INFO_TOAST_DURATION_MS as _ } from "./constants.js";
9
- const V = ({
10
- toasts: r,
11
- onDismiss: l,
12
- dismissLabel: p,
13
- className: h
14
- }) => {
15
- const { t: f } = k(), n = p ?? f("toast.dismissAriaLabel"), N = v(() => r.map((i) => {
16
- const o = i.kind ?? "info", a = i.actions ?? [];
17
- let t = null;
18
- i.message != null && (t = /* @__PURE__ */ e("div", { className: T, children: i.message }));
19
- let m = null;
20
- a.length > 0 && (m = /* @__PURE__ */ e("div", { className: x, children: a.map((s) => /* @__PURE__ */ e(
21
- b,
22
- {
23
- type: "button",
24
- size: "small",
25
- variant: "secondary",
26
- onClick: s.onClick,
27
- children: s.label
28
- },
29
- s.id
30
- )) }));
31
- let d = null;
32
- return o === "info" && (d = /* @__PURE__ */ e("div", { className: M, "aria-hidden": "true", children: /* @__PURE__ */ e(
33
- "div",
34
- {
35
- className: O,
36
- style: { animationDuration: `${_}ms` }
37
- }
38
- ) })), /* @__PURE__ */ c(
39
- "div",
40
- {
41
- className: u(B, A({ kind: o })),
42
- children: [
43
- /* @__PURE__ */ c("div", { className: y, children: [
44
- /* @__PURE__ */ e("div", { className: C, children: i.title }),
45
- /* @__PURE__ */ e(
46
- "button",
47
- {
48
- type: "button",
49
- className: w,
50
- "aria-label": n,
51
- onClick: () => {
52
- l(i.id);
53
- },
54
- children: /* @__PURE__ */ e(g, { width: 18, height: 18, "aria-hidden": "true" })
55
- }
56
- )
57
- ] }),
58
- t,
59
- m,
60
- d
61
- ]
62
- },
63
- i.id
64
- );
65
- }), [l, n, r]);
66
- return r.length === 0 ? null : /* @__PURE__ */ e("div", { className: u(S, h), children: N });
1
+ import { cx as e } from "../../../theme/tools.js";
2
+ import { useUiTranslation as t } from "../../../i18n/useUiTranslation.js";
3
+ import { Button as n } from "../../atoms/button/Button.js";
4
+ import { ModalCloseSvg as r } from "../../../icons/ModalCloseSvg.js";
5
+ import { actions as i, closeButton as a, header as o, kindRecipe as s, message as c, progressBar as l, progressTrack as u, title as d, toast as f, viewport as p } from "./toast.css.js";
6
+ import { INFO_TOAST_DURATION_MS as m } from "./constants.js";
7
+ import { jsx as h, jsxs as g } from "react/jsx-runtime";
8
+ import { useMemo as _ } from "react";
9
+ //#region src/atomic/molecules/toast/ToastViewport.tsx
10
+ var v = ({ toasts: v, onDismiss: y, dismissLabel: b, className: x }) => {
11
+ let { t: S } = t(), C = b ?? S("toast.dismissAriaLabel"), w = _(() => v.map((t) => {
12
+ let p = t.kind ?? "info", _ = t.actions ?? [], v = null;
13
+ t.message != null && (v = /* @__PURE__ */ h("div", {
14
+ className: c,
15
+ children: t.message
16
+ }));
17
+ let b = null;
18
+ _.length > 0 && (b = /* @__PURE__ */ h("div", {
19
+ className: i,
20
+ children: _.map((e) => /* @__PURE__ */ h(n, {
21
+ type: "button",
22
+ size: "small",
23
+ variant: "secondary",
24
+ onClick: e.onClick,
25
+ children: e.label
26
+ }, e.id))
27
+ }));
28
+ let x = null;
29
+ return p === "info" && (x = /* @__PURE__ */ h("div", {
30
+ className: u,
31
+ "aria-hidden": "true",
32
+ children: /* @__PURE__ */ h("div", {
33
+ className: l,
34
+ style: { animationDuration: `${m}ms` }
35
+ })
36
+ })), /* @__PURE__ */ g("div", {
37
+ className: e(f, s({ kind: p })),
38
+ children: [
39
+ /* @__PURE__ */ g("div", {
40
+ className: o,
41
+ children: [/* @__PURE__ */ h("div", {
42
+ className: d,
43
+ children: t.title
44
+ }), /* @__PURE__ */ h("button", {
45
+ type: "button",
46
+ className: a,
47
+ "aria-label": C,
48
+ onClick: () => {
49
+ y(t.id);
50
+ },
51
+ children: /* @__PURE__ */ h(r, {
52
+ width: 18,
53
+ height: 18,
54
+ "aria-hidden": "true"
55
+ })
56
+ })]
57
+ }),
58
+ v,
59
+ b,
60
+ x
61
+ ]
62
+ }, t.id);
63
+ }), [
64
+ y,
65
+ C,
66
+ v
67
+ ]);
68
+ return v.length === 0 ? null : /* @__PURE__ */ h("div", {
69
+ className: e(p, x),
70
+ children: w
71
+ });
67
72
  };
68
- export {
69
- V as ToastViewport
70
- };
71
- //# sourceMappingURL=ToastViewport.js.map
73
+ //#endregion
74
+ export { v as ToastViewport };
75
+
76
+ //# sourceMappingURL=ToastViewport.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ToastViewport.js","sources":["../../../../../src/atomic/molecules/toast/ToastViewport.tsx"],"sourcesContent":["import { type JSX, type ReactNode, useMemo } from 'react';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { ModalCloseSvg } from '../../../icons/ModalCloseSvg.js';\nimport { Button } from '../../atoms/button/Button.js';\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\n\nimport * as styles from './toast.css.js';\nimport { cx } from '../../../theme/tools.js';\nimport { INFO_TOAST_DURATION_MS } from './constants.js';\n\nexport type ToastKind = NonNullable<\n NonNullable<RecipeVariants<typeof styles.kindRecipe>>['kind']\n>;\n\nexport type ToastAction = {\n id: string;\n label: string;\n onClick: () => void;\n};\n\nexport type ToastItem = {\n id: string;\n kind?: ToastKind;\n title: ReactNode;\n message?: ReactNode;\n actions?: readonly ToastAction[];\n};\n\nexport type ToastViewportProps = {\n toasts: readonly ToastItem[];\n onDismiss: (toastId: string) => void;\n dismissLabel?: string;\n className?: string;\n};\n\nexport const ToastViewport = ({\n toasts,\n onDismiss,\n dismissLabel,\n className,\n}: ToastViewportProps): JSX.Element | null => {\n const { t } = useUiTranslation();\n const resolvedDismissLabel = dismissLabel ?? t('toast.dismissAriaLabel');\n\n const items = useMemo(() => {\n return toasts.map((toast) => {\n const kind = toast.kind ?? 'info';\n const actions = toast.actions ?? [];\n\n let messageNode: JSX.Element | null = null;\n if (toast.message != null) {\n messageNode = <div className={styles.message}>{toast.message}</div>;\n }\n\n let actionsNode: JSX.Element | null = null;\n if (actions.length > 0) {\n actionsNode = (\n <div className={styles.actions}>\n {actions.map((action) => {\n return (\n <Button\n key={action.id}\n type=\"button\"\n size=\"small\"\n variant=\"secondary\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n }\n\n let progressNode: JSX.Element | null = null;\n if (kind === 'info') {\n progressNode = (\n <div className={styles.progressTrack} aria-hidden=\"true\">\n <div\n className={styles.progressBar}\n style={{ animationDuration: `${INFO_TOAST_DURATION_MS}ms` }}\n />\n </div>\n );\n }\n\n return (\n <div\n key={toast.id}\n className={cx(styles.toast, styles.kindRecipe({ kind }))}\n >\n <div className={styles.header}>\n <div className={styles.title}>{toast.title}</div>\n <button\n type=\"button\"\n className={styles.closeButton}\n aria-label={resolvedDismissLabel}\n onClick={() => {\n onDismiss(toast.id);\n }}\n >\n <ModalCloseSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n </div>\n {messageNode}\n {actionsNode}\n {progressNode}\n </div>\n );\n });\n }, [onDismiss, resolvedDismissLabel, toasts]);\n\n if (toasts.length === 0) {\n return null;\n }\n\n return <div className={cx(styles.viewport, className)}>{items}</div>;\n};\n"],"names":["ToastViewport","toasts","onDismiss","dismissLabel","className","t","useUiTranslation","resolvedDismissLabel","items","useMemo","toast","kind","actions","messageNode","styles.message","actionsNode","jsx","styles.actions","action","Button","progressNode","styles.progressTrack","styles.progressBar","INFO_TOAST_DURATION_MS","jsxs","cx","styles.toast","styles.kindRecipe","styles.header","styles.title","styles.closeButton","ModalCloseSvg","styles.viewport"],"mappings":";;;;;;;;AAoCO,MAAMA,IAAgB,CAAC;AAAA,EAC5B,QAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,WAAAC;AACF,MAA8C;AAC5C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAuBJ,KAAgBE,EAAE,wBAAwB,GAEjEG,IAAQC,EAAQ,MACbR,EAAO,IAAI,CAACS,MAAU;AAC3B,UAAMC,IAAOD,EAAM,QAAQ,QACrBE,IAAUF,EAAM,WAAW,CAAA;AAEjC,QAAIG,IAAkC;AACtC,IAAIH,EAAM,WAAW,SACnBG,sBAAe,OAAA,EAAI,WAAWC,GAAiB,YAAM,SAAQ;AAG/D,QAAIC,IAAkC;AACtC,IAAIH,EAAQ,SAAS,MACnBG,IACE,gBAAAC,EAAC,SAAI,WAAWC,GACb,UAAAL,EAAQ,IAAI,CAACM,MAEV,gBAAAF;AAAA,MAACG;AAAA,MAAA;AAAA,QAEC,MAAK;AAAA,QACL,MAAK;AAAA,QACL,SAAQ;AAAA,QACR,SAASD,EAAO;AAAA,QAEf,UAAAA,EAAO;AAAA,MAAA;AAAA,MANHA,EAAO;AAAA,IAAA,CASjB,EAAA,CACH;AAIJ,QAAIE,IAAmC;AACvC,WAAIT,MAAS,WACXS,sBACG,OAAA,EAAI,WAAWC,GAAsB,eAAY,QAChD,UAAA,gBAAAL;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAWM;AAAAA,QACX,OAAO,EAAE,mBAAmB,GAAGC,CAAsB,KAAA;AAAA,MAAK;AAAA,IAAA,GAE9D,IAKF,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,WAAWC,EAAGC,GAAcC,EAAkB,EAAE,MAAAhB,EAAA,CAAM,CAAC;AAAA,QAEvD,UAAA;AAAA,UAAA,gBAAAa,EAAC,OAAA,EAAI,WAAWI,GACd,UAAA;AAAA,YAAA,gBAAAZ,EAAC,OAAA,EAAI,WAAWa,GAAe,YAAM,OAAM;AAAA,YAC3C,gBAAAb;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAWc;AAAAA,gBACX,cAAYvB;AAAA,gBACZ,SAAS,MAAM;AACb,kBAAAL,EAAUQ,EAAM,EAAE;AAAA,gBACpB;AAAA,gBAEA,4BAACqB,GAAA,EAAc,OAAO,IAAI,QAAQ,IAAI,eAAY,OAAA,CAAO;AAAA,cAAA;AAAA,YAAA;AAAA,UAC3D,GACF;AAAA,UACClB;AAAA,UACAE;AAAA,UACAK;AAAA,QAAA;AAAA,MAAA;AAAA,MAlBIV,EAAM;AAAA,IAAA;AAAA,EAqBjB,CAAC,GACA,CAACR,GAAWK,GAAsBN,CAAM,CAAC;AAE5C,SAAIA,EAAO,WAAW,IACb,OAGF,gBAAAe,EAAC,SAAI,WAAWS,EAAGO,GAAiB5B,CAAS,GAAI,UAAAI,GAAM;AAChE;"}
1
+ {"version":3,"file":"ToastViewport.js","names":[],"sources":["../../../../../src/atomic/molecules/toast/ToastViewport.tsx"],"sourcesContent":["import { type JSX, type ReactNode, useMemo } from 'react';\nimport type { RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { ModalCloseSvg } from '../../../icons/ModalCloseSvg.js';\nimport { Button } from '../../atoms/button/Button.js';\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\n\nimport * as styles from './toast.css.js';\nimport { cx } from '../../../theme/tools.js';\nimport { INFO_TOAST_DURATION_MS } from './constants.js';\n\nexport type ToastKind = NonNullable<\n NonNullable<RecipeVariants<typeof styles.kindRecipe>>['kind']\n>;\n\nexport type ToastAction = {\n id: string;\n label: string;\n onClick: () => void;\n};\n\nexport type ToastItem = {\n id: string;\n kind?: ToastKind;\n title: ReactNode;\n message?: ReactNode;\n actions?: readonly ToastAction[];\n};\n\nexport type ToastViewportProps = {\n toasts: readonly ToastItem[];\n onDismiss: (toastId: string) => void;\n dismissLabel?: string;\n className?: string;\n};\n\nexport const ToastViewport = ({\n toasts,\n onDismiss,\n dismissLabel,\n className,\n}: ToastViewportProps): JSX.Element | null => {\n const { t } = useUiTranslation();\n const resolvedDismissLabel = dismissLabel ?? t('toast.dismissAriaLabel');\n\n const items = useMemo(() => {\n return toasts.map((toast) => {\n const kind = toast.kind ?? 'info';\n const actions = toast.actions ?? [];\n\n let messageNode: JSX.Element | null = null;\n if (toast.message != null) {\n messageNode = <div className={styles.message}>{toast.message}</div>;\n }\n\n let actionsNode: JSX.Element | null = null;\n if (actions.length > 0) {\n actionsNode = (\n <div className={styles.actions}>\n {actions.map((action) => {\n return (\n <Button\n key={action.id}\n type=\"button\"\n size=\"small\"\n variant=\"secondary\"\n onClick={action.onClick}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n }\n\n let progressNode: JSX.Element | null = null;\n if (kind === 'info') {\n progressNode = (\n <div className={styles.progressTrack} aria-hidden=\"true\">\n <div\n className={styles.progressBar}\n style={{ animationDuration: `${INFO_TOAST_DURATION_MS}ms` }}\n />\n </div>\n );\n }\n\n return (\n <div\n key={toast.id}\n className={cx(styles.toast, styles.kindRecipe({ kind }))}\n >\n <div className={styles.header}>\n <div className={styles.title}>{toast.title}</div>\n <button\n type=\"button\"\n className={styles.closeButton}\n aria-label={resolvedDismissLabel}\n onClick={() => {\n onDismiss(toast.id);\n }}\n >\n <ModalCloseSvg width={18} height={18} aria-hidden=\"true\" />\n </button>\n </div>\n {messageNode}\n {actionsNode}\n {progressNode}\n </div>\n );\n });\n }, [onDismiss, resolvedDismissLabel, toasts]);\n\n if (toasts.length === 0) {\n return null;\n }\n\n return <div className={cx(styles.viewport, className)}>{items}</div>;\n};\n"],"mappings":";;;;;;;;;AAoCA,IAAa,KAAiB,EAC5B,WACA,cACA,iBACA,mBAC4C;CAC5C,IAAM,EAAE,SAAM,GAAkB,EAC1B,IAAuB,KAAgB,EAAE,yBAAyB,EAElE,IAAQ,QACL,EAAO,KAAK,MAAU;EAC3B,IAAM,IAAO,EAAM,QAAQ,QACrB,IAAU,EAAM,WAAW,EAAE,EAE/B,IAAkC;AACtC,EAAI,EAAM,WAAW,SACnB,IAAc,kBAAC,OAAD;GAAK,WAAW;aAAiB,EAAM;GAAc,CAAA;EAGrE,IAAI,IAAkC;AACtC,EAAI,EAAQ,SAAS,MACnB,IACE,kBAAC,OAAD;GAAK,WAAW;aACb,EAAQ,KAAK,MAEV,kBAAC,GAAD;IAEE,MAAK;IACL,MAAK;IACL,SAAQ;IACR,SAAS,EAAO;cAEf,EAAO;IACD,EAPF,EAAO,GAOL,CAEX;GACE,CAAA;EAIV,IAAI,IAAmC;AAYvC,SAXI,MAAS,WACX,IACE,kBAAC,OAAD;GAAK,WAAW;GAAsB,eAAY;aAChD,kBAAC,OAAD;IACE,WAAW;IACX,OAAO,EAAE,mBAAmB,GAAG,EAAuB,KAAK;IAC3D,CAAA;GACE,CAAA,GAKR,kBAAC,OAAD;GAEE,WAAW,EAAG,GAAc,EAAkB,EAAE,SAAM,CAAC,CAAC;aAF1D;IAIE,kBAAC,OAAD;KAAK,WAAW;eAAhB,CACE,kBAAC,OAAD;MAAK,WAAW;gBAAe,EAAM;MAAY,CAAA,EACjD,kBAAC,UAAD;MACE,MAAK;MACL,WAAW;MACX,cAAY;MACZ,eAAe;AACb,SAAU,EAAM,GAAG;;gBAGrB,kBAAC,GAAD;OAAe,OAAO;OAAI,QAAQ;OAAI,eAAY;OAAS,CAAA;MACpD,CAAA,CACL;;IACL;IACA;IACA;IACG;KAnBC,EAAM,GAmBP;GAER,EACD;EAAC;EAAW;EAAsB;EAAO,CAAC;AAM7C,QAJI,EAAO,WAAW,IACb,OAGF,kBAAC,OAAD;EAAK,WAAW,EAAG,GAAiB,EAAU;YAAG;EAAY,CAAA"}
@@ -1,5 +1,6 @@
1
- const O = 15e3;
2
- export {
3
- O as INFO_TOAST_DURATION_MS
4
- };
5
- //# sourceMappingURL=constants.js.map
1
+ //#region src/atomic/molecules/toast/constants.ts
2
+ var e = 15e3;
3
+ //#endregion
4
+ export { e as INFO_TOAST_DURATION_MS };
5
+
6
+ //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../../src/atomic/molecules/toast/constants.ts"],"sourcesContent":["export const INFO_TOAST_DURATION_MS = 15_000;\n"],"names":["INFO_TOAST_DURATION_MS"],"mappings":"AAAO,MAAMA,IAAyB;"}
1
+ {"version":3,"file":"constants.js","names":[],"sources":["../../../../../src/atomic/molecules/toast/constants.ts"],"sourcesContent":["export const INFO_TOAST_DURATION_MS = 15_000;\n"],"mappings":";AAAA,IAAa,IAAyB"}
@@ -1,17 +1,18 @@
1
- /* empty css */
2
- /* empty css */
3
- import { createRuntimeFn as b } from "@vanilla-extract/recipes/createRuntimeFn";
4
- var q = "_19cwz1i0 txvbqbpso txvbqbpuf txvbqb836 txvbqbuvx txvbqb9io txvbqbai6 txvbqbao6", i = "_19cwz1i3 _19cwz1i2 txvbqbnvf txvbqboio txvbqbp5o txvbqblxf txvbqbuzn txvbqbwf txvbqb1qf txvbqb1co txvbqb9io txvbqbai6 txvbqbanx txvbqb1ro txvbqb8q6", a = b({ defaultClassName: "_19cwz1i4", variantClassNames: { kind: { info: "_19cwz1i5", warning: "_19cwz1i6", error: "_19cwz1i7" } }, defaultVariants: { kind: "info" }, compoundVariants: [] }), o = "_19cwz1i8 txvbqb9io txvbqbcf txvbqbdoo txvbqbao6", r = "_19cwz1i9 txvbqbamo", c = "_19cwz1ia txvbqb8x", e = "_19cwz1ib txvbqb9jf txvbqbco txvbqbao6 txvbqbhwx", w = "_19cwz1id _19cwz1ic txvbqb9jf txvbqbco txvbqbdnx txvbqbtx6 txvbqbc6o txvbqb1rf txvbqb1px txvbqb12f txvbqbuzj txvbqbv", n = "_19cwz1if _19cwz1ie txvbqbhwx txvbqb1t6", z = "_19cwz1ih";
5
- export {
6
- e as actions,
7
- w as closeButton,
8
- o as header,
9
- a as kindRecipe,
10
- c as message,
11
- z as progressBar,
12
- n as progressTrack,
13
- r as title,
14
- i as toast,
15
- q as viewport
16
- };
17
- //# sourceMappingURL=toast.css.js.map
1
+ /* empty css */
2
+ /* empty css */
3
+ import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
4
+ //#region src/atomic/molecules/toast/toast.css.ts
5
+ var t = "_19cwz1i0 txvbqbpso txvbqbpuf txvbqb836 txvbqbuvx txvbqb9io txvbqbai6 txvbqbao6", n = "_19cwz1i3 _19cwz1i2 txvbqbnvf txvbqboio txvbqbp5o txvbqblxf txvbqbuzn txvbqbwf txvbqb1qf txvbqb1co txvbqb9io txvbqbai6 txvbqbanx txvbqb1ro txvbqb8q6", r = e({
6
+ defaultClassName: "_19cwz1i4",
7
+ variantClassNames: { kind: {
8
+ info: "_19cwz1i5",
9
+ warning: "_19cwz1i6",
10
+ error: "_19cwz1i7"
11
+ } },
12
+ defaultVariants: { kind: "info" },
13
+ compoundVariants: []
14
+ }), i = "_19cwz1i8 txvbqb9io txvbqbcf txvbqbdoo txvbqbao6", a = "_19cwz1i9 txvbqbamo", o = "_19cwz1ia txvbqb8x", s = "_19cwz1ib txvbqb9jf txvbqbco txvbqbao6 txvbqbhwx", c = "_19cwz1id _19cwz1ic txvbqb9jf txvbqbco txvbqbdnx txvbqbtx6 txvbqbc6o txvbqb1rf txvbqb1px txvbqb12f txvbqbuzj txvbqbv", l = "_19cwz1if _19cwz1ie txvbqbhwx txvbqb1t6", u = "_19cwz1ih";
15
+ //#endregion
16
+ export { s as actions, c as closeButton, i as header, r as kindRecipe, o as message, u as progressBar, l as progressTrack, a as title, n as toast, t as viewport };
17
+
18
+ //# sourceMappingURL=toast.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"toast.css.js","names":[],"sources":["../../../../../src/atomic/molecules/toast/toast.css.ts"],"sourcesContent":["import { keyframes, style } from '@vanilla-extract/css';\nimport { recipe, type RecipeVariants } from '@vanilla-extract/recipes';\n\nimport { sprinkles } from '../../../theme/sprinkles.css.js';\nimport { vars } from '../../../theme/themeContract.js';\n\nexport const viewport = sprinkles({\n position: 'fixed',\n right: 4,\n bottom: 4,\n zIndex: 'modal',\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n});\n\nconst slideIn = keyframes({\n from: { transform: 'translateY(10px)', opacity: 0 },\n to: { transform: 'translateY(0)', opacity: 1 },\n});\n\nexport const toast = style([\n sprinkles({\n backgroundColor: 'white',\n borderColor: 'border',\n borderStyle: 'solid',\n borderWidth: 'default',\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n paddingX: 4,\n paddingY: 3,\n borderRadius: 'lg',\n boxShadow: 'lg',\n }),\n {\n width: 'min(28rem, calc(100vw - 2rem))',\n animation: `${slideIn} 140ms ease-out`,\n },\n]);\n\nexport const kindRecipe = recipe({\n variants: {\n kind: {\n info: { borderColor: vars.colors['blue-200'] },\n warning: { borderColor: vars.colors['amber-200'] },\n error: { borderColor: vars.colors['red-200'] },\n },\n },\n defaultVariants: {\n kind: 'info',\n },\n});\n\nexport type KindVariants = RecipeVariants<typeof kindRecipe>;\n\nexport const header = sprinkles({\n display: 'flex',\n alignItems: 'flex-start',\n justifyContent: 'space-between',\n gap: 2,\n});\n\nexport const title = sprinkles({\n fontWeight: 'semibold',\n});\n\nexport const message = sprinkles({\n fontSize: 'sm',\n});\n\nexport const actions = sprinkles({\n display: 'inline-flex',\n alignItems: 'center',\n gap: 2,\n marginTop: 1,\n});\n\nexport const closeButton = style([\n sprinkles({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 8,\n height: 8,\n borderRadius: 'md',\n borderStyle: 'none',\n borderWidth: 0,\n backgroundColor: 'transparent',\n cursor: 'pointer',\n }),\n]);\n\nexport const progressTrack = style([\n sprinkles({\n marginTop: 1,\n borderRadius: 'full',\n }),\n {\n height: 4,\n backgroundColor: vars.colors['blue-50'],\n overflow: 'hidden',\n },\n]);\n\nconst progressFill = keyframes({\n from: { width: '0%' },\n to: { width: '100%' },\n});\n\nexport const progressBar = style([\n {\n height: '100%',\n width: '0%',\n backgroundColor: vars.colors['blue-400'],\n animationName: progressFill,\n animationTimingFunction: 'linear',\n animationFillMode: 'forwards',\n },\n]);\n"],"mappings":""}