@bioturing/components 0.14.1 → 0.15.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 (326) hide show
  1. package/dist/components/Badge/component.js +21 -0
  2. package/dist/components/Badge/component.js.map +1 -0
  3. package/dist/components/Badge/style.css +1 -0
  4. package/dist/components/Breadcrumb/component.js +46 -0
  5. package/dist/components/Breadcrumb/component.js.map +1 -0
  6. package/dist/components/Breadcrumb/style.css +1 -0
  7. package/dist/components/Breadcrumb/useItemRender.js +27 -0
  8. package/dist/components/Breadcrumb/useItemRender.js.map +1 -0
  9. package/dist/components/Button/component.js +9 -0
  10. package/dist/components/Button/component.js.map +1 -0
  11. package/dist/components/Button/style.css +1 -0
  12. package/dist/components/Checkbox/component.js +11 -0
  13. package/dist/components/Checkbox/component.js.map +1 -0
  14. package/dist/components/Checkbox/style.css +1 -0
  15. package/dist/components/CodeBlock/component.js +127 -0
  16. package/dist/components/CodeBlock/component.js.map +1 -0
  17. package/dist/components/CodeBlock/style.css +1 -0
  18. package/dist/components/DSRoot/component.js +21 -0
  19. package/dist/components/DSRoot/component.js.map +1 -0
  20. package/dist/components/DSRoot/context.js +9 -0
  21. package/dist/components/DSRoot/context.js.map +1 -0
  22. package/dist/components/DSRoot/style.css +1 -0
  23. package/dist/components/DropdownMenu/component.js +103 -0
  24. package/dist/components/DropdownMenu/component.js.map +1 -0
  25. package/dist/components/DropdownMenu/style.css +1 -0
  26. package/dist/components/Empty/component.js +48 -0
  27. package/dist/components/Empty/component.js.map +1 -0
  28. package/dist/components/Empty/style.css +1 -0
  29. package/dist/components/Field/component.js +30 -0
  30. package/dist/components/Field/component.js.map +1 -0
  31. package/dist/components/Field/style.css +1 -0
  32. package/dist/components/Form/component.js +23 -0
  33. package/dist/components/Form/component.js.map +1 -0
  34. package/dist/components/Form/item.js +30 -0
  35. package/dist/components/Form/item.js.map +1 -0
  36. package/dist/components/Form/style.css +1 -0
  37. package/dist/components/IconButton/component.js +49 -0
  38. package/dist/components/IconButton/component.js.map +1 -0
  39. package/dist/components/IconButton/style.css +1 -0
  40. package/dist/components/Input/component.js +25 -0
  41. package/dist/components/Input/component.js.map +1 -0
  42. package/dist/components/Modal/Modal.js +161 -0
  43. package/dist/components/Modal/Modal.js.map +1 -0
  44. package/dist/components/Modal/ModalProvider.js +70 -0
  45. package/dist/components/Modal/ModalProvider.js.map +1 -0
  46. package/dist/components/Modal/ModalService.js +25 -0
  47. package/dist/components/Modal/ModalService.js.map +1 -0
  48. package/dist/components/Modal/constants.js +5 -0
  49. package/dist/components/Modal/constants.js.map +1 -0
  50. package/dist/components/Modal/functions.js +27 -0
  51. package/dist/components/Modal/functions.js.map +1 -0
  52. package/dist/components/Modal/index.js +20 -0
  53. package/dist/components/Modal/index.js.map +1 -0
  54. package/dist/components/Modal/style.css +1 -0
  55. package/dist/components/Popover/component.js +12 -0
  56. package/dist/components/Popover/component.js.map +1 -0
  57. package/dist/components/PopupPanel/component.js +190 -0
  58. package/dist/components/PopupPanel/component.js.map +1 -0
  59. package/dist/components/PopupPanel/constants.js +5 -0
  60. package/dist/components/PopupPanel/constants.js.map +1 -0
  61. package/dist/components/PopupPanel/style.css +1 -0
  62. package/dist/components/Radio/component.js +22 -0
  63. package/dist/components/Radio/component.js.map +1 -0
  64. package/dist/components/Radio/style.css +1 -0
  65. package/dist/components/ScrollArea/component.js +40 -0
  66. package/dist/components/ScrollArea/component.js.map +1 -0
  67. package/dist/components/ScrollArea/style.css +1 -0
  68. package/dist/components/Segmented/component.js +9 -0
  69. package/dist/components/Segmented/component.js.map +1 -0
  70. package/dist/components/Segmented/style.css +1 -0
  71. package/dist/components/Select/component.js +135 -0
  72. package/dist/components/Select/component.js.map +1 -0
  73. package/dist/components/Select/style.css +1 -0
  74. package/dist/components/Slider/component.js +23 -0
  75. package/dist/components/Slider/component.js.map +1 -0
  76. package/dist/components/Spin/component.js +12 -0
  77. package/dist/components/Spin/component.js.map +1 -0
  78. package/dist/components/Spin/style.css +1 -0
  79. package/dist/components/Splitter/component.js +40 -0
  80. package/dist/components/Splitter/component.js.map +1 -0
  81. package/dist/components/Splitter/style.css +1 -0
  82. package/dist/components/Stack/Stack.js +37 -0
  83. package/dist/components/Stack/Stack.js.map +1 -0
  84. package/dist/components/Stack/StackChild.js +57 -0
  85. package/dist/components/Stack/StackChild.js.map +1 -0
  86. package/dist/components/Stack/index.js +9 -0
  87. package/dist/components/Stack/index.js.map +1 -0
  88. package/dist/components/Stack/style.css +1 -0
  89. package/dist/components/Switch/component.js +9 -0
  90. package/dist/components/Switch/component.js.map +1 -0
  91. package/dist/components/Switch/style.css +1 -0
  92. package/dist/components/Table/component.js +68 -0
  93. package/dist/components/Table/component.js.map +1 -0
  94. package/dist/components/Table/style.css +1 -0
  95. package/dist/components/Tag/component.js +30 -0
  96. package/dist/components/Tag/component.js.map +1 -0
  97. package/dist/components/Tag/style.css +1 -0
  98. package/dist/components/ThemeProvider/component.js +41 -0
  99. package/dist/components/ThemeProvider/component.js.map +1 -0
  100. package/dist/components/ThemeProvider/style.css +1 -0
  101. package/dist/components/Toast/component.js +101 -0
  102. package/dist/components/Toast/component.js.map +1 -0
  103. package/dist/components/Toast/function.js +25 -0
  104. package/dist/components/Toast/function.js.map +1 -0
  105. package/dist/components/Toast/style.css +1 -0
  106. package/dist/components/Tooltip/component.js +26 -0
  107. package/dist/components/Tooltip/component.js.map +1 -0
  108. package/dist/components/Tooltip/style.css +1 -0
  109. package/dist/components/Tour/component.js +35 -0
  110. package/dist/components/Tour/component.js.map +1 -0
  111. package/dist/components/Tour/style.css +1 -0
  112. package/dist/components/Transition/component.js +44 -0
  113. package/dist/components/Transition/component.js.map +1 -0
  114. package/dist/components/Tree/components.js +67 -0
  115. package/dist/components/Tree/components.js.map +1 -0
  116. package/dist/components/Tree/helpers.js +53 -0
  117. package/dist/components/Tree/helpers.js.map +1 -0
  118. package/dist/components/Tree/useTreeCommon.js +86 -0
  119. package/dist/components/Tree/useTreeCommon.js.map +1 -0
  120. package/dist/components/Tree/useUniqueKeysTree.js +142 -0
  121. package/dist/components/Tree/useUniqueKeysTree.js.map +1 -0
  122. package/dist/components/Truncate/component.js +93 -0
  123. package/dist/components/Truncate/component.js.map +1 -0
  124. package/dist/components/Truncate/helpers.js +36 -0
  125. package/dist/components/Truncate/helpers.js.map +1 -0
  126. package/dist/components/Truncate/style.css +1 -0
  127. package/dist/components/Upload/component.js +39 -0
  128. package/dist/components/Upload/component.js.map +1 -0
  129. package/dist/components/Upload/dragger.js +23 -0
  130. package/dist/components/Upload/dragger.js.map +1 -0
  131. package/dist/components/Upload/hooks.js +18 -0
  132. package/dist/components/Upload/hooks.js.map +1 -0
  133. package/dist/components/Upload/item.js +84 -0
  134. package/dist/components/Upload/item.js.map +1 -0
  135. package/dist/components/Upload/utils.js +7 -0
  136. package/dist/components/Upload/utils.js.map +1 -0
  137. package/dist/components/VerticalCollapsiblePanel/component.js +125 -0
  138. package/dist/components/VerticalCollapsiblePanel/component.js.map +1 -0
  139. package/dist/components/VerticalCollapsiblePanel/style.css +1 -0
  140. package/dist/components/hooks/antd.js +22 -0
  141. package/dist/components/hooks/antd.js.map +1 -0
  142. package/dist/components/hooks/base-ui.js +47 -0
  143. package/dist/components/hooks/base-ui.js.map +1 -0
  144. package/dist/components/hooks/useCharts.js +28 -0
  145. package/dist/components/hooks/useCharts.js.map +1 -0
  146. package/dist/components/hooks/useControlledState.js +15 -0
  147. package/dist/components/hooks/useControlledState.js.map +1 -0
  148. package/dist/components/utils/WithAntdTokens.js +24 -0
  149. package/dist/components/utils/WithAntdTokens.js.map +1 -0
  150. package/dist/components/utils/antdUtils.js +58 -0
  151. package/dist/components/utils/antdUtils.js.map +1 -0
  152. package/dist/components/utils/cn.js +27 -0
  153. package/dist/components/utils/cn.js.map +1 -0
  154. package/dist/components/utils/isTracebackError.js +10 -0
  155. package/dist/components/utils/isTracebackError.js.map +1 -0
  156. package/dist/components/utils/reactToString.js +23 -0
  157. package/dist/components/utils/reactToString.js.map +1 -0
  158. package/dist/index.d.ts +2497 -2
  159. package/dist/index.js +188 -3376
  160. package/dist/index.js.map +1 -0
  161. package/dist/metadata.js +513 -0
  162. package/dist/metadata.js.map +1 -0
  163. package/dist/tailwind.css +1 -4
  164. package/dist/tailwind.d.ts +1 -0
  165. package/dist/tokens/and-theme/tokens.js +351 -0
  166. package/dist/tokens/and-theme/tokens.js.map +1 -0
  167. package/dist/tokens/charts/index.js +18 -0
  168. package/dist/tokens/charts/index.js.map +1 -0
  169. package/dist/tokens/charts/tokens.js +208 -0
  170. package/dist/tokens/charts/tokens.js.map +1 -0
  171. package/dist/tokens/utils.js +37 -0
  172. package/dist/tokens/utils.js.map +1 -0
  173. package/package.json +10 -108
  174. package/dist/Badge.js +0 -41
  175. package/dist/Breadcrumb.js +0 -92
  176. package/dist/Checkbox.js +0 -12
  177. package/dist/CodeBlock.js +0 -641
  178. package/dist/Collapse.js +0 -49
  179. package/dist/DSRoot.js +0 -1181
  180. package/dist/DropdownMenu.js +0 -211
  181. package/dist/Empty.js +0 -53
  182. package/dist/Field.js +0 -66
  183. package/dist/Form.js +0 -125
  184. package/dist/IconButton.js +0 -82
  185. package/dist/Input.js +0 -48
  186. package/dist/Modal.js +0 -430
  187. package/dist/Popover.js +0 -10
  188. package/dist/PopupPanel.css +0 -116
  189. package/dist/PopupPanel.js +0 -333
  190. package/dist/Radio.js +0 -24
  191. package/dist/ScrollArea.js +0 -50
  192. package/dist/Segmented.js +0 -10
  193. package/dist/Select.js +0 -157
  194. package/dist/Slider.js +0 -39
  195. package/dist/Spin.js +0 -33
  196. package/dist/Splitter.js +0 -47
  197. package/dist/Switch.js +0 -10
  198. package/dist/Table.js +0 -126
  199. package/dist/Tag.js +0 -24
  200. package/dist/ThemeProvider.js +0 -403
  201. package/dist/Toast.js +0 -1154
  202. package/dist/Tooltip.js +0 -36
  203. package/dist/Tour.js +0 -54
  204. package/dist/Tree.js +0 -318
  205. package/dist/Truncate.js +0 -160
  206. package/dist/Upload.js +0 -460
  207. package/dist/VerticalCollapsiblePanel.js +0 -413
  208. package/dist/components/Badge/component.d.ts +0 -3
  209. package/dist/components/Badge/index.d.ts +0 -1
  210. package/dist/components/Breadcrumb/component.d.ts +0 -5
  211. package/dist/components/Breadcrumb/index.d.ts +0 -2
  212. package/dist/components/Breadcrumb/types.d.ts +0 -18
  213. package/dist/components/Breadcrumb/useItemRender.d.ts +0 -6
  214. package/dist/components/Button/component.d.ts +0 -7
  215. package/dist/components/Button/index.d.ts +0 -1
  216. package/dist/components/Checkbox/component.d.ts +0 -10
  217. package/dist/components/Checkbox/index.d.ts +0 -1
  218. package/dist/components/CodeBlock/component.d.ts +0 -2
  219. package/dist/components/CodeBlock/index.d.ts +0 -2
  220. package/dist/components/CodeBlock/types.d.ts +0 -47
  221. package/dist/components/Collapse/component.d.ts +0 -13
  222. package/dist/components/Collapse/index.d.ts +0 -1
  223. package/dist/components/DSRoot/component.d.ts +0 -13
  224. package/dist/components/DSRoot/context.d.ts +0 -7
  225. package/dist/components/DSRoot/index.d.ts +0 -1
  226. package/dist/components/DropdownMenu/component.d.ts +0 -30
  227. package/dist/components/DropdownMenu/index.d.ts +0 -2
  228. package/dist/components/Empty/component.d.ts +0 -12
  229. package/dist/components/Empty/index.d.ts +0 -1
  230. package/dist/components/Field/component.d.ts +0 -41
  231. package/dist/components/Field/index.d.ts +0 -1
  232. package/dist/components/Form/component.d.ts +0 -18
  233. package/dist/components/Form/index.d.ts +0 -1
  234. package/dist/components/Form/item.d.ts +0 -5
  235. package/dist/components/IconButton/component.d.ts +0 -29
  236. package/dist/components/IconButton/index.d.ts +0 -1
  237. package/dist/components/Input/component.d.ts +0 -30
  238. package/dist/components/Input/index.d.ts +0 -1
  239. package/dist/components/Modal/Modal.d.ts +0 -84
  240. package/dist/components/Modal/ModalProvider.d.ts +0 -5
  241. package/dist/components/Modal/ModalService.d.ts +0 -33
  242. package/dist/components/Modal/constants.d.ts +0 -9
  243. package/dist/components/Modal/functions.d.ts +0 -27
  244. package/dist/components/Modal/index.d.ts +0 -14
  245. package/dist/components/Popover/component.d.ts +0 -9
  246. package/dist/components/Popover/index.d.ts +0 -1
  247. package/dist/components/PopupPanel/component.d.ts +0 -61
  248. package/dist/components/PopupPanel/constants.d.ts +0 -7
  249. package/dist/components/PopupPanel/index.d.ts +0 -1
  250. package/dist/components/Radio/component.d.ts +0 -7
  251. package/dist/components/Radio/index.d.ts +0 -2
  252. package/dist/components/Radio/interface.d.ts +0 -5
  253. package/dist/components/ScrollArea/component.d.ts +0 -10
  254. package/dist/components/ScrollArea/index.d.ts +0 -1
  255. package/dist/components/Segmented/component.d.ts +0 -9
  256. package/dist/components/Segmented/index.d.ts +0 -1
  257. package/dist/components/Select/component.d.ts +0 -23
  258. package/dist/components/Select/index.d.ts +0 -1
  259. package/dist/components/Slider/component.d.ts +0 -5
  260. package/dist/components/Slider/index.d.ts +0 -1
  261. package/dist/components/Spin/component.d.ts +0 -3
  262. package/dist/components/Spin/index.d.ts +0 -1
  263. package/dist/components/Splitter/component.d.ts +0 -12
  264. package/dist/components/Splitter/index.d.ts +0 -1
  265. package/dist/components/Switch/component.d.ts +0 -8
  266. package/dist/components/Switch/index.d.ts +0 -1
  267. package/dist/components/Table/component.d.ts +0 -19
  268. package/dist/components/Table/index.d.ts +0 -1
  269. package/dist/components/Tag/component.d.ts +0 -11
  270. package/dist/components/Tag/index.d.ts +0 -1
  271. package/dist/components/ThemeProvider/component.d.ts +0 -6
  272. package/dist/components/ThemeProvider/index.d.ts +0 -1
  273. package/dist/components/Toast/component.d.ts +0 -14
  274. package/dist/components/Toast/function.d.ts +0 -10
  275. package/dist/components/Toast/index.d.ts +0 -3
  276. package/dist/components/Toast/types.d.ts +0 -3
  277. package/dist/components/Tooltip/component.d.ts +0 -9
  278. package/dist/components/Tooltip/index.d.ts +0 -1
  279. package/dist/components/Tour/component.d.ts +0 -7
  280. package/dist/components/Tour/index.d.ts +0 -1
  281. package/dist/components/Transition/component.d.ts +0 -17
  282. package/dist/components/Transition/index.d.ts +0 -1
  283. package/dist/components/Tree/components.d.ts +0 -13
  284. package/dist/components/Tree/helpers.d.ts +0 -4
  285. package/dist/components/Tree/index.d.ts +0 -4
  286. package/dist/components/Tree/types.d.ts +0 -55
  287. package/dist/components/Tree/useTreeCommon.d.ts +0 -178
  288. package/dist/components/Tree/useUniqueKeysTree.d.ts +0 -33
  289. package/dist/components/Truncate/component.d.ts +0 -12
  290. package/dist/components/Truncate/helpers.d.ts +0 -5
  291. package/dist/components/Truncate/index.d.ts +0 -1
  292. package/dist/components/Upload/component.d.ts +0 -16
  293. package/dist/components/Upload/dragger.d.ts +0 -13
  294. package/dist/components/Upload/hooks.d.ts +0 -5
  295. package/dist/components/Upload/index.d.ts +0 -3
  296. package/dist/components/Upload/item.d.ts +0 -11
  297. package/dist/components/Upload/utils.d.ts +0 -1
  298. package/dist/components/VerticalCollapsiblePanel/component.d.ts +0 -64
  299. package/dist/components/VerticalCollapsiblePanel/index.d.ts +0 -1
  300. package/dist/components/hooks/antd.d.ts +0 -11
  301. package/dist/components/hooks/base-ui.d.ts +0 -7
  302. package/dist/components/hooks/index.d.ts +0 -4
  303. package/dist/components/hooks/useCharts.d.ts +0 -22
  304. package/dist/components/hooks/useControlledState.d.ts +0 -1
  305. package/dist/components/index.d.ts +0 -40
  306. package/dist/components/utils/WithAntdTokens.d.ts +0 -7
  307. package/dist/components/utils/antdUtils.d.ts +0 -15
  308. package/dist/components/utils/client.d.ts +0 -2
  309. package/dist/components/utils/cn.d.ts +0 -4
  310. package/dist/components/utils/index.d.ts +0 -3
  311. package/dist/components/utils/isTracebackError.d.ts +0 -1
  312. package/dist/components/utils/main.d.ts +0 -3
  313. package/dist/components/utils/reactToString.d.ts +0 -2
  314. package/dist/components/utils/types.d.ts +0 -9
  315. package/dist/hooks.js +0 -961
  316. package/dist/index.css +0 -116
  317. package/dist/style.css +0 -1392
  318. package/dist/style.js +0 -0
  319. package/dist/tailwind.js +0 -0
  320. package/dist/tokens/and-theme/index.d.ts +0 -1
  321. package/dist/tokens/and-theme/tokens.d.ts +0 -5
  322. package/dist/tokens/charts/index.d.ts +0 -6
  323. package/dist/tokens/charts/tokens.d.ts +0 -455
  324. package/dist/tokens/index.d.ts +0 -2
  325. package/dist/tokens/utils.d.ts +0 -16
  326. package/dist/utils.js +0 -120
@@ -0,0 +1,23 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import m from "antd/es/form/ErrorList";
3
+ import t, { useWatch as i, useForm as e } from "antd/es/form/Form";
4
+ import s from "antd/es/form/FormList";
5
+ import { FormProvider as n } from "antd/es/form/context";
6
+ import p from "antd/es/form/hooks/useFormInstance";
7
+ import { FormItem as F } from "./item.js";
8
+ import './style.css';/* empty css */
9
+ const f = ({
10
+ ...r
11
+ }) => /* @__PURE__ */ o(t, { ...r }), v = Object.assign(f, {
12
+ useForm: e,
13
+ useFormInstance: p,
14
+ useWatch: i,
15
+ Item: F,
16
+ List: s,
17
+ ErrorList: m,
18
+ Provider: n
19
+ });
20
+ export {
21
+ v as Form
22
+ };
23
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/Form/component.tsx"],"sourcesContent":["\"use client\";\nimport ErrorList from \"antd/es/form/ErrorList\";\nimport {\n FormProps as AntdFormProps,\n default as AntdInternalForm,\n useForm,\n useWatch,\n} from \"antd/es/form/Form\";\nimport FormList from \"antd/es/form/FormList\";\nimport { FormProvider } from \"antd/es/form/context\";\nimport useFormInstance from \"antd/es/form/hooks/useFormInstance\";\nimport * as React from \"react\";\nimport { FormItem, type FormItemProps } from \"./item\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\nexport interface FormProps<Values = any> extends AntdFormProps<Values> {}\n\ninterface InternalFormProps<Values = any>\n extends React.ComponentProps<typeof AntdInternalForm<Values>> {}\n\nconst InternalForm = <Values = any,>({\n ...rest\n}: InternalFormProps<Values>) => {\n return <AntdInternalForm {...rest} />;\n};\n\nexport const Form = Object.assign(InternalForm, {\n useForm,\n useFormInstance,\n useWatch,\n Item: FormItem,\n List: FormList,\n ErrorList,\n Provider: FormProvider,\n});\n\nexport type { FormItemProps };\n"],"names":["InternalForm","rest","jsx","AntdInternalForm","Form","useForm","useFormInstance","useWatch","FormItem","FormList","ErrorList","FormProvider"],"mappings":";;;;;;;;AAsBA,MAAMA,IAAe,CAAgB;AAAA,EACnC,GAAGC;AACL,MACS,gBAAAC,EAACC,GAAkB,EAAA,GAAGF,EAAM,CAAA,GAGxBG,IAAO,OAAO,OAAOJ,GAAc;AAAA,EAC9C,SAAAK;AAAA,EACA,iBAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,WAAAC;AAAA,EACA,UAAUC;AACZ,CAAC;"}
@@ -0,0 +1,30 @@
1
+ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
+ import { isValidElement as l } from "react";
3
+ import a from "antd/es/form/FormItem";
4
+ import { Question as c } from "@bioturing/assets";
5
+ import { useCls as f } from "../utils/antdUtils.js";
6
+ import { IconButton as d } from "../IconButton/component.js";
7
+ const N = ({
8
+ tooltip: e,
9
+ label: o,
10
+ optionalMark: m,
11
+ ...s
12
+ }) => {
13
+ const n = f(), i = e || m ? /* @__PURE__ */ t("span", { className: n("form-item-label-inner"), children: [
14
+ o,
15
+ e && /* @__PURE__ */ r(
16
+ d,
17
+ {
18
+ className: n("form-item-explaination-icon"),
19
+ label: typeof e == "string" || l(e) ? e : void 0,
20
+ children: /* @__PURE__ */ r(c, {})
21
+ }
22
+ ),
23
+ m && /* @__PURE__ */ r("span", { className: n("form-item-label-optional-mark"), children: typeof m == "boolean" ? "(optional)" : m })
24
+ ] }) : o;
25
+ return /* @__PURE__ */ r(a, { label: i, ...s });
26
+ };
27
+ export {
28
+ N as FormItem
29
+ };
30
+ //# sourceMappingURL=item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"item.js","sources":["../../../src/components/Form/item.tsx"],"sourcesContent":["\"use client\";\nimport { isValidElement } from \"react\";\nimport {\n default as AntdFormItem,\n type FormItemProps as AntdFormItemProps,\n} from \"antd/es/form/FormItem\";\nimport { Question } from \"@bioturing/assets\";\nimport { IconButton } from \"../IconButton\";\nimport { useCls } from \"../utils\";\n\nexport interface FormItemProps<Values = unknown>\n extends AntdFormItemProps<Values> {\n // tooltip?: React.ReactNode | TooltipProps;\n optionalMark?: boolean | React.ReactNode;\n}\n\nexport const FormItem = <Values = unknown,>({\n tooltip,\n label,\n optionalMark,\n ...rest\n}: FormItemProps<Values>) => {\n const cls = useCls();\n const renderedLabel =\n tooltip || optionalMark ? (\n <span className={cls(\"form-item-label-inner\")}>\n {label}\n {tooltip && (\n <IconButton\n className={cls(\"form-item-explaination-icon\")}\n label={\n typeof tooltip == \"string\" || isValidElement(tooltip)\n ? tooltip\n : undefined\n }\n >\n <Question />\n </IconButton>\n )}\n {optionalMark && (\n <span className={cls(\"form-item-label-optional-mark\")}>\n {typeof optionalMark == \"boolean\" ? \"(optional)\" : optionalMark}\n </span>\n )}\n </span>\n ) : (\n label\n );\n return <AntdFormItem label={renderedLabel} {...rest} />;\n};\n"],"names":["FormItem","tooltip","label","optionalMark","rest","cls","useCls","renderedLabel","jsxs","jsx","IconButton","isValidElement","Question","AntdFormItem"],"mappings":";;;;;;AAgBO,MAAMA,IAAW,CAAoB;AAAA,EAC1C,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,MAA6B;AAC3B,QAAMC,IAAMC,EAAO,GACbC,IACJN,KAAWE,IACT,gBAAAK,EAAC,UAAK,WAAWH,EAAI,uBAAuB,GACzC,UAAA;AAAA,IAAAH;AAAA,IACAD,KACC,gBAAAQ;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,WAAWL,EAAI,6BAA6B;AAAA,QAC5C,OACE,OAAOJ,KAAW,YAAYU,EAAeV,CAAO,IAChDA,IACA;AAAA,QAGN,4BAACW,GAAS,CAAA,CAAA;AAAA,MAAA;AAAA,IACZ;AAAA,IAEDT,KACE,gBAAAM,EAAA,QAAA,EAAK,WAAWJ,EAAI,+BAA+B,GACjD,UAAO,OAAAF,KAAgB,YAAY,eAAeA,EACrD,CAAA;AAAA,EAAA,EAAA,CAEJ,IAEAD;AAEJ,SAAQ,gBAAAO,EAAAI,GAAA,EAAa,OAAON,GAAgB,GAAGH,GAAM;AACvD;"}
@@ -0,0 +1 @@
1
+ @layer components{.ds-form-item-label-inner{display:inline-flex;align-items:center;gap:.25rem}.ds-form-item-label-optional-mark{color:var(--ds-color-text-tertiary)}}
@@ -0,0 +1,49 @@
1
+ import { jsx as m } from "react/jsx-runtime";
2
+ import { forwardRef as j } from "react";
3
+ import { Tooltip as x } from "antd";
4
+ import './style.css';/* empty css */
5
+ import { useCls as y, useAntdCssVarClassname as N } from "../utils/antdUtils.js";
6
+ const V = (u, d) => {
7
+ const {
8
+ label: e,
9
+ size: p = "medium",
10
+ negativeMargin: f = !0,
11
+ children: b,
12
+ className: v,
13
+ tooltipProps: C = {},
14
+ as: g,
15
+ href: o,
16
+ // Extract anchor-specific props
17
+ target: s,
18
+ rel: r,
19
+ download: a,
20
+ hrefLang: i,
21
+ referrerPolicy: l,
22
+ ...h
23
+ } = u, t = y(), P = N(), w = [
24
+ t("icon-button"),
25
+ t(`icon-button-${p}`),
26
+ t(f ? "icon-button-negative-margin" : ""),
27
+ P,
28
+ v
29
+ ].filter(Boolean).join(" "), n = g || (o ? "a" : "button"), B = n === "a" ? {
30
+ ...s !== void 0 && { target: s },
31
+ ...r !== void 0 && { rel: r },
32
+ ...a !== void 0 && { download: a },
33
+ ...i !== void 0 && { hrefLang: i },
34
+ ...l !== void 0 && { referrerPolicy: l }
35
+ } : {}, I = {
36
+ ref: d,
37
+ className: w,
38
+ ...n === "button" && { type: "button" },
39
+ ...o && { href: o },
40
+ ...B,
41
+ ...h
42
+ }, c = /* @__PURE__ */ m(n, { ...I, children: b });
43
+ return e ? /* @__PURE__ */ m(x, { title: e, arrow: !1, ...C, children: c }) : c;
44
+ }, T = j(V);
45
+ export {
46
+ T as IconButton,
47
+ T as default
48
+ };
49
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/IconButton/component.tsx"],"sourcesContent":["\"use client\";\nimport React, {\n forwardRef,\n type ElementType,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type Ref,\n type AnchorHTMLAttributes,\n ComponentPropsWithRef,\n} from \"react\";\nimport { Tooltip } from \"antd\";\nimport { useCls, useAntdCssVarClassname } from \"../utils\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\n// Base props without href/as handling\ntype IconButtonBaseProps = {\n label?: React.ReactNode;\n size?: \"small\" | \"medium\";\n negativeMargin?: boolean;\n tooltipProps?: React.ComponentProps<typeof Tooltip>;\n};\n\n// Extract anchor-specific props we want to automatically handle\ntype AnchorSpecificProps = Pick<\n AnchorHTMLAttributes<HTMLAnchorElement>,\n \"target\" | \"rel\" | \"download\" | \"hrefLang\" | \"referrerPolicy\"\n>;\n\n// Props when href is provided - as defaults to 'a' and includes anchor-specific props\ntype WithHrefProps<E extends ElementType = \"a\"> = IconButtonBaseProps & {\n href: string;\n as?: E;\n} & AnchorSpecificProps;\n\n// Props when href is not provided - as defaults to 'button'\ntype WithoutHrefProps<E extends ElementType = \"button\"> =\n IconButtonBaseProps & {\n href?: undefined;\n as?: E;\n } & {\n [K in keyof AnchorSpecificProps]?: never;\n };\n\n// Combined props type with conditional behavior\ntype IconButtonOwnProps<E extends ElementType = ElementType> =\n | WithHrefProps<E>\n | WithoutHrefProps<E>;\n\nexport type IconButtonProps<E extends ElementType = \"button\"> =\n IconButtonOwnProps<E> &\n Omit<ComponentPropsWithoutRef<E>, keyof IconButtonOwnProps<E>>;\n\n/**\n * A type-safe polymorphic component pattern\n */\ninterface PolymorphicComponentProps<E extends ElementType = \"button\"> {\n as?: E;\n href?: string;\n}\n\n/**\n * Type for wrapping the forwardRef implementation\n */\ntype IconButtonComponent = <E extends ElementType = \"button\">(\n props: IconButtonProps<E> & { ref?: ComponentPropsWithRef<E>[\"ref\"] }\n) => ReactElement;\n\n/**\n * Implementation of the IconButton component\n */\nconst IconButtonImpl = <E extends ElementType = \"button\">(\n props: IconButtonProps<E> & PolymorphicComponentProps<E>,\n ref: Ref<Element>\n) => {\n const {\n label,\n size = \"medium\",\n negativeMargin = true,\n children,\n className,\n tooltipProps = {},\n as,\n href,\n // Extract anchor-specific props\n target,\n rel,\n download,\n hrefLang,\n referrerPolicy,\n ...rest\n } = props;\n const cls = useCls();\n const antdCssVarClassname = useAntdCssVarClassname();\n const buttonClasses = [\n cls(\"icon-button\"),\n cls(`icon-button-${size}`),\n cls(negativeMargin ? \"icon-button-negative-margin\" : \"\"),\n antdCssVarClassname,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n // Use a type assertion for the component to avoid TypeScript errors\n const Component = (as || (href ? \"a\" : \"button\")) as ElementType;\n\n // Collect anchor-specific props only if they're defined\n const anchorProps =\n Component === \"a\"\n ? {\n ...(target !== undefined && { target }),\n ...(rel !== undefined && { rel }),\n ...(download !== undefined && { download }),\n ...(hrefLang !== undefined && { hrefLang }),\n ...(referrerPolicy !== undefined && { referrerPolicy }),\n }\n : {};\n\n const elementProps = {\n ref,\n className: buttonClasses,\n ...(Component === \"button\" && { type: \"button\" }),\n ...(href && { href }),\n ...anchorProps,\n ...rest,\n };\n\n const element = <Component {...elementProps}>{children}</Component>;\n\n return label ? (\n <Tooltip title={label} arrow={false} {...tooltipProps}>\n {element}\n </Tooltip>\n ) : (\n element\n );\n};\n\n// Export with correct typing\nexport const IconButton = forwardRef(IconButtonImpl) as IconButtonComponent;\n\nexport default IconButton;\n"],"names":["IconButtonImpl","props","ref","label","size","negativeMargin","children","className","tooltipProps","as","href","target","rel","download","hrefLang","referrerPolicy","rest","cls","useCls","antdCssVarClassname","useAntdCssVarClassname","buttonClasses","Component","anchorProps","elementProps","element","jsx","Tooltip","IconButton","forwardRef"],"mappings":";;;;;AAwEA,MAAMA,IAAiB,CACrBC,GACAC,MACG;AACG,QAAA;AAAA,IACJ,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,gBAAAC,IAAiB;AAAA,IACjB,UAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC,IAAe,CAAC;AAAA,IAChB,IAAAC;AAAA,IACA,MAAAC;AAAA;AAAA,IAEA,QAAAC;AAAA,IACA,KAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDf,GACEgB,IAAMC,EAAO,GACbC,IAAsBC,EAAuB,GAC7CC,IAAgB;AAAA,IACpBJ,EAAI,aAAa;AAAA,IACjBA,EAAI,eAAeb,CAAI,EAAE;AAAA,IACzBa,EAAIZ,IAAiB,gCAAgC,EAAE;AAAA,IACvDc;AAAA,IACAZ;AAAA,EAEC,EAAA,OAAO,OAAO,EACd,KAAK,GAAG,GAGLe,IAAab,MAAOC,IAAO,MAAM,WAGjCa,IACJD,MAAc,MACV;AAAA,IACE,GAAIX,MAAW,UAAa,EAAE,QAAAA,EAAO;AAAA,IACrC,GAAIC,MAAQ,UAAa,EAAE,KAAAA,EAAI;AAAA,IAC/B,GAAIC,MAAa,UAAa,EAAE,UAAAA,EAAS;AAAA,IACzC,GAAIC,MAAa,UAAa,EAAE,UAAAA,EAAS;AAAA,IACzC,GAAIC,MAAmB,UAAa,EAAE,gBAAAA,EAAe;AAAA,EAAA,IAEvD,CAAC,GAEDS,IAAe;AAAA,IACnB,KAAAtB;AAAA,IACA,WAAWmB;AAAA,IACX,GAAIC,MAAc,YAAY,EAAE,MAAM,SAAS;AAAA,IAC/C,GAAIZ,KAAQ,EAAE,MAAAA,EAAK;AAAA,IACnB,GAAGa;AAAA,IACH,GAAGP;AAAA,EACL,GAEMS,IAAU,gBAAAC,EAACJ,GAAW,EAAA,GAAGE,GAAe,UAAAlB,GAAS;AAEhD,SAAAH,IACJ,gBAAAuB,EAAAC,GAAA,EAAQ,OAAOxB,GAAO,OAAO,IAAQ,GAAGK,GACtC,UAAAiB,EAAA,CACH,IAEAA;AAEJ,GAGaG,IAAaC,EAAW7B,CAAc;"}
@@ -0,0 +1 @@
1
+ @layer components{.ds-icon-button{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:999px;cursor:pointer;background-color:transparent;color:var(--ds-color-icon);transition:all .2s}.ds-icon-button:hover{background-color:var(--ds-color-fill-secondary);color:var(--ds-color-icon-hover)}.ds-icon-button:active,.ds-icon-button.ds-popover-open{background-color:var(--ds-color-primary-bg);color:var(--ds-color-primary)}.ds-icon-button:focus{outline:none}.ds-icon-button:disabled{cursor:not-allowed;pointer-events:none;color:var(--ds-color-text-disabled)}.ds-icon-button.ds-icon-button-medium{padding:.125rem;font-size:1.25rem;height:1.5rem;width:1.5rem}.ds-icon-button.ds-icon-button-small{padding:.125rem;font-size:1rem;height:1.25rem;width:1.25rem}.ds-icon-button.ds-icon-button-negative-margin{margin:-.125rem}}
@@ -0,0 +1,25 @@
1
+ import { jsx as r } from "react/jsx-runtime";
2
+ import { MagnifyingGlass as c, Eye as i, EyeClosed as u } from "@bioturing/assets";
3
+ import { Input as t } from "antd";
4
+ import { forwardRef as o } from "react";
5
+ const m = (n, e) => /* @__PURE__ */ r(t, { ref: e, ...n }), I = (n, e) => {
6
+ const s = {
7
+ iconRender: (a) => a ? /* @__PURE__ */ r(i, { size: 16 }) : /* @__PURE__ */ r(u, { size: 16 }),
8
+ ...n
9
+ };
10
+ return /* @__PURE__ */ r(t.Password, { ref: e, ...s });
11
+ }, d = (n, e) => {
12
+ const s = {
13
+ enterButton: n.enterButton === !0 ? /* @__PURE__ */ r(c, { size: 16 }) : n.enterButton,
14
+ ...n
15
+ };
16
+ return /* @__PURE__ */ r(t.Search, { ref: e, ...s });
17
+ }, p = (n, e) => /* @__PURE__ */ r(t.TextArea, { ref: e, ...n }), f = o(m), g = o(I), x = o(d), P = o(p), A = Object.assign(f, {
18
+ Password: g,
19
+ Search: x,
20
+ TextArea: P
21
+ });
22
+ export {
23
+ A as Input
24
+ };
25
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/Input/component.tsx"],"sourcesContent":["import { Eye, EyeClosed, MagnifyingGlass } from \"@bioturing/assets\";\nimport {\n Input as AntInput,\n type InputProps as AntInputProps,\n type InputRef,\n} from \"antd\";\nimport { type PasswordProps as AntPasswordProps } from \"antd/es/input\";\nimport { type SearchProps as AntSearchProps } from \"antd/es/input\";\nimport { type TextAreaProps as AntTextAreaProps } from \"antd/es/input\";\nimport { forwardRef } from \"react\";\n\n// Define props interfaces\nexport interface InputProps extends AntInputProps {}\nexport interface PasswordProps extends AntPasswordProps {}\nexport interface TextAreaProps extends AntTextAreaProps {}\nexport interface SearchProps extends AntSearchProps {}\n\n// Create inner function for main Input\nconst MainInputInner = (props: InputProps, ref: React.Ref<InputRef>) => {\n return <AntInput ref={ref} {...props} />;\n};\n\n// Create inner function for Password\nconst PasswordInner = (props: PasswordProps, ref: React.Ref<InputRef>) => {\n // Apply default iconRender unless overridden by props\n const mergedProps = {\n iconRender: (visible: boolean) =>\n visible ? <Eye size={16} /> : <EyeClosed size={16} />,\n ...props,\n };\n\n return <AntInput.Password ref={ref} {...mergedProps} />;\n};\n\n// Create inner function for Search\nconst SearchInner = (props: SearchProps, ref: React.Ref<InputRef>) => {\n // Apply default enterButton unless overridden\n const mergedProps = {\n enterButton:\n props.enterButton === true ? (\n <MagnifyingGlass size={16} />\n ) : (\n props.enterButton\n ),\n ...props,\n };\n\n return <AntInput.Search ref={ref} {...mergedProps} />;\n};\n\n// Create inner function for TextArea\nconst TextAreaInner = (\n props: TextAreaProps,\n ref: React.Ref<HTMLTextAreaElement>\n) => {\n return <AntInput.TextArea ref={ref} {...props} />;\n};\n\n// Use forwardRef with type assertion for main Input\nconst MainInput = forwardRef(MainInputInner) as (\n props: InputProps & {\n ref?: React.ForwardedRef<InputRef>;\n }\n) => ReturnType<typeof MainInputInner>;\n\n// Use forwardRef with type assertion for Password\nconst Password = forwardRef(PasswordInner) as (\n props: PasswordProps & {\n ref?: React.ForwardedRef<InputRef>;\n }\n) => ReturnType<typeof PasswordInner>;\n\n// Use forwardRef with type assertion for Search\nconst Search = forwardRef(SearchInner) as (\n props: SearchProps & {\n ref?: React.ForwardedRef<InputRef>;\n }\n) => ReturnType<typeof SearchInner>;\n\n// Use forwardRef with type assertion for TextArea\nconst TextArea = forwardRef(TextAreaInner) as (\n props: TextAreaProps & {\n ref?: React.ForwardedRef<HTMLTextAreaElement>;\n }\n) => ReturnType<typeof TextAreaInner>;\n\n// Export the final composed component\nexport const Input = Object.assign(MainInput, {\n Password,\n Search,\n TextArea,\n});\n"],"names":["MainInputInner","props","ref","jsx","AntInput","PasswordInner","mergedProps","visible","Eye","EyeClosed","SearchInner","MagnifyingGlass","TextAreaInner","MainInput","forwardRef","Password","Search","TextArea","Input"],"mappings":";;;;AAkBA,MAAMA,IAAiB,CAACC,GAAmBC,MACjC,gBAAAC,EAAAC,GAAA,EAAS,KAAAF,GAAW,GAAGD,EAAO,CAAA,GAIlCI,IAAgB,CAACJ,GAAsBC,MAA6B;AAExE,QAAMI,IAAc;AAAA,IAClB,YAAY,CAACC,MACXA,IAAW,gBAAAJ,EAAAK,GAAA,EAAI,MAAM,GAAI,CAAA,IAAK,gBAAAL,EAACM,GAAU,EAAA,MAAM,GAAI,CAAA;AAAA,IACrD,GAAGR;AAAA,EACL;AAEA,2BAAQG,EAAS,UAAT,EAAkB,KAAAF,GAAW,GAAGI,GAAa;AACvD,GAGMI,IAAc,CAACT,GAAoBC,MAA6B;AAEpE,QAAMI,IAAc;AAAA,IAClB,aACEL,EAAM,gBAAgB,uBACnBU,GAAgB,EAAA,MAAM,IAAI,IAE3BV,EAAM;AAAA,IAEV,GAAGA;AAAA,EACL;AAEA,2BAAQG,EAAS,QAAT,EAAgB,KAAAF,GAAW,GAAGI,GAAa;AACrD,GAGMM,IAAgB,CACpBX,GACAC,wBAEQE,EAAS,UAAT,EAAkB,KAAAF,GAAW,GAAGD,GAAO,GAI3CY,IAAYC,EAAWd,CAAc,GAOrCe,IAAWD,EAAWT,CAAa,GAOnCW,IAASF,EAAWJ,CAAW,GAO/BO,IAAWH,EAAWF,CAAa,GAO5BM,IAAQ,OAAO,OAAOL,GAAW;AAAA,EAC5C,UAAAE;AAAA,EACA,QAAAC;AAAA,EACA,UAAAC;AACF,CAAC;"}
@@ -0,0 +1,161 @@
1
+ import { jsx as e, jsxs as m, Fragment as N } from "react/jsx-runtime";
2
+ import me from "antd/es/modal";
3
+ import { XIcon as fe } from "@bioturing/assets";
4
+ import { useState as R, useRef as ue, useCallback as pe, useEffect as he } from "react";
5
+ import { ModalContextProvider as be } from "antd/es/modal/context";
6
+ import L from "antd/es/modal/components/NormalCancelBtn";
7
+ import C from "antd/es/modal/components/NormalOkBtn";
8
+ import { getConfirmLocale as ve } from "antd/es/modal/locale";
9
+ import { useLocale as ge } from "antd/es/locale";
10
+ import { ModalSize as f } from "./constants.js";
11
+ import { Stack as h } from "../Stack/index.js";
12
+ import { Truncate as ye } from "../Truncate/component.js";
13
+ import { IconButton as we } from "../IconButton/component.js";
14
+ import { useCls as xe } from "../utils/antdUtils.js";
15
+ const We = ({
16
+ open: b,
17
+ closeIcon: v,
18
+ children: j,
19
+ size: E,
20
+ footer: g,
21
+ width: F,
22
+ style: P,
23
+ styles: c,
24
+ classNames: W,
25
+ okButtonProps: $,
26
+ cancelButtonProps: q,
27
+ loading: A,
28
+ onOk: i,
29
+ onCancel: r,
30
+ okText: y,
31
+ okType: X = "primary",
32
+ confirmLoading: w,
33
+ cancelText: x = "Close",
34
+ hideOkButton: z = !1,
35
+ hideCancelButton: k = !1,
36
+ contentPadding: l,
37
+ title: u,
38
+ afterTitle: B,
39
+ beforeCloseButton: D,
40
+ afterCloseButton: G,
41
+ defaultFixedHeaderFooter: J = !1,
42
+ centered: K = !0,
43
+ type: Q = "default",
44
+ defaultOpen: U = !0,
45
+ background: V,
46
+ bodyScrollable: Y = !0,
47
+ ...Z
48
+ }) => {
49
+ const _ = v === void 0 ? /* @__PURE__ */ e(fe, { size: 16, weight: "bold" }) : v, t = E || (Q === "default" ? "medium" : "xsmall"), ee = F || f[t], oe = {
50
+ "--ds-modal-bg": `var(--ds-color-bg-${V || (t && t in f && parseInt(f[t]) <= parseInt(f.medium) ? "elevated" : "container")})`,
51
+ ...P,
52
+ ...t === "fullscreen" ? { top: 0, maxWidth: "100%", height: "100%" } : {}
53
+ }, re = {
54
+ ...c,
55
+ body: {
56
+ ...typeof l < "u" ? {
57
+ "--ds-modal-content-padding": l === !1 || l === 0 ? "0" : typeof l == "number" ? `${l}px` : l
58
+ } : {},
59
+ ...c == null ? void 0 : c.body
60
+ }
61
+ }, [I, M] = R(!1), a = xe(), d = ue(null), te = pe(
62
+ (o) => {
63
+ if (!o) return;
64
+ const n = o.querySelector("." + a("modal-body"));
65
+ if (!(n instanceof HTMLElement)) return;
66
+ const H = new ResizeObserver(() => {
67
+ const de = n.scrollHeight > n.clientHeight;
68
+ M(de);
69
+ });
70
+ d.current = H, H.observe(n);
71
+ const ie = n.scrollHeight > n.clientHeight;
72
+ M(ie);
73
+ },
74
+ [a]
75
+ );
76
+ he(() => () => {
77
+ d.current && (d.current.disconnect(), d.current = null);
78
+ }, []);
79
+ const [s] = ge("Modal", ve()), le = y || (s == null ? void 0 : s.okText), se = x || (s == null ? void 0 : s.cancelText), S = {
80
+ loading: A,
81
+ ...$
82
+ }, O = {
83
+ ...q
84
+ }, [ne, T] = R(U), p = typeof b > "u", ae = p ? ne : b, ce = /* @__PURE__ */ e(
85
+ be,
86
+ {
87
+ value: {
88
+ okButtonProps: S,
89
+ cancelButtonProps: O,
90
+ onCancel: r,
91
+ onOk: i,
92
+ okType: X,
93
+ confirmLoading: w,
94
+ okTextLocale: le,
95
+ cancelTextLocale: se
96
+ },
97
+ children: z ? /* @__PURE__ */ e(L, {}) : k ? /* @__PURE__ */ e(C, {}) : /* @__PURE__ */ m(N, { children: [
98
+ /* @__PURE__ */ e(L, {}),
99
+ /* @__PURE__ */ e(C, {})
100
+ ] })
101
+ }
102
+ );
103
+ return /* @__PURE__ */ e(
104
+ me,
105
+ {
106
+ closeIcon: !1,
107
+ open: ae,
108
+ width: ee,
109
+ style: oe,
110
+ title: /* @__PURE__ */ m(N, { children: [
111
+ /* @__PURE__ */ m(h, { align: "center", gap: 8, className: a("modal-title-wrapper"), children: [
112
+ /* @__PURE__ */ e(h.Child, { grow: !0, children: typeof u == "string" ? /* @__PURE__ */ e(ye, { children: u }) : u }),
113
+ /* @__PURE__ */ m(h.Child, { stack: !0, hug: !0, align: "center", children: [
114
+ D,
115
+ /* @__PURE__ */ e(
116
+ we,
117
+ {
118
+ onClick: (o) => r == null ? void 0 : r(o),
119
+ children: _
120
+ }
121
+ ),
122
+ G
123
+ ] })
124
+ ] }),
125
+ B || null
126
+ ] }),
127
+ classNames: {
128
+ ...W,
129
+ wrapper: a(
130
+ "modal-wrap",
131
+ t == "fullscreen" && "modal-fullscreen",
132
+ I && "modal-content-overflow",
133
+ Y === !1 && "modal-no-body-scroll",
134
+ J || I || t == "fullscreen" ? "modal-fixed" : ""
135
+ )
136
+ },
137
+ styles: re,
138
+ modalRender: (o) => /* @__PURE__ */ e("div", { ref: te, className: a("modal-inner"), children: o }),
139
+ okButtonProps: S,
140
+ cancelButtonProps: O,
141
+ onOk: (o) => {
142
+ p && T(!1), i == null || i(o);
143
+ },
144
+ onCancel: (o) => {
145
+ p && T(!1), r == null || r(o);
146
+ },
147
+ okText: y,
148
+ cancelText: x,
149
+ okType: "primary",
150
+ confirmLoading: w,
151
+ footer: typeof g > "u" ? z && k ? null : ce : g,
152
+ centered: K,
153
+ ...Z,
154
+ children: j
155
+ }
156
+ );
157
+ };
158
+ export {
159
+ We as Modal
160
+ };
161
+ //# sourceMappingURL=Modal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Modal.js","sources":["../../../src/components/Modal/Modal.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntModal,\n type ModalProps as AntModalProps,\n} from \"antd/es/modal\";\nimport { XIcon } from \"@bioturing/assets\";\nimport React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useCls } from \"../utils\";\nimport { ModalContextProvider } from \"antd/es/modal/context\";\nimport NormalCancelBtn from \"antd/es/modal/components/NormalCancelBtn\";\nimport NormalOkBtn from \"antd/es/modal/components/NormalOkBtn\";\nimport { getConfirmLocale } from \"antd/es/modal/locale\";\nimport { useLocale } from \"antd/es/locale\";\nimport { IconButton } from \"../IconButton\";\nimport { ModalSize } from \"./constants\";\nimport { ModalType } from \"./functions\";\nimport { Truncate } from \"../Truncate\";\nimport { Stack } from \"../Stack\";\n\n// Define props interface extending Ant Design's ModalProps\nexport interface ModalProps extends Omit<AntModalProps, \"centered\"> {\n /**\n * Predefined sizes for the modal\n * - xsmall: 400px\n * - small: 520px\n * - medium: 640px (default)\n * - large: 840px\n * - xlarge: 1024px\n * - fullscreen: 100vw (takes full screen width with margins)\n * @default \"medium\" for default type, \"xsmall\" for other types\n */\n size?:\n | \"xsmall\"\n | \"small\"\n | \"medium\"\n | \"large\"\n | \"xlarge\"\n | \"xxlarge\"\n | \"fullscreen\";\n /**\n * Mark modal as loading\n * @default false\n */\n loading?: boolean;\n /**\n * Hide Ok button\n * @default false\n */\n hideOkButton?: boolean;\n /**\n * Hide Cancel button\n * @default false\n */\n hideCancelButton?: boolean;\n /**\n * Custom Content Padding\n * @default \"24px\"\n */\n contentPadding?: number | string | boolean;\n /**\n * Add more content below the title\n */\n afterTitle?: React.ReactNode;\n /**\n * Add more actions before close button\n */\n beforeCloseButton?: React.ReactNode;\n /**\n * Add more actions after close button\n */\n afterCloseButton?: React.ReactNode;\n /**\n * Set header and footer to fixed position\n * @default false\n */\n defaultFixedHeaderFooter?: boolean;\n /**\n * Centered Modal\n * @default true\n */\n centered?: boolean;\n /**\n * Modal type\n * @default \"default\"\n */\n type?: ModalType;\n /**\n * Default open state for uncontrolled modal\n * @default true\n */\n defaultOpen?: boolean;\n /**\n * Modal background\n * @default \"elevated\" if size smaller than \"medium\", otherwise \"container\"\n */\n background?: \"elevated\" | \"container\";\n /**\n * Modal old close callback\n * @deprecated use onCancel instead\n */\n onClose?: () => void;\n /**\n * Make modal body scrollable\n * @default true\n */\n bodyScrollable?: boolean;\n}\n\n// Create Modal component\nexport const Modal = ({\n open: externalOpen,\n closeIcon,\n children,\n size: sizeProp,\n footer,\n width,\n style,\n styles,\n classNames,\n okButtonProps,\n cancelButtonProps,\n loading,\n onOk,\n onCancel,\n okText,\n okType = \"primary\",\n confirmLoading,\n cancelText = \"Close\",\n hideOkButton = false,\n hideCancelButton = false,\n contentPadding,\n title,\n afterTitle,\n beforeCloseButton,\n afterCloseButton,\n defaultFixedHeaderFooter = false,\n centered = true,\n type = \"default\",\n defaultOpen = true,\n background: backgroundProp,\n bodyScrollable = true,\n ...rest\n}: ModalProps) => {\n // Default close icon with Phosphor icon\n const defaultCloseIcon =\n closeIcon === undefined ? <XIcon size={16} weight=\"bold\" /> : closeIcon;\n\n // Use custom width if provided, otherwise use the size from the map\n const defaultModalSize = type === \"default\" ? \"medium\" : \"xsmall\";\n\n const size: keyof typeof ModalSize = sizeProp || defaultModalSize;\n const modalWidth = width || ModalSize[size];\n\n const background =\n backgroundProp ||\n (size &&\n size in ModalSize &&\n parseInt(ModalSize[size]) <= parseInt(ModalSize.medium)\n ? \"elevated\"\n : \"container\");\n\n // Apply additional styles for fullscreen mode\n const modalStyle = {\n \"--ds-modal-bg\": `var(--ds-color-bg-${background})`,\n ...style,\n ...(size === \"fullscreen\"\n ? { top: 0, maxWidth: \"100%\", height: \"100%\" }\n : {}),\n };\n\n const modalStyles = {\n ...styles,\n body: {\n ...((typeof contentPadding != \"undefined\"\n ? {\n \"--ds-modal-content-padding\":\n contentPadding === false || contentPadding === 0\n ? \"0\"\n : typeof contentPadding == \"number\"\n ? `${contentPadding}px`\n : contentPadding,\n }\n : {}) as React.CSSProperties),\n ...styles?.body,\n },\n };\n\n const [isContentOverflow, setIsContentOverflow] = useState(false);\n\n const cls = useCls();\n\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n\n const modalInnerRef = useCallback(\n (node: HTMLElement | null) => {\n // If the node is null (component unmounting), just return\n if (!node) return;\n\n const modalBody = node.querySelector(\".\" + cls(\"modal-body\"));\n if (!(modalBody instanceof HTMLElement)) return;\n\n // Create ResizeObserver to detect overflow\n const resizeObserver = new ResizeObserver(() => {\n const hasOverflow = modalBody.scrollHeight > modalBody.clientHeight;\n setIsContentOverflow(hasOverflow);\n });\n\n // Store reference to the observer\n resizeObserverRef.current = resizeObserver;\n\n // Start observing\n resizeObserver.observe(modalBody);\n\n // Initial check\n const hasOverflow = modalBody.scrollHeight > modalBody.clientHeight;\n setIsContentOverflow(hasOverflow);\n },\n [cls]\n );\n\n // clean up resize observer\n useEffect(() => {\n return () => {\n if (resizeObserverRef.current) {\n resizeObserverRef.current.disconnect();\n resizeObserverRef.current = null;\n }\n };\n }, []);\n\n const [locale] = useLocale(\"Modal\", getConfirmLocale());\n\n const okTextLocale: React.ReactNode = okText || locale?.okText;\n const cancelTextLocale = cancelText || locale?.cancelText;\n\n const modalOkButtonProps = {\n loading: loading,\n ...okButtonProps,\n };\n\n const modalCancelButtonProps = {\n ...cancelButtonProps,\n };\n\n const [internalOpen, setInternalOpen] = useState(defaultOpen);\n\n const uncontrolledOpen = typeof externalOpen === \"undefined\";\n\n const open = uncontrolledOpen ? internalOpen : externalOpen;\n\n const defaultFooter = (\n <ModalContextProvider\n value={{\n okButtonProps: modalOkButtonProps,\n cancelButtonProps: modalCancelButtonProps,\n onCancel,\n onOk,\n okType,\n confirmLoading,\n okTextLocale,\n cancelTextLocale,\n }}\n >\n {hideOkButton ? (\n <NormalCancelBtn />\n ) : hideCancelButton ? (\n <NormalOkBtn />\n ) : (\n <>\n <NormalCancelBtn />\n <NormalOkBtn />\n </>\n )}\n </ModalContextProvider>\n );\n const renderTitle = () => {\n return (\n <>\n <Stack align=\"center\" gap={8} className={cls(\"modal-title-wrapper\")}>\n <Stack.Child grow>\n {typeof title === \"string\" ? <Truncate>{title}</Truncate> : title}\n </Stack.Child>\n <Stack.Child stack hug align=\"center\">\n {beforeCloseButton}\n <IconButton\n onClick={(e: React.MouseEvent<HTMLButtonElement>) =>\n onCancel?.(e)\n }\n >\n {defaultCloseIcon}\n </IconButton>\n {afterCloseButton}\n </Stack.Child>\n {}\n </Stack>\n {afterTitle ? afterTitle : null}\n </>\n );\n };\n return (\n <AntModal\n closeIcon={false}\n open={open}\n width={modalWidth}\n style={modalStyle}\n title={renderTitle()}\n classNames={{\n ...classNames,\n wrapper: cls(\n \"modal-wrap\",\n size == \"fullscreen\" && \"modal-fullscreen\",\n isContentOverflow && \"modal-content-overflow\",\n bodyScrollable === false && \"modal-no-body-scroll\",\n defaultFixedHeaderFooter || isContentOverflow || size == \"fullscreen\"\n ? \"modal-fixed\"\n : \"\"\n ),\n }}\n styles={modalStyles}\n modalRender={(modal) => (\n <div ref={modalInnerRef} className={cls(\"modal-inner\")}>\n {modal}\n </div>\n )}\n okButtonProps={modalOkButtonProps}\n cancelButtonProps={modalCancelButtonProps}\n onOk={(e) => {\n if (uncontrolledOpen) setInternalOpen(false);\n onOk?.(e);\n }}\n onCancel={(e) => {\n if (uncontrolledOpen) setInternalOpen(false);\n onCancel?.(e);\n }}\n okText={okText}\n cancelText={cancelText}\n okType=\"primary\"\n confirmLoading={confirmLoading}\n footer={\n typeof footer === \"undefined\"\n ? hideOkButton && hideCancelButton\n ? null\n : defaultFooter\n : footer\n }\n centered={centered}\n {...rest}\n >\n {children}\n </AntModal>\n );\n};\n"],"names":["Modal","externalOpen","closeIcon","children","sizeProp","footer","width","style","styles","classNames","okButtonProps","cancelButtonProps","loading","onOk","onCancel","okText","okType","confirmLoading","cancelText","hideOkButton","hideCancelButton","contentPadding","title","afterTitle","beforeCloseButton","afterCloseButton","defaultFixedHeaderFooter","centered","type","defaultOpen","backgroundProp","bodyScrollable","rest","defaultCloseIcon","jsx","XIcon","size","modalWidth","ModalSize","modalStyle","modalStyles","isContentOverflow","setIsContentOverflow","useState","cls","useCls","resizeObserverRef","useRef","modalInnerRef","useCallback","node","modalBody","resizeObserver","hasOverflow","useEffect","locale","useLocale","getConfirmLocale","okTextLocale","cancelTextLocale","modalOkButtonProps","modalCancelButtonProps","internalOpen","setInternalOpen","uncontrolledOpen","open","defaultFooter","ModalContextProvider","NormalCancelBtn","NormalOkBtn","jsxs","Fragment","AntModal","Stack","Truncate","IconButton","e","modal"],"mappings":";;;;;;;;;;;;;;AA6GO,MAAMA,KAAQ,CAAC;AAAA,EACpB,MAAMC;AAAA,EACN,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAMC;AAAA,EACN,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,QAAAC;AAAA,EACA,QAAAC,IAAS;AAAA,EACT,gBAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,cAAAC,IAAe;AAAA,EACf,kBAAAC,IAAmB;AAAA,EACnB,gBAAAC;AAAA,EACA,OAAAC;AAAA,EACA,YAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,kBAAAC;AAAA,EACA,0BAAAC,IAA2B;AAAA,EAC3B,UAAAC,IAAW;AAAA,EACX,MAAAC,IAAO;AAAA,EACP,aAAAC,IAAc;AAAA,EACd,YAAYC;AAAA,EACZ,gBAAAC,IAAiB;AAAA,EACjB,GAAGC;AACL,MAAkB;AAEV,QAAAC,IACJ/B,MAAc,SAAY,gBAAAgC,EAACC,MAAM,MAAM,IAAI,QAAO,OAAA,CAAO,IAAKjC,GAK1DkC,IAA+BhC,MAFZwB,MAAS,YAAY,WAAW,WAGnDS,KAAa/B,KAASgC,EAAUF,CAAI,GAWpCG,KAAa;AAAA,IACjB,iBAAiB,qBATjBT,MACCM,KACDA,KAAQE,KACR,SAASA,EAAUF,CAAI,CAAC,KAAK,SAASE,EAAU,MAAM,IAClD,aACA,YAI4C;AAAA,IAChD,GAAG/B;AAAA,IACH,GAAI6B,MAAS,eACT,EAAE,KAAK,GAAG,UAAU,QAAQ,QAAQ,WACpC,CAAA;AAAA,EACN,GAEMI,KAAc;AAAA,IAClB,GAAGhC;AAAA,IACH,MAAM;AAAA,MACJ,GAAK,OAAOa,IAAkB,MAC1B;AAAA,QACE,8BACEA,MAAmB,MAASA,MAAmB,IAC3C,MACA,OAAOA,KAAkB,WACzB,GAAGA,CAAc,OACjBA;AAAA,MAAA,IAER,CAAC;AAAA,MACL,GAAGb,KAAA,gBAAAA,EAAQ;AAAA,IAAA;AAAA,EAEf,GAEM,CAACiC,GAAmBC,CAAoB,IAAIC,EAAS,EAAK,GAE1DC,IAAMC,GAAO,GAEbC,IAAoBC,GAA8B,IAAI,GAEtDC,KAAgBC;AAAA,IACpB,CAACC,MAA6B;AAE5B,UAAI,CAACA,EAAM;AAEX,YAAMC,IAAYD,EAAK,cAAc,MAAMN,EAAI,YAAY,CAAC;AACxD,UAAA,EAAEO,aAAqB,aAAc;AAGnC,YAAAC,IAAiB,IAAI,eAAe,MAAM;AACxCC,cAAAA,KAAcF,EAAU,eAAeA,EAAU;AACvD,QAAAT,EAAqBW,EAAW;AAAA,MAAA,CACjC;AAGD,MAAAP,EAAkB,UAAUM,GAG5BA,EAAe,QAAQD,CAAS;AAG1B,YAAAE,KAAcF,EAAU,eAAeA,EAAU;AACvD,MAAAT,EAAqBW,EAAW;AAAA,IAClC;AAAA,IACA,CAACT,CAAG;AAAA,EACN;AAGA,EAAAU,GAAU,MACD,MAAM;AACX,IAAIR,EAAkB,YACpBA,EAAkB,QAAQ,WAAW,GACrCA,EAAkB,UAAU;AAAA,EAEhC,GACC,EAAE;AAEL,QAAM,CAACS,CAAM,IAAIC,GAAU,SAASC,IAAkB,GAEhDC,KAAgC3C,MAAUwC,KAAA,gBAAAA,EAAQ,SAClDI,KAAmBzC,MAAcqC,KAAA,gBAAAA,EAAQ,aAEzCK,IAAqB;AAAA,IACzB,SAAAhD;AAAA,IACA,GAAGF;AAAA,EACL,GAEMmD,IAAyB;AAAA,IAC7B,GAAGlD;AAAA,EACL,GAEM,CAACmD,IAAcC,CAAe,IAAIpB,EAASd,CAAW,GAEtDmC,IAAmB,OAAO/D,IAAiB,KAE3CgE,KAAOD,IAAmBF,KAAe7D,GAEzCiE,KACJ,gBAAAhC;AAAA,IAACiC;AAAA,IAAA;AAAA,MACC,OAAO;AAAA,QACL,eAAeP;AAAA,QACf,mBAAmBC;AAAA,QACnB,UAAA/C;AAAA,QACA,MAAAD;AAAA,QACA,QAAAG;AAAA,QACA,gBAAAC;AAAA,QACA,cAAAyC;AAAA,QACA,kBAAAC;AAAA,MACF;AAAA,MAEC,UAAAxC,sBACEiD,GAAgB,CAAA,CAAA,IACfhD,IACD,gBAAAc,EAAAmC,GAAA,CAAA,CAAY,IAGX,gBAAAC,EAAAC,GAAA,EAAA,UAAA;AAAA,QAAA,gBAAArC,EAACkC,GAAgB,EAAA;AAAA,0BAChBC,GAAY,CAAA,CAAA;AAAA,MAAA,EACf,CAAA;AAAA,IAAA;AAAA,EAEJ;AA2BA,SAAA,gBAAAnC;AAAA,IAACsC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,MACX,MAAAP;AAAA,MACA,OAAO5B;AAAA,MACP,OAAOE;AAAA,MACP,OA3BE,gBAAA+B,EAAAC,GAAA,EAAA,UAAA;AAAA,QAAC,gBAAAD,EAAAG,GAAA,EAAM,OAAM,UAAS,KAAK,GAAG,WAAW7B,EAAI,qBAAqB,GAChE,UAAA;AAAA,UAAA,gBAAAV,EAACuC,EAAM,OAAN,EAAY,MAAI,IACd,UAAA,OAAOnD,KAAU,WAAY,gBAAAY,EAAAwC,IAAA,EAAU,UAAMpD,EAAA,CAAA,IAAcA,GAC9D;AAAA,UACA,gBAAAgD,EAACG,EAAM,OAAN,EAAY,OAAK,IAAC,KAAG,IAAC,OAAM,UAC1B,UAAA;AAAA,YAAAjD;AAAA,YACD,gBAAAU;AAAA,cAACyC;AAAA,cAAA;AAAA,gBACC,SAAS,CAACC,MACR9D,KAAA,gBAAAA,EAAW8D;AAAA,gBAGZ,UAAA3C;AAAA,cAAA;AAAA,YACH;AAAA,YACCR;AAAA,UAAA,EACH,CAAA;AAAA,QAAA,GAEF;AAAA,QACCF,KAA0B;AAAA,MAAA,GAC7B;AAAA,MAUA,YAAY;AAAA,QACV,GAAGd;AAAA,QACH,SAASmC;AAAA,UACP;AAAA,UACAR,KAAQ,gBAAgB;AAAA,UACxBK,KAAqB;AAAA,UACrBV,MAAmB,MAAS;AAAA,UAC5BL,KAA4Be,KAAqBL,KAAQ,eACrD,gBACA;AAAA,QAAA;AAAA,MAER;AAAA,MACA,QAAQI;AAAA,MACR,aAAa,CAACqC,MACX,gBAAA3C,EAAA,OAAA,EAAI,KAAKc,IAAe,WAAWJ,EAAI,aAAa,GAClD,UACHiC,EAAA,CAAA;AAAA,MAEF,eAAejB;AAAA,MACf,mBAAmBC;AAAA,MACnB,MAAM,CAACe,MAAM;AACP,QAAAZ,OAAkC,EAAK,GAC3CnD,KAAA,QAAAA,EAAO+D;AAAA,MACT;AAAA,MACA,UAAU,CAACA,MAAM;AACX,QAAAZ,OAAkC,EAAK,GAC3ClD,KAAA,QAAAA,EAAW8D;AAAA,MACb;AAAA,MACA,QAAA7D;AAAA,MACA,YAAAG;AAAA,MACA,QAAO;AAAA,MACP,gBAAAD;AAAA,MACA,QACE,OAAOZ,IAAW,MACdc,KAAgBC,IACd,OACA8C,KACF7D;AAAA,MAEN,UAAAsB;AAAA,MACC,GAAGK;AAAA,MAEH,UAAA7B;AAAA,IAAA;AAAA,EACH;AAEJ;"}
@@ -0,0 +1,70 @@
1
+ import { jsxs as f, Fragment as m } from "react/jsx-runtime";
2
+ import { useState as y, useEffect as g, createElement as b } from "react";
3
+ import { Modal as M } from "./Modal.js";
4
+ import { modalManager as n } from "./ModalService.js";
5
+ const j = ({ children: l }) => {
6
+ const [p, u] = y([]);
7
+ return g(() => n.subscribe((e) => {
8
+ u((r) => {
9
+ switch (e.type) {
10
+ case "add":
11
+ return [...r, e.payload];
12
+ case "update":
13
+ return r.map((t) => {
14
+ if (t.id === e.payload.id) {
15
+ const o = e.payload.config, a = typeof o == "function" ? o(t) : { ...t, ...o };
16
+ return { ...t, ...a };
17
+ }
18
+ return t;
19
+ });
20
+ case "destroy":
21
+ return r.filter((t) => t.id !== e.payload.id);
22
+ case "destroyAll":
23
+ return [];
24
+ default:
25
+ return r;
26
+ }
27
+ });
28
+ }), []), /* @__PURE__ */ f(m, { children: [
29
+ l,
30
+ p.map((d) => {
31
+ const {
32
+ id: e,
33
+ content: r,
34
+ children: t,
35
+ onOk: o,
36
+ onCancel: a,
37
+ trigger: i,
38
+ ...c
39
+ } = d;
40
+ return /* @__PURE__ */ b(
41
+ M,
42
+ {
43
+ ...c,
44
+ key: e,
45
+ open: c.open,
46
+ onOk: (s) => {
47
+ o == null || o(s), n.emit({
48
+ type: "update",
49
+ payload: { id: e, config: { open: !1 } }
50
+ });
51
+ },
52
+ onCancel: (s) => {
53
+ a == null || a(s), n.emit({
54
+ type: "update",
55
+ payload: { id: e, config: { open: !1 } }
56
+ });
57
+ },
58
+ afterClose: () => {
59
+ n.emit({ type: "destroy", payload: { id: e } }), i instanceof HTMLElement && i.focus();
60
+ }
61
+ },
62
+ r || t
63
+ );
64
+ })
65
+ ] });
66
+ };
67
+ export {
68
+ j as ModalProvider
69
+ };
70
+ //# sourceMappingURL=ModalProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalProvider.js","sources":["../../../src/components/Modal/ModalProvider.tsx"],"sourcesContent":["\"use client\";\nimport React, { useEffect, useState } from \"react\";\nimport { Modal } from \"./Modal\";\nimport { modalManager } from \"./ModalService\";\nimport type { ModalConfig, ModalEvent } from \"./ModalService\";\n\nexport interface ModalProviderProps {\n children?: React.ReactNode;\n}\n\nexport const ModalProvider: React.FC<ModalProviderProps> = ({ children }) => {\n const [modals, setModals] = useState<ModalConfig[]>([]);\n\n useEffect(() => {\n const unsubscribe = modalManager.subscribe((event: ModalEvent) => {\n setModals((prev) => {\n switch (event.type) {\n case \"add\":\n return [...prev, event.payload];\n case \"update\":\n return prev.map((m) => {\n if (m.id === event.payload.id) {\n const cfg = event.payload.config;\n const merged =\n typeof cfg === \"function\" ? cfg(m) : { ...m, ...cfg };\n return { ...m, ...merged };\n }\n return m;\n });\n case \"destroy\":\n return prev.filter((m) => m.id !== event.payload.id);\n case \"destroyAll\":\n return [];\n default:\n return prev;\n }\n });\n });\n return unsubscribe;\n }, []);\n\n return (\n <>\n {children}\n {modals.map((modal) => {\n const {\n id,\n content,\n children,\n onOk,\n onCancel,\n trigger,\n ...modalProps\n } = modal;\n return (\n <Modal\n {...modalProps}\n key={id}\n // control visibility for transitions\n open={modalProps.open}\n onOk={(e) => {\n onOk?.(e);\n modalManager.emit({\n type: \"update\",\n payload: { id, config: { open: false } },\n });\n }}\n onCancel={(e) => {\n onCancel?.(e);\n modalManager.emit({\n type: \"update\",\n payload: { id, config: { open: false } },\n });\n }}\n afterClose={() => {\n // destroy and restore focus\n modalManager.emit({ type: \"destroy\", payload: { id } });\n if (trigger instanceof HTMLElement) {\n trigger.focus();\n }\n }}\n >\n {content || children}\n </Modal>\n );\n })}\n </>\n );\n};\n"],"names":["ModalProvider","children","modals","setModals","useState","useEffect","modalManager","event","prev","m","cfg","merged","jsxs","Fragment","modal","id","content","onOk","onCancel","trigger","modalProps","createElement","Modal","e"],"mappings":";;;;AAUO,MAAMA,IAA8C,CAAC,EAAE,UAAAC,QAAe;AAC3E,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAwB,CAAA,CAAE;AAEtD,SAAAC,EAAU,MACYC,EAAa,UAAU,CAACC,MAAsB;AAChE,IAAAJ,EAAU,CAACK,MAAS;AAClB,cAAQD,EAAM,MAAM;AAAA,QAClB,KAAK;AACH,iBAAO,CAAC,GAAGC,GAAMD,EAAM,OAAO;AAAA,QAChC,KAAK;AACI,iBAAAC,EAAK,IAAI,CAACC,MAAM;AACrB,gBAAIA,EAAE,OAAOF,EAAM,QAAQ,IAAI;AACvB,oBAAAG,IAAMH,EAAM,QAAQ,QACpBI,IACJ,OAAOD,KAAQ,aAAaA,EAAID,CAAC,IAAI,EAAE,GAAGA,GAAG,GAAGC,EAAI;AACtD,qBAAO,EAAE,GAAGD,GAAG,GAAGE,EAAO;AAAA,YAAA;AAEpB,mBAAAF;AAAA,UAAA,CACR;AAAA,QACH,KAAK;AACI,iBAAAD,EAAK,OAAO,CAACC,MAAMA,EAAE,OAAOF,EAAM,QAAQ,EAAE;AAAA,QACrD,KAAK;AACH,iBAAO,CAAC;AAAA,QACV;AACS,iBAAAC;AAAA,MAAA;AAAA,IACX,CACD;AAAA,EAAA,CACF,GAEA,EAAE,GAIA,gBAAAI,EAAAC,GAAA,EAAA,UAAA;AAAA,IAAAZ;AAAA,IACAC,EAAO,IAAI,CAACY,MAAU;AACf,YAAA;AAAA,QACJ,IAAAC;AAAA,QACA,SAAAC;AAAA,QACA,UAAAf;AAAAA,QACA,MAAAgB;AAAA,QACA,UAAAC;AAAA,QACA,SAAAC;AAAA,QACA,GAAGC;AAAA,MAAA,IACDN;AAEF,aAAA,gBAAAO;AAAA,QAACC;AAAA,QAAA;AAAA,UACE,GAAGF;AAAA,UACJ,KAAKL;AAAA,UAEL,MAAMK,EAAW;AAAA,UACjB,MAAM,CAACG,MAAM;AACX,YAAAN,KAAA,QAAAA,EAAOM,IACPjB,EAAa,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,SAAS,EAAE,IAAAS,GAAI,QAAQ,EAAE,MAAM,GAAQ,EAAA;AAAA,YAAA,CACxC;AAAA,UACH;AAAA,UACA,UAAU,CAACQ,MAAM;AACf,YAAAL,KAAA,QAAAA,EAAWK,IACXjB,EAAa,KAAK;AAAA,cAChB,MAAM;AAAA,cACN,SAAS,EAAE,IAAAS,GAAI,QAAQ,EAAE,MAAM,GAAQ,EAAA;AAAA,YAAA,CACxC;AAAA,UACH;AAAA,UACA,YAAY,MAAM;AAEH,YAAAT,EAAA,KAAK,EAAE,MAAM,WAAW,SAAS,EAAE,IAAAS,EAAA,GAAM,GAClDI,aAAmB,eACrBA,EAAQ,MAAM;AAAA,UAChB;AAAA,QACF;AAAA,QAECH,KAAWf;AAAAA,MACd;AAAA,IAEH,CAAA;AAAA,EAAA,GACH;AAEJ;"}
@@ -0,0 +1,25 @@
1
+ var n = Object.defineProperty;
2
+ var i = (t, e, s) => e in t ? n(t, e, { enumerable: !0, configurable: !0, writable: !0, value: s }) : t[e] = s;
3
+ var r = (t, e, s) => i(t, typeof e != "symbol" ? e + "" : e, s);
4
+ class a {
5
+ constructor() {
6
+ r(this, "listeners", []);
7
+ r(this, "counter", 0);
8
+ }
9
+ subscribe(e) {
10
+ return this.listeners.push(e), () => {
11
+ this.listeners = this.listeners.filter((s) => s !== e);
12
+ };
13
+ }
14
+ emit(e) {
15
+ this.listeners.forEach((s) => s(e));
16
+ }
17
+ generateId() {
18
+ return this.counter += 1, `modal_${this.counter}_${Date.now()}`;
19
+ }
20
+ }
21
+ const l = new a();
22
+ export {
23
+ l as modalManager
24
+ };
25
+ //# sourceMappingURL=ModalService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModalService.js","sources":["../../../src/components/Modal/ModalService.ts"],"sourcesContent":["import type { ModalFuncProps } from \"./functions\";\n\nexport type ModalConfig = ModalFuncProps & {\n id: string;\n trigger?: HTMLElement;\n};\n\nexport type UpdateConfig =\n | Partial<ModalFuncProps>\n | ((prev: ModalFuncProps) => ModalFuncProps);\n\nexport type ModalEvent =\n | { type: \"add\"; payload: ModalConfig }\n | { type: \"update\"; payload: { id: string; config: UpdateConfig } }\n | { type: \"destroy\"; payload: { id: string } }\n | { type: \"destroyAll\" };\n\ntype Listener = (event: ModalEvent) => void;\n\nclass ModalManager {\n private listeners: Listener[] = [];\n private counter = 0;\n\n subscribe(listener: Listener) {\n this.listeners.push(listener);\n return () => {\n this.listeners = this.listeners.filter((l) => l !== listener);\n };\n }\n\n emit(event: ModalEvent) {\n this.listeners.forEach((l) => l(event));\n }\n\n generateId() {\n this.counter += 1;\n return `modal_${this.counter}_${Date.now()}`;\n }\n}\n\nexport const modalManager = new ModalManager();\n"],"names":["ModalManager","__publicField","listener","l","event","modalManager"],"mappings":";;;AAmBA,MAAMA,EAAa;AAAA,EAAnB;AACU,IAAAC,EAAA,mBAAwB,CAAC;AACzB,IAAAA,EAAA,iBAAU;AAAA;AAAA,EAElB,UAAUC,GAAoB;AACvB,gBAAA,UAAU,KAAKA,CAAQ,GACrB,MAAM;AACX,WAAK,YAAY,KAAK,UAAU,OAAO,CAACC,MAAMA,MAAMD,CAAQ;AAAA,IAC9D;AAAA,EAAA;AAAA,EAGF,KAAKE,GAAmB;AACtB,SAAK,UAAU,QAAQ,CAACD,MAAMA,EAAEC,CAAK,CAAC;AAAA,EAAA;AAAA,EAGxC,aAAa;AACX,gBAAK,WAAW,GACT,SAAS,KAAK,OAAO,IAAI,KAAK,KAAK;AAAA,EAAA;AAE9C;AAEa,MAAAC,IAAe,IAAIL,EAAa;"}
@@ -0,0 +1,5 @@
1
+ var r = /* @__PURE__ */ ((x) => (x.xsmall = "400px", x.small = "520px", x.medium = "640px", x.large = "840px", x.xlarge = "1024px", x.xxlarge = "1280px", x.fullscreen = "100%", x))(r || {});
2
+ export {
3
+ r as ModalSize
4
+ };
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sources":["../../../src/components/Modal/constants.ts"],"sourcesContent":["// Size map for predefined modal sizes\nexport enum ModalSize {\n xsmall = \"400px\",\n small = \"520px\",\n medium = \"640px\",\n large = \"840px\",\n xlarge = \"1024px\",\n xxlarge = \"1280px\",\n fullscreen = \"100%\",\n}\n"],"names":["ModalSize"],"mappings":"AACY,IAAAA,sBAAAA,OACVA,EAAA,SAAS,SACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,SACTA,EAAA,QAAQ,SACRA,EAAA,SAAS,UACTA,EAAA,UAAU,UACVA,EAAA,aAAa,QAPHA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,27 @@
1
+ import { modalManager as o } from "./ModalService.js";
2
+ function t(e) {
3
+ const r = document.activeElement instanceof HTMLElement ? document.activeElement : void 0, { type: c = "default", ...a } = e, n = o.generateId();
4
+ return o.emit({
5
+ type: "add",
6
+ payload: {
7
+ id: n,
8
+ type: c,
9
+ trigger: r,
10
+ ...a
11
+ }
12
+ }), {
13
+ update: (s) => o.emit({ type: "update", payload: { id: n, config: s } }),
14
+ destroy: () => o.emit({ type: "destroy", payload: { id: n } })
15
+ };
16
+ }
17
+ const i = (e) => t({ ...e, type: "confirm" }), p = (e) => t({ ...e, type: "info" }), y = (e) => t({ ...e, type: "success" }), l = (e) => t({ ...e, type: "error" }), m = (e) => t({ ...e, type: "warning" }), f = (e) => t({ ...e, type: "default" }), u = () => o.emit({ type: "destroyAll" });
18
+ export {
19
+ i as confirm,
20
+ u as destroyAll,
21
+ l as error,
22
+ p as info,
23
+ f as open,
24
+ y as success,
25
+ m as warning
26
+ };
27
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.js","sources":["../../../src/components/Modal/functions.tsx"],"sourcesContent":["import React, { JSX } from \"react\";\nimport type { ModalFuncProps as AntModalFuncProps } from \"antd\";\nimport { modalManager } from \"./ModalService\";\nimport { ModalProps } from \"./Modal\";\n\n// Extend Ant ModalFuncProps to include 'default'\nexport type ModalType = NonNullable<AntModalFuncProps[\"type\"]> | \"default\";\n\n// export type ModalFuncProps = Omit<AntModalFuncProps, \"type\"> & {\n// type?: ModalType;\n// };\n\nexport type ModalFuncProps = ModalProps & {\n /**\n * Content to be displayed in the modal\n * Similar to children prop in Modal component\n * Keep this to be compatible with antd ModalFuncProps\n */\n content?: React.ReactNode;\n};\n\nexport type ModalUpdateConfig =\n | Partial<ModalFuncProps>\n | ((prev: ModalFuncProps) => ModalFuncProps);\n\nexport interface ModalRef {\n update: (config: ModalUpdateConfig) => void;\n destroy: () => void;\n}\n\nfunction createModal(config: ModalFuncProps): ModalRef {\n // capture trigger element for focus restoration\n const trigger =\n document.activeElement instanceof HTMLElement\n ? document.activeElement\n : undefined;\n const { type = \"default\", ...restConfig } = config;\n\n const id = modalManager.generateId();\n // initialize modal as open\n modalManager.emit({\n type: \"add\",\n payload: {\n id,\n type,\n trigger,\n ...restConfig,\n },\n });\n return {\n update: (cfg: ModalUpdateConfig) =>\n modalManager.emit({ type: \"update\", payload: { id, config: cfg } }),\n destroy: () => modalManager.emit({ type: \"destroy\", payload: { id } }),\n };\n}\n\nexport const confirm = (config: ModalFuncProps): ModalRef =>\n createModal({ ...config, type: \"confirm\" });\nexport const info = (config: ModalFuncProps): ModalRef =>\n createModal({ ...config, type: \"info\" });\nexport const success = (config: ModalFuncProps): ModalRef =>\n createModal({ ...config, type: \"success\" });\nexport const error = (config: ModalFuncProps): ModalRef =>\n createModal({ ...config, type: \"error\" });\nexport const warning = (config: ModalFuncProps): ModalRef =>\n createModal({ ...config, type: \"warning\" });\n\n/**\n * Open a default (normal) modal\n */\nexport const open = (config: ModalFuncProps): ModalRef =>\n createModal({ ...config, type: \"default\" });\n\nexport const destroyAll = (): void => modalManager.emit({ type: \"destroyAll\" });\n"],"names":["createModal","config","trigger","type","restConfig","id","modalManager","cfg","confirm","info","success","error","warning","open","destroyAll"],"mappings":";AA8BA,SAASA,EAAYC,GAAkC;AAErD,QAAMC,IACJ,SAAS,yBAAyB,cAC9B,SAAS,gBACT,QACA,EAAE,MAAAC,IAAO,WAAW,GAAGC,EAAe,IAAAH,GAEtCI,IAAKC,EAAa,WAAW;AAEnC,SAAAA,EAAa,KAAK;AAAA,IAChB,MAAM;AAAA,IACN,SAAS;AAAA,MACP,IAAAD;AAAA,MACA,MAAAF;AAAA,MACA,SAAAD;AAAA,MACA,GAAGE;AAAA,IAAA;AAAA,EACL,CACD,GACM;AAAA,IACL,QAAQ,CAACG,MACPD,EAAa,KAAK,EAAE,MAAM,UAAU,SAAS,EAAE,IAAAD,GAAI,QAAQE,KAAO;AAAA,IACpE,SAAS,MAAMD,EAAa,KAAK,EAAE,MAAM,WAAW,SAAS,EAAE,IAAAD,IAAM,CAAA;AAAA,EACvE;AACF;AAEa,MAAAG,IAAU,CAACP,MACtBD,EAAY,EAAE,GAAGC,GAAQ,MAAM,UAAW,CAAA,GAC/BQ,IAAO,CAACR,MACnBD,EAAY,EAAE,GAAGC,GAAQ,MAAM,OAAQ,CAAA,GAC5BS,IAAU,CAACT,MACtBD,EAAY,EAAE,GAAGC,GAAQ,MAAM,UAAW,CAAA,GAC/BU,IAAQ,CAACV,MACpBD,EAAY,EAAE,GAAGC,GAAQ,MAAM,QAAS,CAAA,GAC7BW,IAAU,CAACX,MACtBD,EAAY,EAAE,GAAGC,GAAQ,MAAM,UAAW,CAAA,GAK/BY,IAAO,CAACZ,MACnBD,EAAY,EAAE,GAAGC,GAAQ,MAAM,UAAW,CAAA,GAE/Ba,IAAa,MAAYR,EAAa,KAAK,EAAE,MAAM,aAAc,CAAA;"}
@@ -0,0 +1,20 @@
1
+ import o from "antd/es/app/useApp";
2
+ import { Modal as r } from "./Modal.js";
3
+ import { destroyAll as e, confirm as i, warning as m, error as s, success as t, info as a, open as d } from "./functions.js";
4
+ import { ModalProvider as n } from "./ModalProvider.js";
5
+ import './style.css';/* empty css */
6
+ const p = () => o().modal, g = Object.assign(r, {
7
+ Provider: n,
8
+ open: d,
9
+ info: a,
10
+ success: t,
11
+ error: s,
12
+ warning: m,
13
+ confirm: i,
14
+ destroyAll: e,
15
+ useModal: p
16
+ });
17
+ export {
18
+ g as Modal
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/components/Modal/index.ts"],"sourcesContent":["\"use client\";\nimport useApp from \"antd/es/app/useApp\";\nimport { Modal as MainModal } from \"./Modal\";\nimport {\n confirm,\n info,\n success,\n error,\n warning,\n open,\n destroyAll,\n type ModalFuncProps,\n} from \"./functions\";\nimport { ModalProvider, type ModalProviderProps } from \"./ModalProvider\";\n\nimport \"./style.css\";\n\nconst useModal = () => {\n return useApp().modal;\n};\n\n// Export the Modal component with static methods\nexport const Modal = Object.assign(MainModal, {\n Provider: ModalProvider,\n open,\n info,\n success,\n error,\n warning,\n confirm,\n destroyAll,\n useModal,\n});\n\nexport { ModalFuncProps, ModalProviderProps };\n"],"names":["useModal","useApp","Modal","MainModal","ModalProvider","open","info","success","error","warning","confirm","destroyAll"],"mappings":";;;;;AAiBA,MAAMA,IAAW,MACRC,EAAS,EAAA,OAILC,IAAQ,OAAO,OAAOC,GAAW;AAAA,EAC5C,UAAUC;AAAA,EACV,MAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAX;AACF,CAAC;"}
@@ -0,0 +1 @@
1
+ @layer components{.ds-modal-wrap{max-height:100vh}.ds-modal-wrap .ds-modal-close-x{width:100%;display:flex}.ds-modal-wrap .ds-modal{padding-bottom:0;margin-top:0;margin-bottom:0;max-height:100vh;top:0}:is(.ds-modal-wrap .ds-modal) .ds-modal-content{display:flex;flex-direction:column;padding:0;box-shadow:var(--ds-box-shadow-secondary);background:var(--ds-modal-bg)}:is(.ds-modal-wrap .ds-modal) .ds-modal-body{padding:var(--ds-modal-content-padding);flex-grow:1;flex-shrink:1;min-height:0;overflow:auto}:is(.ds-modal-wrap .ds-modal) .ds-modal-header{padding:calc(var(--ds-modal-padding) * 2 / 3) var(--ds-modal-padding) 0 var(--ds-modal-padding);margin-bottom:0;background:transparent}:is(.ds-modal-wrap .ds-modal) .ds-modal-footer{padding:0 var(--ds-modal-padding) var(--ds-modal-padding) var(--ds-modal-padding);margin-top:0;background:transparent}:is(.ds-modal-wrap .ds-modal) .ds-modal-close{top:calc(var(--ds-modal-padding) * 2 / 3 - 4px)}.ds-modal-wrap:not(.ds-modal-centered) .ds-modal-inner{margin-top:4rem}.ds-modal-wrap:not(.ds-modal-fullscreen) .ds-modal-content{max-height:calc(100vh - var(--ds-modal-edge-padding) * 2);margin:var(--ds-modal-edge-padding)}.ds-modal-wrap:not(.ds-modal-fullscreen) .ds-modal>div[tabindex="0"]{max-height:calc(100vh - var(--ds-modal-edge-padding) * 2)}.ds-modal-no-body-scroll .ds-modal{max-height:100%}:is(.ds-modal-no-body-scroll .ds-modal) .ds-modal-body{overflow:hidden;display:grid}:is(:is(.ds-modal-no-body-scroll .ds-modal) .ds-modal-body)>*{min-height:0}.ds-modal-fullscreen .ds-modal>div[tabindex="0"]{height:100%}.ds-modal-fullscreen .ds-modal .ds-modal-inner{height:100%}.ds-modal-fullscreen .ds-modal .ds-modal-content{border-radius:0;height:100%;width:100%}:is(.ds-modal-fixed .ds-modal) .ds-modal-footer{border-top:1px solid var(--ds-color-split);margin-top:0;padding:calc(var(--ds-modal-padding) / 2) var(--ds-modal-padding)}:is(.ds-modal-fixed .ds-modal) .ds-modal-header{border-bottom:1px solid var(--ds-color-split);margin-bottom:0;padding:calc(var(--ds-modal-padding) / 2) var(--ds-modal-padding)}:is(.ds-modal-fixed .ds-modal) .ds-modal-close{top:8px}:is(.ds-modal-content-overflow .ds-modal) .ds-modal-inner{margin-top:0}}
@@ -0,0 +1,12 @@
1
+ import { jsx as p } from "react/jsx-runtime";
2
+ import m from "antd/es/popover";
3
+ const s = ({
4
+ className: o,
5
+ style: r,
6
+ arrow: t = !1,
7
+ ...e
8
+ }) => /* @__PURE__ */ p(m, { className: o, arrow: t, style: r, ...e });
9
+ export {
10
+ s as Popover
11
+ };
12
+ //# sourceMappingURL=component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component.js","sources":["../../../src/components/Popover/component.tsx"],"sourcesContent":["\"use client\";\nimport {\n default as AntPopover,\n type PopoverProps as AntPopoverProps,\n} from \"antd/es/popover\";\n\n// Define props interface extending Ant Design's PopoverProps\nexport interface PopoverProps extends AntPopoverProps {\n /**\n * Arrow config for of the popover\n * @default false\n */\n arrow?: AntPopoverProps[\"arrow\"];\n}\n\n// Create Popover component\nexport const Popover = ({\n className,\n style,\n arrow = false,\n ...rest\n}: PopoverProps) => {\n return (\n <AntPopover className={className} arrow={arrow} style={style} {...rest} />\n );\n};\n"],"names":["Popover","className","style","arrow","rest","AntPopover"],"mappings":";;AAgBO,MAAMA,IAAU,CAAC;AAAA,EACtB,WAAAC;AAAA,EACA,OAAAC;AAAA,EACA,OAAAC,IAAQ;AAAA,EACR,GAAGC;AACL,wBAEKC,GAAW,EAAA,WAAAJ,GAAsB,OAAAE,GAAc,OAAAD,GAAe,GAAGE,GAAM;"}