@plumile/ui 0.1.53 → 0.1.55

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 (495) hide show
  1. package/lib/esm/atomic/atoms/badge/Badge.js +16 -11
  2. package/lib/esm/atomic/atoms/badge/Badge.js.map +1 -0
  3. package/lib/esm/atomic/atoms/badge/badge.css.js +8 -85
  4. package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -0
  5. package/lib/esm/atomic/atoms/badge/badge.css.ts.vanilla-BxMgYgcH.css +1 -0
  6. package/lib/esm/atomic/atoms/button/Button.js +55 -23
  7. package/lib/esm/atomic/atoms/button/Button.js.map +1 -0
  8. package/lib/esm/atomic/atoms/button/LinkButton.js +60 -33
  9. package/lib/esm/atomic/atoms/button/LinkButton.js.map +1 -0
  10. package/lib/esm/atomic/atoms/button/button.css.js +16 -350
  11. package/lib/esm/atomic/atoms/button/button.css.js.map +1 -0
  12. package/lib/esm/atomic/atoms/button/button.css.ts.vanilla-BYFxDZro.css +1 -0
  13. package/lib/esm/atomic/atoms/checkbox/Checkbox.js +40 -12
  14. package/lib/esm/atomic/atoms/checkbox/Checkbox.js.map +1 -0
  15. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +11 -98
  16. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -0
  17. package/lib/esm/atomic/atoms/checkbox/checkbox.css.ts.vanilla-D6TvWxlo.css +1 -0
  18. package/lib/esm/atomic/atoms/input/Input.js +40 -44
  19. package/lib/esm/atomic/atoms/input/Input.js.map +1 -0
  20. package/lib/esm/atomic/atoms/input/input.css.js +14 -114
  21. package/lib/esm/atomic/atoms/input/input.css.js.map +1 -0
  22. package/lib/esm/atomic/atoms/input/input.css.ts.vanilla-D_X5_tcn.css +1 -0
  23. package/lib/esm/atomic/atoms/label/Label.js +16 -21
  24. package/lib/esm/atomic/atoms/label/Label.js.map +1 -0
  25. package/lib/esm/atomic/atoms/label/label.css.js +9 -29
  26. package/lib/esm/atomic/atoms/label/label.css.js.map +1 -0
  27. package/lib/esm/atomic/atoms/textarea/Textarea.js +17 -17
  28. package/lib/esm/atomic/atoms/textarea/Textarea.js.map +1 -0
  29. package/lib/esm/atomic/atoms/textarea/textarea.css.js +8 -101
  30. package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -0
  31. package/lib/esm/atomic/atoms/textarea/textarea.css.ts.vanilla-IrvNTQEt.css +1 -0
  32. package/lib/esm/atomic/molecules/card/Card.css.js +10 -21
  33. package/lib/esm/atomic/molecules/card/Card.css.js.map +1 -0
  34. package/lib/esm/atomic/molecules/card/Card.js +17 -16
  35. package/lib/esm/atomic/molecules/card/Card.js.map +1 -0
  36. package/lib/esm/atomic/molecules/tabs/Tabs.js +33 -31
  37. package/lib/esm/atomic/molecules/tabs/Tabs.js.map +1 -0
  38. package/lib/esm/atomic/molecules/tabs/tabs.css.js +9 -73
  39. package/lib/esm/atomic/molecules/tabs/tabs.css.js.map +1 -0
  40. package/lib/esm/atomic/molecules/tabs/tabs.css.ts.vanilla-DQm5wO0K.css +1 -0
  41. package/lib/esm/components/charts/BillingUsageLineChart.js +169 -162
  42. package/lib/esm/components/charts/BillingUsageLineChart.js.map +1 -0
  43. package/lib/esm/components/charts/billingUsageLineChart.css.js +12 -62
  44. package/lib/esm/components/charts/billingUsageLineChart.css.js.map +1 -0
  45. package/lib/esm/components/charts/billingUsageLineChart.css.ts.vanilla-7e3dy1Dj.css +1 -0
  46. package/lib/esm/components/layout/ContentLayout.css.js +18 -71
  47. package/lib/esm/components/layout/ContentLayout.css.js.map +1 -0
  48. package/lib/esm/components/layout/ContentLayout.js +75 -60
  49. package/lib/esm/components/layout/ContentLayout.js.map +1 -0
  50. package/lib/esm/components/layout/TabsContentLayout.css.js +11 -24
  51. package/lib/esm/components/layout/TabsContentLayout.css.js.map +1 -0
  52. package/lib/esm/components/layout/TabsContentLayout.css.ts.vanilla-tn0RQdqM.css +0 -0
  53. package/lib/esm/components/layout/TabsContentLayout.js +13 -7
  54. package/lib/esm/components/layout/TabsContentLayout.js.map +1 -0
  55. package/lib/esm/components/tile/InfoTile.css.js +18 -103
  56. package/lib/esm/components/tile/InfoTile.css.js.map +1 -0
  57. package/lib/esm/components/tile/InfoTile.css.ts.vanilla-ByCg4UKz.css +1 -0
  58. package/lib/esm/components/tile/InfoTile.js +63 -43
  59. package/lib/esm/components/tile/InfoTile.js.map +1 -0
  60. package/lib/esm/icons/BanSvg.js +43 -4
  61. package/lib/esm/icons/BanSvg.js.map +1 -0
  62. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js +40 -4
  63. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js.map +1 -0
  64. package/lib/esm/icons/ChatCheckSvg.js +41 -4
  65. package/lib/esm/icons/ChatCheckSvg.js.map +1 -0
  66. package/lib/esm/icons/ChatSizeLargeSvg.js +69 -4
  67. package/lib/esm/icons/ChatSizeLargeSvg.js.map +1 -0
  68. package/lib/esm/icons/ChatSizeMediumSvg.js +60 -4
  69. package/lib/esm/icons/ChatSizeMediumSvg.js.map +1 -0
  70. package/lib/esm/icons/ChatSizeSmallSvg.js +51 -4
  71. package/lib/esm/icons/ChatSizeSmallSvg.js.map +1 -0
  72. package/lib/esm/icons/ChatXSvg.js +41 -4
  73. package/lib/esm/icons/ChatXSvg.js.map +1 -0
  74. package/lib/esm/icons/CheckSvg.js +29 -4
  75. package/lib/esm/icons/CheckSvg.js.map +1 -0
  76. package/lib/esm/icons/ChevronDownSvg.js +29 -4
  77. package/lib/esm/icons/ChevronDownSvg.js.map +1 -0
  78. package/lib/esm/icons/ChevronLeftSvg.js +29 -4
  79. package/lib/esm/icons/ChevronLeftSvg.js.map +1 -0
  80. package/lib/esm/icons/ChevronRightSvg.js +29 -4
  81. package/lib/esm/icons/ChevronRightSvg.js.map +1 -0
  82. package/lib/esm/icons/ClockSvg.js +43 -4
  83. package/lib/esm/icons/ClockSvg.js.map +1 -0
  84. package/lib/esm/icons/CoinOffSvg.js +64 -4
  85. package/lib/esm/icons/CoinOffSvg.js.map +1 -0
  86. package/lib/esm/icons/CoinSvg.js +54 -4
  87. package/lib/esm/icons/CoinSvg.js.map +1 -0
  88. package/lib/esm/icons/DatabaseCheckSvg.js +64 -4
  89. package/lib/esm/icons/DatabaseCheckSvg.js.map +1 -0
  90. package/lib/esm/icons/DatabaseXSvg.js +64 -4
  91. package/lib/esm/icons/DatabaseXSvg.js.map +1 -0
  92. package/lib/esm/icons/DevModeSvg.js +29 -4
  93. package/lib/esm/icons/DevModeSvg.js.map +1 -0
  94. package/lib/esm/icons/EyeSvg.js +32 -4
  95. package/lib/esm/icons/EyeSvg.js.map +1 -0
  96. package/lib/esm/icons/FormErrorAlertSvg.js +28 -4
  97. package/lib/esm/icons/FormErrorAlertSvg.js.map +1 -0
  98. package/lib/esm/icons/GlobeSvg.js +26 -4
  99. package/lib/esm/icons/GlobeSvg.js.map +1 -0
  100. package/lib/esm/icons/GripDotsSvg.js +28 -5
  101. package/lib/esm/icons/GripDotsSvg.js.map +1 -0
  102. package/lib/esm/icons/HomeActivityAssignUserSvg.js +61 -4
  103. package/lib/esm/icons/HomeActivityAssignUserSvg.js.map +1 -0
  104. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js +41 -4
  105. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js.map +1 -0
  106. package/lib/esm/icons/HomeStatsClipboardSvg.js +41 -4
  107. package/lib/esm/icons/HomeStatsClipboardSvg.js.map +1 -0
  108. package/lib/esm/icons/HomeStatsClockSvg.js +41 -4
  109. package/lib/esm/icons/HomeStatsClockSvg.js.map +1 -0
  110. package/lib/esm/icons/KeyOffSvg.js +53 -4
  111. package/lib/esm/icons/KeyOffSvg.js.map +1 -0
  112. package/lib/esm/icons/KeySvg.js +53 -4
  113. package/lib/esm/icons/KeySvg.js.map +1 -0
  114. package/lib/esm/icons/KronexSvg.js +42 -4
  115. package/lib/esm/icons/KronexSvg.js.map +1 -0
  116. package/lib/esm/icons/LinkCheckSvg.js +51 -4
  117. package/lib/esm/icons/LinkCheckSvg.js.map +1 -0
  118. package/lib/esm/icons/LinkSvg.js +41 -4
  119. package/lib/esm/icons/LinkSvg.js.map +1 -0
  120. package/lib/esm/icons/LinkXSvg.js +51 -4
  121. package/lib/esm/icons/LinkXSvg.js.map +1 -0
  122. package/lib/esm/icons/LockOpenSvg.js +45 -4
  123. package/lib/esm/icons/LockOpenSvg.js.map +1 -0
  124. package/lib/esm/icons/LockSvg.js +45 -4
  125. package/lib/esm/icons/LockSvg.js.map +1 -0
  126. package/lib/esm/icons/MailCheckSvg.js +55 -4
  127. package/lib/esm/icons/MailCheckSvg.js.map +1 -0
  128. package/lib/esm/icons/MailSvg.js +45 -4
  129. package/lib/esm/icons/MailSvg.js.map +1 -0
  130. package/lib/esm/icons/MailXSvg.js +55 -4
  131. package/lib/esm/icons/MailXSvg.js.map +1 -0
  132. package/lib/esm/icons/ModalCloseSvg.js +41 -4
  133. package/lib/esm/icons/ModalCloseSvg.js.map +1 -0
  134. package/lib/esm/icons/PencilSvg.js +19 -4
  135. package/lib/esm/icons/PencilSvg.js.map +1 -0
  136. package/lib/esm/icons/PinFilledSvg.js +39 -5
  137. package/lib/esm/icons/PinFilledSvg.js.map +1 -0
  138. package/lib/esm/icons/PinSvg.js +42 -5
  139. package/lib/esm/icons/PinSvg.js.map +1 -0
  140. package/lib/esm/icons/ProfileDropdownLogoutSvg.js +51 -4
  141. package/lib/esm/icons/ProfileDropdownLogoutSvg.js.map +1 -0
  142. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js +41 -4
  143. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js.map +1 -0
  144. package/lib/esm/icons/ProjectsFolderSvg.js +29 -4
  145. package/lib/esm/icons/ProjectsFolderSvg.js.map +1 -0
  146. package/lib/esm/icons/RobotCheckSvg.js +67 -4
  147. package/lib/esm/icons/RobotCheckSvg.js.map +1 -0
  148. package/lib/esm/icons/RobotSvg.js +57 -4
  149. package/lib/esm/icons/RobotSvg.js.map +1 -0
  150. package/lib/esm/icons/RobotXSvg.js +67 -4
  151. package/lib/esm/icons/RobotXSvg.js.map +1 -0
  152. package/lib/esm/icons/RocketOffSvg.js +82 -5
  153. package/lib/esm/icons/RocketOffSvg.js.map +1 -0
  154. package/lib/esm/icons/RocketSvg.js +72 -5
  155. package/lib/esm/icons/RocketSvg.js.map +1 -0
  156. package/lib/esm/icons/SendCheckSvg.js +54 -4
  157. package/lib/esm/icons/SendCheckSvg.js.map +1 -0
  158. package/lib/esm/icons/SendMessageSvg.js +44 -4
  159. package/lib/esm/icons/SendMessageSvg.js.map +1 -0
  160. package/lib/esm/icons/SendXSvg.js +54 -4
  161. package/lib/esm/icons/SendXSvg.js.map +1 -0
  162. package/lib/esm/icons/SettingsCheckSvg.js +51 -4
  163. package/lib/esm/icons/SettingsCheckSvg.js.map +1 -0
  164. package/lib/esm/icons/SettingsXSvg.js +51 -4
  165. package/lib/esm/icons/SettingsXSvg.js.map +1 -0
  166. package/lib/esm/icons/ShieldLockSvg.js +55 -4
  167. package/lib/esm/icons/ShieldLockSvg.js.map +1 -0
  168. package/lib/esm/icons/ShieldOffSvg.js +41 -4
  169. package/lib/esm/icons/ShieldOffSvg.js.map +1 -0
  170. package/lib/esm/icons/SidebarHomeSvg.js +41 -4
  171. package/lib/esm/icons/SidebarHomeSvg.js.map +1 -0
  172. package/lib/esm/icons/SidebarInitiativesSvg.js +51 -4
  173. package/lib/esm/icons/SidebarInitiativesSvg.js.map +1 -0
  174. package/lib/esm/icons/SidebarPlusSvg.js +41 -4
  175. package/lib/esm/icons/SidebarPlusSvg.js.map +1 -0
  176. package/lib/esm/icons/SidebarSearchSvg.js +41 -4
  177. package/lib/esm/icons/SidebarSearchSvg.js.map +1 -0
  178. package/lib/esm/icons/SidebarSettingsSvg.js +41 -4
  179. package/lib/esm/icons/SidebarSettingsSvg.js.map +1 -0
  180. package/lib/esm/icons/SidebarTasksSvg.js +41 -4
  181. package/lib/esm/icons/SidebarTasksSvg.js.map +1 -0
  182. package/lib/esm/icons/SidebarTeamSvg.js +61 -4
  183. package/lib/esm/icons/SidebarTeamSvg.js.map +1 -0
  184. package/lib/esm/icons/TaskAttachmentSvg.js +29 -4
  185. package/lib/esm/icons/TaskAttachmentSvg.js.map +1 -0
  186. package/lib/esm/icons/TaskCalendarSvg.js +61 -4
  187. package/lib/esm/icons/TaskCalendarSvg.js.map +1 -0
  188. package/lib/esm/icons/TaskCommentBubbleSvg.js +29 -4
  189. package/lib/esm/icons/TaskCommentBubbleSvg.js.map +1 -0
  190. package/lib/esm/icons/TaskDeleteSvg.js +41 -4
  191. package/lib/esm/icons/TaskDeleteSvg.js.map +1 -0
  192. package/lib/esm/icons/TaskDependencyBlockedSvg.js +42 -5
  193. package/lib/esm/icons/TaskDependencyBlockedSvg.js.map +1 -0
  194. package/lib/esm/icons/TaskDependencyReadySvg.js +42 -5
  195. package/lib/esm/icons/TaskDependencyReadySvg.js.map +1 -0
  196. package/lib/esm/icons/TaskMenuDotsSvg.js +51 -4
  197. package/lib/esm/icons/TaskMenuDotsSvg.js.map +1 -0
  198. package/lib/esm/icons/TaskTagSvg.js +41 -4
  199. package/lib/esm/icons/TaskTagSvg.js.map +1 -0
  200. package/lib/esm/icons/TeamMemberEmailSvg.js +41 -4
  201. package/lib/esm/icons/TeamMemberEmailSvg.js.map +1 -0
  202. package/lib/esm/icons/TeamMemberLocationSvg.js +41 -4
  203. package/lib/esm/icons/TeamMemberLocationSvg.js.map +1 -0
  204. package/lib/esm/icons/WrenchSvg.js +29 -4
  205. package/lib/esm/icons/WrenchSvg.js.map +1 -0
  206. package/lib/esm/icons/XBadgeSvg.js +41 -4
  207. package/lib/esm/icons/XBadgeSvg.js.map +1 -0
  208. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js +41 -5
  209. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js.map +1 -0
  210. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js +28 -5
  211. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js.map +1 -0
  212. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js +52 -5
  213. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js.map +1 -0
  214. package/lib/esm/icons/markdown/MarkdownCopySvg.js +41 -5
  215. package/lib/esm/icons/markdown/MarkdownCopySvg.js.map +1 -0
  216. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js +50 -5
  217. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js.map +1 -0
  218. package/lib/esm/index.js +56 -16
  219. package/lib/esm/index.js.map +1 -0
  220. package/lib/esm/svg/ChevronDownIcon.js +10 -6
  221. package/lib/esm/svg/ChevronDownIcon.js.map +1 -0
  222. package/lib/esm/svg/ChevronRightIcon.js +9 -5
  223. package/lib/esm/svg/ChevronRightIcon.js.map +1 -0
  224. package/lib/esm/svg/GlobeIcon.js +6 -5
  225. package/lib/esm/svg/GlobeIcon.js.map +1 -0
  226. package/lib/esm/theme/ThemeProvider.js +36 -45
  227. package/lib/esm/theme/ThemeProvider.js.map +1 -0
  228. package/lib/esm/theme/VisuallyHidden.js +7 -6
  229. package/lib/esm/theme/VisuallyHidden.js.map +1 -0
  230. package/lib/esm/theme/accessibility.css.js +9 -21
  231. package/lib/esm/theme/accessibility.css.js.map +1 -0
  232. package/lib/esm/theme/accessibility.css.ts.vanilla-D6gfeWvf.css +1 -0
  233. package/lib/esm/theme/colors.js +100 -97
  234. package/lib/esm/theme/colors.js.map +1 -0
  235. package/lib/esm/theme/common.js +122 -119
  236. package/lib/esm/theme/common.js.map +1 -0
  237. package/lib/esm/theme/containerQueries.js +13 -10
  238. package/lib/esm/theme/containerQueries.js.map +1 -0
  239. package/lib/esm/theme/global.css.js +2 -112
  240. package/lib/esm/theme/global.css.js.map +1 -0
  241. package/lib/esm/theme/global.css.ts.vanilla-ClXnHnoy.css +1 -0
  242. package/lib/esm/theme/index.js +28 -9
  243. package/lib/esm/theme/index.js.map +1 -0
  244. package/lib/esm/theme/sprinkles.css.js +9 -413
  245. package/lib/esm/theme/sprinkles.css.js.map +1 -0
  246. package/lib/esm/theme/sprinkles.css.ts.vanilla-DOI5FNoi.css +1 -0
  247. package/lib/esm/theme/theme.css.js +2 -757
  248. package/lib/esm/theme/theme.css.js.map +1 -0
  249. package/lib/esm/theme/theme.css.ts.vanilla-a3SsXff5.css +1 -0
  250. package/lib/esm/theme/themeContract.js +914 -914
  251. package/lib/esm/theme/themeContract.js.map +1 -0
  252. package/lib/esm/theme/tools.js +19 -29
  253. package/lib/esm/theme/tools.js.map +1 -0
  254. package/package.json +3 -3
  255. package/lib/esm/atomic/atoms/badge/Badge.d.ts +0 -11
  256. package/lib/esm/atomic/atoms/badge/Badge.d.ts.map +0 -1
  257. package/lib/esm/atomic/atoms/badge/badge.css.d.ts +0 -17
  258. package/lib/esm/atomic/atoms/badge/badge.css.d.ts.map +0 -1
  259. package/lib/esm/atomic/atoms/button/Button.d.ts +0 -18
  260. package/lib/esm/atomic/atoms/button/Button.d.ts.map +0 -1
  261. package/lib/esm/atomic/atoms/button/LinkButton.d.ts +0 -19
  262. package/lib/esm/atomic/atoms/button/LinkButton.d.ts.map +0 -1
  263. package/lib/esm/atomic/atoms/button/button.css.d.ts +0 -54
  264. package/lib/esm/atomic/atoms/button/button.css.d.ts.map +0 -1
  265. package/lib/esm/atomic/atoms/checkbox/Checkbox.d.ts +0 -9
  266. package/lib/esm/atomic/atoms/checkbox/Checkbox.d.ts.map +0 -1
  267. package/lib/esm/atomic/atoms/checkbox/checkbox.css.d.ts +0 -16
  268. package/lib/esm/atomic/atoms/checkbox/checkbox.css.d.ts.map +0 -1
  269. package/lib/esm/atomic/atoms/input/Input.d.ts +0 -14
  270. package/lib/esm/atomic/atoms/input/Input.d.ts.map +0 -1
  271. package/lib/esm/atomic/atoms/input/input.css.d.ts +0 -24
  272. package/lib/esm/atomic/atoms/input/input.css.d.ts.map +0 -1
  273. package/lib/esm/atomic/atoms/label/Label.d.ts +0 -10
  274. package/lib/esm/atomic/atoms/label/Label.d.ts.map +0 -1
  275. package/lib/esm/atomic/atoms/label/label.css.d.ts +0 -15
  276. package/lib/esm/atomic/atoms/label/label.css.d.ts.map +0 -1
  277. package/lib/esm/atomic/atoms/textarea/Textarea.d.ts +0 -14
  278. package/lib/esm/atomic/atoms/textarea/Textarea.d.ts.map +0 -1
  279. package/lib/esm/atomic/atoms/textarea/textarea.css.d.ts +0 -18
  280. package/lib/esm/atomic/atoms/textarea/textarea.css.d.ts.map +0 -1
  281. package/lib/esm/atomic/molecules/card/Card.css.d.ts +0 -5
  282. package/lib/esm/atomic/molecules/card/Card.css.d.ts.map +0 -1
  283. package/lib/esm/atomic/molecules/card/Card.d.ts +0 -11
  284. package/lib/esm/atomic/molecules/card/Card.d.ts.map +0 -1
  285. package/lib/esm/atomic/molecules/tabs/Tabs.d.ts +0 -20
  286. package/lib/esm/atomic/molecules/tabs/Tabs.d.ts.map +0 -1
  287. package/lib/esm/atomic/molecules/tabs/tabs.css.d.ts +0 -11
  288. package/lib/esm/atomic/molecules/tabs/tabs.css.d.ts.map +0 -1
  289. package/lib/esm/components/charts/BillingUsageLineChart.d.ts +0 -19
  290. package/lib/esm/components/charts/BillingUsageLineChart.d.ts.map +0 -1
  291. package/lib/esm/components/charts/billingUsageLineChart.css.d.ts +0 -7
  292. package/lib/esm/components/charts/billingUsageLineChart.css.d.ts.map +0 -1
  293. package/lib/esm/components/layout/ContentLayout.css.d.ts +0 -13
  294. package/lib/esm/components/layout/ContentLayout.css.d.ts.map +0 -1
  295. package/lib/esm/components/layout/ContentLayout.d.ts +0 -22
  296. package/lib/esm/components/layout/ContentLayout.d.ts.map +0 -1
  297. package/lib/esm/components/layout/TabsContentLayout.css.d.ts +0 -6
  298. package/lib/esm/components/layout/TabsContentLayout.css.d.ts.map +0 -1
  299. package/lib/esm/components/layout/TabsContentLayout.d.ts +0 -9
  300. package/lib/esm/components/layout/TabsContentLayout.d.ts.map +0 -1
  301. package/lib/esm/components/tile/InfoTile.css.d.ts +0 -13
  302. package/lib/esm/components/tile/InfoTile.css.d.ts.map +0 -1
  303. package/lib/esm/components/tile/InfoTile.d.ts +0 -23
  304. package/lib/esm/components/tile/InfoTile.d.ts.map +0 -1
  305. package/lib/esm/icons/BanSvg.d.ts +0 -5
  306. package/lib/esm/icons/BanSvg.d.ts.map +0 -1
  307. package/lib/esm/icons/ButtonLoadingSpinnerSvg.d.ts +0 -5
  308. package/lib/esm/icons/ButtonLoadingSpinnerSvg.d.ts.map +0 -1
  309. package/lib/esm/icons/ChatCheckSvg.d.ts +0 -5
  310. package/lib/esm/icons/ChatCheckSvg.d.ts.map +0 -1
  311. package/lib/esm/icons/ChatSizeLargeSvg.d.ts +0 -5
  312. package/lib/esm/icons/ChatSizeLargeSvg.d.ts.map +0 -1
  313. package/lib/esm/icons/ChatSizeMediumSvg.d.ts +0 -5
  314. package/lib/esm/icons/ChatSizeMediumSvg.d.ts.map +0 -1
  315. package/lib/esm/icons/ChatSizeSmallSvg.d.ts +0 -5
  316. package/lib/esm/icons/ChatSizeSmallSvg.d.ts.map +0 -1
  317. package/lib/esm/icons/ChatXSvg.d.ts +0 -5
  318. package/lib/esm/icons/ChatXSvg.d.ts.map +0 -1
  319. package/lib/esm/icons/CheckSvg.d.ts +0 -5
  320. package/lib/esm/icons/CheckSvg.d.ts.map +0 -1
  321. package/lib/esm/icons/ChevronDownSvg.d.ts +0 -5
  322. package/lib/esm/icons/ChevronDownSvg.d.ts.map +0 -1
  323. package/lib/esm/icons/ChevronLeftSvg.d.ts +0 -5
  324. package/lib/esm/icons/ChevronLeftSvg.d.ts.map +0 -1
  325. package/lib/esm/icons/ChevronRightSvg.d.ts +0 -5
  326. package/lib/esm/icons/ChevronRightSvg.d.ts.map +0 -1
  327. package/lib/esm/icons/ClockSvg.d.ts +0 -5
  328. package/lib/esm/icons/ClockSvg.d.ts.map +0 -1
  329. package/lib/esm/icons/CoinOffSvg.d.ts +0 -5
  330. package/lib/esm/icons/CoinOffSvg.d.ts.map +0 -1
  331. package/lib/esm/icons/CoinSvg.d.ts +0 -5
  332. package/lib/esm/icons/CoinSvg.d.ts.map +0 -1
  333. package/lib/esm/icons/DatabaseCheckSvg.d.ts +0 -5
  334. package/lib/esm/icons/DatabaseCheckSvg.d.ts.map +0 -1
  335. package/lib/esm/icons/DatabaseXSvg.d.ts +0 -5
  336. package/lib/esm/icons/DatabaseXSvg.d.ts.map +0 -1
  337. package/lib/esm/icons/DevModeSvg.d.ts +0 -5
  338. package/lib/esm/icons/DevModeSvg.d.ts.map +0 -1
  339. package/lib/esm/icons/EyeSvg.d.ts +0 -5
  340. package/lib/esm/icons/EyeSvg.d.ts.map +0 -1
  341. package/lib/esm/icons/FormErrorAlertSvg.d.ts +0 -5
  342. package/lib/esm/icons/FormErrorAlertSvg.d.ts.map +0 -1
  343. package/lib/esm/icons/GlobeSvg.d.ts +0 -5
  344. package/lib/esm/icons/GlobeSvg.d.ts.map +0 -1
  345. package/lib/esm/icons/GripDotsSvg.d.ts +0 -5
  346. package/lib/esm/icons/GripDotsSvg.d.ts.map +0 -1
  347. package/lib/esm/icons/HomeActivityAssignUserSvg.d.ts +0 -5
  348. package/lib/esm/icons/HomeActivityAssignUserSvg.d.ts.map +0 -1
  349. package/lib/esm/icons/HomeStatsCheckBadgeSvg.d.ts +0 -5
  350. package/lib/esm/icons/HomeStatsCheckBadgeSvg.d.ts.map +0 -1
  351. package/lib/esm/icons/HomeStatsClipboardSvg.d.ts +0 -5
  352. package/lib/esm/icons/HomeStatsClipboardSvg.d.ts.map +0 -1
  353. package/lib/esm/icons/HomeStatsClockSvg.d.ts +0 -5
  354. package/lib/esm/icons/HomeStatsClockSvg.d.ts.map +0 -1
  355. package/lib/esm/icons/KeyOffSvg.d.ts +0 -5
  356. package/lib/esm/icons/KeyOffSvg.d.ts.map +0 -1
  357. package/lib/esm/icons/KeySvg.d.ts +0 -5
  358. package/lib/esm/icons/KeySvg.d.ts.map +0 -1
  359. package/lib/esm/icons/KronexSvg.d.ts +0 -5
  360. package/lib/esm/icons/KronexSvg.d.ts.map +0 -1
  361. package/lib/esm/icons/LinkCheckSvg.d.ts +0 -5
  362. package/lib/esm/icons/LinkCheckSvg.d.ts.map +0 -1
  363. package/lib/esm/icons/LinkSvg.d.ts +0 -5
  364. package/lib/esm/icons/LinkSvg.d.ts.map +0 -1
  365. package/lib/esm/icons/LinkXSvg.d.ts +0 -5
  366. package/lib/esm/icons/LinkXSvg.d.ts.map +0 -1
  367. package/lib/esm/icons/LockOpenSvg.d.ts +0 -5
  368. package/lib/esm/icons/LockOpenSvg.d.ts.map +0 -1
  369. package/lib/esm/icons/LockSvg.d.ts +0 -5
  370. package/lib/esm/icons/LockSvg.d.ts.map +0 -1
  371. package/lib/esm/icons/MailCheckSvg.d.ts +0 -5
  372. package/lib/esm/icons/MailCheckSvg.d.ts.map +0 -1
  373. package/lib/esm/icons/MailSvg.d.ts +0 -5
  374. package/lib/esm/icons/MailSvg.d.ts.map +0 -1
  375. package/lib/esm/icons/MailXSvg.d.ts +0 -5
  376. package/lib/esm/icons/MailXSvg.d.ts.map +0 -1
  377. package/lib/esm/icons/ModalCloseSvg.d.ts +0 -5
  378. package/lib/esm/icons/ModalCloseSvg.d.ts.map +0 -1
  379. package/lib/esm/icons/PencilSvg.d.ts +0 -5
  380. package/lib/esm/icons/PencilSvg.d.ts.map +0 -1
  381. package/lib/esm/icons/PinFilledSvg.d.ts +0 -5
  382. package/lib/esm/icons/PinFilledSvg.d.ts.map +0 -1
  383. package/lib/esm/icons/PinSvg.d.ts +0 -5
  384. package/lib/esm/icons/PinSvg.d.ts.map +0 -1
  385. package/lib/esm/icons/ProfileDropdownLogoutSvg.d.ts +0 -5
  386. package/lib/esm/icons/ProfileDropdownLogoutSvg.d.ts.map +0 -1
  387. package/lib/esm/icons/ProfileDropdownOrganizationSvg.d.ts +0 -5
  388. package/lib/esm/icons/ProfileDropdownOrganizationSvg.d.ts.map +0 -1
  389. package/lib/esm/icons/ProjectsFolderSvg.d.ts +0 -5
  390. package/lib/esm/icons/ProjectsFolderSvg.d.ts.map +0 -1
  391. package/lib/esm/icons/RobotCheckSvg.d.ts +0 -5
  392. package/lib/esm/icons/RobotCheckSvg.d.ts.map +0 -1
  393. package/lib/esm/icons/RobotSvg.d.ts +0 -5
  394. package/lib/esm/icons/RobotSvg.d.ts.map +0 -1
  395. package/lib/esm/icons/RobotXSvg.d.ts +0 -5
  396. package/lib/esm/icons/RobotXSvg.d.ts.map +0 -1
  397. package/lib/esm/icons/RocketOffSvg.d.ts +0 -5
  398. package/lib/esm/icons/RocketOffSvg.d.ts.map +0 -1
  399. package/lib/esm/icons/RocketSvg.d.ts +0 -5
  400. package/lib/esm/icons/RocketSvg.d.ts.map +0 -1
  401. package/lib/esm/icons/SendCheckSvg.d.ts +0 -5
  402. package/lib/esm/icons/SendCheckSvg.d.ts.map +0 -1
  403. package/lib/esm/icons/SendMessageSvg.d.ts +0 -5
  404. package/lib/esm/icons/SendMessageSvg.d.ts.map +0 -1
  405. package/lib/esm/icons/SendXSvg.d.ts +0 -5
  406. package/lib/esm/icons/SendXSvg.d.ts.map +0 -1
  407. package/lib/esm/icons/SettingsCheckSvg.d.ts +0 -5
  408. package/lib/esm/icons/SettingsCheckSvg.d.ts.map +0 -1
  409. package/lib/esm/icons/SettingsXSvg.d.ts +0 -5
  410. package/lib/esm/icons/SettingsXSvg.d.ts.map +0 -1
  411. package/lib/esm/icons/ShieldLockSvg.d.ts +0 -5
  412. package/lib/esm/icons/ShieldLockSvg.d.ts.map +0 -1
  413. package/lib/esm/icons/ShieldOffSvg.d.ts +0 -5
  414. package/lib/esm/icons/ShieldOffSvg.d.ts.map +0 -1
  415. package/lib/esm/icons/SidebarHomeSvg.d.ts +0 -5
  416. package/lib/esm/icons/SidebarHomeSvg.d.ts.map +0 -1
  417. package/lib/esm/icons/SidebarInitiativesSvg.d.ts +0 -5
  418. package/lib/esm/icons/SidebarInitiativesSvg.d.ts.map +0 -1
  419. package/lib/esm/icons/SidebarPlusSvg.d.ts +0 -5
  420. package/lib/esm/icons/SidebarPlusSvg.d.ts.map +0 -1
  421. package/lib/esm/icons/SidebarSearchSvg.d.ts +0 -5
  422. package/lib/esm/icons/SidebarSearchSvg.d.ts.map +0 -1
  423. package/lib/esm/icons/SidebarSettingsSvg.d.ts +0 -5
  424. package/lib/esm/icons/SidebarSettingsSvg.d.ts.map +0 -1
  425. package/lib/esm/icons/SidebarTasksSvg.d.ts +0 -5
  426. package/lib/esm/icons/SidebarTasksSvg.d.ts.map +0 -1
  427. package/lib/esm/icons/SidebarTeamSvg.d.ts +0 -5
  428. package/lib/esm/icons/SidebarTeamSvg.d.ts.map +0 -1
  429. package/lib/esm/icons/TaskAttachmentSvg.d.ts +0 -5
  430. package/lib/esm/icons/TaskAttachmentSvg.d.ts.map +0 -1
  431. package/lib/esm/icons/TaskCalendarSvg.d.ts +0 -5
  432. package/lib/esm/icons/TaskCalendarSvg.d.ts.map +0 -1
  433. package/lib/esm/icons/TaskCommentBubbleSvg.d.ts +0 -5
  434. package/lib/esm/icons/TaskCommentBubbleSvg.d.ts.map +0 -1
  435. package/lib/esm/icons/TaskDeleteSvg.d.ts +0 -5
  436. package/lib/esm/icons/TaskDeleteSvg.d.ts.map +0 -1
  437. package/lib/esm/icons/TaskDependencyBlockedSvg.d.ts +0 -5
  438. package/lib/esm/icons/TaskDependencyBlockedSvg.d.ts.map +0 -1
  439. package/lib/esm/icons/TaskDependencyReadySvg.d.ts +0 -5
  440. package/lib/esm/icons/TaskDependencyReadySvg.d.ts.map +0 -1
  441. package/lib/esm/icons/TaskMenuDotsSvg.d.ts +0 -5
  442. package/lib/esm/icons/TaskMenuDotsSvg.d.ts.map +0 -1
  443. package/lib/esm/icons/TaskTagSvg.d.ts +0 -5
  444. package/lib/esm/icons/TaskTagSvg.d.ts.map +0 -1
  445. package/lib/esm/icons/TeamMemberEmailSvg.d.ts +0 -5
  446. package/lib/esm/icons/TeamMemberEmailSvg.d.ts.map +0 -1
  447. package/lib/esm/icons/TeamMemberLocationSvg.d.ts +0 -5
  448. package/lib/esm/icons/TeamMemberLocationSvg.d.ts.map +0 -1
  449. package/lib/esm/icons/WrenchSvg.d.ts +0 -5
  450. package/lib/esm/icons/WrenchSvg.d.ts.map +0 -1
  451. package/lib/esm/icons/XBadgeSvg.d.ts +0 -5
  452. package/lib/esm/icons/XBadgeSvg.d.ts.map +0 -1
  453. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.d.ts +0 -4
  454. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.d.ts.map +0 -1
  455. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.d.ts +0 -4
  456. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.d.ts.map +0 -1
  457. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.d.ts +0 -4
  458. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.d.ts.map +0 -1
  459. package/lib/esm/icons/markdown/MarkdownCopySvg.d.ts +0 -4
  460. package/lib/esm/icons/markdown/MarkdownCopySvg.d.ts.map +0 -1
  461. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.d.ts +0 -4
  462. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.d.ts.map +0 -1
  463. package/lib/esm/index.d.ts +0 -16
  464. package/lib/esm/index.d.ts.map +0 -1
  465. package/lib/esm/svg/ChevronDownIcon.d.ts +0 -8
  466. package/lib/esm/svg/ChevronDownIcon.d.ts.map +0 -1
  467. package/lib/esm/svg/ChevronRightIcon.d.ts +0 -8
  468. package/lib/esm/svg/ChevronRightIcon.d.ts.map +0 -1
  469. package/lib/esm/svg/GlobeIcon.d.ts +0 -8
  470. package/lib/esm/svg/GlobeIcon.d.ts.map +0 -1
  471. package/lib/esm/theme/ThemeProvider.d.ts +0 -15
  472. package/lib/esm/theme/ThemeProvider.d.ts.map +0 -1
  473. package/lib/esm/theme/VisuallyHidden.d.ts +0 -5
  474. package/lib/esm/theme/VisuallyHidden.d.ts.map +0 -1
  475. package/lib/esm/theme/accessibility.css.d.ts +0 -4
  476. package/lib/esm/theme/accessibility.css.d.ts.map +0 -1
  477. package/lib/esm/theme/colors.d.ts +0 -98
  478. package/lib/esm/theme/colors.d.ts.map +0 -1
  479. package/lib/esm/theme/common.d.ts +0 -121
  480. package/lib/esm/theme/common.d.ts.map +0 -1
  481. package/lib/esm/theme/containerQueries.d.ts +0 -12
  482. package/lib/esm/theme/containerQueries.d.ts.map +0 -1
  483. package/lib/esm/theme/global.css.d.ts +0 -2
  484. package/lib/esm/theme/global.css.d.ts.map +0 -1
  485. package/lib/esm/theme/index.d.ts +0 -9
  486. package/lib/esm/theme/index.d.ts.map +0 -1
  487. package/lib/esm/theme/sprinkles.css.d.ts +0 -1300
  488. package/lib/esm/theme/sprinkles.css.d.ts.map +0 -1
  489. package/lib/esm/theme/theme.css.d.ts +0 -2
  490. package/lib/esm/theme/theme.css.d.ts.map +0 -1
  491. package/lib/esm/theme/themeContract.d.ts +0 -2311
  492. package/lib/esm/theme/themeContract.d.ts.map +0 -1
  493. package/lib/esm/theme/tools.d.ts +0 -3
  494. package/lib/esm/theme/tools.d.ts.map +0 -1
  495. package/lib/tsconfig.esm.tsbuildinfo +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sources":["../../../../../src/atomic/molecules/card/Card.tsx"],"sourcesContent":["import React, { type JSX, useMemo } from 'react';\n\nimport * as styles from './Card.css.js';\nimport { cx } from '../../../theme/tools.js';\n\ntype Props = {\n headerActions?: React.ReactNode;\n title?: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n contentClassName?: string;\n};\n\nexport const Card = (props: Props): JSX.Element => {\n const { title, children, headerActions, className, contentClassName } = props;\n\n const header = useMemo(() => {\n if (title == null) {\n return null;\n }\n\n return (\n <div className={styles.header}>\n <span className={styles.title}>{title}</span>\n {headerActions}\n </div>\n );\n }, [headerActions, title]);\n\n const rootClass = cx(styles.card, className);\n const contentClass = cx(styles.content, contentClassName);\n\n return (\n <div className={rootClass}>\n {header}\n <div className={contentClass}>{children}</div>\n </div>\n );\n};\n"],"names":["Card","props","title","children","headerActions","className","contentClassName","header","useMemo","jsxs","styles.header","jsx","styles.title","rootClass","cx","styles.card","contentClass","styles.content"],"mappings":";;;;AAaO,MAAMA,IAAO,CAACC,MAA8B;AACjD,QAAM,EAAA,OAAEC,GAAO,UAAAC,GAAU,eAAAC,GAAe,WAAAC,GAAW,kBAAAC,MAAqBL,GAElEM,IAASC,EAAQ,MACjBN,KAAS,OACJ,OAIP,gBAAAO,EAAC,OAAA,EAAI,WAAWC,GACd,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAA,EAAK,WAAWC,GAAe,UAAAV,GAAM;AAAA,IACrCE;AAAA,EAAA,GACH,GAED,CAACA,GAAeF,CAAK,CAAC,GAEnBW,IAAYC,EAAGC,GAAaV,CAAS,GACrCW,IAAeF,EAAGG,GAAgBX,CAAgB;AAExD,SACE,gBAAAG,EAAC,OAAA,EAAI,WAAWI,GACb,UAAA;AAAA,IAAAN;AAAAA,IACD,gBAAAI,EAAC,OAAA,EAAI,WAAWK,GAAe,UAAAb,EAAA,CAAS;AAAA,EAAA,GAC1C;AAEJ;"}
@@ -1,32 +1,34 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Link, useLocation } from '@plumile/router';
3
- import * as styles from './tabs.css.js';
4
- const RouterLink = Link;
5
- export const Tabs = (props) => {
6
- const { items, ariaLabel } = props;
7
- const { pathname } = useLocation();
8
- return (_jsx("div", { role: "tablist", "aria-label": ariaLabel, className: styles.container, children: items.map((item) => {
9
- const { disabled, id, label, to } = item;
10
- const isActive = pathname === to;
11
- let ariaDisabled;
12
- if (disabled) {
13
- ariaDisabled = true;
14
- }
15
- let tabState = 'default';
16
- let tabIndex;
17
- if (disabled) {
18
- tabState = 'disabled';
19
- tabIndex = -1;
20
- }
21
- else if (isActive) {
22
- tabState = 'active';
23
- }
24
- const handleLinkClick = (event) => {
25
- if (disabled) {
26
- event.preventDefault();
27
- }
28
- };
29
- return (_jsx(RouterLink, { exact: true, "aria-disabled": ariaDisabled, className: styles.tabRecipe({ state: tabState }), role: "tab", to: to, tabIndex: tabIndex, onClick: handleLinkClick, children: label }, id));
30
- }) }));
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
+ }) });
31
30
  };
32
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFicy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hdG9taWMvbW9sZWN1bGVzL3RhYnMvVGFicy50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQU9BLE9BQU8sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFcEQsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUM7QUFPeEMsTUFBTSxVQUFVLEdBQUcsSUFBMEQsQ0FBQztBQW1COUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsS0FBZ0IsRUFBZSxFQUFFO0lBQ3BELE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ25DLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxXQUFXLEVBQUUsQ0FBQztJQUVuQyxPQUFPLENBQ0wsY0FBSyxJQUFJLEVBQUMsU0FBUyxnQkFBYSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLFlBQ25FLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNsQixNQUFNLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3pDLE1BQU0sUUFBUSxHQUFHLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFFakMsSUFBSSxZQUE4QixDQUFDO1lBQ25DLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN0QixDQUFDO1lBS0QsSUFBSSxRQUFRLEdBQWEsU0FBUyxDQUFDO1lBQ25DLElBQUksUUFBNEIsQ0FBQztZQUNqQyxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLFFBQVEsR0FBRyxVQUFVLENBQUM7Z0JBQ3RCLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoQixDQUFDO2lCQUFNLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsR0FBRyxRQUFRLENBQUM7WUFDdEIsQ0FBQztZQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsS0FBb0MsRUFBRSxFQUFFO2dCQUMvRCxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsQ0FBQztZQUNILENBQUMsQ0FBQztZQUVGLE9BQU8sQ0FDTCxLQUFDLFVBQVUsSUFFVCxLQUFLLHlCQUNVLFlBQVksRUFDM0IsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFDaEQsSUFBSSxFQUFDLEtBQUssRUFDVixFQUFFLEVBQUUsRUFBRSxFQUNOLFFBQVEsRUFBRSxRQUFRLEVBQ2xCLE9BQU8sRUFBRSxlQUFlLFlBRXZCLEtBQUssSUFURCxFQUFFLENBVUksQ0FDZCxDQUFDO1FBQ0osQ0FBQyxDQUFDLEdBQ0UsQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgdHlwZSBBbmNob3JIVE1MQXR0cmlidXRlcyxcbiAgdHlwZSBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWYsXG4gIHR5cGUgSlNYLFxuICB0eXBlIE1vdXNlRXZlbnQsXG4gIHR5cGUgUmVhY3ROb2RlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBMaW5rLCB1c2VMb2NhdGlvbiB9IGZyb20gJ0BwbHVtaWxlL3JvdXRlcic7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tICcuL3RhYnMuY3NzLmpzJztcblxuZXhwb3J0IHR5cGUgVGFic1NlbGVjdEV2ZW50ID0gTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudCB8IEhUTUxBbmNob3JFbGVtZW50PjtcblxudHlwZSBMaW5rQ29tcG9uZW50UHJvcHMgPSBDb21wb25lbnRQcm9wc1dpdGhvdXRSZWY8dHlwZW9mIExpbms+O1xudHlwZSBSb3V0ZXJMaW5rUHJvcHMgPSBMaW5rQ29tcG9uZW50UHJvcHMgJlxuICBBbmNob3JIVE1MQXR0cmlidXRlczxIVE1MQW5jaG9yRWxlbWVudD47XG5jb25zdCBSb3V0ZXJMaW5rID0gTGluayBhcyB1bmtub3duIGFzIChwcm9wczogUm91dGVyTGlua1Byb3BzKSA9PiBKU1guRWxlbWVudDtcblxudHlwZSBCYXNlVGFiSXRlbSA9IHtcbiAgaWQ6IHN0cmluZztcbiAgbGFiZWw6IFJlYWN0Tm9kZTtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xufTtcblxudHlwZSBOYXZpZ2F0aW9uVGFiSXRlbSA9IEJhc2VUYWJJdGVtICYge1xuICB0bzogTm9uTnVsbGFibGU8TGlua0NvbXBvbmVudFByb3BzWyd0byddPjtcbn07XG5cbmV4cG9ydCB0eXBlIFRhYkl0ZW0gPSBOYXZpZ2F0aW9uVGFiSXRlbTtcblxuZXhwb3J0IHR5cGUgVGFic1Byb3BzID0ge1xuICBpdGVtczogVGFiSXRlbVtdO1xuICBhcmlhTGFiZWw/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgY29uc3QgVGFicyA9IChwcm9wczogVGFic1Byb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGl0ZW1zLCBhcmlhTGFiZWwgfSA9IHByb3BzO1xuICBjb25zdCB7IHBhdGhuYW1lIH0gPSB1c2VMb2NhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiByb2xlPVwidGFibGlzdFwiIGFyaWEtbGFiZWw9e2FyaWFMYWJlbH0gY2xhc3NOYW1lPXtzdHlsZXMuY29udGFpbmVyfT5cbiAgICAgIHtpdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3QgeyBkaXNhYmxlZCwgaWQsIGxhYmVsLCB0byB9ID0gaXRlbTtcbiAgICAgICAgY29uc3QgaXNBY3RpdmUgPSBwYXRobmFtZSA9PT0gdG87XG5cbiAgICAgICAgbGV0IGFyaWFEaXNhYmxlZDogdHJ1ZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgYXJpYURpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHR5cGUgVGFiU3RhdGUgPSBOb25OdWxsYWJsZTxcbiAgICAgICAgICBQYXJhbWV0ZXJzPHR5cGVvZiBzdHlsZXMudGFiUmVjaXBlPlswXVxuICAgICAgICA+WydzdGF0ZSddO1xuICAgICAgICBsZXQgdGFiU3RhdGU6IFRhYlN0YXRlID0gJ2RlZmF1bHQnO1xuICAgICAgICBsZXQgdGFiSW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICAgICAgdGFiU3RhdGUgPSAnZGlzYWJsZWQnO1xuICAgICAgICAgIHRhYkluZGV4ID0gLTE7XG4gICAgICAgIH0gZWxzZSBpZiAoaXNBY3RpdmUpIHtcbiAgICAgICAgICB0YWJTdGF0ZSA9ICdhY3RpdmUnO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFuZGxlTGlua0NsaWNrID0gKGV2ZW50OiBNb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PikgPT4ge1xuICAgICAgICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8Um91dGVyTGlua1xuICAgICAgICAgICAga2V5PXtpZH1cbiAgICAgICAgICAgIGV4YWN0XG4gICAgICAgICAgICBhcmlhLWRpc2FibGVkPXthcmlhRGlzYWJsZWR9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50YWJSZWNpcGUoeyBzdGF0ZTogdGFiU3RhdGUgfSl9XG4gICAgICAgICAgICByb2xlPVwidGFiXCJcbiAgICAgICAgICAgIHRvPXt0b31cbiAgICAgICAgICAgIHRhYkluZGV4PXt0YWJJbmRleH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUxpbmtDbGlja31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgPC9Sb3V0ZXJMaW5rPlxuICAgICAgICApO1xuICAgICAgfSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl19
31
+ export {
32
+ R as Tabs
33
+ };
34
+ //# sourceMappingURL=Tabs.js.map
@@ -0,0 +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,73 +1,9 @@
1
- import { style } from '@vanilla-extract/css';
2
- import { recipe } from '@vanilla-extract/recipes';
3
- import { sprinkles } from '../../../theme/sprinkles.css.js';
4
- import { vars } from '../../../theme/themeContract.js';
5
- export const container = sprinkles({
6
- display: 'flex',
7
- flexWrap: 'wrap',
8
- alignItems: 'center',
9
- gap: 2,
10
- justifyContent: 'center',
11
- });
12
- const tabBase = style([
13
- sprinkles({
14
- display: 'inline-flex',
15
- alignItems: 'center',
16
- gap: 1,
17
- borderTopLeftRadius: 'md',
18
- borderTopRightRadius: 'md',
19
- paddingX: 4,
20
- paddingY: 2,
21
- fontSize: 'sm',
22
- color: 'textSecondary',
23
- transitionProperty: 'colors',
24
- transitionDuration: 150,
25
- transitionTimingFunction: 'ease',
26
- borderBottomWidth: 2,
27
- borderBottomColor: 'transparent',
28
- fontWeight: 'medium',
29
- textDecoration: 'none',
30
- outline: 'none',
31
- position: 'relative',
32
- }),
33
- {
34
- marginBottom: '-1px',
35
- selectors: {
36
- '&:focus-visible': {
37
- outline: `2px solid ${vars.colors.primary}`,
38
- outlineOffset: '2px',
39
- color: vars.colors.primary,
40
- borderBottomColor: vars.colors.primary,
41
- },
42
- },
43
- },
44
- ]);
45
- export const tabRecipe = recipe({
46
- base: tabBase,
47
- variants: {
48
- state: {
49
- default: style({
50
- selectors: {
51
- '&:hover': {
52
- color: vars.colors.primary,
53
- borderBottomColor: vars.colors.primaryLight,
54
- },
55
- },
56
- }),
57
- active: sprinkles({
58
- color: 'primary',
59
- borderBottomColor: 'primary',
60
- fontWeight: 'semibold',
61
- }),
62
- disabled: sprinkles({
63
- color: 'textMuted',
64
- pointerEvents: 'none',
65
- cursor: 'not-allowed',
66
- }),
67
- },
68
- },
69
- defaultVariants: {
70
- state: 'default',
71
- },
72
- });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXRvbWljL21vbGVjdWxlcy90YWJzL3RhYnMuY3NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsTUFBTSxFQUF1QixNQUFNLDBCQUEwQixDQUFDO0FBRXZFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFdkQsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQztJQUNqQyxPQUFPLEVBQUUsTUFBTTtJQUNmLFFBQVEsRUFBRSxNQUFNO0lBQ2hCLFVBQVUsRUFBRSxRQUFRO0lBQ3BCLEdBQUcsRUFBRSxDQUFDO0lBQ04sY0FBYyxFQUFFLFFBQVE7Q0FDekIsQ0FBQyxDQUFDO0FBRUgsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFNBQVMsQ0FBQztRQUNSLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLFVBQVUsRUFBRSxRQUFRO1FBQ3BCLEdBQUcsRUFBRSxDQUFDO1FBQ04sbUJBQW1CLEVBQUUsSUFBSTtRQUN6QixvQkFBb0IsRUFBRSxJQUFJO1FBQzFCLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxFQUFFLENBQUM7UUFDWCxRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRSxlQUFlO1FBQ3RCLGtCQUFrQixFQUFFLFFBQVE7UUFDNUIsa0JBQWtCLEVBQUUsR0FBRztRQUN2Qix3QkFBd0IsRUFBRSxNQUFNO1FBQ2hDLGlCQUFpQixFQUFFLENBQUM7UUFDcEIsaUJBQWlCLEVBQUUsYUFBYTtRQUNoQyxVQUFVLEVBQUUsUUFBUTtRQUNwQixjQUFjLEVBQUUsTUFBTTtRQUN0QixPQUFPLEVBQUUsTUFBTTtRQUNmLFFBQVEsRUFBRSxVQUFVO0tBQ3JCLENBQUM7SUFDRjtRQUNFLFlBQVksRUFBRSxNQUFNO1FBQ3BCLFNBQVMsRUFBRTtZQUNULGlCQUFpQixFQUFFO2dCQUNqQixPQUFPLEVBQUUsYUFBYSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDM0MsYUFBYSxFQUFFLEtBQUs7Z0JBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0JBQzFCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTzthQUN2QztTQUNGO0tBQ0Y7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDO0lBQzlCLElBQUksRUFBRSxPQUFPO0lBQ2IsUUFBUSxFQUFFO1FBQ1IsS0FBSyxFQUFFO1lBQ0wsT0FBTyxFQUFFLEtBQUssQ0FBQztnQkFDYixTQUFTLEVBQUU7b0JBQ1QsU0FBUyxFQUFFO3dCQUNULEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87d0JBQzFCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWTtxQkFDNUM7aUJBQ0Y7YUFDRixDQUFDO1lBQ0YsTUFBTSxFQUFFLFNBQVMsQ0FBQztnQkFDaEIsS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLGlCQUFpQixFQUFFLFNBQVM7Z0JBQzVCLFVBQVUsRUFBRSxVQUFVO2FBQ3ZCLENBQUM7WUFDRixRQUFRLEVBQUUsU0FBUyxDQUFDO2dCQUNsQixLQUFLLEVBQUUsV0FBVztnQkFDbEIsYUFBYSxFQUFFLE1BQU07Z0JBQ3JCLE1BQU0sRUFBRSxhQUFhO2FBQ3RCLENBQUM7U0FDSDtLQUNGO0lBQ0QsZUFBZSxFQUFFO1FBQ2YsS0FBSyxFQUFFLFNBQVM7S0FDakI7Q0FDRixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzdHlsZSB9IGZyb20gJ0B2YW5pbGxhLWV4dHJhY3QvY3NzJztcbmltcG9ydCB7IHJlY2lwZSwgdHlwZSBSZWNpcGVWYXJpYW50cyB9IGZyb20gJ0B2YW5pbGxhLWV4dHJhY3QvcmVjaXBlcyc7XG5cbmltcG9ydCB7IHNwcmlua2xlcyB9IGZyb20gJy4uLy4uLy4uL3RoZW1lL3Nwcmlua2xlcy5jc3MuanMnO1xuaW1wb3J0IHsgdmFycyB9IGZyb20gJy4uLy4uLy4uL3RoZW1lL3RoZW1lQ29udHJhY3QuanMnO1xuXG5leHBvcnQgY29uc3QgY29udGFpbmVyID0gc3ByaW5rbGVzKHtcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBmbGV4V3JhcDogJ3dyYXAnLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgZ2FwOiAyLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG59KTtcblxuY29uc3QgdGFiQmFzZSA9IHN0eWxlKFtcbiAgc3ByaW5rbGVzKHtcbiAgICBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogMSxcbiAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAnbWQnLFxuICAgIGJvcmRlclRvcFJpZ2h0UmFkaXVzOiAnbWQnLFxuICAgIHBhZGRpbmdYOiA0LFxuICAgIHBhZGRpbmdZOiAyLFxuICAgIGZvbnRTaXplOiAnc20nLFxuICAgIGNvbG9yOiAndGV4dFNlY29uZGFyeScsXG4gICAgdHJhbnNpdGlvblByb3BlcnR5OiAnY29sb3JzJyxcbiAgICB0cmFuc2l0aW9uRHVyYXRpb246IDE1MCxcbiAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246ICdlYXNlJyxcbiAgICBib3JkZXJCb3R0b21XaWR0aDogMixcbiAgICBib3JkZXJCb3R0b21Db2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICBmb250V2VpZ2h0OiAnbWVkaXVtJyxcbiAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgIG91dGxpbmU6ICdub25lJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgfSksXG4gIHtcbiAgICBtYXJnaW5Cb3R0b206ICctMXB4JyxcbiAgICBzZWxlY3RvcnM6IHtcbiAgICAgICcmOmZvY3VzLXZpc2libGUnOiB7XG4gICAgICAgIG91dGxpbmU6IGAycHggc29saWQgJHt2YXJzLmNvbG9ycy5wcmltYXJ5fWAsXG4gICAgICAgIG91dGxpbmVPZmZzZXQ6ICcycHgnLFxuICAgICAgICBjb2xvcjogdmFycy5jb2xvcnMucHJpbWFyeSxcbiAgICAgICAgYm9yZGVyQm90dG9tQ29sb3I6IHZhcnMuY29sb3JzLnByaW1hcnksXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG5dKTtcblxuZXhwb3J0IGNvbnN0IHRhYlJlY2lwZSA9IHJlY2lwZSh7XG4gIGJhc2U6IHRhYkJhc2UsXG4gIHZhcmlhbnRzOiB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGRlZmF1bHQ6IHN0eWxlKHtcbiAgICAgICAgc2VsZWN0b3JzOiB7XG4gICAgICAgICAgJyY6aG92ZXInOiB7XG4gICAgICAgICAgICBjb2xvcjogdmFycy5jb2xvcnMucHJpbWFyeSxcbiAgICAgICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiB2YXJzLmNvbG9ycy5wcmltYXJ5TGlnaHQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgICAgYWN0aXZlOiBzcHJpbmtsZXMoe1xuICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBib3JkZXJCb3R0b21Db2xvcjogJ3ByaW1hcnknLFxuICAgICAgICBmb250V2VpZ2h0OiAnc2VtaWJvbGQnLFxuICAgICAgfSksXG4gICAgICBkaXNhYmxlZDogc3ByaW5rbGVzKHtcbiAgICAgICAgY29sb3I6ICd0ZXh0TXV0ZWQnLFxuICAgICAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgICAgIGN1cnNvcjogJ25vdC1hbGxvd2VkJyxcbiAgICAgIH0pLFxuICAgIH0sXG4gIH0sXG4gIGRlZmF1bHRWYXJpYW50czoge1xuICAgIHN0YXRlOiAnZGVmYXVsdCcsXG4gIH0sXG59KTtcblxuZXhwb3J0IHR5cGUgVGFiUmVjaXBlVmFyaWFudHMgPSBSZWNpcGVWYXJpYW50czx0eXBlb2YgdGFiUmVjaXBlPjtcbiJdfQ==
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1 @@
1
+ ._11tf63d2{margin-bottom:-1px}._11tf63d2:focus-visible{outline:2px solid var(--kronex-colors-primary);outline-offset:2px;color:var(--kronex-colors-primary);border-bottom-color:var(--kronex-colors-primary)}._11tf63d3:hover{color:var(--kronex-colors-primary);border-bottom-color:var(--kronex-colors-primaryLight)}
@@ -1,170 +1,177 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { ResponsiveLine } from '@nivo/line';
3
- import * as styles from './billingUsageLineChart.css.js';
4
- import { vars } from '../../theme/themeContract.js';
5
- const MAX_X_TICKS = 6;
6
- const compactNumberFormatter = new Intl.NumberFormat('en-US', {
7
- notation: 'compact',
8
- maximumFractionDigits: 1,
1
+ import { jsx as s, jsxs as p } from "react/jsx-runtime";
2
+ import { ResponsiveLine as T } from "@nivo/line";
3
+ import { chartContainer as v, tooltip as L, tooltipDate as N, tooltipRow as w, tooltipRowLabel as B, tooltipSwatch as D } from "./billingUsageLineChart.css.js";
4
+ import { vars as i } from "../../theme/themeContract.js";
5
+ const h = 6, O = new Intl.NumberFormat("en-US", {
6
+ notation: "compact",
7
+ maximumFractionDigits: 1
9
8
  });
10
- function getVisibleDayTicks(series) {
11
- const firstSerie = series[0];
12
- if (firstSerie == null || firstSerie.data.length <= MAX_X_TICKS) {
13
- if (firstSerie == null) {
14
- return [];
15
- }
16
- return firstSerie.data.map((point) => {
17
- return point.x;
18
- });
19
- }
20
- const step = Math.ceil(firstSerie.data.length / MAX_X_TICKS);
21
- const visibleTicks = firstSerie.data
22
- .filter((_, index) => {
23
- return index % step === 0;
24
- })
25
- .map((point) => {
26
- return point.x;
27
- });
28
- const lastPoint = firstSerie.data.at(-1);
29
- if (lastPoint != null && visibleTicks.at(-1) !== lastPoint.x) {
30
- visibleTicks.push(lastPoint.x);
31
- }
32
- return visibleTicks;
9
+ function z(l) {
10
+ const r = l[0];
11
+ if (r == null || r.data.length <= h)
12
+ return r == null ? [] : r.data.map((n) => n.x);
13
+ const d = Math.ceil(r.data.length / h), a = r.data.filter((n, m) => m % d === 0).map((n) => n.x), o = r.data.at(-1);
14
+ return o != null && a.at(-1) !== o.x && a.push(o.x), a;
33
15
  }
34
- function formatDayTick(dayKey) {
35
- const parsed = new Date(`${dayKey}T00:00:00Z`);
36
- return parsed.toLocaleDateString(undefined, {
37
- month: 'short',
38
- day: '2-digit',
39
- });
16
+ function y(l) {
17
+ return (/* @__PURE__ */ new Date(`${l}T00:00:00Z`)).toLocaleDateString(void 0, {
18
+ month: "short",
19
+ day: "2-digit"
20
+ });
40
21
  }
41
- export const BillingUsageLineChart = (props) => {
42
- const { ariaLabel, categoryColorById, categoryLabel, categoryOrder, formatValue, series, } = props;
43
- const visibleTicks = getVisibleDayTicks(series);
44
- const categoryOrderString = categoryOrder;
45
- const isCategory = (value) => {
46
- return categoryOrderString.includes(value);
47
- };
48
- const legends = [
49
- {
50
- anchor: 'bottom',
51
- direction: 'row',
52
- translateY: 56,
53
- itemWidth: 90,
54
- itemHeight: 16,
55
- itemsSpacing: 8,
56
- symbolSize: 10,
57
- symbolShape: 'circle',
58
- itemTextColor: vars.colors.textSecondary,
59
- data: categoryOrder.map((category) => {
60
- return {
61
- id: category,
62
- label: categoryLabel(category),
63
- color: categoryColorById[category],
64
- };
65
- }),
22
+ const P = (l) => {
23
+ const {
24
+ ariaLabel: r,
25
+ categoryColorById: d,
26
+ categoryLabel: a,
27
+ categoryOrder: o,
28
+ formatValue: n,
29
+ series: m
30
+ } = l, x = z(m), b = o, f = (t) => b.includes(t), S = [
31
+ {
32
+ anchor: "bottom",
33
+ direction: "row",
34
+ translateY: 56,
35
+ itemWidth: 90,
36
+ itemHeight: 16,
37
+ itemsSpacing: 8,
38
+ symbolSize: 10,
39
+ symbolShape: "circle",
40
+ itemTextColor: i.colors.textSecondary,
41
+ data: o.map((t) => ({
42
+ id: t,
43
+ label: a(t),
44
+ color: d[t]
45
+ }))
46
+ }
47
+ ];
48
+ return /* @__PURE__ */ s("div", { className: v, children: /* @__PURE__ */ s(
49
+ T,
50
+ {
51
+ data: m,
52
+ margin: { top: 14, right: 16, bottom: 74, left: 52 },
53
+ colors: (t) => typeof t.id != "string" || !f(t.id) ? i.colors.primary : d[t.id],
54
+ xScale: { type: "point" },
55
+ yScale: { type: "linear", min: 0, max: "auto" },
56
+ curve: "monotoneX",
57
+ lineWidth: 2.5,
58
+ pointSize: 4,
59
+ pointBorderWidth: 2,
60
+ pointBorderColor: { from: "seriesColor", modifiers: [["darker", 0.2]] },
61
+ enableArea: !0,
62
+ areaOpacity: 0.1,
63
+ enableGridX: !1,
64
+ enableGridY: !0,
65
+ axisTop: null,
66
+ axisRight: null,
67
+ axisBottom: {
68
+ tickValues: x,
69
+ format: (t) => y(String(t)),
70
+ tickSize: 0,
71
+ tickPadding: 10
72
+ },
73
+ axisLeft: {
74
+ tickSize: 0,
75
+ tickPadding: 8,
76
+ tickValues: 4,
77
+ format: (t) => O.format(Number(t))
78
+ },
79
+ enableSlices: "x",
80
+ sliceTooltip: ({
81
+ slice: t
82
+ }) => {
83
+ const g = String(t.id), k = o[0] ?? null, I = [...t.points].map((e) => {
84
+ let u = 0;
85
+ typeof e.data.y == "number" && (u = e.data.y);
86
+ let c = k;
87
+ return typeof e.seriesId == "string" && f(e.seriesId) && (c = e.seriesId), c == null ? null : {
88
+ seriesId: c,
89
+ data: { y: u },
90
+ color: e.seriesColor
91
+ };
92
+ }).filter((e) => e != null).sort((e, u) => {
93
+ const c = o.indexOf(e.seriesId), C = o.indexOf(u.seriesId);
94
+ return c - C;
95
+ });
96
+ return /* @__PURE__ */ p("div", { className: L, children: [
97
+ /* @__PURE__ */ s("p", { className: N, children: y(g) }),
98
+ I.map((e) => /* @__PURE__ */ p(
99
+ "div",
100
+ {
101
+ className: w,
102
+ children: [
103
+ /* @__PURE__ */ p("span", { className: B, children: [
104
+ /* @__PURE__ */ s(
105
+ "span",
106
+ {
107
+ className: D,
108
+ style: { backgroundColor: e.color },
109
+ "aria-hidden": !0
110
+ }
111
+ ),
112
+ /* @__PURE__ */ s("span", { children: a(e.seriesId) })
113
+ ] }),
114
+ /* @__PURE__ */ s("strong", { children: n(e.data.y) })
115
+ ]
116
+ },
117
+ `${g}-${e.seriesId}`
118
+ ))
119
+ ] });
120
+ },
121
+ legends: S,
122
+ useMesh: !0,
123
+ ariaLabel: r,
124
+ theme: {
125
+ text: {
126
+ fill: i.colors.textSecondary,
127
+ fontSize: 12
66
128
  },
67
- ];
68
- const colorById = (serie) => {
69
- if (typeof serie.id !== 'string' || !isCategory(serie.id)) {
70
- return vars.colors.primary;
71
- }
72
- return categoryColorById[serie.id];
73
- };
74
- const sliceTooltip = ({ slice, }) => {
75
- const dayKey = String(slice.id);
76
- const fallbackCategory = categoryOrder[0] ?? null;
77
- const points = [...slice.points]
78
- .map((point) => {
79
- let credits = 0;
80
- if (typeof point.data.y === 'number') {
81
- credits = point.data.y;
129
+ axis: {
130
+ domain: {
131
+ line: {
132
+ stroke: i.colors.borderLight
82
133
  }
83
- let seriesId = fallbackCategory;
84
- if (typeof point.seriesId === 'string' && isCategory(point.seriesId)) {
85
- seriesId = point.seriesId;
134
+ },
135
+ ticks: {
136
+ line: {
137
+ stroke: "transparent"
86
138
  }
87
- if (seriesId == null) {
88
- return null;
139
+ },
140
+ legend: {
141
+ text: {
142
+ fill: i.colors.textSecondary
89
143
  }
90
- return {
91
- seriesId,
92
- data: { y: credits },
93
- color: point.seriesColor,
94
- };
95
- })
96
- .filter((point) => {
97
- return point != null;
98
- })
99
- .sort((left, right) => {
100
- const leftIndex = categoryOrder.indexOf(left.seriesId);
101
- const rightIndex = categoryOrder.indexOf(right.seriesId);
102
- return leftIndex - rightIndex;
103
- });
104
- return (_jsxs("div", { className: styles.tooltip, children: [_jsx("p", { className: styles.tooltipDate, children: formatDayTick(dayKey) }), points.map((point) => {
105
- return (_jsxs("div", { className: styles.tooltipRow, children: [_jsxs("span", { className: styles.tooltipRowLabel, children: [_jsx("span", { className: styles.tooltipSwatch, style: { backgroundColor: point.color }, "aria-hidden": true }), _jsx("span", { children: categoryLabel(point.seriesId) })] }), _jsx("strong", { children: formatValue(point.data.y) })] }, `${dayKey}-${point.seriesId}`));
106
- })] }));
107
- };
108
- return (_jsx("div", { className: styles.chartContainer, children: _jsx(ResponsiveLine, { data: series, margin: { top: 14, right: 16, bottom: 74, left: 52 }, colors: colorById, xScale: { type: 'point' }, yScale: { type: 'linear', min: 0, max: 'auto' }, curve: "monotoneX", lineWidth: 2.5, pointSize: 4, pointBorderWidth: 2, pointBorderColor: { from: 'seriesColor', modifiers: [['darker', 0.2]] }, enableArea: true, areaOpacity: 0.1, enableGridX: false, enableGridY: true, axisTop: null, axisRight: null, axisBottom: {
109
- tickValues: visibleTicks,
110
- format: (value) => {
111
- return formatDayTick(String(value));
112
- },
113
- tickSize: 0,
114
- tickPadding: 10,
115
- }, axisLeft: {
116
- tickSize: 0,
117
- tickPadding: 8,
118
- tickValues: 4,
119
- format: (value) => {
120
- return compactNumberFormatter.format(Number(value));
121
- },
122
- }, enableSlices: "x", sliceTooltip: sliceTooltip, legends: legends, useMesh: true, ariaLabel: ariaLabel, theme: {
123
- text: {
124
- fill: vars.colors.textSecondary,
125
- fontSize: 12,
126
- },
127
- axis: {
128
- domain: {
129
- line: {
130
- stroke: vars.colors.borderLight,
131
- },
132
- },
133
- ticks: {
134
- line: {
135
- stroke: 'transparent',
136
- },
137
- },
138
- legend: {
139
- text: {
140
- fill: vars.colors.textSecondary,
141
- },
142
- },
143
- },
144
- grid: {
145
- line: {
146
- stroke: vars.colors.borderLight,
147
- },
148
- },
149
- crosshair: {
150
- line: {
151
- stroke: vars.colors.primary,
152
- strokeWidth: 1,
153
- strokeOpacity: 0.35,
154
- },
155
- },
156
- tooltip: {
157
- container: {
158
- background: 'transparent',
159
- boxShadow: 'none',
160
- padding: 0,
161
- },
162
- },
163
- legends: {
164
- text: {
165
- fill: vars.colors.textSecondary,
166
- },
167
- },
168
- } }) }));
144
+ }
145
+ },
146
+ grid: {
147
+ line: {
148
+ stroke: i.colors.borderLight
149
+ }
150
+ },
151
+ crosshair: {
152
+ line: {
153
+ stroke: i.colors.primary,
154
+ strokeWidth: 1,
155
+ strokeOpacity: 0.35
156
+ }
157
+ },
158
+ tooltip: {
159
+ container: {
160
+ background: "transparent",
161
+ boxShadow: "none",
162
+ padding: 0
163
+ }
164
+ },
165
+ legends: {
166
+ text: {
167
+ fill: i.colors.textSecondary
168
+ }
169
+ }
170
+ }
171
+ }
172
+ ) });
173
+ };
174
+ export {
175
+ P as BillingUsageLineChart
169
176
  };
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmlsbGluZ1VzYWdlTGluZUNoYXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvY2hhcnRzL0JpbGxpbmdVc2FnZUxpbmVDaGFydC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0sWUFBWSxDQUFDO0FBR3BFLE9BQU8sS0FBSyxNQUFNLE1BQU0sZ0NBQWdDLENBQUM7QUFDekQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBNkJwRCxNQUFNLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFFdEIsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFO0lBQzVELFFBQVEsRUFBRSxTQUFTO0lBQ25CLHFCQUFxQixFQUFFLENBQUM7Q0FDekIsQ0FBQyxDQUFDO0FBS0gsU0FBUyxrQkFBa0IsQ0FDekIsTUFBdUQ7SUFFdkQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLElBQUksVUFBVSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoRSxJQUFJLFVBQVUsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkMsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDN0QsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUk7U0FDakMs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SixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXO3lCQUNoQztxQkFDRjtvQkFDRCxLQUFLLEVBQUU7d0JBQ0wsSUFBSSxFQUFFOzRCQUNKLE1BQU0sRUFBRSxhQUFhO3lCQUN0QjtxQkFDRjtvQkFDRCxNQUFNLEVBQUU7d0JBQ04sSUFBSSxFQUFFOzRCQUNKLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWE7eUJBQ2hDO3FCQUNGO2lCQUNGO2dCQUNELElBQUksRUFBRTtvQkFDSixJQUFJLEVBQUU7d0JBQ0osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVztxQkFDaEM7aUJBQ0Y7Z0JBQ0QsU0FBUyxFQUFFO29CQUNULElBQUksRUFBRTt3QkFDSixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPO3dCQUMzQixXQUFXLEVBQUUsQ0FBQzt3QkFDZCxhQUFhLEVBQUUsSUFBSTtxQkFDcEI7aUJBQ0Y7Z0JBQ0QsT0FBTyxFQUFFO29CQUNQLFNBQVMsRUFBRTt3QkFDVCxVQUFVLEVBQUUsYUFBYTt3QkFDekIsU0FBUyxFQUFFLE1BQU07d0JBQ2pCLE9BQU8sRUFBRSxDQUFDO3FCQUNYO2lCQUNGO2dCQUNELE9BQU8sRUFBRTtvQkFDUCxJQUFJLEVBQUU7d0JBQ0osSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYTtxQkFDaEM7aUJBQ0Y7YUFDRixHQUNELEdBQ0UsQ0FDUCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzcG9uc2l2ZUxpbmUsIHR5cGUgU2xpY2VUb29sdGlwUHJvcHMgfSBmcm9tICdAbml2by9saW5lJztcbmltcG9ydCB0eXBlIHsgSlNYIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSAnLi9iaWxsaW5nVXNhZ2VMaW5lQ2hhcnQuY3NzLmpzJztcbmltcG9ydCB7IHZhcnMgfSBmcm9tICcuLi8uLi90aGVtZS90aGVtZUNvbnRyYWN0LmpzJztcblxuZXhwb3J0IHR5cGUgQmlsbGluZ1VzYWdlTGluZUNoYXJ0UG9pbnQgPSB7XG4gIHg6IHN0cmluZztcbiAgeTogbnVtYmVyO1xufTtcblxuZXhwb3J0IHR5cGUgQmlsbGluZ1VzYWdlTGluZUNoYXJ0U2VyaWU8Q2F0ZWdvcnkgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpZDogQ2F0ZWdvcnk7XG4gIGRhdGE6IHJlYWRvbmx5IEJpbGxpbmdVc2FnZUxpbmVDaGFydFBvaW50W107XG59O1xuXG50eXBlIFNsaWNlUG9pbnRQYXlsb2FkPENhdGVnb3J5IGV4dGVuZHMgc3RyaW5nPiA9IHtcbiAgc2VyaWVzSWQ6IENhdGVnb3J5O1xuICBkYXRhOiB7XG4gICAgeTogbnVtYmVyO1xuICB9O1xuICBjb2xvcjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQmlsbGluZ1VzYWdlTGluZUNoYXJ0UHJvcHM8Q2F0ZWdvcnkgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBzZXJpZXM6IHJlYWRvbmx5IEJpbGxpbmdVc2FnZUxpbmVDaGFydFNlcmllPENhdGVnb3J5PltdO1xuICBjYXRlZ29yeU9yZGVyOiByZWFkb25seSBDYXRlZ29yeVtdO1xuICBjYXRlZ29yeUNvbG9yQnlJZDogUmVhZG9ubHk8UmVjb3JkPENhdGVnb3J5LCBzdHJpbmc+PjtcbiAgY2F0ZWdvcnlMYWJlbDogKGNhdGVnb3J5OiBDYXRlZ29yeSkgPT4gc3RyaW5nO1xuICBmb3JtYXRWYWx1ZTogKHZhbHVlOiBudW1iZXIpID0+IHN0cmluZztcbiAgYXJpYUxhYmVsOiBzdHJpbmc7XG59O1xuXG5jb25zdCBNQVhfWF9USUNLUyA9IDY7XG5cbmNvbnN0IGNvbXBhY3ROdW1iZXJGb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywge1xuICBub3RhdGlvbjogJ2NvbXBhY3QnLFxuICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDEsXG59KTtcblxuLyoqXG4gKiBMaW1pdHMgdGhlIG51bWJlciBvZiB2aXNpYmxlIGRheSB0aWNrcyB3aGlsZSBhbHdheXMga2VlcGluZyB0aGUgbGFzdCBwb2ludC5cbiAqL1xuZnVuY3Rpb24gZ2V0VmlzaWJsZURheVRpY2tzPENhdGVnb3J5IGV4dGVuZHMgc3RyaW5nPihcbiAgc2VyaWVzOiByZWFkb25seSBCaWxsaW5nVXNhZ2VMaW5lQ2hhcnRTZXJpZTxDYXRlZ29yeT5bXSxcbik6IHJlYWRvbmx5IHN0cmluZ1tdIHtcbiAgY29uc3QgZmlyc3RTZXJpZSA9IHNlcmllc1swXTtcbiAgaWYgKGZpcnN0U2VyaWUgPT0gbnVsbCB8fCBmaXJzdFNlcmllLmRhdGEubGVuZ3RoIDw9IE1BWF9YX1RJQ0tTKSB7XG4gICAgaWYgKGZpcnN0U2VyaWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHJldHVybiBmaXJzdFNlcmllLmRhdGEubWFwKChwb2ludCkgPT4ge1xuICAgICAgcmV0dXJuIHBvaW50Lng7XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBzdGVwID0gTWF0aC5jZWlsKGZpcnN0U2VyaWUuZGF0YS5sZW5ndGggLyBNQVhfWF9USUNLUyk7XG4gIGNvbnN0IHZpc2libGVUaWNrcyA9IGZpcnN0U2VyaWUuZGF0YVxuICAgIC5maWx0ZXIoKF8sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gaW5kZXggJSBzdGVwID09PSAwO1xuICAgIH0pXG4gICAgLm1hcCgocG9pbnQpID0+IHtcbiAgICAgIHJldHVybiBwb2ludC54O1xuICAgIH0pO1xuXG4gIGNvbnN0IGxhc3RQb2ludCA9IGZpcnN0U2VyaWUuZGF0YS5hdCgtMSk7XG4gIGlmIChsYXN0UG9pbnQgIT0gbnVsbCAmJiB2aXNpYmxlVGlja3MuYXQoLTEpICE9PSBsYXN0UG9pbnQueCkge1xuICAgIHZpc2libGVUaWNrcy5wdXNoKGxhc3RQb2ludC54KTtcbiAgfVxuXG4gIHJldHVybiB2aXNpYmxlVGlja3M7XG59XG5cbi8qKlxuICogRm9ybWF0cyBhIGBZWVlZLU1NLUREYCBrZXkgaW50byBhIHNob3J0IG1vbnRoL2RheSBsYWJlbCBmb3IgdGhlIHgtYXhpcy5cbiAqL1xuZnVuY3Rpb24gZm9ybWF0RGF5VGljayhkYXlLZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKGAke2RheUtleX1UMDA6MDA6MDBaYCk7XG4gIHJldHVybiBwYXJzZWQudG9Mb2NhbGVEYXRlU3RyaW5nKHVuZGVmaW5lZCwge1xuICAgIG1vbnRoOiAnc2hvcnQnLFxuICAgIGRheTogJzItZGlnaXQnLFxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IEJpbGxpbmdVc2FnZUxpbmVDaGFydCA9IDxDYXRlZ29yeSBleHRlbmRzIHN0cmluZz4oXG4gIHByb3BzOiBCaWxsaW5nVXNhZ2VMaW5lQ2hhcnRQcm9wczxDYXRlZ29yeT4sXG4pOiBKU1guRWxlbWVudCA9PiB7XG4gIGNvbnN0IHtcbiAgICBhcmlhTGFiZWwsXG4gICAgY2F0ZWdvcnlDb2xvckJ5SWQsXG4gICAgY2F0ZWdvcnlMYWJlbCxcbiAgICBjYXRlZ29yeU9yZGVyLFxuICAgIGZvcm1hdFZhbHVlLFxuICAgIHNlcmllcyxcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHZpc2libGVUaWNrcyA9IGdldFZpc2libGVEYXlUaWNrcyhzZXJpZXMpO1xuICBjb25zdCBjYXRlZ29yeU9yZGVyU3RyaW5nID0gY2F0ZWdvcnlPcmRlciBhcyByZWFkb25seSBzdHJpbmdbXTtcbiAgY29uc3QgaXNDYXRlZ29yeSA9ICh2YWx1ZTogc3RyaW5nKTogdmFsdWUgaXMgQ2F0ZWdvcnkgPT4ge1xuICAgIHJldHVybiBjYXRlZ29yeU9yZGVyU3RyaW5nLmluY2x1ZGVzKHZhbHVlKTtcbiAgfTtcblxuICBjb25zdCBsZWdlbmRzID0gW1xuICAgIHtcbiAgICAgIGFuY2hvcjogJ2JvdHRvbScgYXMgY29uc3QsXG4gICAgICBkaXJlY3Rpb246ICdyb3cnIGFzIGNvbnN0LFxuICAgICAgdHJhbnNsYXRlWTogNTYsXG4gICAgICBpdGVtV2lkdGg6IDkwLFxuICAgICAgaXRlbUhlaWdodDogMTYsXG4gICAgICBpdGVtc1NwYWNpbmc6IDgsXG4gICAgICBzeW1ib2xTaXplOiAxMCxcbiAgICAgIHN5bWJvbFNoYXBlOiAnY2lyY2xlJyBhcyBjb25zdCxcbiAgICAgIGl0ZW1UZXh0Q29sb3I6IHZhcnMuY29sb3JzLnRleHRTZWNvbmRhcnksXG4gICAgICBkYXRhOiBjYXRlZ29yeU9yZGVyLm1hcCgoY2F0ZWdvcnkpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpZDogY2F0ZWdvcnksXG4gICAgICAgICAgbGFiZWw6IGNhdGVnb3J5TGFiZWwoY2F0ZWdvcnkpLFxuICAgICAgICAgIGNvbG9yOiBjYXRlZ29yeUNvbG9yQnlJZFtjYXRlZ29yeV0sXG4gICAgICAgIH07XG4gICAgICB9KSxcbiAgICB9LFxuICBdO1xuXG4gIGNvbnN0IGNvbG9yQnlJZCA9IChzZXJpZTogeyBpZDogc3RyaW5nIHwgbnVtYmVyIH0pOiBzdHJpbmcgPT4ge1xuICAgIGlmICh0eXBlb2Ygc2VyaWUuaWQgIT09ICdzdHJpbmcnIHx8ICFpc0NhdGVnb3J5KHNlcmllLmlkKSkge1xuICAgICAgcmV0dXJuIHZhcnMuY29sb3JzLnByaW1hcnk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNhdGVnb3J5Q29sb3JCeUlkW3NlcmllLmlkXTtcbiAgfTtcblxuICBjb25zdCBzbGljZVRvb2x0aXAgPSAoe1xuICAgIHNsaWNlLFxuICB9OiBTbGljZVRvb2x0aXBQcm9wczxCaWxsaW5nVXNhZ2VMaW5lQ2hhcnRTZXJpZTxDYXRlZ29yeT4+KTogSlNYLkVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGRheUtleSA9IFN0cmluZyhzbGljZS5pZCk7XG4gICAgY29uc3QgZmFsbGJhY2tDYXRlZ29yeSA9IGNhdGVnb3J5T3JkZXJbMF0gPz8gbnVsbDtcbiAgICBjb25zdCBwb2ludHMgPSBbLi4uc2xpY2UucG9pbnRzXVxuICAgICAgLm1hcCgocG9pbnQpOiBTbGljZVBvaW50UGF5bG9hZDxDYXRlZ29yeT4gfCBudWxsID0+IHtcbiAgICAgICAgbGV0IGNyZWRpdHMgPSAwO1xuICAgICAgICBpZiAodHlwZW9mIHBvaW50LmRhdGEueSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICBjcmVkaXRzID0gcG9pbnQuZGF0YS55O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHNlcmllc0lkID0gZmFsbGJhY2tDYXRlZ29yeTtcbiAgICAgICAgaWYgKHR5cGVvZiBwb2ludC5zZXJpZXNJZCA9PT0gJ3N0cmluZycgJiYgaXNDYXRlZ29yeShwb2ludC5zZXJpZXNJZCkpIHtcbiAgICAgICAgICBzZXJpZXNJZCA9IHBvaW50LnNlcmllc0lkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzZXJpZXNJZCA9PSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlcmllc0lkLFxuICAgICAgICAgIGRhdGE6IHsgeTogY3JlZGl0cyB9LFxuICAgICAgICAgIGNvbG9yOiBwb2ludC5zZXJpZXNDb2xvcixcbiAgICAgICAgfTtcbiAgICAgIH0pXG4gICAgICAuZmlsdGVyKChwb2ludCk6IHBvaW50IGlzIFNsaWNlUG9pbnRQYXlsb2FkPENhdGVnb3J5PiA9PiB7XG4gICAgICAgIHJldHVybiBwb2ludCAhPSBudWxsO1xuICAgICAgfSlcbiAgICAgIC5zb3J0KChsZWZ0LCByaWdodCkgPT4ge1xuICAgICAgICBjb25zdCBsZWZ0SW5kZXggPSBjYXRlZ29yeU9yZGVyLmluZGV4T2YobGVmdC5zZXJpZXNJZCk7XG4gICAgICAgIGNvbnN0IHJpZ2h0SW5kZXggPSBjYXRlZ29yeU9yZGVyLmluZGV4T2YocmlnaHQuc2VyaWVzSWQpO1xuXG4gICAgICAgIHJldHVybiBsZWZ0SW5kZXggLSByaWdodEluZGV4O1xuICAgICAgfSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50b29sdGlwfT5cbiAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMudG9vbHRpcERhdGV9Pntmb3JtYXREYXlUaWNrKGRheUtleSl9PC9wPlxuICAgICAgICB7cG9pbnRzLm1hcCgocG9pbnQpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBrZXk9e2Ake2RheUtleX0tJHtwb2ludC5zZXJpZXNJZH1gfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50b29sdGlwUm93fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50b29sdGlwUm93TGFiZWx9PlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50b29sdGlwU3dhdGNofVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgYmFja2dyb3VuZENvbG9yOiBwb2ludC5jb2xvciB9fVxuICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW5cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxzcGFuPntjYXRlZ29yeUxhYmVsKHBvaW50LnNlcmllc0lkKX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPHN0cm9uZz57Zm9ybWF0VmFsdWUocG9pbnQuZGF0YS55KX08L3N0cm9uZz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICk7XG4gICAgICAgIH0pfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuY2hhcnRDb250YWluZXJ9PlxuICAgICAgPFJlc3BvbnNpdmVMaW5lXG4gICAgICAgIGRhdGE9e3Nlcmllc31cbiAgICAgICAgbWFyZ2luPXt7IHRvcDogMTQsIHJpZ2h0OiAxNiwgYm90dG9tOiA3NCwgbGVmdDogNTIgfX1cbiAgICAgICAgY29sb3JzPXtjb2xvckJ5SWR9XG4gICAgICAgIHhTY2FsZT17eyB0eXBlOiAncG9pbnQnIH19XG4gICAgICAgIHlTY2FsZT17eyB0eXBlOiAnbGluZWFyJywgbWluOiAwLCBtYXg6ICdhdXRvJyB9fVxuICAgICAgICBjdXJ2ZT1cIm1vbm90b25lWFwiXG4gICAgICAgIGxpbmVXaWR0aD17Mi41fVxuICAgICAgICBwb2ludFNpemU9ezR9XG4gICAgICAgIHBvaW50Qm9yZGVyV2lkdGg9ezJ9XG4gICAgICAgIHBvaW50Qm9yZGVyQ29sb3I9e3sgZnJvbTogJ3Nlcmllc0NvbG9yJywgbW9kaWZpZXJzOiBbWydkYXJrZXInLCAwLjJdXSB9fVxuICAgICAgICBlbmFibGVBcmVhXG4gICAgICAgIGFyZWFPcGFjaXR5PXswLjF9XG4gICAgICAgIGVuYWJsZUdyaWRYPXtmYWxzZX1cbiAgICAgICAgZW5hYmxlR3JpZFlcbiAgICAgICAgYXhpc1RvcD17bnVsbH1cbiAgICAgICAgYXhpc1JpZ2h0PXtudWxsfVxuICAgICAgICBheGlzQm90dG9tPXt7XG4gICAgICAgICAgdGlja1ZhbHVlczogdmlzaWJsZVRpY2tzLFxuICAgICAgICAgIGZvcm1hdDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0RGF5VGljayhTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRpY2tTaXplOiAwLFxuICAgICAgICAgIHRpY2tQYWRkaW5nOiAxMCxcbiAgICAgICAgfX1cbiAgICAgICAgYXhpc0xlZnQ9e3tcbiAgICAgICAgICB0aWNrU2l6ZTogMCxcbiAgICAgICAgICB0aWNrUGFkZGluZzogOCxcbiAgICAgICAgICB0aWNrVmFsdWVzOiA0LFxuICAgICAgICAgIGZvcm1hdDogKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gY29tcGFjdE51bWJlckZvcm1hdHRlci5mb3JtYXQoTnVtYmVyKHZhbHVlKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgfX1cbiAgICAgICAgZW5hYmxlU2xpY2VzPVwieFwiXG4gICAgICAgIHNsaWNlVG9vbHRpcD17c2xpY2VUb29sdGlwfVxuICAgICAgICBsZWdlbmRzPXtsZWdlbmRzfVxuICAgICAgICB1c2VNZXNoXG4gICAgICAgIGFyaWFMYWJlbD17YXJpYUxhYmVsfVxuICAgICAgICB0aGVtZT17e1xuICAgICAgICAgIHRleHQ6IHtcbiAgICAgICAgICAgIGZpbGw6IHZhcnMuY29sb3JzLnRleHRTZWNvbmRhcnksXG4gICAgICAgICAgICBmb250U2l6ZTogMTIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBheGlzOiB7XG4gICAgICAgICAgICBkb21haW46IHtcbiAgICAgICAgICAgICAgbGluZToge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogdmFycy5jb2xvcnMuYm9yZGVyTGlnaHQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGlja3M6IHtcbiAgICAgICAgICAgICAgbGluZToge1xuICAgICAgICAgICAgICAgIHN0cm9rZTogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgICAgdGV4dDoge1xuICAgICAgICAgICAgICAgIGZpbGw6IHZhcnMuY29sb3JzLnRleHRTZWNvbmRhcnksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ3JpZDoge1xuICAgICAgICAgICAgbGluZToge1xuICAgICAgICAgICAgICBzdHJva2U6IHZhcnMuY29sb3JzLmJvcmRlckxpZ2h0LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNyb3NzaGFpcjoge1xuICAgICAgICAgICAgbGluZToge1xuICAgICAgICAgICAgICBzdHJva2U6IHZhcnMuY29sb3JzLnByaW1hcnksXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoOiAxLFxuICAgICAgICAgICAgICBzdHJva2VPcGFjaXR5OiAwLjM1LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRvb2x0aXA6IHtcbiAgICAgICAgICAgIGNvbnRhaW5lcjoge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBsZWdlbmRzOiB7XG4gICAgICAgICAgICB0ZXh0OiB7XG4gICAgICAgICAgICAgIGZpbGw6IHZhcnMuY29sb3JzLnRleHRTZWNvbmRhcnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH19XG4gICAgICAvPlxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdfQ==
177
+ //# sourceMappingURL=BillingUsageLineChart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BillingUsageLineChart.js","sources":["../../../../src/components/charts/BillingUsageLineChart.tsx"],"sourcesContent":["import { ResponsiveLine, type SliceTooltipProps } from '@nivo/line';\nimport type { JSX } from 'react';\n\nimport * as styles from './billingUsageLineChart.css.js';\nimport { vars } from '../../theme/themeContract.js';\n\nexport type BillingUsageLineChartPoint = {\n x: string;\n y: number;\n};\n\nexport type BillingUsageLineChartSerie<Category extends string> = {\n id: Category;\n data: readonly BillingUsageLineChartPoint[];\n};\n\ntype SlicePointPayload<Category extends string> = {\n seriesId: Category;\n data: {\n y: number;\n };\n color: string;\n};\n\nexport type BillingUsageLineChartProps<Category extends string> = {\n series: readonly BillingUsageLineChartSerie<Category>[];\n categoryOrder: readonly Category[];\n categoryColorById: Readonly<Record<Category, string>>;\n categoryLabel: (category: Category) => string;\n formatValue: (value: number) => string;\n ariaLabel: string;\n};\n\nconst MAX_X_TICKS = 6;\n\nconst compactNumberFormatter = new Intl.NumberFormat('en-US', {\n notation: 'compact',\n maximumFractionDigits: 1,\n});\n\n/**\n * Limits the number of visible day ticks while always keeping the last point.\n */\nfunction getVisibleDayTicks<Category extends string>(\n series: readonly BillingUsageLineChartSerie<Category>[],\n): readonly string[] {\n const firstSerie = series[0];\n if (firstSerie == null || firstSerie.data.length <= MAX_X_TICKS) {\n if (firstSerie == null) {\n return [];\n }\n\n return firstSerie.data.map((point) => {\n return point.x;\n });\n }\n\n const step = Math.ceil(firstSerie.data.length / MAX_X_TICKS);\n const visibleTicks = firstSerie.data\n .filter((_, index) => {\n return index % step === 0;\n })\n .map((point) => {\n return point.x;\n });\n\n const lastPoint = firstSerie.data.at(-1);\n if (lastPoint != null && visibleTicks.at(-1) !== lastPoint.x) {\n visibleTicks.push(lastPoint.x);\n }\n\n return visibleTicks;\n}\n\n/**\n * Formats a `YYYY-MM-DD` key into a short month/day label for the x-axis.\n */\nfunction formatDayTick(dayKey: string): string {\n const parsed = new Date(`${dayKey}T00:00:00Z`);\n return parsed.toLocaleDateString(undefined, {\n month: 'short',\n day: '2-digit',\n });\n}\n\nexport const BillingUsageLineChart = <Category extends string>(\n props: BillingUsageLineChartProps<Category>,\n): JSX.Element => {\n const {\n ariaLabel,\n categoryColorById,\n categoryLabel,\n categoryOrder,\n formatValue,\n series,\n } = props;\n\n const visibleTicks = getVisibleDayTicks(series);\n const categoryOrderString = categoryOrder as readonly string[];\n const isCategory = (value: string): value is Category => {\n return categoryOrderString.includes(value);\n };\n\n const legends = [\n {\n anchor: 'bottom' as const,\n direction: 'row' as const,\n translateY: 56,\n itemWidth: 90,\n itemHeight: 16,\n itemsSpacing: 8,\n symbolSize: 10,\n symbolShape: 'circle' as const,\n itemTextColor: vars.colors.textSecondary,\n data: categoryOrder.map((category) => {\n return {\n id: category,\n label: categoryLabel(category),\n color: categoryColorById[category],\n };\n }),\n },\n ];\n\n const colorById = (serie: { id: string | number }): string => {\n if (typeof serie.id !== 'string' || !isCategory(serie.id)) {\n return vars.colors.primary;\n }\n\n return categoryColorById[serie.id];\n };\n\n const sliceTooltip = ({\n slice,\n }: SliceTooltipProps<BillingUsageLineChartSerie<Category>>): JSX.Element => {\n const dayKey = String(slice.id);\n const fallbackCategory = categoryOrder[0] ?? null;\n const points = [...slice.points]\n .map((point): SlicePointPayload<Category> | null => {\n let credits = 0;\n if (typeof point.data.y === 'number') {\n credits = point.data.y;\n }\n\n let seriesId = fallbackCategory;\n if (typeof point.seriesId === 'string' && isCategory(point.seriesId)) {\n seriesId = point.seriesId;\n }\n if (seriesId == null) {\n return null;\n }\n\n return {\n seriesId,\n data: { y: credits },\n color: point.seriesColor,\n };\n })\n .filter((point): point is SlicePointPayload<Category> => {\n return point != null;\n })\n .sort((left, right) => {\n const leftIndex = categoryOrder.indexOf(left.seriesId);\n const rightIndex = categoryOrder.indexOf(right.seriesId);\n\n return leftIndex - rightIndex;\n });\n\n return (\n <div className={styles.tooltip}>\n <p className={styles.tooltipDate}>{formatDayTick(dayKey)}</p>\n {points.map((point) => {\n return (\n <div\n key={`${dayKey}-${point.seriesId}`}\n className={styles.tooltipRow}\n >\n <span className={styles.tooltipRowLabel}>\n <span\n className={styles.tooltipSwatch}\n style={{ backgroundColor: point.color }}\n aria-hidden\n />\n <span>{categoryLabel(point.seriesId)}</span>\n </span>\n <strong>{formatValue(point.data.y)}</strong>\n </div>\n );\n })}\n </div>\n );\n };\n\n return (\n <div className={styles.chartContainer}>\n <ResponsiveLine\n data={series}\n margin={{ top: 14, right: 16, bottom: 74, left: 52 }}\n colors={colorById}\n xScale={{ type: 'point' }}\n yScale={{ type: 'linear', min: 0, max: 'auto' }}\n curve=\"monotoneX\"\n lineWidth={2.5}\n pointSize={4}\n pointBorderWidth={2}\n pointBorderColor={{ from: 'seriesColor', modifiers: [['darker', 0.2]] }}\n enableArea\n areaOpacity={0.1}\n enableGridX={false}\n enableGridY\n axisTop={null}\n axisRight={null}\n axisBottom={{\n tickValues: visibleTicks,\n format: (value) => {\n return formatDayTick(String(value));\n },\n tickSize: 0,\n tickPadding: 10,\n }}\n axisLeft={{\n tickSize: 0,\n tickPadding: 8,\n tickValues: 4,\n format: (value) => {\n return compactNumberFormatter.format(Number(value));\n },\n }}\n enableSlices=\"x\"\n sliceTooltip={sliceTooltip}\n legends={legends}\n useMesh\n ariaLabel={ariaLabel}\n theme={{\n text: {\n fill: vars.colors.textSecondary,\n fontSize: 12,\n },\n axis: {\n domain: {\n line: {\n stroke: vars.colors.borderLight,\n },\n },\n ticks: {\n line: {\n stroke: 'transparent',\n },\n },\n legend: {\n text: {\n fill: vars.colors.textSecondary,\n },\n },\n },\n grid: {\n line: {\n stroke: vars.colors.borderLight,\n },\n },\n crosshair: {\n line: {\n stroke: vars.colors.primary,\n strokeWidth: 1,\n strokeOpacity: 0.35,\n },\n },\n tooltip: {\n container: {\n background: 'transparent',\n boxShadow: 'none',\n padding: 0,\n },\n },\n legends: {\n text: {\n fill: vars.colors.textSecondary,\n },\n },\n }}\n />\n </div>\n );\n};\n"],"names":["MAX_X_TICKS","compactNumberFormatter","getVisibleDayTicks","series","firstSerie","point","step","visibleTicks","_","index","lastPoint","formatDayTick","dayKey","BillingUsageLineChart","props","ariaLabel","categoryColorById","categoryLabel","categoryOrder","formatValue","categoryOrderString","isCategory","value","legends","vars","category","jsx","styles.chartContainer","ResponsiveLine","serie","slice","fallbackCategory","points","credits","seriesId","left","right","leftIndex","rightIndex","jsxs","styles.tooltip","styles.tooltipDate","styles.tooltipRow","styles.tooltipRowLabel","styles.tooltipSwatch"],"mappings":";;;;AAiCA,MAAMA,IAAc,GAEdC,IAAyB,IAAI,KAAK,aAAa,SAAS;AAAA,EAC5D,UAAU;AAAA,EACV,uBAAuB;AACzB,CAAC;AAKD,SAASC,EACPC,GACmB;AACnB,QAAMC,IAAaD,EAAO,CAAC;AAC3B,MAAIC,KAAc,QAAQA,EAAW,KAAK,UAAUJ;AAClD,WAAII,KAAc,OACT,CAAA,IAGFA,EAAW,KAAK,IAAI,CAACC,MACnBA,EAAM,CACd;AAGH,QAAMC,IAAO,KAAK,KAAKF,EAAW,KAAK,SAASJ,CAAW,GACrDO,IAAeH,EAAW,KAC7B,OAAO,CAACI,GAAGC,MACHA,IAAQH,MAAS,CACzB,EACA,IAAI,CAACD,MACGA,EAAM,CACd,GAEGK,IAAYN,EAAW,KAAK,GAAG,EAAE;AACvC,SAAIM,KAAa,QAAQH,EAAa,GAAG,EAAE,MAAMG,EAAU,KACzDH,EAAa,KAAKG,EAAU,CAAC,GAGxBH;AACT;AAKA,SAASI,EAAcC,GAAwB;AAE7C,UADe,oBAAI,KAAK,GAAGA,CAAM,YAAY,GAC/B,mBAAmB,QAAW;AAAA,IAC1C,OAAO;AAAA,IACP,KAAK;AAAA,EAAA,CACN;AACH;AAEO,MAAMC,IAAwB,CACnCC,MACgB;AAChB,QAAM;AAAA,IACJ,WAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,aAAAC;AAAA,IACA,QAAAhB;AAAA,EAAA,IACEW,GAEEP,IAAeL,EAAmBC,CAAM,GACxCiB,IAAsBF,GACtBG,IAAa,CAACC,MACXF,EAAoB,SAASE,CAAK,GAGrCC,IAAU;AAAA,IACd;AAAA,MACE,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,eAAeC,EAAK,OAAO;AAAA,MAC3B,MAAMN,EAAc,IAAI,CAACO,OAChB;AAAA,QACL,IAAIA;AAAA,QACJ,OAAOR,EAAcQ,CAAQ;AAAA,QAC7B,OAAOT,EAAkBS,CAAQ;AAAA,MAAA,EAEpC;AAAA,IAAA;AAAA,EACH;AAwEF,SACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,GACd,UAAA,gBAAAD;AAAA,IAACE;AAAA,IAAA;AAAA,MACC,MAAMzB;AAAA,MACN,QAAQ,EAAE,KAAK,IAAI,OAAO,IAAI,QAAQ,IAAI,MAAM,GAAA;AAAA,MAChD,QA1EY,CAAC0B,MACb,OAAOA,EAAM,MAAO,YAAY,CAACR,EAAWQ,EAAM,EAAE,IAC/CL,EAAK,OAAO,UAGdR,EAAkBa,EAAM,EAAE;AAAA,MAsE7B,QAAQ,EAAE,MAAM,QAAA;AAAA,MAChB,QAAQ,EAAE,MAAM,UAAU,KAAK,GAAG,KAAK,OAAA;AAAA,MACvC,OAAM;AAAA,MACN,WAAW;AAAA,MACX,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,kBAAkB,EAAE,MAAM,eAAe,WAAW,CAAC,CAAC,UAAU,GAAG,CAAC,EAAA;AAAA,MACpE,YAAU;AAAA,MACV,aAAa;AAAA,MACb,aAAa;AAAA,MACb,aAAW;AAAA,MACX,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,QACV,YAAYtB;AAAA,QACZ,QAAQ,CAACe,MACAX,EAAc,OAAOW,CAAK,CAAC;AAAA,QAEpC,UAAU;AAAA,QACV,aAAa;AAAA,MAAA;AAAA,MAEf,UAAU;AAAA,QACR,UAAU;AAAA,QACV,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,QAAQ,CAACA,MACArB,EAAuB,OAAO,OAAOqB,CAAK,CAAC;AAAA,MACpD;AAAA,MAEF,cAAa;AAAA,MACb,cAjGe,CAAC;AAAA,QACpB,OAAAQ;AAAA,MAAA,MAC0E;AAC1E,cAAMlB,IAAS,OAAOkB,EAAM,EAAE,GACxBC,IAAmBb,EAAc,CAAC,KAAK,MACvCc,IAAS,CAAC,GAAGF,EAAM,MAAM,EAC5B,IAAI,CAACzB,MAA8C;AAClD,cAAI4B,IAAU;AACd,UAAI,OAAO5B,EAAM,KAAK,KAAM,aAC1B4B,IAAU5B,EAAM,KAAK;AAGvB,cAAI6B,IAAWH;AAIf,iBAHI,OAAO1B,EAAM,YAAa,YAAYgB,EAAWhB,EAAM,QAAQ,MACjE6B,IAAW7B,EAAM,WAEf6B,KAAY,OACP,OAGF;AAAA,YACL,UAAAA;AAAA,YACA,MAAM,EAAE,GAAGD,EAAA;AAAA,YACX,OAAO5B,EAAM;AAAA,UAAA;AAAA,QAEjB,CAAC,EACA,OAAO,CAACA,MACAA,KAAS,IACjB,EACA,KAAK,CAAC8B,GAAMC,MAAU;AACrB,gBAAMC,IAAYnB,EAAc,QAAQiB,EAAK,QAAQ,GAC/CG,IAAapB,EAAc,QAAQkB,EAAM,QAAQ;AAEvD,iBAAOC,IAAYC;AAAA,QACrB,CAAC;AAEH,eACE,gBAAAC,EAAC,OAAA,EAAI,WAAWC,GACd,UAAA;AAAA,UAAA,gBAAAd,EAAC,OAAE,WAAWe,GAAqB,UAAA9B,EAAcC,CAAM,GAAE;AAAA,UACxDoB,EAAO,IAAI,CAAC3B,MAET,gBAAAkC;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,WAAWG;AAAAA,cAEX,UAAA;AAAA,gBAAA,gBAAAH,EAAC,QAAA,EAAK,WAAWI,GACf,UAAA;AAAA,kBAAA,gBAAAjB;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,WAAWkB;AAAAA,sBACX,OAAO,EAAE,iBAAiBvC,EAAM,MAAA;AAAA,sBAChC,eAAW;AAAA,oBAAA;AAAA,kBAAA;AAAA,kBAEb,gBAAAqB,EAAC,QAAA,EAAM,UAAAT,EAAcZ,EAAM,QAAQ,EAAA,CAAE;AAAA,gBAAA,GACvC;AAAA,kCACC,UAAA,EAAQ,UAAAc,EAAYd,EAAM,KAAK,CAAC,EAAA,CAAE;AAAA,cAAA;AAAA,YAAA;AAAA,YAX9B,GAAGO,CAAM,IAAIP,EAAM,QAAQ;AAAA,UAAA,CAcrC;AAAA,QAAA,GACH;AAAA,MAEJ;AAAA,MAuCM,SAAAkB;AAAA,MACA,SAAO;AAAA,MACP,WAAAR;AAAA,MACA,OAAO;AAAA,QACL,MAAM;AAAA,UACJ,MAAMS,EAAK,OAAO;AAAA,UAClB,UAAU;AAAA,QAAA;AAAA,QAEZ,MAAM;AAAA,UACJ,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,QAAQA,EAAK,OAAO;AAAA,YAAA;AAAA,UACtB;AAAA,UAEF,OAAO;AAAA,YACL,MAAM;AAAA,cACJ,QAAQ;AAAA,YAAA;AAAA,UACV;AAAA,UAEF,QAAQ;AAAA,YACN,MAAM;AAAA,cACJ,MAAMA,EAAK,OAAO;AAAA,YAAA;AAAA,UACpB;AAAA,QACF;AAAA,QAEF,MAAM;AAAA,UACJ,MAAM;AAAA,YACJ,QAAQA,EAAK,OAAO;AAAA,UAAA;AAAA,QACtB;AAAA,QAEF,WAAW;AAAA,UACT,MAAM;AAAA,YACJ,QAAQA,EAAK,OAAO;AAAA,YACpB,aAAa;AAAA,YACb,eAAe;AAAA,UAAA;AAAA,QACjB;AAAA,QAEF,SAAS;AAAA,UACP,WAAW;AAAA,YACT,YAAY;AAAA,YACZ,WAAW;AAAA,YACX,SAAS;AAAA,UAAA;AAAA,QACX;AAAA,QAEF,SAAS;AAAA,UACP,MAAM;AAAA,YACJ,MAAMA,EAAK,OAAO;AAAA,UAAA;AAAA,QACpB;AAAA,MACF;AAAA,IACF;AAAA,EAAA,GAEJ;AAEJ;"}