@akanjs/ui 0.0.150 → 0.0.151

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 (405) hide show
  1. package/BottomSheet.d.ts +13 -0
  2. package/Button.d.ts +9 -0
  3. package/ClientSide.d.ts +6 -0
  4. package/Copy.d.ts +6 -0
  5. package/CsrImage.d.ts +11 -0
  6. package/Data/CardList.d.ts +36 -0
  7. package/Data/Dashboard.d.ts +15 -0
  8. package/Data/Insight.d.ts +8 -0
  9. package/Data/Item.d.ts +74 -0
  10. package/Data/ListContainer.d.ts +38 -0
  11. package/Data/Pagination.d.ts +6 -0
  12. package/Data/QueryMaker.d.ts +9 -0
  13. package/Data/TableList.d.ts +26 -0
  14. package/Data/index.d.ts +10 -0
  15. package/Data/index_.d.ts +8 -0
  16. package/DatePicker.d.ts +38 -0
  17. package/Dialog/Action.d.ts +5 -0
  18. package/Dialog/Close.d.ts +5 -0
  19. package/Dialog/Content.d.ts +6 -0
  20. package/Dialog/Modal.d.ts +8 -0
  21. package/Dialog/Provider.d.ts +7 -0
  22. package/Dialog/Title.d.ts +5 -0
  23. package/Dialog/Trigger.d.ts +5 -0
  24. package/Dialog/context.d.ts +10 -0
  25. package/Dialog/index.d.ts +9 -0
  26. package/DragAction.d.ts +24 -0
  27. package/DraggableList.d.ts +25 -0
  28. package/Dropdown.d.ts +10 -0
  29. package/Empty.d.ts +9 -0
  30. package/Field.d.ts +404 -0
  31. package/FontFace.d.ts +6 -0
  32. package/Image.d.ts +17 -0
  33. package/InfiniteScroll.d.ts +10 -0
  34. package/Input.d.ts +85 -0
  35. package/KeyboardAvoiding.d.ts +7 -0
  36. package/Layout/BottomAction.d.ts +5 -0
  37. package/Layout/BottomInset.d.ts +6 -0
  38. package/Layout/BottomTab.d.ts +14 -0
  39. package/Layout/Header.d.ts +7 -0
  40. package/Layout/LeftSider.d.ts +8 -0
  41. package/Layout/Navbar.d.ts +11 -0
  42. package/Layout/RightSider.d.ts +9 -0
  43. package/Layout/Sider.d.ts +6 -0
  44. package/Layout/Template.d.ts +5 -0
  45. package/Layout/TopLeftAction.d.ts +5 -0
  46. package/Layout/Unit.d.ts +6 -0
  47. package/Layout/View.d.ts +5 -0
  48. package/Layout/Zone.d.ts +5 -0
  49. package/Layout/index.d.ts +14 -0
  50. package/Link/Back.d.ts +6 -0
  51. package/Link/Close.d.ts +6 -0
  52. package/Link/CsrLink.d.ts +2 -0
  53. package/Link/NextLink.d.ts +2 -0
  54. package/Link/index.d.ts +8 -0
  55. package/Link/types.d.ts +22 -0
  56. package/Load/Edit.d.ts +4 -0
  57. package/Load/Edit_Client.d.ts +25 -0
  58. package/Load/Page.d.ts +10 -0
  59. package/Load/PageCSR.d.ts +11 -0
  60. package/Load/Pagination.d.ts +8 -0
  61. package/Load/Units.d.ts +34 -0
  62. package/Load/View.d.ts +17 -0
  63. package/Load/index.d.ts +8 -0
  64. package/Load/index_.d.ts +3 -0
  65. package/Loading/Area.d.ts +1 -0
  66. package/Loading/Button.d.ts +7 -0
  67. package/Loading/Input.d.ts +7 -0
  68. package/Loading/ProgressBar.d.ts +6 -0
  69. package/Loading/Skeleton.d.ts +7 -0
  70. package/Loading/Spin.d.ts +7 -0
  71. package/Loading/index.d.ts +8 -0
  72. package/Menu.d.ts +26 -0
  73. package/Modal.d.ts +23 -0
  74. package/Model/Edit.d.ts +15 -0
  75. package/Model/EditModal.d.ts +33 -0
  76. package/Model/EditWrapper.d.ts +11 -0
  77. package/Model/LoadInit.d.ts +10 -0
  78. package/Model/New.d.ts +15 -0
  79. package/Model/NewWrapper.d.ts +12 -0
  80. package/Model/NewWrapper_Client.d.ts +12 -0
  81. package/Model/Remove.d.ts +10 -0
  82. package/Model/RemoveWrapper.d.ts +11 -0
  83. package/Model/SureToRemove.d.ts +10 -0
  84. package/Model/View.d.ts +19 -0
  85. package/Model/ViewEditModal.d.ts +11 -0
  86. package/Model/ViewModal.d.ts +13 -0
  87. package/Model/ViewWrapper.d.ts +11 -0
  88. package/Model/index.d.ts +15 -0
  89. package/Model/index_.d.ts +13 -0
  90. package/More.d.ts +12 -0
  91. package/ObjectId.d.ts +5 -0
  92. package/Pagination.d.ts +14 -0
  93. package/Popconfirm.d.ts +18 -0
  94. package/Portal.d.ts +6 -0
  95. package/Radio.d.ts +19 -0
  96. package/RecentTime.d.ts +7 -0
  97. package/Refresh.d.ts +7 -0
  98. package/ScreenNavigator.d.ts +18 -0
  99. package/Select.d.ts +29 -0
  100. package/Signal/Arg.d.ts +75 -0
  101. package/Signal/Doc.d.ts +19 -0
  102. package/Signal/GraphQL.d.ts +32 -0
  103. package/Signal/Listener.d.ts +9 -0
  104. package/Signal/Message.d.ts +27 -0
  105. package/Signal/Object.d.ts +19 -0
  106. package/Signal/PubSub.d.ts +26 -0
  107. package/Signal/Request.d.ts +8 -0
  108. package/Signal/Response.d.ts +16 -0
  109. package/Signal/RestApi.d.ts +40 -0
  110. package/Signal/WebSocket.d.ts +9 -0
  111. package/Signal/index.d.ts +20 -0
  112. package/System/CSR.d.ts +31 -0
  113. package/System/Client.d.ts +48 -0
  114. package/System/Common.d.ts +66 -0
  115. package/System/DevModeToggle.d.ts +1 -0
  116. package/System/Gtag.d.ts +3 -0
  117. package/System/HealthCheck.d.ts +5 -0
  118. package/System/Messages.d.ts +1 -0
  119. package/System/Reconnect.d.ts +6 -0
  120. package/System/Root.d.ts +5 -0
  121. package/System/SSR.d.ts +26 -0
  122. package/System/SelectLanguage.d.ts +5 -0
  123. package/System/ThemeToggle.d.ts +1 -0
  124. package/System/index.d.ts +11 -0
  125. package/Tab/Menu.d.ts +11 -0
  126. package/Tab/Menus.d.ts +5 -0
  127. package/Tab/Panel.d.ts +7 -0
  128. package/Tab/Provider.d.ts +6 -0
  129. package/Tab/context.d.ts +9 -0
  130. package/Tab/index.d.ts +7 -0
  131. package/Table.d.ts +26 -0
  132. package/ToggleSelect.d.ts +31 -0
  133. package/Unauthorized.d.ts +9 -0
  134. package/cjs/BottomSheet.js +113 -0
  135. package/cjs/Button.js +69 -0
  136. package/cjs/ClientSide.js +26 -0
  137. package/cjs/Copy.js +37 -0
  138. package/cjs/CsrImage.js +50 -0
  139. package/cjs/Data/CardList.js +119 -0
  140. package/cjs/Data/Dashboard.js +54 -0
  141. package/cjs/Data/Insight.js +38 -0
  142. package/cjs/Data/Item.js +204 -0
  143. package/cjs/Data/ListContainer.js +251 -0
  144. package/cjs/Data/Pagination.js +64 -0
  145. package/cjs/Data/QueryMaker.js +304 -0
  146. package/cjs/Data/TableList.js +139 -0
  147. package/cjs/Data/index.js +33 -0
  148. package/cjs/Data/index_.js +49 -0
  149. package/cjs/DatePicker.js +173 -0
  150. package/cjs/Dialog/Action.js +32 -0
  151. package/cjs/Dialog/Close.js +38 -0
  152. package/cjs/Dialog/Content.js +27 -0
  153. package/cjs/Dialog/Modal.js +155 -0
  154. package/cjs/Dialog/Provider.js +46 -0
  155. package/cjs/Dialog/Title.js +32 -0
  156. package/cjs/Dialog/Trigger.js +38 -0
  157. package/cjs/Dialog/context.js +32 -0
  158. package/cjs/Dialog/index.js +36 -0
  159. package/cjs/DragAction.js +111 -0
  160. package/cjs/DraggableList.js +141 -0
  161. package/cjs/Dropdown.js +64 -0
  162. package/cjs/Empty.js +50 -0
  163. package/cjs/Field.js +1109 -0
  164. package/cjs/FontFace.js +77 -0
  165. package/cjs/Image.js +61 -0
  166. package/cjs/InfiniteScroll.js +65 -0
  167. package/cjs/Input.js +440 -0
  168. package/cjs/KeyboardAvoiding.js +65 -0
  169. package/cjs/Layout/BottomAction.js +26 -0
  170. package/cjs/Layout/BottomInset.js +53 -0
  171. package/cjs/Layout/BottomTab.js +56 -0
  172. package/cjs/Layout/Header.js +52 -0
  173. package/cjs/Layout/LeftSider.js +49 -0
  174. package/cjs/Layout/Navbar.js +51 -0
  175. package/cjs/Layout/RightSider.js +52 -0
  176. package/cjs/Layout/Sider.js +39 -0
  177. package/cjs/Layout/Template.js +26 -0
  178. package/cjs/Layout/TopLeftAction.js +39 -0
  179. package/cjs/Layout/Unit.js +27 -0
  180. package/cjs/Layout/View.js +26 -0
  181. package/cjs/Layout/Zone.js +26 -0
  182. package/cjs/Layout/index.js +48 -0
  183. package/cjs/Link/Back.js +27 -0
  184. package/cjs/Link/Close.js +36 -0
  185. package/cjs/Link/CsrLink.js +49 -0
  186. package/cjs/Link/NextLink.js +71 -0
  187. package/cjs/Link/index.js +47 -0
  188. package/cjs/Link/types.js +15 -0
  189. package/cjs/Load/Edit.js +42 -0
  190. package/cjs/Load/Edit_Client.js +93 -0
  191. package/cjs/Load/Page.js +35 -0
  192. package/cjs/Load/PageCSR.js +67 -0
  193. package/cjs/Load/Pagination.js +89 -0
  194. package/cjs/Load/Units.js +232 -0
  195. package/cjs/Load/View.js +88 -0
  196. package/cjs/Load/index.js +42 -0
  197. package/cjs/Load/index_.js +39 -0
  198. package/cjs/Loading/Area.js +25 -0
  199. package/cjs/Loading/Button.js +33 -0
  200. package/cjs/Loading/Input.js +33 -0
  201. package/cjs/Loading/ProgressBar.js +29 -0
  202. package/cjs/Loading/Skeleton.js +27 -0
  203. package/cjs/Loading/Spin.js +27 -0
  204. package/cjs/Loading/index.js +29 -0
  205. package/cjs/Menu.js +215 -0
  206. package/cjs/Modal.js +75 -0
  207. package/cjs/Model/Edit.js +61 -0
  208. package/cjs/Model/EditModal.js +255 -0
  209. package/cjs/Model/EditWrapper.js +48 -0
  210. package/cjs/Model/LoadInit.js +27 -0
  211. package/cjs/Model/New.js +61 -0
  212. package/cjs/Model/NewWrapper.js +28 -0
  213. package/cjs/Model/NewWrapper_Client.js +66 -0
  214. package/cjs/Model/Remove.js +86 -0
  215. package/cjs/Model/RemoveWrapper.js +48 -0
  216. package/cjs/Model/SureToRemove.js +109 -0
  217. package/cjs/Model/View.js +44 -0
  218. package/cjs/Model/ViewEditModal.js +118 -0
  219. package/cjs/Model/ViewModal.js +92 -0
  220. package/cjs/Model/ViewWrapper.js +48 -0
  221. package/cjs/Model/index.js +38 -0
  222. package/cjs/Model/index_.js +58 -0
  223. package/cjs/More.js +67 -0
  224. package/cjs/ObjectId.js +37 -0
  225. package/cjs/Pagination.js +110 -0
  226. package/cjs/Popconfirm.js +116 -0
  227. package/cjs/Portal.js +27 -0
  228. package/cjs/Radio.js +53 -0
  229. package/cjs/RecentTime.js +86 -0
  230. package/cjs/Refresh.js +45 -0
  231. package/cjs/ScreenNavigator.js +121 -0
  232. package/cjs/Select.js +262 -0
  233. package/cjs/Signal/Arg.js +237 -0
  234. package/cjs/Signal/Doc.js +181 -0
  235. package/cjs/Signal/GraphQL.js +177 -0
  236. package/cjs/Signal/Listener.js +59 -0
  237. package/cjs/Signal/Message.js +190 -0
  238. package/cjs/Signal/Object.js +95 -0
  239. package/cjs/Signal/PubSub.js +191 -0
  240. package/cjs/Signal/Request.js +38 -0
  241. package/cjs/Signal/Response.js +53 -0
  242. package/cjs/Signal/RestApi.js +255 -0
  243. package/cjs/Signal/WebSocket.js +68 -0
  244. package/cjs/Signal/index.js +42 -0
  245. package/cjs/System/CSR.js +376 -0
  246. package/cjs/System/Client.js +200 -0
  247. package/cjs/System/Common.js +64 -0
  248. package/cjs/System/DevModeToggle.js +38 -0
  249. package/cjs/System/Gtag.js +67 -0
  250. package/cjs/System/HealthCheck.js +60 -0
  251. package/cjs/System/Messages.js +170 -0
  252. package/cjs/System/Reconnect.js +64 -0
  253. package/cjs/System/Root.js +30 -0
  254. package/cjs/System/SSR.js +144 -0
  255. package/cjs/System/SelectLanguage.js +58 -0
  256. package/cjs/System/ThemeToggle.js +40 -0
  257. package/cjs/System/index.js +55 -0
  258. package/cjs/Tab/Menu.js +70 -0
  259. package/cjs/{src/index.js → Tab/Menus.js} +8 -5
  260. package/cjs/Tab/Panel.js +42 -0
  261. package/cjs/Tab/Provider.js +31 -0
  262. package/cjs/Tab/context.js +30 -0
  263. package/cjs/Tab/index.js +32 -0
  264. package/cjs/Table.js +85 -0
  265. package/cjs/ToggleSelect.js +118 -0
  266. package/cjs/Unauthorized.js +50 -0
  267. package/cjs/index.js +88 -2
  268. package/esm/BottomSheet.js +84 -0
  269. package/esm/Button.js +40 -0
  270. package/esm/ClientSide.js +7 -0
  271. package/esm/Copy.js +18 -0
  272. package/esm/CsrImage.js +31 -0
  273. package/esm/Data/CardList.js +90 -0
  274. package/esm/Data/Dashboard.js +35 -0
  275. package/esm/Data/Insight.js +19 -0
  276. package/esm/Data/Item.js +175 -0
  277. package/esm/Data/ListContainer.js +228 -0
  278. package/esm/Data/Pagination.js +45 -0
  279. package/esm/Data/QueryMaker.js +293 -0
  280. package/esm/Data/TableList.js +110 -0
  281. package/esm/Data/index.js +14 -0
  282. package/esm/Data/index_.js +20 -0
  283. package/esm/DatePicker.js +144 -0
  284. package/esm/Dialog/Action.js +13 -0
  285. package/esm/Dialog/Close.js +19 -0
  286. package/esm/Dialog/Content.js +8 -0
  287. package/esm/Dialog/Modal.js +126 -0
  288. package/esm/Dialog/Provider.js +17 -0
  289. package/esm/Dialog/Title.js +13 -0
  290. package/esm/Dialog/Trigger.js +19 -0
  291. package/esm/Dialog/context.js +13 -0
  292. package/esm/Dialog/index.js +17 -0
  293. package/esm/DragAction.js +92 -0
  294. package/esm/DraggableList.js +112 -0
  295. package/esm/Dropdown.js +45 -0
  296. package/esm/Empty.js +21 -0
  297. package/esm/Field.js +1090 -0
  298. package/esm/FontFace.js +58 -0
  299. package/esm/Image.js +32 -0
  300. package/esm/InfiniteScroll.js +46 -0
  301. package/esm/Input.js +415 -0
  302. package/esm/KeyboardAvoiding.js +46 -0
  303. package/esm/Layout/BottomAction.js +7 -0
  304. package/esm/Layout/BottomInset.js +34 -0
  305. package/esm/Layout/BottomTab.js +37 -0
  306. package/esm/Layout/Header.js +33 -0
  307. package/esm/Layout/LeftSider.js +30 -0
  308. package/esm/Layout/Navbar.js +22 -0
  309. package/esm/Layout/RightSider.js +33 -0
  310. package/esm/Layout/Sider.js +20 -0
  311. package/esm/Layout/Template.js +7 -0
  312. package/esm/Layout/TopLeftAction.js +20 -0
  313. package/esm/Layout/Unit.js +8 -0
  314. package/esm/Layout/View.js +7 -0
  315. package/esm/Layout/Zone.js +7 -0
  316. package/esm/Layout/index.js +29 -0
  317. package/esm/Link/Back.js +8 -0
  318. package/esm/Link/Close.js +17 -0
  319. package/esm/Link/CsrLink.js +30 -0
  320. package/esm/Link/NextLink.js +42 -0
  321. package/esm/Link/index.js +18 -0
  322. package/esm/Link/types.js +0 -0
  323. package/esm/Load/Edit.js +13 -0
  324. package/esm/Load/Edit_Client.js +74 -0
  325. package/esm/Load/Page.js +16 -0
  326. package/esm/Load/PageCSR.js +48 -0
  327. package/esm/Load/Pagination.js +70 -0
  328. package/esm/Load/Units.js +213 -0
  329. package/esm/Load/View.js +69 -0
  330. package/esm/Load/index.js +13 -0
  331. package/esm/Load/index_.js +10 -0
  332. package/esm/Loading/Area.js +6 -0
  333. package/esm/Loading/Button.js +14 -0
  334. package/esm/Loading/Input.js +14 -0
  335. package/esm/Loading/ProgressBar.js +10 -0
  336. package/esm/Loading/Skeleton.js +8 -0
  337. package/esm/Loading/Spin.js +8 -0
  338. package/esm/Loading/index.js +10 -0
  339. package/esm/Menu.js +196 -0
  340. package/esm/Modal.js +46 -0
  341. package/esm/Model/Edit.js +32 -0
  342. package/esm/Model/EditModal.js +226 -0
  343. package/esm/Model/EditWrapper.js +29 -0
  344. package/esm/Model/LoadInit.js +8 -0
  345. package/esm/Model/New.js +32 -0
  346. package/esm/Model/NewWrapper.js +9 -0
  347. package/esm/Model/NewWrapper_Client.js +47 -0
  348. package/esm/Model/Remove.js +67 -0
  349. package/esm/Model/RemoveWrapper.js +29 -0
  350. package/esm/Model/SureToRemove.js +90 -0
  351. package/esm/Model/View.js +25 -0
  352. package/esm/Model/ViewEditModal.js +89 -0
  353. package/esm/Model/ViewModal.js +63 -0
  354. package/esm/Model/ViewWrapper.js +29 -0
  355. package/esm/Model/index.js +33 -0
  356. package/esm/Model/index_.js +29 -0
  357. package/esm/More.js +38 -0
  358. package/esm/ObjectId.js +18 -0
  359. package/esm/Pagination.js +91 -0
  360. package/esm/Popconfirm.js +87 -0
  361. package/esm/Portal.js +8 -0
  362. package/esm/Radio.js +34 -0
  363. package/esm/RecentTime.js +57 -0
  364. package/esm/Refresh.js +16 -0
  365. package/esm/ScreenNavigator.js +102 -0
  366. package/esm/Select.js +243 -0
  367. package/esm/Signal/Arg.js +208 -0
  368. package/esm/Signal/Doc.js +152 -0
  369. package/esm/Signal/GraphQL.js +156 -0
  370. package/esm/Signal/Listener.js +40 -0
  371. package/esm/Signal/Message.js +161 -0
  372. package/esm/Signal/Object.js +76 -0
  373. package/esm/Signal/PubSub.js +162 -0
  374. package/esm/Signal/Request.js +19 -0
  375. package/esm/Signal/Response.js +34 -0
  376. package/esm/Signal/RestApi.js +234 -0
  377. package/esm/Signal/WebSocket.js +39 -0
  378. package/esm/Signal/index.js +13 -0
  379. package/esm/System/CSR.js +357 -0
  380. package/esm/System/Client.js +191 -0
  381. package/esm/System/Common.js +45 -0
  382. package/esm/System/DevModeToggle.js +19 -0
  383. package/esm/System/Gtag.js +48 -0
  384. package/esm/System/HealthCheck.js +41 -0
  385. package/esm/System/Messages.js +156 -0
  386. package/esm/System/Reconnect.js +45 -0
  387. package/esm/System/Root.js +11 -0
  388. package/esm/System/SSR.js +125 -0
  389. package/esm/System/SelectLanguage.js +39 -0
  390. package/esm/System/ThemeToggle.js +21 -0
  391. package/esm/System/index.js +26 -0
  392. package/esm/Tab/Menu.js +51 -0
  393. package/esm/Tab/Menus.js +7 -0
  394. package/esm/Tab/Panel.js +23 -0
  395. package/esm/Tab/Provider.js +12 -0
  396. package/esm/Tab/context.js +11 -0
  397. package/esm/Tab/index.js +13 -0
  398. package/esm/Table.js +56 -0
  399. package/esm/ToggleSelect.js +99 -0
  400. package/esm/Unauthorized.js +21 -0
  401. package/esm/index.js +84 -1
  402. package/index.d.ts +41 -1
  403. package/package.json +23 -2
  404. package/esm/src/index.js +0 -4
  405. package/src/index.d.ts +0 -1
package/cjs/Field.js ADDED
@@ -0,0 +1,1109 @@
1
+ "use client";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var Field_exports = {};
20
+ __export(Field_exports, {
21
+ Field: () => Field
22
+ });
23
+ module.exports = __toCommonJS(Field_exports);
24
+ var import_base = require("@akanjs/base");
25
+ var import_client = require("@akanjs/client");
26
+ var import_common = require("@akanjs/common");
27
+ var import_next = require("@akanjs/next");
28
+ var import_store = require("@akanjs/store");
29
+ var import_react = require("react");
30
+ var import_ai = require("react-icons/ai");
31
+ var import_bi = require("react-icons/bi");
32
+ var import_md = require("react-icons/md");
33
+ var import_DraggableList = require("./DraggableList");
34
+ var import_Input = require("./Input");
35
+ var import_Select = require("./Select");
36
+ var import_ToggleSelect = require("./ToggleSelect");
37
+ const Label = ({ className, label, desc, unit, nullable, mode = "edit" }) => {
38
+ return /* @__PURE__ */ React.createElement("span", { className: (0, import_client.clsx)("flex shrink-0 items-center gap-1", className) }, (0, import_common.capitalize)(label), unit ? /* @__PURE__ */ React.createElement("span", { className: "animate-fadeIn" }, " (", unit, ")") : null, desc ? /* @__PURE__ */ React.createElement("span", { className: "tooltip tooltip-info tooltip-right", "data-tip": desc }, /* @__PURE__ */ React.createElement(import_bi.BiHelpCircle, null)) : null, nullable ? /* @__PURE__ */ React.createElement("span", { className: "text-sm text-gray-400" }, "(optional)") : null);
39
+ };
40
+ const Field = ({
41
+ className,
42
+ containerClassName,
43
+ labelClassName,
44
+ label,
45
+ desc,
46
+ nullable,
47
+ children
48
+ }) => {
49
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("w-full", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("mt-2 flex w-full flex-col gap-4 px-4", containerClassName) }, children));
50
+ };
51
+ Field.Label = Label;
52
+ const List = ({
53
+ className,
54
+ labelClassName,
55
+ label,
56
+ desc,
57
+ value,
58
+ onChange,
59
+ onAdd,
60
+ nullable,
61
+ renderItem
62
+ }) => {
63
+ const { l } = (0, import_next.usePage)();
64
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex w-full flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "mb-2 flex w-full flex-col gap-2 rounded-md border border-gray-300 p-2" }, value.map((item, idx) => /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("div", { key: idx, className: "flex h-full w-full items-center justify-between gap-2" }, renderItem(item, idx), /* @__PURE__ */ React.createElement("div", { className: "flex gap-2 border-l border-gray-300 pl-2" }, /* @__PURE__ */ React.createElement(
65
+ "button",
66
+ {
67
+ className: "btn btn-xs btn-error btn-square btn-outline",
68
+ onClick: () => {
69
+ onChange(value.filter((_, i) => i !== idx));
70
+ }
71
+ },
72
+ /* @__PURE__ */ React.createElement(import_bi.BiTrash, null)
73
+ ))), /* @__PURE__ */ React.createElement("div", { className: "h-[0.5px] w-full bg-gray-300 px-2 last:h-0" }))), /* @__PURE__ */ React.createElement(
74
+ "button",
75
+ {
76
+ className: "btn btn-outline",
77
+ onClick: () => {
78
+ onAdd();
79
+ }
80
+ },
81
+ "+ ",
82
+ l("shared.addModel", { model: l("appSubRoute.modelName") })
83
+ )));
84
+ };
85
+ Field.List = List;
86
+ const Text = ({
87
+ label,
88
+ desc,
89
+ labelClassName,
90
+ className,
91
+ value,
92
+ onChange,
93
+ placeholder,
94
+ nullable,
95
+ disabled,
96
+ minlength = nullable ? 0 : 2,
97
+ maxlength = 200,
98
+ transform = (v) => v,
99
+ validate,
100
+ onPressEnter,
101
+ cache,
102
+ inputClassName,
103
+ inputStyleType = "bordered"
104
+ }) => {
105
+ const { l } = (0, import_next.usePage)();
106
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
107
+ import_Input.Input,
108
+ {
109
+ cacheKey: cache ? `${label}-${desc}-text` : void 0,
110
+ inputStyleType,
111
+ value: value ?? "",
112
+ nullable,
113
+ placeholder,
114
+ onChange: (value2) => {
115
+ onChange(transform(value2));
116
+ },
117
+ disabled,
118
+ className: (0, import_client.clsx)("w-full", ""),
119
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
120
+ validate: (text) => {
121
+ if (text.length < minlength)
122
+ return l("shared.textTooShortError", { minlength });
123
+ else if (text.length > maxlength)
124
+ return l("shared.textTooLongError", { maxlength });
125
+ else
126
+ return validate?.(text) ?? true;
127
+ },
128
+ onPressEnter
129
+ }
130
+ ));
131
+ };
132
+ Field.Text = (0, import_react.memo)(Text);
133
+ //! 삭제
134
+ const Price = ({
135
+ label,
136
+ desc,
137
+ labelClassName,
138
+ className,
139
+ value,
140
+ onChange,
141
+ placeholder,
142
+ nullable,
143
+ disabled,
144
+ minlength = nullable ? 0 : 2,
145
+ maxlength = 80,
146
+ transform = (v) => v,
147
+ validate,
148
+ onPressEnter,
149
+ inputClassName,
150
+ inputStyleType = "bordered"
151
+ }) => {
152
+ const { l } = (0, import_next.usePage)();
153
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
154
+ import_Input.Input,
155
+ {
156
+ inputStyleType,
157
+ value: value ?? "",
158
+ nullable,
159
+ placeholder: placeholder ?? `~ ${l("shared.priceUnit")}`,
160
+ onChange: (value2) => {
161
+ const withoutComma = value2.replace(/,/g, "").replace(/ /g, "");
162
+ onChange(transform(withoutComma));
163
+ },
164
+ disabled,
165
+ className: (0, import_client.clsx)("w-full", ""),
166
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
167
+ validate: (text) => {
168
+ if (text.length < minlength)
169
+ return l("shared.textTooShortError", { minlength });
170
+ else if (text.length > maxlength)
171
+ return l("shared.textTooLongError", { maxlength });
172
+ else
173
+ return validate?.(text) ?? true;
174
+ },
175
+ onPressEnter
176
+ }
177
+ ));
178
+ };
179
+ Field.Price = (0, import_react.memo)(Price);
180
+ const TextArea = ({
181
+ label,
182
+ desc,
183
+ labelClassName,
184
+ className,
185
+ value,
186
+ onChange,
187
+ placeholder,
188
+ nullable,
189
+ disabled,
190
+ rows = 3,
191
+ minlength = nullable ? 0 : 2,
192
+ maxlength = 1e3,
193
+ transform = (v) => v,
194
+ validate,
195
+ onPressEnter,
196
+ cache,
197
+ inputClassName
198
+ }) => {
199
+ const { l } = (0, import_next.usePage)();
200
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
201
+ import_Input.Input.TextArea,
202
+ {
203
+ value: value ?? "",
204
+ cacheKey: cache ? `${label}-${desc}-textArea` : void 0,
205
+ nullable,
206
+ placeholder,
207
+ onChange: (value2) => {
208
+ onChange(transform(value2));
209
+ },
210
+ disabled,
211
+ rows,
212
+ className: (0, import_client.clsx)("h-full w-full"),
213
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
214
+ validate: (text) => {
215
+ if (text.length < minlength)
216
+ return l("shared.textTooShortError", { minlength });
217
+ else if (text.length > maxlength)
218
+ return l("shared.textTooLongError", { maxlength });
219
+ else
220
+ return validate?.(text) ?? true;
221
+ },
222
+ onPressEnter
223
+ }
224
+ ));
225
+ };
226
+ Field.TextArea = (0, import_react.memo)(TextArea);
227
+ const Switch = ({
228
+ label,
229
+ desc,
230
+ labelClassName,
231
+ className,
232
+ value,
233
+ onChange,
234
+ disabled,
235
+ inputClassName,
236
+ onDesc,
237
+ offDesc
238
+ }) => {
239
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable: true, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React.createElement(
240
+ "input",
241
+ {
242
+ type: "checkbox",
243
+ disabled,
244
+ className: (0, import_client.clsx)("toggle toggle-accent", inputClassName),
245
+ checked: value,
246
+ onChange: (e) => {
247
+ onChange(e.target.checked);
248
+ }
249
+ }
250
+ ), onDesc ?? offDesc ? /* @__PURE__ */ React.createElement("div", { className: "text-info text-sm" }, value ? onDesc : offDesc) : null));
251
+ };
252
+ Field.Switch = Switch;
253
+ const ToggleSelect = ({
254
+ className,
255
+ labelClassName,
256
+ label,
257
+ desc,
258
+ model,
259
+ field,
260
+ items,
261
+ value,
262
+ validate,
263
+ onChange,
264
+ nullable,
265
+ disabled,
266
+ btnClassName
267
+ }) => {
268
+ const { l } = (0, import_next.usePage)();
269
+ const isEnum = items instanceof import_base.Enum;
270
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
271
+ import_ToggleSelect.ToggleSelect,
272
+ {
273
+ className: "mt-2",
274
+ nullable: !!nullable,
275
+ btnClassName,
276
+ items: model && field ? (isEnum ? items.values : items).map((item) => ({
277
+ label: l.enum(model, field, item),
278
+ value: item
279
+ })) : isEnum ? items.values : items,
280
+ value,
281
+ onChange: (value2, idx) => {
282
+ onChange(value2);
283
+ },
284
+ disabled,
285
+ validate: (value2) => {
286
+ return validate?.(value2) ?? true;
287
+ }
288
+ }
289
+ ));
290
+ };
291
+ Field.ToggleSelect = ToggleSelect;
292
+ const MultiToggleSelect = ({
293
+ className,
294
+ labelClassName,
295
+ label,
296
+ desc,
297
+ model,
298
+ field,
299
+ items,
300
+ value,
301
+ minlength,
302
+ maxlength,
303
+ validate,
304
+ onChange,
305
+ disabled
306
+ }) => {
307
+ const { l } = (0, import_next.usePage)();
308
+ const isEnum = items instanceof import_base.Enum;
309
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable: !!minlength, label, desc }) : null, /* @__PURE__ */ React.createElement(
310
+ import_ToggleSelect.ToggleSelect.Multi,
311
+ {
312
+ nullable: !minlength,
313
+ items: model && field ? (isEnum ? items.values : items).map((item) => ({
314
+ label: l.enum(model, field, item),
315
+ value: item
316
+ })) : isEnum ? items.values : items,
317
+ value,
318
+ onChange: (values) => {
319
+ onChange(values);
320
+ },
321
+ disabled,
322
+ validate: (value2) => {
323
+ if (minlength && value2.length < minlength)
324
+ return l("shared.selectTooShortError", { minlength });
325
+ else if (maxlength && value2.length > maxlength)
326
+ return l("shared.selectTooLongError", { maxlength });
327
+ else
328
+ return validate?.(value2) ?? true;
329
+ }
330
+ }
331
+ ));
332
+ };
333
+ Field.MultiToggleSelect = MultiToggleSelect;
334
+ const TextList = ({
335
+ label,
336
+ desc,
337
+ labelClassName,
338
+ className,
339
+ value,
340
+ onChange,
341
+ placeholder,
342
+ disabled,
343
+ transform = (v) => v,
344
+ minlength = 0,
345
+ maxlength = 50,
346
+ minTextlength = 2,
347
+ maxTextlength = 200,
348
+ cache,
349
+ validate,
350
+ inputClassName
351
+ }) => {
352
+ const { l } = (0, import_next.usePage)();
353
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable: !minlength, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "mb-5 h-full gap-2 rounded-md border border-gray-300 p-2" }, /* @__PURE__ */ React.createElement(import_DraggableList.DraggableList, { className: "h-full gap-2", onChange }, value.map((text, idx) => /* @__PURE__ */ React.createElement(import_DraggableList.DraggableList.Item, { key: idx, value: text }, /* @__PURE__ */ React.createElement("div", { className: "flex w-full items-center" }, /* @__PURE__ */ React.createElement(import_DraggableList.DraggableList.Cursor, null, /* @__PURE__ */ React.createElement(import_md.MdDragIndicator, { className: "text-xl" })), /* @__PURE__ */ React.createElement("div", { className: "flex w-full items-center justify-center gap-5" }, /* @__PURE__ */ React.createElement(
354
+ import_Input.Input,
355
+ {
356
+ value: text,
357
+ cacheKey: cache ? `${label}-${desc}-textList-[${idx}]` : void 0,
358
+ onChange: (text2) => {
359
+ const newValue = [...value];
360
+ newValue[idx] = transform(text2);
361
+ onChange(newValue);
362
+ },
363
+ validate: (text2) => {
364
+ if (text2.length < minlength)
365
+ return l("shared.textTooShortError", { minlength: minTextlength });
366
+ else if (text2.length > maxlength)
367
+ return l("shared.textTooLongError", { maxlength: maxTextlength });
368
+ else
369
+ return validate?.(text2) ?? true;
370
+ },
371
+ className: (0, import_client.clsx)("w-full", inputClassName),
372
+ inputClassName: "w-full input-sm",
373
+ placeholder,
374
+ disabled
375
+ }
376
+ ), /* @__PURE__ */ React.createElement(
377
+ "button",
378
+ {
379
+ className: "btn btn-xs btn-error btn-square btn-outline",
380
+ onClick: () => {
381
+ onChange(value.filter((_, i) => i !== idx));
382
+ }
383
+ },
384
+ /* @__PURE__ */ React.createElement(import_bi.BiTrash, null)
385
+ )))))), /* @__PURE__ */ React.createElement("div", { className: "bg-base-content/20 my-5 h-[0.5px]" }), value.length <= maxTextlength ? /* @__PURE__ */ React.createElement(
386
+ "button",
387
+ {
388
+ className: "btn btn-outline w-full",
389
+ onClick: () => {
390
+ onChange([...value, ""]);
391
+ }
392
+ },
393
+ "+ New"
394
+ ) : null));
395
+ };
396
+ Field.TextList = TextList;
397
+ const Tags = ({
398
+ label,
399
+ desc,
400
+ labelClassName,
401
+ className,
402
+ value,
403
+ onChange,
404
+ placeholder,
405
+ disabled,
406
+ transform = (v) => v,
407
+ minlength = 0,
408
+ maxlength = 50,
409
+ minTextlength = 2,
410
+ maxTextlength = 10,
411
+ validate,
412
+ inputClassName
413
+ }) => {
414
+ const { l } = (0, import_next.usePage)();
415
+ const [inputVisible, setInputVisible] = (0, import_react.useState)(false);
416
+ const [tag, setTag] = (0, import_react.useState)("");
417
+ const addTag = () => {
418
+ if (!tag.length)
419
+ return;
420
+ onChange([...value, tag]);
421
+ setInputVisible(false);
422
+ setTag("");
423
+ };
424
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable: !minlength, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "border-base-content/20 flex w-full flex-wrap items-center gap-1 rounded-md border p-2" }, value.map((val, idx) => /* @__PURE__ */ React.createElement("span", { className: "badge badge-outline items-center rounded-full text-xs", key: idx }, /* @__PURE__ */ React.createElement("div", { className: "text-xs italic" }, "#"), val, /* @__PURE__ */ React.createElement(
425
+ import_bi.BiX,
426
+ {
427
+ className: "ml-1 cursor-pointer opacity-50 duration-200 hover:opacity-100",
428
+ onClick: () => {
429
+ if (!disabled)
430
+ onChange(value.filter((v, i) => i !== idx));
431
+ }
432
+ }
433
+ ))), inputVisible ? /* @__PURE__ */ React.createElement(
434
+ import_Input.Input,
435
+ {
436
+ autoFocus: true,
437
+ icon: /* @__PURE__ */ React.createElement("div", { className: "text-xs italic" }, "#"),
438
+ className: "h-6 w-24 items-center justify-start rounded-full border px-4",
439
+ inputClassName: "focus:border-0 border-0 bg-transparent text-xs h-full w-full",
440
+ placeholder,
441
+ value: tag,
442
+ onChange: (value2) => {
443
+ if (value2.length > maxTextlength)
444
+ return;
445
+ setTag(transform(value2));
446
+ },
447
+ onBlur: addTag,
448
+ onPressEnter: addTag,
449
+ onPressEscape: () => {
450
+ setInputVisible(false);
451
+ setTag("");
452
+ },
453
+ validate: (text) => {
454
+ if (text.length < minTextlength)
455
+ return l("shared.textTooShortError", { minlength: minTextlength });
456
+ else if (text.length > maxTextlength)
457
+ return l("shared.textTooLongError", { maxlength: maxTextlength });
458
+ else
459
+ return validate?.(text) ?? true;
460
+ }
461
+ }
462
+ ) : !disabled ? /* @__PURE__ */ React.createElement(
463
+ "div",
464
+ {
465
+ className: "bg-success text-success-content flex items-center gap-2 rounded-full px-2 py-1 text-xs duration-200 hover:cursor-pointer hover:opacity-80",
466
+ onClick: () => {
467
+ setInputVisible(true);
468
+ }
469
+ },
470
+ /* @__PURE__ */ React.createElement(import_ai.AiOutlinePlus, null),
471
+ "New Tag"
472
+ ) : null));
473
+ };
474
+ Field.Tags = Tags;
475
+ const Date = ({
476
+ className,
477
+ labelClassName,
478
+ nullable,
479
+ label,
480
+ desc,
481
+ value,
482
+ min,
483
+ max,
484
+ onChange,
485
+ showTime,
486
+ dateClassName
487
+ }) => {
488
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
489
+ "input",
490
+ {
491
+ type: showTime ? "datetime-local" : "date",
492
+ className: (0, import_client.clsx)(
493
+ "input validator text-xs duration-200 outline-none focus-within:outline-none focus:outline-none",
494
+ dateClassName
495
+ ),
496
+ min: min ? showTime ? (0, import_base.dayjs)(min).format("YYYY-MM-DDTHH:mm") : (0, import_base.dayjs)(min).format("YYYY-MM-DD") : void 0,
497
+ max: max ? showTime ? (0, import_base.dayjs)(max).format("YYYY-MM-DDTHH:mm") : (0, import_base.dayjs)(max).format("YYYY-MM-DD") : void 0,
498
+ value: value ? showTime ? (0, import_base.dayjs)(value).format("YYYY-MM-DDTHH:mm") : (0, import_base.dayjs)(value).format("YYYY-MM-DD") : "",
499
+ onChange: (e) => {
500
+ onChange((0, import_base.dayjs)(e.target.value));
501
+ }
502
+ }
503
+ ));
504
+ };
505
+ Field.Date = Date;
506
+ const DateRange = ({
507
+ className,
508
+ labelClassName,
509
+ nullable,
510
+ label,
511
+ desc,
512
+ from,
513
+ to,
514
+ min,
515
+ max,
516
+ onChangeFrom,
517
+ onChangeTo,
518
+ onChange,
519
+ showTime
520
+ }) => {
521
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "relative flex w-full flex-col items-start gap-2 pt-2 text-center md:flex-row md:items-center" }, /* @__PURE__ */ React.createElement("div", { className: "relative flex w-full flex-col items-start justify-start" }, /* @__PURE__ */ React.createElement("div", { className: "bg-base-100 absolute -top-2 left-2 z-10 px-2 text-xs font-light" }, "From"), /* @__PURE__ */ React.createElement(
522
+ Date,
523
+ {
524
+ className: "w-full",
525
+ dateClassName: "w-full",
526
+ showTime,
527
+ value: from,
528
+ max,
529
+ min,
530
+ onChange: (value) => {
531
+ onChangeFrom(value);
532
+ }
533
+ }
534
+ )), /* @__PURE__ */ React.createElement("div", { className: "relative flex w-full flex-col items-start gap-2 text-center md:flex-row md:items-center" }, /* @__PURE__ */ React.createElement("div", { className: "bg-base-100 absolute -top-2 left-2 z-10 px-2 text-xs font-light" }, "To"), /* @__PURE__ */ React.createElement(
535
+ Date,
536
+ {
537
+ className: "w-full",
538
+ dateClassName: "w-full",
539
+ showTime,
540
+ value: to,
541
+ max,
542
+ min,
543
+ onChange: (value) => {
544
+ onChangeTo(value);
545
+ }
546
+ }
547
+ ))));
548
+ };
549
+ Field.DateRange = DateRange;
550
+ const Number = ({
551
+ label,
552
+ desc,
553
+ labelClassName,
554
+ className,
555
+ value,
556
+ onChange,
557
+ placeholder,
558
+ nullable,
559
+ disabled,
560
+ min,
561
+ max,
562
+ cache,
563
+ transform = (v) => v,
564
+ validate,
565
+ onPressEnter,
566
+ inputClassName,
567
+ unit,
568
+ formatter,
569
+ parser
570
+ }) => {
571
+ const { l } = (0, import_next.usePage)();
572
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc, unit }) : null, /* @__PURE__ */ React.createElement(
573
+ import_Input.Input.Number,
574
+ {
575
+ min,
576
+ max,
577
+ cacheKey: cache ? `${label}-${desc}-number` : void 0,
578
+ value,
579
+ nullable,
580
+ formatter,
581
+ parser,
582
+ placeholder,
583
+ onChange: (value2) => {
584
+ onChange(transform(value2 ?? 0));
585
+ },
586
+ disabled,
587
+ className: (0, import_client.clsx)("w-full", ""),
588
+ inputClassName: (0, import_client.clsx)(" w-full", inputClassName),
589
+ validate: (value2) => {
590
+ if (min !== void 0 && value2 < min)
591
+ return l("shared.numberTooSmallError", { min });
592
+ else if (max !== void 0 && value2 > max)
593
+ return l("shared.numberTooBigError", { max });
594
+ else
595
+ return validate?.(value2) ?? true;
596
+ },
597
+ onPressEnter
598
+ }
599
+ ));
600
+ };
601
+ Field.Number = Number;
602
+ const DoubleNumber = ({
603
+ label,
604
+ desc,
605
+ labelClassName,
606
+ className,
607
+ value,
608
+ placeholder,
609
+ nullable,
610
+ disabled,
611
+ min,
612
+ max,
613
+ inputClassName,
614
+ cache,
615
+ separator,
616
+ onChange,
617
+ transform = (v) => v,
618
+ validate,
619
+ onPressEnter
620
+ }) => {
621
+ const { l } = (0, import_next.usePage)();
622
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "flex items-center gap-2" }, /* @__PURE__ */ React.createElement(
623
+ import_Input.Input.Number,
624
+ {
625
+ value: value ? value[0] : 0,
626
+ nullable,
627
+ cacheKey: cache ? `${label}-${desc}-number-[0]` : void 0,
628
+ placeholder,
629
+ onChange: (num) => {
630
+ if (num === null)
631
+ return;
632
+ onChange([transform(num), value ? value[1] : 0]);
633
+ },
634
+ disabled,
635
+ className: (0, import_client.clsx)("w-full", ""),
636
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
637
+ validate: (value2) => {
638
+ if (min && value2 < min[0])
639
+ return l("shared.numberTooSmallError", { min: min[0] });
640
+ else if (max && value2 > max[0])
641
+ return l("shared.numberTooBigError", { max: max[0] });
642
+ else
643
+ return validate?.(value2) ?? true;
644
+ },
645
+ onPressEnter
646
+ }
647
+ ), separator, /* @__PURE__ */ React.createElement(
648
+ import_Input.Input.Number,
649
+ {
650
+ cacheKey: cache ? `${label}-${desc}-number-[1]` : void 0,
651
+ value: value ? value[1] : 0,
652
+ nullable,
653
+ placeholder,
654
+ onChange: (num) => {
655
+ onChange([value ? value[0] : 0, transform(num ?? 0)]);
656
+ },
657
+ disabled,
658
+ className: (0, import_client.clsx)("w-full", ""),
659
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
660
+ validate: (value2) => {
661
+ if (min && value2 < min[1])
662
+ return l("shared.numberTooSmallError", { min: min[1] });
663
+ else if (max && value2 > max[1])
664
+ return l("shared.numberTooBigError", { max: max[1] });
665
+ else
666
+ return validate?.(value2) ?? true;
667
+ },
668
+ onPressEnter
669
+ }
670
+ )));
671
+ };
672
+ Field.DoubleNumber = DoubleNumber;
673
+ const Email = ({
674
+ label,
675
+ desc,
676
+ labelClassName,
677
+ className,
678
+ value,
679
+ onChange,
680
+ cache,
681
+ placeholder = "example@email.com",
682
+ nullable,
683
+ disabled,
684
+ minlength = nullable ? 0 : 2,
685
+ maxlength = 80,
686
+ transform = (v) => v,
687
+ validate,
688
+ onPressEnter,
689
+ inputClassName,
690
+ inputStyleType
691
+ }) => {
692
+ const { l } = (0, import_next.usePage)();
693
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
694
+ import_Input.Input.Email,
695
+ {
696
+ value: value ?? "",
697
+ cacheKey: cache ? `${label}-${desc}-email` : void 0,
698
+ nullable,
699
+ placeholder,
700
+ onChange: (value2) => {
701
+ onChange(transform(value2));
702
+ },
703
+ disabled,
704
+ className: (0, import_client.clsx)("w-full", ""),
705
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
706
+ inputStyleType,
707
+ validate: (text) => {
708
+ if (text.length < minlength)
709
+ return l("shared.textTooShortError", { minlength });
710
+ else if (text.length > maxlength)
711
+ return l("shared.textTooLongError", { maxlength });
712
+ else
713
+ return validate?.(text) ?? true;
714
+ },
715
+ onPressEnter
716
+ }
717
+ ));
718
+ };
719
+ Field.Email = Email;
720
+ const Phone = ({
721
+ label,
722
+ desc,
723
+ labelClassName,
724
+ className,
725
+ value,
726
+ onChange,
727
+ placeholder,
728
+ nullable,
729
+ disabled,
730
+ maxlength = 13,
731
+ cache,
732
+ transform = (v) => (0, import_common.formatPhone)(v),
733
+ validate,
734
+ onPressEnter,
735
+ inputClassName
736
+ }) => {
737
+ const { l } = (0, import_next.usePage)();
738
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
739
+ import_Input.Input,
740
+ {
741
+ value: value ?? "",
742
+ cacheKey: cache ? `${label}-${desc}-phone` : void 0,
743
+ nullable,
744
+ placeholder,
745
+ onChange: (value2) => {
746
+ onChange(transform(value2));
747
+ },
748
+ disabled,
749
+ maxLength: maxlength,
750
+ className: (0, import_client.clsx)("w-full", ""),
751
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
752
+ validate: (text) => {
753
+ if (!(0, import_common.isPhoneNumber)(text))
754
+ return l("util.phoneInvalidError");
755
+ else
756
+ return validate?.(text) ?? true;
757
+ },
758
+ onPressEnter
759
+ }
760
+ ));
761
+ };
762
+ Field.Phone = Phone;
763
+ const Password = ({
764
+ label,
765
+ desc,
766
+ labelClassName,
767
+ className,
768
+ value,
769
+ onChange,
770
+ cache,
771
+ confirmValue,
772
+ onChangeConfirm,
773
+ placeholder,
774
+ nullable,
775
+ disabled,
776
+ minlength = nullable ? 0 : 8,
777
+ maxlength = 20,
778
+ transform = (v) => v,
779
+ validate,
780
+ onPressEnter,
781
+ inputClassName,
782
+ showConfirm
783
+ }) => {
784
+ const { l } = (0, import_next.usePage)();
785
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement("div", { className: "flex flex-col gap-2" }, /* @__PURE__ */ React.createElement(
786
+ import_Input.Input.Password,
787
+ {
788
+ cacheKey: cache ? `${label}-${desc}-password` : void 0,
789
+ value: value ?? "",
790
+ nullable,
791
+ placeholder: placeholder ?? l("user.password"),
792
+ onChange: (value2) => {
793
+ onChange(transform(value2));
794
+ },
795
+ disabled,
796
+ className: (0, import_client.clsx)("w-full", ""),
797
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
798
+ validate: (text) => {
799
+ if (text.length < minlength)
800
+ return l("shared.textTooShortError", { minlength });
801
+ else if (text.length > maxlength)
802
+ return l("shared.textTooLongError", { maxlength });
803
+ else
804
+ return validate?.(text) ?? true;
805
+ },
806
+ onPressEnter
807
+ }
808
+ ), showConfirm ? /* @__PURE__ */ React.createElement(
809
+ import_Input.Input.Password,
810
+ {
811
+ value: confirmValue ?? "",
812
+ nullable,
813
+ placeholder: l("user.passwordConfirm"),
814
+ onChange: (value2) => onChangeConfirm?.(transform(value2)),
815
+ disabled,
816
+ className: (0, import_client.clsx)("w-full", ""),
817
+ inputClassName: (0, import_client.clsx)("focus:border-primary w-full", inputClassName),
818
+ validate: (text) => {
819
+ if (value && text !== value)
820
+ return l("shared.passwordNotMatchError");
821
+ else
822
+ return true;
823
+ },
824
+ onPressEnter
825
+ }
826
+ ) : null));
827
+ };
828
+ Field.Password = Password;
829
+ const Parent = ({
830
+ label,
831
+ desc,
832
+ labelClassName,
833
+ selectClassName,
834
+ className,
835
+ nullable,
836
+ disabled,
837
+ initArgs,
838
+ sliceName,
839
+ value,
840
+ onChange,
841
+ onSearch,
842
+ sortOption,
843
+ renderOption,
844
+ renderSelected = renderOption
845
+ }) => {
846
+ const refName = import_store.st.slice[sliceName].refName;
847
+ const [modelName, ModelName] = [(0, import_common.lowerlize)(refName), (0, import_common.capitalize)(refName)];
848
+ const storeUse = import_store.st.use;
849
+ const storeDo = import_store.st.do;
850
+ const storeGet = import_store.st.get;
851
+ const names = {
852
+ model: modelName,
853
+ modelList: `${modelName}List`,
854
+ modelListLoading: `${modelName}ListLoading`,
855
+ initModel: `init${ModelName}`
856
+ };
857
+ const namesOfSlice = {
858
+ modelList: sliceName.replace(names.model, names.modelList),
859
+ modelListLoading: sliceName.replace(names.model, names.modelListLoading),
860
+ initModel: sliceName.replace(names.model, names.initModel)
861
+ };
862
+ const modelList = storeUse[namesOfSlice.modelList]();
863
+ const modelListLoading = storeUse[namesOfSlice.modelListLoading]();
864
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
865
+ import_Select.Select,
866
+ {
867
+ label,
868
+ desc,
869
+ labelClassName,
870
+ selectClassName,
871
+ value: value?.id,
872
+ searchable: true,
873
+ options: modelList.map((model) => model.id),
874
+ renderOption: (modelId) => {
875
+ const model = modelList.get(modelId);
876
+ if (!model)
877
+ return null;
878
+ return renderOption(model);
879
+ },
880
+ renderSelected: (modelId) => {
881
+ const model = modelList.get(modelId);
882
+ if (!model)
883
+ return null;
884
+ return renderSelected(model);
885
+ },
886
+ onChange: (modelId) => {
887
+ onChange(modelList.get(modelId));
888
+ },
889
+ onOpen: () => {
890
+ if (!disabled)
891
+ void storeDo[namesOfSlice.initModel](...initArgs ?? []);
892
+ },
893
+ onSearch: (text) => {
894
+ if (text) {
895
+ onSearch?.(text);
896
+ }
897
+ }
898
+ }
899
+ ));
900
+ };
901
+ Field.Parent = Parent;
902
+ const ParentId = ({
903
+ label,
904
+ desc,
905
+ className,
906
+ selectClassName,
907
+ labelClassName,
908
+ nullable,
909
+ disabled,
910
+ initArgs,
911
+ sliceName,
912
+ value,
913
+ onChange,
914
+ onSearch,
915
+ sortOption,
916
+ renderOption,
917
+ renderSelected = renderOption
918
+ }) => {
919
+ const refName = import_store.st.slice[sliceName].refName;
920
+ const [modelName, ModelName] = [(0, import_common.lowerlize)(refName), (0, import_common.capitalize)(refName)];
921
+ const storeUse = import_store.st.use;
922
+ const storeDo = import_store.st.do;
923
+ const storeGet = import_store.st.get;
924
+ const names = {
925
+ model: modelName,
926
+ modelList: `${modelName}List`,
927
+ modelListLoading: `${modelName}ListLoading`,
928
+ initModel: `init${ModelName}`
929
+ };
930
+ const namesOfSlice = {
931
+ modelList: sliceName.replace(names.model, names.modelList),
932
+ modelListLoading: sliceName.replace(names.model, names.modelListLoading),
933
+ initModel: sliceName.replace(names.model, names.initModel)
934
+ };
935
+ const modelList = storeUse[namesOfSlice.modelList]();
936
+ const modelListLoading = storeUse[namesOfSlice.modelListLoading]();
937
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
938
+ import_Select.Select,
939
+ {
940
+ searchable: true,
941
+ desc,
942
+ label,
943
+ labelClassName,
944
+ selectClassName,
945
+ value,
946
+ options: modelList.map((model) => ({ label: model.id, value: model.id })),
947
+ renderOption: (renderId) => {
948
+ const model = modelList.get(renderId);
949
+ if (!model)
950
+ return null;
951
+ return renderOption?.(model);
952
+ },
953
+ renderSelected: (renderId) => {
954
+ const model = modelList.get(renderId);
955
+ if (!model)
956
+ return null;
957
+ return renderSelected?.(model);
958
+ },
959
+ onOpen: () => {
960
+ if (!disabled)
961
+ void storeDo[namesOfSlice.initModel](...initArgs ?? []);
962
+ },
963
+ onChange: (modelId) => {
964
+ onChange(modelId, modelList.get(modelId));
965
+ },
966
+ onSearch: (text) => {
967
+ if (text) {
968
+ onSearch?.(text);
969
+ }
970
+ }
971
+ }
972
+ ));
973
+ };
974
+ Field.ParentId = ParentId;
975
+ const Children = ({
976
+ label,
977
+ desc,
978
+ labelClassName,
979
+ selectClassName,
980
+ className,
981
+ nullable,
982
+ disabled,
983
+ initArgs,
984
+ sliceName,
985
+ value,
986
+ onChange,
987
+ onSearch,
988
+ sortOption,
989
+ renderOption,
990
+ renderSelected = renderOption
991
+ }) => {
992
+ const refName = import_store.st.slice[sliceName].refName;
993
+ const [modelName, ModelName] = [(0, import_common.lowerlize)(refName), (0, import_common.capitalize)(refName)];
994
+ const storeUse = import_store.st.use;
995
+ const storeDo = import_store.st.do;
996
+ const storeGet = import_store.st.get;
997
+ const names = {
998
+ model: modelName,
999
+ modelList: `${modelName}List`,
1000
+ modelListLoading: `${modelName}ListLoading`,
1001
+ initModel: `init${ModelName}`
1002
+ };
1003
+ const namesOfSlice = {
1004
+ modelList: sliceName.replace(names.model, names.modelList),
1005
+ modelListLoading: sliceName.replace(names.model, names.modelListLoading),
1006
+ initModel: sliceName.replace(names.model, names.initModel)
1007
+ };
1008
+ const modelList = storeUse[namesOfSlice.modelList]();
1009
+ const modelListLoading = storeUse[namesOfSlice.modelListLoading]();
1010
+ (0, import_react.useEffect)(() => {
1011
+ if (!disabled)
1012
+ void storeDo[namesOfSlice.initModel](...initArgs ?? []);
1013
+ }, []);
1014
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
1015
+ import_Select.Select,
1016
+ {
1017
+ searchable: true,
1018
+ desc,
1019
+ label,
1020
+ labelClassName,
1021
+ selectClassName,
1022
+ multiple: true,
1023
+ value: value.map((model) => model.id),
1024
+ options: modelList.map((model) => model.id),
1025
+ renderOption: (modelId) => {
1026
+ const model = modelList.get(modelId);
1027
+ if (!model)
1028
+ return null;
1029
+ return renderOption(model);
1030
+ },
1031
+ renderSelected: (modelId) => {
1032
+ const model = modelList.get(modelId);
1033
+ if (!model)
1034
+ return null;
1035
+ return renderSelected(model);
1036
+ },
1037
+ onChange: (modelIds) => {
1038
+ onChange(modelIds.map((id) => modelList.get(id)).filter((model) => model !== void 0));
1039
+ },
1040
+ onSearch: (text) => {
1041
+ if (text) {
1042
+ onSearch?.(text);
1043
+ }
1044
+ }
1045
+ }
1046
+ ));
1047
+ };
1048
+ Field.Children = Children;
1049
+ const ChildrenId = ({
1050
+ label,
1051
+ desc,
1052
+ labelClassName,
1053
+ className,
1054
+ nullable,
1055
+ disabled,
1056
+ initArgs,
1057
+ sliceName,
1058
+ value,
1059
+ onChange,
1060
+ onSearch,
1061
+ sortOption,
1062
+ renderOption
1063
+ }) => {
1064
+ const refName = import_store.st.slice[sliceName].refName;
1065
+ const [modelName, ModelName] = [(0, import_common.lowerlize)(refName), (0, import_common.capitalize)(refName)];
1066
+ const storeUse = import_store.st.use;
1067
+ const storeDo = import_store.st.do;
1068
+ const storeGet = import_store.st.get;
1069
+ const names = {
1070
+ model: modelName,
1071
+ modelList: `${modelName}List`,
1072
+ modelListLoading: `${modelName}ListLoading`,
1073
+ initModel: `init${ModelName}`
1074
+ };
1075
+ const namesOfSlice = {
1076
+ modelList: sliceName.replace(names.model, names.modelList),
1077
+ modelListLoading: sliceName.replace(names.model, names.modelListLoading),
1078
+ initModel: sliceName.replace(names.model, names.initModel)
1079
+ };
1080
+ const modelList = storeUse[namesOfSlice.modelList]();
1081
+ const modelListLoading = storeUse[namesOfSlice.modelListLoading]();
1082
+ return /* @__PURE__ */ React.createElement("div", { className: (0, import_client.clsx)("flex flex-col", className) }, label ? /* @__PURE__ */ React.createElement(Label, { className: labelClassName, nullable, label, desc }) : null, /* @__PURE__ */ React.createElement(
1083
+ import_Select.Select,
1084
+ {
1085
+ searchable: true,
1086
+ desc,
1087
+ label,
1088
+ labelClassName,
1089
+ multiple: true,
1090
+ value,
1091
+ options: modelList.map((model) => ({ label: model.id, value: model.id })),
1092
+ renderOption: (renderId) => {
1093
+ const model = modelList.get(renderId);
1094
+ if (!model)
1095
+ return null;
1096
+ return renderOption(model);
1097
+ },
1098
+ onChange: (modelIds) => {
1099
+ onChange(modelIds);
1100
+ },
1101
+ onSearch: (text) => {
1102
+ if (text) {
1103
+ onSearch?.(text);
1104
+ }
1105
+ }
1106
+ }
1107
+ ));
1108
+ };
1109
+ Field.ChildrenId = ChildrenId;