@jmruthers/pace-core 0.5.105 → 0.5.107
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/dist/{DataTable-BE0OXZKQ.d.ts → DataTable-D5cBRca8.d.ts} +1 -1
- package/dist/{DataTable-LWHFLTEW.js → DataTable-H2WIR2DN.js} +3 -3
- package/dist/{chunk-QPCAGLUS.js → chunk-4OX5PXHX.js} +5 -2
- package/dist/chunk-4OX5PXHX.js.map +1 -0
- package/dist/{chunk-75G3NZWN.js → chunk-5JJCXTVE.js} +293 -37
- package/dist/chunk-5JJCXTVE.js.map +1 -0
- package/dist/{chunk-HBGPLSA5.js → chunk-DMNMZKWS.js} +70 -24
- package/dist/chunk-DMNMZKWS.js.map +1 -0
- package/dist/{chunk-AZFPGDCJ.js → chunk-EWKCROSF.js} +133 -49
- package/dist/chunk-EWKCROSF.js.map +1 -0
- package/dist/{chunk-4BWGRQBG.js → chunk-NFPV7MRN.js} +22 -2
- package/dist/chunk-NFPV7MRN.js.map +1 -0
- package/dist/{chunk-DWYMGSGU.js → chunk-VJ7MPS2K.js} +2 -2
- package/dist/components.d.ts +3 -3
- package/dist/components.js +4 -4
- package/dist/{formatting-BfDeV-ja.d.ts → formatting-BiEv5oEk.d.ts} +32 -2
- package/dist/hooks.d.ts +2 -2
- package/dist/hooks.js +3 -3
- package/dist/index.d.ts +5 -5
- package/dist/index.js +6 -6
- package/dist/{types-BDg1mAGG.d.ts → types-D4TVpDa1.d.ts} +24 -1
- package/dist/{useToast-Bm6TnSK-.d.ts → useToast-DRah6K-g.d.ts} +5 -2
- package/dist/utils.d.ts +3 -3
- package/dist/utils.js +2 -2
- package/docs/api/classes/ColumnFactory.md +1 -1
- package/docs/api/classes/ErrorBoundary.md +1 -1
- package/docs/api/classes/InvalidScopeError.md +1 -1
- package/docs/api/classes/MissingUserContextError.md +1 -1
- package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
- package/docs/api/classes/PermissionDeniedError.md +1 -1
- package/docs/api/classes/PublicErrorBoundary.md +1 -1
- package/docs/api/classes/RBACAuditManager.md +1 -1
- package/docs/api/classes/RBACCache.md +1 -1
- package/docs/api/classes/RBACEngine.md +1 -1
- package/docs/api/classes/RBACError.md +1 -1
- package/docs/api/classes/RBACNotInitializedError.md +1 -1
- package/docs/api/classes/SecureSupabaseClient.md +1 -1
- package/docs/api/classes/StorageUtils.md +1 -1
- package/docs/api/enums/FileCategory.md +1 -1
- package/docs/api/interfaces/AggregateConfig.md +4 -4
- package/docs/api/interfaces/ButtonProps.md +1 -1
- package/docs/api/interfaces/CardProps.md +1 -1
- package/docs/api/interfaces/ColorPalette.md +1 -1
- package/docs/api/interfaces/ColorShade.md +1 -1
- package/docs/api/interfaces/DataAccessRecord.md +1 -1
- package/docs/api/interfaces/DataRecord.md +1 -1
- package/docs/api/interfaces/DataTableAction.md +18 -18
- package/docs/api/interfaces/DataTableColumn.md +115 -10
- package/docs/api/interfaces/DataTableProps.md +38 -38
- package/docs/api/interfaces/DataTableToolbarButton.md +7 -7
- package/docs/api/interfaces/EmptyStateConfig.md +5 -5
- package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
- package/docs/api/interfaces/FileDisplayProps.md +1 -1
- package/docs/api/interfaces/FileMetadata.md +1 -1
- package/docs/api/interfaces/FileReference.md +1 -1
- package/docs/api/interfaces/FileSizeLimits.md +1 -1
- package/docs/api/interfaces/FileUploadOptions.md +1 -1
- package/docs/api/interfaces/FileUploadProps.md +1 -1
- package/docs/api/interfaces/FooterProps.md +1 -1
- package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
- package/docs/api/interfaces/InputProps.md +1 -1
- package/docs/api/interfaces/LabelProps.md +1 -1
- package/docs/api/interfaces/LoginFormProps.md +1 -1
- package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
- package/docs/api/interfaces/NavigationContextType.md +1 -1
- package/docs/api/interfaces/NavigationGuardProps.md +1 -1
- package/docs/api/interfaces/NavigationItem.md +1 -1
- package/docs/api/interfaces/NavigationMenuProps.md +1 -1
- package/docs/api/interfaces/NavigationProviderProps.md +1 -1
- 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 +1 -1
- package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
- package/docs/api/interfaces/PageAccessRecord.md +1 -1
- package/docs/api/interfaces/PagePermissionContextType.md +1 -1
- package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
- package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
- package/docs/api/interfaces/PaletteData.md +1 -1
- package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
- package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
- package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
- package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
- package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
- package/docs/api/interfaces/PublicPageHeaderProps.md +1 -1
- package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
- package/docs/api/interfaces/RBACConfig.md +1 -1
- package/docs/api/interfaces/RBACLogger.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
- package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
- package/docs/api/interfaces/RouteAccessRecord.md +1 -1
- package/docs/api/interfaces/RouteConfig.md +1 -1
- package/docs/api/interfaces/SecureDataContextType.md +1 -1
- package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
- package/docs/api/interfaces/StorageConfig.md +1 -1
- package/docs/api/interfaces/StorageFileInfo.md +1 -1
- package/docs/api/interfaces/StorageFileMetadata.md +1 -1
- package/docs/api/interfaces/StorageListOptions.md +1 -1
- package/docs/api/interfaces/StorageListResult.md +1 -1
- package/docs/api/interfaces/StorageUploadOptions.md +1 -1
- package/docs/api/interfaces/StorageUploadResult.md +1 -1
- package/docs/api/interfaces/StorageUrlOptions.md +1 -1
- package/docs/api/interfaces/StyleImport.md +1 -1
- package/docs/api/interfaces/SwitchProps.md +1 -1
- package/docs/api/interfaces/ToastActionElement.md +1 -1
- package/docs/api/interfaces/ToastProps.md +1 -1
- package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
- package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
- package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
- package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
- package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
- package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
- package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
- package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
- package/docs/api/interfaces/UserEventAccess.md +1 -1
- package/docs/api/interfaces/UserMenuProps.md +1 -1
- package/docs/api/interfaces/UserProfile.md +1 -1
- package/docs/api/modules.md +39 -18
- package/docs/api-reference/utilities.md +26 -3
- package/docs/implementation-guides/data-tables.md +390 -0
- package/package.json +1 -1
- package/src/components/DataTable/DataTable.tsx +4 -0
- package/src/components/DataTable/__tests__/DataTableCore.test.tsx +25 -10
- package/src/components/DataTable/components/EditableRow.tsx +174 -16
- package/src/components/DataTable/components/UnifiedTableBody.tsx +205 -35
- package/src/components/DataTable/types.ts +34 -4
- package/src/components/FileDisplay/FileDisplay.test.tsx +184 -201
- package/src/components/FileDisplay/FileDisplay.tsx +40 -39
- package/src/components/NavigationMenu/NavigationMenu.test.tsx +189 -13
- package/src/components/NavigationMenu/NavigationMenu.tsx +142 -35
- package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +4 -4
- package/src/components/Toast/Toast.tsx +1 -1
- package/src/hooks/public/usePublicFileDisplay.ts +25 -15
- package/src/hooks/useEventTheme.test.ts +11 -0
- package/src/hooks/useFileDisplay.ts +11 -0
- package/src/hooks/useSecureDataAccess.test.ts +22 -5
- package/src/hooks/useToast.ts +11 -2
- package/src/providers/UnifiedAuthProvider.smoke.test.tsx +67 -3
- package/src/providers/__tests__/ProviderLifecycle.test.tsx +72 -4
- package/src/services/__tests__/OrganisationService.pagination.test.ts +10 -2
- package/src/styles/core.css +11 -0
- package/src/utils/__tests__/formatting.unit.test.ts +33 -0
- package/src/utils/file-reference.test.ts +44 -5
- package/src/utils/file-reference.ts +49 -26
- package/src/utils/formatting.ts +57 -2
- package/src/validation/__tests__/passwordSchema.unit.test.ts +3 -3
- package/dist/chunk-4BWGRQBG.js.map +0 -1
- package/dist/chunk-75G3NZWN.js.map +0 -1
- package/dist/chunk-AZFPGDCJ.js.map +0 -1
- package/dist/chunk-HBGPLSA5.js.map +0 -1
- package/dist/chunk-QPCAGLUS.js.map +0 -1
- /package/dist/{DataTable-LWHFLTEW.js.map → DataTable-H2WIR2DN.js.map} +0 -0
- /package/dist/{chunk-DWYMGSGU.js.map → chunk-VJ7MPS2K.js.map} +0 -0
|
@@ -25,7 +25,12 @@ import {
|
|
|
25
25
|
SelectSeparator,
|
|
26
26
|
SelectTrigger,
|
|
27
27
|
SelectValue
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-5JJCXTVE.js";
|
|
29
|
+
import {
|
|
30
|
+
usePermissions,
|
|
31
|
+
useRBAC,
|
|
32
|
+
useResolvedScope
|
|
33
|
+
} from "./chunk-QDDUU625.js";
|
|
29
34
|
import {
|
|
30
35
|
isPermitted,
|
|
31
36
|
isSuperAdmin
|
|
@@ -44,10 +49,10 @@ import {
|
|
|
44
49
|
useIsPublicPage,
|
|
45
50
|
usePublicFileDisplay,
|
|
46
51
|
usePublicPageContext
|
|
47
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-DMNMZKWS.js";
|
|
48
53
|
import {
|
|
49
54
|
useToast
|
|
50
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-4OX5PXHX.js";
|
|
51
56
|
import {
|
|
52
57
|
useEvents,
|
|
53
58
|
useOrganisations
|
|
@@ -900,34 +905,100 @@ var NavigationMenu = React9.forwardRef(({
|
|
|
900
905
|
} catch (error) {
|
|
901
906
|
console.warn("[NavigationMenu] useUnifiedAuth not available, running in unauthenticated mode");
|
|
902
907
|
}
|
|
908
|
+
let rbacContext = null;
|
|
909
|
+
try {
|
|
910
|
+
rbacContext = useRBAC();
|
|
911
|
+
} catch (error) {
|
|
912
|
+
console.warn("[NavigationMenu] useRBAC not available, permission filtering disabled");
|
|
913
|
+
}
|
|
914
|
+
const { supabase } = authContext || {};
|
|
915
|
+
const { selectedOrganisation } = authContext || {};
|
|
916
|
+
const selectedEvent = authContext?.selectedEvent || null;
|
|
917
|
+
const { resolvedScope, isLoading: scopeLoading } = useResolvedScope({
|
|
918
|
+
supabase: supabase || null,
|
|
919
|
+
selectedOrganisationId: selectedOrganisation?.id || null,
|
|
920
|
+
selectedEventId: selectedEvent?.event_id || null
|
|
921
|
+
});
|
|
922
|
+
const userId = authContext?.user?.id || "";
|
|
923
|
+
const scope = resolvedScope || { organisationId: "", eventId: void 0, appId: void 0 };
|
|
924
|
+
const { permissions: permissionMap, hasAnyPermission, isLoading: permissionsLoading } = usePermissions(
|
|
925
|
+
userId,
|
|
926
|
+
scope
|
|
927
|
+
);
|
|
903
928
|
const filteredItems = React9.useMemo(() => {
|
|
904
|
-
if (!filterByPermissions || !authContext
|
|
929
|
+
if (!filterByPermissions || !authContext || !rbacContext || scopeLoading || permissionsLoading || !resolvedScope?.organisationId) {
|
|
930
|
+
return (items || []).filter((item) => !item.meta?.hidden);
|
|
931
|
+
}
|
|
905
932
|
return (items || []).filter((item) => {
|
|
906
933
|
if (item.meta?.hidden) return false;
|
|
907
934
|
if (item.permissions && item.permissions.length > 0) {
|
|
908
|
-
const
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
935
|
+
const permissions = item.permissions.filter((p) => typeof p === "string").map((p) => p);
|
|
936
|
+
if (permissions.length > 0) {
|
|
937
|
+
const hasPermission = hasAnyPermission(permissions);
|
|
938
|
+
if (!hasPermission) return false;
|
|
939
|
+
}
|
|
913
940
|
}
|
|
914
941
|
if (item.roles && item.roles.length > 0) {
|
|
915
942
|
const hasRole = item.roles.some((role) => {
|
|
916
943
|
if (typeof role !== "string") return true;
|
|
917
|
-
|
|
944
|
+
switch (role.toLowerCase()) {
|
|
945
|
+
case "super_admin":
|
|
946
|
+
case "super admin":
|
|
947
|
+
return rbacContext.isSuperAdmin;
|
|
948
|
+
case "org_admin":
|
|
949
|
+
case "org admin":
|
|
950
|
+
case "admin":
|
|
951
|
+
return rbacContext.isOrgAdmin || rbacContext.isSuperAdmin;
|
|
952
|
+
case "event_admin":
|
|
953
|
+
case "event admin":
|
|
954
|
+
return rbacContext.isEventAdmin || rbacContext.isSuperAdmin;
|
|
955
|
+
default:
|
|
956
|
+
return rbacContext.organisationRole === role || rbacContext.eventAppRole === role || rbacContext.isSuperAdmin;
|
|
957
|
+
}
|
|
918
958
|
});
|
|
919
959
|
if (!hasRole) return false;
|
|
920
960
|
}
|
|
921
961
|
if (item.accessLevel) {
|
|
922
962
|
if (typeof item.accessLevel === "string") {
|
|
923
|
-
const accessLevel = item.accessLevel;
|
|
924
|
-
const
|
|
925
|
-
if (
|
|
963
|
+
const accessLevel = item.accessLevel.toLowerCase();
|
|
964
|
+
const userEventRole = rbacContext.eventAppRole;
|
|
965
|
+
if (rbacContext.isSuperAdmin) {
|
|
966
|
+
} else {
|
|
967
|
+
const roleToAccessLevel = {
|
|
968
|
+
"viewer": "viewer",
|
|
969
|
+
"participant": "participant",
|
|
970
|
+
"planner": "planner",
|
|
971
|
+
"event_admin": "admin"
|
|
972
|
+
};
|
|
973
|
+
const userAccessLevel = userEventRole ? roleToAccessLevel[userEventRole] || "viewer" : null;
|
|
974
|
+
const levelHierarchy = {
|
|
975
|
+
viewer: 1,
|
|
976
|
+
participant: 2,
|
|
977
|
+
planner: 3,
|
|
978
|
+
admin: 4,
|
|
979
|
+
super: 5
|
|
980
|
+
};
|
|
981
|
+
const requiredLevel = levelHierarchy[accessLevel] || 0;
|
|
982
|
+
const userLevel = userAccessLevel ? levelHierarchy[userAccessLevel] || 0 : 0;
|
|
983
|
+
if (userLevel < requiredLevel) {
|
|
984
|
+
return false;
|
|
985
|
+
}
|
|
986
|
+
}
|
|
926
987
|
}
|
|
927
988
|
}
|
|
928
989
|
return true;
|
|
929
990
|
});
|
|
930
|
-
}, [
|
|
991
|
+
}, [
|
|
992
|
+
items,
|
|
993
|
+
filterByPermissions,
|
|
994
|
+
authContext,
|
|
995
|
+
rbacContext,
|
|
996
|
+
permissionMap,
|
|
997
|
+
hasAnyPermission,
|
|
998
|
+
scopeLoading,
|
|
999
|
+
permissionsLoading,
|
|
1000
|
+
resolvedScope
|
|
1001
|
+
]);
|
|
931
1002
|
React9.useEffect(() => {
|
|
932
1003
|
if (auditLog && authContext) {
|
|
933
1004
|
console.log("[NavigationMenu] Navigation access attempt:", {
|
|
@@ -991,17 +1062,30 @@ var NavigationMenu = React9.forwardRef(({
|
|
|
991
1062
|
}
|
|
992
1063
|
const isItemVisible = filteredItems.some((filtered) => filtered.id === item.id);
|
|
993
1064
|
let hasPermission = true;
|
|
994
|
-
if (item.permissions && item.permissions.length > 0) {
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
}
|
|
1065
|
+
if (item.permissions && item.permissions.length > 0 && rbacContext && hasAnyPermission) {
|
|
1066
|
+
const permissions = item.permissions.filter((p) => typeof p === "string").map((p) => p);
|
|
1067
|
+
if (permissions.length > 0) {
|
|
1068
|
+
hasPermission = hasAnyPermission(permissions);
|
|
1069
|
+
}
|
|
999
1070
|
}
|
|
1000
|
-
if (!hasPermission) {
|
|
1071
|
+
if (!hasPermission && rbacContext) {
|
|
1001
1072
|
if (item.roles && item.roles.length > 0) {
|
|
1002
1073
|
hasPermission = item.roles.some((role) => {
|
|
1003
1074
|
if (typeof role !== "string") return true;
|
|
1004
|
-
|
|
1075
|
+
switch (role.toLowerCase()) {
|
|
1076
|
+
case "super_admin":
|
|
1077
|
+
case "super admin":
|
|
1078
|
+
return rbacContext.isSuperAdmin;
|
|
1079
|
+
case "org_admin":
|
|
1080
|
+
case "org admin":
|
|
1081
|
+
case "admin":
|
|
1082
|
+
return rbacContext.isOrgAdmin || rbacContext.isSuperAdmin;
|
|
1083
|
+
case "event_admin":
|
|
1084
|
+
case "event admin":
|
|
1085
|
+
return rbacContext.isEventAdmin || rbacContext.isSuperAdmin;
|
|
1086
|
+
default:
|
|
1087
|
+
return rbacContext.organisationRole === role || rbacContext.eventAppRole === role || rbacContext.isSuperAdmin;
|
|
1088
|
+
}
|
|
1005
1089
|
});
|
|
1006
1090
|
}
|
|
1007
1091
|
}
|
|
@@ -3138,17 +3222,16 @@ function FileDisplayContent({
|
|
|
3138
3222
|
const baseClasses = "flex items-center justify-center bg-sec-100 text-sec-600 font-semibold rounded";
|
|
3139
3223
|
return `${baseClasses} ${sizeClass} ${className}`.trim();
|
|
3140
3224
|
}, [fallbackSize, className]);
|
|
3141
|
-
useEffect8(() => {
|
|
3142
|
-
setInternalFileUrls(new Map(fileUrls));
|
|
3143
|
-
}, [fileUrls]);
|
|
3144
3225
|
useEffect8(() => {
|
|
3145
3226
|
const currentIds = fileReferences.map((f) => f.id).join(",");
|
|
3146
3227
|
const prevIds = fileReferencesRef.current.map((f) => f.id).join(",");
|
|
3147
3228
|
if (currentIds !== prevIds) {
|
|
3148
3229
|
fileReferencesRef.current = fileReferences;
|
|
3149
|
-
setInternalFileUrls(
|
|
3230
|
+
setInternalFileUrls(new Map(fileUrls));
|
|
3231
|
+
} else {
|
|
3232
|
+
setInternalFileUrls(new Map(fileUrls));
|
|
3150
3233
|
}
|
|
3151
|
-
}, [fileReferences]);
|
|
3234
|
+
}, [fileReferences, fileUrls]);
|
|
3152
3235
|
const handleDeleteClick = () => {
|
|
3153
3236
|
setDeleteDialogOpen(true);
|
|
3154
3237
|
};
|
|
@@ -3191,6 +3274,28 @@ function FileDisplayContent({
|
|
|
3191
3274
|
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
3192
3275
|
return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + " " + sizes[i];
|
|
3193
3276
|
};
|
|
3277
|
+
if (error) {
|
|
3278
|
+
if (ErrorComponent) {
|
|
3279
|
+
return /* @__PURE__ */ jsx22(ErrorComponent, { error, retry: clearError });
|
|
3280
|
+
}
|
|
3281
|
+
if (showFallback) {
|
|
3282
|
+
return /* @__PURE__ */ jsx22("div", { className: fallbackClasses, title: "File unavailable", children: computedFallbackText });
|
|
3283
|
+
}
|
|
3284
|
+
return /* @__PURE__ */ jsxs18("div", { className: `p-4 bg-acc-50 border border-acc-200 rounded-lg ${className}`, children: [
|
|
3285
|
+
/* @__PURE__ */ jsxs18("div", { className: "text-acc-600", children: [
|
|
3286
|
+
"Error loading file: ",
|
|
3287
|
+
error instanceof Error ? error.message : String(error)
|
|
3288
|
+
] }),
|
|
3289
|
+
clearError && /* @__PURE__ */ jsx22(
|
|
3290
|
+
"button",
|
|
3291
|
+
{
|
|
3292
|
+
onClick: clearError,
|
|
3293
|
+
className: "mt-2 text-sm text-acc-700 hover:text-acc-800 underline",
|
|
3294
|
+
children: "Try again"
|
|
3295
|
+
}
|
|
3296
|
+
)
|
|
3297
|
+
] });
|
|
3298
|
+
}
|
|
3194
3299
|
if (fileCount === 0 && !isLoading) {
|
|
3195
3300
|
if (showFallback) {
|
|
3196
3301
|
return /* @__PURE__ */ jsxs18("div", { className: fallbackClasses, title: "No file", children: [
|
|
@@ -3215,28 +3320,6 @@ function FileDisplayContent({
|
|
|
3215
3320
|
}
|
|
3216
3321
|
return /* @__PURE__ */ jsx22("div", { className: `flex items-center justify-center p-4 ${className}`, children: /* @__PURE__ */ jsx22("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-main-500" }) });
|
|
3217
3322
|
}
|
|
3218
|
-
if (error) {
|
|
3219
|
-
if (ErrorComponent) {
|
|
3220
|
-
return /* @__PURE__ */ jsx22(ErrorComponent, { error, retry: clearError });
|
|
3221
|
-
}
|
|
3222
|
-
if (showFallback) {
|
|
3223
|
-
return /* @__PURE__ */ jsx22("div", { className: fallbackClasses, title: "File unavailable", children: computedFallbackText });
|
|
3224
|
-
}
|
|
3225
|
-
return /* @__PURE__ */ jsxs18("div", { className: `p-4 bg-acc-50 border border-acc-200 rounded-lg ${className}`, children: [
|
|
3226
|
-
/* @__PURE__ */ jsxs18("div", { className: "text-acc-600", children: [
|
|
3227
|
-
"Error loading file: ",
|
|
3228
|
-
error instanceof Error ? error.message : String(error)
|
|
3229
|
-
] }),
|
|
3230
|
-
clearError && /* @__PURE__ */ jsx22(
|
|
3231
|
-
"button",
|
|
3232
|
-
{
|
|
3233
|
-
onClick: clearError,
|
|
3234
|
-
className: "mt-2 text-sm text-acc-700 hover:text-acc-800 underline",
|
|
3235
|
-
children: "Try again"
|
|
3236
|
-
}
|
|
3237
|
-
)
|
|
3238
|
-
] });
|
|
3239
|
-
}
|
|
3240
3323
|
if ((category || displayOnly) && fileReference) {
|
|
3241
3324
|
const isImage = fileReference.file_metadata.fileType?.startsWith("image/");
|
|
3242
3325
|
if (displayOnly && isImage && !showDelete) {
|
|
@@ -3547,6 +3630,7 @@ function FileDisplayAuthenticated({
|
|
|
3547
3630
|
className,
|
|
3548
3631
|
children,
|
|
3549
3632
|
onDelete: showDelete ? handleDelete : void 0,
|
|
3633
|
+
clearError: refetch,
|
|
3550
3634
|
organisation_id,
|
|
3551
3635
|
loadingComponent,
|
|
3552
3636
|
errorComponent,
|
|
@@ -4273,4 +4357,4 @@ export {
|
|
|
4273
4357
|
PublicPageDiagnostic,
|
|
4274
4358
|
PublicPageContextChecker
|
|
4275
4359
|
};
|
|
4276
|
-
//# sourceMappingURL=chunk-
|
|
4360
|
+
//# sourceMappingURL=chunk-EWKCROSF.js.map
|