@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.
- package/CHANGELOG.md +26 -1
- package/README.md +231 -229
- package/dist/{DataTable-2LB6HI6V.js → DataTable-ZQDRE46Q.js} +15 -17
- package/dist/{DataTable-BDBqkU-i.d.ts → DataTable-ltTFXHS3.d.ts} +25 -51
- package/dist/{Table-CIm9IWqk.d.ts → PublicLoadingSpinner-Bq_-BeK-.d.ts} +635 -122
- package/dist/{UnifiedAuthProvider-V7y63NjT.d.ts → RBACProvider-BO4ilsQB.d.ts} +11 -36
- package/dist/UnifiedAuthProvider-DGQsy-vY.d.ts +103 -0
- package/dist/{api-AIJ3IJX3.js → api-H5A3H4IR.js} +6 -4
- package/dist/{appConfig-fB1pP_v3.d.ts → appConfig-BVGyuvI7.d.ts} +1 -1
- package/dist/appNameResolver-7GHF5ED2.js +22 -0
- package/dist/{audit-PD5L5ZSC.js → audit-BUW3LMJB.js} +3 -3
- package/dist/chunk-5H3C2SWM.js +3293 -0
- package/dist/chunk-5H3C2SWM.js.map +1 -0
- package/dist/chunk-5SIXIV7R.js +1925 -0
- package/dist/chunk-5SIXIV7R.js.map +1 -0
- package/dist/{chunk-YNU5QJ4S.js → chunk-7BNPOCLL.js} +22 -5
- package/dist/chunk-7BNPOCLL.js.map +1 -0
- package/dist/{chunk-4ZTIEYU2.js → chunk-CDQ3PX7L.js} +1 -1
- package/dist/chunk-CDQ3PX7L.js.map +1 -0
- package/dist/chunk-GNTALZV3.js +17 -0
- package/dist/chunk-GNTALZV3.js.map +1 -0
- package/dist/chunk-GWSBHC4J.js +1349 -0
- package/dist/chunk-GWSBHC4J.js.map +1 -0
- package/dist/{chunk-JUUNUW3O.js → chunk-HD7PYDUV.js} +14 -5
- package/dist/chunk-HD7PYDUV.js.map +1 -0
- package/dist/{chunk-H4PZ4B3Y.js → chunk-HXX35Q2M.js} +113 -27
- package/dist/chunk-HXX35Q2M.js.map +1 -0
- package/dist/chunk-K6B7BLSE.js +388 -0
- package/dist/chunk-K6B7BLSE.js.map +1 -0
- package/dist/chunk-M4RW7PIP.js +5441 -0
- package/dist/chunk-M4RW7PIP.js.map +1 -0
- package/dist/chunk-MZBUOP4P.js +119 -0
- package/dist/chunk-MZBUOP4P.js.map +1 -0
- package/dist/chunk-N2EUGZRW.js +98 -0
- package/dist/chunk-N2EUGZRW.js.map +1 -0
- package/dist/chunk-NQ4TOOO6.js +20 -0
- package/dist/chunk-NQ4TOOO6.js.map +1 -0
- package/dist/{chunk-DC5AMYBS.js → chunk-PLDDJCW6.js} +15 -5
- package/dist/chunk-PLDDJCW6.js.map +1 -0
- package/dist/{chunk-IOX76PSM.js → chunk-PVMYVQSM.js} +270 -28
- package/dist/chunk-PVMYVQSM.js.map +1 -0
- package/dist/{chunk-4MCJAK7J.js → chunk-QKHFMQ5R.js} +2155 -4853
- package/dist/chunk-QKHFMQ5R.js.map +1 -0
- package/dist/chunk-QVYBYGT2.js +428 -0
- package/dist/chunk-QVYBYGT2.js.map +1 -0
- package/dist/{chunk-WHLSWC6W.js → chunk-SS3E6QLB.js} +16 -61
- package/dist/chunk-SS3E6QLB.js.map +1 -0
- package/dist/chunk-WJARTBCT.js +128 -0
- package/dist/chunk-WJARTBCT.js.map +1 -0
- package/dist/chunk-YDJW5XTN.js +84 -0
- package/dist/chunk-YDJW5XTN.js.map +1 -0
- package/dist/components.d.ts +907 -10
- package/dist/components.js +3237 -204
- package/dist/components.js.map +1 -1
- package/dist/{database-CAMsquLm.d.ts → database-C3Szpi5J.d.ts} +28 -11
- package/dist/hooks.d.ts +7 -6
- package/dist/hooks.js +33 -11
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +247 -111
- package/dist/index.js +330 -185
- package/dist/index.js.map +1 -1
- package/dist/{organisation-DLNNQhPB.d.ts → organisation-CO3Sh3_D.d.ts} +1 -1
- package/dist/providers.d.ts +5 -4
- package/dist/providers.js +14 -5
- package/dist/rbac/index.d.ts +964 -839
- package/dist/rbac/index.js +58 -1970
- package/dist/rbac/index.js.map +1 -1
- package/dist/styles/core.css +364 -0
- package/dist/styles/fonts/georama-italic.woff2 +0 -0
- package/dist/styles/fonts/georama.woff2 +0 -0
- package/dist/styles/fonts/open-sans-italic.woff2 +0 -0
- package/dist/styles/fonts/open-sans.woff2 +0 -0
- package/dist/styles/fonts/reddit-mono.woff2 +0 -0
- package/dist/styles/index.d.ts +36 -0
- package/dist/styles/index.js +24 -0
- package/dist/styles/index.js.map +1 -0
- package/dist/theming/runtime.d.ts +73 -0
- package/dist/theming/runtime.js +16 -0
- package/dist/theming/runtime.js.map +1 -0
- package/dist/{types-Bavn44NW.d.ts → types-BRDU7N6w.d.ts} +79 -33
- package/dist/types.d.ts +5 -5
- package/dist/types.js +7 -2
- package/dist/types.js.map +1 -1
- package/dist/{unified-BtRpPbmp.d.ts → unified-CMPjE_fv.d.ts} +0 -1
- package/dist/usePublicRouteParams-B2OcAsur.d.ts +477 -0
- package/dist/utils.d.ts +83 -60
- package/dist/utils.js +293 -55651
- package/dist/utils.js.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.js +1 -1
- package/docs/INDEX.md +192 -0
- package/docs/README.md +46 -32
- package/docs/api/README.md +231 -229
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +73 -0
- package/docs/api/classes/MissingUserContextError.md +66 -0
- package/docs/api/classes/OrganisationContextRequiredError.md +66 -0
- package/docs/api/classes/PermissionDeniedError.md +73 -0
- package/docs/api/classes/PublicErrorBoundary.md +132 -0
- package/docs/api/classes/RBACAuditManager.md +270 -0
- package/docs/api/classes/RBACCache.md +284 -0
- package/docs/api/classes/RBACEngine.md +141 -0
- package/docs/api/classes/RBACError.md +76 -0
- package/docs/api/classes/RBACNotInitializedError.md +66 -0
- package/docs/api/classes/SecureSupabaseClient.md +135 -0
- package/docs/api/interfaces/AggregateConfig.md +4 -4
- package/docs/api/interfaces/ButtonProps.md +2 -2
- package/docs/api/interfaces/CardProps.md +2 -2
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +96 -0
- package/docs/api/interfaces/DataTableAction.md +98 -7
- package/docs/api/interfaces/DataTableColumn.md +131 -12
- package/docs/api/interfaces/DataTableProps.md +77 -274
- package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
- package/docs/api/interfaces/EmptyStateConfig.md +5 -5
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +235 -0
- package/docs/api/interfaces/EventContextType.md +7 -7
- package/docs/api/interfaces/EventLogoProps.md +152 -0
- package/docs/api/interfaces/EventProviderProps.md +2 -2
- package/docs/api/interfaces/FileSizeLimits.md +7 -0
- package/docs/api/interfaces/FileUploadProps.md +154 -0
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +115 -0
- package/docs/api/interfaces/InputProps.md +2 -2
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +107 -0
- package/docs/api/interfaces/NavigationContextType.md +164 -0
- package/docs/api/interfaces/NavigationGuardProps.md +139 -0
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +117 -0
- package/docs/api/interfaces/Organisation.md +1 -1
- package/docs/api/interfaces/OrganisationContextType.md +1 -1
- package/docs/api/interfaces/OrganisationMembership.md +1 -1
- package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
- package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
- package/docs/api/interfaces/PaceAppLayoutProps.md +26 -26
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +85 -0
- package/docs/api/interfaces/PagePermissionContextType.md +140 -0
- package/docs/api/interfaces/PagePermissionGuardProps.md +153 -0
- package/docs/api/interfaces/PagePermissionProviderProps.md +119 -0
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +153 -0
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +94 -0
- package/docs/api/interfaces/PublicErrorBoundaryState.md +68 -0
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +86 -0
- package/docs/api/interfaces/PublicPageFooterProps.md +112 -0
- package/docs/api/interfaces/PublicPageHeaderProps.md +138 -0
- package/docs/api/interfaces/PublicPageLayoutProps.md +138 -0
- package/docs/api/interfaces/RBACConfig.md +99 -0
- package/docs/api/interfaces/RBACContextType.md +474 -0
- package/docs/api/interfaces/RBACLogger.md +112 -0
- package/docs/api/interfaces/RBACProviderProps.md +107 -0
- package/docs/api/interfaces/RoleBasedRouterContextType.md +151 -0
- package/docs/api/interfaces/RoleBasedRouterProps.md +156 -0
- package/docs/api/interfaces/RouteAccessRecord.md +107 -0
- package/docs/api/interfaces/RouteConfig.md +121 -0
- package/docs/api/interfaces/SecureDataContextType.md +168 -0
- package/docs/api/interfaces/SecureDataProviderProps.md +132 -0
- package/docs/api/interfaces/StorageConfig.md +41 -0
- package/docs/api/interfaces/StorageFileInfo.md +74 -0
- package/docs/api/interfaces/StorageFileMetadata.md +140 -0
- package/docs/api/interfaces/StorageListOptions.md +86 -0
- package/docs/api/interfaces/StorageListResult.md +41 -0
- package/docs/api/interfaces/StorageUploadOptions.md +88 -0
- package/docs/api/interfaces/StorageUploadResult.md +63 -0
- package/docs/api/interfaces/StorageUrlOptions.md +47 -0
- package/docs/api/interfaces/StyleImport.md +2 -2
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +465 -64
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +95 -9
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +136 -0
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +123 -0
- package/docs/api/interfaces/UsePublicEventLogoOptions.md +87 -0
- package/docs/api/interfaces/UsePublicEventLogoReturn.md +81 -0
- package/docs/api/interfaces/UsePublicEventOptions.md +34 -0
- package/docs/api/interfaces/UsePublicEventReturn.md +68 -0
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +94 -0
- package/docs/api/interfaces/UserEventAccess.md +14 -14
- package/docs/api/interfaces/UserMenuProps.md +6 -6
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +4233 -1134
- package/docs/api-reference/components.md +761 -43
- package/docs/api-reference/hooks.md +126 -0
- package/docs/api-reference/providers.md +141 -65
- package/docs/api-reference/types.md +66 -36
- package/docs/api-reference/utilities.md +1 -1
- package/docs/architecture/README.md +1 -2
- package/docs/best-practices/README.md +400 -0
- package/docs/consuming-app-example.md +42 -96
- package/docs/consuming-app-vite-config.md +233 -0
- package/docs/core-concepts/events.md +3 -3
- package/docs/core-concepts/organisations.md +0 -1
- package/docs/core-concepts/rbac-system.md +23 -10
- package/docs/documentation-style-checklist.md +8 -2
- package/docs/examples/navigation-menu-auth-fix.md +344 -0
- package/docs/getting-started/examples/README.md +15 -1
- package/docs/getting-started/examples/basic-auth-app.md +444 -119
- package/docs/getting-started/examples/full-featured-app.md +6 -6
- package/docs/getting-started/installation.md +231 -52
- package/docs/getting-started/quick-start.md +121 -24
- package/docs/implementation-guides/app-layout.md +133 -108
- package/docs/implementation-guides/data-tables.md +1011 -29
- package/docs/implementation-guides/forms.md +3 -3
- package/docs/implementation-guides/hierarchical-datatable.md +850 -0
- package/docs/implementation-guides/large-datasets.md +2 -2
- package/docs/implementation-guides/navigation.md +1 -1
- package/docs/implementation-guides/permission-enforcement.md +4 -4
- package/docs/implementation-guides/public-pages.md +752 -0
- package/docs/migration/README.md +18 -8
- package/docs/migration/quick-migration-guide.md +320 -0
- package/docs/migration/rbac-migration.md +50 -0
- package/docs/migration/v0.4.15-tailwind-scanning.md +272 -0
- package/docs/migration/v0.4.16-css-first-approach.md +306 -0
- package/docs/migration/v0.4.17-source-path-fix.md +229 -0
- package/docs/migration-guide.md +77 -105
- package/docs/performance/README.md +1 -4
- package/docs/print-components/README.md +258 -0
- package/docs/print-components/api-reference.md +636 -0
- package/docs/print-components/examples/README.md +204 -0
- package/docs/print-components/examples/basic-report.tsx +92 -0
- package/docs/print-components/examples/card-catalog.tsx +149 -0
- package/docs/print-components/examples/cover-page-report.tsx +163 -0
- package/docs/print-components/quick-start.md +363 -0
- package/docs/quick-reference.md +53 -36
- package/docs/rbac/README.md +136 -69
- package/docs/rbac/api-reference.md +39 -8
- package/docs/rbac/examples.md +237 -66
- package/docs/rbac/getting-started.md +131 -16
- package/docs/rbac/quick-start.md +499 -323
- package/docs/rbac/troubleshooting.md +240 -262
- package/docs/security/README.md +50 -1
- package/docs/styles/README.md +226 -111
- package/docs/testing/README.md +6 -10
- package/docs/troubleshooting/README.md +497 -0
- package/docs/troubleshooting/common-issues.md +604 -14
- package/docs/troubleshooting/styling-issues.md +219 -0
- package/docs/troubleshooting/tailwind-content-scanning.md +213 -0
- package/docs/usage.md +54 -91
- package/docs/visual-testing.md +0 -7
- package/package.json +47 -25
- package/src/__mocks__/lucide-react.ts +181 -0
- package/src/__tests__/REBUILD_PLAN.md +223 -0
- package/src/__tests__/TESTING_GUIDELINES.md +341 -0
- package/src/__tests__/fixtures/mocks.ts +93 -0
- package/src/__tests__/helpers/component-test-utils.tsx +145 -0
- package/src/__tests__/helpers/test-utils.tsx +117 -0
- package/src/__tests__/integration/UserProfile.test.tsx +128 -0
- package/src/__tests__/setup.ts +71 -0
- package/src/__tests__/templates/accessibility.test.template.tsx +279 -0
- package/src/__tests__/templates/component.test.template.tsx +144 -0
- package/src/__tests__/templates/hook.test.template.ts +173 -0
- package/src/__tests__/templates/integration.test.template.tsx +199 -0
- package/src/__tests__/types/test.types.ts +106 -0
- package/src/components/Alert/Alert.test.tsx +496 -0
- package/src/components/Alert/Alert.tsx +134 -0
- package/src/components/Alert/index.ts +2 -0
- package/src/components/Avatar/Avatar.test.tsx +484 -0
- package/src/components/Avatar/Avatar.tsx +84 -0
- package/src/components/Avatar/index.ts +2 -0
- package/src/components/Button/Button.test.tsx +662 -0
- package/src/components/Button/Button.tsx +270 -0
- package/src/components/Button/index.ts +2 -0
- package/src/components/Card/Card.test.tsx +593 -0
- package/src/components/Card/Card.tsx +271 -0
- package/src/components/Card/index.ts +1 -0
- package/src/components/Checkbox/Checkbox.test.tsx +461 -0
- package/src/components/Checkbox/Checkbox.tsx +75 -0
- package/src/components/Checkbox/__mocks__/Checkbox.tsx +2 -0
- package/src/components/Checkbox/index.ts +2 -0
- package/src/components/DataTable/DataTable.tsx +446 -0
- package/src/components/DataTable/__tests__/README.md +145 -0
- package/src/components/DataTable/__tests__/mocks/MockRBACProvider.tsx +66 -0
- package/src/components/DataTable/__tests__/test-utils/dataFactories.ts +103 -0
- package/src/components/DataTable/__tests__/test-utils/sharedTestUtils.tsx +381 -0
- package/src/components/DataTable/__tests__/test-utils.ts +94 -0
- package/src/components/DataTable/components/AccessDeniedPage.tsx +168 -0
- package/src/components/DataTable/components/ActionButtons.tsx +194 -0
- package/src/components/DataTable/components/BulkOperationsDropdown.tsx +160 -0
- package/src/components/DataTable/components/ColumnFilter.tsx +114 -0
- package/src/components/DataTable/components/ColumnVisibilityDropdown.tsx +100 -0
- package/src/components/DataTable/components/DataTableBody.tsx +461 -0
- package/src/components/DataTable/components/DataTableCore.tsx +1027 -0
- package/src/components/DataTable/components/DataTableErrorBoundary.tsx +214 -0
- package/src/components/DataTable/components/DataTableModals.tsx +87 -0
- package/src/components/DataTable/components/DataTableToolbar.tsx +262 -0
- package/src/components/DataTable/components/DraggableColumnHeader.tsx +144 -0
- package/src/components/DataTable/components/EditableRow.tsx +159 -0
- package/src/components/DataTable/components/EmptyState.tsx +64 -0
- package/src/components/DataTable/components/ExpandButton.tsx +113 -0
- package/src/components/DataTable/components/FilterRow.tsx +100 -0
- package/src/components/DataTable/components/GroupHeader.tsx +42 -0
- package/src/components/DataTable/components/GroupingDropdown.tsx +96 -0
- package/src/components/DataTable/components/ImportModal.tsx +345 -0
- package/src/components/DataTable/components/LoadingState.tsx +12 -0
- package/src/components/DataTable/components/PaginationControls.tsx +332 -0
- package/src/components/DataTable/components/UnifiedTableBody.tsx +742 -0
- package/src/components/DataTable/components/ViewRowModal.tsx +68 -0
- package/src/components/DataTable/components/VirtualizedDataTable.tsx +513 -0
- package/src/components/DataTable/components/index.ts +16 -0
- package/src/components/DataTable/context/DataTableContext.tsx +97 -0
- package/src/components/DataTable/core/ActionManager.ts +235 -0
- package/src/components/DataTable/core/ColumnFactory.ts +268 -0
- package/src/components/DataTable/core/ColumnManager.ts +205 -0
- package/src/components/DataTable/core/DataManager.ts +188 -0
- package/src/components/DataTable/core/DataTableContext.tsx +181 -0
- package/src/components/DataTable/core/LocalDataAdapter.ts +264 -0
- package/src/components/DataTable/core/PluginRegistry.ts +229 -0
- package/src/components/DataTable/core/StateManager.ts +311 -0
- package/src/components/DataTable/core/index.ts +8 -0
- package/src/components/DataTable/core/interfaces.ts +338 -0
- package/src/components/DataTable/examples/HierarchicalActionsExample.tsx +419 -0
- package/src/components/DataTable/examples/HierarchicalExample.tsx +475 -0
- package/src/components/DataTable/examples/InitialPageSizeExample.tsx +176 -0
- package/src/components/DataTable/examples/PerformanceExample.tsx +505 -0
- package/src/components/DataTable/hooks/useColumnOrderPersistence.ts +95 -0
- package/src/components/DataTable/hooks/useColumnReordering.ts +110 -0
- package/src/components/DataTable/hooks/useDataTableState.ts +325 -0
- package/src/components/DataTable/hooks/useHierarchicalState.ts +174 -0
- package/src/components/DataTable/index.ts +68 -0
- package/src/components/DataTable/styles.ts +171 -0
- package/src/components/DataTable/types.ts +511 -0
- package/src/components/DataTable/utils/debugTools.ts +583 -0
- package/src/components/DataTable/utils/errorHandling.ts +494 -0
- package/src/components/DataTable/utils/exportUtils.ts +126 -0
- package/src/components/DataTable/utils/flexibleImport.ts +510 -0
- package/src/components/DataTable/utils/hierarchicalSorting.ts +151 -0
- package/src/components/DataTable/utils/hierarchicalUtils.ts +218 -0
- package/src/components/DataTable/utils/index.ts +1 -0
- package/src/components/DataTable/utils/performanceUtils.ts +351 -0
- package/src/components/Dialog/Dialog.test.tsx +1139 -0
- package/src/components/Dialog/Dialog.tsx +782 -0
- package/src/components/Dialog/README.md +804 -0
- package/src/components/Dialog/examples/BasicHtmlTest.tsx +55 -0
- package/src/components/Dialog/examples/DebugHtmlExample.tsx +68 -0
- package/src/components/Dialog/examples/HtmlDialogExample.tsx +202 -0
- package/src/components/Dialog/examples/SimpleHtmlTest.tsx +61 -0
- package/src/components/Dialog/examples/SmartDialogExample.tsx +322 -0
- package/src/components/Dialog/index.ts +12 -0
- package/src/components/Dialog/utils/safeHtml.ts +185 -0
- package/src/components/ErrorBoundary/ErrorBoundary.test.tsx +752 -0
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +312 -0
- package/src/components/ErrorBoundary/index.ts +8 -0
- package/src/components/EventSelector/EventSelector.tsx +360 -0
- package/src/components/EventSelector/index.ts +3 -0
- package/src/components/EventSelector/types.ts +79 -0
- package/src/components/FileUpload/FileUpload.example.tsx +218 -0
- package/src/components/FileUpload/FileUpload.test.tsx +665 -0
- package/src/components/FileUpload/FileUpload.tsx +237 -0
- package/src/components/FileUpload/index.ts +6 -0
- package/src/components/Footer/Footer.test.tsx +482 -0
- package/src/components/Footer/Footer.tsx +197 -0
- package/src/components/Footer/index.ts +17 -0
- package/src/components/Form/Form.test.tsx +1158 -0
- package/src/components/Form/Form.tsx +166 -0
- package/src/components/Form/FormErrorSummary.tsx +113 -0
- package/src/components/Form/FormField.tsx +249 -0
- package/src/components/Form/FormFieldset.tsx +127 -0
- package/src/components/Form/FormLiveRegion.tsx +198 -0
- package/src/components/Form/index.ts +26 -0
- package/src/components/Header/Header.test.tsx +582 -0
- package/src/components/Header/Header.tsx +301 -0
- package/src/components/Header/index.ts +4 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.test.tsx +489 -0
- package/src/components/InactivityWarningModal/InactivityWarningModal.tsx +164 -0
- package/src/components/InactivityWarningModal/index.ts +9 -0
- package/src/components/Input/Input.test.tsx +466 -0
- package/src/components/Input/Input.tsx +201 -0
- package/src/components/Input/__mocks__/Input.tsx +2 -0
- package/src/components/Input/index.ts +9 -0
- package/src/components/Label/Label.tsx +186 -0
- package/src/components/Label/index.ts +2 -0
- package/src/components/LoadingSpinner/LoadingSpinner.test.tsx +450 -0
- package/src/components/LoadingSpinner/LoadingSpinner.tsx +98 -0
- package/src/components/LoadingSpinner/index.ts +3 -0
- package/src/components/LoginForm/LoginForm.test.tsx +816 -0
- package/src/components/LoginForm/LoginForm.tsx +273 -0
- package/src/components/LoginForm/index.ts +3 -0
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +883 -0
- package/src/components/NavigationMenu/NavigationMenu.tsx +698 -0
- package/src/components/NavigationMenu/index.ts +10 -0
- package/src/components/NavigationMenu/types.ts +85 -0
- package/src/components/OrganisationSelector/OrganisationSelector.test.tsx +748 -0
- package/src/components/OrganisationSelector/OrganisationSelector.tsx +304 -0
- package/src/components/OrganisationSelector/index.ts +9 -0
- package/src/components/PaceAppLayout/PaceAppLayout.test.tsx +891 -0
- package/src/components/PaceAppLayout/PaceAppLayout.tsx +699 -0
- package/src/components/PaceAppLayout/README.md +278 -0
- package/src/components/PaceAppLayout/index.ts +1 -0
- package/src/components/PaceLoginPage/PaceLoginPage.test.tsx +475 -0
- package/src/components/PaceLoginPage/PaceLoginPage.tsx +221 -0
- package/src/components/PaceLoginPage/index.ts +1 -0
- package/src/components/PasswordReset/PasswordChangeForm.test.tsx +621 -0
- package/src/components/PasswordReset/PasswordChangeForm.tsx +186 -0
- package/src/components/PasswordReset/PasswordResetForm.test.tsx +605 -0
- package/src/components/PasswordReset/PasswordResetForm.tsx +201 -0
- package/src/components/PasswordReset/index.ts +4 -0
- package/src/components/PrintButton/PrintButton.tsx +321 -0
- package/src/components/PrintButton/PrintButtonGroup.tsx +84 -0
- package/src/components/PrintButton/PrintToolbar.tsx +94 -0
- package/src/components/PrintButton/examples/PrintButtonShowcase.tsx +438 -0
- package/src/components/PrintButton/index.ts +33 -0
- package/src/components/PrintButton/types.ts +173 -0
- package/src/components/PrintCard/PrintCard.tsx +154 -0
- package/src/components/PrintCard/PrintCardContent.tsx +57 -0
- package/src/components/PrintCard/PrintCardFooter.tsx +60 -0
- package/src/components/PrintCard/PrintCardGrid.tsx +91 -0
- package/src/components/PrintCard/PrintCardHeader.tsx +78 -0
- package/src/components/PrintCard/PrintCardImage.tsx +81 -0
- package/src/components/PrintCard/examples/PrintCardShowcase.tsx +239 -0
- package/src/components/PrintCard/index.ts +34 -0
- package/src/components/PrintCard/types.ts +171 -0
- package/src/components/PrintDataTable/PrintDataTable.tsx +215 -0
- package/src/components/PrintDataTable/PrintTableGroup.tsx +90 -0
- package/src/components/PrintDataTable/PrintTableRow.tsx +76 -0
- package/src/components/PrintDataTable/index.ts +25 -0
- package/src/components/PrintDataTable/types.ts +67 -0
- package/src/components/PrintFooter/PrintFooter.tsx +183 -0
- package/src/components/PrintFooter/PrintFooterContent.tsx +71 -0
- package/src/components/PrintFooter/PrintFooterInfo.tsx +86 -0
- package/src/components/PrintFooter/PrintPageNumber.tsx +90 -0
- package/src/components/PrintFooter/examples/PrintFooterShowcase.tsx +390 -0
- package/src/components/PrintFooter/index.ts +30 -0
- package/src/components/PrintFooter/types.ts +149 -0
- package/src/components/PrintGrid/PrintGrid.tsx +180 -0
- package/src/components/PrintGrid/PrintGridBreakpoint.tsx +109 -0
- package/src/components/PrintGrid/PrintGridContainer.tsx +128 -0
- package/src/components/PrintGrid/PrintGridItem.tsx +220 -0
- package/src/components/PrintGrid/examples/PrintGridShowcase.tsx +359 -0
- package/src/components/PrintGrid/index.ts +31 -0
- package/src/components/PrintGrid/types.ts +159 -0
- package/src/components/PrintHeader/PrintCoverHeader.tsx +230 -0
- package/src/components/PrintHeader/PrintHeader.tsx +150 -0
- package/src/components/PrintHeader/index.ts +17 -0
- package/src/components/PrintHeader/types.ts +42 -0
- package/src/components/PrintLayout/PrintLayout.tsx +122 -0
- package/src/components/PrintLayout/PrintLayoutContext.tsx +66 -0
- package/src/components/PrintLayout/PrintPageBreak.tsx +52 -0
- package/src/components/PrintLayout/examples/PrintShowcase.tsx +230 -0
- package/src/components/PrintLayout/index.ts +19 -0
- package/src/components/PrintLayout/types.ts +37 -0
- package/src/components/PrintPageBreak/PrintPageBreak.tsx +120 -0
- package/src/components/PrintPageBreak/PrintPageBreakGroup.tsx +90 -0
- package/src/components/PrintPageBreak/PrintPageBreakIndicator.tsx +112 -0
- package/src/components/PrintPageBreak/examples/PrintPageBreakShowcase.tsx +279 -0
- package/src/components/PrintPageBreak/index.ts +23 -0
- package/src/components/PrintPageBreak/types.ts +94 -0
- package/src/components/PrintSection/PrintColumn.tsx +104 -0
- package/src/components/PrintSection/PrintDivider.tsx +101 -0
- package/src/components/PrintSection/PrintSection.tsx +129 -0
- package/src/components/PrintSection/PrintSectionContent.tsx +75 -0
- package/src/components/PrintSection/PrintSectionHeader.tsx +97 -0
- package/src/components/PrintSection/examples/PrintSectionShowcase.tsx +258 -0
- package/src/components/PrintSection/index.ts +33 -0
- package/src/components/PrintSection/types.ts +155 -0
- package/src/components/PrintText/PrintText.tsx +116 -0
- package/src/components/PrintText/index.ts +16 -0
- package/src/components/PrintText/types.ts +24 -0
- package/src/components/Progress/Progress.tsx +116 -0
- package/src/components/Progress/index.ts +3 -0
- package/src/components/PublicLayout/EventLogo.tsx +287 -0
- package/src/components/PublicLayout/PublicErrorBoundary.tsx +279 -0
- package/src/components/PublicLayout/PublicLoadingSpinner.tsx +208 -0
- package/src/components/PublicLayout/PublicPageContextChecker.tsx +130 -0
- package/src/components/PublicLayout/PublicPageDebugger.tsx +104 -0
- package/src/components/PublicLayout/PublicPageDiagnostic.tsx +162 -0
- package/src/components/PublicLayout/PublicPageFooter.tsx +124 -0
- package/src/components/PublicLayout/PublicPageHeader.tsx +178 -0
- package/src/components/PublicLayout/PublicPageLayout.tsx +232 -0
- package/src/components/PublicLayout/PublicPageProvider.tsx +137 -0
- package/src/components/PublicLayout/index.ts +51 -0
- package/src/components/Select/Select.test.tsx +948 -0
- package/src/components/Select/Select.tsx +660 -0
- package/src/components/Select/index.ts +1 -0
- package/src/components/SuperAdminGuard.tsx +116 -0
- package/src/components/Table/Table.tsx +222 -0
- package/src/components/Table/index.ts +11 -0
- package/src/components/Toast/Toast.test.tsx +586 -0
- package/src/components/Toast/Toast.tsx +339 -0
- package/src/components/Toast/index.ts +14 -0
- package/src/components/Tooltip/Tooltip.test.tsx +852 -0
- package/src/components/Tooltip/Tooltip.tsx +167 -0
- package/src/components/Tooltip/index.ts +7 -0
- package/src/components/UserMenu/UserMenu.test.tsx +702 -0
- package/src/components/UserMenu/UserMenu.tsx +243 -0
- package/src/components/UserMenu/index.ts +3 -0
- package/src/components/examples/PermissionExample.tsx +150 -0
- package/src/components/index.ts +434 -0
- package/src/components.ts +19 -0
- package/src/constants/performance.ts +14 -0
- package/src/examples/CorrectPublicPageImplementation.tsx +301 -0
- package/src/examples/PublicEventPage.tsx +274 -0
- package/src/examples/PublicPageApp.tsx +308 -0
- package/src/examples/PublicPageUsageExample.tsx +216 -0
- package/src/hooks/index.ts +56 -0
- package/src/hooks/public/index.ts +34 -0
- package/src/hooks/public/usePublicEvent.ts +261 -0
- package/src/hooks/public/usePublicEventLogo.ts +285 -0
- package/src/hooks/public/usePublicRouteParams.ts +259 -0
- package/src/hooks/useAppConfig.ts +94 -0
- package/src/hooks/useComponentPerformance.ts +39 -0
- package/src/hooks/useCounter.test.ts +135 -0
- package/src/hooks/useDataTablePerformance.ts +387 -0
- package/src/hooks/useDataTableState.ts +110 -0
- package/src/hooks/useDebounce.test.ts +375 -0
- package/src/hooks/useDebounce.ts +18 -0
- package/src/hooks/useFocusManagement.ts +161 -0
- package/src/hooks/useFocusTrap.ts +155 -0
- package/src/hooks/useInactivityTracker.ts +372 -0
- package/src/hooks/useIsMobile.ts +42 -0
- package/src/hooks/useKeyboardShortcuts.ts +237 -0
- package/src/hooks/useOrganisationPermissions.test.ts +528 -0
- package/src/hooks/useOrganisationPermissions.ts +208 -0
- package/src/hooks/useOrganisationSecurity.test.ts +734 -0
- package/src/hooks/useOrganisationSecurity.ts +262 -0
- package/src/hooks/usePerformanceMonitor.ts +128 -0
- package/src/hooks/usePermissionCache.test.ts +542 -0
- package/src/hooks/usePermissionCache.ts +455 -0
- package/src/hooks/useSecureDataAccess.ts +586 -0
- package/src/hooks/useStorage.ts +274 -0
- package/src/hooks/useToast.ts +242 -0
- package/src/hooks/useZodForm.ts +28 -0
- package/src/index.ts +199 -0
- package/src/providers/AuthProvider.tsx +369 -0
- package/src/providers/EventProvider.tsx +324 -0
- package/src/providers/InactivityProvider.tsx +238 -0
- package/src/providers/OrganisationProvider.tsx +588 -0
- package/src/providers/UnifiedAuthProvider.tsx +327 -0
- package/src/providers/index.ts +17 -0
- package/src/rbac/README.md +885 -0
- package/src/rbac/__tests__/integration.test.tsx +218 -0
- package/src/rbac/adapters.tsx +726 -0
- package/src/rbac/api.test.ts +441 -0
- package/src/rbac/api.ts +339 -0
- package/src/rbac/audit-enhanced.ts +339 -0
- package/src/rbac/audit.ts +338 -0
- package/src/rbac/cache.ts +215 -0
- package/src/rbac/components/EnhancedNavigationMenu.tsx +294 -0
- package/src/rbac/components/NavigationGuard.tsx +294 -0
- package/src/rbac/components/NavigationProvider.tsx +314 -0
- package/src/rbac/components/PagePermissionGuard.tsx +430 -0
- package/src/rbac/components/PagePermissionProvider.tsx +274 -0
- package/src/rbac/components/PermissionEnforcer.tsx +307 -0
- package/src/rbac/components/RoleBasedRouter.tsx +425 -0
- package/src/rbac/components/SecureDataProvider.tsx +319 -0
- package/src/rbac/components/index.ts +64 -0
- package/src/rbac/config.ts +133 -0
- package/src/rbac/docs/event-based-apps.md +285 -0
- package/src/rbac/engine.ts +1026 -0
- package/src/rbac/eslint-rules.js +285 -0
- package/src/rbac/examples/CompleteRBACExample.tsx +323 -0
- package/src/rbac/examples/EventBasedApp.tsx +238 -0
- package/src/rbac/hooks/index.ts +21 -0
- package/src/rbac/hooks/useCan.test.ts +461 -0
- package/src/rbac/hooks/usePermissions.test.ts +359 -0
- package/src/rbac/hooks/usePermissions.ts +567 -0
- package/src/rbac/hooks/useRBAC.simple.test.ts +90 -0
- package/src/rbac/hooks/useRBAC.test.ts +503 -0
- package/src/rbac/hooks/useRBAC.ts +262 -0
- package/src/rbac/index.ts +109 -0
- package/src/rbac/permissions.ts +293 -0
- package/src/rbac/providers/RBACProvider.tsx +634 -0
- package/src/rbac/providers/__tests__/RBACProvider.test.tsx +687 -0
- package/src/rbac/providers/index.ts +11 -0
- package/src/rbac/secureClient.ts +244 -0
- package/src/rbac/security.ts +346 -0
- package/src/rbac/testing/index.tsx +340 -0
- package/src/rbac/types.ts +343 -0
- package/src/rbac/utils/eventContext.ts +83 -0
- package/src/styles/core.css +364 -0
- package/src/styles/index.ts +51 -0
- package/src/theming/runtime.ts +187 -0
- package/src/types/database.ts +472 -0
- package/src/types/guards.ts +30 -0
- package/src/types/index.ts +25 -0
- package/src/types/organisation.ts +184 -0
- package/src/types/security.ts +70 -0
- package/src/types/supabase.ts +166 -0
- package/src/types/theme.ts +6 -0
- package/src/types/unified.ts +262 -0
- package/src/types/validation.ts +164 -0
- package/src/types/vitest-globals.d.ts +43 -0
- package/src/utils/__mocks__/supabaseMock.ts +75 -0
- package/src/utils/__mocks__/supabaseMock.tsx +198 -0
- package/src/utils/appConfig.ts +47 -0
- package/src/utils/appIdResolver.ts +130 -0
- package/src/utils/appNameResolver.ts +190 -0
- package/src/utils/audit.ts +127 -0
- package/src/utils/auth-utils.ts +96 -0
- package/src/utils/bundleAnalysis.ts +129 -0
- package/src/utils/cn.ts +7 -0
- package/src/utils/debugLogger.ts +46 -0
- package/src/utils/deviceFingerprint.ts +215 -0
- package/src/utils/dynamicUtils.ts +105 -0
- package/src/utils/formatDate.test.ts +241 -0
- package/src/utils/formatting.ts +77 -0
- package/src/utils/index.ts +145 -0
- package/src/utils/lazyLoad.tsx +44 -0
- package/src/utils/organisationContext.ts +135 -0
- package/src/utils/performanceBenchmark.ts +64 -0
- package/src/utils/performanceBudgets.ts +111 -0
- package/src/utils/permissionTypes.ts +37 -0
- package/src/utils/permissionUtils.ts +31 -0
- package/src/utils/print/PrintDataProcessor.ts +390 -0
- package/src/utils/print/examples/PrintUtilitiesShowcase.tsx +397 -0
- package/src/utils/print/index.ts +29 -0
- package/src/utils/print/types.ts +196 -0
- package/src/utils/print/usePrintOptimization.ts +272 -0
- package/src/utils/sanitization.ts +264 -0
- package/src/utils/schemaUtils.ts +37 -0
- package/src/utils/secureDataAccess.ts +361 -0
- package/src/utils/secureErrors.ts +79 -0
- package/src/utils/secureStorage.ts +244 -0
- package/src/utils/security.ts +156 -0
- package/src/utils/securityMonitor.ts +45 -0
- package/src/utils/sessionTracking.ts +170 -0
- package/src/utils/storage/README.md +348 -0
- package/src/utils/storage/config.ts +100 -0
- package/src/utils/storage/helpers.ts +359 -0
- package/src/utils/storage/index.ts +36 -0
- package/src/utils/storage/types.ts +90 -0
- package/src/utils/validation.ts +111 -0
- package/src/utils/validationUtils.ts +120 -0
- package/src/validation/common.ts +53 -0
- package/src/validation/csrf.ts +214 -0
- package/src/validation/index.ts +43 -0
- package/src/validation/passwordSchema.ts +125 -0
- package/src/validation/sanitization.ts +96 -0
- package/src/validation/schemaUtils.ts +42 -0
- package/src/validation/sqlInjectionProtection.ts +242 -0
- package/src/validation/user.ts +34 -0
- package/dist/chunk-4MCJAK7J.js.map +0 -1
- package/dist/chunk-4ZTIEYU2.js.map +0 -1
- package/dist/chunk-H4PZ4B3Y.js.map +0 -1
- package/dist/chunk-IOX76PSM.js.map +0 -1
- package/dist/chunk-JUUNUW3O.js.map +0 -1
- package/dist/chunk-KK6WIDK6.js +0 -63
- package/dist/chunk-KK6WIDK6.js.map +0 -1
- package/dist/chunk-U7DY5T33.js +0 -11
- package/dist/chunk-U7DY5T33.js.map +0 -1
- package/dist/chunk-WHLSWC6W.js.map +0 -1
- package/dist/chunk-XI7QFSSC.js +0 -790
- package/dist/chunk-XI7QFSSC.js.map +0 -1
- package/dist/chunk-XIJMMBDD.js +0 -73
- package/dist/chunk-XIJMMBDD.js.map +0 -1
- package/dist/chunk-YNU5QJ4S.js.map +0 -1
- package/dist/chunk-YWYCNGWH.js +0 -2070
- package/dist/chunk-YWYCNGWH.js.map +0 -1
- package/dist/chunk-ZJ3UKPIW.js +0 -952
- package/dist/chunk-ZJ3UKPIW.js.map +0 -1
- package/dist/useAppConfig-CZNJJsT_.d.ts +0 -148
- package/dist/{DataTable-2LB6HI6V.js.map → DataTable-ZQDRE46Q.js.map} +0 -0
- package/dist/{api-AIJ3IJX3.js.map → api-H5A3H4IR.js.map} +0 -0
- package/dist/{audit-PD5L5ZSC.js.map → appNameResolver-7GHF5ED2.js.map} +0 -0
- package/dist/{chunk-DC5AMYBS.js.map → audit-BUW3LMJB.js.map} +0 -0
- package/dist/{validation-D2-NNCCE.d.ts → validation-PM_iOaTI.d.ts} +6 -6
package/docs/styles/README.md
CHANGED
|
@@ -1,83 +1,190 @@
|
|
|
1
1
|
# PACE Core Styling Guide
|
|
2
2
|
|
|
3
|
-
This guide explains how to properly style PACE Core components using our
|
|
3
|
+
This guide explains how to properly style PACE Core components using our two-file CSS architecture with Tailwind v4 and native utilities.
|
|
4
4
|
|
|
5
5
|
> **🎨 New to PACE Core?** Start with the [Quick Start Guide](./getting-started/quick-start.md) to get up and running in 5 minutes.
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
PACE Core uses a **
|
|
9
|
+
PACE Core uses a **two-file CSS architecture** that provides:
|
|
10
10
|
|
|
11
|
-
1. **
|
|
12
|
-
2. **
|
|
13
|
-
3. **
|
|
14
|
-
4. **
|
|
15
|
-
5. **No Conflicts** -
|
|
11
|
+
1. **Core Foundation** - Fonts, resets, typography, semantic tokens, and component styles
|
|
12
|
+
2. **App-Specific Colors** - Each consuming app defines its own main/sec/acc color palettes
|
|
13
|
+
3. **Native Utilities** - Native Tailwind utilities (bg-main-600, text-sec-700, etc.)
|
|
14
|
+
4. **Content Scanning** - Each app handles its own Tailwind content scanning
|
|
15
|
+
5. **No Conflicts** - Clean separation between core styles and app-specific theming
|
|
16
16
|
|
|
17
|
-
> **💡 Why This Architecture?** This approach provides maximum flexibility while maintaining consistency. Apps own their brand colors, while pace-core provides the styling foundation and
|
|
17
|
+
> **💡 Why This Architecture?** This approach provides maximum flexibility while maintaining consistency. Apps own their brand colors and content scanning, while pace-core provides the complete styling foundation and semantic token system.
|
|
18
18
|
|
|
19
|
-
## The
|
|
19
|
+
## The Two-File CSS Architecture
|
|
20
20
|
|
|
21
|
-
PACE Core
|
|
21
|
+
PACE Core uses a clean separation of concerns with two CSS files:
|
|
22
22
|
|
|
23
|
-
###
|
|
23
|
+
### `styles/core.css` - Core Foundation (from pace-core package)
|
|
24
24
|
- **Fonts**: Georama, Open Sans, Reddit Mono with `font-display: swap`
|
|
25
25
|
- **Base element styles**: h1-h6, p, a, lists, code, etc.
|
|
26
26
|
- **Resets**: CSS resets and normalization
|
|
27
|
-
- **
|
|
27
|
+
- **Semantic color mappings**: Maps main/sec/acc palettes to semantic tokens
|
|
28
28
|
- **Focus styles**: Accessible focus indicators
|
|
29
|
-
|
|
30
|
-
### 2. `styles/theme.css` - Native Utilities
|
|
31
|
-
- **Color mappings**: Maps main/sec/acc palettes to native Tailwind utilities
|
|
32
29
|
- **Typography**: Font family mappings (font-sans, font-serif, font-mono)
|
|
33
30
|
- **Shadows & radii**: Named theme tokens for consistent styling
|
|
34
31
|
- **Ring colors**: Focus ring color mappings
|
|
32
|
+
- **Component styles**: All pace-core component styling
|
|
33
|
+
- **NO color palettes**: Apps define their own main/sec/acc colors
|
|
34
|
+
- **NO source directives**: Apps handle their own content scanning
|
|
35
|
+
|
|
36
|
+
### `src/app.css` - App-Specific Configuration (in each consuming app)
|
|
37
|
+
- **Color palettes**: Main, secondary, and accent palettes with all shades (50-950)
|
|
38
|
+
- **Source directives**: Tailwind v4 `@source` directives for content scanning
|
|
39
|
+
- **App-specific theming**: Any additional app-specific CSS variables
|
|
40
|
+
|
|
35
41
|
|
|
36
|
-
|
|
37
|
-
- **Shade remap**: Reverses lightness (50⇄950, 100⇄900, etc.)
|
|
38
|
-
- **No hue shifts**: Only lightness changes, colors stay true to brand
|
|
39
|
-
- **Neutral updates**: Updates background/foreground for dark mode
|
|
42
|
+
## App-Specific Color Palettes
|
|
40
43
|
|
|
41
|
-
|
|
44
|
+
Each consuming app must define its own color palettes in `src/app.css`. This provides complete control over branding while maintaining consistency through the semantic token system.
|
|
42
45
|
|
|
43
|
-
|
|
46
|
+
### Required Color Palette Structure
|
|
47
|
+
|
|
48
|
+
Every app must define three color palettes with complete shade ranges (50-950):
|
|
44
49
|
|
|
45
50
|
```css
|
|
46
|
-
/* app.css - Your app's brand colors */
|
|
47
51
|
@theme static {
|
|
48
|
-
/*
|
|
49
|
-
--color-main-raw: oklch(0.
|
|
50
|
-
--color-main-50: oklch(0.98 0.
|
|
51
|
-
--color-main-100: oklch(0.96 0.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
--color-
|
|
56
|
-
--color-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
--color-
|
|
61
|
-
|
|
62
|
-
/*
|
|
63
|
-
--color-sec-raw: oklch(0.58 0.23 280.75);
|
|
64
|
-
--color-sec-50: oklch(0.98 0.003 280.75);
|
|
65
|
-
/* ... complete palette for sec */
|
|
66
|
-
|
|
67
|
-
/* ACC palette - your accent brand color */
|
|
68
|
-
--color-acc-raw: oklch(0.64 0.21 37.76);
|
|
69
|
-
--color-acc-50: oklch(0.98 0.003 37.76);
|
|
70
|
-
/* ... complete palette for acc */
|
|
52
|
+
/* Main palette - Primary brand color */
|
|
53
|
+
--color-main-raw: oklch(0.58 0.23 300);
|
|
54
|
+
--color-main-50: oklch(0.98 0.003 300);
|
|
55
|
+
--color-main-100: oklch(0.96 0.014 300);
|
|
56
|
+
/* ... continue through 950 */
|
|
57
|
+
|
|
58
|
+
/* Secondary palette - Supporting color */
|
|
59
|
+
--color-sec-raw: oklch(0.675 0.169 244.75);
|
|
60
|
+
--color-sec-50: oklch(0.98 0.003 244.75);
|
|
61
|
+
/* ... continue through 950 */
|
|
62
|
+
|
|
63
|
+
/* Accent palette - Highlight color */
|
|
64
|
+
--color-acc-raw: oklch(0.64 0.23 7.385);
|
|
65
|
+
--color-acc-50: oklch(0.98 0.003 7.385);
|
|
66
|
+
/* ... continue through 950 */
|
|
71
67
|
}
|
|
72
68
|
```
|
|
73
69
|
|
|
74
70
|
### Benefits
|
|
75
71
|
|
|
76
|
-
1. **Brand
|
|
77
|
-
2. **
|
|
78
|
-
3. **
|
|
79
|
-
4. **Easy
|
|
80
|
-
5. **Future-Proof**: New features work with
|
|
72
|
+
1. **Brand Control**: Each app defines its own unique color palette
|
|
73
|
+
2. **Semantic Consistency**: All apps use the same semantic token system
|
|
74
|
+
3. **Native Utilities**: Use standard Tailwind classes (`bg-main-600`, `text-sec-700`)
|
|
75
|
+
4. **Easy Maintenance**: Colors are managed per app, not centrally
|
|
76
|
+
5. **Future-Proof**: New features work with any color palette
|
|
77
|
+
|
|
78
|
+
## ⚠️ CRITICAL: Required App Configuration
|
|
79
|
+
|
|
80
|
+
**IMPORTANT**: Each consuming app must create a `src/app.css` file with proper color palettes and source directives. Without this configuration, components will be unstyled.
|
|
81
|
+
|
|
82
|
+
### Required App CSS File
|
|
83
|
+
|
|
84
|
+
**You MUST create `src/app.css` in your consuming app with the following structure:**
|
|
85
|
+
|
|
86
|
+
```css
|
|
87
|
+
@import "tailwindcss";
|
|
88
|
+
|
|
89
|
+
/* @source directives for Tailwind v4 content scanning */
|
|
90
|
+
@source "./src/**/*.{js,ts,jsx,tsx}";
|
|
91
|
+
@source "./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
92
|
+
@source "./node_modules/@jmruthers/pace-core/src/components/**/*.{js,ts,jsx,tsx}";
|
|
93
|
+
@source "./node_modules/@jmruthers/pace-core/src/providers/**/*.{js,ts,jsx,tsx}";
|
|
94
|
+
@source "./node_modules/@jmruthers/pace-core/src/hooks/**/*.{js,ts,jsx,tsx}";
|
|
95
|
+
@source "./node_modules/@jmruthers/pace-core/src/utils/**/*.{js,ts,jsx,tsx}";
|
|
96
|
+
@source "./node_modules/@jmruthers/pace-core/src/types/**/*.{js,ts,jsx,tsx}";
|
|
97
|
+
@source "./node_modules/@jmruthers/pace-core/src/validation/**/*.{js,ts,jsx,tsx}";
|
|
98
|
+
@source "./node_modules/@jmruthers/pace-core/src/rbac/**/*.{js,ts,jsx,tsx}";
|
|
99
|
+
|
|
100
|
+
/* This file is only to contain the color palette for the app. NEVER ADD ANY CSS OVERRIDES TO THIS FILE!! */
|
|
101
|
+
@theme static {
|
|
102
|
+
/* Main palette - Primary brand color */
|
|
103
|
+
--color-main-raw: oklch(0.58 0.23 300);
|
|
104
|
+
--color-main-50: oklch(0.98 0.003 300);
|
|
105
|
+
--color-main-100: oklch(0.96 0.014 300);
|
|
106
|
+
--color-main-200: oklch(0.927 0.033 300);
|
|
107
|
+
--color-main-300: oklch(0.881 0.059 300);
|
|
108
|
+
--color-main-400: oklch(0.822 0.093 300);
|
|
109
|
+
--color-main-500: oklch(0.75 0.133 300);
|
|
110
|
+
--color-main-600: oklch(0.665 0.182 300);
|
|
111
|
+
--color-main-700: oklch(0.58 0.23 300);
|
|
112
|
+
--color-main-800: oklch(0.456 0.158 300);
|
|
113
|
+
--color-main-900: oklch(0.332 0.099 300);
|
|
114
|
+
--color-main-950: oklch(0.195 0.047 300);
|
|
115
|
+
|
|
116
|
+
/* Secondary palette - Supporting color */
|
|
117
|
+
--color-sec-raw: oklch(0.675 0.169 244.75);
|
|
118
|
+
--color-sec-50: oklch(0.98 0.003 244.75);
|
|
119
|
+
--color-sec-100: oklch(0.96 0.014 244.75);
|
|
120
|
+
--color-sec-200: oklch(0.927 0.032 244.75);
|
|
121
|
+
--color-sec-300: oklch(0.881 0.057 244.75);
|
|
122
|
+
--color-sec-400: oklch(0.822 0.089 244.75);
|
|
123
|
+
--color-sec-500: oklch(0.75 0.128 244.75);
|
|
124
|
+
--color-sec-600: oklch(0.675 0.169 244.75);
|
|
125
|
+
--color-sec-700: oklch(0.567 0.134 244.75);
|
|
126
|
+
--color-sec-800: oklch(0.456 0.101 244.75);
|
|
127
|
+
--color-sec-900: oklch(0.332 0.068 244.75);
|
|
128
|
+
--color-sec-950: oklch(0.195 0.037 244.75);
|
|
129
|
+
|
|
130
|
+
/* Accent palette - Highlight color */
|
|
131
|
+
--color-acc-raw: oklch(0.64 0.23 7.385);
|
|
132
|
+
--color-acc-50: oklch(0.98 0.003 7.385);
|
|
133
|
+
--color-acc-100: oklch(0.96 0.017 7.385);
|
|
134
|
+
--color-acc-200: oklch(0.927 0.039 7.385);
|
|
135
|
+
--color-acc-300: oklch(0.881 0.069 7.385);
|
|
136
|
+
--color-acc-400: oklch(0.822 0.109 7.385);
|
|
137
|
+
--color-acc-500: oklch(0.75 0.157 7.385);
|
|
138
|
+
--color-acc-600: oklch(0.64 0.23 7.385);
|
|
139
|
+
--color-acc-700: oklch(0.567 0.193 7.385);
|
|
140
|
+
--color-acc-800: oklch(0.456 0.142 7.385);
|
|
141
|
+
--color-acc-900: oklch(0.332 0.092 7.385);
|
|
142
|
+
--color-acc-950: oklch(0.195 0.047 7.385);
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Required Import Order
|
|
147
|
+
|
|
148
|
+
**You MUST import both CSS files in the correct order:**
|
|
149
|
+
|
|
150
|
+
```tsx
|
|
151
|
+
// In your app's entry point (e.g., main.tsx)
|
|
152
|
+
import '@jmruthers/pace-core/styles/core.css'; // Import core first
|
|
153
|
+
import './app.css'; // Import app-specific colors second
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Why This Configuration is Critical
|
|
157
|
+
|
|
158
|
+
Without proper app.css configuration:
|
|
159
|
+
- ❌ Pace-core component styles will be missing
|
|
160
|
+
- ❌ Colors, spacing, and typography won't work
|
|
161
|
+
- ❌ The UI will be severely compromised
|
|
162
|
+
- ❌ The entire point of using this UI library is undermined
|
|
163
|
+
|
|
164
|
+
### What This Configuration Does
|
|
165
|
+
|
|
166
|
+
1. **Scans Your Source Files**: Detects Tailwind classes in your app's source code
|
|
167
|
+
2. **Scans Pace-Core Components**: Ensures all Tailwind classes used in pace-core components are included
|
|
168
|
+
3. **Defines Color Palettes**: Provides the main/sec/acc color values that core.css references
|
|
169
|
+
4. **Enables Proper Styling**: Allows pace-core components to render with correct styles
|
|
170
|
+
|
|
171
|
+
### Verification
|
|
172
|
+
|
|
173
|
+
After configuration, test with a simple component:
|
|
174
|
+
|
|
175
|
+
```tsx
|
|
176
|
+
import { Button, Card } from '@jmruthers/pace-core';
|
|
177
|
+
|
|
178
|
+
function TestComponent() {
|
|
179
|
+
return (
|
|
180
|
+
<Card className="p-4">
|
|
181
|
+
<Button variant="primary">Test Button</Button>
|
|
182
|
+
</Card>
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The component should render with proper PACE Core styling. If it appears unstyled, check your app.css configuration.
|
|
81
188
|
|
|
82
189
|
## Quick Start
|
|
83
190
|
|
|
@@ -87,19 +194,38 @@ Each consuming app defines its own brand colors in `app.css`:
|
|
|
87
194
|
npm install @jmruthers/pace-core
|
|
88
195
|
```
|
|
89
196
|
|
|
90
|
-
### 2.
|
|
197
|
+
### 2. Create Your App CSS File
|
|
91
198
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
import
|
|
96
|
-
|
|
97
|
-
|
|
199
|
+
Create `src/app.css` in your consuming app with your brand colors and source directives:
|
|
200
|
+
|
|
201
|
+
```css
|
|
202
|
+
@import "tailwindcss";
|
|
203
|
+
|
|
204
|
+
/* @source directives for Tailwind v4 content scanning */
|
|
205
|
+
@source "./src/**/*.{js,ts,jsx,tsx}";
|
|
206
|
+
@source "./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
207
|
+
@source "./node_modules/@jmruthers/pace-core/src/components/**/*.{js,ts,jsx,tsx}";
|
|
208
|
+
@source "./node_modules/@jmruthers/pace-core/src/providers/**/*.{js,ts,jsx,tsx}";
|
|
209
|
+
@source "./node_modules/@jmruthers/pace-core/src/hooks/**/*.{js,ts,jsx,tsx}";
|
|
210
|
+
@source "./node_modules/@jmruthers/pace-core/src/utils/**/*.{js,ts,jsx,tsx}";
|
|
211
|
+
@source "./node_modules/@jmruthers/pace-core/src/types/**/*.{js,ts,jsx,tsx}";
|
|
212
|
+
@source "./node_modules/@jmruthers/pace-core/src/validation/**/*.{js,ts,jsx,tsx}";
|
|
213
|
+
@source "./node_modules/@jmruthers/pace-core/src/rbac/**/*.{js,ts,jsx,tsx}";
|
|
214
|
+
|
|
215
|
+
/* Define your brand color palettes */
|
|
216
|
+
@theme static {
|
|
217
|
+
/* Your main, secondary, and accent color palettes here */
|
|
218
|
+
/* See the example above for the complete structure */
|
|
219
|
+
}
|
|
98
220
|
```
|
|
99
221
|
|
|
100
|
-
### 3.
|
|
222
|
+
### 3. Import Both CSS Files
|
|
101
223
|
|
|
102
|
-
|
|
224
|
+
```tsx
|
|
225
|
+
// In your app's entry point (e.g., main.tsx)
|
|
226
|
+
import '@jmruthers/pace-core/styles/core.css'; // Import core first
|
|
227
|
+
import './app.css'; // Import app-specific colors second
|
|
228
|
+
```
|
|
103
229
|
|
|
104
230
|
### 4. Use Native Tailwind Utilities
|
|
105
231
|
|
|
@@ -119,33 +245,6 @@ function MyComponent() {
|
|
|
119
245
|
}
|
|
120
246
|
```
|
|
121
247
|
|
|
122
|
-
## Dark Mode
|
|
123
|
-
|
|
124
|
-
### Enable Dark Mode
|
|
125
|
-
|
|
126
|
-
Add a dark mode toggle to your app:
|
|
127
|
-
|
|
128
|
-
```tsx
|
|
129
|
-
function DarkModeToggle() {
|
|
130
|
-
const toggleDarkMode = () => {
|
|
131
|
-
document.documentElement.toggleAttribute('data-mode', true);
|
|
132
|
-
};
|
|
133
|
-
|
|
134
|
-
return (
|
|
135
|
-
<button onClick={toggleDarkMode}>
|
|
136
|
-
Toggle Dark Mode
|
|
137
|
-
</button>
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Dark Mode Behavior
|
|
143
|
-
|
|
144
|
-
- Dark mode automatically reverses all color shades (50⇄950, 100⇄900, etc.)
|
|
145
|
-
- No hue changes - only lightness reversal
|
|
146
|
-
- All components automatically adapt to dark mode
|
|
147
|
-
- Uses `[data-mode="dark"]` selector
|
|
148
|
-
|
|
149
248
|
## Dynamic Theming
|
|
150
249
|
|
|
151
250
|
### Organisation/Event Colors
|
|
@@ -193,6 +292,19 @@ const themeCSS = generateSSRThemeCSS(paletteData);
|
|
|
193
292
|
|
|
194
293
|
Same patterns for `sec-*` and `acc-*` palettes.
|
|
195
294
|
|
|
295
|
+
### Semantic Color Utilities
|
|
296
|
+
|
|
297
|
+
PACE Core also provides semantic color utilities that automatically map to your palettes:
|
|
298
|
+
|
|
299
|
+
- `bg-background`, `text-foreground` - Main background and text
|
|
300
|
+
- `bg-primary`, `text-primary-foreground` - Primary actions
|
|
301
|
+
- `bg-secondary`, `text-secondary-foreground` - Secondary elements
|
|
302
|
+
- `bg-destructive`, `text-destructive-foreground` - Destructive actions
|
|
303
|
+
- `bg-muted`, `text-muted-foreground` - Muted content
|
|
304
|
+
- `bg-accent`, `text-accent-foreground` - Accent elements
|
|
305
|
+
- `bg-card`, `text-card-foreground` - Card backgrounds
|
|
306
|
+
- `bg-popover`, `text-popover-foreground` - Popover backgrounds
|
|
307
|
+
|
|
196
308
|
### Typography
|
|
197
309
|
|
|
198
310
|
- `font-sans` - Open Sans
|
|
@@ -210,8 +322,8 @@ Same patterns for `sec-*` and `acc-*` palettes.
|
|
|
210
322
|
### Before (Old System)
|
|
211
323
|
```tsx
|
|
212
324
|
// Old app-* classes
|
|
213
|
-
<div className="bg-
|
|
214
|
-
<Button className="bg-
|
|
325
|
+
<div className="bg-main-500 text-main-50">
|
|
326
|
+
<Button className="bg-sec-600 hover:bg-sec-700">
|
|
215
327
|
Click me
|
|
216
328
|
</Button>
|
|
217
329
|
</div>
|
|
@@ -232,7 +344,10 @@ Same patterns for `sec-*` and `acc-*` palettes.
|
|
|
232
344
|
- **No arbitrary values**: Use only standard utilities like `bg-main-600`, not `bg-[oklch(...)]`
|
|
233
345
|
- **No CVA**: Components use native Tailwind utilities, not class-variance-authority
|
|
234
346
|
- **No utility aliases**: Use standard Tailwind class names
|
|
235
|
-
- **App
|
|
347
|
+
- **App-specific palettes required**: Each app must define its own main/sec/acc color palettes in `app.css`
|
|
348
|
+
- **Tailwind v4 only**: Uses CSS-first approach with `@theme` blocks, no `tailwind.config.js`
|
|
349
|
+
- **Two-file architecture**: Must use both `core.css` and `app.css` files
|
|
350
|
+
- **Source directives required**: Each app must include `@source` directives for pace-core scanning
|
|
236
351
|
|
|
237
352
|
## Troubleshooting
|
|
238
353
|
|
|
@@ -240,41 +355,41 @@ Same patterns for `sec-*` and `acc-*` palettes.
|
|
|
240
355
|
|
|
241
356
|
**Problem**: Components appear unstyled or with default browser styling.
|
|
242
357
|
|
|
243
|
-
**Solution**: Ensure you've imported
|
|
358
|
+
**Solution**: Ensure you've imported both CSS files in the correct order:
|
|
244
359
|
```tsx
|
|
245
|
-
import '@jmruthers/pace-core/styles/
|
|
246
|
-
import '
|
|
247
|
-
import '@jmruthers/pace-core/styles/dark.css';
|
|
360
|
+
import '@jmruthers/pace-core/styles/core.css'; // Import core first
|
|
361
|
+
import './app.css'; // Import app-specific colors second
|
|
248
362
|
```
|
|
249
363
|
|
|
250
364
|
**Problem**: Colors don't work (bg-main-600 shows as gray).
|
|
251
365
|
|
|
252
|
-
**Solution**:
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}
|
|
258
|
-
```
|
|
366
|
+
**Solution**: Check that you've created `src/app.css` with your color palettes. If colors aren't working, verify that:
|
|
367
|
+
1. You've created `src/app.css` with complete color palettes (main, sec, acc)
|
|
368
|
+
2. You've imported both CSS files in the correct order
|
|
369
|
+
3. Your color palettes include all shades (50-950)
|
|
370
|
+
4. Tailwind v4 is properly configured
|
|
259
371
|
|
|
260
|
-
**Problem**:
|
|
372
|
+
**Problem**: Fonts don't load correctly.
|
|
261
373
|
|
|
262
|
-
**Solution**: Ensure you'
|
|
263
|
-
```tsx
|
|
264
|
-
document.documentElement.setAttribute('data-mode', 'dark');
|
|
265
|
-
```
|
|
374
|
+
**Solution**: Fonts are included in the core.css file. Ensure you're importing `core.css` which contains the font definitions.
|
|
266
375
|
|
|
267
|
-
**Problem**:
|
|
376
|
+
**Problem**: Tailwind classes from pace-core components are missing.
|
|
268
377
|
|
|
269
|
-
**Solution**:
|
|
378
|
+
**Solution**: Check that your `src/app.css` includes the proper `@source` directives for pace-core:
|
|
379
|
+
```css
|
|
380
|
+
@source "./node_modules/@jmruthers/pace-core/src/**/*.{js,ts,jsx,tsx}";
|
|
381
|
+
@source "./node_modules/@jmruthers/pace-core/src/components/**/*.{js,ts,jsx,tsx}";
|
|
382
|
+
/* ... other pace-core source directives */
|
|
383
|
+
```
|
|
270
384
|
|
|
271
385
|
## Best Practices
|
|
272
386
|
|
|
273
|
-
1. **
|
|
274
|
-
2. **
|
|
387
|
+
1. **Create app.css** - Always create `src/app.css` with your brand colors and source directives
|
|
388
|
+
2. **Import both CSS files** - Import core.css first, then app.css
|
|
275
389
|
3. **Use native utilities** - Stick to standard Tailwind classes like `bg-main-600`
|
|
276
|
-
4. **
|
|
277
|
-
5. **
|
|
390
|
+
4. **Complete color palettes** - Always define all shades (50-950) for main, sec, and acc palettes
|
|
391
|
+
5. **Use semantic tokens** - Prefer `bg-primary` over `bg-main-600` for better maintainability
|
|
392
|
+
6. **Keep app.css clean** - Only put color palettes and source directives in app.css, no other CSS
|
|
278
393
|
|
|
279
394
|
## Support
|
|
280
395
|
|
package/docs/testing/README.md
CHANGED
|
@@ -624,23 +624,19 @@ describe('Visual Regression Tests', () => {
|
|
|
624
624
|
|
|
625
625
|
```tsx
|
|
626
626
|
import { render } from '@testing-library/react';
|
|
627
|
-
import {
|
|
627
|
+
import { Button } from '@jmruthers/pace-core';
|
|
628
628
|
|
|
629
|
-
describe('
|
|
630
|
-
test('Button renders
|
|
629
|
+
describe('Component Tests', () => {
|
|
630
|
+
test('Button renders correctly', () => {
|
|
631
631
|
const { container } = render(
|
|
632
|
-
<
|
|
633
|
-
<Button>Light Theme Button</Button>
|
|
634
|
-
</ThemeProvider>
|
|
632
|
+
<Button>Test Button</Button>
|
|
635
633
|
);
|
|
636
634
|
expect(container.firstChild).toMatchSnapshot();
|
|
637
635
|
});
|
|
638
636
|
|
|
639
|
-
test('Button renders
|
|
637
|
+
test('Button renders correctly', () => {
|
|
640
638
|
const { container } = render(
|
|
641
|
-
<
|
|
642
|
-
<Button>Dark Theme Button</Button>
|
|
643
|
-
</ThemeProvider>
|
|
639
|
+
<Button>Test Button</Button>
|
|
644
640
|
);
|
|
645
641
|
expect(container.firstChild).toMatchSnapshot();
|
|
646
642
|
});
|