@jmruthers/pace-core 0.5.102 → 0.5.103

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 (141) hide show
  1. package/dist/{DataTable-DXELRJIX.js → DataTable-EEDFYMJP.js} +2 -2
  2. package/dist/{PublicLoadingSpinner-Cvgk-V0F.d.ts → PublicLoadingSpinner-48ewSMKK.d.ts} +1 -96
  3. package/dist/{chunk-7ME4Z5OY.js → chunk-5SGBVBRU.js} +12 -148
  4. package/dist/chunk-5SGBVBRU.js.map +1 -0
  5. package/dist/{chunk-EVVRUGQ2.js → chunk-62AVH7CM.js} +78 -55
  6. package/dist/{chunk-EVVRUGQ2.js.map → chunk-62AVH7CM.js.map} +1 -1
  7. package/dist/{chunk-UDWTCBSH.js → chunk-SZWCMVTQ.js} +12 -175
  8. package/dist/chunk-SZWCMVTQ.js.map +1 -0
  9. package/dist/{chunk-SZWRW5FD.js → chunk-X33A4WWI.js} +23 -3
  10. package/dist/{chunk-SZWRW5FD.js.map → chunk-X33A4WWI.js.map} +1 -1
  11. package/dist/components.d.ts +1 -1
  12. package/dist/components.js +3 -9
  13. package/dist/components.js.map +1 -1
  14. package/dist/hooks.d.ts +1 -1
  15. package/dist/hooks.js +2 -9
  16. package/dist/hooks.js.map +1 -1
  17. package/dist/index.d.ts +2 -2
  18. package/dist/index.js +4 -16
  19. package/dist/index.js.map +1 -1
  20. package/dist/types.js +3 -3
  21. package/dist/{usePublicRouteParams-BwMR2uub.d.ts → usePublicRouteParams-BiXgKiYa.d.ts} +1 -117
  22. package/dist/utils.js +1 -1
  23. package/docs/api/classes/ColumnFactory.md +1 -1
  24. package/docs/api/classes/ErrorBoundary.md +1 -1
  25. package/docs/api/classes/InvalidScopeError.md +1 -1
  26. package/docs/api/classes/MissingUserContextError.md +1 -1
  27. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  28. package/docs/api/classes/PermissionDeniedError.md +1 -1
  29. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  30. package/docs/api/classes/RBACAuditManager.md +1 -1
  31. package/docs/api/classes/RBACCache.md +1 -1
  32. package/docs/api/classes/RBACEngine.md +1 -1
  33. package/docs/api/classes/RBACError.md +1 -1
  34. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  35. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  36. package/docs/api/classes/StorageUtils.md +1 -1
  37. package/docs/api/enums/FileCategory.md +1 -1
  38. package/docs/api/interfaces/AggregateConfig.md +1 -1
  39. package/docs/api/interfaces/ButtonProps.md +1 -1
  40. package/docs/api/interfaces/CardProps.md +1 -1
  41. package/docs/api/interfaces/ColorPalette.md +1 -1
  42. package/docs/api/interfaces/ColorShade.md +1 -1
  43. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  44. package/docs/api/interfaces/DataRecord.md +1 -1
  45. package/docs/api/interfaces/DataTableAction.md +1 -1
  46. package/docs/api/interfaces/DataTableColumn.md +1 -1
  47. package/docs/api/interfaces/DataTableProps.md +1 -1
  48. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  49. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  50. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  51. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  52. package/docs/api/interfaces/FileMetadata.md +1 -1
  53. package/docs/api/interfaces/FileReference.md +1 -1
  54. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  55. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  56. package/docs/api/interfaces/FileUploadProps.md +1 -1
  57. package/docs/api/interfaces/FooterProps.md +1 -1
  58. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  59. package/docs/api/interfaces/InputProps.md +1 -1
  60. package/docs/api/interfaces/LabelProps.md +1 -1
  61. package/docs/api/interfaces/LoginFormProps.md +1 -1
  62. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  63. package/docs/api/interfaces/NavigationContextType.md +1 -1
  64. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  65. package/docs/api/interfaces/NavigationItem.md +1 -1
  66. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  67. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  68. package/docs/api/interfaces/Organisation.md +1 -1
  69. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  70. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  71. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  72. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  73. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  74. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  75. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  76. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  77. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  78. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  79. package/docs/api/interfaces/PaletteData.md +1 -1
  80. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  81. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  82. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  83. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  84. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  85. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  86. package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
  87. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  88. package/docs/api/interfaces/RBACConfig.md +1 -1
  89. package/docs/api/interfaces/RBACLogger.md +1 -1
  90. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  91. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  92. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  93. package/docs/api/interfaces/RouteConfig.md +1 -1
  94. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  95. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  96. package/docs/api/interfaces/StorageConfig.md +1 -1
  97. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  98. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  99. package/docs/api/interfaces/StorageListOptions.md +1 -1
  100. package/docs/api/interfaces/StorageListResult.md +1 -1
  101. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  102. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  103. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  104. package/docs/api/interfaces/StyleImport.md +1 -1
  105. package/docs/api/interfaces/SwitchProps.md +1 -1
  106. package/docs/api/interfaces/ToastActionElement.md +1 -1
  107. package/docs/api/interfaces/ToastProps.md +1 -1
  108. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  109. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  110. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  111. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  112. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  113. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  114. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  115. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  116. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  117. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  118. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  119. package/docs/api/interfaces/UserEventAccess.md +1 -1
  120. package/docs/api/interfaces/UserMenuProps.md +1 -1
  121. package/docs/api/interfaces/UserProfile.md +1 -1
  122. package/docs/api/modules.md +2 -150
  123. package/docs/implementation-guides/file-reference-system.md +31 -19
  124. package/package.json +1 -1
  125. package/src/components/DataTable/components/DataTableCore.tsx +23 -13
  126. package/src/components/DataTable/hooks/useTableColumns.ts +36 -6
  127. package/src/components/PublicLayout/PublicPageHeader.tsx +1 -1
  128. package/src/components/index.ts +0 -2
  129. package/src/hooks/public/index.ts +2 -4
  130. package/src/index.ts +0 -2
  131. package/src/utils/file-reference.ts +30 -2
  132. package/src/utils/storage/README.md +22 -20
  133. package/dist/chunk-7ME4Z5OY.js.map +0 -1
  134. package/dist/chunk-UDWTCBSH.js.map +0 -1
  135. package/docs/api/interfaces/UseEventLogoOptions.md +0 -74
  136. package/docs/api/interfaces/UseEventLogoReturn.md +0 -81
  137. package/docs/api/interfaces/UsePublicEventLogoOptions.md +0 -87
  138. package/docs/api/interfaces/UsePublicEventLogoReturn.md +0 -81
  139. package/src/hooks/public/usePublicEventLogo.ts +0 -295
  140. package/src/hooks/useEventLogo.ts +0 -316
  141. /package/dist/{DataTable-DXELRJIX.js.map → DataTable-EEDFYMJP.js.map} +0 -0
@@ -25,7 +25,7 @@ import {
25
25
  SelectSeparator,
26
26
  SelectTrigger,
27
27
  SelectValue
28
- } from "./chunk-EVVRUGQ2.js";
28
+ } from "./chunk-62AVH7CM.js";
29
29
  import {
30
30
  isPermitted,
31
31
  isSuperAdmin
@@ -44,7 +44,7 @@ import {
44
44
  useIsPublicPage,
45
45
  usePublicFileDisplay,
46
46
  usePublicPageContext
47
- } from "./chunk-SZWRW5FD.js";
47
+ } from "./chunk-X33A4WWI.js";
48
48
  import {
49
49
  useToast
50
50
  } from "./chunk-QPCAGLUS.js";
@@ -3608,166 +3608,6 @@ function FileDisplay({
3608
3608
  );
3609
3609
  }
3610
3610
 
3611
- // src/hooks/useEventLogo.ts
3612
- import { useState as useState13, useEffect as useEffect9, useCallback as useCallback9, useMemo as useMemo10 } from "react";
3613
- function defaultGenerateFallbackText2(eventName) {
3614
- if (!eventName) return "EV";
3615
- return eventName.split(" ").map((word) => word.charAt(0).toUpperCase()).join("").substring(0, 3);
3616
- }
3617
- var authenticatedLogoCache = /* @__PURE__ */ new Map();
3618
- var MAX_CACHE_SIZE = 100;
3619
- function cleanupCache() {
3620
- const now = Date.now();
3621
- const entries = Array.from(authenticatedLogoCache.entries());
3622
- entries.forEach(([key, value]) => {
3623
- if (now - value.timestamp > value.ttl) {
3624
- authenticatedLogoCache.delete(key);
3625
- }
3626
- });
3627
- if (authenticatedLogoCache.size > MAX_CACHE_SIZE) {
3628
- const sortedEntries = Array.from(authenticatedLogoCache.entries()).sort((a, b) => a[1].timestamp - b[1].timestamp);
3629
- const toRemove = sortedEntries.slice(0, authenticatedLogoCache.size - MAX_CACHE_SIZE);
3630
- toRemove.forEach(([key]) => authenticatedLogoCache.delete(key));
3631
- }
3632
- }
3633
- function useEventLogo(supabase, eventId, eventName, organisationId, options = {}) {
3634
- const {
3635
- cacheTtl = 30 * 60 * 1e3,
3636
- // 30 minutes
3637
- enableCache = true,
3638
- validateImage = true,
3639
- generateFallbackText = defaultGenerateFallbackText2
3640
- } = options;
3641
- const [logoUrl, setLogoUrl] = useState13(null);
3642
- const [isLoading, setIsLoading] = useState13(false);
3643
- const [error, setError] = useState13(null);
3644
- const fallbackText = useMemo10(() => {
3645
- return eventName ? generateFallbackText(eventName) : "EV";
3646
- }, [eventName, generateFallbackText]);
3647
- const fetchLogo = useCallback9(async () => {
3648
- if (!eventId || !organisationId || !supabase) {
3649
- setLogoUrl(null);
3650
- setIsLoading(false);
3651
- return;
3652
- }
3653
- const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
3654
- if (!uuidRegex.test(organisationId)) {
3655
- console.warn("[useEventLogo] Invalid organisationId format (not a valid UUID):", organisationId);
3656
- }
3657
- const cacheKey = `event_logo_${eventId}_${organisationId}`;
3658
- if (enableCache) {
3659
- const cached = authenticatedLogoCache.get(cacheKey);
3660
- if (cached && Date.now() - cached.timestamp < cached.ttl) {
3661
- setLogoUrl(cached.data);
3662
- setIsLoading(false);
3663
- setError(null);
3664
- return;
3665
- }
3666
- }
3667
- try {
3668
- setIsLoading(true);
3669
- setError(null);
3670
- const service = createFileReferenceService(supabase);
3671
- const files = await service.getFilesByCategory(
3672
- "event",
3673
- eventId,
3674
- "event_logos" /* EVENT_LOGOS */,
3675
- organisationId
3676
- );
3677
- if (!files || files.length === 0) {
3678
- setLogoUrl(null);
3679
- return;
3680
- }
3681
- const logoFileRef = files[0];
3682
- const logoPath = logoFileRef.file_path;
3683
- const isPublic = logoFileRef.is_public ?? true;
3684
- let url = null;
3685
- if (isPublic) {
3686
- url = getPublicUrl(supabase, logoPath, true);
3687
- } else {
3688
- const signedUrlResult = await getSignedUrl(supabase, logoPath, {
3689
- appName: "pace-core",
3690
- orgId: organisationId,
3691
- expiresIn: 3600
3692
- });
3693
- url = signedUrlResult?.url || null;
3694
- }
3695
- if (!url) {
3696
- setLogoUrl(null);
3697
- return;
3698
- }
3699
- if (validateImage) {
3700
- try {
3701
- const response = await fetch(url, { method: "HEAD" });
3702
- if (!response.ok) {
3703
- console.warn("[useEventLogo] Logo URL not accessible:", url);
3704
- setLogoUrl(null);
3705
- return;
3706
- }
3707
- } catch (fetchError) {
3708
- console.warn("[useEventLogo] Error validating logo URL:", fetchError);
3709
- setLogoUrl(null);
3710
- return;
3711
- }
3712
- }
3713
- setLogoUrl(url);
3714
- if (enableCache) {
3715
- authenticatedLogoCache.set(cacheKey, {
3716
- data: url,
3717
- timestamp: Date.now(),
3718
- ttl: cacheTtl
3719
- });
3720
- cleanupCache();
3721
- }
3722
- } catch (err) {
3723
- console.error("[useEventLogo] Error fetching logo:", err);
3724
- const error2 = err instanceof Error ? err : new Error("Unknown error occurred");
3725
- setError(error2);
3726
- setLogoUrl(null);
3727
- } finally {
3728
- setIsLoading(false);
3729
- }
3730
- }, [eventId, organisationId, supabase, cacheTtl, enableCache, validateImage, generateFallbackText]);
3731
- useEffect9(() => {
3732
- if (eventId && organisationId && supabase) {
3733
- fetchLogo();
3734
- } else {
3735
- setLogoUrl(null);
3736
- setIsLoading(false);
3737
- setError(null);
3738
- }
3739
- }, [eventId, organisationId, supabase, cacheTtl, enableCache, validateImage, generateFallbackText]);
3740
- const refetch = useCallback9(async () => {
3741
- if (!eventId || !organisationId || !supabase) return;
3742
- if (enableCache) {
3743
- const cacheKey = `event_logo_${eventId}_${organisationId}`;
3744
- authenticatedLogoCache.delete(cacheKey);
3745
- }
3746
- await fetchLogo();
3747
- }, [fetchLogo, eventId, organisationId, supabase, enableCache]);
3748
- return {
3749
- logoUrl,
3750
- fallbackText,
3751
- isLoading,
3752
- error,
3753
- refetch
3754
- };
3755
- }
3756
- function clearEventLogoCache() {
3757
- for (const [key] of authenticatedLogoCache) {
3758
- if (key.startsWith("event_logo_")) {
3759
- authenticatedLogoCache.delete(key);
3760
- }
3761
- }
3762
- }
3763
- function getEventLogoCacheStats() {
3764
- const keys = Array.from(authenticatedLogoCache.keys()).filter((key) => key.startsWith("event_logo_"));
3765
- return {
3766
- size: keys.length,
3767
- keys
3768
- };
3769
- }
3770
-
3771
3611
  // src/components/Table/Table.tsx
3772
3612
  import * as React19 from "react";
3773
3613
  import { jsx as jsx23 } from "react/jsx-runtime";
@@ -4015,7 +3855,7 @@ function PublicLoadingSkeleton({
4015
3855
  }
4016
3856
 
4017
3857
  // src/components/PublicLayout/PublicPageLayout.tsx
4018
- import { useMemo as useMemo11 } from "react";
3858
+ import { useMemo as useMemo10 } from "react";
4019
3859
  import { jsx as jsx27, jsxs as jsxs22 } from "react/jsx-runtime";
4020
3860
  function PublicPageLayout({
4021
3861
  eventCode,
@@ -4033,7 +3873,7 @@ function PublicPageLayout({
4033
3873
  const error = null;
4034
3874
  const refetch = async () => {
4035
3875
  };
4036
- const layoutClasses = useMemo11(() => {
3876
+ const layoutClasses = useMemo10(() => {
4037
3877
  const baseClasses = "min-h-screen bg-white flex flex-col";
4038
3878
  return `${baseClasses} ${className}`.trim();
4039
3879
  }, [className]);
@@ -4098,10 +3938,10 @@ function usePublicPageContext2() {
4098
3938
  }
4099
3939
 
4100
3940
  // src/components/PublicLayout/PublicPageDebugger.tsx
4101
- import { useEffect as useEffect10 } from "react";
3941
+ import { useEffect as useEffect9 } from "react";
4102
3942
  import { jsx as jsx28, jsxs as jsxs23 } from "react/jsx-runtime";
4103
3943
  function PublicPageDebugger({ enabled = true, label = "PublicPage" }) {
4104
- useEffect10(() => {
3944
+ useEffect9(() => {
4105
3945
  if (!enabled) return;
4106
3946
  console.log(`[${label}] Component mounted`);
4107
3947
  try {
@@ -4159,10 +3999,10 @@ function PublicPageDebugger({ enabled = true, label = "PublicPage" }) {
4159
3999
  }
4160
4000
 
4161
4001
  // src/components/PublicLayout/PublicPageDiagnostic.tsx
4162
- import { useEffect as useEffect11, useState as useState14 } from "react";
4002
+ import { useEffect as useEffect10, useState as useState13 } from "react";
4163
4003
  import { jsx as jsx29, jsxs as jsxs24 } from "react/jsx-runtime";
4164
4004
  function PublicPageDiagnostic({ enabled = true, label = "PublicPage" }) {
4165
- const [diagnostics, setDiagnostics] = useState14({
4005
+ const [diagnostics, setDiagnostics] = useState13({
4166
4006
  hasPublicPageContext: false,
4167
4007
  hasAuthContext: false,
4168
4008
  hasOrgContext: false,
@@ -4170,7 +4010,7 @@ function PublicPageDiagnostic({ enabled = true, label = "PublicPage" }) {
4170
4010
  hasEnvironmentVars: false,
4171
4011
  routeParams: null
4172
4012
  });
4173
- useEffect11(() => {
4013
+ useEffect10(() => {
4174
4014
  if (!enabled) return;
4175
4015
  const runDiagnostics = () => {
4176
4016
  const newDiagnostics = {
@@ -4284,10 +4124,10 @@ function PublicPageDiagnostic({ enabled = true, label = "PublicPage" }) {
4284
4124
  }
4285
4125
 
4286
4126
  // src/components/PublicLayout/PublicPageContextChecker.tsx
4287
- import { useEffect as useEffect12 } from "react";
4127
+ import { useEffect as useEffect11 } from "react";
4288
4128
  import { jsx as jsx30, jsxs as jsxs25 } from "react/jsx-runtime";
4289
4129
  function PublicPageContextChecker({ enabled = true, label = "PublicPage" }) {
4290
- useEffect12(() => {
4130
+ useEffect11(() => {
4291
4131
  if (!enabled) return;
4292
4132
  console.group(`\u{1F6A8} [${label}] PUBLIC PAGE CONTEXT CHECK`);
4293
4133
  try {
@@ -4406,9 +4246,6 @@ export {
4406
4246
  useFilesByCategory,
4407
4247
  FileUpload,
4408
4248
  FileDisplay,
4409
- useEventLogo,
4410
- clearEventLogoCache,
4411
- getEventLogoCacheStats,
4412
4249
  Table,
4413
4250
  TableHeader,
4414
4251
  TableBody,
@@ -4428,4 +4265,4 @@ export {
4428
4265
  PublicPageDiagnostic,
4429
4266
  PublicPageContextChecker
4430
4267
  };
4431
- //# sourceMappingURL=chunk-UDWTCBSH.js.map
4268
+ //# sourceMappingURL=chunk-SZWCMVTQ.js.map