@semiont/frontend 0.4.6 → 0.4.7

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 (80) hide show
  1. package/dist/assets/AuthContext-xM132UqD.js +2 -0
  2. package/dist/assets/AuthContext-xM132UqD.js.map +1 -0
  3. package/dist/assets/{CookiePreferences-C35ds4bQ.js → CookiePreferences-L69Zja-8.js} +2 -2
  4. package/dist/assets/{CookiePreferences-C35ds4bQ.js.map → CookiePreferences-L69Zja-8.js.map} +1 -1
  5. package/dist/assets/{PdfAnnotationCanvas.client-LF6DDTCV-B4G1hSau.js → PdfAnnotationCanvas.client-LF6DDTCV-DjnFutDo.js} +2 -2
  6. package/dist/assets/{PdfAnnotationCanvas.client-LF6DDTCV-B4G1hSau.js.map → PdfAnnotationCanvas.client-LF6DDTCV-DjnFutDo.js.map} +1 -1
  7. package/dist/assets/{ToolbarPanels-zXxZM4bL.js → ToolbarPanels-Dq0eXjjR.js} +2 -2
  8. package/dist/assets/{ToolbarPanels-zXxZM4bL.js.map → ToolbarPanels-Dq0eXjjR.js.map} +1 -1
  9. package/dist/assets/{client-CgVU9eN0.js → client-CmvSjN3K.js} +2 -2
  10. package/dist/assets/{client-CgVU9eN0.js.map → client-CmvSjN3K.js.map} +1 -1
  11. package/dist/assets/{client-BFN4OqK0.js → client-Cxt1NUWp.js} +2 -2
  12. package/dist/assets/{client-BFN4OqK0.js.map → client-Cxt1NUWp.js.map} +1 -1
  13. package/dist/assets/{client-CF_pv0rC.js → client-D1NYe5bc.js} +2 -2
  14. package/dist/assets/{client-CF_pv0rC.js.map → client-D1NYe5bc.js.map} +1 -1
  15. package/dist/assets/{client-Di531MRg.js → client-D5mudL5R.js} +2 -2
  16. package/dist/assets/{client-Di531MRg.js.map → client-D5mudL5R.js.map} +1 -1
  17. package/dist/assets/{en-LNW2A3RA-BUa1vcQc.js → en-LNW2A3RA-CQBvSBCl.js} +5 -5
  18. package/dist/assets/{en-LNW2A3RA-BUa1vcQc.js.map → en-LNW2A3RA-CQBvSBCl.js.map} +1 -1
  19. package/dist/assets/{index-DsKSr5Q5.js → index-IyxbPWuo.js} +3 -3
  20. package/dist/assets/{index-DsKSr5Q5.js.map → index-IyxbPWuo.js.map} +1 -1
  21. package/dist/assets/{layout-CdHgzhHf.js → layout-5_En-vLB.js} +2 -2
  22. package/dist/assets/{layout-CdHgzhHf.js.map → layout-5_En-vLB.js.map} +1 -1
  23. package/dist/assets/{layout-CYimsq_V.js → layout-DF8lLIQx.js} +2 -2
  24. package/dist/assets/{layout-CYimsq_V.js.map → layout-DF8lLIQx.js.map} +1 -1
  25. package/dist/assets/{layout-BRiOZEGL.js → layout-DYaEHeqB.js} +2 -2
  26. package/dist/assets/{layout-BRiOZEGL.js.map → layout-DYaEHeqB.js.map} +1 -1
  27. package/dist/assets/{layout-C-7nzim0.js → layout-QdxLp1Jq.js} +2 -2
  28. package/dist/assets/{layout-C-7nzim0.js.map → layout-QdxLp1Jq.js.map} +1 -1
  29. package/dist/assets/{not-found-D_yWa0eC.js → not-found-BjlzlRT_.js} +2 -2
  30. package/dist/assets/{not-found-D_yWa0eC.js.map → not-found-BjlzlRT_.js.map} +1 -1
  31. package/dist/assets/{page-Dnixz6NY.js → page-4vdCvEL0.js} +2 -2
  32. package/dist/assets/{page-Dnixz6NY.js.map → page-4vdCvEL0.js.map} +1 -1
  33. package/dist/assets/{page-BItZqEKs.js → page-6Y-lDxnu.js} +2 -2
  34. package/dist/assets/{page-BItZqEKs.js.map → page-6Y-lDxnu.js.map} +1 -1
  35. package/dist/assets/{page-BKC4knAP.js → page-B8hAUDzt.js} +2 -2
  36. package/dist/assets/{page-BKC4knAP.js.map → page-B8hAUDzt.js.map} +1 -1
  37. package/dist/assets/{page-aXQvfZxG.js → page-BUPqapmo.js} +2 -2
  38. package/dist/assets/{page-aXQvfZxG.js.map → page-BUPqapmo.js.map} +1 -1
  39. package/dist/assets/{page-KzkTaHkN.js → page-Bb2aSxYZ.js} +2 -2
  40. package/dist/assets/{page-KzkTaHkN.js.map → page-Bb2aSxYZ.js.map} +1 -1
  41. package/dist/assets/{page-Nxgrl4fs.js → page-CG2brhZf.js} +2 -2
  42. package/dist/assets/{page-Nxgrl4fs.js.map → page-CG2brhZf.js.map} +1 -1
  43. package/dist/assets/{page-aAjfohhi.js → page-CPxgvPSe.js} +2 -2
  44. package/dist/assets/{page-aAjfohhi.js.map → page-CPxgvPSe.js.map} +1 -1
  45. package/dist/assets/{page-OQxske5w.js → page-CTn7lGDa.js} +2 -2
  46. package/dist/assets/{page-OQxske5w.js.map → page-CTn7lGDa.js.map} +1 -1
  47. package/dist/assets/page-CkeyIRf4.js +2 -0
  48. package/dist/assets/{page-amCJRFD1.js.map → page-CkeyIRf4.js.map} +1 -1
  49. package/dist/assets/{page-CRyuR46S.js → page-D77AjrZW.js} +2 -2
  50. package/dist/assets/{page-CRyuR46S.js.map → page-D77AjrZW.js.map} +1 -1
  51. package/dist/assets/{page-DayDCUEn.js → page-D7qEC0QY.js} +2 -2
  52. package/dist/assets/{page-DayDCUEn.js.map → page-D7qEC0QY.js.map} +1 -1
  53. package/dist/assets/{page-DnbS5nGR.js → page-DA0znMx6.js} +2 -2
  54. package/dist/assets/{page-DnbS5nGR.js.map → page-DA0znMx6.js.map} +1 -1
  55. package/dist/assets/{page-ciRM605J.js → page-DwQP9ZTM.js} +2 -2
  56. package/dist/assets/{page-ciRM605J.js.map → page-DwQP9ZTM.js.map} +1 -1
  57. package/dist/assets/{page-BBlT4pdR.js → page-MyIklHT7.js} +2 -2
  58. package/dist/assets/{page-BBlT4pdR.js.map → page-MyIklHT7.js.map} +1 -1
  59. package/dist/assets/{page-B209dGEN.js → page-VpcpXQSK.js} +2 -2
  60. package/dist/assets/{page-B209dGEN.js.map → page-VpcpXQSK.js.map} +1 -1
  61. package/dist/assets/{page-BZ2PDkOm.js → page-bnSUmwNQ.js} +2 -2
  62. package/dist/assets/{page-BZ2PDkOm.js.map → page-bnSUmwNQ.js.map} +1 -1
  63. package/dist/assets/{page-C8k0U1_B.js → page-kZNdnhdh.js} +2 -2
  64. package/dist/assets/{page-C8k0U1_B.js.map → page-kZNdnhdh.js.map} +1 -1
  65. package/dist/assets/{page-QmDs_FHZ.js → page-n2Dj9C-v.js} +2 -2
  66. package/dist/assets/{page-QmDs_FHZ.js.map → page-n2Dj9C-v.js.map} +1 -1
  67. package/dist/assets/{privacy-B1CWCygr.js → privacy-D5H-YTl9.js} +2 -2
  68. package/dist/assets/{privacy-B1CWCygr.js.map → privacy-D5H-YTl9.js.map} +1 -1
  69. package/dist/assets/{routing-BhiBwewL.js → routing-CBiIPmyX.js} +2 -2
  70. package/dist/assets/{routing-BhiBwewL.js.map → routing-CBiIPmyX.js.map} +1 -1
  71. package/dist/assets/{routing-QElszVRP.js → routing-tt0MahYa.js} +2 -2
  72. package/dist/assets/{routing-QElszVRP.js.map → routing-tt0MahYa.js.map} +1 -1
  73. package/dist/assets/{useAuth-ByOA13lp.js → useAuth-Bw_w8L0H.js} +2 -2
  74. package/dist/assets/{useAuth-ByOA13lp.js.map → useAuth-Bw_w8L0H.js.map} +1 -1
  75. package/dist/index.html +1 -1
  76. package/package.json +1 -1
  77. package/server.js +18 -2
  78. package/dist/assets/AuthContext-BVzUcaCU.js +0 -2
  79. package/dist/assets/AuthContext-BVzUcaCU.js.map +0 -1
  80. package/dist/assets/page-amCJRFD1.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"client-CgVU9eN0.js","sources":["../../src/app/[locale]/admin/security/client.tsx"],"sourcesContent":["/**\n * Admin Security Client - Thin Next.js wrapper\n *\n * This component handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React AdminSecurityPage component.\n */\n\nimport React, { useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAdmin, Toolbar } from '@semiont/react-ui';\nimport type { paths } from '@semiont/core';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminSecurityPage } from '@semiont/react-ui';\nimport type { OAuthProvider } from '@semiont/react-ui';\n\ntype ResponseContent<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never;\ntype OAuthConfigResponse = ResponseContent<paths['/api/admin/oauth/config']['get']>;\n\nexport default function AdminSecurity() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminSecurity.${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 // Get OAuth configuration from API\n const adminAPI = useAdmin();\n const { data: oauthConfig, isLoading: oauthLoading } = adminAPI.oauth.config.useQuery();\n\n const allowedDomains = (oauthConfig as OAuthConfigResponse | undefined)?.allowedDomains ?? [];\n const providers = (oauthConfig as OAuthConfigResponse | undefined)?.providers ?? [];\n\n return (\n <AdminSecurityPage\n providers={providers as OAuthProvider[]}\n allowedDomains={allowedDomains}\n isLoading={oauthLoading}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n oauthProviders: t('oauthProviders'),\n oauthProvidersDescription: t('oauthProvidersDescription'),\n clientId: t('clientId'),\n configured: t('configured'),\n noProvidersConfigured: t('noProvidersConfigured'),\n allowedDomains: t('allowedDomains'),\n allowedDomainsDescription: t('allowedDomainsDescription'),\n noDomainsConfigured: t('noDomainsConfigured'),\n configManagementTitle: t('configManagementTitle'),\n configManagementDescription: t('configManagementDescription'),\n configLocalDev: t('configLocalDev'),\n configCloudDeploy: t('configCloudDeploy'),\n configCloudDeployCommand: t('configCloudDeployCommand'),\n configCloudDeployEnd: t('configCloudDeployEnd'),\n configAWS: t('configAWS'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["AdminSecurity","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","adminAPI","useAdmin","oauthConfig","oauthLoading","allowedDomains","providers","jsx","AdminSecurityPage","ToolbarPanels","Toolbar"],"mappings":"0XAmBA,SAAwBA,GAAgB,CACtC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,iBAAiBG,CAAC,GAAIC,CAAQ,EAGjF,CAAE,YAAAC,CAAA,EAAgBC,EAAA,EAClB,CAAE,MAAAC,EAAO,SAAAC,CAAA,EAAaC,EAAA,EACtB,CAAE,gBAAAC,EAAiB,kBAAAC,CAAA,EAAsBC,EAAA,EAGzCC,EAAqBC,EAAAA,YAAY,CAAC,CAAE,MAAAP,KAAoD,CAC5FC,EAASD,CAAK,CAChB,EAAG,CAACC,CAAQ,CAAC,EAGPO,EAA2BD,EAAAA,YAAY,IAAM,CACjDH,EAAA,CACF,EAAG,CAACA,CAAiB,CAAC,EAEtBK,EAAsB,CACpB,yBAA0BH,EAC1B,gCAAiCE,CAAA,CAClC,EAGD,MAAME,EAAWC,EAAA,EACX,CAAE,KAAMC,EAAa,UAAWC,GAAiBH,EAAS,MAAM,OAAO,SAAA,EAEvEI,GAAkBF,GAAA,YAAAA,EAAiD,iBAAkB,CAAA,EACrFG,GAAaH,GAAA,YAAAA,EAAiD,YAAa,CAAA,EAEjF,OACEI,EAAAA,IAACC,EAAA,CACC,UAAAF,EACA,eAAAD,EACA,UAAWD,EACX,MAAAb,EACA,gBAAAG,EACA,YAAAL,EACA,aAAc,CACZ,MAAOH,EAAE,OAAO,EAChB,SAAUA,EAAE,UAAU,EACtB,eAAgBA,EAAE,gBAAgB,EAClC,0BAA2BA,EAAE,2BAA2B,EACxD,SAAUA,EAAE,UAAU,EACtB,WAAYA,EAAE,YAAY,EAC1B,sBAAuBA,EAAE,uBAAuB,EAChD,eAAgBA,EAAE,gBAAgB,EAClC,0BAA2BA,EAAE,2BAA2B,EACxD,oBAAqBA,EAAE,qBAAqB,EAC5C,sBAAuBA,EAAE,uBAAuB,EAChD,4BAA6BA,EAAE,6BAA6B,EAC5D,eAAgBA,EAAE,gBAAgB,EAClC,kBAAmBA,EAAE,mBAAmB,EACxC,yBAA0BA,EAAE,0BAA0B,EACtD,qBAAsBA,EAAE,sBAAsB,EAC9C,UAAWA,EAAE,WAAW,CAAA,EAE1B,cAAAuB,EACA,QAAAC,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"client-CmvSjN3K.js","sources":["../../src/app/[locale]/admin/security/client.tsx"],"sourcesContent":["/**\n * Admin Security Client - Thin Next.js wrapper\n *\n * This component handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React AdminSecurityPage component.\n */\n\nimport React, { useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAdmin, Toolbar } from '@semiont/react-ui';\nimport type { paths } from '@semiont/core';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminSecurityPage } from '@semiont/react-ui';\nimport type { OAuthProvider } from '@semiont/react-ui';\n\ntype ResponseContent<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never;\ntype OAuthConfigResponse = ResponseContent<paths['/api/admin/oauth/config']['get']>;\n\nexport default function AdminSecurity() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminSecurity.${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 // Get OAuth configuration from API\n const adminAPI = useAdmin();\n const { data: oauthConfig, isLoading: oauthLoading } = adminAPI.oauth.config.useQuery();\n\n const allowedDomains = (oauthConfig as OAuthConfigResponse | undefined)?.allowedDomains ?? [];\n const providers = (oauthConfig as OAuthConfigResponse | undefined)?.providers ?? [];\n\n return (\n <AdminSecurityPage\n providers={providers as OAuthProvider[]}\n allowedDomains={allowedDomains}\n isLoading={oauthLoading}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n oauthProviders: t('oauthProviders'),\n oauthProvidersDescription: t('oauthProvidersDescription'),\n clientId: t('clientId'),\n configured: t('configured'),\n noProvidersConfigured: t('noProvidersConfigured'),\n allowedDomains: t('allowedDomains'),\n allowedDomainsDescription: t('allowedDomainsDescription'),\n noDomainsConfigured: t('noDomainsConfigured'),\n configManagementTitle: t('configManagementTitle'),\n configManagementDescription: t('configManagementDescription'),\n configLocalDev: t('configLocalDev'),\n configCloudDeploy: t('configCloudDeploy'),\n configCloudDeployCommand: t('configCloudDeployCommand'),\n configCloudDeployEnd: t('configCloudDeployEnd'),\n configAWS: t('configAWS'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["AdminSecurity","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","adminAPI","useAdmin","oauthConfig","oauthLoading","allowedDomains","providers","jsx","AdminSecurityPage","ToolbarPanels","Toolbar"],"mappings":"0XAmBA,SAAwBA,GAAgB,CACtC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,iBAAiBG,CAAC,GAAIC,CAAQ,EAGjF,CAAE,YAAAC,CAAA,EAAgBC,EAAA,EAClB,CAAE,MAAAC,EAAO,SAAAC,CAAA,EAAaC,EAAA,EACtB,CAAE,gBAAAC,EAAiB,kBAAAC,CAAA,EAAsBC,EAAA,EAGzCC,EAAqBC,EAAAA,YAAY,CAAC,CAAE,MAAAP,KAAoD,CAC5FC,EAASD,CAAK,CAChB,EAAG,CAACC,CAAQ,CAAC,EAGPO,EAA2BD,EAAAA,YAAY,IAAM,CACjDH,EAAA,CACF,EAAG,CAACA,CAAiB,CAAC,EAEtBK,EAAsB,CACpB,yBAA0BH,EAC1B,gCAAiCE,CAAA,CAClC,EAGD,MAAME,EAAWC,EAAA,EACX,CAAE,KAAMC,EAAa,UAAWC,GAAiBH,EAAS,MAAM,OAAO,SAAA,EAEvEI,GAAkBF,GAAA,YAAAA,EAAiD,iBAAkB,CAAA,EACrFG,GAAaH,GAAA,YAAAA,EAAiD,YAAa,CAAA,EAEjF,OACEI,EAAAA,IAACC,EAAA,CACC,UAAAF,EACA,eAAAD,EACA,UAAWD,EACX,MAAAb,EACA,gBAAAG,EACA,YAAAL,EACA,aAAc,CACZ,MAAOH,EAAE,OAAO,EAChB,SAAUA,EAAE,UAAU,EACtB,eAAgBA,EAAE,gBAAgB,EAClC,0BAA2BA,EAAE,2BAA2B,EACxD,SAAUA,EAAE,UAAU,EACtB,WAAYA,EAAE,YAAY,EAC1B,sBAAuBA,EAAE,uBAAuB,EAChD,eAAgBA,EAAE,gBAAgB,EAClC,0BAA2BA,EAAE,2BAA2B,EACxD,oBAAqBA,EAAE,qBAAqB,EAC5C,sBAAuBA,EAAE,uBAAuB,EAChD,4BAA6BA,EAAE,6BAA6B,EAC5D,eAAgBA,EAAE,gBAAgB,EAClC,kBAAmBA,EAAE,mBAAmB,EACxC,yBAA0BA,EAAE,0BAA0B,EACtD,qBAAsBA,EAAE,sBAAsB,EAC9C,UAAWA,EAAE,WAAW,CAAA,EAE1B,cAAAuB,EACA,QAAAC,CAAA,CAAA,CAGN"}
@@ -1,2 +1,2 @@
1
- import{u as k,j as D}from"./query-ATBhtd3K.js";import{r as u}from"./vendor-EnoIVk-c.js";import{i as E,j as P,k as j,l as N,D as S,E as F,b as Q,T as w}from"./en-LNW2A3RA-BUa1vcQc.js";import{T as q}from"./ToolbarPanels-zXxZM4bL.js";import{u as K}from"./i18n-BYxb14hm.js";import"./index-DsKSr5Q5.js";import"./useAuth-ByOA13lp.js";import"./AuthContext-BVzUcaCU.js";import"./routing-QElszVRP.js";function J(){const{t:d}=K(),e=(s,r)=>d(`AdminUsers.${s}`,r),o=k(),{activePanel:m}=E(),{theme:c,setTheme:i}=P(),{showLineNumbers:U,toggleLineNumbers:l}=j(),p=u.useCallback(({theme:s})=>{i(s)},[i]),g=u.useCallback(()=>{l()},[l]);N({"settings:theme-changed":p,"settings:line-numbers-toggled":g});const t=S(),{data:n,isLoading:h}=t.users.list.useQuery(),{data:a,isLoading:v}=t.users.stats.useQuery(),C=t.users.update.useMutation(),b=(n==null?void 0:n.users)??[],y=(a==null?void 0:a.stats)??null,A=async(s,r)=>{try{await C.mutateAsync({id:s,data:r}),o.invalidateQueries({queryKey:["admin.users.list"]}),o.invalidateQueries({queryKey:["admin.users.stats"]})}catch(f){console.error("Failed to update user:",f)}},L=async s=>{console.warn("Delete user not implemented:",s),alert("Delete user functionality is not currently available")},x=()=>{console.log("Add user clicked")},T=()=>{console.log("Export users clicked")};return D.jsx(F,{users:b,userStats:y,isLoadingUsers:h,isLoadingStats:v,onUpdateUser:A,onDeleteUser:L,onAddUser:x,onExportUsers:T,theme:c,showLineNumbers:U,activePanel:m,translations:{title:e("title"),subtitle:e("subtitle"),addUser:e("addUser"),totalUsers:e("totalUsers"),activeUsers:e("activeUsers"),administrators:e("administrators"),recentUsers:e("recentUsers"),searchUsers:e("searchUsers"),searchPlaceholder:e("searchPlaceholder"),role:e("role"),allRoles:e("allRoles"),admin:e("admin"),user:e("user"),status:e("status"),allStatus:e("allStatus"),active:e("active"),inactive:e("inactive"),exportUsers:e("exportUsers"),loadingUsers:e("loadingUsers"),userColumn:e("userColumn"),domainColumn:e("domainColumn"),roleColumn:e("roleColumn"),statusColumn:e("statusColumn"),lastLoginColumn:e("lastLoginColumn"),joinedColumn:e("joinedColumn"),actionsColumn:e("actionsColumn"),noUsersFound:e("noUsersFound"),noUsersFoundDescription:e("noUsersFoundDescription"),noName:e("noName"),never:e("never"),removeAdmin:e("removeAdmin"),makeAdmin:e("makeAdmin"),deactivateUser:e("deactivateUser"),activateUser:e("activateUser"),deleteUser:e("deleteUser")},ToolbarPanels:q,Toolbar:w,buttonStyles:Q})}export{J as default};
2
- //# sourceMappingURL=client-BFN4OqK0.js.map
1
+ import{u as k,j as D}from"./query-ATBhtd3K.js";import{r as u}from"./vendor-EnoIVk-c.js";import{i as E,j as P,k as j,l as N,D as S,E as F,b as Q,T as w}from"./en-LNW2A3RA-CQBvSBCl.js";import{T as q}from"./ToolbarPanels-Dq0eXjjR.js";import{u as K}from"./i18n-BYxb14hm.js";import"./index-IyxbPWuo.js";import"./useAuth-Bw_w8L0H.js";import"./AuthContext-xM132UqD.js";import"./routing-tt0MahYa.js";function J(){const{t:d}=K(),e=(s,r)=>d(`AdminUsers.${s}`,r),o=k(),{activePanel:m}=E(),{theme:c,setTheme:i}=P(),{showLineNumbers:U,toggleLineNumbers:l}=j(),p=u.useCallback(({theme:s})=>{i(s)},[i]),g=u.useCallback(()=>{l()},[l]);N({"settings:theme-changed":p,"settings:line-numbers-toggled":g});const t=S(),{data:n,isLoading:h}=t.users.list.useQuery(),{data:a,isLoading:v}=t.users.stats.useQuery(),C=t.users.update.useMutation(),b=(n==null?void 0:n.users)??[],y=(a==null?void 0:a.stats)??null,A=async(s,r)=>{try{await C.mutateAsync({id:s,data:r}),o.invalidateQueries({queryKey:["admin.users.list"]}),o.invalidateQueries({queryKey:["admin.users.stats"]})}catch(f){console.error("Failed to update user:",f)}},L=async s=>{console.warn("Delete user not implemented:",s),alert("Delete user functionality is not currently available")},x=()=>{console.log("Add user clicked")},T=()=>{console.log("Export users clicked")};return D.jsx(F,{users:b,userStats:y,isLoadingUsers:h,isLoadingStats:v,onUpdateUser:A,onDeleteUser:L,onAddUser:x,onExportUsers:T,theme:c,showLineNumbers:U,activePanel:m,translations:{title:e("title"),subtitle:e("subtitle"),addUser:e("addUser"),totalUsers:e("totalUsers"),activeUsers:e("activeUsers"),administrators:e("administrators"),recentUsers:e("recentUsers"),searchUsers:e("searchUsers"),searchPlaceholder:e("searchPlaceholder"),role:e("role"),allRoles:e("allRoles"),admin:e("admin"),user:e("user"),status:e("status"),allStatus:e("allStatus"),active:e("active"),inactive:e("inactive"),exportUsers:e("exportUsers"),loadingUsers:e("loadingUsers"),userColumn:e("userColumn"),domainColumn:e("domainColumn"),roleColumn:e("roleColumn"),statusColumn:e("statusColumn"),lastLoginColumn:e("lastLoginColumn"),joinedColumn:e("joinedColumn"),actionsColumn:e("actionsColumn"),noUsersFound:e("noUsersFound"),noUsersFoundDescription:e("noUsersFoundDescription"),noName:e("noName"),never:e("never"),removeAdmin:e("removeAdmin"),makeAdmin:e("makeAdmin"),deactivateUser:e("deactivateUser"),activateUser:e("activateUser"),deleteUser:e("deleteUser")},ToolbarPanels:q,Toolbar:w,buttonStyles:Q})}export{J as default};
2
+ //# sourceMappingURL=client-Cxt1NUWp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-BFN4OqK0.js","sources":["../../src/app/[locale]/admin/users/client.tsx"],"sourcesContent":["/**\n * Admin Users Client - Thin Next.js wrapper\n *\n * This component handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React AdminUsersPage component.\n */\n\nimport React, { useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAdmin, buttonStyles, Toolbar } from '@semiont/react-ui';\nimport type { paths } from '@semiont/core';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminUsersPage } from '@semiont/react-ui';\nimport type { AdminUser, AdminUserStats } from '@semiont/react-ui';\n\ntype ResponseContent<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never;\ntype AdminUsersResponse = ResponseContent<paths['/api/admin/users']['get']>;\ntype AdminUserStatsResponse = ResponseContent<paths['/api/admin/users/stats']['get']>;\n\nexport default function AdminUsers() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminUsers.${k}`, p as any) as string;\n const queryClient = useQueryClient();\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 // API hooks\n const adminAPI = useAdmin();\n const { data: usersResponse, isLoading: usersLoading } = adminAPI.users.list.useQuery();\n const { data: statsResponse, isLoading: statsLoading } = adminAPI.users.stats.useQuery();\n const updateUserMutation = adminAPI.users.update.useMutation();\n\n const users = (usersResponse as AdminUsersResponse | undefined)?.users ?? [];\n const userStats = (statsResponse as AdminUserStatsResponse | undefined)?.stats ?? null;\n\n const handleUpdateUser = async (id: string, data: { isAdmin?: boolean; isActive?: boolean }) => {\n try {\n await updateUserMutation.mutateAsync({ id, data });\n queryClient.invalidateQueries({ queryKey: ['admin.users.list'] });\n queryClient.invalidateQueries({ queryKey: ['admin.users.stats'] });\n } catch (error) {\n console.error('Failed to update user:', error);\n }\n };\n\n const handleDeleteUser = async (id: string) => {\n console.warn('Delete user not implemented:', id);\n alert('Delete user functionality is not currently available');\n };\n\n const handleAddUser = () => {\n console.log('Add user clicked');\n };\n\n const handleExportUsers = () => {\n console.log('Export users clicked');\n };\n\n return (\n <AdminUsersPage\n users={users as AdminUser[]}\n userStats={userStats as AdminUserStats | null}\n isLoadingUsers={usersLoading}\n isLoadingStats={statsLoading}\n onUpdateUser={handleUpdateUser}\n onDeleteUser={handleDeleteUser}\n onAddUser={handleAddUser}\n onExportUsers={handleExportUsers}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n addUser: t('addUser'),\n totalUsers: t('totalUsers'),\n activeUsers: t('activeUsers'),\n administrators: t('administrators'),\n recentUsers: t('recentUsers'),\n searchUsers: t('searchUsers'),\n searchPlaceholder: t('searchPlaceholder'),\n role: t('role'),\n allRoles: t('allRoles'),\n admin: t('admin'),\n user: t('user'),\n status: t('status'),\n allStatus: t('allStatus'),\n active: t('active'),\n inactive: t('inactive'),\n exportUsers: t('exportUsers'),\n loadingUsers: t('loadingUsers'),\n userColumn: t('userColumn'),\n domainColumn: t('domainColumn'),\n roleColumn: t('roleColumn'),\n statusColumn: t('statusColumn'),\n lastLoginColumn: t('lastLoginColumn'),\n joinedColumn: t('joinedColumn'),\n actionsColumn: t('actionsColumn'),\n noUsersFound: t('noUsersFound'),\n noUsersFoundDescription: t('noUsersFoundDescription'),\n noName: t('noName'),\n never: t('never'),\n removeAdmin: t('removeAdmin'),\n makeAdmin: t('makeAdmin'),\n deactivateUser: t('deactivateUser'),\n activateUser: t('activateUser'),\n deleteUser: t('deleteUser'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n buttonStyles={buttonStyles}\n />\n );\n}\n"],"names":["AdminUsers","_t","useTranslation","t","k","p","queryClient","useQueryClient","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","adminAPI","useAdmin","usersResponse","usersLoading","statsResponse","statsLoading","updateUserMutation","users","userStats","handleUpdateUser","id","data","error","handleDeleteUser","handleAddUser","handleExportUsers","jsx","AdminUsersPage","ToolbarPanels","Toolbar","buttonStyles"],"mappings":"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"}
1
+ {"version":3,"file":"client-Cxt1NUWp.js","sources":["../../src/app/[locale]/admin/users/client.tsx"],"sourcesContent":["/**\n * Admin Users Client - Thin Next.js wrapper\n *\n * This component handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React AdminUsersPage component.\n */\n\nimport React, { useEffect, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAdmin, buttonStyles, Toolbar } from '@semiont/react-ui';\nimport type { paths } from '@semiont/core';\nimport { useQueryClient } from '@tanstack/react-query';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminUsersPage } from '@semiont/react-ui';\nimport type { AdminUser, AdminUserStats } from '@semiont/react-ui';\n\ntype ResponseContent<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never;\ntype AdminUsersResponse = ResponseContent<paths['/api/admin/users']['get']>;\ntype AdminUserStatsResponse = ResponseContent<paths['/api/admin/users/stats']['get']>;\n\nexport default function AdminUsers() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminUsers.${k}`, p as any) as string;\n const queryClient = useQueryClient();\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 // API hooks\n const adminAPI = useAdmin();\n const { data: usersResponse, isLoading: usersLoading } = adminAPI.users.list.useQuery();\n const { data: statsResponse, isLoading: statsLoading } = adminAPI.users.stats.useQuery();\n const updateUserMutation = adminAPI.users.update.useMutation();\n\n const users = (usersResponse as AdminUsersResponse | undefined)?.users ?? [];\n const userStats = (statsResponse as AdminUserStatsResponse | undefined)?.stats ?? null;\n\n const handleUpdateUser = async (id: string, data: { isAdmin?: boolean; isActive?: boolean }) => {\n try {\n await updateUserMutation.mutateAsync({ id, data });\n queryClient.invalidateQueries({ queryKey: ['admin.users.list'] });\n queryClient.invalidateQueries({ queryKey: ['admin.users.stats'] });\n } catch (error) {\n console.error('Failed to update user:', error);\n }\n };\n\n const handleDeleteUser = async (id: string) => {\n console.warn('Delete user not implemented:', id);\n alert('Delete user functionality is not currently available');\n };\n\n const handleAddUser = () => {\n console.log('Add user clicked');\n };\n\n const handleExportUsers = () => {\n console.log('Export users clicked');\n };\n\n return (\n <AdminUsersPage\n users={users as AdminUser[]}\n userStats={userStats as AdminUserStats | null}\n isLoadingUsers={usersLoading}\n isLoadingStats={statsLoading}\n onUpdateUser={handleUpdateUser}\n onDeleteUser={handleDeleteUser}\n onAddUser={handleAddUser}\n onExportUsers={handleExportUsers}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n addUser: t('addUser'),\n totalUsers: t('totalUsers'),\n activeUsers: t('activeUsers'),\n administrators: t('administrators'),\n recentUsers: t('recentUsers'),\n searchUsers: t('searchUsers'),\n searchPlaceholder: t('searchPlaceholder'),\n role: t('role'),\n allRoles: t('allRoles'),\n admin: t('admin'),\n user: t('user'),\n status: t('status'),\n allStatus: t('allStatus'),\n active: t('active'),\n inactive: t('inactive'),\n exportUsers: t('exportUsers'),\n loadingUsers: t('loadingUsers'),\n userColumn: t('userColumn'),\n domainColumn: t('domainColumn'),\n roleColumn: t('roleColumn'),\n statusColumn: t('statusColumn'),\n lastLoginColumn: t('lastLoginColumn'),\n joinedColumn: t('joinedColumn'),\n actionsColumn: t('actionsColumn'),\n noUsersFound: t('noUsersFound'),\n noUsersFoundDescription: t('noUsersFoundDescription'),\n noName: t('noName'),\n never: t('never'),\n removeAdmin: t('removeAdmin'),\n makeAdmin: t('makeAdmin'),\n deactivateUser: t('deactivateUser'),\n activateUser: t('activateUser'),\n deleteUser: t('deleteUser'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n buttonStyles={buttonStyles}\n />\n );\n}\n"],"names":["AdminUsers","_t","useTranslation","t","k","p","queryClient","useQueryClient","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","adminAPI","useAdmin","usersResponse","usersLoading","statsResponse","statsLoading","updateUserMutation","users","userStats","handleUpdateUser","id","data","error","handleDeleteUser","handleAddUser","handleExportUsers","jsx","AdminUsersPage","ToolbarPanels","Toolbar","buttonStyles"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as w}from"./query-ATBhtd3K.js";import{r as s}from"./vendor-EnoIVk-c.js";import{i as z,j as F,k as y,l as A,K as B,L as D,T as R}from"./en-LNW2A3RA-BUa1vcQc.js";import{T as j}from"./ToolbarPanels-zXxZM4bL.js";import{u as N}from"./i18n-BYxb14hm.js";import"./index-DsKSr5Q5.js";import"./useAuth-ByOA13lp.js";import"./AuthContext-BVzUcaCU.js";import"./routing-QElszVRP.js";function J(){const{t:h}=N(),e=(t,M)=>h(`ModerationLinkedData.${t}`,M),{activePanel:g}=z(),{theme:b,setTheme:p}=F(),{showLineNumbers:C,toggleLineNumbers:m}=y(),x=s.useCallback(({theme:t})=>{p(t)},[p]),v=s.useCallback(()=>{m()},[m]);A({"settings:theme-changed":x,"settings:line-numbers-toggled":v});const u=B(),r=u.exchange.export.useMutation(),l=u.exchange.import.useMutation(),[o,c]=s.useState(null),[f,d]=s.useState(null),[I,n]=s.useState(null),[T,a]=s.useState(),[P,i]=s.useState(),k=s.useCallback(()=>{r.mutate({})},[r]),S=s.useCallback(async t=>{c(t),n(null),a(void 0),i(void 0),d({format:t.name.endsWith(".tar.gz")||t.name.endsWith(".gz")?"semiont-linked-data":"unknown",version:1,sourceUrl:"",stats:{}})},[]),E=s.useCallback(()=>{o&&(n("started"),a(void 0),i(void 0),l.mutate({file:o,onProgress:t=>{n(t.phase),a(t.message),t.result&&i(t.result)}}))},[o,l]),L=s.useCallback(()=>{c(null),d(null),n(null),a(void 0),i(void 0)},[]);return w.jsx(D,{onExport:k,isExporting:r.isPending,onFileSelected:S,onImport:E,onCancelImport:L,selectedFile:o,preview:f,isImporting:l.isPending,importPhase:I,importMessage:T,importResult:P,theme:b,showLineNumbers:C,activePanel:g,translations:{title:e("title"),subtitle:e("subtitle"),export:{title:e("exportTitle"),description:e("exportDescription"),exportButton:e("exportButton"),exporting:e("exporting")},import:{title:e("importTitle"),description:e("importDescription"),dropzoneLabel:e("dropzoneLabel"),dropzoneActive:e("dropzoneActive"),detectedFormat:e("detectedFormat"),statsPreview:e("statsPreview"),importButton:e("importButton"),importing:e("importing"),importConfirmTitle:e("importConfirmTitle"),importConfirmMessage:e("importConfirmMessage"),confirmImport:e("confirmImport"),cancelImport:e("cancelImport")},progress:{phaseStarted:e("phaseStarted"),phaseEntityTypes:e("phaseEntityTypes"),phaseResources:e("phaseResources"),phaseAnnotations:e("phaseAnnotations"),phaseComplete:e("phaseComplete"),phaseError:e("phaseError"),hashChainValid:e("hashChainValid"),hashChainInvalid:e("hashChainInvalid"),streams:e("streams"),events:e("events"),blobs:e("blobs")}},ToolbarPanels:j,Toolbar:R})}export{J as default};
2
- //# sourceMappingURL=client-CF_pv0rC.js.map
1
+ import{j as w}from"./query-ATBhtd3K.js";import{r as s}from"./vendor-EnoIVk-c.js";import{i as z,j as F,k as y,l as A,K as B,L as D,T as R}from"./en-LNW2A3RA-CQBvSBCl.js";import{T as j}from"./ToolbarPanels-Dq0eXjjR.js";import{u as N}from"./i18n-BYxb14hm.js";import"./index-IyxbPWuo.js";import"./useAuth-Bw_w8L0H.js";import"./AuthContext-xM132UqD.js";import"./routing-tt0MahYa.js";function J(){const{t:h}=N(),e=(t,M)=>h(`ModerationLinkedData.${t}`,M),{activePanel:g}=z(),{theme:b,setTheme:p}=F(),{showLineNumbers:C,toggleLineNumbers:m}=y(),x=s.useCallback(({theme:t})=>{p(t)},[p]),v=s.useCallback(()=>{m()},[m]);A({"settings:theme-changed":x,"settings:line-numbers-toggled":v});const u=B(),r=u.exchange.export.useMutation(),l=u.exchange.import.useMutation(),[o,c]=s.useState(null),[f,d]=s.useState(null),[I,n]=s.useState(null),[T,a]=s.useState(),[P,i]=s.useState(),k=s.useCallback(()=>{r.mutate({})},[r]),S=s.useCallback(async t=>{c(t),n(null),a(void 0),i(void 0),d({format:t.name.endsWith(".tar.gz")||t.name.endsWith(".gz")?"semiont-linked-data":"unknown",version:1,sourceUrl:"",stats:{}})},[]),E=s.useCallback(()=>{o&&(n("started"),a(void 0),i(void 0),l.mutate({file:o,onProgress:t=>{n(t.phase),a(t.message),t.result&&i(t.result)}}))},[o,l]),L=s.useCallback(()=>{c(null),d(null),n(null),a(void 0),i(void 0)},[]);return w.jsx(D,{onExport:k,isExporting:r.isPending,onFileSelected:S,onImport:E,onCancelImport:L,selectedFile:o,preview:f,isImporting:l.isPending,importPhase:I,importMessage:T,importResult:P,theme:b,showLineNumbers:C,activePanel:g,translations:{title:e("title"),subtitle:e("subtitle"),export:{title:e("exportTitle"),description:e("exportDescription"),exportButton:e("exportButton"),exporting:e("exporting")},import:{title:e("importTitle"),description:e("importDescription"),dropzoneLabel:e("dropzoneLabel"),dropzoneActive:e("dropzoneActive"),detectedFormat:e("detectedFormat"),statsPreview:e("statsPreview"),importButton:e("importButton"),importing:e("importing"),importConfirmTitle:e("importConfirmTitle"),importConfirmMessage:e("importConfirmMessage"),confirmImport:e("confirmImport"),cancelImport:e("cancelImport")},progress:{phaseStarted:e("phaseStarted"),phaseEntityTypes:e("phaseEntityTypes"),phaseResources:e("phaseResources"),phaseAnnotations:e("phaseAnnotations"),phaseComplete:e("phaseComplete"),phaseError:e("phaseError"),hashChainValid:e("hashChainValid"),hashChainInvalid:e("hashChainInvalid"),streams:e("streams"),events:e("events"),blobs:e("blobs")}},ToolbarPanels:j,Toolbar:R})}export{J as default};
2
+ //# sourceMappingURL=client-D1NYe5bc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-CF_pv0rC.js","sources":["../../src/app/[locale]/moderate/linked-data/client.tsx"],"sourcesContent":["/**\n * Linked Data Client - Thin Next.js wrapper\n *\n * Handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React LinkedDataPage component.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useModeration, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { LinkedDataPage } from '@semiont/react-ui';\nimport type { ImportPreview } from '@semiont/react-ui';\n\nexport default function LinkedDataClient() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerationLinkedData.${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 // API hooks\n const moderationAPI = useModeration();\n const exportMutation = moderationAPI.exchange.export.useMutation();\n const importMutation = moderationAPI.exchange.import.useMutation();\n\n // Local state\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [preview, setPreview] = useState<ImportPreview | null>(null);\n const [importPhase, setImportPhase] = useState<string | null>(null);\n const [importMessage, setImportMessage] = useState<string | undefined>();\n const [importResult, setImportResult] = useState<Record<string, unknown> | undefined>();\n\n const handleExport = useCallback(() => {\n exportMutation.mutate({});\n }, [exportMutation]);\n\n const handleFileSelected = useCallback(async (file: File) => {\n setSelectedFile(file);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n\n setPreview({\n format: file.name.endsWith('.tar.gz') || file.name.endsWith('.gz') ? 'semiont-linked-data' : 'unknown',\n version: 1,\n sourceUrl: '',\n stats: {},\n });\n }, []);\n\n const handleImport = useCallback(() => {\n if (!selectedFile) return;\n\n setImportPhase('started');\n setImportMessage(undefined);\n setImportResult(undefined);\n\n importMutation.mutate({\n file: selectedFile,\n onProgress: (event) => {\n setImportPhase(event.phase);\n setImportMessage(event.message);\n if (event.result) {\n setImportResult(event.result);\n }\n },\n });\n }, [selectedFile, importMutation]);\n\n const handleCancelImport = useCallback(() => {\n setSelectedFile(null);\n setPreview(null);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n }, []);\n\n return (\n <LinkedDataPage\n onExport={handleExport}\n isExporting={exportMutation.isPending}\n onFileSelected={handleFileSelected}\n onImport={handleImport}\n onCancelImport={handleCancelImport}\n selectedFile={selectedFile}\n preview={preview}\n isImporting={importMutation.isPending}\n importPhase={importPhase}\n importMessage={importMessage}\n importResult={importResult}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n export: {\n title: t('exportTitle'),\n description: t('exportDescription'),\n exportButton: t('exportButton'),\n exporting: t('exporting'),\n },\n import: {\n title: t('importTitle'),\n description: t('importDescription'),\n dropzoneLabel: t('dropzoneLabel'),\n dropzoneActive: t('dropzoneActive'),\n detectedFormat: t('detectedFormat'),\n statsPreview: t('statsPreview'),\n importButton: t('importButton'),\n importing: t('importing'),\n importConfirmTitle: t('importConfirmTitle'),\n importConfirmMessage: t('importConfirmMessage'),\n confirmImport: t('confirmImport'),\n cancelImport: t('cancelImport'),\n },\n progress: {\n phaseStarted: t('phaseStarted'),\n phaseEntityTypes: t('phaseEntityTypes'),\n phaseResources: t('phaseResources'),\n phaseAnnotations: t('phaseAnnotations'),\n phaseComplete: t('phaseComplete'),\n phaseError: t('phaseError'),\n hashChainValid: t('hashChainValid'),\n hashChainInvalid: t('hashChainInvalid'),\n streams: t('streams'),\n events: t('events'),\n blobs: t('blobs'),\n },\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["LinkedDataClient","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","moderationAPI","useModeration","exportMutation","importMutation","selectedFile","setSelectedFile","useState","preview","setPreview","importPhase","setImportPhase","importMessage","setImportMessage","importResult","setImportResult","handleExport","handleFileSelected","file","handleImport","event","handleCancelImport","jsx","LinkedDataPage","ToolbarPanels","Toolbar"],"mappings":"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"}
1
+ {"version":3,"file":"client-D1NYe5bc.js","sources":["../../src/app/[locale]/moderate/linked-data/client.tsx"],"sourcesContent":["/**\n * Linked Data Client - Thin Next.js wrapper\n *\n * Handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React LinkedDataPage component.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useModeration, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { LinkedDataPage } from '@semiont/react-ui';\nimport type { ImportPreview } from '@semiont/react-ui';\n\nexport default function LinkedDataClient() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerationLinkedData.${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 // API hooks\n const moderationAPI = useModeration();\n const exportMutation = moderationAPI.exchange.export.useMutation();\n const importMutation = moderationAPI.exchange.import.useMutation();\n\n // Local state\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [preview, setPreview] = useState<ImportPreview | null>(null);\n const [importPhase, setImportPhase] = useState<string | null>(null);\n const [importMessage, setImportMessage] = useState<string | undefined>();\n const [importResult, setImportResult] = useState<Record<string, unknown> | undefined>();\n\n const handleExport = useCallback(() => {\n exportMutation.mutate({});\n }, [exportMutation]);\n\n const handleFileSelected = useCallback(async (file: File) => {\n setSelectedFile(file);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n\n setPreview({\n format: file.name.endsWith('.tar.gz') || file.name.endsWith('.gz') ? 'semiont-linked-data' : 'unknown',\n version: 1,\n sourceUrl: '',\n stats: {},\n });\n }, []);\n\n const handleImport = useCallback(() => {\n if (!selectedFile) return;\n\n setImportPhase('started');\n setImportMessage(undefined);\n setImportResult(undefined);\n\n importMutation.mutate({\n file: selectedFile,\n onProgress: (event) => {\n setImportPhase(event.phase);\n setImportMessage(event.message);\n if (event.result) {\n setImportResult(event.result);\n }\n },\n });\n }, [selectedFile, importMutation]);\n\n const handleCancelImport = useCallback(() => {\n setSelectedFile(null);\n setPreview(null);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n }, []);\n\n return (\n <LinkedDataPage\n onExport={handleExport}\n isExporting={exportMutation.isPending}\n onFileSelected={handleFileSelected}\n onImport={handleImport}\n onCancelImport={handleCancelImport}\n selectedFile={selectedFile}\n preview={preview}\n isImporting={importMutation.isPending}\n importPhase={importPhase}\n importMessage={importMessage}\n importResult={importResult}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n export: {\n title: t('exportTitle'),\n description: t('exportDescription'),\n exportButton: t('exportButton'),\n exporting: t('exporting'),\n },\n import: {\n title: t('importTitle'),\n description: t('importDescription'),\n dropzoneLabel: t('dropzoneLabel'),\n dropzoneActive: t('dropzoneActive'),\n detectedFormat: t('detectedFormat'),\n statsPreview: t('statsPreview'),\n importButton: t('importButton'),\n importing: t('importing'),\n importConfirmTitle: t('importConfirmTitle'),\n importConfirmMessage: t('importConfirmMessage'),\n confirmImport: t('confirmImport'),\n cancelImport: t('cancelImport'),\n },\n progress: {\n phaseStarted: t('phaseStarted'),\n phaseEntityTypes: t('phaseEntityTypes'),\n phaseResources: t('phaseResources'),\n phaseAnnotations: t('phaseAnnotations'),\n phaseComplete: t('phaseComplete'),\n phaseError: t('phaseError'),\n hashChainValid: t('hashChainValid'),\n hashChainInvalid: t('hashChainInvalid'),\n streams: t('streams'),\n events: t('events'),\n blobs: t('blobs'),\n },\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["LinkedDataClient","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","moderationAPI","useModeration","exportMutation","importMutation","selectedFile","setSelectedFile","useState","preview","setPreview","importPhase","setImportPhase","importMessage","setImportMessage","importResult","setImportResult","handleExport","handleFileSelected","file","handleImport","event","handleCancelImport","jsx","LinkedDataPage","ToolbarPanels","Toolbar"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{j as w}from"./query-ATBhtd3K.js";import{r as s}from"./vendor-EnoIVk-c.js";import{i as R,j as z,k as B,l as F,D as L,H as y,T as j}from"./en-LNW2A3RA-BUa1vcQc.js";import{T as N}from"./ToolbarPanels-zXxZM4bL.js";import{u as D}from"./i18n-BYxb14hm.js";import"./index-DsKSr5Q5.js";import"./useAuth-ByOA13lp.js";import"./AuthContext-BVzUcaCU.js";import"./routing-QElszVRP.js";function K(){const{t:d}=D(),e=(t,M)=>d(`AdminExchange.${t}`,M),{activePanel:g}=R(),{theme:b,setTheme:p}=z(),{showLineNumbers:C,toggleLineNumbers:m}=B(),x=s.useCallback(({theme:t})=>{p(t)},[p]),v=s.useCallback(()=>{m()},[m]);F({"settings:theme-changed":x,"settings:line-numbers-toggled":v});const c=L(),r=c.exchange.backup.useMutation(),l=c.exchange.restore.useMutation(),[o,u]=s.useState(null),[f,h]=s.useState(null),[T,n]=s.useState(null),[I,a]=s.useState(),[P,i]=s.useState(),k=s.useCallback(()=>{r.mutate()},[r]),E=s.useCallback(async t=>{u(t),n(null),a(void 0),i(void 0),h({format:t.name.endsWith(".tar.gz")||t.name.endsWith(".gz")?"semiont-backup":"unknown",version:1,sourceUrl:"",stats:{}})},[]),S=s.useCallback(()=>{o&&(n("started"),a(void 0),i(void 0),l.mutate({file:o,onProgress:t=>{n(t.phase),a(t.message),t.result&&i(t.result)}}))},[o,l]),A=s.useCallback(()=>{u(null),h(null),n(null),a(void 0),i(void 0)},[]);return w.jsx(y,{onExport:k,isExporting:r.isPending,onFileSelected:E,onImport:S,onCancelImport:A,selectedFile:o,preview:f,isImporting:l.isPending,importPhase:T,importMessage:I,importResult:P,theme:b,showLineNumbers:C,activePanel:g,translations:{title:e("title"),subtitle:e("subtitle"),export:{title:e("exportTitle"),description:e("exportDescription"),exportButton:e("exportButton"),exporting:e("exporting")},import:{title:e("importTitle"),description:e("importDescription"),dropzoneLabel:e("dropzoneLabel"),dropzoneActive:e("dropzoneActive"),detectedFormat:e("detectedFormat"),statsPreview:e("statsPreview"),importButton:e("importButton"),importing:e("importing"),importConfirmTitle:e("importConfirmTitle"),importConfirmMessage:e("importConfirmMessage"),confirmImport:e("confirmImport"),cancelImport:e("cancelImport")},progress:{phaseStarted:e("phaseStarted"),phaseEntityTypes:e("phaseEntityTypes"),phaseResources:e("phaseResources"),phaseAnnotations:e("phaseAnnotations"),phaseComplete:e("phaseComplete"),phaseError:e("phaseError"),hashChainValid:e("hashChainValid"),hashChainInvalid:e("hashChainInvalid"),streams:e("streams"),events:e("events"),blobs:e("blobs")}},ToolbarPanels:N,Toolbar:j})}export{K as default};
2
- //# sourceMappingURL=client-Di531MRg.js.map
1
+ import{j as w}from"./query-ATBhtd3K.js";import{r as s}from"./vendor-EnoIVk-c.js";import{i as R,j as z,k as B,l as F,D as L,H as y,T as j}from"./en-LNW2A3RA-CQBvSBCl.js";import{T as N}from"./ToolbarPanels-Dq0eXjjR.js";import{u as D}from"./i18n-BYxb14hm.js";import"./index-IyxbPWuo.js";import"./useAuth-Bw_w8L0H.js";import"./AuthContext-xM132UqD.js";import"./routing-tt0MahYa.js";function K(){const{t:d}=D(),e=(t,M)=>d(`AdminExchange.${t}`,M),{activePanel:g}=R(),{theme:b,setTheme:p}=z(),{showLineNumbers:C,toggleLineNumbers:m}=B(),x=s.useCallback(({theme:t})=>{p(t)},[p]),v=s.useCallback(()=>{m()},[m]);F({"settings:theme-changed":x,"settings:line-numbers-toggled":v});const c=L(),r=c.exchange.backup.useMutation(),l=c.exchange.restore.useMutation(),[o,u]=s.useState(null),[f,h]=s.useState(null),[T,n]=s.useState(null),[I,a]=s.useState(),[P,i]=s.useState(),k=s.useCallback(()=>{r.mutate()},[r]),E=s.useCallback(async t=>{u(t),n(null),a(void 0),i(void 0),h({format:t.name.endsWith(".tar.gz")||t.name.endsWith(".gz")?"semiont-backup":"unknown",version:1,sourceUrl:"",stats:{}})},[]),S=s.useCallback(()=>{o&&(n("started"),a(void 0),i(void 0),l.mutate({file:o,onProgress:t=>{n(t.phase),a(t.message),t.result&&i(t.result)}}))},[o,l]),A=s.useCallback(()=>{u(null),h(null),n(null),a(void 0),i(void 0)},[]);return w.jsx(y,{onExport:k,isExporting:r.isPending,onFileSelected:E,onImport:S,onCancelImport:A,selectedFile:o,preview:f,isImporting:l.isPending,importPhase:T,importMessage:I,importResult:P,theme:b,showLineNumbers:C,activePanel:g,translations:{title:e("title"),subtitle:e("subtitle"),export:{title:e("exportTitle"),description:e("exportDescription"),exportButton:e("exportButton"),exporting:e("exporting")},import:{title:e("importTitle"),description:e("importDescription"),dropzoneLabel:e("dropzoneLabel"),dropzoneActive:e("dropzoneActive"),detectedFormat:e("detectedFormat"),statsPreview:e("statsPreview"),importButton:e("importButton"),importing:e("importing"),importConfirmTitle:e("importConfirmTitle"),importConfirmMessage:e("importConfirmMessage"),confirmImport:e("confirmImport"),cancelImport:e("cancelImport")},progress:{phaseStarted:e("phaseStarted"),phaseEntityTypes:e("phaseEntityTypes"),phaseResources:e("phaseResources"),phaseAnnotations:e("phaseAnnotations"),phaseComplete:e("phaseComplete"),phaseError:e("phaseError"),hashChainValid:e("hashChainValid"),hashChainInvalid:e("hashChainInvalid"),streams:e("streams"),events:e("events"),blobs:e("blobs")}},ToolbarPanels:N,Toolbar:j})}export{K as default};
2
+ //# sourceMappingURL=client-D5mudL5R.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-Di531MRg.js","sources":["../../src/app/[locale]/admin/exchange/client.tsx"],"sourcesContent":["/**\n * Admin Exchange Client - Thin Next.js wrapper\n *\n * Handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React AdminExchangePage component.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAdmin, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminExchangePage } from '@semiont/react-ui';\nimport type { ImportPreview } from '@semiont/react-ui';\n\nexport default function AdminExchangeClient() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminExchange.${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 // API hooks\n const adminAPI = useAdmin();\n const backupMutation = adminAPI.exchange.backup.useMutation();\n const restoreMutation = adminAPI.exchange.restore.useMutation();\n\n // Local state\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [preview, setPreview] = useState<ImportPreview | null>(null);\n const [importPhase, setImportPhase] = useState<string | null>(null);\n const [importMessage, setImportMessage] = useState<string | undefined>();\n const [importResult, setImportResult] = useState<Record<string, unknown> | undefined>();\n\n const handleBackup = useCallback(() => {\n backupMutation.mutate();\n }, [backupMutation]);\n\n const handleFileSelected = useCallback(async (file: File) => {\n setSelectedFile(file);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n\n // For tar.gz backups, show basic info\n setPreview({\n format: file.name.endsWith('.tar.gz') || file.name.endsWith('.gz') ? 'semiont-backup' : 'unknown',\n version: 1,\n sourceUrl: '',\n stats: {},\n });\n }, []);\n\n const handleRestore = useCallback(() => {\n if (!selectedFile) return;\n\n setImportPhase('started');\n setImportMessage(undefined);\n setImportResult(undefined);\n\n restoreMutation.mutate({\n file: selectedFile,\n onProgress: (event) => {\n setImportPhase(event.phase);\n setImportMessage(event.message);\n if (event.result) {\n setImportResult(event.result);\n }\n },\n });\n }, [selectedFile, restoreMutation]);\n\n const handleCancelRestore = useCallback(() => {\n setSelectedFile(null);\n setPreview(null);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n }, []);\n\n return (\n <AdminExchangePage\n onExport={handleBackup}\n isExporting={backupMutation.isPending}\n onFileSelected={handleFileSelected}\n onImport={handleRestore}\n onCancelImport={handleCancelRestore}\n selectedFile={selectedFile}\n preview={preview}\n isImporting={restoreMutation.isPending}\n importPhase={importPhase}\n importMessage={importMessage}\n importResult={importResult}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n export: {\n title: t('exportTitle'),\n description: t('exportDescription'),\n exportButton: t('exportButton'),\n exporting: t('exporting'),\n },\n import: {\n title: t('importTitle'),\n description: t('importDescription'),\n dropzoneLabel: t('dropzoneLabel'),\n dropzoneActive: t('dropzoneActive'),\n detectedFormat: t('detectedFormat'),\n statsPreview: t('statsPreview'),\n importButton: t('importButton'),\n importing: t('importing'),\n importConfirmTitle: t('importConfirmTitle'),\n importConfirmMessage: t('importConfirmMessage'),\n confirmImport: t('confirmImport'),\n cancelImport: t('cancelImport'),\n },\n progress: {\n phaseStarted: t('phaseStarted'),\n phaseEntityTypes: t('phaseEntityTypes'),\n phaseResources: t('phaseResources'),\n phaseAnnotations: t('phaseAnnotations'),\n phaseComplete: t('phaseComplete'),\n phaseError: t('phaseError'),\n hashChainValid: t('hashChainValid'),\n hashChainInvalid: t('hashChainInvalid'),\n streams: t('streams'),\n events: t('events'),\n blobs: t('blobs'),\n },\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["AdminExchangeClient","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","adminAPI","useAdmin","backupMutation","restoreMutation","selectedFile","setSelectedFile","useState","preview","setPreview","importPhase","setImportPhase","importMessage","setImportMessage","importResult","setImportResult","handleBackup","handleFileSelected","file","handleRestore","event","handleCancelRestore","jsx","AdminExchangePage","ToolbarPanels","Toolbar"],"mappings":"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"}
1
+ {"version":3,"file":"client-D5mudL5R.js","sources":["../../src/app/[locale]/admin/exchange/client.tsx"],"sourcesContent":["/**\n * Admin Exchange Client - Thin Next.js wrapper\n *\n * Handles Next.js-specific concerns (translations, API calls, hooks)\n * and delegates rendering to the pure React AdminExchangePage component.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useAdmin, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, usePanelBrowse, useLineNumbers, useEventSubscriptions } from '@semiont/react-ui';\nimport { AdminExchangePage } from '@semiont/react-ui';\nimport type { ImportPreview } from '@semiont/react-ui';\n\nexport default function AdminExchangeClient() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminExchange.${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 // API hooks\n const adminAPI = useAdmin();\n const backupMutation = adminAPI.exchange.backup.useMutation();\n const restoreMutation = adminAPI.exchange.restore.useMutation();\n\n // Local state\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [preview, setPreview] = useState<ImportPreview | null>(null);\n const [importPhase, setImportPhase] = useState<string | null>(null);\n const [importMessage, setImportMessage] = useState<string | undefined>();\n const [importResult, setImportResult] = useState<Record<string, unknown> | undefined>();\n\n const handleBackup = useCallback(() => {\n backupMutation.mutate();\n }, [backupMutation]);\n\n const handleFileSelected = useCallback(async (file: File) => {\n setSelectedFile(file);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n\n // For tar.gz backups, show basic info\n setPreview({\n format: file.name.endsWith('.tar.gz') || file.name.endsWith('.gz') ? 'semiont-backup' : 'unknown',\n version: 1,\n sourceUrl: '',\n stats: {},\n });\n }, []);\n\n const handleRestore = useCallback(() => {\n if (!selectedFile) return;\n\n setImportPhase('started');\n setImportMessage(undefined);\n setImportResult(undefined);\n\n restoreMutation.mutate({\n file: selectedFile,\n onProgress: (event) => {\n setImportPhase(event.phase);\n setImportMessage(event.message);\n if (event.result) {\n setImportResult(event.result);\n }\n },\n });\n }, [selectedFile, restoreMutation]);\n\n const handleCancelRestore = useCallback(() => {\n setSelectedFile(null);\n setPreview(null);\n setImportPhase(null);\n setImportMessage(undefined);\n setImportResult(undefined);\n }, []);\n\n return (\n <AdminExchangePage\n onExport={handleBackup}\n isExporting={backupMutation.isPending}\n onFileSelected={handleFileSelected}\n onImport={handleRestore}\n onCancelImport={handleCancelRestore}\n selectedFile={selectedFile}\n preview={preview}\n isImporting={restoreMutation.isPending}\n importPhase={importPhase}\n importMessage={importMessage}\n importResult={importResult}\n theme={theme}\n showLineNumbers={showLineNumbers}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n export: {\n title: t('exportTitle'),\n description: t('exportDescription'),\n exportButton: t('exportButton'),\n exporting: t('exporting'),\n },\n import: {\n title: t('importTitle'),\n description: t('importDescription'),\n dropzoneLabel: t('dropzoneLabel'),\n dropzoneActive: t('dropzoneActive'),\n detectedFormat: t('detectedFormat'),\n statsPreview: t('statsPreview'),\n importButton: t('importButton'),\n importing: t('importing'),\n importConfirmTitle: t('importConfirmTitle'),\n importConfirmMessage: t('importConfirmMessage'),\n confirmImport: t('confirmImport'),\n cancelImport: t('cancelImport'),\n },\n progress: {\n phaseStarted: t('phaseStarted'),\n phaseEntityTypes: t('phaseEntityTypes'),\n phaseResources: t('phaseResources'),\n phaseAnnotations: t('phaseAnnotations'),\n phaseComplete: t('phaseComplete'),\n phaseError: t('phaseError'),\n hashChainValid: t('hashChainValid'),\n hashChainInvalid: t('hashChainInvalid'),\n streams: t('streams'),\n events: t('events'),\n blobs: t('blobs'),\n },\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"names":["AdminExchangeClient","_t","useTranslation","t","k","p","activePanel","usePanelBrowse","theme","setTheme","useTheme","showLineNumbers","toggleLineNumbers","useLineNumbers","handleThemeChanged","useCallback","handleLineNumbersToggled","useEventSubscriptions","adminAPI","useAdmin","backupMutation","restoreMutation","selectedFile","setSelectedFile","useState","preview","setPreview","importPhase","setImportPhase","importMessage","setImportMessage","importResult","setImportResult","handleBackup","handleFileSelected","file","handleRestore","event","handleCancelRestore","jsx","AdminExchangePage","ToolbarPanels","Toolbar"],"mappings":"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"}