@plumile/ui 0.1.55 → 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 (465) hide show
  1. package/lib/atomic/atoms/button/Button.d.ts.map +1 -1
  2. package/lib/atomic/atoms/button/Button.js +5 -2
  3. package/lib/atomic/atoms/formatted-date/FormattedDate.d.ts +14 -0
  4. package/lib/atomic/atoms/formatted-date/FormattedDate.d.ts.map +1 -0
  5. package/lib/atomic/atoms/formatted-date/FormattedDate.js +29 -0
  6. package/lib/atomic/atoms/icon-button/IconMenuButton.d.ts +8 -0
  7. package/lib/atomic/atoms/icon-button/IconMenuButton.d.ts.map +1 -0
  8. package/lib/atomic/atoms/icon-button/IconMenuButton.js +10 -0
  9. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts +14 -0
  10. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts.map +1 -0
  11. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +16 -0
  12. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts +13 -0
  13. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts.map +1 -0
  14. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +42 -0
  15. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts +13 -0
  16. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts.map +1 -0
  17. package/lib/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +37 -0
  18. package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts +25 -0
  19. package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts.map +1 -0
  20. package/lib/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +221 -0
  21. package/lib/atomic/molecules/breadcrumb_navigation/types.d.ts +15 -0
  22. package/lib/atomic/molecules/breadcrumb_navigation/types.d.ts.map +1 -0
  23. package/lib/atomic/molecules/breadcrumb_navigation/types.js +2 -0
  24. package/lib/atomic/molecules/dropdown/Dropdown.d.ts +26 -0
  25. package/lib/atomic/molecules/dropdown/Dropdown.d.ts.map +1 -0
  26. package/lib/atomic/molecules/dropdown/Dropdown.js +271 -0
  27. package/lib/atomic/molecules/dropdown/dropdown.css.d.ts +8 -0
  28. package/lib/atomic/molecules/dropdown/dropdown.css.d.ts.map +1 -0
  29. package/lib/atomic/molecules/dropdown/dropdown.css.js +30 -0
  30. package/lib/atomic/molecules/form-actions/FormActions.d.ts +16 -0
  31. package/lib/atomic/molecules/form-actions/FormActions.d.ts.map +1 -0
  32. package/lib/atomic/molecules/form-actions/FormActions.js +27 -0
  33. package/lib/atomic/molecules/toast/ToastProvider.d.ts +19 -0
  34. package/lib/atomic/molecules/toast/ToastProvider.d.ts.map +1 -0
  35. package/lib/atomic/molecules/toast/ToastProvider.js +113 -0
  36. package/lib/atomic/molecules/toast/ToastViewport.d.ts +24 -0
  37. package/lib/atomic/molecules/toast/ToastViewport.d.ts.map +1 -0
  38. package/lib/atomic/molecules/toast/ToastViewport.js +40 -0
  39. package/lib/atomic/molecules/toast/constants.d.ts +2 -0
  40. package/lib/atomic/molecules/toast/constants.d.ts.map +1 -0
  41. package/lib/atomic/molecules/toast/constants.js +2 -0
  42. package/lib/atomic/molecules/toast/toast.css.d.ts +25 -0
  43. package/lib/atomic/molecules/toast/toast.css.d.ts.map +1 -0
  44. package/lib/atomic/molecules/toast/toast.css.js +106 -0
  45. package/lib/components/data-table/DataTable.css.d.ts +61 -0
  46. package/lib/components/data-table/DataTable.css.d.ts.map +1 -0
  47. package/lib/components/data-table/DataTable.css.js +285 -0
  48. package/lib/components/data-table/DataTable.d.ts +32 -0
  49. package/lib/components/data-table/DataTable.d.ts.map +1 -0
  50. package/lib/components/data-table/DataTable.js +95 -0
  51. package/lib/components/data-table/TableCell.css.d.ts +26 -0
  52. package/lib/components/data-table/TableCell.css.d.ts.map +1 -0
  53. package/lib/components/data-table/TableCell.css.js +45 -0
  54. package/lib/components/data-table/TableCell.d.ts +46 -0
  55. package/lib/components/data-table/TableCell.d.ts.map +1 -0
  56. package/lib/components/data-table/TableCell.js +72 -0
  57. package/lib/components/data-table/TableCellBase.d.ts +13 -0
  58. package/lib/components/data-table/TableCellBase.d.ts.map +1 -0
  59. package/lib/components/data-table/TableCellBase.js +11 -0
  60. package/lib/components/data-table/VirtualizedConnectionTable.css.d.ts +5 -0
  61. package/lib/components/data-table/VirtualizedConnectionTable.css.d.ts.map +1 -0
  62. package/lib/components/data-table/VirtualizedConnectionTable.css.js +18 -0
  63. package/lib/components/data-table/VirtualizedConnectionTable.d.ts +32 -0
  64. package/lib/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -0
  65. package/lib/components/data-table/VirtualizedConnectionTable.js +304 -0
  66. package/lib/components/data-table/tableBreakpoints.d.ts +9 -0
  67. package/lib/components/data-table/tableBreakpoints.d.ts.map +1 -0
  68. package/lib/components/data-table/tableBreakpoints.js +34 -0
  69. package/lib/components/select/SimpleSelect.css.d.ts +23 -0
  70. package/lib/components/select/SimpleSelect.css.d.ts.map +1 -0
  71. package/lib/components/select/SimpleSelect.css.js +175 -0
  72. package/lib/components/select/SimpleSelect.d.ts +22 -0
  73. package/lib/components/select/SimpleSelect.d.ts.map +1 -0
  74. package/lib/components/select/SimpleSelect.js +218 -0
  75. package/lib/components/subscriptions/RefetchNeededBanner.css.d.ts +5 -0
  76. package/lib/components/subscriptions/RefetchNeededBanner.css.d.ts.map +1 -0
  77. package/lib/components/subscriptions/RefetchNeededBanner.css.js +32 -0
  78. package/lib/components/subscriptions/RefetchNeededBanner.d.ts +9 -0
  79. package/lib/components/subscriptions/RefetchNeededBanner.d.ts.map +1 -0
  80. package/lib/components/subscriptions/RefetchNeededBanner.js +17 -0
  81. package/lib/esm/atomic/atoms/badge/Badge.js +17 -16
  82. package/lib/esm/atomic/atoms/badge/Badge.js.map +1 -1
  83. package/lib/esm/atomic/atoms/badge/badge.css.js +30 -8
  84. package/lib/esm/atomic/atoms/badge/badge.css.js.map +1 -1
  85. package/lib/esm/atomic/atoms/button/Button.js +46 -56
  86. package/lib/esm/atomic/atoms/button/Button.js.map +1 -1
  87. package/lib/esm/atomic/atoms/button/LinkButton.js +48 -62
  88. package/lib/esm/atomic/atoms/button/LinkButton.js.map +1 -1
  89. package/lib/esm/atomic/atoms/button/button.css.js +95 -16
  90. package/lib/esm/atomic/atoms/button/button.css.js.map +1 -1
  91. package/lib/esm/atomic/atoms/checkbox/Checkbox.js +37 -40
  92. package/lib/esm/atomic/atoms/checkbox/Checkbox.js.map +1 -1
  93. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js +26 -11
  94. package/lib/esm/atomic/atoms/checkbox/checkbox.css.js.map +1 -1
  95. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js +33 -0
  96. package/lib/esm/atomic/atoms/formatted-date/FormattedDate.js.map +1 -0
  97. package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js +19 -0
  98. package/lib/esm/atomic/atoms/icon-button/IconMenuButton.js.map +1 -0
  99. package/lib/esm/atomic/atoms/input/Input.js +46 -40
  100. package/lib/esm/atomic/atoms/input/Input.js.map +1 -1
  101. package/lib/esm/atomic/atoms/input/input.css.js +32 -14
  102. package/lib/esm/atomic/atoms/input/input.css.js.map +1 -1
  103. package/lib/esm/atomic/atoms/label/Label.js +23 -16
  104. package/lib/esm/atomic/atoms/label/Label.js.map +1 -1
  105. package/lib/esm/atomic/atoms/label/label.css.js +27 -9
  106. package/lib/esm/atomic/atoms/label/label.css.js.map +1 -1
  107. package/lib/esm/atomic/atoms/textarea/Textarea.js +19 -18
  108. package/lib/esm/atomic/atoms/textarea/Textarea.js.map +1 -1
  109. package/lib/esm/atomic/atoms/textarea/textarea.css.js +32 -8
  110. package/lib/esm/atomic/atoms/textarea/textarea.css.js.map +1 -1
  111. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js +48 -0
  112. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.js.map +1 -0
  113. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js +54 -0
  114. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.js.map +1 -0
  115. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js +63 -0
  116. package/lib/esm/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.js.map +1 -0
  117. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js +8 -0
  118. package/lib/esm/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.js.map +1 -0
  119. package/lib/esm/atomic/molecules/card/Card.css.js +8 -10
  120. package/lib/esm/atomic/molecules/card/Card.css.js.map +1 -1
  121. package/lib/esm/atomic/molecules/card/Card.js +24 -17
  122. package/lib/esm/atomic/molecules/card/Card.js.map +1 -1
  123. package/lib/esm/atomic/molecules/dropdown/Dropdown.js +149 -0
  124. package/lib/esm/atomic/molecules/dropdown/Dropdown.js.map +1 -0
  125. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js +8 -0
  126. package/lib/esm/atomic/molecules/dropdown/dropdown.css.js.map +1 -0
  127. package/lib/esm/atomic/molecules/form-actions/FormActions.js +32 -0
  128. package/lib/esm/atomic/molecules/form-actions/FormActions.js.map +1 -0
  129. package/lib/esm/atomic/molecules/tabs/Tabs.js +34 -33
  130. package/lib/esm/atomic/molecules/tabs/Tabs.js.map +1 -1
  131. package/lib/esm/atomic/molecules/tabs/tabs.css.js +18 -9
  132. package/lib/esm/atomic/molecules/tabs/tabs.css.js.map +1 -1
  133. package/lib/esm/atomic/molecules/toast/ToastProvider.js +83 -0
  134. package/lib/esm/atomic/molecules/toast/ToastProvider.js.map +1 -0
  135. package/lib/esm/atomic/molecules/toast/ToastViewport.js +76 -0
  136. package/lib/esm/atomic/molecules/toast/ToastViewport.js.map +1 -0
  137. package/lib/esm/atomic/molecules/toast/constants.js +6 -0
  138. package/lib/esm/atomic/molecules/toast/constants.js.map +1 -0
  139. package/lib/esm/atomic/molecules/toast/toast.css.js +18 -0
  140. package/lib/esm/atomic/molecules/toast/toast.css.js.map +1 -0
  141. package/lib/esm/components/charts/BillingUsageLineChart.js +140 -173
  142. package/lib/esm/components/charts/BillingUsageLineChart.js.map +1 -1
  143. package/lib/esm/components/charts/billingUsageLineChart.css.js +8 -12
  144. package/lib/esm/components/charts/billingUsageLineChart.css.js.map +1 -1
  145. package/lib/esm/components/data-table/DataTable.css.js +84 -0
  146. package/lib/esm/components/data-table/DataTable.css.js.map +1 -0
  147. package/lib/esm/components/data-table/DataTable.js +74 -0
  148. package/lib/esm/components/data-table/DataTable.js.map +1 -0
  149. package/lib/esm/components/data-table/TableCell.css.js +18 -0
  150. package/lib/esm/components/data-table/TableCell.css.js.map +1 -0
  151. package/lib/esm/components/data-table/TableCell.js +75 -0
  152. package/lib/esm/components/data-table/TableCell.js.map +1 -0
  153. package/lib/esm/components/data-table/TableCellBase.js +19 -0
  154. package/lib/esm/components/data-table/TableCellBase.js.map +1 -0
  155. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js +8 -0
  156. package/lib/esm/components/data-table/VirtualizedConnectionTable.css.js.map +1 -0
  157. package/lib/esm/components/data-table/VirtualizedConnectionTable.js +191 -0
  158. package/lib/esm/components/data-table/VirtualizedConnectionTable.js.map +1 -0
  159. package/lib/esm/components/data-table/tableBreakpoints.js +31 -0
  160. package/lib/esm/components/data-table/tableBreakpoints.js.map +1 -0
  161. package/lib/esm/components/layout/ContentLayout.css.js +8 -18
  162. package/lib/esm/components/layout/ContentLayout.css.js.map +1 -1
  163. package/lib/esm/components/layout/ContentLayout.js +68 -78
  164. package/lib/esm/components/layout/ContentLayout.js.map +1 -1
  165. package/lib/esm/components/layout/TabsContentLayout.css.js +8 -11
  166. package/lib/esm/components/layout/TabsContentLayout.css.js.map +1 -1
  167. package/lib/esm/components/layout/TabsContentLayout.js +30 -13
  168. package/lib/esm/components/layout/TabsContentLayout.js.map +1 -1
  169. package/lib/esm/components/select/SimpleSelect.css.js +17 -0
  170. package/lib/esm/components/select/SimpleSelect.css.js.map +1 -0
  171. package/lib/esm/components/select/SimpleSelect.js +185 -0
  172. package/lib/esm/components/select/SimpleSelect.js.map +1 -0
  173. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js +8 -0
  174. package/lib/esm/components/subscriptions/RefetchNeededBanner.css.js.map +1 -0
  175. package/lib/esm/components/subscriptions/RefetchNeededBanner.js +32 -0
  176. package/lib/esm/components/subscriptions/RefetchNeededBanner.js.map +1 -0
  177. package/lib/esm/components/tile/InfoTile.css.js +8 -18
  178. package/lib/esm/components/tile/InfoTile.css.js.map +1 -1
  179. package/lib/esm/components/tile/InfoTile.js +62 -67
  180. package/lib/esm/components/tile/InfoTile.js.map +1 -1
  181. package/lib/esm/i18n/useUiTranslation.js +9 -0
  182. package/lib/esm/i18n/useUiTranslation.js.map +1 -0
  183. package/lib/esm/icons/BanSvg.js +29 -44
  184. package/lib/esm/icons/BanSvg.js.map +1 -1
  185. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js +26 -41
  186. package/lib/esm/icons/ButtonLoadingSpinnerSvg.js.map +1 -1
  187. package/lib/esm/icons/ChatCheckSvg.js +27 -42
  188. package/lib/esm/icons/ChatCheckSvg.js.map +1 -1
  189. package/lib/esm/icons/ChatSizeLargeSvg.js +49 -70
  190. package/lib/esm/icons/ChatSizeLargeSvg.js.map +1 -1
  191. package/lib/esm/icons/ChatSizeMediumSvg.js +43 -61
  192. package/lib/esm/icons/ChatSizeMediumSvg.js.map +1 -1
  193. package/lib/esm/icons/ChatSizeSmallSvg.js +37 -52
  194. package/lib/esm/icons/ChatSizeSmallSvg.js.map +1 -1
  195. package/lib/esm/icons/ChatXSvg.js +27 -42
  196. package/lib/esm/icons/ChatXSvg.js.map +1 -1
  197. package/lib/esm/icons/CheckSvg.js +21 -30
  198. package/lib/esm/icons/CheckSvg.js.map +1 -1
  199. package/lib/esm/icons/ChevronDownSvg.js +21 -30
  200. package/lib/esm/icons/ChevronDownSvg.js.map +1 -1
  201. package/lib/esm/icons/ChevronLeftSvg.js +21 -30
  202. package/lib/esm/icons/ChevronLeftSvg.js.map +1 -1
  203. package/lib/esm/icons/ChevronRightSvg.js +21 -30
  204. package/lib/esm/icons/ChevronRightSvg.js.map +1 -1
  205. package/lib/esm/icons/ClockSvg.js +29 -44
  206. package/lib/esm/icons/ClockSvg.js.map +1 -1
  207. package/lib/esm/icons/CoinOffSvg.js +47 -65
  208. package/lib/esm/icons/CoinOffSvg.js.map +1 -1
  209. package/lib/esm/icons/CoinSvg.js +40 -55
  210. package/lib/esm/icons/CoinSvg.js.map +1 -1
  211. package/lib/esm/icons/DatabaseCheckSvg.js +47 -65
  212. package/lib/esm/icons/DatabaseCheckSvg.js.map +1 -1
  213. package/lib/esm/icons/DatabaseXSvg.js +47 -65
  214. package/lib/esm/icons/DatabaseXSvg.js.map +1 -1
  215. package/lib/esm/icons/DevModeSvg.js +21 -30
  216. package/lib/esm/icons/DevModeSvg.js.map +1 -1
  217. package/lib/esm/icons/EyeSvg.js +27 -33
  218. package/lib/esm/icons/EyeSvg.js.map +1 -1
  219. package/lib/esm/icons/FormErrorAlertSvg.js +37 -29
  220. package/lib/esm/icons/FormErrorAlertSvg.js.map +1 -1
  221. package/lib/esm/icons/GlobeSvg.js +18 -27
  222. package/lib/esm/icons/GlobeSvg.js.map +1 -1
  223. package/lib/esm/icons/GripDotsSvg.js +52 -29
  224. package/lib/esm/icons/GripDotsSvg.js.map +1 -1
  225. package/lib/esm/icons/HomeActivityAssignUserSvg.js +44 -62
  226. package/lib/esm/icons/HomeActivityAssignUserSvg.js.map +1 -1
  227. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js +27 -42
  228. package/lib/esm/icons/HomeStatsCheckBadgeSvg.js.map +1 -1
  229. package/lib/esm/icons/HomeStatsClipboardSvg.js +27 -42
  230. package/lib/esm/icons/HomeStatsClipboardSvg.js.map +1 -1
  231. package/lib/esm/icons/HomeStatsClockSvg.js +27 -42
  232. package/lib/esm/icons/HomeStatsClockSvg.js.map +1 -1
  233. package/lib/esm/icons/KeyOffSvg.js +39 -54
  234. package/lib/esm/icons/KeyOffSvg.js.map +1 -1
  235. package/lib/esm/icons/KeySvg.js +39 -54
  236. package/lib/esm/icons/KeySvg.js.map +1 -1
  237. package/lib/esm/icons/KronexSvg.js +28 -43
  238. package/lib/esm/icons/KronexSvg.js.map +1 -1
  239. package/lib/esm/icons/LinkCheckSvg.js +37 -52
  240. package/lib/esm/icons/LinkCheckSvg.js.map +1 -1
  241. package/lib/esm/icons/LinkSvg.js +27 -42
  242. package/lib/esm/icons/LinkSvg.js.map +1 -1
  243. package/lib/esm/icons/LinkXSvg.js +37 -52
  244. package/lib/esm/icons/LinkXSvg.js.map +1 -1
  245. package/lib/esm/icons/LockOpenSvg.js +31 -46
  246. package/lib/esm/icons/LockOpenSvg.js.map +1 -1
  247. package/lib/esm/icons/LockSvg.js +31 -46
  248. package/lib/esm/icons/LockSvg.js.map +1 -1
  249. package/lib/esm/icons/MailCheckSvg.js +41 -56
  250. package/lib/esm/icons/MailCheckSvg.js.map +1 -1
  251. package/lib/esm/icons/MailSvg.js +31 -46
  252. package/lib/esm/icons/MailSvg.js.map +1 -1
  253. package/lib/esm/icons/MailXSvg.js +41 -56
  254. package/lib/esm/icons/MailXSvg.js.map +1 -1
  255. package/lib/esm/icons/ModalCloseSvg.js +27 -42
  256. package/lib/esm/icons/ModalCloseSvg.js.map +1 -1
  257. package/lib/esm/icons/PencilSvg.js +14 -20
  258. package/lib/esm/icons/PencilSvg.js.map +1 -1
  259. package/lib/esm/icons/PinFilledSvg.js +24 -40
  260. package/lib/esm/icons/PinFilledSvg.js.map +1 -1
  261. package/lib/esm/icons/PinSvg.js +27 -43
  262. package/lib/esm/icons/PinSvg.js.map +1 -1
  263. package/lib/esm/icons/ProfileDropdownLogoutSvg.js +37 -52
  264. package/lib/esm/icons/ProfileDropdownLogoutSvg.js.map +1 -1
  265. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js +27 -42
  266. package/lib/esm/icons/ProfileDropdownOrganizationSvg.js.map +1 -1
  267. package/lib/esm/icons/ProjectsFolderSvg.js +21 -30
  268. package/lib/esm/icons/ProjectsFolderSvg.js.map +1 -1
  269. package/lib/esm/icons/RobotCheckSvg.js +60 -68
  270. package/lib/esm/icons/RobotCheckSvg.js.map +1 -1
  271. package/lib/esm/icons/RobotSvg.js +53 -58
  272. package/lib/esm/icons/RobotSvg.js.map +1 -1
  273. package/lib/esm/icons/RobotXSvg.js +60 -68
  274. package/lib/esm/icons/RobotXSvg.js.map +1 -1
  275. package/lib/esm/icons/RocketOffSvg.js +58 -83
  276. package/lib/esm/icons/RocketOffSvg.js.map +1 -1
  277. package/lib/esm/icons/RocketSvg.js +51 -73
  278. package/lib/esm/icons/RocketSvg.js.map +1 -1
  279. package/lib/esm/icons/SendCheckSvg.js +40 -55
  280. package/lib/esm/icons/SendCheckSvg.js.map +1 -1
  281. package/lib/esm/icons/SendMessageSvg.js +30 -45
  282. package/lib/esm/icons/SendMessageSvg.js.map +1 -1
  283. package/lib/esm/icons/SendXSvg.js +40 -55
  284. package/lib/esm/icons/SendXSvg.js.map +1 -1
  285. package/lib/esm/icons/SettingsCheckSvg.js +37 -52
  286. package/lib/esm/icons/SettingsCheckSvg.js.map +1 -1
  287. package/lib/esm/icons/SettingsXSvg.js +37 -52
  288. package/lib/esm/icons/SettingsXSvg.js.map +1 -1
  289. package/lib/esm/icons/ShieldLockSvg.js +41 -56
  290. package/lib/esm/icons/ShieldLockSvg.js.map +1 -1
  291. package/lib/esm/icons/ShieldOffSvg.js +27 -42
  292. package/lib/esm/icons/ShieldOffSvg.js.map +1 -1
  293. package/lib/esm/icons/SidebarHomeSvg.js +27 -42
  294. package/lib/esm/icons/SidebarHomeSvg.js.map +1 -1
  295. package/lib/esm/icons/SidebarInitiativesSvg.js +37 -52
  296. package/lib/esm/icons/SidebarInitiativesSvg.js.map +1 -1
  297. package/lib/esm/icons/SidebarPlusSvg.js +27 -42
  298. package/lib/esm/icons/SidebarPlusSvg.js.map +1 -1
  299. package/lib/esm/icons/SidebarSearchSvg.js +27 -42
  300. package/lib/esm/icons/SidebarSearchSvg.js.map +1 -1
  301. package/lib/esm/icons/SidebarSettingsSvg.js +27 -42
  302. package/lib/esm/icons/SidebarSettingsSvg.js.map +1 -1
  303. package/lib/esm/icons/SidebarTasksSvg.js +27 -42
  304. package/lib/esm/icons/SidebarTasksSvg.js.map +1 -1
  305. package/lib/esm/icons/SidebarTeamSvg.js +44 -62
  306. package/lib/esm/icons/SidebarTeamSvg.js.map +1 -1
  307. package/lib/esm/icons/TaskAttachmentSvg.js +21 -30
  308. package/lib/esm/icons/TaskAttachmentSvg.js.map +1 -1
  309. package/lib/esm/icons/TaskCalendarSvg.js +44 -62
  310. package/lib/esm/icons/TaskCalendarSvg.js.map +1 -1
  311. package/lib/esm/icons/TaskCommentBubbleSvg.js +21 -30
  312. package/lib/esm/icons/TaskCommentBubbleSvg.js.map +1 -1
  313. package/lib/esm/icons/TaskDeleteSvg.js +27 -42
  314. package/lib/esm/icons/TaskDeleteSvg.js.map +1 -1
  315. package/lib/esm/icons/TaskDependencyBlockedSvg.js +27 -43
  316. package/lib/esm/icons/TaskDependencyBlockedSvg.js.map +1 -1
  317. package/lib/esm/icons/TaskDependencyReadySvg.js +27 -43
  318. package/lib/esm/icons/TaskDependencyReadySvg.js.map +1 -1
  319. package/lib/esm/icons/TaskMenuDotsSvg.js +37 -52
  320. package/lib/esm/icons/TaskMenuDotsSvg.js.map +1 -1
  321. package/lib/esm/icons/TaskTagSvg.js +27 -42
  322. package/lib/esm/icons/TaskTagSvg.js.map +1 -1
  323. package/lib/esm/icons/TeamMemberEmailSvg.js +27 -42
  324. package/lib/esm/icons/TeamMemberEmailSvg.js.map +1 -1
  325. package/lib/esm/icons/TeamMemberLocationSvg.js +27 -42
  326. package/lib/esm/icons/TeamMemberLocationSvg.js.map +1 -1
  327. package/lib/esm/icons/WrenchSvg.js +21 -30
  328. package/lib/esm/icons/WrenchSvg.js.map +1 -1
  329. package/lib/esm/icons/XBadgeSvg.js +27 -42
  330. package/lib/esm/icons/XBadgeSvg.js.map +1 -1
  331. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js +30 -42
  332. package/lib/esm/icons/markdown/MarkdownCheckboxCheckedSvg.js.map +1 -1
  333. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js +22 -28
  334. package/lib/esm/icons/markdown/MarkdownCheckboxUncheckedSvg.js.map +1 -1
  335. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js +41 -53
  336. package/lib/esm/icons/markdown/MarkdownCopySuccessSvg.js.map +1 -1
  337. package/lib/esm/icons/markdown/MarkdownCopySvg.js +30 -42
  338. package/lib/esm/icons/markdown/MarkdownCopySvg.js.map +1 -1
  339. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js +39 -51
  340. package/lib/esm/icons/markdown/MarkdownExternalLinkSvg.js.map +1 -1
  341. package/lib/esm/index.js +33 -55
  342. package/lib/esm/style.css +2 -0
  343. package/lib/esm/style.js +4 -0
  344. package/lib/esm/styles/slots.js +0 -0
  345. package/lib/esm/svg/ChevronDownIcon.js +11 -10
  346. package/lib/esm/svg/ChevronDownIcon.js.map +1 -1
  347. package/lib/esm/svg/ChevronRightIcon.js +11 -9
  348. package/lib/esm/svg/ChevronRightIcon.js.map +1 -1
  349. package/lib/esm/svg/GlobeIcon.js +11 -6
  350. package/lib/esm/svg/GlobeIcon.js.map +1 -1
  351. package/lib/esm/theme/ThemeProvider.js +33 -37
  352. package/lib/esm/theme/ThemeProvider.js.map +1 -1
  353. package/lib/esm/theme/VisuallyHidden.js +12 -8
  354. package/lib/esm/theme/VisuallyHidden.js.map +1 -1
  355. package/lib/esm/theme/accessibility.css.js +7 -8
  356. package/lib/esm/theme/accessibility.css.js.map +1 -1
  357. package/lib/esm/theme/colors.js +101 -100
  358. package/lib/esm/theme/colors.js.map +1 -1
  359. package/lib/esm/theme/common.js +122 -123
  360. package/lib/esm/theme/common.js.map +1 -1
  361. package/lib/esm/theme/containerQueries.js +14 -13
  362. package/lib/esm/theme/containerQueries.js.map +1 -1
  363. package/lib/esm/theme/global.css.js +1 -2
  364. package/lib/esm/theme/index.js +9 -28
  365. package/lib/esm/theme/sprinkles.css.js +68484 -9
  366. package/lib/esm/theme/sprinkles.css.js.map +1 -1
  367. package/lib/esm/theme/theme.css.js +1 -2
  368. package/lib/esm/theme/themeContract.js +1025 -1035
  369. package/lib/esm/theme/themeContract.js.map +1 -1
  370. package/lib/esm/theme/tools.js +16 -19
  371. package/lib/esm/theme/tools.js.map +1 -1
  372. package/lib/i18n/useUiTranslation.d.ts +3 -0
  373. package/lib/i18n/useUiTranslation.d.ts.map +1 -0
  374. package/lib/i18n/useUiTranslation.js +5 -0
  375. package/lib/index.d.ts +10 -0
  376. package/lib/index.d.ts.map +1 -1
  377. package/lib/index.js +11 -1
  378. package/lib/style.d.ts +5 -0
  379. package/lib/style.d.ts.map +1 -0
  380. package/lib/style.js +5 -0
  381. package/lib/styles/slots.d.ts +2 -0
  382. package/lib/styles/slots.d.ts.map +1 -0
  383. package/lib/styles/slots.js +2 -0
  384. package/lib/types/atomic/atoms/button/Button.d.ts.map +1 -1
  385. package/lib/types/atomic/atoms/formatted-date/FormattedDate.d.ts +14 -0
  386. package/lib/types/atomic/atoms/formatted-date/FormattedDate.d.ts.map +1 -0
  387. package/lib/types/atomic/atoms/icon-button/IconMenuButton.d.ts +8 -0
  388. package/lib/types/atomic/atoms/icon-button/IconMenuButton.d.ts.map +1 -0
  389. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts +14 -0
  390. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuDropdown.d.ts.map +1 -0
  391. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts +13 -0
  392. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbMenuPopover.d.ts.map +1 -0
  393. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts +13 -0
  394. package/lib/types/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.d.ts.map +1 -0
  395. package/lib/types/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts +25 -0
  396. package/lib/types/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.d.ts.map +1 -0
  397. package/lib/types/atomic/molecules/breadcrumb_navigation/types.d.ts +15 -0
  398. package/lib/types/atomic/molecules/breadcrumb_navigation/types.d.ts.map +1 -0
  399. package/lib/types/atomic/molecules/dropdown/Dropdown.d.ts +26 -0
  400. package/lib/types/atomic/molecules/dropdown/Dropdown.d.ts.map +1 -0
  401. package/lib/types/atomic/molecules/dropdown/dropdown.css.d.ts +8 -0
  402. package/lib/types/atomic/molecules/dropdown/dropdown.css.d.ts.map +1 -0
  403. package/lib/types/atomic/molecules/form-actions/FormActions.d.ts +16 -0
  404. package/lib/types/atomic/molecules/form-actions/FormActions.d.ts.map +1 -0
  405. package/lib/types/atomic/molecules/toast/ToastProvider.d.ts +19 -0
  406. package/lib/types/atomic/molecules/toast/ToastProvider.d.ts.map +1 -0
  407. package/lib/types/atomic/molecules/toast/ToastViewport.d.ts +24 -0
  408. package/lib/types/atomic/molecules/toast/ToastViewport.d.ts.map +1 -0
  409. package/lib/types/atomic/molecules/toast/constants.d.ts +2 -0
  410. package/lib/types/atomic/molecules/toast/constants.d.ts.map +1 -0
  411. package/lib/types/atomic/molecules/toast/toast.css.d.ts +25 -0
  412. package/lib/types/atomic/molecules/toast/toast.css.d.ts.map +1 -0
  413. package/lib/types/components/data-table/DataTable.css.d.ts +61 -0
  414. package/lib/types/components/data-table/DataTable.css.d.ts.map +1 -0
  415. package/lib/types/components/data-table/DataTable.d.ts +32 -0
  416. package/lib/types/components/data-table/DataTable.d.ts.map +1 -0
  417. package/lib/types/components/data-table/TableCell.css.d.ts +26 -0
  418. package/lib/types/components/data-table/TableCell.css.d.ts.map +1 -0
  419. package/lib/types/components/data-table/TableCell.d.ts +46 -0
  420. package/lib/types/components/data-table/TableCell.d.ts.map +1 -0
  421. package/lib/types/components/data-table/TableCellBase.d.ts +13 -0
  422. package/lib/types/components/data-table/TableCellBase.d.ts.map +1 -0
  423. package/lib/types/components/data-table/VirtualizedConnectionTable.css.d.ts +5 -0
  424. package/lib/types/components/data-table/VirtualizedConnectionTable.css.d.ts.map +1 -0
  425. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts +32 -0
  426. package/lib/types/components/data-table/VirtualizedConnectionTable.d.ts.map +1 -0
  427. package/lib/types/components/data-table/tableBreakpoints.d.ts +9 -0
  428. package/lib/types/components/data-table/tableBreakpoints.d.ts.map +1 -0
  429. package/lib/types/components/select/SimpleSelect.css.d.ts +23 -0
  430. package/lib/types/components/select/SimpleSelect.css.d.ts.map +1 -0
  431. package/lib/types/components/select/SimpleSelect.d.ts +22 -0
  432. package/lib/types/components/select/SimpleSelect.d.ts.map +1 -0
  433. package/lib/types/components/subscriptions/RefetchNeededBanner.css.d.ts +5 -0
  434. package/lib/types/components/subscriptions/RefetchNeededBanner.css.d.ts.map +1 -0
  435. package/lib/types/components/subscriptions/RefetchNeededBanner.d.ts +9 -0
  436. package/lib/types/components/subscriptions/RefetchNeededBanner.d.ts.map +1 -0
  437. package/lib/types/i18n/useUiTranslation.d.ts +3 -0
  438. package/lib/types/i18n/useUiTranslation.d.ts.map +1 -0
  439. package/lib/types/index.d.ts +10 -0
  440. package/lib/types/index.d.ts.map +1 -1
  441. package/lib/types/style.d.ts +5 -0
  442. package/lib/types/style.d.ts.map +1 -0
  443. package/lib/types/styles/slots.d.ts +2 -0
  444. package/lib/types/styles/slots.d.ts.map +1 -0
  445. package/package.json +12 -4
  446. package/src/i18n/locales/en/ui.json +53 -0
  447. package/src/i18n/locales/fr/ui.json +53 -0
  448. package/src/i18n/useUiTranslation.ts +6 -0
  449. package/lib/esm/atomic/atoms/badge/badge.css.ts.vanilla-BxMgYgcH.css +0 -1
  450. package/lib/esm/atomic/atoms/button/button.css.ts.vanilla-BYFxDZro.css +0 -1
  451. package/lib/esm/atomic/atoms/checkbox/checkbox.css.ts.vanilla-D6TvWxlo.css +0 -1
  452. package/lib/esm/atomic/atoms/input/input.css.ts.vanilla-D_X5_tcn.css +0 -1
  453. package/lib/esm/atomic/atoms/textarea/textarea.css.ts.vanilla-IrvNTQEt.css +0 -1
  454. package/lib/esm/atomic/molecules/tabs/tabs.css.ts.vanilla-DQm5wO0K.css +0 -1
  455. package/lib/esm/components/charts/billingUsageLineChart.css.ts.vanilla-7e3dy1Dj.css +0 -1
  456. package/lib/esm/components/tile/InfoTile.css.ts.vanilla-ByCg4UKz.css +0 -1
  457. package/lib/esm/index.js.map +0 -1
  458. package/lib/esm/theme/accessibility.css.ts.vanilla-D6gfeWvf.css +0 -1
  459. package/lib/esm/theme/global.css.js.map +0 -1
  460. package/lib/esm/theme/global.css.ts.vanilla-ClXnHnoy.css +0 -1
  461. package/lib/esm/theme/index.js.map +0 -1
  462. package/lib/esm/theme/sprinkles.css.ts.vanilla-DOI5FNoi.css +0 -1
  463. package/lib/esm/theme/theme.css.js.map +0 -1
  464. package/lib/esm/theme/theme.css.ts.vanilla-a3SsXff5.css +0 -1
  465. /package/lib/esm/{components/layout/TabsContentLayout.css.ts.vanilla-tn0RQdqM.css → atomic/molecules/breadcrumb_navigation/types.js} +0 -0
@@ -0,0 +1,63 @@
1
+ import { cx as e } from "../../../theme/tools.js";
2
+ import { useUiTranslation as t } from "../../../i18n/useUiTranslation.js";
3
+ import { breadcrumb as n, breadcrumbItem as r, breadcrumbList as i, breadcrumbSeparator as a, homeIcon as o, homeLink as s } from "./breadcrumbNavigation.css.js";
4
+ import { BreadcrumbMenuDropdown as c } from "./BreadcrumbMenuDropdown.js";
5
+ import { SidebarHomeSvg as l } from "../../../icons/SidebarHomeSvg.js";
6
+ import { jsx as u } from "react/jsx-runtime";
7
+ import { Link as d } from "@plumile/router";
8
+ //#region src/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.tsx
9
+ var f = (f) => {
10
+ let { organization: p, group: m, project: h, groupMenu: g, projectMenu: _, className: v } = f, { t: y } = t(), b = y("navigation.breadcrumb.empty.matches"), x = y("navigation.breadcrumb.search.groups"), S = y("navigation.breadcrumb.empty.groups"), C = y("navigation.breadcrumb.menu.group"), w = y("navigation.breadcrumb.search.projects"), T = y("navigation.breadcrumb.empty.projects"), E = y("navigation.breadcrumb.menu.project"), D = [];
11
+ D.push(/* @__PURE__ */ u("li", {
12
+ className: r,
13
+ children: /* @__PURE__ */ u(d, {
14
+ to: p.to,
15
+ className: s,
16
+ "aria-label": `Organization: ${p.name}`,
17
+ children: /* @__PURE__ */ u(l, {
18
+ width: 16,
19
+ height: 16,
20
+ className: o
21
+ })
22
+ })
23
+ }, "home")), m != null && D.push(/* @__PURE__ */ u("li", {
24
+ className: r,
25
+ children: /* @__PURE__ */ u(c, {
26
+ node: m,
27
+ menu: g,
28
+ ariaLabel: C,
29
+ searchPlaceholder: x,
30
+ searchAriaLabel: x,
31
+ emptyLabel: S,
32
+ emptyMatchesLabel: b
33
+ })
34
+ }, "group")), h != null && D.push(/* @__PURE__ */ u("li", {
35
+ className: r,
36
+ children: /* @__PURE__ */ u(c, {
37
+ node: h,
38
+ menu: _,
39
+ ariaLabel: E,
40
+ searchPlaceholder: w,
41
+ searchAriaLabel: w,
42
+ emptyLabel: T,
43
+ emptyMatchesLabel: b
44
+ })
45
+ }, "project"));
46
+ let O = D.flatMap((e, t) => t === 0 ? [e] : [/* @__PURE__ */ u("li", {
47
+ className: a,
48
+ "aria-hidden": "true",
49
+ children: "/"
50
+ }, `separator-${t}`), e]);
51
+ return /* @__PURE__ */ u("nav", {
52
+ className: e(n, v),
53
+ "aria-label": "Breadcrumb",
54
+ children: /* @__PURE__ */ u("ol", {
55
+ className: i,
56
+ children: O
57
+ })
58
+ });
59
+ };
60
+ //#endregion
61
+ export { f as BreadcrumbNavigation };
62
+
63
+ //# sourceMappingURL=BreadcrumbNavigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BreadcrumbNavigation.js","names":[],"sources":["../../../../../src/atomic/molecules/breadcrumb_navigation/BreadcrumbNavigation.tsx"],"sourcesContent":["import { type JSX } from 'react';\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\nimport { Link } from '@plumile/router';\nimport { SidebarHomeSvg } from '../../../icons/SidebarHomeSvg.js';\n\nimport * as styles from './breadcrumbNavigation.css.js';\nimport { cx } from '../../../theme/tools.js';\nimport { BreadcrumbMenuDropdown } from './BreadcrumbMenuDropdown.js';\nimport type { BreadcrumbMenuConfig, BreadcrumbNode } from './types.js';\n\ntype Props = {\n organization: BreadcrumbNode;\n group?: BreadcrumbNode | null;\n project?: BreadcrumbNode | null;\n groupMenu?: BreadcrumbMenuConfig;\n projectMenu?: BreadcrumbMenuConfig;\n className?: string;\n};\n\nexport const BreadcrumbNavigation = (props: Props): JSX.Element => {\n const { organization, group, project, groupMenu, projectMenu, className } =\n props;\n const { t } = useUiTranslation();\n const emptyMatchesLabel = t('navigation.breadcrumb.empty.matches');\n\n const groupSearchLabel = t('navigation.breadcrumb.search.groups');\n const groupEmptyLabel = t('navigation.breadcrumb.empty.groups');\n const groupMenuAriaLabel = t('navigation.breadcrumb.menu.group');\n\n const projectSearchLabel = t('navigation.breadcrumb.search.projects');\n const projectEmptyLabel = t('navigation.breadcrumb.empty.projects');\n const projectMenuAriaLabel = t('navigation.breadcrumb.menu.project');\n const breadcrumbItems: JSX.Element[] = [];\n\n breadcrumbItems.push(\n <li key=\"home\" className={styles.breadcrumbItem}>\n <Link\n to={organization.to}\n className={styles.homeLink}\n aria-label={`Organization: ${organization.name}`}\n >\n <SidebarHomeSvg width={16} height={16} className={styles.homeIcon} />\n </Link>\n </li>,\n );\n\n if (group != null) {\n breadcrumbItems.push(\n <li key=\"group\" className={styles.breadcrumbItem}>\n <BreadcrumbMenuDropdown\n node={group}\n menu={groupMenu}\n ariaLabel={groupMenuAriaLabel}\n searchPlaceholder={groupSearchLabel}\n searchAriaLabel={groupSearchLabel}\n emptyLabel={groupEmptyLabel}\n emptyMatchesLabel={emptyMatchesLabel}\n />\n </li>,\n );\n }\n\n if (project != null) {\n breadcrumbItems.push(\n <li key=\"project\" className={styles.breadcrumbItem}>\n <BreadcrumbMenuDropdown\n node={project}\n menu={projectMenu}\n ariaLabel={projectMenuAriaLabel}\n searchPlaceholder={projectSearchLabel}\n searchAriaLabel={projectSearchLabel}\n emptyLabel={projectEmptyLabel}\n emptyMatchesLabel={emptyMatchesLabel}\n />\n </li>,\n );\n }\n\n const breadcrumbsWithSeparators = breadcrumbItems.flatMap((item, index) => {\n if (index === 0) {\n return [item];\n }\n return [\n <li\n key={`separator-${index}`}\n className={styles.breadcrumbSeparator}\n aria-hidden=\"true\"\n >\n /{/* <ChevronRightSvg width={16} height={16} /> */}\n </li>,\n item,\n ];\n });\n\n return (\n <nav className={cx(styles.breadcrumb, className)} aria-label=\"Breadcrumb\">\n <ol className={styles.breadcrumbList}>{breadcrumbsWithSeparators}</ol>\n </nav>\n );\n};\n\nexport type {\n BreadcrumbNode,\n BreadcrumbMenuItem,\n BreadcrumbMenuConfig,\n} from './types.js';\n"],"mappings":";;;;;;;;AAmBA,IAAa,KAAwB,MAA8B;CACjE,IAAM,EAAE,iBAAc,UAAO,YAAS,cAAW,gBAAa,iBAC5D,GACI,EAAE,SAAM,GAAkB,EAC1B,IAAoB,EAAE,sCAAsC,EAE5D,IAAmB,EAAE,sCAAsC,EAC3D,IAAkB,EAAE,qCAAqC,EACzD,IAAqB,EAAE,mCAAmC,EAE1D,IAAqB,EAAE,wCAAwC,EAC/D,IAAoB,EAAE,uCAAuC,EAC7D,IAAuB,EAAE,qCAAqC,EAC9D,IAAiC,EAAE;AA8BzC,CA5BA,EAAgB,KACd,kBAAC,MAAD;EAAe,WAAW;YACxB,kBAAC,GAAD;GACE,IAAI,EAAa;GACjB,WAAW;GACX,cAAY,iBAAiB,EAAa;aAE1C,kBAAC,GAAD;IAAgB,OAAO;IAAI,QAAQ;IAAI,WAAW;IAAmB,CAAA;GAChE,CAAA;EACJ,EARG,OAQH,CACN,EAEG,KAAS,QACX,EAAgB,KACd,kBAAC,MAAD;EAAgB,WAAW;YACzB,kBAAC,GAAD;GACE,MAAM;GACN,MAAM;GACN,WAAW;GACX,mBAAmB;GACnB,iBAAiB;GACjB,YAAY;GACO;GACnB,CAAA;EACC,EAVG,QAUH,CACN,EAGC,KAAW,QACb,EAAgB,KACd,kBAAC,MAAD;EAAkB,WAAW;YAC3B,kBAAC,GAAD;GACE,MAAM;GACN,MAAM;GACN,WAAW;GACX,mBAAmB;GACnB,iBAAiB;GACjB,YAAY;GACO;GACnB,CAAA;EACC,EAVG,UAUH,CACN;CAGH,IAAM,IAA4B,EAAgB,SAAS,GAAM,MAC3D,MAAU,IACL,CAAC,EAAK,GAER,CACL,kBAAC,MAAD;EAEE,WAAW;EACX,eAAY;YACb;EAEI,EALE,aAAa,IAKf,EACL,EACD,CACD;AAEF,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,GAAmB,EAAU;EAAE,cAAW;YAC3D,kBAAC,MAAD;GAAI,WAAW;aAAwB;GAA+B,CAAA;EAClE,CAAA"}
@@ -0,0 +1,8 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ //#region src/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.ts
4
+ var e = "_1u1q1110 txvbqb9io txvbqbco", t = "_1u1q1111 txvbqb9io txvbqbco txvbqbfax txvbqbfbo txvbqbl9f txvbqbaof", n = "_1u1q1112 txvbqb9io txvbqbco", r = "_1u1q1113 txvbqb9io txvbqbai6 txvbqbcf txvbqbanx", i = "_1u1q1114 txvbqb8f txvbqbamo txvbqb66 txvbqbeef txvbqbv8t txvbqbegx", a = "_1u1q1115 txvbqb9jf txvbqbco txvbqbao6", o = "_1u1q1116 txvbqbv4z txvbqb77 txvbqb6x txvbqb7k", s = "_1u1q1117 txvbqb2w txvbqbv8p", c = "_1u1q1119 _1u1q1118 txvbqb78 txvbqb6x txvbqb7k txvbqb9jf txvbqbco txvbqb96 txvbqbamo txvbqbv8p txvbqb3b txvbqbf3x", l = "_1u1q111a txvbqb9io txvbqbco txvbqbdnx txvbqbv8t txvbqb8x txvbqbamx", u = "_1u1q111c _1u1q111b txvbqb78 txvbqb6x txvbqb7k txvbqb9io txvbqbco txvbqbdnx txvbqbtwo txvbqbc66 txvbqbk6f txvbqbjho txvbqb1rf txvbqb12f txvbqb1px txvbqbv31 txvbqbv8p txvbqbv txvbqbl9f", d = "_1u1q111d txvbqb9jf txvbqbco txvbqbdnx txvbqbc6o txvbqb1qx txvbqbv8p txvbqb78 txvbqb6x txvbqb7k", f = "_1u1q111e txvbqbv4z", p = "_1u1q111h _1u1q111g txvbqbl9x txvbqbkcx txvbqbjcf txvbqb8r6 txvbqb6l", m = "_1u1q111i txvbqb9io txvbqbai6 txvbqbaof", h = "_1u1q111j txvbqb9io txvbqbco txvbqbdoo", g = "_1u1q111k txvbqb8o txvbqbamo txvbqb66 txvbqbeef txvbqbv8t", _ = "_1u1q111l txvbqb9io", v = "_1u1q111m txvbqbfax txvbqbfbo txvbqbl9f txvbqb9io txvbqbai6 txvbqbanx txvbqbirx txvbqbl7o", y = "_1u1q111o _1u1q111n txvbqb78 txvbqb6w txvbqb7k txvbqb9io txvbqbai6 txvbqbanx txvbqboif txvbqbnv6 txvbqbp5f txvbqblx6 txvbqb1rf txvbqb3b txvbqbv8p", b = "_1u1q111p txvbqbv2j txvbqbv7z", x = "_1u1q111q txvbqb8x txvbqbamo", S = "_1u1q111r txvbqb8o txvbqbv8r", C = "_1u1q111s txvbqbl9x txvbqb8x txvbqbv8r";
5
+ //#endregion
6
+ export { e as breadcrumb, o as breadcrumbChevron, u as breadcrumbChevronButton, s as breadcrumbChevronOpen, n as breadcrumbItem, i as breadcrumbLabel, c as breadcrumbLink, t as breadcrumbList, a as breadcrumbNameRow, r as breadcrumbSection, l as breadcrumbSeparator, f as homeIcon, d as homeLink, m as popoverContent, C as popoverEmpty, h as popoverHeader, y as popoverItem, b as popoverItemActive, S as popoverItemDescription, x as popoverItemName, v as popoverList, p as popoverPanel, _ as popoverSearch, g as popoverTitle };
7
+
8
+ //# sourceMappingURL=breadcrumbNavigation.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumbNavigation.css.js","names":[],"sources":["../../../../../src/atomic/molecules/breadcrumb_navigation/breadcrumbNavigation.css.ts"],"sourcesContent":["import { keyframes, style } from '@vanilla-extract/css';\n\nimport { vars } from '../../../theme/themeContract.js';\nimport { sprinkles } from '../../../theme/sprinkles.css.js';\n\nconst displayInlineFlex = 'inline-flex';\n\nexport const breadcrumb = sprinkles({\n display: 'flex',\n alignItems: 'center',\n});\n\nexport const breadcrumbList = sprinkles({\n display: 'flex',\n alignItems: 'center',\n listStyleType: 'none',\n margin: 0,\n padding: 0,\n gap: 3,\n});\n\nexport const breadcrumbItem = sprinkles({\n display: 'flex',\n alignItems: 'center',\n});\n\nexport const breadcrumbSection = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'flex-start',\n gap: 1,\n});\n\nexport const breadcrumbLabel = sprinkles({\n fontSize: '2xs',\n fontWeight: 'semibold',\n textTransform: 'uppercase',\n letterSpacing: 'caps',\n color: 'textMuted',\n lineHeight: 1,\n});\n\nexport const breadcrumbNameRow = sprinkles({\n display: displayInlineFlex,\n alignItems: 'center',\n gap: 2,\n});\n\nexport const breadcrumbChevron = sprinkles({\n color: 'current',\n transitionProperty: 'default',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n});\n\nexport const breadcrumbChevronOpen = sprinkles({\n rotate: 180,\n color: 'text',\n});\n\nexport const breadcrumbLink = style([\n sprinkles({\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n display: displayInlineFlex,\n alignItems: 'center',\n fontSize: 'base',\n fontWeight: 'semibold',\n color: 'text',\n textDecoration: 'none',\n lineHeight: 1.2,\n }),\n {\n ':hover': {\n color: vars.colors.primary,\n textDecoration: 'none',\n },\n ':focus': {\n outline: 'none',\n color: vars.colors.primary,\n },\n },\n]);\n\nexport const breadcrumbSeparator = sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: 'textMuted',\n fontSize: 'sm',\n fontWeight: 'bold',\n});\n\nexport const breadcrumbChevronButton = style([\n sprinkles({\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: 6,\n height: 6,\n minWidth: 6,\n minHeight: 6,\n borderRadius: 'md',\n borderWidth: 0,\n borderStyle: 'none',\n backgroundColor: 'backgroundSecondary',\n color: 'text',\n cursor: 'pointer',\n padding: 0,\n }),\n {\n selectors: {\n '&:hover:not(:disabled)': {\n backgroundColor: vars.colors.backgroundTertiary,\n color: vars.colors.text,\n },\n },\n },\n]);\n\nexport const homeLink = sprinkles({\n display: displayInlineFlex,\n alignItems: 'center',\n justifyContent: 'center',\n height: 8,\n borderRadius: 'sm',\n color: 'text',\n transitionProperty: 'colors',\n transitionDuration: 150,\n transitionTimingFunction: 'ease',\n});\n\nexport const homeIcon = sprinkles({\n color: 'current',\n});\n\nconst popoverIn = keyframes({\n '0%': {\n opacity: 0,\n transform: 'translateY(-6px) scale(0.98)',\n },\n '100%': {\n opacity: 1,\n transform: 'translateY(0) scale(1)',\n },\n});\n\nexport const popoverPanel = style([\n sprinkles({\n padding: 2,\n minWidth: 64,\n maxWidth: '26rem',\n boxShadow: 'inkGlow',\n transformOrigin: 'topLeft',\n }),\n {\n animation: `${popoverIn} 160ms ease`,\n },\n]);\n\nexport const popoverContent = sprinkles({\n display: 'flex',\n flexDirection: 'column',\n gap: 3,\n});\n\nexport const popoverHeader = sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\n\nexport const popoverTitle = sprinkles({\n fontSize: 'xs',\n fontWeight: 'semibold',\n textTransform: 'uppercase',\n letterSpacing: 'caps',\n color: 'textMuted',\n});\n\nexport const popoverSearch = sprinkles({\n display: 'flex',\n});\n\nexport const popoverList = sprinkles({\n listStyleType: 'none',\n margin: 0,\n padding: 0,\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n maxHeight: 64,\n overflowY: 'auto',\n});\n\nexport const popoverItem = style([\n sprinkles({\n transitionProperty: 'colors',\n transitionDuration: 120,\n transitionTimingFunction: 'ease',\n display: 'flex',\n flexDirection: 'column',\n gap: 1,\n paddingRight: 3,\n paddingLeft: 3,\n paddingTop: 2,\n paddingBottom: 2,\n borderRadius: 'md',\n textDecoration: 'none',\n color: 'text',\n }),\n {\n ':hover': {\n backgroundColor: vars.colors.backgroundSecondary,\n color: vars.colors.text,\n },\n ':focus': {\n outline: `2px solid ${vars.colors.primaryLight}`,\n outlineOffset: 2,\n },\n },\n]);\n\nexport const popoverItemActive = sprinkles({\n backgroundColor: 'primaryLight',\n color: 'primary',\n});\n\nexport const popoverItemName = sprinkles({\n fontSize: 'sm',\n fontWeight: 'semibold',\n});\n\nexport const popoverItemDescription = sprinkles({\n fontSize: 'xs',\n color: 'textSecondary',\n});\n\nexport const popoverEmpty = sprinkles({\n padding: 2,\n fontSize: 'sm',\n color: 'textSecondary',\n});\n"],"mappings":""}
@@ -1,10 +1,8 @@
1
- /* empty css */
2
- /* empty css */
3
- var v = "_1hz8mkr0 txvbqbu6f txvbqb1rx txvbqbv4d", r = "_1hz8mkr1 txvbqb9io txvbqbco txvbqbdoo txvbqblaf", x = "_1hz8mkr2 txvbqb96 txvbqbamo txvbqbv8p", q = "_1hz8mkr3 txvbqblax";
4
- export {
5
- v as card,
6
- q as content,
7
- r as header,
8
- x as title
9
- };
10
- //# sourceMappingURL=Card.css.js.map
1
+ /* empty css */
2
+ /* empty css */
3
+ //#region src/atomic/molecules/card/Card.css.ts
4
+ var e = "_1hz8mkr0 txvbqbu6f txvbqb1rx txvbqbv4d", t = "_1hz8mkr1 txvbqb9io txvbqbco txvbqbdoo txvbqblaf", n = "_1hz8mkr2 txvbqb96 txvbqbamo txvbqbv8p", r = "_1hz8mkr3 txvbqblax";
5
+ //#endregion
6
+ export { e as card, r as content, t as header, n as title };
7
+
8
+ //# sourceMappingURL=Card.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Card.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;"}
1
+ {"version":3,"file":"Card.css.js","names":[],"sources":["../../../../../src/atomic/molecules/card/Card.css.ts"],"sourcesContent":["import { sprinkles } from '../../../theme/sprinkles.css.js';\n\nexport const card = sprinkles({\n width: 'full',\n borderRadius: 'xl',\n backgroundColor: 'brandSecondaryOrange-20',\n});\n\nexport const header = sprinkles({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: 4,\n});\n\nexport const title = sprinkles({\n fontSize: 'base',\n fontWeight: 'semibold',\n color: 'text',\n});\n\nexport const content = sprinkles({\n padding: 6,\n});\n"],"mappings":""}
@@ -1,18 +1,25 @@
1
- import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
- import { useMemo as h } from "react";
3
- import { header as p, title as u, card as N, content as f } from "./Card.css.js";
4
- import { cx as n } from "../../../theme/tools.js";
5
- const $ = (o) => {
6
- const { title: e, children: a, headerActions: s, className: c, contentClassName: l } = o, i = h(() => e == null ? null : /* @__PURE__ */ t("div", { className: p, children: [
7
- /* @__PURE__ */ r("span", { className: u, children: e }),
8
- s
9
- ] }), [s, e]), m = n(N, c), d = n(f, l);
10
- return /* @__PURE__ */ t("div", { className: m, children: [
11
- i,
12
- /* @__PURE__ */ r("div", { className: d, children: a })
13
- ] });
1
+ import { cx as e } from "../../../theme/tools.js";
2
+ import { card as t, content as n, header as r, title as i } from "./Card.css.js";
3
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
4
+ import { useMemo as s } from "react";
5
+ //#region src/atomic/molecules/card/Card.tsx
6
+ var c = (c) => {
7
+ let { title: l, children: u, headerActions: d, className: f, contentClassName: p } = c, m = s(() => l == null ? null : /* @__PURE__ */ o("div", {
8
+ className: r,
9
+ children: [/* @__PURE__ */ a("span", {
10
+ className: i,
11
+ children: l
12
+ }), d]
13
+ }), [d, l]);
14
+ return /* @__PURE__ */ o("div", {
15
+ className: e(t, f),
16
+ children: [m, /* @__PURE__ */ a("div", {
17
+ className: e(n, p),
18
+ children: u
19
+ })]
20
+ });
14
21
  };
15
- export {
16
- $ as Card
17
- };
18
- //# sourceMappingURL=Card.js.map
22
+ //#endregion
23
+ export { c as Card };
24
+
25
+ //# sourceMappingURL=Card.js.map
@@ -1 +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
+ {"version":3,"file":"Card.js","names":[],"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"],"mappings":";;;;;AAaA,IAAa,KAAQ,MAA8B;CACjD,IAAM,EAAE,OAAA,GAAO,aAAU,kBAAe,cAAW,wBAAqB,GAElE,IAAS,QACT,KAAS,OACJ,OAIP,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,QAAD;GAAM,WAAW;aAAe;GAAa,CAAA,EAC5C,EACG;KAEP,CAAC,GAAe,EAAM,CAAC;AAK1B,QACE,kBAAC,OAAD;EAAK,WAJW,EAAG,GAAa,EAAU;YAI1C,CACG,GACD,kBAAC,OAAD;GAAK,WALY,EAAG,GAAgB,EAAiB;GAKtB;GAAe,CAAA,CAC1C"}
@@ -0,0 +1,149 @@
1
+ import { cx as e } from "../../../theme/tools.js";
2
+ import { container as t, content as n, contentPositioned as r } from "./dropdown.css.js";
3
+ import { jsx as i, jsxs as a } from "react/jsx-runtime";
4
+ import { cloneElement as o, createContext as s, isValidElement as c, useCallback as l, useContext as u, useEffect as d, useLayoutEffect as f, useRef as p, useState as m } from "react";
5
+ import { createPortal as h } from "react-dom";
6
+ //#region src/atomic/molecules/dropdown/Dropdown.tsx
7
+ var g = s(null), _ = () => {
8
+ let e = u(g);
9
+ if (e == null) throw Error("useDropdown must be used within a <Dropdown />");
10
+ return e;
11
+ }, v = (e) => typeof e != "object" || !e ? !1 : e.$$typeof === Symbol.for("react.forward_ref"), y = ({ trigger: s, children: u, className: _, contentClassName: y, placement: b = "bottom-start", offset: x = 4, matchTriggerWidth: S = !0, open: C, defaultOpen: w = !1, onOpenChange: T, closeOnItemClick: E = !1, portalContainer: D, ariaLabel: O }) => {
12
+ let k = C != null, [A, j] = m(w), M = A;
13
+ k && (M = !!C);
14
+ let N = p(null), P = p(null), F = p(null), [I, L] = m(null), R = p([]), z = l((e) => {
15
+ k || j(e), T?.(e);
16
+ }, [k, T]), B = l(() => {
17
+ z(!M);
18
+ }, [M, z]), V = l(() => {
19
+ z(!1);
20
+ }, [z]), ee = l(() => {
21
+ z(!0);
22
+ }, [z]), H = l(() => {
23
+ let e = P.current, t = F.current;
24
+ if (e == null || t == null) return;
25
+ let n = e.getBoundingClientRect(), r = 0, i = 0;
26
+ switch (b) {
27
+ case "bottom-start":
28
+ r = n.bottom + x, i = n.left;
29
+ break;
30
+ case "bottom-end":
31
+ r = n.bottom + x, i = n.right - t.offsetWidth;
32
+ break;
33
+ case "top-start":
34
+ r = n.top - t.offsetHeight - x, i = n.left;
35
+ break;
36
+ case "top-end":
37
+ r = n.top - t.offsetHeight - x, i = n.right - t.offsetWidth;
38
+ break;
39
+ default: r = n.bottom + x, i = n.left;
40
+ }
41
+ let a = window.innerWidth, o = window.innerHeight, s;
42
+ S && (s = n.width);
43
+ let c = s ?? t.offsetWidth;
44
+ i + c > a - 4 && (i = Math.max(4, a - c - 4)), i < 4 && (i = 4);
45
+ let l = t.offsetHeight;
46
+ if (r + l > o - 4) if (b.startsWith("bottom")) {
47
+ let e = n.top - l - x;
48
+ r = e >= 4 ? e : Math.max(4, o - l - 4);
49
+ } else r = Math.max(4, o - l - 4);
50
+ r < 4 && (r = 4), L({
51
+ top: r,
52
+ left: i,
53
+ width: s
54
+ });
55
+ }, [
56
+ b,
57
+ x,
58
+ S
59
+ ]);
60
+ f(() => {
61
+ M && H();
62
+ }, [
63
+ M,
64
+ H,
65
+ u
66
+ ]), d(() => {
67
+ if (!M) return;
68
+ let e = () => {
69
+ H();
70
+ };
71
+ window.addEventListener("resize", e), window.addEventListener("scroll", e, !0), R.current.push(() => {
72
+ window.removeEventListener("resize", e), window.removeEventListener("scroll", e, !0);
73
+ });
74
+ }, [M, H]), d(() => {
75
+ if (!M) return;
76
+ let e = (e) => {
77
+ let t = e.target;
78
+ N.current != null && F.current != null && !N.current.contains(t) && !F.current.contains(t) && V();
79
+ }, t = (e) => {
80
+ e.key === "Escape" && (V(), P.current?.focus());
81
+ };
82
+ document.addEventListener("mousedown", e), document.addEventListener("keydown", t), R.current.push(() => {
83
+ document.removeEventListener("mousedown", e), document.removeEventListener("keydown", t);
84
+ });
85
+ }, [M, V]), d(() => {
86
+ M && (F.current?.querySelector("button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])"))?.focus();
87
+ }, [M]), d(() => {
88
+ if (!M || !E) return;
89
+ let e = (e) => {
90
+ F.current?.contains(e.target) && V();
91
+ };
92
+ document.addEventListener("click", e, { capture: !0 }), R.current.push(() => {
93
+ document.removeEventListener("click", e, { capture: !0 });
94
+ });
95
+ }, [
96
+ M,
97
+ E,
98
+ V
99
+ ]), d(() => () => {
100
+ R.current.forEach((e) => {
101
+ e();
102
+ }), R.current = [];
103
+ }, []);
104
+ let U = s;
105
+ if (typeof s == "function" && (U = s(M)), !c(U)) throw Error("Dropdown trigger must be a React element.");
106
+ let W = typeof U.type == "string", G = W && U.type === "button";
107
+ if (!(W || typeof U.type == "function" || v(U.type))) throw Error("Dropdown trigger must be a DOM element or component that accepts a ref.");
108
+ let K = U.props.ref ?? U.ref, q = (e) => {
109
+ P.current = e, typeof K == "function" ? K(e) : K != null && (K.current = e);
110
+ }, J = U.props, Y = (e) => {
111
+ J.onClick?.(e), !e.defaultPrevented && B();
112
+ }, X = (e) => {
113
+ J.onKeyDown?.(e), !e.defaultPrevented && (e.key === "Enter" || e.key === " ") && (e.preventDefault(), B());
114
+ }, Z = {
115
+ onClick: Y,
116
+ "aria-haspopup": "menu",
117
+ "aria-expanded": M
118
+ };
119
+ O != null && O !== "" && (Z["aria-label"] = O), G ? J.type ?? (Z.type = "button") : (Z.onKeyDown = X, J.role ?? (Z.role = "button"), J.tabIndex ?? (Z.tabIndex = 0)), Z.ref = q;
120
+ let Q = {};
121
+ I != null && (Q = {
122
+ top: I.top,
123
+ left: I.left,
124
+ width: I.width
125
+ });
126
+ let te = D ?? document.body, ne = {
127
+ close: V,
128
+ open: ee,
129
+ isOpen: M
130
+ }, $ = null;
131
+ return M && ($ = h(/* @__PURE__ */ i("div", {
132
+ ref: F,
133
+ role: "menu",
134
+ className: e(n, r, y),
135
+ style: Q,
136
+ children: u
137
+ }), te)), /* @__PURE__ */ a(g.Provider, {
138
+ value: ne,
139
+ children: [/* @__PURE__ */ i("div", {
140
+ className: e(t, _),
141
+ ref: N,
142
+ children: o(U, Z)
143
+ }), $]
144
+ });
145
+ };
146
+ //#endregion
147
+ export { y as Dropdown, _ as useDropdown };
148
+
149
+ //# sourceMappingURL=Dropdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dropdown.js","names":[],"sources":["../../../../../src/atomic/molecules/dropdown/Dropdown.tsx"],"sourcesContent":["import {\n useState,\n useRef,\n useEffect,\n useLayoutEffect,\n useCallback,\n type ReactNode,\n type ReactElement,\n type JSX,\n type Ref,\n type MutableRefObject,\n type HTMLAttributes,\n type MouseEvent as ReactMouseEvent,\n type KeyboardEvent as ReactKeyboardEvent,\n createContext,\n useContext,\n isValidElement,\n cloneElement,\n} from 'react';\nimport { createPortal } from 'react-dom';\n\nimport * as classes from './dropdown.css.js';\nimport { cx } from '../../../theme/tools.js';\n\n// Types\nexport type DropdownPlacement =\n | 'bottom-start'\n | 'bottom-end'\n | 'top-start'\n | 'top-end';\n\ninterface DropdownContextValue {\n close: () => void;\n open: () => void;\n isOpen: boolean;\n}\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n/**\n * Access the nearest Dropdown context. Throws if used outside a <Dropdown />.\n */\nexport const useDropdown = (): DropdownContextValue => {\n const ctx = useContext(DropdownContext);\n if (ctx == null) {\n throw new Error('useDropdown must be used within a <Dropdown />');\n }\n return ctx;\n};\n\nexport interface DropdownProps {\n trigger: ReactElement | ((isOpen: boolean) => ReactElement);\n children: ReactNode;\n className?: string;\n contentClassName?: string;\n placement?: DropdownPlacement;\n offset?: number;\n matchTriggerWidth?: boolean;\n open?: boolean; // controlled\n defaultOpen?: boolean; // uncontrolled\n onOpenChange?: (open: boolean) => void;\n closeOnItemClick?: boolean;\n portalContainer?: HTMLElement | null;\n // Accessible label if trigger is an icon only\n ariaLabel?: string;\n}\n\ninterface PositionState {\n top: number;\n left: number;\n width?: number;\n}\n\nconst isForwardRefComponent = (type: unknown): boolean => {\n if (type == null || typeof type !== 'object') {\n return false;\n }\n return (\n (type as { $$typeof?: symbol }).$$typeof === Symbol.for('react.forward_ref')\n );\n};\n\n/**\n * A scalable, portal-based dropdown component with basic collision handling,\n * controlled/uncontrolled modes, accessibility attributes, and optional\n * trigger width matching. Content is rendered in a React portal (default: document.body).\n */\nexport const Dropdown = ({\n trigger,\n children,\n className,\n contentClassName,\n placement = 'bottom-start',\n offset = 4,\n matchTriggerWidth = true,\n open,\n defaultOpen = false,\n onOpenChange,\n closeOnItemClick = false,\n portalContainer,\n ariaLabel,\n}: DropdownProps): JSX.Element => {\n const isControlled = open != null;\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n let isOpen = uncontrolledOpen;\n if (isControlled) {\n isOpen = Boolean(open);\n }\n\n const containerRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState<PositionState | null>(null);\n // Accumulate manual cleanups for effects where returning a function violates lint rules.\n const cleanupRef = useRef<(() => void)[]>([]);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(next);\n }\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const toggle = useCallback(() => {\n setOpen(!isOpen);\n }, [isOpen, setOpen]);\n const close = useCallback(() => {\n setOpen(false);\n }, [setOpen]);\n const openFn = useCallback(() => {\n setOpen(true);\n }, [setOpen]);\n\n // Positioning logic\n const computePosition = useCallback(() => {\n const triggerEl = triggerRef.current;\n const contentEl = contentRef.current;\n if (triggerEl == null) {\n return;\n }\n if (contentEl == null) {\n return;\n }\n\n const rect = triggerEl.getBoundingClientRect();\n let top = 0;\n let left = 0;\n\n switch (placement) {\n case 'bottom-start':\n top = rect.bottom + offset;\n left = rect.left;\n break;\n case 'bottom-end':\n top = rect.bottom + offset;\n left = rect.right - contentEl.offsetWidth;\n break;\n case 'top-start':\n top = rect.top - contentEl.offsetHeight - offset;\n left = rect.left;\n break;\n case 'top-end':\n top = rect.top - contentEl.offsetHeight - offset;\n left = rect.right - contentEl.offsetWidth;\n break;\n default:\n top = rect.bottom + offset;\n left = rect.left;\n }\n\n // Keep within viewport (basic collision handling)\n const vw = window.innerWidth;\n const vh = window.innerHeight;\n let width: number | undefined;\n if (matchTriggerWidth) {\n width = rect.width;\n }\n const contentWidth = width ?? contentEl.offsetWidth;\n\n if (left + contentWidth > vw - 4) {\n left = Math.max(4, vw - contentWidth - 4);\n }\n if (left < 4) left = 4;\n const contentHeight = contentEl.offsetHeight;\n if (top + contentHeight > vh - 4) {\n // Try flip to top if bottom overflows and initial was bottom\n if (placement.startsWith('bottom')) {\n const flippedTop = rect.top - contentHeight - offset;\n if (flippedTop >= 4) {\n top = flippedTop;\n } else {\n top = Math.max(4, vh - contentHeight - 4);\n }\n } else {\n top = Math.max(4, vh - contentHeight - 4);\n }\n }\n if (top < 4) top = 4;\n\n setPosition({ top, left, width });\n }, [placement, offset, matchTriggerWidth]);\n\n useLayoutEffect(() => {\n if (isOpen) computePosition();\n }, [isOpen, computePosition, children]);\n\n useEffect(() => {\n if (!isOpen) return;\n const handle = () => {\n computePosition();\n };\n window.addEventListener('resize', handle);\n window.addEventListener('scroll', handle, true);\n const cleanup = () => {\n window.removeEventListener('resize', handle);\n window.removeEventListener('scroll', handle, true);\n };\n cleanupRef.current.push(cleanup);\n }, [isOpen, computePosition]);\n\n // Outside click & Escape\n useEffect(() => {\n if (!isOpen) return;\n const onDocMouseDown = (e: globalThis.MouseEvent) => {\n const target = e.target as Node;\n if (\n containerRef.current != null &&\n contentRef.current != null &&\n !containerRef.current.contains(target) &&\n !contentRef.current.contains(target)\n ) {\n close();\n }\n };\n const onKey = (e: globalThis.KeyboardEvent) => {\n if (e.key === 'Escape') {\n close();\n triggerRef.current?.focus();\n }\n };\n document.addEventListener('mousedown', onDocMouseDown);\n document.addEventListener('keydown', onKey);\n const cleanup = () => {\n document.removeEventListener('mousedown', onDocMouseDown);\n document.removeEventListener('keydown', onKey);\n };\n cleanupRef.current.push(cleanup);\n }, [isOpen, close]);\n\n // Keyboard navigation basic (ArrowDown focuses first focusable)\n useEffect(() => {\n if (!isOpen) return;\n const firstFocusable = contentRef.current?.querySelector<HTMLElement>(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n firstFocusable?.focus();\n }, [isOpen]);\n\n // Close on item click if enabled\n useEffect(() => {\n if (!isOpen || !closeOnItemClick) return;\n const handler = (e: globalThis.MouseEvent) => {\n if (contentRef.current?.contains(e.target as Node)) {\n close();\n }\n };\n document.addEventListener('click', handler, { capture: true });\n // Explicit cleanup without returning (lint rule forbids returning arrow fn)\n const cleanup = () => {\n document.removeEventListener('click', handler, { capture: true });\n };\n // Store in ref to run on unmount / dependency change\n cleanupRef.current.push(cleanup);\n }, [isOpen, closeOnItemClick, close]);\n // Run accumulated cleanups on unmount\n useEffect(() => {\n return () => {\n cleanupRef.current.forEach((fn) => {\n fn();\n });\n cleanupRef.current = [];\n };\n }, []);\n\n let triggerElement = trigger;\n if (typeof trigger === 'function') {\n triggerElement = trigger(isOpen);\n }\n\n if (!isValidElement(triggerElement)) {\n throw new Error('Dropdown trigger must be a React element.');\n }\n\n const isHostElement = typeof triggerElement.type === 'string';\n const isButtonElement = isHostElement && triggerElement.type === 'button';\n const canAttachRef =\n isHostElement ||\n typeof triggerElement.type === 'function' ||\n isForwardRefComponent(triggerElement.type);\n\n if (!canAttachRef) {\n throw new Error(\n 'Dropdown trigger must be a DOM element or component that accepts a ref.',\n );\n }\n\n const triggerElementRef =\n (triggerElement.props as { ref?: Ref<HTMLElement> }).ref ??\n (triggerElement as ReactElement & { ref?: Ref<HTMLElement> }).ref;\n const setTriggerRef = (node: HTMLElement | null) => {\n triggerRef.current = node;\n if (typeof triggerElementRef === 'function') {\n triggerElementRef(node);\n } else if (triggerElementRef != null) {\n (triggerElementRef as MutableRefObject<HTMLElement | null>).current =\n node;\n }\n };\n\n const triggerProps = triggerElement.props as HTMLAttributes<HTMLElement> & {\n type?: string;\n };\n\n const handleTriggerClick = (event: ReactMouseEvent<HTMLElement>) => {\n triggerProps.onClick?.(event);\n if (event.defaultPrevented) {\n return;\n }\n toggle();\n };\n\n const handleTriggerKeyDown = (event: ReactKeyboardEvent<HTMLElement>) => {\n triggerProps.onKeyDown?.(event);\n if (event.defaultPrevented) {\n return;\n }\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n toggle();\n }\n };\n\n const mergedTriggerProps: Record<string, unknown> = {\n onClick: handleTriggerClick,\n 'aria-haspopup': 'menu',\n 'aria-expanded': isOpen,\n };\n\n if (ariaLabel != null && ariaLabel !== '') {\n mergedTriggerProps['aria-label'] = ariaLabel;\n }\n\n if (isButtonElement) {\n if (triggerProps.type == null) {\n mergedTriggerProps.type = 'button';\n }\n } else {\n mergedTriggerProps.onKeyDown = handleTriggerKeyDown;\n if (triggerProps.role == null) {\n mergedTriggerProps.role = 'button';\n }\n if (triggerProps.tabIndex == null) {\n mergedTriggerProps.tabIndex = 0;\n }\n }\n\n mergedTriggerProps.ref = setTriggerRef;\n\n let contentStyles: React.CSSProperties = {};\n if (position != null) {\n contentStyles = {\n top: position.top,\n left: position.left,\n width: position.width,\n };\n }\n\n const portalTarget = portalContainer ?? document.body;\n\n const contextValue: DropdownContextValue = {\n close,\n open: openFn,\n isOpen,\n };\n\n let dropdownContent: JSX.Element | null = null;\n if (isOpen) {\n dropdownContent = createPortal(\n <div\n ref={contentRef}\n role=\"menu\"\n className={cx(\n classes.content,\n classes.contentPositioned,\n contentClassName,\n )}\n style={contentStyles}\n >\n {children}\n </div>,\n portalTarget,\n );\n }\n\n return (\n <DropdownContext.Provider value={contextValue}>\n <div className={cx(classes.container, className)} ref={containerRef}>\n {cloneElement(triggerElement, mergedTriggerProps)}\n </div>\n {dropdownContent}\n </DropdownContext.Provider>\n );\n};\n"],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /* empty css */
2
+ /* empty css */
3
+ //#region src/atomic/molecules/dropdown/dropdown.css.ts
4
+ var e = "mr2gir0 txvbqbpsf", t = "mr2gir1 txvbqbuzn txvbqb1rx txvbqbuvx txvbqbl6f", n = "mr2gir2 txvbqbpso txvbqbt6x txvbqbdpf", r = "mr2gir3 txvbqb9hx", i = "mr2gir4 txvbqbl3f", a = "mr2gir5 txvbqbfax txvbqbfbo txvbqbl9f", o = "mr2gir6 txvbqbv";
5
+ //#endregion
6
+ export { e as container, t as content, n as contentPositioned, i as focusOutlineReset, r as hidden, a as menu, o as menuItem };
7
+
8
+ //# sourceMappingURL=dropdown.css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown.css.js","names":[],"sources":["../../../../../src/atomic/molecules/dropdown/dropdown.css.ts"],"sourcesContent":["import { sprinkles } from '../../../theme/sprinkles.css.js';\n\n// Container only wraps the trigger now; menu content is portaled to body.\nexport const container = sprinkles({\n position: 'relative',\n});\n\n// Base visual styling for the dropdown content. Position (top/left) is applied inline.\nexport const content = sprinkles({\n backgroundColor: 'white',\n borderRadius: 'xl',\n zIndex: 'modal',\n overflow: 'hidden',\n});\n\nexport const contentPositioned = sprinkles({\n position: 'fixed',\n top: 0,\n left: 0,\n});\n\nexport const hidden = sprinkles({\n display: 'none',\n});\n\nexport const focusOutlineReset = sprinkles({\n outline: 'none',\n});\n\nexport const menu = sprinkles({\n listStyleType: 'none',\n margin: 0,\n padding: 0,\n});\n\nexport const menuItem = sprinkles({\n cursor: 'pointer',\n});\n"],"mappings":""}
@@ -0,0 +1,32 @@
1
+ import { useUiTranslation as e } from "../../../i18n/useUiTranslation.js";
2
+ import { Button as t } from "../../atoms/button/Button.js";
3
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
4
+ //#region src/atomic/molecules/form-actions/FormActions.tsx
5
+ var i = ({ onCancel: i, cancelLabel: a, submitLabel: o, submitLoadingLabel: s, isSubmitting: c = !1, submitDisabled: l = !1, className: u, renderSubmitContent: d, submitButtonProps: f, cancelButtonProps: p }) => {
6
+ let { t: m } = e(), h = a ?? m("common.actions.cancel"), g = o ?? m("common.actions.save"), _ = s ?? m("common.actions.saving"), { className: v, disabled: y, ...b } = p ?? {}, { className: x, disabled: S, ...C } = f ?? {}, w;
7
+ w = d == null ? c ? _ : g : d(c);
8
+ let T = !!y, E = !!l || c || S === !0;
9
+ return /* @__PURE__ */ r("div", {
10
+ className: u,
11
+ children: [/* @__PURE__ */ n(t, {
12
+ type: "button",
13
+ variant: "text",
14
+ onClick: i,
15
+ disabled: T,
16
+ className: v,
17
+ ...b,
18
+ children: h
19
+ }), /* @__PURE__ */ n(t, {
20
+ type: "submit",
21
+ variant: "primary",
22
+ disabled: E,
23
+ className: x,
24
+ ...C,
25
+ children: w
26
+ })]
27
+ });
28
+ };
29
+ //#endregion
30
+ export { i as FormActions };
31
+
32
+ //# sourceMappingURL=FormActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormActions.js","names":[],"sources":["../../../../../src/atomic/molecules/form-actions/FormActions.tsx"],"sourcesContent":["import { type ComponentProps, type JSX, type ReactNode } from 'react';\n\nimport { Button } from '../../atoms/button/Button.js';\nimport { useUiTranslation } from '../../../i18n/useUiTranslation.js';\n\nexport type FormActionsProps = {\n onCancel: () => void;\n cancelLabel?: string;\n submitLabel?: string;\n submitLoadingLabel?: string;\n isSubmitting?: boolean;\n submitDisabled?: boolean;\n className?: string;\n renderSubmitContent?: (isSubmitting: boolean) => ReactNode;\n submitButtonProps?: Omit<ComponentProps<typeof Button>, 'children' | 'type'>;\n cancelButtonProps?: Omit<\n ComponentProps<typeof Button>,\n 'children' | 'type' | 'variant'\n >;\n};\n\nexport const FormActions = ({\n onCancel,\n cancelLabel,\n submitLabel,\n submitLoadingLabel,\n isSubmitting = false,\n submitDisabled = false,\n className,\n renderSubmitContent,\n submitButtonProps,\n cancelButtonProps,\n}: FormActionsProps): JSX.Element => {\n const { t } = useUiTranslation();\n const resolvedCancelLabel = cancelLabel ?? t('common.actions.cancel');\n const resolvedSubmitLabel = submitLabel ?? t('common.actions.save');\n const resolvedSubmitLoadingLabel =\n submitLoadingLabel ?? t('common.actions.saving');\n const cancelProps = cancelButtonProps ?? {};\n const {\n className: cancelClassName,\n disabled: cancelDisabled,\n ...restCancelButtonProps\n } = cancelProps;\n\n const submitProps = submitButtonProps ?? {};\n const {\n className: submitClassName,\n disabled: submitDisabledOverride,\n ...restSubmitButtonProps\n } = submitProps;\n\n let submitContent: ReactNode;\n\n if (renderSubmitContent != null) {\n submitContent = renderSubmitContent(isSubmitting);\n } else if (isSubmitting) {\n submitContent = resolvedSubmitLoadingLabel;\n } else {\n submitContent = resolvedSubmitLabel;\n }\n\n const isCancelDisabled = Boolean(cancelDisabled);\n const isSubmitDisabled =\n Boolean(submitDisabled) || isSubmitting || submitDisabledOverride === true;\n\n return (\n <div className={className}>\n <Button\n type=\"button\"\n variant=\"text\"\n onClick={onCancel}\n disabled={isCancelDisabled}\n className={cancelClassName}\n {...restCancelButtonProps}\n >\n {resolvedCancelLabel}\n </Button>\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={isSubmitDisabled}\n className={submitClassName}\n {...restSubmitButtonProps}\n >\n {submitContent}\n </Button>\n </div>\n );\n};\n"],"mappings":";;;;AAqBA,IAAa,KAAe,EAC1B,aACA,gBACA,gBACA,uBACA,kBAAe,IACf,oBAAiB,IACjB,cACA,wBACA,sBACA,2BACmC;CACnC,IAAM,EAAE,SAAM,GAAkB,EAC1B,IAAsB,KAAe,EAAE,wBAAwB,EAC/D,IAAsB,KAAe,EAAE,sBAAsB,EAC7D,IACJ,KAAsB,EAAE,wBAAwB,EAE5C,EACJ,WAAW,GACX,UAAU,GACV,GAAG,MAJe,KAAqB,EAAE,EAQrC,EACJ,WAAW,GACX,UAAU,GACV,GAAG,MAJe,KAAqB,EAAE,EAOvC;AAEJ,CACE,IADE,KAAuB,OAEhB,IACO,IAEA,IAJA,EAAoB,EAAa;CAOnD,IAAM,IAAmB,EAAQ,GAC3B,IACJ,EAAQ,KAAmB,KAAgB,MAA2B;AAExE,QACE,kBAAC,OAAD;EAAgB;YAAhB,CACE,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,SAAS;GACT,UAAU;GACV,WAAW;GACX,GAAI;aAEH;GACM,CAAA,EACT,kBAAC,GAAD;GACE,MAAK;GACL,SAAQ;GACR,UAAU;GACV,WAAW;GACX,GAAI;aAEH;GACM,CAAA,CACL"}
@@ -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":""}