@jmruthers/pace-core 0.5.140 → 0.5.142

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 (180) hide show
  1. package/README.md +2 -2
  2. package/dist/{DataTable-JXFCA2BJ.js → DataTable-SKCX4SCB.js} +6 -6
  3. package/dist/{EventLogo-rFL_kRjk.d.ts → EventLogo-B3V3otev.d.ts} +307 -1
  4. package/dist/{UnifiedAuthProvider-XIQQ7LVU.js → UnifiedAuthProvider-BMJAP6Z7.js} +3 -3
  5. package/dist/{chunk-22WKWKRX.js → chunk-2AKRP5QZ.js} +4 -4
  6. package/dist/{chunk-4C7EXCAR.js → chunk-CRGFNQ2L.js} +4 -4
  7. package/dist/{chunk-TLT2ZR3L.js → chunk-E6ZCVF4T.js} +4 -4
  8. package/dist/{chunk-INQLMHPF.js → chunk-ERGKJX4D.js} +2 -2
  9. package/dist/{chunk-6LAAY47Q.js → chunk-MSHEVJXS.js} +2 -2
  10. package/dist/{chunk-MA6EPSGZ.js → chunk-PKW27QVS.js} +2 -2
  11. package/dist/{chunk-T6JN6LH6.js → chunk-R53TUSFK.js} +3 -3
  12. package/dist/{chunk-6DXZ6V5Q.js → chunk-SFVL7ZFI.js} +5 -5
  13. package/dist/{chunk-5JMOHWDI.js → chunk-TUJSIWX6.js} +497 -329
  14. package/dist/chunk-TUJSIWX6.js.map +1 -0
  15. package/dist/{chunk-BOOI7GK2.js → chunk-VOJBGZYI.js} +119 -3
  16. package/dist/chunk-VOJBGZYI.js.map +1 -0
  17. package/dist/{chunk-YCWDTTUK.js → chunk-WM26XK7I.js} +22 -8
  18. package/dist/chunk-WM26XK7I.js.map +1 -0
  19. package/dist/components.d.ts +3 -1
  20. package/dist/components.js +20 -8
  21. package/dist/components.js.map +1 -1
  22. package/dist/hooks.js +7 -7
  23. package/dist/index.d.ts +4 -2
  24. package/dist/index.js +25 -11
  25. package/dist/index.js.map +1 -1
  26. package/dist/providers.js +2 -2
  27. package/dist/rbac/index.d.ts +94 -1
  28. package/dist/rbac/index.js +9 -7
  29. package/dist/utils.js +1 -1
  30. package/docs/api/README.md +2 -2
  31. package/docs/api/classes/ColumnFactory.md +1 -1
  32. package/docs/api/classes/ErrorBoundary.md +1 -1
  33. package/docs/api/classes/InvalidScopeError.md +1 -1
  34. package/docs/api/classes/MissingUserContextError.md +1 -1
  35. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  36. package/docs/api/classes/PermissionDeniedError.md +1 -1
  37. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  38. package/docs/api/classes/RBACAuditManager.md +1 -1
  39. package/docs/api/classes/RBACCache.md +1 -1
  40. package/docs/api/classes/RBACEngine.md +1 -1
  41. package/docs/api/classes/RBACError.md +1 -1
  42. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  43. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  44. package/docs/api/classes/StorageUtils.md +1 -1
  45. package/docs/api/enums/FileCategory.md +1 -1
  46. package/docs/api/interfaces/AggregateConfig.md +1 -1
  47. package/docs/api/interfaces/BadgeProps.md +1 -1
  48. package/docs/api/interfaces/ButtonProps.md +1 -1
  49. package/docs/api/interfaces/CalendarProps.md +40 -0
  50. package/docs/api/interfaces/CardProps.md +1 -1
  51. package/docs/api/interfaces/ColorPalette.md +1 -1
  52. package/docs/api/interfaces/ColorShade.md +1 -1
  53. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  54. package/docs/api/interfaces/DataRecord.md +1 -1
  55. package/docs/api/interfaces/DataTableAction.md +1 -1
  56. package/docs/api/interfaces/DataTableColumn.md +1 -1
  57. package/docs/api/interfaces/DataTableProps.md +1 -1
  58. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  59. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  60. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  61. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  62. package/docs/api/interfaces/EventLogoProps.md +1 -1
  63. package/docs/api/interfaces/ExportColumn.md +1 -1
  64. package/docs/api/interfaces/ExportOptions.md +1 -1
  65. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  66. package/docs/api/interfaces/FileMetadata.md +1 -1
  67. package/docs/api/interfaces/FileReference.md +1 -1
  68. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  69. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  70. package/docs/api/interfaces/FileUploadProps.md +1 -1
  71. package/docs/api/interfaces/FooterProps.md +1 -1
  72. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  73. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  74. package/docs/api/interfaces/InputProps.md +1 -1
  75. package/docs/api/interfaces/LabelProps.md +1 -1
  76. package/docs/api/interfaces/LoginFormProps.md +1 -1
  77. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  78. package/docs/api/interfaces/NavigationContextType.md +1 -1
  79. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  80. package/docs/api/interfaces/NavigationItem.md +1 -1
  81. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  82. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  83. package/docs/api/interfaces/Organisation.md +1 -1
  84. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  85. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  86. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  87. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  88. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  89. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  90. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  91. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  92. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  93. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  94. package/docs/api/interfaces/PaletteData.md +1 -1
  95. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  96. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  97. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  98. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  99. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  100. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  101. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  102. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  103. package/docs/api/interfaces/RBACConfig.md +1 -1
  104. package/docs/api/interfaces/RBACLogger.md +1 -1
  105. package/docs/api/interfaces/ResourcePermissions.md +155 -0
  106. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  107. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  108. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  109. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  110. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  111. package/docs/api/interfaces/RouteConfig.md +1 -1
  112. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  113. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  114. package/docs/api/interfaces/SessionRestorationLoaderProps.md +1 -1
  115. package/docs/api/interfaces/StorageConfig.md +1 -1
  116. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  117. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  118. package/docs/api/interfaces/StorageListOptions.md +1 -1
  119. package/docs/api/interfaces/StorageListResult.md +1 -1
  120. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  121. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  122. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  123. package/docs/api/interfaces/StyleImport.md +1 -1
  124. package/docs/api/interfaces/SwitchProps.md +1 -1
  125. package/docs/api/interfaces/TabsContentProps.md +9 -0
  126. package/docs/api/interfaces/TabsListProps.md +9 -0
  127. package/docs/api/interfaces/TabsProps.md +9 -0
  128. package/docs/api/interfaces/TabsTriggerProps.md +9 -0
  129. package/docs/api/interfaces/TextareaProps.md +53 -0
  130. package/docs/api/interfaces/ToastActionElement.md +1 -1
  131. package/docs/api/interfaces/ToastProps.md +1 -1
  132. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  133. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  134. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  135. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  136. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  137. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  138. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  139. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  140. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  141. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  142. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  143. package/docs/api/interfaces/UseResourcePermissionsOptions.md +34 -0
  144. package/docs/api/interfaces/UserEventAccess.md +1 -1
  145. package/docs/api/interfaces/UserMenuProps.md +1 -1
  146. package/docs/api/interfaces/UserProfile.md +1 -1
  147. package/docs/api/modules.md +289 -2
  148. package/docs/rbac/README.md +2 -1
  149. package/docs/rbac/event-based-apps.md +872 -0
  150. package/package.json +3 -1
  151. package/src/components/Calendar/Calendar.test.tsx +338 -0
  152. package/src/components/Calendar/Calendar.tsx +192 -0
  153. package/src/components/Calendar/index.ts +10 -0
  154. package/src/components/Tabs/Tabs.test.tsx +439 -0
  155. package/src/components/Tabs/Tabs.tsx +202 -0
  156. package/src/components/Tabs/index.ts +10 -0
  157. package/src/components/Textarea/Textarea.test.tsx +269 -0
  158. package/src/components/Textarea/Textarea.tsx +133 -0
  159. package/src/components/Textarea/index.ts +10 -0
  160. package/src/components/index.ts +11 -0
  161. package/src/index.ts +11 -0
  162. package/src/rbac/hooks/index.ts +2 -0
  163. package/src/rbac/hooks/useResourcePermissions.test.ts +633 -0
  164. package/src/rbac/hooks/useResourcePermissions.ts +235 -0
  165. package/src/services/EventService.ts +29 -8
  166. package/src/services/__tests__/EventService.test.ts +48 -8
  167. package/dist/chunk-5JMOHWDI.js.map +0 -1
  168. package/dist/chunk-BOOI7GK2.js.map +0 -1
  169. package/dist/chunk-YCWDTTUK.js.map +0 -1
  170. package/src/rbac/docs/event-based-apps.md +0 -285
  171. /package/dist/{DataTable-JXFCA2BJ.js.map → DataTable-SKCX4SCB.js.map} +0 -0
  172. /package/dist/{UnifiedAuthProvider-XIQQ7LVU.js.map → UnifiedAuthProvider-BMJAP6Z7.js.map} +0 -0
  173. /package/dist/{chunk-22WKWKRX.js.map → chunk-2AKRP5QZ.js.map} +0 -0
  174. /package/dist/{chunk-4C7EXCAR.js.map → chunk-CRGFNQ2L.js.map} +0 -0
  175. /package/dist/{chunk-TLT2ZR3L.js.map → chunk-E6ZCVF4T.js.map} +0 -0
  176. /package/dist/{chunk-INQLMHPF.js.map → chunk-ERGKJX4D.js.map} +0 -0
  177. /package/dist/{chunk-6LAAY47Q.js.map → chunk-MSHEVJXS.js.map} +0 -0
  178. /package/dist/{chunk-MA6EPSGZ.js.map → chunk-PKW27QVS.js.map} +0 -0
  179. /package/dist/{chunk-T6JN6LH6.js.map → chunk-R53TUSFK.js.map} +0 -0
  180. /package/dist/{chunk-6DXZ6V5Q.js.map → chunk-SFVL7ZFI.js.map} +0 -0
@@ -1,6 +1,6 @@
1
- [@jmruthers/pace-core - v0.5.140](README.md) / Exports
1
+ [@jmruthers/pace-core - v0.5.142](README.md) / Exports
2
2
 
3
- # @jmruthers/pace-core - v0.5.140
3
+ # @jmruthers/pace-core - v0.5.142
4
4
 
5
5
  **`File`**
6
6
 
@@ -54,6 +54,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
54
54
 
55
55
  - [BadgeProps](interfaces/BadgeProps.md)
56
56
  - [ButtonProps](interfaces/ButtonProps.md)
57
+ - [CalendarProps](interfaces/CalendarProps.md)
57
58
  - [CardProps](interfaces/CardProps.md)
58
59
  - [DataTableProps](interfaces/DataTableProps.md)
59
60
  - [DataRecord](interfaces/DataRecord.md)
@@ -85,6 +86,11 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
85
86
  - [PublicPageLayoutProps](interfaces/PublicPageLayoutProps.md)
86
87
  - [SessionRestorationLoaderProps](interfaces/SessionRestorationLoaderProps.md)
87
88
  - [SwitchProps](interfaces/SwitchProps.md)
89
+ - [TabsProps](interfaces/TabsProps.md)
90
+ - [TabsListProps](interfaces/TabsListProps.md)
91
+ - [TabsTriggerProps](interfaces/TabsTriggerProps.md)
92
+ - [TabsContentProps](interfaces/TabsContentProps.md)
93
+ - [TextareaProps](interfaces/TextareaProps.md)
88
94
  - [ToastProps](interfaces/ToastProps.md)
89
95
  - [ToastActionElement](interfaces/ToastActionElement.md)
90
96
  - [UserMenuProps](interfaces/UserMenuProps.md)
@@ -119,6 +125,8 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
119
125
  - [RBACLogger](interfaces/RBACLogger.md)
120
126
  - [UseResolvedScopeOptions](interfaces/UseResolvedScopeOptions.md)
121
127
  - [UseResolvedScopeReturn](interfaces/UseResolvedScopeReturn.md)
128
+ - [UseResourcePermissionsOptions](interfaces/UseResourcePermissionsOptions.md)
129
+ - [ResourcePermissions](interfaces/ResourcePermissions.md)
122
130
  - [EventAppRoleData](interfaces/EventAppRoleData.md)
123
131
  - [RevokeEventAppRoleParams](interfaces/RevokeEventAppRoleParams.md)
124
132
  - [GrantEventAppRoleParams](interfaces/GrantEventAppRoleParams.md)
@@ -192,6 +200,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
192
200
  - [AvatarFallback](modules.md#avatarfallback)
193
201
  - [Badge](modules.md#badge)
194
202
  - [Button](modules.md#button)
203
+ - [Calendar](modules.md#calendar)
195
204
  - [Card](modules.md#card)
196
205
  - [CardHeader](modules.md#cardheader)
197
206
  - [CardTitle](modules.md#cardtitle)
@@ -272,6 +281,11 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
272
281
  - [TableHead](modules.md#tablehead)
273
282
  - [TableCell](modules.md#tablecell)
274
283
  - [TableCaption](modules.md#tablecaption)
284
+ - [Tabs](modules.md#tabs)
285
+ - [TabsList](modules.md#tabslist)
286
+ - [TabsTrigger](modules.md#tabstrigger)
287
+ - [TabsContent](modules.md#tabscontent)
288
+ - [Textarea](modules.md#textarea)
275
289
  - [ToastProvider](modules.md#toastprovider)
276
290
  - [ToastViewport](modules.md#toastviewport)
277
291
  - [Toast](modules.md#toast)
@@ -368,6 +382,7 @@ import { Dialog, NavigationMenu } from '@jmruthers/pace-core/components';
368
382
  - [useCachedPermissions](modules.md#usecachedpermissions)
369
383
  - [useRBAC](modules.md#userbac)
370
384
  - [useResolvedScope](modules.md#useresolvedscope)
385
+ - [useResourcePermissions](modules.md#useresourcepermissions)
371
386
  - [useRoleManagement](modules.md#userolemanagement)
372
387
  - [isValidPermission](modules.md#isvalidpermission)
373
388
  - [getPermissionsForRole](modules.md#getpermissionsforrole)
@@ -1190,6 +1205,51 @@ A flexible, accessible button component with multiple variants and sizes.
1190
1205
 
1191
1206
  ___
1192
1207
 
1208
+ ### Calendar
1209
+
1210
+ ▸ **Calendar**(`props`): `ReactNode`
1211
+
1212
+ Calendar component
1213
+ A flexible, accessible calendar component for date selection.
1214
+ Built on react-day-picker with pace-core styling.
1215
+
1216
+ #### Parameters
1217
+
1218
+ | Name | Type | Description |
1219
+ | :------ | :------ | :------ |
1220
+ | `props` | [`CalendarProps`](interfaces/CalendarProps.md) & `RefAttributes`\<`HTMLDivElement`\> | Calendar configuration and styling |
1221
+
1222
+ #### Returns
1223
+
1224
+ `ReactNode`
1225
+
1226
+ JSX.Element - The rendered calendar element
1227
+
1228
+ **`Example`**
1229
+
1230
+ ```tsx
1231
+ // Single date selection
1232
+ <Calendar
1233
+ mode="single"
1234
+ selected={date}
1235
+ onSelect={setDate}
1236
+ />
1237
+
1238
+ // With disabled dates
1239
+ <Calendar
1240
+ mode="single"
1241
+ selected={date}
1242
+ onSelect={setDate}
1243
+ disabled={(date) => date < new Date()}
1244
+ />
1245
+ ```
1246
+
1247
+ #### Defined in
1248
+
1249
+ [packages/core/src/components/Calendar/Calendar.tsx:104](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Calendar/Calendar.tsx#L104)
1250
+
1251
+ ___
1252
+
1193
1253
  ### Card
1194
1254
 
1195
1255
  ▸ **Card**(`props`): `ReactNode`
@@ -3892,6 +3952,189 @@ ___
3892
3952
 
3893
3953
  ___
3894
3954
 
3955
+ ### Tabs
3956
+
3957
+ ▸ **Tabs**(`props`): `ReactNode`
3958
+
3959
+ Tabs root component
3960
+ Provides the context for tab navigation and state management
3961
+
3962
+ #### Parameters
3963
+
3964
+ | Name | Type |
3965
+ | :------ | :------ |
3966
+ | `props` | [`TabsProps`](interfaces/TabsProps.md) & `RefAttributes`\<`HTMLDivElement`\> |
3967
+
3968
+ #### Returns
3969
+
3970
+ `ReactNode`
3971
+
3972
+ **`Component`**
3973
+
3974
+ **`Example`**
3975
+
3976
+ ```tsx
3977
+ <Tabs defaultValue="tab1">
3978
+ <TabsList>...</TabsList>
3979
+ <TabsContent value="tab1">...</TabsContent>
3980
+ </Tabs>
3981
+ ```
3982
+
3983
+ #### Defined in
3984
+
3985
+ [packages/core/src/components/Tabs/Tabs.tsx:80](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tabs/Tabs.tsx#L80)
3986
+
3987
+ ___
3988
+
3989
+ ### TabsList
3990
+
3991
+ ▸ **TabsList**(`props`): `ReactNode`
3992
+
3993
+ TabsList component
3994
+ Container for tab triggers
3995
+
3996
+ #### Parameters
3997
+
3998
+ | Name | Type |
3999
+ | :------ | :------ |
4000
+ | `props` | [`TabsListProps`](interfaces/TabsListProps.md) & `RefAttributes`\<`HTMLDivElement`\> |
4001
+
4002
+ #### Returns
4003
+
4004
+ `ReactNode`
4005
+
4006
+ **`Component`**
4007
+
4008
+ **`Example`**
4009
+
4010
+ ```tsx
4011
+ <TabsList>
4012
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
4013
+ <TabsTrigger value="tab2">Tab 2</TabsTrigger>
4014
+ </TabsList>
4015
+ ```
4016
+
4017
+ #### Defined in
4018
+
4019
+ [packages/core/src/components/Tabs/Tabs.tsx:108](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tabs/Tabs.tsx#L108)
4020
+
4021
+ ___
4022
+
4023
+ ### TabsTrigger
4024
+
4025
+ ▸ **TabsTrigger**(`props`): `ReactNode`
4026
+
4027
+ TabsTrigger component
4028
+ Individual tab button that activates a tab panel
4029
+
4030
+ #### Parameters
4031
+
4032
+ | Name | Type |
4033
+ | :------ | :------ |
4034
+ | `props` | [`TabsTriggerProps`](interfaces/TabsTriggerProps.md) & `RefAttributes`\<`HTMLButtonElement`\> |
4035
+
4036
+ #### Returns
4037
+
4038
+ `ReactNode`
4039
+
4040
+ **`Component`**
4041
+
4042
+ **`Example`**
4043
+
4044
+ ```tsx
4045
+ <TabsTrigger value="tab1">Tab 1</TabsTrigger>
4046
+
4047
+ // With icon
4048
+ <TabsTrigger value="transport">
4049
+ <Plane size={16} /> Transport
4050
+ </TabsTrigger>
4051
+ ```
4052
+
4053
+ #### Defined in
4054
+
4055
+ [packages/core/src/components/Tabs/Tabs.tsx:145](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tabs/Tabs.tsx#L145)
4056
+
4057
+ ___
4058
+
4059
+ ### TabsContent
4060
+
4061
+ ▸ **TabsContent**(`props`): `ReactNode`
4062
+
4063
+ TabsContent component
4064
+ Container for tab panel content
4065
+
4066
+ #### Parameters
4067
+
4068
+ | Name | Type |
4069
+ | :------ | :------ |
4070
+ | `props` | [`TabsContentProps`](interfaces/TabsContentProps.md) & `RefAttributes`\<`HTMLDivElement`\> |
4071
+
4072
+ #### Returns
4073
+
4074
+ `ReactNode`
4075
+
4076
+ **`Component`**
4077
+
4078
+ **`Example`**
4079
+
4080
+ ```tsx
4081
+ <TabsContent value="tab1">
4082
+ <div>Content for tab 1</div>
4083
+ </TabsContent>
4084
+ ```
4085
+
4086
+ #### Defined in
4087
+
4088
+ [packages/core/src/components/Tabs/Tabs.tsx:181](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Tabs/Tabs.tsx#L181)
4089
+
4090
+ ___
4091
+
4092
+ ### Textarea
4093
+
4094
+ ▸ **Textarea**(`props`): `ReactNode`
4095
+
4096
+ Textarea component
4097
+ A flexible, accessible textarea component with multiple variants and sizes.
4098
+ Matches the Input component API and styling for consistency.
4099
+
4100
+ #### Parameters
4101
+
4102
+ | Name | Type | Description |
4103
+ | :------ | :------ | :------ |
4104
+ | `props` | [`TextareaProps`](interfaces/TextareaProps.md) & `RefAttributes`\<`HTMLTextAreaElement`\> | Textarea configuration and styling |
4105
+
4106
+ #### Returns
4107
+
4108
+ `ReactNode`
4109
+
4110
+ JSX.Element - The rendered textarea element
4111
+
4112
+ **`Example`**
4113
+
4114
+ ```tsx
4115
+ // Basic textarea
4116
+ <Textarea placeholder="Enter your message..." />
4117
+
4118
+ // Textarea with error state
4119
+ <Textarea
4120
+ placeholder="Comments"
4121
+ error={true}
4122
+ />
4123
+
4124
+ // Large textarea with destructive variant
4125
+ <Textarea
4126
+ variant="destructive"
4127
+ size="lg"
4128
+ placeholder="Error textarea"
4129
+ />
4130
+ ```
4131
+
4132
+ #### Defined in
4133
+
4134
+ [packages/core/src/components/Textarea/Textarea.tsx:96](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/components/Textarea/Textarea.tsx#L96)
4135
+
4136
+ ___
4137
+
3895
4138
  ### ToastProvider
3896
4139
 
3897
4140
  ▸ **ToastProvider**(`props`, `deprecatedLegacyContext?`): `ReactNode`
@@ -6757,6 +7000,50 @@ const permission = useCan(userId, resolvedScope, permission);
6757
7000
 
6758
7001
  ___
6759
7002
 
7003
+ ### useResourcePermissions
7004
+
7005
+ ▸ **useResourcePermissions**(`resource`, `options?`): [`ResourcePermissions`](interfaces/ResourcePermissions.md)
7006
+
7007
+ Hook to check permissions for a specific resource
7008
+
7009
+ This hook encapsulates the common pattern of checking create/update/delete/read
7010
+ permissions for a resource type. It handles scope resolution, user context,
7011
+ and provides a simple API for permission checking.
7012
+
7013
+ #### Parameters
7014
+
7015
+ | Name | Type | Description |
7016
+ | :------ | :------ | :------ |
7017
+ | `resource` | `string` | The resource name (e.g., 'contacts', 'risks', 'journal') |
7018
+ | `options` | [`UseResourcePermissionsOptions`](interfaces/UseResourcePermissionsOptions.md) | Optional configuration |
7019
+
7020
+ #### Returns
7021
+
7022
+ [`ResourcePermissions`](interfaces/ResourcePermissions.md)
7023
+
7024
+ Object with permission check functions and scope
7025
+
7026
+ **`Example`**
7027
+
7028
+ ```tsx
7029
+ function useContacts() {
7030
+ const { canCreate, canUpdate, canDelete } = useResourcePermissions('contacts');
7031
+
7032
+ const addContact = async (data: ContactData) => {
7033
+ if (!canCreate('contacts')) {
7034
+ throw new Error("Permission denied");
7035
+ }
7036
+ // ... perform mutation
7037
+ };
7038
+ }
7039
+ ```
7040
+
7041
+ #### Defined in
7042
+
7043
+ [packages/core/src/rbac/hooks/useResourcePermissions.ts:102](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/hooks/useResourcePermissions.ts#L102)
7044
+
7045
+ ___
7046
+
6760
7047
  ### useRoleManagement
6761
7048
 
6762
7049
  ▸ **useRoleManagement**(): `Object`
@@ -62,7 +62,8 @@ function MyComponent() {
62
62
 
63
63
  ## 📖 Core Concepts
64
64
 
65
- - **[Quick Start](./quick-start.md)** - Get up and running in 10 minutes (foolproof guide)
65
+ - **[Quick Start](./quick-start.md)** - Get up and running in 10 minutes (foolproof guide for organisation-based apps)
66
+ - **[Event-Based Apps](./event-based-apps.md)** - Get up and running in 10 minutes (foolproof guide for event-based apps)
66
67
  - **[API Reference](./api-reference.md)** - Complete API documentation
67
68
  - **[Troubleshooting](./troubleshooting.md)** - Common issues and solutions
68
69
  - **[Examples](./examples.md)** - Practical usage examples