@semiont/browser 0.5.30 → 0.5.32

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 (84) hide show
  1. package/dist/assets/{ChevronLeftIcon-BcDi-sgg.js → ChevronLeftIcon-ikKcEfM5.js} +2 -2
  2. package/dist/assets/{ChevronLeftIcon-BcDi-sgg.js.map → ChevronLeftIcon-ikKcEfM5.js.map} +1 -1
  3. package/dist/assets/{CommandLineIcon-O8NfVSEq.js → CommandLineIcon-B3W-9AYr.js} +2 -2
  4. package/dist/assets/{CommandLineIcon-O8NfVSEq.js.map → CommandLineIcon-B3W-9AYr.js.map} +1 -1
  5. package/dist/assets/{CookiePreferences-DHgkny7X.js → CookiePreferences-CWZIFYNC.js} +2 -2
  6. package/dist/assets/{CookiePreferences-DHgkny7X.js.map → CookiePreferences-CWZIFYNC.js.map} +1 -1
  7. package/dist/assets/{KeyboardShortcutsContext-CBFjGYDr.js → KeyboardShortcutsContext-CSFk3vP6.js} +2 -2
  8. package/dist/assets/{KeyboardShortcutsContext-CBFjGYDr.js.map → KeyboardShortcutsContext-CSFk3vP6.js.map} +1 -1
  9. package/dist/assets/{PdfAnnotationCanvas.client-LSH3PZPY-DuFgtMhI.js → PdfAnnotationCanvas.client-LSH3PZPY-D-7UQNP4.js} +2 -2
  10. package/dist/assets/{PdfAnnotationCanvas.client-LSH3PZPY-DuFgtMhI.js.map → PdfAnnotationCanvas.client-LSH3PZPY-D-7UQNP4.js.map} +1 -1
  11. package/dist/assets/{ToolbarPanels-COwH5BrV.js → ToolbarPanels-CbF3qEos.js} +2 -2
  12. package/dist/assets/{ToolbarPanels-COwH5BrV.js.map → ToolbarPanels-CbF3qEos.js.map} +1 -1
  13. package/dist/assets/{XMarkIcon-CVrfCz2h.js → XMarkIcon-Dt8lUQLh.js} +2 -2
  14. package/dist/assets/{XMarkIcon-CVrfCz2h.js.map → XMarkIcon-Dt8lUQLh.js.map} +1 -1
  15. package/dist/assets/{client-5Fze6y-0.js → client-CXKycZZZ.js} +2 -2
  16. package/dist/assets/{client-5Fze6y-0.js.map → client-CXKycZZZ.js.map} +1 -1
  17. package/dist/assets/{client-Br8hVPSL.js → client-CiXdSyqF.js} +2 -2
  18. package/dist/assets/{client-Br8hVPSL.js.map → client-CiXdSyqF.js.map} +1 -1
  19. package/dist/assets/{en-R5XA26NF-B_rafaNP.js → en-R5XA26NF-BxJGw0oZ.js} +1 -1
  20. package/dist/assets/{i18n-zIDJOEfo.js → i18n-CywLsdxn.js} +2 -2
  21. package/dist/assets/i18n-CywLsdxn.js.map +1 -0
  22. package/dist/assets/{index-DikwAWOa.js → index-cHWd4mGO.js} +52 -52
  23. package/dist/assets/index-cHWd4mGO.js.map +1 -0
  24. package/dist/assets/{layout-DOcJwulX.js → layout-3T2CwuLU.js} +2 -2
  25. package/dist/assets/{layout-DOcJwulX.js.map → layout-3T2CwuLU.js.map} +1 -1
  26. package/dist/assets/{layout-BYYBhrUM.js → layout-B4A7CIsE.js} +2 -2
  27. package/dist/assets/{layout-BYYBhrUM.js.map → layout-B4A7CIsE.js.map} +1 -1
  28. package/dist/assets/{layout-B4mP42tI.js → layout-CGq5doN0.js} +2 -2
  29. package/dist/assets/{layout-B4mP42tI.js.map → layout-CGq5doN0.js.map} +1 -1
  30. package/dist/assets/{layout-CLyZ3jHm.js → layout-DSvS5iO0.js} +2 -2
  31. package/dist/assets/{layout-CLyZ3jHm.js.map → layout-DSvS5iO0.js.map} +1 -1
  32. package/dist/assets/{not-found-Ci6X4tm9.js → not-found-k9OeYO0z.js} +2 -2
  33. package/dist/assets/{not-found-Ci6X4tm9.js.map → not-found-k9OeYO0z.js.map} +1 -1
  34. package/dist/assets/{page-CSMUzvRi.js → page-BNXN9uWs.js} +2 -2
  35. package/dist/assets/{page-CSMUzvRi.js.map → page-BNXN9uWs.js.map} +1 -1
  36. package/dist/assets/{page--ofr4a58.js → page-BWTL-Lea.js} +2 -2
  37. package/dist/assets/{page--ofr4a58.js.map → page-BWTL-Lea.js.map} +1 -1
  38. package/dist/assets/{page-DhCdpcx2.js → page-BfbTxteF.js} +2 -2
  39. package/dist/assets/{page-DhCdpcx2.js.map → page-BfbTxteF.js.map} +1 -1
  40. package/dist/assets/{page-C9pkWGVi.js → page-BhPjX09z.js} +2 -2
  41. package/dist/assets/{page-C9pkWGVi.js.map → page-BhPjX09z.js.map} +1 -1
  42. package/dist/assets/{page-CO9mlfK-.js → page-Bk2UhTqA.js} +2 -2
  43. package/dist/assets/{page-CO9mlfK-.js.map → page-Bk2UhTqA.js.map} +1 -1
  44. package/dist/assets/{page-BYW9mwEo.js → page-CJnENX8F.js} +2 -2
  45. package/dist/assets/{page-BYW9mwEo.js.map → page-CJnENX8F.js.map} +1 -1
  46. package/dist/assets/{page-Ce6fw6P9.js → page-Ct7GNMjQ.js} +2 -2
  47. package/dist/assets/{page-Ce6fw6P9.js.map → page-Ct7GNMjQ.js.map} +1 -1
  48. package/dist/assets/{page-FoKU0iob.js → page-CywSuXyN.js} +2 -2
  49. package/dist/assets/{page-FoKU0iob.js.map → page-CywSuXyN.js.map} +1 -1
  50. package/dist/assets/{page-QXiNSjcX.js → page-D-_kPKxI.js} +2 -2
  51. package/dist/assets/{page-QXiNSjcX.js.map → page-D-_kPKxI.js.map} +1 -1
  52. package/dist/assets/{page-CCSJqjWt.js → page-DLiS_avb.js} +2 -2
  53. package/dist/assets/{page-CCSJqjWt.js.map → page-DLiS_avb.js.map} +1 -1
  54. package/dist/assets/{page-DveRPD7J.js → page-DS47DLy5.js} +2 -2
  55. package/dist/assets/{page-DveRPD7J.js.map → page-DS47DLy5.js.map} +1 -1
  56. package/dist/assets/{page-KNTWGNqU.js → page-DYcAqNIR.js} +2 -2
  57. package/dist/assets/{page-KNTWGNqU.js.map → page-DYcAqNIR.js.map} +1 -1
  58. package/dist/assets/{page-P0n7aLDe.js → page-DYqW4iWr.js} +2 -2
  59. package/dist/assets/{page-P0n7aLDe.js.map → page-DYqW4iWr.js.map} +1 -1
  60. package/dist/assets/page-De7BG-0h.js +2 -0
  61. package/dist/assets/{page-C5yXoqok.js.map → page-De7BG-0h.js.map} +1 -1
  62. package/dist/assets/{page-DP-LdVo6.js → page-DwyBQfbg.js} +2 -2
  63. package/dist/assets/{page-DP-LdVo6.js.map → page-DwyBQfbg.js.map} +1 -1
  64. package/dist/assets/{page-C9DNsp3i.js → page-OhVx5cMH.js} +2 -2
  65. package/dist/assets/{page-C9DNsp3i.js.map → page-OhVx5cMH.js.map} +1 -1
  66. package/dist/assets/{page-S-g5YvWH.js → page-XISoI7Ji.js} +2 -2
  67. package/dist/assets/{page-S-g5YvWH.js.map → page-XISoI7Ji.js.map} +1 -1
  68. package/dist/assets/{page-jVd15vic.js → page-bR7KMw9p.js} +2 -2
  69. package/dist/assets/{page-jVd15vic.js.map → page-bR7KMw9p.js.map} +1 -1
  70. package/dist/assets/{pdf-DLN6u172.js → pdf-BFxsW_Qg.js} +2 -2
  71. package/dist/assets/{pdf-DLN6u172.js.map → pdf-BFxsW_Qg.js.map} +1 -1
  72. package/dist/assets/{routing-Cj_EvhT3.js → routing-D-GkAfgE.js} +2 -2
  73. package/dist/assets/{routing-Cj_EvhT3.js.map → routing-D-GkAfgE.js.map} +1 -1
  74. package/dist/assets/{routing-NHl4gs1C.js → routing-D5d0e59H.js} +2 -2
  75. package/dist/assets/{routing-NHl4gs1C.js.map → routing-D5d0e59H.js.map} +1 -1
  76. package/dist/assets/{vendor-GEwJ7U4m.js → vendor-vK2W55bZ.js} +2 -2
  77. package/dist/assets/{vendor-GEwJ7U4m.js.map → vendor-vK2W55bZ.js.map} +1 -1
  78. package/dist/assets/{web-CyrRuj1m.js → web-DWjmWGs5.js} +2 -2
  79. package/dist/assets/{web-CyrRuj1m.js.map → web-DWjmWGs5.js.map} +1 -1
  80. package/dist/index.html +3 -3
  81. package/package.json +1 -1
  82. package/dist/assets/i18n-zIDJOEfo.js.map +0 -1
  83. package/dist/assets/index-DikwAWOa.js.map +0 -1
  84. package/dist/assets/page-C5yXoqok.js +0 -2
@@ -1,2 +1,2 @@
1
- import{t as e}from"./i18n-zIDJOEfo.js";import{t}from"./vendor-GEwJ7U4m.js";import{$ as n,At as r,Q as i,R as a,Y as o,c as s,et as c,j as l}from"./index-DikwAWOa.js";import{t as u}from"./ToolbarPanels-COwH5BrV.js";var d=t();function f(){let{t}=e(),f=(e,n)=>t(`ModerateEntityTags.${e}`,n),p=o(r().activeSession$)??void 0,m=n(),h=i(p,e=>a(e,m)),g=o(h?.browse.activePanel$)??null,_=o(h?.entityTypes.value$)??[],v=o(h?.entityTypes.loading$)??!0,y=o(h?.entityTypes.error$)??null,b=o(h?.newTag$)??``,x=o(h?.error$)??``,S=o(h?.isAdding$)??!1,{theme:C}=c();return y?(0,d.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-3 py-20`,children:[(0,d.jsx)(`p`,{className:`text-gray-600 dark:text-gray-300`,children:f(`loadFailed`)}),(0,d.jsx)(`button`,{type:`button`,onClick:h?.entityTypes.retry,className:`semiont-button`,"data-variant":`secondary`,children:f(`retry`)})]}):v?(0,d.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,d.jsx)(`p`,{className:`text-gray-600 dark:text-gray-300`,children:f(`loading`)})}):h?(0,d.jsx)(s,{entityTypes:_,isLoading:v,error:x,newTag:b,onNewTagChange:h?.setNewTag,onAddTag:h?.addTag,isAddingTag:S,theme:C,activePanel:g,translations:{pageTitle:f(`pageTitle`),pageDescription:f(`pageDescription`),sectionTitle:f(`sectionTitle`),sectionDescription:f(`sectionDescription`),inputPlaceholder:f(`inputPlaceholder`),addTag:f(`addTag`),adding:f(`adding`)},ToolbarPanels:u,Toolbar:l}):null}export{f as default};
2
- //# sourceMappingURL=page--ofr4a58.js.map
1
+ import{t as e}from"./i18n-CywLsdxn.js";import{t}from"./vendor-vK2W55bZ.js";import{$ as n,At as r,Q as i,R as a,Y as o,c as s,et as c,j as l}from"./index-cHWd4mGO.js";import{t as u}from"./ToolbarPanels-CbF3qEos.js";var d=t();function f(){let{t}=e(),f=(e,n)=>t(`ModerateEntityTags.${e}`,n),p=o(r().activeSession$)??void 0,m=n(),h=i(p,e=>a(e,m)),g=o(h?.browse.activePanel$)??null,_=o(h?.entityTypes.value$)??[],v=o(h?.entityTypes.loading$)??!0,y=o(h?.entityTypes.error$)??null,b=o(h?.newTag$)??``,x=o(h?.error$)??``,S=o(h?.isAdding$)??!1,{theme:C}=c();return y?(0,d.jsxs)(`div`,{className:`flex flex-col items-center justify-center gap-3 py-20`,children:[(0,d.jsx)(`p`,{className:`text-gray-600 dark:text-gray-300`,children:f(`loadFailed`)}),(0,d.jsx)(`button`,{type:`button`,onClick:h?.entityTypes.retry,className:`semiont-button`,"data-variant":`secondary`,children:f(`retry`)})]}):v?(0,d.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,d.jsx)(`p`,{className:`text-gray-600 dark:text-gray-300`,children:f(`loading`)})}):h?(0,d.jsx)(s,{entityTypes:_,isLoading:v,error:x,newTag:b,onNewTagChange:h?.setNewTag,onAddTag:h?.addTag,isAddingTag:S,theme:C,activePanel:g,translations:{pageTitle:f(`pageTitle`),pageDescription:f(`pageDescription`),sectionTitle:f(`sectionTitle`),sectionDescription:f(`sectionDescription`),inputPlaceholder:f(`inputPlaceholder`),addTag:f(`addTag`),adding:f(`adding`)},ToolbarPanels:u,Toolbar:l}):null}export{f as default};
2
+ //# sourceMappingURL=page-BWTL-Lea.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page--ofr4a58.js","names":[],"sources":["../../src/app/[locale]/moderate/entity-tags/page.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport {\n Toolbar,\n useTheme,\n useShellStateUnit,\n useObservable,\n useSemiont,\n useSessionStateUnit,\n EntityTagsPage,\n} from '@semiont/react-ui';\nimport { createEntityTagsStateUnit } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\n\nexport default function EntityTagsPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateEntityTags.${k}`, p as any) as string;\n const session = useObservable(useSemiont().activeSession$) ?? undefined;\n\n const browseStateUnit = useShellStateUnit();\n const stateUnit = useSessionStateUnit(session, (s) => createEntityTagsStateUnit(s, browseStateUnit));\n\n const activePanel = useObservable(stateUnit?.browse.activePanel$) ?? null;\n const entityTypes = useObservable(stateUnit?.entityTypes.value$) ?? [];\n const isLoading = useObservable(stateUnit?.entityTypes.loading$) ?? true;\n // A terminally failed load is not still loading. Distinct from `error`\n // below, which is the ADD-tag error. See .plans/PANEL-FAILURE-STATES.md\n const loadError = useObservable(stateUnit?.entityTypes.error$) ?? null;\n const newTag = useObservable(stateUnit?.newTag$) ?? '';\n const error = useObservable(stateUnit?.error$) ?? '';\n const isAddingTag = useObservable(stateUnit?.isAdding$) ?? false;\n\n const { theme } = useTheme();\n\n if (loadError) {\n return (\n <div className=\"flex flex-col items-center justify-center gap-3 py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loadFailed')}</p>\n <button type=\"button\" onClick={stateUnit?.entityTypes.retry} className=\"semiont-button\" data-variant=\"secondary\">\n {t('retry')}\n </button>\n </div>\n );\n }\n\n if (isLoading) {\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loading')}</p>\n </div>\n );\n }\n\n if (!stateUnit) return null;\n\n return (\n <EntityTagsPage\n entityTypes={entityTypes}\n isLoading={isLoading}\n error={error}\n newTag={newTag}\n onNewTagChange={stateUnit?.setNewTag}\n onAddTag={stateUnit?.addTag}\n isAddingTag={isAddingTag}\n theme={theme}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n sectionTitle: t('sectionTitle'),\n sectionDescription: t('sectionDescription'),\n inputPlaceholder: t('inputPlaceholder'),\n addTag: t('addTag'),\n adding: t('adding'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"mappings":"gOAaA,SAAwB,GAAwB,CAC9C,GAAM,CAAK,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,sBAAsB,IAAK,CAAQ,EACtF,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,GAAK,IAAA,GAExD,EAAkB,EAAkB,EACpC,EAAY,EAAoB,EAAU,GAAM,EAA0B,EAAG,CAAe,CAAC,EAE7F,EAAc,EAAc,GAAW,OAAO,YAAY,GAAK,KAC/D,EAAc,EAAc,GAAW,YAAY,MAAM,GAAK,CAAC,EAC/D,EAAY,EAAc,GAAW,YAAY,QAAQ,GAAK,GAG9D,EAAY,EAAc,GAAW,YAAY,MAAM,GAAK,KAC5D,EAAS,EAAc,GAAW,OAAO,GAAK,GAC9C,EAAQ,EAAc,GAAW,MAAM,GAAK,GAC5C,EAAc,EAAc,GAAW,SAAS,GAAK,GAErD,CAAE,SAAU,EAAS,EAuB3B,OArBI,GAEA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,wDAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAE,YAAY,CAAK,CAAA,GACpE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,KAAK,SAAS,QAAS,GAAW,YAAY,MAAO,UAAU,iBAAiB,eAAa,YAClG,SAAA,EAAE,OAAO,CACJ,CAAA,CACL,IAIL,GAEA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,yCACb,UAAA,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAE,SAAS,CAAK,CAAA,CAC9D,CAAA,EAIJ,GAGH,EAAA,EAAA,IAAA,CAAC,EAAD,CACe,cACF,YACJ,QACC,SACR,eAAgB,GAAW,UAC3B,SAAU,GAAW,OACR,cACN,QACM,cACb,aAAc,CACZ,UAAW,EAAE,WAAW,EACxB,gBAAiB,EAAE,iBAAiB,EACpC,aAAc,EAAE,cAAc,EAC9B,mBAAoB,EAAE,oBAAoB,EAC1C,iBAAkB,EAAE,kBAAkB,EACtC,OAAQ,EAAE,QAAQ,EAClB,OAAQ,EAAE,QAAQ,CACpB,EACe,gBACN,SACV,CAAA,EAxBoB,IA0BzB"}
1
+ {"version":3,"file":"page-BWTL-Lea.js","names":[],"sources":["../../src/app/[locale]/moderate/entity-tags/page.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport {\n Toolbar,\n useTheme,\n useShellStateUnit,\n useObservable,\n useSemiont,\n useSessionStateUnit,\n EntityTagsPage,\n} from '@semiont/react-ui';\nimport { createEntityTagsStateUnit } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\n\nexport default function EntityTagsPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateEntityTags.${k}`, p as any) as string;\n const session = useObservable(useSemiont().activeSession$) ?? undefined;\n\n const browseStateUnit = useShellStateUnit();\n const stateUnit = useSessionStateUnit(session, (s) => createEntityTagsStateUnit(s, browseStateUnit));\n\n const activePanel = useObservable(stateUnit?.browse.activePanel$) ?? null;\n const entityTypes = useObservable(stateUnit?.entityTypes.value$) ?? [];\n const isLoading = useObservable(stateUnit?.entityTypes.loading$) ?? true;\n // A terminally failed load is not still loading. Distinct from `error`\n // below, which is the ADD-tag error. See .plans/PANEL-FAILURE-STATES.md\n const loadError = useObservable(stateUnit?.entityTypes.error$) ?? null;\n const newTag = useObservable(stateUnit?.newTag$) ?? '';\n const error = useObservable(stateUnit?.error$) ?? '';\n const isAddingTag = useObservable(stateUnit?.isAdding$) ?? false;\n\n const { theme } = useTheme();\n\n if (loadError) {\n return (\n <div className=\"flex flex-col items-center justify-center gap-3 py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loadFailed')}</p>\n <button type=\"button\" onClick={stateUnit?.entityTypes.retry} className=\"semiont-button\" data-variant=\"secondary\">\n {t('retry')}\n </button>\n </div>\n );\n }\n\n if (isLoading) {\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t('loading')}</p>\n </div>\n );\n }\n\n if (!stateUnit) return null;\n\n return (\n <EntityTagsPage\n entityTypes={entityTypes}\n isLoading={isLoading}\n error={error}\n newTag={newTag}\n onNewTagChange={stateUnit?.setNewTag}\n onAddTag={stateUnit?.addTag}\n isAddingTag={isAddingTag}\n theme={theme}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n sectionTitle: t('sectionTitle'),\n sectionDescription: t('sectionDescription'),\n inputPlaceholder: t('inputPlaceholder'),\n addTag: t('addTag'),\n adding: t('adding'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"mappings":"gOAaA,SAAwB,GAAwB,CAC9C,GAAM,CAAK,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,sBAAsB,IAAK,CAAQ,EACtF,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,GAAK,IAAA,GAExD,EAAkB,EAAkB,EACpC,EAAY,EAAoB,EAAU,GAAM,EAA0B,EAAG,CAAe,CAAC,EAE7F,EAAc,EAAc,GAAW,OAAO,YAAY,GAAK,KAC/D,EAAc,EAAc,GAAW,YAAY,MAAM,GAAK,CAAC,EAC/D,EAAY,EAAc,GAAW,YAAY,QAAQ,GAAK,GAG9D,EAAY,EAAc,GAAW,YAAY,MAAM,GAAK,KAC5D,EAAS,EAAc,GAAW,OAAO,GAAK,GAC9C,EAAQ,EAAc,GAAW,MAAM,GAAK,GAC5C,EAAc,EAAc,GAAW,SAAS,GAAK,GAErD,CAAE,SAAU,EAAS,EAuB3B,OArBI,GAEA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,wDAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAE,YAAY,CAAK,CAAA,GACpE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,KAAK,SAAS,QAAS,GAAW,YAAY,MAAO,UAAU,iBAAiB,eAAa,YAClG,SAAA,EAAE,OAAO,CACJ,CAAA,CACL,IAIL,GAEA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,yCACb,UAAA,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAE,SAAS,CAAK,CAAA,CAC9D,CAAA,EAIJ,GAGH,EAAA,EAAA,IAAA,CAAC,EAAD,CACe,cACF,YACJ,QACC,SACR,eAAgB,GAAW,UAC3B,SAAU,GAAW,OACR,cACN,QACM,cACb,aAAc,CACZ,UAAW,EAAE,WAAW,EACxB,gBAAiB,EAAE,iBAAiB,EACpC,aAAc,EAAE,cAAc,EAC9B,mBAAoB,EAAE,oBAAoB,EAC1C,iBAAkB,EAAE,kBAAkB,EACtC,OAAQ,EAAE,QAAQ,EAClB,OAAQ,EAAE,QAAQ,CACpB,EACe,gBACN,SACV,CAAA,EAxBoB,IA0BzB"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./i18n-zIDJOEfo.js";import{t}from"./vendor-GEwJ7U4m.js";import{$ as n,Y as r,et as i,j as a,m as o}from"./index-DikwAWOa.js";import{t as s}from"./ToolbarPanels-COwH5BrV.js";var c=t();function l(){let{t}=e(),l=(e,n)=>t(`ModerateRecent.${e}`,n),u=n(),d=r(u.activePanel$)??null,{theme:f}=i();return(0,c.jsx)(o,{hasDocuments:!1,isLoading:!1,theme:f,activePanel:d,translations:{pageTitle:l(`pageTitle`),pageDescription:l(`pageDescription`),sectionTitle:l(`sectionTitle`),sectionDescription:l(`sectionDescription`),noDocuments:l(`noDocuments`),activityWillAppear:l(`activityWillAppear`),loading:l(`loading`)},ToolbarPanels:s,Toolbar:a})}export{l as default};
2
- //# sourceMappingURL=page-DhCdpcx2.js.map
1
+ import{t as e}from"./i18n-CywLsdxn.js";import{t}from"./vendor-vK2W55bZ.js";import{$ as n,Y as r,et as i,j as a,m as o}from"./index-cHWd4mGO.js";import{t as s}from"./ToolbarPanels-CbF3qEos.js";var c=t();function l(){let{t}=e(),l=(e,n)=>t(`ModerateRecent.${e}`,n),u=n(),d=r(u.activePanel$)??null,{theme:f}=i();return(0,c.jsx)(o,{hasDocuments:!1,isLoading:!1,theme:f,activePanel:d,translations:{pageTitle:l(`pageTitle`),pageDescription:l(`pageDescription`),sectionTitle:l(`sectionTitle`),sectionDescription:l(`sectionDescription`),noDocuments:l(`noDocuments`),activityWillAppear:l(`activityWillAppear`),loading:l(`loading`)},ToolbarPanels:s,Toolbar:a})}export{l as default};
2
+ //# sourceMappingURL=page-BfbTxteF.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-DhCdpcx2.js","names":[],"sources":["../../src/app/[locale]/moderate/recent/page.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, useShellStateUnit, useObservable } from '@semiont/react-ui';\nimport { RecentDocumentsPage } from '@semiont/react-ui';\n\n// Authentication is handled by middleware (proxy.ts)\n// Only authenticated moderators/admins can reach this page\n\nexport default function RecentDocumentsPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateRecent.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const browseStateUnit = useShellStateUnit();\n const activePanel = useObservable(browseStateUnit.activePanel$) ?? null;\n const { theme } = useTheme();\n\n\n\n return (\n <RecentDocumentsPage\n hasDocuments={false}\n isLoading={false}\n theme={theme}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n sectionTitle: t('sectionTitle'),\n sectionDescription: t('sectionDescription'),\n noDocuments: t('noDocuments'),\n activityWillAppear: t('activityWillAppear'),\n loading: t('loading'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"mappings":"0MASA,SAAwB,GAA6B,CACnD,GAAM,CAAK,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,kBAAkB,IAAK,CAAQ,EAGlF,EAAkB,EAAkB,EACpC,EAAc,EAAc,EAAgB,YAAY,GAAK,KAC7D,CAAE,SAAU,EAAS,EAI3B,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,aAAc,GACd,UAAW,GACJ,QACM,cACb,aAAc,CACZ,UAAW,EAAE,WAAW,EACxB,gBAAiB,EAAE,iBAAiB,EACpC,aAAc,EAAE,cAAc,EAC9B,mBAAoB,EAAE,oBAAoB,EAC1C,YAAa,EAAE,aAAa,EAC5B,mBAAoB,EAAE,oBAAoB,EAC1C,QAAS,EAAE,SAAS,CACtB,EACe,gBACN,SACV,CAAA,CAEL"}
1
+ {"version":3,"file":"page-BfbTxteF.js","names":[],"sources":["../../src/app/[locale]/moderate/recent/page.tsx"],"sourcesContent":["import { useTranslation } from 'react-i18next';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, useShellStateUnit, useObservable } from '@semiont/react-ui';\nimport { RecentDocumentsPage } from '@semiont/react-ui';\n\n// Authentication is handled by middleware (proxy.ts)\n// Only authenticated moderators/admins can reach this page\n\nexport default function RecentDocumentsPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateRecent.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const browseStateUnit = useShellStateUnit();\n const activePanel = useObservable(browseStateUnit.activePanel$) ?? null;\n const { theme } = useTheme();\n\n\n\n return (\n <RecentDocumentsPage\n hasDocuments={false}\n isLoading={false}\n theme={theme}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n sectionTitle: t('sectionTitle'),\n sectionDescription: t('sectionDescription'),\n noDocuments: t('noDocuments'),\n activityWillAppear: t('activityWillAppear'),\n loading: t('loading'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"mappings":"0MASA,SAAwB,GAA6B,CACnD,GAAM,CAAK,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,kBAAkB,IAAK,CAAQ,EAGlF,EAAkB,EAAkB,EACpC,EAAc,EAAc,EAAgB,YAAY,GAAK,KAC7D,CAAE,SAAU,EAAS,EAI3B,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,aAAc,GACd,UAAW,GACJ,QACM,cACb,aAAc,CACZ,UAAW,EAAE,WAAW,EACxB,gBAAiB,EAAE,iBAAiB,EACpC,aAAc,EAAE,cAAc,EAC9B,mBAAoB,EAAE,oBAAoB,EAC1C,YAAa,EAAE,aAAa,EAC5B,mBAAoB,EAAE,oBAAoB,EAC1C,QAAS,EAAE,SAAS,CACtB,EACe,gBACN,SACV,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./i18n-zIDJOEfo.js";import{t}from"./vendor-GEwJ7U4m.js";import{$ as n,At as r,L as i,Q as a,Y as o,et as s,v as c}from"./index-DikwAWOa.js";import{t as l}from"./ToolbarPanels-COwH5BrV.js";import{i as u}from"./routing-Cj_EvhT3.js";var d=t();function f(){let{t}=e(),f=(e,n)=>t(`Discover.${e}`,n),p=u(),m=o(r().activeSession$)??void 0,h=n(),g=a(m,e=>i(e,h)),_=o(g?.browse.activePanel$)??null,v=o(g?.recent.value$)??[],y=o(g?.entityTypes.value$)??[],b=o(g?.recent.error$)??null,x=o(g?.recent.loading$)??!0,S=o(g?.search.query$)??``,C=o(g?.search.state$),w=C?.results??[],T=C?.isSearching??!1,E=C?.matchKind,D=o(g?.selectedEntityType$)??``,{resolvedTheme:O}=s();return g?(0,d.jsx)(c,{recentDocuments:v,searchDocuments:w,entityTypes:y,isLoadingRecent:x,recentError:b,onRetryRecent:g?.recent.retry,isSearching:T,...E?{searchMatchKind:E}:{},searchQuery:S,onSearchQueryChange:g?.search.setQuery,selectedEntityType:D,onSelectedEntityTypeChange:g?.setSelectedEntityType,theme:O,activePanel:_,onNavigateToResource:e=>p.push(`/know/resource/${encodeURIComponent(e)}`),onNavigateToCompose:()=>p.push(`/know/compose`),translations:{title:f(`title`),subtitle:f(`subtitle`),searchPlaceholder:f(`searchPlaceholder`),searchButton:f(`searchButton`),searching:f(`searching`),semanticFallbackNotice:f(`semanticFallbackNotice`),filterByEntityType:f(`filterByEntityType`),all:f(`all`),recentResources:f(`recentResources`),searchResults:e=>f(`searchResults`,{count:e}),documentsTaggedWith:e=>f(`documentsTaggedWith`,{entityType:e}),noResultsFound:e=>f(`noResultsFound`,{query:e}),noResourcesAvailable:f(`noResourcesAvailable`),composeFirstResource:f(`composeFirstResource`),archived:f(`archived`),created:f(`created`),loadingKnowledgeBase:f(`loadingKnowledgeBase`),recentFailed:f(`recentFailed`),retry:f(`retry`)},ToolbarPanels:l}):null}export{f as default};
2
- //# sourceMappingURL=page-C9pkWGVi.js.map
1
+ import{t as e}from"./i18n-CywLsdxn.js";import{t}from"./vendor-vK2W55bZ.js";import{$ as n,At as r,L as i,Q as a,Y as o,et as s,v as c}from"./index-cHWd4mGO.js";import{t as l}from"./ToolbarPanels-CbF3qEos.js";import{i as u}from"./routing-D-GkAfgE.js";var d=t();function f(){let{t}=e(),f=(e,n)=>t(`Discover.${e}`,n),p=u(),m=o(r().activeSession$)??void 0,h=n(),g=a(m,e=>i(e,h)),_=o(g?.browse.activePanel$)??null,v=o(g?.recent.value$)??[],y=o(g?.entityTypes.value$)??[],b=o(g?.recent.error$)??null,x=o(g?.recent.loading$)??!0,S=o(g?.search.query$)??``,C=o(g?.search.state$),w=C?.results??[],T=C?.isSearching??!1,E=C?.matchKind,D=o(g?.selectedEntityType$)??``,{resolvedTheme:O}=s();return g?(0,d.jsx)(c,{recentDocuments:v,searchDocuments:w,entityTypes:y,isLoadingRecent:x,recentError:b,onRetryRecent:g?.recent.retry,isSearching:T,...E?{searchMatchKind:E}:{},searchQuery:S,onSearchQueryChange:g?.search.setQuery,selectedEntityType:D,onSelectedEntityTypeChange:g?.setSelectedEntityType,theme:O,activePanel:_,onNavigateToResource:e=>p.push(`/know/resource/${encodeURIComponent(e)}`),onNavigateToCompose:()=>p.push(`/know/compose`),translations:{title:f(`title`),subtitle:f(`subtitle`),searchPlaceholder:f(`searchPlaceholder`),searchButton:f(`searchButton`),searching:f(`searching`),semanticFallbackNotice:f(`semanticFallbackNotice`),filterByEntityType:f(`filterByEntityType`),all:f(`all`),recentResources:f(`recentResources`),searchResults:e=>f(`searchResults`,{count:e}),documentsTaggedWith:e=>f(`documentsTaggedWith`,{entityType:e}),noResultsFound:e=>f(`noResultsFound`,{query:e}),noResourcesAvailable:f(`noResourcesAvailable`),composeFirstResource:f(`composeFirstResource`),archived:f(`archived`),created:f(`created`),loadingKnowledgeBase:f(`loadingKnowledgeBase`),recentFailed:f(`recentFailed`),retry:f(`retry`)},ToolbarPanels:l}):null}export{f as default};
2
+ //# sourceMappingURL=page-BhPjX09z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-C9pkWGVi.js","names":[],"sources":["../../src/app/[locale]/know/discover/page.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\nimport {\n useTheme,\n useObservable,\n useSemiont,\n useSessionStateUnit,\n ResourceDiscoveryPage,\n} from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useShellStateUnit } from '@semiont/react-ui';\nimport { createDiscoverStateUnit } from '@semiont/react-ui';\nexport default function DiscoverPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Discover.${k}`, p as any) as string;\n const router = useRouter();\n const session = useObservable(useSemiont().activeSession$) ?? undefined;\n\n const browseStateUnit = useShellStateUnit();\n const stateUnit = useSessionStateUnit(session, (s) => createDiscoverStateUnit(s, browseStateUnit));\n\n const activePanel = useObservable(stateUnit?.browse.activePanel$) ?? null;\n const recentDocuments = useObservable(stateUnit?.recent.value$) ?? [];\n const entityTypes = useObservable(stateUnit?.entityTypes.value$) ?? [];\n // Three states: a terminally failed list has no value either, so deriving\n // \"loading\" from `undefined` left this route spinning for ever.\n // See .plans/PANEL-FAILURE-STATES.md\n const recentError = useObservable(stateUnit?.recent.error$) ?? null;\n const isLoadingRecent = useObservable(stateUnit?.recent.loading$) ?? true;\n const searchQuery = useObservable(stateUnit?.search.query$) ?? '';\n const searchState = useObservable(stateUnit?.search.state$);\n const searchDocuments = searchState?.results ?? [];\n const isSearching = searchState?.isSearching ?? false;\n // Read off the SAME value as the results, never a sibling observable (S10).\n const searchMatchKind = searchState?.matchKind;\n const selectedEntityType = useObservable(stateUnit?.selectedEntityType$) ?? '';\n\n const { resolvedTheme } = useTheme();\n\n if (!stateUnit) return null;\n\n return (\n <ResourceDiscoveryPage\n recentDocuments={recentDocuments}\n searchDocuments={searchDocuments}\n entityTypes={entityTypes}\n isLoadingRecent={isLoadingRecent}\n recentError={recentError}\n onRetryRecent={stateUnit?.recent.retry}\n isSearching={isSearching}\n {...(searchMatchKind ? { searchMatchKind } : {})}\n searchQuery={searchQuery}\n onSearchQueryChange={stateUnit?.search.setQuery}\n selectedEntityType={selectedEntityType}\n onSelectedEntityTypeChange={stateUnit?.setSelectedEntityType}\n theme={resolvedTheme}\n activePanel={activePanel}\n onNavigateToResource={(resourceId) => router.push(`/know/resource/${encodeURIComponent(resourceId)}`)}\n onNavigateToCompose={() => router.push('/know/compose')}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n searchPlaceholder: t('searchPlaceholder'),\n searchButton: t('searchButton'),\n searching: t('searching'),\n semanticFallbackNotice: t('semanticFallbackNotice'),\n filterByEntityType: t('filterByEntityType'),\n all: t('all'),\n recentResources: t('recentResources'),\n searchResults: (count: number) => t('searchResults', { count }),\n documentsTaggedWith: (entityType: string) => t('documentsTaggedWith', { entityType }),\n noResultsFound: (query: string) => t('noResultsFound', { query }),\n noResourcesAvailable: t('noResourcesAvailable'),\n composeFirstResource: t('composeFirstResource'),\n archived: t('archived'),\n created: t('created'),\n loadingKnowledgeBase: t('loadingKnowledgeBase'),\n recentFailed: t('recentFailed'),\n retry: t('retry'),\n }}\n ToolbarPanels={ToolbarPanels}\n />\n );\n}\n"],"mappings":"mQAcA,SAAwB,GAAe,CACrC,GAAM,CAAK,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,YAAY,IAAK,CAAQ,EAC5E,EAAS,EAAU,EACnB,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,GAAK,IAAA,GAExD,EAAkB,EAAkB,EACpC,EAAY,EAAoB,EAAU,GAAM,EAAwB,EAAG,CAAe,CAAC,EAE3F,EAAc,EAAc,GAAW,OAAO,YAAY,GAAK,KAC/D,EAAkB,EAAc,GAAW,OAAO,MAAM,GAAK,CAAC,EAC9D,EAAc,EAAc,GAAW,YAAY,MAAM,GAAK,CAAC,EAI/D,EAAc,EAAc,GAAW,OAAO,MAAM,GAAK,KACzD,EAAkB,EAAc,GAAW,OAAO,QAAQ,GAAK,GAC/D,EAAc,EAAc,GAAW,OAAO,MAAM,GAAK,GACzD,EAAc,EAAc,GAAW,OAAO,MAAM,EACpD,EAAkB,GAAa,SAAW,CAAC,EAC3C,EAAc,GAAa,aAAe,GAE1C,EAAkB,GAAa,UAC/B,EAAqB,EAAc,GAAW,mBAAmB,GAAK,GAEtE,CAAE,iBAAkB,EAAS,EAInC,OAFK,GAGH,EAAA,EAAA,IAAA,CAAC,EAAD,CACmB,kBACA,kBACJ,cACI,kBACJ,cACb,cAAe,GAAW,OAAO,MACpB,cACb,GAAK,EAAkB,CAAE,iBAAgB,EAAI,CAAC,EACjC,cACb,oBAAqB,GAAW,OAAO,SACnB,qBACpB,2BAA4B,GAAW,sBACvC,MAAO,EACM,cACb,qBAAuB,GAAe,EAAO,KAAK,kBAAkB,mBAAmB,CAAU,GAAG,EACpG,wBAA2B,EAAO,KAAK,eAAe,EACtD,aAAc,CACZ,MAAO,EAAE,OAAO,EAChB,SAAU,EAAE,UAAU,EACtB,kBAAmB,EAAE,mBAAmB,EACxC,aAAc,EAAE,cAAc,EAC9B,UAAW,EAAE,WAAW,EACxB,uBAAwB,EAAE,wBAAwB,EAClD,mBAAoB,EAAE,oBAAoB,EAC1C,IAAK,EAAE,KAAK,EACZ,gBAAiB,EAAE,iBAAiB,EACpC,cAAgB,GAAkB,EAAE,gBAAiB,CAAE,OAAM,CAAC,EAC9D,oBAAsB,GAAuB,EAAE,sBAAuB,CAAE,YAAW,CAAC,EACpF,eAAiB,GAAkB,EAAE,iBAAkB,CAAE,OAAM,CAAC,EAChE,qBAAsB,EAAE,sBAAsB,EAC9C,qBAAsB,EAAE,sBAAsB,EAC9C,SAAU,EAAE,UAAU,EACtB,QAAS,EAAE,SAAS,EACpB,qBAAsB,EAAE,sBAAsB,EAC9C,aAAc,EAAE,cAAc,EAC9B,MAAO,EAAE,OAAO,CAClB,EACe,eAChB,CAAA,EA1CoB,IA4CzB"}
1
+ {"version":3,"file":"page-BhPjX09z.js","names":[],"sources":["../../src/app/[locale]/know/discover/page.tsx"],"sourcesContent":["\"use client\";\n\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\nimport {\n useTheme,\n useObservable,\n useSemiont,\n useSessionStateUnit,\n ResourceDiscoveryPage,\n} from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useShellStateUnit } from '@semiont/react-ui';\nimport { createDiscoverStateUnit } from '@semiont/react-ui';\nexport default function DiscoverPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Discover.${k}`, p as any) as string;\n const router = useRouter();\n const session = useObservable(useSemiont().activeSession$) ?? undefined;\n\n const browseStateUnit = useShellStateUnit();\n const stateUnit = useSessionStateUnit(session, (s) => createDiscoverStateUnit(s, browseStateUnit));\n\n const activePanel = useObservable(stateUnit?.browse.activePanel$) ?? null;\n const recentDocuments = useObservable(stateUnit?.recent.value$) ?? [];\n const entityTypes = useObservable(stateUnit?.entityTypes.value$) ?? [];\n // Three states: a terminally failed list has no value either, so deriving\n // \"loading\" from `undefined` left this route spinning for ever.\n // See .plans/PANEL-FAILURE-STATES.md\n const recentError = useObservable(stateUnit?.recent.error$) ?? null;\n const isLoadingRecent = useObservable(stateUnit?.recent.loading$) ?? true;\n const searchQuery = useObservable(stateUnit?.search.query$) ?? '';\n const searchState = useObservable(stateUnit?.search.state$);\n const searchDocuments = searchState?.results ?? [];\n const isSearching = searchState?.isSearching ?? false;\n // Read off the SAME value as the results, never a sibling observable (S10).\n const searchMatchKind = searchState?.matchKind;\n const selectedEntityType = useObservable(stateUnit?.selectedEntityType$) ?? '';\n\n const { resolvedTheme } = useTheme();\n\n if (!stateUnit) return null;\n\n return (\n <ResourceDiscoveryPage\n recentDocuments={recentDocuments}\n searchDocuments={searchDocuments}\n entityTypes={entityTypes}\n isLoadingRecent={isLoadingRecent}\n recentError={recentError}\n onRetryRecent={stateUnit?.recent.retry}\n isSearching={isSearching}\n {...(searchMatchKind ? { searchMatchKind } : {})}\n searchQuery={searchQuery}\n onSearchQueryChange={stateUnit?.search.setQuery}\n selectedEntityType={selectedEntityType}\n onSelectedEntityTypeChange={stateUnit?.setSelectedEntityType}\n theme={resolvedTheme}\n activePanel={activePanel}\n onNavigateToResource={(resourceId) => router.push(`/know/resource/${encodeURIComponent(resourceId)}`)}\n onNavigateToCompose={() => router.push('/know/compose')}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n searchPlaceholder: t('searchPlaceholder'),\n searchButton: t('searchButton'),\n searching: t('searching'),\n semanticFallbackNotice: t('semanticFallbackNotice'),\n filterByEntityType: t('filterByEntityType'),\n all: t('all'),\n recentResources: t('recentResources'),\n searchResults: (count: number) => t('searchResults', { count }),\n documentsTaggedWith: (entityType: string) => t('documentsTaggedWith', { entityType }),\n noResultsFound: (query: string) => t('noResultsFound', { query }),\n noResourcesAvailable: t('noResourcesAvailable'),\n composeFirstResource: t('composeFirstResource'),\n archived: t('archived'),\n created: t('created'),\n loadingKnowledgeBase: t('loadingKnowledgeBase'),\n recentFailed: t('recentFailed'),\n retry: t('retry'),\n }}\n ToolbarPanels={ToolbarPanels}\n />\n );\n}\n"],"mappings":"mQAcA,SAAwB,GAAe,CACrC,GAAM,CAAK,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,YAAY,IAAK,CAAQ,EAC5E,EAAS,EAAU,EACnB,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,GAAK,IAAA,GAExD,EAAkB,EAAkB,EACpC,EAAY,EAAoB,EAAU,GAAM,EAAwB,EAAG,CAAe,CAAC,EAE3F,EAAc,EAAc,GAAW,OAAO,YAAY,GAAK,KAC/D,EAAkB,EAAc,GAAW,OAAO,MAAM,GAAK,CAAC,EAC9D,EAAc,EAAc,GAAW,YAAY,MAAM,GAAK,CAAC,EAI/D,EAAc,EAAc,GAAW,OAAO,MAAM,GAAK,KACzD,EAAkB,EAAc,GAAW,OAAO,QAAQ,GAAK,GAC/D,EAAc,EAAc,GAAW,OAAO,MAAM,GAAK,GACzD,EAAc,EAAc,GAAW,OAAO,MAAM,EACpD,EAAkB,GAAa,SAAW,CAAC,EAC3C,EAAc,GAAa,aAAe,GAE1C,EAAkB,GAAa,UAC/B,EAAqB,EAAc,GAAW,mBAAmB,GAAK,GAEtE,CAAE,iBAAkB,EAAS,EAInC,OAFK,GAGH,EAAA,EAAA,IAAA,CAAC,EAAD,CACmB,kBACA,kBACJ,cACI,kBACJ,cACb,cAAe,GAAW,OAAO,MACpB,cACb,GAAK,EAAkB,CAAE,iBAAgB,EAAI,CAAC,EACjC,cACb,oBAAqB,GAAW,OAAO,SACnB,qBACpB,2BAA4B,GAAW,sBACvC,MAAO,EACM,cACb,qBAAuB,GAAe,EAAO,KAAK,kBAAkB,mBAAmB,CAAU,GAAG,EACpG,wBAA2B,EAAO,KAAK,eAAe,EACtD,aAAc,CACZ,MAAO,EAAE,OAAO,EAChB,SAAU,EAAE,UAAU,EACtB,kBAAmB,EAAE,mBAAmB,EACxC,aAAc,EAAE,cAAc,EAC9B,UAAW,EAAE,WAAW,EACxB,uBAAwB,EAAE,wBAAwB,EAClD,mBAAoB,EAAE,oBAAoB,EAC1C,IAAK,EAAE,KAAK,EACZ,gBAAiB,EAAE,iBAAiB,EACpC,cAAgB,GAAkB,EAAE,gBAAiB,CAAE,OAAM,CAAC,EAC9D,oBAAsB,GAAuB,EAAE,sBAAuB,CAAE,YAAW,CAAC,EACpF,eAAiB,GAAkB,EAAE,iBAAkB,CAAE,OAAM,CAAC,EAChE,qBAAsB,EAAE,sBAAsB,EAC9C,qBAAsB,EAAE,sBAAsB,EAC9C,SAAU,EAAE,UAAU,EACtB,QAAS,EAAE,SAAS,EACpB,qBAAsB,EAAE,sBAAsB,EAC9C,aAAc,EAAE,cAAc,EAC9B,MAAO,EAAE,OAAO,CAClB,EACe,eAChB,CAAA,EA1CoB,IA4CzB"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t}from"./i18n-zIDJOEfo.js";import{i as n}from"./routing-Cj_EvhT3.js";var r=e(t());function i(){let e=n();return(0,r.useEffect)(()=>{e.replace(`/know/discover`)},[e]),null}export{i as default};
2
- //# sourceMappingURL=page-CO9mlfK-.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t}from"./i18n-CywLsdxn.js";import{i as n}from"./routing-D-GkAfgE.js";var r=e(t());function i(){let e=n();return(0,r.useEffect)(()=>{e.replace(`/know/discover`)},[e]),null}export{i as default};
2
+ //# sourceMappingURL=page-Bk2UhTqA.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-CO9mlfK-.js","names":[],"sources":["../../src/app/[locale]/auth/connect/page.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useRouter } from '@/i18n/routing';\n\n/**\n * Legacy connect page — redirects to /know/discover.\n * Authentication is now handled inline in the Knowledge Base Panel.\n */\nexport default function ConnectPage() {\n const router = useRouter();\n\n useEffect(() => {\n router.replace('/know/discover');\n }, [router]);\n\n return null;\n}\n"],"mappings":"iJAOA,SAAwB,GAAc,CACpC,IAAM,EAAS,EAAU,EAMzB,OAJA,EAAA,EAAA,UAAA,KAAgB,CACd,EAAO,QAAQ,gBAAgB,CACjC,EAAG,CAAC,CAAM,CAAC,EAEJ,IACT"}
1
+ {"version":3,"file":"page-Bk2UhTqA.js","names":[],"sources":["../../src/app/[locale]/auth/connect/page.tsx"],"sourcesContent":["import { useEffect } from 'react';\nimport { useRouter } from '@/i18n/routing';\n\n/**\n * Legacy connect page — redirects to /know/discover.\n * Authentication is now handled inline in the Knowledge Base Panel.\n */\nexport default function ConnectPage() {\n const router = useRouter();\n\n useEffect(() => {\n router.replace('/know/discover');\n }, [router]);\n\n return null;\n}\n"],"mappings":"iJAOA,SAAwB,GAAc,CACpC,IAAM,EAAS,EAAU,EAMzB,OAJA,EAAA,EAAA,UAAA,KAAgB,CACd,EAAO,QAAQ,gBAAgB,CACjC,EAAG,CAAC,CAAM,CAAC,EAEJ,IACT"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{$ as i,At as a,Ft as o,Y as s,et as c,j as l,k as u}from"./index-DikwAWOa.js";import{t as d}from"./ToolbarPanels-COwH5BrV.js";var f=e(t()),p=r();function m(){let{t:e}=n(),t=(t,n)=>e(`ModerateTagSchemas.${t}`,n),r=i(),m=s(r.activePanel$)??null,{theme:h}=c(),g=s(a().activeSession$),_=(0,f.useMemo)(()=>g?.client.browse.tagSchemas()??null,[g]),v=s(_),y=v&&o(v)?v.value:[],b=v===void 0||v.status===`pending`;return(0,p.jsx)(u,{schemas:y,isLoading:b,theme:h,activePanel:m,translations:{pageTitle:t(`pageTitle`),pageDescription:t(`pageDescription`),categories:t(`categories`),loading:t(`loading`)},ToolbarPanels:d,Toolbar:l})}export{m as default};
2
- //# sourceMappingURL=page-BYW9mwEo.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{$ as i,At as a,Ft as o,Y as s,et as c,j as l,k as u}from"./index-cHWd4mGO.js";import{t as d}from"./ToolbarPanels-CbF3qEos.js";var f=e(t()),p=r();function m(){let{t:e}=n(),t=(t,n)=>e(`ModerateTagSchemas.${t}`,n),r=i(),m=s(r.activePanel$)??null,{theme:h}=c(),g=s(a().activeSession$),_=(0,f.useMemo)(()=>g?.client.browse.tagSchemas()??null,[g]),v=s(_),y=v&&o(v)?v.value:[],b=v===void 0||v.status===`pending`;return(0,p.jsx)(u,{schemas:y,isLoading:b,theme:h,activePanel:m,translations:{pageTitle:t(`pageTitle`),pageDescription:t(`pageDescription`),categories:t(`categories`),loading:t(`loading`)},ToolbarPanels:d,Toolbar:l})}export{m as default};
2
+ //# sourceMappingURL=page-CJnENX8F.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-BYW9mwEo.js","names":[],"sources":["../../src/app/[locale]/moderate/tag-schemas/page.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { isReady } from '@semiont/sdk';\nimport { useTranslation } from 'react-i18next';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, useShellStateUnit, useObservable, useSemiont } from '@semiont/react-ui';\nimport { TagSchemasPage } from '@semiont/react-ui';\n\n// Authentication is handled by middleware (proxy.ts)\n// Only authenticated moderators/admins can reach this page\n\nexport default function TagSchemasPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateTagSchemas.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const browseStateUnit = useShellStateUnit();\n const activePanel = useObservable(browseStateUnit.activePanel$) ?? null;\n const { theme } = useTheme();\n\n\n\n // Subscribe to the per-KB tag-schema registry. Schemas are runtime-\n // registered by the KB at session start (frame.addTagSchema). The\n // observable yields `undefined` during the initial fetch — surfaced as\n // `isLoading` to the page component.\n const session = useObservable(useSemiont().activeSession$);\n const tagSchemas$ = useMemo(\n () => session?.client.browse.tagSchemas() ?? null,\n [session],\n );\n const schemasObserved = useObservable(tagSchemas$);\n // D1 unwrap: the third outcome is explicit — a failed registry read shows\n // as not-loading with an empty list here (failure UI is follow-up work).\n const schemas = schemasObserved && isReady(schemasObserved) ? schemasObserved.value : [];\n const isLoading = schemasObserved === undefined || schemasObserved.status === 'pending';\n\n return (\n <TagSchemasPage\n schemas={schemas}\n isLoading={isLoading}\n theme={theme}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n categories: t('categories'),\n loading: t('loading'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"mappings":"kSAWA,SAAwB,GAAwB,CAC9C,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,sBAAsB,IAAK,CAAQ,EAGtF,EAAkB,EAAkB,EACpC,EAAc,EAAc,EAAgB,YAAY,GAAK,KAC7D,CAAE,SAAU,EAAS,EAQrB,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,EACnD,GAAA,EAAc,EAAA,QAAA,KACZ,GAAS,OAAO,OAAO,WAAW,GAAK,KAC7C,CAAC,CAAO,CACV,EACM,EAAkB,EAAc,CAAW,EAG3C,EAAU,GAAmB,EAAQ,CAAe,EAAI,EAAgB,MAAQ,CAAC,EACjF,EAAY,IAAoB,IAAA,IAAa,EAAgB,SAAW,UAE9E,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACW,UACE,YACJ,QACM,cACb,aAAc,CACZ,UAAW,EAAE,WAAW,EACxB,gBAAiB,EAAE,iBAAiB,EACpC,WAAY,EAAE,YAAY,EAC1B,QAAS,EAAE,SAAS,CACtB,EACe,gBACN,SACV,CAAA,CAEL"}
1
+ {"version":3,"file":"page-CJnENX8F.js","names":[],"sources":["../../src/app/[locale]/moderate/tag-schemas/page.tsx"],"sourcesContent":["import { useMemo } from 'react';\nimport { isReady } from '@semiont/sdk';\nimport { useTranslation } from 'react-i18next';\nimport { Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, useShellStateUnit, useObservable, useSemiont } from '@semiont/react-ui';\nimport { TagSchemasPage } from '@semiont/react-ui';\n\n// Authentication is handled by middleware (proxy.ts)\n// Only authenticated moderators/admins can reach this page\n\nexport default function TagSchemasPageWrapper() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`ModerateTagSchemas.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const browseStateUnit = useShellStateUnit();\n const activePanel = useObservable(browseStateUnit.activePanel$) ?? null;\n const { theme } = useTheme();\n\n\n\n // Subscribe to the per-KB tag-schema registry. Schemas are runtime-\n // registered by the KB at session start (frame.addTagSchema). The\n // observable yields `undefined` during the initial fetch — surfaced as\n // `isLoading` to the page component.\n const session = useObservable(useSemiont().activeSession$);\n const tagSchemas$ = useMemo(\n () => session?.client.browse.tagSchemas() ?? null,\n [session],\n );\n const schemasObserved = useObservable(tagSchemas$);\n // D1 unwrap: the third outcome is explicit — a failed registry read shows\n // as not-loading with an empty list here (failure UI is follow-up work).\n const schemas = schemasObserved && isReady(schemasObserved) ? schemasObserved.value : [];\n const isLoading = schemasObserved === undefined || schemasObserved.status === 'pending';\n\n return (\n <TagSchemasPage\n schemas={schemas}\n isLoading={isLoading}\n theme={theme}\n activePanel={activePanel}\n translations={{\n pageTitle: t('pageTitle'),\n pageDescription: t('pageDescription'),\n categories: t('categories'),\n loading: t('loading'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"mappings":"kSAWA,SAAwB,GAAwB,CAC9C,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,sBAAsB,IAAK,CAAQ,EAGtF,EAAkB,EAAkB,EACpC,EAAc,EAAc,EAAgB,YAAY,GAAK,KAC7D,CAAE,SAAU,EAAS,EAQrB,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,EACnD,GAAA,EAAc,EAAA,QAAA,KACZ,GAAS,OAAO,OAAO,WAAW,GAAK,KAC7C,CAAC,CAAO,CACV,EACM,EAAkB,EAAc,CAAW,EAG3C,EAAU,GAAmB,EAAQ,CAAe,EAAI,EAAgB,MAAQ,CAAC,EACjF,EAAY,IAAoB,IAAA,IAAa,EAAgB,SAAW,UAE9E,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACW,UACE,YACJ,QACM,cACb,aAAc,CACZ,UAAW,EAAE,WAAW,EACxB,gBAAiB,EAAE,iBAAiB,EACpC,WAAY,EAAE,YAAY,EAC1B,QAAS,EAAE,SAAS,CACtB,EACe,gBACN,SACV,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{At as i,Y as a}from"./index-DikwAWOa.js";import{i as o}from"./routing-Cj_EvhT3.js";var s=e(t()),c=r();function l(){let{t:e}=n(),t=(t,n)=>e(`Sidebar.${t}`,n),r=o(),l=i(),u=a(l.activeSession$)??null,d=a(l.sessionActivating$)??!1,f=a(l.lastViewedResource$)??null,p=u!==null||!d,m=(0,s.useRef)(!1);return(0,s.useEffect)(()=>{!p||m.current||(m.current=!0,r.replace(f?`/know/resource/${encodeURIComponent(f)}`:`/know/discover`))},[p,f,r]),(0,c.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,c.jsx)(`p`,{className:`text-gray-600 dark:text-gray-300`,children:t(p?`redirecting`:`loading`)})})}export{l as default};
2
- //# sourceMappingURL=page-Ce6fw6P9.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{At as i,Y as a}from"./index-cHWd4mGO.js";import{i as o}from"./routing-D-GkAfgE.js";var s=e(t()),c=r();function l(){let{t:e}=n(),t=(t,n)=>e(`Sidebar.${t}`,n),r=o(),l=i(),u=a(l.activeSession$)??null,d=a(l.sessionActivating$)??!1,f=a(l.lastViewedResource$)??null,p=u!==null||!d,m=(0,s.useRef)(!1);return(0,s.useEffect)(()=>{!p||m.current||(m.current=!0,r.replace(f?`/know/resource/${encodeURIComponent(f)}`:`/know/discover`))},[p,f,r]),(0,c.jsx)(`div`,{className:`flex items-center justify-center py-20`,children:(0,c.jsx)(`p`,{className:`text-gray-600 dark:text-gray-300`,children:t(p?`redirecting`:`loading`)})})}export{l as default};
2
+ //# sourceMappingURL=page-Ct7GNMjQ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-Ce6fw6P9.js","names":[],"sources":["../../src/app/[locale]/know/page.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { useSemiont, useObservable } from '@semiont/react-ui';\n\n/**\n * The /know landing route: resume where the user left off in the ACTIVE\n * knowledge base, or send them to discover.\n *\n * \"Where was I\" is per-KB state, read from `lastViewedResource$` — a\n * projection of the active, connected KB. A global record would redirect\n * into the PREVIOUSLY active KB's resource after a switch: an id the new\n * gateway has never heard of, so a guaranteed 404.\n * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n */\nexport default function KnowledgePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Sidebar.${k}`, p as any) as string;\n const router = useRouter();\n const semiont = useSemiont();\n\n const session = useObservable(semiont.activeSession$) ?? null;\n const activating = useObservable(semiont.sessionActivating$) ?? false;\n const lastViewed = useObservable(semiont.lastViewedResource$) ?? null;\n\n // The projection only carries an answer once a session exists, so a\n // redirect decided during activation would send every cold load to\n // discover no matter where the user actually was. Wait for a session, or\n // for activation to conclude without one (nothing connected → discover).\n const resolved = session !== null || !activating;\n\n const redirected = useRef(false);\n useEffect(() => {\n if (!resolved || redirected.current) return;\n redirected.current = true;\n router.replace(\n lastViewed ? `/know/resource/${encodeURIComponent(lastViewed)}` : '/know/discover',\n );\n }, [resolved, lastViewed, router]);\n\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t(resolved ? 'redirecting' : 'loading')}</p>\n </div>\n );\n}\n"],"mappings":"uPAeA,SAAwB,GAAgB,CACtC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,WAAW,IAAK,CAAQ,EAC3E,EAAS,EAAU,EACnB,EAAU,EAAW,EAErB,EAAU,EAAc,EAAQ,cAAc,GAAK,KACnD,EAAa,EAAc,EAAQ,kBAAkB,GAAK,GAC1D,EAAa,EAAc,EAAQ,mBAAmB,GAAK,KAM3D,EAAW,IAAY,MAAQ,CAAC,EAEhC,GAAA,EAAa,EAAA,OAAA,CAAO,EAAK,EAS/B,OARA,EAAA,EAAA,UAAA,KAAgB,CACV,CAAC,GAAY,EAAW,UAC5B,EAAW,QAAU,GACrB,EAAO,QACL,EAAa,kBAAkB,mBAAmB,CAAU,IAAM,gBACpE,EACF,EAAG,CAAC,EAAU,EAAY,CAAM,CAAC,GAG/B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,yCACb,UAAA,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAE,EAAW,cAAgB,SAAS,CAAK,CAAA,CACzF,CAAA,CAET"}
1
+ {"version":3,"file":"page-Ct7GNMjQ.js","names":[],"sources":["../../src/app/[locale]/know/page.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { useSemiont, useObservable } from '@semiont/react-ui';\n\n/**\n * The /know landing route: resume where the user left off in the ACTIVE\n * knowledge base, or send them to discover.\n *\n * \"Where was I\" is per-KB state, read from `lastViewedResource$` — a\n * projection of the active, connected KB. A global record would redirect\n * into the PREVIOUSLY active KB's resource after a switch: an id the new\n * gateway has never heard of, so a guaranteed 404.\n * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n */\nexport default function KnowledgePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Sidebar.${k}`, p as any) as string;\n const router = useRouter();\n const semiont = useSemiont();\n\n const session = useObservable(semiont.activeSession$) ?? null;\n const activating = useObservable(semiont.sessionActivating$) ?? false;\n const lastViewed = useObservable(semiont.lastViewedResource$) ?? null;\n\n // The projection only carries an answer once a session exists, so a\n // redirect decided during activation would send every cold load to\n // discover no matter where the user actually was. Wait for a session, or\n // for activation to conclude without one (nothing connected → discover).\n const resolved = session !== null || !activating;\n\n const redirected = useRef(false);\n useEffect(() => {\n if (!resolved || redirected.current) return;\n redirected.current = true;\n router.replace(\n lastViewed ? `/know/resource/${encodeURIComponent(lastViewed)}` : '/know/discover',\n );\n }, [resolved, lastViewed, router]);\n\n return (\n <div className=\"flex items-center justify-center py-20\">\n <p className=\"text-gray-600 dark:text-gray-300\">{t(resolved ? 'redirecting' : 'loading')}</p>\n </div>\n );\n}\n"],"mappings":"uPAeA,SAAwB,GAAgB,CACtC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,WAAW,IAAK,CAAQ,EAC3E,EAAS,EAAU,EACnB,EAAU,EAAW,EAErB,EAAU,EAAc,EAAQ,cAAc,GAAK,KACnD,EAAa,EAAc,EAAQ,kBAAkB,GAAK,GAC1D,EAAa,EAAc,EAAQ,mBAAmB,GAAK,KAM3D,EAAW,IAAY,MAAQ,CAAC,EAEhC,GAAA,EAAa,EAAA,OAAA,CAAO,EAAK,EAS/B,OARA,EAAA,EAAA,UAAA,KAAgB,CACV,CAAC,GAAY,EAAW,UAC5B,EAAW,QAAU,GACrB,EAAO,QACL,EAAa,kBAAkB,mBAAmB,CAAU,IAAM,gBACpE,EACF,EAAG,CAAC,EAAU,EAAY,CAAM,CAAC,GAG/B,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,yCACb,UAAA,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,mCAAoC,SAAA,EAAE,EAAW,cAAgB,SAAS,CAAK,CAAA,CACzF,CAAA,CAET"}
@@ -1,5 +1,5 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{p as i}from"./index-DikwAWOa.js";import{t as a}from"./KeyboardShortcutsContext-CBFjGYDr.js";import{t as o}from"./CookiePreferences-DHgkny7X.js";import{n as s,t as c}from"./routing-Cj_EvhT3.js";import{n as l,t as u}from"./routing-NHl4gs1C.js";var d=e(t()),f=r();function p(){let{t:e}=n(),t=(t,n)=>e(`Terms.${t}`,n),{t:r}=n(),p=(e,t)=>r(`Footer.${e}`,t),{t:m}=n(),h=(e,t)=>m(`Navigation.${e}`,t),{t:g}=n(),_=(e,t)=>g(`Home.${e}`,t),v=s(),y=(0,d.useContext)(a);return(0,f.jsx)(i,{Link:u,routes:l,t:p,tNav:h,tHome:_,CookiePreferences:o,...y?.openKeyboardHelp&&{onOpenKeyboardHelp:y.openKeyboardHelp},className:`semiont-static-page`,children:(0,f.jsx)(`div`,{className:`semiont-static-container`,children:(0,f.jsxs)(`div`,{className:`semiont-static-content`,children:[(0,f.jsxs)(`header`,{className:`semiont-static-header`,children:[(0,f.jsx)(`h1`,{className:`semiont-static-title`,children:t(`pageTitle`)}),(0,f.jsx)(`p`,{className:`semiont-static-subtitle`,children:t(`pageSubtitle`)})]}),(0,f.jsxs)(`article`,{className:`semiont-static-article`,children:[(0,f.jsx)(`h2`,{children:t(`aupTitle`)}),(0,f.jsx)(`p`,{children:t(`aup`)}),(0,f.jsx)(`h3`,{children:t(`prohibitedTitle`)}),(0,f.jsx)(`p`,{children:t(`prohibitedIntro`)}),(0,f.jsx)(`ul`,{children:t(`prohibited`).split(`
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{p as i}from"./index-cHWd4mGO.js";import{t as a}from"./KeyboardShortcutsContext-CSFk3vP6.js";import{t as o}from"./CookiePreferences-CWZIFYNC.js";import{n as s,t as c}from"./routing-D-GkAfgE.js";import{n as l,t as u}from"./routing-D5d0e59H.js";var d=e(t()),f=r();function p(){let{t:e}=n(),t=(t,n)=>e(`Terms.${t}`,n),{t:r}=n(),p=(e,t)=>r(`Footer.${e}`,t),{t:m}=n(),h=(e,t)=>m(`Navigation.${e}`,t),{t:g}=n(),_=(e,t)=>g(`Home.${e}`,t),v=s(),y=(0,d.useContext)(a);return(0,f.jsx)(i,{Link:u,routes:l,t:p,tNav:h,tHome:_,CookiePreferences:o,...y?.openKeyboardHelp&&{onOpenKeyboardHelp:y.openKeyboardHelp},className:`semiont-static-page`,children:(0,f.jsx)(`div`,{className:`semiont-static-container`,children:(0,f.jsxs)(`div`,{className:`semiont-static-content`,children:[(0,f.jsxs)(`header`,{className:`semiont-static-header`,children:[(0,f.jsx)(`h1`,{className:`semiont-static-title`,children:t(`pageTitle`)}),(0,f.jsx)(`p`,{className:`semiont-static-subtitle`,children:t(`pageSubtitle`)})]}),(0,f.jsxs)(`article`,{className:`semiont-static-article`,children:[(0,f.jsx)(`h2`,{children:t(`aupTitle`)}),(0,f.jsx)(`p`,{children:t(`aup`)}),(0,f.jsx)(`h3`,{children:t(`prohibitedTitle`)}),(0,f.jsx)(`p`,{children:t(`prohibitedIntro`)}),(0,f.jsx)(`ul`,{children:t(`prohibited`).split(`
2
2
  `).map((e,t)=>(0,f.jsx)(`li`,{children:e},t))}),(0,f.jsx)(`h3`,{children:t(`aiAllianceTitle`)}),(0,f.jsxs)(`p`,{children:[t(`aiAllianceIntro`),` `,(0,f.jsx)(`a`,{href:`https://ai-alliance.cdn.prismic.io/ai-alliance/Zl-MG5m069VX1dgH_AIAllianceCodeofConduct.pdf`,target:`_blank`,rel:`noopener noreferrer`,className:`semiont-static-link`,children:t(`aiAllianceLink`)}),t(`aiAllianceIncludes`)]}),(0,f.jsx)(`ul`,{children:t(`aiAlliance`).split(`
3
3
  `).map((e,t)=>(0,f.jsx)(`li`,{children:e},t))}),(0,f.jsx)(`h3`,{children:t(`responsibilitiesTitle`)}),(0,f.jsx)(`p`,{children:t(`responsibilitiesIntro`)}),(0,f.jsx)(`ul`,{children:t(`responsibilities`).split(`
4
4
  `).map((e,t)=>(0,f.jsx)(`li`,{children:e},t))}),(0,f.jsx)(`h3`,{children:t(`moderationTitle`)}),(0,f.jsx)(`p`,{children:t(`moderation`)}),(0,f.jsx)(`h3`,{children:t(`privacyTitle`)}),(0,f.jsxs)(`p`,{children:[t(`privacy`).split(t(`privacyLink`))[0],(0,f.jsx)(c,{to:`/${v}/privacy`,className:`semiont-static-link`,children:t(`privacyLink`)}),t(`privacy`).split(t(`privacyLink`))[1]]}),(0,f.jsx)(`h3`,{children:t(`ipTitle`)}),(0,f.jsx)(`p`,{children:t(`ip`)}),(0,f.jsx)(`h3`,{children:t(`liabilityTitle`)}),(0,f.jsx)(`p`,{children:t(`liability`)}),(0,f.jsx)(`h3`,{children:t(`changesTitle`)}),(0,f.jsx)(`p`,{children:t(`changes`)}),(0,f.jsx)(`h3`,{children:t(`contactTitle`)}),(0,f.jsx)(`p`,{children:t(`contact`)}),(0,f.jsx)(`footer`,{className:`semiont-static-footer`,children:(0,f.jsx)(`p`,{children:t(`lastUpdated`,{date:new Date().toLocaleDateString()})})})]})]})})})}export{p as default};
5
- //# sourceMappingURL=page-FoKU0iob.js.map
5
+ //# sourceMappingURL=page-CywSuXyN.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-FoKU0iob.js","names":[],"sources":["../../src/app/[locale]/terms/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { Link } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { useLocale } from '@/i18n/routing';\nimport { PageLayout } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function TermsOfService() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Terms.${k}`, p as any) as string;\n const { t: _tFooter } = useTranslation();\n const tFooter = (k: string, p?: Record<string, unknown>) => _tFooter(`Footer.${k}`, p as any) as string;\n const { t: _tNav } = useTranslation();\n const tNav = (k: string, p?: Record<string, unknown>) => _tNav(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const locale = useLocale();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-static-page\"\n >\n <div className=\"semiont-static-container\">\n <div className=\"semiont-static-content\">\n <header className=\"semiont-static-header\">\n <h1 className=\"semiont-static-title\">\n {t('pageTitle')}\n </h1>\n <p className=\"semiont-static-subtitle\">\n {t('pageSubtitle')}\n </p>\n </header>\n\n <article className=\"semiont-static-article\">\n <h2>{t('aupTitle')}</h2>\n\n <p>\n {t('aup')}\n </p>\n\n <h3>{t('prohibitedTitle')}</h3>\n <p>{t('prohibitedIntro')}</p>\n <ul>\n {t('prohibited').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('aiAllianceTitle')}</h3>\n <p>\n {t('aiAllianceIntro')}{' '}\n <a\n href=\"https://ai-alliance.cdn.prismic.io/ai-alliance/Zl-MG5m069VX1dgH_AIAllianceCodeofConduct.pdf\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"semiont-static-link\"\n >\n {t('aiAllianceLink')}\n </a>\n {t('aiAllianceIncludes')}\n </p>\n <ul>\n {t('aiAlliance').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('responsibilitiesTitle')}</h3>\n <p>{t('responsibilitiesIntro')}</p>\n <ul>\n {t('responsibilities').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('moderationTitle')}</h3>\n <p>\n {t('moderation')}\n </p>\n\n <h3>{t('privacyTitle')}</h3>\n <p>\n {t('privacy').split(t('privacyLink'))[0]}\n <Link to={`/${locale}/privacy`} className=\"semiont-static-link\">\n {t('privacyLink')}\n </Link>\n {t('privacy').split(t('privacyLink'))[1]}\n </p>\n\n <h3>{t('ipTitle')}</h3>\n <p>\n {t('ip')}\n </p>\n\n <h3>{t('liabilityTitle')}</h3>\n <p>\n {t('liability')}\n </p>\n\n <h3>{t('changesTitle')}</h3>\n <p>\n {t('changes')}\n </p>\n\n <h3>{t('contactTitle')}</h3>\n <p>\n {t('contact')}\n </p>\n\n <footer className=\"semiont-static-footer\">\n <p>\n {t('lastUpdated', { date: new Date().toLocaleDateString() })}\n </p>\n </footer>\n </article>\n\n </div>\n </div>\n </PageLayout>\n );\n}"],"mappings":"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"}
1
+ {"version":3,"file":"page-CywSuXyN.js","names":[],"sources":["../../src/app/[locale]/terms/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { Link } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { useLocale } from '@/i18n/routing';\nimport { PageLayout } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function TermsOfService() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Terms.${k}`, p as any) as string;\n const { t: _tFooter } = useTranslation();\n const tFooter = (k: string, p?: Record<string, unknown>) => _tFooter(`Footer.${k}`, p as any) as string;\n const { t: _tNav } = useTranslation();\n const tNav = (k: string, p?: Record<string, unknown>) => _tNav(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const locale = useLocale();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-static-page\"\n >\n <div className=\"semiont-static-container\">\n <div className=\"semiont-static-content\">\n <header className=\"semiont-static-header\">\n <h1 className=\"semiont-static-title\">\n {t('pageTitle')}\n </h1>\n <p className=\"semiont-static-subtitle\">\n {t('pageSubtitle')}\n </p>\n </header>\n\n <article className=\"semiont-static-article\">\n <h2>{t('aupTitle')}</h2>\n\n <p>\n {t('aup')}\n </p>\n\n <h3>{t('prohibitedTitle')}</h3>\n <p>{t('prohibitedIntro')}</p>\n <ul>\n {t('prohibited').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('aiAllianceTitle')}</h3>\n <p>\n {t('aiAllianceIntro')}{' '}\n <a\n href=\"https://ai-alliance.cdn.prismic.io/ai-alliance/Zl-MG5m069VX1dgH_AIAllianceCodeofConduct.pdf\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"semiont-static-link\"\n >\n {t('aiAllianceLink')}\n </a>\n {t('aiAllianceIncludes')}\n </p>\n <ul>\n {t('aiAlliance').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('responsibilitiesTitle')}</h3>\n <p>{t('responsibilitiesIntro')}</p>\n <ul>\n {t('responsibilities').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('moderationTitle')}</h3>\n <p>\n {t('moderation')}\n </p>\n\n <h3>{t('privacyTitle')}</h3>\n <p>\n {t('privacy').split(t('privacyLink'))[0]}\n <Link to={`/${locale}/privacy`} className=\"semiont-static-link\">\n {t('privacyLink')}\n </Link>\n {t('privacy').split(t('privacyLink'))[1]}\n </p>\n\n <h3>{t('ipTitle')}</h3>\n <p>\n {t('ip')}\n </p>\n\n <h3>{t('liabilityTitle')}</h3>\n <p>\n {t('liability')}\n </p>\n\n <h3>{t('changesTitle')}</h3>\n <p>\n {t('changes')}\n </p>\n\n <h3>{t('contactTitle')}</h3>\n <p>\n {t('contact')}\n </p>\n\n <footer className=\"semiont-static-footer\">\n <p>\n {t('lastUpdated', { date: new Date().toLocaleDateString() })}\n </p>\n </footer>\n </article>\n\n </div>\n </div>\n </PageLayout>\n );\n}"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{$ as i,At as a,O as o,Y as s,et as c,j as l,t as u}from"./index-DikwAWOa.js";import{t as d}from"./ToolbarPanels-COwH5BrV.js";import{t as f}from"./CommandLineIcon-O8NfVSEq.js";var p=e(t());function m({title:e,titleId:t,...n},r){return p.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?p.createElement(`title`,{id:t},e):null,p.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z`}))}var h=p.forwardRef(m);function g({title:e,titleId:t,...n},r){return p.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?p.createElement(`title`,{id:t},e):null,p.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z`}))}var _=p.forwardRef(g),v=r();function y(){let e=s(a().activeSession$),t=!!s(e?.user$);return(0,v.jsx)(o,{isFullyAuthenticated:t,isAuthenticated:t,hasValidGatewayToken:t})}function b(){let{t:e}=n(),t=(t,n)=>e(`AdminDevOps.${t}`,n),r=i(),a=s(r.activePanel$)??null,{theme:o}=c(),p=[{title:t(`systemMonitoring`),description:t(`systemMonitoringDescription`),icon:h,available:t(`systemMonitoringCLI`)},{title:t(`serviceManagement`),description:t(`serviceManagementDescription`),icon:_,available:t(`serviceManagementCLI`)},{title:t(`deploymentControl`),description:t(`deploymentControlDescription`),icon:f,available:t(`deploymentControlCLI`)}];return(0,v.jsx)(u,{suggestedFeatures:p,theme:o,activePanel:a,translations:{title:t(`title`),subtitle:t(`subtitle`),systemStatus:t(`systemStatus`),cliOperations:t(`cliOperations`),cliOperationsDescription:t(`cliOperationsDescription`),cliTitle:t(`cliTitle`),cliDescription:t(`cliDescription`)},StatusDisplay:y,ToolbarPanels:d,Toolbar:l})}export{b as default};
2
- //# sourceMappingURL=page-QXiNSjcX.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{$ as i,At as a,O as o,Y as s,et as c,j as l,t as u}from"./index-cHWd4mGO.js";import{t as d}from"./ToolbarPanels-CbF3qEos.js";import{t as f}from"./CommandLineIcon-B3W-9AYr.js";var p=e(t());function m({title:e,titleId:t,...n},r){return p.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?p.createElement(`title`,{id:t},e):null,p.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z`}))}var h=p.forwardRef(m);function g({title:e,titleId:t,...n},r){return p.createElement(`svg`,Object.assign({xmlns:`http://www.w3.org/2000/svg`,fill:`none`,viewBox:`0 0 24 24`,strokeWidth:1.5,stroke:`currentColor`,"aria-hidden":`true`,"data-slot":`icon`,ref:r,"aria-labelledby":t},n),e?p.createElement(`title`,{id:t},e):null,p.createElement(`path`,{strokeLinecap:`round`,strokeLinejoin:`round`,d:`M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z`}))}var _=p.forwardRef(g),v=r();function y(){let e=s(a().activeSession$),t=!!s(e?.user$);return(0,v.jsx)(o,{isFullyAuthenticated:t,isAuthenticated:t,hasValidGatewayToken:t})}function b(){let{t:e}=n(),t=(t,n)=>e(`AdminDevOps.${t}`,n),r=i(),a=s(r.activePanel$)??null,{theme:o}=c(),p=[{title:t(`systemMonitoring`),description:t(`systemMonitoringDescription`),icon:h,available:t(`systemMonitoringCLI`)},{title:t(`serviceManagement`),description:t(`serviceManagementDescription`),icon:_,available:t(`serviceManagementCLI`)},{title:t(`deploymentControl`),description:t(`deploymentControlDescription`),icon:f,available:t(`deploymentControlCLI`)}];return(0,v.jsx)(u,{suggestedFeatures:p,theme:o,activePanel:a,translations:{title:t(`title`),subtitle:t(`subtitle`),systemStatus:t(`systemStatus`),cliOperations:t(`cliOperations`),cliOperationsDescription:t(`cliOperationsDescription`),cliTitle:t(`cliTitle`),cliDescription:t(`cliDescription`)},StatusDisplay:y,ToolbarPanels:d,Toolbar:l})}export{b as default};
2
+ //# sourceMappingURL=page-D-_kPKxI.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-QXiNSjcX.js","names":["ForwardRef"],"sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ServerIcon.js","../../src/app/[locale]/admin/devops/page.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ChartBarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChartBarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ServerIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ServerIcon);\nexport default ForwardRef;","/**\n * DevOps Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (translations, hooks)\n * and delegates rendering to the pure React AdminDevOpsPage component.\n */\n\nimport { useTranslation } from 'react-i18next';\nimport {\n ChartBarIcon,\n ServerIcon,\n CommandLineIcon\n} from '@heroicons/react/24/outline';\nimport { StatusDisplay, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, useShellStateUnit, useObservable, useSemiont } from '@semiont/react-ui';\nimport { AdminDevOpsPage } from '@semiont/react-ui';\n\n// Wrapper component that provides auth props to StatusDisplay.\n// The three booleans collapse to the same value (is the user authenticated?)\n// now that token and user are both session-owned.\nfunction StatusDisplayWithAuth() {\n const session = useObservable(useSemiont().activeSession$);\n const user = useObservable(session?.user$);\n const authed = !!user;\n return (\n <StatusDisplay\n isFullyAuthenticated={authed}\n isAuthenticated={authed}\n hasValidGatewayToken={authed}\n />\n );\n}\n\nexport default function DevOpsPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminDevOps.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const browseStateUnit = useShellStateUnit();\n const activePanel = useObservable(browseStateUnit.activePanel$) ?? null;\n const { theme } = useTheme();\n\n\n\n const suggestedFeatures = [\n {\n title: t('systemMonitoring'),\n description: t('systemMonitoringDescription'),\n icon: ChartBarIcon,\n available: t('systemMonitoringCLI')\n },\n {\n title: t('serviceManagement'),\n description: t('serviceManagementDescription'),\n icon: ServerIcon,\n available: t('serviceManagementCLI')\n },\n {\n title: t('deploymentControl'),\n description: t('deploymentControlDescription'),\n icon: CommandLineIcon,\n available: t('deploymentControlCLI')\n },\n ];\n\n return (\n <AdminDevOpsPage\n suggestedFeatures={suggestedFeatures}\n theme={theme}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n systemStatus: t('systemStatus'),\n cliOperations: t('cliOperations'),\n cliOperationsDescription: t('cliOperationsDescription'),\n cliTitle: t('cliTitle'),\n cliDescription: t('cliDescription'),\n }}\n StatusDisplay={StatusDisplayWithAuth}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"x_google_ignoreList":[0,1],"mappings":"6UACA,SAAS,EAAa,CACpB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,CACrB,EAAG,CAAK,EAAG,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,CACN,EAAG,CAAK,EAAI,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,kcACL,CAAC,CAAC,CACJ,CACA,IAAMA,EAA2B,EAAM,WAAW,CAAY,ECvB9D,SAAS,EAAW,CAClB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,CACrB,EAAG,CAAK,EAAG,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,CACN,EAAG,CAAK,EAAI,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,2SACL,CAAC,CAAC,CACJ,CACA,IAAM,EAA2B,EAAM,WAAW,CAAU,QCH5D,SAAS,GAAwB,CAC/B,IAAM,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,EAEnD,EAAS,CAAC,CADH,EAAc,GAAS,KACnB,EACjB,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,qBAAsB,EACtB,gBAAiB,EACjB,qBAAsB,CACvB,CAAA,CAEL,CAEA,SAAwB,GAAa,CACnC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,eAAe,IAAK,CAAQ,EAG/E,EAAkB,EAAkB,EACpC,EAAc,EAAc,EAAgB,YAAY,GAAK,KAC7D,CAAE,SAAU,EAAS,EAIrB,EAAoB,CACxB,CACE,MAAO,EAAE,kBAAkB,EAC3B,YAAa,EAAE,6BAA6B,EAC5C,KAAM,EACN,UAAW,EAAE,qBAAqB,CACpC,EACA,CACE,MAAO,EAAE,mBAAmB,EAC5B,YAAa,EAAE,8BAA8B,EAC7C,KAAM,EACN,UAAW,EAAE,sBAAsB,CACrC,EACA,CACE,MAAO,EAAE,mBAAmB,EAC5B,YAAa,EAAE,8BAA8B,EAC7C,KAAM,EACN,UAAW,EAAE,sBAAsB,CACrC,CACF,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACqB,oBACZ,QACM,cACb,aAAc,CACZ,MAAO,EAAE,OAAO,EAChB,SAAU,EAAE,UAAU,EACtB,aAAc,EAAE,cAAc,EAC9B,cAAe,EAAE,eAAe,EAChC,yBAA0B,EAAE,0BAA0B,EACtD,SAAU,EAAE,UAAU,EACtB,eAAgB,EAAE,gBAAgB,CACpC,EACA,cAAe,EACA,gBACN,SACV,CAAA,CAEL"}
1
+ {"version":3,"file":"page-D-_kPKxI.js","names":["ForwardRef"],"sources":["../../../../node_modules/@heroicons/react/24/outline/esm/ChartBarIcon.js","../../../../node_modules/@heroicons/react/24/outline/esm/ServerIcon.js","../../src/app/[locale]/admin/devops/page.tsx"],"sourcesContent":["import * as React from \"react\";\nfunction ChartBarIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ChartBarIcon);\nexport default ForwardRef;","import * as React from \"react\";\nfunction ServerIcon({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", Object.assign({\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n strokeWidth: 1.5,\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z\"\n }));\n}\nconst ForwardRef = /*#__PURE__*/ React.forwardRef(ServerIcon);\nexport default ForwardRef;","/**\n * DevOps Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (translations, hooks)\n * and delegates rendering to the pure React AdminDevOpsPage component.\n */\n\nimport { useTranslation } from 'react-i18next';\nimport {\n ChartBarIcon,\n ServerIcon,\n CommandLineIcon\n} from '@heroicons/react/24/outline';\nimport { StatusDisplay, Toolbar } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport { useTheme, useShellStateUnit, useObservable, useSemiont } from '@semiont/react-ui';\nimport { AdminDevOpsPage } from '@semiont/react-ui';\n\n// Wrapper component that provides auth props to StatusDisplay.\n// The three booleans collapse to the same value (is the user authenticated?)\n// now that token and user are both session-owned.\nfunction StatusDisplayWithAuth() {\n const session = useObservable(useSemiont().activeSession$);\n const user = useObservable(session?.user$);\n const authed = !!user;\n return (\n <StatusDisplay\n isFullyAuthenticated={authed}\n isAuthenticated={authed}\n hasValidGatewayToken={authed}\n />\n );\n}\n\nexport default function DevOpsPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AdminDevOps.${k}`, p as any) as string;\n\n // Toolbar and settings state\n const browseStateUnit = useShellStateUnit();\n const activePanel = useObservable(browseStateUnit.activePanel$) ?? null;\n const { theme } = useTheme();\n\n\n\n const suggestedFeatures = [\n {\n title: t('systemMonitoring'),\n description: t('systemMonitoringDescription'),\n icon: ChartBarIcon,\n available: t('systemMonitoringCLI')\n },\n {\n title: t('serviceManagement'),\n description: t('serviceManagementDescription'),\n icon: ServerIcon,\n available: t('serviceManagementCLI')\n },\n {\n title: t('deploymentControl'),\n description: t('deploymentControlDescription'),\n icon: CommandLineIcon,\n available: t('deploymentControlCLI')\n },\n ];\n\n return (\n <AdminDevOpsPage\n suggestedFeatures={suggestedFeatures}\n theme={theme}\n activePanel={activePanel}\n translations={{\n title: t('title'),\n subtitle: t('subtitle'),\n systemStatus: t('systemStatus'),\n cliOperations: t('cliOperations'),\n cliOperationsDescription: t('cliOperationsDescription'),\n cliTitle: t('cliTitle'),\n cliDescription: t('cliDescription'),\n }}\n StatusDisplay={StatusDisplayWithAuth}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n"],"x_google_ignoreList":[0,1],"mappings":"6UACA,SAAS,EAAa,CACpB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,CACrB,EAAG,CAAK,EAAG,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,CACN,EAAG,CAAK,EAAI,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,kcACL,CAAC,CAAC,CACJ,CACA,IAAMA,EAA2B,EAAM,WAAW,CAAY,ECvB9D,SAAS,EAAW,CAClB,QACA,UACA,GAAG,GACF,EAAQ,CACT,OAAoB,EAAM,cAAc,MAAO,OAAO,OAAO,CAC3D,MAAO,6BACP,KAAM,OACN,QAAS,YACT,YAAa,IACb,OAAQ,eACR,cAAe,OACf,YAAa,OACb,IAAK,EACL,kBAAmB,CACrB,EAAG,CAAK,EAAG,EAAqB,EAAM,cAAc,QAAS,CAC3D,GAAI,CACN,EAAG,CAAK,EAAI,KAAmB,EAAM,cAAc,OAAQ,CACzD,cAAe,QACf,eAAgB,QAChB,EAAG,2SACL,CAAC,CAAC,CACJ,CACA,IAAM,EAA2B,EAAM,WAAW,CAAU,QCH5D,SAAS,GAAwB,CAC/B,IAAM,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,EAEnD,EAAS,CAAC,CADH,EAAc,GAAS,KACnB,EACjB,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,qBAAsB,EACtB,gBAAiB,EACjB,qBAAsB,CACvB,CAAA,CAEL,CAEA,SAAwB,GAAa,CACnC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,eAAe,IAAK,CAAQ,EAG/E,EAAkB,EAAkB,EACpC,EAAc,EAAc,EAAgB,YAAY,GAAK,KAC7D,CAAE,SAAU,EAAS,EAIrB,EAAoB,CACxB,CACE,MAAO,EAAE,kBAAkB,EAC3B,YAAa,EAAE,6BAA6B,EAC5C,KAAM,EACN,UAAW,EAAE,qBAAqB,CACpC,EACA,CACE,MAAO,EAAE,mBAAmB,EAC5B,YAAa,EAAE,8BAA8B,EAC7C,KAAM,EACN,UAAW,EAAE,sBAAsB,CACrC,EACA,CACE,MAAO,EAAE,mBAAmB,EAC5B,YAAa,EAAE,8BAA8B,EAC7C,KAAM,EACN,UAAW,EAAE,sBAAsB,CACrC,CACF,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACqB,oBACZ,QACM,cACb,aAAc,CACZ,MAAO,EAAE,OAAO,EAChB,SAAU,EAAE,UAAU,EACtB,aAAc,EAAE,cAAc,EAC9B,cAAe,EAAE,eAAe,EAChC,yBAA0B,EAAE,0BAA0B,EACtD,SAAU,EAAE,UAAU,EACtB,eAAgB,EAAE,gBAAgB,CACpC,EACA,cAAe,EACA,gBACN,SACV,CAAA,CAEL"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{C as i,N as a}from"./index-DikwAWOa.js";import{i as o}from"./routing-Cj_EvhT3.js";var s=e(t()),c=r(),l=5e3;function u(){let{t:e}=n(),t=t=>e(`Home.${t}`),r=o(),u=(0,s.useRef)(null),d=()=>{u.current&&clearTimeout(u.current),r.push(`/know/discover`)};return(0,s.useEffect)(()=>(u.current=setTimeout(d,l),()=>{u.current&&clearTimeout(u.current)}),[]),(0,c.jsxs)(`main`,{role:`main`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`100vh`,gap:`2rem`},children:[(0,c.jsx)(i,{t,size:`xl`,animated:!0}),(0,c.jsx)(`button`,{onClick:d,className:a.primary.base,children:t(`begin`)})]})}export{u as default};
2
- //# sourceMappingURL=page-CCSJqjWt.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{C as i,N as a}from"./index-cHWd4mGO.js";import{i as o}from"./routing-D-GkAfgE.js";var s=e(t()),c=r(),l=5e3;function u(){let{t:e}=n(),t=t=>e(`Home.${t}`),r=o(),u=(0,s.useRef)(null),d=()=>{u.current&&clearTimeout(u.current),r.push(`/know/discover`)};return(0,s.useEffect)(()=>(u.current=setTimeout(d,l),()=>{u.current&&clearTimeout(u.current)}),[]),(0,c.jsxs)(`main`,{role:`main`,style:{display:`flex`,flexDirection:`column`,alignItems:`center`,justifyContent:`center`,minHeight:`100vh`,gap:`2rem`},children:[(0,c.jsx)(i,{t,size:`xl`,animated:!0}),(0,c.jsx)(`button`,{onClick:d,className:a.primary.base,children:t(`begin`)})]})}export{u as default};
2
+ //# sourceMappingURL=page-DLiS_avb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-CCSJqjWt.js","names":[],"sources":["../../src/app/[locale]/page.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SemiontBranding, buttonStyles } from '@semiont/react-ui';\nimport { useRouter } from '@/i18n/routing';\n\nconst AUTO_TRANSITION_MS = 5000;\n\nexport default function Home() {\n const { t: _t } = useTranslation();\n const t = (k: string) => _t(`Home.${k}`) as string;\n const router = useRouter();\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const goToWorkspace = () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n router.push('/know/discover');\n };\n\n useEffect(() => {\n timerRef.current = setTimeout(goToWorkspace, AUTO_TRANSITION_MS);\n return () => { if (timerRef.current) clearTimeout(timerRef.current); };\n }, []);\n\n return (\n <main\n role=\"main\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n gap: '2rem',\n }}\n >\n <SemiontBranding t={t} size=\"xl\" animated={true} />\n <button onClick={goToWorkspace} className={buttonStyles.primary.base}>\n {t('begin')}\n </button>\n </main>\n );\n}\n"],"mappings":"sPAKM,EAAqB,IAE3B,SAAwB,GAAO,CAC7B,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,EAAK,GAAc,EAAG,QAAQ,GAAG,EACjC,EAAS,EAAU,EACnB,GAAA,EAAW,EAAA,OAAA,CAA6C,IAAI,EAE5D,MAAsB,CACtB,EAAS,SAAS,aAAa,EAAS,OAAO,EACnD,EAAO,KAAK,gBAAgB,CAC9B,EAOA,OALA,EAAA,EAAA,UAAA,MACE,EAAS,QAAU,WAAW,EAAe,CAAkB,MAClD,CAAM,EAAS,SAAS,aAAa,EAAS,OAAO,CAAG,GACpE,CAAC,CAAC,GAGH,EAAA,EAAA,KAAA,CAAC,OAAD,CACE,KAAK,OACL,MAAO,CACL,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,UAAW,QACX,IAAK,MACP,EATF,SAAA,EAWE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,EAAG,KAAK,KAAK,SAAU,EAAO,CAAA,GAClD,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,QAAS,EAAe,UAAW,EAAa,QAAQ,KAC7D,SAAA,EAAE,OAAO,CACJ,CAAA,CACJ,GAEV"}
1
+ {"version":3,"file":"page-DLiS_avb.js","names":[],"sources":["../../src/app/[locale]/page.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { SemiontBranding, buttonStyles } from '@semiont/react-ui';\nimport { useRouter } from '@/i18n/routing';\n\nconst AUTO_TRANSITION_MS = 5000;\n\nexport default function Home() {\n const { t: _t } = useTranslation();\n const t = (k: string) => _t(`Home.${k}`) as string;\n const router = useRouter();\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const goToWorkspace = () => {\n if (timerRef.current) clearTimeout(timerRef.current);\n router.push('/know/discover');\n };\n\n useEffect(() => {\n timerRef.current = setTimeout(goToWorkspace, AUTO_TRANSITION_MS);\n return () => { if (timerRef.current) clearTimeout(timerRef.current); };\n }, []);\n\n return (\n <main\n role=\"main\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n minHeight: '100vh',\n gap: '2rem',\n }}\n >\n <SemiontBranding t={t} size=\"xl\" animated={true} />\n <button onClick={goToWorkspace} className={buttonStyles.primary.base}>\n {t('begin')}\n </button>\n </main>\n );\n}\n"],"mappings":"sPAKM,EAAqB,IAE3B,SAAwB,GAAO,CAC7B,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,EAAK,GAAc,EAAG,QAAQ,GAAG,EACjC,EAAS,EAAU,EACnB,GAAA,EAAW,EAAA,OAAA,CAA6C,IAAI,EAE5D,MAAsB,CACtB,EAAS,SAAS,aAAa,EAAS,OAAO,EACnD,EAAO,KAAK,gBAAgB,CAC9B,EAOA,OALA,EAAA,EAAA,UAAA,MACE,EAAS,QAAU,WAAW,EAAe,CAAkB,MAClD,CAAM,EAAS,SAAS,aAAa,EAAS,OAAO,CAAG,GACpE,CAAC,CAAC,GAGH,EAAA,EAAA,KAAA,CAAC,OAAD,CACE,KAAK,OACL,MAAO,CACL,QAAS,OACT,cAAe,SACf,WAAY,SACZ,eAAgB,SAChB,UAAW,QACX,IAAK,MACP,EATF,SAAA,EAWE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,EAAG,KAAK,KAAK,SAAU,EAAO,CAAA,GAClD,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,QAAS,EAAe,UAAW,EAAa,QAAQ,KAC7D,SAAA,EAAE,OAAO,CACJ,CAAA,CACJ,GAEV"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{i as r,t as i}from"./vendor-GEwJ7U4m.js";import{$ as a,At as o,I as s,K as c,Q as l,Y as u,_ as d,et as f,j as p,jt as m,s as h}from"./index-DikwAWOa.js";import{t as g}from"./ToolbarPanels-COwH5BrV.js";import{i as _,n as v}from"./routing-Cj_EvhT3.js";var y=e(t()),b=i();function x(){let{t:e}=n(),t=(t,n)=>e(`Compose.${t}`,n),i=v(),x=_(),[S]=r(),C=o(),w=u(C.activeKbId$),T=u(C.activeSession$),E=u(T?.user$),D=u(T?.token$),O=!!E,k=w!=null&&T==null,{showError:A}=m();(0,y.useEffect)(()=>{k||O||x.push(`/`)},[k,O,x]);let j=a(),M=l(T??void 0,e=>s(e,j,{mode:S?.get(`mode`)??void 0,token:S?.get(`token`)??void 0},D??void 0)),N=u(M?.browse.activePanel$)??null,P=u(M?.mode$)??`new`,F=u(M?.loading$)??!0,I=u(M?.cloneData$)??null,L=u(M?.entityTypes.value$)??[],R=u(M?.uploadProgress$)??null,{resolvedTheme:z}=f(),{hoverDelayMs:B}=c();return k||F?(0,b.jsx)(h,{message:k?`Checking authentication...`:`Loading cloned resource...`}):O?(0,b.jsx)(d,{mode:P,cloneData:I,availableEntityTypes:L,initialLocale:i,theme:z,hoverDelayMs:B,activePanel:N,onSaveResource:async e=>{if(M)try{let t=await M.save(e);x.push(`/know/resource/${encodeURIComponent(t)}`)}catch(e){let t=e instanceof Error?e.message:`Failed to save resource. Please try again.`;throw A(t),e}},onCancel:()=>x.push(`/know/discover`),uploadProgress:R,translations:{title:t(`title`),titleEditClone:t(`titleEditClone`),subtitleClone:t(`subtitleClone`),resourceName:t(`resourceName`),resourceNamePlaceholder:t(`resourceNamePlaceholder`),entityTypes:t(`entityTypes`),language:t(`language`),contentSource:t(`contentSource`),uploadFile:t(`uploadFile`),uploadFileDescription:t(`uploadFileDescription`),writeContent:t(`writeContent`),writeContentDescription:t(`writeContentDescription`),dropFileOrClick:t(`dropFileOrClick`),supportedFormats:t(`supportedFormats`),mediaType:t(`mediaType`),autoDetected:t(`autoDetected`),format:t(`format`),content:t(`content`),resourceContent:t(`resourceContent`),encoding:t(`encoding`),archiveOriginal:t(`archiveOriginal`),cancel:t(`cancel`),saving:t(`saving`),creating:t(`creating`),saveClonedResource:t(`saveClonedResource`),createResource:t(`createResource`)},ToolbarPanels:g,Toolbar:p}):null}function S(){let{t:e}=n();return(0,b.jsx)(y.Suspense,{fallback:(0,b.jsx)(h,{message:((t,n)=>e(`Compose.${t}`,n))(`loading`)}),children:(0,b.jsx)(x,{})})}export{S as default};
2
- //# sourceMappingURL=page-DveRPD7J.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{i as r,t as i}from"./vendor-vK2W55bZ.js";import{$ as a,At as o,I as s,K as c,Q as l,Y as u,_ as d,et as f,j as p,jt as m,s as h}from"./index-cHWd4mGO.js";import{t as g}from"./ToolbarPanels-CbF3qEos.js";import{i as _,n as v}from"./routing-D-GkAfgE.js";var y=e(t()),b=i();function x(){let{t:e}=n(),t=(t,n)=>e(`Compose.${t}`,n),i=v(),x=_(),[S]=r(),C=o(),w=u(C.activeKbId$),T=u(C.activeSession$),E=u(T?.user$),D=u(T?.token$),O=!!E,k=w!=null&&T==null,{showError:A}=m();(0,y.useEffect)(()=>{k||O||x.push(`/`)},[k,O,x]);let j=a(),M=l(T??void 0,e=>s(e,j,{mode:S?.get(`mode`)??void 0,token:S?.get(`token`)??void 0},D??void 0)),N=u(M?.browse.activePanel$)??null,P=u(M?.mode$)??`new`,F=u(M?.loading$)??!0,I=u(M?.cloneData$)??null,L=u(M?.entityTypes.value$)??[],R=u(M?.uploadProgress$)??null,{resolvedTheme:z}=f(),{hoverDelayMs:B}=c();return k||F?(0,b.jsx)(h,{message:k?`Checking authentication...`:`Loading cloned resource...`}):O?(0,b.jsx)(d,{mode:P,cloneData:I,availableEntityTypes:L,initialLocale:i,theme:z,hoverDelayMs:B,activePanel:N,onSaveResource:async e=>{if(M)try{let t=await M.save(e);x.push(`/know/resource/${encodeURIComponent(t)}`)}catch(e){let t=e instanceof Error?e.message:`Failed to save resource. Please try again.`;throw A(t),e}},onCancel:()=>x.push(`/know/discover`),uploadProgress:R,translations:{title:t(`title`),titleEditClone:t(`titleEditClone`),subtitleClone:t(`subtitleClone`),resourceName:t(`resourceName`),resourceNamePlaceholder:t(`resourceNamePlaceholder`),entityTypes:t(`entityTypes`),language:t(`language`),contentSource:t(`contentSource`),uploadFile:t(`uploadFile`),uploadFileDescription:t(`uploadFileDescription`),writeContent:t(`writeContent`),writeContentDescription:t(`writeContentDescription`),dropFileOrClick:t(`dropFileOrClick`),supportedFormats:t(`supportedFormats`),mediaType:t(`mediaType`),autoDetected:t(`autoDetected`),format:t(`format`),content:t(`content`),resourceContent:t(`resourceContent`),encoding:t(`encoding`),archiveOriginal:t(`archiveOriginal`),cancel:t(`cancel`),saving:t(`saving`),creating:t(`creating`),saveClonedResource:t(`saveClonedResource`),createResource:t(`createResource`)},ToolbarPanels:g,Toolbar:p}):null}function S(){let{t:e}=n();return(0,b.jsx)(y.Suspense,{fallback:(0,b.jsx)(h,{message:((t,n)=>e(`Compose.${t}`,n))(`loading`)}),children:(0,b.jsx)(x,{})})}export{S as default};
2
+ //# sourceMappingURL=page-DS47DLy5.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-DveRPD7J.js","names":[],"sources":["../../src/app/[locale]/know/compose/page.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, Suspense } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocale } from '@/i18n/routing';\nimport { useRouter } from '@/i18n/routing';\nimport { useSearchParams } from 'react-router';\nimport {\n useSemiont,\n useToast,\n useTheme,\n useShellStateUnit,\n useObservable,\n useHoverDelay,\n useSessionStateUnit,\n Toolbar,\n ComposeLoadingState,\n ResourceComposePage,\n} from '@semiont/react-ui';\nimport type { SaveResourceParams as UISaveResourceParams } from '@semiont/react-ui';\nimport { createComposePageStateUnit } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\n\nfunction ComposeResourceContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n const locale = useLocale();\n const router = useRouter();\n const [searchParams] = useSearchParams();\n const semiont = useSemiont();\n const activeKbId = useObservable(semiont.activeKbId$);\n const session = useObservable(semiont.activeSession$);\n const user = useObservable(session?.user$);\n const authToken = useObservable(session?.token$);\n const isAuthenticated = !!user;\n // \"Loading\" = a KB is selected but the session hasn't finished constructing\n // yet, so we don't know if auth succeeded.\n const authLoading = activeKbId != null && session == null;\n const { showError } = useToast();\n\n useEffect(() => {\n if (authLoading) return;\n if (!isAuthenticated) router.push('/');\n }, [authLoading, isAuthenticated, router]);\n\n const browseStateUnit = useShellStateUnit();\n\n const stateUnit = useSessionStateUnit(session ?? undefined, (s) => createComposePageStateUnit(s, browseStateUnit, {\n mode: searchParams?.get('mode') ?? undefined,\n token: searchParams?.get('token') ?? undefined,\n }, authToken ?? undefined));\n\n const activePanel = useObservable(stateUnit?.browse.activePanel$) ?? null;\n const pageMode = useObservable(stateUnit?.mode$) ?? 'new';\n const isLoading = useObservable(stateUnit?.loading$) ?? true;\n const cloneData = useObservable(stateUnit?.cloneData$) ?? null;\n const availableEntityTypes = useObservable(stateUnit?.entityTypes.value$) ?? [];\n const uploadProgress = useObservable(stateUnit?.uploadProgress$) ?? null;\n\n const { resolvedTheme } = useTheme();\n const { hoverDelayMs } = useHoverDelay();\n\n const handleSaveResource = async (params: UISaveResourceParams) => {\n if (!stateUnit) return;\n try {\n const newResourceId = await stateUnit.save(params);\n router.push(`/know/resource/${encodeURIComponent(newResourceId)}`);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to save resource. Please try again.';\n showError(errorMessage);\n throw error;\n }\n };\n\n if (authLoading || isLoading) {\n return <ComposeLoadingState message={authLoading ? 'Checking authentication...' : 'Loading cloned resource...'} />;\n }\n\n if (!isAuthenticated) return null;\n\n return (\n <ResourceComposePage\n mode={pageMode}\n cloneData={cloneData}\n availableEntityTypes={availableEntityTypes}\n initialLocale={locale}\n theme={resolvedTheme}\n hoverDelayMs={hoverDelayMs}\n activePanel={activePanel}\n onSaveResource={handleSaveResource}\n onCancel={() => router.push('/know/discover')}\n uploadProgress={uploadProgress}\n translations={{\n title: t('title'),\n titleEditClone: t('titleEditClone'),\n subtitleClone: t('subtitleClone'),\n resourceName: t('resourceName'),\n resourceNamePlaceholder: t('resourceNamePlaceholder'),\n entityTypes: t('entityTypes'),\n language: t('language'),\n contentSource: t('contentSource'),\n uploadFile: t('uploadFile'),\n uploadFileDescription: t('uploadFileDescription'),\n writeContent: t('writeContent'),\n writeContentDescription: t('writeContentDescription'),\n dropFileOrClick: t('dropFileOrClick'),\n supportedFormats: t('supportedFormats'),\n mediaType: t('mediaType'),\n autoDetected: t('autoDetected'),\n format: t('format'),\n content: t('content'),\n resourceContent: t('resourceContent'),\n encoding: t('encoding'),\n archiveOriginal: t('archiveOriginal'),\n cancel: t('cancel'),\n saving: t('saving'),\n creating: t('creating'),\n saveClonedResource: t('saveClonedResource'),\n createResource: t('createResource'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n\nexport default function ComposeResourcePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n\n return (\n <Suspense fallback={<ComposeLoadingState message={t('loading')} />}>\n <ComposeResourceContent />\n </Suspense>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"page-DS47DLy5.js","names":[],"sources":["../../src/app/[locale]/know/compose/page.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, Suspense } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { useLocale } from '@/i18n/routing';\nimport { useRouter } from '@/i18n/routing';\nimport { useSearchParams } from 'react-router';\nimport {\n useSemiont,\n useToast,\n useTheme,\n useShellStateUnit,\n useObservable,\n useHoverDelay,\n useSessionStateUnit,\n Toolbar,\n ComposeLoadingState,\n ResourceComposePage,\n} from '@semiont/react-ui';\nimport type { SaveResourceParams as UISaveResourceParams } from '@semiont/react-ui';\nimport { createComposePageStateUnit } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\n\nfunction ComposeResourceContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n const locale = useLocale();\n const router = useRouter();\n const [searchParams] = useSearchParams();\n const semiont = useSemiont();\n const activeKbId = useObservable(semiont.activeKbId$);\n const session = useObservable(semiont.activeSession$);\n const user = useObservable(session?.user$);\n const authToken = useObservable(session?.token$);\n const isAuthenticated = !!user;\n // \"Loading\" = a KB is selected but the session hasn't finished constructing\n // yet, so we don't know if auth succeeded.\n const authLoading = activeKbId != null && session == null;\n const { showError } = useToast();\n\n useEffect(() => {\n if (authLoading) return;\n if (!isAuthenticated) router.push('/');\n }, [authLoading, isAuthenticated, router]);\n\n const browseStateUnit = useShellStateUnit();\n\n const stateUnit = useSessionStateUnit(session ?? undefined, (s) => createComposePageStateUnit(s, browseStateUnit, {\n mode: searchParams?.get('mode') ?? undefined,\n token: searchParams?.get('token') ?? undefined,\n }, authToken ?? undefined));\n\n const activePanel = useObservable(stateUnit?.browse.activePanel$) ?? null;\n const pageMode = useObservable(stateUnit?.mode$) ?? 'new';\n const isLoading = useObservable(stateUnit?.loading$) ?? true;\n const cloneData = useObservable(stateUnit?.cloneData$) ?? null;\n const availableEntityTypes = useObservable(stateUnit?.entityTypes.value$) ?? [];\n const uploadProgress = useObservable(stateUnit?.uploadProgress$) ?? null;\n\n const { resolvedTheme } = useTheme();\n const { hoverDelayMs } = useHoverDelay();\n\n const handleSaveResource = async (params: UISaveResourceParams) => {\n if (!stateUnit) return;\n try {\n const newResourceId = await stateUnit.save(params);\n router.push(`/know/resource/${encodeURIComponent(newResourceId)}`);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Failed to save resource. Please try again.';\n showError(errorMessage);\n throw error;\n }\n };\n\n if (authLoading || isLoading) {\n return <ComposeLoadingState message={authLoading ? 'Checking authentication...' : 'Loading cloned resource...'} />;\n }\n\n if (!isAuthenticated) return null;\n\n return (\n <ResourceComposePage\n mode={pageMode}\n cloneData={cloneData}\n availableEntityTypes={availableEntityTypes}\n initialLocale={locale}\n theme={resolvedTheme}\n hoverDelayMs={hoverDelayMs}\n activePanel={activePanel}\n onSaveResource={handleSaveResource}\n onCancel={() => router.push('/know/discover')}\n uploadProgress={uploadProgress}\n translations={{\n title: t('title'),\n titleEditClone: t('titleEditClone'),\n subtitleClone: t('subtitleClone'),\n resourceName: t('resourceName'),\n resourceNamePlaceholder: t('resourceNamePlaceholder'),\n entityTypes: t('entityTypes'),\n language: t('language'),\n contentSource: t('contentSource'),\n uploadFile: t('uploadFile'),\n uploadFileDescription: t('uploadFileDescription'),\n writeContent: t('writeContent'),\n writeContentDescription: t('writeContentDescription'),\n dropFileOrClick: t('dropFileOrClick'),\n supportedFormats: t('supportedFormats'),\n mediaType: t('mediaType'),\n autoDetected: t('autoDetected'),\n format: t('format'),\n content: t('content'),\n resourceContent: t('resourceContent'),\n encoding: t('encoding'),\n archiveOriginal: t('archiveOriginal'),\n cancel: t('cancel'),\n saving: t('saving'),\n creating: t('creating'),\n saveClonedResource: t('saveClonedResource'),\n createResource: t('createResource'),\n }}\n ToolbarPanels={ToolbarPanels}\n Toolbar={Toolbar}\n />\n );\n}\n\nexport default function ComposeResourcePage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Compose.${k}`, p as any) as string;\n\n return (\n <Suspense fallback={<ComposeLoadingState message={t('loading')} />}>\n <ComposeResourceContent />\n </Suspense>\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{At as i,M as a,Q as o,V as s,Y as c,jt as l,p as u}from"./index-DikwAWOa.js";import{i as d,t as f}from"./routing-Cj_EvhT3.js";var p=e(t()),m=r();function h(){let{t:e}=n(),t=(t,n)=>e(`AuthWelcome.${t}`,n),r=i(),a=c(r.activeSession$)??null;return a?(0,m.jsx)(g,{session:a,t},a.id):(0,m.jsx)(_,{status:`loading`,t})}function g({session:e,t}){let n=i(),r=c(e.user$)??null,a=e.kb,u=!!r,f=e=>{n.signOut(e)},h=d(),[g,v]=(0,p.useState)(!1),y=l(),b=o(e,s),x=c(b?.userData$),S=c(b?.isProcessing$)??!1;(0,p.useEffect)(()=>{if(!u){h.push(`/auth/connect`);return}if(x?.termsAcceptedAt){h.push(`/`);return}},[u,h,x]);let C=async e=>{if(!e){a&&f(a.id),h.push(`/`);return}if(b)try{await b.acceptTerms(),v(!0),setTimeout(()=>{h.push(`/`)},1e3)}catch(e){console.error(`Terms acceptance error:`,e),y.showError(t(`errorAcceptingTerms`))}},w=g?`accepted`:`form`,T=r?.name?.split(` `)[0]??``;return(0,m.jsx)(_,{t,userName:T,termsAcceptedAt:x?.termsAcceptedAt??null,status:w,isProcessing:S,onAccept:()=>C(!0),onDecline:()=>C(!1)})}function _({t:e,status:t,userName:n=``,termsAcceptedAt:r=null,isProcessing:i=!1,onAccept:o=()=>{},onDecline:s=()=>{}}){return(0,m.jsx)(a,{userName:n,termsAcceptedAt:r,isNewUser:!r,status:t,isProcessing:i,onAccept:o,onDecline:s,translations:{loading:e(`loading`),welcomeTitle:e(`welcomeTitle`),thanksForAccepting:e(`thanksForAccepting`),welcomeUser:e(`welcomeUser`,{firstName:n}),reviewTermsPrompt:e(`reviewTermsPrompt`),termsSummaryTitle:e(`termsSummaryTitle`),termsSummaryIntro:e(`termsSummaryIntro`),acceptableUseTitle:e(`acceptableUseTitle`),acceptableUseResponsible:e(`acceptableUseResponsible`),acceptableUseRespect:e(`acceptableUseRespect`),acceptableUseConduct:e(`acceptableUseConduct`),prohibitedContentTitle:e(`prohibitedContentTitle`),prohibitedContentIntro:e(`prohibitedContentIntro`),prohibitedIllegal:e(`prohibitedIllegal`),prohibitedAdult:e(`prohibitedAdult`),prohibitedHate:e(`prohibitedHate`),prohibitedViolence:e(`prohibitedViolence`),prohibitedMisinformation:e(`prohibitedMisinformation`),prohibitedPrivacy:e(`prohibitedPrivacy`),prohibitedCopyright:e(`prohibitedCopyright`),prohibitedMalware:e(`prohibitedMalware`),prohibitedSpam:e(`prohibitedSpam`),conductTitle:e(`conductTitle`),conductDescription:e(`conductDescription`),conductLink:e(`conductLink`),conductPromotion:e(`conductPromotion`),responsibilitiesTitle:e(`responsibilitiesTitle`),responsibilitiesSecure:e(`responsibilitiesSecure`),responsibilitiesReport:e(`responsibilitiesReport`),responsibilitiesAccurate:e(`responsibilitiesAccurate`),responsibilitiesComply:e(`responsibilitiesComply`),violationsWarning:e(`violationsWarning`),readFullTerms:e(`readFullTerms`),termsOfService:e(`termsOfService`),and:e(`and`),privacyPolicy:e(`privacyPolicy`),declineAndSignOut:e(`declineAndSignOut`),acceptAndContinue:e(`acceptAndContinue`),processing:e(`processing`),legallyBound:e(`legallyBound`)},PageLayout:u,Link:f})}export{h as default};
2
- //# sourceMappingURL=page-KNTWGNqU.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{At as i,M as a,Q as o,V as s,Y as c,jt as l,p as u}from"./index-cHWd4mGO.js";import{i as d,t as f}from"./routing-D-GkAfgE.js";var p=e(t()),m=r();function h(){let{t:e}=n(),t=(t,n)=>e(`AuthWelcome.${t}`,n),r=i(),a=c(r.activeSession$)??null;return a?(0,m.jsx)(g,{session:a,t},a.id):(0,m.jsx)(_,{status:`loading`,t})}function g({session:e,t}){let n=i(),r=c(e.user$)??null,a=e.kb,u=!!r,f=e=>{n.signOut(e)},h=d(),[g,v]=(0,p.useState)(!1),y=l(),b=o(e,s),x=c(b?.userData$),S=c(b?.isProcessing$)??!1;(0,p.useEffect)(()=>{if(!u){h.push(`/auth/connect`);return}if(x?.termsAcceptedAt){h.push(`/`);return}},[u,h,x]);let C=async e=>{if(!e){a&&f(a.id),h.push(`/`);return}if(b)try{await b.acceptTerms(),v(!0),setTimeout(()=>{h.push(`/`)},1e3)}catch(e){console.error(`Terms acceptance error:`,e),y.showError(t(`errorAcceptingTerms`))}},w=g?`accepted`:`form`,T=r?.name?.split(` `)[0]??``;return(0,m.jsx)(_,{t,userName:T,termsAcceptedAt:x?.termsAcceptedAt??null,status:w,isProcessing:S,onAccept:()=>C(!0),onDecline:()=>C(!1)})}function _({t:e,status:t,userName:n=``,termsAcceptedAt:r=null,isProcessing:i=!1,onAccept:o=()=>{},onDecline:s=()=>{}}){return(0,m.jsx)(a,{userName:n,termsAcceptedAt:r,isNewUser:!r,status:t,isProcessing:i,onAccept:o,onDecline:s,translations:{loading:e(`loading`),welcomeTitle:e(`welcomeTitle`),thanksForAccepting:e(`thanksForAccepting`),welcomeUser:e(`welcomeUser`,{firstName:n}),reviewTermsPrompt:e(`reviewTermsPrompt`),termsSummaryTitle:e(`termsSummaryTitle`),termsSummaryIntro:e(`termsSummaryIntro`),acceptableUseTitle:e(`acceptableUseTitle`),acceptableUseResponsible:e(`acceptableUseResponsible`),acceptableUseRespect:e(`acceptableUseRespect`),acceptableUseConduct:e(`acceptableUseConduct`),prohibitedContentTitle:e(`prohibitedContentTitle`),prohibitedContentIntro:e(`prohibitedContentIntro`),prohibitedIllegal:e(`prohibitedIllegal`),prohibitedAdult:e(`prohibitedAdult`),prohibitedHate:e(`prohibitedHate`),prohibitedViolence:e(`prohibitedViolence`),prohibitedMisinformation:e(`prohibitedMisinformation`),prohibitedPrivacy:e(`prohibitedPrivacy`),prohibitedCopyright:e(`prohibitedCopyright`),prohibitedMalware:e(`prohibitedMalware`),prohibitedSpam:e(`prohibitedSpam`),conductTitle:e(`conductTitle`),conductDescription:e(`conductDescription`),conductLink:e(`conductLink`),conductPromotion:e(`conductPromotion`),responsibilitiesTitle:e(`responsibilitiesTitle`),responsibilitiesSecure:e(`responsibilitiesSecure`),responsibilitiesReport:e(`responsibilitiesReport`),responsibilitiesAccurate:e(`responsibilitiesAccurate`),responsibilitiesComply:e(`responsibilitiesComply`),violationsWarning:e(`violationsWarning`),readFullTerms:e(`readFullTerms`),termsOfService:e(`termsOfService`),and:e(`and`),privacyPolicy:e(`privacyPolicy`),declineAndSignOut:e(`declineAndSignOut`),acceptAndContinue:e(`acceptAndContinue`),processing:e(`processing`),legallyBound:e(`legallyBound`)},PageLayout:u,Link:f})}export{h as default};
2
+ //# sourceMappingURL=page-DYcAqNIR.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-KNTWGNqU.js","names":[],"sources":["../../src/app/[locale]/auth/welcome/page.tsx"],"sourcesContent":["/**\n * Welcome Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (routing, auth, API calls)\n * and delegates rendering to the pure React WelcomePage component.\n */\n\nimport { useState, useEffect } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from '@/i18n/routing';\nimport { PageLayout, useToast, useSemiont, useObservable } from '@semiont/react-ui';\nimport { WelcomePage } from '@semiont/react-ui';\nimport { createWelcomeStateUnit } from '@semiont/react-ui';\nimport { useSessionStateUnit } from '@semiont/react-ui';\nimport type { SemiontSession } from '@semiont/sdk';\n\n/**\n * The session gate is API shape now (SESSION-TYPED-FACTORIES.md):\n * `createWelcomeStateUnit` takes the SESSION, and `useSessionStateUnit`\n * constructs only when one exists and rebuilds (dispose-first) when it is\n * replaced — a KB switch or re-auth can no longer leave this page holding a\n * disposed client. This route is where that crashed in production: the user\n * lands here immediately after connecting, mid-activation.\n * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n */\nexport default function Welcome() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthWelcome.${k}`, p as any) as string;\n const semiont = useSemiont();\n const session = useObservable(semiont.activeSession$) ?? null;\n\n if (!session) {\n return <WelcomeShell status=\"loading\" t={t} />;\n }\n return <WelcomeInner key={session.id} session={session} t={t} />;\n}\n\nfunction WelcomeInner({\n session,\n t,\n}: {\n session: SemiontSession;\n t: (k: string, p?: Record<string, unknown>) => string;\n}) {\n const semiont = useSemiont();\n const user = useObservable(session.user$) ?? null;\n const activeKnowledgeBase = session.kb;\n const isAuthenticated = !!user;\n const signOut = (id: string) => { void semiont.signOut(id); };\n const router = useRouter();\n const [termsAccepted, setTermsAccepted] = useState(false);\n const toast = useToast();\n\n const stateUnit = useSessionStateUnit(session, createWelcomeStateUnit);\n\n const userData = useObservable(stateUnit?.userData$);\n const isProcessing = useObservable(stateUnit?.isProcessing$) ?? false;\n\n // Redirect if not authenticated or if terms already accepted\n useEffect(() => {\n if (!isAuthenticated) {\n router.push('/auth/connect');\n return;\n }\n\n if (userData?.termsAcceptedAt) {\n router.push('/');\n return;\n }\n }, [isAuthenticated, router, userData]);\n\n const handleTermsAcceptance = async (accepted: boolean) => {\n if (!accepted) {\n if (activeKnowledgeBase) {\n signOut(activeKnowledgeBase.id);\n }\n router.push('/');\n return;\n }\n\n if (!stateUnit) return;\n try {\n await stateUnit.acceptTerms();\n setTermsAccepted(true);\n\n setTimeout(() => {\n router.push('/');\n }, 1000);\n } catch (error) {\n console.error('Terms acceptance error:', error);\n toast.showError(t('errorAcceptingTerms'));\n }\n };\n\n const pageStatus = termsAccepted ? 'accepted' : 'form';\n const firstName = user?.name?.split(' ')[0] ?? '';\n\n return (\n <WelcomeShell\n t={t}\n userName={firstName}\n termsAcceptedAt={userData?.termsAcceptedAt ?? null}\n status={pageStatus}\n isProcessing={isProcessing}\n onAccept={() => handleTermsAcceptance(true)}\n onDecline={() => handleTermsAcceptance(false)}\n />\n );\n}\n\n/**\n * The presentational half: every translation the WelcomePage needs, in one\n * place, so the pre-session loading render and the real one cannot drift.\n */\nfunction WelcomeShell({\n t,\n status,\n userName = '',\n termsAcceptedAt = null,\n isProcessing = false,\n onAccept = () => {},\n onDecline = () => {},\n}: {\n t: (k: string, p?: Record<string, unknown>) => string;\n status: 'loading' | 'accepted' | 'form';\n userName?: string;\n termsAcceptedAt?: string | null;\n isProcessing?: boolean;\n onAccept?: () => void;\n onDecline?: () => void;\n}) {\n return (\n <WelcomePage\n userName={userName}\n termsAcceptedAt={termsAcceptedAt}\n isNewUser={!termsAcceptedAt}\n status={status}\n isProcessing={isProcessing}\n onAccept={onAccept}\n onDecline={onDecline}\n translations={{\n loading: t('loading'),\n welcomeTitle: t('welcomeTitle'),\n thanksForAccepting: t('thanksForAccepting'),\n welcomeUser: t('welcomeUser', { firstName: userName }),\n reviewTermsPrompt: t('reviewTermsPrompt'),\n termsSummaryTitle: t('termsSummaryTitle'),\n termsSummaryIntro: t('termsSummaryIntro'),\n acceptableUseTitle: t('acceptableUseTitle'),\n acceptableUseResponsible: t('acceptableUseResponsible'),\n acceptableUseRespect: t('acceptableUseRespect'),\n acceptableUseConduct: t('acceptableUseConduct'),\n prohibitedContentTitle: t('prohibitedContentTitle'),\n prohibitedContentIntro: t('prohibitedContentIntro'),\n prohibitedIllegal: t('prohibitedIllegal'),\n prohibitedAdult: t('prohibitedAdult'),\n prohibitedHate: t('prohibitedHate'),\n prohibitedViolence: t('prohibitedViolence'),\n prohibitedMisinformation: t('prohibitedMisinformation'),\n prohibitedPrivacy: t('prohibitedPrivacy'),\n prohibitedCopyright: t('prohibitedCopyright'),\n prohibitedMalware: t('prohibitedMalware'),\n prohibitedSpam: t('prohibitedSpam'),\n conductTitle: t('conductTitle'),\n conductDescription: t('conductDescription'),\n conductLink: t('conductLink'),\n conductPromotion: t('conductPromotion'),\n responsibilitiesTitle: t('responsibilitiesTitle'),\n responsibilitiesSecure: t('responsibilitiesSecure'),\n responsibilitiesReport: t('responsibilitiesReport'),\n responsibilitiesAccurate: t('responsibilitiesAccurate'),\n responsibilitiesComply: t('responsibilitiesComply'),\n violationsWarning: t('violationsWarning'),\n readFullTerms: t('readFullTerms'),\n termsOfService: t('termsOfService'),\n and: t('and'),\n privacyPolicy: t('privacyPolicy'),\n declineAndSignOut: t('declineAndSignOut'),\n acceptAndContinue: t('acceptAndContinue'),\n processing: t('processing'),\n legallyBound: t('legallyBound'),\n }}\n PageLayout={PageLayout}\n Link={Link}\n />\n );\n}\n"],"mappings":"kSA0BA,SAAwB,GAAU,CAChC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,eAAe,IAAK,CAAQ,EAC/E,EAAU,EAAW,EACrB,EAAU,EAAc,EAAQ,cAAc,GAAK,KAKzD,OAHK,GAGE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAwC,UAAY,CAAI,EAArC,EAAQ,EAA6B,GAFtD,EAAA,EAAA,IAAA,CAAC,EAAD,CAAc,OAAO,UAAa,CAAI,CAAA,CAGjD,CAEA,SAAS,EAAa,CACpB,UACA,GAIC,CACD,IAAM,EAAU,EAAW,EACrB,EAAO,EAAc,EAAQ,KAAK,GAAK,KACvC,EAAsB,EAAQ,GAC9B,EAAkB,CAAC,CAAC,EACpB,EAAW,GAAe,CAAE,EAAa,QAAQ,CAAE,CAAG,EACtD,EAAS,EAAU,EACnB,CAAC,EAAe,IAAA,EAAoB,EAAA,SAAA,CAAS,EAAK,EAClD,EAAQ,EAAS,EAEjB,EAAY,EAAoB,EAAS,CAAsB,EAE/D,EAAW,EAAc,GAAW,SAAS,EAC7C,EAAe,EAAc,GAAW,aAAa,GAAK,IAGhE,EAAA,EAAA,UAAA,KAAgB,CACd,GAAI,CAAC,EAAiB,CACpB,EAAO,KAAK,eAAe,EAC3B,MACF,CAEA,GAAI,GAAU,gBAAiB,CAC7B,EAAO,KAAK,GAAG,EACf,MACF,CACF,EAAG,CAAC,EAAiB,EAAQ,CAAQ,CAAC,EAEtC,IAAM,EAAwB,KAAO,IAAsB,CACzD,GAAI,CAAC,EAAU,CACT,GACF,EAAQ,EAAoB,EAAE,EAEhC,EAAO,KAAK,GAAG,EACf,MACF,CAEK,KACL,GAAI,CACF,MAAM,EAAU,YAAY,EAC5B,EAAiB,EAAI,EAErB,eAAiB,CACf,EAAO,KAAK,GAAG,CACjB,EAAG,GAAI,CACT,OAAS,EAAO,CACd,QAAQ,MAAM,0BAA2B,CAAK,EAC9C,EAAM,UAAU,EAAE,qBAAqB,CAAC,CAC1C,CACF,EAEM,EAAa,EAAgB,WAAa,OAC1C,EAAY,GAAM,MAAM,MAAM,GAAG,CAAC,CAAC,IAAM,GAE/C,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACK,EACH,SAAU,EACV,gBAAiB,GAAU,iBAAmB,KAC9C,OAAQ,EACM,eACd,aAAgB,EAAsB,EAAI,EAC1C,cAAiB,EAAsB,EAAK,CAC7C,CAAA,CAEL,CAMA,SAAS,EAAa,CACpB,IACA,SACA,WAAW,GACX,kBAAkB,KAClB,eAAe,GACf,eAAiB,CAAC,EAClB,gBAAkB,CAAC,GASlB,CACD,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACY,WACO,kBACjB,UAAW,CAAC,EACJ,SACM,eACJ,WACC,YACX,aAAc,CACZ,QAAS,EAAE,SAAS,EACpB,aAAc,EAAE,cAAc,EAC9B,mBAAoB,EAAE,oBAAoB,EAC1C,YAAa,EAAE,cAAe,CAAE,UAAW,CAAS,CAAC,EACrD,kBAAmB,EAAE,mBAAmB,EACxC,kBAAmB,EAAE,mBAAmB,EACxC,kBAAmB,EAAE,mBAAmB,EACxC,mBAAoB,EAAE,oBAAoB,EAC1C,yBAA0B,EAAE,0BAA0B,EACtD,qBAAsB,EAAE,sBAAsB,EAC9C,qBAAsB,EAAE,sBAAsB,EAC9C,uBAAwB,EAAE,wBAAwB,EAClD,uBAAwB,EAAE,wBAAwB,EAClD,kBAAmB,EAAE,mBAAmB,EACxC,gBAAiB,EAAE,iBAAiB,EACpC,eAAgB,EAAE,gBAAgB,EAClC,mBAAoB,EAAE,oBAAoB,EAC1C,yBAA0B,EAAE,0BAA0B,EACtD,kBAAmB,EAAE,mBAAmB,EACxC,oBAAqB,EAAE,qBAAqB,EAC5C,kBAAmB,EAAE,mBAAmB,EACxC,eAAgB,EAAE,gBAAgB,EAClC,aAAc,EAAE,cAAc,EAC9B,mBAAoB,EAAE,oBAAoB,EAC1C,YAAa,EAAE,aAAa,EAC5B,iBAAkB,EAAE,kBAAkB,EACtC,sBAAuB,EAAE,uBAAuB,EAChD,uBAAwB,EAAE,wBAAwB,EAClD,uBAAwB,EAAE,wBAAwB,EAClD,yBAA0B,EAAE,0BAA0B,EACtD,uBAAwB,EAAE,wBAAwB,EAClD,kBAAmB,EAAE,mBAAmB,EACxC,cAAe,EAAE,eAAe,EAChC,eAAgB,EAAE,gBAAgB,EAClC,IAAK,EAAE,KAAK,EACZ,cAAe,EAAE,eAAe,EAChC,kBAAmB,EAAE,mBAAmB,EACxC,kBAAmB,EAAE,mBAAmB,EACxC,WAAY,EAAE,YAAY,EAC1B,aAAc,EAAE,cAAc,CAChC,EACY,aACN,MACP,CAAA,CAEL"}
1
+ {"version":3,"file":"page-DYcAqNIR.js","names":[],"sources":["../../src/app/[locale]/auth/welcome/page.tsx"],"sourcesContent":["/**\n * Welcome Page - Thin Next.js wrapper\n *\n * This page handles Next.js-specific concerns (routing, auth, API calls)\n * and delegates rendering to the pure React WelcomePage component.\n */\n\nimport { useState, useEffect } from 'react';\nimport { useRouter } from '@/i18n/routing';\nimport { useTranslation } from 'react-i18next';\nimport { Link } from '@/i18n/routing';\nimport { PageLayout, useToast, useSemiont, useObservable } from '@semiont/react-ui';\nimport { WelcomePage } from '@semiont/react-ui';\nimport { createWelcomeStateUnit } from '@semiont/react-ui';\nimport { useSessionStateUnit } from '@semiont/react-ui';\nimport type { SemiontSession } from '@semiont/sdk';\n\n/**\n * The session gate is API shape now (SESSION-TYPED-FACTORIES.md):\n * `createWelcomeStateUnit` takes the SESSION, and `useSessionStateUnit`\n * constructs only when one exists and rebuilds (dispose-first) when it is\n * replaced — a KB switch or re-auth can no longer leave this page holding a\n * disposed client. This route is where that crashed in production: the user\n * lands here immediately after connecting, mid-activation.\n * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n */\nexport default function Welcome() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthWelcome.${k}`, p as any) as string;\n const semiont = useSemiont();\n const session = useObservable(semiont.activeSession$) ?? null;\n\n if (!session) {\n return <WelcomeShell status=\"loading\" t={t} />;\n }\n return <WelcomeInner key={session.id} session={session} t={t} />;\n}\n\nfunction WelcomeInner({\n session,\n t,\n}: {\n session: SemiontSession;\n t: (k: string, p?: Record<string, unknown>) => string;\n}) {\n const semiont = useSemiont();\n const user = useObservable(session.user$) ?? null;\n const activeKnowledgeBase = session.kb;\n const isAuthenticated = !!user;\n const signOut = (id: string) => { void semiont.signOut(id); };\n const router = useRouter();\n const [termsAccepted, setTermsAccepted] = useState(false);\n const toast = useToast();\n\n const stateUnit = useSessionStateUnit(session, createWelcomeStateUnit);\n\n const userData = useObservable(stateUnit?.userData$);\n const isProcessing = useObservable(stateUnit?.isProcessing$) ?? false;\n\n // Redirect if not authenticated or if terms already accepted\n useEffect(() => {\n if (!isAuthenticated) {\n router.push('/auth/connect');\n return;\n }\n\n if (userData?.termsAcceptedAt) {\n router.push('/');\n return;\n }\n }, [isAuthenticated, router, userData]);\n\n const handleTermsAcceptance = async (accepted: boolean) => {\n if (!accepted) {\n if (activeKnowledgeBase) {\n signOut(activeKnowledgeBase.id);\n }\n router.push('/');\n return;\n }\n\n if (!stateUnit) return;\n try {\n await stateUnit.acceptTerms();\n setTermsAccepted(true);\n\n setTimeout(() => {\n router.push('/');\n }, 1000);\n } catch (error) {\n console.error('Terms acceptance error:', error);\n toast.showError(t('errorAcceptingTerms'));\n }\n };\n\n const pageStatus = termsAccepted ? 'accepted' : 'form';\n const firstName = user?.name?.split(' ')[0] ?? '';\n\n return (\n <WelcomeShell\n t={t}\n userName={firstName}\n termsAcceptedAt={userData?.termsAcceptedAt ?? null}\n status={pageStatus}\n isProcessing={isProcessing}\n onAccept={() => handleTermsAcceptance(true)}\n onDecline={() => handleTermsAcceptance(false)}\n />\n );\n}\n\n/**\n * The presentational half: every translation the WelcomePage needs, in one\n * place, so the pre-session loading render and the real one cannot drift.\n */\nfunction WelcomeShell({\n t,\n status,\n userName = '',\n termsAcceptedAt = null,\n isProcessing = false,\n onAccept = () => {},\n onDecline = () => {},\n}: {\n t: (k: string, p?: Record<string, unknown>) => string;\n status: 'loading' | 'accepted' | 'form';\n userName?: string;\n termsAcceptedAt?: string | null;\n isProcessing?: boolean;\n onAccept?: () => void;\n onDecline?: () => void;\n}) {\n return (\n <WelcomePage\n userName={userName}\n termsAcceptedAt={termsAcceptedAt}\n isNewUser={!termsAcceptedAt}\n status={status}\n isProcessing={isProcessing}\n onAccept={onAccept}\n onDecline={onDecline}\n translations={{\n loading: t('loading'),\n welcomeTitle: t('welcomeTitle'),\n thanksForAccepting: t('thanksForAccepting'),\n welcomeUser: t('welcomeUser', { firstName: userName }),\n reviewTermsPrompt: t('reviewTermsPrompt'),\n termsSummaryTitle: t('termsSummaryTitle'),\n termsSummaryIntro: t('termsSummaryIntro'),\n acceptableUseTitle: t('acceptableUseTitle'),\n acceptableUseResponsible: t('acceptableUseResponsible'),\n acceptableUseRespect: t('acceptableUseRespect'),\n acceptableUseConduct: t('acceptableUseConduct'),\n prohibitedContentTitle: t('prohibitedContentTitle'),\n prohibitedContentIntro: t('prohibitedContentIntro'),\n prohibitedIllegal: t('prohibitedIllegal'),\n prohibitedAdult: t('prohibitedAdult'),\n prohibitedHate: t('prohibitedHate'),\n prohibitedViolence: t('prohibitedViolence'),\n prohibitedMisinformation: t('prohibitedMisinformation'),\n prohibitedPrivacy: t('prohibitedPrivacy'),\n prohibitedCopyright: t('prohibitedCopyright'),\n prohibitedMalware: t('prohibitedMalware'),\n prohibitedSpam: t('prohibitedSpam'),\n conductTitle: t('conductTitle'),\n conductDescription: t('conductDescription'),\n conductLink: t('conductLink'),\n conductPromotion: t('conductPromotion'),\n responsibilitiesTitle: t('responsibilitiesTitle'),\n responsibilitiesSecure: t('responsibilitiesSecure'),\n responsibilitiesReport: t('responsibilitiesReport'),\n responsibilitiesAccurate: t('responsibilitiesAccurate'),\n responsibilitiesComply: t('responsibilitiesComply'),\n violationsWarning: t('violationsWarning'),\n readFullTerms: t('readFullTerms'),\n termsOfService: t('termsOfService'),\n and: t('and'),\n privacyPolicy: t('privacyPolicy'),\n declineAndSignOut: t('declineAndSignOut'),\n acceptAndContinue: t('acceptAndContinue'),\n processing: t('processing'),\n legallyBound: t('legallyBound'),\n }}\n PageLayout={PageLayout}\n Link={Link}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{i as r,t as i}from"./vendor-GEwJ7U4m.js";import{T as a,p as o}from"./index-DikwAWOa.js";import{t as s}from"./KeyboardShortcutsContext-CBFjGYDr.js";import{t as c}from"./CookiePreferences-DHgkny7X.js";import{i as l,t as u}from"./routing-Cj_EvhT3.js";import{n as d,t as f}from"./routing-NHl4gs1C.js";var p=e(t()),m=i();function h(){let{t:e}=n(),t=(t,n)=>e(`AuthSignUp.${t}`,n),i=(t,n)=>e(`Footer.${t}`,n),h=(t,n)=>e(`Navigation.${t}`,n),g=(t,n)=>e(`Home.${t}`,n),[_]=r(),v=l(),y=(0,p.useContext)(s),b=_.get(`callbackUrl`)??`/auth/welcome`,x=async()=>{v.push(`/auth/connect?callbackUrl=${encodeURIComponent(b)}`)},S={pageTitle:t(`pageTitle`),signUpPrompt:t(`signUpPrompt`),signUpWithGoogle:t(`signUpWithGoogle`),creatingAccount:t(`creatingAccount`),approvedDomainsInfo:t(`approvedDomainsInfo`),termsAgreement:t(`termsAgreement`),alreadyHaveAccount:t(`alreadyHaveAccount`),tagline:g(`tagline`),backToHome:t(`backToHome`)};return(0,m.jsx)(o,{Link:f,routes:d,t:i,tNav:h,tHome:g,CookiePreferences:c,...y?.openKeyboardHelp&&{onOpenKeyboardHelp:y.openKeyboardHelp},className:`semiont-page-layout--auth`,showAuthLinks:!1,children:(0,m.jsx)(a,{onSignUp:x,Link:u,translations:S})})}function g(){return(0,m.jsx)(h,{})}export{g as default};
2
- //# sourceMappingURL=page-P0n7aLDe.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{i as r,t as i}from"./vendor-vK2W55bZ.js";import{T as a,p as o}from"./index-cHWd4mGO.js";import{t as s}from"./KeyboardShortcutsContext-CSFk3vP6.js";import{t as c}from"./CookiePreferences-CWZIFYNC.js";import{i as l,t as u}from"./routing-D-GkAfgE.js";import{n as d,t as f}from"./routing-D5d0e59H.js";var p=e(t()),m=i();function h(){let{t:e}=n(),t=(t,n)=>e(`AuthSignUp.${t}`,n),i=(t,n)=>e(`Footer.${t}`,n),h=(t,n)=>e(`Navigation.${t}`,n),g=(t,n)=>e(`Home.${t}`,n),[_]=r(),v=l(),y=(0,p.useContext)(s),b=_.get(`callbackUrl`)??`/auth/welcome`,x=async()=>{v.push(`/auth/connect?callbackUrl=${encodeURIComponent(b)}`)},S={pageTitle:t(`pageTitle`),signUpPrompt:t(`signUpPrompt`),signUpWithGoogle:t(`signUpWithGoogle`),creatingAccount:t(`creatingAccount`),approvedDomainsInfo:t(`approvedDomainsInfo`),termsAgreement:t(`termsAgreement`),alreadyHaveAccount:t(`alreadyHaveAccount`),tagline:g(`tagline`),backToHome:t(`backToHome`)};return(0,m.jsx)(o,{Link:f,routes:d,t:i,tNav:h,tHome:g,CookiePreferences:c,...y?.openKeyboardHelp&&{onOpenKeyboardHelp:y.openKeyboardHelp},className:`semiont-page-layout--auth`,showAuthLinks:!1,children:(0,m.jsx)(a,{onSignUp:x,Link:u,translations:S})})}function g(){return(0,m.jsx)(h,{})}export{g as default};
2
+ //# sourceMappingURL=page-DYqW4iWr.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-P0n7aLDe.js","names":[],"sources":["../../src/app/[locale]/auth/signup/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\nimport { PageLayout, SignUpForm } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nfunction SignUpContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthSignUp.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const router = useRouter();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const callbackUrl = searchParams.get('callbackUrl') ?? '/auth/welcome';\n\n const handleSignUp = async () => {\n router.push(`/auth/connect?callbackUrl=${encodeURIComponent(callbackUrl)}`);\n };\n\n const translations = {\n pageTitle: t('pageTitle'),\n signUpPrompt: t('signUpPrompt'),\n signUpWithGoogle: t('signUpWithGoogle'),\n creatingAccount: t('creatingAccount'),\n approvedDomainsInfo: t('approvedDomainsInfo'),\n termsAgreement: t('termsAgreement'),\n alreadyHaveAccount: t('alreadyHaveAccount'),\n tagline: tHome('tagline'),\n backToHome: t('backToHome'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-page-layout--auth\"\n showAuthLinks={false}\n >\n <SignUpForm onSignUp={handleSignUp} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n\nexport default function SignUp() {\n return <SignUpContent />;\n}\n"],"mappings":"oaAUA,SAAS,GAAgB,CACvB,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,cAAc,IAAK,CAAQ,EAC9E,GAAW,EAAW,IAAgC,EAAG,UAAU,IAAK,CAAQ,EAChF,GAAQ,EAAW,IAAgC,EAAG,cAAc,IAAK,CAAQ,EACjF,GAAS,EAAW,IAAgC,EAAG,QAAQ,IAAK,CAAQ,EAC5E,CAAC,GAAgB,EAAgB,EACjC,EAAS,EAAU,EACnB,GAAA,EAAkB,EAAA,WAAA,CAAW,CAAwB,EAErD,EAAc,EAAa,IAAI,aAAa,GAAK,gBAEjD,EAAe,SAAY,CAC/B,EAAO,KAAK,6BAA6B,mBAAmB,CAAW,GAAG,CAC5E,EAEM,EAAe,CACnB,UAAW,EAAE,WAAW,EACxB,aAAc,EAAE,cAAc,EAC9B,iBAAkB,EAAE,kBAAkB,EACtC,gBAAiB,EAAE,iBAAiB,EACpC,oBAAqB,EAAE,qBAAqB,EAC5C,eAAgB,EAAE,gBAAgB,EAClC,mBAAoB,EAAE,oBAAoB,EAC1C,QAAS,EAAM,SAAS,EACxB,WAAY,EAAE,YAAY,CAC5B,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAM,EACE,SACR,EAAG,EACG,OACC,QACY,oBACnB,GAAK,GAAiB,kBAAoB,CAAE,mBAAoB,EAAgB,gBAAiB,EACjG,UAAU,4BACV,cAAe,GAEf,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAAY,SAAU,EAAoB,OAAoB,cAAe,CAAA,CACnE,CAAA,CAEhB,CAEA,SAAwB,GAAS,CAC/B,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAgB,CAAA,CACzB"}
1
+ {"version":3,"file":"page-DYqW4iWr.js","names":[],"sources":["../../src/app/[locale]/auth/signup/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { useRouter } from '@/i18n/routing';\nimport { PageLayout, SignUpForm } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nfunction SignUpContent() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthSignUp.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const router = useRouter();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const callbackUrl = searchParams.get('callbackUrl') ?? '/auth/welcome';\n\n const handleSignUp = async () => {\n router.push(`/auth/connect?callbackUrl=${encodeURIComponent(callbackUrl)}`);\n };\n\n const translations = {\n pageTitle: t('pageTitle'),\n signUpPrompt: t('signUpPrompt'),\n signUpWithGoogle: t('signUpWithGoogle'),\n creatingAccount: t('creatingAccount'),\n approvedDomainsInfo: t('approvedDomainsInfo'),\n termsAgreement: t('termsAgreement'),\n alreadyHaveAccount: t('alreadyHaveAccount'),\n tagline: tHome('tagline'),\n backToHome: t('backToHome'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-page-layout--auth\"\n showAuthLinks={false}\n >\n <SignUpForm onSignUp={handleSignUp} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n\nexport default function SignUp() {\n return <SignUpContent />;\n}\n"],"mappings":"oaAUA,SAAS,GAAgB,CACvB,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,cAAc,IAAK,CAAQ,EAC9E,GAAW,EAAW,IAAgC,EAAG,UAAU,IAAK,CAAQ,EAChF,GAAQ,EAAW,IAAgC,EAAG,cAAc,IAAK,CAAQ,EACjF,GAAS,EAAW,IAAgC,EAAG,QAAQ,IAAK,CAAQ,EAC5E,CAAC,GAAgB,EAAgB,EACjC,EAAS,EAAU,EACnB,GAAA,EAAkB,EAAA,WAAA,CAAW,CAAwB,EAErD,EAAc,EAAa,IAAI,aAAa,GAAK,gBAEjD,EAAe,SAAY,CAC/B,EAAO,KAAK,6BAA6B,mBAAmB,CAAW,GAAG,CAC5E,EAEM,EAAe,CACnB,UAAW,EAAE,WAAW,EACxB,aAAc,EAAE,cAAc,EAC9B,iBAAkB,EAAE,kBAAkB,EACtC,gBAAiB,EAAE,iBAAiB,EACpC,oBAAqB,EAAE,qBAAqB,EAC5C,eAAgB,EAAE,gBAAgB,EAClC,mBAAoB,EAAE,oBAAoB,EAC1C,QAAS,EAAM,SAAS,EACxB,WAAY,EAAE,YAAY,CAC5B,EAEA,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAM,EACE,SACR,EAAG,EACG,OACC,QACY,oBACnB,GAAK,GAAiB,kBAAoB,CAAE,mBAAoB,EAAgB,gBAAiB,EACjG,UAAU,4BACV,cAAe,GAEf,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAAY,SAAU,EAAoB,OAAoB,cAAe,CAAA,CACnE,CAAA,CAEhB,CAEA,SAAwB,GAAS,CAC/B,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAgB,CAAA,CACzB"}
@@ -0,0 +1,2 @@
1
+ import{o as e,t}from"./vendor-vK2W55bZ.js";import{n}from"./routing-D-GkAfgE.js";var r=t();function i(){let t=n();return(0,r.jsx)(e,{to:`/${t}/admin/users`,replace:!0})}export{i as default};
2
+ //# sourceMappingURL=page-De7BG-0h.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-C5yXoqok.js","names":[],"sources":["../../src/app/[locale]/admin/page.tsx"],"sourcesContent":["import { Navigate } from 'react-router';\nimport { useLocale } from '@/i18n/routing';\n\nexport default function AdminPage() {\n const locale = useLocale();\n return <Navigate to={`/${locale}/admin/users`} replace />;\n}\n"],"mappings":"0FAGA,SAAwB,GAAY,CAClC,IAAM,EAAS,EAAU,EACzB,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAU,GAAI,IAAI,EAAO,cAAe,QAAA,EAAS,CAAA,CAC1D"}
1
+ {"version":3,"file":"page-De7BG-0h.js","names":[],"sources":["../../src/app/[locale]/admin/page.tsx"],"sourcesContent":["import { Navigate } from 'react-router';\nimport { useLocale } from '@/i18n/routing';\n\nexport default function AdminPage() {\n const locale = useLocale();\n return <Navigate to={`/${locale}/admin/users`} replace />;\n}\n"],"mappings":"0FAGA,SAAwB,GAAY,CAClC,IAAM,EAAS,EAAU,EACzB,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAU,GAAI,IAAI,EAAO,cAAe,QAAA,EAAS,CAAA,CAC1D"}
@@ -1,2 +1,2 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t}from"./i18n-zIDJOEfo.js";import{f as n,t as r}from"./vendor-GEwJ7U4m.js";import{At as i,Q as a,Y as o,b as s,in as c,x as l,y as u,z as d}from"./index-DikwAWOa.js";import{t as f}from"./ToolbarPanels-COwH5BrV.js";import{n as p}from"./routing-Cj_EvhT3.js";import{n as m,t as h}from"./routing-NHl4gs1C.js";import g from"./not-found-Ci6X4tm9.js";var _=e(t()),v=r();function y(){let e=n(),t=o(i().activeSession$)??null,r=e.id;if(!r)return(0,v.jsx)(g,{});if(!t)return(0,v.jsx)(s,{});let a=c(r);return(0,v.jsx)(b,{session:t,rId:a},`${t.id}:${a}`)}function b({session:e,rId:t}){let n=p(),r=o(e.streamState$)??`initial`,i=e.kb,g=a(e,e=>d(e,t)),y=o(g?.resource$),b=o(g?.isLoading$)??!0,x=o(g?.error$)??null;(0,_.useEffect)(()=>{x?console.error(`[Document] Resource ${t} failed to load:`,x.message):!b&&!y&&console.error(`[Document] Resource ${t} not found`)},[b,x,t,y]);let S=(0,_.useCallback)(async()=>{g?.invalidate()},[g]);if(x)return(0,v.jsx)(u,{error:x,onRetry:S});if(b)return(0,v.jsx)(s,{});if(!y)return(0,v.jsx)(u,{error:Error(`Resource ${t} not found`),onRetry:S});let C=y,w=c(C[`@id`]);return(0,v.jsx)(l,{resource:C,rUri:w,locale:n,Link:h,routes:m,ToolbarPanels:f,refetchDocument:S,streamStatus:r,knowledgeBaseName:i.label})}export{y as default};
2
- //# sourceMappingURL=page-DP-LdVo6.js.map
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t}from"./i18n-CywLsdxn.js";import{f as n,t as r}from"./vendor-vK2W55bZ.js";import{At as i,Q as a,Y as o,b as s,in as c,x as l,y as u,z as d}from"./index-cHWd4mGO.js";import{t as f}from"./ToolbarPanels-CbF3qEos.js";import{n as p}from"./routing-D-GkAfgE.js";import{n as m,t as h}from"./routing-D5d0e59H.js";import g from"./not-found-k9OeYO0z.js";var _=e(t()),v=r();function y(){let e=n(),t=o(i().activeSession$)??null,r=e.id;if(!r)return(0,v.jsx)(g,{});if(!t)return(0,v.jsx)(s,{});let a=c(r);return(0,v.jsx)(b,{session:t,rId:a},`${t.id}:${a}`)}function b({session:e,rId:t}){let n=p(),r=o(e.streamState$)??`initial`,i=e.kb,g=a(e,e=>d(e,t)),y=o(g?.resource$),b=o(g?.isLoading$)??!0,x=o(g?.error$)??null;(0,_.useEffect)(()=>{x?console.error(`[Document] Resource ${t} failed to load:`,x.message):!b&&!y&&console.error(`[Document] Resource ${t} not found`)},[b,x,t,y]);let S=(0,_.useCallback)(async()=>{g?.invalidate()},[g]);if(x)return(0,v.jsx)(u,{error:x,onRetry:S});if(b)return(0,v.jsx)(s,{});if(!y)return(0,v.jsx)(u,{error:Error(`Resource ${t} not found`),onRetry:S});let C=y,w=c(C[`@id`]);return(0,v.jsx)(l,{resource:C,rUri:w,locale:n,Link:h,routes:m,ToolbarPanels:f,refetchDocument:S,streamStatus:r,knowledgeBaseName:i.label})}export{y as default};
2
+ //# sourceMappingURL=page-DwyBQfbg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-DP-LdVo6.js","names":[],"sources":["../../src/app/[locale]/know/resource/[id]/page.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Resource Viewer Page - Minimal Next.js routing wrapper\n *\n * Handles only Next.js routing and initial resource loading.\n * All other concerns (data loading, events, UI state) are handled by ResourceViewerPage.\n */\n\nimport { useEffect, useCallback } from 'react';\nimport { useParams } from 'react-router';\nimport { useLocale } from '@/i18n/routing';\nimport { useSemiont, useObservable, useSessionStateUnit, createResourceLoaderStateUnit } from '@semiont/react-ui';\nimport { resourceId } from '@semiont/core';\nimport type { SemiontSession } from '@semiont/sdk';\nimport { Link, routes } from '@/lib/routing';\n\n// Feature components\nimport { ResourceLoadingState, ResourceErrorState, ResourceViewerPage } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport NotFound from '../../../not-found';\nimport type { SemiontResource } from '@semiont/react-ui';\n\n/**\n * Main page component — routing, session gating, and initial resource load.\n *\n * `useSessionStateUnit` runs its factory exactly once per mount, and React Router\n * keeps this component mounted across BOTH a `:id` param change and an\n * `activeSession$` swap. So the inner component is keyed on the pair\n * `${session.id}:${rId}` — either changing forces a full remount:\n *\n * - `rId` — otherwise the URL changes and the content stays on the\n * first-loaded resource (tab-to-tab navigation in the left nav).\n * - `session.id` — otherwise the loader keeps a DISPOSED client after a KB\n * switch or a re-authentication, and a disposed cache is inert by B16:\n * no fetch, no emission, \"Loading resource...\" forever. `kb.id` is not\n * enough here; `signIn` rebuilds the session under an unchanged `kb.id`.\n * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n *\n * Rendering is gated on a live session, so the inner component receives a\n * real one as a prop and can never read a session other than the one it is\n * keyed on.\n */\nexport default function KnowledgeResourcePage() {\n const params = useParams<{ id: string }>();\n const session = useObservable(useSemiont().activeSession$) ?? null;\n\n // `App.tsx` declares this route as `resource/:id`, so React Router cannot\n // match it without the param. That used to be written `params?.id as string`\n // — an assertion, which reads as harmless precisely because it is usually\n // true. It is not harmless: `resourceId()` takes a `string` and calls\n // `.includes('/')` on it immediately, so the one time the assumption broke\n // (a route-pattern rename) the page would throw a TypeError and white-screen\n // rather than degrade. Branching lets the compiler prove `id` is a string,\n // and turns that rename into a visible not-found.\n const id = params.id;\n if (!id) return <NotFound />;\n\n // Leaving a resource route on a KB switch is the SWITCH INITIATOR's job\n // (`KnowledgeBasePanel`), not this page's. A latch here cannot work:\n // `KnowledgeLayout` gates `<Outlet />` on a live session, so this component\n // is unmounted the instant `activeSession$` goes null and remounts fresh\n // against the new KB — it never observes the transition it would need to\n // detect. A previous attempt did exactly that and was dead in production\n // while its unit test (which renders this page WITHOUT the layout) passed.\n // See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n if (!session) return <ResourceLoadingState />;\n\n const rId = resourceId(id);\n return <KnowledgeResourcePageInner key={`${session.id}:${rId}`} session={session} rId={rId} />;\n}\n\nfunction KnowledgeResourcePageInner({\n session,\n rId,\n}: {\n session: SemiontSession;\n rId: ReturnType<typeof resourceId>;\n}) {\n const locale = useLocale();\n\n const streamStatus = useObservable(session.streamState$) ?? 'initial';\n const activeKnowledgeBase = session.kb;\n\n const loader = useSessionStateUnit(session, (s) => createResourceLoaderStateUnit(s, rId));\n const resourceData = useObservable(loader?.resource$);\n const isLoading = useObservable(loader?.isLoading$) ?? true;\n const loadError = useObservable(loader?.error$) ?? null;\n\n // Log error for debugging\n useEffect(() => {\n if (loadError) {\n console.error(`[Document] Resource ${rId} failed to load:`, loadError.message);\n } else if (!isLoading && !resourceData) {\n console.error(`[Document] Resource ${rId} not found`);\n }\n }, [isLoading, loadError, rId, resourceData]);\n\n const refetchDocument = useCallback(async () => {\n loader?.invalidate();\n }, [loader]);\n\n // Early return: a terminal failure carries the reason, so it beats both the\n // spinner and the generic not-found. Without this branch the load is stuck\n // in \"loading\" forever — a failed key has no value either.\n if (loadError) {\n return <ResourceErrorState error={loadError} onRetry={refetchDocument} />;\n }\n if (isLoading) {\n return <ResourceLoadingState />;\n }\n if (!resourceData) {\n return <ResourceErrorState error={new Error(`Resource ${rId} not found`)} onRetry={refetchDocument} />;\n }\n\n const resource = resourceData as SemiontResource;\n // resource['@id'] is now a bare ID\n const canonicalId = resourceId(resource['@id']);\n\n // Render with minimal props - all data loading/events handled inside ResourceViewerPage\n return (\n <ResourceViewerPage\n resource={resource}\n rUri={canonicalId}\n locale={locale}\n Link={Link}\n routes={routes}\n ToolbarPanels={ToolbarPanels}\n refetchDocument={refetchDocument}\n streamStatus={streamStatus}\n knowledgeBaseName={activeKnowledgeBase.label}\n />\n );\n}\n"],"mappings":"0aA2CA,SAAwB,GAAwB,CAC9C,IAAM,EAAS,EAA0B,EACnC,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,GAAK,KAUxD,EAAK,EAAO,GAClB,GAAI,CAAC,EAAI,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,CAAA,EAU3B,GAAI,CAAC,EAAS,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,CAAA,EAE5C,IAAM,EAAM,EAAW,CAAE,EACzB,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAkE,UAAc,KAAM,EAArD,GAAG,EAAQ,GAAG,GAAG,GAAoC,CAC/F,CAEA,SAAS,EAA2B,CAClC,UACA,OAIC,CACD,IAAM,EAAS,EAAU,EAEnB,EAAe,EAAc,EAAQ,YAAY,GAAK,UACtD,EAAsB,EAAQ,GAE9B,EAAS,EAAoB,EAAU,GAAM,EAA8B,EAAG,CAAG,CAAC,EAClF,EAAe,EAAc,GAAQ,SAAS,EAC9C,EAAY,EAAc,GAAQ,UAAU,GAAK,GACjD,EAAY,EAAc,GAAQ,MAAM,GAAK,MAGnD,EAAA,EAAA,UAAA,KAAgB,CACV,EACF,QAAQ,MAAM,uBAAuB,EAAI,kBAAmB,EAAU,OAAO,EACpE,CAAC,GAAa,CAAC,GACxB,QAAQ,MAAM,uBAAuB,EAAI,WAAW,CAExD,EAAG,CAAC,EAAW,EAAW,EAAK,CAAY,CAAC,EAE5C,IAAM,GAAA,EAAkB,EAAA,YAAA,CAAY,SAAY,CAC9C,GAAQ,WAAW,CACrB,EAAG,CAAC,CAAM,CAAC,EAKX,GAAI,EACF,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,MAAO,EAAW,QAAS,CAAkB,CAAA,EAE1E,GAAI,EACF,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,CAAA,EAEhC,GAAI,CAAC,EACH,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,MAAW,MAAM,YAAY,EAAI,WAAW,EAAG,QAAS,CAAkB,CAAA,EAGvG,IAAM,EAAW,EAEX,EAAc,EAAW,EAAS,MAAM,EAG9C,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACY,WACV,KAAM,EACE,SACF,OACE,SACO,gBACE,kBACH,eACd,kBAAmB,EAAoB,KACxC,CAAA,CAEL"}
1
+ {"version":3,"file":"page-DwyBQfbg.js","names":[],"sources":["../../src/app/[locale]/know/resource/[id]/page.tsx"],"sourcesContent":["\"use client\";\n\n/**\n * Resource Viewer Page - Minimal Next.js routing wrapper\n *\n * Handles only Next.js routing and initial resource loading.\n * All other concerns (data loading, events, UI state) are handled by ResourceViewerPage.\n */\n\nimport { useEffect, useCallback } from 'react';\nimport { useParams } from 'react-router';\nimport { useLocale } from '@/i18n/routing';\nimport { useSemiont, useObservable, useSessionStateUnit, createResourceLoaderStateUnit } from '@semiont/react-ui';\nimport { resourceId } from '@semiont/core';\nimport type { SemiontSession } from '@semiont/sdk';\nimport { Link, routes } from '@/lib/routing';\n\n// Feature components\nimport { ResourceLoadingState, ResourceErrorState, ResourceViewerPage } from '@semiont/react-ui';\nimport { ToolbarPanels } from '@/components/toolbar/ToolbarPanels';\nimport NotFound from '../../../not-found';\nimport type { SemiontResource } from '@semiont/react-ui';\n\n/**\n * Main page component — routing, session gating, and initial resource load.\n *\n * `useSessionStateUnit` runs its factory exactly once per mount, and React Router\n * keeps this component mounted across BOTH a `:id` param change and an\n * `activeSession$` swap. So the inner component is keyed on the pair\n * `${session.id}:${rId}` — either changing forces a full remount:\n *\n * - `rId` — otherwise the URL changes and the content stays on the\n * first-loaded resource (tab-to-tab navigation in the left nav).\n * - `session.id` — otherwise the loader keeps a DISPOSED client after a KB\n * switch or a re-authentication, and a disposed cache is inert by B16:\n * no fetch, no emission, \"Loading resource...\" forever. `kb.id` is not\n * enough here; `signIn` rebuilds the session under an unchanged `kb.id`.\n * See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n *\n * Rendering is gated on a live session, so the inner component receives a\n * real one as a prop and can never read a session other than the one it is\n * keyed on.\n */\nexport default function KnowledgeResourcePage() {\n const params = useParams<{ id: string }>();\n const session = useObservable(useSemiont().activeSession$) ?? null;\n\n // `App.tsx` declares this route as `resource/:id`, so React Router cannot\n // match it without the param. That used to be written `params?.id as string`\n // — an assertion, which reads as harmless precisely because it is usually\n // true. It is not harmless: `resourceId()` takes a `string` and calls\n // `.includes('/')` on it immediately, so the one time the assumption broke\n // (a route-pattern rename) the page would throw a TypeError and white-screen\n // rather than degrade. Branching lets the compiler prove `id` is a string,\n // and turns that rename into a visible not-found.\n const id = params.id;\n if (!id) return <NotFound />;\n\n // Leaving a resource route on a KB switch is the SWITCH INITIATOR's job\n // (`KnowledgeBasePanel`), not this page's. A latch here cannot work:\n // `KnowledgeLayout` gates `<Outlet />` on a live session, so this component\n // is unmounted the instant `activeSession$` goes null and remounts fresh\n // against the new KB — it never observes the transition it would need to\n // detect. A previous attempt did exactly that and was dead in production\n // while its unit test (which renders this page WITHOUT the layout) passed.\n // See .plans/bugs/resource-page-frozen-on-disposed-client-after-kb-switch.md\n if (!session) return <ResourceLoadingState />;\n\n const rId = resourceId(id);\n return <KnowledgeResourcePageInner key={`${session.id}:${rId}`} session={session} rId={rId} />;\n}\n\nfunction KnowledgeResourcePageInner({\n session,\n rId,\n}: {\n session: SemiontSession;\n rId: ReturnType<typeof resourceId>;\n}) {\n const locale = useLocale();\n\n const streamStatus = useObservable(session.streamState$) ?? 'initial';\n const activeKnowledgeBase = session.kb;\n\n const loader = useSessionStateUnit(session, (s) => createResourceLoaderStateUnit(s, rId));\n const resourceData = useObservable(loader?.resource$);\n const isLoading = useObservable(loader?.isLoading$) ?? true;\n const loadError = useObservable(loader?.error$) ?? null;\n\n // Log error for debugging\n useEffect(() => {\n if (loadError) {\n console.error(`[Document] Resource ${rId} failed to load:`, loadError.message);\n } else if (!isLoading && !resourceData) {\n console.error(`[Document] Resource ${rId} not found`);\n }\n }, [isLoading, loadError, rId, resourceData]);\n\n const refetchDocument = useCallback(async () => {\n loader?.invalidate();\n }, [loader]);\n\n // Early return: a terminal failure carries the reason, so it beats both the\n // spinner and the generic not-found. Without this branch the load is stuck\n // in \"loading\" forever — a failed key has no value either.\n if (loadError) {\n return <ResourceErrorState error={loadError} onRetry={refetchDocument} />;\n }\n if (isLoading) {\n return <ResourceLoadingState />;\n }\n if (!resourceData) {\n return <ResourceErrorState error={new Error(`Resource ${rId} not found`)} onRetry={refetchDocument} />;\n }\n\n const resource = resourceData as SemiontResource;\n // resource['@id'] is now a bare ID\n const canonicalId = resourceId(resource['@id']);\n\n // Render with minimal props - all data loading/events handled inside ResourceViewerPage\n return (\n <ResourceViewerPage\n resource={resource}\n rUri={canonicalId}\n locale={locale}\n Link={Link}\n routes={routes}\n ToolbarPanels={ToolbarPanels}\n refetchDocument={refetchDocument}\n streamStatus={streamStatus}\n knowledgeBaseName={activeKnowledgeBase.label}\n />\n );\n}\n"],"mappings":"0aA2CA,SAAwB,GAAwB,CAC9C,IAAM,EAAS,EAA0B,EACnC,EAAU,EAAc,EAAW,CAAC,CAAC,cAAc,GAAK,KAUxD,EAAK,EAAO,GAClB,GAAI,CAAC,EAAI,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAW,CAAA,EAU3B,GAAI,CAAC,EAAS,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,CAAA,EAE5C,IAAM,EAAM,EAAW,CAAE,EACzB,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAkE,UAAc,KAAM,EAArD,GAAG,EAAQ,GAAG,GAAG,GAAoC,CAC/F,CAEA,SAAS,EAA2B,CAClC,UACA,OAIC,CACD,IAAM,EAAS,EAAU,EAEnB,EAAe,EAAc,EAAQ,YAAY,GAAK,UACtD,EAAsB,EAAQ,GAE9B,EAAS,EAAoB,EAAU,GAAM,EAA8B,EAAG,CAAG,CAAC,EAClF,EAAe,EAAc,GAAQ,SAAS,EAC9C,EAAY,EAAc,GAAQ,UAAU,GAAK,GACjD,EAAY,EAAc,GAAQ,MAAM,GAAK,MAGnD,EAAA,EAAA,UAAA,KAAgB,CACV,EACF,QAAQ,MAAM,uBAAuB,EAAI,kBAAmB,EAAU,OAAO,EACpE,CAAC,GAAa,CAAC,GACxB,QAAQ,MAAM,uBAAuB,EAAI,WAAW,CAExD,EAAG,CAAC,EAAW,EAAW,EAAK,CAAY,CAAC,EAE5C,IAAM,GAAA,EAAkB,EAAA,YAAA,CAAY,SAAY,CAC9C,GAAQ,WAAW,CACrB,EAAG,CAAC,CAAM,CAAC,EAKX,GAAI,EACF,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,MAAO,EAAW,QAAS,CAAkB,CAAA,EAE1E,GAAI,EACF,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAuB,CAAA,EAEhC,GAAI,CAAC,EACH,OAAO,EAAA,EAAA,IAAA,CAAC,EAAD,CAAoB,MAAW,MAAM,YAAY,EAAI,WAAW,EAAG,QAAS,CAAkB,CAAA,EAGvG,IAAM,EAAW,EAEX,EAAc,EAAW,EAAS,MAAM,EAG9C,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACY,WACV,KAAM,EACE,SACF,OACE,SACO,gBACE,kBACH,eACd,kBAAmB,EAAoB,KACxC,CAAA,CAEL"}
@@ -1,4 +1,4 @@
1
- import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-zIDJOEfo.js";import{t as r}from"./vendor-GEwJ7U4m.js";import{p as i}from"./index-DikwAWOa.js";import{t as a}from"./KeyboardShortcutsContext-CBFjGYDr.js";import{t as o}from"./CookiePreferences-DHgkny7X.js";import{n as s,t as c}from"./routing-NHl4gs1C.js";var l=e(t()),u=r();function d(){let{t:e}=n(),t=(t,n)=>e(`Privacy.${t}`,n),{t:r}=n(),d=(e,t)=>r(`Footer.${e}`,t),{t:f}=n(),p=(e,t)=>f(`Navigation.${e}`,t),{t:m}=n(),h=(e,t)=>m(`Home.${e}`,t),g=(0,l.useContext)(a);return(0,u.jsx)(i,{Link:c,routes:s,t:d,tNav:p,tHome:h,CookiePreferences:o,...g?.openKeyboardHelp&&{onOpenKeyboardHelp:g.openKeyboardHelp},className:`semiont-static-page`,children:(0,u.jsx)(`div`,{className:`semiont-static-container`,children:(0,u.jsxs)(`div`,{className:`semiont-static-content`,children:[(0,u.jsx)(`header`,{className:`semiont-static-header`,children:(0,u.jsx)(`h1`,{className:`semiont-static-title`,children:t(`pageTitle`)})}),(0,u.jsxs)(`article`,{className:`semiont-static-article`,children:[(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`introTitle`)}),t(`intro`).split(`
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i18n-CywLsdxn.js";import{t as r}from"./vendor-vK2W55bZ.js";import{p as i}from"./index-cHWd4mGO.js";import{t as a}from"./KeyboardShortcutsContext-CSFk3vP6.js";import{t as o}from"./CookiePreferences-CWZIFYNC.js";import{n as s,t as c}from"./routing-D5d0e59H.js";var l=e(t()),u=r();function d(){let{t:e}=n(),t=(t,n)=>e(`Privacy.${t}`,n),{t:r}=n(),d=(e,t)=>r(`Footer.${e}`,t),{t:f}=n(),p=(e,t)=>f(`Navigation.${e}`,t),{t:m}=n(),h=(e,t)=>m(`Home.${e}`,t),g=(0,l.useContext)(a);return(0,u.jsx)(i,{Link:c,routes:s,t:d,tNav:p,tHome:h,CookiePreferences:o,...g?.openKeyboardHelp&&{onOpenKeyboardHelp:g.openKeyboardHelp},className:`semiont-static-page`,children:(0,u.jsx)(`div`,{className:`semiont-static-container`,children:(0,u.jsxs)(`div`,{className:`semiont-static-content`,children:[(0,u.jsx)(`header`,{className:`semiont-static-header`,children:(0,u.jsx)(`h1`,{className:`semiont-static-title`,children:t(`pageTitle`)})}),(0,u.jsxs)(`article`,{className:`semiont-static-article`,children:[(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`introTitle`)}),t(`intro`).split(`
2
2
 
3
3
  `).map((e,t)=>(0,u.jsx)(`p`,{children:e},t))]}),(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`infoCollectTitle`)}),(0,u.jsx)(`h3`,{children:t(`personalInfoTitle`)}),(0,u.jsx)(`ul`,{children:t(`personalInfo`).split(`
4
4
  `).map((e,t)=>(0,u.jsx)(`li`,{children:e},t))}),(0,u.jsx)(`h3`,{children:t(`autoCollectTitle`)}),(0,u.jsx)(`ul`,{children:t(`autoCollect`).split(`
@@ -17,4 +17,4 @@ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./i
17
17
 
18
18
  `).map((e,t)=>t===0?(0,u.jsx)(`p`,{children:e},t):(0,u.jsx)(`ul`,{children:e.split(`
19
19
  `).map((e,t)=>(0,u.jsx)(`li`,{children:e},t))},t))]}),(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`dataRetentionTitle`)}),(0,u.jsx)(`p`,{children:t(`dataRetention`)})]}),(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`internationalTransfersTitle`)}),(0,u.jsx)(`p`,{children:t(`internationalTransfers`)})]}),(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`contactTitle`)}),(0,u.jsx)(`p`,{children:t(`contactIntro`)}),(0,u.jsx)(`div`,{className:`semiont-static-info-box`,children:(0,u.jsxs)(`p`,{children:[(0,u.jsx)(`strong`,{children:t(`contactEmail`)}),` privacy@semiont.com`,(0,u.jsx)(`br`,{}),(0,u.jsx)(`strong`,{children:t(`contactAddress`)}),` [Your Company Address]`]})})]}),(0,u.jsxs)(`section`,{children:[(0,u.jsx)(`h2`,{children:t(`updatesTitle`)}),(0,u.jsx)(`p`,{children:t(`updates`)}),(0,u.jsx)(`footer`,{className:`semiont-static-footer`,children:(0,u.jsx)(`p`,{children:(0,u.jsx)(`strong`,{children:t(`lastUpdated`,{date:new Date().toLocaleDateString()})})})})]})]})]})})})}export{d as default};
20
- //# sourceMappingURL=page-C9DNsp3i.js.map
20
+ //# sourceMappingURL=page-OhVx5cMH.js.map