@semiont/browser 0.5.28 → 0.5.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/assets/{CookiePreferences-UVUl27XP.js → CookiePreferences-DHgkny7X.js} +2 -2
  2. package/dist/assets/{CookiePreferences-UVUl27XP.js.map → CookiePreferences-DHgkny7X.js.map} +1 -1
  3. package/dist/assets/{KeyboardShortcutsContext-D8VjaYfK.js → KeyboardShortcutsContext-CBFjGYDr.js} +2 -2
  4. package/dist/assets/{KeyboardShortcutsContext-D8VjaYfK.js.map → KeyboardShortcutsContext-CBFjGYDr.js.map} +1 -1
  5. package/dist/assets/{PdfAnnotationCanvas.client-LSH3PZPY-B8dnEIps.js → PdfAnnotationCanvas.client-LSH3PZPY-DuFgtMhI.js} +2 -2
  6. package/dist/assets/{PdfAnnotationCanvas.client-LSH3PZPY-B8dnEIps.js.map → PdfAnnotationCanvas.client-LSH3PZPY-DuFgtMhI.js.map} +1 -1
  7. package/dist/assets/{ToolbarPanels-Bf3f6THq.js → ToolbarPanels-COwH5BrV.js} +2 -2
  8. package/dist/assets/{ToolbarPanels-Bf3f6THq.js.map → ToolbarPanels-COwH5BrV.js.map} +1 -1
  9. package/dist/assets/{client-kvvQzQsd.js → client-5Fze6y-0.js} +2 -2
  10. package/dist/assets/{client-kvvQzQsd.js.map → client-5Fze6y-0.js.map} +1 -1
  11. package/dist/assets/{client-B2rbsRTh.js → client-Br8hVPSL.js} +2 -2
  12. package/dist/assets/{client-B2rbsRTh.js.map → client-Br8hVPSL.js.map} +1 -1
  13. package/dist/assets/{en-R5XA26NF-Cuox0uQn.js → en-R5XA26NF-B_rafaNP.js} +1 -1
  14. package/dist/assets/index-DikwAWOa.js +142 -0
  15. package/dist/assets/index-DikwAWOa.js.map +1 -0
  16. package/dist/assets/{layout-5m7ZN_sv.js → layout-B4mP42tI.js} +2 -2
  17. package/dist/assets/{layout-5m7ZN_sv.js.map → layout-B4mP42tI.js.map} +1 -1
  18. package/dist/assets/{layout-DmBlX8Wv.js → layout-BYYBhrUM.js} +2 -2
  19. package/dist/assets/{layout-DmBlX8Wv.js.map → layout-BYYBhrUM.js.map} +1 -1
  20. package/dist/assets/layout-CLyZ3jHm.js +2 -0
  21. package/dist/assets/layout-CLyZ3jHm.js.map +1 -0
  22. package/dist/assets/{layout-ChREg3PD.js → layout-DOcJwulX.js} +2 -2
  23. package/dist/assets/{layout-ChREg3PD.js.map → layout-DOcJwulX.js.map} +1 -1
  24. package/dist/assets/{not-found-BOkh1PJR.js → not-found-Ci6X4tm9.js} +2 -2
  25. package/dist/assets/{not-found-BOkh1PJR.js.map → not-found-Ci6X4tm9.js.map} +1 -1
  26. package/dist/assets/{page-Bfk44QuW.js → page--ofr4a58.js} +2 -2
  27. package/dist/assets/{page-Bfk44QuW.js.map → page--ofr4a58.js.map} +1 -1
  28. package/dist/assets/{page-KrH4sIjg.js → page-BYW9mwEo.js} +2 -2
  29. package/dist/assets/{page-KrH4sIjg.js.map → page-BYW9mwEo.js.map} +1 -1
  30. package/dist/assets/page-C5yXoqok.js +2 -0
  31. package/dist/assets/{page-De2leEHb.js.map → page-C5yXoqok.js.map} +1 -1
  32. package/dist/assets/{page-DL5wQ3pG.js → page-C9DNsp3i.js} +2 -2
  33. package/dist/assets/{page-DL5wQ3pG.js.map → page-C9DNsp3i.js.map} +1 -1
  34. package/dist/assets/{page-DGXyF1RD.js → page-C9pkWGVi.js} +2 -2
  35. package/dist/assets/{page-DGXyF1RD.js.map → page-C9pkWGVi.js.map} +1 -1
  36. package/dist/assets/{page-C76A3Tvm.js → page-CCSJqjWt.js} +2 -2
  37. package/dist/assets/{page-C76A3Tvm.js.map → page-CCSJqjWt.js.map} +1 -1
  38. package/dist/assets/{page-BOgSgEl-.js → page-CO9mlfK-.js} +2 -2
  39. package/dist/assets/{page-BOgSgEl-.js.map → page-CO9mlfK-.js.map} +1 -1
  40. package/dist/assets/{page-CgiAumZ6.js → page-CSMUzvRi.js} +2 -2
  41. package/dist/assets/{page-CgiAumZ6.js.map → page-CSMUzvRi.js.map} +1 -1
  42. package/dist/assets/{page-_daGpD2K.js → page-Ce6fw6P9.js} +2 -2
  43. package/dist/assets/{page-_daGpD2K.js.map → page-Ce6fw6P9.js.map} +1 -1
  44. package/dist/assets/{page-C45jnN3u.js → page-DP-LdVo6.js} +2 -2
  45. package/dist/assets/{page-C45jnN3u.js.map → page-DP-LdVo6.js.map} +1 -1
  46. package/dist/assets/{page-C7fj48Yd.js → page-DhCdpcx2.js} +2 -2
  47. package/dist/assets/{page-C7fj48Yd.js.map → page-DhCdpcx2.js.map} +1 -1
  48. package/dist/assets/{page-B2tTEfKp.js → page-DveRPD7J.js} +2 -2
  49. package/dist/assets/{page-B2tTEfKp.js.map → page-DveRPD7J.js.map} +1 -1
  50. package/dist/assets/{page-ZPLCKgGQ.js → page-FoKU0iob.js} +2 -2
  51. package/dist/assets/{page-ZPLCKgGQ.js.map → page-FoKU0iob.js.map} +1 -1
  52. package/dist/assets/{page-CrXiz4-J.js → page-KNTWGNqU.js} +2 -2
  53. package/dist/assets/{page-CrXiz4-J.js.map → page-KNTWGNqU.js.map} +1 -1
  54. package/dist/assets/{page-CQJx-JXR.js → page-P0n7aLDe.js} +2 -2
  55. package/dist/assets/{page-CQJx-JXR.js.map → page-P0n7aLDe.js.map} +1 -1
  56. package/dist/assets/{page-zpMXForS.js → page-QXiNSjcX.js} +2 -2
  57. package/dist/assets/{page-zpMXForS.js.map → page-QXiNSjcX.js.map} +1 -1
  58. package/dist/assets/{page-DXZrFCmr.js → page-S-g5YvWH.js} +2 -2
  59. package/dist/assets/{page-DXZrFCmr.js.map → page-S-g5YvWH.js.map} +1 -1
  60. package/dist/assets/{page-BiEYKai0.js → page-jVd15vic.js} +2 -2
  61. package/dist/assets/{page-BiEYKai0.js.map → page-jVd15vic.js.map} +1 -1
  62. package/dist/assets/{pdf-Dicw8YoH.js → pdf-DLN6u172.js} +2 -2
  63. package/dist/assets/{pdf-Dicw8YoH.js.map → pdf-DLN6u172.js.map} +1 -1
  64. package/dist/assets/{routing-BJiyORAR.js → routing-Cj_EvhT3.js} +2 -2
  65. package/dist/assets/{routing-BJiyORAR.js.map → routing-Cj_EvhT3.js.map} +1 -1
  66. package/dist/assets/{routing-CygMogfF.js → routing-NHl4gs1C.js} +2 -2
  67. package/dist/assets/{routing-CygMogfF.js.map → routing-NHl4gs1C.js.map} +1 -1
  68. package/dist/assets/vendor-GEwJ7U4m.js +10 -0
  69. package/dist/assets/vendor-GEwJ7U4m.js.map +1 -0
  70. package/dist/assets/{web-D6kqUluK.js → web-CyrRuj1m.js} +2 -2
  71. package/dist/assets/{web-D6kqUluK.js.map → web-CyrRuj1m.js.map} +1 -1
  72. package/dist/index.html +2 -2
  73. package/package.json +1 -1
  74. package/dist/assets/index-BkTRe71w.js +0 -142
  75. package/dist/assets/index-BkTRe71w.js.map +0 -1
  76. package/dist/assets/layout-xM3HYPpK.js +0 -2
  77. package/dist/assets/layout-xM3HYPpK.js.map +0 -1
  78. package/dist/assets/page-De2leEHb.js +0 -2
  79. package/dist/assets/vendor-BVP6ONpk.js +0 -10
  80. package/dist/assets/vendor-BVP6ONpk.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"page-DL5wQ3pG.js","names":[],"sources":["../../src/app/[locale]/privacy/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function PrivacyPolicyPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Privacy.${k}`, p as any) as string;\n const { t: _tFooter } = useTranslation();\n const tFooter = (k: string, p?: Record<string, unknown>) => _tFooter(`Footer.${k}`, p as any) as string;\n const { t: _tNav } = useTranslation();\n const tNav = (k: string, p?: Record<string, unknown>) => _tNav(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-static-page\"\n >\n <div className=\"semiont-static-container\">\n <div className=\"semiont-static-content\">\n <header className=\"semiont-static-header\">\n <h1 className=\"semiont-static-title\">{t('pageTitle')}</h1>\n </header>\n\n <article className=\"semiont-static-article\">\n <section>\n <h2>{t('introTitle')}</h2>\n {t('intro').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </section>\n\n <section>\n <h2>{t('infoCollectTitle')}</h2>\n\n <h3>{t('personalInfoTitle')}</h3>\n <ul>\n {t('personalInfo').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('autoCollectTitle')}</h3>\n <ul>\n {t('autoCollect').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('howWeUseTitle')}</h2>\n <ul>\n {t('howWeUse').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('cookiePolicyTitle')}</h2>\n <p>\n {t('cookiePolicyIntro')}\n </p>\n\n <h3>{t('cookieCategoriesTitle')}</h3>\n\n <div className=\"semiont-static-cookie-grid\">\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('necessaryCookiesTitle')}</h4>\n {t('necessaryCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('analyticsCookiesTitle')}</h4>\n {t('analyticsCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('marketingCookiesTitle')}</h4>\n {t('marketingCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('preferenceCookiesTitle')}</h4>\n {t('preferenceCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n </div>\n </section>\n\n <section>\n <h2>{t('yourRightsTitle')}</h2>\n\n <h3>{t('gdprRightsTitle')}</h3>\n <ul>\n {t('gdprRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('ccpaRightsTitle')}</h3>\n <ul>\n {t('ccpaRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('dataSecurityTitle')}</h2>\n {t('dataSecurity').split('\\n\\n').map((block, i) => {\n if (i === 0) {\n return (\n <p key={i}>\n {block}\n </p>\n );\n }\n return (\n <ul key={i}>\n {block.split('\\n').map((item, j) => (\n <li key={j}>{item}</li>\n ))}\n </ul>\n );\n })}\n </section>\n\n <section>\n <h2>{t('dataRetentionTitle')}</h2>\n <p>\n {t('dataRetention')}\n </p>\n </section>\n\n <section>\n <h2>{t('internationalTransfersTitle')}</h2>\n <p>\n {t('internationalTransfers')}\n </p>\n </section>\n\n <section>\n <h2>{t('contactTitle')}</h2>\n <p>\n {t('contactIntro')}\n </p>\n <div className=\"semiont-static-info-box\">\n <p>\n <strong>{t('contactEmail')}</strong> privacy@semiont.com<br />\n <strong>{t('contactAddress')}</strong> [Your Company Address]\n </p>\n </div>\n </section>\n\n <section>\n <h2>{t('updatesTitle')}</h2>\n <p>\n {t('updates')}\n </p>\n <footer className=\"semiont-static-footer\">\n <p>\n <strong>{t('lastUpdated', { date: new Date().toLocaleDateString() })}</strong>\n </p>\n </footer>\n </section>\n </article>\n </div>\n </div>\n </PageLayout>\n );\n}"],"mappings":"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"}
1
+ {"version":3,"file":"page-C9DNsp3i.js","names":[],"sources":["../../src/app/[locale]/privacy/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\n\nexport default function PrivacyPolicyPage() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`Privacy.${k}`, p as any) as string;\n const { t: _tFooter } = useTranslation();\n const tFooter = (k: string, p?: Record<string, unknown>) => _tFooter(`Footer.${k}`, p as any) as string;\n const { t: _tNav } = useTranslation();\n const tNav = (k: string, p?: Record<string, unknown>) => _tNav(`Navigation.${k}`, p as any) as string;\n const { t: _tHome } = useTranslation();\n const tHome = (k: string, p?: Record<string, unknown>) => _tHome(`Home.${k}`, p as any) as string;\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"semiont-static-page\"\n >\n <div className=\"semiont-static-container\">\n <div className=\"semiont-static-content\">\n <header className=\"semiont-static-header\">\n <h1 className=\"semiont-static-title\">{t('pageTitle')}</h1>\n </header>\n\n <article className=\"semiont-static-article\">\n <section>\n <h2>{t('introTitle')}</h2>\n {t('intro').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </section>\n\n <section>\n <h2>{t('infoCollectTitle')}</h2>\n\n <h3>{t('personalInfoTitle')}</h3>\n <ul>\n {t('personalInfo').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('autoCollectTitle')}</h3>\n <ul>\n {t('autoCollect').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('howWeUseTitle')}</h2>\n <ul>\n {t('howWeUse').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('cookiePolicyTitle')}</h2>\n <p>\n {t('cookiePolicyIntro')}\n </p>\n\n <h3>{t('cookieCategoriesTitle')}</h3>\n\n <div className=\"semiont-static-cookie-grid\">\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('necessaryCookiesTitle')}</h4>\n {t('necessaryCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('analyticsCookiesTitle')}</h4>\n {t('analyticsCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('marketingCookiesTitle')}</h4>\n {t('marketingCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n\n <div className=\"semiont-static-cookie-card\">\n <h4>{t('preferenceCookiesTitle')}</h4>\n {t('preferenceCookies').split('\\n\\n').map((para, i) => (\n <p key={i}>\n {para}\n </p>\n ))}\n </div>\n </div>\n </section>\n\n <section>\n <h2>{t('yourRightsTitle')}</h2>\n\n <h3>{t('gdprRightsTitle')}</h3>\n <ul>\n {t('gdprRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n\n <h3>{t('ccpaRightsTitle')}</h3>\n <ul>\n {t('ccpaRights').split('\\n').map((item, i) => (\n <li key={i}>{item}</li>\n ))}\n </ul>\n </section>\n\n <section>\n <h2>{t('dataSecurityTitle')}</h2>\n {t('dataSecurity').split('\\n\\n').map((block, i) => {\n if (i === 0) {\n return (\n <p key={i}>\n {block}\n </p>\n );\n }\n return (\n <ul key={i}>\n {block.split('\\n').map((item, j) => (\n <li key={j}>{item}</li>\n ))}\n </ul>\n );\n })}\n </section>\n\n <section>\n <h2>{t('dataRetentionTitle')}</h2>\n <p>\n {t('dataRetention')}\n </p>\n </section>\n\n <section>\n <h2>{t('internationalTransfersTitle')}</h2>\n <p>\n {t('internationalTransfers')}\n </p>\n </section>\n\n <section>\n <h2>{t('contactTitle')}</h2>\n <p>\n {t('contactIntro')}\n </p>\n <div className=\"semiont-static-info-box\">\n <p>\n <strong>{t('contactEmail')}</strong> privacy@semiont.com<br />\n <strong>{t('contactAddress')}</strong> [Your Company Address]\n </p>\n </div>\n </section>\n\n <section>\n <h2>{t('updatesTitle')}</h2>\n <p>\n {t('updates')}\n </p>\n <footer className=\"semiont-static-footer\">\n <p>\n <strong>{t('lastUpdated', { date: new Date().toLocaleDateString() })}</strong>\n </p>\n </footer>\n </section>\n </article>\n </div>\n </div>\n </PageLayout>\n );\n}"],"mappings":"qWAOA,SAAwB,GAAoB,CAC1C,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,WAAW,IAAK,CAAQ,EAC3E,CAAE,EAAG,GAAa,EAAe,EACjC,GAAW,EAAW,IAAgC,EAAS,UAAU,IAAK,CAAQ,EACtF,CAAE,EAAG,GAAU,EAAe,EAC9B,GAAQ,EAAW,IAAgC,EAAM,cAAc,IAAK,CAAQ,EACpF,CAAE,EAAG,GAAW,EAAe,EAC/B,GAAS,EAAW,IAAgC,EAAO,QAAQ,IAAK,CAAQ,EAChF,GAAA,EAAkB,EAAA,WAAA,CAAW,CAAwB,EAE3D,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACQ,OACE,SACR,EAAG,EACG,OACC,QACY,oBACnB,GAAK,GAAiB,kBAAoB,CAAE,mBAAoB,EAAgB,gBAAiB,EACjG,UAAU,sBAEV,UAAA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,2BACb,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,yBAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAU,wBAChB,UAAA,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,uBAAwB,SAAA,EAAE,WAAW,CAAM,CAAA,CACnD,CAAA,GAER,EAAA,EAAA,KAAA,CAAC,UAAD,CAAS,UAAU,yBAAnB,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,YAAY,CAAM,CAAA,EACxB,EAAE,OAAO,CAAC,CAAC,MAAM;;CAAM,CAAC,CAAC,KAAK,EAAM,KACnC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,CACA,EAFK,CAEL,CACJ,CACM,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,kBAAkB,CAAM,CAAA,GAE/B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,mBAAmB,CAAM,CAAA,GAChC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,cAAc,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACxC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,kBAAkB,CAAM,CAAA,GAC/B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,aAAa,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACvC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,CACG,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,eAAe,CAAM,CAAA,GAC5B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,UAAU,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACpC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,CACG,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,mBAAmB,CAAM,CAAA,GAChC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,mBAAmB,CACrB,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,uBAAuB,CAAM,CAAA,GAEpC,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6BAAf,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6BAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,uBAAuB,CAAM,CAAA,EACnC,EAAE,kBAAkB,CAAC,CAAC,MAAM;;CAAM,CAAC,CAAC,KAAK,EAAM,KAC9C,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,CACA,EAFK,CAEL,CACJ,CACE,KAEL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6BAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,uBAAuB,CAAM,CAAA,EACnC,EAAE,kBAAkB,CAAC,CAAC,MAAM;;CAAM,CAAC,CAAC,KAAK,EAAM,KAC9C,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,CACA,EAFK,CAEL,CACJ,CACE,KAEL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6BAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,uBAAuB,CAAM,CAAA,EACnC,EAAE,kBAAkB,CAAC,CAAC,MAAM;;CAAM,CAAC,CAAC,KAAK,EAAM,KAC9C,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,CACA,EAFK,CAEL,CACJ,CACE,KAEL,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,6BAAf,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,wBAAwB,CAAM,CAAA,EACpC,EAAE,mBAAmB,CAAC,CAAC,MAAM;;CAAM,CAAC,CAAC,KAAK,EAAM,KAC/C,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,CACA,EAFK,CAEL,CACJ,CACE,GACF,GACE,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,iBAAiB,CAAM,CAAA,GAE9B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,iBAAiB,CAAM,CAAA,GAC9B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,YAAY,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACtC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,iBAAiB,CAAM,CAAA,GAC9B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,YAAY,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACtC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,CACG,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,mBAAmB,CAAM,CAAA,EAC/B,EAAE,cAAc,CAAC,CAAC,MAAM;;CAAM,CAAC,CAAC,KAAK,EAAO,IACvC,IAAM,GAEN,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,CACA,EAFK,CAEL,GAIL,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAM,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KAC5B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,EAJK,CAIL,CAEP,CACM,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,oBAAoB,CAAM,CAAA,GACjC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,eAAe,CACjB,CAAA,CACI,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,6BAA6B,CAAM,CAAA,GAC1C,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,wBAAwB,CAC1B,CAAA,CACI,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,cAAc,CAAM,CAAA,GAC3B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,cAAc,CAChB,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,0BACb,UAAA,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAE,cAAc,CAAU,CAAA,EAAC,wBAAoB,EAAA,EAAA,IAAA,CAAC,KAAD,CAAK,CAAA,GAC7D,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAE,gBAAgB,CAAU,CAAA,EAAC,yBACrC,CAAA,CAAA,CACA,CAAA,CACE,CAAA,CAAA,GAET,EAAA,EAAA,KAAA,CAAC,UAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,cAAc,CAAM,CAAA,GAC3B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,SAAS,CACX,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAU,wBAChB,UAAA,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,UACE,EAAA,EAAA,IAAA,CAAC,SAAD,CAAA,SAAS,EAAE,cAAe,CAAE,KAAM,IAAI,KAAK,CAAA,CAAE,mBAAmB,CAAE,CAAC,CAAU,CAAA,CAC5E,CAAA,CACG,CAAA,CACD,CAAA,CAAA,CACF,CACN,CAAA,CAAA,GACF,CAAA,CACK,CAAA,CAEhB"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./i18n-zIDJOEfo.js";import{t}from"./vendor-BVP6ONpk.js";import{$ as n,At as r,L as i,Q as a,Y as o,et as s,v as c}from"./index-BkTRe71w.js";import{t as l}from"./ToolbarPanels-Bf3f6THq.js";import{i as u}from"./routing-BJiyORAR.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-DGXyF1RD.js.map
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 +1 @@
1
- {"version":3,"file":"page-DGXyF1RD.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-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,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-BVP6ONpk.js";import{C as i,N as a}from"./index-BkTRe71w.js";import{i as o}from"./routing-BJiyORAR.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-C76A3Tvm.js.map
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 +1 @@
1
- {"version":3,"file":"page-C76A3Tvm.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-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,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-BJiyORAR.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-BOgSgEl-.js.map
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 +1 @@
1
- {"version":3,"file":"page-BOgSgEl-.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-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,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-BVP6ONpk.js";import{i as a,p as o}from"./index-BkTRe71w.js";import{t as s}from"./KeyboardShortcutsContext-D8VjaYfK.js";import{t as c}from"./CookiePreferences-UVUl27XP.js";import{t as l}from"./routing-BJiyORAR.js";import{n as u,t as d}from"./routing-CygMogfF.js";var f=e(t()),p=i();function m(){let{t:e}=n(),t=(t,n)=>e(`AuthError.${t}`,n),i=(t,n)=>e(`Footer.${t}`,n),m=(t,n)=>e(`Navigation.${t}`,n),h=(t,n)=>e(`Home.${t}`,n),[g]=r(),_=(0,f.useContext)(s),v=g.get(`error`)??null,y={pageTitle:t(`pageTitle`),tryAgain:t(`tryAgain`),errorConfiguration:t(`errorConfiguration`),errorAccessDenied:t(`errorAccessDenied`),errorVerification:t(`errorVerification`),errorGeneric:t(`errorGeneric`)};return(0,p.jsx)(o,{Link:d,routes:u,t:i,tNav:m,tHome:h,CookiePreferences:c,..._?.openKeyboardHelp&&{onOpenKeyboardHelp:_.openKeyboardHelp},className:`bg-gray-50 dark:bg-gray-900`,children:(0,p.jsx)(a,{errorType:v,Link:l,translations:y})})}export{m as default};
2
- //# sourceMappingURL=page-CgiAumZ6.js.map
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{i 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{t as l}from"./routing-Cj_EvhT3.js";import{n as u,t as d}from"./routing-NHl4gs1C.js";var f=e(t()),p=i();function m(){let{t:e}=n(),t=(t,n)=>e(`AuthError.${t}`,n),i=(t,n)=>e(`Footer.${t}`,n),m=(t,n)=>e(`Navigation.${t}`,n),h=(t,n)=>e(`Home.${t}`,n),[g]=r(),_=(0,f.useContext)(s),v=g.get(`error`)??null,y={pageTitle:t(`pageTitle`),tryAgain:t(`tryAgain`),errorConfiguration:t(`errorConfiguration`),errorAccessDenied:t(`errorAccessDenied`),errorVerification:t(`errorVerification`),errorGeneric:t(`errorGeneric`)};return(0,p.jsx)(o,{Link:d,routes:u,t:i,tNav:m,tHome:h,CookiePreferences:c,..._?.openKeyboardHelp&&{onOpenKeyboardHelp:_.openKeyboardHelp},className:`bg-gray-50 dark:bg-gray-900`,children:(0,p.jsx)(a,{errorType:v,Link:l,translations:y})})}export{m as default};
2
+ //# sourceMappingURL=page-CSMUzvRi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-CgiAumZ6.js","names":[],"sources":["../../src/app/[locale]/auth/error/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout, AuthErrorDisplay } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nexport default function AuthError() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthError.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const errorType = searchParams.get('error') ?? null;\n\n const translations = {\n pageTitle: t('pageTitle'),\n tryAgain: t('tryAgain'),\n errorConfiguration: t('errorConfiguration'),\n errorAccessDenied: t('errorAccessDenied'),\n errorVerification: t('errorVerification'),\n errorGeneric: t('errorGeneric'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"bg-gray-50 dark:bg-gray-900\"\n >\n <AuthErrorDisplay errorType={errorType} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n"],"mappings":"6ZASA,SAAwB,GAAY,CAClC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,aAAa,IAAK,CAAQ,EAC7E,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,GAAA,EAAkB,EAAA,WAAA,CAAW,CAAwB,EAErD,EAAY,EAAa,IAAI,OAAO,GAAK,KAEzC,EAAe,CACnB,UAAW,EAAE,WAAW,EACxB,SAAU,EAAE,UAAU,EACtB,mBAAoB,EAAE,oBAAoB,EAC1C,kBAAmB,EAAE,mBAAmB,EACxC,kBAAmB,EAAE,mBAAmB,EACxC,aAAc,EAAE,cAAc,CAChC,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,8BAEV,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAA6B,YAAiB,OAAoB,cAAe,CAAA,CACvE,CAAA,CAEhB"}
1
+ {"version":3,"file":"page-CSMUzvRi.js","names":[],"sources":["../../src/app/[locale]/auth/error/page.tsx"],"sourcesContent":["import { useContext } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { useTranslation } from 'react-i18next';\nimport { PageLayout, AuthErrorDisplay } from '@semiont/react-ui';\nimport { CookiePreferences } from '@/components/CookiePreferences';\nimport { KeyboardShortcutsContext } from '@/contexts/KeyboardShortcutsContext';\nimport { Link as RoutingLink, routes } from '@/lib/routing';\nimport { Link } from '@/i18n/routing';\n\nexport default function AuthError() {\n const { t: _t } = useTranslation();\n const t = (k: string, p?: Record<string, unknown>) => _t(`AuthError.${k}`, p as any) as string;\n const tFooter = (k: string, p?: Record<string, unknown>) => _t(`Footer.${k}`, p as any) as string;\n const tNav = (k: string, p?: Record<string, unknown>) => _t(`Navigation.${k}`, p as any) as string;\n const tHome = (k: string, p?: Record<string, unknown>) => _t(`Home.${k}`, p as any) as string;\n const [searchParams] = useSearchParams();\n const keyboardContext = useContext(KeyboardShortcutsContext);\n\n const errorType = searchParams.get('error') ?? null;\n\n const translations = {\n pageTitle: t('pageTitle'),\n tryAgain: t('tryAgain'),\n errorConfiguration: t('errorConfiguration'),\n errorAccessDenied: t('errorAccessDenied'),\n errorVerification: t('errorVerification'),\n errorGeneric: t('errorGeneric'),\n };\n\n return (\n <PageLayout\n Link={RoutingLink}\n routes={routes}\n t={tFooter}\n tNav={tNav}\n tHome={tHome}\n CookiePreferences={CookiePreferences}\n {...(keyboardContext?.openKeyboardHelp && { onOpenKeyboardHelp: keyboardContext.openKeyboardHelp })}\n className=\"bg-gray-50 dark:bg-gray-900\"\n >\n <AuthErrorDisplay errorType={errorType} Link={Link} translations={translations} />\n </PageLayout>\n );\n}\n"],"mappings":"6ZASA,SAAwB,GAAY,CAClC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,aAAa,IAAK,CAAQ,EAC7E,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,GAAA,EAAkB,EAAA,WAAA,CAAW,CAAwB,EAErD,EAAY,EAAa,IAAI,OAAO,GAAK,KAEzC,EAAe,CACnB,UAAW,EAAE,WAAW,EACxB,SAAU,EAAE,UAAU,EACtB,mBAAoB,EAAE,oBAAoB,EAC1C,kBAAmB,EAAE,mBAAmB,EACxC,kBAAmB,EAAE,mBAAmB,EACxC,aAAc,EAAE,cAAc,CAChC,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,8BAEV,UAAA,EAAA,EAAA,IAAA,CAAC,EAAD,CAA6B,YAAiB,OAAoB,cAAe,CAAA,CACvE,CAAA,CAEhB"}
@@ -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-BVP6ONpk.js";import{At as i,Y as a}from"./index-BkTRe71w.js";import{i as o}from"./routing-BJiyORAR.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-_daGpD2K.js.map
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 +1 @@
1
- {"version":3,"file":"page-_daGpD2K.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-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,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-BVP6ONpk.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-BkTRe71w.js";import{t as f}from"./ToolbarPanels-Bf3f6THq.js";import{n as p}from"./routing-BJiyORAR.js";import{n as m,t as h}from"./routing-CygMogfF.js";import g from"./not-found-BOkh1PJR.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-C45jnN3u.js.map
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 +1 @@
1
- {"version":3,"file":"page-C45jnN3u.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-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,2 +1,2 @@
1
- import{t as e}from"./i18n-zIDJOEfo.js";import{t}from"./vendor-BVP6ONpk.js";import{$ as n,Y as r,et as i,j as a,m as o}from"./index-BkTRe71w.js";import{t as s}from"./ToolbarPanels-Bf3f6THq.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-C7fj48Yd.js.map
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 +1 @@
1
- {"version":3,"file":"page-C7fj48Yd.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-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,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-BVP6ONpk.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-BkTRe71w.js";import{t as g}from"./ToolbarPanels-Bf3f6THq.js";import{i as _,n as v}from"./routing-BJiyORAR.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-B2tTEfKp.js.map
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 +1 @@
1
- {"version":3,"file":"page-B2tTEfKp.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-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,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-BVP6ONpk.js";import{p as i}from"./index-BkTRe71w.js";import{t as a}from"./KeyboardShortcutsContext-D8VjaYfK.js";import{t as o}from"./CookiePreferences-UVUl27XP.js";import{n as s,t as c}from"./routing-BJiyORAR.js";import{n as l,t as u}from"./routing-CygMogfF.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-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(`
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-ZPLCKgGQ.js.map
5
+ //# sourceMappingURL=page-FoKU0iob.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page-ZPLCKgGQ.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-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":"sZASA,SAAwB,GAAiB,CACvC,GAAM,CAAE,EAAG,GAAO,EAAe,EAC3B,GAAK,EAAW,IAAgC,EAAG,SAAS,IAAK,CAAQ,EACzE,CAAE,EAAG,GAAa,EAAe,EACjC,GAAW,EAAW,IAAgC,EAAS,UAAU,IAAK,CAAQ,EACtF,CAAE,EAAG,GAAU,EAAe,EAC9B,GAAQ,EAAW,IAAgC,EAAM,cAAc,IAAK,CAAQ,EACpF,CAAE,EAAG,GAAW,EAAe,EAC/B,GAAS,EAAW,IAAgC,EAAO,QAAQ,IAAK,CAAQ,EAChF,EAAS,EAAU,EACnB,GAAA,EAAkB,EAAA,WAAA,CAAW,CAAwB,EAE3D,OACE,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,KAAM,EACE,SACR,EAAG,EACG,OACC,QACY,oBACnB,GAAK,GAAiB,kBAAoB,CAAE,mBAAoB,EAAgB,gBAAiB,EACjG,UAAU,sBAEV,UAAA,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAU,2BACb,UAAA,EAAA,EAAA,KAAA,CAAC,MAAD,CAAK,UAAU,yBAAf,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,SAAD,CAAQ,UAAU,wBAAlB,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAU,uBACX,SAAA,EAAE,WAAW,CACZ,CAAA,GACJ,EAAA,EAAA,IAAA,CAAC,IAAD,CAAG,UAAU,0BACV,SAAA,EAAE,cAAc,CAChB,CAAA,CACG,CAER,CAAA,GAAA,EAAA,EAAA,KAAA,CAAC,UAAD,CAAS,UAAU,yBAAnB,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,UAAU,CAAM,CAAA,GAEvB,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,KAAK,CACP,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,iBAAiB,CAAM,CAAA,GAC9B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,EAAE,iBAAiB,CAAK,CAAA,GAC5B,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,YAAY,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACtC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,iBAAiB,CAAM,CAAA,GAC9B,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CACG,EAAE,iBAAiB,EAAG,KACvB,EAAA,EAAA,IAAA,CAAC,IAAD,CACE,KAAK,8FACL,OAAO,SACP,IAAI,sBACJ,UAAU,sBAET,SAAA,EAAE,gBAAgB,CAClB,CAAA,EACF,EAAE,oBAAoB,CACtB,CAAA,CAAA,GACH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,YAAY,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KACtC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,uBAAuB,CAAM,CAAA,GACpC,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SAAI,EAAE,uBAAuB,CAAK,CAAA,GAClC,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SACG,EAAE,kBAAkB,CAAC,CAAC,MAAM;CAAI,CAAC,CAAC,KAAK,EAAM,KAC5C,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAa,CAAS,EAAb,CAAa,CACvB,CACC,CAAA,GAEJ,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,iBAAiB,CAAM,CAAA,GAC9B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,YAAY,CACd,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,cAAc,CAAM,CAAA,GAC3B,EAAA,EAAA,KAAA,CAAC,IAAD,CAAA,SAAA,CACG,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,IACtC,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,GAAI,IAAI,EAAO,UAAW,UAAU,sBACvC,SAAA,EAAE,aAAa,CACZ,CAAA,EACL,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EACrC,CAAA,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,SAAS,CAAM,CAAA,GACtB,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,IAAI,CACN,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,gBAAgB,CAAM,CAAA,GAC7B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,WAAW,CACb,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,cAAc,CAAM,CAAA,GAC3B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,SAAS,CACX,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,KAAD,CAAA,SAAK,EAAE,cAAc,CAAM,CAAA,GAC3B,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,SAAS,CACX,CAAA,GAEH,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAU,wBAChB,UAAA,EAAA,EAAA,IAAA,CAAC,IAAD,CAAA,SACG,EAAE,cAAe,CAAE,KAAM,IAAI,KAAK,CAAA,CAAE,mBAAmB,CAAE,CAAC,CAC1D,CAAA,CACG,CAAA,CACD,CAEN,CAAA,CAAA,GACF,CAAA,CACK,CAAA,CAEhB"}
@@ -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-BVP6ONpk.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-BkTRe71w.js";import{i as d,t as f}from"./routing-BJiyORAR.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-CrXiz4-J.js.map
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 +1 @@
1
- {"version":3,"file":"page-CrXiz4-J.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
+ {"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":"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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-BVP6ONpk.js";import{T as a,p as o}from"./index-BkTRe71w.js";import{t as s}from"./KeyboardShortcutsContext-D8VjaYfK.js";import{t as c}from"./CookiePreferences-UVUl27XP.js";import{i as l,t as u}from"./routing-BJiyORAR.js";import{n as d,t as f}from"./routing-CygMogfF.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-CQJx-JXR.js.map
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 +1 @@
1
- {"version":3,"file":"page-CQJx-JXR.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-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,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-BVP6ONpk.js";import{$ as i,At as a,O as o,Y as s,et as c,j as l,t as u}from"./index-BkTRe71w.js";import{t as d}from"./ToolbarPanels-Bf3f6THq.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-zpMXForS.js.map
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 +1 @@
1
- {"version":3,"file":"page-zpMXForS.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-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"}