@jmruthers/pace-core 0.5.73 → 0.5.75

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 (283) hide show
  1. package/dist/{DataTable-INW5YIFV.js → DataTable-HWZQGASI.js} +8 -8
  2. package/dist/{PublicLoadingSpinner-DLpF5bbs.d.ts → PublicLoadingSpinner-BKNBT6b6.d.ts} +2 -2
  3. package/dist/RBACService-C4udt_Zp.d.ts +528 -0
  4. package/dist/{UnifiedAuthProvider-6SYT5WFN.js → UnifiedAuthProvider-3NKDOSOK.js} +6 -4
  5. package/dist/UnifiedAuthProvider-Bj6YCf7c.d.ts +113 -0
  6. package/dist/{chunk-2PRPDH66.js → chunk-2CHATWBF.js} +5 -7
  7. package/dist/chunk-2CHATWBF.js.map +1 -0
  8. package/dist/{chunk-43C63KLH.js → chunk-2DFZ432F.js} +496 -30
  9. package/dist/chunk-2DFZ432F.js.map +1 -0
  10. package/dist/{chunk-M4UMXYNK.js → chunk-33PHABLB.js} +36 -3
  11. package/dist/chunk-33PHABLB.js.map +1 -0
  12. package/dist/chunk-5F3NDPJV.js +232 -0
  13. package/dist/chunk-5F3NDPJV.js.map +1 -0
  14. package/dist/chunk-A4FUBC7B.js +17 -0
  15. package/dist/chunk-A4FUBC7B.js.map +1 -0
  16. package/dist/{chunk-SMJZMKYN.js → chunk-A6HBIY5P.js} +2 -11
  17. package/dist/{chunk-SMJZMKYN.js.map → chunk-A6HBIY5P.js.map} +1 -1
  18. package/dist/{chunk-GBC5PC3N.js → chunk-CY3AHGO4.js} +6256 -1937
  19. package/dist/chunk-CY3AHGO4.js.map +1 -0
  20. package/dist/{chunk-BYG6OSTC.js → chunk-DAXLNIDY.js} +48 -50
  21. package/dist/chunk-DAXLNIDY.js.map +1 -0
  22. package/dist/{chunk-VKOCWWVY.js → chunk-L3RV2ALE.js} +1 -6
  23. package/dist/{chunk-VKOCWWVY.js.map → chunk-L3RV2ALE.js.map} +1 -1
  24. package/dist/chunk-LW7MMEAQ.js +59 -0
  25. package/dist/chunk-LW7MMEAQ.js.map +1 -0
  26. package/dist/{chunk-LANO5IFV.js → chunk-NTNILOBC.js} +7 -9
  27. package/dist/chunk-NTNILOBC.js.map +1 -0
  28. package/dist/chunk-PYUXFQJ3.js +11 -0
  29. package/dist/chunk-PYUXFQJ3.js.map +1 -0
  30. package/dist/chunk-URUTVZ7N.js +27 -0
  31. package/dist/chunk-URUTVZ7N.js.map +1 -0
  32. package/dist/chunk-WN6XJWOS.js +2468 -0
  33. package/dist/chunk-WN6XJWOS.js.map +1 -0
  34. package/dist/{chunk-3SP4P7NS.js → chunk-XLZ7U46Z.js} +59 -1
  35. package/dist/chunk-XLZ7U46Z.js.map +1 -0
  36. package/dist/{chunk-UC2BWIK7.js → chunk-ZTT2AXMX.js} +9 -14
  37. package/dist/chunk-ZTT2AXMX.js.map +1 -0
  38. package/dist/components.d.ts +4 -5
  39. package/dist/components.js +32 -39
  40. package/dist/components.js.map +1 -1
  41. package/dist/hooks.d.ts +3 -3
  42. package/dist/hooks.js +9 -8
  43. package/dist/hooks.js.map +1 -1
  44. package/dist/index.d.ts +156 -10
  45. package/dist/index.js +188 -93
  46. package/dist/index.js.map +1 -1
  47. package/dist/{organisation-t-vvQC3g.d.ts → organisation-BtshODVF.d.ts} +4 -3
  48. package/dist/providers.d.ts +27 -38
  49. package/dist/providers.js +33 -23
  50. package/dist/rbac/index.d.ts +61 -5
  51. package/dist/rbac/index.js +13 -14
  52. package/dist/styles/index.js +2 -2
  53. package/dist/theming/runtime.js +1 -3
  54. package/dist/types.d.ts +3 -3
  55. package/dist/types.js +1 -1
  56. package/dist/types.js.map +1 -1
  57. package/dist/{unified-CMPjE_fv.d.ts → unified-CM7T0aTK.d.ts} +1 -1
  58. package/dist/useInactivityTracker-MRUU55XI.js +10 -0
  59. package/dist/useInactivityTracker-MRUU55XI.js.map +1 -0
  60. package/dist/{usePublicRouteParams-Ua1Vz-HG.d.ts → usePublicRouteParams-B-CumWRc.d.ts} +3 -3
  61. package/dist/utils.js +7 -9
  62. package/dist/utils.js.map +1 -1
  63. package/dist/validation.d.ts +1 -1
  64. package/docs/api/classes/ColumnFactory.md +1 -1
  65. package/docs/api/classes/ErrorBoundary.md +1 -1
  66. package/docs/api/classes/InvalidScopeError.md +1 -1
  67. package/docs/api/classes/MissingUserContextError.md +1 -1
  68. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  69. package/docs/api/classes/PermissionDeniedError.md +1 -1
  70. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  71. package/docs/api/classes/RBACAuditManager.md +1 -1
  72. package/docs/api/classes/RBACCache.md +1 -1
  73. package/docs/api/classes/RBACEngine.md +1 -1
  74. package/docs/api/classes/RBACError.md +1 -1
  75. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  76. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  77. package/docs/api/classes/StorageUtils.md +1 -1
  78. package/docs/api/enums/FileCategory.md +1 -1
  79. package/docs/api/interfaces/AggregateConfig.md +1 -1
  80. package/docs/api/interfaces/ButtonProps.md +3 -3
  81. package/docs/api/interfaces/CardProps.md +2 -2
  82. package/docs/api/interfaces/ColorPalette.md +1 -1
  83. package/docs/api/interfaces/ColorShade.md +1 -1
  84. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  85. package/docs/api/interfaces/DataTableAction.md +1 -1
  86. package/docs/api/interfaces/DataTableColumn.md +1 -1
  87. package/docs/api/interfaces/DataTableProps.md +1 -1
  88. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  89. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  90. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  91. package/docs/api/interfaces/EventLogoProps.md +2 -2
  92. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  93. package/docs/api/interfaces/FileMetadata.md +1 -1
  94. package/docs/api/interfaces/FileReference.md +1 -1
  95. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  96. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  97. package/docs/api/interfaces/FileUploadProps.md +1 -1
  98. package/docs/api/interfaces/FooterProps.md +1 -1
  99. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  100. package/docs/api/interfaces/InputProps.md +2 -2
  101. package/docs/api/interfaces/LabelProps.md +1 -1
  102. package/docs/api/interfaces/LoginFormProps.md +1 -1
  103. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  104. package/docs/api/interfaces/NavigationContextType.md +1 -1
  105. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  106. package/docs/api/interfaces/NavigationItem.md +1 -1
  107. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  108. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  109. package/docs/api/interfaces/Organisation.md +1 -1
  110. package/docs/api/interfaces/OrganisationContextType.md +28 -17
  111. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  112. package/docs/api/interfaces/OrganisationProviderProps.md +2 -2
  113. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  114. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  115. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  116. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  117. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  118. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  119. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  120. package/docs/api/interfaces/PaletteData.md +1 -1
  121. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  122. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  123. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  124. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +2 -2
  125. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  126. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  127. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  128. package/docs/api/interfaces/RBACConfig.md +1 -1
  129. package/docs/api/interfaces/RBACContextType.md +5 -11
  130. package/docs/api/interfaces/RBACLogger.md +1 -1
  131. package/docs/api/interfaces/RBACProviderProps.md +1 -1
  132. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  133. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  134. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  135. package/docs/api/interfaces/RouteConfig.md +1 -1
  136. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  137. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  138. package/docs/api/interfaces/StorageConfig.md +1 -1
  139. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  140. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  141. package/docs/api/interfaces/StorageListOptions.md +1 -1
  142. package/docs/api/interfaces/StorageListResult.md +1 -1
  143. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  144. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  145. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  146. package/docs/api/interfaces/StyleImport.md +1 -1
  147. package/docs/api/interfaces/SwitchProps.md +1 -1
  148. package/docs/api/interfaces/ToastActionElement.md +1 -1
  149. package/docs/api/interfaces/ToastProps.md +1 -1
  150. package/docs/api/interfaces/UnifiedAuthContextType.md +524 -440
  151. package/docs/api/interfaces/UnifiedAuthProviderProps.md +14 -14
  152. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  153. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  154. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  155. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  156. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  157. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  158. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  159. package/docs/api/interfaces/UserEventAccess.md +11 -11
  160. package/docs/api/interfaces/UserMenuProps.md +1 -1
  161. package/docs/api/interfaces/UserProfile.md +1 -1
  162. package/docs/api/modules.md +179 -52
  163. package/docs/architecture/services.md +30 -32
  164. package/docs/breaking-changes.md +2 -5
  165. package/docs/implementation-guides/data-tables.md +82 -1
  166. package/docs/migration/service-architecture.md +121 -260
  167. package/docs/rbac/README-rbac-rls-integration.md +48 -38
  168. package/{src/rbac/examples → examples/RBAC}/CompleteRBACExample.tsx +3 -2
  169. package/{src/rbac/examples → examples/RBAC}/EventBasedApp.tsx +5 -4
  170. package/{src/components/examples → examples/RBAC}/PermissionExample.tsx +7 -6
  171. package/examples/RBAC/__tests__/PermissionExample.test.tsx +150 -0
  172. package/examples/RBAC/index.ts +13 -0
  173. package/examples/README.md +37 -0
  174. package/examples/index.ts +22 -0
  175. package/{src/examples → examples/public-pages}/CorrectPublicPageImplementation.tsx +1 -1
  176. package/{src/examples → examples/public-pages}/PublicEventPage.tsx +1 -1
  177. package/{src/examples → examples/public-pages}/PublicPageApp.tsx +1 -1
  178. package/{src/examples → examples/public-pages}/PublicPageUsageExample.tsx +1 -1
  179. package/examples/public-pages/__tests__/PublicPageUsageExample.test.tsx +159 -0
  180. package/examples/public-pages/index.ts +14 -0
  181. package/package.json +22 -18
  182. package/src/__tests__/TEST_GUIDE_CURSOR.md +650 -9
  183. package/src/__tests__/helpers/README.md +255 -0
  184. package/src/__tests__/helpers/index.ts +62 -0
  185. package/src/__tests__/helpers/supabaseMock.ts +27 -3
  186. package/src/__tests__/rbac/PagePermissionGuard.test.tsx +6 -8
  187. package/src/components/DataTable/components/DataTableCore.tsx +37 -3
  188. package/src/components/DataTable/components/__tests__/COVERAGE_NOTE.md +55 -0
  189. package/src/components/DataTable/core/ColumnManager.ts +10 -0
  190. package/src/components/DataTable/core/__tests__/ColumnFactory.test.ts +254 -0
  191. package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +193 -0
  192. package/src/components/DataTable/examples/__tests__/HierarchicalExample.test.tsx +45 -0
  193. package/src/components/DataTable/examples/__tests__/PerformanceExample.test.tsx +117 -0
  194. package/src/components/Dialog/Dialog.tsx +2 -2
  195. package/src/components/Dialog/examples/__tests__/HtmlDialogExample.test.tsx +71 -0
  196. package/src/components/Dialog/examples/__tests__/SimpleHtmlTest.test.tsx +122 -0
  197. package/src/components/EventSelector/EventSelector.tsx +1 -1
  198. package/src/components/Header/Header.test.tsx +35 -1
  199. package/src/components/Header/Header.tsx +3 -1
  200. package/src/components/OrganisationSelector/OrganisationSelector.tsx +3 -3
  201. package/src/components/PaceAppLayout/__tests__/PaceAppLayout.rbac.test.tsx +24 -4
  202. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +3 -2
  203. package/src/components/Toast/Toast.test.tsx +1 -1
  204. package/src/components/Toast/Toast.tsx +1 -1
  205. package/src/hooks/__tests__/useFocusManagement.unit.test.ts +220 -0
  206. package/src/hooks/__tests__/useIsMobile.unit.test.ts +117 -0
  207. package/src/hooks/__tests__/useKeyboardShortcuts.unit.test.ts +295 -0
  208. package/src/hooks/__tests__/useOrganisationSecurity.unit.test.tsx +29 -19
  209. package/src/hooks/__tests__/useRBAC.unit.test.ts +7 -3
  210. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +115 -19
  211. package/src/hooks/useEventTheme.test.ts +350 -0
  212. package/src/hooks/useEventTheme.ts +1 -1
  213. package/src/hooks/useEvents.ts +61 -0
  214. package/src/hooks/useOrganisationSecurity.test.ts +4 -4
  215. package/src/hooks/useOrganisationSecurity.ts +2 -2
  216. package/src/hooks/useOrganisations.ts +64 -0
  217. package/src/hooks/useSecureDataAccess.test.ts +9 -5
  218. package/src/hooks/useSecureDataAccess.ts +2 -2
  219. package/src/index.ts +18 -3
  220. package/src/providers/AuthProvider.tsx +8 -292
  221. package/src/providers/EventProvider.tsx +15 -425
  222. package/src/providers/InactivityProvider.tsx +8 -231
  223. package/src/providers/OrganisationProvider.test.simple.tsx +3 -2
  224. package/src/providers/OrganisationProvider.tsx +11 -890
  225. package/src/providers/UnifiedAuthProvider.tsx +8 -320
  226. package/src/providers/__tests__/AuthProvider.test.tsx +18 -17
  227. package/src/providers/__tests__/EventProvider.test.tsx +253 -2
  228. package/src/providers/__tests__/InactivityProvider.test-helper.tsx +65 -0
  229. package/src/providers/__tests__/InactivityProvider.test.tsx +46 -114
  230. package/src/providers/__tests__/OrganisationProvider.test.tsx +313 -3
  231. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx +383 -2
  232. package/src/providers/index.ts +8 -7
  233. package/src/providers/services/EventServiceProvider.tsx +3 -0
  234. package/src/providers/services/UnifiedAuthProvider.tsx +3 -0
  235. package/src/rbac/hooks/usePermissions.test.ts +296 -0
  236. package/src/rbac/hooks/useRBAC.test.ts +9 -5
  237. package/src/rbac/hooks/useRBAC.ts +3 -3
  238. package/src/rbac/providers/__tests__/RBACProvider.integration.test.tsx +688 -0
  239. package/src/rbac/providers/__tests__/RBACProvider.test.tsx +507 -0
  240. package/src/services/AuthService.ts +19 -4
  241. package/src/services/__tests__/AuthService.test.ts +288 -0
  242. package/src/styles/core.css +2 -0
  243. package/src/types/__tests__/guards.test.ts +246 -0
  244. package/src/types/guards.ts +1 -0
  245. package/src/types/organisation.ts +3 -2
  246. package/src/validation/__tests__/sanitization.unit.test.ts +250 -0
  247. package/src/validation/__tests__/schemaUtils.unit.test.ts +451 -0
  248. package/src/validation/__tests__/user.unit.test.ts +440 -0
  249. package/dist/RBACProvider-BO4ilsQB.d.ts +0 -63
  250. package/dist/UnifiedAuthProvider-D02AMXgO.d.ts +0 -103
  251. package/dist/chunk-2PRPDH66.js.map +0 -1
  252. package/dist/chunk-3SP4P7NS.js.map +0 -1
  253. package/dist/chunk-43C63KLH.js.map +0 -1
  254. package/dist/chunk-5A4RL4BC.js +0 -5670
  255. package/dist/chunk-5A4RL4BC.js.map +0 -1
  256. package/dist/chunk-BYG6OSTC.js.map +0 -1
  257. package/dist/chunk-CDDYJCYU.js +0 -79
  258. package/dist/chunk-CDDYJCYU.js.map +0 -1
  259. package/dist/chunk-F24P24TZ.js +0 -17
  260. package/dist/chunk-F24P24TZ.js.map +0 -1
  261. package/dist/chunk-GBC5PC3N.js.map +0 -1
  262. package/dist/chunk-LANO5IFV.js.map +0 -1
  263. package/dist/chunk-M4UMXYNK.js.map +0 -1
  264. package/dist/chunk-RJNE764D.js +0 -953
  265. package/dist/chunk-RJNE764D.js.map +0 -1
  266. package/dist/chunk-UC2BWIK7.js.map +0 -1
  267. package/dist/rbac/cli/policy-manager.js +0 -278
  268. package/dist/rbac/cli/policy-manager.js.map +0 -1
  269. package/docs/api/interfaces/EventContextType.md +0 -96
  270. package/docs/api/interfaces/EventProviderProps.md +0 -19
  271. package/src/providers/OrganisationProvider.test.tsx +0 -164
  272. package/src/providers/UnifiedAuthProvider.test.tsx +0 -124
  273. package/src/providers/__tests__/AuthProvider.test.tsx.backup +0 -771
  274. package/src/providers/__tests__/EventProvider.test.tsx.backup +0 -824
  275. package/src/providers/__tests__/OrganisationProvider.test.tsx.backup +0 -820
  276. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx.backup +0 -911
  277. package/src/providers/__tests__/UnifiedAuthProvider.test.tsx.backup2 +0 -166
  278. package/src/rbac/cli/__tests__/policy-manager.test.ts +0 -339
  279. package/src/rbac/cli/policy-manager.ts +0 -443
  280. package/dist/{DataTable-INW5YIFV.js.map → DataTable-HWZQGASI.js.map} +0 -0
  281. package/dist/{UnifiedAuthProvider-6SYT5WFN.js.map → UnifiedAuthProvider-3NKDOSOK.js.map} +0 -0
  282. package/dist/{validation-PM_iOaTI.d.ts → validation-D8VcbTzC.d.ts} +2 -2
  283. /package/src/utils/{appNameResolver.test.ts.backup → appNameResolver.test 2.ts} +0 -0
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ import {
12
12
  PagePermissionProvider,
13
13
  PermissionEnforcer,
14
14
  PermissionGuard,
15
+ RBACProvider,
15
16
  RoleBasedRouter,
16
17
  SecureDataProvider,
17
18
  SecureSupabaseClient,
@@ -25,13 +26,18 @@ import {
25
26
  isValidPermission,
26
27
  useNavigationPermissions,
27
28
  usePagePermissions,
29
+ useRBAC as useRBAC2,
28
30
  useRoleBasedRouter,
29
31
  useSecureData,
30
32
  withAccessLevelGuard,
31
33
  withPermissionGuard,
32
34
  withRoleGuard
33
- } from "./chunk-43C63KLH.js";
35
+ } from "./chunk-2DFZ432F.js";
34
36
  import "./chunk-TYHR5X4W.js";
37
+ import {
38
+ init_useInactivityTracker,
39
+ useInactivityTracker
40
+ } from "./chunk-5F3NDPJV.js";
35
41
  import {
36
42
  APP_PATH_MAPPING,
37
43
  Avatar,
@@ -95,6 +101,7 @@ import {
95
101
  getFileSizeLimit,
96
102
  getPublicUrl,
97
103
  getSignedUrl,
104
+ init_EventProvider,
98
105
  listFiles,
99
106
  uploadFile,
100
107
  useFileReference,
@@ -103,11 +110,12 @@ import {
103
110
  usePublicPageContext as usePublicPageContext2,
104
111
  useStorage,
105
112
  validateFileSize
106
- } from "./chunk-BYG6OSTC.js";
113
+ } from "./chunk-DAXLNIDY.js";
107
114
  import {
108
115
  Alert,
109
116
  AlertDescription,
110
117
  AlertTitle,
118
+ Button,
111
119
  Card,
112
120
  CardActions,
113
121
  CardContent,
@@ -118,6 +126,17 @@ import {
118
126
  Checkbox,
119
127
  ColumnFactory,
120
128
  DataTable,
129
+ Dialog,
130
+ DialogBody,
131
+ DialogClose,
132
+ DialogContent,
133
+ DialogDescription,
134
+ DialogFooter,
135
+ DialogHeader,
136
+ DialogOverlay,
137
+ DialogPortal,
138
+ DialogTitle,
139
+ DialogTrigger,
121
140
  Input,
122
141
  Select,
123
142
  SelectContent,
@@ -126,8 +145,13 @@ import {
126
145
  SelectLabel,
127
146
  SelectSeparator,
128
147
  SelectTrigger,
129
- SelectValue
130
- } from "./chunk-5A4RL4BC.js";
148
+ SelectValue,
149
+ Tooltip,
150
+ TooltipContent,
151
+ TooltipProvider,
152
+ TooltipRoot,
153
+ TooltipTrigger
154
+ } from "./chunk-CY3AHGO4.js";
131
155
  import {
132
156
  useAccessLevel,
133
157
  useCachedPermissions,
@@ -136,8 +160,8 @@ import {
136
160
  useHasAnyPermission,
137
161
  useMultiplePermissions,
138
162
  usePermissions,
139
- useRBAC as useRBAC2
140
- } from "./chunk-2PRPDH66.js";
163
+ useRBAC
164
+ } from "./chunk-2CHATWBF.js";
141
165
  import {
142
166
  CACHE_PATTERNS,
143
167
  RBACCache,
@@ -165,7 +189,6 @@ import {
165
189
  getGlobalAuditManager,
166
190
  setGlobalAuditManager
167
191
  } from "./chunk-B2WTCLCV.js";
168
- import "./chunk-F24P24TZ.js";
169
192
  import {
170
193
  clearPublicEventCache,
171
194
  extractEventCodeFromPath,
@@ -177,61 +200,50 @@ import {
177
200
  usePublicEvent,
178
201
  usePublicEventCode,
179
202
  usePublicRouteParams
180
- } from "./chunk-UC2BWIK7.js";
181
- import "./chunk-LANO5IFV.js";
203
+ } from "./chunk-ZTT2AXMX.js";
204
+ import "./chunk-NTNILOBC.js";
182
205
  import {
183
206
  DefaultPublicErrorFallback,
184
207
  PublicErrorBoundary,
185
208
  PublicPageProvider,
186
209
  clearPublicLogoCache,
187
210
  getPublicLogoCacheStats,
211
+ init_OrganisationProvider,
188
212
  useAppConfig,
189
213
  useErrorBoundary,
190
214
  useIsPublicPage,
191
215
  usePublicEventLogo,
192
216
  usePublicPageContext,
193
217
  useToast
194
- } from "./chunk-M4UMXYNK.js";
218
+ } from "./chunk-33PHABLB.js";
195
219
  import "./chunk-YNUBMSMV.js";
196
220
  import {
197
- EventProvider,
198
- OrganisationProvider,
199
- init_EventProvider,
200
- init_OrganisationProvider,
221
+ init_useOrganisations,
201
222
  useEvents,
202
223
  useOrganisations
203
- } from "./chunk-RJNE764D.js";
224
+ } from "./chunk-LW7MMEAQ.js";
204
225
  import {
205
- Button,
206
- Dialog,
207
- DialogBody,
208
- DialogClose,
209
- DialogContent,
210
- DialogDescription,
211
- DialogFooter,
212
- DialogHeader,
213
- DialogOverlay,
214
- DialogPortal,
215
- DialogTitle,
216
- DialogTrigger,
217
- InactivityWarningModal,
218
- RBACProvider,
219
- Tooltip,
220
- TooltipContent,
221
- TooltipProvider,
222
- TooltipRoot,
223
- TooltipTrigger,
226
+ init_UnifiedAuthProvider
227
+ } from "./chunk-URUTVZ7N.js";
228
+ import "./chunk-A4FUBC7B.js";
229
+ import {
230
+ EventServiceProvider,
231
+ InactivityServiceProvider,
232
+ OrganisationServiceProvider,
224
233
  UnifiedAuthProvider,
225
- init_Button,
226
- init_Dialog,
227
- init_InactivityWarningModal,
228
- init_Tooltip,
229
- init_UnifiedAuthProvider,
230
- init_useInactivityTracker,
231
- useInactivityTracker,
232
- useRBAC,
234
+ init_InactivityServiceProvider,
235
+ init_useAuthService,
236
+ init_useEventService,
237
+ init_useInactivityService,
238
+ init_useOrganisationService,
239
+ init_useRBACService,
240
+ useAuthService2 as useAuthService,
241
+ useEventService2 as useEventService,
242
+ useInactivityService2 as useInactivityService,
243
+ useOrganisationService2 as useOrganisationService,
244
+ useRBACService2 as useRBACService,
233
245
  useUnifiedAuth
234
- } from "./chunk-GBC5PC3N.js";
246
+ } from "./chunk-WN6XJWOS.js";
235
247
  import {
236
248
  FileCategory,
237
249
  init_file_reference
@@ -251,36 +263,117 @@ import {
251
263
  import {
252
264
  LoadingSpinner
253
265
  } from "./chunk-CDQ3PX7L.js";
266
+ import {
267
+ cn
268
+ } from "./chunk-PYUXFQJ3.js";
254
269
  import "./chunk-5BSLGBYI.js";
255
270
  import "./chunk-O3NWNXDY.js";
256
- import "./chunk-3SP4P7NS.js";
257
- import {
258
- cn,
259
- init_cn
260
- } from "./chunk-CDDYJCYU.js";
271
+ import "./chunk-XLZ7U46Z.js";
261
272
  import {
262
273
  getAllStylePaths,
263
274
  getStylePath,
264
275
  styleConfig
265
- } from "./chunk-VKOCWWVY.js";
276
+ } from "./chunk-L3RV2ALE.js";
266
277
  import {
267
278
  applyPalette,
268
279
  clearPalette,
269
280
  generateSSRThemeCSS,
270
281
  getCurrentThemeData,
271
282
  isDynamicThemingActive
272
- } from "./chunk-SMJZMKYN.js";
283
+ } from "./chunk-A6HBIY5P.js";
273
284
  import "./chunk-PLDDJCW6.js";
274
285
 
275
286
  // src/index.ts
276
287
  init_UnifiedAuthProvider();
277
288
  init_EventProvider();
278
289
  init_OrganisationProvider();
279
- init_InactivityWarningModal();
290
+
291
+ // src/providers/InactivityProvider.tsx
292
+ init_InactivityServiceProvider();
293
+
294
+ // src/index.ts
295
+ init_useOrganisations();
296
+ init_useEventService();
297
+ init_useOrganisationService();
298
+ init_useAuthService();
299
+ init_useRBACService();
300
+ init_useInactivityService();
301
+
302
+ // src/components/InactivityWarningModal/InactivityWarningModal.tsx
303
+ import { useEffect, useState, useCallback } from "react";
304
+ import { Clock, AlertTriangle } from "lucide-react";
305
+ import { jsx, jsxs } from "react/jsx-runtime";
306
+ function InactivityWarningModal({
307
+ isOpen,
308
+ timeRemaining,
309
+ onStaySignedIn,
310
+ onSignOutNow,
311
+ title = "Session Timeout Warning",
312
+ description = "You've been inactive for a while. Your session will expire soon for security reasons.",
313
+ className
314
+ }) {
315
+ const [displayTime, setDisplayTime] = useState(timeRemaining);
316
+ useEffect(() => {
317
+ setDisplayTime(timeRemaining);
318
+ }, [timeRemaining]);
319
+ const formatTime = useCallback((seconds) => {
320
+ const mins = Math.floor(seconds / 60);
321
+ const secs = seconds % 60;
322
+ return `${mins.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
323
+ }, []);
324
+ return /* @__PURE__ */ jsx(Dialog, { open: isOpen, onOpenChange: (open) => !open && onStaySignedIn(), children: /* @__PURE__ */ jsxs(
325
+ DialogContent,
326
+ {
327
+ className: `sm:max-w-md ${className || ""}`,
328
+ preventCloseOnEscape: false,
329
+ preventCloseOnOutsideClick: true,
330
+ "data-testid": "inactivity-warning-modal",
331
+ children: [
332
+ /* @__PURE__ */ jsxs(DialogHeader, { children: [
333
+ /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
334
+ /* @__PURE__ */ jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ jsx(AlertTriangle, { className: "h-6 w-6 text-acc-600" }) }),
335
+ /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(DialogTitle, { className: "text-lg font-semibold text-main-900", children: title }) })
336
+ ] }),
337
+ /* @__PURE__ */ jsx(DialogDescription, { className: "text-main-700 mt-2", children: description })
338
+ ] }),
339
+ /* @__PURE__ */ jsxs("div", { className: "space-y-6", children: [
340
+ /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
341
+ /* @__PURE__ */ jsxs("div", { className: "inline-flex items-center gap-2 px-4 py-3 bg-acc-50 border border-acc-200 rounded-lg", children: [
342
+ /* @__PURE__ */ jsx(Clock, { className: "h-5 w-5 text-acc-600" }),
343
+ /* @__PURE__ */ jsx("span", { className: "text-2xl font-mono font-bold text-acc-700", children: formatTime(displayTime) })
344
+ ] }),
345
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-main-600 mt-2", children: "Time remaining before automatic logout" })
346
+ ] }),
347
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col sm:flex-row gap-3", children: [
348
+ /* @__PURE__ */ jsx(
349
+ Button,
350
+ {
351
+ onClick: onStaySignedIn,
352
+ className: "flex-1 bg-main-600 hover:bg-main-700 text-main-50",
353
+ size: "lg",
354
+ children: "Stay Signed In"
355
+ }
356
+ ),
357
+ /* @__PURE__ */ jsx(
358
+ Button,
359
+ {
360
+ onClick: onSignOutNow,
361
+ variant: "outline",
362
+ className: "flex-1 border-acc-300 text-acc-700 hover:bg-acc-50",
363
+ size: "lg",
364
+ children: "Sign Out Now"
365
+ }
366
+ )
367
+ ] }),
368
+ /* @__PURE__ */ jsx("div", { className: "text-xs text-main-500 text-center", children: /* @__PURE__ */ jsx("p", { children: "For security reasons, you'll be automatically signed out after 30 minutes of inactivity." }) })
369
+ ] })
370
+ ]
371
+ }
372
+ ) });
373
+ }
374
+
375
+ // src/index.ts
280
376
  init_useInactivityTracker();
281
- init_Button();
282
- init_Dialog();
283
- init_Tooltip();
284
377
 
285
378
  // src/utils/secureDataAccess.ts
286
379
  var createSecureDataAccess = (supabase, organisationId, isSuperAdmin = false) => {
@@ -508,13 +601,9 @@ var createSecureDataAccess = (supabase, organisationId, isSuperAdmin = false) =>
508
601
  };
509
602
  };
510
603
 
511
- // src/index.ts
512
- init_cn();
513
-
514
604
  // src/components/FileUpload/FileUpload.tsx
515
- import { useCallback, useState } from "react";
516
- init_Button();
517
- import { jsx, jsxs } from "react/jsx-runtime";
605
+ import { useCallback as useCallback2, useState as useState2 } from "react";
606
+ import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
518
607
  function FileUpload({
519
608
  supabase,
520
609
  appName,
@@ -528,15 +617,15 @@ function FileUpload({
528
617
  className = "",
529
618
  children
530
619
  }) {
531
- const [dragActive, setDragActive] = useState(false);
532
- const [selectedFiles, setSelectedFiles] = useState([]);
533
- const [validationErrors, setValidationErrors] = useState([]);
620
+ const [dragActive, setDragActive] = useState2(false);
621
+ const [selectedFiles, setSelectedFiles] = useState2([]);
622
+ const [validationErrors, setValidationErrors] = useState2([]);
534
623
  const { uploadWithProgress, uploadProgress, isUploading, uploadError } = useFileUpload({
535
624
  supabase,
536
625
  appName,
537
626
  orgId
538
627
  });
539
- const validateFiles = useCallback((files) => {
628
+ const validateFiles = useCallback2((files) => {
540
629
  const errors = [];
541
630
  files.forEach((file, index) => {
542
631
  const sizeValidation = validateFileSize(file);
@@ -551,14 +640,14 @@ function FileUpload({
551
640
  });
552
641
  return errors;
553
642
  }, [maxSize]);
554
- const handleFileSelect = useCallback((files) => {
643
+ const handleFileSelect = useCallback2((files) => {
555
644
  if (!files) return;
556
645
  const fileArray = Array.from(files);
557
646
  const errors = validateFiles(fileArray);
558
647
  setValidationErrors(errors);
559
648
  setSelectedFiles(fileArray);
560
649
  }, [validateFiles]);
561
- const handleDrag = useCallback((e) => {
650
+ const handleDrag = useCallback2((e) => {
562
651
  e.preventDefault();
563
652
  e.stopPropagation();
564
653
  if (e.type === "dragenter" || e.type === "dragover") {
@@ -567,7 +656,7 @@ function FileUpload({
567
656
  setDragActive(false);
568
657
  }
569
658
  }, []);
570
- const handleDrop = useCallback((e) => {
659
+ const handleDrop = useCallback2((e) => {
571
660
  e.preventDefault();
572
661
  e.stopPropagation();
573
662
  setDragActive(false);
@@ -575,10 +664,10 @@ function FileUpload({
575
664
  const files = e.dataTransfer.files;
576
665
  handleFileSelect(files);
577
666
  }, [disabled, handleFileSelect]);
578
- const handleFileInputChange = useCallback((e) => {
667
+ const handleFileInputChange = useCallback2((e) => {
579
668
  handleFileSelect(e.target.files);
580
669
  }, [handleFileSelect]);
581
- const handleUpload = useCallback(async () => {
670
+ const handleUpload = useCallback2(async () => {
582
671
  if (selectedFiles.length === 0 || validationErrors.length > 0) return;
583
672
  onUploadStart?.();
584
673
  for (const file of selectedFiles) {
@@ -588,13 +677,13 @@ function FileUpload({
588
677
  setSelectedFiles([]);
589
678
  setValidationErrors([]);
590
679
  }, [selectedFiles, validationErrors, uploadWithProgress, onUploadComplete, onUploadStart]);
591
- const handleClear = useCallback(() => {
680
+ const handleClear = useCallback2(() => {
592
681
  setSelectedFiles([]);
593
682
  setValidationErrors([]);
594
683
  }, []);
595
684
  const canUpload = selectedFiles.length > 0 && validationErrors.length === 0 && !isUploading && !disabled;
596
- return /* @__PURE__ */ jsxs("div", { className: `file-upload ${className}`, children: [
597
- /* @__PURE__ */ jsxs(
685
+ return /* @__PURE__ */ jsxs2("div", { className: `file-upload ${className}`, children: [
686
+ /* @__PURE__ */ jsxs2(
598
687
  "div",
599
688
  {
600
689
  className: `file-upload__dropzone ${dragActive ? "file-upload__dropzone--active" : ""} ${disabled ? "file-upload__dropzone--disabled" : ""}`,
@@ -603,7 +692,7 @@ function FileUpload({
603
692
  onDragOver: handleDrag,
604
693
  onDrop: handleDrop,
605
694
  children: [
606
- /* @__PURE__ */ jsx(
695
+ /* @__PURE__ */ jsx2(
607
696
  "input",
608
697
  {
609
698
  type: "file",
@@ -614,9 +703,9 @@ function FileUpload({
614
703
  className: "file-upload__input"
615
704
  }
616
705
  ),
617
- children || /* @__PURE__ */ jsxs("div", { className: "file-upload__content", children: [
618
- /* @__PURE__ */ jsx("p", { className: "file-upload__text", children: dragActive ? "Drop files here" : "Drag and drop files here or click to select" }),
619
- /* @__PURE__ */ jsx(
706
+ children || /* @__PURE__ */ jsxs2("div", { className: "file-upload__content", children: [
707
+ /* @__PURE__ */ jsx2("p", { className: "file-upload__text", children: dragActive ? "Drop files here" : "Drag and drop files here or click to select" }),
708
+ /* @__PURE__ */ jsx2(
620
709
  Button,
621
710
  {
622
711
  type: "button",
@@ -630,25 +719,25 @@ function FileUpload({
630
719
  ]
631
720
  }
632
721
  ),
633
- selectedFiles.length > 0 && /* @__PURE__ */ jsxs("div", { className: "file-upload__files", children: [
634
- /* @__PURE__ */ jsx("h4", { className: "file-upload__files-title", children: "Selected Files:" }),
635
- /* @__PURE__ */ jsx("ul", { className: "file-upload__files-list", children: selectedFiles.map((file, index) => /* @__PURE__ */ jsxs("li", { className: "file-upload__file-item", children: [
636
- /* @__PURE__ */ jsx("span", { className: "file-upload__file-name", children: file.name }),
637
- /* @__PURE__ */ jsx("span", { className: "file-upload__file-size", children: formatFileSize2(file.size) })
722
+ selectedFiles.length > 0 && /* @__PURE__ */ jsxs2("div", { className: "file-upload__files", children: [
723
+ /* @__PURE__ */ jsx2("h4", { className: "file-upload__files-title", children: "Selected Files:" }),
724
+ /* @__PURE__ */ jsx2("ul", { className: "file-upload__files-list", children: selectedFiles.map((file, index) => /* @__PURE__ */ jsxs2("li", { className: "file-upload__file-item", children: [
725
+ /* @__PURE__ */ jsx2("span", { className: "file-upload__file-name", children: file.name }),
726
+ /* @__PURE__ */ jsx2("span", { className: "file-upload__file-size", children: formatFileSize2(file.size) })
638
727
  ] }, index)) })
639
728
  ] }),
640
- validationErrors.length > 0 && /* @__PURE__ */ jsx(Alert, { variant: "destructive", className: "file-upload__errors", children: /* @__PURE__ */ jsx("ul", { children: validationErrors.map((error, index) => /* @__PURE__ */ jsx("li", { children: error }, index)) }) }),
641
- isUploading && /* @__PURE__ */ jsxs("div", { className: "file-upload__progress", children: [
642
- /* @__PURE__ */ jsx(Progress, { value: uploadProgress, max: 100 }),
643
- /* @__PURE__ */ jsxs("p", { className: "file-upload__progress-text", children: [
729
+ validationErrors.length > 0 && /* @__PURE__ */ jsx2(Alert, { variant: "destructive", className: "file-upload__errors", children: /* @__PURE__ */ jsx2("ul", { children: validationErrors.map((error, index) => /* @__PURE__ */ jsx2("li", { children: error }, index)) }) }),
730
+ isUploading && /* @__PURE__ */ jsxs2("div", { className: "file-upload__progress", children: [
731
+ /* @__PURE__ */ jsx2(Progress, { value: uploadProgress, max: 100 }),
732
+ /* @__PURE__ */ jsxs2("p", { className: "file-upload__progress-text", children: [
644
733
  "Uploading... ",
645
734
  uploadProgress,
646
735
  "%"
647
736
  ] })
648
737
  ] }),
649
- uploadError && /* @__PURE__ */ jsx(Alert, { variant: "destructive", className: "file-upload__error", children: uploadError }),
650
- selectedFiles.length > 0 && /* @__PURE__ */ jsxs("div", { className: "file-upload__actions", children: [
651
- /* @__PURE__ */ jsx(
738
+ uploadError && /* @__PURE__ */ jsx2(Alert, { variant: "destructive", className: "file-upload__error", children: uploadError }),
739
+ selectedFiles.length > 0 && /* @__PURE__ */ jsxs2("div", { className: "file-upload__actions", children: [
740
+ /* @__PURE__ */ jsx2(
652
741
  Button,
653
742
  {
654
743
  onClick: handleUpload,
@@ -657,7 +746,7 @@ function FileUpload({
657
746
  children: isUploading ? "Uploading..." : `Upload ${selectedFiles.length} file${selectedFiles.length > 1 ? "s" : ""}`
658
747
  }
659
748
  ),
660
- /* @__PURE__ */ jsx(
749
+ /* @__PURE__ */ jsx2(
661
750
  Button,
662
751
  {
663
752
  variant: "outline",
@@ -714,7 +803,7 @@ export {
714
803
  EventLogo,
715
804
  EventLogoCompact,
716
805
  EventLogoLarge,
717
- EventProvider,
806
+ EventServiceProvider as EventProvider,
718
807
  EventSelector,
719
808
  FILE_SIZE_LIMITS,
720
809
  FileCategory,
@@ -724,6 +813,7 @@ export {
724
813
  Form,
725
814
  GLOBAL_PERMISSIONS,
726
815
  Header,
816
+ InactivityServiceProvider as InactivityProvider,
727
817
  InactivityWarningModal,
728
818
  Input,
729
819
  Label,
@@ -733,7 +823,7 @@ export {
733
823
  NavigationMenu,
734
824
  NavigationProvider,
735
825
  ORGANISATION_PERMISSIONS,
736
- OrganisationProvider,
826
+ OrganisationServiceProvider as OrganisationProvider,
737
827
  OrganisationSelector,
738
828
  PAGE_PERMISSIONS,
739
829
  PaceAppLayout,
@@ -862,9 +952,11 @@ export {
862
952
  uploadFile,
863
953
  useAccessLevel,
864
954
  useAppConfig,
955
+ useAuthService,
865
956
  useCachedPermissions,
866
957
  useCan,
867
958
  useErrorBoundary,
959
+ useEventService,
868
960
  useEventTheme,
869
961
  useEvents,
870
962
  useFileReference,
@@ -872,12 +964,14 @@ export {
872
964
  useFileUpload,
873
965
  useHasAllPermissions,
874
966
  useHasAnyPermission,
967
+ useInactivityService,
875
968
  useInactivityTracker,
876
969
  useIsPublicPage,
877
970
  useMultiplePermissions,
878
971
  useNavigationPermissions,
879
972
  useOrganisationPermissions,
880
973
  useOrganisationSecurity,
974
+ useOrganisationService,
881
975
  useOrganisations,
882
976
  usePagePermissions,
883
977
  usePermissions,
@@ -887,8 +981,9 @@ export {
887
981
  usePublicPageContext2 as usePublicPageContext,
888
982
  usePublicPageContext as usePublicPageProviderContext,
889
983
  usePublicRouteParams,
890
- useRBAC2 as useRBAC,
891
- useRBAC as useRBACProvider,
984
+ useRBAC,
985
+ useRBAC2 as useRBACProvider,
986
+ useRBACService,
892
987
  useRoleBasedRouter,
893
988
  useSecureData,
894
989
  useStorage,