@jmruthers/pace-core 0.5.181 → 0.5.183

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 (756) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +16 -2
  3. package/dist/{AuthService-DYuQPJj6.d.ts → AuthService-B-cd2MA4.d.ts} +9 -11
  4. package/dist/{DataTable-CWAZZcXC.d.ts → DataTable-Bz8ffqyA.d.ts} +1 -1
  5. package/dist/{DataTable-UA6CL4JI.js → DataTable-QAB34V6K.js} +14 -15
  6. package/dist/UnifiedAuthProvider-7F6T4B6K.js +13 -0
  7. package/dist/{UnifiedAuthProvider-DJxGTftH.d.ts → UnifiedAuthProvider-F86d7dSi.d.ts} +5 -6
  8. package/dist/{api-45XYYO2A.js → api-ROMBCNKU.js} +5 -5
  9. package/dist/{audit-64X3VJXB.js → audit-WRS3KJKI.js} +4 -4
  10. package/dist/auth-BZOJqrdd.d.ts +49 -0
  11. package/dist/{chunk-CX5M4ZAG.js → chunk-5DRSZLL2.js} +1 -1
  12. package/dist/chunk-5DRSZLL2.js.map +1 -0
  13. package/dist/{chunk-BESYRHQM.js → chunk-6C4YBBJM.js} +10 -7
  14. package/dist/chunk-6C4YBBJM.js.map +1 -0
  15. package/dist/{chunk-PLDDJCW6.js → chunk-7D4SUZUM.js} +2 -13
  16. package/dist/{chunk-HRO5HWN2.js → chunk-CSOFYHAG.js} +55 -162
  17. package/dist/chunk-CSOFYHAG.js.map +1 -0
  18. package/dist/{chunk-ANBQRTPX.js → chunk-E66EQZE6.js} +3 -5
  19. package/dist/{chunk-ANBQRTPX.js.map → chunk-E66EQZE6.js.map} +1 -1
  20. package/dist/{chunk-Q5QRDWKI.js → chunk-F2IMUDXZ.js} +4 -6
  21. package/dist/chunk-F2IMUDXZ.js.map +1 -0
  22. package/dist/{chunk-SBVILCCA.js → chunk-FSFQFJCU.js} +28 -6
  23. package/dist/chunk-FSFQFJCU.js.map +1 -0
  24. package/dist/chunk-FUEYYMX5.js +2296 -0
  25. package/dist/chunk-FUEYYMX5.js.map +1 -0
  26. package/dist/{chunk-FFKNH6U5.js → chunk-HKIT6O7W.js} +3 -5
  27. package/dist/{chunk-FFKNH6U5.js.map → chunk-HKIT6O7W.js.map} +1 -1
  28. package/dist/chunk-KQCRWDSA.js +1 -0
  29. package/dist/{chunk-S5OFRT4M.js → chunk-KUEN3HFB.js} +6 -6
  30. package/dist/chunk-KUEN3HFB.js.map +1 -0
  31. package/dist/chunk-LMC26NLJ.js +84 -0
  32. package/dist/chunk-LMC26NLJ.js.map +1 -0
  33. package/dist/{chunk-BVYWGZVV.js → chunk-M7W4CP3M.js} +52 -19
  34. package/dist/chunk-M7W4CP3M.js.map +1 -0
  35. package/dist/{chunk-HZLDFOE4.js → chunk-MI7HBHN3.js} +164 -243
  36. package/dist/chunk-MI7HBHN3.js.map +1 -0
  37. package/dist/{chunk-PPMP5J6T.js → chunk-PWAHJW4G.js} +180 -29
  38. package/dist/chunk-PWAHJW4G.js.map +1 -0
  39. package/dist/chunk-PWLANIRT.js +127 -0
  40. package/dist/{chunk-XDNLUEXI.js.map → chunk-PWLANIRT.js.map} +1 -1
  41. package/dist/chunk-QCDXODCA.js +75 -0
  42. package/dist/chunk-QCDXODCA.js.map +1 -0
  43. package/dist/{chunk-D7LCGMVS.js → chunk-QETLRQI6.js} +526 -887
  44. package/dist/chunk-QETLRQI6.js.map +1 -0
  45. package/dist/{chunk-5MT24GKJ.js → chunk-QUVSNGIP.js} +264 -262
  46. package/dist/chunk-QUVSNGIP.js.map +1 -0
  47. package/dist/chunk-QXHPKYJV.js +113 -0
  48. package/dist/chunk-QXHPKYJV.js.map +1 -0
  49. package/dist/{chunk-OWAG3GSU.js → chunk-R77UEZ4E.js} +11 -1
  50. package/dist/chunk-R77UEZ4E.js.map +1 -0
  51. package/dist/{chunk-ZYTYSTO5.js → chunk-RA3JUFMW.js} +314 -161
  52. package/dist/chunk-RA3JUFMW.js.map +1 -0
  53. package/dist/{chunk-ERISIBYU.js → chunk-SQGMNID3.js} +3 -8
  54. package/dist/chunk-SQGMNID3.js.map +1 -0
  55. package/dist/{chunk-XJ2HZOBU.js → chunk-UHNYIBXL.js} +1 -1
  56. package/dist/chunk-UHNYIBXL.js.map +1 -0
  57. package/{src/utils/secureStorage.ts → dist/chunk-VBXEHIUJ.js} +113 -88
  58. package/dist/{chunk-7QCC6MCP.js.map → chunk-VBXEHIUJ.js.map} +1 -1
  59. package/dist/{chunk-VZ4VDGTB.js → chunk-W22JP75J.js} +5 -13
  60. package/dist/{chunk-VZ4VDGTB.js.map → chunk-W22JP75J.js.map} +1 -1
  61. package/dist/components.d.ts +12 -93
  62. package/dist/components.js +23 -106
  63. package/dist/components.js.map +1 -1
  64. package/dist/core-CUElvH_C.d.ts +164 -0
  65. package/dist/database.generated-CBmg2950.d.ts +8284 -0
  66. package/dist/event-CW5YB_2p.d.ts +239 -0
  67. package/dist/{file-reference-C6Gkn77H.d.ts → file-reference-D06mEEWW.d.ts} +7 -5
  68. package/dist/functions-D_kgHktt.d.ts +208 -0
  69. package/dist/hooks.d.ts +54 -7
  70. package/dist/hooks.js +204 -17
  71. package/dist/hooks.js.map +1 -1
  72. package/dist/{EventLogo-B3V3otev.d.ts → index-Bl--n7-T.d.ts} +387 -397
  73. package/dist/index.d.ts +94 -261
  74. package/dist/index.js +314 -126
  75. package/dist/index.js.map +1 -1
  76. package/dist/providers.d.ts +7 -8
  77. package/dist/providers.js +6 -13
  78. package/dist/rbac/index.d.ts +171 -101
  79. package/dist/rbac/index.js +23 -17
  80. package/dist/styles/index.d.ts +1 -3
  81. package/dist/styles/index.js +2 -17
  82. package/dist/theming/runtime.js +3 -3
  83. package/dist/types-UU913iLA.d.ts +102 -0
  84. package/dist/{types-Dfz9dmVH.d.ts → types-_x1f4QBF.d.ts} +6 -6
  85. package/dist/types.d.ts +88 -227
  86. package/dist/types.js +64 -112
  87. package/dist/types.js.map +1 -1
  88. package/dist/{usePublicRouteParams-B7PabvuH.d.ts → usePublicRouteParams-JJczomYq.d.ts} +203 -6
  89. package/dist/utils.d.ts +299 -13
  90. package/dist/utils.js +481 -55
  91. package/dist/utils.js.map +1 -1
  92. package/dist/validation-643vUDZW.d.ts +177 -0
  93. package/docs/DOCUMENTATION_REVIEW_TRACKER.md +511 -0
  94. package/docs/README.md +9 -8
  95. package/docs/api/README.md +16 -2
  96. package/docs/api/classes/ColumnFactory.md +1 -1
  97. package/docs/api/classes/ErrorBoundary.md +1 -1
  98. package/docs/api/classes/InvalidScopeError.md +4 -4
  99. package/docs/api/classes/MissingUserContextError.md +4 -4
  100. package/docs/api/classes/OrganisationContextRequiredError.md +4 -4
  101. package/docs/api/classes/PermissionDeniedError.md +4 -4
  102. package/docs/api/classes/RBACAuditManager.md +14 -14
  103. package/docs/api/classes/RBACCache.md +1 -1
  104. package/docs/api/classes/RBACEngine.md +2 -2
  105. package/docs/api/classes/RBACError.md +4 -4
  106. package/docs/api/classes/RBACNotInitializedError.md +4 -4
  107. package/docs/api/classes/SecureSupabaseClient.md +29 -9
  108. package/docs/api/classes/StorageUtils.md +1 -1
  109. package/docs/api/enums/FileCategory.md +17 -17
  110. package/docs/api/enums/RBACErrorCode.md +228 -0
  111. package/docs/api/enums/RPCFunction.md +118 -0
  112. package/docs/api/interfaces/AggregateConfig.md +1 -1
  113. package/docs/api/interfaces/BadgeProps.md +1 -1
  114. package/docs/api/interfaces/ButtonProps.md +2 -2
  115. package/docs/api/interfaces/CalendarProps.md +1 -1
  116. package/docs/api/interfaces/CardProps.md +29 -3
  117. package/docs/api/interfaces/ColorPalette.md +1 -1
  118. package/docs/api/interfaces/ColorShade.md +1 -1
  119. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  120. package/docs/api/interfaces/DataRecord.md +1 -1
  121. package/docs/api/interfaces/DataTableAction.md +2 -2
  122. package/docs/api/interfaces/DataTableColumn.md +6 -6
  123. package/docs/api/interfaces/DataTableProps.md +1 -1
  124. package/docs/api/interfaces/DataTableToolbarButton.md +2 -2
  125. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  126. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  127. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  128. package/docs/api/interfaces/ExportColumn.md +5 -5
  129. package/docs/api/interfaces/ExportOptions.md +4 -4
  130. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  131. package/docs/api/interfaces/FileMetadata.md +13 -13
  132. package/docs/api/interfaces/FileReference.md +12 -12
  133. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  134. package/docs/api/interfaces/FileUploadOptions.md +10 -10
  135. package/docs/api/interfaces/FileUploadProps.md +19 -19
  136. package/docs/api/interfaces/FooterProps.md +1 -1
  137. package/docs/api/interfaces/FormFieldProps.md +166 -0
  138. package/docs/api/interfaces/FormProps.md +113 -0
  139. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  140. package/docs/api/interfaces/InactivityWarningModalProps.md +8 -8
  141. package/docs/api/interfaces/InputProps.md +2 -2
  142. package/docs/api/interfaces/LabelProps.md +8 -8
  143. package/docs/api/interfaces/LoginFormProps.md +1 -1
  144. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  145. package/docs/api/interfaces/NavigationContextType.md +1 -1
  146. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  147. package/docs/api/interfaces/NavigationItem.md +17 -73
  148. package/docs/api/interfaces/NavigationMenuProps.md +38 -53
  149. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  150. package/docs/api/interfaces/Organisation.md +13 -13
  151. package/docs/api/interfaces/OrganisationContextType.md +21 -21
  152. package/docs/api/interfaces/OrganisationMembership.md +15 -15
  153. package/docs/api/interfaces/OrganisationProviderProps.md +59 -2
  154. package/docs/api/interfaces/OrganisationSecurityError.md +5 -5
  155. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -39
  156. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  157. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  158. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  159. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  160. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  161. package/docs/api/interfaces/PaletteData.md +1 -1
  162. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  163. package/docs/api/interfaces/ProgressProps.md +50 -0
  164. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  165. package/docs/api/interfaces/PublicPageFooterProps.md +9 -9
  166. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -10
  167. package/docs/api/interfaces/PublicPageLayoutProps.md +15 -15
  168. package/docs/api/interfaces/RBACAccessValidateParams.md +52 -0
  169. package/docs/api/interfaces/RBACAccessValidateResult.md +41 -0
  170. package/docs/api/interfaces/RBACAuditLogParams.md +85 -0
  171. package/docs/api/interfaces/RBACAuditLogResult.md +52 -0
  172. package/docs/api/interfaces/RBACConfig.md +2 -2
  173. package/docs/api/interfaces/RBACContext.md +52 -0
  174. package/docs/api/interfaces/RBACLogger.md +1 -1
  175. package/docs/api/interfaces/RBACPageAccessCheckParams.md +74 -0
  176. package/docs/api/interfaces/RBACPermissionCheckParams.md +74 -0
  177. package/docs/api/interfaces/RBACPermissionCheckResult.md +52 -0
  178. package/docs/api/interfaces/RBACPermissionsGetParams.md +63 -0
  179. package/docs/api/interfaces/RBACPermissionsGetResult.md +63 -0
  180. package/docs/api/interfaces/RBACResult.md +58 -0
  181. package/docs/api/interfaces/RBACRoleGrantParams.md +63 -0
  182. package/docs/api/interfaces/RBACRoleGrantResult.md +52 -0
  183. package/docs/api/interfaces/RBACRoleRevokeParams.md +63 -0
  184. package/docs/api/interfaces/RBACRoleRevokeResult.md +52 -0
  185. package/docs/api/interfaces/RBACRoleValidateParams.md +52 -0
  186. package/docs/api/interfaces/RBACRoleValidateResult.md +63 -0
  187. package/docs/api/interfaces/RBACRolesListParams.md +52 -0
  188. package/docs/api/interfaces/RBACRolesListResult.md +74 -0
  189. package/docs/api/interfaces/RBACSessionTrackParams.md +74 -0
  190. package/docs/api/interfaces/RBACSessionTrackResult.md +52 -0
  191. package/docs/api/interfaces/ResourcePermissions.md +1 -1
  192. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  193. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  194. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  195. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  196. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  197. package/docs/api/interfaces/RouteConfig.md +1 -1
  198. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  199. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  200. package/docs/api/interfaces/SessionRestorationLoaderProps.md +15 -2
  201. package/docs/api/interfaces/StorageConfig.md +1 -1
  202. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  203. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  204. package/docs/api/interfaces/StorageListOptions.md +1 -1
  205. package/docs/api/interfaces/StorageListResult.md +1 -1
  206. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  207. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  208. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  209. package/docs/api/interfaces/StyleImport.md +1 -1
  210. package/docs/api/interfaces/SwitchProps.md +1 -1
  211. package/docs/api/interfaces/TabsContentProps.md +1 -1
  212. package/docs/api/interfaces/TabsListProps.md +1 -1
  213. package/docs/api/interfaces/TabsProps.md +1 -1
  214. package/docs/api/interfaces/TabsTriggerProps.md +43 -2
  215. package/docs/api/interfaces/TextareaProps.md +2 -2
  216. package/docs/api/interfaces/ToastActionElement.md +1 -1
  217. package/docs/api/interfaces/ToastProps.md +1 -1
  218. package/docs/api/interfaces/UnifiedAuthContextType.md +61 -61
  219. package/docs/api/interfaces/UnifiedAuthProviderProps.md +13 -13
  220. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  221. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  222. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  223. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  224. package/docs/api/interfaces/UsePublicEventOptions.md +3 -3
  225. package/docs/api/interfaces/UsePublicEventReturn.md +5 -5
  226. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +2 -2
  227. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  228. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  229. package/docs/api/interfaces/UseResolvedScopeOptions.md +2 -2
  230. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  231. package/docs/api/interfaces/UseResourcePermissionsOptions.md +1 -1
  232. package/docs/api/interfaces/UserEventAccess.md +1 -1
  233. package/docs/api/interfaces/UserMenuProps.md +4 -4
  234. package/docs/api/interfaces/UserProfile.md +7 -7
  235. package/docs/api/modules.md +484 -462
  236. package/docs/api-reference/components.md +186 -15
  237. package/docs/api-reference/deprecated.md +376 -0
  238. package/docs/api-reference/hooks.md +149 -19
  239. package/docs/api-reference/providers.md +61 -6
  240. package/docs/api-reference/rpc-functions.md +397 -0
  241. package/docs/api-reference/types.md +135 -78
  242. package/docs/api-reference/utilities.md +51 -380
  243. package/docs/architecture/README.md +49 -3
  244. package/docs/architecture/database-schema-requirements.md +40 -3
  245. package/docs/architecture/rbac-security-architecture.md +41 -4
  246. package/docs/architecture/services.md +127 -42
  247. package/docs/best-practices/README.md +51 -5
  248. package/docs/best-practices/accessibility.md +32 -3
  249. package/docs/best-practices/common-patterns.md +50 -3
  250. package/docs/best-practices/deployment.md +50 -4
  251. package/docs/best-practices/performance.md +50 -3
  252. package/docs/best-practices/security.md +94 -41
  253. package/docs/best-practices/testing.md +33 -4
  254. package/docs/core-concepts/authentication.md +5 -5
  255. package/docs/core-concepts/events.md +3 -3
  256. package/docs/core-concepts/organisations.md +3 -3
  257. package/docs/core-concepts/permissions.md +3 -3
  258. package/docs/core-concepts/rbac-system.md +5 -5
  259. package/docs/documentation-index.md +30 -8
  260. package/docs/getting-started/documentation-index.md +1 -1
  261. package/docs/getting-started/examples/README.md +7 -5
  262. package/docs/getting-started/examples/basic-auth-app.md +3 -0
  263. package/docs/getting-started/examples/full-featured-app.md +5 -3
  264. package/docs/getting-started/faq.md +6 -6
  265. package/docs/getting-started/installation-guide.md +192 -13
  266. package/docs/getting-started/local-development.md +303 -0
  267. package/docs/getting-started/quick-reference.md +3 -3
  268. package/docs/getting-started/quick-start.md +517 -0
  269. package/docs/implementation-guides/app-layout.md +45 -3
  270. package/docs/implementation-guides/authentication.md +66 -7
  271. package/docs/implementation-guides/component-styling.md +53 -3
  272. package/docs/implementation-guides/data-tables.md +76 -7
  273. package/docs/implementation-guides/datatable-filtering.md +1 -2
  274. package/docs/implementation-guides/datatable-rbac-usage.md +0 -1
  275. package/docs/implementation-guides/dynamic-colors.md +155 -4
  276. package/docs/implementation-guides/file-reference-system.md +72 -3
  277. package/docs/implementation-guides/file-upload-storage.md +72 -3
  278. package/docs/implementation-guides/forms.md +53 -3
  279. package/docs/implementation-guides/inactivity-tracking.md +53 -3
  280. package/docs/implementation-guides/large-datasets.md +1 -1
  281. package/docs/implementation-guides/navigation.md +55 -5
  282. package/docs/implementation-guides/organisation-security.md +72 -3
  283. package/docs/implementation-guides/performance.md +57 -1
  284. package/docs/implementation-guides/permission-enforcement.md +81 -8
  285. package/docs/implementation-guides/public-pages.md +560 -14
  286. package/docs/migration/MIGRATION_GUIDE.md +409 -50
  287. package/docs/migration/README.md +37 -3
  288. package/docs/migration/organisation-context-timing-fix.md +39 -4
  289. package/docs/migration/quick-migration-guide.md +41 -5
  290. package/docs/migration/rbac-migration.md +59 -3
  291. package/docs/migration/service-architecture.md +77 -14
  292. package/docs/rbac/README.md +79 -3
  293. package/docs/rbac/advanced-patterns.md +47 -3
  294. package/docs/rbac/api-reference.md +77 -8
  295. package/docs/rbac/event-based-apps.md +50 -5
  296. package/docs/rbac/examples/rbac-rls-integration-example.md +3 -3
  297. package/docs/rbac/examples.md +39 -3
  298. package/docs/rbac/getting-started.md +63 -4
  299. package/docs/rbac/quick-start.md +57 -5
  300. package/docs/rbac/rbac-rls-integration.md +68 -6
  301. package/docs/rbac/super-admin-guide.md +47 -3
  302. package/docs/rbac/troubleshooting.md +3 -3
  303. package/docs/security/README.md +68 -3
  304. package/docs/security/checklist.md +50 -3
  305. package/docs/standards/01-architecture-standard.md +39 -0
  306. package/docs/standards/02-api-and-rpc-standard.md +39 -0
  307. package/docs/standards/03-component-standard.md +32 -0
  308. package/docs/standards/04-code-style-standard.md +32 -0
  309. package/docs/standards/05-security-standard.md +30 -0
  310. package/docs/standards/06-testing-and-docs-standard.md +29 -0
  311. package/docs/standards/README.md +35 -0
  312. package/docs/styles/README.md +89 -8
  313. package/docs/testing/README.md +175 -24
  314. package/docs/troubleshooting/README.md +50 -3
  315. package/docs/troubleshooting/common-issues.md +271 -5
  316. package/docs/troubleshooting/debugging.md +54 -1
  317. package/docs/troubleshooting/migration.md +54 -1
  318. package/docs/troubleshooting/organisation-context-setup.md +29 -3
  319. package/docs/troubleshooting/styling-issues.md +246 -4
  320. package/{src/components/DataTable/examples → examples/DataTable}/GroupingAggregationExample.tsx +1 -1
  321. package/examples/{components 2/DataTable/HierarchicalActionsExample.tsx → DataTable/HierarchicalActionsExample.tsx} +7 -6
  322. package/{src/components/DataTable/examples → examples/DataTable}/HierarchicalExample.tsx +8 -6
  323. package/examples/{components 2/DataTable/PerformanceExample.tsx → DataTable/PerformanceExample.tsx} +2 -2
  324. package/examples/{components 2/DataTable/index.ts → DataTable/index.ts} +1 -0
  325. package/{src/components/Dialog/examples → examples/Dialog}/HtmlDialogExample.tsx +3 -3
  326. package/examples/{components 2/Dialog/ScrollableDialogExample.tsx → Dialog/ScrollableDialogExample.tsx} +1 -1
  327. package/{src/components/Dialog/examples → examples/Dialog}/SmartDialogExample.tsx +1 -1
  328. package/examples/{components 2/Dialog/index.ts → Dialog/index.ts} +0 -3
  329. package/examples/{features/public-pages → PublicPages}/CorrectPublicPageImplementation.tsx +52 -17
  330. package/examples/{features/public-pages → PublicPages}/PublicEventPage.tsx +65 -35
  331. package/examples/{features/public-pages → PublicPages}/PublicPageApp.tsx +52 -18
  332. package/examples/{features/public-pages → PublicPages}/PublicPageUsageExample.tsx +28 -15
  333. package/examples/README.md +81 -33
  334. package/examples/index.ts +14 -12
  335. package/examples/{RBAC → rbac}/CompleteRBACExample.tsx +1 -1
  336. package/examples/{features/rbac → rbac}/EventBasedApp.tsx +4 -4
  337. package/examples/{features/rbac → rbac}/PermissionExample.tsx +5 -3
  338. package/package.json +21 -27
  339. package/src/__tests__/helpers/test-utils.tsx +29 -3
  340. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +7 -5
  341. package/src/components/Alert/Alert.test.tsx +2 -2
  342. package/src/components/Alert/Alert.tsx +4 -4
  343. package/src/components/Avatar/Avatar.test.tsx +17 -6
  344. package/src/components/Badge/Badge.test.tsx +1 -1
  345. package/src/components/Badge/Badge.tsx +2 -2
  346. package/src/components/Button/Button.test.tsx +2 -2
  347. package/src/components/Button/Button.tsx +11 -7
  348. package/src/components/Calendar/Calendar.test.tsx +41 -8
  349. package/src/components/Calendar/Calendar.tsx +39 -36
  350. package/src/components/Card/Card.tsx +51 -13
  351. package/src/components/Checkbox/Checkbox.test.tsx +36 -12
  352. package/src/components/DataTable/DataTable.test.tsx +1 -1
  353. package/src/components/DataTable/__tests__/DataTable.comprehensive.test.tsx +13 -7
  354. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +14 -42
  355. package/src/components/DataTable/__tests__/DataTable.export.test.tsx +13 -10
  356. package/src/components/DataTable/__tests__/DataTable.grouping-aggregation.test.tsx +14 -11
  357. package/src/components/DataTable/__tests__/DataTable.hooks.test.tsx +4 -2
  358. package/src/components/DataTable/__tests__/DataTable.test.tsx +13 -7
  359. package/src/components/DataTable/__tests__/DataTableCore.test-setup.ts +13 -10
  360. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +15 -11
  361. package/src/components/DataTable/__tests__/a11y.basic.test.tsx +12 -6
  362. package/src/components/DataTable/__tests__/keyboard.test.tsx +12 -6
  363. package/src/components/DataTable/__tests__/pagination.modes.test.tsx +10 -6
  364. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +1 -1
  365. package/src/components/DataTable/components/DataTableBody.tsx +10 -25
  366. package/src/components/DataTable/components/DataTableCore.tsx +1 -1
  367. package/src/components/DataTable/components/FilterRow.tsx +3 -1
  368. package/src/components/DataTable/components/ImportModal.tsx +1 -1
  369. package/src/components/DataTable/components/VirtualizedDataTable.tsx +9 -9
  370. package/src/components/DataTable/core/ColumnFactory.ts +6 -6
  371. package/src/components/DataTable/core/DataTableContext.tsx +14 -10
  372. package/src/components/DataTable/core/LocalDataAdapter.ts +2 -1
  373. package/src/components/DataTable/core/PluginRegistry.ts +3 -3
  374. package/src/components/DataTable/core/StateManager.ts +12 -11
  375. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +104 -0
  376. package/src/components/DataTable/core/__tests__/DataManager.test.ts +101 -0
  377. package/src/components/DataTable/core/__tests__/LocalDataAdapter.test.ts +84 -0
  378. package/src/components/DataTable/core/__tests__/PluginRegistry.test.ts +102 -0
  379. package/src/components/DataTable/core/__tests__/StateManager.test.ts +104 -0
  380. package/src/components/DataTable/core/interfaces.ts +17 -17
  381. package/src/components/DataTable/hooks/__tests__/useDataTableConfiguration.test.ts +124 -0
  382. package/src/components/DataTable/hooks/__tests__/useDataTableDataPipeline.test.ts +117 -0
  383. package/src/components/DataTable/hooks/__tests__/useDataTablePermissions.test.ts +102 -0
  384. package/src/components/DataTable/hooks/__tests__/useEffectiveColumnOrder.test.ts +53 -0
  385. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +0 -2
  386. package/src/components/DataTable/hooks/useDataTablePermissions.ts +9 -8
  387. package/src/components/DataTable/types.ts +5 -5
  388. package/src/components/DataTable/utils/aggregationUtils.ts +4 -4
  389. package/src/components/DataTable/utils/columnUtils.ts +3 -2
  390. package/src/components/DataTable/utils/debugTools.ts +1 -1
  391. package/src/components/DataTable/utils/exportUtils.ts +6 -6
  392. package/src/components/DataTable/utils/hierarchicalSorting.ts +6 -6
  393. package/src/components/DataTable/utils/hierarchicalUtils.ts +0 -8
  394. package/src/components/DataTable/utils/index.ts +0 -1
  395. package/src/components/DataTable/utils/performanceUtils.ts +9 -4
  396. package/src/components/Dialog/Dialog.test.tsx +49 -27
  397. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +13 -8
  398. package/src/components/EventSelector/EventSelector.test.tsx +60 -12
  399. package/src/components/EventSelector/EventSelector.tsx +38 -15
  400. package/src/components/EventSelector/index.ts +2 -2
  401. package/src/components/FileDisplay/FileDisplay.test.tsx +143 -85
  402. package/src/components/FileDisplay/FileDisplay.tsx +1 -0
  403. package/src/components/FileUpload/FileUpload.test.tsx +532 -152
  404. package/src/components/FileUpload/FileUpload.tsx +43 -8
  405. package/src/components/Footer/Footer.test.tsx +19 -14
  406. package/src/components/Form/Form.test.tsx +96 -14
  407. package/src/components/Form/Form.tsx +210 -1
  408. package/src/components/Form/index.ts +3 -7
  409. package/src/components/Header/Header.test.tsx +24 -17
  410. package/src/components/Header/Header.tsx +3 -1
  411. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +2 -4
  412. package/src/components/Input/Input.test.tsx +61 -36
  413. package/src/components/Label/{__tests__/Label.test.tsx → Label.test.tsx} +2 -2
  414. package/src/components/Label/Label.tsx +2 -3
  415. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +6 -5
  416. package/src/components/LoadingSpinner/LoadingSpinner.tsx +6 -2
  417. package/src/components/LoginForm/LoginForm.test.tsx +14 -13
  418. package/src/components/LoginForm/LoginForm.tsx +1 -1
  419. package/src/components/LoginForm/index.ts +7 -0
  420. package/src/components/NavigationMenu/NavigationMenu.test.tsx +233 -20
  421. package/src/components/NavigationMenu/NavigationMenu.tsx +191 -55
  422. package/src/components/NavigationMenu/index.ts +1 -1
  423. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +20 -11
  424. package/src/components/OrganisationSelector/OrganisationSelector.tsx +1 -1
  425. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.integration.test.tsx → PaceAppLayout.integration.test.tsx} +272 -79
  426. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.performance.test.tsx → PaceAppLayout.performance.test.tsx} +155 -32
  427. package/src/components/PaceAppLayout/{__tests__/PaceAppLayout.security.test.tsx → PaceAppLayout.security.test.tsx} +211 -65
  428. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +498 -210
  429. package/src/components/PaceAppLayout/PaceAppLayout.tsx +63 -64
  430. package/src/components/PaceAppLayout/test-setup.tsx +192 -0
  431. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +193 -39
  432. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.test.tsx +2 -2
  433. package/src/components/{PasswordReset → PasswordChange}/PasswordChangeForm.tsx +10 -4
  434. package/src/components/PasswordChange/index.ts +2 -0
  435. package/src/components/Progress/Progress.test.tsx +11 -0
  436. package/src/components/Progress/Progress.tsx +1 -1
  437. package/src/components/Progress/index.ts +10 -0
  438. package/src/components/ProtectedRoute/ProtectedRoute.test.tsx +2 -1
  439. package/src/components/PublicLayout/PublicLayout.test.tsx +1210 -0
  440. package/src/components/PublicLayout/PublicPageLayout.tsx +190 -36
  441. package/src/components/PublicLayout/PublicPageProvider.tsx +8 -7
  442. package/src/components/PublicLayout/index.ts +10 -28
  443. package/src/components/Select/Select.test.tsx +7 -7
  444. package/src/components/Select/Select.tsx +277 -11
  445. package/src/components/Select/index.ts +1 -2
  446. package/src/components/SessionRestorationLoader/SessionRestorationLoader.test.tsx +232 -0
  447. package/src/components/SessionRestorationLoader/SessionRestorationLoader.tsx +40 -19
  448. package/src/components/Table/{__tests__/Table.test.tsx → Table.test.tsx} +94 -41
  449. package/src/components/Tabs/Tabs.test.tsx +10 -9
  450. package/src/components/Tabs/Tabs.tsx +61 -33
  451. package/src/components/Textarea/Textarea.test.tsx +31 -18
  452. package/src/components/Toast/Toast.tsx +2 -2
  453. package/src/components/Tooltip/Tooltip.test.tsx +1 -1
  454. package/src/components/UserMenu/UserMenu.test.tsx +7 -6
  455. package/src/components/UserMenu/UserMenu.tsx +2 -2
  456. package/src/components/index.ts +5 -4
  457. package/src/constants/performance.ts +19 -8
  458. package/src/hooks/__tests__/useAppConfig.unit.test.ts +21 -22
  459. package/src/hooks/__tests__/useEvents.unit.test.ts +5 -4
  460. package/src/hooks/__tests__/useOrganisationPermissions.unit.test.tsx +2 -2
  461. package/src/hooks/__tests__/usePermissionCache.simple.test.ts +17 -0
  462. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +16 -11
  463. package/src/hooks/__tests__/usePublicEvent.simple.test.ts +1 -3
  464. package/src/hooks/__tests__/usePublicEvent.unit.test.ts +1 -3
  465. package/src/hooks/__tests__/useRBAC.unit.test.ts +24 -2
  466. package/src/hooks/index.ts +4 -0
  467. package/src/hooks/public/index.ts +2 -0
  468. package/src/hooks/public/usePublicEvent.ts +4 -6
  469. package/src/hooks/public/usePublicEventLogo.test.ts +147 -0
  470. package/src/hooks/public/usePublicRouteParams.ts +1 -1
  471. package/src/hooks/services/useAuth.ts +2 -4
  472. package/src/hooks/services/useCurrentEvent.ts +1 -1
  473. package/src/hooks/useAppConfig.ts +1 -1
  474. package/src/hooks/useDataTablePerformance.ts +2 -2
  475. package/src/hooks/useEventTheme.ts +1 -1
  476. package/src/hooks/useEvents.ts +51 -10
  477. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  478. package/src/hooks/useOrganisationPermissions.ts +1 -1
  479. package/src/hooks/useOrganisationSecurity.ts +2 -2
  480. package/src/hooks/usePermissionCache.test.ts +9 -9
  481. package/src/hooks/usePermissionCache.ts +2 -2
  482. package/src/index.ts +19 -12
  483. package/src/providers/OrganisationProvider.tsx +73 -9
  484. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  485. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  486. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  487. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  488. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  489. package/src/providers/index.ts +0 -3
  490. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  491. package/src/providers/services/EventServiceProvider.tsx +11 -16
  492. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  493. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  494. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  495. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  496. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  497. package/src/rbac/adapters.tsx +1 -1
  498. package/src/rbac/api.ts +20 -4
  499. package/src/rbac/audit-enhanced.ts +47 -2
  500. package/src/rbac/audit.ts +47 -2
  501. package/src/rbac/components/NavigationGuard.tsx +1 -1
  502. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  503. package/src/rbac/components/NavigationProvider.tsx +1 -1
  504. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  505. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  506. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  507. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  508. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  509. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  510. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  511. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  512. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  513. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  514. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  515. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  516. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  517. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  518. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  519. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  520. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  521. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  522. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  523. package/src/rbac/hooks/index.ts +3 -0
  524. package/src/rbac/hooks/usePermissions.ts +31 -85
  525. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  526. package/src/rbac/hooks/useRBAC.ts +13 -67
  527. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  528. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  529. package/src/rbac/index.ts +3 -0
  530. package/src/rbac/secureClient.ts +53 -6
  531. package/src/rbac/security.ts +37 -1
  532. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  533. package/src/rbac/types.ts +3 -2
  534. package/src/services/AuthService.ts +33 -25
  535. package/src/services/EventService.ts +56 -44
  536. package/src/services/InactivityService.ts +33 -53
  537. package/src/services/OrganisationService.ts +36 -40
  538. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  539. package/src/services/__tests__/EventService.test.ts +67 -33
  540. package/src/services/interfaces/IEventService.ts +1 -1
  541. package/src/styles/core.css +2 -2
  542. package/src/styles/index.test.ts +21 -0
  543. package/src/styles/index.ts +1 -5
  544. package/src/types/__tests__/guards.test.ts +1 -1
  545. package/src/types/__tests__/organisation.roles.test.ts +55 -0
  546. package/src/types/__tests__/type-validation.test.ts +0 -1
  547. package/src/types/auth.ts +42 -2
  548. package/src/types/core.ts +251 -0
  549. package/src/types/database.ts +11 -496
  550. package/src/types/event.ts +102 -0
  551. package/src/types/file-reference.ts +6 -4
  552. package/src/types/guards.ts +2 -1
  553. package/src/types/index.ts +48 -14
  554. package/src/types/lodash.debounce.d.ts +15 -0
  555. package/src/types/organisation.ts +14 -10
  556. package/src/types/supabase.ts +15 -17
  557. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  558. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  559. package/src/utils/app/appNameResolver.ts +1 -1
  560. package/src/utils/audit/audit.test.ts +65 -0
  561. package/src/utils/device/deviceFingerprint.test.ts +171 -0
  562. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  563. package/src/utils/file-reference/index.ts +25 -6
  564. package/src/utils/security/secureErrors.ts +1 -1
  565. package/src/utils/validation/__tests__/validationUtils.test.ts +72 -0
  566. package/src/utils/validation/index.ts +6 -12
  567. package/src/utils/validation/validationUtils.ts +0 -13
  568. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  569. package/dist/auth-DReDSLq9.d.ts +0 -16
  570. package/dist/chunk-3JI76CYK.js +0 -2444
  571. package/dist/chunk-3JI76CYK.js.map +0 -1
  572. package/dist/chunk-56XJ3TU6.js +0 -11
  573. package/dist/chunk-56XJ3TU6.js.map +0 -1
  574. package/dist/chunk-5MT24GKJ.js.map +0 -1
  575. package/dist/chunk-7QCC6MCP.js +0 -288
  576. package/dist/chunk-BESYRHQM.js.map +0 -1
  577. package/dist/chunk-BJPBT3CU.js +0 -21
  578. package/dist/chunk-BJPBT3CU.js.map +0 -1
  579. package/dist/chunk-BVYWGZVV.js.map +0 -1
  580. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  581. package/dist/chunk-D7LCGMVS.js.map +0 -1
  582. package/dist/chunk-EGI6MUL6.js +0 -27
  583. package/dist/chunk-EGI6MUL6.js.map +0 -1
  584. package/dist/chunk-ERISIBYU.js.map +0 -1
  585. package/dist/chunk-HRO5HWN2.js.map +0 -1
  586. package/dist/chunk-HZLDFOE4.js.map +0 -1
  587. package/dist/chunk-JISYG63F.js +0 -70
  588. package/dist/chunk-JISYG63F.js.map +0 -1
  589. package/dist/chunk-LIMSTKYD.js +0 -61
  590. package/dist/chunk-LIMSTKYD.js.map +0 -1
  591. package/dist/chunk-OWAG3GSU.js.map +0 -1
  592. package/dist/chunk-PPMP5J6T.js.map +0 -1
  593. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  594. package/dist/chunk-S5OFRT4M.js.map +0 -1
  595. package/dist/chunk-SBVILCCA.js.map +0 -1
  596. package/dist/chunk-TUMEWN34.js +0 -15
  597. package/dist/chunk-TUMEWN34.js.map +0 -1
  598. package/dist/chunk-XDNLUEXI.js +0 -138
  599. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  600. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  601. package/dist/chunk-ZZ2SS7NI.js +0 -237
  602. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  603. package/dist/database-C6jy7EOu.d.ts +0 -500
  604. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  605. package/dist/schema-DTDZQe2u.d.ts +0 -28
  606. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  607. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  608. package/dist/validation.d.ts +0 -47
  609. package/dist/validation.js +0 -24
  610. package/dist/validation.js.map +0 -1
  611. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  612. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  613. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  614. package/docs/api/interfaces/EventLogoProps.md +0 -152
  615. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  616. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  617. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  618. package/docs/architecture/rpc-function-standards.md +0 -1106
  619. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  620. package/docs/implementation-guides/event-theming-summary.md +0 -226
  621. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  622. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  623. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  624. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  625. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  626. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  627. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  628. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  629. package/docs/styles/usage.md +0 -227
  630. package/docs/testing/visual-testing.md +0 -120
  631. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  632. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  633. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  634. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  635. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  636. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  637. package/examples/RBAC/EventBasedApp.tsx +0 -239
  638. package/examples/RBAC/PermissionExample.tsx +0 -151
  639. package/examples/STRUCTURE.md +0 -125
  640. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  641. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  642. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  643. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  644. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  645. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  646. package/examples/components 2/index.ts +0 -11
  647. package/examples/features/index.ts +0 -12
  648. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  649. package/examples/features/rbac/index.ts +0 -13
  650. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  651. package/examples/public-pages/PublicEventPage.tsx +0 -274
  652. package/examples/public-pages/PublicPageApp.tsx +0 -308
  653. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  654. package/examples/public-pages/index.ts +0 -14
  655. package/src/__tests__/TEST_STANDARD.md +0 -1008
  656. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  657. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  658. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  659. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  660. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  661. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  662. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  663. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  664. package/src/components/Dialog/README.md +0 -804
  665. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  666. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  667. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  668. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  669. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  670. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  671. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  672. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  673. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  674. package/src/components/EventSelector/types.ts +0 -79
  675. package/src/components/Form/FormErrorSummary.tsx +0 -113
  676. package/src/components/Form/FormField.tsx +0 -249
  677. package/src/components/Form/FormFieldset.tsx +0 -127
  678. package/src/components/Form/FormLiveRegion.tsx +0 -198
  679. package/src/components/Input/__mocks__/Input.tsx +0 -2
  680. package/src/components/NavigationMenu/types.ts +0 -85
  681. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  682. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  683. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  684. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  685. package/src/components/PasswordReset/index.ts +0 -2
  686. package/src/components/ProtectedRoute/README.md +0 -164
  687. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  688. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  689. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  690. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  691. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  692. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  693. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  694. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  695. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  696. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  697. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  698. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  699. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  700. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  701. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  702. package/src/components/Select/hooks.ts +0 -289
  703. package/src/hooks/useCounter.test.ts +0 -131
  704. package/src/hooks/useDebounce.test.ts +0 -375
  705. package/src/providers/AuthProvider.tsx +0 -15
  706. package/src/providers/EventProvider.tsx +0 -16
  707. package/src/providers/InactivityProvider.tsx +0 -15
  708. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  709. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  710. package/src/types/theme.ts +0 -6
  711. package/src/types/unified.ts +0 -265
  712. package/src/utils/appConfig.ts +0 -47
  713. package/src/utils/appIdResolver.test.ts +0 -499
  714. package/src/utils/appIdResolver.ts +0 -130
  715. package/src/utils/appNameResolver.simple.test.ts +0 -212
  716. package/src/utils/appNameResolver.test.ts +0 -121
  717. package/src/utils/appNameResolver.ts +0 -191
  718. package/src/utils/audit.ts +0 -127
  719. package/src/utils/auth-utils.ts +0 -96
  720. package/src/utils/bundleAnalysis.ts +0 -129
  721. package/src/utils/debugLogger.ts +0 -67
  722. package/src/utils/deviceFingerprint.ts +0 -215
  723. package/src/utils/dynamicUtils.ts +0 -105
  724. package/src/utils/file-reference.test.ts +0 -788
  725. package/src/utils/file-reference.ts +0 -519
  726. package/src/utils/formatDate.test.ts +0 -237
  727. package/src/utils/formatting.ts +0 -170
  728. package/src/utils/lazyLoad.tsx +0 -44
  729. package/src/utils/logger.ts +0 -179
  730. package/src/utils/organisationContext.test.ts +0 -322
  731. package/src/utils/organisationContext.ts +0 -153
  732. package/src/utils/performanceBenchmark.ts +0 -64
  733. package/src/utils/performanceBudgets.ts +0 -110
  734. package/src/utils/permissionTypes.ts +0 -37
  735. package/src/utils/permissionUtils.test.ts +0 -393
  736. package/src/utils/permissionUtils.ts +0 -34
  737. package/src/utils/sanitization.ts +0 -264
  738. package/src/utils/schemaUtils.ts +0 -37
  739. package/src/utils/secureDataAccess.test.ts +0 -711
  740. package/src/utils/secureDataAccess.ts +0 -377
  741. package/src/utils/secureErrors.ts +0 -79
  742. package/src/utils/security.ts +0 -156
  743. package/src/utils/securityMonitor.ts +0 -45
  744. package/src/utils/sessionTracking.ts +0 -126
  745. package/src/utils/validation.ts +0 -111
  746. package/src/utils/validationUtils.ts +0 -120
  747. package/src/validation/index.ts +0 -12
  748. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  749. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  750. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  751. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  752. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  753. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  754. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  755. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  756. /package/examples/{RBAC → rbac}/index.ts +0 -0
package/dist/utils.js CHANGED
@@ -11,15 +11,20 @@ import {
11
11
  getCurrentAppId,
12
12
  setAppConfig,
13
13
  useSessionTracking
14
- } from "./chunk-FFKNH6U5.js";
14
+ } from "./chunk-HKIT6O7W.js";
15
15
  import {
16
16
  CachedAppIdResolver,
17
17
  LoadingSpinner,
18
18
  cachedAppIdResolver,
19
19
  getAppId,
20
20
  getAppIds
21
- } from "./chunk-S5OFRT4M.js";
22
- import "./chunk-OWAG3GSU.js";
21
+ } from "./chunk-KUEN3HFB.js";
22
+ import {
23
+ cn,
24
+ renderSafeHtml,
25
+ sanitizeHtml,
26
+ validateHtml
27
+ } from "./chunk-R77UEZ4E.js";
23
28
  import {
24
29
  getAppNameFromBuildTime,
25
30
  getAppNameFromEnvironment,
@@ -28,49 +33,40 @@ import {
28
33
  getCurrentAppName,
29
34
  getCurrentAppNameWithFallback,
30
35
  setRBACAppName
31
- } from "./chunk-Q5QRDWKI.js";
32
- import {
33
- deepMerge,
34
- isEmpty,
35
- isObject,
36
- isStrongPassword,
37
- isValidDate,
38
- isValidEmail,
39
- isValidUrl,
40
- isWithinRange,
41
- matchesPattern
42
- } from "./chunk-JISYG63F.js";
36
+ } from "./chunk-F2IMUDXZ.js";
43
37
  import {
44
38
  useComponentPerformance
45
- } from "./chunk-ANBQRTPX.js";
39
+ } from "./chunk-E66EQZE6.js";
46
40
  import {
47
41
  PERFORMANCE_BUDGETS,
48
42
  performanceBudgetMonitor
49
43
  } from "./chunk-FMUCXFII.js";
50
- import {
51
- cn
52
- } from "./chunk-56XJ3TU6.js";
53
44
  import {
54
45
  clearOrganisationContext,
55
46
  getOrganisationContext,
56
- init_organisationContext,
57
- init_secureStorage,
58
47
  isOrganisationContextAvailable,
59
48
  secureStorage,
60
49
  setOrganisationContext
61
- } from "./chunk-7QCC6MCP.js";
50
+ } from "./chunk-VBXEHIUJ.js";
62
51
  import {
52
+ changePasswordSchema,
63
53
  combineSchemas,
64
- pickSchema
65
- } from "./chunk-BJPBT3CU.js";
54
+ contactFormSchema,
55
+ loginSchema,
56
+ passwordResetSchema,
57
+ pickSchema,
58
+ registrationSchema,
59
+ secureLoginSchema,
60
+ securePasswordSchema,
61
+ userProfileSchema
62
+ } from "./chunk-LMC26NLJ.js";
66
63
  import {
67
64
  LogLevel,
68
65
  Logger,
69
66
  createLogger,
70
- init_logger,
71
67
  logger
72
- } from "./chunk-XDNLUEXI.js";
73
- import "./chunk-PLDDJCW6.js";
68
+ } from "./chunk-PWLANIRT.js";
69
+ import "./chunk-7D4SUZUM.js";
74
70
 
75
71
  // src/utils/core/debugLogger.ts
76
72
  var DebugLogger = class {
@@ -122,8 +118,63 @@ var DebugLogger = class {
122
118
  }
123
119
  };
124
120
 
125
- // src/utils/index.ts
126
- init_logger();
121
+ // src/utils/validation/validation.ts
122
+ function isValidEmail(email) {
123
+ const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
124
+ return emailPattern.test(email);
125
+ }
126
+ function isEmpty(value) {
127
+ return value === null || value === void 0 || value.trim() === "";
128
+ }
129
+ function isStrongPassword(password) {
130
+ const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$/;
131
+ return passwordPattern.test(password);
132
+ }
133
+ function isValidUrl(url) {
134
+ try {
135
+ new URL(url);
136
+ return true;
137
+ } catch {
138
+ return false;
139
+ }
140
+ }
141
+ function isValidDate(dateStr) {
142
+ const date = new Date(dateStr);
143
+ return !isNaN(date.getTime());
144
+ }
145
+ function isWithinRange(value, min, max) {
146
+ return value >= min && value <= max;
147
+ }
148
+ function matchesPattern(value, pattern) {
149
+ return pattern.test(value);
150
+ }
151
+ function deepMerge(target, source) {
152
+ const output = { ...target };
153
+ if (isObject(target) && isObject(source)) {
154
+ Object.keys(source).forEach((key) => {
155
+ if (isObject(source[key])) {
156
+ if (!(key in target)) {
157
+ Object.assign(output, { [key]: source[key] });
158
+ } else {
159
+ const targetKey = key;
160
+ const targetValue = target[targetKey];
161
+ if (isObject(targetValue)) {
162
+ output[targetKey] = deepMerge(
163
+ targetValue,
164
+ source[key]
165
+ );
166
+ }
167
+ }
168
+ } else {
169
+ Object.assign(output, { [key]: source[key] });
170
+ }
171
+ });
172
+ }
173
+ return output;
174
+ }
175
+ function isObject(item) {
176
+ return item !== null && typeof item === "object" && !Array.isArray(item);
177
+ }
127
178
 
128
179
  // src/utils/validation/validationUtils.ts
129
180
  import { z as z2 } from "zod";
@@ -209,14 +260,12 @@ var nameSchema = z.string().min(1, "Name is required").max(100, "Name too long")
209
260
  var phoneSchema = z.string().regex(/^[\+]?[1-9][\d]{0,15}$/, "Invalid phone number format");
210
261
  var urlSchema = z.string().url("Invalid URL format");
211
262
  var dateSchema = z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Invalid date format (YYYY-MM-DD)");
212
- var secureLoginSchema = z.object({
263
+ var secureLoginSchema2 = z.object({
213
264
  email: secureEmailSchema,
214
265
  password: z.string().min(1, "Password is required")
215
266
  });
216
267
 
217
268
  // src/utils/validation/validationUtils.ts
218
- init_logger();
219
- var log = createLogger("ValidationUtils");
220
269
  function validateUserInput(schema, data, sanitizationRules) {
221
270
  return sanitizeFormData(data, schema, sanitizationRules);
222
271
  }
@@ -271,8 +320,310 @@ var dateSchema2 = z3.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Date must be in YYYY
271
320
  return !isNaN(parsed.getTime());
272
321
  }, "Invalid date");
273
322
 
274
- // src/utils/validation/passwordSchema.ts
323
+ // src/utils/validation/csrf.ts
324
+ var CSRFManager = class {
325
+ constructor() {
326
+ this.tokenCache = /* @__PURE__ */ new Map();
327
+ this.TOKEN_EXPIRY = 30 * 60 * 1e3;
328
+ // 30 minutes
329
+ this.MAX_TOKENS_PER_SESSION = 10;
330
+ }
331
+ /**
332
+ * Generate a new CSRF token for the current session
333
+ */
334
+ async generateToken(sessionId) {
335
+ try {
336
+ await this.cleanupExpiredTokens();
337
+ const sessionTokens = Array.from(this.tokenCache.values()).filter((data) => data.sessionId === sessionId && !data.used);
338
+ if (sessionTokens.length >= this.MAX_TOKENS_PER_SESSION) {
339
+ const oldest = sessionTokens.sort((a, b) => a.timestamp - b.timestamp)[0];
340
+ this.tokenCache.delete(oldest.token);
341
+ }
342
+ const tokenBytes = new Uint8Array(32);
343
+ crypto.getRandomValues(tokenBytes);
344
+ const token = Array.from(
345
+ tokenBytes,
346
+ (byte) => byte.toString(16).padStart(2, "0")
347
+ ).join("");
348
+ const tokenData = {
349
+ token,
350
+ sessionId,
351
+ timestamp: Date.now(),
352
+ used: false
353
+ };
354
+ this.tokenCache.set(token, tokenData);
355
+ await this.persistTokens();
356
+ return token;
357
+ } catch (error) {
358
+ throw new Error("CSRF token generation failed");
359
+ }
360
+ }
361
+ /**
362
+ * Validate and consume a CSRF token
363
+ */
364
+ async validateToken(token, sessionId) {
365
+ try {
366
+ if (this.tokenCache.size === 0) {
367
+ await this.loadTokens();
368
+ }
369
+ const tokenData = this.tokenCache.get(token);
370
+ if (!tokenData) {
371
+ return false;
372
+ }
373
+ if (tokenData.sessionId !== sessionId) {
374
+ return false;
375
+ }
376
+ if (tokenData.used) {
377
+ return false;
378
+ }
379
+ if (Date.now() - tokenData.timestamp > this.TOKEN_EXPIRY) {
380
+ this.tokenCache.delete(token);
381
+ await this.persistTokens();
382
+ return false;
383
+ }
384
+ tokenData.used = true;
385
+ this.tokenCache.set(token, tokenData);
386
+ await this.persistTokens();
387
+ return true;
388
+ } catch (error) {
389
+ return false;
390
+ }
391
+ }
392
+ /**
393
+ * Get current valid token for session
394
+ */
395
+ async getCurrentToken(sessionId) {
396
+ if (this.tokenCache.size === 0) {
397
+ await this.loadTokens();
398
+ }
399
+ for (const [token, data] of this.tokenCache.entries()) {
400
+ if (data.sessionId === sessionId && !data.used && Date.now() - data.timestamp < this.TOKEN_EXPIRY) {
401
+ return token;
402
+ }
403
+ }
404
+ return await this.generateToken(sessionId);
405
+ }
406
+ /**
407
+ * Clean up expired and used tokens
408
+ */
409
+ async cleanupExpiredTokens() {
410
+ const now = Date.now();
411
+ const expiredTokens = [];
412
+ for (const [token, data] of this.tokenCache.entries()) {
413
+ if (data.used || now - data.timestamp > this.TOKEN_EXPIRY) {
414
+ expiredTokens.push(token);
415
+ }
416
+ }
417
+ expiredTokens.forEach((token) => this.tokenCache.delete(token));
418
+ if (expiredTokens.length > 0) {
419
+ await this.persistTokens();
420
+ }
421
+ }
422
+ /**
423
+ * Persist tokens to secure storage
424
+ */
425
+ async persistTokens() {
426
+ try {
427
+ const tokensArray = Array.from(this.tokenCache.entries());
428
+ await secureStorage.setItem(
429
+ "csrf_tokens",
430
+ JSON.stringify(tokensArray),
431
+ { encrypt: true, expiry: this.TOKEN_EXPIRY }
432
+ );
433
+ } catch (error) {
434
+ }
435
+ }
436
+ /**
437
+ * Load tokens from secure storage
438
+ */
439
+ async loadTokens() {
440
+ try {
441
+ const tokensData = await secureStorage.getItem("csrf_tokens");
442
+ if (tokensData) {
443
+ const tokensArray = JSON.parse(tokensData);
444
+ this.tokenCache = new Map(tokensArray);
445
+ await this.cleanupExpiredTokens();
446
+ }
447
+ } catch (error) {
448
+ this.tokenCache.clear();
449
+ }
450
+ }
451
+ /**
452
+ * Clear all tokens for session
453
+ */
454
+ async clearSession(sessionId) {
455
+ const tokensToRemove = [];
456
+ for (const [token, data] of this.tokenCache.entries()) {
457
+ if (data.sessionId === sessionId) {
458
+ tokensToRemove.push(token);
459
+ }
460
+ }
461
+ tokensToRemove.forEach((token) => this.tokenCache.delete(token));
462
+ await this.persistTokens();
463
+ }
464
+ };
465
+ var csrfManager = new CSRFManager();
466
+ async function generateCSRFToken(sessionId) {
467
+ return csrfManager.generateToken(sessionId);
468
+ }
469
+ async function validateCSRFToken(token, sessionId) {
470
+ return csrfManager.validateToken(token, sessionId);
471
+ }
472
+ async function getCSRFToken(sessionId) {
473
+ return csrfManager.getCurrentToken(sessionId);
474
+ }
475
+
476
+ // src/utils/validation/sqlInjectionProtection.ts
275
477
  import { z as z4 } from "zod";
478
+ var SQL_INJECTION_PATTERNS = [
479
+ /(\b(SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|EXEC|EXECUTE|UNION|SCRIPT|JAVASCRIPT)\b)/i,
480
+ /(\'|(\\\')|(\'\')|(\"|(\\\")|(\\")))|(\\x)|(\\u)/i,
481
+ /((%27)|(')|(%6F)|o|(%4F)|(%72)|r|(%52))/i,
482
+ // '|%27|' OR
483
+ /((%27)|(')|(%55)|u|(%55)|(%4E)|n|(%4E)|(%49)|i|(%49)|(%4F)|o|(%4F)|(%4E)|n|(%4E))/i,
484
+ // '|%27|' UNION
485
+ /((%3D)|(=))[^\n]*((%27)|(')|((\\x27))|((\\x2D))|((\\x23)))/i,
486
+ /(w*((%27)|(')|(%6F)|o|(%4F)|(%72)|r|(%52)))/i,
487
+ /((%27)|(')|(''))+union/i,
488
+ /exec(\+|\s)+(s|x)p\w+/i,
489
+ /\b(and|or)\b.+?(=|<|>|\bin\b|\blike\b)/i,
490
+ /\bunion\b.+?\bselect\b/i,
491
+ /\bdrop\b.+?\btable\b/i,
492
+ /\binsert\b.+?\binto\b/i,
493
+ /\bdelete\b.+?\bfrom\b/i,
494
+ /\bupdate\b.+?\bset\b/i,
495
+ /(;|(\\x3B)).+?(drop|create|alter|exec|execute|insert|update|delete)/i,
496
+ /(%3B|;).+?(%44|%64|d)(%52|%72|r)(%4F|%6F|o)(%50|%70|p)/i
497
+ ];
498
+ var DANGEROUS_CHARS = /[';\"\\%]/g;
499
+ var searchQuerySchema = z4.string().max(500, "Search query too long").refine(
500
+ (query) => {
501
+ return !SQL_INJECTION_PATTERNS.some((pattern) => pattern.test(query));
502
+ },
503
+ "Invalid characters detected in search query"
504
+ ).transform((query) => sanitizeSearchQuery(query));
505
+ var sqlIdentifierSchema = z4.string().min(1, "Identifier cannot be empty").max(63, "Identifier too long").regex(/^[a-zA-Z_][a-zA-Z0-9_]*$/, "Invalid identifier format").refine(
506
+ (identifier) => {
507
+ const reservedWords = [
508
+ "SELECT",
509
+ "INSERT",
510
+ "UPDATE",
511
+ "DELETE",
512
+ "DROP",
513
+ "CREATE",
514
+ "ALTER",
515
+ "FROM",
516
+ "WHERE",
517
+ "JOIN",
518
+ "UNION",
519
+ "ORDER",
520
+ "GROUP",
521
+ "HAVING"
522
+ ];
523
+ return !reservedWords.includes(identifier.toUpperCase());
524
+ },
525
+ "Identifier cannot be a reserved SQL keyword"
526
+ );
527
+ var orderBySchema = z4.string().regex(/^[a-zA-Z_][a-zA-Z0-9_]*(\s+(ASC|DESC|asc|desc))?$/, "Invalid order by format");
528
+ var limitOffsetSchema = z4.number().int("Must be an integer").min(0, "Must be non-negative").max(1e3, "Limit too large");
529
+ function sanitizeSearchQuery(query) {
530
+ return query.replace(DANGEROUS_CHARS, "").replace(/\s+/g, " ").trim().slice(0, 500);
531
+ }
532
+ function escapeLikeQuery(query) {
533
+ return query.replace(/\\/g, "\\\\").replace(/%/g, "\\%").replace(/_/g, "\\_");
534
+ }
535
+ function sanitizeFilters(filters) {
536
+ const sanitized = {};
537
+ for (const [key, value] of Object.entries(filters)) {
538
+ const keyValidation = sqlIdentifierSchema.safeParse(key);
539
+ if (!keyValidation.success) {
540
+ console.warn(`[SECURITY] Invalid filter key detected and removed: ${key}`);
541
+ continue;
542
+ }
543
+ if (typeof value === "string") {
544
+ const valueValidation = searchQuerySchema.safeParse(value);
545
+ if (valueValidation.success) {
546
+ sanitized[key] = valueValidation.data;
547
+ }
548
+ } else if (typeof value === "number") {
549
+ if (Number.isFinite(value)) {
550
+ sanitized[key] = value;
551
+ }
552
+ } else if (typeof value === "boolean") {
553
+ sanitized[key] = value;
554
+ } else if (Array.isArray(value)) {
555
+ const sanitizedArray = value.filter((item) => typeof item === "string" || typeof item === "number").map((item) => typeof item === "string" ? sanitizeSearchQuery(item) : item).slice(0, 100);
556
+ if (sanitizedArray.length > 0) {
557
+ sanitized[key] = sanitizedArray;
558
+ }
559
+ }
560
+ }
561
+ return sanitized;
562
+ }
563
+ function buildSafeQueryParams(params) {
564
+ const safe = {};
565
+ if (params.select) {
566
+ const selectFields = params.select.split(",").map((field) => field.trim());
567
+ const validFields = selectFields.filter((field) => {
568
+ return sqlIdentifierSchema.safeParse(field).success;
569
+ });
570
+ if (validFields.length > 0) {
571
+ safe.select = validFields.join(", ");
572
+ }
573
+ }
574
+ if (params.filters) {
575
+ safe.filters = sanitizeFilters(params.filters);
576
+ }
577
+ if (params.orderBy) {
578
+ const orderByValidation = orderBySchema.safeParse(params.orderBy);
579
+ if (orderByValidation.success) {
580
+ safe.orderBy = orderByValidation.data;
581
+ }
582
+ }
583
+ if (params.limit !== void 0) {
584
+ const limitValidation = limitOffsetSchema.safeParse(params.limit);
585
+ if (limitValidation.success) {
586
+ safe.limit = limitValidation.data;
587
+ }
588
+ }
589
+ if (params.offset !== void 0) {
590
+ const offsetValidation = limitOffsetSchema.safeParse(params.offset);
591
+ if (offsetValidation.success) {
592
+ safe.offset = offsetValidation.data;
593
+ }
594
+ }
595
+ if (params.search) {
596
+ const searchValidation = searchQuerySchema.safeParse(params.search);
597
+ if (searchValidation.success) {
598
+ safe.search = searchValidation.data;
599
+ }
600
+ }
601
+ return safe;
602
+ }
603
+ function detectSQLInjection(input) {
604
+ const detectedPatterns = [];
605
+ let maxRisk = "low";
606
+ SQL_INJECTION_PATTERNS.forEach((pattern, index) => {
607
+ if (pattern.test(input)) {
608
+ detectedPatterns.push(`Pattern ${index + 1}`);
609
+ if (index < 3) {
610
+ maxRisk = "critical";
611
+ } else if (index < 7 && maxRisk !== "critical") {
612
+ maxRisk = "high";
613
+ } else if (index < 12 && !["critical", "high"].includes(maxRisk)) {
614
+ maxRisk = "medium";
615
+ }
616
+ }
617
+ });
618
+ return {
619
+ isSuspicious: detectedPatterns.length > 0,
620
+ patterns: detectedPatterns,
621
+ riskLevel: maxRisk
622
+ };
623
+ }
624
+
625
+ // src/utils/validation/passwordSchema.ts
626
+ import { z as z5 } from "zod";
276
627
  var COMMON_PASSWORDS = /* @__PURE__ */ new Set([
277
628
  "password",
278
629
  "123456",
@@ -295,7 +646,7 @@ var WEAK_PATTERNS = [
295
646
  /^(abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz)+/i
296
647
  // Sequential letters
297
648
  ];
298
- var securePasswordSchema = z4.string().min(8, "Password must be at least 8 characters long").max(128, "Password must not exceed 128 characters").refine(
649
+ var securePasswordSchema2 = z5.string().min(8, "Password must be at least 8 characters long").max(128, "Password must not exceed 128 characters").refine(
299
650
  (password) => /[a-z]/.test(password),
300
651
  "Password must contain at least one lowercase letter"
301
652
  ).refine(
@@ -322,13 +673,67 @@ var securePasswordSchema = z4.string().min(8, "Password must be at least 8 chara
322
673
  },
323
674
  "Password contains keyboard patterns. Please choose a more secure password"
324
675
  );
325
- var passwordSchema2 = z4.string().min(6, "Password must be at least 6 characters long").max(128, "Password must not exceed 128 characters");
676
+ var passwordSchema2 = z5.string().min(6, "Password must be at least 6 characters long").max(128, "Password must not exceed 128 characters");
677
+ function calculatePasswordStrength(password) {
678
+ let score = 0;
679
+ const feedback = [];
680
+ if (password.length >= 8) score += 20;
681
+ else if (password.length >= 6) score += 10;
682
+ else feedback.push("Use at least 8 characters");
683
+ if (/[a-z]/.test(password)) score += 15;
684
+ else feedback.push("Add lowercase letters");
685
+ if (/[A-Z]/.test(password)) score += 15;
686
+ else feedback.push("Add uppercase letters");
687
+ if (/\d/.test(password)) score += 15;
688
+ else feedback.push("Add numbers");
689
+ if (/[!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?]/.test(password)) score += 15;
690
+ else feedback.push("Add special characters");
691
+ if (password.length >= 12) score += 10;
692
+ if (/[^a-zA-Z0-9]/.test(password)) score += 10;
693
+ if (COMMON_PASSWORDS.has(password.toLowerCase())) {
694
+ score -= 30;
695
+ feedback.push("Avoid common passwords");
696
+ }
697
+ if (WEAK_PATTERNS.some((pattern) => pattern.test(password))) {
698
+ score -= 20;
699
+ feedback.push("Avoid predictable patterns");
700
+ }
701
+ let level;
702
+ if (score < 30) level = "very-weak";
703
+ else if (score < 50) level = "weak";
704
+ else if (score < 70) level = "fair";
705
+ else if (score < 90) level = "good";
706
+ else level = "strong";
707
+ return { score: Math.max(0, Math.min(100, score)), feedback, level };
708
+ }
709
+
710
+ // src/utils/validation/user.ts
711
+ import { z as z6 } from "zod";
712
+ var userProfileSchema2 = z6.object({
713
+ name: nameSchema3,
714
+ email: emailSchema3,
715
+ phone: z6.string().optional(),
716
+ website: z6.string().url().optional(),
717
+ bio: z6.string().max(500).optional()
718
+ });
719
+ var userSettingsSchema = z6.object({
720
+ notifications: z6.object({
721
+ email: z6.boolean(),
722
+ push: z6.boolean()
723
+ }),
724
+ language: z6.string()
725
+ });
726
+ var userPreferencesSchema = z6.object({
727
+ displayName: nameSchema3,
728
+ timezone: z6.string(),
729
+ dateFormat: z6.string(),
730
+ currency: z6.string()
731
+ });
326
732
 
327
733
  // src/utils/security/security.ts
328
- init_logger();
329
- var log2 = createLogger("Security");
734
+ var log = createLogger("Security");
330
735
  function logSecurityEvent(event) {
331
- log2.warn("Security event:", {
736
+ log.warn("Security event:", {
332
737
  ...event,
333
738
  timestamp: event.timestamp.toISOString()
334
739
  });
@@ -387,18 +792,15 @@ var securityMonitor = new SecurityMonitor();
387
792
 
388
793
  // src/constants/performance.ts
389
794
  var PERFORMANCE_THRESHOLDS = {
390
- RENDER_TIME: 16,
391
- // 60fps target
392
- INTERACTION_TIME: 100,
393
- // 100ms for interactions
394
- ANIMATION_TIME: 300,
395
- // 300ms for animations
396
- LOAD_TIME: 1e3,
397
- // 1 second for initial load
398
- MEMORY_USAGE: 50 * 1024 * 1024,
399
- // 50MB memory limit
400
- BUNDLE_SIZE: 250 * 1024
401
- // 250KB bundle size limit
795
+ /** Render time threshold in milliseconds */
796
+ RENDER_TIME: 200,
797
+ /** Permission check time threshold in milliseconds */
798
+ PERMISSION_CHECK_TIME: 110,
799
+ /** Memory usage increase threshold in bytes */
800
+ MEMORY_USAGE_INCREASE: 1024 * 1024,
801
+ // 1MB
802
+ /** Maximum acceptable re-render count */
803
+ RE_RENDER_COUNT: 3
402
804
  };
403
805
 
404
806
  // src/utils/performance/performanceBenchmark.ts
@@ -616,7 +1018,7 @@ function createLazyComponent(importFn, componentName, options = {}) {
616
1018
  return WrappedComponent;
617
1019
  }
618
1020
  var LazyDataTable = createLazyComponent(
619
- () => import("./DataTable-UA6CL4JI.js").then((module) => ({ default: module.DataTable })),
1021
+ () => import("./DataTable-QAB34V6K.js").then((module) => ({ default: module.DataTable })),
620
1022
  "DataTable"
621
1023
  );
622
1024
 
@@ -753,7 +1155,6 @@ function logAuditEvent(action, user, details) {
753
1155
  }
754
1156
 
755
1157
  // src/utils/device/deviceFingerprint.ts
756
- init_secureStorage();
757
1158
  function generateDeviceFingerprint() {
758
1159
  try {
759
1160
  const components = {
@@ -879,9 +1280,6 @@ function generateFallbackFingerprint() {
879
1280
  // Low entropy for fallback
880
1281
  };
881
1282
  }
882
-
883
- // src/utils/index.ts
884
- init_organisationContext();
885
1283
  export {
886
1284
  CachedAppIdResolver,
887
1285
  DebugLogger,
@@ -893,17 +1291,25 @@ export {
893
1291
  PermissionType,
894
1292
  auditLog,
895
1293
  auditLogger,
1294
+ buildSafeQueryParams,
896
1295
  bundleAnalyzer,
897
1296
  cachedAppIdResolver,
1297
+ calculatePasswordStrength,
1298
+ changePasswordSchema,
898
1299
  clearOrganisationContext,
899
1300
  cn,
900
1301
  combineSchemas,
1302
+ contactFormSchema,
901
1303
  createLazyComponent,
902
1304
  createLazyUtility,
903
1305
  createLogger,
904
1306
  createPerformanceBenchmark,
1307
+ csrfManager,
1308
+ dateSchema2 as dateSchema,
905
1309
  deepMerge,
1310
+ detectSQLInjection,
906
1311
  emailSchema3 as emailSchema,
1312
+ escapeLikeQuery,
907
1313
  formatCompactNumber,
908
1314
  formatCurrency,
909
1315
  formatDate,
@@ -912,6 +1318,7 @@ export {
912
1318
  formatNumber,
913
1319
  formatPercent,
914
1320
  formatTime,
1321
+ generateCSRFToken,
915
1322
  generateDeviceFingerprint,
916
1323
  getAppConfig,
917
1324
  getAppId,
@@ -920,6 +1327,7 @@ export {
920
1327
  getAppNameFromEnvironment,
921
1328
  getAppNameFromGlobal,
922
1329
  getAppNameFromPackageJson,
1330
+ getCSRFToken,
923
1331
  getCurrentAppId,
924
1332
  getCurrentAppName,
925
1333
  getCurrentAppNameWithFallback,
@@ -941,6 +1349,7 @@ export {
941
1349
  lazyDateUtils,
942
1350
  lazyFormUtils,
943
1351
  lazyLodash,
1352
+ limitOffsetSchema,
944
1353
  loadCSVUtils,
945
1354
  loadChartUtils,
946
1355
  loadDateUtils,
@@ -951,27 +1360,44 @@ export {
951
1360
  logPermissionEvent,
952
1361
  logSecurityEvent2 as logSecurityEvent,
953
1362
  logger,
1363
+ loginSchema,
954
1364
  matchesPattern,
955
1365
  measureRenderPerformance,
956
1366
  nameSchema3 as nameSchema,
1367
+ orderBySchema,
957
1368
  parsePermission,
1369
+ passwordResetSchema,
958
1370
  passwordSchema2 as passwordSchema,
959
1371
  performanceBudgetMonitor,
960
1372
  phoneSchema3 as phoneSchema,
961
1373
  pickSchema,
1374
+ registrationSchema,
1375
+ renderSafeHtml,
1376
+ sanitizeFilters,
962
1377
  sanitizeFormData,
1378
+ sanitizeHtml,
1379
+ sanitizeSearchQuery,
963
1380
  sanitizeUserInput,
1381
+ searchQuerySchema,
1382
+ secureLoginSchema,
1383
+ securePasswordSchema,
964
1384
  securityMonitor,
965
1385
  setAppConfig,
966
1386
  setOrganisationContext,
967
1387
  setRBACAppName,
1388
+ sqlIdentifierSchema,
968
1389
  trackDynamicImport,
969
1390
  transformPermissionMapToBoolean,
970
1391
  urlSchema3 as urlSchema,
971
1392
  useComponentPerformance,
972
1393
  useSessionTracking,
1394
+ userPreferencesSchema,
1395
+ userProfileSchema,
1396
+ userSettingsSchema,
973
1397
  usernameSchema,
1398
+ validateCSRFToken,
974
1399
  validateDeviceFingerprint,
1400
+ validateHtml,
975
1401
  validateImportPattern,
976
1402
  validateSecurityHeaders,
977
1403
  validateUserInput