@semiont/cli 0.4.12 → 0.4.14

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 (153) hide show
  1. package/dist/cli.mjs +518 -67
  2. package/dist/dashboard/dashboard.css +1 -1
  3. package/dist/dashboard/dashboard.css.map +2 -2
  4. package/dist/frontend/dist/assets/CookiePreferences-Cbur0STI.js +2 -0
  5. package/dist/frontend/dist/assets/CookiePreferences-Cbur0STI.js.map +1 -0
  6. package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-CW6SKH2U-CjRY6TID.js → PdfAnnotationCanvas.client-CW6SKH2U-DIkAGn7X.js} +2 -2
  7. package/dist/frontend/dist/assets/{PdfAnnotationCanvas.client-CW6SKH2U-CjRY6TID.js.map → PdfAnnotationCanvas.client-CW6SKH2U-DIkAGn7X.js.map} +1 -1
  8. package/dist/frontend/dist/assets/ToolbarPanels-rN1MIRTV.js +2 -0
  9. package/dist/frontend/dist/assets/ToolbarPanels-rN1MIRTV.js.map +1 -0
  10. package/dist/frontend/dist/assets/XMarkIcon-6m9KVFaj.js +2 -0
  11. package/dist/frontend/dist/assets/XMarkIcon-6m9KVFaj.js.map +1 -0
  12. package/dist/frontend/dist/assets/client-BPbsU2tc.js +2 -0
  13. package/dist/frontend/dist/assets/{client-DZ-DNAU-.js.map → client-BPbsU2tc.js.map} +1 -1
  14. package/dist/frontend/dist/assets/client-BiL3eI7d.js +2 -0
  15. package/dist/frontend/dist/assets/{client-BbPyO59A.js.map → client-BiL3eI7d.js.map} +1 -1
  16. package/dist/frontend/dist/assets/client-BnL1es01.js +2 -0
  17. package/dist/frontend/dist/assets/{client-BsHptwGn.js.map → client-BnL1es01.js.map} +1 -1
  18. package/dist/frontend/dist/assets/client-DrQUcCJy.js +2 -0
  19. package/dist/frontend/dist/assets/{client-COY1ucYF.js.map → client-DrQUcCJy.js.map} +1 -1
  20. package/dist/frontend/dist/assets/en-IUV4ZXKH-BY1RKeLS.js +135 -0
  21. package/dist/frontend/dist/assets/en-IUV4ZXKH-BY1RKeLS.js.map +1 -0
  22. package/dist/frontend/dist/assets/{index-CwQxZp6g.css → index-CNb3PHS7.css} +1 -1
  23. package/dist/frontend/dist/assets/{index-DKq_l4UW.js → index-DA31r_0s.js} +3 -3
  24. package/dist/frontend/dist/assets/{index-DKq_l4UW.js.map → index-DA31r_0s.js.map} +1 -1
  25. package/dist/frontend/dist/assets/layout-B8IinUdt.js +2 -0
  26. package/dist/frontend/dist/assets/layout-B8IinUdt.js.map +1 -0
  27. package/dist/frontend/dist/assets/layout-BjpW078f.js +2 -0
  28. package/dist/frontend/dist/assets/layout-BjpW078f.js.map +1 -0
  29. package/dist/frontend/dist/assets/{layout-6uvM-QPR.js → layout-CDIjxs5a.js} +4 -4
  30. package/dist/frontend/dist/assets/layout-CDIjxs5a.js.map +1 -0
  31. package/dist/frontend/dist/assets/layout-DKm9XdRr.js +2 -0
  32. package/dist/frontend/dist/assets/{layout-D5Pjl6Q-.js.map → layout-DKm9XdRr.js.map} +1 -1
  33. package/dist/frontend/dist/assets/{not-found-CudKZDad.js → not-found-CwWw1pZc.js} +2 -2
  34. package/dist/frontend/dist/assets/{not-found-CudKZDad.js.map → not-found-CwWw1pZc.js.map} +1 -1
  35. package/dist/frontend/dist/assets/{page-Bz2r7ufy.js → page-1BwlyTUj.js} +2 -2
  36. package/dist/frontend/dist/assets/{page-Bz2r7ufy.js.map → page-1BwlyTUj.js.map} +1 -1
  37. package/dist/frontend/dist/assets/page-BQ00VxR5.js +2 -0
  38. package/dist/frontend/dist/assets/page-BQ00VxR5.js.map +1 -0
  39. package/dist/frontend/dist/assets/page-BmHLf-7O.js +2 -0
  40. package/dist/frontend/dist/assets/{page-ESjXBvXd.js.map → page-BmHLf-7O.js.map} +1 -1
  41. package/dist/frontend/dist/assets/page-C5bIvv1V.js +2 -0
  42. package/dist/frontend/dist/assets/{page-CJFp0ZpS.js.map → page-C5bIvv1V.js.map} +1 -1
  43. package/dist/frontend/dist/assets/{page-4gaXuuoi.js → page-CelRTchO.js} +3 -3
  44. package/dist/frontend/dist/assets/{page-4gaXuuoi.js.map → page-CelRTchO.js.map} +1 -1
  45. package/dist/frontend/dist/assets/page-Cf9cnqhC.js +2 -0
  46. package/dist/frontend/dist/assets/{page-uukho-t7.js.map → page-Cf9cnqhC.js.map} +1 -1
  47. package/dist/frontend/dist/assets/page-CslYhbgz.js +2 -0
  48. package/dist/frontend/dist/assets/{page-DK5bpgp9.js.map → page-CslYhbgz.js.map} +1 -1
  49. package/dist/frontend/dist/assets/page-DEjlNEY0.js +2 -0
  50. package/dist/frontend/dist/assets/{page-DIv5j5nE.js.map → page-DEjlNEY0.js.map} +1 -1
  51. package/dist/frontend/dist/assets/page-DLtwpo78.js +2 -0
  52. package/dist/frontend/dist/assets/{page-CGEmB0mm.js.map → page-DLtwpo78.js.map} +1 -1
  53. package/dist/frontend/dist/assets/{page-CE8hOJlL.js → page-D_nHe9FT.js} +2 -2
  54. package/dist/frontend/dist/assets/{page-CE8hOJlL.js.map → page-D_nHe9FT.js.map} +1 -1
  55. package/dist/frontend/dist/assets/page-Deep7E5d.js +2 -0
  56. package/dist/frontend/dist/assets/{page-DVRMfAkS.js.map → page-Deep7E5d.js.map} +1 -1
  57. package/dist/frontend/dist/assets/{page-C44nBk5U.js → page-Dv386AZD.js} +3 -3
  58. package/dist/frontend/dist/assets/{page-C44nBk5U.js.map → page-Dv386AZD.js.map} +1 -1
  59. package/dist/frontend/dist/assets/page-E99MPOn5.js +8 -0
  60. package/dist/frontend/dist/assets/{page-tb55k9Ji.js.map → page-E99MPOn5.js.map} +1 -1
  61. package/dist/frontend/dist/assets/page-KtkB4tEv.js +2 -0
  62. package/dist/frontend/dist/assets/{page-vzoIwpsS.js.map → page-KtkB4tEv.js.map} +1 -1
  63. package/dist/frontend/dist/assets/page-ZBwMTeR-.js +2 -0
  64. package/dist/frontend/dist/assets/page-ZBwMTeR-.js.map +1 -0
  65. package/dist/frontend/dist/assets/page-Zq6ARIvg.js +2 -0
  66. package/dist/frontend/dist/assets/{page-DjkPUxlb.js.map → page-Zq6ARIvg.js.map} +1 -1
  67. package/dist/frontend/dist/assets/page-iSL5E639.js +2 -0
  68. package/dist/frontend/dist/assets/page-iSL5E639.js.map +1 -0
  69. package/dist/frontend/dist/assets/page-xdXYx3nl.js +2 -0
  70. package/dist/frontend/dist/assets/{page-B9hPrBrN.js.map → page-xdXYx3nl.js.map} +1 -1
  71. package/dist/frontend/dist/assets/{privacy-W9SxWfL5.js → privacy-DO1oxJpM.js} +2 -2
  72. package/dist/frontend/dist/assets/{privacy-W9SxWfL5.js.map → privacy-DO1oxJpM.js.map} +1 -1
  73. package/dist/frontend/dist/assets/routing-DMdXWYXo.js +2 -0
  74. package/dist/frontend/dist/assets/{routing-BLuuVVPN.js.map → routing-DMdXWYXo.js.map} +1 -1
  75. package/dist/frontend/dist/assets/{routing-6lnx-g5H.js → routing-tJ_HbFRP.js} +2 -2
  76. package/dist/frontend/dist/assets/{routing-6lnx-g5H.js.map → routing-tJ_HbFRP.js.map} +1 -1
  77. package/dist/frontend/dist/assets/useAuth-yUx5lBP5.js +2 -0
  78. package/dist/frontend/dist/assets/useAuth-yUx5lBP5.js.map +1 -0
  79. package/dist/frontend/dist/index.html +2 -2
  80. package/dist/frontend/dist/messages/ar.json +29 -7
  81. package/dist/frontend/dist/messages/bn.json +29 -7
  82. package/dist/frontend/dist/messages/cs.json +29 -7
  83. package/dist/frontend/dist/messages/da.json +29 -7
  84. package/dist/frontend/dist/messages/de.json +29 -7
  85. package/dist/frontend/dist/messages/el.json +29 -7
  86. package/dist/frontend/dist/messages/en.json +29 -7
  87. package/dist/frontend/dist/messages/es.json +29 -7
  88. package/dist/frontend/dist/messages/fa.json +29 -7
  89. package/dist/frontend/dist/messages/fi.json +29 -7
  90. package/dist/frontend/dist/messages/fr.json +29 -7
  91. package/dist/frontend/dist/messages/he.json +29 -7
  92. package/dist/frontend/dist/messages/hi.json +29 -7
  93. package/dist/frontend/dist/messages/id.json +29 -7
  94. package/dist/frontend/dist/messages/it.json +29 -7
  95. package/dist/frontend/dist/messages/ja.json +29 -7
  96. package/dist/frontend/dist/messages/ko.json +29 -7
  97. package/dist/frontend/dist/messages/ms.json +29 -7
  98. package/dist/frontend/dist/messages/nl.json +29 -7
  99. package/dist/frontend/dist/messages/no.json +29 -7
  100. package/dist/frontend/dist/messages/pl.json +29 -7
  101. package/dist/frontend/dist/messages/pt.json +29 -7
  102. package/dist/frontend/dist/messages/ro.json +29 -7
  103. package/dist/frontend/dist/messages/sv.json +29 -7
  104. package/dist/frontend/dist/messages/th.json +29 -7
  105. package/dist/frontend/dist/messages/tr.json +29 -7
  106. package/dist/frontend/dist/messages/uk.json +29 -7
  107. package/dist/frontend/dist/messages/vi.json +29 -7
  108. package/dist/frontend/dist/messages/zh.json +29 -7
  109. package/dist/frontend/package.json +1 -1
  110. package/package.json +8 -8
  111. package/dist/frontend/dist/assets/AuthContext-CUx-cP7W.js +0 -2
  112. package/dist/frontend/dist/assets/AuthContext-CUx-cP7W.js.map +0 -1
  113. package/dist/frontend/dist/assets/CookiePreferences-BuRvkBwM.js +0 -2
  114. package/dist/frontend/dist/assets/CookiePreferences-BuRvkBwM.js.map +0 -1
  115. package/dist/frontend/dist/assets/KnowledgeBaseContext-CgnF8K-_.js +0 -2
  116. package/dist/frontend/dist/assets/KnowledgeBaseContext-CgnF8K-_.js.map +0 -1
  117. package/dist/frontend/dist/assets/PlusIcon-qGFPUzg0.js +0 -2
  118. package/dist/frontend/dist/assets/PlusIcon-qGFPUzg0.js.map +0 -1
  119. package/dist/frontend/dist/assets/ToolbarPanels-Drd8QG61.js +0 -2
  120. package/dist/frontend/dist/assets/ToolbarPanels-Drd8QG61.js.map +0 -1
  121. package/dist/frontend/dist/assets/client-BbPyO59A.js +0 -2
  122. package/dist/frontend/dist/assets/client-BsHptwGn.js +0 -2
  123. package/dist/frontend/dist/assets/client-COY1ucYF.js +0 -2
  124. package/dist/frontend/dist/assets/client-DZ-DNAU-.js +0 -2
  125. package/dist/frontend/dist/assets/en-IUV4ZXKH-eHunUM2g.js +0 -135
  126. package/dist/frontend/dist/assets/en-IUV4ZXKH-eHunUM2g.js.map +0 -1
  127. package/dist/frontend/dist/assets/layout-6uvM-QPR.js.map +0 -1
  128. package/dist/frontend/dist/assets/layout-CvaTeY53.js +0 -2
  129. package/dist/frontend/dist/assets/layout-CvaTeY53.js.map +0 -1
  130. package/dist/frontend/dist/assets/layout-D5Pjl6Q-.js +0 -2
  131. package/dist/frontend/dist/assets/layout-QZ56PNLk.js +0 -2
  132. package/dist/frontend/dist/assets/layout-QZ56PNLk.js.map +0 -1
  133. package/dist/frontend/dist/assets/page-B9hPrBrN.js +0 -2
  134. package/dist/frontend/dist/assets/page-BH5HMa4o.js +0 -2
  135. package/dist/frontend/dist/assets/page-BH5HMa4o.js.map +0 -1
  136. package/dist/frontend/dist/assets/page-CGEmB0mm.js +0 -2
  137. package/dist/frontend/dist/assets/page-CJFp0ZpS.js +0 -2
  138. package/dist/frontend/dist/assets/page-D1Di1cx-.js +0 -2
  139. package/dist/frontend/dist/assets/page-D1Di1cx-.js.map +0 -1
  140. package/dist/frontend/dist/assets/page-DIv5j5nE.js +0 -2
  141. package/dist/frontend/dist/assets/page-DK5bpgp9.js +0 -2
  142. package/dist/frontend/dist/assets/page-DVRMfAkS.js +0 -2
  143. package/dist/frontend/dist/assets/page-DjkPUxlb.js +0 -2
  144. package/dist/frontend/dist/assets/page-ESjXBvXd.js +0 -2
  145. package/dist/frontend/dist/assets/page-lbZaKDJf.js +0 -2
  146. package/dist/frontend/dist/assets/page-lbZaKDJf.js.map +0 -1
  147. package/dist/frontend/dist/assets/page-tb55k9Ji.js +0 -8
  148. package/dist/frontend/dist/assets/page-uukho-t7.js +0 -2
  149. package/dist/frontend/dist/assets/page-vzoIwpsS.js +0 -2
  150. package/dist/frontend/dist/assets/routing-BLuuVVPN.js +0 -2
  151. package/dist/frontend/dist/assets/useAuth-CAJolYxw.js +0 -2
  152. package/dist/frontend/dist/assets/useAuth-CAJolYxw.js.map +0 -1
  153. package/dist/templates/docker-compose.yml +0 -53
@@ -0,0 +1,2 @@
1
+ import{j as M}from"./query-ATBhtd3K.js";import{r as s}from"./vendor-EnoIVk-c.js";import{d as z,e as R,f as B,g as F,w as L,z as y,T as N}from"./en-IUV4ZXKH-BY1RKeLS.js";import{T as j}from"./ToolbarPanels-rN1MIRTV.js";import{u as D}from"./i18n-BYxb14hm.js";import"./index-DA31r_0s.js";import"./useAuth-yUx5lBP5.js";import"./routing-DMdXWYXo.js";import"./XMarkIcon-6m9KVFaj.js";function K(){const{t:d}=D(),e=(t,w)=>d(`AdminExchange.${t}`,w),{activePanel:g}=z(),{theme:b,setTheme:p}=R(),{showLineNumbers:C,toggleLineNumbers:m}=B(),x=s.useCallback(({theme:t})=>{p(t)},[p]),f=s.useCallback(()=>{m()},[m]);F({"settings:theme-changed":x,"settings:line-numbers-toggled":f});const c=L(),i=c.exchange.backup.useMutation(),l=c.exchange.restore.useMutation(),[o,u]=s.useState(null),[v,h]=s.useState(null),[T,n]=s.useState(null),[I,a]=s.useState(),[P,r]=s.useState(),E=s.useCallback(()=>{i.mutate()},[i]),k=s.useCallback(async t=>{u(t),n(null),a(void 0),r(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),r(void 0),l.mutate({file:o,onProgress:t=>{n(t.phase),a(t.message),t.result&&r(t.result)}}))},[o,l]),A=s.useCallback(()=>{u(null),h(null),n(null),a(void 0),r(void 0)},[]);return M.jsx(y,{onExport:E,isExporting:i.isPending,onFileSelected:k,onImport:S,onCancelImport:A,selectedFile:o,preview:v,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:j,Toolbar:N})}export{K as default};
2
+ //# sourceMappingURL=client-BnL1es01.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-BsHptwGn.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-BnL1es01.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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"}
@@ -0,0 +1,2 @@
1
+ import{u as P,j as k}from"./query-ATBhtd3K.js";import{r as u}from"./vendor-EnoIVk-c.js";import{d as D,e as E,f as N,g as S,w as j,x as w,b as F,T as Q}from"./en-IUV4ZXKH-BY1RKeLS.js";import{T as q}from"./ToolbarPanels-rN1MIRTV.js";import{u as K}from"./i18n-BYxb14hm.js";import"./index-DA31r_0s.js";import"./useAuth-yUx5lBP5.js";import"./routing-DMdXWYXo.js";import"./XMarkIcon-6m9KVFaj.js";function J(){const{t:d}=K(),e=(s,r)=>d(`AdminUsers.${s}`,r),o=P(),{activePanel:m}=D(),{theme:c,setTheme:i}=E(),{showLineNumbers:U,toggleLineNumbers:l}=N(),g=u.useCallback(({theme:s})=>{i(s)},[i]),p=u.useCallback(()=>{l()},[l]);S({"settings:theme-changed":g,"settings:line-numbers-toggled":p});const t=j(),{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(T){console.error("Failed to update user:",T)}},L=async s=>{console.warn("Delete user not implemented:",s),alert("Delete user functionality is not currently available")},x=()=>{console.log("Add user clicked")},f=()=>{console.log("Export users clicked")};return k.jsx(w,{users:b,userStats:y,isLoadingUsers:h,isLoadingStats:v,onUpdateUser:A,onDeleteUser:L,onAddUser:x,onExportUsers:f,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:Q,buttonStyles:F})}export{J as default};
2
+ //# sourceMappingURL=client-DrQUcCJy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-COY1ucYF.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":"kdAqBA,SAAwBA,GAAa,CACnC,KAAM,CAAE,EAAGC,CAAA,EAAOC,EAAA,EACZC,EAAI,CAACC,EAAWC,IAAgCJ,EAAG,cAAcG,CAAC,GAAIC,CAAQ,EAC9EC,EAAcC,EAAA,EAGd,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,EAAe,UAAWC,GAAiBH,EAAS,MAAM,KAAK,SAAA,EACvE,CAAE,KAAMI,EAAe,UAAWC,GAAiBL,EAAS,MAAM,MAAM,SAAA,EACxEM,EAAqBN,EAAS,MAAM,OAAO,YAAA,EAE3CO,GAASL,GAAA,YAAAA,EAAkD,QAAS,CAAA,EACpEM,GAAaJ,GAAA,YAAAA,EAAsD,QAAS,KAE5EK,EAAmB,MAAOC,EAAYC,IAAoD,CAC9F,GAAI,CACF,MAAML,EAAmB,YAAY,CAAE,GAAAI,EAAI,KAAAC,EAAM,EACjDzB,EAAY,kBAAkB,CAAE,SAAU,CAAC,kBAAkB,EAAG,EAChEA,EAAY,kBAAkB,CAAE,SAAU,CAAC,mBAAmB,EAAG,CACnE,OAAS0B,EAAO,CACd,QAAQ,MAAM,yBAA0BA,CAAK,CAC/C,CACF,EAEMC,EAAmB,MAAOH,GAAe,CAC7C,QAAQ,KAAK,+BAAgCA,CAAE,EAC/C,MAAM,sDAAsD,CAC9D,EAEMI,EAAgB,IAAM,CAC1B,QAAQ,IAAI,kBAAkB,CAChC,EAEMC,EAAoB,IAAM,CAC9B,QAAQ,IAAI,sBAAsB,CACpC,EAEA,OACEC,EAAAA,IAACC,EAAA,CACC,MAAAV,EACA,UAAAC,EACA,eAAgBL,EAChB,eAAgBE,EAChB,aAAcI,EACd,aAAcI,EACd,UAAWC,EACX,cAAeC,EACf,MAAAzB,EACA,gBAAAG,EACA,YAAAL,EACA,aAAc,CACZ,MAAOL,EAAE,OAAO,EAChB,SAAUA,EAAE,UAAU,EACtB,QAASA,EAAE,SAAS,EACpB,WAAYA,EAAE,YAAY,EAC1B,YAAaA,EAAE,aAAa,EAC5B,eAAgBA,EAAE,gBAAgB,EAClC,YAAaA,EAAE,aAAa,EAC5B,YAAaA,EAAE,aAAa,EAC5B,kBAAmBA,EAAE,mBAAmB,EACxC,KAAMA,EAAE,MAAM,EACd,SAAUA,EAAE,UAAU,EACtB,MAAOA,EAAE,OAAO,EAChB,KAAMA,EAAE,MAAM,EACd,OAAQA,EAAE,QAAQ,EAClB,UAAWA,EAAE,WAAW,EACxB,OAAQA,EAAE,QAAQ,EAClB,SAAUA,EAAE,UAAU,EACtB,YAAaA,EAAE,aAAa,EAC5B,aAAcA,EAAE,cAAc,EAC9B,WAAYA,EAAE,YAAY,EAC1B,aAAcA,EAAE,cAAc,EAC9B,WAAYA,EAAE,YAAY,EAC1B,aAAcA,EAAE,cAAc,EAC9B,gBAAiBA,EAAE,iBAAiB,EACpC,aAAcA,EAAE,cAAc,EAC9B,cAAeA,EAAE,eAAe,EAChC,aAAcA,EAAE,cAAc,EAC9B,wBAAyBA,EAAE,yBAAyB,EACpD,OAAQA,EAAE,QAAQ,EAClB,MAAOA,EAAE,OAAO,EAChB,YAAaA,EAAE,aAAa,EAC5B,UAAWA,EAAE,WAAW,EACxB,eAAgBA,EAAE,gBAAgB,EAClC,aAAcA,EAAE,cAAc,EAC9B,WAAYA,EAAE,YAAY,CAAA,EAE5B,cAAAmC,EACA,QAAAC,EACA,aAAAC,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"client-DrQUcCJy.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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"}