@carlonicora/nextjs-jsonapi 1.51.0 → 1.53.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 (205) hide show
  1. package/dist/{AuthComponent-BkK4Sf3q.d.mts → AuthComponent-CK9aRRW2.d.mts} +1 -1
  2. package/dist/{AuthComponent-DCfP4o32.d.ts → AuthComponent-IqFWLNIU.d.ts} +1 -1
  3. package/dist/{BlockNoteEditor-DJ6KL6WO.js → BlockNoteEditor-AROKR3J6.js} +14 -14
  4. package/dist/{BlockNoteEditor-DJ6KL6WO.js.map → BlockNoteEditor-AROKR3J6.js.map} +1 -1
  5. package/dist/{BlockNoteEditor-5EIAVNTF.mjs → BlockNoteEditor-CNMSBGCL.mjs} +4 -4
  6. package/dist/ModulePathsInterface-49EWvbWy.d.mts +31 -0
  7. package/dist/ModulePathsInterface-wVS5Raa4.d.ts +31 -0
  8. package/dist/{auth.interface-C4kEZscm.d.ts → auth.interface-C1WjZ0fM.d.ts} +1 -1
  9. package/dist/{auth.interface-24ID4yhT.d.mts → auth.interface-fBFqIrw4.d.mts} +1 -1
  10. package/dist/billing/index.js +346 -346
  11. package/dist/billing/index.mjs +3 -3
  12. package/dist/{chunk-BUCV5VFT.mjs → chunk-FE26PIZK.mjs} +53 -2
  13. package/dist/chunk-FE26PIZK.mjs.map +1 -0
  14. package/dist/{chunk-JLWZGQIU.mjs → chunk-G5473JP3.mjs} +3275 -2188
  15. package/dist/chunk-G5473JP3.mjs.map +1 -0
  16. package/dist/{chunk-XNISXVQL.mjs → chunk-J2PYGXVD.mjs} +70 -1
  17. package/dist/chunk-J2PYGXVD.mjs.map +1 -0
  18. package/dist/{chunk-LRWYUAPX.js → chunk-PQIXFKHT.js} +1913 -826
  19. package/dist/chunk-PQIXFKHT.js.map +1 -0
  20. package/dist/{chunk-QIA5FOQB.js → chunk-QOLVON35.js} +71 -2
  21. package/dist/chunk-QOLVON35.js.map +1 -0
  22. package/dist/{chunk-V63TFESU.js → chunk-UJBUJALX.js} +53 -2
  23. package/dist/chunk-UJBUJALX.js.map +1 -0
  24. package/dist/client/index.d.mts +25 -7
  25. package/dist/client/index.d.ts +25 -7
  26. package/dist/client/index.js +10 -4
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/client/index.mjs +9 -3
  29. package/dist/components/index.d.mts +78 -20
  30. package/dist/components/index.d.ts +78 -20
  31. package/dist/components/index.js +48 -4
  32. package/dist/components/index.js.map +1 -1
  33. package/dist/components/index.mjs +47 -3
  34. package/dist/{config-CPN6QZfo.d.ts → config-DZWAFB7H.d.ts} +1 -1
  35. package/dist/{config-DaxjKdIo.d.mts → config-ndRJIQsP.d.mts} +1 -1
  36. package/dist/{content.interface-DvPs_JbX.d.mts → content.interface-B5ySfiOE.d.mts} +1 -1
  37. package/dist/{content.interface-Czin-YRh.d.ts → content.interface-mmz0uMwm.d.ts} +1 -1
  38. package/dist/contexts/index.d.mts +2 -2
  39. package/dist/contexts/index.d.ts +2 -2
  40. package/dist/contexts/index.js +4 -4
  41. package/dist/contexts/index.mjs +3 -3
  42. package/dist/core/index.d.mts +15 -10
  43. package/dist/core/index.d.ts +15 -10
  44. package/dist/core/index.js +6 -2
  45. package/dist/core/index.js.map +1 -1
  46. package/dist/core/index.mjs +5 -1
  47. package/dist/index.d.mts +47 -10
  48. package/dist/index.d.ts +47 -10
  49. package/dist/index.js +17 -3
  50. package/dist/index.js.map +1 -1
  51. package/dist/index.mjs +16 -2
  52. package/dist/{notification.interface-DEW8hR8g.d.ts → notification.interface-COKHDQeE.d.ts} +1 -1
  53. package/dist/{notification.interface-DKR5WGKH.d.mts → notification.interface-DG7cq9oG.d.mts} +1 -1
  54. package/dist/{s3.service-BHjcTA0t.d.mts → s3.service-BoRPFx82.d.mts} +4 -4
  55. package/dist/{s3.service-C_K1VHyx.d.ts → s3.service-ppn9iGJU.d.ts} +4 -4
  56. package/dist/scripts/generate-web-module/generator.d.ts.map +1 -1
  57. package/dist/scripts/generate-web-module/generator.js +62 -4
  58. package/dist/scripts/generate-web-module/generator.js.map +1 -1
  59. package/dist/scripts/generate-web-module/templates/components/container.template.js +12 -43
  60. package/dist/scripts/generate-web-module/templates/components/container.template.js.map +1 -1
  61. package/dist/scripts/generate-web-module/templates/components/details.template.js +7 -5
  62. package/dist/scripts/generate-web-module/templates/components/details.template.js.map +1 -1
  63. package/dist/scripts/generate-web-module/templates/components/editor.template.d.ts.map +1 -1
  64. package/dist/scripts/generate-web-module/templates/components/editor.template.js +28 -17
  65. package/dist/scripts/generate-web-module/templates/components/editor.template.js.map +1 -1
  66. package/dist/scripts/generate-web-module/templates/components/list.template.js +4 -3
  67. package/dist/scripts/generate-web-module/templates/components/list.template.js.map +1 -1
  68. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.d.ts.map +1 -1
  69. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js +6 -4
  70. package/dist/scripts/generate-web-module/templates/components/multi-selector.template.js.map +1 -1
  71. package/dist/scripts/generate-web-module/templates/components/selector.template.d.ts.map +1 -1
  72. package/dist/scripts/generate-web-module/templates/components/selector.template.js +8 -5
  73. package/dist/scripts/generate-web-module/templates/components/selector.template.js.map +1 -1
  74. package/dist/scripts/generate-web-module/templates/context.template.d.ts.map +1 -1
  75. package/dist/scripts/generate-web-module/templates/context.template.js +8 -6
  76. package/dist/scripts/generate-web-module/templates/context.template.js.map +1 -1
  77. package/dist/scripts/generate-web-module/templates/data/aliases.template.d.ts +15 -0
  78. package/dist/scripts/generate-web-module/templates/data/aliases.template.d.ts.map +1 -0
  79. package/dist/scripts/generate-web-module/templates/data/aliases.template.js +31 -0
  80. package/dist/scripts/generate-web-module/templates/data/aliases.template.js.map +1 -0
  81. package/dist/scripts/generate-web-module/templates/data/fields.template.js +2 -2
  82. package/dist/scripts/generate-web-module/templates/data/fields.template.js.map +1 -1
  83. package/dist/scripts/generate-web-module/templates/data/index.d.ts +1 -0
  84. package/dist/scripts/generate-web-module/templates/data/index.d.ts.map +1 -1
  85. package/dist/scripts/generate-web-module/templates/data/index.js +1 -0
  86. package/dist/scripts/generate-web-module/templates/data/index.js.map +1 -1
  87. package/dist/scripts/generate-web-module/templates/data/interface.template.js +11 -5
  88. package/dist/scripts/generate-web-module/templates/data/interface.template.js.map +1 -1
  89. package/dist/scripts/generate-web-module/templates/data/model.template.js +25 -16
  90. package/dist/scripts/generate-web-module/templates/data/model.template.js.map +1 -1
  91. package/dist/scripts/generate-web-module/templates/data/service.template.js +5 -1
  92. package/dist/scripts/generate-web-module/templates/data/service.template.js.map +1 -1
  93. package/dist/scripts/generate-web-module/templates/index.d.ts +1 -1
  94. package/dist/scripts/generate-web-module/templates/index.d.ts.map +1 -1
  95. package/dist/scripts/generate-web-module/templates/index.js +2 -1
  96. package/dist/scripts/generate-web-module/templates/index.js.map +1 -1
  97. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.d.ts.map +1 -1
  98. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js +6 -7
  99. package/dist/scripts/generate-web-module/templates/pages/detail-page.template.js.map +1 -1
  100. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js +3 -3
  101. package/dist/scripts/generate-web-module/templates/pages/list-page.template.js.map +1 -1
  102. package/dist/scripts/generate-web-module/transformers/field-mapper.js +5 -5
  103. package/dist/scripts/generate-web-module/transformers/field-mapper.js.map +1 -1
  104. package/dist/scripts/generate-web-module/transformers/i18n-generator.js +2 -2
  105. package/dist/scripts/generate-web-module/transformers/i18n-generator.js.map +1 -1
  106. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts +1 -0
  107. package/dist/scripts/generate-web-module/transformers/import-resolver.d.ts.map +1 -1
  108. package/dist/scripts/generate-web-module/transformers/import-resolver.js +1 -0
  109. package/dist/scripts/generate-web-module/transformers/import-resolver.js.map +1 -1
  110. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts +3 -3
  111. package/dist/scripts/generate-web-module/transformers/relationship-resolver.d.ts.map +1 -1
  112. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js +19 -13
  113. package/dist/scripts/generate-web-module/transformers/relationship-resolver.js.map +1 -1
  114. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts +4 -2
  115. package/dist/scripts/generate-web-module/types/field-mapping.types.d.ts.map +1 -1
  116. package/dist/scripts/generate-web-module/types/field-mapping.types.js +23 -7
  117. package/dist/scripts/generate-web-module/types/field-mapping.types.js.map +1 -1
  118. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts +2 -0
  119. package/dist/scripts/generate-web-module/types/template-data.interface.d.ts.map +1 -1
  120. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js +2 -2
  121. package/dist/scripts/generate-web-module/utils/bootstrapper-updater.js.map +1 -1
  122. package/dist/scripts/generate-web-module/utils/file-writer.d.ts +6 -0
  123. package/dist/scripts/generate-web-module/utils/file-writer.d.ts.map +1 -1
  124. package/dist/scripts/generate-web-module/utils/file-writer.js +22 -0
  125. package/dist/scripts/generate-web-module/utils/file-writer.js.map +1 -1
  126. package/dist/scripts/generate-web-module/utils/i18n-updater.js +13 -13
  127. package/dist/scripts/generate-web-module/utils/i18n-updater.js.map +1 -1
  128. package/dist/scripts/generate-web-module/utils/index.d.ts +1 -1
  129. package/dist/scripts/generate-web-module/utils/index.d.ts.map +1 -1
  130. package/dist/scripts/generate-web-module/utils/index.js +2 -1
  131. package/dist/scripts/generate-web-module/utils/index.js.map +1 -1
  132. package/dist/server/index.d.mts +4 -4
  133. package/dist/server/index.d.ts +4 -4
  134. package/dist/server/index.js +3 -3
  135. package/dist/server/index.mjs +1 -1
  136. package/dist/useRbacState-DhuYYr0S.d.mts +77 -0
  137. package/dist/useRbacState-NnzNL2ED.d.ts +77 -0
  138. package/dist/{useSocket-BW6haECW.d.mts → useSocket-CtfuR5wD.d.mts} +1 -1
  139. package/dist/{useSocket-C9FmYuRM.d.ts → useSocket-bsV-K4qR.d.ts} +1 -1
  140. package/package.json +2 -2
  141. package/scripts/generate-web-module/generator.ts +70 -5
  142. package/scripts/generate-web-module/templates/components/container.template.ts +12 -43
  143. package/scripts/generate-web-module/templates/components/details.template.ts +7 -5
  144. package/scripts/generate-web-module/templates/components/editor.template.ts +27 -17
  145. package/scripts/generate-web-module/templates/components/list.template.ts +4 -3
  146. package/scripts/generate-web-module/templates/components/multi-selector.template.ts +6 -4
  147. package/scripts/generate-web-module/templates/components/selector.template.ts +8 -5
  148. package/scripts/generate-web-module/templates/context.template.ts +8 -6
  149. package/scripts/generate-web-module/templates/data/aliases.template.ts +33 -0
  150. package/scripts/generate-web-module/templates/data/fields.template.ts +2 -2
  151. package/scripts/generate-web-module/templates/data/index.ts +1 -0
  152. package/scripts/generate-web-module/templates/data/interface.template.ts +10 -5
  153. package/scripts/generate-web-module/templates/data/model.template.ts +24 -16
  154. package/scripts/generate-web-module/templates/data/service.template.ts +6 -1
  155. package/scripts/generate-web-module/templates/index.ts +1 -0
  156. package/scripts/generate-web-module/templates/pages/detail-page.template.ts +6 -7
  157. package/scripts/generate-web-module/templates/pages/list-page.template.ts +3 -3
  158. package/scripts/generate-web-module/transformers/field-mapper.ts +5 -5
  159. package/scripts/generate-web-module/transformers/i18n-generator.ts +2 -2
  160. package/scripts/generate-web-module/transformers/import-resolver.ts +2 -0
  161. package/scripts/generate-web-module/transformers/relationship-resolver.ts +19 -13
  162. package/scripts/generate-web-module/types/field-mapping.types.ts +19 -6
  163. package/scripts/generate-web-module/types/template-data.interface.ts +2 -0
  164. package/scripts/generate-web-module/utils/bootstrapper-updater.ts +2 -2
  165. package/scripts/generate-web-module/utils/file-writer.ts +21 -0
  166. package/scripts/generate-web-module/utils/i18n-updater.ts +13 -13
  167. package/scripts/generate-web-module/utils/index.ts +1 -1
  168. package/src/client/index.ts +4 -0
  169. package/src/components/containers/RoundPageContainer.tsx +13 -16
  170. package/src/components/containers/RoundPageContainerTitle.tsx +1 -1
  171. package/src/components/index.ts +6 -0
  172. package/src/components/navigations/Header.tsx +1 -3
  173. package/src/core/index.ts +1 -0
  174. package/src/core/registry/ModuleRegistry.ts +3 -0
  175. package/src/features/rbac/components/RbacContainer.tsx +82 -0
  176. package/src/features/rbac/components/RbacFeatureSection.tsx +66 -0
  177. package/src/features/rbac/components/RbacModuleTable.tsx +121 -0
  178. package/src/features/rbac/components/RbacPermissionCell.tsx +97 -0
  179. package/src/features/rbac/components/RbacPermissionPicker.tsx +179 -0
  180. package/src/features/rbac/components/RbacToolbar.tsx +40 -0
  181. package/src/features/rbac/data/ModulePaths.ts +25 -0
  182. package/src/features/rbac/data/ModulePathsInterface.ts +6 -0
  183. package/src/features/rbac/data/PermissionMapping.ts +43 -0
  184. package/src/features/rbac/data/PermissionMappingInterface.ts +12 -0
  185. package/src/features/rbac/data/RbacService.ts +47 -0
  186. package/src/features/rbac/data/RbacTypes.ts +15 -0
  187. package/src/features/rbac/data/index.ts +6 -0
  188. package/src/features/rbac/hooks/useRbacState.test.ts +178 -0
  189. package/src/features/rbac/hooks/useRbacState.ts +319 -0
  190. package/src/features/rbac/index.ts +19 -0
  191. package/src/features/rbac/rbac.module.ts +19 -0
  192. package/src/features/rbac/utils/RbacMigrationGenerator.test.ts +124 -0
  193. package/src/features/rbac/utils/RbacMigrationGenerator.ts +184 -0
  194. package/src/index.ts +4 -0
  195. package/src/shadcnui/index.ts +1 -0
  196. package/src/shadcnui/ui/command.tsx +2 -2
  197. package/dist/chunk-BUCV5VFT.mjs.map +0 -1
  198. package/dist/chunk-JLWZGQIU.mjs.map +0 -1
  199. package/dist/chunk-LRWYUAPX.js.map +0 -1
  200. package/dist/chunk-QIA5FOQB.js.map +0 -1
  201. package/dist/chunk-V63TFESU.js.map +0 -1
  202. package/dist/chunk-XNISXVQL.mjs.map +0 -1
  203. package/dist/useDataListRetriever-BqJSFBck.d.mts +0 -33
  204. package/dist/useDataListRetriever-BqJSFBck.d.ts +0 -33
  205. /package/dist/{BlockNoteEditor-5EIAVNTF.mjs.map → BlockNoteEditor-CNMSBGCL.mjs.map} +0 -0
@@ -116,7 +116,7 @@ function CommandItem({ className, children, ...props }: React.ComponentProps<typ
116
116
  <CommandPrimitive.Item
117
117
  data-slot="command-item"
118
118
  className={cn(
119
- "data-selected:bg-muted data-selected:text-foreground data-selected:*:[svg]:text-foreground relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none [&_svg:not([class*='size-'])]:size-3.5 [[data-slot=dialog-content]_&]:rounded-md group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
119
+ "data-[selected=true]:bg-muted data-[selected=true]:text-foreground data-[selected=true]:*:[svg]:text-foreground relative flex min-h-7 cursor-default items-center gap-2 rounded-md px-2.5 py-1.5 text-xs/relaxed outline-hidden select-none [&_svg:not([class*='size-'])]:size-3.5 [[data-slot=dialog-content]_&]:rounded-md group/command-item data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
120
120
  className,
121
121
  )}
122
122
  {...props}
@@ -132,7 +132,7 @@ function CommandShortcut({ className, ...props }: React.ComponentProps<"span">)
132
132
  <span
133
133
  data-slot="command-shortcut"
134
134
  className={cn(
135
- "text-muted-foreground group-data-selected/command-item:text-foreground ml-auto text-[0.625rem] tracking-widest",
135
+ "text-muted-foreground group-data-[selected=true]/command-item:text-foreground ml-auto text-[0.625rem] tracking-widest",
136
136
  className,
137
137
  )}
138
138
  {...props}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/client/config.ts","../src/i18n/config.ts","../src/login/config.ts","../src/roles/config.ts","../src/features/waitlist/config/waitlist.config.ts","../src/features/referral/config.ts"],"sourcesContent":["\"use client\";\n\nimport { ModuleWithPermissions } from \"../permissions/types\";\nimport { setBootstrapper } from \"../core/registry/bootstrapStore\";\n\n// Config storage for client-side contexts\nlet _clientConfig: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n stripePublishableKey?: string;\n} | null = null;\n\n/**\n * Configure the JSON:API client. This is the main configuration function.\n * This is typically called during app initialization.\n */\nexport function configureJsonApi(config: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n bootstrapper?: () => void;\n additionalHeaders?: Record<string, string>;\n stripePublishableKey?: string;\n}): void {\n _clientConfig = config;\n // Register and call bootstrapper to register all modules\n if (config.bootstrapper) {\n setBootstrapper(config.bootstrapper);\n config.bootstrapper();\n }\n}\n\n/**\n * Configure the client config. This is typically called during app initialization.\n * @deprecated Use configureJsonApi instead\n */\nexport function configureClientConfig(config: {\n apiUrl: string;\n appUrl?: string;\n trackablePages?: ModuleWithPermissions[];\n}): void {\n _clientConfig = config;\n}\n\n/**\n * Get the configured API URL.\n */\nexport function getApiUrl(): string {\n if (_clientConfig?.apiUrl) {\n return _clientConfig.apiUrl;\n }\n if (typeof process !== \"undefined\" && process.env?.NEXT_PUBLIC_API_URL) {\n return process.env.NEXT_PUBLIC_API_URL;\n }\n return \"\";\n}\n\n/**\n * Get the configured app URL.\n */\nexport function getAppUrl(): string {\n if (_clientConfig?.appUrl) {\n return _clientConfig.appUrl;\n }\n if (typeof process !== \"undefined\" && process.env?.NEXT_PUBLIC_APP_URL) {\n return process.env.NEXT_PUBLIC_APP_URL;\n }\n if (typeof window !== \"undefined\") {\n return window.location.origin;\n }\n return \"\";\n}\n\n/**\n * Get the configured trackable pages.\n */\nexport function getTrackablePages(): ModuleWithPermissions[] {\n return _clientConfig?.trackablePages ?? [];\n}\n\n/**\n * Get the configured Stripe publishable key.\n */\nexport function getStripePublishableKey(): string | undefined {\n return _clientConfig?.stripePublishableKey;\n}\n","import { ComponentType } from \"react\";\n\n// Types for injected hooks\nexport interface I18nRouter {\n push: (href: string) => void;\n replace: (href: string) => void;\n back: () => void;\n forward: () => void;\n refresh: () => void;\n prefetch: (href: string) => void;\n}\n\nexport type UseRouterHook = () => I18nRouter;\nexport type UseTranslationsHook = (namespace?: string) => (key: string, values?: Record<string, any>) => string;\nexport type UseLocaleHook = () => string;\n\nexport type UseDateFnsLocaleHook = () => any; // date-fns Locale type\nexport type LinkComponent = ComponentType<{ href: string; children: React.ReactNode; [key: string]: any }>;\n\nexport interface I18nConfig {\n useRouter: UseRouterHook;\n useTranslations: UseTranslationsHook;\n useLocale?: UseLocaleHook;\n useDateFnsLocale?: UseDateFnsLocaleHook;\n Link: LinkComponent;\n usePathname: () => string;\n}\n\n// Private storage\nlet _config: I18nConfig | null = null;\n\n// Configuration function (called by app at startup)\nexport function configureI18n(config: I18nConfig): void {\n _config = config;\n}\n\n// Hooks for library components to use\nexport function useI18nRouter(): I18nRouter {\n if (!_config?.useRouter) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.useRouter();\n}\n\nexport function useI18nTranslations(namespace?: string): (key: string, values?: Record<string, any>) => string {\n if (!_config?.useTranslations) {\n // Fallback: return key as-is (safe for server/client)\n return (key: string) => key;\n }\n return _config.useTranslations(namespace);\n}\n\nexport function getI18nLink(): LinkComponent {\n if (!_config?.Link) {\n throw new Error(\"i18n not configured. Call configureI18n() at app startup.\");\n }\n return _config.Link;\n}\n\nexport function useI18nLocale(): string {\n if (_config?.useLocale) {\n return _config.useLocale();\n }\n // Fallback to English (safe for server/client)\n return \"en\";\n}\n\nexport function useI18nDateFnsLocale(): any {\n if (_config?.useDateFnsLocale) {\n return _config.useDateFnsLocale();\n }\n // Fallback to undefined (Calendar will use default)\n return undefined;\n}\n","let _useDiscordAuth: boolean = false;\nlet _useGoogleAuth: boolean = false;\nlet _useInternalAuth: boolean = true;\nlet _allowRegistration: boolean = true;\nlet _registrationMode: \"open\" | \"closed\" | \"waitlist\" = \"open\";\n\nexport type RegistrationMode = \"open\" | \"closed\" | \"waitlist\";\n\nexport interface LoginConfig {\n discordClientId?: string;\n googleClientId?: string;\n useInternalAuth?: boolean;\n allowRegistration?: boolean;\n registrationMode?: RegistrationMode;\n}\n\nexport function configureLogin(params: LoginConfig): void {\n _useDiscordAuth = !!params.discordClientId;\n _useGoogleAuth = !!params.googleClientId;\n _useInternalAuth = params.useInternalAuth ?? true;\n _allowRegistration = params.allowRegistration ?? true;\n _registrationMode = params.registrationMode ?? \"open\";\n}\n\nexport function isDiscordAuthEnabled(): boolean {\n return _useDiscordAuth;\n}\n\nexport function isGoogleAuthEnabled(): boolean {\n return _useGoogleAuth;\n}\n\nexport function isInternalAuthEnabled(): boolean {\n return _useInternalAuth;\n}\n\nexport function isRegistrationAllowed(): boolean {\n return _allowRegistration;\n}\n\nexport function getRegistrationMode(): RegistrationMode {\n return _registrationMode;\n}\n","/**\n * Role ID configuration interface\n * Apps provide their role IDs via configureRoles()\n */\nexport interface RoleIdConfig {\n Administrator: string;\n CompanyAdministrator: string;\n [key: string]: string; // Allow additional roles\n}\n\n// Private storage for the injected role IDs\nlet _roleId: RoleIdConfig | null = null;\n\n/**\n * Configure role IDs for the library\n * Call this at app startup to provide role ID constants\n *\n * @example\n * ```typescript\n * import { configureRoles } from \"@carlonicora/nextjs-jsonapi\";\n * import { RoleId } from \"@phlow/shared\";\n *\n * configureRoles(RoleId);\n * ```\n */\nexport function configureRoles(roleId: RoleIdConfig): void {\n _roleId = roleId;\n}\n\n/**\n * Get configured role IDs\n * @throws Error if roles not configured\n */\nexport function getRoleId(): RoleIdConfig {\n if (!_roleId) {\n throw new Error(\"Roles not configured. Call configureRoles() at app startup.\");\n }\n return _roleId;\n}\n\n/**\n * Check if roles have been configured\n */\nexport function isRolesConfigured(): boolean {\n return _roleId !== null;\n}\n","export type QuestionnaireFieldType = \"text\" | \"textarea\" | \"select\" | \"checkbox\";\n\nexport interface QuestionnaireOption {\n value: string;\n label: string;\n description?: string;\n}\n\nexport interface QuestionnaireField {\n id: string;\n type: QuestionnaireFieldType;\n label: string;\n description?: string;\n placeholder?: string;\n required?: boolean;\n options?: QuestionnaireOption[];\n}\n\nexport interface WaitlistConfig {\n questionnaire?: QuestionnaireField[];\n heroTitle?: string;\n heroSubtitle?: string;\n heroDescription?: string;\n benefits?: string[];\n}\n\nlet _waitlistConfig: WaitlistConfig = {};\n\nexport function configureWaitlist(config: WaitlistConfig): void {\n _waitlistConfig = config;\n}\n\nexport function getWaitlistConfig(): WaitlistConfig {\n return _waitlistConfig;\n}\n","/**\n * Configuration interface for frontend referral feature.\n */\nexport interface ReferralConfig {\n /**\n * Whether the referral feature is enabled.\n * When false, components render nothing and hooks return null.\n * @default false\n */\n enabled?: boolean;\n\n /**\n * Name of the cookie used to store referral codes.\n * @default \"referral_code\"\n */\n cookieName?: string;\n\n /**\n * Number of days the referral cookie is valid.\n * @default 30\n */\n cookieDays?: number;\n\n /**\n * Query parameter name for referral code in URL.\n * @default \"ref\"\n */\n urlParamName?: string;\n\n /**\n * Base URL for referral links.\n * @default window.location.origin (client-side only)\n */\n referralUrlBase?: string;\n\n /**\n * Path to append to base URL for referral links.\n * @default \"/\"\n */\n referralPath?: string;\n}\n\n/**\n * Default configuration values\n */\nexport const DEFAULT_REFERRAL_CONFIG: Required<ReferralConfig> = {\n enabled: false,\n cookieName: \"referral_code\",\n cookieDays: 30,\n urlParamName: \"ref\",\n referralUrlBase: \"\",\n referralPath: \"/\",\n};\n\n// Private storage for configuration\nlet _referralConfig: Required<ReferralConfig> = { ...DEFAULT_REFERRAL_CONFIG };\n\n/**\n * Configure referral feature settings.\n * Call this at app startup to enable and configure referral functionality.\n *\n * @example\n * ```typescript\n * import { configureReferral } from \"@carlonicora/nextjs-jsonapi\";\n *\n * configureReferral({\n * enabled: process.env.NEXT_PUBLIC_REFERRAL_ENABLED === 'true',\n * cookieDays: 30,\n * });\n * ```\n */\nexport function configureReferral(config: ReferralConfig): void {\n _referralConfig = { ...DEFAULT_REFERRAL_CONFIG, ...config };\n}\n\n/**\n * Get the current referral configuration.\n * @internal\n */\nexport function getReferralConfig(): Required<ReferralConfig> {\n return _referralConfig;\n}\n\n/**\n * Check if referral feature is enabled.\n */\nexport function isReferralEnabled(): boolean {\n return _referralConfig.enabled;\n}\n"],"mappings":"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","names":[]}