@rytass/bpm-core-react 0.2.0

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 (443) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +56 -0
  3. package/dist/AdminDelegationsView.css +1 -0
  4. package/dist/AdminOrgsView.css +1 -0
  5. package/dist/AdminUsersView.css +1 -0
  6. package/dist/DelegationsView.css +1 -0
  7. package/dist/InstanceDetailView.css +1 -0
  8. package/dist/LoginView.css +1 -0
  9. package/dist/SettingsNotificationsView.css +1 -0
  10. package/dist/admin-pickers.css +1 -0
  11. package/dist/app-navigation.css +1 -0
  12. package/dist/approval-instance-list-page.css +1 -0
  13. package/dist/auth-provider.css +1 -0
  14. package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs +2 -0
  15. package/dist/chunks/AdminDelegationsView-CqNmlVWx.cjs.map +1 -0
  16. package/dist/chunks/AdminDelegationsView-DydMZ9ED.js +642 -0
  17. package/dist/chunks/AdminDelegationsView-DydMZ9ED.js.map +1 -0
  18. package/dist/chunks/AdminOrgsView-DZaVAbaQ.js +1945 -0
  19. package/dist/chunks/AdminOrgsView-DZaVAbaQ.js.map +1 -0
  20. package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs +2 -0
  21. package/dist/chunks/AdminOrgsView-bSsIyMvk.cjs.map +1 -0
  22. package/dist/chunks/AdminUsersView-C0oO05Br.js +215 -0
  23. package/dist/chunks/AdminUsersView-C0oO05Br.js.map +1 -0
  24. package/dist/chunks/AdminUsersView-DlArLlIr.cjs +2 -0
  25. package/dist/chunks/AdminUsersView-DlArLlIr.cjs.map +1 -0
  26. package/dist/chunks/CcView-BsVsya5F.cjs +2 -0
  27. package/dist/chunks/CcView-BsVsya5F.cjs.map +1 -0
  28. package/dist/chunks/CcView-Bv0GzA5C.js +19 -0
  29. package/dist/chunks/CcView-Bv0GzA5C.js.map +1 -0
  30. package/dist/chunks/DashboardView-Dk1ZQmmk.js +11 -0
  31. package/dist/chunks/DashboardView-Dk1ZQmmk.js.map +1 -0
  32. package/dist/chunks/DashboardView-_0zh-rxT.cjs +2 -0
  33. package/dist/chunks/DashboardView-_0zh-rxT.cjs.map +1 -0
  34. package/dist/chunks/DelegationsView-DQUqOUV5.js +569 -0
  35. package/dist/chunks/DelegationsView-DQUqOUV5.js.map +1 -0
  36. package/dist/chunks/DelegationsView-pKeFV2LN.cjs +2 -0
  37. package/dist/chunks/DelegationsView-pKeFV2LN.cjs.map +1 -0
  38. package/dist/chunks/FormBuilderView-BKtyW55e.cjs +3 -0
  39. package/dist/chunks/FormBuilderView-BKtyW55e.cjs.map +1 -0
  40. package/dist/chunks/FormBuilderView-CvChAvgD.js +1300 -0
  41. package/dist/chunks/FormBuilderView-CvChAvgD.js.map +1 -0
  42. package/dist/chunks/FormRendererView-BwVsH2eX.cjs +2 -0
  43. package/dist/chunks/FormRendererView-BwVsH2eX.cjs.map +1 -0
  44. package/dist/chunks/FormRendererView-DrHsuSVo.js +220 -0
  45. package/dist/chunks/FormRendererView-DrHsuSVo.js.map +1 -0
  46. package/dist/chunks/FormsView-DYEuik8W.js +185 -0
  47. package/dist/chunks/FormsView-DYEuik8W.js.map +1 -0
  48. package/dist/chunks/FormsView-RjJEkIfZ.cjs +2 -0
  49. package/dist/chunks/FormsView-RjJEkIfZ.cjs.map +1 -0
  50. package/dist/chunks/InboxView-DDWwmWhA.cjs +2 -0
  51. package/dist/chunks/InboxView-DDWwmWhA.cjs.map +1 -0
  52. package/dist/chunks/InboxView-YSoyrYLk.js +291 -0
  53. package/dist/chunks/InboxView-YSoyrYLk.js.map +1 -0
  54. package/dist/chunks/InstanceDetailView-C-A-LOCG.js +1519 -0
  55. package/dist/chunks/InstanceDetailView-C-A-LOCG.js.map +1 -0
  56. package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs +2 -0
  57. package/dist/chunks/InstanceDetailView-l_kNDCz2.cjs.map +1 -0
  58. package/dist/chunks/InstanceNewView-B5hz-FWd.js +190 -0
  59. package/dist/chunks/InstanceNewView-B5hz-FWd.js.map +1 -0
  60. package/dist/chunks/InstanceNewView-CdCsxQIu.cjs +2 -0
  61. package/dist/chunks/InstanceNewView-CdCsxQIu.cjs.map +1 -0
  62. package/dist/chunks/LoginView-BED07v-7.cjs +2 -0
  63. package/dist/chunks/LoginView-BED07v-7.cjs.map +1 -0
  64. package/dist/chunks/LoginView-a1iu3cfc.js +157 -0
  65. package/dist/chunks/LoginView-a1iu3cfc.js.map +1 -0
  66. package/dist/chunks/RootClientView-rXJt4TDd.cjs +2 -0
  67. package/dist/chunks/RootClientView-rXJt4TDd.cjs.map +1 -0
  68. package/dist/chunks/RootClientView-wAkXUEZw.js +34 -0
  69. package/dist/chunks/RootClientView-wAkXUEZw.js.map +1 -0
  70. package/dist/chunks/SearchView-CgXPssgE.cjs +2 -0
  71. package/dist/chunks/SearchView-CgXPssgE.cjs.map +1 -0
  72. package/dist/chunks/SearchView-WXMbZwRw.js +19 -0
  73. package/dist/chunks/SearchView-WXMbZwRw.js.map +1 -0
  74. package/dist/chunks/SentView-BTDoFBrG.cjs +2 -0
  75. package/dist/chunks/SentView-BTDoFBrG.cjs.map +1 -0
  76. package/dist/chunks/SentView-CdOL92Rq.js +19 -0
  77. package/dist/chunks/SentView-CdOL92Rq.js.map +1 -0
  78. package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js +194 -0
  79. package/dist/chunks/SettingsNotificationsView-B6F6fa7U.js.map +1 -0
  80. package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs +2 -0
  81. package/dist/chunks/SettingsNotificationsView-Bnz0CmoJ.cjs.map +1 -0
  82. package/dist/chunks/TemplateCategoriesView-CgZciaSd.js +382 -0
  83. package/dist/chunks/TemplateCategoriesView-CgZciaSd.js.map +1 -0
  84. package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs +2 -0
  85. package/dist/chunks/TemplateCategoriesView-U0stGUBc.cjs.map +1 -0
  86. package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs +51 -0
  87. package/dist/chunks/TemplateDesignerView-A38DyYD4.cjs.map +1 -0
  88. package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js +2272 -0
  89. package/dist/chunks/TemplateDesignerView-Dffx-VZ-.js.map +1 -0
  90. package/dist/chunks/TemplateVersionsView-6sVQbBem.js +110 -0
  91. package/dist/chunks/TemplateVersionsView-6sVQbBem.js.map +1 -0
  92. package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs +2 -0
  93. package/dist/chunks/TemplateVersionsView-CMqw3ieU.cjs.map +1 -0
  94. package/dist/chunks/TemplatesView-BLj9f-XI.js +380 -0
  95. package/dist/chunks/TemplatesView-BLj9f-XI.js.map +1 -0
  96. package/dist/chunks/TemplatesView-DIOQTUUl.cjs +2 -0
  97. package/dist/chunks/TemplatesView-DIOQTUUl.cjs.map +1 -0
  98. package/dist/chunks/admin-pickers-Btvij1at.cjs +2 -0
  99. package/dist/chunks/admin-pickers-Btvij1at.cjs.map +1 -0
  100. package/dist/chunks/admin-pickers-DLlG_1du.js +140 -0
  101. package/dist/chunks/admin-pickers-DLlG_1du.js.map +1 -0
  102. package/dist/chunks/app-navigation-CATITRM7.js +263 -0
  103. package/dist/chunks/app-navigation-CATITRM7.js.map +1 -0
  104. package/dist/chunks/app-navigation-DAC5gFbG.cjs +2 -0
  105. package/dist/chunks/app-navigation-DAC5gFbG.cjs.map +1 -0
  106. package/dist/chunks/approval-instance-list-page-B6vAGvOb.js +278 -0
  107. package/dist/chunks/approval-instance-list-page-B6vAGvOb.js.map +1 -0
  108. package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs +2 -0
  109. package/dist/chunks/approval-instance-list-page-DIAmwhvl.cjs.map +1 -0
  110. package/dist/chunks/auth-provider-D2P-qWmY.cjs +2 -0
  111. package/dist/chunks/auth-provider-D2P-qWmY.cjs.map +1 -0
  112. package/dist/chunks/auth-provider-TTO9eNZV.js +83 -0
  113. package/dist/chunks/auth-provider-TTO9eNZV.js.map +1 -0
  114. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs +2 -0
  115. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -0
  116. package/dist/chunks/bpm-form-field-Cao0rMol.js +17 -0
  117. package/dist/chunks/bpm-form-field-Cao0rMol.js.map +1 -0
  118. package/dist/chunks/dashboard-page-BsW8t104.js +115 -0
  119. package/dist/chunks/dashboard-page-BsW8t104.js.map +1 -0
  120. package/dist/chunks/dashboard-page-udYhnyMW.cjs +2 -0
  121. package/dist/chunks/dashboard-page-udYhnyMW.cjs.map +1 -0
  122. package/dist/chunks/form-name-modal-C3OEvkCV.js +64 -0
  123. package/dist/chunks/form-name-modal-C3OEvkCV.js.map +1 -0
  124. package/dist/chunks/form-name-modal-uZCHbtRH.cjs +2 -0
  125. package/dist/chunks/form-name-modal-uZCHbtRH.cjs.map +1 -0
  126. package/dist/chunks/format-date-time-BQyH5U8z.cjs +2 -0
  127. package/dist/chunks/format-date-time-BQyH5U8z.cjs.map +1 -0
  128. package/dist/chunks/format-date-time-CB-LxzqT.js +9 -0
  129. package/dist/chunks/format-date-time-CB-LxzqT.js.map +1 -0
  130. package/dist/chunks/router-adapter-BdHZXLS3.js +23 -0
  131. package/dist/chunks/router-adapter-BdHZXLS3.js.map +1 -0
  132. package/dist/chunks/router-adapter-BybHrCNP.cjs +2 -0
  133. package/dist/chunks/router-adapter-BybHrCNP.cjs.map +1 -0
  134. package/dist/chunks/templates.module-B5bg_goX.js +8 -0
  135. package/dist/chunks/templates.module-B5bg_goX.js.map +1 -0
  136. package/dist/chunks/templates.module-ClRnQQX4.cjs +2 -0
  137. package/dist/chunks/templates.module-ClRnQQX4.cjs.map +1 -0
  138. package/dist/components/admin-pickers.d.ts +65 -0
  139. package/dist/components/app-navigation.d.ts +34 -0
  140. package/dist/components/approval-instance-list-page.d.ts +18 -0
  141. package/dist/components/bpm-form-field.d.ts +10 -0
  142. package/dist/components/dashboard-page.d.ts +10 -0
  143. package/dist/components/notification-drawer.d.ts +10 -0
  144. package/dist/components/org-unit-tree-draft-editor.d.ts +24 -0
  145. package/dist/components/pdf-preview.d.ts +12 -0
  146. package/dist/dashboard-page.css +1 -0
  147. package/dist/index.cjs +2 -0
  148. package/dist/index.cjs.map +1 -0
  149. package/dist/index.d.ts +12 -0
  150. package/dist/index.js +209 -0
  151. package/dist/index.js.map +1 -0
  152. package/dist/lib/auth-provider.d.ts +37 -0
  153. package/dist/lib/format-date-time.d.ts +5 -0
  154. package/dist/lib/notification-drawer-provider.d.ts +26 -0
  155. package/dist/lib/notification-unread-provider.d.ts +24 -0
  156. package/dist/lib/org-tree-draft.d.ts +27 -0
  157. package/dist/lib/providers.d.ts +30 -0
  158. package/dist/lib/router-adapter.d.ts +47 -0
  159. package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs +2 -0
  160. package/dist/pages/admin/delegations/AdminDelegationsClientView.cjs.map +1 -0
  161. package/dist/pages/admin/delegations/AdminDelegationsClientView.d.ts +3 -0
  162. package/dist/pages/admin/delegations/AdminDelegationsClientView.js +28 -0
  163. package/dist/pages/admin/delegations/AdminDelegationsClientView.js.map +1 -0
  164. package/dist/pages/admin/delegations/index.cjs +2 -0
  165. package/dist/pages/admin/delegations/index.cjs.map +1 -0
  166. package/dist/pages/admin/delegations/index.d.ts +4 -0
  167. package/dist/pages/admin/delegations/index.js +14 -0
  168. package/dist/pages/admin/delegations/index.js.map +1 -0
  169. package/dist/pages/admin/orgs/AdminOrgsClientView.cjs +2 -0
  170. package/dist/pages/admin/orgs/AdminOrgsClientView.cjs.map +1 -0
  171. package/dist/pages/admin/orgs/AdminOrgsClientView.d.ts +3 -0
  172. package/dist/pages/admin/orgs/AdminOrgsClientView.js +28 -0
  173. package/dist/pages/admin/orgs/AdminOrgsClientView.js.map +1 -0
  174. package/dist/pages/admin/orgs/index.cjs +2 -0
  175. package/dist/pages/admin/orgs/index.cjs.map +1 -0
  176. package/dist/pages/admin/orgs/index.d.ts +4 -0
  177. package/dist/pages/admin/orgs/index.js +14 -0
  178. package/dist/pages/admin/orgs/index.js.map +1 -0
  179. package/dist/pages/admin/users/AdminUsersClientView.cjs +2 -0
  180. package/dist/pages/admin/users/AdminUsersClientView.cjs.map +1 -0
  181. package/dist/pages/admin/users/AdminUsersClientView.d.ts +3 -0
  182. package/dist/pages/admin/users/AdminUsersClientView.js +28 -0
  183. package/dist/pages/admin/users/AdminUsersClientView.js.map +1 -0
  184. package/dist/pages/admin/users/index.cjs +2 -0
  185. package/dist/pages/admin/users/index.cjs.map +1 -0
  186. package/dist/pages/admin/users/index.d.ts +4 -0
  187. package/dist/pages/admin/users/index.js +14 -0
  188. package/dist/pages/admin/users/index.js.map +1 -0
  189. package/dist/pages/cc/CcClientView.cjs +2 -0
  190. package/dist/pages/cc/CcClientView.cjs.map +1 -0
  191. package/dist/pages/cc/CcClientView.d.ts +7 -0
  192. package/dist/pages/cc/CcClientView.js +28 -0
  193. package/dist/pages/cc/CcClientView.js.map +1 -0
  194. package/dist/pages/cc/index.cjs +2 -0
  195. package/dist/pages/cc/index.cjs.map +1 -0
  196. package/dist/pages/cc/index.d.ts +16 -0
  197. package/dist/pages/cc/index.js +11 -0
  198. package/dist/pages/cc/index.js.map +1 -0
  199. package/dist/pages/dashboard/DashboardClientView.cjs +2 -0
  200. package/dist/pages/dashboard/DashboardClientView.cjs.map +1 -0
  201. package/dist/pages/dashboard/DashboardClientView.d.ts +9 -0
  202. package/dist/pages/dashboard/DashboardClientView.js +28 -0
  203. package/dist/pages/dashboard/DashboardClientView.js.map +1 -0
  204. package/dist/pages/dashboard/index.cjs +2 -0
  205. package/dist/pages/dashboard/index.cjs.map +1 -0
  206. package/dist/pages/dashboard/index.d.ts +16 -0
  207. package/dist/pages/dashboard/index.js +11 -0
  208. package/dist/pages/dashboard/index.js.map +1 -0
  209. package/dist/pages/delegations/DelegationsClientView.cjs +2 -0
  210. package/dist/pages/delegations/DelegationsClientView.cjs.map +1 -0
  211. package/dist/pages/delegations/DelegationsClientView.d.ts +3 -0
  212. package/dist/pages/delegations/DelegationsClientView.js +28 -0
  213. package/dist/pages/delegations/DelegationsClientView.js.map +1 -0
  214. package/dist/pages/delegations/index.cjs +2 -0
  215. package/dist/pages/delegations/index.cjs.map +1 -0
  216. package/dist/pages/delegations/index.d.ts +4 -0
  217. package/dist/pages/delegations/index.js +14 -0
  218. package/dist/pages/delegations/index.js.map +1 -0
  219. package/dist/pages/forms/FormsClientView.cjs +2 -0
  220. package/dist/pages/forms/FormsClientView.cjs.map +1 -0
  221. package/dist/pages/forms/FormsClientView.d.ts +10 -0
  222. package/dist/pages/forms/FormsClientView.js +28 -0
  223. package/dist/pages/forms/FormsClientView.js.map +1 -0
  224. package/dist/pages/forms/builder/FormBuilderClientView.cjs +2 -0
  225. package/dist/pages/forms/builder/FormBuilderClientView.cjs.map +1 -0
  226. package/dist/pages/forms/builder/FormBuilderClientView.d.ts +11 -0
  227. package/dist/pages/forms/builder/FormBuilderClientView.js +28 -0
  228. package/dist/pages/forms/builder/FormBuilderClientView.js.map +1 -0
  229. package/dist/pages/forms/builder/index.cjs +2 -0
  230. package/dist/pages/forms/builder/index.cjs.map +1 -0
  231. package/dist/pages/forms/builder/index.d.ts +23 -0
  232. package/dist/pages/forms/builder/index.js +15 -0
  233. package/dist/pages/forms/builder/index.js.map +1 -0
  234. package/dist/pages/forms/index.cjs +2 -0
  235. package/dist/pages/forms/index.cjs.map +1 -0
  236. package/dist/pages/forms/index.d.ts +17 -0
  237. package/dist/pages/forms/index.js +14 -0
  238. package/dist/pages/forms/index.js.map +1 -0
  239. package/dist/pages/inbox/InboxClientView.cjs +2 -0
  240. package/dist/pages/inbox/InboxClientView.cjs.map +1 -0
  241. package/dist/pages/inbox/InboxClientView.d.ts +9 -0
  242. package/dist/pages/inbox/InboxClientView.js +28 -0
  243. package/dist/pages/inbox/InboxClientView.js.map +1 -0
  244. package/dist/pages/inbox/index.cjs +2 -0
  245. package/dist/pages/inbox/index.cjs.map +1 -0
  246. package/dist/pages/inbox/index.d.ts +16 -0
  247. package/dist/pages/inbox/index.js +11 -0
  248. package/dist/pages/inbox/index.js.map +1 -0
  249. package/dist/pages/instances/detail/InstanceDetailClientView.cjs +2 -0
  250. package/dist/pages/instances/detail/InstanceDetailClientView.cjs.map +1 -0
  251. package/dist/pages/instances/detail/InstanceDetailClientView.d.ts +9 -0
  252. package/dist/pages/instances/detail/InstanceDetailClientView.js +28 -0
  253. package/dist/pages/instances/detail/InstanceDetailClientView.js.map +1 -0
  254. package/dist/pages/instances/detail/index.cjs +2 -0
  255. package/dist/pages/instances/detail/index.cjs.map +1 -0
  256. package/dist/pages/instances/detail/index.d.ts +23 -0
  257. package/dist/pages/instances/detail/index.js +12 -0
  258. package/dist/pages/instances/detail/index.js.map +1 -0
  259. package/dist/pages/instances/new/InstanceNewClientView.cjs +2 -0
  260. package/dist/pages/instances/new/InstanceNewClientView.cjs.map +1 -0
  261. package/dist/pages/instances/new/InstanceNewClientView.d.ts +8 -0
  262. package/dist/pages/instances/new/InstanceNewClientView.js +28 -0
  263. package/dist/pages/instances/new/InstanceNewClientView.js.map +1 -0
  264. package/dist/pages/instances/new/index.cjs +2 -0
  265. package/dist/pages/instances/new/index.cjs.map +1 -0
  266. package/dist/pages/instances/new/index.d.ts +16 -0
  267. package/dist/pages/instances/new/index.js +11 -0
  268. package/dist/pages/instances/new/index.js.map +1 -0
  269. package/dist/pages/login/LoginClientView.cjs +2 -0
  270. package/dist/pages/login/LoginClientView.cjs.map +1 -0
  271. package/dist/pages/login/LoginClientView.d.ts +11 -0
  272. package/dist/pages/login/LoginClientView.js +29 -0
  273. package/dist/pages/login/LoginClientView.js.map +1 -0
  274. package/dist/pages/login/index.cjs +2 -0
  275. package/dist/pages/login/index.cjs.map +1 -0
  276. package/dist/pages/login/index.d.ts +17 -0
  277. package/dist/pages/login/index.js +14 -0
  278. package/dist/pages/login/index.js.map +1 -0
  279. package/dist/pages/root/RootClientView.cjs +1 -0
  280. package/dist/pages/root/RootClientView.d.ts +8 -0
  281. package/dist/pages/root/RootClientView.js +2 -0
  282. package/dist/pages/root/index.cjs +2 -0
  283. package/dist/pages/root/index.cjs.map +1 -0
  284. package/dist/pages/root/index.d.ts +16 -0
  285. package/dist/pages/root/index.js +11 -0
  286. package/dist/pages/root/index.js.map +1 -0
  287. package/dist/pages/search/SearchClientView.cjs +2 -0
  288. package/dist/pages/search/SearchClientView.cjs.map +1 -0
  289. package/dist/pages/search/SearchClientView.d.ts +7 -0
  290. package/dist/pages/search/SearchClientView.js +28 -0
  291. package/dist/pages/search/SearchClientView.js.map +1 -0
  292. package/dist/pages/search/index.cjs +2 -0
  293. package/dist/pages/search/index.cjs.map +1 -0
  294. package/dist/pages/search/index.d.ts +16 -0
  295. package/dist/pages/search/index.js +11 -0
  296. package/dist/pages/search/index.js.map +1 -0
  297. package/dist/pages/sent/SentClientView.cjs +2 -0
  298. package/dist/pages/sent/SentClientView.cjs.map +1 -0
  299. package/dist/pages/sent/SentClientView.d.ts +7 -0
  300. package/dist/pages/sent/SentClientView.js +28 -0
  301. package/dist/pages/sent/SentClientView.js.map +1 -0
  302. package/dist/pages/sent/index.cjs +2 -0
  303. package/dist/pages/sent/index.cjs.map +1 -0
  304. package/dist/pages/sent/index.d.ts +16 -0
  305. package/dist/pages/sent/index.js +11 -0
  306. package/dist/pages/sent/index.js.map +1 -0
  307. package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs +2 -0
  308. package/dist/pages/settings/notifications/SettingsNotificationsClientView.cjs.map +1 -0
  309. package/dist/pages/settings/notifications/SettingsNotificationsClientView.d.ts +3 -0
  310. package/dist/pages/settings/notifications/SettingsNotificationsClientView.js +28 -0
  311. package/dist/pages/settings/notifications/SettingsNotificationsClientView.js.map +1 -0
  312. package/dist/pages/settings/notifications/index.cjs +2 -0
  313. package/dist/pages/settings/notifications/index.cjs.map +1 -0
  314. package/dist/pages/settings/notifications/index.d.ts +4 -0
  315. package/dist/pages/settings/notifications/index.js +14 -0
  316. package/dist/pages/settings/notifications/index.js.map +1 -0
  317. package/dist/pages/templates/TemplatesClientView.cjs +2 -0
  318. package/dist/pages/templates/TemplatesClientView.cjs.map +1 -0
  319. package/dist/pages/templates/TemplatesClientView.d.ts +3 -0
  320. package/dist/pages/templates/TemplatesClientView.js +28 -0
  321. package/dist/pages/templates/TemplatesClientView.js.map +1 -0
  322. package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs +2 -0
  323. package/dist/pages/templates/categories/TemplateCategoriesClientView.cjs.map +1 -0
  324. package/dist/pages/templates/categories/TemplateCategoriesClientView.d.ts +3 -0
  325. package/dist/pages/templates/categories/TemplateCategoriesClientView.js +28 -0
  326. package/dist/pages/templates/categories/TemplateCategoriesClientView.js.map +1 -0
  327. package/dist/pages/templates/categories/index.cjs +2 -0
  328. package/dist/pages/templates/categories/index.cjs.map +1 -0
  329. package/dist/pages/templates/categories/index.d.ts +4 -0
  330. package/dist/pages/templates/categories/index.js +14 -0
  331. package/dist/pages/templates/categories/index.js.map +1 -0
  332. package/dist/pages/templates/designer/TemplateDesignerClientView.cjs +2 -0
  333. package/dist/pages/templates/designer/TemplateDesignerClientView.cjs.map +1 -0
  334. package/dist/pages/templates/designer/TemplateDesignerClientView.d.ts +3 -0
  335. package/dist/pages/templates/designer/TemplateDesignerClientView.js +28 -0
  336. package/dist/pages/templates/designer/TemplateDesignerClientView.js.map +1 -0
  337. package/dist/pages/templates/designer/index.cjs +2 -0
  338. package/dist/pages/templates/designer/index.cjs.map +1 -0
  339. package/dist/pages/templates/designer/index.d.ts +10 -0
  340. package/dist/pages/templates/designer/index.js +15 -0
  341. package/dist/pages/templates/designer/index.js.map +1 -0
  342. package/dist/pages/templates/index.cjs +2 -0
  343. package/dist/pages/templates/index.cjs.map +1 -0
  344. package/dist/pages/templates/index.d.ts +4 -0
  345. package/dist/pages/templates/index.js +14 -0
  346. package/dist/pages/templates/index.js.map +1 -0
  347. package/dist/pages/templates/versions/TemplateVersionsClientView.cjs +2 -0
  348. package/dist/pages/templates/versions/TemplateVersionsClientView.cjs.map +1 -0
  349. package/dist/pages/templates/versions/TemplateVersionsClientView.d.ts +3 -0
  350. package/dist/pages/templates/versions/TemplateVersionsClientView.js +28 -0
  351. package/dist/pages/templates/versions/TemplateVersionsClientView.js.map +1 -0
  352. package/dist/pages/templates/versions/index.cjs +2 -0
  353. package/dist/pages/templates/versions/index.cjs.map +1 -0
  354. package/dist/pages/templates/versions/index.d.ts +10 -0
  355. package/dist/pages/templates/versions/index.js +15 -0
  356. package/dist/pages/templates/versions/index.js.map +1 -0
  357. package/dist/templates.css +1 -0
  358. package/dist/views/admin/delegations/AdminDelegationsView.d.ts +5 -0
  359. package/dist/views/admin/delegations/index.cjs +1 -0
  360. package/dist/views/admin/delegations/index.d.ts +1 -0
  361. package/dist/views/admin/delegations/index.js +2 -0
  362. package/dist/views/admin/orgs/AdminOrgsView.d.ts +5 -0
  363. package/dist/views/admin/orgs/index.cjs +1 -0
  364. package/dist/views/admin/orgs/index.d.ts +1 -0
  365. package/dist/views/admin/orgs/index.js +2 -0
  366. package/dist/views/admin/users/AdminUsersView.d.ts +5 -0
  367. package/dist/views/admin/users/index.cjs +1 -0
  368. package/dist/views/admin/users/index.d.ts +1 -0
  369. package/dist/views/admin/users/index.js +2 -0
  370. package/dist/views/cc/CcView.d.ts +9 -0
  371. package/dist/views/cc/index.cjs +1 -0
  372. package/dist/views/cc/index.d.ts +1 -0
  373. package/dist/views/cc/index.js +2 -0
  374. package/dist/views/dashboard/DashboardView.d.ts +9 -0
  375. package/dist/views/dashboard/index.cjs +1 -0
  376. package/dist/views/dashboard/index.d.ts +1 -0
  377. package/dist/views/dashboard/index.js +2 -0
  378. package/dist/views/delegations/DelegationsView.d.ts +5 -0
  379. package/dist/views/delegations/index.cjs +1 -0
  380. package/dist/views/delegations/index.d.ts +1 -0
  381. package/dist/views/delegations/index.js +2 -0
  382. package/dist/views/forms/FormsView.d.ts +4 -0
  383. package/dist/views/forms/builder/FormBuilderView.d.ts +9 -0
  384. package/dist/views/forms/builder/index.cjs +1 -0
  385. package/dist/views/forms/builder/index.d.ts +1 -0
  386. package/dist/views/forms/builder/index.js +2 -0
  387. package/dist/views/forms/builder/json-code-editor.d.ts +11 -0
  388. package/dist/views/forms/form-name-modal.d.ts +12 -0
  389. package/dist/views/forms/index.cjs +1 -0
  390. package/dist/views/forms/index.d.ts +1 -0
  391. package/dist/views/forms/index.js +2 -0
  392. package/dist/views/forms/renderer/FormRendererView.d.ts +19 -0
  393. package/dist/views/forms/renderer/index.cjs +1 -0
  394. package/dist/views/forms/renderer/index.d.ts +1 -0
  395. package/dist/views/forms/renderer/index.js +2 -0
  396. package/dist/views/inbox/InboxView.d.ts +9 -0
  397. package/dist/views/inbox/index.cjs +1 -0
  398. package/dist/views/inbox/index.d.ts +1 -0
  399. package/dist/views/inbox/index.js +2 -0
  400. package/dist/views/instances/detail/InstanceDetailView.d.ts +12 -0
  401. package/dist/views/instances/detail/index.cjs +1 -0
  402. package/dist/views/instances/detail/index.d.ts +1 -0
  403. package/dist/views/instances/detail/index.js +2 -0
  404. package/dist/views/instances/new/InstanceNewView.d.ts +15 -0
  405. package/dist/views/instances/new/index.cjs +1 -0
  406. package/dist/views/instances/new/index.d.ts +1 -0
  407. package/dist/views/instances/new/index.js +2 -0
  408. package/dist/views/login/LoginView.d.ts +47 -0
  409. package/dist/views/login/index.cjs +1 -0
  410. package/dist/views/login/index.d.ts +1 -0
  411. package/dist/views/login/index.js +2 -0
  412. package/dist/views/root/RootView.d.ts +12 -0
  413. package/dist/views/root/index.d.ts +1 -0
  414. package/dist/views/search/SearchView.d.ts +9 -0
  415. package/dist/views/search/index.cjs +1 -0
  416. package/dist/views/search/index.d.ts +1 -0
  417. package/dist/views/search/index.js +2 -0
  418. package/dist/views/sent/SentView.d.ts +9 -0
  419. package/dist/views/sent/index.cjs +1 -0
  420. package/dist/views/sent/index.d.ts +1 -0
  421. package/dist/views/sent/index.js +2 -0
  422. package/dist/views/settings/notifications/SettingsNotificationsView.d.ts +5 -0
  423. package/dist/views/settings/notifications/index.cjs +1 -0
  424. package/dist/views/settings/notifications/index.d.ts +1 -0
  425. package/dist/views/settings/notifications/index.js +2 -0
  426. package/dist/views/templates/TemplatesView.d.ts +5 -0
  427. package/dist/views/templates/categories/TemplateCategoriesView.d.ts +5 -0
  428. package/dist/views/templates/categories/index.cjs +1 -0
  429. package/dist/views/templates/categories/index.d.ts +1 -0
  430. package/dist/views/templates/categories/index.js +2 -0
  431. package/dist/views/templates/designer/TemplateDesignerView.d.ts +6 -0
  432. package/dist/views/templates/designer/index.cjs +1 -0
  433. package/dist/views/templates/designer/index.d.ts +1 -0
  434. package/dist/views/templates/designer/index.js +2 -0
  435. package/dist/views/templates/index.cjs +1 -0
  436. package/dist/views/templates/index.d.ts +1 -0
  437. package/dist/views/templates/index.js +2 -0
  438. package/dist/views/templates/template-name-modal.d.ts +22 -0
  439. package/dist/views/templates/versions/TemplateVersionsView.d.ts +6 -0
  440. package/dist/views/templates/versions/index.cjs +1 -0
  441. package/dist/views/templates/versions/index.d.ts +1 -0
  442. package/dist/views/templates/versions/index.js +2 -0
  443. package/package.json +272 -0
package/dist/index.js ADDED
@@ -0,0 +1,209 @@
1
+ "use client";
2
+ import { n as e, r as t, t as n } from "./chunks/router-adapter-BdHZXLS3.js";
3
+ import { n as r, t as i } from "./chunks/auth-provider-TTO9eNZV.js";
4
+ import { t as a } from "./chunks/format-date-time-CB-LxzqT.js";
5
+ import { a as o, i as s, n as c, r as l, t as u } from "./chunks/app-navigation-CATITRM7.js";
6
+ import { a as d, i as f, n as p, o as m, r as h, t as g } from "./chunks/admin-pickers-DLlG_1du.js";
7
+ import { t as _ } from "./chunks/approval-instance-list-page-B6vAGvOb.js";
8
+ import { t as v } from "./chunks/bpm-form-field-Cao0rMol.js";
9
+ import { t as y } from "./chunks/dashboard-page-BsW8t104.js";
10
+ import { Fragment as b, useCallback as x, useEffect as S, useMemo as C, useState as w } from "react";
11
+ import { jsx as T, jsxs as E } from "react/jsx-runtime";
12
+ import { listNotifications as D, markAllNotificationsRead as O, markNotificationRead as k } from "@rytass/bpm-core-client/workflow";
13
+ import { CalendarConfigProviderMoment as A, CalendarLocale as j } from "@mezzanine-ui/react/moment";
14
+ import M from "@mezzanine-ui/react/Drawer";
15
+ import N from "@mezzanine-ui/react/NotificationCenter";
16
+ //#region src/components/notification-drawer.tsx
17
+ var P = [
18
+ "today",
19
+ "yesterday",
20
+ "past7Days",
21
+ "earlier"
22
+ ], F = {
23
+ earlier: "更早",
24
+ past7Days: "過去七天",
25
+ today: "今天",
26
+ yesterday: "昨天"
27
+ }, I = 50;
28
+ function L() {
29
+ let e = t(), { member: n } = r(), { close: i, isOpen: a } = o(), { refreshUnreadCount: s } = l(), c = n?.memberId ?? null, [u, d] = w([]), [f, p] = w(0), [m, h] = w(1), [g, _] = w(!1), [v, y] = w(!1), [A, j] = w(null), [L, V] = w("all"), H = x(async (e, t) => {
30
+ if (c) {
31
+ _(!0), j(null);
32
+ try {
33
+ let n = await D({
34
+ includeRead: !0,
35
+ page: e,
36
+ pageSize: I,
37
+ recipientMemberId: c
38
+ });
39
+ d((e) => t ? [...e, ...n.notifications] : n.notifications), p(n.totalCount), h(e), await s();
40
+ } catch (e) {
41
+ j(B(e));
42
+ } finally {
43
+ _(!1);
44
+ }
45
+ }
46
+ }, [c, s]);
47
+ S(() => {
48
+ !a || !c || H(1, !1);
49
+ }, [
50
+ a,
51
+ c,
52
+ H
53
+ ]);
54
+ let U = x((e) => {
55
+ let t = e.target.value;
56
+ (t === "all" || t === "read" || t === "unread") && V(t);
57
+ }, []), W = x(async () => {
58
+ if (!(!c || v)) {
59
+ y(!0), j(null);
60
+ try {
61
+ await O({ recipientMemberId: c }), await H(1, !1);
62
+ } catch (e) {
63
+ j(B(e));
64
+ } finally {
65
+ y(!1);
66
+ }
67
+ }
68
+ }, [
69
+ v,
70
+ c,
71
+ H
72
+ ]), G = x(() => {
73
+ g || H(m + 1, !0);
74
+ }, [
75
+ g,
76
+ H,
77
+ m
78
+ ]), K = x(async (e) => {
79
+ if (c) try {
80
+ await k({
81
+ id: e,
82
+ readerMemberId: c
83
+ }), await H(1, !1);
84
+ } catch (e) {
85
+ j(B(e));
86
+ }
87
+ }, [c, H]), q = x(async (t) => {
88
+ if (!(!t.instanceId || !c)) try {
89
+ t.status !== "READ" && (await k({
90
+ id: t.id,
91
+ readerMemberId: c
92
+ }), await s()), i(), e.push(`/instances/${t.instanceId}`);
93
+ } catch (e) {
94
+ j(B(e));
95
+ }
96
+ }, [
97
+ i,
98
+ c,
99
+ s,
100
+ e
101
+ ]), J = C(() => u.filter((e) => L === "all" ? !0 : L === "read" ? e.status === "READ" : e.status !== "READ"), [L, u]), Y = C(() => {
102
+ let e = /* @__PURE__ */ new Date(), t = P.reduce((e, t) => (e[t] = [], e), {
103
+ earlier: [],
104
+ past7Days: [],
105
+ today: [],
106
+ yesterday: []
107
+ });
108
+ return J.forEach((n) => {
109
+ t[z(n.createdAt, e)].push(n);
110
+ }), P.map((e) => [e, t[e]]).filter(([, e]) => e.length > 0);
111
+ }, [J]), X = u.length < f;
112
+ return c ? /* @__PURE__ */ T(M, {
113
+ bottomGhostActionDisabled: v || g,
114
+ bottomGhostActionLoading: v,
115
+ bottomGhostActionText: "全部標為已讀",
116
+ bottomOnGhostActionClick: () => {
117
+ W();
118
+ },
119
+ bottomOnPrimaryActionClick: () => {
120
+ G();
121
+ },
122
+ bottomPrimaryActionDisabled: !X || g,
123
+ bottomPrimaryActionLoading: g && X,
124
+ bottomPrimaryActionText: X ? "載入更多" : "已顯示全部",
125
+ contentKey: `${L}:${u.length}`,
126
+ filterAreaAllRadioLabel: "全部",
127
+ filterAreaOnRadioChange: U,
128
+ filterAreaReadRadioLabel: "已讀",
129
+ filterAreaShow: !0,
130
+ filterAreaUnreadRadioLabel: "未讀",
131
+ filterAreaValue: L,
132
+ headerTitle: "通知中心",
133
+ isBottomDisplay: !0,
134
+ isHeaderDisplay: !0,
135
+ onClose: i,
136
+ open: a,
137
+ size: "medium",
138
+ children: /* @__PURE__ */ E("div", {
139
+ role: "list",
140
+ children: [
141
+ A ? /* @__PURE__ */ T("p", {
142
+ role: "alert",
143
+ style: {
144
+ color: "var(--mzn-color-text-error, #d92d20)",
145
+ padding: "12px 16px"
146
+ },
147
+ children: A
148
+ }) : null,
149
+ Y.length === 0 ? /* @__PURE__ */ T("p", {
150
+ style: {
151
+ color: "var(--mzn-color-text-secondary, #6b7280)",
152
+ padding: "24px 16px",
153
+ textAlign: "center"
154
+ },
155
+ children: g ? "載入中…" : "目前沒有通知"
156
+ }) : null,
157
+ Y.map(([e, t], n) => /* @__PURE__ */ T(b, { children: t.map((r, i) => /* @__PURE__ */ T(N, {
158
+ appendTips: n === Y.length - 1 && i === t.length - 1 && !X ? "已顯示全部通知" : void 0,
159
+ cancelButtonText: r.status === "READ" ? void 0 : "標為已讀",
160
+ description: r.body,
161
+ onCancel: r.status === "READ" ? void 0 : () => {
162
+ K(r.id);
163
+ },
164
+ onConfirm: r.instanceId ? () => {
165
+ q(r);
166
+ } : void 0,
167
+ confirmButtonText: r.instanceId ? "查看案件" : void 0,
168
+ prependTips: i === 0 ? F[e] : void 0,
169
+ reference: r.id,
170
+ severity: R(r.type),
171
+ showBadge: r.status !== "READ",
172
+ timeStamp: r.createdAt,
173
+ title: r.title,
174
+ type: "drawer"
175
+ }, r.id)) }, e))
176
+ ]
177
+ })
178
+ }) : null;
179
+ }
180
+ function R(e) {
181
+ return e === "SLA_OVERDUE" ? "error" : e === "SLA_WARNING" ? "warning" : e === "INSTANCE_COMPLETED" ? "success" : "info";
182
+ }
183
+ function z(e, t) {
184
+ let n = new Date(e);
185
+ if (Number.isNaN(n.getTime())) return "earlier";
186
+ let r = new Date(t.getFullYear(), t.getMonth(), t.getDate()), i = new Date(n.getFullYear(), n.getMonth(), n.getDate());
187
+ if (i.getTime() === r.getTime()) return "today";
188
+ let a = new Date(r);
189
+ return a.setDate(a.getDate() - 1), i.getTime() === a.getTime() ? "yesterday" : (t.getTime() - n.getTime()) / (1e3 * 60 * 60 * 24) <= 7 ? "past7Days" : "earlier";
190
+ }
191
+ function B(e) {
192
+ return e instanceof Error ? e.message : "發生未知錯誤";
193
+ }
194
+ //#endregion
195
+ //#region src/lib/providers.tsx
196
+ function V({ children: e, locale: t = j.ZH_TW, publicPaths: n, loginPath: r }) {
197
+ return /* @__PURE__ */ T(A, {
198
+ locale: t,
199
+ children: /* @__PURE__ */ T(i, {
200
+ publicPaths: n,
201
+ loginPath: r,
202
+ children: /* @__PURE__ */ T(c, { children: /* @__PURE__ */ E(s, { children: [e, /* @__PURE__ */ T(L, {})] }) })
203
+ })
204
+ });
205
+ }
206
+ //#endregion
207
+ export { u as AppNavigation, _ as ApprovalInstanceListPage, i as AuthProvider, v as BPMFormField, y as DashboardPage, g as MemberPicker, L as NotificationDrawer, s as NotificationDrawerProvider, c as NotificationUnreadProvider, p as OrgUnitPicker, h as PositionPicker, V as Providers, n as RouterAdapterProvider, e as defaultBrowserSearchParams, a as formatDateTime, f as readMemberOption, d as readOrgUnitOption, m as readPositionOption, r as useAuth, o as useNotificationDrawer, l as useNotificationUnread, t as useRouterAdapter };
208
+
209
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/components/notification-drawer.tsx","../src/lib/providers.tsx"],"sourcesContent":["'use client';\n\nimport {\n Fragment,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ChangeEvent,\n type ReactElement,\n} from 'react';\nimport Drawer from '@mezzanine-ui/react/Drawer';\nimport NotificationCenter from '@mezzanine-ui/react/NotificationCenter';\nimport type { NotificationSeverity } from '@mezzanine-ui/core/notification-center';\nimport {\n listNotifications,\n markAllNotificationsRead,\n markNotificationRead,\n type NotificationRecord,\n type NotificationType,\n} from '@rytass/bpm-core-client/workflow';\nimport { useAuth } from '../lib/auth-provider';\nimport { useNotificationDrawer } from '../lib/notification-drawer-provider';\nimport { useNotificationUnread } from '../lib/notification-unread-provider';\nimport { useRouterAdapter } from '../lib/router-adapter';\n\ntype FilterValue = 'all' | 'read' | 'unread';\n\ntype TimeGroup = 'today' | 'yesterday' | 'past7Days' | 'earlier';\n\nconst TIME_GROUP_ORDER: readonly TimeGroup[] = [\n 'today',\n 'yesterday',\n 'past7Days',\n 'earlier',\n];\n\nconst TIME_GROUP_LABEL: Readonly<Record<TimeGroup, string>> = {\n earlier: '更早',\n past7Days: '過去七天',\n today: '今天',\n yesterday: '昨天',\n};\n\nconst PAGE_SIZE = 50;\n\n/**\n * Right-side notification drawer mounted at the root by `<Providers>`.\n * Opens / closes via `useNotificationDrawer()`, polls\n * `listNotifications()` for the current member, supports filter\n * (`all` / `read` / `unread`), per-row mark-read, bulk mark-all-read, and\n * load-more pagination. Clicking a row with an `instanceId` navigates to\n * `/instances/<id>` via the host's router adapter.\n */\nexport function NotificationDrawer(): ReactElement | null {\n const router = useRouterAdapter();\n const { member } = useAuth();\n const { close, isOpen } = useNotificationDrawer();\n const { refreshUnreadCount } = useNotificationUnread();\n const currentMemberId = member?.memberId ?? null;\n const [rows, setRows] = useState<readonly NotificationRecord[]>([]);\n const [totalCount, setTotalCount] = useState(0);\n const [page, setPage] = useState(1);\n const [loading, setLoading] = useState(false);\n const [bulkLoading, setBulkLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const [filter, setFilter] = useState<FilterValue>('all');\n\n const loadPage = useCallback(\n async (nextPage: number, append: boolean): Promise<void> => {\n if (!currentMemberId) return;\n setLoading(true);\n setError(null);\n try {\n const result = await listNotifications({\n includeRead: true,\n page: nextPage,\n pageSize: PAGE_SIZE,\n recipientMemberId: currentMemberId,\n });\n setRows((current): readonly NotificationRecord[] =>\n append ? [...current, ...result.notifications] : result.notifications,\n );\n setTotalCount(result.totalCount);\n setPage(nextPage);\n await refreshUnreadCount();\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n } finally {\n setLoading(false);\n }\n },\n [currentMemberId, refreshUnreadCount],\n );\n\n useEffect((): void => {\n if (!isOpen || !currentMemberId) return;\n void loadPage(1, false);\n }, [isOpen, currentMemberId, loadPage]);\n\n const handleFilterChange = useCallback(\n (event: ChangeEvent<HTMLInputElement>): void => {\n const next = event.target.value;\n if (next === 'all' || next === 'read' || next === 'unread') setFilter(next);\n },\n [],\n );\n\n const handleMarkAllRead = useCallback(async (): Promise<void> => {\n if (!currentMemberId || bulkLoading) return;\n setBulkLoading(true);\n setError(null);\n try {\n await markAllNotificationsRead({ recipientMemberId: currentMemberId });\n await loadPage(1, false);\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n } finally {\n setBulkLoading(false);\n }\n }, [bulkLoading, currentMemberId, loadPage]);\n\n const handleLoadMore = useCallback((): void => {\n if (loading) return;\n void loadPage(page + 1, true);\n }, [loading, loadPage, page]);\n\n const handleMarkRead = useCallback(\n async (id: string): Promise<void> => {\n if (!currentMemberId) return;\n try {\n await markNotificationRead({ id, readerMemberId: currentMemberId });\n await loadPage(1, false);\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n }\n },\n [currentMemberId, loadPage],\n );\n\n const handleOpenInstance = useCallback(\n async (record: NotificationRecord): Promise<void> => {\n if (!record.instanceId || !currentMemberId) return;\n try {\n if (record.status !== 'READ') {\n await markNotificationRead({\n id: record.id,\n readerMemberId: currentMemberId,\n });\n await refreshUnreadCount();\n }\n close();\n router.push(`/instances/${record.instanceId}`);\n } catch (e: unknown) {\n setError(readErrorMessage(e));\n }\n },\n [close, currentMemberId, refreshUnreadCount, router],\n );\n\n const filteredRows = useMemo(\n (): readonly NotificationRecord[] =>\n rows.filter((row): boolean => {\n if (filter === 'all') return true;\n if (filter === 'read') return row.status === 'READ';\n return row.status !== 'READ';\n }),\n [filter, rows],\n );\n\n const groupedRows = useMemo(\n (): ReadonlyArray<readonly [TimeGroup, readonly NotificationRecord[]]> => {\n const now = new Date();\n const buckets = TIME_GROUP_ORDER.reduce<\n Record<TimeGroup, NotificationRecord[]>\n >(\n (accumulator, group) => {\n accumulator[group] = [];\n return accumulator;\n },\n { earlier: [], past7Days: [], today: [], yesterday: [] },\n );\n filteredRows.forEach((row): void => {\n buckets[resolveTimeGroup(row.createdAt, now)].push(row);\n });\n return TIME_GROUP_ORDER.map(\n (group) => [group, buckets[group]] as const,\n ).filter(([, items]) => items.length > 0);\n },\n [filteredRows],\n );\n\n const hasMore = rows.length < totalCount;\n\n if (!currentMemberId) return null;\n\n return (\n <Drawer\n bottomGhostActionDisabled={bulkLoading || loading}\n bottomGhostActionLoading={bulkLoading}\n bottomGhostActionText=\"全部標為已讀\"\n bottomOnGhostActionClick={(): void => {\n void handleMarkAllRead();\n }}\n bottomOnPrimaryActionClick={(): void => {\n handleLoadMore();\n }}\n bottomPrimaryActionDisabled={!hasMore || loading}\n bottomPrimaryActionLoading={loading && hasMore}\n bottomPrimaryActionText={hasMore ? '載入更多' : '已顯示全部'}\n contentKey={`${filter}:${rows.length}`}\n filterAreaAllRadioLabel=\"全部\"\n filterAreaOnRadioChange={handleFilterChange}\n filterAreaReadRadioLabel=\"已讀\"\n filterAreaShow\n filterAreaUnreadRadioLabel=\"未讀\"\n filterAreaValue={filter}\n headerTitle=\"通知中心\"\n isBottomDisplay\n isHeaderDisplay\n onClose={close}\n open={isOpen}\n size=\"medium\"\n >\n <div role=\"list\">\n {error ? (\n <p\n role=\"alert\"\n style={{\n color: 'var(--mzn-color-text-error, #d92d20)',\n padding: '12px 16px',\n }}\n >\n {error}\n </p>\n ) : null}\n {groupedRows.length === 0 ? (\n <p\n style={{\n color: 'var(--mzn-color-text-secondary, #6b7280)',\n padding: '24px 16px',\n textAlign: 'center',\n }}\n >\n {loading ? '載入中…' : '目前沒有通知'}\n </p>\n ) : null}\n {groupedRows.map(([group, items], groupIndex) => (\n <Fragment key={group}>\n {items.map((record, itemIndex) => (\n <NotificationCenter\n appendTips={\n groupIndex === groupedRows.length - 1 &&\n itemIndex === items.length - 1 &&\n !hasMore\n ? '已顯示全部通知'\n : undefined\n }\n cancelButtonText={\n record.status !== 'READ' ? '標為已讀' : undefined\n }\n description={record.body}\n key={record.id}\n onCancel={\n record.status !== 'READ'\n ? (): void => {\n void handleMarkRead(record.id);\n }\n : undefined\n }\n onConfirm={\n record.instanceId\n ? (): void => {\n void handleOpenInstance(record);\n }\n : undefined\n }\n confirmButtonText={record.instanceId ? '查看案件' : undefined}\n prependTips={itemIndex === 0 ? TIME_GROUP_LABEL[group] : undefined}\n reference={record.id}\n severity={toSeverity(record.type)}\n showBadge={record.status !== 'READ'}\n timeStamp={record.createdAt}\n title={record.title}\n type=\"drawer\"\n />\n ))}\n </Fragment>\n ))}\n </div>\n </Drawer>\n );\n}\n\nfunction toSeverity(type: NotificationType): NotificationSeverity {\n if (type === 'SLA_OVERDUE') return 'error';\n if (type === 'SLA_WARNING') return 'warning';\n if (type === 'INSTANCE_COMPLETED') return 'success';\n return 'info';\n}\n\nfunction resolveTimeGroup(value: string, now: Date): TimeGroup {\n const notificationDate = new Date(value);\n if (Number.isNaN(notificationDate.getTime())) return 'earlier';\n const nowStartOfDay = new Date(now.getFullYear(), now.getMonth(), now.getDate());\n const notificationStartOfDay = new Date(\n notificationDate.getFullYear(),\n notificationDate.getMonth(),\n notificationDate.getDate(),\n );\n if (notificationStartOfDay.getTime() === nowStartOfDay.getTime()) return 'today';\n const yesterdayStartOfDay = new Date(nowStartOfDay);\n yesterdayStartOfDay.setDate(yesterdayStartOfDay.getDate() - 1);\n if (notificationStartOfDay.getTime() === yesterdayStartOfDay.getTime())\n return 'yesterday';\n const diffInDays =\n (now.getTime() - notificationDate.getTime()) / (1000 * 60 * 60 * 24);\n if (diffInDays <= 7) return 'past7Days';\n return 'earlier';\n}\n\nfunction readErrorMessage(error: unknown): string {\n return error instanceof Error ? error.message : '發生未知錯誤';\n}\n","'use client';\n\nimport type { ReactElement, ReactNode } from 'react';\nimport {\n CalendarConfigProviderMoment,\n CalendarLocale,\n} from '@mezzanine-ui/react/moment';\nimport { AuthProvider } from './auth-provider';\nimport { NotificationDrawer } from '../components/notification-drawer';\nimport { NotificationDrawerProvider } from './notification-drawer-provider';\nimport { NotificationUnreadProvider } from './notification-unread-provider';\n\ninterface ProvidersProps {\n readonly children: ReactNode;\n /** Override Mezzanine calendar locale. Defaults to `CalendarLocale.ZH_TW`. */\n readonly locale?: CalendarLocale;\n /**\n * Public paths that should not trigger redirect to `/login` when there\n * is no session. Forwarded to `<AuthProvider>`. Defaults to `['/login']`.\n */\n readonly publicPaths?: readonly string[];\n /** Where to send unauthenticated users. Defaults to `'/login'`. */\n readonly loginPath?: string;\n}\n\n/**\n * One-stop BPM admin provider stack. Wires:\n *\n * - Mezzanine UI calendar locale (moment-based, `ZH_TW` by default)\n * - `<AuthProvider>` (BPM session via REST `/auth/*`)\n * - `<NotificationUnreadProvider>` (polls unread count)\n * - `<NotificationDrawerProvider>` (controls drawer open/close state)\n * - `<NotificationDrawer />` mounted at the root so the bell-icon button in\n * `<AppNavigation />` can open it.\n *\n * Consumer hosts wrap this **inside** a `<RouterAdapterProvider>` (provided\n * by the `pages/*` subpath shims when consuming via Next.js, or wired by\n * hand for other frameworks).\n */\nexport function Providers({\n children,\n locale = CalendarLocale.ZH_TW,\n publicPaths,\n loginPath,\n}: ProvidersProps): ReactElement {\n return (\n <CalendarConfigProviderMoment locale={locale}>\n <AuthProvider publicPaths={publicPaths} loginPath={loginPath}>\n <NotificationUnreadProvider>\n <NotificationDrawerProvider>\n {children}\n <NotificationDrawer />\n </NotificationDrawerProvider>\n </NotificationUnreadProvider>\n </AuthProvider>\n </CalendarConfigProviderMoment>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { ApiMember } from '../../libs/bpm-core-client/src/index.ts';
3
+ interface AuthContextValue {
4
+ readonly loading: boolean;
5
+ readonly member: ApiMember | null;
6
+ readonly login: (input: {
7
+ readonly identifier: string;
8
+ readonly password: string;
9
+ }) => Promise<ApiMember>;
10
+ readonly logout: () => Promise<void>;
11
+ readonly refresh: () => Promise<ApiMember | null>;
12
+ }
13
+ export interface AuthProviderProps {
14
+ readonly children: ReactNode;
15
+ /**
16
+ * Paths that should not redirect to `/login` when there is no session.
17
+ * Defaults to `['/login']`. Override when your host runs the login UI
18
+ * under a different path.
19
+ */
20
+ readonly publicPaths?: readonly string[];
21
+ /**
22
+ * Where to send unauthenticated users. Defaults to `'/login'`.
23
+ */
24
+ readonly loginPath?: string;
25
+ }
26
+ /**
27
+ * BPM auth context provider. Reads / writes the host BPM API session via
28
+ * `@rytass/bpm-core-client` (`loginApi` / `logoutApi` / `readApiCurrentMember`)
29
+ * and uses the host-supplied {@link useRouterAdapter} to redirect
30
+ * unauthenticated users.
31
+ */
32
+ export declare function AuthProvider({ children, publicPaths, loginPath, }: AuthProviderProps): ReactElement;
33
+ /**
34
+ * Access the BPM auth context. Throws when used outside `<AuthProvider>`.
35
+ */
36
+ export declare function useAuth(): AuthContextValue;
37
+ export {};
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Default BPM datetime formatter: `YYYY-MM-DD HH:mm:ss`. Returns `'-'` for
3
+ * `null` / `undefined` so list cells render a consistent placeholder.
4
+ */
5
+ export declare function formatDateTime(value: string | null | undefined): string;
@@ -0,0 +1,26 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ interface NotificationDrawerContextValue {
3
+ readonly close: () => void;
4
+ readonly isOpen: boolean;
5
+ readonly open: () => void;
6
+ readonly toggle: () => void;
7
+ }
8
+ interface NotificationDrawerProviderProps {
9
+ readonly children: ReactNode;
10
+ }
11
+ /**
12
+ * Controls the open/closed state of the BPM notification drawer. Wraps
13
+ * children with a context that `<NotificationDrawer />` reads to mount /
14
+ * hide itself, and that `<AppNavigation />` reads to open the drawer when
15
+ * the bell icon is clicked.
16
+ *
17
+ * When used outside this provider, the returned hook is a safe no-op so
18
+ * components don't crash in test or storybook environments.
19
+ */
20
+ export declare function NotificationDrawerProvider({ children, }: NotificationDrawerProviderProps): ReactElement;
21
+ /**
22
+ * Read the BPM notification drawer's open state and control helpers.
23
+ * Returns a no-op stub when used outside `<NotificationDrawerProvider>`.
24
+ */
25
+ export declare function useNotificationDrawer(): NotificationDrawerContextValue;
26
+ export {};
@@ -0,0 +1,24 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ interface NotificationUnreadContextValue {
3
+ readonly refreshUnreadCount: () => Promise<number>;
4
+ readonly unreadCount: number;
5
+ }
6
+ interface NotificationUnreadProviderProps {
7
+ readonly children: ReactNode;
8
+ }
9
+ /**
10
+ * Polls BPM for the current member's unread notification count via
11
+ * `readUnreadNotificationCount` and exposes it through context for
12
+ * `<AppNavigation />` (bell badge) and `<NotificationDrawer />` (header
13
+ * count). Refresh is triggered on mount and whenever the auth member id
14
+ * changes; consumers can call `refreshUnreadCount()` after acknowledging
15
+ * a notification.
16
+ */
17
+ export declare function NotificationUnreadProvider({ children, }: NotificationUnreadProviderProps): ReactElement;
18
+ /**
19
+ * Read the current unread-notification count and a manual refresh helper.
20
+ * Returns a zero/no-op stub when used outside
21
+ * `<NotificationUnreadProvider>`.
22
+ */
23
+ export declare function useNotificationUnread(): NotificationUnreadContextValue;
24
+ export {};
@@ -0,0 +1,27 @@
1
+ import { OrgUnitRecord } from '../../libs/bpm-core-client/src/lib/organization/index.ts';
2
+ export type OrgUnitParentDraftMap = ReadonlyMap<string, string | null>;
3
+ export type OrgUnitHierarchyDraftChange = Readonly<{
4
+ orgUnitId: string;
5
+ parentId: string | null;
6
+ previousParentId: string | null;
7
+ }>;
8
+ export type OrgUnitParentAssignmentResult = Readonly<{
9
+ message: string;
10
+ parentDraft: OrgUnitParentDraftMap;
11
+ status: 'INVALID' | 'UNCHANGED' | 'UPDATED';
12
+ }>;
13
+ export declare function createOrgUnitParentDraftMap(orgUnits: readonly OrgUnitRecord[]): OrgUnitParentDraftMap;
14
+ export declare function assignOrgUnitDraftParent({ orgUnitId, parentDraft, parentId, }: {
15
+ readonly orgUnitId: string;
16
+ readonly parentDraft: OrgUnitParentDraftMap;
17
+ readonly parentId: string | null;
18
+ }): OrgUnitParentAssignmentResult;
19
+ export declare function readOrgUnitHierarchyDraftChanges({ orgUnits, parentDraft, }: {
20
+ readonly orgUnits: readonly OrgUnitRecord[];
21
+ readonly parentDraft: OrgUnitParentDraftMap;
22
+ }): readonly OrgUnitHierarchyDraftChange[];
23
+ export declare function readOrgUnitParentValidationMessage({ orgUnitId, parentDraft, parentId, }: {
24
+ readonly orgUnitId: string;
25
+ readonly parentDraft: OrgUnitParentDraftMap;
26
+ readonly parentId: string | null;
27
+ }): string | null;
@@ -0,0 +1,30 @@
1
+ import { ReactElement, ReactNode } from 'react';
2
+ import { CalendarLocale } from '@mezzanine-ui/react/moment';
3
+ interface ProvidersProps {
4
+ readonly children: ReactNode;
5
+ /** Override Mezzanine calendar locale. Defaults to `CalendarLocale.ZH_TW`. */
6
+ readonly locale?: CalendarLocale;
7
+ /**
8
+ * Public paths that should not trigger redirect to `/login` when there
9
+ * is no session. Forwarded to `<AuthProvider>`. Defaults to `['/login']`.
10
+ */
11
+ readonly publicPaths?: readonly string[];
12
+ /** Where to send unauthenticated users. Defaults to `'/login'`. */
13
+ readonly loginPath?: string;
14
+ }
15
+ /**
16
+ * One-stop BPM admin provider stack. Wires:
17
+ *
18
+ * - Mezzanine UI calendar locale (moment-based, `ZH_TW` by default)
19
+ * - `<AuthProvider>` (BPM session via REST `/auth/*`)
20
+ * - `<NotificationUnreadProvider>` (polls unread count)
21
+ * - `<NotificationDrawerProvider>` (controls drawer open/close state)
22
+ * - `<NotificationDrawer />` mounted at the root so the bell-icon button in
23
+ * `<AppNavigation />` can open it.
24
+ *
25
+ * Consumer hosts wrap this **inside** a `<RouterAdapterProvider>` (provided
26
+ * by the `pages/*` subpath shims when consuming via Next.js, or wired by
27
+ * hand for other frameworks).
28
+ */
29
+ export declare function Providers({ children, locale, publicPaths, loginPath, }: ProvidersProps): ReactElement;
30
+ export {};
@@ -0,0 +1,47 @@
1
+ import { ReactNode } from 'react';
2
+ /**
3
+ * Framework-agnostic router contract every BPM view consumes.
4
+ *
5
+ * Next.js App Router consumers wire it from `useRouter()` / `usePathname()`,
6
+ * but the contract is intentionally generic so SPA / Remix / Tanstack Router
7
+ * hosts can plug in the same `<RouterAdapterProvider>` with their own
8
+ * navigation primitives.
9
+ */
10
+ export interface RouterAdapter {
11
+ /** Current pathname (e.g. "/inbox"). `null` during SSR before hydration. */
12
+ readonly pathname: string | null;
13
+ /** Navigate to `href` (push onto history). */
14
+ push(href: string): void;
15
+ /** Navigate to `href` and replace the current history entry. */
16
+ replace(href: string): void;
17
+ /** Optional: go back. Falls back to `history.back()` when omitted. */
18
+ back?(): void;
19
+ /**
20
+ * Optional search params accessor. Returned `URLSearchParams` should be
21
+ * read-only — mutating it does not navigate. Default implementation reads
22
+ * `window.location.search` on the client.
23
+ */
24
+ searchParams?(): URLSearchParams;
25
+ }
26
+ export interface RouterAdapterProviderProps {
27
+ readonly value: RouterAdapter;
28
+ readonly children: ReactNode;
29
+ }
30
+ /**
31
+ * Wraps the BPM React tree so `useRouterAdapter()` resolves to the host's
32
+ * navigation primitives. Consumers typically put this once at the very root
33
+ * of their layout (or inside a `'use client'` shim that reads
34
+ * `useRouter()` + `usePathname()` from `next/navigation`).
35
+ */
36
+ export declare function RouterAdapterProvider({ value, children, }: RouterAdapterProviderProps): React.ReactElement;
37
+ /**
38
+ * Reads the host-provided {@link RouterAdapter}. Throws when used outside a
39
+ * `<RouterAdapterProvider>` to surface wiring mistakes early.
40
+ */
41
+ export declare function useRouterAdapter(): RouterAdapter;
42
+ /**
43
+ * Pure default search-params reader for the browser. Server-side returns an
44
+ * empty `URLSearchParams`. Used internally when a {@link RouterAdapter}
45
+ * does not override `searchParams()`.
46
+ */
47
+ export declare function defaultBrowserSearchParams(): URLSearchParams;
@@ -0,0 +1,2 @@
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../../../chunks/router-adapter-BybHrCNP.cjs"),t=require("../../../chunks/AdminDelegationsView-CqNmlVWx.cjs");let n=require("react"),r=require("react/jsx-runtime"),i=require("next/navigation");function a(a={}){let o=(0,i.useRouter)(),s=(0,i.usePathname)(),c=(0,i.useSearchParams)();return(0,r.jsx)(e.t,{value:(0,n.useMemo)(()=>({pathname:s,push:e=>o.push(e),replace:e=>o.replace(e),back:()=>o.back(),searchParams:()=>new URLSearchParams(c?.toString()??``)}),[o,s,c]),children:(0,r.jsx)(t.t,{...a})})}exports.default=a;
2
+ //# sourceMappingURL=AdminDelegationsClientView.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminDelegationsClientView.cjs","names":[],"sources":["../../../../src/pages/admin/delegations/AdminDelegationsClientView.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, type ReactElement } from 'react';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\nimport {\n RouterAdapterProvider,\n type RouterAdapter,\n} from '../../../lib/router-adapter';\nimport {\n AdminDelegationsView,\n type AdminDelegationsViewProps,\n} from '../../../views/admin/delegations/AdminDelegationsView';\n\nexport default function AdminDelegationsClientView(\n props: AdminDelegationsViewProps = {},\n): ReactElement {\n const nextRouter = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n\n const adapter = useMemo<RouterAdapter>(\n () => ({\n pathname,\n push: (href: string): void => nextRouter.push(href),\n replace: (href: string): void => nextRouter.replace(href),\n back: (): void => nextRouter.back(),\n searchParams: (): URLSearchParams =>\n new URLSearchParams(searchParams?.toString() ?? ''),\n }),\n [nextRouter, pathname, searchParams],\n );\n\n return (\n <RouterAdapterProvider value={adapter}>\n <AdminDelegationsView {...props} />\n </RouterAdapterProvider>\n );\n}\n"],"mappings":"6TAaA,SAAwB,EACtB,EAAmC,CAAC,EACtB,CACd,IAAM,GAAA,EAAA,EAAA,WAAuB,EACvB,GAAA,EAAA,EAAA,aAAuB,EACvB,GAAA,EAAA,EAAA,iBAA+B,EAcrC,OACE,EAAA,EAAA,KAAC,EAAA,EAAD,CAAuB,OAAA,EAAA,EAAA,cAZhB,CACL,WACA,KAAO,GAAuB,EAAW,KAAK,CAAI,EAClD,QAAU,GAAuB,EAAW,QAAQ,CAAI,EACxD,SAAkB,EAAW,KAAK,EAClC,iBACE,IAAI,gBAAgB,GAAc,SAAS,GAAK,EAAE,CACtD,GACA,CAAC,EAAY,EAAU,CAAY,CAIL,YAC5B,EAAA,EAAA,KAAC,EAAA,EAAD,CAAsB,GAAI,CAAQ,CAAA,CACb,CAAA,CAE3B"}
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from 'react';
2
+ import { AdminDelegationsViewProps } from '../../../views/admin/delegations/AdminDelegationsView';
3
+ export default function AdminDelegationsClientView(props?: AdminDelegationsViewProps): ReactElement;
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { t as e } from "../../../chunks/router-adapter-BdHZXLS3.js";
3
+ import { t } from "../../../chunks/AdminDelegationsView-DydMZ9ED.js";
4
+ import { useMemo as n } from "react";
5
+ import { jsx as r } from "react/jsx-runtime";
6
+ import { usePathname as i, useRouter as a, useSearchParams as o } from "next/navigation";
7
+ //#region src/pages/admin/delegations/AdminDelegationsClientView.tsx
8
+ function s(s = {}) {
9
+ let c = a(), l = i(), u = o();
10
+ return /* @__PURE__ */ r(e, {
11
+ value: n(() => ({
12
+ pathname: l,
13
+ push: (e) => c.push(e),
14
+ replace: (e) => c.replace(e),
15
+ back: () => c.back(),
16
+ searchParams: () => new URLSearchParams(u?.toString() ?? "")
17
+ }), [
18
+ c,
19
+ l,
20
+ u
21
+ ]),
22
+ children: /* @__PURE__ */ r(t, { ...s })
23
+ });
24
+ }
25
+ //#endregion
26
+ export { s as default };
27
+
28
+ //# sourceMappingURL=AdminDelegationsClientView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminDelegationsClientView.js","names":[],"sources":["../../../../src/pages/admin/delegations/AdminDelegationsClientView.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, type ReactElement } from 'react';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\nimport {\n RouterAdapterProvider,\n type RouterAdapter,\n} from '../../../lib/router-adapter';\nimport {\n AdminDelegationsView,\n type AdminDelegationsViewProps,\n} from '../../../views/admin/delegations/AdminDelegationsView';\n\nexport default function AdminDelegationsClientView(\n props: AdminDelegationsViewProps = {},\n): ReactElement {\n const nextRouter = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n\n const adapter = useMemo<RouterAdapter>(\n () => ({\n pathname,\n push: (href: string): void => nextRouter.push(href),\n replace: (href: string): void => nextRouter.replace(href),\n back: (): void => nextRouter.back(),\n searchParams: (): URLSearchParams =>\n new URLSearchParams(searchParams?.toString() ?? ''),\n }),\n [nextRouter, pathname, searchParams],\n );\n\n return (\n <RouterAdapterProvider value={adapter}>\n <AdminDelegationsView {...props} />\n </RouterAdapterProvider>\n );\n}\n"],"mappings":";;;;;;;AAaA,SAAwB,EACtB,IAAmC,CAAC,GACtB;CACd,IAAM,IAAa,EAAU,GACvB,IAAW,EAAY,GACvB,IAAe,EAAgB;CAcrC,OACE,kBAAC,GAAD;EAAuB,OAbT,SACP;GACL;GACA,OAAO,MAAuB,EAAW,KAAK,CAAI;GAClD,UAAU,MAAuB,EAAW,QAAQ,CAAI;GACxD,YAAkB,EAAW,KAAK;GAClC,oBACE,IAAI,gBAAgB,GAAc,SAAS,KAAK,EAAE;EACtD,IACA;GAAC;GAAY;GAAU;EAAY,CAIL;YAC5B,kBAAC,GAAD,EAAsB,GAAI,EAAQ,CAAA;CACb,CAAA;AAE3B"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./AdminDelegationsClientView.cjs");let t=require("react/jsx-runtime");var n={title:`代理設定 | BPM Admin`,description:`設定簽核代理規則,讓符合範圍的待簽任務自動改派給代理人。`};function r(){return(0,t.jsx)(e.default,{})}exports.default=r,exports.metadata=n;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/pages/admin/delegations/index.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport type { ReactElement } from 'react';\nimport AdminDelegationsClientView from './AdminDelegationsClientView';\n\nexport const metadata: Metadata = {\n title: '代理設定 | BPM Admin',\n description: '設定簽核代理規則,讓符合範圍的待簽任務自動改派給代理人。',\n};\n\nexport default function AdminDelegationsPage(): ReactElement {\n return <AdminDelegationsClientView />;\n}\n"],"mappings":"sLAIA,IAAa,EAAqB,CAChC,MAAO,mBACP,YAAa,8BACf,EAEA,SAAwB,GAAqC,CAC3D,OAAO,EAAA,EAAA,KAAC,EAAA,QAAD,CAA6B,CAAA,CACtC"}
@@ -0,0 +1,4 @@
1
+ import { Metadata } from 'next';
2
+ import { ReactElement } from 'react';
3
+ export declare const metadata: Metadata;
4
+ export default function AdminDelegationsPage(): ReactElement;
@@ -0,0 +1,14 @@
1
+ import e from "./AdminDelegationsClientView.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/pages/admin/delegations/index.tsx
4
+ var n = {
5
+ title: "代理設定 | BPM Admin",
6
+ description: "設定簽核代理規則,讓符合範圍的待簽任務自動改派給代理人。"
7
+ };
8
+ function r() {
9
+ return /* @__PURE__ */ t(e, {});
10
+ }
11
+ //#endregion
12
+ export { r as default, n as metadata };
13
+
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/pages/admin/delegations/index.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport type { ReactElement } from 'react';\nimport AdminDelegationsClientView from './AdminDelegationsClientView';\n\nexport const metadata: Metadata = {\n title: '代理設定 | BPM Admin',\n description: '設定簽核代理規則,讓符合範圍的待簽任務自動改派給代理人。',\n};\n\nexport default function AdminDelegationsPage(): ReactElement {\n return <AdminDelegationsClientView />;\n}\n"],"mappings":";;;AAIA,IAAa,IAAqB;CAChC,OAAO;CACP,aAAa;AACf;AAEA,SAAwB,IAAqC;CAC3D,OAAO,kBAAC,GAAD,CAA6B,CAAA;AACtC"}
@@ -0,0 +1,2 @@
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../../../chunks/router-adapter-BybHrCNP.cjs"),t=require("../../../chunks/AdminOrgsView-bSsIyMvk.cjs");let n=require("react"),r=require("react/jsx-runtime"),i=require("next/navigation");function a(a={}){let o=(0,i.useRouter)(),s=(0,i.usePathname)(),c=(0,i.useSearchParams)();return(0,r.jsx)(e.t,{value:(0,n.useMemo)(()=>({pathname:s,push:e=>o.push(e),replace:e=>o.replace(e),back:()=>o.back(),searchParams:()=>new URLSearchParams(c?.toString()??``)}),[o,s,c]),children:(0,r.jsx)(t.t,{...a})})}exports.default=a;
2
+ //# sourceMappingURL=AdminOrgsClientView.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminOrgsClientView.cjs","names":[],"sources":["../../../../src/pages/admin/orgs/AdminOrgsClientView.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, type ReactElement } from 'react';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\nimport {\n RouterAdapterProvider,\n type RouterAdapter,\n} from '../../../lib/router-adapter';\nimport {\n AdminOrgsView,\n type AdminOrgsViewProps,\n} from '../../../views/admin/orgs/AdminOrgsView';\n\nexport default function AdminOrgsClientView(\n props: AdminOrgsViewProps = {},\n): ReactElement {\n const nextRouter = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n\n const adapter = useMemo<RouterAdapter>(\n () => ({\n pathname,\n push: (href: string): void => nextRouter.push(href),\n replace: (href: string): void => nextRouter.replace(href),\n back: (): void => nextRouter.back(),\n searchParams: (): URLSearchParams =>\n new URLSearchParams(searchParams?.toString() ?? ''),\n }),\n [nextRouter, pathname, searchParams],\n );\n\n return (\n <RouterAdapterProvider value={adapter}>\n <AdminOrgsView {...props} />\n </RouterAdapterProvider>\n );\n}\n"],"mappings":"sTAaA,SAAwB,EACtB,EAA4B,CAAC,EACf,CACd,IAAM,GAAA,EAAA,EAAA,WAAuB,EACvB,GAAA,EAAA,EAAA,aAAuB,EACvB,GAAA,EAAA,EAAA,iBAA+B,EAcrC,OACE,EAAA,EAAA,KAAC,EAAA,EAAD,CAAuB,OAAA,EAAA,EAAA,cAZhB,CACL,WACA,KAAO,GAAuB,EAAW,KAAK,CAAI,EAClD,QAAU,GAAuB,EAAW,QAAQ,CAAI,EACxD,SAAkB,EAAW,KAAK,EAClC,iBACE,IAAI,gBAAgB,GAAc,SAAS,GAAK,EAAE,CACtD,GACA,CAAC,EAAY,EAAU,CAAY,CAIL,YAC5B,EAAA,EAAA,KAAC,EAAA,EAAD,CAAe,GAAI,CAAQ,CAAA,CACN,CAAA,CAE3B"}
@@ -0,0 +1,3 @@
1
+ import { ReactElement } from 'react';
2
+ import { AdminOrgsViewProps } from '../../../views/admin/orgs/AdminOrgsView';
3
+ export default function AdminOrgsClientView(props?: AdminOrgsViewProps): ReactElement;
@@ -0,0 +1,28 @@
1
+ "use client";
2
+ import { t as e } from "../../../chunks/router-adapter-BdHZXLS3.js";
3
+ import { t } from "../../../chunks/AdminOrgsView-DZaVAbaQ.js";
4
+ import { useMemo as n } from "react";
5
+ import { jsx as r } from "react/jsx-runtime";
6
+ import { usePathname as i, useRouter as a, useSearchParams as o } from "next/navigation";
7
+ //#region src/pages/admin/orgs/AdminOrgsClientView.tsx
8
+ function s(s = {}) {
9
+ let c = a(), l = i(), u = o();
10
+ return /* @__PURE__ */ r(e, {
11
+ value: n(() => ({
12
+ pathname: l,
13
+ push: (e) => c.push(e),
14
+ replace: (e) => c.replace(e),
15
+ back: () => c.back(),
16
+ searchParams: () => new URLSearchParams(u?.toString() ?? "")
17
+ }), [
18
+ c,
19
+ l,
20
+ u
21
+ ]),
22
+ children: /* @__PURE__ */ r(t, { ...s })
23
+ });
24
+ }
25
+ //#endregion
26
+ export { s as default };
27
+
28
+ //# sourceMappingURL=AdminOrgsClientView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminOrgsClientView.js","names":[],"sources":["../../../../src/pages/admin/orgs/AdminOrgsClientView.tsx"],"sourcesContent":["'use client';\n\nimport { useMemo, type ReactElement } from 'react';\nimport { usePathname, useRouter, useSearchParams } from 'next/navigation';\nimport {\n RouterAdapterProvider,\n type RouterAdapter,\n} from '../../../lib/router-adapter';\nimport {\n AdminOrgsView,\n type AdminOrgsViewProps,\n} from '../../../views/admin/orgs/AdminOrgsView';\n\nexport default function AdminOrgsClientView(\n props: AdminOrgsViewProps = {},\n): ReactElement {\n const nextRouter = useRouter();\n const pathname = usePathname();\n const searchParams = useSearchParams();\n\n const adapter = useMemo<RouterAdapter>(\n () => ({\n pathname,\n push: (href: string): void => nextRouter.push(href),\n replace: (href: string): void => nextRouter.replace(href),\n back: (): void => nextRouter.back(),\n searchParams: (): URLSearchParams =>\n new URLSearchParams(searchParams?.toString() ?? ''),\n }),\n [nextRouter, pathname, searchParams],\n );\n\n return (\n <RouterAdapterProvider value={adapter}>\n <AdminOrgsView {...props} />\n </RouterAdapterProvider>\n );\n}\n"],"mappings":";;;;;;;AAaA,SAAwB,EACtB,IAA4B,CAAC,GACf;CACd,IAAM,IAAa,EAAU,GACvB,IAAW,EAAY,GACvB,IAAe,EAAgB;CAcrC,OACE,kBAAC,GAAD;EAAuB,OAbT,SACP;GACL;GACA,OAAO,MAAuB,EAAW,KAAK,CAAI;GAClD,UAAU,MAAuB,EAAW,QAAQ,CAAI;GACxD,YAAkB,EAAW,KAAK;GAClC,oBACE,IAAI,gBAAgB,GAAc,SAAS,KAAK,EAAE;EACtD,IACA;GAAC;GAAY;GAAU;EAAY,CAIL;YAC5B,kBAAC,GAAD,EAAe,GAAI,EAAQ,CAAA;CACN,CAAA;AAE3B"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("./AdminOrgsClientView.cjs");let t=require("react/jsx-runtime");var n={title:`組織管理 | BPM Admin`,description:`維護組織樹、職位、會員歸屬與簽核主管解析規則。`};function r(){return(0,t.jsx)(e.default,{})}exports.default=r,exports.metadata=n;
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.cjs","names":[],"sources":["../../../../src/pages/admin/orgs/index.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport type { ReactElement } from 'react';\nimport AdminOrgsClientView from './AdminOrgsClientView';\n\nexport const metadata: Metadata = {\n title: '組織管理 | BPM Admin',\n description: '維護組織樹、職位、會員歸屬與簽核主管解析規則。',\n};\n\nexport default function AdminOrgsPage(): ReactElement {\n return <AdminOrgsClientView />;\n}\n"],"mappings":"+KAIA,IAAa,EAAqB,CAChC,MAAO,mBACP,YAAa,yBACf,EAEA,SAAwB,GAA8B,CACpD,OAAO,EAAA,EAAA,KAAC,EAAA,QAAD,CAAsB,CAAA,CAC/B"}
@@ -0,0 +1,4 @@
1
+ import { Metadata } from 'next';
2
+ import { ReactElement } from 'react';
3
+ export declare const metadata: Metadata;
4
+ export default function AdminOrgsPage(): ReactElement;
@@ -0,0 +1,14 @@
1
+ import e from "./AdminOrgsClientView.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/pages/admin/orgs/index.tsx
4
+ var n = {
5
+ title: "組織管理 | BPM Admin",
6
+ description: "維護組織樹、職位、會員歸屬與簽核主管解析規則。"
7
+ };
8
+ function r() {
9
+ return /* @__PURE__ */ t(e, {});
10
+ }
11
+ //#endregion
12
+ export { r as default, n as metadata };
13
+
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/pages/admin/orgs/index.tsx"],"sourcesContent":["import type { Metadata } from 'next';\nimport type { ReactElement } from 'react';\nimport AdminOrgsClientView from './AdminOrgsClientView';\n\nexport const metadata: Metadata = {\n title: '組織管理 | BPM Admin',\n description: '維護組織樹、職位、會員歸屬與簽核主管解析規則。',\n};\n\nexport default function AdminOrgsPage(): ReactElement {\n return <AdminOrgsClientView />;\n}\n"],"mappings":";;;AAIA,IAAa,IAAqB;CAChC,OAAO;CACP,aAAa;AACf;AAEA,SAAwB,IAA8B;CACpD,OAAO,kBAAC,GAAD,CAAsB,CAAA;AAC/B"}
@@ -0,0 +1,2 @@
1
+ "use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../../../chunks/router-adapter-BybHrCNP.cjs"),t=require("../../../chunks/AdminUsersView-DlArLlIr.cjs");let n=require("react"),r=require("react/jsx-runtime"),i=require("next/navigation");function a(a={}){let o=(0,i.useRouter)(),s=(0,i.usePathname)(),c=(0,i.useSearchParams)();return(0,r.jsx)(e.t,{value:(0,n.useMemo)(()=>({pathname:s,push:e=>o.push(e),replace:e=>o.replace(e),back:()=>o.back(),searchParams:()=>new URLSearchParams(c?.toString()??``)}),[o,s,c]),children:(0,r.jsx)(t.t,{...a})})}exports.default=a;
2
+ //# sourceMappingURL=AdminUsersClientView.cjs.map