@jmruthers/pace-core 0.4.1 → 0.5.1

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