@jmruthers/pace-core 0.4.1 → 0.5.3

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 (660) hide show
  1. package/CHANGELOG.md +26 -1
  2. package/README.md +231 -229
  3. package/dist/{DataTable-2LB6HI6V.js → DataTable-ZQDRE46Q.js} +15 -17
  4. package/dist/{DataTable-BDBqkU-i.d.ts → DataTable-ltTFXHS3.d.ts} +25 -51
  5. package/dist/{Table-CIm9IWqk.d.ts → PublicLoadingSpinner-Bq_-BeK-.d.ts} +635 -122
  6. package/dist/{UnifiedAuthProvider-V7y63NjT.d.ts → RBACProvider-BO4ilsQB.d.ts} +11 -36
  7. package/dist/UnifiedAuthProvider-DGQsy-vY.d.ts +103 -0
  8. package/dist/{api-AIJ3IJX3.js → api-H5A3H4IR.js} +6 -4
  9. package/dist/{appConfig-fB1pP_v3.d.ts → appConfig-BVGyuvI7.d.ts} +1 -1
  10. package/dist/appNameResolver-7GHF5ED2.js +22 -0
  11. package/dist/{audit-PD5L5ZSC.js → audit-BUW3LMJB.js} +3 -3
  12. package/dist/chunk-5H3C2SWM.js +3293 -0
  13. package/dist/chunk-5H3C2SWM.js.map +1 -0
  14. package/dist/chunk-5SIXIV7R.js +1925 -0
  15. package/dist/chunk-5SIXIV7R.js.map +1 -0
  16. package/dist/{chunk-YNU5QJ4S.js → chunk-7BNPOCLL.js} +22 -5
  17. package/dist/chunk-7BNPOCLL.js.map +1 -0
  18. package/dist/{chunk-4ZTIEYU2.js → chunk-CDQ3PX7L.js} +1 -1
  19. package/dist/chunk-CDQ3PX7L.js.map +1 -0
  20. package/dist/chunk-GNTALZV3.js +17 -0
  21. package/dist/chunk-GNTALZV3.js.map +1 -0
  22. package/dist/chunk-GWSBHC4J.js +1349 -0
  23. package/dist/chunk-GWSBHC4J.js.map +1 -0
  24. package/dist/{chunk-JUUNUW3O.js → chunk-HD7PYDUV.js} +14 -5
  25. package/dist/chunk-HD7PYDUV.js.map +1 -0
  26. package/dist/{chunk-H4PZ4B3Y.js → chunk-HXX35Q2M.js} +113 -27
  27. package/dist/chunk-HXX35Q2M.js.map +1 -0
  28. package/dist/chunk-K6B7BLSE.js +388 -0
  29. package/dist/chunk-K6B7BLSE.js.map +1 -0
  30. package/dist/chunk-M4RW7PIP.js +5441 -0
  31. package/dist/chunk-M4RW7PIP.js.map +1 -0
  32. package/dist/chunk-MZBUOP4P.js +119 -0
  33. package/dist/chunk-MZBUOP4P.js.map +1 -0
  34. package/dist/chunk-N2EUGZRW.js +98 -0
  35. package/dist/chunk-N2EUGZRW.js.map +1 -0
  36. package/dist/chunk-NQ4TOOO6.js +20 -0
  37. package/dist/chunk-NQ4TOOO6.js.map +1 -0
  38. package/dist/{chunk-DC5AMYBS.js → chunk-PLDDJCW6.js} +15 -5
  39. package/dist/chunk-PLDDJCW6.js.map +1 -0
  40. package/dist/{chunk-IOX76PSM.js → chunk-PVMYVQSM.js} +270 -28
  41. package/dist/chunk-PVMYVQSM.js.map +1 -0
  42. package/dist/{chunk-4MCJAK7J.js → chunk-QKHFMQ5R.js} +2155 -4853
  43. package/dist/chunk-QKHFMQ5R.js.map +1 -0
  44. package/dist/chunk-QVYBYGT2.js +428 -0
  45. package/dist/chunk-QVYBYGT2.js.map +1 -0
  46. package/dist/{chunk-WHLSWC6W.js → chunk-SS3E6QLB.js} +16 -61
  47. package/dist/chunk-SS3E6QLB.js.map +1 -0
  48. package/dist/chunk-WJARTBCT.js +128 -0
  49. package/dist/chunk-WJARTBCT.js.map +1 -0
  50. package/dist/chunk-YDJW5XTN.js +84 -0
  51. package/dist/chunk-YDJW5XTN.js.map +1 -0
  52. package/dist/components.d.ts +907 -10
  53. package/dist/components.js +3237 -204
  54. package/dist/components.js.map +1 -1
  55. package/dist/{database-CAMsquLm.d.ts → database-C3Szpi5J.d.ts} +28 -11
  56. package/dist/hooks.d.ts +7 -6
  57. package/dist/hooks.js +33 -11
  58. package/dist/hooks.js.map +1 -1
  59. package/dist/index.d.ts +247 -111
  60. package/dist/index.js +330 -185
  61. package/dist/index.js.map +1 -1
  62. package/dist/{organisation-DLNNQhPB.d.ts → organisation-CO3Sh3_D.d.ts} +1 -1
  63. package/dist/providers.d.ts +5 -4
  64. package/dist/providers.js +14 -5
  65. package/dist/rbac/index.d.ts +964 -839
  66. package/dist/rbac/index.js +58 -1970
  67. package/dist/rbac/index.js.map +1 -1
  68. package/dist/styles/core.css +364 -0
  69. package/dist/styles/fonts/georama-italic.woff2 +0 -0
  70. package/dist/styles/fonts/georama.woff2 +0 -0
  71. package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
  72. package/dist/styles/fonts/open-sans.woff2 +0 -0
  73. package/dist/styles/fonts/reddit-mono.woff2 +0 -0
  74. package/dist/styles/index.d.ts +36 -0
  75. package/dist/styles/index.js +24 -0
  76. package/dist/styles/index.js.map +1 -0
  77. package/dist/theming/runtime.d.ts +73 -0
  78. package/dist/theming/runtime.js +16 -0
  79. package/dist/theming/runtime.js.map +1 -0
  80. package/dist/{types-Bavn44NW.d.ts → types-BRDU7N6w.d.ts} +79 -33
  81. package/dist/types.d.ts +5 -5
  82. package/dist/types.js +7 -2
  83. package/dist/types.js.map +1 -1
  84. package/dist/{unified-BtRpPbmp.d.ts → unified-CMPjE_fv.d.ts} +0 -1
  85. package/dist/usePublicRouteParams-B2OcAsur.d.ts +477 -0
  86. package/dist/utils.d.ts +83 -60
  87. package/dist/utils.js +293 -55651
  88. package/dist/utils.js.map +1 -1
  89. package/dist/validation.d.ts +1 -1
  90. package/dist/validation.js +1 -1
  91. package/docs/INDEX.md +192 -0
  92. package/docs/README.md +46 -32
  93. package/docs/api/README.md +231 -229
  94. package/docs/api/classes/ErrorBoundary.md +1 -1
  95. package/docs/api/classes/InvalidScopeError.md +73 -0
  96. package/docs/api/classes/MissingUserContextError.md +66 -0
  97. package/docs/api/classes/OrganisationContextRequiredError.md +66 -0
  98. package/docs/api/classes/PermissionDeniedError.md +73 -0
  99. package/docs/api/classes/PublicErrorBoundary.md +132 -0
  100. package/docs/api/classes/RBACAuditManager.md +270 -0
  101. package/docs/api/classes/RBACCache.md +284 -0
  102. package/docs/api/classes/RBACEngine.md +141 -0
  103. package/docs/api/classes/RBACError.md +76 -0
  104. package/docs/api/classes/RBACNotInitializedError.md +66 -0
  105. package/docs/api/classes/SecureSupabaseClient.md +135 -0
  106. package/docs/api/interfaces/AggregateConfig.md +4 -4
  107. package/docs/api/interfaces/ButtonProps.md +2 -2
  108. package/docs/api/interfaces/CardProps.md +2 -2
  109. package/docs/api/interfaces/ColorPalette.md +1 -1
  110. package/docs/api/interfaces/ColorShade.md +1 -1
  111. package/docs/api/interfaces/DataAccessRecord.md +96 -0
  112. package/docs/api/interfaces/DataTableAction.md +98 -7
  113. package/docs/api/interfaces/DataTableColumn.md +131 -12
  114. package/docs/api/interfaces/DataTableProps.md +77 -274
  115. package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
  116. package/docs/api/interfaces/EmptyStateConfig.md +5 -5
  117. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +235 -0
  118. package/docs/api/interfaces/EventContextType.md +7 -7
  119. package/docs/api/interfaces/EventLogoProps.md +152 -0
  120. package/docs/api/interfaces/EventProviderProps.md +2 -2
  121. package/docs/api/interfaces/FileSizeLimits.md +7 -0
  122. package/docs/api/interfaces/FileUploadProps.md +154 -0
  123. package/docs/api/interfaces/FooterProps.md +1 -1
  124. package/docs/api/interfaces/InactivityWarningModalProps.md +115 -0
  125. package/docs/api/interfaces/InputProps.md +2 -2
  126. package/docs/api/interfaces/LabelProps.md +1 -1
  127. package/docs/api/interfaces/LoginFormProps.md +1 -1
  128. package/docs/api/interfaces/NavigationAccessRecord.md +107 -0
  129. package/docs/api/interfaces/NavigationContextType.md +164 -0
  130. package/docs/api/interfaces/NavigationGuardProps.md +139 -0
  131. package/docs/api/interfaces/NavigationItem.md +1 -1
  132. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  133. package/docs/api/interfaces/NavigationProviderProps.md +117 -0
  134. package/docs/api/interfaces/Organisation.md +1 -1
  135. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  136. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  137. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  138. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  139. package/docs/api/interfaces/PaceAppLayoutProps.md +26 -26
  140. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  141. package/docs/api/interfaces/PageAccessRecord.md +85 -0
  142. package/docs/api/interfaces/PagePermissionContextType.md +140 -0
  143. package/docs/api/interfaces/PagePermissionGuardProps.md +153 -0
  144. package/docs/api/interfaces/PagePermissionProviderProps.md +119 -0
  145. package/docs/api/interfaces/PaletteData.md +1 -1
  146. package/docs/api/interfaces/PermissionEnforcerProps.md +153 -0
  147. package/docs/api/interfaces/PublicErrorBoundaryProps.md +94 -0
  148. package/docs/api/interfaces/PublicErrorBoundaryState.md +68 -0
  149. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +86 -0
  150. package/docs/api/interfaces/PublicPageFooterProps.md +112 -0
  151. package/docs/api/interfaces/PublicPageHeaderProps.md +138 -0
  152. package/docs/api/interfaces/PublicPageLayoutProps.md +138 -0
  153. package/docs/api/interfaces/RBACConfig.md +99 -0
  154. package/docs/api/interfaces/RBACContextType.md +474 -0
  155. package/docs/api/interfaces/RBACLogger.md +112 -0
  156. package/docs/api/interfaces/RBACProviderProps.md +107 -0
  157. package/docs/api/interfaces/RoleBasedRouterContextType.md +151 -0
  158. package/docs/api/interfaces/RoleBasedRouterProps.md +156 -0
  159. package/docs/api/interfaces/RouteAccessRecord.md +107 -0
  160. package/docs/api/interfaces/RouteConfig.md +121 -0
  161. package/docs/api/interfaces/SecureDataContextType.md +168 -0
  162. package/docs/api/interfaces/SecureDataProviderProps.md +132 -0
  163. package/docs/api/interfaces/StorageConfig.md +41 -0
  164. package/docs/api/interfaces/StorageFileInfo.md +74 -0
  165. package/docs/api/interfaces/StorageFileMetadata.md +140 -0
  166. package/docs/api/interfaces/StorageListOptions.md +86 -0
  167. package/docs/api/interfaces/StorageListResult.md +41 -0
  168. package/docs/api/interfaces/StorageUploadOptions.md +88 -0
  169. package/docs/api/interfaces/StorageUploadResult.md +63 -0
  170. package/docs/api/interfaces/StorageUrlOptions.md +47 -0
  171. package/docs/api/interfaces/StyleImport.md +2 -2
  172. package/docs/api/interfaces/ToastActionElement.md +1 -1
  173. package/docs/api/interfaces/ToastProps.md +1 -1
  174. package/docs/api/interfaces/UnifiedAuthContextType.md +465 -64
  175. package/docs/api/interfaces/UnifiedAuthProviderProps.md +95 -9
  176. package/docs/api/interfaces/UseInactivityTrackerOptions.md +136 -0
  177. package/docs/api/interfaces/UseInactivityTrackerReturn.md +123 -0
  178. package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
  179. package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
  180. package/docs/api/interfaces/UsePublicEventOptions.md +34 -0
  181. package/docs/api/interfaces/UsePublicEventReturn.md +68 -0
  182. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +94 -0
  183. package/docs/api/interfaces/UserEventAccess.md +14 -14
  184. package/docs/api/interfaces/UserMenuProps.md +6 -6
  185. package/docs/api/interfaces/UserProfile.md +1 -1
  186. package/docs/api/modules.md +4233 -1134
  187. package/docs/api-reference/components.md +761 -43
  188. package/docs/api-reference/hooks.md +126 -0
  189. package/docs/api-reference/providers.md +141 -65
  190. package/docs/api-reference/types.md +66 -36
  191. package/docs/api-reference/utilities.md +1 -1
  192. package/docs/architecture/README.md +1 -2
  193. package/docs/best-practices/README.md +400 -0
  194. package/docs/consuming-app-example.md +42 -96
  195. package/docs/consuming-app-vite-config.md +233 -0
  196. package/docs/core-concepts/events.md +3 -3
  197. package/docs/core-concepts/organisations.md +0 -1
  198. package/docs/core-concepts/rbac-system.md +23 -10
  199. package/docs/documentation-style-checklist.md +8 -2
  200. package/docs/examples/navigation-menu-auth-fix.md +344 -0
  201. package/docs/getting-started/examples/README.md +15 -1
  202. package/docs/getting-started/examples/basic-auth-app.md +444 -119
  203. package/docs/getting-started/examples/full-featured-app.md +6 -6
  204. package/docs/getting-started/installation.md +231 -52
  205. package/docs/getting-started/quick-start.md +121 -24
  206. package/docs/implementation-guides/app-layout.md +133 -108
  207. package/docs/implementation-guides/data-tables.md +1011 -29
  208. package/docs/implementation-guides/forms.md +3 -3
  209. package/docs/implementation-guides/hierarchical-datatable.md +850 -0
  210. package/docs/implementation-guides/large-datasets.md +2 -2
  211. package/docs/implementation-guides/navigation.md +1 -1
  212. package/docs/implementation-guides/permission-enforcement.md +4 -4
  213. package/docs/implementation-guides/public-pages.md +752 -0
  214. package/docs/migration/README.md +18 -8
  215. package/docs/migration/quick-migration-guide.md +320 -0
  216. package/docs/migration/rbac-migration.md +50 -0
  217. package/docs/migration/v0.4.15-tailwind-scanning.md +272 -0
  218. package/docs/migration/v0.4.16-css-first-approach.md +306 -0
  219. package/docs/migration/v0.4.17-source-path-fix.md +229 -0
  220. package/docs/migration-guide.md +77 -105
  221. package/docs/performance/README.md +1 -4
  222. package/docs/print-components/README.md +258 -0
  223. package/docs/print-components/api-reference.md +636 -0
  224. package/docs/print-components/examples/README.md +204 -0
  225. package/docs/print-components/examples/basic-report.tsx +92 -0
  226. package/docs/print-components/examples/card-catalog.tsx +149 -0
  227. package/docs/print-components/examples/cover-page-report.tsx +163 -0
  228. package/docs/print-components/quick-start.md +363 -0
  229. package/docs/quick-reference.md +53 -36
  230. package/docs/rbac/README.md +136 -69
  231. package/docs/rbac/api-reference.md +39 -8
  232. package/docs/rbac/examples.md +237 -66
  233. package/docs/rbac/getting-started.md +131 -16
  234. package/docs/rbac/quick-start.md +499 -323
  235. package/docs/rbac/troubleshooting.md +240 -262
  236. package/docs/security/README.md +50 -1
  237. package/docs/styles/README.md +226 -111
  238. package/docs/testing/README.md +6 -10
  239. package/docs/troubleshooting/README.md +497 -0
  240. package/docs/troubleshooting/common-issues.md +604 -14
  241. package/docs/troubleshooting/styling-issues.md +219 -0
  242. package/docs/troubleshooting/tailwind-content-scanning.md +213 -0
  243. package/docs/usage.md +54 -91
  244. package/docs/visual-testing.md +0 -7
  245. package/package.json +47 -25
  246. package/src/__mocks__/lucide-react.ts +181 -0
  247. package/src/__tests__/REBUILD_PLAN.md +223 -0
  248. package/src/__tests__/TESTING_GUIDELINES.md +341 -0
  249. package/src/__tests__/fixtures/mocks.ts +93 -0
  250. package/src/__tests__/helpers/component-test-utils.tsx +145 -0
  251. package/src/__tests__/helpers/test-utils.tsx +117 -0
  252. package/src/__tests__/integration/UserProfile.test.tsx +128 -0
  253. package/src/__tests__/setup.ts +71 -0
  254. package/src/__tests__/templates/accessibility.test.template.tsx +279 -0
  255. package/src/__tests__/templates/component.test.template.tsx +144 -0
  256. package/src/__tests__/templates/hook.test.template.ts +173 -0
  257. package/src/__tests__/templates/integration.test.template.tsx +199 -0
  258. package/src/__tests__/types/test.types.ts +106 -0
  259. package/src/components/Alert/Alert.test.tsx +496 -0
  260. package/src/components/Alert/Alert.tsx +134 -0
  261. package/src/components/Alert/index.ts +2 -0
  262. package/src/components/Avatar/Avatar.test.tsx +484 -0
  263. package/src/components/Avatar/Avatar.tsx +84 -0
  264. package/src/components/Avatar/index.ts +2 -0
  265. package/src/components/Button/Button.test.tsx +662 -0
  266. package/src/components/Button/Button.tsx +270 -0
  267. package/src/components/Button/index.ts +2 -0
  268. package/src/components/Card/Card.test.tsx +593 -0
  269. package/src/components/Card/Card.tsx +271 -0
  270. package/src/components/Card/index.ts +1 -0
  271. package/src/components/Checkbox/Checkbox.test.tsx +461 -0
  272. package/src/components/Checkbox/Checkbox.tsx +75 -0
  273. package/src/components/Checkbox/__mocks__/Checkbox.tsx +2 -0
  274. package/src/components/Checkbox/index.ts +2 -0
  275. package/src/components/DataTable/DataTable.tsx +446 -0
  276. package/src/components/DataTable/__tests__/README.md +145 -0
  277. package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +66 -0
  278. package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +103 -0
  279. package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +381 -0
  280. package/src/components/DataTable/__tests__/test-utils.ts +94 -0
  281. package/src/components/DataTable/components/AccessDeniedPage.tsx +168 -0
  282. package/src/components/DataTable/components/ActionButtons.tsx +194 -0
  283. package/src/components/DataTable/components/BulkOperationsDropdown.tsx +160 -0
  284. package/src/components/DataTable/components/ColumnFilter.tsx +114 -0
  285. package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +100 -0
  286. package/src/components/DataTable/components/DataTableBody.tsx +461 -0
  287. package/src/components/DataTable/components/DataTableCore.tsx +1027 -0
  288. package/src/components/DataTable/components/DataTableErrorBoundary.tsx +214 -0
  289. package/src/components/DataTable/components/DataTableModals.tsx +87 -0
  290. package/src/components/DataTable/components/DataTableToolbar.tsx +262 -0
  291. package/src/components/DataTable/components/DraggableColumnHeader.tsx +144 -0
  292. package/src/components/DataTable/components/EditableRow.tsx +159 -0
  293. package/src/components/DataTable/components/EmptyState.tsx +64 -0
  294. package/src/components/DataTable/components/ExpandButton.tsx +113 -0
  295. package/src/components/DataTable/components/FilterRow.tsx +100 -0
  296. package/src/components/DataTable/components/GroupHeader.tsx +42 -0
  297. package/src/components/DataTable/components/GroupingDropdown.tsx +96 -0
  298. package/src/components/DataTable/components/ImportModal.tsx +345 -0
  299. package/src/components/DataTable/components/LoadingState.tsx +12 -0
  300. package/src/components/DataTable/components/PaginationControls.tsx +332 -0
  301. package/src/components/DataTable/components/UnifiedTableBody.tsx +742 -0
  302. package/src/components/DataTable/components/ViewRowModal.tsx +68 -0
  303. package/src/components/DataTable/components/VirtualizedDataTable.tsx +513 -0
  304. package/src/components/DataTable/components/index.ts +16 -0
  305. package/src/components/DataTable/context/DataTableContext.tsx +97 -0
  306. package/src/components/DataTable/core/ActionManager.ts +235 -0
  307. package/src/components/DataTable/core/ColumnFactory.ts +268 -0
  308. package/src/components/DataTable/core/ColumnManager.ts +205 -0
  309. package/src/components/DataTable/core/DataManager.ts +188 -0
  310. package/src/components/DataTable/core/DataTableContext.tsx +181 -0
  311. package/src/components/DataTable/core/LocalDataAdapter.ts +264 -0
  312. package/src/components/DataTable/core/PluginRegistry.ts +229 -0
  313. package/src/components/DataTable/core/StateManager.ts +311 -0
  314. package/src/components/DataTable/core/index.ts +8 -0
  315. package/src/components/DataTable/core/interfaces.ts +338 -0
  316. package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +419 -0
  317. package/src/components/DataTable/examples/HierarchicalExample.tsx +475 -0
  318. package/src/components/DataTable/examples/InitialPageSizeExample.tsx +176 -0
  319. package/src/components/DataTable/examples/PerformanceExample.tsx +505 -0
  320. package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +95 -0
  321. package/src/components/DataTable/hooks/useColumnReordering.ts +110 -0
  322. package/src/components/DataTable/hooks/useDataTableState.ts +325 -0
  323. package/src/components/DataTable/hooks/useHierarchicalState.ts +174 -0
  324. package/src/components/DataTable/index.ts +68 -0
  325. package/src/components/DataTable/styles.ts +171 -0
  326. package/src/components/DataTable/types.ts +511 -0
  327. package/src/components/DataTable/utils/debugTools.ts +583 -0
  328. package/src/components/DataTable/utils/errorHandling.ts +494 -0
  329. package/src/components/DataTable/utils/exportUtils.ts +126 -0
  330. package/src/components/DataTable/utils/flexibleImport.ts +510 -0
  331. package/src/components/DataTable/utils/hierarchicalSorting.ts +151 -0
  332. package/src/components/DataTable/utils/hierarchicalUtils.ts +218 -0
  333. package/src/components/DataTable/utils/index.ts +1 -0
  334. package/src/components/DataTable/utils/performanceUtils.ts +351 -0
  335. package/src/components/Dialog/Dialog.test.tsx +1139 -0
  336. package/src/components/Dialog/Dialog.tsx +782 -0
  337. package/src/components/Dialog/README.md +804 -0
  338. package/src/components/Dialog/examples/BasicHtmlTest.tsx +55 -0
  339. package/src/components/Dialog/examples/DebugHtmlExample.tsx +68 -0
  340. package/src/components/Dialog/examples/HtmlDialogExample.tsx +202 -0
  341. package/src/components/Dialog/examples/SimpleHtmlTest.tsx +61 -0
  342. package/src/components/Dialog/examples/SmartDialogExample.tsx +322 -0
  343. package/src/components/Dialog/index.ts +12 -0
  344. package/src/components/Dialog/utils/safeHtml.ts +185 -0
  345. package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +752 -0
  346. package/src/components/ErrorBoundary/ErrorBoundary.tsx +312 -0
  347. package/src/components/ErrorBoundary/index.ts +8 -0
  348. package/src/components/EventSelector/EventSelector.tsx +360 -0
  349. package/src/components/EventSelector/index.ts +3 -0
  350. package/src/components/EventSelector/types.ts +79 -0
  351. package/src/components/FileUpload/FileUpload.example.tsx +218 -0
  352. package/src/components/FileUpload/FileUpload.test.tsx +665 -0
  353. package/src/components/FileUpload/FileUpload.tsx +237 -0
  354. package/src/components/FileUpload/index.ts +6 -0
  355. package/src/components/Footer/Footer.test.tsx +482 -0
  356. package/src/components/Footer/Footer.tsx +197 -0
  357. package/src/components/Footer/index.ts +17 -0
  358. package/src/components/Form/Form.test.tsx +1158 -0
  359. package/src/components/Form/Form.tsx +166 -0
  360. package/src/components/Form/FormErrorSummary.tsx +113 -0
  361. package/src/components/Form/FormField.tsx +249 -0
  362. package/src/components/Form/FormFieldset.tsx +127 -0
  363. package/src/components/Form/FormLiveRegion.tsx +198 -0
  364. package/src/components/Form/index.ts +26 -0
  365. package/src/components/Header/Header.test.tsx +582 -0
  366. package/src/components/Header/Header.tsx +301 -0
  367. package/src/components/Header/index.ts +4 -0
  368. package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +489 -0
  369. package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +164 -0
  370. package/src/components/InactivityWarningModal/index.ts +9 -0
  371. package/src/components/Input/Input.test.tsx +466 -0
  372. package/src/components/Input/Input.tsx +201 -0
  373. package/src/components/Input/__mocks__/Input.tsx +2 -0
  374. package/src/components/Input/index.ts +9 -0
  375. package/src/components/Label/Label.tsx +186 -0
  376. package/src/components/Label/index.ts +2 -0
  377. package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +450 -0
  378. package/src/components/LoadingSpinner/LoadingSpinner.tsx +98 -0
  379. package/src/components/LoadingSpinner/index.ts +3 -0
  380. package/src/components/LoginForm/LoginForm.test.tsx +816 -0
  381. package/src/components/LoginForm/LoginForm.tsx +273 -0
  382. package/src/components/LoginForm/index.ts +3 -0
  383. package/src/components/NavigationMenu/NavigationMenu.test.tsx +883 -0
  384. package/src/components/NavigationMenu/NavigationMenu.tsx +698 -0
  385. package/src/components/NavigationMenu/index.ts +10 -0
  386. package/src/components/NavigationMenu/types.ts +85 -0
  387. package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +748 -0
  388. package/src/components/OrganisationSelector/OrganisationSelector.tsx +304 -0
  389. package/src/components/OrganisationSelector/index.ts +9 -0
  390. package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +891 -0
  391. package/src/components/PaceAppLayout/PaceAppLayout.tsx +699 -0
  392. package/src/components/PaceAppLayout/README.md +278 -0
  393. package/src/components/PaceAppLayout/index.ts +1 -0
  394. package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +475 -0
  395. package/src/components/PaceLoginPage/PaceLoginPage.tsx +221 -0
  396. package/src/components/PaceLoginPage/index.ts +1 -0
  397. package/src/components/PasswordReset/PasswordChangeForm.test.tsx +621 -0
  398. package/src/components/PasswordReset/PasswordChangeForm.tsx +186 -0
  399. package/src/components/PasswordReset/PasswordResetForm.test.tsx +605 -0
  400. package/src/components/PasswordReset/PasswordResetForm.tsx +201 -0
  401. package/src/components/PasswordReset/index.ts +4 -0
  402. package/src/components/PrintButton/PrintButton.tsx +321 -0
  403. package/src/components/PrintButton/PrintButtonGroup.tsx +84 -0
  404. package/src/components/PrintButton/PrintToolbar.tsx +94 -0
  405. package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +438 -0
  406. package/src/components/PrintButton/index.ts +33 -0
  407. package/src/components/PrintButton/types.ts +173 -0
  408. package/src/components/PrintCard/PrintCard.tsx +154 -0
  409. package/src/components/PrintCard/PrintCardContent.tsx +57 -0
  410. package/src/components/PrintCard/PrintCardFooter.tsx +60 -0
  411. package/src/components/PrintCard/PrintCardGrid.tsx +91 -0
  412. package/src/components/PrintCard/PrintCardHeader.tsx +78 -0
  413. package/src/components/PrintCard/PrintCardImage.tsx +81 -0
  414. package/src/components/PrintCard/examples/PrintCardShowcase.tsx +239 -0
  415. package/src/components/PrintCard/index.ts +34 -0
  416. package/src/components/PrintCard/types.ts +171 -0
  417. package/src/components/PrintDataTable/PrintDataTable.tsx +215 -0
  418. package/src/components/PrintDataTable/PrintTableGroup.tsx +90 -0
  419. package/src/components/PrintDataTable/PrintTableRow.tsx +76 -0
  420. package/src/components/PrintDataTable/index.ts +25 -0
  421. package/src/components/PrintDataTable/types.ts +67 -0
  422. package/src/components/PrintFooter/PrintFooter.tsx +183 -0
  423. package/src/components/PrintFooter/PrintFooterContent.tsx +71 -0
  424. package/src/components/PrintFooter/PrintFooterInfo.tsx +86 -0
  425. package/src/components/PrintFooter/PrintPageNumber.tsx +90 -0
  426. package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +390 -0
  427. package/src/components/PrintFooter/index.ts +30 -0
  428. package/src/components/PrintFooter/types.ts +149 -0
  429. package/src/components/PrintGrid/PrintGrid.tsx +180 -0
  430. package/src/components/PrintGrid/PrintGridBreakpoint.tsx +109 -0
  431. package/src/components/PrintGrid/PrintGridContainer.tsx +128 -0
  432. package/src/components/PrintGrid/PrintGridItem.tsx +220 -0
  433. package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +359 -0
  434. package/src/components/PrintGrid/index.ts +31 -0
  435. package/src/components/PrintGrid/types.ts +159 -0
  436. package/src/components/PrintHeader/PrintCoverHeader.tsx +230 -0
  437. package/src/components/PrintHeader/PrintHeader.tsx +150 -0
  438. package/src/components/PrintHeader/index.ts +17 -0
  439. package/src/components/PrintHeader/types.ts +42 -0
  440. package/src/components/PrintLayout/PrintLayout.tsx +122 -0
  441. package/src/components/PrintLayout/PrintLayoutContext.tsx +66 -0
  442. package/src/components/PrintLayout/PrintPageBreak.tsx +52 -0
  443. package/src/components/PrintLayout/examples/PrintShowcase.tsx +230 -0
  444. package/src/components/PrintLayout/index.ts +19 -0
  445. package/src/components/PrintLayout/types.ts +37 -0
  446. package/src/components/PrintPageBreak/PrintPageBreak.tsx +120 -0
  447. package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +90 -0
  448. package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +112 -0
  449. package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +279 -0
  450. package/src/components/PrintPageBreak/index.ts +23 -0
  451. package/src/components/PrintPageBreak/types.ts +94 -0
  452. package/src/components/PrintSection/PrintColumn.tsx +104 -0
  453. package/src/components/PrintSection/PrintDivider.tsx +101 -0
  454. package/src/components/PrintSection/PrintSection.tsx +129 -0
  455. package/src/components/PrintSection/PrintSectionContent.tsx +75 -0
  456. package/src/components/PrintSection/PrintSectionHeader.tsx +97 -0
  457. package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +258 -0
  458. package/src/components/PrintSection/index.ts +33 -0
  459. package/src/components/PrintSection/types.ts +155 -0
  460. package/src/components/PrintText/PrintText.tsx +116 -0
  461. package/src/components/PrintText/index.ts +16 -0
  462. package/src/components/PrintText/types.ts +24 -0
  463. package/src/components/Progress/Progress.tsx +116 -0
  464. package/src/components/Progress/index.ts +3 -0
  465. package/src/components/PublicLayout/EventLogo.tsx +287 -0
  466. package/src/components/PublicLayout/PublicErrorBoundary.tsx +279 -0
  467. package/src/components/PublicLayout/PublicLoadingSpinner.tsx +208 -0
  468. package/src/components/PublicLayout/PublicPageContextChecker.tsx +130 -0
  469. package/src/components/PublicLayout/PublicPageDebugger.tsx +104 -0
  470. package/src/components/PublicLayout/PublicPageDiagnostic.tsx +162 -0
  471. package/src/components/PublicLayout/PublicPageFooter.tsx +124 -0
  472. package/src/components/PublicLayout/PublicPageHeader.tsx +178 -0
  473. package/src/components/PublicLayout/PublicPageLayout.tsx +232 -0
  474. package/src/components/PublicLayout/PublicPageProvider.tsx +137 -0
  475. package/src/components/PublicLayout/index.ts +51 -0
  476. package/src/components/Select/Select.test.tsx +948 -0
  477. package/src/components/Select/Select.tsx +660 -0
  478. package/src/components/Select/index.ts +1 -0
  479. package/src/components/SuperAdminGuard.tsx +116 -0
  480. package/src/components/Table/Table.tsx +222 -0
  481. package/src/components/Table/index.ts +11 -0
  482. package/src/components/Toast/Toast.test.tsx +586 -0
  483. package/src/components/Toast/Toast.tsx +339 -0
  484. package/src/components/Toast/index.ts +14 -0
  485. package/src/components/Tooltip/Tooltip.test.tsx +852 -0
  486. package/src/components/Tooltip/Tooltip.tsx +167 -0
  487. package/src/components/Tooltip/index.ts +7 -0
  488. package/src/components/UserMenu/UserMenu.test.tsx +702 -0
  489. package/src/components/UserMenu/UserMenu.tsx +243 -0
  490. package/src/components/UserMenu/index.ts +3 -0
  491. package/src/components/examples/PermissionExample.tsx +150 -0
  492. package/src/components/index.ts +434 -0
  493. package/src/components.ts +19 -0
  494. package/src/constants/performance.ts +14 -0
  495. package/src/examples/CorrectPublicPageImplementation.tsx +301 -0
  496. package/src/examples/PublicEventPage.tsx +274 -0
  497. package/src/examples/PublicPageApp.tsx +308 -0
  498. package/src/examples/PublicPageUsageExample.tsx +216 -0
  499. package/src/hooks/index.ts +56 -0
  500. package/src/hooks/public/index.ts +34 -0
  501. package/src/hooks/public/usePublicEvent.ts +261 -0
  502. package/src/hooks/public/usePublicEventLogo.ts +285 -0
  503. package/src/hooks/public/usePublicRouteParams.ts +259 -0
  504. package/src/hooks/useAppConfig.ts +94 -0
  505. package/src/hooks/useComponentPerformance.ts +39 -0
  506. package/src/hooks/useCounter.test.ts +135 -0
  507. package/src/hooks/useDataTablePerformance.ts +387 -0
  508. package/src/hooks/useDataTableState.ts +110 -0
  509. package/src/hooks/useDebounce.test.ts +375 -0
  510. package/src/hooks/useDebounce.ts +18 -0
  511. package/src/hooks/useFocusManagement.ts +161 -0
  512. package/src/hooks/useFocusTrap.ts +155 -0
  513. package/src/hooks/useInactivityTracker.ts +372 -0
  514. package/src/hooks/useIsMobile.ts +42 -0
  515. package/src/hooks/useKeyboardShortcuts.ts +237 -0
  516. package/src/hooks/useOrganisationPermissions.test.ts +528 -0
  517. package/src/hooks/useOrganisationPermissions.ts +208 -0
  518. package/src/hooks/useOrganisationSecurity.test.ts +734 -0
  519. package/src/hooks/useOrganisationSecurity.ts +262 -0
  520. package/src/hooks/usePerformanceMonitor.ts +128 -0
  521. package/src/hooks/usePermissionCache.test.ts +542 -0
  522. package/src/hooks/usePermissionCache.ts +455 -0
  523. package/src/hooks/useSecureDataAccess.ts +586 -0
  524. package/src/hooks/useStorage.ts +274 -0
  525. package/src/hooks/useToast.ts +242 -0
  526. package/src/hooks/useZodForm.ts +28 -0
  527. package/src/index.ts +199 -0
  528. package/src/providers/AuthProvider.tsx +369 -0
  529. package/src/providers/EventProvider.tsx +324 -0
  530. package/src/providers/InactivityProvider.tsx +238 -0
  531. package/src/providers/OrganisationProvider.tsx +588 -0
  532. package/src/providers/UnifiedAuthProvider.tsx +327 -0
  533. package/src/providers/index.ts +17 -0
  534. package/src/rbac/README.md +885 -0
  535. package/src/rbac/__tests__/integration.test.tsx +218 -0
  536. package/src/rbac/adapters.tsx +726 -0
  537. package/src/rbac/api.test.ts +441 -0
  538. package/src/rbac/api.ts +339 -0
  539. package/src/rbac/audit-enhanced.ts +339 -0
  540. package/src/rbac/audit.ts +338 -0
  541. package/src/rbac/cache.ts +215 -0
  542. package/src/rbac/components/EnhancedNavigationMenu.tsx +294 -0
  543. package/src/rbac/components/NavigationGuard.tsx +294 -0
  544. package/src/rbac/components/NavigationProvider.tsx +314 -0
  545. package/src/rbac/components/PagePermissionGuard.tsx +430 -0
  546. package/src/rbac/components/PagePermissionProvider.tsx +274 -0
  547. package/src/rbac/components/PermissionEnforcer.tsx +307 -0
  548. package/src/rbac/components/RoleBasedRouter.tsx +425 -0
  549. package/src/rbac/components/SecureDataProvider.tsx +319 -0
  550. package/src/rbac/components/index.ts +64 -0
  551. package/src/rbac/config.ts +133 -0
  552. package/src/rbac/docs/event-based-apps.md +285 -0
  553. package/src/rbac/engine.ts +1026 -0
  554. package/src/rbac/eslint-rules.js +285 -0
  555. package/src/rbac/examples/CompleteRBACExample.tsx +323 -0
  556. package/src/rbac/examples/EventBasedApp.tsx +238 -0
  557. package/src/rbac/hooks/index.ts +21 -0
  558. package/src/rbac/hooks/useCan.test.ts +461 -0
  559. package/src/rbac/hooks/usePermissions.test.ts +359 -0
  560. package/src/rbac/hooks/usePermissions.ts +567 -0
  561. package/src/rbac/hooks/useRBAC.simple.test.ts +90 -0
  562. package/src/rbac/hooks/useRBAC.test.ts +503 -0
  563. package/src/rbac/hooks/useRBAC.ts +262 -0
  564. package/src/rbac/index.ts +109 -0
  565. package/src/rbac/permissions.ts +293 -0
  566. package/src/rbac/providers/RBACProvider.tsx +634 -0
  567. package/src/rbac/providers/__tests__/RBACProvider.test.tsx +687 -0
  568. package/src/rbac/providers/index.ts +11 -0
  569. package/src/rbac/secureClient.ts +244 -0
  570. package/src/rbac/security.ts +346 -0
  571. package/src/rbac/testing/index.tsx +340 -0
  572. package/src/rbac/types.ts +343 -0
  573. package/src/rbac/utils/eventContext.ts +83 -0
  574. package/src/styles/core.css +364 -0
  575. package/src/styles/index.ts +51 -0
  576. package/src/theming/runtime.ts +187 -0
  577. package/src/types/database.ts +472 -0
  578. package/src/types/guards.ts +30 -0
  579. package/src/types/index.ts +25 -0
  580. package/src/types/organisation.ts +184 -0
  581. package/src/types/security.ts +70 -0
  582. package/src/types/supabase.ts +166 -0
  583. package/src/types/theme.ts +6 -0
  584. package/src/types/unified.ts +262 -0
  585. package/src/types/validation.ts +164 -0
  586. package/src/types/vitest-globals.d.ts +43 -0
  587. package/src/utils/__mocks__/supabaseMock.ts +75 -0
  588. package/src/utils/__mocks__/supabaseMock.tsx +198 -0
  589. package/src/utils/appConfig.ts +47 -0
  590. package/src/utils/appIdResolver.ts +130 -0
  591. package/src/utils/appNameResolver.ts +190 -0
  592. package/src/utils/audit.ts +127 -0
  593. package/src/utils/auth-utils.ts +96 -0
  594. package/src/utils/bundleAnalysis.ts +129 -0
  595. package/src/utils/cn.ts +7 -0
  596. package/src/utils/debugLogger.ts +46 -0
  597. package/src/utils/deviceFingerprint.ts +215 -0
  598. package/src/utils/dynamicUtils.ts +105 -0
  599. package/src/utils/formatDate.test.ts +241 -0
  600. package/src/utils/formatting.ts +77 -0
  601. package/src/utils/index.ts +145 -0
  602. package/src/utils/lazyLoad.tsx +44 -0
  603. package/src/utils/organisationContext.ts +135 -0
  604. package/src/utils/performanceBenchmark.ts +64 -0
  605. package/src/utils/performanceBudgets.ts +111 -0
  606. package/src/utils/permissionTypes.ts +37 -0
  607. package/src/utils/permissionUtils.ts +31 -0
  608. package/src/utils/print/PrintDataProcessor.ts +390 -0
  609. package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +397 -0
  610. package/src/utils/print/index.ts +29 -0
  611. package/src/utils/print/types.ts +196 -0
  612. package/src/utils/print/usePrintOptimization.ts +272 -0
  613. package/src/utils/sanitization.ts +264 -0
  614. package/src/utils/schemaUtils.ts +37 -0
  615. package/src/utils/secureDataAccess.ts +361 -0
  616. package/src/utils/secureErrors.ts +79 -0
  617. package/src/utils/secureStorage.ts +244 -0
  618. package/src/utils/security.ts +156 -0
  619. package/src/utils/securityMonitor.ts +45 -0
  620. package/src/utils/sessionTracking.ts +170 -0
  621. package/src/utils/storage/README.md +348 -0
  622. package/src/utils/storage/config.ts +100 -0
  623. package/src/utils/storage/helpers.ts +359 -0
  624. package/src/utils/storage/index.ts +36 -0
  625. package/src/utils/storage/types.ts +90 -0
  626. package/src/utils/validation.ts +111 -0
  627. package/src/utils/validationUtils.ts +120 -0
  628. package/src/validation/common.ts +53 -0
  629. package/src/validation/csrf.ts +214 -0
  630. package/src/validation/index.ts +43 -0
  631. package/src/validation/passwordSchema.ts +125 -0
  632. package/src/validation/sanitization.ts +96 -0
  633. package/src/validation/schemaUtils.ts +42 -0
  634. package/src/validation/sqlInjectionProtection.ts +242 -0
  635. package/src/validation/user.ts +34 -0
  636. package/dist/chunk-4MCJAK7J.js.map +0 -1
  637. package/dist/chunk-4ZTIEYU2.js.map +0 -1
  638. package/dist/chunk-H4PZ4B3Y.js.map +0 -1
  639. package/dist/chunk-IOX76PSM.js.map +0 -1
  640. package/dist/chunk-JUUNUW3O.js.map +0 -1
  641. package/dist/chunk-KK6WIDK6.js +0 -63
  642. package/dist/chunk-KK6WIDK6.js.map +0 -1
  643. package/dist/chunk-U7DY5T33.js +0 -11
  644. package/dist/chunk-U7DY5T33.js.map +0 -1
  645. package/dist/chunk-WHLSWC6W.js.map +0 -1
  646. package/dist/chunk-XI7QFSSC.js +0 -790
  647. package/dist/chunk-XI7QFSSC.js.map +0 -1
  648. package/dist/chunk-XIJMMBDD.js +0 -73
  649. package/dist/chunk-XIJMMBDD.js.map +0 -1
  650. package/dist/chunk-YNU5QJ4S.js.map +0 -1
  651. package/dist/chunk-YWYCNGWH.js +0 -2070
  652. package/dist/chunk-YWYCNGWH.js.map +0 -1
  653. package/dist/chunk-ZJ3UKPIW.js +0 -952
  654. package/dist/chunk-ZJ3UKPIW.js.map +0 -1
  655. package/dist/useAppConfig-CZNJJsT_.d.ts +0 -148
  656. package/dist/{DataTable-2LB6HI6V.js.map → DataTable-ZQDRE46Q.js.map} +0 -0
  657. package/dist/{api-AIJ3IJX3.js.map → api-H5A3H4IR.js.map} +0 -0
  658. package/dist/{audit-PD5L5ZSC.js.map → appNameResolver-7GHF5ED2.js.map} +0 -0
  659. package/dist/{chunk-DC5AMYBS.js.map → audit-BUW3LMJB.js.map} +0 -0
  660. package/dist/{validation-D2-NNCCE.d.ts → validation-PM_iOaTI.d.ts} +6 -6
@@ -1,299 +1,301 @@
1
1
  @jmruthers/pace-core / [Exports](modules.md)
2
2
 
3
- # PACE Core
3
+ # @jmruthers/pace-core
4
4
 
5
- A comprehensive React component library and utilities for PACE applications.
5
+ Clean, modern React component library with Tailwind v4 styling and native utilities.
6
6
 
7
- ## Installation
7
+ ## 🚀 PaceAppLayout Usage
8
8
 
9
- ```bash
10
- npm install @jmruthers/pace-core
11
- ```
12
-
13
- ## Styling Setup
14
-
15
- **IMPORTANT**: PACE Core components require CSS styles to render correctly. We use a clean 3-file CSS structure with Tailwind v4.
16
-
17
- ### Quick Start
9
+ **PaceAppLayout uses React Router's nested routing pattern for optimal performance and scalability.**
18
10
 
19
11
  ```tsx
20
- // Import the three core CSS files
21
- import '@jmruthers/pace-core/styles/base.css';
22
- import '@jmruthers/pace-core/styles/theme.css';
23
- import '@jmruthers/pace-core/styles/dark.css';
24
- import './app.css'; // Your app's color palette
12
+ // Correct usage with React Router
13
+ <Router>
14
+ <Routes>
15
+ <Route path="/" element={<PaceAppLayout appName="My App" />}>
16
+ <Route path="dashboard" element={<Dashboard />} />
17
+ <Route path="settings" element={<Settings />} />
18
+ </Route>
19
+ </Routes>
20
+ </Router>
25
21
  ```
26
22
 
27
- ### Define Your App's Colors
28
-
29
- Create `app.css` with your brand colors:
23
+ ## 🚀 Complete Installation Guide
30
24
 
31
- ```css
32
- /* app.css - Your app's specific palette */
33
- @theme static {
34
- /* MAIN palette - your primary brand color */
35
- --color-main-raw: oklch(0.7 0.057 252.02);
36
- --color-main-50: oklch(0.98 0.001 252.02);
37
- --color-main-100: oklch(0.96 0.005 252.02);
38
- /* ... complete palette for main, sec, acc */
39
- }
40
- ```
25
+ ### 1. Install Dependencies
41
26
 
42
- ### Use Native Tailwind Utilities
27
+ ```bash
28
+ # Install pace-core and required peer dependencies
29
+ npm install @jmruthers/pace-core @tanstack/react-table @radix-ui/react-checkbox @radix-ui/react-dialog @radix-ui/react-dropdown-menu @radix-ui/react-label @radix-ui/react-slot lucide-react class-variance-authority clsx tailwind-merge
43
30
 
44
- ```tsx
45
- // Components use standard Tailwind classes
46
- <Button className="bg-main-600 hover:bg-main-700">
47
- Click me
48
- </Button>
49
-
50
- <Card className="bg-main-50 border-main-200">
51
- <h2 className="text-main-900">Welcome</h2>
52
- </Card>
31
+ # Install Tailwind CSS v4 and Vite plugin
32
+ npm install -D @tailwindcss/vite tailwindcss@^4.0.0
53
33
  ```
54
34
 
55
- ### Dynamic Theming
35
+ ### 2. Import Core Styles
56
36
 
57
37
  ```tsx
58
- import { applyPalette, clearPalette } from '@jmruthers/pace-core/theming/runtime';
59
-
60
- // Apply organisation colors
61
- applyPalette({
62
- main: orgData.colors.main,
63
- sec: orgData.colors.sec,
64
- acc: orgData.colors.acc
65
- });
38
+ // src/main.tsx (or your app's entry point)
39
+ import '@jmruthers/pace-core/styles/core.css';
40
+ import React from 'react';
41
+ import ReactDOM from 'react-dom/client';
42
+ import App from './App';
43
+
44
+ const root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);
45
+ root.render(
46
+ <React.StrictMode>
47
+ <App />
48
+ </React.StrictMode>
49
+ );
66
50
  ```
67
51
 
68
- For detailed styling instructions, see the [Usage Guide](./docs/usage.md).
69
-
70
- ## Import Strategy
71
-
72
- PACE Core provides two import paths to optimize for different use cases:
73
-
74
- ### Main Export (Recommended for Common Components)
52
+ ### 3. Configure Vite with Tailwind v4
75
53
 
76
- Use the main export for frequently used components and utilities:
54
+ **NEW in v0.4.17+:** Pace-core uses Tailwind v4's CSS-first approach with corrected `@source` directives. This automatically scans the published source files without requiring complex Vite configuration.
77
55
 
78
56
  ```typescript
79
- import {
80
- Button,
81
- Card,
82
- Input,
83
- DropdownMenu,
84
- Select,
85
- Dialog,
86
- useUnifiedAuth
87
- } from '@jmruthers/pace-core';
57
+ // vite.config.ts
58
+ import { defineConfig } from 'vite'
59
+ import react from '@vitejs/plugin-react'
60
+ import tailwindcss from '@tailwindcss/vite'
61
+ import path from 'path'
62
+
63
+ export default defineConfig({
64
+ plugins: [
65
+ react(),
66
+ tailwindcss({
67
+ // Only need to scan your app's source files
68
+ // pace-core source files are automatically scanned via @source directives
69
+ content: [
70
+ './src/**/*.{js,ts,jsx,tsx}'
71
+ ]
72
+ })
73
+ ],
74
+ resolve: {
75
+ alias: {
76
+ "@": path.resolve(__dirname, "./src"),
77
+ },
78
+ },
79
+ server: {
80
+ port: 3000,
81
+ open: true,
82
+ },
83
+ build: {
84
+ outDir: 'dist',
85
+ sourcemap: true,
86
+ },
87
+ })
88
88
  ```
89
89
 
90
- **Available from main export:**
91
- - **Basic UI**: Button, Card, Input, Label, Alert, Avatar, Checkbox, Progress
92
- - **Advanced UI**: Dialog, DropdownMenu, Select, Toast, Tooltip
93
- - **Data Display**: DataTable, Table
94
- - **Forms**: Form, LoginForm
95
- - **Layout**: Header, Footer, NavigationMenu, UserMenu
96
- - **Utilities**: ErrorBoundary, LoadingSpinner, EventSelector
97
- - **Providers**: UnifiedAuthProvider
98
- - **Hooks**: useUnifiedAuth
99
- - **Utils**: cn, appConfig utilities
100
-
101
- ### Complete Components Export (For Specialized Components)
102
-
103
- Use the complete export for specialized or advanced components:
90
+ **Fallback Configuration:** If the CSS-first approach doesn't work, you can explicitly include pace-core source files:
104
91
 
105
92
  ```typescript
106
- import {
107
- DataTable,
108
- NavigationMenu,
109
- FormField,
110
- FormErrorSummary
111
- } from '@jmruthers/pace-core/components';
93
+ // vite.config.ts - Fallback configuration
94
+ export default defineConfig({
95
+ plugins: [
96
+ react(),
97
+ tailwindcss({
98
+ content: [
99
+ './src/**/*.{js,ts,jsx,tsx}',
100
+ './node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}'
101
+ ]
102
+ })
103
+ ],
104
+ // ... rest of config
105
+ })
112
106
  ```
113
107
 
114
- **Available from complete export:**
115
- - All components from main export
116
- - **Advanced Form Components**: FormField, FormErrorSummary, FormLiveRegion
117
- - **Specialized UI**: All DropdownMenu sub-components, Select sub-components
118
- - **Data Components**: Full DataTable with all features
119
- - **Layout Components**: PaceAppLayout, PaceLoginPage
120
- - **Authentication**: PasswordResetForm, PasswordChangeForm
108
+ ### 4. Verify Installation
121
109
 
122
- ### When to Use Which Import?
110
+ Create a test component to ensure everything works:
123
111
 
124
- **Use Main Export When:**
125
- - Building common UI patterns
126
- - Need basic components (Button, Card, Input, etc.)
127
- - Want smaller bundle size
128
- - Working on simple forms or layouts
112
+ ```tsx
113
+ // src/App.tsx
114
+ import { Button, Card, Input } from '@jmruthers/pace-core';
129
115
 
130
- **Use Complete Export When:**
131
- - Need advanced form components
132
- - Working with complex data tables
133
- - Require specialized dropdown or select features
134
- - Building complete page layouts
116
+ function App() {
117
+ return (
118
+ <div className="p-8 space-y-4">
119
+ <h1 className="text-2xl font-bold text-main-900">PACE Core Test</h1>
120
+
121
+ <Card className="p-4">
122
+ <h2 className="text-lg font-semibold text-sec-800 mb-2">Components Test</h2>
123
+ <div className="space-y-2">
124
+ <Button variant="primary" className="bg-main-600 text-main-50">
125
+ Primary Button
126
+ </Button>
127
+ <Button variant="secondary" className="bg-sec-500 text-main-50">
128
+ Secondary Button
129
+ </Button>
130
+ <Input placeholder="Test input field" className="border-main-300" />
131
+ </div>
132
+ </Card>
133
+ </div>
134
+ );
135
+ }
135
136
 
136
- ### Bundle Size Optimization
137
+ export default App;
138
+ ```
137
139
 
138
- The main export is optimized for tree-shaking and smaller bundle sizes. The complete export includes all components but may result in larger bundles if not properly tree-shaken.
140
+ **Expected Result:** You should see properly styled components with PACE Core's design system colors and typography.
139
141
 
140
- ```typescript
141
- // ✅ Good - Only imports what you need
142
- import { Button, Card } from '@jmruthers/pace-core';
142
+ ## ⚠️ Critical Configuration Notes
143
143
 
144
- // Good - Imports specialized components when needed
145
- import { FormField, FormErrorSummary } from '@jmruthers/pace-core/components';
144
+ ### Why Source File Scanning is Required
146
145
 
147
- // ❌ Avoid - Don't import everything if you only need a few components
148
- import * as PaceCore from '@jmruthers/pace-core/components';
149
- ```
146
+ Pace-core v0.4.15+ includes source files in the published package because:
150
147
 
151
- ## Quick Start
148
+ - Tailwind v4 needs to scan original TypeScript/JSX files to detect utility classes
149
+ - Compiled JavaScript files don't contain the class names Tailwind needs
150
+ - Without proper scanning, only ~292 CSS rules are generated instead of 800+ needed
152
151
 
153
- ### Basic Usage
152
+ ### Alternative Configuration (if source files don't work)
154
153
 
155
- ```tsx
156
- import { Button, Card, CardHeader, CardTitle, CardContent } from '@jmruthers/pace-core';
154
+ If you're still having issues with component scanning:
157
155
 
158
- function MyComponent() {
159
- return (
160
- <Card>
161
- <CardHeader>
162
- <CardTitle>Welcome</CardTitle>
163
- </CardHeader>
164
- <CardContent>
165
- <Button>Click me</Button>
166
- </CardContent>
167
- </Card>
168
- );
169
- }
156
+ ```typescript
157
+ // vite.config.ts
158
+ import { defineConfig } from 'vite'
159
+ import react from '@vitejs/plugin-react'
160
+ import tailwindcss from '@tailwindcss/vite'
161
+
162
+ export default defineConfig({
163
+ plugins: [
164
+ react(),
165
+ tailwindcss({
166
+ content: [
167
+ './src/**/*.{js,ts,jsx,tsx}',
168
+ // Try source files first
169
+ './node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}',
170
+ // Fallback: also scan dist files
171
+ './node_modules/@jmruthers/pace-core/dist/**/*.{js,ts,jsx,tsx}'
172
+ ]
173
+ })
174
+ ],
175
+ })
170
176
  ```
171
177
 
172
- ### With Authentication
178
+ ### Legacy Configuration (v0.4.14 and below)
173
179
 
174
- ```tsx
175
- import {
176
- UnifiedAuthProvider,
177
- LoginForm,
178
- useUnifiedAuth
179
- } from '@jmruthers/pace-core';
180
-
181
- function App() {
182
- return (
183
- <UnifiedAuthProvider>
184
- <MyApp />
185
- </UnifiedAuthProvider>
186
- );
187
- }
180
+ For older versions, use this configuration:
188
181
 
189
- function MyApp() {
190
- const { user, signOut } = useUnifiedAuth();
191
-
192
- if (!user) {
193
- return <LoginForm />;
194
- }
195
-
196
- return (
197
- <div>
198
- <p>Welcome, {user.email}!</p>
199
- <Button onClick={signOut}>Sign Out</Button>
200
- </div>
201
- );
202
- }
182
+ ```typescript
183
+ // vite.config.ts
184
+ export default defineConfig({
185
+ plugins: [
186
+ react(),
187
+ tailwindcss({
188
+ content: [
189
+ './src/**/*.{js,ts,jsx,tsx}',
190
+ './node_modules/@jmruthers/pace-core/**/*.{js,ts,jsx,tsx}'
191
+ ]
192
+ })
193
+ ],
194
+ })
203
195
  ```
204
196
 
205
- ### Advanced Forms
197
+ ## 🔍 Troubleshooting
206
198
 
207
- ```tsx
208
- import {
209
- Form,
210
- FormField,
211
- FormErrorSummary
212
- } from '@jmruthers/pace-core/components';
213
-
214
- function AdvancedForm() {
215
- return (
216
- <Form onSubmit={handleSubmit}>
217
- <FormField name="email" label="Email" type="email" required />
218
- <FormField name="password" label="Password" type="password" required />
219
- <FormErrorSummary />
220
- <Button type="submit">Submit</Button>
221
- </Form>
222
- );
223
- }
224
- ```
199
+ ### Issue: Only 292 CSS rules instead of 800+
225
200
 
226
- ## Components
201
+ **Solution**:
202
+ 1. Update to pace-core v0.4.15+
203
+ 2. Use source file paths: `./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}`
204
+ 3. Clear build cache: `rm -rf dist .vite node_modules && npm install`
227
205
 
228
- ### Basic UI Components
206
+ ### Issue: Components appear unstyled
229
207
 
230
- - **Button** - Versatile button component with multiple variants
231
- - **Card** - Container component with header, content, and footer
232
- - **Input** - Form input with validation support
233
- - **Label** - Accessible form labels
234
- - **Alert** - Status and notification messages
235
- - **Avatar** - User profile images with fallbacks
236
- - **Checkbox** - Form checkbox with proper accessibility
237
- - **Progress** - Progress indicators and loading states
208
+ **Solution**:
209
+ 1. Check your Vite configuration includes pace-core source files
210
+ 2. Ensure CSS file is imported: `import '@jmruthers/pace-core/styles/core.css'`
211
+ 3. Restart dev server after configuration changes
238
212
 
239
- ### Advanced UI Components
213
+ ### Issue: Build errors with source files
240
214
 
241
- - **Dialog** - Accessible modal dialogs with focus management, keyboard navigation, and smooth animations
242
- - 📖 **[Dialog API Reference](./docs/api/modules.md#dialog)** - Auto-generated API documentation
243
- - **DropdownMenu** - Context menus and dropdowns
244
- - **Select** - Dropdown select components
245
- - **Toast** - Notification system
246
- - **Tooltip** - Hover tooltips
215
+ **Solution**: Add TypeScript configuration for node_modules:
247
216
 
248
- ### Data Display
217
+ ```json
218
+ // tsconfig.json
219
+ {
220
+ "compilerOptions": {
221
+ "skipLibCheck": true
222
+ }
223
+ }
224
+ ```
249
225
 
250
- - **DataTable** - **Enterprise-grade data table** with comprehensive features including sorting, filtering, pagination, search, export/import, inline editing, grouping, virtual scrolling, and full accessibility. [View comprehensive documentation →](./docs/api/modules.md#datatable)
251
- - **Table** - Basic table components for simple data display
226
+ ## Features
252
227
 
253
- ### Forms
228
+ - 🎨 **Complete Design System** - Colors, typography, spacing, shadows
229
+ - 🧩 **React Components** - Buttons, inputs, cards, data tables, and more
230
+ - 🔐 **RBAC System** - Role-based access control with Supabase
231
+ - 🎨 **Tailwind v4** - CSS-first approach with design tokens
232
+ - 📱 **Responsive** - Mobile-first design patterns
233
+ - ♿ **Accessible** - WCAG compliant components
234
+ - 🚀 **Performance** - Tree-shakeable, optimized bundle
254
235
 
255
- - **Form** - Form container with validation
256
- - **LoginForm** - Pre-built login form
257
- - **FormField** - Individual form fields with validation
258
- - **FormErrorSummary** - Error display for forms
236
+ ## Documentation
259
237
 
260
- ### Layout
238
+ - [Quick Start Guide](./docs/getting-started/quick-start.md) - Complete step-by-step tutorial
239
+ - [Installation Guide](./docs/getting-started/installation.md) - Detailed setup instructions
240
+ - [Vite Configuration](./docs/consuming-app-vite-config.md) - **CRITICAL** Tailwind scanning setup
241
+ - [Component API](./docs/api/README.md) - All available components and hooks
242
+ - [Styling Guide](./docs/styles/README.md) - Understanding the design system
243
+ - [Troubleshooting](./docs/troubleshooting/styling-issues.md) - Fix common styling problems
244
+ - [Tailwind Content Scanning](./docs/troubleshooting/tailwind-content-scanning.md) - **NEW** Comprehensive scanning solutions
261
245
 
262
- - **Header** - Application header component
263
- - **Footer** - Application footer
264
- - **NavigationMenu** - Navigation menus
265
- - **UserMenu** - User account menu
266
- - **PaceAppLayout** - Complete application layout
267
- - **PaceLoginPage** - Login page layout
246
+ ## Import Strategy
268
247
 
269
- ### Utilities
248
+ PACE Core provides two import paths to optimize for different use cases:
270
249
 
271
- - **ErrorBoundary** - React error boundary with retry functionality and graceful error handling
272
- - 📖 **[ErrorBoundary API Reference](./docs/api/classes/ErrorBoundary.md)** - Auto-generated API documentation
273
- - **LoadingSpinner** - Loading indicators
274
- - **EventSelector** - Event selection component
250
+ ### Main Export (Recommended for Common Components)
275
251
 
276
- ## Hooks
252
+ Use the main export for frequently used components and utilities:
277
253
 
278
- - **useUnifiedAuth** - Authentication state and methods
279
- - **useTheme** - Theme management
280
- - **useToast** - Toast notification system
254
+ ```typescript
255
+ import {
256
+ Button,
257
+ Card,
258
+ Input,
259
+ DropdownMenu,
260
+ Select,
261
+ Dialog,
262
+ useUnifiedAuth
263
+ } from '@jmruthers/pace-core';
264
+ ```
281
265
 
282
- ## Providers
266
+ **Available from main export:**
267
+ - **Basic UI**: Button, Card, Input, Label, Alert, Avatar, Checkbox, Progress
268
+ - **Advanced UI**: Dialog (with HTML content), DropdownMenu, Select, Toast, Tooltip
269
+ - **Data Display**: DataTable (with hierarchical actions & expand/collapse all), Table
270
+ - **Forms**: Form, LoginForm
271
+ - **Layout**: PaceAppLayout, Header, Footer, NavigationMenu
272
+ - **Print Components**: PrintLayout, PrintDataTable, PrintCard, PrintHeader, PrintText, PrintButton, PrintGrid, PrintSection, PrintFooter, PrintPageBreak
273
+ - **Providers**: UnifiedAuthProvider, OrganisationProvider, EventProvider
274
+ - **Hooks**: useUnifiedAuth, useOrganisations, useEvents
283
275
 
284
- - **UnifiedAuthProvider** - Authentication context provider
285
- - **ThemeProvider** - Theme context provider
286
- - **EventProvider** - Event management provider
276
+ ### Component Documentation
287
277
 
288
- ## Utilities
278
+ - **[DataTable Component](docs/implementation-guides/data-tables.md)** - Enterprise-grade data table with hierarchical rows, expand/collapse all, actions, sorting, filtering, and performance optimization
279
+ - **[Hierarchical DataTable Guide](docs/implementation-guides/hierarchical-datatable.md)** - Complete guide for implementing parent/child rows with expand/collapse all and smart sorting
280
+ - **[Print Components](docs/print-components/README.md)** - **NEW** Print-optimized layout system for reports, documents, and printable content
281
+ - **[Print Quick Start](docs/print-components/quick-start.md)** - 5-minute setup guide
282
+ - **[Print API Reference](docs/print-components/api-reference.md)** - Complete component documentation
283
+ - **[Dialog Component](src/components/Dialog/README.md)** - Comprehensive dialog system with smart height management, scrolling, HTML content rendering, and accessibility features
284
+ - **[Storage System](src/utils/storage/README.md)** - File storage utilities with organization-scoped access control
289
285
 
290
- - **cn** - Class name utility (clsx + tailwind-merge)
291
- - **appConfig** - Application configuration utilities
286
+ ### Complete Components Export (For Specialized Components)
292
287
 
293
- ## Contributing
288
+ Use the complete export for specialized or advanced components:
294
289
 
295
- See [CONTRIBUTING.md](./CONTRIBUTING.md) for development guidelines.
290
+ ```typescript
291
+ import {
292
+ DataTable,
293
+ NavigationMenu,
294
+ FormField,
295
+ FormErrorSummary
296
+ } from '@jmruthers/pace-core/components';
297
+ ```
296
298
 
297
299
  ## License
298
300
 
299
- MIT
301
+ MIT License - see [LICENSE](./LICENSE) for details.
@@ -1,4 +1,4 @@
1
- [@jmruthers/pace-core - v0.4.01](../README.md) / [Exports](../modules.md) / ErrorBoundary
1
+ [@jmruthers/pace-core - v0.5.3](../README.md) / [Exports](../modules.md) / ErrorBoundary
2
2
 
3
3
  # Class: ErrorBoundary
4
4
 
@@ -0,0 +1,73 @@
1
+ [@jmruthers/pace-core - v0.5.3](../README.md) / [Exports](../modules.md) / InvalidScopeError
2
+
3
+ # Class: InvalidScopeError
4
+
5
+ ## Hierarchy
6
+
7
+ - [`RBACError`](RBACError.md)
8
+
9
+ ↳ **`InvalidScopeError`**
10
+
11
+ ## Table of contents
12
+
13
+ ### Constructors
14
+
15
+ - [constructor](InvalidScopeError.md#constructor)
16
+
17
+ ### Properties
18
+
19
+ - [code](InvalidScopeError.md#code)
20
+ - [context](InvalidScopeError.md#context)
21
+
22
+ ## Constructors
23
+
24
+ ### constructor
25
+
26
+ • **new InvalidScopeError**(`scope`, `reason`): [`InvalidScopeError`](InvalidScopeError.md)
27
+
28
+ #### Parameters
29
+
30
+ | Name | Type |
31
+ | :------ | :------ |
32
+ | `scope` | [`Scope`](../modules.md#scope) |
33
+ | `reason` | `string` |
34
+
35
+ #### Returns
36
+
37
+ [`InvalidScopeError`](InvalidScopeError.md)
38
+
39
+ #### Overrides
40
+
41
+ [RBACError](RBACError.md).[constructor](RBACError.md#constructor)
42
+
43
+ #### Defined in
44
+
45
+ [packages/core/src/rbac/types.ts:325](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L325)
46
+
47
+ ## Properties
48
+
49
+ ### code
50
+
51
+ • **code**: `string`
52
+
53
+ #### Inherited from
54
+
55
+ [RBACError](RBACError.md).[code](RBACError.md#code)
56
+
57
+ #### Defined in
58
+
59
+ [packages/core/src/rbac/types.ts:285](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L285)
60
+
61
+ ___
62
+
63
+ ### context
64
+
65
+ • `Optional` **context**: `Record`\<`string`, `any`\>
66
+
67
+ #### Inherited from
68
+
69
+ [RBACError](RBACError.md).[context](RBACError.md#context)
70
+
71
+ #### Defined in
72
+
73
+ [packages/core/src/rbac/types.ts:286](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L286)
@@ -0,0 +1,66 @@
1
+ [@jmruthers/pace-core - v0.5.3](../README.md) / [Exports](../modules.md) / MissingUserContextError
2
+
3
+ # Class: MissingUserContextError
4
+
5
+ ## Hierarchy
6
+
7
+ - [`RBACError`](RBACError.md)
8
+
9
+ ↳ **`MissingUserContextError`**
10
+
11
+ ## Table of contents
12
+
13
+ ### Constructors
14
+
15
+ - [constructor](MissingUserContextError.md#constructor)
16
+
17
+ ### Properties
18
+
19
+ - [code](MissingUserContextError.md#code)
20
+ - [context](MissingUserContextError.md#context)
21
+
22
+ ## Constructors
23
+
24
+ ### constructor
25
+
26
+ • **new MissingUserContextError**(): [`MissingUserContextError`](MissingUserContextError.md)
27
+
28
+ #### Returns
29
+
30
+ [`MissingUserContextError`](MissingUserContextError.md)
31
+
32
+ #### Overrides
33
+
34
+ [RBACError](RBACError.md).[constructor](RBACError.md#constructor)
35
+
36
+ #### Defined in
37
+
38
+ [packages/core/src/rbac/types.ts:336](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L336)
39
+
40
+ ## Properties
41
+
42
+ ### code
43
+
44
+ • **code**: `string`
45
+
46
+ #### Inherited from
47
+
48
+ [RBACError](RBACError.md).[code](RBACError.md#code)
49
+
50
+ #### Defined in
51
+
52
+ [packages/core/src/rbac/types.ts:285](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L285)
53
+
54
+ ___
55
+
56
+ ### context
57
+
58
+ • `Optional` **context**: `Record`\<`string`, `any`\>
59
+
60
+ #### Inherited from
61
+
62
+ [RBACError](RBACError.md).[context](RBACError.md#context)
63
+
64
+ #### Defined in
65
+
66
+ [packages/core/src/rbac/types.ts:286](https://github.com/jmruthers/pace-core/blob/main/packages/core/src/rbac/types.ts#L286)