@j2-health/design-system 0.2.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/dist/index.cjs +96 -3614
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.js +48 -3551
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/AppConfigProvider.cjs +13 -0
  6. package/dist/src/AppConfigProvider.cjs.map +1 -0
  7. package/dist/src/AppConfigProvider.js +13 -0
  8. package/dist/src/AppConfigProvider.js.map +1 -0
  9. package/dist/src/appTheme.cjs +268 -0
  10. package/dist/src/appTheme.cjs.map +1 -0
  11. package/dist/src/appTheme.js +268 -0
  12. package/dist/src/appTheme.js.map +1 -0
  13. package/dist/src/components/alert/Alert.cjs +95 -0
  14. package/dist/src/components/alert/Alert.cjs.map +1 -0
  15. package/dist/src/components/alert/Alert.js +78 -0
  16. package/dist/src/components/alert/Alert.js.map +1 -0
  17. package/dist/src/components/alert/Alert.module.css.cjs +9 -0
  18. package/dist/src/components/alert/Alert.module.css.cjs.map +1 -0
  19. package/dist/src/components/alert/Alert.module.css.js +9 -0
  20. package/dist/src/components/alert/Alert.module.css.js.map +1 -0
  21. package/dist/src/components/barchart/BarChart.cjs +148 -0
  22. package/dist/src/components/barchart/BarChart.cjs.map +1 -0
  23. package/dist/src/components/barchart/BarChart.js +148 -0
  24. package/dist/src/components/barchart/BarChart.js.map +1 -0
  25. package/dist/src/components/barchart/chart.module.css.cjs +9 -0
  26. package/dist/src/components/barchart/chart.module.css.cjs.map +1 -0
  27. package/dist/src/components/barchart/chart.module.css.js +9 -0
  28. package/dist/src/components/barchart/chart.module.css.js.map +1 -0
  29. package/dist/src/components/breadcrumb/Breadcrumb.cjs +38 -0
  30. package/dist/src/components/breadcrumb/Breadcrumb.cjs.map +1 -0
  31. package/dist/src/components/breadcrumb/Breadcrumb.js +21 -0
  32. package/dist/src/components/breadcrumb/Breadcrumb.js.map +1 -0
  33. package/dist/src/components/bulkActionBar/BulkActionBar.cjs +81 -0
  34. package/dist/src/components/bulkActionBar/BulkActionBar.cjs.map +1 -0
  35. package/dist/src/components/bulkActionBar/BulkActionBar.js +81 -0
  36. package/dist/src/components/bulkActionBar/BulkActionBar.js.map +1 -0
  37. package/dist/src/components/button/Button.cjs +21 -0
  38. package/dist/src/components/button/Button.cjs.map +1 -0
  39. package/dist/src/components/button/Button.js +21 -0
  40. package/dist/src/components/button/Button.js.map +1 -0
  41. package/dist/src/components/card/Card.cjs +36 -0
  42. package/dist/src/components/card/Card.cjs.map +1 -0
  43. package/dist/src/components/card/Card.js +36 -0
  44. package/dist/src/components/card/Card.js.map +1 -0
  45. package/dist/src/components/checkbox/Checkbox.cjs +10 -0
  46. package/dist/src/components/checkbox/Checkbox.cjs.map +1 -0
  47. package/dist/src/components/checkbox/Checkbox.js +10 -0
  48. package/dist/src/components/checkbox/Checkbox.js.map +1 -0
  49. package/dist/src/components/checkboxTree/CheckboxTree.cjs +140 -0
  50. package/dist/src/components/checkboxTree/CheckboxTree.cjs.map +1 -0
  51. package/dist/src/components/checkboxTree/CheckboxTree.js +140 -0
  52. package/dist/src/components/checkboxTree/CheckboxTree.js.map +1 -0
  53. package/dist/src/components/checkboxTree/TreeNode.cjs +92 -0
  54. package/dist/src/components/checkboxTree/TreeNode.cjs.map +1 -0
  55. package/dist/src/components/checkboxTree/TreeNode.js +92 -0
  56. package/dist/src/components/checkboxTree/TreeNode.js.map +1 -0
  57. package/dist/src/components/checkboxTree/utils.cjs +59 -0
  58. package/dist/src/components/checkboxTree/utils.cjs.map +1 -0
  59. package/dist/src/components/checkboxTree/utils.js +59 -0
  60. package/dist/src/components/checkboxTree/utils.js.map +1 -0
  61. package/dist/src/components/collapse/Collapse.cjs +81 -0
  62. package/dist/src/components/collapse/Collapse.cjs.map +1 -0
  63. package/dist/src/components/collapse/Collapse.js +64 -0
  64. package/dist/src/components/collapse/Collapse.js.map +1 -0
  65. package/dist/src/components/collapse/Collapse.module.css.cjs +13 -0
  66. package/dist/src/components/collapse/Collapse.module.css.cjs.map +1 -0
  67. package/dist/src/components/collapse/Collapse.module.css.js +13 -0
  68. package/dist/src/components/collapse/Collapse.module.css.js.map +1 -0
  69. package/dist/src/components/drawer/Drawer.cjs +39 -0
  70. package/dist/src/components/drawer/Drawer.cjs.map +1 -0
  71. package/dist/src/components/drawer/Drawer.js +39 -0
  72. package/dist/src/components/drawer/Drawer.js.map +1 -0
  73. package/dist/src/components/dropdown/Dropdown.cjs +58 -0
  74. package/dist/src/components/dropdown/Dropdown.cjs.map +1 -0
  75. package/dist/src/components/dropdown/Dropdown.js +58 -0
  76. package/dist/src/components/dropdown/Dropdown.js.map +1 -0
  77. package/dist/src/components/filterform/FilterGroup.cjs +64 -0
  78. package/dist/src/components/filterform/FilterGroup.cjs.map +1 -0
  79. package/dist/src/components/filterform/FilterGroup.js +64 -0
  80. package/dist/src/components/filterform/FilterGroup.js.map +1 -0
  81. package/dist/src/components/filterform/FilterInput.cjs +175 -0
  82. package/dist/src/components/filterform/FilterInput.cjs.map +1 -0
  83. package/dist/src/components/filterform/FilterInput.js +158 -0
  84. package/dist/src/components/filterform/FilterInput.js.map +1 -0
  85. package/dist/src/components/filterform/FiltersForm.cjs +168 -0
  86. package/dist/src/components/filterform/FiltersForm.cjs.map +1 -0
  87. package/dist/src/components/filterform/FiltersForm.js +168 -0
  88. package/dist/src/components/filterform/FiltersForm.js.map +1 -0
  89. package/dist/src/components/filterform/FiltersForm.module.css.cjs +21 -0
  90. package/dist/src/components/filterform/FiltersForm.module.css.cjs.map +1 -0
  91. package/dist/src/components/filterform/FiltersForm.module.css.js +21 -0
  92. package/dist/src/components/filterform/FiltersForm.module.css.js.map +1 -0
  93. package/dist/src/components/filterform/filterHelpers.cjs +48 -0
  94. package/dist/src/components/filterform/filterHelpers.cjs.map +1 -0
  95. package/dist/src/components/filterform/filterHelpers.js +48 -0
  96. package/dist/src/components/filterform/filterHelpers.js.map +1 -0
  97. package/dist/src/components/filterform/useFilterField.cjs +210 -0
  98. package/dist/src/components/filterform/useFilterField.cjs.map +1 -0
  99. package/dist/src/components/filterform/useFilterField.js +193 -0
  100. package/dist/src/components/filterform/useFilterField.js.map +1 -0
  101. package/dist/src/components/filterform/useFiltersForm.cjs +160 -0
  102. package/dist/src/components/filterform/useFiltersForm.cjs.map +1 -0
  103. package/dist/src/components/filterform/useFiltersForm.js +160 -0
  104. package/dist/src/components/filterform/useFiltersForm.js.map +1 -0
  105. package/dist/src/components/form/Form.cjs +11 -0
  106. package/dist/src/components/form/Form.cjs.map +1 -0
  107. package/dist/src/components/form/Form.js +11 -0
  108. package/dist/src/components/form/Form.js.map +1 -0
  109. package/dist/src/components/icons/index.cjs +27 -0
  110. package/dist/src/components/icons/index.cjs.map +1 -0
  111. package/dist/src/components/icons/index.js +3 -0
  112. package/dist/src/components/icons/index.js.map +1 -0
  113. package/dist/src/components/input/AntdInput.cjs +13 -0
  114. package/dist/src/components/input/AntdInput.cjs.map +1 -0
  115. package/dist/src/components/input/AntdInput.js +13 -0
  116. package/dist/src/components/input/AntdInput.js.map +1 -0
  117. package/dist/src/components/input/AntdSearchInput.cjs +13 -0
  118. package/dist/src/components/input/AntdSearchInput.cjs.map +1 -0
  119. package/dist/src/components/input/AntdSearchInput.js +13 -0
  120. package/dist/src/components/input/AntdSearchInput.js.map +1 -0
  121. package/dist/src/components/input/Input.cjs +9 -0
  122. package/dist/src/components/input/Input.cjs.map +1 -0
  123. package/dist/src/components/input/Input.js +9 -0
  124. package/dist/src/components/input/Input.js.map +1 -0
  125. package/dist/src/components/inputnumber/InputNumber.cjs +32 -0
  126. package/dist/src/components/inputnumber/InputNumber.cjs.map +1 -0
  127. package/dist/src/components/inputnumber/InputNumber.js +32 -0
  128. package/dist/src/components/inputnumber/InputNumber.js.map +1 -0
  129. package/dist/src/components/inputnumber/InputNumber.module.css.cjs +9 -0
  130. package/dist/src/components/inputnumber/InputNumber.module.css.cjs.map +1 -0
  131. package/dist/src/components/inputnumber/InputNumber.module.css.js +9 -0
  132. package/dist/src/components/inputnumber/InputNumber.module.css.js.map +1 -0
  133. package/dist/src/components/legacyNavMenu/LegacyNavMenu.cjs +52 -0
  134. package/dist/src/components/legacyNavMenu/LegacyNavMenu.cjs.map +1 -0
  135. package/dist/src/components/legacyNavMenu/LegacyNavMenu.js +52 -0
  136. package/dist/src/components/legacyNavMenu/LegacyNavMenu.js.map +1 -0
  137. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.cjs +48 -0
  138. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.cjs.map +1 -0
  139. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.js +48 -0
  140. package/dist/src/components/legacyNavMenu/LegacyNavMenu.module.css.js.map +1 -0
  141. package/dist/src/components/legacyNavMenu/UserProfile.cjs +78 -0
  142. package/dist/src/components/legacyNavMenu/UserProfile.cjs.map +1 -0
  143. package/dist/src/components/legacyNavMenu/UserProfile.js +78 -0
  144. package/dist/src/components/legacyNavMenu/UserProfile.js.map +1 -0
  145. package/dist/src/components/legacyNavMenu/UserProfile.module.css.cjs +42 -0
  146. package/dist/src/components/legacyNavMenu/UserProfile.module.css.cjs.map +1 -0
  147. package/dist/src/components/legacyNavMenu/UserProfile.module.css.js +42 -0
  148. package/dist/src/components/legacyNavMenu/UserProfile.module.css.js.map +1 -0
  149. package/dist/src/components/listpopover/ListPopover.cjs +125 -0
  150. package/dist/src/components/listpopover/ListPopover.cjs.map +1 -0
  151. package/dist/src/components/listpopover/ListPopover.js +125 -0
  152. package/dist/src/components/listpopover/ListPopover.js.map +1 -0
  153. package/dist/src/components/listpopover/ListPopover.module.css.cjs +9 -0
  154. package/dist/src/components/listpopover/ListPopover.module.css.cjs.map +1 -0
  155. package/dist/src/components/listpopover/ListPopover.module.css.js +9 -0
  156. package/dist/src/components/listpopover/ListPopover.module.css.js.map +1 -0
  157. package/dist/src/components/menu/Menu.cjs +18 -0
  158. package/dist/src/components/menu/Menu.cjs.map +1 -0
  159. package/dist/src/components/menu/Menu.js +18 -0
  160. package/dist/src/components/menu/Menu.js.map +1 -0
  161. package/dist/src/components/menu/Menu.module.css.cjs +12 -0
  162. package/dist/src/components/menu/Menu.module.css.cjs.map +1 -0
  163. package/dist/src/components/menu/Menu.module.css.js +12 -0
  164. package/dist/src/components/menu/Menu.module.css.js.map +1 -0
  165. package/dist/src/components/message/Message.module.css.cjs +9 -0
  166. package/dist/src/components/message/Message.module.css.cjs.map +1 -0
  167. package/dist/src/components/message/Message.module.css.js +9 -0
  168. package/dist/src/components/message/Message.module.css.js.map +1 -0
  169. package/dist/src/components/message/useMessage.cjs +55 -0
  170. package/dist/src/components/message/useMessage.cjs.map +1 -0
  171. package/dist/src/components/message/useMessage.js +55 -0
  172. package/dist/src/components/message/useMessage.js.map +1 -0
  173. package/dist/src/components/modal/Modal.cjs +32 -0
  174. package/dist/src/components/modal/Modal.cjs.map +1 -0
  175. package/dist/src/components/modal/Modal.js +32 -0
  176. package/dist/src/components/modal/Modal.js.map +1 -0
  177. package/dist/src/components/navMenu/NavMenu.cjs +132 -0
  178. package/dist/src/components/navMenu/NavMenu.cjs.map +1 -0
  179. package/dist/src/components/navMenu/NavMenu.js +115 -0
  180. package/dist/src/components/navMenu/NavMenu.js.map +1 -0
  181. package/dist/src/components/navMenu/NavMenu.module.css.cjs +18 -0
  182. package/dist/src/components/navMenu/NavMenu.module.css.cjs.map +1 -0
  183. package/dist/src/components/navMenu/NavMenu.module.css.js +18 -0
  184. package/dist/src/components/navMenu/NavMenu.module.css.js.map +1 -0
  185. package/dist/src/components/notification/Notification.module.css.cjs +9 -0
  186. package/dist/src/components/notification/Notification.module.css.cjs.map +1 -0
  187. package/dist/src/components/notification/Notification.module.css.js +9 -0
  188. package/dist/src/components/notification/Notification.module.css.js.map +1 -0
  189. package/dist/src/components/notification/useNotification.cjs +52 -0
  190. package/dist/src/components/notification/useNotification.cjs.map +1 -0
  191. package/dist/src/components/notification/useNotification.js +52 -0
  192. package/dist/src/components/notification/useNotification.js.map +1 -0
  193. package/dist/src/components/notificationModal/NotifcationModal.module.css.cjs +21 -0
  194. package/dist/src/components/notificationModal/NotifcationModal.module.css.cjs.map +1 -0
  195. package/dist/src/components/notificationModal/NotifcationModal.module.css.js +21 -0
  196. package/dist/src/components/notificationModal/NotifcationModal.module.css.js.map +1 -0
  197. package/dist/src/components/notificationModal/NotificationModal.cjs +57 -0
  198. package/dist/src/components/notificationModal/NotificationModal.cjs.map +1 -0
  199. package/dist/src/components/notificationModal/NotificationModal.js +57 -0
  200. package/dist/src/components/notificationModal/NotificationModal.js.map +1 -0
  201. package/dist/src/components/pagination/Pagination.cjs +65 -0
  202. package/dist/src/components/pagination/Pagination.cjs.map +1 -0
  203. package/dist/src/components/pagination/Pagination.js +65 -0
  204. package/dist/src/components/pagination/Pagination.js.map +1 -0
  205. package/dist/src/components/pagination/Pagination.module.css.cjs +6 -0
  206. package/dist/src/components/pagination/Pagination.module.css.cjs.map +1 -0
  207. package/dist/src/components/pagination/Pagination.module.css.js +7 -0
  208. package/dist/src/components/pagination/Pagination.module.css.js.map +1 -0
  209. package/dist/src/components/popover/Popover.cjs +41 -0
  210. package/dist/src/components/popover/Popover.cjs.map +1 -0
  211. package/dist/src/components/popover/Popover.js +41 -0
  212. package/dist/src/components/popover/Popover.js.map +1 -0
  213. package/dist/src/components/popover/Popover.module.css.cjs +33 -0
  214. package/dist/src/components/popover/Popover.module.css.cjs.map +1 -0
  215. package/dist/src/components/popover/Popover.module.css.js +33 -0
  216. package/dist/src/components/popover/Popover.module.css.js.map +1 -0
  217. package/dist/src/components/progress/Progress.cjs +9 -0
  218. package/dist/src/components/progress/Progress.cjs.map +1 -0
  219. package/dist/src/components/progress/Progress.js +9 -0
  220. package/dist/src/components/progress/Progress.js.map +1 -0
  221. package/dist/src/components/radio/Radio.cjs +24 -0
  222. package/dist/src/components/radio/Radio.cjs.map +1 -0
  223. package/dist/src/components/radio/Radio.js +24 -0
  224. package/dist/src/components/radio/Radio.js.map +1 -0
  225. package/dist/src/components/rate/Rate.cjs +22 -0
  226. package/dist/src/components/rate/Rate.cjs.map +1 -0
  227. package/dist/src/components/rate/Rate.js +22 -0
  228. package/dist/src/components/rate/Rate.js.map +1 -0
  229. package/dist/src/components/select/AntdSelect.cjs +76 -0
  230. package/dist/src/components/select/AntdSelect.cjs.map +1 -0
  231. package/dist/src/components/select/AntdSelect.js +60 -0
  232. package/dist/src/components/select/AntdSelect.js.map +1 -0
  233. package/dist/src/components/select/Select.cjs +107 -0
  234. package/dist/src/components/select/Select.cjs.map +1 -0
  235. package/dist/src/components/select/Select.js +107 -0
  236. package/dist/src/components/select/Select.js.map +1 -0
  237. package/dist/src/components/select/SummarizedSelect.cjs +455 -0
  238. package/dist/src/components/select/SummarizedSelect.cjs.map +1 -0
  239. package/dist/src/components/select/SummarizedSelect.js +455 -0
  240. package/dist/src/components/select/SummarizedSelect.js.map +1 -0
  241. package/dist/src/components/select/SummarizedSelect.module.css.cjs +30 -0
  242. package/dist/src/components/select/SummarizedSelect.module.css.cjs.map +1 -0
  243. package/dist/src/components/select/SummarizedSelect.module.css.js +30 -0
  244. package/dist/src/components/select/SummarizedSelect.module.css.js.map +1 -0
  245. package/dist/src/components/skeleton/Skeleton.cjs +14 -0
  246. package/dist/src/components/skeleton/Skeleton.cjs.map +1 -0
  247. package/dist/src/components/skeleton/Skeleton.js +14 -0
  248. package/dist/src/components/skeleton/Skeleton.js.map +1 -0
  249. package/dist/src/components/spinner/Spinner.cjs +20 -0
  250. package/dist/src/components/spinner/Spinner.cjs.map +1 -0
  251. package/dist/src/components/spinner/Spinner.js +20 -0
  252. package/dist/src/components/spinner/Spinner.js.map +1 -0
  253. package/dist/src/components/steps/Steps.cjs +50 -0
  254. package/dist/src/components/steps/Steps.cjs.map +1 -0
  255. package/dist/src/components/steps/Steps.js +50 -0
  256. package/dist/src/components/steps/Steps.js.map +1 -0
  257. package/dist/src/components/steps/useSteps.cjs +56 -0
  258. package/dist/src/components/steps/useSteps.cjs.map +1 -0
  259. package/dist/src/components/steps/useSteps.js +56 -0
  260. package/dist/src/components/steps/useSteps.js.map +1 -0
  261. package/dist/src/components/switch/Switch.cjs +28 -0
  262. package/dist/src/components/switch/Switch.cjs.map +1 -0
  263. package/dist/src/components/switch/Switch.js +28 -0
  264. package/dist/src/components/switch/Switch.js.map +1 -0
  265. package/dist/src/components/table/Table.cjs +117 -0
  266. package/dist/src/components/table/Table.cjs.map +1 -0
  267. package/dist/src/components/table/Table.js +117 -0
  268. package/dist/src/components/table/Table.js.map +1 -0
  269. package/dist/src/components/table/Table.module.css.cjs +12 -0
  270. package/dist/src/components/table/Table.module.css.cjs.map +1 -0
  271. package/dist/src/components/table/Table.module.css.js +12 -0
  272. package/dist/src/components/table/Table.module.css.js.map +1 -0
  273. package/dist/src/components/tabs/Tabs.cjs +10 -0
  274. package/dist/src/components/tabs/Tabs.cjs.map +1 -0
  275. package/dist/src/components/tabs/Tabs.js +10 -0
  276. package/dist/src/components/tabs/Tabs.js.map +1 -0
  277. package/dist/src/components/tag/Tag.cjs +74 -0
  278. package/dist/src/components/tag/Tag.cjs.map +1 -0
  279. package/dist/src/components/tag/Tag.js +57 -0
  280. package/dist/src/components/tag/Tag.js.map +1 -0
  281. package/dist/src/components/tooltip/Tooltip.cjs +14 -0
  282. package/dist/src/components/tooltip/Tooltip.cjs.map +1 -0
  283. package/dist/src/components/tooltip/Tooltip.js +14 -0
  284. package/dist/src/components/tooltip/Tooltip.js.map +1 -0
  285. package/dist/src/components/vennDiagram/VennDiagram.cjs +47 -0
  286. package/dist/src/components/vennDiagram/VennDiagram.cjs.map +1 -0
  287. package/dist/src/components/vennDiagram/VennDiagram.js +47 -0
  288. package/dist/src/components/vennDiagram/VennDiagram.js.map +1 -0
  289. package/dist/src/svgs/ProgressCircle.svg.cjs +22 -0
  290. package/dist/src/svgs/ProgressCircle.svg.cjs.map +1 -0
  291. package/dist/src/svgs/ProgressCircle.svg.js +6 -0
  292. package/dist/src/svgs/ProgressCircle.svg.js.map +1 -0
  293. package/dist/src/svgs/j2-logo-menu-collapse.svg.cjs +22 -0
  294. package/dist/src/svgs/j2-logo-menu-collapse.svg.cjs.map +1 -0
  295. package/dist/src/svgs/j2-logo-menu-collapse.svg.js +6 -0
  296. package/dist/src/svgs/j2-logo-menu-collapse.svg.js.map +1 -0
  297. package/dist/src/svgs/j2-logo-menu.svg.cjs +22 -0
  298. package/dist/src/svgs/j2-logo-menu.svg.cjs.map +1 -0
  299. package/dist/src/svgs/j2-logo-menu.svg.js +6 -0
  300. package/dist/src/svgs/j2-logo-menu.svg.js.map +1 -0
  301. package/dist/src/svgs/menu-sidebar-collapse.svg.cjs +22 -0
  302. package/dist/src/svgs/menu-sidebar-collapse.svg.cjs.map +1 -0
  303. package/dist/src/svgs/menu-sidebar-collapse.svg.js +6 -0
  304. package/dist/src/svgs/menu-sidebar-collapse.svg.js.map +1 -0
  305. package/dist/src/svgs/menu-sidebar-expand.svg.cjs +22 -0
  306. package/dist/src/svgs/menu-sidebar-expand.svg.cjs.map +1 -0
  307. package/dist/src/svgs/menu-sidebar-expand.svg.js +6 -0
  308. package/dist/src/svgs/menu-sidebar-expand.svg.js.map +1 -0
  309. package/dist/style.css +646 -646
  310. package/package.json +1 -1
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const cx = require("classnames");
5
+ const Button = require("../button/Button.cjs");
6
+ const BulkActionBar = ({
7
+ count,
8
+ action,
9
+ secondaryActions,
10
+ onCancel,
11
+ cancelLabel = "Cancel"
12
+ }) => {
13
+ const visible = count > 0;
14
+ const label = `${count} selected`;
15
+ return /* @__PURE__ */ jsxRuntime.jsx(
16
+ "div",
17
+ {
18
+ role: "region",
19
+ "aria-label": "Bulk actions",
20
+ "aria-hidden": !visible,
21
+ className: cx(
22
+ "pointer-events-none fixed bottom-6 left-1/2 z-50",
23
+ "-translate-x-1/2 transition duration-200 ease-out",
24
+ visible ? "translate-y-0 opacity-100" : "pointer-events-none translate-y-4 opacity-0"
25
+ ),
26
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
27
+ "div",
28
+ {
29
+ className: cx(
30
+ "pointer-events-auto flex items-center gap-3 rounded-full",
31
+ "bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg"
32
+ ),
33
+ children: [
34
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm font-medium", children: label }),
35
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "h-5 w-px bg-white/20" }),
36
+ /* @__PURE__ */ jsxRuntime.jsx(
37
+ Button.Button,
38
+ {
39
+ type: "text",
40
+ shape: "round",
41
+ size: "small",
42
+ icon: action.icon,
43
+ loading: action.loading,
44
+ onClick: action.onClick,
45
+ className: "!text-white hover:!bg-white/10 hover:!text-white",
46
+ children: action.label
47
+ }
48
+ ),
49
+ secondaryActions == null ? void 0 : secondaryActions.map((sec) => /* @__PURE__ */ jsxRuntime.jsx(
50
+ Button.Button,
51
+ {
52
+ type: "text",
53
+ shape: "round",
54
+ size: "small",
55
+ icon: sec.icon,
56
+ loading: sec.loading,
57
+ onClick: sec.onClick,
58
+ className: "!text-white hover:!bg-white/10 hover:!text-white",
59
+ children: sec.label
60
+ },
61
+ sec.label
62
+ )),
63
+ /* @__PURE__ */ jsxRuntime.jsx(
64
+ Button.Button,
65
+ {
66
+ type: "text",
67
+ shape: "round",
68
+ size: "small",
69
+ onClick: onCancel,
70
+ className: "!text-white hover:!bg-white/10 hover:!text-white",
71
+ children: cancelLabel
72
+ }
73
+ )
74
+ ]
75
+ }
76
+ )
77
+ }
78
+ );
79
+ };
80
+ exports.BulkActionBar = BulkActionBar;
81
+ //# sourceMappingURL=BulkActionBar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkActionBar.cjs","sources":["../../../../src/components/bulkActionBar/BulkActionBar.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport cx from 'classnames'\nimport { Button } from '../button'\n\ntype BulkActionBarProps = {\n /**\n * Number of rows currently selected. The bar slides in when count > 0\n * and slides out when count returns to 0.\n */\n count: number\n /** Primary action (Archive, Restore, Delete, etc.). */\n action: {\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }\n /** Optional secondary actions rendered between the primary action and Cancel. */\n secondaryActions?: Array<{\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }>\n /** Clears the selection. Renders as the trailing \"Cancel\" button. */\n onCancel: () => void\n /** Custom Cancel label. Defaults to `\"Cancel\"`. */\n cancelLabel?: string\n}\n\n/**\n * Floating bulk-action toolbar. Renders fixed to the bottom-center of the\n * viewport and slides in whenever `count > 0`. Use it above any list/table\n * surface that supports row selection — pair with Ant Design's\n * `rowSelection` prop on `<Table>` (or any controlled selection state).\n *\n * Destructive intent is enforced by whatever confirmation modal the host\n * surface shows after `action.onClick` — the bar itself is always neutral\n * (text-on-navy) so it never reads as a one-click destructive control.\n */\nexport const BulkActionBar = ({\n count,\n action,\n secondaryActions,\n onCancel,\n cancelLabel = 'Cancel',\n}: BulkActionBarProps) => {\n const visible = count > 0\n const label = `${count} selected`\n\n return (\n <div\n role=\"region\"\n aria-label=\"Bulk actions\"\n aria-hidden={!visible}\n className={cx(\n 'pointer-events-none fixed bottom-6 left-1/2 z-50',\n '-translate-x-1/2 transition duration-200 ease-out',\n visible\n ? 'translate-y-0 opacity-100'\n : 'pointer-events-none translate-y-4 opacity-0'\n )}\n >\n <div\n className={cx(\n 'pointer-events-auto flex items-center gap-3 rounded-full',\n 'bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg'\n )}\n >\n <span className=\"text-sm font-medium\">{label}</span>\n <div className=\"h-5 w-px bg-white/20\" />\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={action.icon}\n loading={action.loading}\n onClick={action.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {action.label}\n </Button>\n {secondaryActions?.map((sec) => (\n <Button\n key={sec.label}\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={sec.icon}\n loading={sec.loading}\n onClick={sec.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {sec.label}\n </Button>\n ))}\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n onClick={onCancel}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {cancelLabel}\n </Button>\n </div>\n </div>\n )\n}\n"],"names":["jsx","jsxs","Button"],"mappings":";;;;;AAwCO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,MAA0B;AACxB,QAAM,UAAU,QAAQ;AACxB,QAAM,QAAQ,GAAG,KAAK;AAEtB,SACEA,2BAAAA;AAAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,eAAa,CAAC;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,UACI,8BACA;AAAA,MAAA;AAAA,MAGN,UAAAC,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,UAGF,UAAA;AAAA,YAAAD,2BAAAA,IAAC,QAAA,EAAK,WAAU,uBAAuB,UAAA,OAAM;AAAA,YAC7CA,2BAAAA,IAAC,OAAA,EAAI,WAAU,uBAAA,CAAuB;AAAA,YACtCA,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,OAAO;AAAA,gBACb,SAAS,OAAO;AAAA,gBAChB,SAAS,OAAO;AAAA,gBAChB,WAAU;AAAA,gBAET,UAAA,OAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAET,qDAAkB,IAAI,CAAC,QACtBF,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,IAAI;AAAA,gBACV,SAAS,IAAI;AAAA,gBACb,SAAS,IAAI;AAAA,gBACb,WAAU;AAAA,gBAET,UAAA,IAAI;AAAA,cAAA;AAAA,cATA,IAAI;AAAA,YAAA;AAAA,YAYbF,2BAAAA;AAAAA,cAACE,OAAAA;AAAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,WAAU;AAAA,gBAET,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;;"}
@@ -0,0 +1,81 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import cx from "classnames";
3
+ import { Button } from "../button/Button.js";
4
+ const BulkActionBar = ({
5
+ count,
6
+ action,
7
+ secondaryActions,
8
+ onCancel,
9
+ cancelLabel = "Cancel"
10
+ }) => {
11
+ const visible = count > 0;
12
+ const label = `${count} selected`;
13
+ return /* @__PURE__ */ jsx(
14
+ "div",
15
+ {
16
+ role: "region",
17
+ "aria-label": "Bulk actions",
18
+ "aria-hidden": !visible,
19
+ className: cx(
20
+ "pointer-events-none fixed bottom-6 left-1/2 z-50",
21
+ "-translate-x-1/2 transition duration-200 ease-out",
22
+ visible ? "translate-y-0 opacity-100" : "pointer-events-none translate-y-4 opacity-0"
23
+ ),
24
+ children: /* @__PURE__ */ jsxs(
25
+ "div",
26
+ {
27
+ className: cx(
28
+ "pointer-events-auto flex items-center gap-3 rounded-full",
29
+ "bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg"
30
+ ),
31
+ children: [
32
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", children: label }),
33
+ /* @__PURE__ */ jsx("div", { className: "h-5 w-px bg-white/20" }),
34
+ /* @__PURE__ */ jsx(
35
+ Button,
36
+ {
37
+ type: "text",
38
+ shape: "round",
39
+ size: "small",
40
+ icon: action.icon,
41
+ loading: action.loading,
42
+ onClick: action.onClick,
43
+ className: "!text-white hover:!bg-white/10 hover:!text-white",
44
+ children: action.label
45
+ }
46
+ ),
47
+ secondaryActions == null ? void 0 : secondaryActions.map((sec) => /* @__PURE__ */ jsx(
48
+ Button,
49
+ {
50
+ type: "text",
51
+ shape: "round",
52
+ size: "small",
53
+ icon: sec.icon,
54
+ loading: sec.loading,
55
+ onClick: sec.onClick,
56
+ className: "!text-white hover:!bg-white/10 hover:!text-white",
57
+ children: sec.label
58
+ },
59
+ sec.label
60
+ )),
61
+ /* @__PURE__ */ jsx(
62
+ Button,
63
+ {
64
+ type: "text",
65
+ shape: "round",
66
+ size: "small",
67
+ onClick: onCancel,
68
+ className: "!text-white hover:!bg-white/10 hover:!text-white",
69
+ children: cancelLabel
70
+ }
71
+ )
72
+ ]
73
+ }
74
+ )
75
+ }
76
+ );
77
+ };
78
+ export {
79
+ BulkActionBar
80
+ };
81
+ //# sourceMappingURL=BulkActionBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BulkActionBar.js","sources":["../../../../src/components/bulkActionBar/BulkActionBar.tsx"],"sourcesContent":["import { ReactNode } from 'react'\nimport cx from 'classnames'\nimport { Button } from '../button'\n\ntype BulkActionBarProps = {\n /**\n * Number of rows currently selected. The bar slides in when count > 0\n * and slides out when count returns to 0.\n */\n count: number\n /** Primary action (Archive, Restore, Delete, etc.). */\n action: {\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }\n /** Optional secondary actions rendered between the primary action and Cancel. */\n secondaryActions?: Array<{\n label: string\n icon?: ReactNode\n loading?: boolean\n onClick: () => void\n }>\n /** Clears the selection. Renders as the trailing \"Cancel\" button. */\n onCancel: () => void\n /** Custom Cancel label. Defaults to `\"Cancel\"`. */\n cancelLabel?: string\n}\n\n/**\n * Floating bulk-action toolbar. Renders fixed to the bottom-center of the\n * viewport and slides in whenever `count > 0`. Use it above any list/table\n * surface that supports row selection — pair with Ant Design's\n * `rowSelection` prop on `<Table>` (or any controlled selection state).\n *\n * Destructive intent is enforced by whatever confirmation modal the host\n * surface shows after `action.onClick` — the bar itself is always neutral\n * (text-on-navy) so it never reads as a one-click destructive control.\n */\nexport const BulkActionBar = ({\n count,\n action,\n secondaryActions,\n onCancel,\n cancelLabel = 'Cancel',\n}: BulkActionBarProps) => {\n const visible = count > 0\n const label = `${count} selected`\n\n return (\n <div\n role=\"region\"\n aria-label=\"Bulk actions\"\n aria-hidden={!visible}\n className={cx(\n 'pointer-events-none fixed bottom-6 left-1/2 z-50',\n '-translate-x-1/2 transition duration-200 ease-out',\n visible\n ? 'translate-y-0 opacity-100'\n : 'pointer-events-none translate-y-4 opacity-0'\n )}\n >\n <div\n className={cx(\n 'pointer-events-auto flex items-center gap-3 rounded-full',\n 'bg-j2-primary-active py-2 pl-4 pr-2 text-white shadow-lg'\n )}\n >\n <span className=\"text-sm font-medium\">{label}</span>\n <div className=\"h-5 w-px bg-white/20\" />\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={action.icon}\n loading={action.loading}\n onClick={action.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {action.label}\n </Button>\n {secondaryActions?.map((sec) => (\n <Button\n key={sec.label}\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n icon={sec.icon}\n loading={sec.loading}\n onClick={sec.onClick}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {sec.label}\n </Button>\n ))}\n <Button\n type=\"text\"\n shape=\"round\"\n size=\"small\"\n onClick={onCancel}\n className=\"!text-white hover:!bg-white/10 hover:!text-white\"\n >\n {cancelLabel}\n </Button>\n </div>\n </div>\n )\n}\n"],"names":[],"mappings":";;;AAwCO,MAAM,gBAAgB,CAAC;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAChB,MAA0B;AACxB,QAAM,UAAU,QAAQ;AACxB,QAAM,QAAQ,GAAG,KAAK;AAEtB,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,cAAW;AAAA,MACX,eAAa,CAAC;AAAA,MACd,WAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA,UACI,8BACA;AAAA,MAAA;AAAA,MAGN,UAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW;AAAA,YACT;AAAA,YACA;AAAA,UAAA;AAAA,UAGF,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAK,WAAU,uBAAuB,UAAA,OAAM;AAAA,YAC7C,oBAAC,OAAA,EAAI,WAAU,uBAAA,CAAuB;AAAA,YACtC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,OAAO;AAAA,gBACb,SAAS,OAAO;AAAA,gBAChB,SAAS,OAAO;AAAA,gBAChB,WAAU;AAAA,gBAET,UAAA,OAAO;AAAA,cAAA;AAAA,YAAA;AAAA,YAET,qDAAkB,IAAI,CAAC,QACtB;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,MAAM,IAAI;AAAA,gBACV,SAAS,IAAI;AAAA,gBACb,SAAS,IAAI;AAAA,gBACb,WAAU;AAAA,gBAET,UAAA,IAAI;AAAA,cAAA;AAAA,cATA,IAAI;AAAA,YAAA;AAAA,YAYb;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,MAAK;AAAA,gBACL,SAAS;AAAA,gBACT,WAAU;AAAA,gBAET,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UACH;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const antd = require("antd");
5
+ ;/* empty css */
6
+ const Button = ({ type, size, ghost, danger, shape, ...props }) => {
7
+ return /* @__PURE__ */ jsxRuntime.jsx(
8
+ antd.Button,
9
+ {
10
+ ...props,
11
+ type,
12
+ size,
13
+ ghost,
14
+ danger,
15
+ shape,
16
+ children: props.children
17
+ }
18
+ );
19
+ };
20
+ exports.Button = Button;
21
+ //# sourceMappingURL=Button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.cjs","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import { Button as AntdButton, ButtonProps } from 'antd'\nimport './Button.css'\n\nexport type Props = Expand<ButtonProps>\n\nconst Button = ({ type, size, ghost, danger, shape, ...props }: Props) => {\n return (\n <AntdButton\n {...props}\n type={type}\n size={size}\n ghost={ghost}\n danger={danger}\n shape={shape}\n >\n {props.children}\n </AntdButton>\n )\n}\n\nexport { Button }\n"],"names":["jsx","AntdButton"],"mappings":";;;;;AAKA,MAAM,SAAS,CAAC,EAAE,MAAM,MAAM,OAAO,QAAQ,OAAO,GAAG,YAAmB;AACxE,SACEA,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC,UAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AAGb;;"}
@@ -0,0 +1,21 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Button as Button$1 } from "antd";
3
+ /* empty css */
4
+ const Button = ({ type, size, ghost, danger, shape, ...props }) => {
5
+ return /* @__PURE__ */ jsx(
6
+ Button$1,
7
+ {
8
+ ...props,
9
+ type,
10
+ size,
11
+ ghost,
12
+ danger,
13
+ shape,
14
+ children: props.children
15
+ }
16
+ );
17
+ };
18
+ export {
19
+ Button
20
+ };
21
+ //# sourceMappingURL=Button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.js","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import { Button as AntdButton, ButtonProps } from 'antd'\nimport './Button.css'\n\nexport type Props = Expand<ButtonProps>\n\nconst Button = ({ type, size, ghost, danger, shape, ...props }: Props) => {\n return (\n <AntdButton\n {...props}\n type={type}\n size={size}\n ghost={ghost}\n danger={danger}\n shape={shape}\n >\n {props.children}\n </AntdButton>\n )\n}\n\nexport { Button }\n"],"names":["AntdButton"],"mappings":";;;AAKA,MAAM,SAAS,CAAC,EAAE,MAAM,MAAM,OAAO,QAAQ,OAAO,GAAG,YAAmB;AACxE,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACE,GAAG;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MAEC,UAAA,MAAM;AAAA,IAAA;AAAA,EAAA;AAGb;"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const antd = require("antd");
5
+ const cx = require("classnames");
6
+ ;/* empty css */
7
+ const Card = ({
8
+ title,
9
+ children,
10
+ loading,
11
+ size = "default",
12
+ innerVariant = "default",
13
+ className,
14
+ ...props
15
+ }) => {
16
+ const isInner = props.type === "inner";
17
+ const isInnerBasic = isInner && innerVariant === "basic";
18
+ return /* @__PURE__ */ jsxRuntime.jsx(
19
+ antd.Card,
20
+ {
21
+ className: cx(
22
+ "j2-card",
23
+ `j2-card-${size}`,
24
+ isInnerBasic && "inner-basic",
25
+ className
26
+ ),
27
+ ...props,
28
+ size: size === "large" || size === "compact" ? "default" : size,
29
+ title,
30
+ loading,
31
+ children
32
+ }
33
+ );
34
+ };
35
+ exports.Card = Card;
36
+ //# sourceMappingURL=Card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.cjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import { Card as AntdCard, CardProps } from 'antd'\nimport cx from 'classnames'\n\n// import this file to enable styling defined in there\nimport './Card.css'\n\nexport type Props = Omit<CardProps, 'size'> & {\n /** Card title */\n title?: string\n /** Card contents */\n children: React.ReactNode\n /** Loading state */\n loading?: boolean\n /** Card size */\n size?: 'default' | 'small' | 'compact' | 'large'\n /**\n * Inner card type variant.\n * It allows inner card to have variants independent of other props.\n * Works only with type=\"inner\".\n */\n innerVariant?: 'default' | 'basic'\n}\n\nconst Card = ({\n title,\n children,\n loading,\n size = 'default',\n innerVariant = 'default',\n className,\n ...props\n}: Props) => {\n const isInner = props.type === 'inner'\n const isInnerBasic = isInner && innerVariant === 'basic'\n return (\n <AntdCard\n className={cx(\n 'j2-card',\n `j2-card-${size}`,\n isInnerBasic && 'inner-basic',\n className\n )}\n {...props}\n size={size === 'large' || size === 'compact' ? 'default' : size}\n title={title}\n loading={loading}\n >\n {children}\n </AntdCard>\n )\n}\n\nexport { Card }\n"],"names":["jsx","AntdCard"],"mappings":";;;;;;AAuBA,MAAM,OAAO,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAa;AACX,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,eAAe,WAAW,iBAAiB;AACjD,SACEA,2BAAAA;AAAAA,IAACC,KAAAA;AAAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,WAAW,IAAI;AAAA,QACf,gBAAgB;AAAA,QAChB;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MACJ,MAAM,SAAS,WAAW,SAAS,YAAY,YAAY;AAAA,MAC3D;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;;"}
@@ -0,0 +1,36 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Card as Card$1 } from "antd";
3
+ import cx from "classnames";
4
+ /* empty css */
5
+ const Card = ({
6
+ title,
7
+ children,
8
+ loading,
9
+ size = "default",
10
+ innerVariant = "default",
11
+ className,
12
+ ...props
13
+ }) => {
14
+ const isInner = props.type === "inner";
15
+ const isInnerBasic = isInner && innerVariant === "basic";
16
+ return /* @__PURE__ */ jsx(
17
+ Card$1,
18
+ {
19
+ className: cx(
20
+ "j2-card",
21
+ `j2-card-${size}`,
22
+ isInnerBasic && "inner-basic",
23
+ className
24
+ ),
25
+ ...props,
26
+ size: size === "large" || size === "compact" ? "default" : size,
27
+ title,
28
+ loading,
29
+ children
30
+ }
31
+ );
32
+ };
33
+ export {
34
+ Card
35
+ };
36
+ //# sourceMappingURL=Card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Card.js","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import { Card as AntdCard, CardProps } from 'antd'\nimport cx from 'classnames'\n\n// import this file to enable styling defined in there\nimport './Card.css'\n\nexport type Props = Omit<CardProps, 'size'> & {\n /** Card title */\n title?: string\n /** Card contents */\n children: React.ReactNode\n /** Loading state */\n loading?: boolean\n /** Card size */\n size?: 'default' | 'small' | 'compact' | 'large'\n /**\n * Inner card type variant.\n * It allows inner card to have variants independent of other props.\n * Works only with type=\"inner\".\n */\n innerVariant?: 'default' | 'basic'\n}\n\nconst Card = ({\n title,\n children,\n loading,\n size = 'default',\n innerVariant = 'default',\n className,\n ...props\n}: Props) => {\n const isInner = props.type === 'inner'\n const isInnerBasic = isInner && innerVariant === 'basic'\n return (\n <AntdCard\n className={cx(\n 'j2-card',\n `j2-card-${size}`,\n isInnerBasic && 'inner-basic',\n className\n )}\n {...props}\n size={size === 'large' || size === 'compact' ? 'default' : size}\n title={title}\n loading={loading}\n >\n {children}\n </AntdCard>\n )\n}\n\nexport { Card }\n"],"names":["AntdCard"],"mappings":";;;;AAuBA,MAAM,OAAO,CAAC;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,eAAe;AAAA,EACf;AAAA,EACA,GAAG;AACL,MAAa;AACX,QAAM,UAAU,MAAM,SAAS;AAC/B,QAAM,eAAe,WAAW,iBAAiB;AACjD,SACE;AAAA,IAACA;AAAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,WAAW,IAAI;AAAA,QACf,gBAAgB;AAAA,QAChB;AAAA,MAAA;AAAA,MAED,GAAG;AAAA,MACJ,MAAM,SAAS,WAAW,SAAS,YAAY,YAAY;AAAA,MAC3D;AAAA,MACA;AAAA,MAEC;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const antd = require("antd");
5
+ const Checkbox = (props) => {
6
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Checkbox, { ...props });
7
+ };
8
+ Checkbox.Group = antd.Checkbox.Group;
9
+ exports.Checkbox = Checkbox;
10
+ //# sourceMappingURL=Checkbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.cjs","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import { Checkbox as AntdCheckbox, CheckboxProps } from 'antd'\n\ntype Props = Expand<CheckboxProps>\n\nexport const Checkbox = (props: Props) => {\n return <AntdCheckbox {...props} />\n}\n\nCheckbox.Group = AntdCheckbox.Group\n"],"names":["jsx","AntdCheckbox"],"mappings":";;;;AAIO,MAAM,WAAW,CAAC,UAAiB;AACxC,SAAOA,+BAACC,KAAAA,UAAA,EAAc,GAAG,MAAA,CAAO;AAClC;AAEA,SAAS,QAAQA,KAAAA,SAAa;;"}
@@ -0,0 +1,10 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Checkbox as Checkbox$1 } from "antd";
3
+ const Checkbox = (props) => {
4
+ return /* @__PURE__ */ jsx(Checkbox$1, { ...props });
5
+ };
6
+ Checkbox.Group = Checkbox$1.Group;
7
+ export {
8
+ Checkbox
9
+ };
10
+ //# sourceMappingURL=Checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import { Checkbox as AntdCheckbox, CheckboxProps } from 'antd'\n\ntype Props = Expand<CheckboxProps>\n\nexport const Checkbox = (props: Props) => {\n return <AntdCheckbox {...props} />\n}\n\nCheckbox.Group = AntdCheckbox.Group\n"],"names":["AntdCheckbox"],"mappings":";;AAIO,MAAM,WAAW,CAAC,UAAiB;AACxC,SAAO,oBAACA,YAAA,EAAc,GAAG,MAAA,CAAO;AAClC;AAEA,SAAS,QAAQA,WAAa;"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const React = require("react");
5
+ const TreeNode = require("./TreeNode.cjs");
6
+ const utils = require("./utils.cjs");
7
+ const CheckboxTree = ({
8
+ treeData,
9
+ defaultCheckedKeys = [],
10
+ checkedKeys: controlledCheckedKeys,
11
+ onCheck,
12
+ disabled = false,
13
+ defaultExpandAll = true,
14
+ defaultExpandedKeys,
15
+ expandedKeys: controlledExpandedKeys,
16
+ onExpand,
17
+ className,
18
+ style,
19
+ lazyChildren = false
20
+ }) => {
21
+ const allLeafKeys = React.useMemo(() => utils.getAllLeafKeys(treeData), [treeData]);
22
+ const leafKeySet = React.useMemo(() => new Set(allLeafKeys), [allLeafKeys]);
23
+ const [internalLeafNodeValues, setInternalLeafNodeValues] = React.useState(() => {
24
+ const defaultLeafKeySet = new Set(
25
+ defaultCheckedKeys.filter((key) => leafKeySet.has(key))
26
+ );
27
+ const values = {};
28
+ for (const key of allLeafKeys) {
29
+ values[key] = defaultLeafKeySet.has(key);
30
+ }
31
+ return values;
32
+ });
33
+ const [internalExpandedKeys, setInternalExpandedKeys] = React.useState(() => {
34
+ if (defaultExpandedKeys) return defaultExpandedKeys;
35
+ if (defaultExpandAll) return utils.getAllParentKeys(treeData);
36
+ return [];
37
+ });
38
+ React.useEffect(() => {
39
+ if (controlledExpandedKeys || !defaultExpandAll || defaultExpandedKeys)
40
+ return;
41
+ const allParentKeys = utils.getAllParentKeys(treeData);
42
+ setInternalExpandedKeys((prev) => {
43
+ const prevSet = new Set(prev);
44
+ const newKeys = allParentKeys.filter((key) => !prevSet.has(key));
45
+ if (newKeys.length === 0) return prev;
46
+ return [...prev, ...newKeys];
47
+ });
48
+ }, [treeData, defaultExpandAll, controlledExpandedKeys, defaultExpandedKeys]);
49
+ const expandedKeysSet = React.useMemo(() => {
50
+ const keys = controlledExpandedKeys ?? internalExpandedKeys;
51
+ return new Set(keys);
52
+ }, [controlledExpandedKeys, internalExpandedKeys]);
53
+ const handleToggleExpand = React.useCallback(
54
+ (key) => {
55
+ const currentKeys = controlledExpandedKeys ?? internalExpandedKeys;
56
+ const newKeys = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
57
+ if (!controlledExpandedKeys) {
58
+ setInternalExpandedKeys(newKeys);
59
+ }
60
+ onExpand == null ? void 0 : onExpand(newKeys);
61
+ },
62
+ [controlledExpandedKeys, internalExpandedKeys, onExpand]
63
+ );
64
+ const leafNodeValues = React.useMemo(() => {
65
+ if (!controlledCheckedKeys) {
66
+ return internalLeafNodeValues;
67
+ }
68
+ const controlledLeafKeySet = new Set(
69
+ controlledCheckedKeys.filter((key) => leafKeySet.has(key))
70
+ );
71
+ const values = {};
72
+ for (const key of allLeafKeys) {
73
+ values[key] = controlledLeafKeySet.has(key);
74
+ }
75
+ return values;
76
+ }, [allLeafKeys, leafKeySet, controlledCheckedKeys, internalLeafNodeValues]);
77
+ const handleCheck = React.useCallback(
78
+ (_key, checked, node) => {
79
+ const newLeafNodeValues = { ...leafNodeValues };
80
+ if (checked) {
81
+ const leafKeys = utils.getLeafKeys(node);
82
+ leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = true);
83
+ } else {
84
+ const leafKeys = utils.getLeafKeys(node);
85
+ leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = false);
86
+ }
87
+ if (!controlledCheckedKeys) {
88
+ setInternalLeafNodeValues(newLeafNodeValues);
89
+ }
90
+ if (onCheck) {
91
+ const checkedLeafNodes = {};
92
+ const allCheckedNodes = [];
93
+ const collectChecked = (current) => {
94
+ let isChecked;
95
+ if (!current.children || current.children.length === 0) {
96
+ isChecked = newLeafNodeValues[current.key] === true;
97
+ if (isChecked) {
98
+ checkedLeafNodes[current.key] = current;
99
+ }
100
+ } else {
101
+ isChecked = true;
102
+ for (const child of current.children) {
103
+ if (!collectChecked(child)) {
104
+ isChecked = false;
105
+ }
106
+ }
107
+ }
108
+ if (isChecked) {
109
+ allCheckedNodes.push(current);
110
+ }
111
+ return isChecked;
112
+ };
113
+ treeData.forEach(collectChecked);
114
+ onCheck(newLeafNodeValues, {
115
+ checked,
116
+ checkedLeafNodes,
117
+ allCheckedNodes,
118
+ node
119
+ });
120
+ }
121
+ },
122
+ [controlledCheckedKeys, onCheck, treeData, leafNodeValues]
123
+ );
124
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className, style, children: treeData.map((node) => /* @__PURE__ */ jsxRuntime.jsx(
125
+ TreeNode.TreeNode,
126
+ {
127
+ node,
128
+ level: 0,
129
+ leafNodeValues,
130
+ onCheck: handleCheck,
131
+ disabled,
132
+ expandedKeys: expandedKeysSet,
133
+ onToggleExpand: handleToggleExpand,
134
+ lazyChildren
135
+ },
136
+ node.key
137
+ )) });
138
+ };
139
+ exports.CheckboxTree = CheckboxTree;
140
+ //# sourceMappingURL=CheckboxTree.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckboxTree.cjs","sources":["../../../../src/components/checkboxTree/CheckboxTree.tsx"],"sourcesContent":["import React, { useState, useCallback, useEffect, useMemo } from 'react'\nimport { TreeNode } from './TreeNode'\nimport { getLeafKeys, getAllLeafKeys, getAllParentKeys } from './utils'\n\nexport type CheckboxTreeDataNode = {\n key: string | number\n title: React.ReactNode\n children?: CheckboxTreeDataNode[]\n disabled?: boolean\n}\n\nexport type CheckboxTreeProps = {\n treeData: CheckboxTreeDataNode[]\n defaultCheckedKeys?: (string | number)[]\n checkedKeys?: (string | number)[]\n onCheck?: (\n values: Record<string | number, boolean>,\n info: {\n checked: boolean\n checkedLeafNodes: Record<string | number, CheckboxTreeDataNode>\n allCheckedNodes: CheckboxTreeDataNode[]\n node: CheckboxTreeDataNode\n }\n ) => void\n disabled?: boolean\n defaultExpandAll?: boolean\n defaultExpandedKeys?: (string | number)[]\n expandedKeys?: (string | number)[]\n onExpand?: (expandedKeys: (string | number)[]) => void\n className?: string\n style?: React.CSSProperties\n lazyChildren?: boolean\n}\n\nexport const CheckboxTree = ({\n treeData,\n defaultCheckedKeys = [],\n checkedKeys: controlledCheckedKeys,\n onCheck,\n disabled = false,\n defaultExpandAll = true,\n defaultExpandedKeys,\n expandedKeys: controlledExpandedKeys,\n onExpand,\n className,\n style,\n lazyChildren = false,\n}: CheckboxTreeProps) => {\n const allLeafKeys = useMemo(() => getAllLeafKeys(treeData), [treeData])\n const leafKeySet = useMemo(() => new Set(allLeafKeys), [allLeafKeys])\n\n const [internalLeafNodeValues, setInternalLeafNodeValues] = useState<\n Record<string | number, boolean>\n >(() => {\n const defaultLeafKeySet = new Set(\n defaultCheckedKeys.filter((key) => leafKeySet.has(key))\n )\n const values: Record<string | number, boolean> = {}\n for (const key of allLeafKeys) {\n values[key] = defaultLeafKeySet.has(key)\n }\n return values\n })\n\n const [internalExpandedKeys, setInternalExpandedKeys] = useState<\n (string | number)[]\n >(() => {\n if (defaultExpandedKeys) return defaultExpandedKeys\n if (defaultExpandAll) return getAllParentKeys(treeData)\n return []\n })\n\n // When defaultExpandAll is true and treeData changes, auto-expand new parent nodes\n useEffect(() => {\n if (controlledExpandedKeys || !defaultExpandAll || defaultExpandedKeys)\n return\n const allParentKeys = getAllParentKeys(treeData)\n setInternalExpandedKeys((prev) => {\n const prevSet = new Set(prev)\n const newKeys = allParentKeys.filter((key) => !prevSet.has(key))\n if (newKeys.length === 0) return prev\n return [...prev, ...newKeys]\n })\n }, [treeData, defaultExpandAll, controlledExpandedKeys, defaultExpandedKeys])\n\n const expandedKeysSet = useMemo(() => {\n const keys = controlledExpandedKeys ?? internalExpandedKeys\n return new Set(keys)\n }, [controlledExpandedKeys, internalExpandedKeys])\n\n const handleToggleExpand = useCallback(\n (key: string | number) => {\n const currentKeys = controlledExpandedKeys ?? internalExpandedKeys\n const newKeys = currentKeys.includes(key)\n ? currentKeys.filter((k) => k !== key)\n : [...currentKeys, key]\n\n if (!controlledExpandedKeys) {\n setInternalExpandedKeys(newKeys)\n }\n onExpand?.(newKeys)\n },\n [controlledExpandedKeys, internalExpandedKeys, onExpand]\n )\n\n const leafNodeValues: Record<string | number, boolean> = useMemo(() => {\n if (!controlledCheckedKeys) {\n return internalLeafNodeValues\n }\n\n const controlledLeafKeySet = new Set(\n controlledCheckedKeys.filter((key) => leafKeySet.has(key))\n )\n\n const values: Record<string | number, boolean> = {}\n for (const key of allLeafKeys) {\n values[key] = controlledLeafKeySet.has(key)\n }\n return values\n }, [allLeafKeys, leafKeySet, controlledCheckedKeys, internalLeafNodeValues])\n\n const handleCheck = useCallback(\n (_key: string | number, checked: boolean, node: CheckboxTreeDataNode) => {\n const newLeafNodeValues = { ...leafNodeValues }\n\n if (checked) {\n // When checking, set all leaf descendants to true\n const leafKeys = getLeafKeys(node)\n leafKeys.forEach((leafKey) => (newLeafNodeValues[leafKey] = true))\n } else {\n // When unchecking, set all leaf descendants to false\n const leafKeys = getLeafKeys(node)\n leafKeys.forEach((leafKey) => (newLeafNodeValues[leafKey] = false))\n }\n\n if (!controlledCheckedKeys) {\n setInternalLeafNodeValues(newLeafNodeValues)\n }\n\n if (onCheck) {\n // Get all checked leaf nodes\n const checkedLeafNodes: Record<string | number, CheckboxTreeDataNode> =\n {}\n\n // Get all nodes that appear checked (including parents)\n const allCheckedNodes: CheckboxTreeDataNode[] = []\n\n const collectChecked = (current: CheckboxTreeDataNode): boolean => {\n let isChecked: boolean\n if (!current.children || current.children.length === 0) {\n isChecked = newLeafNodeValues[current.key] === true\n if (isChecked) {\n checkedLeafNodes[current.key] = current\n }\n } else {\n isChecked = true\n for (const child of current.children) {\n if (!collectChecked(child)) {\n isChecked = false\n }\n }\n }\n if (isChecked) {\n allCheckedNodes.push(current)\n }\n return isChecked\n }\n treeData.forEach(collectChecked)\n\n onCheck(newLeafNodeValues, {\n checked,\n checkedLeafNodes,\n allCheckedNodes,\n node,\n })\n }\n },\n [controlledCheckedKeys, onCheck, treeData, leafNodeValues]\n )\n\n return (\n <div className={className} style={style}>\n {treeData.map((node) => (\n <TreeNode\n key={node.key}\n node={node}\n level={0}\n leafNodeValues={leafNodeValues}\n onCheck={handleCheck}\n disabled={disabled}\n expandedKeys={expandedKeysSet}\n onToggleExpand={handleToggleExpand}\n lazyChildren={lazyChildren}\n />\n ))}\n </div>\n )\n}\n"],"names":["useMemo","getAllLeafKeys","useState","getAllParentKeys","useEffect","useCallback","getLeafKeys","jsx","TreeNode"],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useMemo, useState, useEffect, useCallback } from "react";
3
+ import { TreeNode } from "./TreeNode.js";
4
+ import { getAllLeafKeys, getAllParentKeys, getLeafKeys } from "./utils.js";
5
+ const CheckboxTree = ({
6
+ treeData,
7
+ defaultCheckedKeys = [],
8
+ checkedKeys: controlledCheckedKeys,
9
+ onCheck,
10
+ disabled = false,
11
+ defaultExpandAll = true,
12
+ defaultExpandedKeys,
13
+ expandedKeys: controlledExpandedKeys,
14
+ onExpand,
15
+ className,
16
+ style,
17
+ lazyChildren = false
18
+ }) => {
19
+ const allLeafKeys = useMemo(() => getAllLeafKeys(treeData), [treeData]);
20
+ const leafKeySet = useMemo(() => new Set(allLeafKeys), [allLeafKeys]);
21
+ const [internalLeafNodeValues, setInternalLeafNodeValues] = useState(() => {
22
+ const defaultLeafKeySet = new Set(
23
+ defaultCheckedKeys.filter((key) => leafKeySet.has(key))
24
+ );
25
+ const values = {};
26
+ for (const key of allLeafKeys) {
27
+ values[key] = defaultLeafKeySet.has(key);
28
+ }
29
+ return values;
30
+ });
31
+ const [internalExpandedKeys, setInternalExpandedKeys] = useState(() => {
32
+ if (defaultExpandedKeys) return defaultExpandedKeys;
33
+ if (defaultExpandAll) return getAllParentKeys(treeData);
34
+ return [];
35
+ });
36
+ useEffect(() => {
37
+ if (controlledExpandedKeys || !defaultExpandAll || defaultExpandedKeys)
38
+ return;
39
+ const allParentKeys = getAllParentKeys(treeData);
40
+ setInternalExpandedKeys((prev) => {
41
+ const prevSet = new Set(prev);
42
+ const newKeys = allParentKeys.filter((key) => !prevSet.has(key));
43
+ if (newKeys.length === 0) return prev;
44
+ return [...prev, ...newKeys];
45
+ });
46
+ }, [treeData, defaultExpandAll, controlledExpandedKeys, defaultExpandedKeys]);
47
+ const expandedKeysSet = useMemo(() => {
48
+ const keys = controlledExpandedKeys ?? internalExpandedKeys;
49
+ return new Set(keys);
50
+ }, [controlledExpandedKeys, internalExpandedKeys]);
51
+ const handleToggleExpand = useCallback(
52
+ (key) => {
53
+ const currentKeys = controlledExpandedKeys ?? internalExpandedKeys;
54
+ const newKeys = currentKeys.includes(key) ? currentKeys.filter((k) => k !== key) : [...currentKeys, key];
55
+ if (!controlledExpandedKeys) {
56
+ setInternalExpandedKeys(newKeys);
57
+ }
58
+ onExpand == null ? void 0 : onExpand(newKeys);
59
+ },
60
+ [controlledExpandedKeys, internalExpandedKeys, onExpand]
61
+ );
62
+ const leafNodeValues = useMemo(() => {
63
+ if (!controlledCheckedKeys) {
64
+ return internalLeafNodeValues;
65
+ }
66
+ const controlledLeafKeySet = new Set(
67
+ controlledCheckedKeys.filter((key) => leafKeySet.has(key))
68
+ );
69
+ const values = {};
70
+ for (const key of allLeafKeys) {
71
+ values[key] = controlledLeafKeySet.has(key);
72
+ }
73
+ return values;
74
+ }, [allLeafKeys, leafKeySet, controlledCheckedKeys, internalLeafNodeValues]);
75
+ const handleCheck = useCallback(
76
+ (_key, checked, node) => {
77
+ const newLeafNodeValues = { ...leafNodeValues };
78
+ if (checked) {
79
+ const leafKeys = getLeafKeys(node);
80
+ leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = true);
81
+ } else {
82
+ const leafKeys = getLeafKeys(node);
83
+ leafKeys.forEach((leafKey) => newLeafNodeValues[leafKey] = false);
84
+ }
85
+ if (!controlledCheckedKeys) {
86
+ setInternalLeafNodeValues(newLeafNodeValues);
87
+ }
88
+ if (onCheck) {
89
+ const checkedLeafNodes = {};
90
+ const allCheckedNodes = [];
91
+ const collectChecked = (current) => {
92
+ let isChecked;
93
+ if (!current.children || current.children.length === 0) {
94
+ isChecked = newLeafNodeValues[current.key] === true;
95
+ if (isChecked) {
96
+ checkedLeafNodes[current.key] = current;
97
+ }
98
+ } else {
99
+ isChecked = true;
100
+ for (const child of current.children) {
101
+ if (!collectChecked(child)) {
102
+ isChecked = false;
103
+ }
104
+ }
105
+ }
106
+ if (isChecked) {
107
+ allCheckedNodes.push(current);
108
+ }
109
+ return isChecked;
110
+ };
111
+ treeData.forEach(collectChecked);
112
+ onCheck(newLeafNodeValues, {
113
+ checked,
114
+ checkedLeafNodes,
115
+ allCheckedNodes,
116
+ node
117
+ });
118
+ }
119
+ },
120
+ [controlledCheckedKeys, onCheck, treeData, leafNodeValues]
121
+ );
122
+ return /* @__PURE__ */ jsx("div", { className, style, children: treeData.map((node) => /* @__PURE__ */ jsx(
123
+ TreeNode,
124
+ {
125
+ node,
126
+ level: 0,
127
+ leafNodeValues,
128
+ onCheck: handleCheck,
129
+ disabled,
130
+ expandedKeys: expandedKeysSet,
131
+ onToggleExpand: handleToggleExpand,
132
+ lazyChildren
133
+ },
134
+ node.key
135
+ )) });
136
+ };
137
+ export {
138
+ CheckboxTree
139
+ };
140
+ //# sourceMappingURL=CheckboxTree.js.map