@jmruthers/pace-core 0.5.75 → 0.5.76

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 (226) hide show
  1. package/dist/{DataTable-HWZQGASI.js → DataTable-4GAVPIEG.js} +48 -30
  2. package/dist/{PublicLoadingSpinner-BKNBT6b6.d.ts → PublicLoadingSpinner-BiNER8F5.d.ts} +28 -17
  3. package/dist/{chunk-33PHABLB.js → chunk-AFGTSUAD.js} +10 -127
  4. package/dist/chunk-AFGTSUAD.js.map +1 -0
  5. package/dist/{chunk-2DFZ432F.js → chunk-K34IM5CT.js} +3 -5
  6. package/dist/{chunk-2DFZ432F.js.map → chunk-K34IM5CT.js.map} +1 -1
  7. package/dist/{chunk-2CHATWBF.js → chunk-KHJS6VIA.js} +199 -35
  8. package/dist/chunk-KHJS6VIA.js.map +1 -0
  9. package/dist/{chunk-ZTT2AXMX.js → chunk-KK73ZB4E.js} +2 -2
  10. package/dist/{chunk-CY3AHGO4.js → chunk-M5IWZRBT.js} +1750 -2815
  11. package/dist/chunk-M5IWZRBT.js.map +1 -0
  12. package/dist/{chunk-DAXLNIDY.js → chunk-Y6TXWPJO.js} +6 -4
  13. package/dist/{chunk-DAXLNIDY.js.map → chunk-Y6TXWPJO.js.map} +1 -1
  14. package/dist/{chunk-YNUBMSMV.js → chunk-YCKPEMJA.js} +186 -263
  15. package/dist/chunk-YCKPEMJA.js.map +1 -0
  16. package/dist/components.d.ts +1 -1
  17. package/dist/components.js +7 -6
  18. package/dist/components.js.map +1 -1
  19. package/dist/hooks.d.ts +17 -40
  20. package/dist/hooks.js +6 -6
  21. package/dist/index.d.ts +3 -3
  22. package/dist/index.js +12 -10
  23. package/dist/index.js.map +1 -1
  24. package/dist/rbac/index.d.ts +54 -1
  25. package/dist/rbac/index.js +5 -4
  26. package/dist/utils.js +1 -1
  27. package/docs/TERMINOLOGY.md +231 -0
  28. package/docs/api/classes/ColumnFactory.md +1 -1
  29. package/docs/api/classes/ErrorBoundary.md +1 -1
  30. package/docs/api/classes/InvalidScopeError.md +1 -1
  31. package/docs/api/classes/MissingUserContextError.md +1 -1
  32. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  33. package/docs/api/classes/PermissionDeniedError.md +1 -1
  34. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  35. package/docs/api/classes/RBACAuditManager.md +1 -1
  36. package/docs/api/classes/RBACCache.md +1 -1
  37. package/docs/api/classes/RBACEngine.md +1 -1
  38. package/docs/api/classes/RBACError.md +1 -1
  39. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  40. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  41. package/docs/api/classes/StorageUtils.md +1 -1
  42. package/docs/api/enums/FileCategory.md +1 -1
  43. package/docs/api/interfaces/AggregateConfig.md +1 -1
  44. package/docs/api/interfaces/ButtonProps.md +1 -1
  45. package/docs/api/interfaces/CardProps.md +1 -1
  46. package/docs/api/interfaces/ColorPalette.md +1 -1
  47. package/docs/api/interfaces/ColorShade.md +1 -1
  48. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  49. package/docs/api/interfaces/DataTableAction.md +1 -1
  50. package/docs/api/interfaces/DataTableColumn.md +1 -1
  51. package/docs/api/interfaces/DataTableProps.md +1 -1
  52. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  53. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  54. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  55. package/docs/api/interfaces/EventLogoProps.md +1 -1
  56. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  57. package/docs/api/interfaces/FileMetadata.md +1 -1
  58. package/docs/api/interfaces/FileReference.md +1 -1
  59. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  60. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  61. package/docs/api/interfaces/FileUploadProps.md +1 -1
  62. package/docs/api/interfaces/FooterProps.md +1 -1
  63. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  64. package/docs/api/interfaces/InputProps.md +1 -1
  65. package/docs/api/interfaces/LabelProps.md +1 -1
  66. package/docs/api/interfaces/LoginFormProps.md +1 -1
  67. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  68. package/docs/api/interfaces/NavigationContextType.md +1 -1
  69. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  70. package/docs/api/interfaces/NavigationItem.md +1 -1
  71. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  72. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  73. package/docs/api/interfaces/Organisation.md +1 -1
  74. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  75. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  76. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  77. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  78. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  79. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  80. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  81. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  82. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  83. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  84. package/docs/api/interfaces/PaletteData.md +1 -1
  85. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  86. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  87. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  88. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  89. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  90. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  91. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  92. package/docs/api/interfaces/RBACConfig.md +1 -1
  93. package/docs/api/interfaces/RBACContextType.md +1 -1
  94. package/docs/api/interfaces/RBACLogger.md +1 -1
  95. package/docs/api/interfaces/RBACProviderProps.md +1 -1
  96. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  97. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  98. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  99. package/docs/api/interfaces/RouteConfig.md +1 -1
  100. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  101. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  102. package/docs/api/interfaces/StorageConfig.md +1 -1
  103. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  104. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  105. package/docs/api/interfaces/StorageListOptions.md +1 -1
  106. package/docs/api/interfaces/StorageListResult.md +1 -1
  107. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  108. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  109. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  110. package/docs/api/interfaces/StyleImport.md +1 -1
  111. package/docs/api/interfaces/SwitchProps.md +1 -1
  112. package/docs/api/interfaces/ToastActionElement.md +1 -1
  113. package/docs/api/interfaces/ToastProps.md +1 -1
  114. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  115. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  116. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  117. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  118. package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
  119. package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
  120. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  121. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  122. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  123. package/docs/api/interfaces/UseResolvedScopeOptions.md +47 -0
  124. package/docs/api/interfaces/UseResolvedScopeReturn.md +47 -0
  125. package/docs/api/interfaces/UserEventAccess.md +1 -1
  126. package/docs/api/interfaces/UserMenuProps.md +1 -1
  127. package/docs/api/interfaces/UserProfile.md +1 -1
  128. package/docs/api/modules.md +57 -11
  129. package/docs/api-reference/providers.md +26 -7
  130. package/docs/best-practices/README.md +20 -0
  131. package/docs/best-practices/accessibility.md +566 -0
  132. package/docs/best-practices/performance-expansion.md +473 -0
  133. package/docs/core-concepts/authentication.md +15 -7
  134. package/docs/documentation-index.md +1 -1
  135. package/docs/documentation-templates.md +539 -0
  136. package/docs/getting-started/quick-start.md +16 -66
  137. package/docs/implementation-guides/component-styling.md +410 -0
  138. package/docs/implementation-guides/data-tables.md +1 -1
  139. package/docs/style-guide.md +39 -0
  140. package/package.json +1 -1
  141. package/src/__tests__/TEST_GUIDE_CURSOR.md +290 -0
  142. package/src/__tests__/helpers/supabaseMock.ts +48 -2
  143. package/src/components/DataTable/__tests__/DataTable.default-state.test.tsx +17 -6
  144. package/src/components/DataTable/__tests__/DataTableCore.test.tsx +73 -9
  145. package/src/components/DataTable/components/DataTableCore.tsx +280 -475
  146. package/src/components/DataTable/components/UnifiedTableBody.tsx +120 -153
  147. package/src/components/DataTable/components/index.ts +1 -2
  148. package/src/components/DataTable/context/__tests__/DataTableContext.test.tsx +208 -275
  149. package/src/components/DataTable/core/index.ts +1 -8
  150. package/src/components/DataTable/hooks/__tests__/useColumnOrderPersistence.test.ts +525 -0
  151. package/src/components/DataTable/hooks/__tests__/useColumnReordering.test.ts +570 -0
  152. package/src/components/DataTable/hooks/__tests__/useHierarchicalState.test.ts +214 -0
  153. package/src/components/DataTable/hooks/__tests__/useTableColumns.test.ts +224 -0
  154. package/src/components/DataTable/hooks/index.ts +6 -0
  155. package/src/components/DataTable/hooks/useColumnReordering.ts +1 -0
  156. package/src/components/DataTable/hooks/useDataTablePermissions.ts +149 -0
  157. package/src/components/DataTable/hooks/useDataTableState.ts +12 -6
  158. package/src/components/DataTable/hooks/useHierarchicalState.ts +26 -8
  159. package/src/components/DataTable/hooks/useTableColumns.ts +153 -0
  160. package/src/components/DataTable/index.ts +1 -9
  161. package/src/components/DataTable/utils/__tests__/COVERAGE_NOTE.md +89 -0
  162. package/src/components/DataTable/utils/__tests__/exportUtils.test.ts +3 -6
  163. package/src/components/DataTable/utils/__tests__/flexibleImport.test.ts +462 -0
  164. package/src/components/DataTable/utils/__tests__/hierarchicalSorting.test.ts +247 -0
  165. package/src/components/DataTable/utils/__tests__/hierarchicalUtils.test.ts +8 -6
  166. package/src/components/DataTable/utils/__tests__/performanceUtils.test.ts +466 -0
  167. package/src/components/DataTable/utils/__tests__/rowUtils.test.ts +265 -0
  168. package/src/components/DataTable/utils/errorHandling.ts +52 -460
  169. package/src/components/DataTable/utils/exportUtils.ts +46 -15
  170. package/src/components/DataTable/utils/hierarchicalSorting.ts +50 -3
  171. package/src/components/DataTable/utils/hierarchicalUtils.ts +167 -34
  172. package/src/components/DataTable/utils/index.ts +5 -0
  173. package/src/components/DataTable/utils/rowUtils.ts +68 -0
  174. package/src/components/EventSelector/EventSelector.test.tsx +672 -0
  175. package/src/components/Label/__tests__/Label.test.tsx +434 -0
  176. package/src/components/PublicLayout/__tests__/PublicPageContextChecker.test.tsx +190 -0
  177. package/src/components/PublicLayout/__tests__/PublicPageDebugger.test.tsx +185 -0
  178. package/src/components/PublicLayout/__tests__/PublicPageProvider.test.tsx +313 -0
  179. package/src/components/Select/Select.test.tsx +143 -120
  180. package/src/components/Select/Select.tsx +47 -212
  181. package/src/components/Select/hooks.ts +36 -1
  182. package/src/components/Select/index.ts +2 -1
  183. package/src/hooks/services/__tests__/useServiceHooks.test.tsx +137 -0
  184. package/src/hooks/useSecureDataAccess.test.ts +32 -29
  185. package/src/providers/__tests__/ProviderLifecycle.test.tsx +341 -0
  186. package/src/rbac/hooks/__tests__/usePermissions.integration.test.ts +437 -0
  187. package/src/rbac/hooks/index.ts +2 -0
  188. package/src/rbac/hooks/useResolvedScope.ts +232 -0
  189. package/src/services/__tests__/InactivityService.lifecycle.test.ts +411 -0
  190. package/src/services/__tests__/OrganisationService.pagination.test.ts +375 -0
  191. package/src/types/__tests__/README.md +114 -0
  192. package/src/types/__tests__/validation.test.ts +731 -0
  193. package/src/utils/__tests__/file-reference.test.ts +383 -0
  194. package/src/utils/__tests__/performanceBenchmark.test.ts +175 -0
  195. package/src/utils/appNameResolver.test.ts +54 -0
  196. package/src/validation/__tests__/csrf.unit.test.ts +63 -0
  197. package/src/validation/__tests__/passwordSchema.unit.test.ts +105 -0
  198. package/dist/chunk-2CHATWBF.js.map +0 -1
  199. package/dist/chunk-33PHABLB.js.map +0 -1
  200. package/dist/chunk-CY3AHGO4.js.map +0 -1
  201. package/dist/chunk-TYHR5X4W.js +0 -33
  202. package/dist/chunk-TYHR5X4W.js.map +0 -1
  203. package/dist/chunk-YNUBMSMV.js.map +0 -1
  204. package/dist/eventContext-BBA42P6G.js +0 -14
  205. package/dist/eventContext-BBA42P6G.js.map +0 -1
  206. package/docs/documentation-style-checklist.md +0 -294
  207. package/src/components/DataTable/components/DataTableBody.tsx +0 -488
  208. package/src/components/DataTable/components/DraggableColumnHeader.tsx +0 -144
  209. package/src/components/DataTable/components/VirtualizedDataTable.tsx +0 -515
  210. package/src/components/DataTable/core/ActionManager.ts +0 -235
  211. package/src/components/DataTable/core/ColumnManager.ts +0 -215
  212. package/src/components/DataTable/core/DataManager.ts +0 -188
  213. package/src/components/DataTable/core/DataTableContext.tsx +0 -181
  214. package/src/components/DataTable/core/LocalDataAdapter.ts +0 -264
  215. package/src/components/DataTable/core/PluginRegistry.ts +0 -229
  216. package/src/components/DataTable/core/StateManager.ts +0 -311
  217. package/src/components/DataTable/core/__tests__/ActionManager.test.ts +0 -634
  218. package/src/components/DataTable/core/__tests__/ColumnManager.test.ts +0 -193
  219. package/src/components/DataTable/core/__tests__/DataManager.test.ts +0 -519
  220. package/src/components/DataTable/core/__tests__/StateManager.test.ts +0 -714
  221. package/src/components/DataTable/core/interfaces.ts +0 -338
  222. package/src/components/DataTable/utils/debugTools.ts +0 -583
  223. package/src/components/Select/Select.bug-test.tsx +0 -69
  224. package/src/components/Select/Select.refactored.tsx +0 -497
  225. /package/dist/{DataTable-HWZQGASI.js.map → DataTable-4GAVPIEG.js.map} +0 -0
  226. /package/dist/{chunk-ZTT2AXMX.js.map → chunk-KK73ZB4E.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.75](../README.md) / [Exports](../modules.md) / UsePublicEventOptions
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UsePublicEventOptions
2
2
 
3
3
  # Interface: UsePublicEventOptions
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.75](../README.md) / [Exports](../modules.md) / UsePublicEventReturn
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UsePublicEventReturn
2
2
 
3
3
  # Interface: UsePublicEventReturn
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.75](../README.md) / [Exports](../modules.md) / UsePublicRouteParamsReturn
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UsePublicRouteParamsReturn
2
2
 
3
3
  # Interface: UsePublicRouteParamsReturn
4
4
 
@@ -0,0 +1,47 @@
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UseResolvedScopeOptions
2
+
3
+ # Interface: UseResolvedScopeOptions
4
+
5
+ ## Table of contents
6
+
7
+ ### Properties
8
+
9
+ - [supabase](UseResolvedScopeOptions.md#supabase)
10
+ - [selectedOrganisationId](UseResolvedScopeOptions.md#selectedorganisationid)
11
+ - [selectedEventId](UseResolvedScopeOptions.md#selectedeventid)
12
+
13
+ ## Properties
14
+
15
+ ### supabase
16
+
17
+ • **supabase**: ``null`` \| `default`\<`Database`, ``"public"``, ``"public"``, `never`, {}\>
18
+
19
+ Supabase client instance
20
+
21
+ #### Defined in
22
+
23
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:21](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L21)
24
+
25
+ ___
26
+
27
+ ### selectedOrganisationId
28
+
29
+ • **selectedOrganisationId**: ``null`` \| `string`
30
+
31
+ Selected organisation ID
32
+
33
+ #### Defined in
34
+
35
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:23](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L23)
36
+
37
+ ___
38
+
39
+ ### selectedEventId
40
+
41
+ • **selectedEventId**: ``null`` \| `string`
42
+
43
+ Selected event ID
44
+
45
+ #### Defined in
46
+
47
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:25](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L25)
@@ -0,0 +1,47 @@
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UseResolvedScopeReturn
2
+
3
+ # Interface: UseResolvedScopeReturn
4
+
5
+ ## Table of contents
6
+
7
+ ### Properties
8
+
9
+ - [resolvedScope](UseResolvedScopeReturn.md#resolvedscope)
10
+ - [isLoading](UseResolvedScopeReturn.md#isloading)
11
+ - [error](UseResolvedScopeReturn.md#error)
12
+
13
+ ## Properties
14
+
15
+ ### resolvedScope
16
+
17
+ • **resolvedScope**: ``null`` \| [`Scope`](../modules.md#scope)
18
+
19
+ Resolved scope, or null if not yet resolved
20
+
21
+ #### Defined in
22
+
23
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:30](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L30)
24
+
25
+ ___
26
+
27
+ ### isLoading
28
+
29
+ • **isLoading**: `boolean`
30
+
31
+ Whether the scope resolution is in progress
32
+
33
+ #### Defined in
34
+
35
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:32](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L32)
36
+
37
+ ___
38
+
39
+ ### error
40
+
41
+ • **error**: ``null`` \| `Error`
42
+
43
+ Error if scope resolution failed
44
+
45
+ #### Defined in
46
+
47
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:34](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L34)
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.75](../README.md) / [Exports](../modules.md) / UserEventAccess
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UserEventAccess
2
2
 
3
3
  # Interface: UserEventAccess
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.75](../README.md) / [Exports](../modules.md) / UserMenuProps
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UserMenuProps
2
2
 
3
3
  # Interface: UserMenuProps
4
4
 
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.5.75](../README.md) / [Exports](../modules.md) / UserProfile
1
+ [@jmruthers/pace-core - v0.5.76](../README.md) / [Exports](../modules.md) / UserProfile
2
2
 
3
3
  # Interface: UserProfile
4
4
 
@@ -1,6 +1,6 @@
1
- [@jmruthers/pace-core - v0.5.75](README.md) / Exports
1
+ [@jmruthers/pace-core - v0.5.76](README.md) / Exports
2
2
 
3
- # @jmruthers/pace-core - v0.5.75
3
+ # @jmruthers/pace-core - v0.5.76
4
4
 
5
5
  **`File`**
6
6
 
@@ -110,6 +110,8 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
110
110
  - [SecureDataProviderProps](interfaces/SecureDataProviderProps.md)
111
111
  - [RBACConfig](interfaces/RBACConfig.md)
112
112
  - [RBACLogger](interfaces/RBACLogger.md)
113
+ - [UseResolvedScopeOptions](interfaces/UseResolvedScopeOptions.md)
114
+ - [UseResolvedScopeReturn](interfaces/UseResolvedScopeReturn.md)
113
115
  - [RBACContextType](interfaces/RBACContextType.md)
114
116
  - [RBACProviderProps](interfaces/RBACProviderProps.md)
115
117
  - [UserEventAccess](interfaces/UserEventAccess.md)
@@ -346,6 +348,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
346
348
  - [useHasAllPermissions](modules.md#usehasallpermissions)
347
349
  - [useCachedPermissions](modules.md#usecachedpermissions)
348
350
  - [useRBAC](modules.md#userbac)
351
+ - [useResolvedScope](modules.md#useresolvedscope)
349
352
  - [isValidPermission](modules.md#isvalidpermission)
350
353
  - [getPermissionsForRole](modules.md#getpermissionsforrole)
351
354
  - [useRBACProvider](modules.md#userbacprovider)
@@ -2996,7 +2999,7 @@ ___
2996
2999
 
2997
3000
  | Name | Type |
2998
3001
  | :------ | :------ |
2999
- | `props` | `SelectProps` & `RefAttributes`\<`HTMLFormElement`\> |
3002
+ | `props` | `SelectProps` & `UseSelectStateProps` & `RefAttributes`\<`HTMLFormElement`\> |
3000
3003
 
3001
3004
  #### Returns
3002
3005
 
@@ -3004,7 +3007,7 @@ ___
3004
3007
 
3005
3008
  #### Defined in
3006
3009
 
3007
- [packages/core/src/components/Select/Select.tsx:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L96)
3010
+ [packages/core/src/components/Select/Select.tsx:87](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L87)
3008
3011
 
3009
3012
  ___
3010
3013
 
@@ -3024,7 +3027,7 @@ ___
3024
3027
 
3025
3028
  #### Defined in
3026
3029
 
3027
- [packages/core/src/components/Select/Select.tsx:275](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L275)
3030
+ [packages/core/src/components/Select/Select.tsx:147](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L147)
3028
3031
 
3029
3032
  ___
3030
3033
 
@@ -3044,7 +3047,7 @@ ___
3044
3047
 
3045
3048
  #### Defined in
3046
3049
 
3047
- [packages/core/src/components/Select/Select.tsx:398](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L398)
3050
+ [packages/core/src/components/Select/Select.tsx:270](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L270)
3048
3051
 
3049
3052
  ___
3050
3053
 
@@ -3064,7 +3067,7 @@ ___
3064
3067
 
3065
3068
  #### Defined in
3066
3069
 
3067
- [packages/core/src/components/Select/Select.tsx:415](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L415)
3070
+ [packages/core/src/components/Select/Select.tsx:287](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L287)
3068
3071
 
3069
3072
  ___
3070
3073
 
@@ -3084,7 +3087,7 @@ ___
3084
3087
 
3085
3088
  #### Defined in
3086
3089
 
3087
- [packages/core/src/components/Select/Select.tsx:545](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L545)
3090
+ [packages/core/src/components/Select/Select.tsx:378](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L378)
3088
3091
 
3089
3092
  ___
3090
3093
 
@@ -3104,7 +3107,7 @@ ___
3104
3107
 
3105
3108
  #### Defined in
3106
3109
 
3107
- [packages/core/src/components/Select/Select.tsx:630](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L630)
3110
+ [packages/core/src/components/Select/Select.tsx:465](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L465)
3108
3111
 
3109
3112
  ___
3110
3113
 
@@ -3124,7 +3127,7 @@ ___
3124
3127
 
3125
3128
  #### Defined in
3126
3129
 
3127
- [packages/core/src/components/Select/Select.tsx:641](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L641)
3130
+ [packages/core/src/components/Select/Select.tsx:476](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L476)
3128
3131
 
3129
3132
  ___
3130
3133
 
@@ -3144,7 +3147,7 @@ ___
3144
3147
 
3145
3148
  #### Defined in
3146
3149
 
3147
- [packages/core/src/components/Select/Select.tsx:652](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L652)
3150
+ [packages/core/src/components/Select/Select.tsx:487](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Select/Select.tsx#L487)
3148
3151
 
3149
3152
  ___
3150
3153
 
@@ -6063,6 +6066,49 @@ ___
6063
6066
 
6064
6067
  ___
6065
6068
 
6069
+ ### useResolvedScope
6070
+
6071
+ ▸ **useResolvedScope**(`options`): [`UseResolvedScopeReturn`](interfaces/UseResolvedScopeReturn.md)
6072
+
6073
+ Resolves RBAC scope from organisation and event context
6074
+
6075
+ This hook handles the complex logic of determining the correct RBAC scope
6076
+ based on available context (organisation, event, app). It ensures consistent
6077
+ scope resolution across the application.
6078
+
6079
+ #### Parameters
6080
+
6081
+ | Name | Type | Description |
6082
+ | :------ | :------ | :------ |
6083
+ | `options` | [`UseResolvedScopeOptions`](interfaces/UseResolvedScopeOptions.md) | Hook options |
6084
+
6085
+ #### Returns
6086
+
6087
+ [`UseResolvedScopeReturn`](interfaces/UseResolvedScopeReturn.md)
6088
+
6089
+ Resolved scope and loading state
6090
+
6091
+ **`Example`**
6092
+
6093
+ ```tsx
6094
+ const { resolvedScope, isLoading } = useResolvedScope({
6095
+ supabase,
6096
+ selectedOrganisationId,
6097
+ selectedEventId
6098
+ });
6099
+
6100
+ if (isLoading) return <Loading />;
6101
+ if (!resolvedScope) return <Error />;
6102
+
6103
+ const permission = useCan(userId, resolvedScope, permission);
6104
+ ```
6105
+
6106
+ #### Defined in
6107
+
6108
+ [packages/core/src/rbac/hooks/useResolvedScope.ts:61](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResolvedScope.ts#L61)
6109
+
6110
+ ___
6111
+
6066
6112
  ### isValidPermission
6067
6113
 
6068
6114
  ▸ **isValidPermission**(`permission`): permission is \`read:$\{string}\` \| \`create:$\{string}\` \| \`update:$\{string}\` \| \`delete:$\{string}\`
@@ -52,10 +52,9 @@ function App() {
52
52
  appName="my-app"
53
53
  enableRBAC={true}
54
54
  requireOrganisationContext={true}
55
- // Required inactivity configuration
56
- idleTimeoutMs={30 * 60 * 1000} // 30 minutes
57
- warnBeforeMs={5 * 60 * 1000} // 5 minutes warning
58
- onIdleLogout={() => navigate('/login')}
55
+ idleTimeoutMs={30 * 60 * 1000} // Required: 30 minutes
56
+ warnBeforeMs={5 * 60 * 1000} // Required: 5 minutes warning
57
+ onIdleLogout={() => navigate('/login')} // Required
59
58
  >
60
59
  <AppContent />
61
60
  </UnifiedAuthProvider>
@@ -111,6 +110,8 @@ function App() {
111
110
  <UnifiedAuthProvider
112
111
  supabaseClient={supabase}
113
112
  appName="my-app"
113
+ idleTimeoutMs={30 * 60 * 1000}
114
+ warnBeforeMs={60 * 1000}
114
115
  onIdleLogout={() => navigate('/login')}
115
116
  >
116
117
  <AppContent />
@@ -228,7 +229,13 @@ import { OrganisationProvider } from '@jmruthers/pace-core';
228
229
 
229
230
  function App() {
230
231
  return (
231
- <UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
232
+ <UnifiedAuthProvider
233
+ supabaseClient={supabase}
234
+ appName="my-app"
235
+ idleTimeoutMs={30 * 60 * 1000}
236
+ warnBeforeMs={60 * 1000}
237
+ onIdleLogout={() => window.location.href = '/login'}
238
+ >
232
239
  <OrganisationProvider
233
240
  requireOrganisationContext={true}
234
241
  autoSelectPrimaryOrganisation={true}
@@ -294,7 +301,13 @@ import { EventProvider } from '@jmruthers/pace-core';
294
301
 
295
302
  function App() {
296
303
  return (
297
- <UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
304
+ <UnifiedAuthProvider
305
+ supabaseClient={supabase}
306
+ appName="my-app"
307
+ idleTimeoutMs={30 * 60 * 1000}
308
+ warnBeforeMs={60 * 1000}
309
+ onIdleLogout={() => window.location.href = '/login'}
310
+ >
298
311
  <OrganisationProvider>
299
312
  <EventProvider
300
313
  defaultEventId="optional-default-event-id"
@@ -371,7 +384,13 @@ function App() {
371
384
  function App() {
372
385
  return (
373
386
  <ErrorBoundary>
374
- <UnifiedAuthProvider supabaseClient={supabase} appName="my-app">
387
+ <UnifiedAuthProvider
388
+ supabaseClient={supabase}
389
+ appName="my-app"
390
+ idleTimeoutMs={30 * 60 * 1000}
391
+ warnBeforeMs={60 * 1000}
392
+ onIdleLogout={() => window.location.href = '/login'}
393
+ >
375
394
  <OrganisationProvider>
376
395
  <EventProvider>
377
396
  <AppContent />
@@ -16,6 +16,26 @@ Comprehensive best practices for building secure, performant, and maintainable a
16
16
  - [Accessibility](#-accessibility)
17
17
  - [Maintenance](#-maintenance)
18
18
 
19
+ ## Core Topics
20
+
21
+ ### Security
22
+ - [**Security Best Practices**](./security.md) - Security guidelines and secure coding patterns
23
+
24
+ ### Accessibility
25
+ - [**Accessibility Guide**](./accessibility.md) - WCAG compliance and inclusive design
26
+
27
+ ### Performance
28
+ - [**Performance Optimization**](./performance.md) - Basic optimization strategies
29
+ - [**Advanced Performance**](./performance-expansion.md) - Advanced optimization techniques
30
+
31
+ ### Testing
32
+ - [**Testing Best Practices**](./testing.md) - Testing strategies and patterns
33
+
34
+ ### Deployment
35
+ - [**Deployment Guide**](./deployment.md) - Production deployment guidelines
36
+
37
+ ---
38
+
19
39
  ## 🔒 Security Best Practices
20
40
 
21
41
  ### Authentication & Authorization