@jmruthers/pace-core 0.5.91 → 0.5.93
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.
- package/dist/{DataTable-VIP44OB6.js → DataTable-HC5S4RKB.js} +6 -6
- package/dist/{PublicLoadingSpinner-Dx5c2g3S.d.ts → PublicLoadingSpinner-n74JgA9h.d.ts} +50 -1
- package/dist/{UnifiedAuthProvider-6JRTOFPS.js → UnifiedAuthProvider-ZM7VUC45.js} +3 -3
- package/dist/{chunk-G2SCPUKC.js → chunk-6WFM22A4.js} +2 -2
- package/dist/{chunk-AIV3VYBQ.js → chunk-AAM57AEU.js} +4 -2
- package/dist/chunk-AAM57AEU.js.map +1 -0
- package/dist/{chunk-7XBW2P7B.js → chunk-AYC2P377.js} +2 -2
- package/dist/{chunk-GD3ENUKD.js → chunk-AZ2QJYKU.js} +3 -3
- package/dist/{chunk-G2YT64FA.js → chunk-GP3HU6WS.js} +3 -3
- package/dist/{chunk-7NIERLC6.js → chunk-HW5BGOWB.js} +4 -4
- package/dist/{chunk-JDPFQV3V.js → chunk-M52CQP5W.js} +4 -4
- package/dist/{chunk-JQWSAYZC.js → chunk-OXFOS62D.js} +2 -2
- package/dist/{chunk-VJJNZKHO.js → chunk-SVMPR5IV.js} +365 -293
- package/dist/chunk-SVMPR5IV.js.map +1 -0
- package/dist/{chunk-4DYK5KCK.js → chunk-TZXYSZT3.js} +4 -4
- package/dist/{chunk-XZHZYSAK.js → chunk-XIBSVWJW.js} +5 -5
- package/dist/components.d.ts +1 -1
- package/dist/components.js +10 -8
- package/dist/components.js.map +1 -1
- package/dist/hooks.js +7 -7
- package/dist/index.d.ts +1 -1
- package/dist/index.js +13 -11
- package/dist/index.js.map +1 -1
- package/dist/providers.js +2 -2
- package/dist/rbac/index.js +7 -7
- package/dist/utils.js +1 -1
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +1 -1
- package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
- package/docs/api/classes/PermissionDeniedError.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +1 -1
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +1 -1
- package/docs/api/classes/RBACError.md +1 -1
- package/docs/api/classes/RBACNotInitializedError.md +1 -1
- package/docs/api/classes/SecureSupabaseClient.md +1 -1
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +1 -1
- package/docs/api/interfaces/ButtonProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +1 -1
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +1 -1
- package/docs/api/interfaces/DataTableColumn.md +1 -1
- package/docs/api/interfaces/DataTableProps.md +1 -1
- package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
- package/docs/api/interfaces/EmptyStateConfig.md +1 -1
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/EventLogoProps.md +1 -1
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +1 -1
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProtectedRouteProps.md +97 -0
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
- package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
- package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
- package/docs/api/interfaces/UseEventLogoOptions.md +1 -1
- package/docs/api/interfaces/UseEventLogoReturn.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +41 -5
- package/docs/api-reference/components.md +146 -1
- package/docs/best-practices/common-patterns.md +26 -8
- package/docs/getting-started/examples/README.md +10 -26
- package/docs/getting-started/quick-reference.md +23 -0
- package/docs/implementation-guides/authentication.md +39 -16
- package/package.json +1 -1
- package/src/components/EventSelector/EventSelector.tsx +19 -1
- package/src/components/ProtectedRoute/ProtectedRoute.tsx +224 -0
- package/src/components/ProtectedRoute/README.md +164 -0
- package/src/components/ProtectedRoute/index.ts +3 -0
- package/src/components/PublicLayout/EventLogo.tsx +8 -2
- package/src/components/PublicLayout/PublicPageHeader.tsx +7 -12
- package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +6 -3
- package/src/components/index.ts +4 -1
- package/src/index.ts +3 -0
- package/src/providers/AuthProvider.simplified.tsx +108 -14
- package/src/services/EventService.ts +6 -1
- package/dist/chunk-AIV3VYBQ.js.map +0 -1
- package/dist/chunk-VJJNZKHO.js.map +0 -1
- /package/dist/{DataTable-VIP44OB6.js.map → DataTable-HC5S4RKB.js.map} +0 -0
- /package/dist/{UnifiedAuthProvider-6JRTOFPS.js.map → UnifiedAuthProvider-ZM7VUC45.js.map} +0 -0
- /package/dist/{chunk-G2SCPUKC.js.map → chunk-6WFM22A4.js.map} +0 -0
- /package/dist/{chunk-7XBW2P7B.js.map → chunk-AYC2P377.js.map} +0 -0
- /package/dist/{chunk-GD3ENUKD.js.map → chunk-AZ2QJYKU.js.map} +0 -0
- /package/dist/{chunk-G2YT64FA.js.map → chunk-GP3HU6WS.js.map} +0 -0
- /package/dist/{chunk-7NIERLC6.js.map → chunk-HW5BGOWB.js.map} +0 -0
- /package/dist/{chunk-JDPFQV3V.js.map → chunk-M52CQP5W.js.map} +0 -0
- /package/dist/{chunk-JQWSAYZC.js.map → chunk-OXFOS62D.js.map} +0 -0
- /package/dist/{chunk-4DYK5KCK.js.map → chunk-TZXYSZT3.js.map} +0 -0
- /package/dist/{chunk-XZHZYSAK.js.map → chunk-XIBSVWJW.js.map} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
[@jmruthers/pace-core - v0.5.93](../README.md) / [Exports](../modules.md) / ProtectedRouteProps
|
|
2
|
+
|
|
3
|
+
# Interface: ProtectedRouteProps
|
|
4
|
+
|
|
5
|
+
## Table of contents
|
|
6
|
+
|
|
7
|
+
### Properties
|
|
8
|
+
|
|
9
|
+
- [requireEvent](ProtectedRouteProps.md#requireevent)
|
|
10
|
+
- [allowSuperAdminBypass](ProtectedRouteProps.md#allowsuperadminbypass)
|
|
11
|
+
- [noEventsFallback](ProtectedRouteProps.md#noeventsfallback)
|
|
12
|
+
- [loadingFallback](ProtectedRouteProps.md#loadingfallback)
|
|
13
|
+
- [loginPath](ProtectedRouteProps.md#loginpath)
|
|
14
|
+
|
|
15
|
+
## Properties
|
|
16
|
+
|
|
17
|
+
### requireEvent
|
|
18
|
+
|
|
19
|
+
• `Optional` **requireEvent**: `boolean`
|
|
20
|
+
|
|
21
|
+
Whether an event is required for routes inside this component.
|
|
22
|
+
When true, routes will only render if an event is selected or can be selected.
|
|
23
|
+
When false, routes render regardless of event state.
|
|
24
|
+
|
|
25
|
+
**`Default`**
|
|
26
|
+
|
|
27
|
+
```ts
|
|
28
|
+
true
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
#### Defined in
|
|
32
|
+
|
|
33
|
+
[packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx:87](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx#L87)
|
|
34
|
+
|
|
35
|
+
___
|
|
36
|
+
|
|
37
|
+
### allowSuperAdminBypass
|
|
38
|
+
|
|
39
|
+
• `Optional` **allowSuperAdminBypass**: `boolean`
|
|
40
|
+
|
|
41
|
+
Whether super admins can bypass event requirement.
|
|
42
|
+
Note: This feature requires additional RBAC setup. For simple bypass, set requireEvent={false} instead.
|
|
43
|
+
|
|
44
|
+
**`Default`**
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
false
|
|
48
|
+
@deprecated Use requireEvent={false} for routes that don't need events
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### Defined in
|
|
52
|
+
|
|
53
|
+
[packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx:95](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx#L95)
|
|
54
|
+
|
|
55
|
+
___
|
|
56
|
+
|
|
57
|
+
### noEventsFallback
|
|
58
|
+
|
|
59
|
+
• `Optional` **noEventsFallback**: `ReactNode`
|
|
60
|
+
|
|
61
|
+
Custom component to render when no events are available.
|
|
62
|
+
If not provided, a default message is shown.
|
|
63
|
+
|
|
64
|
+
#### Defined in
|
|
65
|
+
|
|
66
|
+
[packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx:101](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx#L101)
|
|
67
|
+
|
|
68
|
+
___
|
|
69
|
+
|
|
70
|
+
### loadingFallback
|
|
71
|
+
|
|
72
|
+
• `Optional` **loadingFallback**: `ReactNode`
|
|
73
|
+
|
|
74
|
+
Custom component to render while events are loading.
|
|
75
|
+
If not provided, a default loading spinner is shown.
|
|
76
|
+
|
|
77
|
+
#### Defined in
|
|
78
|
+
|
|
79
|
+
[packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx:107](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx#L107)
|
|
80
|
+
|
|
81
|
+
___
|
|
82
|
+
|
|
83
|
+
### loginPath
|
|
84
|
+
|
|
85
|
+
• `Optional` **loginPath**: `string`
|
|
86
|
+
|
|
87
|
+
Login redirect path when user is not authenticated.
|
|
88
|
+
|
|
89
|
+
**`Default`**
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
'/login'
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
#### Defined in
|
|
96
|
+
|
|
97
|
+
[packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx:113](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx#L113)
|
package/docs/api/modules.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
[@jmruthers/pace-core - v0.5.
|
|
1
|
+
[@jmruthers/pace-core - v0.5.93](README.md) / Exports
|
|
2
2
|
|
|
3
|
-
# @jmruthers/pace-core - v0.5.
|
|
3
|
+
# @jmruthers/pace-core - v0.5.93
|
|
4
4
|
|
|
5
5
|
**`File`**
|
|
6
6
|
|
|
@@ -72,6 +72,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
|
|
|
72
72
|
- [NavigationMenuProps](interfaces/NavigationMenuProps.md)
|
|
73
73
|
- [PaceAppLayoutProps](interfaces/PaceAppLayoutProps.md)
|
|
74
74
|
- [PaceLoginPageProps](interfaces/PaceLoginPageProps.md)
|
|
75
|
+
- [ProtectedRouteProps](interfaces/ProtectedRouteProps.md)
|
|
75
76
|
- [EventLogoProps](interfaces/EventLogoProps.md)
|
|
76
77
|
- [PublicErrorBoundaryProps](interfaces/PublicErrorBoundaryProps.md)
|
|
77
78
|
- [PublicErrorBoundaryState](interfaces/PublicErrorBoundaryState.md)
|
|
@@ -220,6 +221,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
|
|
|
220
221
|
- [PasswordChangeForm](modules.md#passwordchangeform)
|
|
221
222
|
- [PasswordResetForm](modules.md#passwordresetform)
|
|
222
223
|
- [Progress](modules.md#progress)
|
|
224
|
+
- [ProtectedRoute](modules.md#protectedroute)
|
|
223
225
|
- [EventLogo](modules.md#eventlogo)
|
|
224
226
|
- [EventLogoCompact](modules.md#eventlogocompact)
|
|
225
227
|
- [EventLogoLarge](modules.md#eventlogolarge)
|
|
@@ -2548,6 +2550,40 @@ JSX.Element - The rendered progress bar
|
|
|
2548
2550
|
|
|
2549
2551
|
___
|
|
2550
2552
|
|
|
2553
|
+
### ProtectedRoute
|
|
2554
|
+
|
|
2555
|
+
▸ **ProtectedRoute**(`props`): `string` \| `number` \| ``true`` \| `Iterable`\<`ReactNode`, `any`, `any`\> \| `Element`
|
|
2556
|
+
|
|
2557
|
+
ProtectedRoute component that handles authentication and optional event selection.
|
|
2558
|
+
|
|
2559
|
+
This component solves the chicken-and-egg problem where apps check for `selectedEvent`
|
|
2560
|
+
before rendering, which blocks the event selector (typically in the header) from being visible.
|
|
2561
|
+
|
|
2562
|
+
Strategy:
|
|
2563
|
+
1. Check authentication first - redirect to login if not authenticated
|
|
2564
|
+
2. Allow rendering during event loading - prevents blocking UI
|
|
2565
|
+
3. If events exist but none selected - allow rendering so selector is visible
|
|
2566
|
+
4. If no events available - show error message
|
|
2567
|
+
5. Individual pages should handle "no selected event" state gracefully
|
|
2568
|
+
|
|
2569
|
+
#### Parameters
|
|
2570
|
+
|
|
2571
|
+
| Name | Type | Description |
|
|
2572
|
+
| :------ | :------ | :------ |
|
|
2573
|
+
| `props` | [`ProtectedRouteProps`](interfaces/ProtectedRouteProps.md) | Configuration for route protection |
|
|
2574
|
+
|
|
2575
|
+
#### Returns
|
|
2576
|
+
|
|
2577
|
+
`string` \| `number` \| ``true`` \| `Iterable`\<`ReactNode`, `any`, `any`\> \| `Element`
|
|
2578
|
+
|
|
2579
|
+
React element with route protection logic
|
|
2580
|
+
|
|
2581
|
+
#### Defined in
|
|
2582
|
+
|
|
2583
|
+
[packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx:132](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/ProtectedRoute/ProtectedRoute.tsx#L132)
|
|
2584
|
+
|
|
2585
|
+
___
|
|
2586
|
+
|
|
2551
2587
|
### EventLogo
|
|
2552
2588
|
|
|
2553
2589
|
▸ **EventLogo**(`props`): `Element`
|
|
@@ -2572,7 +2608,7 @@ React element with event logo or fallback
|
|
|
2572
2608
|
|
|
2573
2609
|
#### Defined in
|
|
2574
2610
|
|
|
2575
|
-
[packages/core/src/components/PublicLayout/EventLogo.tsx:
|
|
2611
|
+
[packages/core/src/components/PublicLayout/EventLogo.tsx:399](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/EventLogo.tsx#L399)
|
|
2576
2612
|
|
|
2577
2613
|
___
|
|
2578
2614
|
|
|
@@ -2594,7 +2630,7 @@ Compact event logo for small spaces
|
|
|
2594
2630
|
|
|
2595
2631
|
#### Defined in
|
|
2596
2632
|
|
|
2597
|
-
[packages/core/src/components/PublicLayout/EventLogo.tsx:
|
|
2633
|
+
[packages/core/src/components/PublicLayout/EventLogo.tsx:453](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/EventLogo.tsx#L453)
|
|
2598
2634
|
|
|
2599
2635
|
___
|
|
2600
2636
|
|
|
@@ -2616,7 +2652,7 @@ Large event logo for prominent display
|
|
|
2616
2652
|
|
|
2617
2653
|
#### Defined in
|
|
2618
2654
|
|
|
2619
|
-
[packages/core/src/components/PublicLayout/EventLogo.tsx:
|
|
2655
|
+
[packages/core/src/components/PublicLayout/EventLogo.tsx:466](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/PublicLayout/EventLogo.tsx#L466)
|
|
2620
2656
|
|
|
2621
2657
|
___
|
|
2622
2658
|
|