@semiont/frontend 0.4.7 → 0.4.9

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 (266) hide show
  1. package/dist/assets/AuthContext-CYne_gJM.js +2 -0
  2. package/dist/assets/AuthContext-CYne_gJM.js.map +1 -0
  3. package/dist/assets/{CookiePreferences-L69Zja-8.js → CookiePreferences-DxD0u90z.js} +2 -2
  4. package/dist/assets/{CookiePreferences-L69Zja-8.js.map → CookiePreferences-DxD0u90z.js.map} +1 -1
  5. package/dist/assets/KnowledgeBaseContext-CgnF8K-_.js +2 -0
  6. package/dist/assets/KnowledgeBaseContext-CgnF8K-_.js.map +1 -0
  7. package/dist/assets/PdfAnnotationCanvas.client-CW6SKH2U-CVmEpRfP.js +2 -0
  8. package/dist/assets/PdfAnnotationCanvas.client-CW6SKH2U-CVmEpRfP.js.map +1 -0
  9. package/dist/assets/PlusIcon-qGFPUzg0.js +2 -0
  10. package/dist/assets/PlusIcon-qGFPUzg0.js.map +1 -0
  11. package/dist/assets/StreamStatusContext-BuPATpTz.js +2 -0
  12. package/dist/assets/StreamStatusContext-BuPATpTz.js.map +1 -0
  13. package/dist/assets/ToolbarPanels-tcvPzqNN.js +2 -0
  14. package/dist/assets/ToolbarPanels-tcvPzqNN.js.map +1 -0
  15. package/dist/assets/ar-R4CRNXEF-Ca4TvZQX.js +2 -0
  16. package/dist/assets/ar-R4CRNXEF-Ca4TvZQX.js.map +1 -0
  17. package/dist/assets/bn-CZKGRHTA-BYgoliLL.js +2 -0
  18. package/dist/assets/bn-CZKGRHTA-BYgoliLL.js.map +1 -0
  19. package/dist/assets/client-87q-RlKa.js +2 -0
  20. package/dist/assets/{client-Cxt1NUWp.js.map → client-87q-RlKa.js.map} +1 -1
  21. package/dist/assets/client-BZBaSaZ0.js +2 -0
  22. package/dist/assets/{client-D1NYe5bc.js.map → client-BZBaSaZ0.js.map} +1 -1
  23. package/dist/assets/client-CKEJUXXb.js +2 -0
  24. package/dist/assets/{client-CmvSjN3K.js.map → client-CKEJUXXb.js.map} +1 -1
  25. package/dist/assets/client-DWcJNpII.js +2 -0
  26. package/dist/assets/{client-D5mudL5R.js.map → client-DWcJNpII.js.map} +1 -1
  27. package/dist/assets/cs-4WIB2IHH-C7kYZeeH.js +2 -0
  28. package/dist/assets/cs-4WIB2IHH-C7kYZeeH.js.map +1 -0
  29. package/dist/assets/da-JWYEUYPX-ZaU3NHTl.js +2 -0
  30. package/dist/assets/da-JWYEUYPX-ZaU3NHTl.js.map +1 -0
  31. package/dist/assets/de-GWUQZGER-DsO9vSRx.js +2 -0
  32. package/dist/assets/de-GWUQZGER-DsO9vSRx.js.map +1 -0
  33. package/dist/assets/el-DM2GT7P5-Baqj4u37.js +2 -0
  34. package/dist/assets/el-DM2GT7P5-Baqj4u37.js.map +1 -0
  35. package/dist/assets/en-IUV4ZXKH-BjYNERUx.js +135 -0
  36. package/dist/assets/en-IUV4ZXKH-BjYNERUx.js.map +1 -0
  37. package/dist/assets/es-6LVQIM3D-iPWrspyh.js +2 -0
  38. package/dist/assets/es-6LVQIM3D-iPWrspyh.js.map +1 -0
  39. package/dist/assets/fa-IRUJY3QI-D7jhkhZq.js +2 -0
  40. package/dist/assets/fa-IRUJY3QI-D7jhkhZq.js.map +1 -0
  41. package/dist/assets/fi-53FBOEVT-DyL1QG5i.js +2 -0
  42. package/dist/assets/fi-53FBOEVT-DyL1QG5i.js.map +1 -0
  43. package/dist/assets/fr-Q5KY7QL6-CGM9feO_.js +2 -0
  44. package/dist/assets/fr-Q5KY7QL6-CGM9feO_.js.map +1 -0
  45. package/dist/assets/he-HJNKULBY-CiS3ww0i.js +2 -0
  46. package/dist/assets/he-HJNKULBY-CiS3ww0i.js.map +1 -0
  47. package/dist/assets/hi-UYZ4X6CR-Cb3OYOtm.js +2 -0
  48. package/dist/assets/hi-UYZ4X6CR-Cb3OYOtm.js.map +1 -0
  49. package/dist/assets/id-UAQMH6U2-CgqnTJaj.js +2 -0
  50. package/dist/assets/id-UAQMH6U2-CgqnTJaj.js.map +1 -0
  51. package/dist/assets/{index-IyxbPWuo.js → index-D4SjcYxX.js} +3 -3
  52. package/dist/assets/index-D4SjcYxX.js.map +1 -0
  53. package/dist/assets/index-x79a-Q1-.css +1 -0
  54. package/dist/assets/it-C7QEBNFA-BP64tE9N.js +2 -0
  55. package/dist/assets/it-C7QEBNFA-BP64tE9N.js.map +1 -0
  56. package/dist/assets/ja-THS6AOSJ-BlrsrgpZ.js +2 -0
  57. package/dist/assets/ja-THS6AOSJ-BlrsrgpZ.js.map +1 -0
  58. package/dist/assets/ko-XKK3TWQG-BnscEkav.js +2 -0
  59. package/dist/assets/ko-XKK3TWQG-BnscEkav.js.map +1 -0
  60. package/dist/assets/layout-B-TMNLm1.js +6 -0
  61. package/dist/assets/layout-B-TMNLm1.js.map +1 -0
  62. package/dist/assets/layout-C4uWiY4F.js +2 -0
  63. package/dist/assets/layout-C4uWiY4F.js.map +1 -0
  64. package/dist/assets/layout-D9y4fNSa.js +2 -0
  65. package/dist/assets/layout-D9y4fNSa.js.map +1 -0
  66. package/dist/assets/layout-DYXeBZ7E.js +2 -0
  67. package/dist/assets/{layout-5_En-vLB.js.map → layout-DYXeBZ7E.js.map} +1 -1
  68. package/dist/assets/ms-GSK7LIF7-BWJ-3eXy.js +2 -0
  69. package/dist/assets/ms-GSK7LIF7-BWJ-3eXy.js.map +1 -0
  70. package/dist/assets/nl-KUBWITGY-DeqIcEFQ.js +2 -0
  71. package/dist/assets/nl-KUBWITGY-DeqIcEFQ.js.map +1 -0
  72. package/dist/assets/no-ECWZUHT6-DMgg097w.js +2 -0
  73. package/dist/assets/no-ECWZUHT6-DMgg097w.js.map +1 -0
  74. package/dist/assets/{not-found-BjlzlRT_.js → not-found-D39eX95i.js} +2 -2
  75. package/dist/assets/{not-found-BjlzlRT_.js.map → not-found-D39eX95i.js.map} +1 -1
  76. package/dist/assets/page-B68iiwby.js +2 -0
  77. package/dist/assets/page-B68iiwby.js.map +1 -0
  78. package/dist/assets/{page-B8hAUDzt.js → page-B8rInMTj.js} +2 -2
  79. package/dist/assets/{page-B8hAUDzt.js.map → page-B8rInMTj.js.map} +1 -1
  80. package/dist/assets/page-BBEm8LmA.js +2 -0
  81. package/dist/assets/{page-4vdCvEL0.js.map → page-BBEm8LmA.js.map} +1 -1
  82. package/dist/assets/{page-D77AjrZW.js → page-BjjPEFxE.js} +2 -2
  83. package/dist/assets/{page-D77AjrZW.js.map → page-BjjPEFxE.js.map} +1 -1
  84. package/dist/assets/page-Bs0m7wcI.js +2 -0
  85. package/dist/assets/page-Bs0m7wcI.js.map +1 -0
  86. package/dist/assets/page-C2ievByA.js +2 -0
  87. package/dist/assets/{page-n2Dj9C-v.js.map → page-C2ievByA.js.map} +1 -1
  88. package/dist/assets/{page-D7qEC0QY.js → page-CEDbSdpB.js} +2 -2
  89. package/dist/assets/{page-D7qEC0QY.js.map → page-CEDbSdpB.js.map} +1 -1
  90. package/dist/assets/{page-DwQP9ZTM.js → page-CnBwmYIE.js} +2 -2
  91. package/dist/assets/{page-DwQP9ZTM.js.map → page-CnBwmYIE.js.map} +1 -1
  92. package/dist/assets/page-D9kiPafj.js +2 -0
  93. package/dist/assets/{page-VpcpXQSK.js.map → page-D9kiPafj.js.map} +1 -1
  94. package/dist/assets/page-DU4gR5Xo.js +2 -0
  95. package/dist/assets/page-DU4gR5Xo.js.map +1 -0
  96. package/dist/assets/page-DVuwkaR0.js +2 -0
  97. package/dist/assets/{page-6Y-lDxnu.js.map → page-DVuwkaR0.js.map} +1 -1
  98. package/dist/assets/page-DX3FJ71G.js +2 -0
  99. package/dist/assets/page-DX3FJ71G.js.map +1 -0
  100. package/dist/assets/{page-kZNdnhdh.js → page-DfClTFD9.js} +2 -2
  101. package/dist/assets/{page-kZNdnhdh.js.map → page-DfClTFD9.js.map} +1 -1
  102. package/dist/assets/{page-CPxgvPSe.js → page-KDTjODvy.js} +2 -2
  103. package/dist/assets/{page-CPxgvPSe.js.map → page-KDTjODvy.js.map} +1 -1
  104. package/dist/assets/{page-bnSUmwNQ.js → page-eebHZHg3.js} +2 -2
  105. package/dist/assets/page-eebHZHg3.js.map +1 -0
  106. package/dist/assets/page-fN3EjI48.js +2 -0
  107. package/dist/assets/{page-Bb2aSxYZ.js.map → page-fN3EjI48.js.map} +1 -1
  108. package/dist/assets/page-kM0Ep9uD.js +2 -0
  109. package/dist/assets/{page-CkeyIRf4.js.map → page-kM0Ep9uD.js.map} +1 -1
  110. package/dist/assets/page-m23deNER.js +2 -0
  111. package/dist/assets/{page-CG2brhZf.js.map → page-m23deNER.js.map} +1 -1
  112. package/dist/assets/pl-PLVWSZWS-B9TKLToJ.js +2 -0
  113. package/dist/assets/pl-PLVWSZWS-B9TKLToJ.js.map +1 -0
  114. package/dist/assets/{privacy-D5H-YTl9.js → privacy-QEJYcmMw.js} +2 -2
  115. package/dist/assets/{privacy-D5H-YTl9.js.map → privacy-QEJYcmMw.js.map} +1 -1
  116. package/dist/assets/pt-AL74ZTKB-dm40issX.js +2 -0
  117. package/dist/assets/pt-AL74ZTKB-dm40issX.js.map +1 -0
  118. package/dist/assets/ro-WTPHLHGS-42q4gQmg.js +2 -0
  119. package/dist/assets/ro-WTPHLHGS-42q4gQmg.js.map +1 -0
  120. package/dist/assets/routing-BgsGBuSe.js +2 -0
  121. package/dist/assets/routing-BgsGBuSe.js.map +1 -0
  122. package/dist/assets/{routing-tt0MahYa.js → routing-nZgBtxly.js} +2 -2
  123. package/dist/assets/{routing-tt0MahYa.js.map → routing-nZgBtxly.js.map} +1 -1
  124. package/dist/assets/sv-QCLI7SG4-KVnre_zY.js +2 -0
  125. package/dist/assets/sv-QCLI7SG4-KVnre_zY.js.map +1 -0
  126. package/dist/assets/th-WCKVZU6U-CfRhC_Eg.js +2 -0
  127. package/dist/assets/th-WCKVZU6U-CfRhC_Eg.js.map +1 -0
  128. package/dist/assets/tr-2CAFS2XS-425EzbTD.js +2 -0
  129. package/dist/assets/tr-2CAFS2XS-425EzbTD.js.map +1 -0
  130. package/dist/assets/uk-TDE4JLCY-BUQpzvxx.js +2 -0
  131. package/dist/assets/uk-TDE4JLCY-BUQpzvxx.js.map +1 -0
  132. package/dist/assets/useAuth-CqtZE9nt.js +2 -0
  133. package/dist/assets/useAuth-CqtZE9nt.js.map +1 -0
  134. package/dist/assets/vi-KKXZ4PCX-BqlhZbBi.js +2 -0
  135. package/dist/assets/vi-KKXZ4PCX-BqlhZbBi.js.map +1 -0
  136. package/dist/assets/zh-VH4XN5PV-TNQ5FOx-.js +2 -0
  137. package/dist/assets/zh-VH4XN5PV-TNQ5FOx-.js.map +1 -0
  138. package/dist/index.html +2 -2
  139. package/dist/messages/ar.json +7 -1
  140. package/dist/messages/bn.json +7 -1
  141. package/dist/messages/cs.json +7 -1
  142. package/dist/messages/da.json +7 -1
  143. package/dist/messages/de.json +7 -1
  144. package/dist/messages/el.json +7 -1
  145. package/dist/messages/en.json +7 -1
  146. package/dist/messages/es.json +7 -1
  147. package/dist/messages/fa.json +7 -1
  148. package/dist/messages/fi.json +7 -1
  149. package/dist/messages/fr.json +7 -1
  150. package/dist/messages/he.json +7 -1
  151. package/dist/messages/hi.json +7 -1
  152. package/dist/messages/id.json +7 -1
  153. package/dist/messages/it.json +7 -1
  154. package/dist/messages/ja.json +7 -1
  155. package/dist/messages/ko.json +7 -1
  156. package/dist/messages/ms.json +7 -1
  157. package/dist/messages/nl.json +7 -1
  158. package/dist/messages/no.json +7 -1
  159. package/dist/messages/pl.json +7 -1
  160. package/dist/messages/pt.json +7 -1
  161. package/dist/messages/ro.json +7 -1
  162. package/dist/messages/sv.json +7 -1
  163. package/dist/messages/th.json +7 -1
  164. package/dist/messages/tr.json +7 -1
  165. package/dist/messages/uk.json +7 -1
  166. package/dist/messages/vi.json +7 -1
  167. package/dist/messages/zh.json +7 -1
  168. package/package.json +1 -1
  169. package/server.js +2 -17
  170. package/dist/assets/AuthContext-xM132UqD.js +0 -2
  171. package/dist/assets/AuthContext-xM132UqD.js.map +0 -1
  172. package/dist/assets/PdfAnnotationCanvas.client-LF6DDTCV-DjnFutDo.js +0 -2
  173. package/dist/assets/PdfAnnotationCanvas.client-LF6DDTCV-DjnFutDo.js.map +0 -1
  174. package/dist/assets/ToolbarPanels-Dq0eXjjR.js +0 -2
  175. package/dist/assets/ToolbarPanels-Dq0eXjjR.js.map +0 -1
  176. package/dist/assets/ar-3URRW77J-BgHZZOLD.js +0 -2
  177. package/dist/assets/ar-3URRW77J-BgHZZOLD.js.map +0 -1
  178. package/dist/assets/bn-DCQD3XZ5-a8MFRoWf.js +0 -2
  179. package/dist/assets/bn-DCQD3XZ5-a8MFRoWf.js.map +0 -1
  180. package/dist/assets/client-CmvSjN3K.js +0 -2
  181. package/dist/assets/client-Cxt1NUWp.js +0 -2
  182. package/dist/assets/client-D1NYe5bc.js +0 -2
  183. package/dist/assets/client-D5mudL5R.js +0 -2
  184. package/dist/assets/cs-23KOZUFE-BKDMuHSJ.js +0 -2
  185. package/dist/assets/cs-23KOZUFE-BKDMuHSJ.js.map +0 -1
  186. package/dist/assets/da-OIQ66A42-PSD9x0p6.js +0 -2
  187. package/dist/assets/da-OIQ66A42-PSD9x0p6.js.map +0 -1
  188. package/dist/assets/de-FCCLKE2X-D-mIACTN.js +0 -2
  189. package/dist/assets/de-FCCLKE2X-D-mIACTN.js.map +0 -1
  190. package/dist/assets/el-3ADITCGI-R9uL01ba.js +0 -2
  191. package/dist/assets/el-3ADITCGI-R9uL01ba.js.map +0 -1
  192. package/dist/assets/en-LNW2A3RA-CQBvSBCl.js +0 -136
  193. package/dist/assets/en-LNW2A3RA-CQBvSBCl.js.map +0 -1
  194. package/dist/assets/es-POQEEYIW-GYtOr1-U.js +0 -2
  195. package/dist/assets/es-POQEEYIW-GYtOr1-U.js.map +0 -1
  196. package/dist/assets/fa-RQPXVELG-CYYoB8V3.js +0 -2
  197. package/dist/assets/fa-RQPXVELG-CYYoB8V3.js.map +0 -1
  198. package/dist/assets/fi-UXOVOUGT-CCtELQFh.js +0 -2
  199. package/dist/assets/fi-UXOVOUGT-CCtELQFh.js.map +0 -1
  200. package/dist/assets/fr-6W2T3R7G-BHzGzKtv.js +0 -2
  201. package/dist/assets/fr-6W2T3R7G-BHzGzKtv.js.map +0 -1
  202. package/dist/assets/he-65UHPZIU-Be0-u6De.js +0 -2
  203. package/dist/assets/he-65UHPZIU-Be0-u6De.js.map +0 -1
  204. package/dist/assets/hi-SGJIVPTN-DzNg8bSF.js +0 -2
  205. package/dist/assets/hi-SGJIVPTN-DzNg8bSF.js.map +0 -1
  206. package/dist/assets/id-EYJJQCS2-CNqoDHx8.js +0 -2
  207. package/dist/assets/id-EYJJQCS2-CNqoDHx8.js.map +0 -1
  208. package/dist/assets/index-CZe1KZuP.css +0 -1
  209. package/dist/assets/index-IyxbPWuo.js.map +0 -1
  210. package/dist/assets/it-IZGQEDO7-Fnj60r5j.js +0 -2
  211. package/dist/assets/it-IZGQEDO7-Fnj60r5j.js.map +0 -1
  212. package/dist/assets/ja-SR272JSY-CJI0KETh.js +0 -2
  213. package/dist/assets/ja-SR272JSY-CJI0KETh.js.map +0 -1
  214. package/dist/assets/ko-YWTXVVXE-C01Ur29L.js +0 -2
  215. package/dist/assets/ko-YWTXVVXE-C01Ur29L.js.map +0 -1
  216. package/dist/assets/layout-5_En-vLB.js +0 -2
  217. package/dist/assets/layout-DF8lLIQx.js +0 -2
  218. package/dist/assets/layout-DF8lLIQx.js.map +0 -1
  219. package/dist/assets/layout-DYaEHeqB.js +0 -2
  220. package/dist/assets/layout-DYaEHeqB.js.map +0 -1
  221. package/dist/assets/layout-QdxLp1Jq.js +0 -6
  222. package/dist/assets/layout-QdxLp1Jq.js.map +0 -1
  223. package/dist/assets/ms-3K2XSJGM-Cy5ruqOy.js +0 -2
  224. package/dist/assets/ms-3K2XSJGM-Cy5ruqOy.js.map +0 -1
  225. package/dist/assets/nl-YIGP4SLE-Bd4rMBpn.js +0 -2
  226. package/dist/assets/nl-YIGP4SLE-Bd4rMBpn.js.map +0 -1
  227. package/dist/assets/no-IFYIL3ND-BuY6j8M1.js +0 -2
  228. package/dist/assets/no-IFYIL3ND-BuY6j8M1.js.map +0 -1
  229. package/dist/assets/page-4vdCvEL0.js +0 -2
  230. package/dist/assets/page-6Y-lDxnu.js +0 -2
  231. package/dist/assets/page-BUPqapmo.js +0 -2
  232. package/dist/assets/page-BUPqapmo.js.map +0 -1
  233. package/dist/assets/page-Bb2aSxYZ.js +0 -2
  234. package/dist/assets/page-CG2brhZf.js +0 -2
  235. package/dist/assets/page-CTn7lGDa.js +0 -2
  236. package/dist/assets/page-CTn7lGDa.js.map +0 -1
  237. package/dist/assets/page-CkeyIRf4.js +0 -2
  238. package/dist/assets/page-DA0znMx6.js +0 -2
  239. package/dist/assets/page-DA0znMx6.js.map +0 -1
  240. package/dist/assets/page-MyIklHT7.js +0 -2
  241. package/dist/assets/page-MyIklHT7.js.map +0 -1
  242. package/dist/assets/page-VpcpXQSK.js +0 -2
  243. package/dist/assets/page-bnSUmwNQ.js.map +0 -1
  244. package/dist/assets/page-n2Dj9C-v.js +0 -2
  245. package/dist/assets/pl-6MWSASJR-JUc86Y3e.js +0 -2
  246. package/dist/assets/pl-6MWSASJR-JUc86Y3e.js.map +0 -1
  247. package/dist/assets/pt-NZNN6WUN-BoRJoxUF.js +0 -2
  248. package/dist/assets/pt-NZNN6WUN-BoRJoxUF.js.map +0 -1
  249. package/dist/assets/ro-NF3SMUJS-BolW-qxZ.js +0 -2
  250. package/dist/assets/ro-NF3SMUJS-BolW-qxZ.js.map +0 -1
  251. package/dist/assets/routing-CBiIPmyX.js +0 -2
  252. package/dist/assets/routing-CBiIPmyX.js.map +0 -1
  253. package/dist/assets/sv-ZHM7GSTD-BJQebEes.js +0 -2
  254. package/dist/assets/sv-ZHM7GSTD-BJQebEes.js.map +0 -1
  255. package/dist/assets/th-LX4NO5BJ-PLcdn3k3.js +0 -2
  256. package/dist/assets/th-LX4NO5BJ-PLcdn3k3.js.map +0 -1
  257. package/dist/assets/tr-DZ4GDSRR-B9p6aQNC.js +0 -2
  258. package/dist/assets/tr-DZ4GDSRR-B9p6aQNC.js.map +0 -1
  259. package/dist/assets/uk-KC5KVVBY-CyfCqBoA.js +0 -2
  260. package/dist/assets/uk-KC5KVVBY-CyfCqBoA.js.map +0 -1
  261. package/dist/assets/useAuth-Bw_w8L0H.js +0 -2
  262. package/dist/assets/useAuth-Bw_w8L0H.js.map +0 -1
  263. package/dist/assets/vi-KNCR3OXZ-CWlV3YWY.js +0 -2
  264. package/dist/assets/vi-KNCR3OXZ-CWlV3YWY.js.map +0 -1
  265. package/dist/assets/zh-M2HV2A27-Pnzhdw9W.js +0 -2
  266. package/dist/assets/zh-M2HV2A27-Pnzhdw9W.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"page-D77AjrZW.js","sources":["../../src/app/[locale]/moderate/page.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\n\nexport default function ModeratePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Moderation.${k}`, p as any) as string;\n const router = useRouter();\n\n useEffect(() => {\n // Redirect to Recent Documents as the default page\n router.replace('/moderate/recent');\n }, [router]);\n\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('redirecting')}</p>\n </div>\n );\n}"],"names":["ModeratePage","_t","useTranslation","t","k","p","router","useRouter","useEffect","jsx"],"mappings":"8LAIA,SAAwBA,GAAe,CACrC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EAC9EC,EAASC,EAAA,EAEfC,OAAAA,EAAAA,UAAU,IAAM,CAEdF,EAAO,QAAQ,kBAAkB,CACnC,EAAG,CAACA,CAAM,CAAC,EAGTG,EAAAA,IAAC,MAAA,CAAI,UAAU,yCACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAN,EAAE,aAAa,CAAA,CAAE,EACpE,CAEJ"}
1
+ {"version":3,"file":"page-BjjPEFxE.js","sources":["../../src/app/[locale]/moderate/page.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\n\nexport default function ModeratePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Moderation.${k}`, p as any) as string;\n const router = useRouter();\n\n useEffect(() => {\n // Redirect to Recent Documents as the default page\n router.replace('/moderate/recent');\n }, [router]);\n\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('redirecting')}</p>\n </div>\n );\n}"],"names":["ModeratePage","_t","useTranslation","t","k","p","router","useRouter","useEffect","jsx"],"mappings":"8LAIA,SAAwBA,GAAe,CACrC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EAC9EC,EAASC,EAAA,EAEfC,OAAAA,EAAAA,UAAU,IAAM,CAEdF,EAAO,QAAQ,kBAAkB,CACnC,EAAG,CAACA,CAAM,CAAC,EAGTG,EAAAA,IAAC,MAAA,CAAI,UAAU,yCACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAN,EAAE,aAAa,CAAA,CAAE,EACpE,CAEJ"}
@@ -0,0 +1,2 @@
1
+ import{j as r}from"./query-ATBhtd3K.js";import{u as f,r as h}from"./vendor-EnoIVk-c.js";import{a as U,L as d}from"./routing-nZgBtxly.js";import{P as k,a as H}from"./en-IUV4ZXKH-BjYNERUx.js";import{C as b}from"./CookiePreferences-DxD0u90z.js";import{K as x}from"./privacy-QEJYcmMw.js";import{r as y,L as A}from"./routing-BgsGBuSe.js";import{u as L}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";function S(){const{t:n}=L(),o=(t,e)=>n(`AuthSignUp.${t}`,e),i=(t,e)=>n(`Footer.${t}`,e),c=(t,e)=>n(`Navigation.${t}`,e),s=(t,e)=>n(`Home.${t}`,e),[p]=f(),m=U(),a=h.useContext(x),l=p.get("callbackUrl")??"/auth/welcome",u=async()=>{m.push(`/auth/connect?callbackUrl=${encodeURIComponent(l)}`)},g={pageTitle:o("pageTitle"),signUpPrompt:o("signUpPrompt"),signUpWithGoogle:o("signUpWithGoogle"),creatingAccount:o("creatingAccount"),approvedDomainsInfo:o("approvedDomainsInfo"),termsAgreement:o("termsAgreement"),alreadyHaveAccount:o("alreadyHaveAccount"),tagline:s("tagline"),backToHome:o("backToHome")};return r.jsx(k,{Link:A,routes:y,t:i,tNav:c,tHome:s,CookiePreferences:b,...(a==null?void 0:a.openKeyboardHelp)&&{onOpenKeyboardHelp:a.openKeyboardHelp},className:"semiont-page-layout--auth",showAuthLinks:!1,children:r.jsx(H,{onSignUp:u,Link:d,translations:g})})}function N(){return r.jsx(S,{})}export{N as default};
2
+ //# sourceMappingURL=page-Bs0m7wcI.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-Bs0m7wcI.js","sources":["../../src/app/[locale]/auth/signup/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\nimport { PageLayout, SignUpForm } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nfunction SignUpContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthSignUp.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const router = useRouter();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const callbackUrl = searchParams.get('callbackUrl') ?? '/auth/welcome';\n\n const handleSignUp = async () => {\n router.push(`/auth/connect?callbackUrl=${encodeURIComponent(callbackUrl)}`);\n };\n\n const translations = {\n pageTitle: t('pageTitle'),\n signUpPrompt: t('signUpPrompt'),\n signUpWithGoogle: t('signUpWithGoogle'),\n creatingAccount: t('creatingAccount'),\n approvedDomainsInfo: t('approvedDomainsInfo'),\n termsAgreement: t('termsAgreement'),\n alreadyHaveAccount: t('alreadyHaveAccount'),\n tagline: tHome('tagline'),\n backToHome: t('backToHome'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-page-layout--auth\"\n showAuthLinks={false}\n >\n <SignUpForm onSignUp={handleSignUp} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n\nexport default function SignUp() {\n return <SignUpContent />;\n}\n"],"names":["SignUpContent","_t","useTranslation","t","k","p","tFooter","tNav","tHome","searchParams","useSearchParams","router","useRouter","keyboardContext","useContext","KeyboardShortcutsContext","callbackUrl","handleSignUp","translations","jsx","PageLayout","RoutingLink","routes","CookiePreferences","SignUpForm","Link","SignUp"],"mappings":"gZAUA,SAASA,GAAgB,CACvB,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EAC9EC,EAAU,CAACF,EAAWC,IAAgCJ,EAAG,UAAUG,CAAC,GAAIC,CAAQ,EAChFE,EAAO,CAACH,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EACjFG,EAAQ,CAACJ,EAAWC,IAAgCJ,EAAG,QAAQG,CAAC,GAAIC,CAAQ,EAC5E,CAACI,CAAY,EAAIC,EAAA,EACjBC,EAASC,EAAA,EACTC,EAAkBC,EAAAA,WAAWC,CAAwB,EAErDC,EAAcP,EAAa,IAAI,aAAa,GAAK,gBAEjDQ,EAAe,SAAY,CAC/BN,EAAO,KAAK,6BAA6B,mBAAmBK,CAAW,CAAC,EAAE,CAC5E,EAEME,EAAe,CACnB,UAAWf,EAAE,WAAW,EACxB,aAAcA,EAAE,cAAc,EAC9B,iBAAkBA,EAAE,kBAAkB,EACtC,gBAAiBA,EAAE,iBAAiB,EACpC,oBAAqBA,EAAE,qBAAqB,EAC5C,eAAgBA,EAAE,gBAAgB,EAClC,mBAAoBA,EAAE,oBAAoB,EAC1C,QAASK,EAAM,SAAS,EACxB,WAAYL,EAAE,YAAY,CAAA,EAG5B,OACEgB,EAAAA,IAACC,EAAA,CACC,KAAMC,EACN,OAAAC,EACA,EAAGhB,EACH,KAAAC,EACA,MAAAC,EACA,kBAAAe,EACC,IAAIV,GAAA,YAAAA,EAAiB,mBAAoB,CAAE,mBAAoBA,EAAgB,gBAAA,EAChF,UAAU,4BACV,cAAe,GAEf,SAAAM,EAAAA,IAACK,EAAA,CAAW,SAAUP,EAAA,KAAcQ,EAAY,aAAAP,CAAA,CAA4B,CAAA,CAAA,CAGlF,CAEA,SAAwBQ,GAAS,CAC/B,aAAQ1B,EAAA,EAAc,CACxB"}
@@ -0,0 +1,2 @@
1
+ import{j as l}from"./query-ATBhtd3K.js";import{r as t}from"./vendor-EnoIVk-c.js";import{d as h,e as g,f as v,g as f,Z as b,T as w,_ as C}from"./en-IUV4ZXKH-BjYNERUx.js";import{T as y}from"./ToolbarPanels-tcvPzqNN.js";import{u as D}from"./useAuth-CqtZE9nt.js";import{u as k}from"./i18n-BYxb14hm.js";import{F as T}from"./CommandLineIcon-BBerq9Nd.js";import"./index-D4SjcYxX.js";import"./AuthContext-CYne_gJM.js";import"./routing-nZgBtxly.js";import"./KnowledgeBaseContext-CgnF8K-_.js";import"./PlusIcon-qGFPUzg0.js";function L({title:s,titleId:e,...n},i){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":e},n),s?t.createElement("title",{id:e},s):null,t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"}))}const x=t.forwardRef(L);function M({title:s,titleId:e,...n},i){return t.createElement("svg",Object.assign({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor","aria-hidden":"true","data-slot":"icon",ref:i,"aria-labelledby":e},n),s?t.createElement("title",{id:e},s):null,t.createElement("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z"}))}const E=t.forwardRef(M);function O(){const{isFullyAuthenticated:s,isAuthenticated:e,hasValidBackendToken:n}=D();return l.jsx(C,{isFullyAuthenticated:s,isAuthenticated:e,hasValidBackendToken:n})}function W(){const{t:s}=k(),e=(o,d)=>s(`AdminDevOps.${o}`,d),{activePanel:n}=h(),{theme:i,setTheme:r}=g(),{showLineNumbers:c,toggleLineNumbers:a}=v(),m=t.useCallback(({theme:o})=>{r(o)},[r]),u=t.useCallback(()=>{a()},[a]);f({"settings:theme-changed":m,"settings:line-numbers-toggled":u});const p=[{title:e("systemMonitoring"),description:e("systemMonitoringDescription"),icon:x,available:e("systemMonitoringCLI")},{title:e("serviceManagement"),description:e("serviceManagementDescription"),icon:E,available:e("serviceManagementCLI")},{title:e("deploymentControl"),description:e("deploymentControlDescription"),icon:T,available:e("deploymentControlCLI")}];return l.jsx(b,{suggestedFeatures:p,theme:i,showLineNumbers:c,activePanel:n,translations:{title:e("title"),subtitle:e("subtitle"),systemStatus:e("systemStatus"),cliOperations:e("cliOperations"),cliOperationsDescription:e("cliOperationsDescription"),cliTitle:e("cliTitle"),cliDescription:e("cliDescription")},StatusDisplay:O,ToolbarPanels:y,Toolbar:w})}export{W as default};
2
+ //# sourceMappingURL=page-C2ievByA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-n2Dj9C-v.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ServerIcon.js","../../src/app/[locale]/admin/devops/page.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ChartBarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChartBarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ServerIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ServerIcon);\nexport default ForwardRef;","/**\n * DevOps Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (translations, hooks)\n * and delegates rendering to the pure React AdminDevOpsPage component.\n */\n\nimport { useTranslation } from 'react-i18next';\nimport { useEffect, useCallback } from 'react';\nimport {\n ChartBarIcon,\n ServerIcon,\n CommandLineIcon\n} from '@heroicons/react/24/outline';\nimport { StatusDisplay, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminDevOpsPage } from '@semiont/react-ui';\nimport { useAuth } from '@/hooks/useAuth';\n\n// Wrapper component that provides auth props to StatusDisplay\nfunction StatusDisplayWithAuth() {\n const { isFullyAuthenticated, isAuthenticated, hasValidBackendToken } = useAuth();\n return (\n <StatusDisplay\n isFullyAuthenticated={isFullyAuthenticated}\n isAuthenticated={isAuthenticated}\n hasValidBackendToken={hasValidBackendToken}\n />\n );\n}\n\nexport default function DevOpsPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminDevOps.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const { activePanel } = usePanelBrowse();\n const { theme, setTheme } = useTheme();\n const { showLineNumbers, toggleLineNumbers } = useLineNumbers();\n\n // Handle theme change events\n const handleThemeChanged = useCallback(({ theme }: { theme: 'light' | 'dark' | 'system' }) => {\n setTheme(theme);\n }, [setTheme]);\n\n // Handle line numbers toggle events\n const handleLineNumbersToggled = useCallback(() => {\n toggleLineNumbers();\n }, [toggleLineNumbers]);\n\n useEventSubscriptions({\n 'settings:theme-changed': handleThemeChanged,\n 'settings:line-numbers-toggled': handleLineNumbersToggled,\n });\n\n const suggestedFeatures = [\n {\n title: t('systemMonitoring'),\n description: t('systemMonitoringDescription'),\n icon: ChartBarIcon,\n available: t('systemMonitoringCLI')\n },\n {\n title: t('serviceManagement'),\n description: t('serviceManagementDescription'),\n icon: ServerIcon,\n available: t('serviceManagementCLI')\n },\n {\n title: t('deploymentControl'),\n description: t('deploymentControlDescription'),\n icon: CommandLineIcon,\n available: t('deploymentControlCLI')\n },\n ];\n\n return (\n <AdminDevOpsPage\n suggestedFeatures={suggestedFeatures}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n systemStatus: t('systemStatus'),\n cliOperations: t('cliOperations'),\n cliOperationsDescription: t('cliOperationsDescription'),\n cliTitle: t('cliTitle'),\n cliDescription: t('cliDescription'),\n }}\n StatusDisplay={StatusDisplayWithAuth}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["ChartBarIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","ServerIcon","StatusDisplayWithAuth","isFullyAuthenticated","isAuthenticated","hasValidBackendToken","useAuth","jsx","StatusDisplay","DevOpsPage","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","suggestedFeatures","CommandLineIcon","AdminDevOpsPage","ToolbarPanels","Toolbar"],"mappings":"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","x_google_ignoreList":[0,1]}
1
+ {"version":3,"file":"page-C2ievByA.js","sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ServerIcon.js","../../src/app/[locale]/admin/devops/page.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ChartBarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChartBarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ServerIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ServerIcon);\nexport default ForwardRef;","/**\n * DevOps Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (translations, hooks)\n * and delegates rendering to the pure React AdminDevOpsPage component.\n */\n\nimport { useTranslation } from 'react-i18next';\nimport { useEffect, useCallback } from 'react';\nimport {\n ChartBarIcon,\n ServerIcon,\n CommandLineIcon\n} from '@heroicons/react/24/outline';\nimport { StatusDisplay, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminDevOpsPage } from '@semiont/react-ui';\nimport { useAuth } from '@/hooks/useAuth';\n\n// Wrapper component that provides auth props to StatusDisplay\nfunction StatusDisplayWithAuth() {\n const { isFullyAuthenticated, isAuthenticated, hasValidBackendToken } = useAuth();\n return (\n <StatusDisplay\n isFullyAuthenticated={isFullyAuthenticated}\n isAuthenticated={isAuthenticated}\n hasValidBackendToken={hasValidBackendToken}\n />\n );\n}\n\nexport default function DevOpsPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminDevOps.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const { activePanel } = usePanelBrowse();\n const { theme, setTheme } = useTheme();\n const { showLineNumbers, toggleLineNumbers } = useLineNumbers();\n\n // Handle theme change events\n const handleThemeChanged = useCallback(({ theme }: { theme: 'light' | 'dark' | 'system' }) => {\n setTheme(theme);\n }, [setTheme]);\n\n // Handle line numbers toggle events\n const handleLineNumbersToggled = useCallback(() => {\n toggleLineNumbers();\n }, [toggleLineNumbers]);\n\n useEventSubscriptions({\n 'settings:theme-changed': handleThemeChanged,\n 'settings:line-numbers-toggled': handleLineNumbersToggled,\n });\n\n const suggestedFeatures = [\n {\n title: t('systemMonitoring'),\n description: t('systemMonitoringDescription'),\n icon: ChartBarIcon,\n available: t('systemMonitoringCLI')\n },\n {\n title: t('serviceManagement'),\n description: t('serviceManagementDescription'),\n icon: ServerIcon,\n available: t('serviceManagementCLI')\n },\n {\n title: t('deploymentControl'),\n description: t('deploymentControlDescription'),\n icon: CommandLineIcon,\n available: t('deploymentControlCLI')\n },\n ];\n\n return (\n <AdminDevOpsPage\n suggestedFeatures={suggestedFeatures}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n systemStatus: t('systemStatus'),\n cliOperations: t('cliOperations'),\n cliOperationsDescription: t('cliOperationsDescription'),\n cliTitle: t('cliTitle'),\n cliDescription: t('cliDescription'),\n }}\n StatusDisplay={StatusDisplayWithAuth}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["ChartBarIcon","title","titleId","props","svgRef","React.createElement","ForwardRef","React.forwardRef","ServerIcon","StatusDisplayWithAuth","isFullyAuthenticated","isAuthenticated","hasValidBackendToken","useAuth","jsx","StatusDisplay","DevOpsPage","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","suggestedFeatures","CommandLineIcon","AdminDevOpsPage","ToolbarPanels","Toolbar"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,2 +1,2 @@
1
- import{j as t}from"./query-ATBhtd3K.js";import{r as a}from"./vendor-EnoIVk-c.js";import{a as l}from"./routing-tt0MahYa.js";import{u as m}from"./i18n-BYxb14hm.js";import"./index-IyxbPWuo.js";function g(){const{t:c}=m(),s=(e,i)=>c(`Sidebar.${e}`,i),r=l(),[o,n]=a.useState(!0);return a.useEffect(()=>{const e=localStorage.getItem("lastViewedDocumentId");e?r.replace(`/know/resource/${e}`):r.replace("/know/discover"),n(!1)},[r]),o?t.jsx("div",{className:"flex items-center justify-center py-20",children:t.jsx("p",{className:"text-gray-600 dark:text-gray-300",children:s("loading")})}):t.jsx("div",{className:"flex items-center justify-center py-20",children:t.jsx("p",{className:"text-gray-600 dark:text-gray-300",children:s("redirecting")})})}export{g as default};
2
- //# sourceMappingURL=page-D7qEC0QY.js.map
1
+ import{j as t}from"./query-ATBhtd3K.js";import{r as a}from"./vendor-EnoIVk-c.js";import{a as l}from"./routing-nZgBtxly.js";import{u as m}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";function g(){const{t:c}=m(),s=(e,i)=>c(`Sidebar.${e}`,i),r=l(),[o,n]=a.useState(!0);return a.useEffect(()=>{const e=localStorage.getItem("lastViewedDocumentId");e?r.replace(`/know/resource/${e}`):r.replace("/know/discover"),n(!1)},[r]),o?t.jsx("div",{className:"flex items-center justify-center py-20",children:t.jsx("p",{className:"text-gray-600 dark:text-gray-300",children:s("loading")})}):t.jsx("div",{className:"flex items-center justify-center py-20",children:t.jsx("p",{className:"text-gray-600 dark:text-gray-300",children:s("redirecting")})})}export{g as default};
2
+ //# sourceMappingURL=page-CEDbSdpB.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-D7qEC0QY.js","sources":["../../src/app/[locale]/know/page.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\n\nexport default function KnowledgePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Sidebar.${k}`, p as any) as string;\n const router = useRouter();\n const [checking, setChecking] = useState(true);\n\n useEffect(() => {\n // Check if there's a last viewed document\n const lastDocumentId = localStorage.getItem('lastViewedDocumentId');\n \n if (lastDocumentId) {\n // If there's a last viewed document, go to it\n router.replace(`/know/resource/${lastDocumentId}`);\n } else {\n // Otherwise, go to Discover\n router.replace('/know/discover');\n }\n \n setChecking(false);\n }, [router]);\n\n if (checking) {\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loading')}</p>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('redirecting')}</p>\n </div>\n );\n}"],"names":["KnowledgePage","_t","useTranslation","t","k","p","router","useRouter","checking","setChecking","useState","useEffect","lastDocumentId","jsx"],"mappings":"8LAIA,SAAwBA,GAAgB,CACtC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,WAAWG,CAAC,GAAIC,CAAQ,EAC3EC,EAASC,EAAA,EACT,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAI,EAiB7C,OAfAC,EAAAA,UAAU,IAAM,CAEd,MAAMC,EAAiB,aAAa,QAAQ,sBAAsB,EAE9DA,EAEFN,EAAO,QAAQ,kBAAkBM,CAAc,EAAE,EAGjDN,EAAO,QAAQ,gBAAgB,EAGjCG,EAAY,EAAK,CACnB,EAAG,CAACH,CAAM,CAAC,EAEPE,EAEAK,EAAAA,IAAC,MAAA,CAAI,UAAU,yCACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAV,EAAE,SAAS,CAAA,CAAE,EAChE,EAKFU,EAAAA,IAAC,MAAA,CAAI,UAAU,yCACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAV,EAAE,aAAa,CAAA,CAAE,EACpE,CAEJ"}
1
+ {"version":3,"file":"page-CEDbSdpB.js","sources":["../../src/app/[locale]/know/page.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\n\nexport default function KnowledgePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Sidebar.${k}`, p as any) as string;\n const router = useRouter();\n const [checking, setChecking] = useState(true);\n\n useEffect(() => {\n // Check if there's a last viewed document\n const lastDocumentId = localStorage.getItem('lastViewedDocumentId');\n \n if (lastDocumentId) {\n // If there's a last viewed document, go to it\n router.replace(`/know/resource/${lastDocumentId}`);\n } else {\n // Otherwise, go to Discover\n router.replace('/know/discover');\n }\n \n setChecking(false);\n }, [router]);\n\n if (checking) {\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loading')}</p>\n </div>\n );\n }\n\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('redirecting')}</p>\n </div>\n );\n}"],"names":["KnowledgePage","_t","useTranslation","t","k","p","router","useRouter","checking","setChecking","useState","useEffect","lastDocumentId","jsx"],"mappings":"8LAIA,SAAwBA,GAAgB,CACtC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,WAAWG,CAAC,GAAIC,CAAQ,EAC3EC,EAASC,EAAA,EACT,CAACC,EAAUC,CAAW,EAAIC,EAAAA,SAAS,EAAI,EAiB7C,OAfAC,EAAAA,UAAU,IAAM,CAEd,MAAMC,EAAiB,aAAa,QAAQ,sBAAsB,EAE9DA,EAEFN,EAAO,QAAQ,kBAAkBM,CAAc,EAAE,EAGjDN,EAAO,QAAQ,gBAAgB,EAGjCG,EAAY,EAAK,CACnB,EAAG,CAACH,CAAM,CAAC,EAEPE,EAEAK,EAAAA,IAAC,MAAA,CAAI,UAAU,yCACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAV,EAAE,SAAS,CAAA,CAAE,EAChE,EAKFU,EAAAA,IAAC,MAAA,CAAI,UAAU,yCACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAV,EAAE,aAAa,CAAA,CAAE,EACpE,CAEJ"}
@@ -1,4 +1,4 @@
1
- import{j as e}from"./query-ATBhtd3K.js";import{r as m}from"./vendor-EnoIVk-c.js";import{P as u}from"./en-LNW2A3RA-CQBvSBCl.js";import{C as T}from"./CookiePreferences-L69Zja-8.js";import{K as f}from"./privacy-D5H-YTl9.js";import{r as g,L as k}from"./routing-CBiIPmyX.js";import{u as c}from"./i18n-BYxb14hm.js";import"./index-IyxbPWuo.js";import"./routing-tt0MahYa.js";function b(){const{t:r}=c(),s=(t,i)=>r(`Privacy.${t}`,i),{t:l}=c(),o=(t,i)=>l(`Footer.${t}`,i),{t:a}=c(),d=(t,i)=>a(`Navigation.${t}`,i),{t:h}=c(),x=(t,i)=>h(`Home.${t}`,i),n=m.useContext(f);return e.jsx(u,{Link:k,routes:g,t:o,tNav:d,tHome:x,CookiePreferences:T,...(n==null?void 0:n.openKeyboardHelp)&&{onOpenKeyboardHelp:n.openKeyboardHelp},className:"semiont-static-page",children:e.jsx("div",{className:"semiont-static-container",children:e.jsxs("div",{className:"semiont-static-content",children:[e.jsx("header",{className:"semiont-static-header",children:e.jsx("h1",{className:"semiont-static-title",children:s("pageTitle")})}),e.jsxs("article",{className:"semiont-static-article",children:[e.jsxs("section",{children:[e.jsx("h2",{children:s("introTitle")}),s("intro").split(`
1
+ import{j as e}from"./query-ATBhtd3K.js";import{r as m}from"./vendor-EnoIVk-c.js";import{P as u}from"./en-IUV4ZXKH-BjYNERUx.js";import{C as T}from"./CookiePreferences-DxD0u90z.js";import{K as f}from"./privacy-QEJYcmMw.js";import{r as g,L as k}from"./routing-BgsGBuSe.js";import{u as c}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";import"./routing-nZgBtxly.js";function b(){const{t:r}=c(),s=(t,i)=>r(`Privacy.${t}`,i),{t:l}=c(),o=(t,i)=>l(`Footer.${t}`,i),{t:a}=c(),d=(t,i)=>a(`Navigation.${t}`,i),{t:h}=c(),x=(t,i)=>h(`Home.${t}`,i),n=m.useContext(f);return e.jsx(u,{Link:k,routes:g,t:o,tNav:d,tHome:x,CookiePreferences:T,...(n==null?void 0:n.openKeyboardHelp)&&{onOpenKeyboardHelp:n.openKeyboardHelp},className:"semiont-static-page",children:e.jsx("div",{className:"semiont-static-container",children:e.jsxs("div",{className:"semiont-static-content",children:[e.jsx("header",{className:"semiont-static-header",children:e.jsx("h1",{className:"semiont-static-title",children:s("pageTitle")})}),e.jsxs("article",{className:"semiont-static-article",children:[e.jsxs("section",{children:[e.jsx("h2",{children:s("introTitle")}),s("intro").split(`
2
2
 
3
3
  `).map((t,i)=>e.jsx("p",{children:t},i))]}),e.jsxs("section",{children:[e.jsx("h2",{children:s("infoCollectTitle")}),e.jsx("h3",{children:s("personalInfoTitle")}),e.jsx("ul",{children:s("personalInfo").split(`
4
4
  `).map((t,i)=>e.jsx("li",{children:t},i))}),e.jsx("h3",{children:s("autoCollectTitle")}),e.jsx("ul",{children:s("autoCollect").split(`
@@ -17,4 +17,4 @@ import{j as e}from"./query-ATBhtd3K.js";import{r as m}from"./vendor-EnoIVk-c.js"
17
17
 
18
18
  `).map((t,i)=>i===0?e.jsx("p",{children:t},i):e.jsx("ul",{children:t.split(`
19
19
  `).map((j,p)=>e.jsx("li",{children:j},p))},i))]}),e.jsxs("section",{children:[e.jsx("h2",{children:s("dataRetentionTitle")}),e.jsx("p",{children:s("dataRetention")})]}),e.jsxs("section",{children:[e.jsx("h2",{children:s("internationalTransfersTitle")}),e.jsx("p",{children:s("internationalTransfers")})]}),e.jsxs("section",{children:[e.jsx("h2",{children:s("contactTitle")}),e.jsx("p",{children:s("contactIntro")}),e.jsx("div",{className:"semiont-static-info-box",children:e.jsxs("p",{children:[e.jsx("strong",{children:s("contactEmail")})," privacy@semiont.com",e.jsx("br",{}),e.jsx("strong",{children:s("contactAddress")})," [Your Company Address]"]})})]}),e.jsxs("section",{children:[e.jsx("h2",{children:s("updatesTitle")}),e.jsx("p",{children:s("updates")}),e.jsx("footer",{className:"semiont-static-footer",children:e.jsx("p",{children:e.jsx("strong",{children:s("lastUpdated",{date:new Date().toLocaleDateString()})})})})]})]})]})})})}export{b as default};
20
- //# sourceMappingURL=page-DwQP9ZTM.js.map
20
+ //# sourceMappingURL=page-CnBwmYIE.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-DwQP9ZTM.js","sources":["../../src/app/[locale]/privacy/page.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function PrivacyPolicyPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Privacy.${k}`, p as any) as string;\n const { t: _tFooter } = useTranslation();\n const tFooter = (k: string, p?: Record<string, unknown>) => _tFooter(`Footer.${k}`, p as any) as string;\n const { t: _tNav } = useTranslation();\n const tNav = (k: string, p?: Record<string, unknown>) => _tNav(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-static-page\"\n >\n <div className=\"semiont-static-container\">\n <div className=\"semiont-static-content\">\n <header className=\"semiont-static-header\">\n <h1 className=\"semiont-static-title\">{t('pageTitle')}</h1>\n </header>\n\n <article className=\"semiont-static-article\">\n <section>\n <h2>{t('introTitle')}</h2>\n {t('intro').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </section>\n\n <section>\n <h2>{t('infoCollectTitle')}</h2>\n\n <h3>{t('personalInfoTitle')}</h3>\n <ul>\n {t('personalInfo').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('autoCollectTitle')}</h3>\n <ul>\n {t('autoCollect').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('howWeUseTitle')}</h2>\n <ul>\n {t('howWeUse').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('cookiePolicyTitle')}</h2>\n <p>\n {t('cookiePolicyIntro')}\n </p>\n\n <h3>{t('cookieCategoriesTitle')}</h3>\n\n <div className=\"semiont-static-cookie-grid\">\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('necessaryCookiesTitle')}</h4>\n {t('necessaryCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('analyticsCookiesTitle')}</h4>\n {t('analyticsCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('marketingCookiesTitle')}</h4>\n {t('marketingCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('preferenceCookiesTitle')}</h4>\n {t('preferenceCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n </div>\n </section>\n\n <section>\n <h2>{t('yourRightsTitle')}</h2>\n\n <h3>{t('gdprRightsTitle')}</h3>\n <ul>\n {t('gdprRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('ccpaRightsTitle')}</h3>\n <ul>\n {t('ccpaRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('dataSecurityTitle')}</h2>\n {t('dataSecurity').split('\\n\\n').map((block, i) => {\n if (i === 0) {\n return (\n <p key={i}>\n {block}\n </p>\n );\n }\n return (\n <ul key={i}>\n {block.split('\\n').map((item, j) => (\n <li key={j}>{item}</li>\n ))}\n </ul>\n );\n })}\n </section>\n\n <section>\n <h2>{t('dataRetentionTitle')}</h2>\n <p>\n {t('dataRetention')}\n </p>\n </section>\n\n <section>\n <h2>{t('internationalTransfersTitle')}</h2>\n <p>\n {t('internationalTransfers')}\n </p>\n </section>\n\n <section>\n <h2>{t('contactTitle')}</h2>\n <p>\n {t('contactIntro')}\n </p>\n <div className=\"semiont-static-info-box\">\n <p>\n <strong>{t('contactEmail')}</strong> privacy@semiont.com<br />\n <strong>{t('contactAddress')}</strong> [Your Company Address]\n </p>\n </div>\n </section>\n\n <section>\n <h2>{t('updatesTitle')}</h2>\n <p>\n {t('updates')}\n </p>\n <footer className=\"semiont-static-footer\">\n <p>\n <strong>{t('lastUpdated', { date: new Date().toLocaleDateString() })}</strong>\n </p>\n </footer>\n </section>\n </article>\n </div>\n </div>\n </PageLayout>\n );\n}"],"names":["PrivacyPolicyPage","_t","useTranslation","t","k","p","_tFooter","tFooter","_tNav","tNav","_tHome","tHome","keyboardContext","useContext","KeyboardShortcutsContext","jsx","PageLayout","RoutingLink","routes","CookiePreferences","jsxs","para","item","block","j"],"mappings":"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"}
1
+ {"version":3,"file":"page-CnBwmYIE.js","sources":["../../src/app/[locale]/privacy/page.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function PrivacyPolicyPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Privacy.${k}`, p as any) as string;\n const { t: _tFooter } = useTranslation();\n const tFooter = (k: string, p?: Record<string, unknown>) => _tFooter(`Footer.${k}`, p as any) as string;\n const { t: _tNav } = useTranslation();\n const tNav = (k: string, p?: Record<string, unknown>) => _tNav(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-static-page\"\n >\n <div className=\"semiont-static-container\">\n <div className=\"semiont-static-content\">\n <header className=\"semiont-static-header\">\n <h1 className=\"semiont-static-title\">{t('pageTitle')}</h1>\n </header>\n\n <article className=\"semiont-static-article\">\n <section>\n <h2>{t('introTitle')}</h2>\n {t('intro').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </section>\n\n <section>\n <h2>{t('infoCollectTitle')}</h2>\n\n <h3>{t('personalInfoTitle')}</h3>\n <ul>\n {t('personalInfo').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('autoCollectTitle')}</h3>\n <ul>\n {t('autoCollect').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('howWeUseTitle')}</h2>\n <ul>\n {t('howWeUse').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('cookiePolicyTitle')}</h2>\n <p>\n {t('cookiePolicyIntro')}\n </p>\n\n <h3>{t('cookieCategoriesTitle')}</h3>\n\n <div className=\"semiont-static-cookie-grid\">\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('necessaryCookiesTitle')}</h4>\n {t('necessaryCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('analyticsCookiesTitle')}</h4>\n {t('analyticsCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('marketingCookiesTitle')}</h4>\n {t('marketingCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('preferenceCookiesTitle')}</h4>\n {t('preferenceCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n </div>\n </section>\n\n <section>\n <h2>{t('yourRightsTitle')}</h2>\n\n <h3>{t('gdprRightsTitle')}</h3>\n <ul>\n {t('gdprRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('ccpaRightsTitle')}</h3>\n <ul>\n {t('ccpaRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('dataSecurityTitle')}</h2>\n {t('dataSecurity').split('\\n\\n').map((block, i) => {\n if (i === 0) {\n return (\n <p key={i}>\n {block}\n </p>\n );\n }\n return (\n <ul key={i}>\n {block.split('\\n').map((item, j) => (\n <li key={j}>{item}</li>\n ))}\n </ul>\n );\n })}\n </section>\n\n <section>\n <h2>{t('dataRetentionTitle')}</h2>\n <p>\n {t('dataRetention')}\n </p>\n </section>\n\n <section>\n <h2>{t('internationalTransfersTitle')}</h2>\n <p>\n {t('internationalTransfers')}\n </p>\n </section>\n\n <section>\n <h2>{t('contactTitle')}</h2>\n <p>\n {t('contactIntro')}\n </p>\n <div className=\"semiont-static-info-box\">\n <p>\n <strong>{t('contactEmail')}</strong> privacy@semiont.com<br />\n <strong>{t('contactAddress')}</strong> [Your Company Address]\n </p>\n </div>\n </section>\n\n <section>\n <h2>{t('updatesTitle')}</h2>\n <p>\n {t('updates')}\n </p>\n <footer className=\"semiont-static-footer\">\n <p>\n <strong>{t('lastUpdated', { date: new Date().toLocaleDateString() })}</strong>\n </p>\n </footer>\n </section>\n </article>\n </div>\n </div>\n </PageLayout>\n );\n}"],"names":["PrivacyPolicyPage","_t","useTranslation","t","k","p","_tFooter","tFooter","_tNav","tNav","_tHome","tHome","keyboardContext","useContext","KeyboardShortcutsContext","jsx","PageLayout","RoutingLink","routes","CookiePreferences","jsxs","para","item","block","j"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as d}from"./query-ATBhtd3K.js";import{r as i,u as ne}from"./vendor-EnoIVk-c.js";import{u as se,a as re}from"./routing-nZgBtxly.js";import{u as ce}from"./useAuth-CqtZE9nt.js";import{C as A,u as ie,d as ae,e as ue,f as le,j as de,g as pe,h as me,k as fe,i as ge,l as ye,m as he,n as Ce,T as Re,r as L,o as ke,p as Te,q as ve}from"./en-IUV4ZXKH-BjYNERUx.js";import{T as we}from"./ToolbarPanels-tcvPzqNN.js";import{u as M}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";import"./AuthContext-CYne_gJM.js";import"./KnowledgeBaseContext-CgnF8K-_.js";import"./PlusIcon-qGFPUzg0.js";function Ie(){const{t:f}=M(),e=(t,n)=>f(`Compose.${t}`,n),g=se(),c=re(),[o]=ne(),{isAuthenticated:y,isLoading:p,token:U}=ce(),{showError:u,showSuccess:E}=ie(),D=o==null?void 0:o.get("mode"),l=o==null?void 0:o.get("token");i.useEffect(()=>{p||y||c.push("/")},[p,y,c]);const m=o==null?void 0:o.get("annotationUri"),h=o==null?void 0:o.get("sourceDocumentId"),C=o==null?void 0:o.get("name"),R=o==null?void 0:o.get("entityTypes"),[N,k]=i.useState(!0),[j,B]=i.useState(null),[O,$]=i.useState(null),[P,Q]=i.useState(null),{activePanel:_}=ae(),{theme:xe,setTheme:q,resolvedTheme:G}=ue(),{showLineNumbers:H,toggleLineNumbers:J}=le(),{hoverDelayMs:K}=de();pe({"settings:theme-changed":({theme:t})=>q(t),"settings:line-numbers-toggled":()=>J()});const T=me(),W=fe(),Y=ge(),F=ye(),b=he(),{data:v}=Y.list.useQuery(),z=(v==null?void 0:v.entityTypes)||[],V=T.create.useMutation(),X=W.updateBody.useMutation(),{data:a}=T.getByToken.useQuery(l||""),Z=T.createFromToken.useMutation(),S=!!(m&&h&&C),w=D==="clone"&&!!l,ee=w?"clone":S?"reference":"new";i.useEffect(()=>{(async()=>{if(S){const n=R?R.split(","):[];$({annotationUri:m,sourceDocumentId:h,name:C,entityTypes:n});const s=`gather-context:${m}`,r=sessionStorage.getItem(s);if(r){try{Q(JSON.parse(r))}catch{}sessionStorage.removeItem(s)}k(!1);return}if(w&&a){if(a.sourceResource&&F&&b)try{const n=L(a.sourceResource["@id"]),s=ke(a.sourceResource)||"text/plain",{data:r}=await F.getResourceRepresentation(n,{accept:s,auth:b}),I=Te(r,s);B({sourceResource:a.sourceResource,sourceContent:I})}catch(n){console.error("Failed to fetch representation:",n),u("Failed to load resource representation")}else u("Invalid or expired clone token"),c.push("/know/discover");k(!1)}else w&&!l?(u("Clone token not found. Please try cloning again."),c.push("/know/discover")):k(!1)})()},[D,l,a,m,h,C,R,U]);const te=async t=>{try{let n;if(t.mode==="clone")n=(await Z.mutateAsync({token:l,name:t.name,content:t.content,archiveOriginal:t.archiveOriginal??!0})).resourceId;else{let s,r;if(t.file)s=t.file,r=t.format??"application/octet-stream";else{const x=new Blob([t.content||""],{type:t.format??"application/octet-stream"}),oe=t.format==="text/plain"?".txt":t.format==="text/html"?".html":".md";s=new File([x],t.name+oe,{type:t.format??"application/octet-stream"}),r=t.format??"application/octet-stream"}const I=t.charset&&!t.file?`${r}; charset=${t.charset}`:r;if(n=(await V.mutateAsync({name:t.name,file:s,format:I,entityTypes:t.entityTypes||[],language:t.language,creationMethod:"ui",storageUri:t.storageUri})).resourceId,t.mode==="reference"&&t.annotationUri&&t.sourceDocumentId)try{await X.mutateAsync({resourceId:L(t.sourceDocumentId),annotationId:ve(t.annotationUri),data:{resourceId:t.sourceDocumentId,operations:[{op:"add",item:{type:"SpecificResource",source:n,purpose:"linking"}}]}}),E("Reference successfully linked to the new resource")}catch(x){console.error("Failed to update reference:",x),u("Resource created but failed to update reference. You may need to manually link it.")}}c.push(`/know/resource/${encodeURIComponent(n)}`)}catch(n){console.error("Failed to save resource:",n);const s=n instanceof Error?n.message:"Failed to save resource. Please try again.";throw u(s),n}};return p||N?d.jsx(A,{message:p?"Checking authentication...":"Loading cloned resource..."}):y?d.jsx(Ce,{mode:ee,cloneData:j,referenceData:O,gatheredContext:P,availableEntityTypes:z,initialLocale:g,theme:G,showLineNumbers:H,hoverDelayMs:K,activePanel:_,onSaveResource:te,onCancel:()=>c.push("/know/discover"),translations:{title:e("title"),titleEditClone:e("titleEditClone"),titleCompleteReference:e("titleCompleteReference"),subtitleClone:e("subtitleClone"),subtitleReference:e("subtitleReference"),linkedNoticePrefix:e("linkedNoticePrefix"),resourceName:e("resourceName"),resourceNamePlaceholder:e("resourceNamePlaceholder"),entityTypes:e("entityTypes"),language:e("language"),contentSource:e("contentSource"),uploadFile:e("uploadFile"),uploadFileDescription:e("uploadFileDescription"),writeContent:e("writeContent"),writeContentDescription:e("writeContentDescription"),dropFileOrClick:e("dropFileOrClick"),supportedFormats:e("supportedFormats"),mediaType:e("mediaType"),autoDetected:e("autoDetected"),format:e("format"),content:e("content"),resourceContent:e("resourceContent"),encoding:e("encoding"),archiveOriginal:e("archiveOriginal"),cancel:e("cancel"),saving:e("saving"),creating:e("creating"),creatingAndLinking:e("creatingAndLinking"),saveClonedResource:e("saveClonedResource"),createAndLinkResource:e("createAndLinkResource"),createResource:e("createResource")},ToolbarPanels:we,Toolbar:Re}):null}function Oe(){const{t:f}=M(),e=(g,c)=>f(`Compose.${g}`,c);return d.jsx(i.Suspense,{fallback:d.jsx(A,{message:e("loading")}),children:d.jsx(Ie,{})})}export{Oe as default};
2
+ //# sourceMappingURL=page-D9kiPafj.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-VpcpXQSK.js","sources":["../../src/app/[locale]/know/compose/page.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Resource Compose Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (routing, auth, data loading, hooks)\n * and delegates rendering to the pure React ResourceComposePage component.\n */\n\nimport React, { useState, useEffect, Suspense } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocale } from '@/i18n/routing';\nimport { useRouter } from '@/i18n/routing';\nimport { useSearchParams } from 'react-router-dom';\nimport { useAuth } from '@/hooks/useAuth';\nimport { useResources, useAnnotations, useEntityTypes, useApiClient, useAuthToken } from '@semiont/react-ui';\nimport { useToast } from '@semiont/react-ui';\nimport { useTheme } from '@semiont/react-ui';\nimport { usePanelBrowse } from '@semiont/react-ui';\nimport { useLineNumbers } from '@semiont/react-ui';\nimport { useHoverDelay } from '@semiont/react-ui';\nimport { useEventSubscriptions } from '@semiont/react-ui';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { resourceId as toResourceId, annotationId as toAnnotationId, ContentFormat, AccessToken, type GatheredContext } from '@semiont/core';\nimport { getPrimaryMediaType } from '@semiont/api-client';\nimport { decodeWithCharset } from '@semiont/api-client';\nimport { ComposeLoadingState } from '@semiont/react-ui';\nimport { ResourceComposePage } from '@semiont/react-ui';\nimport type { SaveResourceParams } from '@semiont/react-ui';\n\nfunction ComposeResourceContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n const locale = useLocale();\n const router = useRouter();\n const [searchParams] = useSearchParams();\n const { isAuthenticated, isLoading: authLoading, token: authToken } = useAuth();\n const { showError, showSuccess } = useToast();\n const mode = searchParams?.get('mode');\n const tokenFromUrl = searchParams?.get('token');\n\n // Authentication guard - redirect to home if not authenticated\n useEffect(() => {\n if (authLoading) return;\n if (!isAuthenticated) {\n router.push('/');\n }\n }, [authLoading, isAuthenticated, router]);\n\n // Reference completion parameters\n const annotationUriParam = searchParams?.get('annotationUri');\n const sourceDocumentId = searchParams?.get('sourceDocumentId');\n const nameFromUrl = searchParams?.get('name');\n const entityTypesFromUrl = searchParams?.get('entityTypes');\n\n const [isLoading, setIsLoading] = useState(true);\n const [cloneData, setCloneData] = useState<any>(null);\n const [referenceData, setReferenceData] = useState<any>(null);\n const [gatheredContext, setGatheredContext] = useState<GatheredContext | null>(null);\n\n // Toolbar and settings state\n const { activePanel } = usePanelBrowse();\n const { theme, setTheme, resolvedTheme } = useTheme();\n const { showLineNumbers, toggleLineNumbers } = useLineNumbers();\n const { hoverDelayMs } = useHoverDelay();\n\n // Subscribe to settings events\n useEventSubscriptions({\n 'settings:theme-changed': ({ theme }: { theme: 'light' | 'dark' | 'system' }) => setTheme(theme),\n 'settings:line-numbers-toggled': () => toggleLineNumbers(),\n });\n\n // API hooks\n const resources = useResources();\n const annotations = useAnnotations();\n const entityTypesAPI = useEntityTypes();\n const client = useApiClient();\n const token = useAuthToken();\n\n // Fetch available entity types\n const { data: entityTypesData } = entityTypesAPI.list.useQuery();\n const availableEntityTypes = (entityTypesData as { entityTypes: string[] } | undefined)?.entityTypes || [];\n\n // Set up mutation hooks\n const createResourceMutation = resources.create.useMutation();\n const updateAnnotationBodyMutation = annotations.updateBody.useMutation();\n\n // Fetch cloned resource data if in clone mode\n const { data: cloneDataResponse } = resources.getByToken.useQuery(tokenFromUrl || '');\n const createFromTokenMutation = resources.createFromToken.useMutation();\n\n // Determine mode\n const isReferenceMode = Boolean(annotationUriParam && sourceDocumentId && nameFromUrl);\n const isCloneMode = mode === 'clone' && Boolean(tokenFromUrl);\n const pageMode = isCloneMode ? 'clone' : isReferenceMode ? 'reference' : 'new';\n\n // Load cloned resource data or reference completion data\n useEffect(() => {\n const loadInitialData = async () => {\n // Handle reference completion mode\n if (isReferenceMode) {\n const entityTypes = entityTypesFromUrl ? entityTypesFromUrl.split(',') : [];\n setReferenceData({\n annotationUri: annotationUriParam!,\n sourceDocumentId: sourceDocumentId!,\n name: nameFromUrl!,\n entityTypes,\n });\n\n // Read gathered context from sessionStorage (stored by wizard)\n const contextKey = `gather-context:${annotationUriParam}`;\n const stored = sessionStorage.getItem(contextKey);\n if (stored) {\n try {\n setGatheredContext(JSON.parse(stored));\n } catch {\n // Ignore malformed context\n }\n sessionStorage.removeItem(contextKey);\n }\n\n setIsLoading(false);\n return;\n }\n\n // Handle clone mode\n if (isCloneMode && cloneDataResponse) {\n if (cloneDataResponse.sourceResource && client && token) {\n try {\n const rId = toResourceId(cloneDataResponse.sourceResource['@id']);\n const mediaType = getPrimaryMediaType(cloneDataResponse.sourceResource) || 'text/plain';\n const { data } = await client.getResourceRepresentation(rId, {\n accept: mediaType as ContentFormat,\n auth: token as AccessToken,\n });\n const content = decodeWithCharset(data, mediaType);\n\n setCloneData({\n sourceResource: cloneDataResponse.sourceResource,\n sourceContent: content,\n });\n } catch (error) {\n console.error('Failed to fetch representation:', error);\n showError('Failed to load resource representation');\n }\n } else {\n showError('Invalid or expired clone token');\n router.push('/know/discover');\n }\n setIsLoading(false);\n } else if (isCloneMode && !tokenFromUrl) {\n showError('Clone token not found. Please try cloning again.');\n router.push('/know/discover');\n } else {\n setIsLoading(false);\n }\n };\n\n loadInitialData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, tokenFromUrl, cloneDataResponse, annotationUriParam, sourceDocumentId, nameFromUrl, entityTypesFromUrl, authToken]);\n\n // Handle save resource\n const handleSaveResource = async (params: SaveResourceParams) => {\n try {\n let newResourceId: string;\n\n if (params.mode === 'clone') {\n // Create resource from clone token with edited content\n const response = await createFromTokenMutation.mutateAsync({\n token: tokenFromUrl!,\n name: params.name,\n content: params.content!,\n archiveOriginal: params.archiveOriginal ?? true,\n });\n\n newResourceId = response.resourceId;\n } else {\n // Create a new resource with entity types\n let fileToUpload: File;\n let mimeType: string;\n\n if (params.file) {\n fileToUpload = params.file;\n mimeType = params.format ?? 'application/octet-stream';\n } else {\n const blob = new Blob([params.content || ''], { type: params.format ?? 'application/octet-stream' });\n const extension = params.format === 'text/plain' ? '.txt' : params.format === 'text/html' ? '.html' : '.md';\n fileToUpload = new File([blob], params.name + extension, { type: params.format ?? 'application/octet-stream' });\n mimeType = params.format ?? 'application/octet-stream';\n }\n\n const format = params.charset && !params.file ? `${mimeType}; charset=${params.charset}` : mimeType;\n\n const response = await createResourceMutation.mutateAsync({\n name: params.name,\n file: fileToUpload,\n format,\n entityTypes: params.entityTypes || [],\n language: params.language,\n creationMethod: 'ui',\n storageUri: params.storageUri,\n });\n\n newResourceId = response.resourceId;\n\n // If this is a reference completion, update the reference\n if (params.mode === 'reference' && params.annotationUri && params.sourceDocumentId) {\n try {\n await updateAnnotationBodyMutation.mutateAsync({\n resourceId: toResourceId(params.sourceDocumentId),\n annotationId: toAnnotationId(params.annotationUri),\n data: {\n resourceId: params.sourceDocumentId,\n operations: [{\n op: 'add',\n item: {\n type: 'SpecificResource',\n source: newResourceId,\n purpose: 'linking',\n },\n }],\n },\n });\n showSuccess('Reference successfully linked to the new resource');\n } catch (error) {\n console.error('Failed to update reference:', error);\n showError('Resource created but failed to update reference. You may need to manually link it.');\n }\n }\n }\n\n // Navigate to the new resource\n router.push(`/know/resource/${encodeURIComponent(newResourceId)}`);\n } catch (error) {\n console.error('Failed to save resource:', error);\n const errorMessage = error instanceof Error ? error.message : 'Failed to save resource. Please try again.';\n showError(errorMessage);\n throw error;\n }\n };\n\n // Show loading state\n if (authLoading || isLoading) {\n return (\n <ComposeLoadingState\n message={authLoading ? 'Checking authentication...' : 'Loading cloned resource...'}\n />\n );\n }\n\n // Don't render if not authenticated\n if (!isAuthenticated) {\n return null;\n }\n\n // Render the pure component\n return (\n <ResourceComposePage\n mode={pageMode}\n cloneData={cloneData}\n referenceData={referenceData}\n gatheredContext={gatheredContext}\n availableEntityTypes={availableEntityTypes}\n initialLocale={locale}\n theme={resolvedTheme}\n showLineNumbers={showLineNumbers}\n hoverDelayMs={hoverDelayMs}\n activePanel={activePanel}\n onSaveResource={handleSaveResource}\n onCancel={() => router.push('/know/discover')}\n translations={{\n title: t('title'),\n titleEditClone: t('titleEditClone'),\n titleCompleteReference: t('titleCompleteReference'),\n subtitleClone: t('subtitleClone'),\n subtitleReference: t('subtitleReference'),\n linkedNoticePrefix: t('linkedNoticePrefix'),\n resourceName: t('resourceName'),\n resourceNamePlaceholder: t('resourceNamePlaceholder'),\n entityTypes: t('entityTypes'),\n language: t('language'),\n contentSource: t('contentSource'),\n uploadFile: t('uploadFile'),\n uploadFileDescription: t('uploadFileDescription'),\n writeContent: t('writeContent'),\n writeContentDescription: t('writeContentDescription'),\n dropFileOrClick: t('dropFileOrClick'),\n supportedFormats: t('supportedFormats'),\n mediaType: t('mediaType'),\n autoDetected: t('autoDetected'),\n format: t('format'),\n content: t('content'),\n resourceContent: t('resourceContent'),\n encoding: t('encoding'),\n archiveOriginal: t('archiveOriginal'),\n cancel: t('cancel'),\n saving: t('saving'),\n creating: t('creating'),\n creatingAndLinking: t('creatingAndLinking'),\n saveClonedResource: t('saveClonedResource'),\n createAndLinkResource: t('createAndLinkResource'),\n createResource: t('createResource'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n\nexport default function ComposeResourcePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n\n return (\n <Suspense fallback={<ComposeLoadingState message={t('loading')} />}>\n <ComposeResourceContent />\n </Suspense>\n );\n}\n"],"names":["ComposeResourceContent","_t","useTranslation","t","k","p","locale","useLocale","router","useRouter","searchParams","useSearchParams","isAuthenticated","authLoading","authToken","useAuth","showError","showSuccess","useToast","mode","tokenFromUrl","useEffect","annotationUriParam","sourceDocumentId","nameFromUrl","entityTypesFromUrl","isLoading","setIsLoading","useState","cloneData","setCloneData","referenceData","setReferenceData","gatheredContext","setGatheredContext","activePanel","usePanelBrowse","theme","setTheme","resolvedTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","hoverDelayMs","useHoverDelay","useEventSubscriptions","resources","useResources","annotations","useAnnotations","entityTypesAPI","useEntityTypes","client","useApiClient","token","useAuthToken","entityTypesData","availableEntityTypes","createResourceMutation","updateAnnotationBodyMutation","cloneDataResponse","createFromTokenMutation","isReferenceMode","isCloneMode","pageMode","entityTypes","contextKey","stored","rId","toResourceId","mediaType","getPrimaryMediaType","data","content","decodeWithCharset","error","handleSaveResource","params","newResourceId","fileToUpload","mimeType","blob","extension","format","toAnnotationId","errorMessage","jsx","ComposeLoadingState","ResourceComposePage","ToolbarPanels","Toolbar","ComposeResourcePage","Suspense"],"mappings":"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"}
1
+ {"version":3,"file":"page-D9kiPafj.js","sources":["../../src/app/[locale]/know/compose/page.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Resource Compose Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (routing, auth, data loading, hooks)\n * and delegates rendering to the pure React ResourceComposePage component.\n */\n\nimport React, { useState, useEffect, Suspense } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocale } from '@/i18n/routing';\nimport { useRouter } from '@/i18n/routing';\nimport { useSearchParams } from 'react-router-dom';\nimport { useAuth } from '@/hooks/useAuth';\nimport { useResources, useAnnotations, useEntityTypes, useApiClient, useAuthToken } from '@semiont/react-ui';\nimport { useToast } from '@semiont/react-ui';\nimport { useTheme } from '@semiont/react-ui';\nimport { usePanelBrowse } from '@semiont/react-ui';\nimport { useLineNumbers } from '@semiont/react-ui';\nimport { useHoverDelay } from '@semiont/react-ui';\nimport { useEventSubscriptions } from '@semiont/react-ui';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { resourceId as toResourceId, annotationId as toAnnotationId, ContentFormat, AccessToken, type GatheredContext } from '@semiont/core';\nimport { getPrimaryMediaType } from '@semiont/api-client';\nimport { decodeWithCharset } from '@semiont/api-client';\nimport { ComposeLoadingState } from '@semiont/react-ui';\nimport { ResourceComposePage } from '@semiont/react-ui';\nimport type { SaveResourceParams } from '@semiont/react-ui';\n\nfunction ComposeResourceContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n const locale = useLocale();\n const router = useRouter();\n const [searchParams] = useSearchParams();\n const { isAuthenticated, isLoading: authLoading, token: authToken } = useAuth();\n const { showError, showSuccess } = useToast();\n const mode = searchParams?.get('mode');\n const tokenFromUrl = searchParams?.get('token');\n\n // Authentication guard - redirect to home if not authenticated\n useEffect(() => {\n if (authLoading) return;\n if (!isAuthenticated) {\n router.push('/');\n }\n }, [authLoading, isAuthenticated, router]);\n\n // Reference completion parameters\n const annotationUriParam = searchParams?.get('annotationUri');\n const sourceDocumentId = searchParams?.get('sourceDocumentId');\n const nameFromUrl = searchParams?.get('name');\n const entityTypesFromUrl = searchParams?.get('entityTypes');\n\n const [isLoading, setIsLoading] = useState(true);\n const [cloneData, setCloneData] = useState<any>(null);\n const [referenceData, setReferenceData] = useState<any>(null);\n const [gatheredContext, setGatheredContext] = useState<GatheredContext | null>(null);\n\n // Toolbar and settings state\n const { activePanel } = usePanelBrowse();\n const { theme, setTheme, resolvedTheme } = useTheme();\n const { showLineNumbers, toggleLineNumbers } = useLineNumbers();\n const { hoverDelayMs } = useHoverDelay();\n\n // Subscribe to settings events\n useEventSubscriptions({\n 'settings:theme-changed': ({ theme }: { theme: 'light' | 'dark' | 'system' }) => setTheme(theme),\n 'settings:line-numbers-toggled': () => toggleLineNumbers(),\n });\n\n // API hooks\n const resources = useResources();\n const annotations = useAnnotations();\n const entityTypesAPI = useEntityTypes();\n const client = useApiClient();\n const token = useAuthToken();\n\n // Fetch available entity types\n const { data: entityTypesData } = entityTypesAPI.list.useQuery();\n const availableEntityTypes = (entityTypesData as { entityTypes: string[] } | undefined)?.entityTypes || [];\n\n // Set up mutation hooks\n const createResourceMutation = resources.create.useMutation();\n const updateAnnotationBodyMutation = annotations.updateBody.useMutation();\n\n // Fetch cloned resource data if in clone mode\n const { data: cloneDataResponse } = resources.getByToken.useQuery(tokenFromUrl || '');\n const createFromTokenMutation = resources.createFromToken.useMutation();\n\n // Determine mode\n const isReferenceMode = Boolean(annotationUriParam && sourceDocumentId && nameFromUrl);\n const isCloneMode = mode === 'clone' && Boolean(tokenFromUrl);\n const pageMode = isCloneMode ? 'clone' : isReferenceMode ? 'reference' : 'new';\n\n // Load cloned resource data or reference completion data\n useEffect(() => {\n const loadInitialData = async () => {\n // Handle reference completion mode\n if (isReferenceMode) {\n const entityTypes = entityTypesFromUrl ? entityTypesFromUrl.split(',') : [];\n setReferenceData({\n annotationUri: annotationUriParam!,\n sourceDocumentId: sourceDocumentId!,\n name: nameFromUrl!,\n entityTypes,\n });\n\n // Read gathered context from sessionStorage (stored by wizard)\n const contextKey = `gather-context:${annotationUriParam}`;\n const stored = sessionStorage.getItem(contextKey);\n if (stored) {\n try {\n setGatheredContext(JSON.parse(stored));\n } catch {\n // Ignore malformed context\n }\n sessionStorage.removeItem(contextKey);\n }\n\n setIsLoading(false);\n return;\n }\n\n // Handle clone mode\n if (isCloneMode && cloneDataResponse) {\n if (cloneDataResponse.sourceResource && client && token) {\n try {\n const rId = toResourceId(cloneDataResponse.sourceResource['@id']);\n const mediaType = getPrimaryMediaType(cloneDataResponse.sourceResource) || 'text/plain';\n const { data } = await client.getResourceRepresentation(rId, {\n accept: mediaType as ContentFormat,\n auth: token as AccessToken,\n });\n const content = decodeWithCharset(data, mediaType);\n\n setCloneData({\n sourceResource: cloneDataResponse.sourceResource,\n sourceContent: content,\n });\n } catch (error) {\n console.error('Failed to fetch representation:', error);\n showError('Failed to load resource representation');\n }\n } else {\n showError('Invalid or expired clone token');\n router.push('/know/discover');\n }\n setIsLoading(false);\n } else if (isCloneMode && !tokenFromUrl) {\n showError('Clone token not found. Please try cloning again.');\n router.push('/know/discover');\n } else {\n setIsLoading(false);\n }\n };\n\n loadInitialData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [mode, tokenFromUrl, cloneDataResponse, annotationUriParam, sourceDocumentId, nameFromUrl, entityTypesFromUrl, authToken]);\n\n // Handle save resource\n const handleSaveResource = async (params: SaveResourceParams) => {\n try {\n let newResourceId: string;\n\n if (params.mode === 'clone') {\n // Create resource from clone token with edited content\n const response = await createFromTokenMutation.mutateAsync({\n token: tokenFromUrl!,\n name: params.name,\n content: params.content!,\n archiveOriginal: params.archiveOriginal ?? true,\n });\n\n newResourceId = response.resourceId;\n } else {\n // Create a new resource with entity types\n let fileToUpload: File;\n let mimeType: string;\n\n if (params.file) {\n fileToUpload = params.file;\n mimeType = params.format ?? 'application/octet-stream';\n } else {\n const blob = new Blob([params.content || ''], { type: params.format ?? 'application/octet-stream' });\n const extension = params.format === 'text/plain' ? '.txt' : params.format === 'text/html' ? '.html' : '.md';\n fileToUpload = new File([blob], params.name + extension, { type: params.format ?? 'application/octet-stream' });\n mimeType = params.format ?? 'application/octet-stream';\n }\n\n const format = params.charset && !params.file ? `${mimeType}; charset=${params.charset}` : mimeType;\n\n const response = await createResourceMutation.mutateAsync({\n name: params.name,\n file: fileToUpload,\n format,\n entityTypes: params.entityTypes || [],\n language: params.language,\n creationMethod: 'ui',\n storageUri: params.storageUri,\n });\n\n newResourceId = response.resourceId;\n\n // If this is a reference completion, update the reference\n if (params.mode === 'reference' && params.annotationUri && params.sourceDocumentId) {\n try {\n await updateAnnotationBodyMutation.mutateAsync({\n resourceId: toResourceId(params.sourceDocumentId),\n annotationId: toAnnotationId(params.annotationUri),\n data: {\n resourceId: params.sourceDocumentId,\n operations: [{\n op: 'add',\n item: {\n type: 'SpecificResource',\n source: newResourceId,\n purpose: 'linking',\n },\n }],\n },\n });\n showSuccess('Reference successfully linked to the new resource');\n } catch (error) {\n console.error('Failed to update reference:', error);\n showError('Resource created but failed to update reference. You may need to manually link it.');\n }\n }\n }\n\n // Navigate to the new resource\n router.push(`/know/resource/${encodeURIComponent(newResourceId)}`);\n } catch (error) {\n console.error('Failed to save resource:', error);\n const errorMessage = error instanceof Error ? error.message : 'Failed to save resource. Please try again.';\n showError(errorMessage);\n throw error;\n }\n };\n\n // Show loading state\n if (authLoading || isLoading) {\n return (\n <ComposeLoadingState\n message={authLoading ? 'Checking authentication...' : 'Loading cloned resource...'}\n />\n );\n }\n\n // Don't render if not authenticated\n if (!isAuthenticated) {\n return null;\n }\n\n // Render the pure component\n return (\n <ResourceComposePage\n mode={pageMode}\n cloneData={cloneData}\n referenceData={referenceData}\n gatheredContext={gatheredContext}\n availableEntityTypes={availableEntityTypes}\n initialLocale={locale}\n theme={resolvedTheme}\n showLineNumbers={showLineNumbers}\n hoverDelayMs={hoverDelayMs}\n activePanel={activePanel}\n onSaveResource={handleSaveResource}\n onCancel={() => router.push('/know/discover')}\n translations={{\n title: t('title'),\n titleEditClone: t('titleEditClone'),\n titleCompleteReference: t('titleCompleteReference'),\n subtitleClone: t('subtitleClone'),\n subtitleReference: t('subtitleReference'),\n linkedNoticePrefix: t('linkedNoticePrefix'),\n resourceName: t('resourceName'),\n resourceNamePlaceholder: t('resourceNamePlaceholder'),\n entityTypes: t('entityTypes'),\n language: t('language'),\n contentSource: t('contentSource'),\n uploadFile: t('uploadFile'),\n uploadFileDescription: t('uploadFileDescription'),\n writeContent: t('writeContent'),\n writeContentDescription: t('writeContentDescription'),\n dropFileOrClick: t('dropFileOrClick'),\n supportedFormats: t('supportedFormats'),\n mediaType: t('mediaType'),\n autoDetected: t('autoDetected'),\n format: t('format'),\n content: t('content'),\n resourceContent: t('resourceContent'),\n encoding: t('encoding'),\n archiveOriginal: t('archiveOriginal'),\n cancel: t('cancel'),\n saving: t('saving'),\n creating: t('creating'),\n creatingAndLinking: t('creatingAndLinking'),\n saveClonedResource: t('saveClonedResource'),\n createAndLinkResource: t('createAndLinkResource'),\n createResource: t('createResource'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n\nexport default function ComposeResourcePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n\n return (\n <Suspense fallback={<ComposeLoadingState message={t('loading')} />}>\n <ComposeResourceContent />\n </Suspense>\n );\n}\n"],"names":["ComposeResourceContent","_t","useTranslation","t","k","p","locale","useLocale","router","useRouter","searchParams","useSearchParams","isAuthenticated","authLoading","authToken","useAuth","showError","showSuccess","useToast","mode","tokenFromUrl","useEffect","annotationUriParam","sourceDocumentId","nameFromUrl","entityTypesFromUrl","isLoading","setIsLoading","useState","cloneData","setCloneData","referenceData","setReferenceData","gatheredContext","setGatheredContext","activePanel","usePanelBrowse","theme","setTheme","resolvedTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","hoverDelayMs","useHoverDelay","useEventSubscriptions","resources","useResources","annotations","useAnnotations","entityTypesAPI","useEntityTypes","client","useApiClient","token","useAuthToken","entityTypesData","availableEntityTypes","createResourceMutation","updateAnnotationBodyMutation","cloneDataResponse","createFromTokenMutation","isReferenceMode","isCloneMode","pageMode","entityTypes","contextKey","stored","rId","toResourceId","mediaType","getPrimaryMediaType","data","content","decodeWithCharset","error","handleSaveResource","params","newResourceId","fileToUpload","mimeType","blob","extension","format","toAnnotationId","errorMessage","jsx","ComposeLoadingState","ResourceComposePage","ToolbarPanels","Toolbar","ComposeResourcePage","Suspense"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as y}from"./query-ATBhtd3K.js";import{r as d}from"./vendor-EnoIVk-c.js";import{u as S}from"./useAuth-CqtZE9nt.js";import{u as P}from"./AuthContext-CYne_gJM.js";import{a as C,L as v}from"./routing-nZgBtxly.js";import{u as w,c as U,W as R,P as I}from"./en-IUV4ZXKH-BjYNERUx.js";import{u as x}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";function N(){var u;const{t:b}=x(),e=(c,n)=>b(`AuthWelcome.${c}`,n),{isAuthenticated:o,isLoading:r,user:s}=S(),{clearSession:h}=P(),i=C(),[A,T]=d.useState(!1),f=w(),p=U(),{data:t}=p.me.useQuery(),a=p.acceptTerms.useMutation();d.useEffect(()=>{if(!r){if(!o){i.push("/auth/connect");return}if(t!=null&&t.termsAcceptedAt){i.push("/");return}if(o&&t!==void 0&&(t!=null&&t.termsAcceptedAt)){i.push("/");return}}},[r,o,i,t]);const l=async c=>{if(!c){h(),i.push("/");return}try{await a.mutateAsync(),T(!0),setTimeout(()=>{i.push("/")},1e3)}catch(n){console.error("Terms acceptance error:",n),f.showError(e("errorAcceptingTerms"))}},g=r?"loading":A?"accepted":"form",m=((u=s==null?void 0:s.name)==null?void 0:u.split(" ")[0])??"";return y.jsx(R,{userName:m,termsAcceptedAt:(t==null?void 0:t.termsAcceptedAt)??null,isNewUser:!(t!=null&&t.termsAcceptedAt),status:g,isProcessing:a.isPending,onAccept:()=>l(!0),onDecline:()=>l(!1),translations:{loading:e("loading"),welcomeTitle:e("welcomeTitle"),thanksForAccepting:e("thanksForAccepting"),welcomeUser:e("welcomeUser",{firstName:m}),reviewTermsPrompt:e("reviewTermsPrompt"),termsSummaryTitle:e("termsSummaryTitle"),termsSummaryIntro:e("termsSummaryIntro"),acceptableUseTitle:e("acceptableUseTitle"),acceptableUseResponsible:e("acceptableUseResponsible"),acceptableUseRespect:e("acceptableUseRespect"),acceptableUseConduct:e("acceptableUseConduct"),prohibitedContentTitle:e("prohibitedContentTitle"),prohibitedContentIntro:e("prohibitedContentIntro"),prohibitedIllegal:e("prohibitedIllegal"),prohibitedAdult:e("prohibitedAdult"),prohibitedHate:e("prohibitedHate"),prohibitedViolence:e("prohibitedViolence"),prohibitedMisinformation:e("prohibitedMisinformation"),prohibitedPrivacy:e("prohibitedPrivacy"),prohibitedCopyright:e("prohibitedCopyright"),prohibitedMalware:e("prohibitedMalware"),prohibitedSpam:e("prohibitedSpam"),conductTitle:e("conductTitle"),conductDescription:e("conductDescription"),conductLink:e("conductLink"),conductPromotion:e("conductPromotion"),responsibilitiesTitle:e("responsibilitiesTitle"),responsibilitiesSecure:e("responsibilitiesSecure"),responsibilitiesReport:e("responsibilitiesReport"),responsibilitiesAccurate:e("responsibilitiesAccurate"),responsibilitiesComply:e("responsibilitiesComply"),violationsWarning:e("violationsWarning"),readFullTerms:e("readFullTerms"),termsOfService:e("termsOfService"),and:e("and"),privacyPolicy:e("privacyPolicy"),declineAndSignOut:e("declineAndSignOut"),acceptAndContinue:e("acceptAndContinue"),processing:e("processing"),legallyBound:e("legallyBound")},PageLayout:I,Link:v})}export{N as default};
2
+ //# sourceMappingURL=page-DU4gR5Xo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-DU4gR5Xo.js","sources":["../../src/app/[locale]/auth/welcome/page.tsx"],"sourcesContent":["/**\n * Welcome Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (routing, auth, API calls)\n * and delegates rendering to the pure React WelcomePage component.\n */\n\nimport React, { useState, useEffect } from 'react';\nimport { useAuth } from '@/hooks/useAuth';\nimport { useAuthContext } from '@/contexts/AuthContext';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from '@/i18n/routing';\nimport { PageLayout, useToast, useAuthApi } from '@semiont/react-ui';\nimport { WelcomePage } from '@semiont/react-ui';\n\nexport default function Welcome() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthWelcome.${k}`, p as any) as string;\n const { isAuthenticated, isLoading, user } = useAuth();\n const { clearSession } = useAuthContext();\n const router = useRouter();\n const [termsAccepted, setTermsAccepted] = useState(false);\n const toast = useToast();\n\n // API hooks\n const authAPI = useAuthApi();\n\n // Query user data to check if terms already accepted\n const { data: userData } = authAPI.me.useQuery();\n\n // Mutation for accepting terms\n const acceptTermsMutation = authAPI.acceptTerms.useMutation();\n\n // Redirect if not authenticated or if terms already accepted\n useEffect(() => {\n if (isLoading) return;\n if (!isAuthenticated) {\n router.push('/auth/connect');\n return;\n }\n\n // Check if user has accepted terms\n if (userData?.termsAcceptedAt) {\n router.push('/');\n return;\n }\n\n // If terms already accepted, redirect to main app\n if (isAuthenticated && userData !== undefined && userData?.termsAcceptedAt) {\n router.push('/');\n return;\n }\n }, [isLoading, isAuthenticated, router, userData]);\n\n const handleTermsAcceptance = async (accepted: boolean) => {\n if (!accepted) {\n // User declined terms - clear session and redirect to home\n clearSession();\n router.push('/');\n return;\n }\n\n try {\n await acceptTermsMutation.mutateAsync();\n setTermsAccepted(true);\n\n // Small delay to show the acceptance state\n setTimeout(() => {\n router.push('/');\n }, 1000);\n } catch (error) {\n console.error('Terms acceptance error:', error);\n toast.showError(t('errorAcceptingTerms'));\n }\n };\n\n // Determine status\n const pageStatus = isLoading ? 'loading' : termsAccepted ? 'accepted' : 'form';\n const firstName = user?.name?.split(' ')[0] ?? '';\n\n return (\n <WelcomePage\n userName={firstName}\n termsAcceptedAt={userData?.termsAcceptedAt ?? null}\n isNewUser={!userData?.termsAcceptedAt}\n status={pageStatus}\n isProcessing={acceptTermsMutation.isPending}\n onAccept={() => handleTermsAcceptance(true)}\n onDecline={() => handleTermsAcceptance(false)}\n translations={{\n loading: t('loading'),\n welcomeTitle: t('welcomeTitle'),\n thanksForAccepting: t('thanksForAccepting'),\n welcomeUser: t('welcomeUser', { firstName }),\n reviewTermsPrompt: t('reviewTermsPrompt'),\n termsSummaryTitle: t('termsSummaryTitle'),\n termsSummaryIntro: t('termsSummaryIntro'),\n acceptableUseTitle: t('acceptableUseTitle'),\n acceptableUseResponsible: t('acceptableUseResponsible'),\n acceptableUseRespect: t('acceptableUseRespect'),\n acceptableUseConduct: t('acceptableUseConduct'),\n prohibitedContentTitle: t('prohibitedContentTitle'),\n prohibitedContentIntro: t('prohibitedContentIntro'),\n prohibitedIllegal: t('prohibitedIllegal'),\n prohibitedAdult: t('prohibitedAdult'),\n prohibitedHate: t('prohibitedHate'),\n prohibitedViolence: t('prohibitedViolence'),\n prohibitedMisinformation: t('prohibitedMisinformation'),\n prohibitedPrivacy: t('prohibitedPrivacy'),\n prohibitedCopyright: t('prohibitedCopyright'),\n prohibitedMalware: t('prohibitedMalware'),\n prohibitedSpam: t('prohibitedSpam'),\n conductTitle: t('conductTitle'),\n conductDescription: t('conductDescription'),\n conductLink: t('conductLink'),\n conductPromotion: t('conductPromotion'),\n responsibilitiesTitle: t('responsibilitiesTitle'),\n responsibilitiesSecure: t('responsibilitiesSecure'),\n responsibilitiesReport: t('responsibilitiesReport'),\n responsibilitiesAccurate: t('responsibilitiesAccurate'),\n responsibilitiesComply: t('responsibilitiesComply'),\n violationsWarning: t('violationsWarning'),\n readFullTerms: t('readFullTerms'),\n termsOfService: t('termsOfService'),\n and: t('and'),\n privacyPolicy: t('privacyPolicy'),\n declineAndSignOut: t('declineAndSignOut'),\n acceptAndContinue: t('acceptAndContinue'),\n processing: t('processing'),\n legallyBound: t('legallyBound'),\n }}\n PageLayout={PageLayout}\n Link={Link}\n />\n );\n}\n"],"names":["Welcome","_t","useTranslation","t","k","p","isAuthenticated","isLoading","user","useAuth","clearSession","useAuthContext","router","useRouter","termsAccepted","setTermsAccepted","useState","toast","useToast","authAPI","useAuthApi","userData","acceptTermsMutation","useEffect","handleTermsAcceptance","accepted","error","pageStatus","firstName","_a","jsx","WelcomePage","PageLayout","Link"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import{j as d}from"./query-ATBhtd3K.js";import{r as i}from"./vendor-EnoIVk-c.js";import{d as u,e as g,f as W,g as f,Q as w,T as b}from"./en-IUV4ZXKH-BjYNERUx.js";import{T as x}from"./ToolbarPanels-tcvPzqNN.js";import{u as T}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";import"./useAuth-CqtZE9nt.js";import"./AuthContext-CYne_gJM.js";import"./routing-nZgBtxly.js";import"./KnowledgeBaseContext-CgnF8K-_.js";import"./PlusIcon-qGFPUzg0.js";var v={"legal-irac":{id:"legal-irac",name:"Legal Analysis (IRAC)",description:"Issue, Rule, Application, Conclusion framework for legal reasoning",domain:"legal",tags:[{name:"Issue",description:"The legal question or problem to be resolved",examples:["What is the central legal question?","What must the court decide?","What is the dispute about?"]},{name:"Rule",description:"The relevant law, statute, or legal principle",examples:["What law applies?","What is the legal standard?","What statute governs this case?"]},{name:"Application",description:"How the rule applies to the specific facts",examples:["How does the law apply to these facts?","Analysis of the case","How do the facts satisfy the legal standard?"]},{name:"Conclusion",description:"The resolution or outcome based on the analysis",examples:["What is the court's decision?","What is the final judgment?","What is the holding?"]}]},"scientific-imrad":{id:"scientific-imrad",name:"Scientific Paper (IMRAD)",description:"Introduction, Methods, Results, Discussion structure for research papers",domain:"scientific",tags:[{name:"Introduction",description:"Background, context, and research question",examples:["What is the research question?","Why is this important?","What is the hypothesis?"]},{name:"Methods",description:"Experimental design and procedures",examples:["How was the study conducted?","What methods were used?","What was the experimental design?"]},{name:"Results",description:"Findings and observations",examples:["What did the study find?","What are the data?","What were the observations?"]},{name:"Discussion",description:"Interpretation and implications of results",examples:["What do the results mean?","What are the implications?","How do these findings relate to prior work?"]}]},"argument-toulmin":{id:"argument-toulmin",name:"Argument Structure (Toulmin)",description:"Claim, Evidence, Warrant, Counterargument, Rebuttal framework for argumentation",domain:"general",tags:[{name:"Claim",description:"The main assertion or thesis",examples:["What is being argued?","What is the main point?","What position is being taken?"]},{name:"Evidence",description:"Data or facts supporting the claim",examples:["What supports this claim?","What are the facts?","What data is provided?"]},{name:"Warrant",description:"Reasoning connecting evidence to claim",examples:["Why does this evidence support the claim?","What is the logic?","How does this reasoning work?"]},{name:"Counterargument",description:"Opposing viewpoints or objections",examples:["What are the objections?","What do critics say?","What are alternative views?"]},{name:"Rebuttal",description:"Response to counterarguments",examples:["How is the objection addressed?","Why is the counterargument wrong?","How is the criticism answered?"]}]}};function y(){return Object.values(v)}function P(){const{t:n}=T(),e=(t,p)=>n(`ModerateTagSchemas.${t}`,p),{activePanel:o}=u(),{theme:r,setTheme:a}=g(),{showLineNumbers:c,toggleLineNumbers:s}=W(),l=i.useCallback(({theme:t})=>{a(t)},[a]),h=i.useCallback(()=>{s()},[s]);f({"settings:theme-changed":l,"settings:line-numbers-toggled":h});const m=y();return d.jsx(w,{schemas:m,isLoading:!1,theme:r,showLineNumbers:c,activePanel:o,translations:{pageTitle:e("pageTitle"),pageDescription:e("pageDescription"),categories:e("categories"),loading:e("loading")},ToolbarPanels:x,Toolbar:b})}export{P as default};
2
+ //# sourceMappingURL=page-DVuwkaR0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-6Y-lDxnu.js","sources":["../../../../packages/ontology/dist/index.js","../../src/app/[locale]/moderate/tag-schemas/page.tsx"],"sourcesContent":["// src/entity-types.ts\nvar DEFAULT_ENTITY_TYPES = [\n \"Person\",\n \"Organization\",\n \"Location\",\n \"Event\",\n \"Concept\",\n \"Product\",\n \"Technology\",\n \"Date\",\n \"Author\"\n];\n\n// src/tag-schemas.ts\nvar TAG_SCHEMAS = {\n \"legal-irac\": {\n id: \"legal-irac\",\n name: \"Legal Analysis (IRAC)\",\n description: \"Issue, Rule, Application, Conclusion framework for legal reasoning\",\n domain: \"legal\",\n tags: [\n {\n name: \"Issue\",\n description: \"The legal question or problem to be resolved\",\n examples: [\n \"What is the central legal question?\",\n \"What must the court decide?\",\n \"What is the dispute about?\"\n ]\n },\n {\n name: \"Rule\",\n description: \"The relevant law, statute, or legal principle\",\n examples: [\n \"What law applies?\",\n \"What is the legal standard?\",\n \"What statute governs this case?\"\n ]\n },\n {\n name: \"Application\",\n description: \"How the rule applies to the specific facts\",\n examples: [\n \"How does the law apply to these facts?\",\n \"Analysis of the case\",\n \"How do the facts satisfy the legal standard?\"\n ]\n },\n {\n name: \"Conclusion\",\n description: \"The resolution or outcome based on the analysis\",\n examples: [\n \"What is the court's decision?\",\n \"What is the final judgment?\",\n \"What is the holding?\"\n ]\n }\n ]\n },\n \"scientific-imrad\": {\n id: \"scientific-imrad\",\n name: \"Scientific Paper (IMRAD)\",\n description: \"Introduction, Methods, Results, Discussion structure for research papers\",\n domain: \"scientific\",\n tags: [\n {\n name: \"Introduction\",\n description: \"Background, context, and research question\",\n examples: [\n \"What is the research question?\",\n \"Why is this important?\",\n \"What is the hypothesis?\"\n ]\n },\n {\n name: \"Methods\",\n description: \"Experimental design and procedures\",\n examples: [\n \"How was the study conducted?\",\n \"What methods were used?\",\n \"What was the experimental design?\"\n ]\n },\n {\n name: \"Results\",\n description: \"Findings and observations\",\n examples: [\n \"What did the study find?\",\n \"What are the data?\",\n \"What were the observations?\"\n ]\n },\n {\n name: \"Discussion\",\n description: \"Interpretation and implications of results\",\n examples: [\n \"What do the results mean?\",\n \"What are the implications?\",\n \"How do these findings relate to prior work?\"\n ]\n }\n ]\n },\n \"argument-toulmin\": {\n id: \"argument-toulmin\",\n name: \"Argument Structure (Toulmin)\",\n description: \"Claim, Evidence, Warrant, Counterargument, Rebuttal framework for argumentation\",\n domain: \"general\",\n tags: [\n {\n name: \"Claim\",\n description: \"The main assertion or thesis\",\n examples: [\n \"What is being argued?\",\n \"What is the main point?\",\n \"What position is being taken?\"\n ]\n },\n {\n name: \"Evidence\",\n description: \"Data or facts supporting the claim\",\n examples: [\n \"What supports this claim?\",\n \"What are the facts?\",\n \"What data is provided?\"\n ]\n },\n {\n name: \"Warrant\",\n description: \"Reasoning connecting evidence to claim\",\n examples: [\n \"Why does this evidence support the claim?\",\n \"What is the logic?\",\n \"How does this reasoning work?\"\n ]\n },\n {\n name: \"Counterargument\",\n description: \"Opposing viewpoints or objections\",\n examples: [\n \"What are the objections?\",\n \"What do critics say?\",\n \"What are alternative views?\"\n ]\n },\n {\n name: \"Rebuttal\",\n description: \"Response to counterarguments\",\n examples: [\n \"How is the objection addressed?\",\n \"Why is the counterargument wrong?\",\n \"How is the criticism answered?\"\n ]\n }\n ]\n }\n};\nfunction getTagSchema(schemaId) {\n return TAG_SCHEMAS[schemaId] || null;\n}\nfunction getAllTagSchemas() {\n return Object.values(TAG_SCHEMAS);\n}\nfunction getTagSchemasByDomain(domain) {\n return Object.values(TAG_SCHEMAS).filter((schema) => schema.domain === domain);\n}\nfunction isValidCategory(schemaId, categoryName) {\n const schema = getTagSchema(schemaId);\n if (!schema) return false;\n return schema.tags.some((tag) => tag.name === categoryName);\n}\nfunction getSchemaCategory(schemaId, categoryName) {\n const schema = getTagSchema(schemaId);\n if (!schema) return null;\n return schema.tags.find((tag) => tag.name === categoryName) || null;\n}\n\n// src/entity-extraction.ts\nfunction getEntityTypes(annotation) {\n if (Array.isArray(annotation.body)) {\n const entityTags = [];\n for (const item of annotation.body) {\n if (typeof item === \"object\" && item !== null && \"type\" in item && \"value\" in item && \"purpose\" in item) {\n const itemType = item.type;\n const itemValue = item.value;\n const itemPurpose = item.purpose;\n if (itemType === \"TextualBody\" && itemPurpose === \"tagging\" && typeof itemValue === \"string\" && itemValue.length > 0) {\n entityTags.push(itemValue);\n }\n }\n }\n return entityTags;\n }\n return [];\n}\n\n// src/tag-extraction.ts\nfunction isTag(annotation) {\n return annotation.motivation === \"tagging\";\n}\nfunction getTagCategory(annotation) {\n if (!isTag(annotation)) return void 0;\n const bodies = Array.isArray(annotation.body) ? annotation.body : [annotation.body];\n const taggingBody = bodies.find(\n (b) => b !== null && typeof b === \"object\" && \"purpose\" in b && b.purpose === \"tagging\"\n );\n if (taggingBody && \"value\" in taggingBody) {\n return taggingBody.value;\n }\n return void 0;\n}\nfunction getTagSchemaId(annotation) {\n if (!isTag(annotation)) return void 0;\n const bodies = Array.isArray(annotation.body) ? annotation.body : [annotation.body];\n const classifyingBody = bodies.find(\n (b) => b !== null && typeof b === \"object\" && \"purpose\" in b && b.purpose === \"classifying\"\n );\n if (classifyingBody && \"value\" in classifyingBody) {\n return classifyingBody.value;\n }\n return void 0;\n}\nexport {\n DEFAULT_ENTITY_TYPES,\n TAG_SCHEMAS,\n getAllTagSchemas,\n getEntityTypes,\n getSchemaCategory,\n getTagCategory,\n getTagSchema,\n getTagSchemaId,\n getTagSchemasByDomain,\n isValidCategory\n};\n//# sourceMappingURL=index.js.map","import { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { getAllTagSchemas } from '@semiont/ontology';\nimport { TagSchemasPage } from '@semiont/react-ui';\n\n// Authentication is handled by middleware (proxy.ts)\n// Only authenticated moderators/admins can reach this page\n\nexport default function TagSchemasPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateTagSchemas.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const { activePanel } = usePanelBrowse();\n const { theme, setTheme } = useTheme();\n const { showLineNumbers, toggleLineNumbers } = useLineNumbers();\n\n const handleThemeChanged = useCallback(({ theme }: { theme: 'light' | 'dark' | 'system' }) => {\n setTheme(theme);\n }, [setTheme]);\n\n const handleLineNumbersToggled = useCallback(() => {\n toggleLineNumbers();\n }, [toggleLineNumbers]);\n\n useEventSubscriptions({\n 'settings:theme-changed': handleThemeChanged,\n 'settings:line-numbers-toggled': handleLineNumbersToggled,\n });\n\n const schemas = getAllTagSchemas();\n\n return (\n <TagSchemasPage\n schemas={schemas}\n isLoading={false}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n categories: t('categories'),\n loading: t('loading'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["TAG_SCHEMAS","getAllTagSchemas","TagSchemasPageWrapper","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","schemas","jsx","TagSchemasPage","ToolbarPanels","Toolbar"],"mappings":"mXAcA,IAAIA,EAAc,CAChB,aAAc,CACZ,GAAI,aACJ,KAAM,wBACN,YAAa,qEACb,OAAQ,QACR,KAAM,CACJ,CACE,KAAM,QACN,YAAa,+CACb,SAAU,CACR,sCACA,8BACA,4BACV,CACA,EACM,CACE,KAAM,OACN,YAAa,gDACb,SAAU,CACR,oBACA,8BACA,iCACV,CACA,EACM,CACE,KAAM,cACN,YAAa,6CACb,SAAU,CACR,yCACA,uBACA,8CACV,CACA,EACM,CACE,KAAM,aACN,YAAa,kDACb,SAAU,CACR,gCACA,8BACA,sBACV,CACA,CACA,CACA,EACE,mBAAoB,CAClB,GAAI,mBACJ,KAAM,2BACN,YAAa,2EACb,OAAQ,aACR,KAAM,CACJ,CACE,KAAM,eACN,YAAa,6CACb,SAAU,CACR,iCACA,yBACA,yBACV,CACA,EACM,CACE,KAAM,UACN,YAAa,qCACb,SAAU,CACR,+BACA,0BACA,mCACV,CACA,EACM,CACE,KAAM,UACN,YAAa,4BACb,SAAU,CACR,2BACA,qBACA,6BACV,CACA,EACM,CACE,KAAM,aACN,YAAa,6CACb,SAAU,CACR,4BACA,6BACA,6CACV,CACA,CACA,CACA,EACE,mBAAoB,CAClB,GAAI,mBACJ,KAAM,+BACN,YAAa,kFACb,OAAQ,UACR,KAAM,CACJ,CACE,KAAM,QACN,YAAa,+BACb,SAAU,CACR,wBACA,0BACA,+BACV,CACA,EACM,CACE,KAAM,WACN,YAAa,qCACb,SAAU,CACR,4BACA,sBACA,wBACV,CACA,EACM,CACE,KAAM,UACN,YAAa,yCACb,SAAU,CACR,4CACA,qBACA,+BACV,CACA,EACM,CACE,KAAM,kBACN,YAAa,oCACb,SAAU,CACR,2BACA,uBACA,6BACV,CACA,EACM,CACE,KAAM,WACN,YAAa,+BACb,SAAU,CACR,kCACA,oCACA,gCACV,CACA,CACA,CACA,CACA,EAIA,SAASC,GAAmB,CAC1B,OAAO,OAAO,OAAOD,CAAW,CAClC,CCvJA,SAAwBE,GAAwB,CAC9C,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,sBAAsBG,CAAC,GAAIC,CAAQ,EAGtF,CAAE,YAAAC,CAAA,EAAgBC,EAAA,EAClB,CAAE,MAAAC,EAAO,SAAAC,CAAA,EAAaC,EAAA,EACtB,CAAE,gBAAAC,EAAiB,kBAAAC,CAAA,EAAsBC,EAAA,EAEzCC,EAAqBC,EAAAA,YAAY,CAAC,CAAE,MAAAP,KAAoD,CAC5FC,EAASD,CAAK,CAChB,EAAG,CAACC,CAAQ,CAAC,EAEPO,EAA2BD,EAAAA,YAAY,IAAM,CACjDH,EAAA,CACF,EAAG,CAACA,CAAiB,CAAC,EAEtBK,EAAsB,CACpB,yBAA0BH,EAC1B,gCAAiCE,CAAA,CAClC,EAED,MAAME,EAAUnB,EAAA,EAEhB,OACEoB,EAAAA,IAACC,EAAA,CACC,QAAAF,EACA,UAAW,GACX,MAAAV,EACA,gBAAAG,EACA,YAAAL,EACA,aAAc,CACZ,UAAWH,EAAE,WAAW,EACxB,gBAAiBA,EAAE,iBAAiB,EACpC,WAAYA,EAAE,YAAY,EAC1B,QAASA,EAAE,SAAS,CAAA,EAEtB,cAAAkB,EACA,QAAAC,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"page-DVuwkaR0.js","sources":["../../../../packages/ontology/dist/index.js","../../src/app/[locale]/moderate/tag-schemas/page.tsx"],"sourcesContent":["// src/entity-types.ts\nvar DEFAULT_ENTITY_TYPES = [\n \"Person\",\n \"Organization\",\n \"Location\",\n \"Event\",\n \"Concept\",\n \"Product\",\n \"Technology\",\n \"Date\",\n \"Author\"\n];\n\n// src/tag-schemas.ts\nvar TAG_SCHEMAS = {\n \"legal-irac\": {\n id: \"legal-irac\",\n name: \"Legal Analysis (IRAC)\",\n description: \"Issue, Rule, Application, Conclusion framework for legal reasoning\",\n domain: \"legal\",\n tags: [\n {\n name: \"Issue\",\n description: \"The legal question or problem to be resolved\",\n examples: [\n \"What is the central legal question?\",\n \"What must the court decide?\",\n \"What is the dispute about?\"\n ]\n },\n {\n name: \"Rule\",\n description: \"The relevant law, statute, or legal principle\",\n examples: [\n \"What law applies?\",\n \"What is the legal standard?\",\n \"What statute governs this case?\"\n ]\n },\n {\n name: \"Application\",\n description: \"How the rule applies to the specific facts\",\n examples: [\n \"How does the law apply to these facts?\",\n \"Analysis of the case\",\n \"How do the facts satisfy the legal standard?\"\n ]\n },\n {\n name: \"Conclusion\",\n description: \"The resolution or outcome based on the analysis\",\n examples: [\n \"What is the court's decision?\",\n \"What is the final judgment?\",\n \"What is the holding?\"\n ]\n }\n ]\n },\n \"scientific-imrad\": {\n id: \"scientific-imrad\",\n name: \"Scientific Paper (IMRAD)\",\n description: \"Introduction, Methods, Results, Discussion structure for research papers\",\n domain: \"scientific\",\n tags: [\n {\n name: \"Introduction\",\n description: \"Background, context, and research question\",\n examples: [\n \"What is the research question?\",\n \"Why is this important?\",\n \"What is the hypothesis?\"\n ]\n },\n {\n name: \"Methods\",\n description: \"Experimental design and procedures\",\n examples: [\n \"How was the study conducted?\",\n \"What methods were used?\",\n \"What was the experimental design?\"\n ]\n },\n {\n name: \"Results\",\n description: \"Findings and observations\",\n examples: [\n \"What did the study find?\",\n \"What are the data?\",\n \"What were the observations?\"\n ]\n },\n {\n name: \"Discussion\",\n description: \"Interpretation and implications of results\",\n examples: [\n \"What do the results mean?\",\n \"What are the implications?\",\n \"How do these findings relate to prior work?\"\n ]\n }\n ]\n },\n \"argument-toulmin\": {\n id: \"argument-toulmin\",\n name: \"Argument Structure (Toulmin)\",\n description: \"Claim, Evidence, Warrant, Counterargument, Rebuttal framework for argumentation\",\n domain: \"general\",\n tags: [\n {\n name: \"Claim\",\n description: \"The main assertion or thesis\",\n examples: [\n \"What is being argued?\",\n \"What is the main point?\",\n \"What position is being taken?\"\n ]\n },\n {\n name: \"Evidence\",\n description: \"Data or facts supporting the claim\",\n examples: [\n \"What supports this claim?\",\n \"What are the facts?\",\n \"What data is provided?\"\n ]\n },\n {\n name: \"Warrant\",\n description: \"Reasoning connecting evidence to claim\",\n examples: [\n \"Why does this evidence support the claim?\",\n \"What is the logic?\",\n \"How does this reasoning work?\"\n ]\n },\n {\n name: \"Counterargument\",\n description: \"Opposing viewpoints or objections\",\n examples: [\n \"What are the objections?\",\n \"What do critics say?\",\n \"What are alternative views?\"\n ]\n },\n {\n name: \"Rebuttal\",\n description: \"Response to counterarguments\",\n examples: [\n \"How is the objection addressed?\",\n \"Why is the counterargument wrong?\",\n \"How is the criticism answered?\"\n ]\n }\n ]\n }\n};\nfunction getTagSchema(schemaId) {\n return TAG_SCHEMAS[schemaId] || null;\n}\nfunction getAllTagSchemas() {\n return Object.values(TAG_SCHEMAS);\n}\nfunction getTagSchemasByDomain(domain) {\n return Object.values(TAG_SCHEMAS).filter((schema) => schema.domain === domain);\n}\nfunction isValidCategory(schemaId, categoryName) {\n const schema = getTagSchema(schemaId);\n if (!schema) return false;\n return schema.tags.some((tag) => tag.name === categoryName);\n}\nfunction getSchemaCategory(schemaId, categoryName) {\n const schema = getTagSchema(schemaId);\n if (!schema) return null;\n return schema.tags.find((tag) => tag.name === categoryName) || null;\n}\n\n// src/entity-extraction.ts\nfunction getEntityTypes(annotation) {\n if (Array.isArray(annotation.body)) {\n const entityTags = [];\n for (const item of annotation.body) {\n if (typeof item === \"object\" && item !== null && \"type\" in item && \"value\" in item && \"purpose\" in item) {\n const itemType = item.type;\n const itemValue = item.value;\n const itemPurpose = item.purpose;\n if (itemType === \"TextualBody\" && itemPurpose === \"tagging\" && typeof itemValue === \"string\" && itemValue.length > 0) {\n entityTags.push(itemValue);\n }\n }\n }\n return entityTags;\n }\n return [];\n}\n\n// src/tag-extraction.ts\nfunction isTag(annotation) {\n return annotation.motivation === \"tagging\";\n}\nfunction getTagCategory(annotation) {\n if (!isTag(annotation)) return void 0;\n const bodies = Array.isArray(annotation.body) ? annotation.body : [annotation.body];\n const taggingBody = bodies.find(\n (b) => b !== null && typeof b === \"object\" && \"purpose\" in b && b.purpose === \"tagging\"\n );\n if (taggingBody && \"value\" in taggingBody) {\n return taggingBody.value;\n }\n return void 0;\n}\nfunction getTagSchemaId(annotation) {\n if (!isTag(annotation)) return void 0;\n const bodies = Array.isArray(annotation.body) ? annotation.body : [annotation.body];\n const classifyingBody = bodies.find(\n (b) => b !== null && typeof b === \"object\" && \"purpose\" in b && b.purpose === \"classifying\"\n );\n if (classifyingBody && \"value\" in classifyingBody) {\n return classifyingBody.value;\n }\n return void 0;\n}\nexport {\n DEFAULT_ENTITY_TYPES,\n TAG_SCHEMAS,\n getAllTagSchemas,\n getEntityTypes,\n getSchemaCategory,\n getTagCategory,\n getTagSchema,\n getTagSchemaId,\n getTagSchemasByDomain,\n isValidCategory\n};\n//# sourceMappingURL=index.js.map","import { useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { getAllTagSchemas } from '@semiont/ontology';\nimport { TagSchemasPage } from '@semiont/react-ui';\n\n// Authentication is handled by middleware (proxy.ts)\n// Only authenticated moderators/admins can reach this page\n\nexport default function TagSchemasPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateTagSchemas.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const { activePanel } = usePanelBrowse();\n const { theme, setTheme } = useTheme();\n const { showLineNumbers, toggleLineNumbers } = useLineNumbers();\n\n const handleThemeChanged = useCallback(({ theme }: { theme: 'light' | 'dark' | 'system' }) => {\n setTheme(theme);\n }, [setTheme]);\n\n const handleLineNumbersToggled = useCallback(() => {\n toggleLineNumbers();\n }, [toggleLineNumbers]);\n\n useEventSubscriptions({\n 'settings:theme-changed': handleThemeChanged,\n 'settings:line-numbers-toggled': handleLineNumbersToggled,\n });\n\n const schemas = getAllTagSchemas();\n\n return (\n <TagSchemasPage\n schemas={schemas}\n isLoading={false}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n categories: t('categories'),\n loading: t('loading'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["TAG_SCHEMAS","getAllTagSchemas","TagSchemasPageWrapper","_t","useTranslation","t","k","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","schemas","jsx","TagSchemasPage","ToolbarPanels","Toolbar"],"mappings":"6bAcA,IAAIA,EAAc,CAChB,aAAc,CACZ,GAAI,aACJ,KAAM,wBACN,YAAa,qEACb,OAAQ,QACR,KAAM,CACJ,CACE,KAAM,QACN,YAAa,+CACb,SAAU,CACR,sCACA,8BACA,4BACV,CACA,EACM,CACE,KAAM,OACN,YAAa,gDACb,SAAU,CACR,oBACA,8BACA,iCACV,CACA,EACM,CACE,KAAM,cACN,YAAa,6CACb,SAAU,CACR,yCACA,uBACA,8CACV,CACA,EACM,CACE,KAAM,aACN,YAAa,kDACb,SAAU,CACR,gCACA,8BACA,sBACV,CACA,CACA,CACA,EACE,mBAAoB,CAClB,GAAI,mBACJ,KAAM,2BACN,YAAa,2EACb,OAAQ,aACR,KAAM,CACJ,CACE,KAAM,eACN,YAAa,6CACb,SAAU,CACR,iCACA,yBACA,yBACV,CACA,EACM,CACE,KAAM,UACN,YAAa,qCACb,SAAU,CACR,+BACA,0BACA,mCACV,CACA,EACM,CACE,KAAM,UACN,YAAa,4BACb,SAAU,CACR,2BACA,qBACA,6BACV,CACA,EACM,CACE,KAAM,aACN,YAAa,6CACb,SAAU,CACR,4BACA,6BACA,6CACV,CACA,CACA,CACA,EACE,mBAAoB,CAClB,GAAI,mBACJ,KAAM,+BACN,YAAa,kFACb,OAAQ,UACR,KAAM,CACJ,CACE,KAAM,QACN,YAAa,+BACb,SAAU,CACR,wBACA,0BACA,+BACV,CACA,EACM,CACE,KAAM,WACN,YAAa,qCACb,SAAU,CACR,4BACA,sBACA,wBACV,CACA,EACM,CACE,KAAM,UACN,YAAa,yCACb,SAAU,CACR,4CACA,qBACA,+BACV,CACA,EACM,CACE,KAAM,kBACN,YAAa,oCACb,SAAU,CACR,2BACA,uBACA,6BACV,CACA,EACM,CACE,KAAM,WACN,YAAa,+BACb,SAAU,CACR,kCACA,oCACA,gCACV,CACA,CACA,CACA,CACA,EAIA,SAASC,GAAmB,CAC1B,OAAO,OAAO,OAAOD,CAAW,CAClC,CCvJA,SAAwBE,GAAwB,CAC9C,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAW,IAAgCH,EAAG,sBAAsBG,CAAC,GAAI,CAAQ,EAGtF,CAAE,YAAAC,CAAA,EAAgBC,EAAA,EAClB,CAAE,MAAAC,EAAO,SAAAC,CAAA,EAAaC,EAAA,EACtB,CAAE,gBAAAC,EAAiB,kBAAAC,CAAA,EAAsBC,EAAA,EAEzCC,EAAqBC,EAAAA,YAAY,CAAC,CAAE,MAAAP,KAAoD,CAC5FC,EAASD,CAAK,CAChB,EAAG,CAACC,CAAQ,CAAC,EAEPO,EAA2BD,EAAAA,YAAY,IAAM,CACjDH,EAAA,CACF,EAAG,CAACA,CAAiB,CAAC,EAEtBK,EAAsB,CACpB,yBAA0BH,EAC1B,gCAAiCE,CAAA,CAClC,EAED,MAAME,EAAUlB,EAAA,EAEhB,OACEmB,EAAAA,IAACC,EAAA,CACC,QAAAF,EACA,UAAW,GACX,MAAAV,EACA,gBAAAG,EACA,YAAAL,EACA,aAAc,CACZ,UAAWF,EAAE,WAAW,EACxB,gBAAiBA,EAAE,iBAAiB,EACpC,WAAYA,EAAE,YAAY,EAC1B,QAASA,EAAE,SAAS,CAAA,EAEtB,cAAAiB,EACA,QAAAC,CAAA,CAAA,CAGN"}
@@ -0,0 +1,2 @@
1
+ import{j as p}from"./query-ATBhtd3K.js";import{u as x,r as d}from"./vendor-EnoIVk-c.js";import{a as O,L as T}from"./routing-nZgBtxly.js";import{M as H,F as q,G as C,H as E,I as S,N as A,O as D}from"./en-IUV4ZXKH-BjYNERUx.js";import{C as K}from"./CookiePreferences-DxD0u90z.js";import{K as N}from"./privacy-QEJYcmMw.js";import{r as j,L as F}from"./routing-BgsGBuSe.js";import{u as M}from"./AuthContext-CYne_gJM.js";import{u as z}from"./KnowledgeBaseContext-CgnF8K-_.js";import{u as W}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";var $={};const u=$.SEMIONT_GOOGLE_CLIENT_ID;function P(a){const e=a.trim();return/^https?:\/\//i.test(e)?e:`https://${e}`}function te(){const{t:a}=W(),e=r=>a(`AuthSignIn.${r}`),v=(r,o)=>a(`Footer.${r}`,o),[g]=x(),h=O(),l=d.useContext(N),{setSession:k}=M(),{knowledgeBases:B,addKnowledgeBase:U}=z(),b=g.get("callbackUrl")??"/know",f=g.get("workspaceId"),t=f?B.find(r=>r.id===f):void 0,I=t==null?void 0:t.backendUrl,[y,s]=d.useState(null),w=d.useRef(!1);d.useEffect(()=>{if(!u||w.current)return;const r=document.createElement("script");r.src="https://accounts.google.com/gsi/client",r.async=!0,r.defer=!0,document.head.appendChild(r),w.current=!0},[]);const G=async r=>{var n,i;if(!u){s(e("errorGoogleSignIn"));return}s(null);const o=P(r),m=new C({baseUrl:S(o),eventBus:new E});(n=window.google)==null||n.accounts.id.initialize({client_id:u,callback:async({credential:c})=>{try{const L=await m.authenticateGoogle(A(c));t||U({id:crypto.randomUUID(),label:new URL(o).hostname,backendUrl:o}),k({token:L.token,user:L.user}),h.push(b)}catch{s(e("errorGoogleSignIn"))}}}),(i=window.google)==null||i.accounts.id.prompt()},R=async(r,o,m)=>{s(null);const n=P(r),i=new C({baseUrl:S(n),eventBus:new E});try{const c=await i.authenticatePassword(D(o),m);t||U({id:crypto.randomUUID(),label:new URL(n).hostname,backendUrl:n}),k({token:c.token,user:c.user}),h.push(b)}catch{s(e("errorInvalidCredentials"))}},_={pageTitle:e("pageTitle"),welcomeBack:e("welcomeBack"),signInPrompt:e("signInPrompt"),continueWithGoogle:e("continueWithGoogle"),backendUrlLabel:e("backendUrlLabel"),backendUrlPlaceholder:e("backendUrlPlaceholder"),emailLabel:e("emailLabel"),emailPlaceholder:e("emailPlaceholder"),passwordLabel:e("passwordLabel"),passwordPlaceholder:e("passwordPlaceholder"),signInWithCredentials:e("signInWithCredentials"),or:e("or"),credentialsAuthEnabled:e("credentialsAuthEnabled"),approvedDomainsOnly:e("approvedDomainsOnly"),backToHome:e("backToHome"),learnMore:e("learnMore"),signUpInstead:e("signUpInstead"),errorBackendUrlRequired:e("errorBackendUrlRequired"),errorBackendUrlInvalid:e("errorBackendUrlInvalid"),errorBackendUrlUnreachable:e("errorBackendUrlUnreachable"),errorEmailRequired:e("errorEmailRequired"),errorPasswordRequired:e("errorPasswordRequired"),tagline:a("Home.tagline")};return p.jsxs("div",{className:"semiont-page-wrapper",children:[p.jsx(H,{...I!==void 0&&{backendUrl:I},onGoogleSignIn:u?G:void 0,onCredentialsSignIn:R,error:y,showCredentialsAuth:!0,isLoading:!1,Link:T,translations:_}),p.jsx(q,{Link:F,routes:j,t:v,CookiePreferences:K,...(l==null?void 0:l.openKeyboardHelp)&&{onOpenKeyboardHelp:l.openKeyboardHelp}})]})}export{te as default};
2
+ //# sourceMappingURL=page-DX3FJ71G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page-DX3FJ71G.js","sources":["../../src/lib/env.ts","../../src/app/[locale]/auth/connect/page.tsx"],"sourcesContent":["// Environment configuration for Semiont Frontend\n// No validation at module load time - values are validated when actually used\n\n// Site Configuration\nexport const SEMIONT_SITE_NAME = process.env.SEMIONT_SITE_NAME || 'Semiont';\nexport const SEMIONT_BASE_URL = process.env.SEMIONT_BASE_URL || 'http://localhost:3000';\n\n// OAuth Configuration\nexport const SEMIONT_GOOGLE_CLIENT_ID = process.env.SEMIONT_GOOGLE_CLIENT_ID;\n\n// OAuth allowed domains (comma-separated list)\nexport const SEMIONT_OAUTH_ALLOWED_DOMAINS = process.env.SEMIONT_OAUTH_ALLOWED_DOMAINS || '';\n\n// Environment helpers\nexport const isDevelopment = process.env.NODE_ENV === 'development';\nexport const isProduction = process.env.NODE_ENV === 'production';\n\n// Helper to parse allowed domains from comma-separated string\nexport function getAllowedDomains(): string[] {\n return SEMIONT_OAUTH_ALLOWED_DOMAINS\n .split(',')\n .map(d => d.trim())\n .filter(d => d.length > 0);\n}\n","import { useEffect, useState, useContext, useRef } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { Footer, SignInForm } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\nimport { useAuthContext } from '@/contexts/AuthContext';\nimport { useKnowledgeBaseContext } from '@/contexts/KnowledgeBaseContext';\nimport { SemiontApiClient } from '@semiont/api-client';\nimport { googleCredential, email as makeEmail, baseUrl as makeBaseUrl, EventBus } from '@semiont/core';\nimport { SEMIONT_GOOGLE_CLIENT_ID } from '@/lib/env';\nimport type { KnowledgeBase } from '@/contexts/KnowledgeBaseContext';\n\ndeclare global {\n interface Window {\n google?: {\n accounts: {\n id: {\n initialize: (config: { client_id: string; callback: (response: { credential: string }) => void }) => void;\n prompt: () => void;\n };\n };\n };\n }\n}\n\n/**\n * Normalise a user-entered URL: add https:// if no scheme is present.\n */\nfunction normalizeUrl(raw: string): string {\n const trimmed = raw.trim();\n if (/^https?:\\/\\//i.test(trimmed)) return trimmed;\n return `https://${trimmed}`;\n}\n\nexport default function ConnectPage() {\n const { t: _t } = useTranslation();\n const t = (k: string) => _t(`AuthSignIn.${k}`) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const router = useRouter();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n const { setSession } = useAuthContext();\n const { knowledgeBases, addKnowledgeBase } = useKnowledgeBaseContext();\n\n const callbackUrl = searchParams.get('callbackUrl') ?? '/know';\n\n // If workspaceId is in the query string, we're re-authenticating to a known workspace.\n const workspaceId = searchParams.get('workspaceId');\n const knownKnowledgeBase: KnowledgeBase | undefined = workspaceId\n ? knowledgeBases.find(w => w.id === workspaceId)\n : undefined;\n\n // The locked URL shown in the form (undefined = user must enter it)\n const lockedBackendUrl = knownKnowledgeBase?.backendUrl;\n\n const [error, setError] = useState<string | null>(null);\n const googleScriptLoaded = useRef(false);\n\n useEffect(() => {\n if (!SEMIONT_GOOGLE_CLIENT_ID || googleScriptLoaded.current) return;\n const script = document.createElement('script');\n script.src = 'https://accounts.google.com/gsi/client';\n script.async = true;\n script.defer = true;\n document.head.appendChild(script);\n googleScriptLoaded.current = true;\n }, []);\n\n const handleGoogleSignIn = async (backendUrl: string) => {\n if (!SEMIONT_GOOGLE_CLIENT_ID) {\n setError(t('errorGoogleSignIn'));\n return;\n }\n setError(null);\n const normalizedUrl = normalizeUrl(backendUrl);\n const client = new SemiontApiClient({ baseUrl: makeBaseUrl(normalizedUrl), eventBus: new EventBus() });\n\n window.google?.accounts.id.initialize({\n client_id: SEMIONT_GOOGLE_CLIENT_ID,\n callback: async ({ credential }) => {\n try {\n const response = await client.authenticateGoogle(googleCredential(credential));\n if (!knownKnowledgeBase) {\n addKnowledgeBase({\n id: crypto.randomUUID(),\n label: new URL(normalizedUrl).hostname,\n backendUrl: normalizedUrl,\n });\n }\n setSession({ token: response.token, user: response.user as any });\n router.push(callbackUrl);\n } catch {\n setError(t('errorGoogleSignIn'));\n }\n },\n });\n window.google?.accounts.id.prompt();\n };\n\n const handleCredentialsSignIn = async (backendUrl: string, email: string, password: string) => {\n setError(null);\n const normalizedUrl = normalizeUrl(backendUrl);\n const client = new SemiontApiClient({ baseUrl: makeBaseUrl(normalizedUrl), eventBus: new EventBus() });\n try {\n const response = await client.authenticatePassword(makeEmail(email), password);\n if (!knownKnowledgeBase) {\n addKnowledgeBase({\n id: crypto.randomUUID(),\n label: new URL(normalizedUrl).hostname,\n backendUrl: normalizedUrl,\n });\n }\n setSession({ token: response.token, user: response.user as any });\n router.push(callbackUrl);\n } catch {\n setError(t('errorInvalidCredentials'));\n }\n };\n\n const translations = {\n pageTitle: t('pageTitle'),\n welcomeBack: t('welcomeBack'),\n signInPrompt: t('signInPrompt'),\n continueWithGoogle: t('continueWithGoogle'),\n backendUrlLabel: t('backendUrlLabel'),\n backendUrlPlaceholder: t('backendUrlPlaceholder'),\n emailLabel: t('emailLabel'),\n emailPlaceholder: t('emailPlaceholder'),\n passwordLabel: t('passwordLabel'),\n passwordPlaceholder: t('passwordPlaceholder'),\n signInWithCredentials: t('signInWithCredentials'),\n or: t('or'),\n credentialsAuthEnabled: t('credentialsAuthEnabled'),\n approvedDomainsOnly: t('approvedDomainsOnly'),\n backToHome: t('backToHome'),\n learnMore: t('learnMore'),\n signUpInstead: t('signUpInstead'),\n errorBackendUrlRequired: t('errorBackendUrlRequired'),\n errorBackendUrlInvalid: t('errorBackendUrlInvalid'),\n errorBackendUrlUnreachable: t('errorBackendUrlUnreachable'),\n errorEmailRequired: t('errorEmailRequired'),\n errorPasswordRequired: t('errorPasswordRequired'),\n tagline: _t('Home.tagline') as string,\n };\n\n return (\n <div className=\"semiont-page-wrapper\">\n <SignInForm\n {...(lockedBackendUrl !== undefined && { backendUrl: lockedBackendUrl })}\n onGoogleSignIn={SEMIONT_GOOGLE_CLIENT_ID ? handleGoogleSignIn : undefined as any}\n onCredentialsSignIn={handleCredentialsSignIn}\n error={error}\n showCredentialsAuth={true}\n isLoading={false}\n Link={Link}\n translations={translations}\n />\n <Footer\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n />\n </div>\n );\n}\n"],"names":["SEMIONT_GOOGLE_CLIENT_ID","define_process_env_default","normalizeUrl","raw","trimmed","ConnectPage","_t","useTranslation","t","k","tFooter","p","searchParams","useSearchParams","router","useRouter","keyboardContext","useContext","KeyboardShortcutsContext","setSession","useAuthContext","knowledgeBases","addKnowledgeBase","useKnowledgeBaseContext","callbackUrl","workspaceId","knownKnowledgeBase","w","lockedBackendUrl","error","setError","useState","googleScriptLoaded","useRef","useEffect","script","handleGoogleSignIn","backendUrl","normalizedUrl","client","SemiontApiClient","makeBaseUrl","EventBus","_a","credential","response","googleCredential","_b","handleCredentialsSignIn","email","password","makeEmail","translations","jsxs","jsx","SignInForm","Link","Footer","RoutingLink","routes","CookiePreferences"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as s}from"./query-ATBhtd3K.js";import{u as f,r as g}from"./vendor-EnoIVk-c.js";import{P as l,A as y}from"./en-LNW2A3RA-CQBvSBCl.js";import{C as d}from"./CookiePreferences-L69Zja-8.js";import{K as A}from"./privacy-D5H-YTl9.js";import{r as h,L as x}from"./routing-CBiIPmyX.js";import{L}from"./routing-tt0MahYa.js";import{u as b}from"./i18n-BYxb14hm.js";import"./index-IyxbPWuo.js";function D(){const{t}=b(),e=(r,o)=>t(`AuthError.${r}`,o),n=(r,o)=>t(`Footer.${r}`,o),i=(r,o)=>t(`Navigation.${r}`,o),c=(r,o)=>t(`Home.${r}`,o),[m]=f(),a=g.useContext(A),p=m.get("error")??null,u={pageTitle:e("pageTitle"),tryAgain:e("tryAgain"),errorConfiguration:e("errorConfiguration"),errorAccessDenied:e("errorAccessDenied"),errorVerification:e("errorVerification"),errorGeneric:e("errorGeneric")};return s.jsx(l,{Link:x,routes:h,t:n,tNav:i,tHome:c,CookiePreferences:d,...(a==null?void 0:a.openKeyboardHelp)&&{onOpenKeyboardHelp:a.openKeyboardHelp},className:"bg-gray-50 dark:bg-gray-900",children:s.jsx(y,{errorType:p,Link:L,translations:u})})}export{D as default};
2
- //# sourceMappingURL=page-kZNdnhdh.js.map
1
+ import{j as s}from"./query-ATBhtd3K.js";import{u as f,r as g}from"./vendor-EnoIVk-c.js";import{P as l,A as y}from"./en-IUV4ZXKH-BjYNERUx.js";import{C as d}from"./CookiePreferences-DxD0u90z.js";import{K as A}from"./privacy-QEJYcmMw.js";import{r as h,L as x}from"./routing-BgsGBuSe.js";import{L}from"./routing-nZgBtxly.js";import{u as b}from"./i18n-BYxb14hm.js";import"./index-D4SjcYxX.js";function D(){const{t}=b(),e=(r,o)=>t(`AuthError.${r}`,o),n=(r,o)=>t(`Footer.${r}`,o),i=(r,o)=>t(`Navigation.${r}`,o),c=(r,o)=>t(`Home.${r}`,o),[m]=f(),a=g.useContext(A),p=m.get("error")??null,u={pageTitle:e("pageTitle"),tryAgain:e("tryAgain"),errorConfiguration:e("errorConfiguration"),errorAccessDenied:e("errorAccessDenied"),errorVerification:e("errorVerification"),errorGeneric:e("errorGeneric")};return s.jsx(l,{Link:x,routes:h,t:n,tNav:i,tHome:c,CookiePreferences:d,...(a==null?void 0:a.openKeyboardHelp)&&{onOpenKeyboardHelp:a.openKeyboardHelp},className:"bg-gray-50 dark:bg-gray-900",children:s.jsx(y,{errorType:p,Link:L,translations:u})})}export{D as default};
2
+ //# sourceMappingURL=page-DfClTFD9.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-kZNdnhdh.js","sources":["../../src/app/[locale]/auth/error/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout, AuthErrorDisplay } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nexport default function AuthError() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthError.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const errorType = searchParams.get('error') ?? null;\n\n const translations = {\n pageTitle: t('pageTitle'),\n tryAgain: t('tryAgain'),\n errorConfiguration: t('errorConfiguration'),\n errorAccessDenied: t('errorAccessDenied'),\n errorVerification: t('errorVerification'),\n errorGeneric: t('errorGeneric'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"bg-gray-50 dark:bg-gray-900\"\n >\n <AuthErrorDisplay errorType={errorType} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n"],"names":["AuthError","_t","useTranslation","t","k","p","tFooter","tNav","tHome","searchParams","useSearchParams","keyboardContext","useContext","KeyboardShortcutsContext","errorType","translations","jsx","PageLayout","RoutingLink","routes","CookiePreferences","AuthErrorDisplay","Link"],"mappings":"oYASA,SAAwBA,GAAY,CAClC,KAAM,CAAEC,CAAG,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,aAAaG,CAAC,GAAIC,CAAQ,EAC7EC,EAAU,CAACF,EAAWC,IAAgCJ,EAAG,UAAUG,CAAC,GAAIC,CAAQ,EAChFE,EAAO,CAACH,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EACjFG,EAAQ,CAACJ,EAAWC,IAAgCJ,EAAG,QAAQG,CAAC,GAAIC,CAAQ,EAC5E,CAACI,CAAY,EAAIC,EAAA,EACjBC,EAAkBC,EAAAA,WAAWC,CAAwB,EAErDC,EAAYL,EAAa,IAAI,OAAO,GAAK,KAEzCM,EAAe,CACnB,UAAWZ,EAAE,WAAW,EACxB,SAAUA,EAAE,UAAU,EACtB,mBAAoBA,EAAE,oBAAoB,EAC1C,kBAAmBA,EAAE,mBAAmB,EACxC,kBAAmBA,EAAE,mBAAmB,EACxC,aAAcA,EAAE,cAAc,CAAA,EAGhC,OACEa,EAAAA,IAACC,EAAA,CACC,KAAMC,EACN,OAAAC,EACA,EAAGb,EACH,KAAAC,EACA,MAAAC,EACA,kBAAAY,EACC,IAAIT,GAAA,YAAAA,EAAiB,mBAAoB,CAAE,mBAAoBA,EAAgB,gBAAA,EAChF,UAAU,8BAEV,SAAAK,EAAAA,IAACK,EAAA,CAAiB,UAAAP,EAAA,KAAsBQ,EAAY,aAAAP,CAAA,CAA4B,CAAA,CAAA,CAGtF"}
1
+ {"version":3,"file":"page-DfClTFD9.js","sources":["../../src/app/[locale]/auth/error/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout, AuthErrorDisplay } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nexport default function AuthError() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthError.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const errorType = searchParams.get('error') ?? null;\n\n const translations = {\n pageTitle: t('pageTitle'),\n tryAgain: t('tryAgain'),\n errorConfiguration: t('errorConfiguration'),\n errorAccessDenied: t('errorAccessDenied'),\n errorVerification: t('errorVerification'),\n errorGeneric: t('errorGeneric'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"bg-gray-50 dark:bg-gray-900\"\n >\n <AuthErrorDisplay errorType={errorType} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n"],"names":["AuthError","_t","useTranslation","t","k","p","tFooter","tNav","tHome","searchParams","useSearchParams","keyboardContext","useContext","KeyboardShortcutsContext","errorType","translations","jsx","PageLayout","RoutingLink","routes","CookiePreferences","AuthErrorDisplay","Link"],"mappings":"oYASA,SAAwBA,GAAY,CAClC,KAAM,CAAEC,CAAG,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,aAAaG,CAAC,GAAIC,CAAQ,EAC7EC,EAAU,CAACF,EAAWC,IAAgCJ,EAAG,UAAUG,CAAC,GAAIC,CAAQ,EAChFE,EAAO,CAACH,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EACjFG,EAAQ,CAACJ,EAAWC,IAAgCJ,EAAG,QAAQG,CAAC,GAAIC,CAAQ,EAC5E,CAACI,CAAY,EAAIC,EAAA,EACjBC,EAAkBC,EAAAA,WAAWC,CAAwB,EAErDC,EAAYL,EAAa,IAAI,OAAO,GAAK,KAEzCM,EAAe,CACnB,UAAWZ,EAAE,WAAW,EACxB,SAAUA,EAAE,UAAU,EACtB,mBAAoBA,EAAE,oBAAoB,EAC1C,kBAAmBA,EAAE,mBAAmB,EACxC,kBAAmBA,EAAE,mBAAmB,EACxC,aAAcA,EAAE,cAAc,CAAA,EAGhC,OACEa,EAAAA,IAACC,EAAA,CACC,KAAMC,EACN,OAAAC,EACA,EAAGb,EACH,KAAAC,EACA,MAAAC,EACA,kBAAAY,EACC,IAAIT,GAAA,YAAAA,EAAiB,mBAAoB,CAAE,mBAAoBA,EAAgB,gBAAA,EAChF,UAAU,8BAEV,SAAAK,EAAAA,IAACK,EAAA,CAAiB,UAAAP,EAAA,KAAsBQ,EAAY,aAAAP,CAAA,CAA4B,CAAA,CAAA,CAGtF"}
@@ -1,2 +1,2 @@
1
- import{j as e}from"./query-ATBhtd3K.js";import{r as x}from"./vendor-EnoIVk-c.js";import{u as p}from"./useAuth-Bw_w8L0H.js";import{L as a}from"./routing-tt0MahYa.js";import{S as h,b as t,F as u}from"./en-LNW2A3RA-CQBvSBCl.js";import{C as j}from"./CookiePreferences-L69Zja-8.js";import{K as f}from"./privacy-D5H-YTl9.js";import{r as g,L as y}from"./routing-CBiIPmyX.js";import{u as b}from"./i18n-BYxb14hm.js";import"./AuthContext-xM132UqD.js";import"./index-IyxbPWuo.js";function P(){const{isAuthenticated:i,isLoading:c}=p(),m=c?"loading":i?"authenticated":"unauthenticated",{t:l}=b(),s=(n,o)=>l(`Home.${n}`,o),d=(n,o)=>l(`Footer.${n}`,o),r=x.useContext(f);return e.jsxs("div",{className:"flex flex-col min-h-screen",children:[e.jsx("main",{className:"flex-1 flex flex-col items-center justify-center p-24",role:"main",children:e.jsx("div",{className:"z-10 max-w-5xl text-sm",children:m==="loading"?e.jsx("div",{className:"text-center",children:e.jsx("p",{className:"text-gray-600 dark:text-gray-300",children:s("loading")})}):e.jsxs("div",{className:"text-center space-y-8",children:[e.jsxs("section",{"aria-labelledby":"hero-heading",className:"py-8",children:[e.jsx("h1",{id:"hero-heading",className:"sr-only",children:"Semiont - AI-Powered Research Platform"}),e.jsx(h,{t:s,size:"xl",animated:!0,className:"mb-8"}),e.jsx("p",{className:"text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto",children:s("description")})]}),e.jsx("div",{className:"flex gap-4 justify-center items-center flex-wrap",children:i?e.jsxs(e.Fragment,{children:[e.jsx(a,{to:"/know",className:t.primary.base,children:s("continueToKnowledgeBase")}),e.jsx(a,{to:"/about",className:t.secondary.base,children:s("learnMore")})]}):e.jsxs(e.Fragment,{children:[e.jsx(a,{to:"/about",className:t.secondary.base,children:s("learnMore")}),e.jsx(a,{to:"/auth/signup",className:t.primary.base,children:s("signUp")}),e.jsx(a,{to:"/auth/signin?callbackUrl=/know",className:t.primary.base,children:s("signIn")})]})})]})})}),e.jsx(u,{Link:y,routes:g,t:d,CookiePreferences:j,...(r==null?void 0:r.openKeyboardHelp)&&{onOpenKeyboardHelp:r.openKeyboardHelp}})]})}export{P as default};
2
- //# sourceMappingURL=page-CPxgvPSe.js.map
1
+ import{j as e}from"./query-ATBhtd3K.js";import{r as x}from"./vendor-EnoIVk-c.js";import{u as p}from"./useAuth-CqtZE9nt.js";import{L as a}from"./routing-nZgBtxly.js";import{S as h,b as t,F as u}from"./en-IUV4ZXKH-BjYNERUx.js";import{C as j}from"./CookiePreferences-DxD0u90z.js";import{K as f}from"./privacy-QEJYcmMw.js";import{r as y,L as g}from"./routing-BgsGBuSe.js";import{u as b}from"./i18n-BYxb14hm.js";import"./AuthContext-CYne_gJM.js";import"./index-D4SjcYxX.js";function P(){const{isAuthenticated:i,isLoading:c}=p(),m=c?"loading":i?"authenticated":"unauthenticated",{t:l}=b(),s=(o,n)=>l(`Home.${o}`,n),d=(o,n)=>l(`Footer.${o}`,n),r=x.useContext(f);return e.jsxs("div",{className:"flex flex-col min-h-screen",children:[e.jsx("main",{className:"flex-1 flex flex-col items-center justify-center p-24",role:"main",children:e.jsx("div",{className:"z-10 max-w-5xl text-sm",children:m==="loading"?e.jsx("div",{className:"text-center",children:e.jsx("p",{className:"text-gray-600 dark:text-gray-300",children:s("loading")})}):e.jsxs("div",{className:"text-center space-y-8",children:[e.jsxs("section",{"aria-labelledby":"hero-heading",className:"py-8",children:[e.jsx("h1",{id:"hero-heading",className:"sr-only",children:"Semiont - AI-Powered Research Platform"}),e.jsx(h,{t:s,size:"xl",animated:!0,className:"mb-8"}),e.jsx("p",{className:"text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto",children:s("description")})]}),e.jsx("div",{className:"flex gap-4 justify-center items-center flex-wrap",children:i?e.jsxs(e.Fragment,{children:[e.jsx(a,{to:"/know",className:t.primary.base,children:s("continueToKnowledgeBase")}),e.jsx(a,{to:"/about",className:t.secondary.base,children:s("learnMore")})]}):e.jsxs(e.Fragment,{children:[e.jsx(a,{to:"/about",className:t.secondary.base,children:s("learnMore")}),e.jsx(a,{to:"/auth/signup",className:t.primary.base,children:s("signUp")}),e.jsx(a,{to:"/auth/connect?callbackUrl=/know",className:t.primary.base,children:s("signIn")})]})})]})})}),e.jsx(u,{Link:g,routes:y,t:d,CookiePreferences:j,...(r==null?void 0:r.openKeyboardHelp)&&{onOpenKeyboardHelp:r.openKeyboardHelp}})]})}export{P as default};
2
+ //# sourceMappingURL=page-KDTjODvy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-CPxgvPSe.js","sources":["../../src/app/[locale]/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '@/hooks/useAuth';\nimport { Link } from '@/i18n/routing';\nimport { Footer, SemiontBranding, buttonStyles } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function Home() {\n const { isAuthenticated, isLoading } = useAuth();\n const status = isLoading ? 'loading' : isAuthenticated ? 'authenticated' : 'unauthenticated';\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <div className=\"flex flex-col min-h-screen\">\n <main className=\"flex-1 flex flex-col items-center justify-center p-24\" role=\"main\">\n <div className=\"z-10 max-w-5xl text-sm\">\n {status === 'loading' ? (\n <div className=\"text-center\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loading')}</p>\n </div>\n ) : (\n <div className=\"text-center space-y-8\">\n <section aria-labelledby=\"hero-heading\" className=\"py-8\">\n <h1 id=\"hero-heading\" className=\"sr-only\">Semiont - AI-Powered Research Platform</h1>\n <SemiontBranding\n t={t}\n size=\"xl\"\n animated={true}\n className=\"mb-8\"\n />\n <p className=\"text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto\">\n {t('description')}\n </p>\n </section>\n\n <div className=\"flex gap-4 justify-center items-center flex-wrap\">\n {isAuthenticated ? (\n <>\n <Link to=\"/know\" className={buttonStyles.primary.base}>\n {t('continueToKnowledgeBase')}\n </Link>\n <Link to=\"/about\" className={buttonStyles.secondary.base}>\n {t('learnMore')}\n </Link>\n </>\n ) : (\n <>\n <Link to=\"/about\" className={buttonStyles.secondary.base}>\n {t('learnMore')}\n </Link>\n <Link to=\"/auth/signup\" className={buttonStyles.primary.base}>\n {t('signUp')}\n </Link>\n <Link to=\"/auth/signin?callbackUrl=/know\" className={buttonStyles.primary.base}>\n {t('signIn')}\n </Link>\n </>\n )}\n </div>\n </div>\n )}\n </div>\n </main>\n\n <Footer\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n />\n </div>\n );\n}\n"],"names":["Home","isAuthenticated","isLoading","useAuth","status","_t","useTranslation","t","k","p","tFooter","keyboardContext","useContext","KeyboardShortcutsContext","jsxs","jsx","SemiontBranding","Fragment","Link","buttonStyles","Footer","RoutingLink","routes","CookiePreferences"],"mappings":"qdASA,SAAwBA,GAAO,CAC7B,KAAM,CAAE,gBAAAC,EAAiB,UAAAC,CAAA,EAAcC,EAAA,EACjCC,EAASF,EAAY,UAAYD,EAAkB,gBAAkB,kBACrE,CAAE,EAAGI,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,QAAQG,CAAC,GAAIC,CAAQ,EACxEC,EAAU,CAACF,EAAWC,IAAgCJ,EAAG,UAAUG,CAAC,GAAIC,CAAQ,EAChFE,EAAkBC,EAAAA,WAAWC,CAAwB,EAE3D,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAAC,OAAA,CAAK,UAAU,wDAAwD,KAAK,OAC3E,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACZ,SAAAX,IAAW,UACVW,EAAAA,IAAC,MAAA,CAAI,UAAU,cACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAR,EAAE,SAAS,CAAA,CAAE,CAAA,CAChE,EAEAO,EAAAA,KAAC,MAAA,CAAI,UAAU,wBACb,SAAA,CAAAA,EAAAA,KAAC,UAAA,CAAQ,kBAAgB,eAAe,UAAU,OAChD,SAAA,CAAAC,MAAC,KAAA,CAAG,GAAG,eAAe,UAAU,UAAU,SAAA,yCAAsC,EAChFA,EAAAA,IAACC,EAAA,CACC,EAAAT,EACA,KAAK,KACL,SAAU,GACV,UAAU,MAAA,CAAA,QAEX,IAAA,CAAE,UAAU,6DACV,SAAAA,EAAE,aAAa,CAAA,CAClB,CAAA,EACF,EAEAQ,MAAC,MAAA,CAAI,UAAU,mDACZ,WACCD,EAAAA,KAAAG,WAAA,CACE,SAAA,CAAAF,EAAAA,IAACG,EAAA,CAAK,GAAG,QAAQ,UAAWC,EAAa,QAAQ,KAC9C,SAAAZ,EAAE,yBAAyB,CAAA,CAC9B,EACAQ,EAAAA,IAACG,EAAA,CAAK,GAAG,SAAS,UAAWC,EAAa,UAAU,KACjD,SAAAZ,EAAE,WAAW,CAAA,CAChB,CAAA,CAAA,CACF,EAEAO,EAAAA,KAAAG,EAAAA,SAAA,CACE,SAAA,CAAAF,EAAAA,IAACG,EAAA,CAAK,GAAG,SAAS,UAAWC,EAAa,UAAU,KACjD,SAAAZ,EAAE,WAAW,CAAA,CAChB,EACAQ,EAAAA,IAACG,EAAA,CAAK,GAAG,eAAe,UAAWC,EAAa,QAAQ,KACrD,SAAAZ,EAAE,QAAQ,CAAA,CACb,EACAQ,EAAAA,IAACG,EAAA,CAAK,GAAG,iCAAiC,UAAWC,EAAa,QAAQ,KACvE,SAAAZ,EAAE,QAAQ,CAAA,CACb,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CACF,EAEJ,EACF,EAEAQ,EAAAA,IAACK,EAAA,CACC,KAAMC,EACN,OAAAC,EACA,EAAGZ,EACH,kBAAAa,EACC,IAAIZ,GAAA,YAAAA,EAAiB,mBAAoB,CAAE,mBAAoBA,EAAgB,gBAAA,CAAiB,CAAA,CACnG,EACF,CAEJ"}
1
+ {"version":3,"file":"page-KDTjODvy.js","sources":["../../src/app/[locale]/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAuth } from '@/hooks/useAuth';\nimport { Link } from '@/i18n/routing';\nimport { Footer, SemiontBranding, buttonStyles } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function Home() {\n const { isAuthenticated, isLoading } = useAuth();\n const status = isLoading ? 'loading' : isAuthenticated ? 'authenticated' : 'unauthenticated';\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <div className=\"flex flex-col min-h-screen\">\n <main className=\"flex-1 flex flex-col items-center justify-center p-24\" role=\"main\">\n <div className=\"z-10 max-w-5xl text-sm\">\n {status === 'loading' ? (\n <div className=\"text-center\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loading')}</p>\n </div>\n ) : (\n <div className=\"text-center space-y-8\">\n <section aria-labelledby=\"hero-heading\" className=\"py-8\">\n <h1 id=\"hero-heading\" className=\"sr-only\">Semiont - AI-Powered Research Platform</h1>\n <SemiontBranding\n t={t}\n size=\"xl\"\n animated={true}\n className=\"mb-8\"\n />\n <p className=\"text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto\">\n {t('description')}\n </p>\n </section>\n\n <div className=\"flex gap-4 justify-center items-center flex-wrap\">\n {isAuthenticated ? (\n <>\n <Link to=\"/know\" className={buttonStyles.primary.base}>\n {t('continueToKnowledgeBase')}\n </Link>\n <Link to=\"/about\" className={buttonStyles.secondary.base}>\n {t('learnMore')}\n </Link>\n </>\n ) : (\n <>\n <Link to=\"/about\" className={buttonStyles.secondary.base}>\n {t('learnMore')}\n </Link>\n <Link to=\"/auth/signup\" className={buttonStyles.primary.base}>\n {t('signUp')}\n </Link>\n <Link to=\"/auth/connect?callbackUrl=/know\" className={buttonStyles.primary.base}>\n {t('signIn')}\n </Link>\n </>\n )}\n </div>\n </div>\n )}\n </div>\n </main>\n\n <Footer\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n />\n </div>\n );\n}\n"],"names":["Home","isAuthenticated","isLoading","useAuth","status","_t","useTranslation","t","k","p","tFooter","keyboardContext","useContext","KeyboardShortcutsContext","jsxs","jsx","SemiontBranding","Fragment","Link","buttonStyles","Footer","RoutingLink","routes","CookiePreferences"],"mappings":"qdASA,SAAwBA,GAAO,CAC7B,KAAM,CAAE,gBAAAC,EAAiB,UAAAC,CAAA,EAAcC,EAAA,EACjCC,EAASF,EAAY,UAAYD,EAAkB,gBAAkB,kBACrE,CAAE,EAAGI,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,QAAQG,CAAC,GAAIC,CAAQ,EACxEC,EAAU,CAACF,EAAWC,IAAgCJ,EAAG,UAAUG,CAAC,GAAIC,CAAQ,EAChFE,EAAkBC,EAAAA,WAAWC,CAAwB,EAE3D,OACEC,EAAAA,KAAC,MAAA,CAAI,UAAU,6BACb,SAAA,CAAAC,EAAAA,IAAC,OAAA,CAAK,UAAU,wDAAwD,KAAK,OAC3E,SAAAA,EAAAA,IAAC,MAAA,CAAI,UAAU,yBACZ,SAAAX,IAAW,UACVW,EAAAA,IAAC,MAAA,CAAI,UAAU,cACb,SAAAA,MAAC,IAAA,CAAE,UAAU,mCAAoC,SAAAR,EAAE,SAAS,CAAA,CAAE,CAAA,CAChE,EAEAO,EAAAA,KAAC,MAAA,CAAI,UAAU,wBACb,SAAA,CAAAA,EAAAA,KAAC,UAAA,CAAQ,kBAAgB,eAAe,UAAU,OAChD,SAAA,CAAAC,MAAC,KAAA,CAAG,GAAG,eAAe,UAAU,UAAU,SAAA,yCAAsC,EAChFA,EAAAA,IAACC,EAAA,CACC,EAAAT,EACA,KAAK,KACL,SAAU,GACV,UAAU,MAAA,CAAA,QAEX,IAAA,CAAE,UAAU,6DACV,SAAAA,EAAE,aAAa,CAAA,CAClB,CAAA,EACF,EAEAQ,MAAC,MAAA,CAAI,UAAU,mDACZ,WACCD,EAAAA,KAAAG,WAAA,CACE,SAAA,CAAAF,EAAAA,IAACG,EAAA,CAAK,GAAG,QAAQ,UAAWC,EAAa,QAAQ,KAC9C,SAAAZ,EAAE,yBAAyB,CAAA,CAC9B,EACAQ,EAAAA,IAACG,EAAA,CAAK,GAAG,SAAS,UAAWC,EAAa,UAAU,KACjD,SAAAZ,EAAE,WAAW,CAAA,CAChB,CAAA,CAAA,CACF,EAEAO,EAAAA,KAAAG,EAAAA,SAAA,CACE,SAAA,CAAAF,EAAAA,IAACG,EAAA,CAAK,GAAG,SAAS,UAAWC,EAAa,UAAU,KACjD,SAAAZ,EAAE,WAAW,CAAA,CAChB,EACAQ,EAAAA,IAACG,EAAA,CAAK,GAAG,eAAe,UAAWC,EAAa,QAAQ,KACrD,SAAAZ,EAAE,QAAQ,CAAA,CACb,EACAQ,EAAAA,IAACG,EAAA,CAAK,GAAG,kCAAkC,UAAWC,EAAa,QAAQ,KACxE,SAAAZ,EAAE,QAAQ,CAAA,CACb,CAAA,CAAA,CACF,CAAA,CAEJ,CAAA,CAAA,CACF,EAEJ,EACF,EAEAQ,EAAAA,IAACK,EAAA,CACC,KAAMC,EACN,OAAAC,EACA,EAAGZ,EACH,kBAAAa,EACC,IAAIZ,GAAA,YAAAA,EAAiB,mBAAoB,CAAE,mBAAoBA,EAAgB,gBAAA,CAAiB,CAAA,CACnG,EACF,CAEJ"}