@carlonicora/nextjs-jsonapi 5.4.0 → 5.5.0

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 (148) hide show
  1. package/dist/{BlockNoteEditor-YQL2SGFR.mjs → BlockNoteEditor-GVQCKRMU.mjs} +5 -5
  2. package/dist/{BlockNoteEditor-4YCAIEPT.js → BlockNoteEditor-THBJH2UR.js} +20 -20
  3. package/dist/{BlockNoteEditor-4YCAIEPT.js.map → BlockNoteEditor-THBJH2UR.js.map} +1 -1
  4. package/dist/{BlockNoteViewer-AEJKJ27Q.mjs → BlockNoteViewer-U6E3DS4F.mjs} +3 -3
  5. package/dist/{BlockNoteViewer-YL3J7J2Y.js → BlockNoteViewer-VZOVKTFO.js} +4 -4
  6. package/dist/{BlockNoteViewer-YL3J7J2Y.js.map → BlockNoteViewer-VZOVKTFO.js.map} +1 -1
  7. package/dist/billing/index.js +442 -442
  8. package/dist/billing/index.mjs +4 -4
  9. package/dist/{chunk-XCHSX3VC.mjs → chunk-3CGROPF3.mjs} +2 -2
  10. package/dist/{chunk-QMYQRPQC.mjs → chunk-6SQYXUVP.mjs} +2 -2
  11. package/dist/{chunk-NFBOSPNJ.js → chunk-G6UE6MEP.js} +59 -19
  12. package/dist/chunk-G6UE6MEP.js.map +1 -0
  13. package/dist/{chunk-YNCQSWQW.js → chunk-S4YJ5WCW.js} +8 -8
  14. package/dist/{chunk-YNCQSWQW.js.map → chunk-S4YJ5WCW.js.map} +1 -1
  15. package/dist/{chunk-3NLAXVIN.js → chunk-TY5FYP3G.js} +917 -881
  16. package/dist/chunk-TY5FYP3G.js.map +1 -0
  17. package/dist/{chunk-WC63PJSC.mjs → chunk-VC5A3AUZ.mjs} +61 -21
  18. package/dist/chunk-VC5A3AUZ.mjs.map +1 -0
  19. package/dist/{chunk-6DC2WVVB.mjs → chunk-W7F5BDSV.mjs} +2 -2
  20. package/dist/{chunk-5PPG6PL7.js → chunk-WPYT4UKJ.js} +3 -3
  21. package/dist/{chunk-5PPG6PL7.js.map → chunk-WPYT4UKJ.js.map} +1 -1
  22. package/dist/{chunk-EUKTBOI2.mjs → chunk-X5WIUUNG.mjs} +1471 -1435
  23. package/dist/chunk-X5WIUUNG.mjs.map +1 -0
  24. package/dist/{chunk-YW4ZCEWB.js → chunk-YDYVJM4I.js} +4 -4
  25. package/dist/{chunk-YW4ZCEWB.js.map → chunk-YDYVJM4I.js.map} +1 -1
  26. package/dist/client/index.js +5 -5
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/client/index.mjs +4 -4
  29. package/dist/components/editors/server.d.mts +15 -0
  30. package/dist/components/editors/server.d.ts +15 -0
  31. package/dist/components/editors/server.js +38 -0
  32. package/dist/components/editors/server.js.map +1 -0
  33. package/dist/components/editors/server.mjs +38 -0
  34. package/dist/components/editors/server.mjs.map +1 -0
  35. package/dist/components/index.d.mts +33 -10
  36. package/dist/components/index.d.ts +33 -10
  37. package/dist/components/index.js +7 -5
  38. package/dist/components/index.js.map +1 -1
  39. package/dist/components/index.mjs +8 -6
  40. package/dist/contexts/index.d.mts +9 -1
  41. package/dist/contexts/index.d.ts +9 -1
  42. package/dist/contexts/index.js +5 -5
  43. package/dist/contexts/index.mjs +4 -4
  44. package/dist/core/index.js +4 -4
  45. package/dist/core/index.js.map +1 -1
  46. package/dist/core/index.mjs +3 -3
  47. package/dist/email-automations/index.d.mts +3 -0
  48. package/dist/email-automations/index.d.ts +3 -0
  49. package/dist/email-automations/index.js +99 -95
  50. package/dist/email-automations/index.js.map +1 -1
  51. package/dist/email-automations/index.mjs +30 -26
  52. package/dist/email-automations/index.mjs.map +1 -1
  53. package/dist/features/analytics/index.d.mts +11 -4
  54. package/dist/features/analytics/index.d.ts +11 -4
  55. package/dist/features/analytics/index.js +127 -135
  56. package/dist/features/analytics/index.js.map +1 -1
  57. package/dist/features/analytics/index.mjs +16 -24
  58. package/dist/features/analytics/index.mjs.map +1 -1
  59. package/dist/features/analytics/server.d.mts +5 -2
  60. package/dist/features/analytics/server.d.ts +5 -2
  61. package/dist/features/analytics/server.js +7 -7
  62. package/dist/features/analytics/server.js.map +1 -1
  63. package/dist/features/analytics/server.mjs +5 -5
  64. package/dist/features/analytics/server.mjs.map +1 -1
  65. package/dist/features/blog/index.d.mts +12 -2
  66. package/dist/features/blog/index.d.ts +12 -2
  67. package/dist/features/blog/index.js +206 -195
  68. package/dist/features/blog/index.js.map +1 -1
  69. package/dist/features/blog/index.mjs +71 -60
  70. package/dist/features/blog/index.mjs.map +1 -1
  71. package/dist/features/blog/server.d.mts +4 -1
  72. package/dist/features/blog/server.d.ts +4 -1
  73. package/dist/features/blog/server.js +49 -21
  74. package/dist/features/blog/server.js.map +1 -1
  75. package/dist/features/blog/server.mjs +36 -8
  76. package/dist/features/blog/server.mjs.map +1 -1
  77. package/dist/features/help/index.js +38 -38
  78. package/dist/features/help/index.mjs +4 -4
  79. package/dist/features/tokenusage/index.d.mts +1 -3
  80. package/dist/features/tokenusage/index.d.ts +1 -3
  81. package/dist/features/tokenusage/index.js +127 -135
  82. package/dist/features/tokenusage/index.js.map +1 -1
  83. package/dist/features/tokenusage/index.mjs +10 -18
  84. package/dist/features/tokenusage/index.mjs.map +1 -1
  85. package/dist/index.js +5 -5
  86. package/dist/index.js.map +1 -1
  87. package/dist/index.mjs +4 -4
  88. package/dist/server/index.js +4 -4
  89. package/dist/server/index.mjs +3 -3
  90. package/package.json +9 -1
  91. package/src/components/editors/server/BlockNoteServerContent.tsx +28 -0
  92. package/src/components/editors/server/__tests__/renderBlockNoteHTML.spec.ts +44 -0
  93. package/src/components/editors/server/renderBlockNoteHTML.ts +26 -0
  94. package/src/components/editors/server-entry.ts +7 -0
  95. package/src/components/index.ts +1 -0
  96. package/src/components/viewers/BlockNoteStaticViewer.tsx +44 -0
  97. package/src/features/administration/components/AdminIndexContainer.tsx +61 -33
  98. package/src/features/administration/components/__tests__/AdminIndexContainer.spec.tsx +61 -1
  99. package/src/features/administration/components/index.ts +2 -1
  100. package/src/features/administration/contexts/AdministrationContext.tsx +11 -3
  101. package/src/features/administration/contexts/__tests__/AdministrationContext.spec.tsx +40 -0
  102. package/src/features/ai-connection/ai-connection.module.ts +2 -0
  103. package/src/features/ai-connection/contexts/AiConnectionsContext.tsx +3 -16
  104. package/src/features/ai-connection/contexts/__tests__/AiConnectionsContext.spec.tsx +33 -0
  105. package/src/features/analytics/__tests__/server-entry.spec.tsx +2 -1
  106. package/src/features/analytics/analytics.modules.ts +22 -5
  107. package/src/features/analytics/components/AnalyticsAdminContainer.tsx +4 -3
  108. package/src/features/analytics/components/AnalyticsAdminPageContainer.tsx +6 -3
  109. package/src/features/analytics/components/AnalyticsJourneyContainer.tsx +4 -3
  110. package/src/features/analytics/components/__tests__/AnalyticsJourneyContainer.spec.tsx +11 -0
  111. package/src/features/analytics/components/__tests__/AnalyticsPageContainers.spec.tsx +12 -1
  112. package/src/features/analytics/components/server/AnalyticsAdminPage.tsx +6 -3
  113. package/src/features/analytics/contexts/AnalyticsAdminContext.tsx +8 -17
  114. package/src/features/analytics/contexts/__tests__/AnalyticsAdminContext.spec.tsx +17 -0
  115. package/src/features/billing/stripe-price/stripe-price.module.ts +2 -0
  116. package/src/features/billing/stripe-product/stripe-product.module.ts +2 -0
  117. package/src/features/blog/components/admin/BlogAdminContainer.tsx +13 -6
  118. package/src/features/blog/components/admin/BlogCategoriesList.tsx +1 -1
  119. package/src/features/blog/components/admin/BlogCoverImageField.tsx +1 -1
  120. package/src/features/blog/components/admin/BlogPostContainer.tsx +0 -1
  121. package/src/features/blog/components/admin/BlogPostEditor.tsx +42 -33
  122. package/src/features/blog/components/admin/BlogPostTranslationEditor.tsx +12 -4
  123. package/src/features/blog/components/admin/BlogPostsList.tsx +1 -1
  124. package/src/features/blog/components/public/BlogPostCard.tsx +2 -9
  125. package/src/features/blog/components/public/BlogPostMeta.tsx +2 -2
  126. package/src/features/blog/components/public/BlogPostView.tsx +9 -3
  127. package/src/features/blog/components/public/__tests__/BlogList.spec.tsx +2 -0
  128. package/src/features/blog/components/public/__tests__/BlogPostView.spec.tsx +17 -11
  129. package/src/features/blog/server/fetchers.ts +57 -8
  130. package/src/features/email-automation/components/containers/EmailAutomationsListContainer.tsx +12 -3
  131. package/src/features/rbac/contexts/RbacContext.tsx +4 -7
  132. package/src/features/rbac/contexts/__tests__/RbacContext.spec.tsx +42 -0
  133. package/src/features/tokenusage/components/TokenUsageAdminContainer.tsx +4 -3
  134. package/src/features/tokenusage/contexts/TokenUsageAdminContext.tsx +3 -18
  135. package/src/features/tokenusage/contexts/__tests__/TokenUsageAdminContext.spec.tsx +17 -0
  136. package/src/features/tokenusage/tokenusage-admin.module.ts +4 -3
  137. package/src/features/tokenusage/tokenusage.modules.ts +12 -2
  138. package/src/features/user/contexts/UserContext.tsx +18 -3
  139. package/src/features/user/contexts/__tests__/UserContext.spec.tsx +95 -0
  140. package/dist/chunk-3NLAXVIN.js.map +0 -1
  141. package/dist/chunk-EUKTBOI2.mjs.map +0 -1
  142. package/dist/chunk-NFBOSPNJ.js.map +0 -1
  143. package/dist/chunk-WC63PJSC.mjs.map +0 -1
  144. /package/dist/{BlockNoteEditor-YQL2SGFR.mjs.map → BlockNoteEditor-GVQCKRMU.mjs.map} +0 -0
  145. /package/dist/{BlockNoteViewer-AEJKJ27Q.mjs.map → BlockNoteViewer-U6E3DS4F.mjs.map} +0 -0
  146. /package/dist/{chunk-XCHSX3VC.mjs.map → chunk-3CGROPF3.mjs.map} +0 -0
  147. /package/dist/{chunk-QMYQRPQC.mjs.map → chunk-6SQYXUVP.mjs.map} +0 -0
  148. /package/dist/{chunk-6DC2WVVB.mjs.map → chunk-W7F5BDSV.mjs.map} +0 -0
@@ -4,7 +4,7 @@ var _chunkG4JR3SFVjs = require('./chunk-G4JR3SFV.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkNFBOSPNJjs = require('./chunk-NFBOSPNJ.js');
7
+ var _chunkG6UE6MEPjs = require('./chunk-G6UE6MEP.js');
8
8
 
9
9
 
10
10
  var _chunk7QVYU63Ejs = require('./chunk-7QVYU63E.js');
@@ -40,7 +40,7 @@ var ServerSession = class {
40
40
  const headerStore = await _headers.headers.call(void 0, );
41
41
  const token = _optionalChain([cookieStore, 'access', _ => _.get, 'call', _2 => _2("token"), 'optionalAccess', _3 => _3.value]) || void 0;
42
42
  const roles = _optionalChain([cookieStore, 'access', _4 => _4.get, 'call', _5 => _5("roles"), 'optionalAccess', _6 => _6.value]);
43
- const viewportCookie = _optionalChain([cookieStore, 'access', _7 => _7.get, 'call', _8 => _8(_chunkNFBOSPNJjs.VIEWPORT_COOKIE_NAME), 'optionalAccess', _9 => _9.value]);
43
+ const viewportCookie = _optionalChain([cookieStore, 'access', _7 => _7.get, 'call', _8 => _8(_chunkG6UE6MEPjs.VIEWPORT_COOKIE_NAME), 'optionalAccess', _9 => _9.value]);
44
44
  return {
45
45
  isLogged: !!token,
46
46
  isAdministrator: !!roles && roles.includes(_chunkG4JR3SFVjs.getRoleId.call(void 0, ).Administrator),
@@ -88,7 +88,7 @@ var ServerSession = class {
88
88
  if (!rawModules) return false;
89
89
  const modules = JSON.parse(_pako.ungzip.call(void 0, Buffer.from(rawModules, "base64"), { toText: true }));
90
90
  const selectedModule = modules.find((module) => module.id === params.module.moduleId);
91
- return _chunkNFBOSPNJjs.checkPermissionsFromServer.call(void 0, {
91
+ return _chunkG6UE6MEPjs.checkPermissionsFromServer.call(void 0, {
92
92
  module: params.module,
93
93
  action: params.action,
94
94
  data: params.data,
@@ -104,4 +104,4 @@ var ServerSession = class {
104
104
 
105
105
 
106
106
  exports.invalidateCacheTag = invalidateCacheTag; exports.invalidateCacheTags = invalidateCacheTags; exports.updateCacheTag = updateCacheTag; exports.ServerSession = ServerSession;
107
- //# sourceMappingURL=chunk-YW4ZCEWB.js.map
107
+ //# sourceMappingURL=chunk-YDYVJM4I.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-YW4ZCEWB.js","../src/server/cache.ts","../src/server/ServerSession.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-YW4ZCEWB.js","sourcesContent":[null,"// Server-only utilities (NOT server actions - these cannot be called from client components)\n\nimport { revalidateTag, updateTag } from \"next/cache\";\n\nimport type { CacheProfile } from \"./cacheProfiles\";\n\nexport { CACHE_PROFILES, type CacheProfile } from \"./cacheProfiles\";\n\n/**\n * Revalidate a cache tag to invalidate cached data.\n * Next.js 16+ requires a profile parameter.\n *\n * With `\"max\"` the tagged entries are marked stale and served stale-while-revalidate\n * (a one-year window): the next request still gets the old data while fresh data loads\n * in the background. It is not an immediate invalidation. A Server Action that must\n * read its own write uses `updateCacheTag` instead.\n *\n * @param tag - The cache tag to invalidate\n * @param profile - The cache profile whose `expire` bounds how long stale data may be served (defaults to \"max\")\n */\nexport async function invalidateCacheTag(tag: string, profile: CacheProfile = \"max\"): Promise<void> {\n revalidateTag(tag, profile);\n}\n\n/**\n * Revalidate multiple cache tags.\n *\n * @param tags - Array of cache tags to invalidate\n * @param profile - The cache profile, see `invalidateCacheTag` (defaults to \"max\", stale-while-revalidate)\n */\nexport async function invalidateCacheTags(tags: string[], profile: CacheProfile = \"max\"): Promise<void> {\n for (const tag of tags) {\n revalidateTag(tag, profile);\n }\n}\n\n/**\n * Expire a cache tag immediately, so the same request reads fresh data (read-your-own-writes).\n * Wraps `updateTag`, which works in Server Actions only. Route Handlers use `invalidateCacheTag`.\n *\n * @param tag - The cache tag to expire\n */\nexport async function updateCacheTag(tag: string): Promise<void> {\n updateTag(tag);\n}\n","import { cookies, headers } from \"next/headers\";\nimport { redirect } from \"next/navigation\";\nimport { userAgent } from \"next/server\";\nimport { ungzip } from \"pako\";\nimport { Action, checkPermissionsFromServer, ModuleWithPermissions } from \"../permissions\";\nimport { getRoleId } from \"../roles/config\";\nimport { VIEWPORT_COOKIE_NAME } from \"../utils/use-mobile\";\n\nexport interface SessionSnapshot {\n isLogged: boolean;\n isAdministrator: boolean;\n token?: string;\n sidebarOpen: boolean;\n isMobile: boolean;\n}\n\nexport class ServerSession {\n static async read(): Promise<SessionSnapshot> {\n const cookieStore = await cookies();\n const headerStore = await headers();\n\n const token = cookieStore.get(\"token\")?.value || undefined;\n const roles = cookieStore.get(\"roles\")?.value;\n const viewportCookie = cookieStore.get(VIEWPORT_COOKIE_NAME)?.value;\n\n return {\n isLogged: !!token,\n isAdministrator: !!roles && roles.includes(getRoleId().Administrator),\n token,\n sidebarOpen: cookieStore.get(\"sidebar_state\")?.value !== \"false\",\n isMobile: viewportCookie ? viewportCookie === \"1\" : userAgent({ headers: headerStore }).device.type === \"mobile\",\n };\n }\n\n static async isLogged() {\n const cookieStore = await cookies();\n const token = cookieStore.get(\"token\");\n\n if (!token || !token.value) return false;\n return true;\n }\n\n static async companyId() {\n const cookieStore = await cookies();\n return cookieStore.get(\"companyId\")?.value ?? \"\";\n }\n\n static async userId() {\n const cookieStore = await cookies();\n return cookieStore.get(\"userId\")?.value ?? \"\";\n }\n\n static async checkPermission<M extends ModuleWithPermissions>(params: { module: M; action: Action; data?: any }) {\n if (!(await this.hasPermissionToModule(params))) redirect(`/401`);\n }\n\n static async hasRole(roleId: string): Promise<boolean> {\n const cookieStore = await cookies();\n const roles = cookieStore.get(\"roles\")?.value;\n\n if (!roles || !roles.includes(roleId)) return false;\n\n return true;\n }\n\n static async hasFeature(featureId: string): Promise<boolean> {\n const cookieStore = await cookies();\n const features = cookieStore.get(\"features\")?.value;\n\n if (!features || !features.includes(featureId)) return false;\n\n return true;\n }\n\n static async hasPermissionToModule<M extends ModuleWithPermissions>(params: {\n module: M;\n action: Action;\n data?: any;\n }): Promise<boolean> {\n const cookieStore = await cookies();\n\n if (params.module.feature) {\n const features = cookieStore.get(\"features\")?.value;\n\n if (features && !features.includes(params.module.feature)) return false;\n }\n\n const rawModules = cookieStore.get(\"modules\")?.value;\n if (!rawModules) return false;\n\n const modules: {\n id: string;\n permissions: {\n create: boolean | string;\n read: boolean | string;\n update: boolean | string;\n delete: boolean | string;\n };\n }[] = JSON.parse(ungzip(Buffer.from(rawModules, \"base64\"), { toText: true }));\n\n const selectedModule = modules.find((module) => module.id === params.module.moduleId);\n\n return checkPermissionsFromServer({\n module: params.module,\n action: params.action,\n data: params.data,\n userId: await this.userId(),\n selectedModule: selectedModule,\n });\n\n // if (!selectedModule) return false;\n\n // if (!selectedModule.permissions[params.action]) return false;\n // if (typeof selectedModule.permissions[params.action] === \"boolean\")\n // return selectedModule.permissions[params.action] as boolean;\n\n // if (!params.data) return false;\n\n // return params.data[selectedModule.permissions[params.action] as string] === this.userId;\n }\n}\n"]}
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-YDYVJM4I.js","../src/server/cache.ts","../src/server/ServerSession.ts"],"names":[],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/chunk-YDYVJM4I.js","sourcesContent":[null,"// Server-only utilities (NOT server actions - these cannot be called from client components)\n\nimport { revalidateTag, updateTag } from \"next/cache\";\n\nimport type { CacheProfile } from \"./cacheProfiles\";\n\nexport { CACHE_PROFILES, type CacheProfile } from \"./cacheProfiles\";\n\n/**\n * Revalidate a cache tag to invalidate cached data.\n * Next.js 16+ requires a profile parameter.\n *\n * With `\"max\"` the tagged entries are marked stale and served stale-while-revalidate\n * (a one-year window): the next request still gets the old data while fresh data loads\n * in the background. It is not an immediate invalidation. A Server Action that must\n * read its own write uses `updateCacheTag` instead.\n *\n * @param tag - The cache tag to invalidate\n * @param profile - The cache profile whose `expire` bounds how long stale data may be served (defaults to \"max\")\n */\nexport async function invalidateCacheTag(tag: string, profile: CacheProfile = \"max\"): Promise<void> {\n revalidateTag(tag, profile);\n}\n\n/**\n * Revalidate multiple cache tags.\n *\n * @param tags - Array of cache tags to invalidate\n * @param profile - The cache profile, see `invalidateCacheTag` (defaults to \"max\", stale-while-revalidate)\n */\nexport async function invalidateCacheTags(tags: string[], profile: CacheProfile = \"max\"): Promise<void> {\n for (const tag of tags) {\n revalidateTag(tag, profile);\n }\n}\n\n/**\n * Expire a cache tag immediately, so the same request reads fresh data (read-your-own-writes).\n * Wraps `updateTag`, which works in Server Actions only. Route Handlers use `invalidateCacheTag`.\n *\n * @param tag - The cache tag to expire\n */\nexport async function updateCacheTag(tag: string): Promise<void> {\n updateTag(tag);\n}\n","import { cookies, headers } from \"next/headers\";\nimport { redirect } from \"next/navigation\";\nimport { userAgent } from \"next/server\";\nimport { ungzip } from \"pako\";\nimport { Action, checkPermissionsFromServer, ModuleWithPermissions } from \"../permissions\";\nimport { getRoleId } from \"../roles/config\";\nimport { VIEWPORT_COOKIE_NAME } from \"../utils/use-mobile\";\n\nexport interface SessionSnapshot {\n isLogged: boolean;\n isAdministrator: boolean;\n token?: string;\n sidebarOpen: boolean;\n isMobile: boolean;\n}\n\nexport class ServerSession {\n static async read(): Promise<SessionSnapshot> {\n const cookieStore = await cookies();\n const headerStore = await headers();\n\n const token = cookieStore.get(\"token\")?.value || undefined;\n const roles = cookieStore.get(\"roles\")?.value;\n const viewportCookie = cookieStore.get(VIEWPORT_COOKIE_NAME)?.value;\n\n return {\n isLogged: !!token,\n isAdministrator: !!roles && roles.includes(getRoleId().Administrator),\n token,\n sidebarOpen: cookieStore.get(\"sidebar_state\")?.value !== \"false\",\n isMobile: viewportCookie ? viewportCookie === \"1\" : userAgent({ headers: headerStore }).device.type === \"mobile\",\n };\n }\n\n static async isLogged() {\n const cookieStore = await cookies();\n const token = cookieStore.get(\"token\");\n\n if (!token || !token.value) return false;\n return true;\n }\n\n static async companyId() {\n const cookieStore = await cookies();\n return cookieStore.get(\"companyId\")?.value ?? \"\";\n }\n\n static async userId() {\n const cookieStore = await cookies();\n return cookieStore.get(\"userId\")?.value ?? \"\";\n }\n\n static async checkPermission<M extends ModuleWithPermissions>(params: { module: M; action: Action; data?: any }) {\n if (!(await this.hasPermissionToModule(params))) redirect(`/401`);\n }\n\n static async hasRole(roleId: string): Promise<boolean> {\n const cookieStore = await cookies();\n const roles = cookieStore.get(\"roles\")?.value;\n\n if (!roles || !roles.includes(roleId)) return false;\n\n return true;\n }\n\n static async hasFeature(featureId: string): Promise<boolean> {\n const cookieStore = await cookies();\n const features = cookieStore.get(\"features\")?.value;\n\n if (!features || !features.includes(featureId)) return false;\n\n return true;\n }\n\n static async hasPermissionToModule<M extends ModuleWithPermissions>(params: {\n module: M;\n action: Action;\n data?: any;\n }): Promise<boolean> {\n const cookieStore = await cookies();\n\n if (params.module.feature) {\n const features = cookieStore.get(\"features\")?.value;\n\n if (features && !features.includes(params.module.feature)) return false;\n }\n\n const rawModules = cookieStore.get(\"modules\")?.value;\n if (!rawModules) return false;\n\n const modules: {\n id: string;\n permissions: {\n create: boolean | string;\n read: boolean | string;\n update: boolean | string;\n delete: boolean | string;\n };\n }[] = JSON.parse(ungzip(Buffer.from(rawModules, \"base64\"), { toText: true }));\n\n const selectedModule = modules.find((module) => module.id === params.module.moduleId);\n\n return checkPermissionsFromServer({\n module: params.module,\n action: params.action,\n data: params.data,\n userId: await this.userId(),\n selectedModule: selectedModule,\n });\n\n // if (!selectedModule) return false;\n\n // if (!selectedModule.permissions[params.action]) return false;\n // if (typeof selectedModule.permissions[params.action] === \"boolean\")\n // return selectedModule.permissions[params.action] as boolean;\n\n // if (!params.data) return false;\n\n // return params.data[selectedModule.permissions[params.action] as string] === this.userId;\n }\n}\n"]}
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- var _chunk3NLAXVINjs = require('../chunk-3NLAXVIN.js');
33
+ var _chunkTY5FYP3Gjs = require('../chunk-TY5FYP3G.js');
34
34
 
35
35
 
36
36
 
@@ -39,7 +39,7 @@ var _chunk3NLAXVINjs = require('../chunk-3NLAXVIN.js');
39
39
 
40
40
 
41
41
 
42
- var _chunkYNCQSWQWjs = require('../chunk-YNCQSWQW.js');
42
+ var _chunkS4YJ5WCWjs = require('../chunk-S4YJ5WCW.js');
43
43
  require('../chunk-G4JR3SFV.js');
44
44
 
45
45
 
@@ -58,14 +58,14 @@ require('../chunk-G4JR3SFV.js');
58
58
 
59
59
 
60
60
 
61
- var _chunkNFBOSPNJjs = require('../chunk-NFBOSPNJ.js');
61
+ var _chunkG6UE6MEPjs = require('../chunk-G6UE6MEP.js');
62
+ require('../chunk-GHE4VT2R.js');
62
63
 
63
64
 
64
65
  var _chunkLXKSUWAVjs = require('../chunk-LXKSUWAV.js');
65
66
 
66
67
 
67
68
  var _chunkJTPRJNT2js = require('../chunk-JTPRJNT2.js');
68
- require('../chunk-GHE4VT2R.js');
69
69
 
70
70
 
71
71
 
@@ -130,5 +130,5 @@ require('../chunk-7QVYU63E.js');
130
130
 
131
131
 
132
132
 
133
- exports.ClientJsonApiDelete = _chunkNFBOSPNJjs.ClientJsonApiDelete; exports.ClientJsonApiGet = _chunkNFBOSPNJjs.ClientJsonApiGet; exports.ClientJsonApiPatch = _chunkNFBOSPNJjs.ClientJsonApiPatch; exports.ClientJsonApiPost = _chunkNFBOSPNJjs.ClientJsonApiPost; exports.ClientJsonApiPut = _chunkNFBOSPNJjs.ClientJsonApiPut; exports.JsonApiContext = _chunk3EPNHTMHjs.JsonApiContext; exports.JsonApiProvider = _chunk3NLAXVINjs.JsonApiProvider; exports.TableGeneratorRegistry = _chunk3NLAXVINjs.TableGeneratorRegistry; exports.buildClientUrl = _chunkNFBOSPNJjs.buildClientUrl; exports.computeLayeredLayout = _chunk3NLAXVINjs.computeLayeredLayout; exports.configureClientConfig = _chunkYNCQSWQWjs.configureClientConfig; exports.configureClientJsonApi = _chunkNFBOSPNJjs.configureClientJsonApi; exports.configureI18n = _chunkNFBOSPNJjs.configureI18n; exports.configureJsonApi = _chunkYNCQSWQWjs.configureJsonApi; exports.directFetch = _chunkJTPRJNT2js.directFetch; exports.fitLayeredLayoutToAspectRatio = _chunk3NLAXVINjs.fitLayeredLayoutToAspectRatio; exports.getApiUrl = _chunkYNCQSWQWjs.getApiUrl; exports.getAppUrl = _chunkYNCQSWQWjs.getAppUrl; exports.getClientApiUrl = _chunkNFBOSPNJjs.getClientApiUrl; exports.getClientAppUrl = _chunkNFBOSPNJjs.getClientAppUrl; exports.getClientToken = _chunkLXKSUWAVjs.getClientToken; exports.getClientTrackablePages = _chunkNFBOSPNJjs.getClientTrackablePages; exports.getI18nLink = _chunkNFBOSPNJjs.getI18nLink; exports.getPublicApiUrl = _chunkYNCQSWQWjs.getPublicApiUrl; exports.getStripePublishableKey = _chunkYNCQSWQWjs.getStripePublishableKey; exports.getTrackablePages = _chunkYNCQSWQWjs.getTrackablePages; exports.registerTableGenerator = _chunk3NLAXVINjs.registerTableGenerator; exports.tableGeneratorRegistry = _chunk3NLAXVINjs.tableGeneratorRegistry; exports.useContentTableStructure = _chunk3NLAXVINjs.useContentTableStructure; exports.useCustomD3Graph = _chunk3NLAXVINjs.useCustomD3Graph; exports.useDataListRetriever = _chunk3NLAXVINjs.useDataListRetriever; exports.useDebounce = _chunk3NLAXVINjs.useDebounce; exports.useI18nDateFnsLocale = _chunkNFBOSPNJjs.useI18nDateFnsLocale; exports.useI18nLocale = _chunkNFBOSPNJjs.useI18nLocale; exports.useI18nRouter = _chunkNFBOSPNJjs.useI18nRouter; exports.useI18nTranslations = _chunkNFBOSPNJjs.useI18nTranslations; exports.useJsonApiConfig = _chunk3EPNHTMHjs.useJsonApiConfig; exports.useJsonApiConfigOptional = _chunk3EPNHTMHjs.useJsonApiConfigOptional; exports.useJsonApiGet = _chunk3NLAXVINjs.useJsonApiGet; exports.useJsonApiMutation = _chunk3NLAXVINjs.useJsonApiMutation; exports.useNotificationSync = _chunk3NLAXVINjs.useNotificationSync; exports.useOAuthClient = _chunk3NLAXVINjs.useOAuthClient; exports.useOAuthClients = _chunk3NLAXVINjs.useOAuthClients; exports.useOAuthConsent = _chunk3NLAXVINjs.useOAuthConsent; exports.useOAuthScopeText = _chunk3NLAXVINjs.useOAuthScopeText; exports.usePageTracker = _chunk3NLAXVINjs.usePageTracker; exports.usePageUrlGenerator = _chunk3NLAXVINjs.usePageUrlGenerator; exports.usePushNotifications = _chunk3NLAXVINjs.usePushNotifications; exports.useRehydration = _chunk3NLAXVINjs.useRehydration; exports.useRehydrationList = _chunk3NLAXVINjs.useRehydrationList; exports.useRoleTableStructure = _chunk3NLAXVINjs.useRoleTableStructure; exports.useSocket = _chunk3NLAXVINjs.useSocket; exports.useSubscriptionStatus = _chunk3NLAXVINjs.useSubscriptionStatus; exports.useTableGenerator = _chunk3NLAXVINjs.useTableGenerator; exports.useUrlRewriter = _chunk3NLAXVINjs.useUrlRewriter; exports.useUserSearch = _chunk3NLAXVINjs.useUserSearch; exports.useUserTableStructure = _chunk3NLAXVINjs.useUserTableStructure;
133
+ exports.ClientJsonApiDelete = _chunkG6UE6MEPjs.ClientJsonApiDelete; exports.ClientJsonApiGet = _chunkG6UE6MEPjs.ClientJsonApiGet; exports.ClientJsonApiPatch = _chunkG6UE6MEPjs.ClientJsonApiPatch; exports.ClientJsonApiPost = _chunkG6UE6MEPjs.ClientJsonApiPost; exports.ClientJsonApiPut = _chunkG6UE6MEPjs.ClientJsonApiPut; exports.JsonApiContext = _chunk3EPNHTMHjs.JsonApiContext; exports.JsonApiProvider = _chunkTY5FYP3Gjs.JsonApiProvider; exports.TableGeneratorRegistry = _chunkTY5FYP3Gjs.TableGeneratorRegistry; exports.buildClientUrl = _chunkG6UE6MEPjs.buildClientUrl; exports.computeLayeredLayout = _chunkTY5FYP3Gjs.computeLayeredLayout; exports.configureClientConfig = _chunkS4YJ5WCWjs.configureClientConfig; exports.configureClientJsonApi = _chunkG6UE6MEPjs.configureClientJsonApi; exports.configureI18n = _chunkG6UE6MEPjs.configureI18n; exports.configureJsonApi = _chunkS4YJ5WCWjs.configureJsonApi; exports.directFetch = _chunkJTPRJNT2js.directFetch; exports.fitLayeredLayoutToAspectRatio = _chunkTY5FYP3Gjs.fitLayeredLayoutToAspectRatio; exports.getApiUrl = _chunkS4YJ5WCWjs.getApiUrl; exports.getAppUrl = _chunkS4YJ5WCWjs.getAppUrl; exports.getClientApiUrl = _chunkG6UE6MEPjs.getClientApiUrl; exports.getClientAppUrl = _chunkG6UE6MEPjs.getClientAppUrl; exports.getClientToken = _chunkLXKSUWAVjs.getClientToken; exports.getClientTrackablePages = _chunkG6UE6MEPjs.getClientTrackablePages; exports.getI18nLink = _chunkG6UE6MEPjs.getI18nLink; exports.getPublicApiUrl = _chunkS4YJ5WCWjs.getPublicApiUrl; exports.getStripePublishableKey = _chunkS4YJ5WCWjs.getStripePublishableKey; exports.getTrackablePages = _chunkS4YJ5WCWjs.getTrackablePages; exports.registerTableGenerator = _chunkTY5FYP3Gjs.registerTableGenerator; exports.tableGeneratorRegistry = _chunkTY5FYP3Gjs.tableGeneratorRegistry; exports.useContentTableStructure = _chunkTY5FYP3Gjs.useContentTableStructure; exports.useCustomD3Graph = _chunkTY5FYP3Gjs.useCustomD3Graph; exports.useDataListRetriever = _chunkTY5FYP3Gjs.useDataListRetriever; exports.useDebounce = _chunkTY5FYP3Gjs.useDebounce; exports.useI18nDateFnsLocale = _chunkG6UE6MEPjs.useI18nDateFnsLocale; exports.useI18nLocale = _chunkG6UE6MEPjs.useI18nLocale; exports.useI18nRouter = _chunkG6UE6MEPjs.useI18nRouter; exports.useI18nTranslations = _chunkG6UE6MEPjs.useI18nTranslations; exports.useJsonApiConfig = _chunk3EPNHTMHjs.useJsonApiConfig; exports.useJsonApiConfigOptional = _chunk3EPNHTMHjs.useJsonApiConfigOptional; exports.useJsonApiGet = _chunkTY5FYP3Gjs.useJsonApiGet; exports.useJsonApiMutation = _chunkTY5FYP3Gjs.useJsonApiMutation; exports.useNotificationSync = _chunkTY5FYP3Gjs.useNotificationSync; exports.useOAuthClient = _chunkTY5FYP3Gjs.useOAuthClient; exports.useOAuthClients = _chunkTY5FYP3Gjs.useOAuthClients; exports.useOAuthConsent = _chunkTY5FYP3Gjs.useOAuthConsent; exports.useOAuthScopeText = _chunkTY5FYP3Gjs.useOAuthScopeText; exports.usePageTracker = _chunkTY5FYP3Gjs.usePageTracker; exports.usePageUrlGenerator = _chunkTY5FYP3Gjs.usePageUrlGenerator; exports.usePushNotifications = _chunkTY5FYP3Gjs.usePushNotifications; exports.useRehydration = _chunkTY5FYP3Gjs.useRehydration; exports.useRehydrationList = _chunkTY5FYP3Gjs.useRehydrationList; exports.useRoleTableStructure = _chunkTY5FYP3Gjs.useRoleTableStructure; exports.useSocket = _chunkTY5FYP3Gjs.useSocket; exports.useSubscriptionStatus = _chunkTY5FYP3Gjs.useSubscriptionStatus; exports.useTableGenerator = _chunkTY5FYP3Gjs.useTableGenerator; exports.useUrlRewriter = _chunkTY5FYP3Gjs.useUrlRewriter; exports.useUserSearch = _chunkTY5FYP3Gjs.useUserSearch; exports.useUserTableStructure = _chunkTY5FYP3Gjs.useUserTableStructure;
134
134
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yjHAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"}
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"],"names":[],"mappings":"AAAA,qFAAY;AACZ;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B;AACE;AACF,uDAA6B;AAC7B;AACE;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,yjHAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/client/index.js"}
@@ -29,7 +29,7 @@ import {
29
29
  useUrlRewriter,
30
30
  useUserSearch,
31
31
  useUserTableStructure
32
- } from "../chunk-EUKTBOI2.mjs";
32
+ } from "../chunk-X5WIUUNG.mjs";
33
33
  import {
34
34
  configureClientConfig,
35
35
  configureJsonApi,
@@ -38,7 +38,7 @@ import {
38
38
  getPublicApiUrl,
39
39
  getStripePublishableKey,
40
40
  getTrackablePages
41
- } from "../chunk-QMYQRPQC.mjs";
41
+ } from "../chunk-6SQYXUVP.mjs";
42
42
  import "../chunk-PW42LRSL.mjs";
43
43
  import {
44
44
  ClientJsonApiDelete,
@@ -57,14 +57,14 @@ import {
57
57
  useI18nLocale,
58
58
  useI18nRouter,
59
59
  useI18nTranslations
60
- } from "../chunk-WC63PJSC.mjs";
60
+ } from "../chunk-VC5A3AUZ.mjs";
61
+ import "../chunk-V5MI7RNB.mjs";
61
62
  import {
62
63
  getClientToken
63
64
  } from "../chunk-AUXK7QSA.mjs";
64
65
  import {
65
66
  directFetch
66
67
  } from "../chunk-PI56A4DG.mjs";
67
- import "../chunk-V5MI7RNB.mjs";
68
68
  import {
69
69
  JsonApiContext,
70
70
  useJsonApiConfig,
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { PartialBlock } from '@blocknote/core';
3
+
4
+ /**
5
+ * Read-only rich text rendered on the server, so the text is in the HTML that
6
+ * crawlers read. For public read-only pages only: everywhere else, display goes
7
+ * through BlockNoteEditorContainer.
8
+ */
9
+ declare function BlockNoteServerContent({ content, size, className, }: {
10
+ content?: PartialBlock[];
11
+ size?: "default" | "sm";
12
+ className?: string;
13
+ }): Promise<React.JSX.Element | null>;
14
+
15
+ export { BlockNoteServerContent };
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ import { PartialBlock } from '@blocknote/core';
3
+
4
+ /**
5
+ * Read-only rich text rendered on the server, so the text is in the HTML that
6
+ * crawlers read. For public read-only pages only: everywhere else, display goes
7
+ * through BlockNoteEditorContainer.
8
+ */
9
+ declare function BlockNoteServerContent({ content, size, className, }: {
10
+ content?: PartialBlock[];
11
+ size?: "default" | "sm";
12
+ className?: string;
13
+ }): Promise<React.JSX.Element | null>;
14
+
15
+ export { BlockNoteServerContent };
@@ -0,0 +1,38 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7QVYU63Ejs = require('../../chunk-7QVYU63E.js');
4
+
5
+ // src/components/editors/server/BlockNoteServerContent.tsx
6
+ require('@blocknote/shadcn/style.css');
7
+ var _components = require('@carlonicora/nextjs-jsonapi/components');
8
+
9
+ // src/components/editors/server/renderBlockNoteHTML.ts
10
+ var _serverutil = require('@blocknote/server-util');
11
+ var editor;
12
+ var queue = Promise.resolve();
13
+ function renderBlockNoteHTML(blocks) {
14
+ const run = queue.then(() => {
15
+ editor ??= _serverutil.ServerBlockNoteEditor.create();
16
+ return editor.blocksToFullHTML(blocks);
17
+ });
18
+ queue = run.catch(() => void 0);
19
+ return run;
20
+ }
21
+ _chunk7QVYU63Ejs.__name.call(void 0, renderBlockNoteHTML, "renderBlockNoteHTML");
22
+
23
+ // src/components/editors/server/BlockNoteServerContent.tsx
24
+ var _jsxruntime = require('react/jsx-runtime');
25
+ async function BlockNoteServerContent({
26
+ content,
27
+ size,
28
+ className
29
+ }) {
30
+ if (!Array.isArray(content) || content.length === 0) return null;
31
+ const html = await renderBlockNoteHTML(content);
32
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _components.BlockNoteStaticViewer, { html, size, className });
33
+ }
34
+ _chunk7QVYU63Ejs.__name.call(void 0, BlockNoteServerContent, "BlockNoteServerContent");
35
+
36
+
37
+ exports.BlockNoteServerContent = BlockNoteServerContent;
38
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/components/editors/server.js","../../../src/components/editors/server/BlockNoteServerContent.tsx","../../../src/components/editors/server/renderBlockNoteHTML.ts"],"names":[],"mappings":"AAAA;AACE;AACF,0DAAgC;AAChC;AACA;ACHA,uCAAO;AAIP,oEAAsC;ADEtC;AACA;AEPA,oDAAsC;AAKtC,IAAI,MAAA;AAMJ,IAAI,MAAA,EAA0B,OAAA,CAAQ,OAAA,CAAQ,CAAA;AAMvC,SAAS,mBAAA,CAAoB,MAAA,EAAyC;AAC3E,EAAA,MAAM,IAAA,EAAM,KAAA,CAAM,IAAA,CAAK,CAAA,EAAA,GAAM;AAC3B,IAAA,OAAA,IAAW,iCAAA,CAAsB,MAAA,CAAO,CAAA;AACxC,IAAA,OAAO,MAAA,CAAO,gBAAA,CAAiB,MAAM,CAAA;AAAA,EACvC,CAAC,CAAA;AACD,EAAA,MAAA,EAAQ,GAAA,CAAI,KAAA,CAAM,CAAA,EAAA,GAAM,KAAA,CAAS,CAAA;AACjC,EAAA,OAAO,GAAA;AACT;AAPgB,qCAAA,mBAAA,EAAA,qBAAA,CAAA;AFGhB;AACA;ACIS,+CAAA;AAbT,MAAA,SAAsB,sBAAA,CAAuB;AAAA,EAC3C,OAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,GAAA,CAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,OAAO,EAAA,GAAK,OAAA,CAAQ,OAAA,IAAW,CAAA,EAAG,OAAO,IAAA;AAE5D,EAAA,MAAM,KAAA,EAAO,MAAM,mBAAA,CAAoB,OAAO,CAAA;AAE9C,EAAA,uBAAO,6BAAA,iCAAC,EAAA,EAAsB,IAAA,EAAY,IAAA,EAAY,UAAA,CAAsB,CAAA;AAC9E;AAdsB,qCAAA,sBAAA,EAAA,wBAAA,CAAA;ADqBtB;AACE;AACF,wDAAC","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/components/editors/server.js","sourcesContent":[null,"import type { PartialBlock } from \"@blocknote/core\";\nimport \"@blocknote/shadcn/style.css\";\n// Imported through the package's own client subpath, like the analytics server\n// pages: the built server entry must reach the viewer through the \"use client\"\n// bundle, not inline it.\nimport { BlockNoteStaticViewer } from \"@carlonicora/nextjs-jsonapi/components\";\nimport { renderBlockNoteHTML } from \"./renderBlockNoteHTML\";\n\n/**\n * Read-only rich text rendered on the server, so the text is in the HTML that\n * crawlers read. For public read-only pages only: everywhere else, display goes\n * through BlockNoteEditorContainer.\n */\nexport async function BlockNoteServerContent({\n content,\n size,\n className,\n}: {\n content?: PartialBlock[];\n size?: \"default\" | \"sm\";\n className?: string;\n}) {\n if (!Array.isArray(content) || content.length === 0) return null;\n\n const html = await renderBlockNoteHTML(content);\n\n return <BlockNoteStaticViewer html={html} size={size} className={className} />;\n}\n","import type { PartialBlock } from \"@blocknote/core\";\nimport { ServerBlockNoteEditor } from \"@blocknote/server-util\";\n\n// Default schema only, the same one BlockNoteViewer uses: the editor's mention\n// and diff inline specs are React specs from \"use client\" modules (next/link,\n// hover cards), so they cannot run here.\nlet editor: ServerBlockNoteEditor | undefined;\n\n// ServerBlockNoteEditor swaps globalThis.window/document for its JSDOM around\n// each call and restores them after an await. Two overlapping calls would\n// restore each other's values and could leave the JSDOM window on the server's\n// globals, so calls run one at a time.\nlet queue: Promise<unknown> = Promise.resolve();\n\n/**\n * Renders a BlockNote blocks array to the HTML the editor itself would render,\n * through BlockNote's own server editor (`blocksToFullHTML`). Server only.\n */\nexport function renderBlockNoteHTML(blocks: PartialBlock[]): Promise<string> {\n const run = queue.then(() => {\n editor ??= ServerBlockNoteEditor.create();\n return editor.blocksToFullHTML(blocks);\n });\n queue = run.catch(() => undefined);\n return run;\n}\n"]}
@@ -0,0 +1,38 @@
1
+ import {
2
+ __name
3
+ } from "../../chunk-PAWJFY3S.mjs";
4
+
5
+ // src/components/editors/server/BlockNoteServerContent.tsx
6
+ import "@blocknote/shadcn/style.css";
7
+ import { BlockNoteStaticViewer } from "@carlonicora/nextjs-jsonapi/components";
8
+
9
+ // src/components/editors/server/renderBlockNoteHTML.ts
10
+ import { ServerBlockNoteEditor } from "@blocknote/server-util";
11
+ var editor;
12
+ var queue = Promise.resolve();
13
+ function renderBlockNoteHTML(blocks) {
14
+ const run = queue.then(() => {
15
+ editor ??= ServerBlockNoteEditor.create();
16
+ return editor.blocksToFullHTML(blocks);
17
+ });
18
+ queue = run.catch(() => void 0);
19
+ return run;
20
+ }
21
+ __name(renderBlockNoteHTML, "renderBlockNoteHTML");
22
+
23
+ // src/components/editors/server/BlockNoteServerContent.tsx
24
+ import { jsx } from "react/jsx-runtime";
25
+ async function BlockNoteServerContent({
26
+ content,
27
+ size,
28
+ className
29
+ }) {
30
+ if (!Array.isArray(content) || content.length === 0) return null;
31
+ const html = await renderBlockNoteHTML(content);
32
+ return /* @__PURE__ */ jsx(BlockNoteStaticViewer, { html, size, className });
33
+ }
34
+ __name(BlockNoteServerContent, "BlockNoteServerContent");
35
+ export {
36
+ BlockNoteServerContent
37
+ };
38
+ //# sourceMappingURL=server.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/editors/server/BlockNoteServerContent.tsx","../../../src/components/editors/server/renderBlockNoteHTML.ts"],"sourcesContent":["import type { PartialBlock } from \"@blocknote/core\";\nimport \"@blocknote/shadcn/style.css\";\n// Imported through the package's own client subpath, like the analytics server\n// pages: the built server entry must reach the viewer through the \"use client\"\n// bundle, not inline it.\nimport { BlockNoteStaticViewer } from \"@carlonicora/nextjs-jsonapi/components\";\nimport { renderBlockNoteHTML } from \"./renderBlockNoteHTML\";\n\n/**\n * Read-only rich text rendered on the server, so the text is in the HTML that\n * crawlers read. For public read-only pages only: everywhere else, display goes\n * through BlockNoteEditorContainer.\n */\nexport async function BlockNoteServerContent({\n content,\n size,\n className,\n}: {\n content?: PartialBlock[];\n size?: \"default\" | \"sm\";\n className?: string;\n}) {\n if (!Array.isArray(content) || content.length === 0) return null;\n\n const html = await renderBlockNoteHTML(content);\n\n return <BlockNoteStaticViewer html={html} size={size} className={className} />;\n}\n","import type { PartialBlock } from \"@blocknote/core\";\nimport { ServerBlockNoteEditor } from \"@blocknote/server-util\";\n\n// Default schema only, the same one BlockNoteViewer uses: the editor's mention\n// and diff inline specs are React specs from \"use client\" modules (next/link,\n// hover cards), so they cannot run here.\nlet editor: ServerBlockNoteEditor | undefined;\n\n// ServerBlockNoteEditor swaps globalThis.window/document for its JSDOM around\n// each call and restores them after an await. Two overlapping calls would\n// restore each other's values and could leave the JSDOM window on the server's\n// globals, so calls run one at a time.\nlet queue: Promise<unknown> = Promise.resolve();\n\n/**\n * Renders a BlockNote blocks array to the HTML the editor itself would render,\n * through BlockNote's own server editor (`blocksToFullHTML`). Server only.\n */\nexport function renderBlockNoteHTML(blocks: PartialBlock[]): Promise<string> {\n const run = queue.then(() => {\n editor ??= ServerBlockNoteEditor.create();\n return editor.blocksToFullHTML(blocks);\n });\n queue = run.catch(() => undefined);\n return run;\n}\n"],"mappings":";;;;;AACA,OAAO;AAIP,SAAS,6BAA6B;;;ACJtC,SAAS,6BAA6B;AAKtC,IAAI;AAMJ,IAAI,QAA0B,QAAQ,QAAQ;AAMvC,SAAS,oBAAoB,QAAyC;AAC3E,QAAM,MAAM,MAAM,KAAK,MAAM;AAC3B,eAAW,sBAAsB,OAAO;AACxC,WAAO,OAAO,iBAAiB,MAAM;AAAA,EACvC,CAAC;AACD,UAAQ,IAAI,MAAM,MAAM,MAAS;AACjC,SAAO;AACT;AAPgB;;;ADQP;AAbT,eAAsB,uBAAuB;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,MAAI,CAAC,MAAM,QAAQ,OAAO,KAAK,QAAQ,WAAW,EAAG,QAAO;AAE5D,QAAM,OAAO,MAAM,oBAAoB,OAAO;AAE9C,SAAO,oBAAC,yBAAsB,MAAY,MAAY,WAAsB;AAC9E;AAdsB;","names":[]}
@@ -560,6 +560,17 @@ declare const BlockNoteViewerContainer: React__default.MemoExoticComponent<(prop
560
560
  size?: "default" | "sm";
561
561
  }) => React__default.JSX.Element>;
562
562
 
563
+ /**
564
+ * Shows HTML produced by BlockNoteServerContent inside the same container
565
+ * markup BlockNoteView renders, so BlockNote's stylesheet and the app's
566
+ * `.BlockNoteView` rules apply as they do to BlockNoteViewer.
567
+ */
568
+ declare function BlockNoteStaticViewer({ html, size, className, }: {
569
+ html: string;
570
+ size?: "default" | "sm";
571
+ className?: string;
572
+ }): React$1.JSX.Element;
573
+
563
574
  declare function ErrorDetails({ title, message, code }: {
564
575
  title?: string;
565
576
  message: string;
@@ -1633,7 +1644,26 @@ type AdminGroup = {
1633
1644
 
1634
1645
  /** Keys of the built-in platform sections, for `hiddenSections`. */
1635
1646
  type PlatformSectionKey = "companies" | "users" | "token-usage" | "ai-connections" | "rbac" | "billing";
1647
+ /**
1648
+ * The sections every NJA project has, by key. Hrefs are constants rather than
1649
+ * props: the path convention IS the contract that makes this component
1650
+ * reusable. Exported so an app that passes its own `groups` places these
1651
+ * entries without retyping their keys, icons and copy.
1652
+ *
1653
+ * `billing` is the only conditional entry: the default platform group shows it
1654
+ * only when Stripe is configured (see AdminIndexGrid). An app that places it in
1655
+ * its own `groups` applies the same check itself.
1656
+ */
1657
+ declare const ADMIN_PLATFORM_SECTIONS: Record<PlatformSectionKey, AdminSection>;
1636
1658
  type AdminIndexProps = {
1659
+ /**
1660
+ * Replaces the default groups (the built-in platform group plus
1661
+ * `additionalGroups`) with exactly these, in this order. For an app that
1662
+ * arranges its administration by its own headings; it places the platform
1663
+ * entries it wants from ADMIN_PLATFORM_SECTIONS. When set, `additionalGroups`
1664
+ * is ignored and the Stripe check on `billing` is the app's to apply.
1665
+ */
1666
+ groups?: AdminGroup[];
1637
1667
  /** Project-specific groups, appended after the built-in platform group. */
1638
1668
  additionalGroups?: AdminGroup[];
1639
1669
  /**
@@ -1649,13 +1679,13 @@ type AdminIndexProps = {
1649
1679
  * The grid itself, with no page shell — this is what the specs render, because
1650
1680
  * RoundPageContainer pulls in the app Header and its four header contexts.
1651
1681
  */
1652
- declare function AdminIndexGrid({ additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1682
+ declare function AdminIndexGrid({ groups: customGroups, additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1653
1683
  /**
1654
1684
  * Drop-in administration landing page. Mount it bare — it brings its own shell
1655
1685
  * and its own page chrome (AdministrationProvider), so it does not inherit the
1656
1686
  * title and breadcrumb of whatever page rendered before it.
1657
1687
  */
1658
- declare function AdminIndexContainer({ additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1688
+ declare function AdminIndexContainer({ groups, additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1659
1689
 
1660
1690
  /**
1661
1691
  * The fixed namespace of i18n keys the administration index reads via
@@ -1688,13 +1718,6 @@ declare const ADMINISTRATION_I18N_KEYS: readonly ["administration.title", "admin
1688
1718
  */
1689
1719
  declare const AI_CONNECTIONS_I18N_KEYS: readonly ["ai_connections.admin.title", "ai_connections.admin.entity", "ai_connections.admin.create", "ai_connections.admin.scope.global", "ai_connections.admin.scope.company", "ai_connections.admin.scope.inherits_global", "ai_connections.admin.env_fallback", "ai_connections.admin.empty.title", "ai_connections.admin.empty.description", "ai_connections.admin.types.ai", "ai_connections.admin.types.aiLite", "ai_connections.admin.types.aiLarge", "ai_connections.admin.types.vision", "ai_connections.admin.types.audio", "ai_connections.admin.types.image", "ai_connections.admin.types.embedder", "ai_connections.admin.types.transcriber", "ai_connections.admin.types.documentAi", "ai_connections.admin.fields.name", "ai_connections.admin.fields.provider", "ai_connections.admin.fields.model", "ai_connections.admin.fields.url", "ai_connections.admin.fields.apiKey", "ai_connections.admin.fields.region", "ai_connections.admin.fields.instance", "ai_connections.admin.fields.apiVersion", "ai_connections.admin.fields.googleCredentialsBase64", "ai_connections.admin.fields.allowFallbacks", "ai_connections.admin.fields.reasoningEffort", "ai_connections.admin.fields.maxOutputTokens", "ai_connections.admin.fields.dimensions", "ai_connections.admin.fields.inputCostPer1MTokens", "ai_connections.admin.fields.outputCostPer1MTokens", "ai_connections.admin.fields.cachedInputCostPer1MTokens", "ai_connections.admin.fields.costPerMinute", "ai_connections.admin.fields.costPerPage", "ai_connections.admin.fields.directUrl", "ai_connections.admin.fields.language", "ai_connections.admin.fields.directFormat", "ai_connections.admin.fields.directProvider", "ai_connections.admin.fields.costPerImage", "ai_connections.admin.fields.negativePrompt", "ai_connections.admin.fields.width", "ai_connections.admin.fields.height", "ai_connections.admin.fields.steps", "ai_connections.admin.fields.cfgScale", "ai_connections.admin.fields.safeMode", "ai_connections.admin.fields.hideWatermark", "ai_connections.admin.fields.imageFormat", "ai_connections.admin.fields.enabled", "ai_connections.admin.fields.costs_section", "ai_connections.admin.placeholders.name", "ai_connections.admin.placeholders.secret_unchanged", "ai_connections.admin.reorder.up", "ai_connections.admin.reorder.down", "ai_connections.admin.errors.name", "ai_connections.admin.errors.required_field", "ai_connections.admin.embedder_warning.title", "ai_connections.admin.embedder_warning.description", "ai_connections.admin.delete.title", "ai_connections.admin.delete.description", "ai_connections.admin.delete.confirm", "administration.ai_connections.description"];
1690
1720
 
1691
- /**
1692
- * Route the breadcrumb links back to. Constant rather than a prop for the same
1693
- * reason TOKEN_USAGE_ADMIN_PAGE_URL is
1694
- * (features/tokenusage/contexts/TokenUsageAdminContext.tsx): the breadcrumb is
1695
- * built here, not by the consuming app, and the path convention IS the contract.
1696
- */
1697
- declare const AI_CONNECTIONS_ADMIN_PAGE_URL = "/administration/ai-connections";
1698
1721
  interface AiConnectionsContextType {
1699
1722
  /** Every connection, both scopes — the cards filter per scope themselves. */
1700
1723
  connections: AiConnectionInterface[];
@@ -4005,4 +4028,4 @@ interface MultipleSelectorRef {
4005
4028
  declare function useDebounce<T>(value: T, delay?: number): T;
4006
4029
  declare const MultipleSelector: React$1.ForwardRefExoticComponent<MultipleSelectorProps & React$1.RefAttributes<MultipleSelectorRef>>;
4007
4030
 
4008
- export { ADMINISTRATION_I18N_KEYS, AI_CONNECTIONS_ADMIN_PAGE_URL, AI_CONNECTIONS_I18N_KEYS, AI_CONNECTION_TYPE_ORDER, AcceptInvitation, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivateAccount, AddUserToRole, AdminCompanyContainer, type AdminGroup, AdminIndexContainer, AdminIndexGrid, type AdminSection, AdminUsersList, AiConnectionDeleter, type AiConnectionDeleterProps, AiConnectionEditor, type AiConnectionEditorProps, AiConnectionEnvDefaults, AiConnectionInterface, AiConnectionTypeCard, type AiConnectionTypeCardProps, AiConnectionsContainer, type AiConnectionsContextType, AiConnectionsProvider, type AiConnectionsProviderProps, AiProviderRegistry, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AllUsersListContainer, AllowedUsersDetails, ApprovalActionCard, type ApprovalActionRenderer, AssistantBlockNoteComposer, AssistantComposer, AssistantContainer, AssistantContainerWithApprovals, AssistantPageContainer, AssistantThread, AttributeElement, AuthContainer, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, BackupCodesDialog, Badge, type BadgeProps, type BlockNoteAiConfig, type BlockNoteAiGenerateAction, type BlockNoteAiHandle, BlockNoteEditorContainer, BlockNoteEditorMentionHoverCard, BlockNoteEditorMentionSuggestionMenu, type BlockNoteEditorProps, BlockNoteViewerContainer, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbNavigation, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommonAddTrigger, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorDiscardDialog, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompaniesListContainer, CompanyConfigurationEditor, CompanyContainer, CompanyContent, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ConfirmDialog, type ConfirmDialogProps, ContentListGrid, type ContentListGridProps, ContentListTable, ContentTableSearch, ContentTitle, ContentsList, ContentsListById, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContributorsList, Cookies, CurrencyInput, type CurrencyInputProps, DatePickerPopover, DateRangeSelector, DetailField, type DetailFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisableTwoFactorDialog, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EditableAvatar, EditorSheet, type EditorSheetProps, EmptyState, EntityAvatar, EntityHero, EntityHeroAvatar, EntityHeroLayout, EntityHeroMetaRow, EntityMentionLink, EntityMultiSelector, EntitySection, EntitySelector, ErrorDetails, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, FiscalDataDisplay, type FiscalDataHandle, ForgotPassword, Form, FormBlockNote, FormBody, FormCheckbox, FormCol, FormDate, FormDateTime, FormFeatures, FormFieldWrapper, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormRow, FormSection, FormSelect, FormSlider, FormSwitch, FormTextarea, GdprConsentCheckbox, GdprConsentSection, type GenerateTableStructureParams, HEADER_ROW_MIN_H, HandbookAdminContainer, HandbookAskContainer, HandbookAskSheet, HandbookContents, HandbookIndexStatus, HandbookPageContainer, HandbookPageDetails, HandbookPageNavigator, HandbookPageNeighbours, HandbookPageToc, HandbookSectionGroup, HandbookSyncButton, Header, HoverCard, HoverCardContent, HoverCardTrigger, HowToCommand, HowToCommandViewer, HowToContainer, HowToContent, HowToDeleter, HowToDetails, HowToEditor, HowToList, HowToListContainer, HowToMultiSelector, HowToReindexButton, HowToSelector, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalianFiscalData, ItalianFiscalDataDisplay, type ItalianFiscalDataProps, KanbanItem as Item, KanbanItemHandle as ItemHandle, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, LandingComponent, Link, type LinkProps, Login, Logout, type MentionHoverCardProps, type MentionInsertFn, type MentionItem, type MentionNameResolver, type MentionRenderProps, type MentionRenderer, type MentionResolveFn, type MentionResolveResult, type MentionSearchFn, type MentionSuggestionItem, MermaidDiagram, MessageItem, MessageList, MessageSourcesPanel, MicroLabel, type MicroLabelProps, MobileNavigationBar, ModeToggleSwitch, MultiFileUploader, MultiSelect, MultipleSelector, type MultipleSelectorProps, type MultipleSelectorRef, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, NotificationErrorBoundary, NotificationIcon, NotificationMenuItem, NotificationModal, NotificationToast, type NotificationViewMode, NotificationViewSwitcher, NotificationsList, NotificationsListContainer, OAuthClientCard, type OAuthClientCardProps, OAuthClientDetail, type OAuthClientDetailProps, OAuthClientForm, type OAuthClientFormProps, OAuthClientList, type OAuthClientListProps, OAuthClientSecretDisplay, type OAuthClientSecretDisplayProps, OAuthCompanySelector, type OAuthCompanySelectorProps, OAuthConsentActions, type OAuthConsentActionsProps, OAuthConsentHeader, type OAuthConsentHeaderProps, OAuthConsentScreen, type OAuthConsentScreenProps, OAuthRedirectUriInput, type OAuthRedirectUriInputProps, OAuthScopeList, type OAuthScopeListProps, OAuthScopeSelector, type OAuthScopeSelectorProps, OnboardingCard, type Option, KanbanOverlay as Overlay, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, type PartitionedTabs, PasskeyButton, PasskeyList, PasskeySetupDialog, PasswordInput, type PasswordInputProps, type PlaceAddressComponents, type PlaceSuggestion, PlatformUsersContainer, PlatformUsersList, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, PushNotificationProvider, RadioGroup, RadioGroupItem, RbacByRoleContainer, RbacContainer, RbacPermissionCell, RbacPermissionPicker, ReactMarkdownContainer, RecentPagesNavigator, ReferralCodeCapture, ReferralDialog, type ReferralDialogProps, type ReferralDialogTranslations, ReferralWidget, type ReferralWidgetProps, type ReferralWidgetTranslations, RefreshUser, RelevantContentsList, RelevantUsersList, RemoveUserFromRole, ResetPassword, ResizableHandle, ResizablePanel, ResizablePanelGroup, RoleContainer, RoleDetails, RoleUsersList, RolesList, KanbanRoot as Root, RoundPageContainer, RoundPageContainerTitle, ScrollArea, ScrollBar, SectionHeader, type SectionHeaderProps, SecurityContainer, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupSourceCapture, Skeleton, Slider, Spinner, Switch, type Tab, Table, TableBody, TableCaption, TableCell, TableCellAvatar, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContainer, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, TokenStatusIndicator, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TotpAuthenticatorList, TotpInput, TotpSetupDialog, TwoFactorChallenge, TwoFactorSettings, UserAvatar, UserAvatarEditor, UserAvatarList, UserContainer, UserContent, UserDeleter, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSearchPopover, UserSelector, UserStanadaloneDetails, UsersList, UsersListByContentIds, UsersListContainer, WaitlistConfirmation, WaitlistForm, WaitlistHeroSection, WaitlistList, WaitlistQuestionnaireRenderer, WaitlistSuccessState, badgeVariants, buttonVariants, cellComponent, cellDate, cellDateTime, cellId, cellLink, cellUrl, commandFilterByKeywords, createMentionInlineContentSpec, errorToast, generateNotificationData, hasOpenInnerLayer, mentionDataAttrs, navigationMenuTriggerStyle, nextDateRange, parseFiscalData, parseMentionElement, partitionTabs, spinnerVariants, tabsListVariants, toggleVariants, triggerAssociationToast, useAiConnections, useCarousel, useComboboxAnchor, useDebounce, useEditorDialog, useFileUpload, useMentionInsert, useOptionalSidebar, useSidebar, useSidebarControls };
4031
+ export { ADMINISTRATION_I18N_KEYS, ADMIN_PLATFORM_SECTIONS, AI_CONNECTIONS_I18N_KEYS, AI_CONNECTION_TYPE_ORDER, AcceptInvitation, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivateAccount, AddUserToRole, AdminCompanyContainer, type AdminGroup, AdminIndexContainer, AdminIndexGrid, type AdminSection, AdminUsersList, AiConnectionDeleter, type AiConnectionDeleterProps, AiConnectionEditor, type AiConnectionEditorProps, AiConnectionEnvDefaults, AiConnectionInterface, AiConnectionTypeCard, type AiConnectionTypeCardProps, AiConnectionsContainer, type AiConnectionsContextType, AiConnectionsProvider, type AiConnectionsProviderProps, AiProviderRegistry, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AllUsersListContainer, AllowedUsersDetails, ApprovalActionCard, type ApprovalActionRenderer, AssistantBlockNoteComposer, AssistantComposer, AssistantContainer, AssistantContainerWithApprovals, AssistantPageContainer, AssistantThread, AttributeElement, AuthContainer, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, BackupCodesDialog, Badge, type BadgeProps, type BlockNoteAiConfig, type BlockNoteAiGenerateAction, type BlockNoteAiHandle, BlockNoteEditorContainer, BlockNoteEditorMentionHoverCard, BlockNoteEditorMentionSuggestionMenu, type BlockNoteEditorProps, BlockNoteStaticViewer, BlockNoteViewerContainer, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbNavigation, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommonAddTrigger, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorDiscardDialog, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompaniesListContainer, CompanyConfigurationEditor, CompanyContainer, CompanyContent, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ConfirmDialog, type ConfirmDialogProps, ContentListGrid, type ContentListGridProps, ContentListTable, ContentTableSearch, ContentTitle, ContentsList, ContentsListById, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContributorsList, Cookies, CurrencyInput, type CurrencyInputProps, DatePickerPopover, DateRangeSelector, DetailField, type DetailFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisableTwoFactorDialog, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EditableAvatar, EditorSheet, type EditorSheetProps, EmptyState, EntityAvatar, EntityHero, EntityHeroAvatar, EntityHeroLayout, EntityHeroMetaRow, EntityMentionLink, EntityMultiSelector, EntitySection, EntitySelector, ErrorDetails, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, FiscalDataDisplay, type FiscalDataHandle, ForgotPassword, Form, FormBlockNote, FormBody, FormCheckbox, FormCol, FormDate, FormDateTime, FormFeatures, FormFieldWrapper, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormRow, FormSection, FormSelect, FormSlider, FormSwitch, FormTextarea, GdprConsentCheckbox, GdprConsentSection, type GenerateTableStructureParams, HEADER_ROW_MIN_H, HandbookAdminContainer, HandbookAskContainer, HandbookAskSheet, HandbookContents, HandbookIndexStatus, HandbookPageContainer, HandbookPageDetails, HandbookPageNavigator, HandbookPageNeighbours, HandbookPageToc, HandbookSectionGroup, HandbookSyncButton, Header, HoverCard, HoverCardContent, HoverCardTrigger, HowToCommand, HowToCommandViewer, HowToContainer, HowToContent, HowToDeleter, HowToDetails, HowToEditor, HowToList, HowToListContainer, HowToMultiSelector, HowToReindexButton, HowToSelector, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalianFiscalData, ItalianFiscalDataDisplay, type ItalianFiscalDataProps, KanbanItem as Item, KanbanItemHandle as ItemHandle, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, LandingComponent, Link, type LinkProps, Login, Logout, type MentionHoverCardProps, type MentionInsertFn, type MentionItem, type MentionNameResolver, type MentionRenderProps, type MentionRenderer, type MentionResolveFn, type MentionResolveResult, type MentionSearchFn, type MentionSuggestionItem, MermaidDiagram, MessageItem, MessageList, MessageSourcesPanel, MicroLabel, type MicroLabelProps, MobileNavigationBar, ModeToggleSwitch, MultiFileUploader, MultiSelect, MultipleSelector, type MultipleSelectorProps, type MultipleSelectorRef, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, NotificationErrorBoundary, NotificationIcon, NotificationMenuItem, NotificationModal, NotificationToast, type NotificationViewMode, NotificationViewSwitcher, NotificationsList, NotificationsListContainer, OAuthClientCard, type OAuthClientCardProps, OAuthClientDetail, type OAuthClientDetailProps, OAuthClientForm, type OAuthClientFormProps, OAuthClientList, type OAuthClientListProps, OAuthClientSecretDisplay, type OAuthClientSecretDisplayProps, OAuthCompanySelector, type OAuthCompanySelectorProps, OAuthConsentActions, type OAuthConsentActionsProps, OAuthConsentHeader, type OAuthConsentHeaderProps, OAuthConsentScreen, type OAuthConsentScreenProps, OAuthRedirectUriInput, type OAuthRedirectUriInputProps, OAuthScopeList, type OAuthScopeListProps, OAuthScopeSelector, type OAuthScopeSelectorProps, OnboardingCard, type Option, KanbanOverlay as Overlay, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, type PartitionedTabs, PasskeyButton, PasskeyList, PasskeySetupDialog, PasswordInput, type PasswordInputProps, type PlaceAddressComponents, type PlaceSuggestion, type PlatformSectionKey, PlatformUsersContainer, PlatformUsersList, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, PushNotificationProvider, RadioGroup, RadioGroupItem, RbacByRoleContainer, RbacContainer, RbacPermissionCell, RbacPermissionPicker, ReactMarkdownContainer, RecentPagesNavigator, ReferralCodeCapture, ReferralDialog, type ReferralDialogProps, type ReferralDialogTranslations, ReferralWidget, type ReferralWidgetProps, type ReferralWidgetTranslations, RefreshUser, RelevantContentsList, RelevantUsersList, RemoveUserFromRole, ResetPassword, ResizableHandle, ResizablePanel, ResizablePanelGroup, RoleContainer, RoleDetails, RoleUsersList, RolesList, KanbanRoot as Root, RoundPageContainer, RoundPageContainerTitle, ScrollArea, ScrollBar, SectionHeader, type SectionHeaderProps, SecurityContainer, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupSourceCapture, Skeleton, Slider, Spinner, Switch, type Tab, Table, TableBody, TableCaption, TableCell, TableCellAvatar, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContainer, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, TokenStatusIndicator, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TotpAuthenticatorList, TotpInput, TotpSetupDialog, TwoFactorChallenge, TwoFactorSettings, UserAvatar, UserAvatarEditor, UserAvatarList, UserContainer, UserContent, UserDeleter, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSearchPopover, UserSelector, UserStanadaloneDetails, UsersList, UsersListByContentIds, UsersListContainer, WaitlistConfirmation, WaitlistForm, WaitlistHeroSection, WaitlistList, WaitlistQuestionnaireRenderer, WaitlistSuccessState, badgeVariants, buttonVariants, cellComponent, cellDate, cellDateTime, cellId, cellLink, cellUrl, commandFilterByKeywords, createMentionInlineContentSpec, errorToast, generateNotificationData, hasOpenInnerLayer, mentionDataAttrs, navigationMenuTriggerStyle, nextDateRange, parseFiscalData, parseMentionElement, partitionTabs, spinnerVariants, tabsListVariants, toggleVariants, triggerAssociationToast, useAiConnections, useCarousel, useComboboxAnchor, useDebounce, useEditorDialog, useFileUpload, useMentionInsert, useOptionalSidebar, useSidebar, useSidebarControls };
@@ -560,6 +560,17 @@ declare const BlockNoteViewerContainer: React__default.MemoExoticComponent<(prop
560
560
  size?: "default" | "sm";
561
561
  }) => React__default.JSX.Element>;
562
562
 
563
+ /**
564
+ * Shows HTML produced by BlockNoteServerContent inside the same container
565
+ * markup BlockNoteView renders, so BlockNote's stylesheet and the app's
566
+ * `.BlockNoteView` rules apply as they do to BlockNoteViewer.
567
+ */
568
+ declare function BlockNoteStaticViewer({ html, size, className, }: {
569
+ html: string;
570
+ size?: "default" | "sm";
571
+ className?: string;
572
+ }): React$1.JSX.Element;
573
+
563
574
  declare function ErrorDetails({ title, message, code }: {
564
575
  title?: string;
565
576
  message: string;
@@ -1633,7 +1644,26 @@ type AdminGroup = {
1633
1644
 
1634
1645
  /** Keys of the built-in platform sections, for `hiddenSections`. */
1635
1646
  type PlatformSectionKey = "companies" | "users" | "token-usage" | "ai-connections" | "rbac" | "billing";
1647
+ /**
1648
+ * The sections every NJA project has, by key. Hrefs are constants rather than
1649
+ * props: the path convention IS the contract that makes this component
1650
+ * reusable. Exported so an app that passes its own `groups` places these
1651
+ * entries without retyping their keys, icons and copy.
1652
+ *
1653
+ * `billing` is the only conditional entry: the default platform group shows it
1654
+ * only when Stripe is configured (see AdminIndexGrid). An app that places it in
1655
+ * its own `groups` applies the same check itself.
1656
+ */
1657
+ declare const ADMIN_PLATFORM_SECTIONS: Record<PlatformSectionKey, AdminSection>;
1636
1658
  type AdminIndexProps = {
1659
+ /**
1660
+ * Replaces the default groups (the built-in platform group plus
1661
+ * `additionalGroups`) with exactly these, in this order. For an app that
1662
+ * arranges its administration by its own headings; it places the platform
1663
+ * entries it wants from ADMIN_PLATFORM_SECTIONS. When set, `additionalGroups`
1664
+ * is ignored and the Stripe check on `billing` is the app's to apply.
1665
+ */
1666
+ groups?: AdminGroup[];
1637
1667
  /** Project-specific groups, appended after the built-in platform group. */
1638
1668
  additionalGroups?: AdminGroup[];
1639
1669
  /**
@@ -1649,13 +1679,13 @@ type AdminIndexProps = {
1649
1679
  * The grid itself, with no page shell — this is what the specs render, because
1650
1680
  * RoundPageContainer pulls in the app Header and its four header contexts.
1651
1681
  */
1652
- declare function AdminIndexGrid({ additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1682
+ declare function AdminIndexGrid({ groups: customGroups, additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1653
1683
  /**
1654
1684
  * Drop-in administration landing page. Mount it bare — it brings its own shell
1655
1685
  * and its own page chrome (AdministrationProvider), so it does not inherit the
1656
1686
  * title and breadcrumb of whatever page rendered before it.
1657
1687
  */
1658
- declare function AdminIndexContainer({ additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1688
+ declare function AdminIndexContainer({ groups, additionalGroups, hiddenSections }: AdminIndexProps): React$1.JSX.Element;
1659
1689
 
1660
1690
  /**
1661
1691
  * The fixed namespace of i18n keys the administration index reads via
@@ -1688,13 +1718,6 @@ declare const ADMINISTRATION_I18N_KEYS: readonly ["administration.title", "admin
1688
1718
  */
1689
1719
  declare const AI_CONNECTIONS_I18N_KEYS: readonly ["ai_connections.admin.title", "ai_connections.admin.entity", "ai_connections.admin.create", "ai_connections.admin.scope.global", "ai_connections.admin.scope.company", "ai_connections.admin.scope.inherits_global", "ai_connections.admin.env_fallback", "ai_connections.admin.empty.title", "ai_connections.admin.empty.description", "ai_connections.admin.types.ai", "ai_connections.admin.types.aiLite", "ai_connections.admin.types.aiLarge", "ai_connections.admin.types.vision", "ai_connections.admin.types.audio", "ai_connections.admin.types.image", "ai_connections.admin.types.embedder", "ai_connections.admin.types.transcriber", "ai_connections.admin.types.documentAi", "ai_connections.admin.fields.name", "ai_connections.admin.fields.provider", "ai_connections.admin.fields.model", "ai_connections.admin.fields.url", "ai_connections.admin.fields.apiKey", "ai_connections.admin.fields.region", "ai_connections.admin.fields.instance", "ai_connections.admin.fields.apiVersion", "ai_connections.admin.fields.googleCredentialsBase64", "ai_connections.admin.fields.allowFallbacks", "ai_connections.admin.fields.reasoningEffort", "ai_connections.admin.fields.maxOutputTokens", "ai_connections.admin.fields.dimensions", "ai_connections.admin.fields.inputCostPer1MTokens", "ai_connections.admin.fields.outputCostPer1MTokens", "ai_connections.admin.fields.cachedInputCostPer1MTokens", "ai_connections.admin.fields.costPerMinute", "ai_connections.admin.fields.costPerPage", "ai_connections.admin.fields.directUrl", "ai_connections.admin.fields.language", "ai_connections.admin.fields.directFormat", "ai_connections.admin.fields.directProvider", "ai_connections.admin.fields.costPerImage", "ai_connections.admin.fields.negativePrompt", "ai_connections.admin.fields.width", "ai_connections.admin.fields.height", "ai_connections.admin.fields.steps", "ai_connections.admin.fields.cfgScale", "ai_connections.admin.fields.safeMode", "ai_connections.admin.fields.hideWatermark", "ai_connections.admin.fields.imageFormat", "ai_connections.admin.fields.enabled", "ai_connections.admin.fields.costs_section", "ai_connections.admin.placeholders.name", "ai_connections.admin.placeholders.secret_unchanged", "ai_connections.admin.reorder.up", "ai_connections.admin.reorder.down", "ai_connections.admin.errors.name", "ai_connections.admin.errors.required_field", "ai_connections.admin.embedder_warning.title", "ai_connections.admin.embedder_warning.description", "ai_connections.admin.delete.title", "ai_connections.admin.delete.description", "ai_connections.admin.delete.confirm", "administration.ai_connections.description"];
1690
1720
 
1691
- /**
1692
- * Route the breadcrumb links back to. Constant rather than a prop for the same
1693
- * reason TOKEN_USAGE_ADMIN_PAGE_URL is
1694
- * (features/tokenusage/contexts/TokenUsageAdminContext.tsx): the breadcrumb is
1695
- * built here, not by the consuming app, and the path convention IS the contract.
1696
- */
1697
- declare const AI_CONNECTIONS_ADMIN_PAGE_URL = "/administration/ai-connections";
1698
1721
  interface AiConnectionsContextType {
1699
1722
  /** Every connection, both scopes — the cards filter per scope themselves. */
1700
1723
  connections: AiConnectionInterface[];
@@ -4005,4 +4028,4 @@ interface MultipleSelectorRef {
4005
4028
  declare function useDebounce<T>(value: T, delay?: number): T;
4006
4029
  declare const MultipleSelector: React$1.ForwardRefExoticComponent<MultipleSelectorProps & React$1.RefAttributes<MultipleSelectorRef>>;
4007
4030
 
4008
- export { ADMINISTRATION_I18N_KEYS, AI_CONNECTIONS_ADMIN_PAGE_URL, AI_CONNECTIONS_I18N_KEYS, AI_CONNECTION_TYPE_ORDER, AcceptInvitation, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivateAccount, AddUserToRole, AdminCompanyContainer, type AdminGroup, AdminIndexContainer, AdminIndexGrid, type AdminSection, AdminUsersList, AiConnectionDeleter, type AiConnectionDeleterProps, AiConnectionEditor, type AiConnectionEditorProps, AiConnectionEnvDefaults, AiConnectionInterface, AiConnectionTypeCard, type AiConnectionTypeCardProps, AiConnectionsContainer, type AiConnectionsContextType, AiConnectionsProvider, type AiConnectionsProviderProps, AiProviderRegistry, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AllUsersListContainer, AllowedUsersDetails, ApprovalActionCard, type ApprovalActionRenderer, AssistantBlockNoteComposer, AssistantComposer, AssistantContainer, AssistantContainerWithApprovals, AssistantPageContainer, AssistantThread, AttributeElement, AuthContainer, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, BackupCodesDialog, Badge, type BadgeProps, type BlockNoteAiConfig, type BlockNoteAiGenerateAction, type BlockNoteAiHandle, BlockNoteEditorContainer, BlockNoteEditorMentionHoverCard, BlockNoteEditorMentionSuggestionMenu, type BlockNoteEditorProps, BlockNoteViewerContainer, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbNavigation, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommonAddTrigger, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorDiscardDialog, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompaniesListContainer, CompanyConfigurationEditor, CompanyContainer, CompanyContent, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ConfirmDialog, type ConfirmDialogProps, ContentListGrid, type ContentListGridProps, ContentListTable, ContentTableSearch, ContentTitle, ContentsList, ContentsListById, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContributorsList, Cookies, CurrencyInput, type CurrencyInputProps, DatePickerPopover, DateRangeSelector, DetailField, type DetailFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisableTwoFactorDialog, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EditableAvatar, EditorSheet, type EditorSheetProps, EmptyState, EntityAvatar, EntityHero, EntityHeroAvatar, EntityHeroLayout, EntityHeroMetaRow, EntityMentionLink, EntityMultiSelector, EntitySection, EntitySelector, ErrorDetails, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, FiscalDataDisplay, type FiscalDataHandle, ForgotPassword, Form, FormBlockNote, FormBody, FormCheckbox, FormCol, FormDate, FormDateTime, FormFeatures, FormFieldWrapper, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormRow, FormSection, FormSelect, FormSlider, FormSwitch, FormTextarea, GdprConsentCheckbox, GdprConsentSection, type GenerateTableStructureParams, HEADER_ROW_MIN_H, HandbookAdminContainer, HandbookAskContainer, HandbookAskSheet, HandbookContents, HandbookIndexStatus, HandbookPageContainer, HandbookPageDetails, HandbookPageNavigator, HandbookPageNeighbours, HandbookPageToc, HandbookSectionGroup, HandbookSyncButton, Header, HoverCard, HoverCardContent, HoverCardTrigger, HowToCommand, HowToCommandViewer, HowToContainer, HowToContent, HowToDeleter, HowToDetails, HowToEditor, HowToList, HowToListContainer, HowToMultiSelector, HowToReindexButton, HowToSelector, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalianFiscalData, ItalianFiscalDataDisplay, type ItalianFiscalDataProps, KanbanItem as Item, KanbanItemHandle as ItemHandle, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, LandingComponent, Link, type LinkProps, Login, Logout, type MentionHoverCardProps, type MentionInsertFn, type MentionItem, type MentionNameResolver, type MentionRenderProps, type MentionRenderer, type MentionResolveFn, type MentionResolveResult, type MentionSearchFn, type MentionSuggestionItem, MermaidDiagram, MessageItem, MessageList, MessageSourcesPanel, MicroLabel, type MicroLabelProps, MobileNavigationBar, ModeToggleSwitch, MultiFileUploader, MultiSelect, MultipleSelector, type MultipleSelectorProps, type MultipleSelectorRef, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, NotificationErrorBoundary, NotificationIcon, NotificationMenuItem, NotificationModal, NotificationToast, type NotificationViewMode, NotificationViewSwitcher, NotificationsList, NotificationsListContainer, OAuthClientCard, type OAuthClientCardProps, OAuthClientDetail, type OAuthClientDetailProps, OAuthClientForm, type OAuthClientFormProps, OAuthClientList, type OAuthClientListProps, OAuthClientSecretDisplay, type OAuthClientSecretDisplayProps, OAuthCompanySelector, type OAuthCompanySelectorProps, OAuthConsentActions, type OAuthConsentActionsProps, OAuthConsentHeader, type OAuthConsentHeaderProps, OAuthConsentScreen, type OAuthConsentScreenProps, OAuthRedirectUriInput, type OAuthRedirectUriInputProps, OAuthScopeList, type OAuthScopeListProps, OAuthScopeSelector, type OAuthScopeSelectorProps, OnboardingCard, type Option, KanbanOverlay as Overlay, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, type PartitionedTabs, PasskeyButton, PasskeyList, PasskeySetupDialog, PasswordInput, type PasswordInputProps, type PlaceAddressComponents, type PlaceSuggestion, PlatformUsersContainer, PlatformUsersList, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, PushNotificationProvider, RadioGroup, RadioGroupItem, RbacByRoleContainer, RbacContainer, RbacPermissionCell, RbacPermissionPicker, ReactMarkdownContainer, RecentPagesNavigator, ReferralCodeCapture, ReferralDialog, type ReferralDialogProps, type ReferralDialogTranslations, ReferralWidget, type ReferralWidgetProps, type ReferralWidgetTranslations, RefreshUser, RelevantContentsList, RelevantUsersList, RemoveUserFromRole, ResetPassword, ResizableHandle, ResizablePanel, ResizablePanelGroup, RoleContainer, RoleDetails, RoleUsersList, RolesList, KanbanRoot as Root, RoundPageContainer, RoundPageContainerTitle, ScrollArea, ScrollBar, SectionHeader, type SectionHeaderProps, SecurityContainer, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupSourceCapture, Skeleton, Slider, Spinner, Switch, type Tab, Table, TableBody, TableCaption, TableCell, TableCellAvatar, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContainer, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, TokenStatusIndicator, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TotpAuthenticatorList, TotpInput, TotpSetupDialog, TwoFactorChallenge, TwoFactorSettings, UserAvatar, UserAvatarEditor, UserAvatarList, UserContainer, UserContent, UserDeleter, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSearchPopover, UserSelector, UserStanadaloneDetails, UsersList, UsersListByContentIds, UsersListContainer, WaitlistConfirmation, WaitlistForm, WaitlistHeroSection, WaitlistList, WaitlistQuestionnaireRenderer, WaitlistSuccessState, badgeVariants, buttonVariants, cellComponent, cellDate, cellDateTime, cellId, cellLink, cellUrl, commandFilterByKeywords, createMentionInlineContentSpec, errorToast, generateNotificationData, hasOpenInnerLayer, mentionDataAttrs, navigationMenuTriggerStyle, nextDateRange, parseFiscalData, parseMentionElement, partitionTabs, spinnerVariants, tabsListVariants, toggleVariants, triggerAssociationToast, useAiConnections, useCarousel, useComboboxAnchor, useDebounce, useEditorDialog, useFileUpload, useMentionInsert, useOptionalSidebar, useSidebar, useSidebarControls };
4031
+ export { ADMINISTRATION_I18N_KEYS, ADMIN_PLATFORM_SECTIONS, AI_CONNECTIONS_I18N_KEYS, AI_CONNECTION_TYPE_ORDER, AcceptInvitation, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivateAccount, AddUserToRole, AdminCompanyContainer, type AdminGroup, AdminIndexContainer, AdminIndexGrid, type AdminSection, AdminUsersList, AiConnectionDeleter, type AiConnectionDeleterProps, AiConnectionEditor, type AiConnectionEditorProps, AiConnectionEnvDefaults, AiConnectionInterface, AiConnectionTypeCard, type AiConnectionTypeCardProps, AiConnectionsContainer, type AiConnectionsContextType, AiConnectionsProvider, type AiConnectionsProviderProps, AiProviderRegistry, Alert, AlertAction, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogMedia, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AllUsersListContainer, AllowedUsersDetails, ApprovalActionCard, type ApprovalActionRenderer, AssistantBlockNoteComposer, AssistantComposer, AssistantContainer, AssistantContainerWithApprovals, AssistantPageContainer, AssistantThread, AttributeElement, AuthContainer, Avatar, AvatarBadge, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarImage, BackupCodesDialog, Badge, type BadgeProps, type BlockNoteAiConfig, type BlockNoteAiGenerateAction, type BlockNoteAiHandle, BlockNoteEditorContainer, BlockNoteEditorMentionHoverCard, BlockNoteEditorMentionSuggestionMenu, type BlockNoteEditorProps, BlockNoteStaticViewer, BlockNoteViewerContainer, KanbanBoard as Board, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbNavigation, BreadcrumbPage, BreadcrumbSeparator, Button, Calendar, CalendarDayButton, Card, CardAction, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Carousel, type CarouselApi, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, KanbanColumn as Column, KanbanColumnHandle as ColumnHandle, Combobox, ComboboxChip, ComboboxChips, ComboboxChipsInput, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxGroup, ComboboxInput, ComboboxItem, ComboboxLabel, ComboboxList, ComboboxSeparator, ComboboxTrigger, ComboboxValue, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CommonAddTrigger, CommonAssociationCommandDialog, CommonAssociationTrigger, CommonDeleter, CommonEditorButtons, CommonEditorDiscardDialog, CommonEditorHeader, CommonEditorTrigger, CompaniesList, CompaniesListContainer, CompanyConfigurationEditor, CompanyContainer, CompanyContent, CompanyDeleter, CompanyDetails, CompanyEditor, CompanyUsersList, ConfirmDialog, type ConfirmDialogProps, ContentListGrid, type ContentListGridProps, ContentListTable, ContentTableSearch, ContentTitle, ContentsList, ContentsListById, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ContributorsList, Cookies, CurrencyInput, type CurrencyInputProps, DatePickerPopover, DateRangeSelector, DetailField, type DetailFieldProps, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DisableTwoFactorDialog, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EditableAvatar, EditorSheet, type EditorSheetProps, EmptyState, EntityAvatar, EntityHero, EntityHeroAvatar, EntityHeroLayout, EntityHeroMetaRow, EntityMentionLink, EntityMultiSelector, EntitySection, EntitySelector, ErrorDetails, Field, FieldContent, FieldDescription, FieldError, FieldGroup, FieldLabel, FieldLegend, FieldSeparator, FieldSet, FieldTitle, FileInput, FileUploader, FileUploaderContent, FileUploaderItem, FiscalDataDisplay, type FiscalDataHandle, ForgotPassword, Form, FormBlockNote, FormBody, FormCheckbox, FormCol, FormDate, FormDateTime, FormFeatures, FormFieldWrapper, FormInput, FormPassword, FormPlaceAutocomplete, FormRoles, FormRow, FormSection, FormSelect, FormSlider, FormSwitch, FormTextarea, GdprConsentCheckbox, GdprConsentSection, type GenerateTableStructureParams, HEADER_ROW_MIN_H, HandbookAdminContainer, HandbookAskContainer, HandbookAskSheet, HandbookContents, HandbookIndexStatus, HandbookPageContainer, HandbookPageDetails, HandbookPageNavigator, HandbookPageNeighbours, HandbookPageToc, HandbookSectionGroup, HandbookSyncButton, Header, HoverCard, HoverCardContent, HoverCardTrigger, HowToCommand, HowToCommandViewer, HowToContainer, HowToContent, HowToDeleter, HowToDetails, HowToEditor, HowToList, HowToListContainer, HowToMultiSelector, HowToReindexButton, HowToSelector, Input, InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput, InputGroupText, InputGroupTextarea, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, ItalianFiscalData, ItalianFiscalDataDisplay, type ItalianFiscalDataProps, KanbanItem as Item, KanbanItemHandle as ItemHandle, KanbanRoot as Kanban, KanbanBoard, KanbanColumn, KanbanColumnHandle, KanbanItem, KanbanItemHandle, KanbanOverlay, Label, LandingComponent, Link, type LinkProps, Login, Logout, type MentionHoverCardProps, type MentionInsertFn, type MentionItem, type MentionNameResolver, type MentionRenderProps, type MentionRenderer, type MentionResolveFn, type MentionResolveResult, type MentionSearchFn, type MentionSuggestionItem, MermaidDiagram, MessageItem, MessageList, MessageSourcesPanel, MicroLabel, type MicroLabelProps, MobileNavigationBar, ModeToggleSwitch, MultiFileUploader, MultiSelect, MultipleSelector, type MultipleSelectorProps, type MultipleSelectorRef, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuPositioner, NavigationMenuTrigger, NotificationErrorBoundary, NotificationIcon, NotificationMenuItem, NotificationModal, NotificationToast, type NotificationViewMode, NotificationViewSwitcher, NotificationsList, NotificationsListContainer, OAuthClientCard, type OAuthClientCardProps, OAuthClientDetail, type OAuthClientDetailProps, OAuthClientForm, type OAuthClientFormProps, OAuthClientList, type OAuthClientListProps, OAuthClientSecretDisplay, type OAuthClientSecretDisplayProps, OAuthCompanySelector, type OAuthCompanySelectorProps, OAuthConsentActions, type OAuthConsentActionsProps, OAuthConsentHeader, type OAuthConsentHeaderProps, OAuthConsentScreen, type OAuthConsentScreenProps, OAuthRedirectUriInput, type OAuthRedirectUriInputProps, OAuthScopeList, type OAuthScopeListProps, OAuthScopeSelector, type OAuthScopeSelectorProps, OnboardingCard, type Option, KanbanOverlay as Overlay, PageContainer, PageContainerContentDetails, type PageContainerItems, PageContentContainer, PageSection, type PartitionedTabs, PasskeyButton, PasskeyList, PasskeySetupDialog, PasswordInput, type PasswordInputProps, type PlaceAddressComponents, type PlaceSuggestion, type PlatformSectionKey, PlatformUsersContainer, PlatformUsersList, Popover, PopoverContent, PopoverDescription, PopoverHeader, PopoverTitle, PopoverTrigger, Progress, ProgressIndicator, ProgressLabel, ProgressTrack, ProgressValue, PushNotificationProvider, RadioGroup, RadioGroupItem, RbacByRoleContainer, RbacContainer, RbacPermissionCell, RbacPermissionPicker, ReactMarkdownContainer, RecentPagesNavigator, ReferralCodeCapture, ReferralDialog, type ReferralDialogProps, type ReferralDialogTranslations, ReferralWidget, type ReferralWidgetProps, type ReferralWidgetTranslations, RefreshUser, RelevantContentsList, RelevantUsersList, RemoveUserFromRole, ResetPassword, ResizableHandle, ResizablePanel, ResizablePanelGroup, RoleContainer, RoleDetails, RoleUsersList, RolesList, KanbanRoot as Root, RoundPageContainer, RoundPageContainerTitle, ScrollArea, ScrollBar, SectionHeader, type SectionHeaderProps, SecurityContainer, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, SignupSourceCapture, Skeleton, Slider, Spinner, Switch, type Tab, Table, TableBody, TableCaption, TableCell, TableCellAvatar, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContainer, TabsContent, TabsList, TabsTrigger, Textarea, Toaster, Toggle, TokenStatusIndicator, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TotpAuthenticatorList, TotpInput, TotpSetupDialog, TwoFactorChallenge, TwoFactorSettings, UserAvatar, UserAvatarEditor, UserAvatarList, UserContainer, UserContent, UserDeleter, UserEditor, UserIndexContainer, UserIndexDetails, UserListInAdd, UserMultiSelect, UserReactivator, UserResentInvitationEmail, UserRoleAdd, UserRolesList, UserSearchPopover, UserSelector, UserStanadaloneDetails, UsersList, UsersListByContentIds, UsersListContainer, WaitlistConfirmation, WaitlistForm, WaitlistHeroSection, WaitlistList, WaitlistQuestionnaireRenderer, WaitlistSuccessState, badgeVariants, buttonVariants, cellComponent, cellDate, cellDateTime, cellId, cellLink, cellUrl, commandFilterByKeywords, createMentionInlineContentSpec, errorToast, generateNotificationData, hasOpenInnerLayer, mentionDataAttrs, navigationMenuTriggerStyle, nextDateRange, parseFiscalData, parseMentionElement, partitionTabs, spinnerVariants, tabsListVariants, toggleVariants, triggerAssociationToast, useAiConnections, useCarousel, useComboboxAnchor, useDebounce, useEditorDialog, useFileUpload, useMentionInsert, useOptionalSidebar, useSidebar, useSidebarControls };