@jmruthers/pace-core 0.5.181 → 0.5.182

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 (750) 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/usePublicRouteParams.ts +1 -1
  470. package/src/hooks/services/useAuth.ts +2 -4
  471. package/src/hooks/services/useCurrentEvent.ts +1 -1
  472. package/src/hooks/useAppConfig.ts +1 -1
  473. package/src/hooks/useDataTablePerformance.ts +2 -2
  474. package/src/hooks/useEventTheme.ts +1 -1
  475. package/src/hooks/useEvents.ts +51 -10
  476. package/src/hooks/useOrganisationPermissions.test.ts +3 -3
  477. package/src/hooks/useOrganisationPermissions.ts +1 -1
  478. package/src/hooks/useOrganisationSecurity.ts +2 -2
  479. package/src/hooks/usePermissionCache.test.ts +9 -9
  480. package/src/hooks/usePermissionCache.ts +2 -2
  481. package/src/index.ts +19 -12
  482. package/src/providers/OrganisationProvider.tsx +73 -9
  483. package/src/providers/UnifiedAuthProvider.smoke.test.tsx +113 -13
  484. package/src/providers/__tests__/AuthProvider.test.tsx +2 -1
  485. package/src/providers/__tests__/EventProvider.test.tsx +24 -15
  486. package/src/providers/__tests__/OrganisationProvider.test.tsx +87 -36
  487. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +80 -24
  488. package/src/providers/index.ts +0 -3
  489. package/src/providers/services/AuthServiceProvider.tsx +2 -17
  490. package/src/providers/services/EventServiceProvider.tsx +11 -16
  491. package/src/providers/services/InactivityServiceProvider.tsx +9 -12
  492. package/src/providers/services/OrganisationServiceProvider.tsx +9 -12
  493. package/src/providers/services/UnifiedAuthProvider.tsx +85 -18
  494. package/src/providers/services/__tests__/AuthServiceProvider.integration.test.tsx +11 -4
  495. package/src/rbac/__tests__/scenarios.user-role.test.tsx +105 -21
  496. package/src/rbac/adapters.tsx +1 -1
  497. package/src/rbac/api.ts +20 -4
  498. package/src/rbac/audit-enhanced.ts +47 -2
  499. package/src/rbac/audit.ts +47 -2
  500. package/src/rbac/components/NavigationGuard.tsx +1 -1
  501. package/src/rbac/components/NavigationProvider.test.tsx +7 -6
  502. package/src/rbac/components/NavigationProvider.tsx +1 -1
  503. package/src/rbac/components/PagePermissionGuard.tsx +1 -1
  504. package/src/rbac/components/PagePermissionProvider.test.tsx +7 -6
  505. package/src/rbac/components/PagePermissionProvider.tsx +1 -1
  506. package/src/rbac/components/PermissionEnforcer.tsx +1 -1
  507. package/src/rbac/components/RoleBasedRouter.tsx +1 -1
  508. package/src/rbac/components/SecureDataProvider.test.tsx +7 -6
  509. package/src/rbac/components/SecureDataProvider.tsx +1 -1
  510. package/src/rbac/components/__tests__/EnhancedNavigationMenu.test.tsx +6 -6
  511. package/src/rbac/components/__tests__/NavigationGuard.test.tsx +11 -10
  512. package/src/rbac/components/__tests__/NavigationProvider.test.tsx +10 -11
  513. package/src/rbac/components/__tests__/PagePermissionGuard.race-condition.test.tsx +19 -15
  514. package/src/rbac/components/__tests__/PagePermissionGuard.test.tsx +13 -12
  515. package/src/rbac/components/__tests__/PagePermissionGuard.verification.test.tsx +19 -15
  516. package/src/rbac/components/__tests__/PagePermissionProvider.test.tsx +18 -18
  517. package/src/rbac/components/__tests__/PermissionEnforcer.test.tsx +11 -10
  518. package/src/rbac/components/__tests__/RoleBasedRouter.test.tsx +8 -7
  519. package/src/rbac/components/__tests__/SecureDataProvider.fixed.test.tsx +10 -11
  520. package/src/rbac/components/__tests__/SecureDataProvider.test.tsx +48 -19
  521. package/src/rbac/hooks/__tests__/useSecureSupabase.test.ts +476 -0
  522. package/src/rbac/hooks/index.ts +3 -0
  523. package/src/rbac/hooks/usePermissions.ts +31 -85
  524. package/src/rbac/hooks/useRBAC.test.ts +13 -1
  525. package/src/rbac/hooks/useRBAC.ts +13 -67
  526. package/src/rbac/hooks/useResolvedScope.ts +11 -0
  527. package/src/rbac/hooks/useSecureSupabase.ts +308 -0
  528. package/src/rbac/index.ts +3 -0
  529. package/src/rbac/secureClient.ts +53 -6
  530. package/src/rbac/security.ts +37 -1
  531. package/src/{types/rbac-functions.ts → rbac/types/functions.ts} +30 -30
  532. package/src/rbac/types.ts +3 -2
  533. package/src/services/AuthService.ts +33 -25
  534. package/src/services/EventService.ts +56 -44
  535. package/src/services/InactivityService.ts +33 -53
  536. package/src/services/OrganisationService.ts +36 -40
  537. package/src/services/__tests__/AuthService.restoreSession.test.ts +6 -2
  538. package/src/services/__tests__/EventService.test.ts +67 -33
  539. package/src/services/interfaces/IEventService.ts +1 -1
  540. package/src/styles/core.css +2 -2
  541. package/src/styles/index.ts +1 -5
  542. package/src/types/__tests__/guards.test.ts +1 -1
  543. package/src/types/__tests__/type-validation.test.ts +0 -1
  544. package/src/types/auth.ts +42 -2
  545. package/src/types/core.ts +251 -0
  546. package/src/types/database.ts +11 -496
  547. package/src/types/event.ts +102 -0
  548. package/src/types/file-reference.ts +6 -4
  549. package/src/types/guards.ts +2 -1
  550. package/src/types/index.ts +48 -14
  551. package/src/types/lodash.debounce.d.ts +15 -0
  552. package/src/types/organisation.ts +14 -10
  553. package/src/types/supabase.ts +15 -17
  554. package/src/utils/__tests__/secureErrors.unit.test.ts +1 -1
  555. package/src/utils/__tests__/validationUtils.unit.test.ts +0 -29
  556. package/src/utils/app/appNameResolver.ts +1 -1
  557. package/src/utils/dynamic/dynamicUtils.ts +3 -2
  558. package/src/utils/file-reference/index.ts +25 -6
  559. package/src/utils/security/secureErrors.ts +1 -1
  560. package/src/utils/validation/index.ts +6 -12
  561. package/src/utils/validation/validationUtils.ts +0 -13
  562. package/dist/UnifiedAuthProvider-B37ATQHE.js +0 -16
  563. package/dist/auth-DReDSLq9.d.ts +0 -16
  564. package/dist/chunk-3JI76CYK.js +0 -2444
  565. package/dist/chunk-3JI76CYK.js.map +0 -1
  566. package/dist/chunk-56XJ3TU6.js +0 -11
  567. package/dist/chunk-56XJ3TU6.js.map +0 -1
  568. package/dist/chunk-5MT24GKJ.js.map +0 -1
  569. package/dist/chunk-7QCC6MCP.js +0 -288
  570. package/dist/chunk-BESYRHQM.js.map +0 -1
  571. package/dist/chunk-BJPBT3CU.js +0 -21
  572. package/dist/chunk-BJPBT3CU.js.map +0 -1
  573. package/dist/chunk-BVYWGZVV.js.map +0 -1
  574. package/dist/chunk-CX5M4ZAG.js.map +0 -1
  575. package/dist/chunk-D7LCGMVS.js.map +0 -1
  576. package/dist/chunk-EGI6MUL6.js +0 -27
  577. package/dist/chunk-EGI6MUL6.js.map +0 -1
  578. package/dist/chunk-ERISIBYU.js.map +0 -1
  579. package/dist/chunk-HRO5HWN2.js.map +0 -1
  580. package/dist/chunk-HZLDFOE4.js.map +0 -1
  581. package/dist/chunk-JISYG63F.js +0 -70
  582. package/dist/chunk-JISYG63F.js.map +0 -1
  583. package/dist/chunk-LIMSTKYD.js +0 -61
  584. package/dist/chunk-LIMSTKYD.js.map +0 -1
  585. package/dist/chunk-OWAG3GSU.js.map +0 -1
  586. package/dist/chunk-PPMP5J6T.js.map +0 -1
  587. package/dist/chunk-Q5QRDWKI.js.map +0 -1
  588. package/dist/chunk-S5OFRT4M.js.map +0 -1
  589. package/dist/chunk-SBVILCCA.js.map +0 -1
  590. package/dist/chunk-TUMEWN34.js +0 -15
  591. package/dist/chunk-TUMEWN34.js.map +0 -1
  592. package/dist/chunk-XDNLUEXI.js +0 -138
  593. package/dist/chunk-XJ2HZOBU.js.map +0 -1
  594. package/dist/chunk-ZYTYSTO5.js.map +0 -1
  595. package/dist/chunk-ZZ2SS7NI.js +0 -237
  596. package/dist/chunk-ZZ2SS7NI.js.map +0 -1
  597. package/dist/database-C6jy7EOu.d.ts +0 -500
  598. package/dist/organisation-D6qRDtbF.d.ts +0 -93
  599. package/dist/schema-DTDZQe2u.d.ts +0 -28
  600. package/dist/unified-DQ4VcT7H.d.ts +0 -198
  601. package/dist/useInactivityTracker-TO6ZOF35.js +0 -11
  602. package/dist/validation.d.ts +0 -47
  603. package/dist/validation.js +0 -24
  604. package/dist/validation.js.map +0 -1
  605. package/docs/DOCUMENTATION_AUDIT.md +0 -172
  606. package/docs/DOCUMENTATION_STANDARD.md +0 -137
  607. package/docs/api/classes/PublicErrorBoundary.md +0 -132
  608. package/docs/api/interfaces/EventLogoProps.md +0 -152
  609. package/docs/api/interfaces/PublicErrorBoundaryProps.md +0 -94
  610. package/docs/api/interfaces/PublicErrorBoundaryState.md +0 -68
  611. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +0 -86
  612. package/docs/architecture/rpc-function-standards.md +0 -1106
  613. package/docs/getting-started/consuming-app-vite-config.md +0 -239
  614. package/docs/implementation-guides/event-theming-summary.md +0 -226
  615. package/docs/implementation-guides/public-pages-advanced.md +0 -1038
  616. package/docs/migration/v0.4.15-tailwind-scanning.md +0 -278
  617. package/docs/migration/v0.4.16-css-first-approach.md +0 -312
  618. package/docs/migration/v0.4.17-source-path-fix.md +0 -235
  619. package/docs/rbac/RBAC_EVENT_CONTEXT_LOADING.md +0 -222
  620. package/docs/rbac/RBAC_LOGIN_SAFETY_FIX.md +0 -95
  621. package/docs/rbac/RBAC_V0.5.147_FIX.md +0 -117
  622. package/docs/rbac/README-rbac-rls-integration.md +0 -374
  623. package/docs/styles/usage.md +0 -227
  624. package/docs/testing/visual-testing.md +0 -120
  625. package/docs/troubleshooting/DEBUG_NETWORK_ERROR.md +0 -152
  626. package/docs/troubleshooting/FIX_SUPABASE_CORS.md +0 -184
  627. package/docs/troubleshooting/cake-page-permission-guard-issue-summary.md +0 -193
  628. package/docs/troubleshooting/database-view-compatibility.md +0 -125
  629. package/docs/troubleshooting/react-hooks-issue-analysis.md +0 -172
  630. package/docs/troubleshooting/tailwind-content-scanning.md +0 -219
  631. package/examples/RBAC/EventBasedApp.tsx +0 -239
  632. package/examples/RBAC/PermissionExample.tsx +0 -151
  633. package/examples/STRUCTURE.md +0 -125
  634. package/examples/components 2/DataTable/HierarchicalExample.tsx +0 -475
  635. package/examples/components 2/Dialog/BasicHtmlTest.tsx +0 -55
  636. package/examples/components 2/Dialog/DebugHtmlExample.tsx +0 -68
  637. package/examples/components 2/Dialog/HtmlDialogExample.tsx +0 -202
  638. package/examples/components 2/Dialog/SimpleHtmlTest.tsx +0 -61
  639. package/examples/components 2/Dialog/SmartDialogExample.tsx +0 -322
  640. package/examples/components 2/index.ts +0 -11
  641. package/examples/features/index.ts +0 -12
  642. package/examples/features/rbac/CompleteRBACExample.tsx +0 -324
  643. package/examples/features/rbac/index.ts +0 -13
  644. package/examples/public-pages/CorrectPublicPageImplementation.tsx +0 -301
  645. package/examples/public-pages/PublicEventPage.tsx +0 -274
  646. package/examples/public-pages/PublicPageApp.tsx +0 -308
  647. package/examples/public-pages/PublicPageUsageExample.tsx +0 -216
  648. package/examples/public-pages/index.ts +0 -14
  649. package/src/__tests__/TEST_STANDARD.md +0 -1008
  650. package/src/components/Checkbox/__mocks__/Checkbox.tsx +0 -2
  651. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +0 -421
  652. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +0 -177
  653. package/src/components/DataTable/examples/PerformanceExample.tsx +0 -506
  654. package/src/components/DataTable/examples/__tests__/HierarchicalActionsExample.test.tsx +0 -316
  655. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +0 -45
  656. package/src/components/DataTable/examples/__tests__/InitialPageSizeExample.test.tsx +0 -211
  657. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +0 -126
  658. package/src/components/Dialog/README.md +0 -804
  659. package/src/components/Dialog/examples/BasicHtmlTest.tsx +0 -55
  660. package/src/components/Dialog/examples/DebugHtmlExample.tsx +0 -68
  661. package/src/components/Dialog/examples/ScrollableDialogExample.tsx +0 -290
  662. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +0 -61
  663. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +0 -71
  664. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +0 -122
  665. package/src/components/Dialog/examples/__tests__/SmartDialogExample.unit.test.tsx +0 -147
  666. package/src/components/Dialog/utils/__tests__/safeHtml.unit.test.ts +0 -611
  667. package/src/components/Dialog/utils/safeHtml.ts +0 -185
  668. package/src/components/EventSelector/types.ts +0 -79
  669. package/src/components/Form/FormErrorSummary.tsx +0 -113
  670. package/src/components/Form/FormField.tsx +0 -249
  671. package/src/components/Form/FormFieldset.tsx +0 -127
  672. package/src/components/Form/FormLiveRegion.tsx +0 -198
  673. package/src/components/Input/__mocks__/Input.tsx +0 -2
  674. package/src/components/NavigationMenu/types.ts +0 -85
  675. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.accessibility.test.tsx +0 -326
  676. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.unit.test.tsx +0 -1078
  677. package/src/components/PasswordReset/PasswordResetForm.test.tsx +0 -597
  678. package/src/components/PasswordReset/PasswordResetForm.tsx +0 -201
  679. package/src/components/PasswordReset/index.ts +0 -2
  680. package/src/components/ProtectedRoute/README.md +0 -164
  681. package/src/components/PublicLayout/EventLogo.tsx +0 -175
  682. package/src/components/PublicLayout/PublicErrorBoundary.tsx +0 -282
  683. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +0 -216
  684. package/src/components/PublicLayout/PublicPageContextChecker.tsx +0 -131
  685. package/src/components/PublicLayout/PublicPageDebugger.tsx +0 -104
  686. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +0 -162
  687. package/src/components/PublicLayout/PublicPageFooter.tsx +0 -124
  688. package/src/components/PublicLayout/PublicPageHeader.tsx +0 -209
  689. package/src/components/PublicLayout/__tests__/PublicErrorBoundary.test.tsx +0 -449
  690. package/src/components/PublicLayout/__tests__/PublicLoadingSpinner.test.tsx +0 -393
  691. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +0 -192
  692. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +0 -351
  693. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +0 -402
  694. package/src/components/PublicLayout/__tests__/PublicPageLayout.test.tsx +0 -460
  695. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +0 -313
  696. package/src/components/Select/hooks.ts +0 -289
  697. package/src/hooks/useCounter.test.ts +0 -131
  698. package/src/hooks/useDebounce.test.ts +0 -375
  699. package/src/providers/AuthProvider.tsx +0 -15
  700. package/src/providers/EventProvider.tsx +0 -16
  701. package/src/providers/InactivityProvider.tsx +0 -15
  702. package/src/providers/OrganisationProvider.context.test.tsx +0 -169
  703. package/src/providers/UnifiedAuthProvider.tsx +0 -15
  704. package/src/types/theme.ts +0 -6
  705. package/src/types/unified.ts +0 -265
  706. package/src/utils/appConfig.ts +0 -47
  707. package/src/utils/appIdResolver.test.ts +0 -499
  708. package/src/utils/appIdResolver.ts +0 -130
  709. package/src/utils/appNameResolver.simple.test.ts +0 -212
  710. package/src/utils/appNameResolver.test.ts +0 -121
  711. package/src/utils/appNameResolver.ts +0 -191
  712. package/src/utils/audit.ts +0 -127
  713. package/src/utils/auth-utils.ts +0 -96
  714. package/src/utils/bundleAnalysis.ts +0 -129
  715. package/src/utils/debugLogger.ts +0 -67
  716. package/src/utils/deviceFingerprint.ts +0 -215
  717. package/src/utils/dynamicUtils.ts +0 -105
  718. package/src/utils/file-reference.test.ts +0 -788
  719. package/src/utils/file-reference.ts +0 -519
  720. package/src/utils/formatDate.test.ts +0 -237
  721. package/src/utils/formatting.ts +0 -170
  722. package/src/utils/lazyLoad.tsx +0 -44
  723. package/src/utils/logger.ts +0 -179
  724. package/src/utils/organisationContext.test.ts +0 -322
  725. package/src/utils/organisationContext.ts +0 -153
  726. package/src/utils/performanceBenchmark.ts +0 -64
  727. package/src/utils/performanceBudgets.ts +0 -110
  728. package/src/utils/permissionTypes.ts +0 -37
  729. package/src/utils/permissionUtils.test.ts +0 -393
  730. package/src/utils/permissionUtils.ts +0 -34
  731. package/src/utils/sanitization.ts +0 -264
  732. package/src/utils/schemaUtils.ts +0 -37
  733. package/src/utils/secureDataAccess.test.ts +0 -711
  734. package/src/utils/secureDataAccess.ts +0 -377
  735. package/src/utils/secureErrors.ts +0 -79
  736. package/src/utils/security.ts +0 -156
  737. package/src/utils/securityMonitor.ts +0 -45
  738. package/src/utils/sessionTracking.ts +0 -126
  739. package/src/utils/validation.ts +0 -111
  740. package/src/utils/validationUtils.ts +0 -120
  741. package/src/validation/index.ts +0 -12
  742. /package/dist/{DataTable-UA6CL4JI.js.map → DataTable-QAB34V6K.js.map} +0 -0
  743. /package/dist/{UnifiedAuthProvider-B37ATQHE.js.map → UnifiedAuthProvider-7F6T4B6K.js.map} +0 -0
  744. /package/dist/{api-45XYYO2A.js.map → api-ROMBCNKU.js.map} +0 -0
  745. /package/dist/{audit-64X3VJXB.js.map → audit-WRS3KJKI.js.map} +0 -0
  746. /package/dist/{chunk-PLDDJCW6.js.map → chunk-7D4SUZUM.js.map} +0 -0
  747. /package/dist/{useInactivityTracker-TO6ZOF35.js.map → chunk-KQCRWDSA.js.map} +0 -0
  748. /package/examples/{components 2/DataTable → DataTable}/InitialPageSizeExample.tsx +0 -0
  749. /package/examples/{features/public-pages → PublicPages}/index.ts +0 -0
  750. /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