@jmruthers/pace-core 0.5.125 → 0.5.127

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 (170) hide show
  1. package/dist/{DataTable-IHD4JP4W.js → DataTable-QZH6SEUM.js} +6 -6
  2. package/dist/{PublicLoadingSpinner-CaoRbHvJ.d.ts → PublicLoadingSpinner-qqvM-NUe.d.ts} +34 -21
  3. package/dist/{UnifiedAuthProvider-6C47WIML.js → UnifiedAuthProvider-CQDZRJIS.js} +3 -3
  4. package/dist/{chunk-ZBLK676C.js → chunk-3CG5L6RN.js} +1 -19
  5. package/dist/chunk-3CG5L6RN.js.map +1 -0
  6. package/dist/{chunk-35ZDPMBM.js → chunk-BYXRHAIF.js} +3 -3
  7. package/dist/{chunk-IJOZZOGT.js → chunk-CQZU6TFE.js} +5 -5
  8. package/dist/{chunk-C43QIDN3.js → chunk-CTJRBUX2.js} +2 -2
  9. package/dist/{chunk-ESJTIADP.js → chunk-F64FFPOZ.js} +5 -15
  10. package/dist/{chunk-ESJTIADP.js.map → chunk-F64FFPOZ.js.map} +1 -1
  11. package/dist/{chunk-JJVLYIEO.js → chunk-JDBO5NCG.js} +253 -135
  12. package/dist/chunk-JDBO5NCG.js.map +1 -0
  13. package/dist/{chunk-4MXVZVNS.js → chunk-TGIY2AR2.js} +2 -2
  14. package/dist/{chunk-HC7AOIC2.js → chunk-TMUNK34W.js} +428 -446
  15. package/dist/chunk-TMUNK34W.js.map +1 -0
  16. package/dist/{chunk-XN6GWKMV.js → chunk-VZ5OR6HD.js} +161 -14
  17. package/dist/chunk-VZ5OR6HD.js.map +1 -0
  18. package/dist/{chunk-QWNJCQXZ.js → chunk-ZV77RZMU.js} +2 -2
  19. package/dist/{chunk-NZGLXZGP.js → chunk-ZYZCRSBD.js} +3 -54
  20. package/dist/chunk-ZYZCRSBD.js.map +1 -0
  21. package/dist/components.d.ts +1 -1
  22. package/dist/components.js +9 -9
  23. package/dist/hooks.js +7 -7
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.js +12 -12
  26. package/dist/providers.js +2 -2
  27. package/dist/rbac/index.js +7 -7
  28. package/dist/utils.js +1 -1
  29. package/docs/api/classes/ColumnFactory.md +1 -1
  30. package/docs/api/classes/ErrorBoundary.md +1 -1
  31. package/docs/api/classes/InvalidScopeError.md +1 -1
  32. package/docs/api/classes/MissingUserContextError.md +1 -1
  33. package/docs/api/classes/OrganisationContextRequiredError.md +1 -1
  34. package/docs/api/classes/PermissionDeniedError.md +1 -1
  35. package/docs/api/classes/PublicErrorBoundary.md +1 -1
  36. package/docs/api/classes/RBACAuditManager.md +1 -1
  37. package/docs/api/classes/RBACCache.md +1 -1
  38. package/docs/api/classes/RBACEngine.md +1 -1
  39. package/docs/api/classes/RBACError.md +1 -1
  40. package/docs/api/classes/RBACNotInitializedError.md +1 -1
  41. package/docs/api/classes/SecureSupabaseClient.md +1 -1
  42. package/docs/api/classes/StorageUtils.md +1 -1
  43. package/docs/api/enums/FileCategory.md +1 -1
  44. package/docs/api/interfaces/AggregateConfig.md +1 -1
  45. package/docs/api/interfaces/ButtonProps.md +1 -1
  46. package/docs/api/interfaces/CardProps.md +1 -1
  47. package/docs/api/interfaces/ColorPalette.md +1 -1
  48. package/docs/api/interfaces/ColorShade.md +1 -1
  49. package/docs/api/interfaces/DataAccessRecord.md +1 -1
  50. package/docs/api/interfaces/DataRecord.md +1 -1
  51. package/docs/api/interfaces/DataTableAction.md +1 -1
  52. package/docs/api/interfaces/DataTableColumn.md +1 -1
  53. package/docs/api/interfaces/DataTableProps.md +1 -1
  54. package/docs/api/interfaces/DataTableToolbarButton.md +1 -1
  55. package/docs/api/interfaces/EmptyStateConfig.md +1 -1
  56. package/docs/api/interfaces/EnhancedNavigationMenuProps.md +1 -1
  57. package/docs/api/interfaces/EventAppRoleData.md +1 -1
  58. package/docs/api/interfaces/FileDisplayProps.md +1 -1
  59. package/docs/api/interfaces/FileMetadata.md +1 -1
  60. package/docs/api/interfaces/FileReference.md +1 -1
  61. package/docs/api/interfaces/FileSizeLimits.md +1 -1
  62. package/docs/api/interfaces/FileUploadOptions.md +1 -1
  63. package/docs/api/interfaces/FileUploadProps.md +1 -1
  64. package/docs/api/interfaces/FooterProps.md +1 -1
  65. package/docs/api/interfaces/GrantEventAppRoleParams.md +1 -1
  66. package/docs/api/interfaces/InactivityWarningModalProps.md +1 -1
  67. package/docs/api/interfaces/InputProps.md +1 -1
  68. package/docs/api/interfaces/LabelProps.md +1 -1
  69. package/docs/api/interfaces/LoginFormProps.md +1 -1
  70. package/docs/api/interfaces/NavigationAccessRecord.md +1 -1
  71. package/docs/api/interfaces/NavigationContextType.md +1 -1
  72. package/docs/api/interfaces/NavigationGuardProps.md +1 -1
  73. package/docs/api/interfaces/NavigationItem.md +1 -1
  74. package/docs/api/interfaces/NavigationMenuProps.md +1 -1
  75. package/docs/api/interfaces/NavigationProviderProps.md +1 -1
  76. package/docs/api/interfaces/Organisation.md +1 -1
  77. package/docs/api/interfaces/OrganisationContextType.md +1 -1
  78. package/docs/api/interfaces/OrganisationMembership.md +1 -1
  79. package/docs/api/interfaces/OrganisationProviderProps.md +1 -1
  80. package/docs/api/interfaces/OrganisationSecurityError.md +1 -1
  81. package/docs/api/interfaces/PaceAppLayoutProps.md +1 -1
  82. package/docs/api/interfaces/PaceLoginPageProps.md +1 -1
  83. package/docs/api/interfaces/PageAccessRecord.md +1 -1
  84. package/docs/api/interfaces/PagePermissionContextType.md +1 -1
  85. package/docs/api/interfaces/PagePermissionGuardProps.md +1 -1
  86. package/docs/api/interfaces/PagePermissionProviderProps.md +1 -1
  87. package/docs/api/interfaces/PaletteData.md +1 -1
  88. package/docs/api/interfaces/PermissionEnforcerProps.md +1 -1
  89. package/docs/api/interfaces/ProtectedRouteProps.md +1 -1
  90. package/docs/api/interfaces/PublicErrorBoundaryProps.md +1 -1
  91. package/docs/api/interfaces/PublicErrorBoundaryState.md +1 -1
  92. package/docs/api/interfaces/PublicLoadingSpinnerProps.md +1 -1
  93. package/docs/api/interfaces/PublicPageFooterProps.md +1 -1
  94. package/docs/api/interfaces/PublicPageHeaderProps.md +10 -62
  95. package/docs/api/interfaces/PublicPageLayoutProps.md +1 -1
  96. package/docs/api/interfaces/RBACConfig.md +1 -1
  97. package/docs/api/interfaces/RBACLogger.md +1 -1
  98. package/docs/api/interfaces/RevokeEventAppRoleParams.md +1 -1
  99. package/docs/api/interfaces/RoleBasedRouterContextType.md +1 -1
  100. package/docs/api/interfaces/RoleBasedRouterProps.md +1 -1
  101. package/docs/api/interfaces/RoleManagementResult.md +1 -1
  102. package/docs/api/interfaces/RouteAccessRecord.md +1 -1
  103. package/docs/api/interfaces/RouteConfig.md +1 -1
  104. package/docs/api/interfaces/SecureDataContextType.md +1 -1
  105. package/docs/api/interfaces/SecureDataProviderProps.md +1 -1
  106. package/docs/api/interfaces/StorageConfig.md +1 -1
  107. package/docs/api/interfaces/StorageFileInfo.md +1 -1
  108. package/docs/api/interfaces/StorageFileMetadata.md +1 -1
  109. package/docs/api/interfaces/StorageListOptions.md +1 -1
  110. package/docs/api/interfaces/StorageListResult.md +1 -1
  111. package/docs/api/interfaces/StorageUploadOptions.md +1 -1
  112. package/docs/api/interfaces/StorageUploadResult.md +1 -1
  113. package/docs/api/interfaces/StorageUrlOptions.md +1 -1
  114. package/docs/api/interfaces/StyleImport.md +1 -1
  115. package/docs/api/interfaces/SwitchProps.md +1 -1
  116. package/docs/api/interfaces/ToastActionElement.md +1 -1
  117. package/docs/api/interfaces/ToastProps.md +1 -1
  118. package/docs/api/interfaces/UnifiedAuthContextType.md +1 -1
  119. package/docs/api/interfaces/UnifiedAuthProviderProps.md +1 -1
  120. package/docs/api/interfaces/UseInactivityTrackerOptions.md +1 -1
  121. package/docs/api/interfaces/UseInactivityTrackerReturn.md +1 -1
  122. package/docs/api/interfaces/UsePublicEventOptions.md +1 -1
  123. package/docs/api/interfaces/UsePublicEventReturn.md +1 -1
  124. package/docs/api/interfaces/UsePublicFileDisplayOptions.md +1 -1
  125. package/docs/api/interfaces/UsePublicFileDisplayReturn.md +1 -1
  126. package/docs/api/interfaces/UsePublicRouteParamsReturn.md +1 -1
  127. package/docs/api/interfaces/UseResolvedScopeOptions.md +1 -1
  128. package/docs/api/interfaces/UseResolvedScopeReturn.md +1 -1
  129. package/docs/api/interfaces/UserEventAccess.md +1 -1
  130. package/docs/api/interfaces/UserMenuProps.md +1 -1
  131. package/docs/api/interfaces/UserProfile.md +1 -1
  132. package/docs/api/modules.md +46 -28
  133. package/docs/architecture/rpc-function-standards.md +39 -5
  134. package/package.json +1 -1
  135. package/src/components/Button/Button.tsx +1 -1
  136. package/src/components/DataTable/components/ImportModal.tsx +134 -2
  137. package/src/components/DataTable/components/UnifiedTableBody.tsx +6 -3
  138. package/src/components/Dialog/Dialog.tsx +0 -13
  139. package/src/components/FileDisplay/FileDisplay.tsx +76 -0
  140. package/src/components/Header/Header.tsx +5 -0
  141. package/src/components/PaceAppLayout/PaceAppLayout.tsx +12 -39
  142. package/src/components/PublicLayout/PublicPageFooter.tsx +1 -1
  143. package/src/components/PublicLayout/PublicPageHeader.tsx +69 -128
  144. package/src/components/PublicLayout/PublicPageLayout.tsx +4 -4
  145. package/src/components/PublicLayout/PublicPageProvider.tsx +12 -3
  146. package/src/components/PublicLayout/__tests__/PublicPageFooter.test.tsx +1 -1
  147. package/src/components/PublicLayout/__tests__/PublicPageHeader.test.tsx +3 -18
  148. package/src/hooks/__tests__/useAppConfig.unit.test.ts +3 -1
  149. package/src/hooks/__tests__/usePermissionCache.unit.test.ts +11 -5
  150. package/src/hooks/__tests__/usePublicRouteParams.unit.test.ts +8 -7
  151. package/src/hooks/__tests__/useSecureDataAccess.unit.test.tsx +41 -46
  152. package/src/hooks/public/usePublicFileDisplay.ts +176 -7
  153. package/src/hooks/public/usePublicRouteParams.ts +0 -12
  154. package/src/hooks/useAppConfig.ts +15 -6
  155. package/src/hooks/usePermissionCache.test.ts +12 -4
  156. package/src/hooks/usePermissionCache.ts +3 -19
  157. package/src/hooks/useSecureDataAccess.ts +0 -63
  158. package/src/services/EventService.ts +0 -19
  159. package/dist/chunk-HC7AOIC2.js.map +0 -1
  160. package/dist/chunk-JJVLYIEO.js.map +0 -1
  161. package/dist/chunk-NZGLXZGP.js.map +0 -1
  162. package/dist/chunk-XN6GWKMV.js.map +0 -1
  163. package/dist/chunk-ZBLK676C.js.map +0 -1
  164. /package/dist/{DataTable-IHD4JP4W.js.map → DataTable-QZH6SEUM.js.map} +0 -0
  165. /package/dist/{UnifiedAuthProvider-6C47WIML.js.map → UnifiedAuthProvider-CQDZRJIS.js.map} +0 -0
  166. /package/dist/{chunk-35ZDPMBM.js.map → chunk-BYXRHAIF.js.map} +0 -0
  167. /package/dist/{chunk-IJOZZOGT.js.map → chunk-CQZU6TFE.js.map} +0 -0
  168. /package/dist/{chunk-C43QIDN3.js.map → chunk-CTJRBUX2.js.map} +0 -0
  169. /package/dist/{chunk-4MXVZVNS.js.map → chunk-TGIY2AR2.js.map} +0 -0
  170. /package/dist/{chunk-QWNJCQXZ.js.map → chunk-ZV77RZMU.js.map} +0 -0
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  useCan,
3
3
  useResolvedScope
4
- } from "./chunk-35ZDPMBM.js";
4
+ } from "./chunk-BYXRHAIF.js";
5
5
  import {
6
6
  toast,
7
7
  useDataTablePerformance
8
8
  } from "./chunk-GKHF54DI.js";
9
9
  import {
10
10
  init_UnifiedAuthProvider
11
- } from "./chunk-C43QIDN3.js";
11
+ } from "./chunk-CTJRBUX2.js";
12
12
  import {
13
13
  useUnifiedAuth
14
- } from "./chunk-ZBLK676C.js";
14
+ } from "./chunk-3CG5L6RN.js";
15
15
  import {
16
16
  cn
17
17
  } from "./chunk-PYUXFQJ3.js";
@@ -5502,10 +5502,10 @@ var require_lodash = __commonJS({
5502
5502
  });
5503
5503
 
5504
5504
  // src/components/DataTable/DataTable.tsx
5505
- import React20 from "react";
5505
+ import React21 from "react";
5506
5506
 
5507
5507
  // src/components/DataTable/components/DataTableCore.tsx
5508
- import React19, { useMemo as useMemo14, useCallback as useCallback11, useEffect as useEffect12, useRef as useRef7 } from "react";
5508
+ import React20, { useMemo as useMemo14, useCallback as useCallback11, useEffect as useEffect12, useRef as useRef7 } from "react";
5509
5509
  import { useReactTable } from "@tanstack/react-table";
5510
5510
  import { Edit, Trash, ChevronUp as ChevronUp2, ChevronDown as ChevronDown3, ChevronsUpDown } from "lucide-react";
5511
5511
 
@@ -5549,7 +5549,7 @@ function getButtonClasses(variant = "default", size = "default") {
5549
5549
  outline: "border border-main-300 bg-background shadow-sm hover:bg-acc-400",
5550
5550
  secondary: "bg-sec-100 text-sec-900 shadow-sm hover:bg-acc-400",
5551
5551
  ghost: "hover:bg-acc-400",
5552
- link: "text-primary underline-offset-4 hover:underline text-shadow-md hover:text-shadow-accent"
5552
+ link: "text-main-700 underline-offset-4 hover:underline hover:drop-shadow-lg hover:drop-shadow-acc-400"
5553
5553
  };
5554
5554
  const sizeClasses2 = {
5555
5555
  default: "h-9 px-4 py-2",
@@ -7686,7 +7686,7 @@ function SelectEditField2({
7686
7686
  return false;
7687
7687
  };
7688
7688
  const hasMatch = (columnDef.fieldOptions || []).some(checkMatch);
7689
- const shouldShow = !hasMatch && isCreatable && !!columnDef.onCreateNew;
7689
+ const shouldShow = isCreatable && !!columnDef.onCreateNew;
7690
7690
  if (import.meta.env.MODE === "development" && isCreatable) {
7691
7691
  logger.debug("[SelectEditField] Creatable select check:", {
7692
7692
  searchTerm: currentSearch,
@@ -7695,7 +7695,8 @@ function SelectEditField2({
7695
7695
  isCreatable,
7696
7696
  hasOnCreateNew: !!columnDef.onCreateNew,
7697
7697
  shouldShow,
7698
- fieldOptionsCount: columnDef.fieldOptions?.length || 0
7698
+ fieldOptionsCount: columnDef.fieldOptions?.length || 0,
7699
+ note: "Create option shows when search term exists, regardless of matches"
7699
7700
  });
7700
7701
  }
7701
7702
  setShowCreateOption(shouldShow);
@@ -7719,7 +7720,7 @@ function SelectEditField2({
7719
7720
  return false;
7720
7721
  };
7721
7722
  const hasMatch = (columnDef.fieldOptions || []).some(checkMatch);
7722
- const shouldShow = !hasMatch && isCreatable && !!columnDef.onCreateNew;
7723
+ const shouldShow = isCreatable && !!columnDef.onCreateNew;
7723
7724
  setShowCreateOption(shouldShow);
7724
7725
  } else {
7725
7726
  setShowCreateOption(false);
@@ -8691,7 +8692,7 @@ function LoadingState() {
8691
8692
  }
8692
8693
 
8693
8694
  // src/components/DataTable/components/DataTableModals.tsx
8694
- import React14, { useEffect as useEffect6 } from "react";
8695
+ import React15, { useEffect as useEffect6 } from "react";
8695
8696
 
8696
8697
  // src/components/DataTable/components/ImportModal.tsx
8697
8698
  import { useState as useState4, useRef as useRef4, useEffect as useEffect5 } from "react";
@@ -8975,21 +8976,10 @@ var DialogBody = ({
8975
8976
  if (!htmlContent || !allowHtml) {
8976
8977
  return null;
8977
8978
  }
8978
- console.log("\u{1F50D} Dialog HTML Debug:", {
8979
- originalHtml: htmlContent,
8980
- allowHtml,
8981
- strictSanitization,
8982
- logWarnings
8983
- });
8984
8979
  const result = renderSafeHtml(htmlContent, {
8985
8980
  strict: strictSanitization,
8986
8981
  logWarnings
8987
8982
  });
8988
- console.log("\u{1F50D} Dialog HTML Result:", {
8989
- sanitizedHtml: result.html,
8990
- isValid: result.isValid,
8991
- warnings: result.warnings
8992
- });
8993
8983
  return result.html;
8994
8984
  }, [htmlContent, allowHtml, strictSanitization, logWarnings]);
8995
8985
  const hasHtmlContent = Boolean(htmlContent && allowHtml);
@@ -9082,9 +9072,38 @@ var DialogDescription = React12.forwardRef(({ className, htmlContent, allowHtml
9082
9072
  });
9083
9073
  DialogDescription.displayName = DialogPrimitive.Description.displayName;
9084
9074
 
9075
+ // src/components/Progress/Progress.tsx
9076
+ import * as React13 from "react";
9077
+ import * as ProgressPrimitive from "@radix-ui/react-progress";
9078
+ import { jsx as jsx18 } from "react/jsx-runtime";
9079
+ var Progress = React13.forwardRef(({ className, value, max = 100, ...props }, ref) => /* @__PURE__ */ jsx18(
9080
+ ProgressPrimitive.Root,
9081
+ {
9082
+ ref,
9083
+ className: cn(
9084
+ "relative h-2 w-full overflow-hidden rounded-full bg-primary/20",
9085
+ className
9086
+ ),
9087
+ ...props,
9088
+ value,
9089
+ max,
9090
+ "aria-valuenow": value,
9091
+ "aria-valuemax": max,
9092
+ "aria-valuemin": 0,
9093
+ children: /* @__PURE__ */ jsx18(
9094
+ ProgressPrimitive.Indicator,
9095
+ {
9096
+ className: "h-full w-full flex-1 bg-primary transition-all",
9097
+ style: { transform: `translateX(-${100 - (value || 0)}%)` }
9098
+ }
9099
+ )
9100
+ }
9101
+ ));
9102
+ Progress.displayName = ProgressPrimitive.Root.displayName;
9103
+
9085
9104
  // src/components/DataTable/components/ImportModal.tsx
9086
9105
  import { Upload as Upload2, FileText, AlertCircle } from "lucide-react";
9087
- import { jsx as jsx18, jsxs as jsxs14 } from "react/jsx-runtime";
9106
+ import { jsx as jsx19, jsxs as jsxs14 } from "react/jsx-runtime";
9088
9107
  function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9089
9108
  const logger = createLogger("ImportModal");
9090
9109
  const [file, setFile] = useState4(null);
@@ -9093,6 +9112,7 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9093
9112
  const [previewData, setPreviewData] = useState4(null);
9094
9113
  const [totalCount, setTotalCount] = useState4(0);
9095
9114
  const [validationErrors, setValidationErrors] = useState4([]);
9115
+ const [importProgress, setImportProgress] = useState4(null);
9096
9116
  const fileInputRef = useRef4(null);
9097
9117
  const isMountedRef = useRef4(true);
9098
9118
  useEffect5(() => {
@@ -9108,6 +9128,7 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9108
9128
  setError(null);
9109
9129
  setValidationErrors([]);
9110
9130
  setIsProcessing(false);
9131
+ setImportProgress(null);
9111
9132
  if (fileInputRef.current) {
9112
9133
  fileInputRef.current.value = "";
9113
9134
  }
@@ -9168,20 +9189,96 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9168
9189
  if (!file) return;
9169
9190
  setIsProcessing(true);
9170
9191
  setError(null);
9192
+ setImportProgress({ current: 0, total: 0, stage: "parsing" });
9171
9193
  try {
9172
9194
  const text = await file.text();
9173
- const data = processCSV(text);
9195
+ const lines = text.split("\n").filter((line) => line.trim());
9196
+ const totalLines = lines.length;
9197
+ if (totalLines < 2) {
9198
+ throw new Error("CSV must have at least a header row and one data row");
9199
+ }
9200
+ const CHUNK_SIZE = 1e3;
9201
+ const data = [];
9202
+ if (totalLines > CHUNK_SIZE) {
9203
+ const parseCSVLine = (line) => {
9204
+ const result2 = [];
9205
+ let current = "";
9206
+ let inQuotes = false;
9207
+ for (let i = 0; i < line.length; i++) {
9208
+ const char = line[i];
9209
+ if (char === '"') {
9210
+ inQuotes = !inQuotes;
9211
+ } else if (char === "," && !inQuotes) {
9212
+ result2.push(current.trim());
9213
+ current = "";
9214
+ } else {
9215
+ current += char;
9216
+ }
9217
+ }
9218
+ result2.push(current.trim());
9219
+ return result2;
9220
+ };
9221
+ const headers = parseCSVLine(lines[0]).map((h) => h.replace(/"/g, "").trim());
9222
+ for (let i = 1; i < totalLines; i += CHUNK_SIZE) {
9223
+ const chunkEnd = Math.min(i + CHUNK_SIZE, totalLines);
9224
+ const chunk = lines.slice(i, chunkEnd);
9225
+ chunk.forEach((line, index) => {
9226
+ const values = parseCSVLine(line).map((v) => v.replace(/"/g, "").trim());
9227
+ const row = {};
9228
+ headers.forEach((header, colIndex) => {
9229
+ row[header] = values[colIndex] || "";
9230
+ });
9231
+ data.push(row);
9232
+ });
9233
+ const processed = Math.min(chunkEnd - 1, totalLines - 1);
9234
+ if (isMountedRef.current) {
9235
+ setImportProgress({
9236
+ current: processed,
9237
+ total: totalLines - 1,
9238
+ stage: "parsing"
9239
+ });
9240
+ }
9241
+ await new Promise((resolve) => setTimeout(resolve, 0));
9242
+ }
9243
+ } else {
9244
+ const parsedData = processCSV(text);
9245
+ data.push(...parsedData);
9246
+ if (isMountedRef.current) {
9247
+ setImportProgress({
9248
+ current: totalLines - 1,
9249
+ total: totalLines - 1,
9250
+ stage: "parsing"
9251
+ });
9252
+ }
9253
+ }
9254
+ if (isMountedRef.current) {
9255
+ setImportProgress({
9256
+ current: 0,
9257
+ total: data.length,
9258
+ stage: "importing"
9259
+ });
9260
+ }
9174
9261
  const result = onImport(data);
9175
9262
  if (result && typeof result.then === "function") {
9176
9263
  await result;
9177
9264
  }
9265
+ if (isMountedRef.current) {
9266
+ setImportProgress({
9267
+ current: data.length,
9268
+ total: data.length,
9269
+ stage: "importing"
9270
+ });
9271
+ }
9272
+ await new Promise((resolve) => setTimeout(resolve, 300));
9178
9273
  onClose();
9179
9274
  setFile(null);
9180
9275
  } catch (err) {
9181
9276
  setError(err instanceof Error ? err.message : "Failed to process file");
9277
+ setImportProgress(null);
9182
9278
  } finally {
9183
9279
  if (isMountedRef.current) {
9184
9280
  setIsProcessing(false);
9281
+ setImportProgress(null);
9185
9282
  }
9186
9283
  }
9187
9284
  };
@@ -9191,6 +9288,7 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9191
9288
  setPreviewData(null);
9192
9289
  setTotalCount(0);
9193
9290
  setValidationErrors([]);
9291
+ setImportProgress(null);
9194
9292
  onClose();
9195
9293
  };
9196
9294
  const handleFileSelect = async (event) => {
@@ -9217,16 +9315,16 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9217
9315
  }
9218
9316
  }
9219
9317
  };
9220
- return /* @__PURE__ */ jsx18(Dialog, { open: isOpen, onOpenChange: handleClose, children: /* @__PURE__ */ jsxs14(DialogContent, { className: "sm:max-w-2xl bg-main-50", children: [
9318
+ return /* @__PURE__ */ jsx19(Dialog, { open: isOpen, onOpenChange: handleClose, children: /* @__PURE__ */ jsxs14(DialogContent, { className: "sm:max-w-2xl bg-main-50", children: [
9221
9319
  /* @__PURE__ */ jsxs14(DialogHeader, { children: [
9222
- /* @__PURE__ */ jsx18(DialogTitle, { children: title }),
9223
- /* @__PURE__ */ jsx18(DialogDescription, { children: description })
9320
+ /* @__PURE__ */ jsx19(DialogTitle, { children: title }),
9321
+ /* @__PURE__ */ jsx19(DialogDescription, { children: description })
9224
9322
  ] }),
9225
9323
  /* @__PURE__ */ jsxs14("div", { className: "space-y-4", children: [
9226
9324
  /* @__PURE__ */ jsxs14("div", { className: "border-2 border-dashed border-sec-200 rounded-lg p-6 text-center", children: [
9227
- /* @__PURE__ */ jsx18(FileText, { className: "h-8 w-8 mx-auto text-sec-400 mb-2" }),
9228
- /* @__PURE__ */ jsx18("p", { className: "text-sec-600 mb-2", children: file ? `Selected: ${file.name}` : uploadText }),
9229
- file && /* @__PURE__ */ jsx18("p", { className: "text-xs text-sec-500", children: "File selected, processing preview..." }),
9325
+ /* @__PURE__ */ jsx19(FileText, { className: "h-8 w-8 mx-auto text-sec-400 mb-2" }),
9326
+ /* @__PURE__ */ jsx19("p", { className: "text-sec-600 mb-2", children: file ? `Selected: ${file.name}` : uploadText }),
9327
+ file && /* @__PURE__ */ jsx19("p", { className: "text-xs text-sec-500", children: "File selected, processing preview..." }),
9230
9328
  /* @__PURE__ */ jsxs14(
9231
9329
  Button,
9232
9330
  {
@@ -9234,12 +9332,12 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9234
9332
  size: "sm",
9235
9333
  onClick: () => fileInputRef.current?.click(),
9236
9334
  children: [
9237
- /* @__PURE__ */ jsx18(Upload2, { className: "h-4 w-4 mr-2" }),
9335
+ /* @__PURE__ */ jsx19(Upload2, { className: "h-4 w-4 mr-2" }),
9238
9336
  selectFileButtonText
9239
9337
  ]
9240
9338
  }
9241
9339
  ),
9242
- /* @__PURE__ */ jsx18(
9340
+ /* @__PURE__ */ jsx19(
9243
9341
  Input,
9244
9342
  {
9245
9343
  ref: fileInputRef,
@@ -9251,12 +9349,12 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9251
9349
  )
9252
9350
  ] }),
9253
9351
  error && /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 p-3 bg-acc-50 border border-acc-200 rounded text-acc-700", children: [
9254
- /* @__PURE__ */ jsx18(AlertCircle, { className: "h-4 w-4" }),
9255
- /* @__PURE__ */ jsx18("span", { className: "text-sm", children: error })
9352
+ /* @__PURE__ */ jsx19(AlertCircle, { className: "h-4 w-4" }),
9353
+ /* @__PURE__ */ jsx19("span", { className: "text-sm", children: error })
9256
9354
  ] }),
9257
9355
  validationErrors.length > 0 && /* @__PURE__ */ jsxs14("div", { className: "space-y-2", children: [
9258
9356
  /* @__PURE__ */ jsxs14("div", { className: "flex items-center gap-2 p-3 bg-acc-50 border border-acc-200 rounded text-acc-700", children: [
9259
- /* @__PURE__ */ jsx18(AlertCircle, { className: "h-4 w-4" }),
9357
+ /* @__PURE__ */ jsx19(AlertCircle, { className: "h-4 w-4" }),
9260
9358
  /* @__PURE__ */ jsxs14("span", { className: "text-sm font-medium", children: [
9261
9359
  validationErrors.length,
9262
9360
  " validation error",
@@ -9282,17 +9380,36 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9282
9380
  ] })
9283
9381
  ] })
9284
9382
  ] }),
9285
- file && previewData && previewData.length > 0 ? /* @__PURE__ */ jsxs14("div", { className: "space-y-3", children: [
9286
- /* @__PURE__ */ jsx18("h4", { className: "text-sec-900", children: previewHeaderText }),
9287
- /* @__PURE__ */ jsx18("div", { className: "border rounded-lg overflow-hidden", children: /* @__PURE__ */ jsx18("div", { className: "overflow-x-auto max-h-48", children: /* @__PURE__ */ jsxs14("table", { className: "min-w-full text-xs", children: [
9288
- /* @__PURE__ */ jsx18("thead", { className: "bg-sec-50", children: /* @__PURE__ */ jsx18("tr", { children: Object.keys(previewData[0]).map((header) => /* @__PURE__ */ jsx18("th", { className: "px-2 py-1 text-left font-medium text-sec-900 border-b", children: header }, header)) }) }),
9289
- /* @__PURE__ */ jsx18("tbody", { children: previewData.map((row, index) => /* @__PURE__ */ jsx18("tr", { className: index % 2 === 0 ? "bg-app-main-50" : "bg-sec-50", children: Object.values(row).map((value, cellIndex) => /* @__PURE__ */ jsx18("td", { className: "px-2 py-1 text-sec-700 border-b", children: String(value) }, cellIndex)) }, index)) })
9383
+ importProgress && isProcessing && /* @__PURE__ */ jsxs14("div", { className: "space-y-2 p-4 bg-sec-50 rounded-lg border border-sec-200", children: [
9384
+ /* @__PURE__ */ jsxs14("div", { className: "flex items-center justify-between", children: [
9385
+ /* @__PURE__ */ jsx19("span", { className: "text-sm font-medium text-sec-900", children: importProgress.stage === "parsing" ? "Parsing CSV file..." : "Importing data..." }),
9386
+ /* @__PURE__ */ jsxs14("span", { className: "text-sm text-sec-600", children: [
9387
+ importProgress.current.toLocaleString(),
9388
+ " / ",
9389
+ importProgress.total.toLocaleString(),
9390
+ " rows"
9391
+ ] })
9392
+ ] }),
9393
+ /* @__PURE__ */ jsx19(
9394
+ Progress,
9395
+ {
9396
+ value: importProgress.total > 0 ? importProgress.current / importProgress.total * 100 : 0,
9397
+ className: "h-2 bg-sec-200"
9398
+ }
9399
+ ),
9400
+ /* @__PURE__ */ jsx19("p", { className: "text-xs text-sec-500", children: importProgress.total > 0 && importProgress.current < importProgress.total ? `${Math.round(importProgress.current / importProgress.total * 100)}% complete` : importProgress.stage === "importing" && importProgress.current === 0 ? "Processing your data..." : importProgress.current === importProgress.total ? "Complete!" : "Processing..." })
9401
+ ] }),
9402
+ file && previewData && previewData.length > 0 && !isProcessing ? /* @__PURE__ */ jsxs14("div", { className: "space-y-3", children: [
9403
+ /* @__PURE__ */ jsx19("h4", { className: "text-sec-900", children: previewHeaderText }),
9404
+ /* @__PURE__ */ jsx19("div", { className: "border rounded-lg overflow-hidden", children: /* @__PURE__ */ jsx19("div", { className: "overflow-x-auto max-h-48", children: /* @__PURE__ */ jsxs14("table", { className: "min-w-full text-xs", children: [
9405
+ /* @__PURE__ */ jsx19("thead", { className: "bg-sec-50", children: /* @__PURE__ */ jsx19("tr", { children: Object.keys(previewData[0]).map((header) => /* @__PURE__ */ jsx19("th", { className: "px-2 py-1 text-left font-medium text-sec-900 border-b", children: header }, header)) }) }),
9406
+ /* @__PURE__ */ jsx19("tbody", { children: previewData.map((row, index) => /* @__PURE__ */ jsx19("tr", { className: index % 2 === 0 ? "bg-app-main-50" : "bg-sec-50", children: Object.values(row).map((value, cellIndex) => /* @__PURE__ */ jsx19("td", { className: "px-2 py-1 text-sec-700 border-b", children: String(value) }, cellIndex)) }, index)) })
9290
9407
  ] }) }) }),
9291
- /* @__PURE__ */ jsx18("p", { className: "text-sec-500", children: totalRowsText.replace("{count}", totalCount.toString()) })
9292
- ] }) : !file ? /* @__PURE__ */ jsx18("div", { className: "border rounded-lg p-6 text-center bg-sec-50", children: /* @__PURE__ */ jsx18("p", { className: "text-sec-500", children: "Select a CSV file to preview" }) }) : null,
9408
+ /* @__PURE__ */ jsx19("p", { className: "text-sec-500", children: totalRowsText.replace("{count}", totalCount.toString()) })
9409
+ ] }) : !file ? /* @__PURE__ */ jsx19("div", { className: "border rounded-lg p-6 text-center bg-sec-50", children: /* @__PURE__ */ jsx19("p", { className: "text-sec-500", children: "Select a CSV file to preview" }) }) : null,
9293
9410
  /* @__PURE__ */ jsxs14("div", { className: "flex justify-end gap-2", children: [
9294
- /* @__PURE__ */ jsx18(Button, { variant: "outline", onClick: handleClose, children: cancelButtonText }),
9295
- /* @__PURE__ */ jsx18(
9411
+ /* @__PURE__ */ jsx19(Button, { variant: "outline", onClick: handleClose, children: cancelButtonText }),
9412
+ /* @__PURE__ */ jsx19(
9296
9413
  Button,
9297
9414
  {
9298
9415
  onClick: handleImport,
@@ -9306,7 +9423,7 @@ function ImportModal({ isOpen, onClose, onImport, config = {} }) {
9306
9423
  }
9307
9424
 
9308
9425
  // src/components/DataTable/components/DataTableModals.tsx
9309
- import { Fragment as Fragment4, jsx as jsx19 } from "react/jsx-runtime";
9426
+ import { Fragment as Fragment4, jsx as jsx20 } from "react/jsx-runtime";
9310
9427
  function mapCSVToTableColumns(csvData, columns) {
9311
9428
  const logger = createLogger("mapCSVToTableColumns");
9312
9429
  const columnMap = /* @__PURE__ */ new Map();
@@ -9388,7 +9505,7 @@ function DataTableModals({
9388
9505
  onStoreFocus,
9389
9506
  onRestoreFocus
9390
9507
  }) {
9391
- const logger = React14.useMemo(() => createLogger("DataTableModals"), []);
9508
+ const logger = React15.useMemo(() => createLogger("DataTableModals"), []);
9392
9509
  useEffect6(() => {
9393
9510
  if (showImportModal) {
9394
9511
  onStoreFocus?.();
@@ -9399,7 +9516,7 @@ function DataTableModals({
9399
9516
  return () => clearTimeout(timeoutId);
9400
9517
  }
9401
9518
  }, [showImportModal, onStoreFocus, onRestoreFocus]);
9402
- return /* @__PURE__ */ jsx19(Fragment4, { children: /* @__PURE__ */ jsx19(
9519
+ return /* @__PURE__ */ jsx20(Fragment4, { children: /* @__PURE__ */ jsx20(
9403
9520
  ImportModal,
9404
9521
  {
9405
9522
  isOpen: showImportModal,
@@ -9437,12 +9554,12 @@ function DataTableModals({
9437
9554
  }
9438
9555
 
9439
9556
  // src/components/DataTable/components/DataTableErrorBoundary.tsx
9440
- import React16, { Component } from "react";
9557
+ import React17, { Component } from "react";
9441
9558
 
9442
9559
  // src/components/Alert/Alert.tsx
9443
- import * as React15 from "react";
9444
- import { jsx as jsx20 } from "react/jsx-runtime";
9445
- var AlertContext = React15.createContext({ variant: "default" });
9560
+ import * as React16 from "react";
9561
+ import { jsx as jsx21 } from "react/jsx-runtime";
9562
+ var AlertContext = React16.createContext({ variant: "default" });
9446
9563
  var getAlertClasses = (variant = "default") => {
9447
9564
  const baseClasses = "relative w-full rounded-lg border p-4";
9448
9565
  const variantClasses = {
@@ -9453,12 +9570,12 @@ var getAlertClasses = (variant = "default") => {
9453
9570
  };
9454
9571
  return `${baseClasses} ${variantClasses[variant]}`;
9455
9572
  };
9456
- var Alert = React15.forwardRef(({ className, variant = "default", ...props }, ref) => {
9457
- const contextValue = React15.useMemo(() => ({ variant }), [variant]);
9573
+ var Alert = React16.forwardRef(({ className, variant = "default", ...props }, ref) => {
9574
+ const contextValue = React16.useMemo(() => ({ variant }), [variant]);
9458
9575
  if (variant === "inline") {
9459
- return /* @__PURE__ */ jsx20(AlertContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx20(React15.Fragment, { ...props }) });
9576
+ return /* @__PURE__ */ jsx21(AlertContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx21(React16.Fragment, { ...props }) });
9460
9577
  }
9461
- return /* @__PURE__ */ jsx20(AlertContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx20(
9578
+ return /* @__PURE__ */ jsx21(AlertContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx21(
9462
9579
  "div",
9463
9580
  {
9464
9581
  ref,
@@ -9469,12 +9586,12 @@ var Alert = React15.forwardRef(({ className, variant = "default", ...props }, re
9469
9586
  ) });
9470
9587
  });
9471
9588
  Alert.displayName = "Alert";
9472
- var AlertTitle = React15.forwardRef(({ className, ...props }, ref) => {
9473
- const { variant } = React15.useContext(AlertContext);
9589
+ var AlertTitle = React16.forwardRef(({ className, ...props }, ref) => {
9590
+ const { variant } = React16.useContext(AlertContext);
9474
9591
  if (variant === "inline") {
9475
- return /* @__PURE__ */ jsx20("strong", { ...props });
9592
+ return /* @__PURE__ */ jsx21("strong", { ...props });
9476
9593
  }
9477
- return /* @__PURE__ */ jsx20(
9594
+ return /* @__PURE__ */ jsx21(
9478
9595
  "h5",
9479
9596
  {
9480
9597
  ref,
@@ -9484,12 +9601,12 @@ var AlertTitle = React15.forwardRef(({ className, ...props }, ref) => {
9484
9601
  );
9485
9602
  });
9486
9603
  AlertTitle.displayName = "AlertTitle";
9487
- var AlertDescription = React15.forwardRef(({ className, ...props }, ref) => {
9488
- const { variant } = React15.useContext(AlertContext);
9604
+ var AlertDescription = React16.forwardRef(({ className, ...props }, ref) => {
9605
+ const { variant } = React16.useContext(AlertContext);
9489
9606
  if (variant === "inline") {
9490
- return /* @__PURE__ */ jsx20("span", { ...props });
9607
+ return /* @__PURE__ */ jsx21("span", { ...props });
9491
9608
  }
9492
- return /* @__PURE__ */ jsx20(
9609
+ return /* @__PURE__ */ jsx21(
9493
9610
  "p",
9494
9611
  {
9495
9612
  ref,
@@ -9501,7 +9618,7 @@ var AlertDescription = React15.forwardRef(({ className, ...props }, ref) => {
9501
9618
  AlertDescription.displayName = "AlertDescription";
9502
9619
 
9503
9620
  // src/components/DataTable/components/DataTableErrorBoundary.tsx
9504
- import { Fragment as Fragment6, jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
9621
+ import { Fragment as Fragment6, jsx as jsx22, jsxs as jsxs15 } from "react/jsx-runtime";
9505
9622
  var DataTableErrorBoundary = class extends Component {
9506
9623
  constructor(props) {
9507
9624
  super(props);
@@ -9573,11 +9690,11 @@ var DataTableErrorBoundary = class extends Component {
9573
9690
  if (fallback) {
9574
9691
  return fallback;
9575
9692
  }
9576
- return /* @__PURE__ */ jsx21("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsxs15(Alert, { variant: "destructive", className: "max-w-md", children: [
9577
- /* @__PURE__ */ jsx21(AlertTitle, { children: "DataTable Error" }),
9578
- /* @__PURE__ */ jsx21(AlertDescription, { className: "mt-2", children: /* @__PURE__ */ jsx21("span", { children: "Something went wrong" }) }),
9693
+ return /* @__PURE__ */ jsx22("div", { className: "flex items-center justify-center p-8", children: /* @__PURE__ */ jsxs15(Alert, { variant: "destructive", className: "max-w-md", children: [
9694
+ /* @__PURE__ */ jsx22(AlertTitle, { children: "DataTable Error" }),
9695
+ /* @__PURE__ */ jsx22(AlertDescription, { className: "mt-2", children: /* @__PURE__ */ jsx22("span", { children: "Something went wrong" }) }),
9579
9696
  error && error.message ? /* @__PURE__ */ jsxs15("details", { className: "mt-2", children: [
9580
- /* @__PURE__ */ jsx21("summary", { className: "cursor-pointer text-sm font-medium", children: "Error Details" }),
9697
+ /* @__PURE__ */ jsx22("summary", { className: "cursor-pointer text-sm font-medium", children: "Error Details" }),
9581
9698
  /* @__PURE__ */ jsxs15("pre", { className: "mt-2 text-xs overflow-auto max-h-32", children: [
9582
9699
  error.message,
9583
9700
  showErrorDetails && error.stack && /* @__PURE__ */ jsxs15(Fragment6, { children: [
@@ -9585,7 +9702,7 @@ var DataTableErrorBoundary = class extends Component {
9585
9702
  error.stack
9586
9703
  ] })
9587
9704
  ] })
9588
- ] }) : /* @__PURE__ */ jsx21("div", { className: "mt-2", children: /* @__PURE__ */ jsx21("span", { children: "An unexpected error occurred" }) }),
9705
+ ] }) : /* @__PURE__ */ jsx22("div", { className: "mt-2", children: /* @__PURE__ */ jsx22("span", { children: "An unexpected error occurred" }) }),
9589
9706
  /* @__PURE__ */ jsxs15("div", { className: "mt-4 flex gap-2", children: [
9590
9707
  showRetryButton && retryCount < maxRetries && /* @__PURE__ */ jsxs15(
9591
9708
  Button,
@@ -9603,7 +9720,7 @@ var DataTableErrorBoundary = class extends Component {
9603
9720
  ]
9604
9721
  }
9605
9722
  ),
9606
- /* @__PURE__ */ jsx21(
9723
+ /* @__PURE__ */ jsx22(
9607
9724
  Button,
9608
9725
  {
9609
9726
  variant: "outline",
@@ -10460,8 +10577,8 @@ function useDataTableConfiguration({
10460
10577
  }
10461
10578
 
10462
10579
  // src/components/Card/Card.tsx
10463
- import * as React17 from "react";
10464
- import { jsx as jsx22 } from "react/jsx-runtime";
10580
+ import * as React18 from "react";
10581
+ import { jsx as jsx23 } from "react/jsx-runtime";
10465
10582
  function getCardClasses(variant = "default", size = "default") {
10466
10583
  const baseClasses = "rounded-lg border bg-card text-card-foreground shadow-sm";
10467
10584
  const variantClasses = {
@@ -10476,7 +10593,7 @@ function getCardClasses(variant = "default", size = "default") {
10476
10593
  };
10477
10594
  return `${baseClasses} ${variantClasses[variant]} ${sizeClasses2[size]}`;
10478
10595
  }
10479
- var Card = React17.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx22(
10596
+ var Card = React18.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx23(
10480
10597
  "article",
10481
10598
  {
10482
10599
  ref,
@@ -10489,7 +10606,7 @@ var Card = React17.forwardRef(({ className, variant, size, ...props }, ref) => /
10489
10606
  }
10490
10607
  ));
10491
10608
  Card.displayName = "Card";
10492
- var CardHeader = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10609
+ var CardHeader = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10493
10610
  "header",
10494
10611
  {
10495
10612
  ref,
@@ -10498,7 +10615,7 @@ var CardHeader = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
10498
10615
  }
10499
10616
  ));
10500
10617
  CardHeader.displayName = "CardHeader";
10501
- var CardTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10618
+ var CardTitle = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10502
10619
  "h3",
10503
10620
  {
10504
10621
  ref,
@@ -10510,7 +10627,7 @@ var CardTitle = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE_
10510
10627
  }
10511
10628
  ));
10512
10629
  CardTitle.displayName = "CardTitle";
10513
- var CardDescription = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10630
+ var CardDescription = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10514
10631
  "p",
10515
10632
  {
10516
10633
  ref,
@@ -10519,7 +10636,7 @@ var CardDescription = React17.forwardRef(({ className, ...props }, ref) => /* @_
10519
10636
  }
10520
10637
  ));
10521
10638
  CardDescription.displayName = "CardDescription";
10522
- var CardContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10639
+ var CardContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10523
10640
  "main",
10524
10641
  {
10525
10642
  ref,
@@ -10528,7 +10645,7 @@ var CardContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
10528
10645
  }
10529
10646
  ));
10530
10647
  CardContent.displayName = "CardContent";
10531
- var CardFooter = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10648
+ var CardFooter = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10532
10649
  "footer",
10533
10650
  {
10534
10651
  ref,
@@ -10537,7 +10654,7 @@ var CardFooter = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE
10537
10654
  }
10538
10655
  ));
10539
10656
  CardFooter.displayName = "CardFooter";
10540
- var CardActions = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10657
+ var CardActions = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10541
10658
  "nav",
10542
10659
  {
10543
10660
  ref,
@@ -10548,8 +10665,8 @@ var CardActions = React17.forwardRef(({ className, ...props }, ref) => /* @__PUR
10548
10665
  }
10549
10666
  ));
10550
10667
  CardActions.displayName = "CardActions";
10551
- var HoverCard = React17.forwardRef(({ children, className, ...props }, ref) => {
10552
- return /* @__PURE__ */ jsx22(
10668
+ var HoverCard = React18.forwardRef(({ children, className, ...props }, ref) => {
10669
+ return /* @__PURE__ */ jsx23(
10553
10670
  "section",
10554
10671
  {
10555
10672
  ref,
@@ -10560,11 +10677,11 @@ var HoverCard = React17.forwardRef(({ children, className, ...props }, ref) => {
10560
10677
  );
10561
10678
  });
10562
10679
  HoverCard.displayName = "HoverCard";
10563
- var HoverCardTrigger = React17.forwardRef(({ className, asChild, children, ...props }, ref) => {
10680
+ var HoverCardTrigger = React18.forwardRef(({ className, asChild, children, ...props }, ref) => {
10564
10681
  if (asChild) {
10565
- return /* @__PURE__ */ jsx22("span", { className: cn("cursor-pointer", className), children });
10682
+ return /* @__PURE__ */ jsx23("span", { className: cn("cursor-pointer", className), children });
10566
10683
  }
10567
- return /* @__PURE__ */ jsx22(
10684
+ return /* @__PURE__ */ jsx23(
10568
10685
  "button",
10569
10686
  {
10570
10687
  ref,
@@ -10579,7 +10696,7 @@ var HoverCardTrigger = React17.forwardRef(({ className, asChild, children, ...pr
10579
10696
  );
10580
10697
  });
10581
10698
  HoverCardTrigger.displayName = "HoverCardTrigger";
10582
- var HoverCardContent = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx22(
10699
+ var HoverCardContent = React18.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
10583
10700
  "aside",
10584
10701
  {
10585
10702
  ref,
@@ -10595,7 +10712,7 @@ HoverCardContent.displayName = "HoverCardContent";
10595
10712
 
10596
10713
  // src/components/DataTable/components/AccessDeniedPage.tsx
10597
10714
  import { ShieldX, ArrowLeft, RefreshCw } from "lucide-react";
10598
- import { Fragment as Fragment7, jsx as jsx23, jsxs as jsxs16 } from "react/jsx-runtime";
10715
+ import { Fragment as Fragment7, jsx as jsx24, jsxs as jsxs16 } from "react/jsx-runtime";
10599
10716
  function AccessDeniedPage({
10600
10717
  resource,
10601
10718
  operation = "access",
@@ -10619,19 +10736,19 @@ function AccessDeniedPage({
10619
10736
  window.history.back();
10620
10737
  }
10621
10738
  };
10622
- return /* @__PURE__ */ jsx23("div", { className: `flex items-center justify-center min-h-[400px] p-8 ${className || ""}`, children: /* @__PURE__ */ jsx23(Card, { className: "max-w-md w-full text-center", children: /* @__PURE__ */ jsxs16("div", { className: "flex flex-col items-center space-y-6 p-8", children: [
10623
- /* @__PURE__ */ jsx23("div", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-acc-100", children: /* @__PURE__ */ jsx23(ShieldX, { className: "w-8 h-8 text-acc-600" }) }),
10739
+ return /* @__PURE__ */ jsx24("div", { className: `flex items-center justify-center min-h-[400px] p-8 ${className || ""}`, children: /* @__PURE__ */ jsx24(Card, { className: "max-w-md w-full text-center", children: /* @__PURE__ */ jsxs16("div", { className: "flex flex-col items-center space-y-6 p-8", children: [
10740
+ /* @__PURE__ */ jsx24("div", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-acc-100", children: /* @__PURE__ */ jsx24(ShieldX, { className: "w-8 h-8 text-acc-600" }) }),
10624
10741
  /* @__PURE__ */ jsxs16("div", { className: "space-y-2", children: [
10625
- /* @__PURE__ */ jsx23("h2", { className: "text-xl font-semibold text-sec-900", children: "Access Denied" }),
10626
- /* @__PURE__ */ jsx23("p", { className: "text-sec-600", children: defaultMessage })
10742
+ /* @__PURE__ */ jsx24("h2", { className: "text-xl font-semibold text-sec-900", children: "Access Denied" }),
10743
+ /* @__PURE__ */ jsx24("p", { className: "text-sec-600", children: defaultMessage })
10627
10744
  ] }),
10628
10745
  /* @__PURE__ */ jsxs16("div", { className: "text-sm text-sec-500 bg-sec-50 rounded-lg p-3 w-full", children: [
10629
- /* @__PURE__ */ jsx23("strong", { children: "Resource:" }),
10746
+ /* @__PURE__ */ jsx24("strong", { children: "Resource:" }),
10630
10747
  " ",
10631
10748
  resource,
10632
10749
  operation && /* @__PURE__ */ jsxs16(Fragment7, { children: [
10633
- /* @__PURE__ */ jsx23("br", {}),
10634
- /* @__PURE__ */ jsx23("strong", { children: "Operation:" }),
10750
+ /* @__PURE__ */ jsx24("br", {}),
10751
+ /* @__PURE__ */ jsx24("strong", { children: "Operation:" }),
10635
10752
  " ",
10636
10753
  operation
10637
10754
  ] })
@@ -10644,7 +10761,7 @@ function AccessDeniedPage({
10644
10761
  onClick: handleRetry,
10645
10762
  className: "flex-1",
10646
10763
  children: [
10647
- /* @__PURE__ */ jsx23(RefreshCw, { className: "w-4 h-4 mr-2" }),
10764
+ /* @__PURE__ */ jsx24(RefreshCw, { className: "w-4 h-4 mr-2" }),
10648
10765
  "Retry"
10649
10766
  ]
10650
10767
  }
@@ -10656,13 +10773,13 @@ function AccessDeniedPage({
10656
10773
  onClick: handleBack,
10657
10774
  className: "flex-1",
10658
10775
  children: [
10659
- /* @__PURE__ */ jsx23(ArrowLeft, { className: "w-4 h-4 mr-2" }),
10776
+ /* @__PURE__ */ jsx24(ArrowLeft, { className: "w-4 h-4 mr-2" }),
10660
10777
  "Go Back"
10661
10778
  ]
10662
10779
  }
10663
10780
  )
10664
10781
  ] }),
10665
- /* @__PURE__ */ jsx23("div", { className: "text-xs text-sec-400", children: "If you believe this is an error, please contact your administrator." })
10782
+ /* @__PURE__ */ jsx24("div", { className: "text-xs text-sec-400", children: "If you believe this is an error, please contact your administrator." })
10666
10783
  ] }) }) });
10667
10784
  }
10668
10785
 
@@ -10966,7 +11083,7 @@ function useDataTablePermissions(rbac, features = {}) {
10966
11083
  }
10967
11084
 
10968
11085
  // src/components/DataTable/hooks/useTableColumns.ts
10969
- import React18, { useMemo as useMemo13 } from "react";
11086
+ import React19, { useMemo as useMemo13 } from "react";
10970
11087
 
10971
11088
  // src/components/DataTable/core/ColumnFactory.ts
10972
11089
  var ColumnFactory = class {
@@ -11172,14 +11289,14 @@ function useTableColumns({
11172
11289
  header: ({ table }) => {
11173
11290
  const isAllSelected = table.getIsAllPageRowsSelected();
11174
11291
  const isSomeSelected = table.getIsSomePageRowsSelected();
11175
- return React18.createElement(Checkbox, {
11292
+ return React19.createElement(Checkbox, {
11176
11293
  checked: isAllSelected ? true : isSomeSelected ? "indeterminate" : false,
11177
11294
  onCheckedChange: (value) => table.toggleAllPageRowsSelected(!!value),
11178
11295
  "aria-label": "Select all"
11179
11296
  });
11180
11297
  },
11181
11298
  cell: ({ row }) => {
11182
- return React18.createElement(Checkbox, {
11299
+ return React19.createElement(Checkbox, {
11183
11300
  checked: row.getIsSelected(),
11184
11301
  onCheckedChange: (value) => row.toggleSelected(!!value),
11185
11302
  "aria-label": "Select row"
@@ -11657,7 +11774,7 @@ function useKeyboardNavigation(rowCount, columnCount, options = {}) {
11657
11774
  }
11658
11775
 
11659
11776
  // src/components/DataTable/components/DataTableCore.tsx
11660
- import { Fragment as Fragment8, jsx as jsx24, jsxs as jsxs17 } from "react/jsx-runtime";
11777
+ import { Fragment as Fragment8, jsx as jsx25, jsxs as jsxs17 } from "react/jsx-runtime";
11661
11778
  var isCellValue = (value) => {
11662
11779
  if (value === null || value === void 0) {
11663
11780
  return true;
@@ -11724,7 +11841,7 @@ function DataTableInternal({
11724
11841
  storageKey,
11725
11842
  onLayoutChange
11726
11843
  }) {
11727
- const logger = React19.useMemo(() => createLogger("DataTableCore"), []);
11844
+ const logger = React20.useMemo(() => createLogger("DataTableCore"), []);
11728
11845
  const authResult = useUnifiedAuth();
11729
11846
  const user = authResult.user;
11730
11847
  const requestedFeatures = useMemo14(
@@ -12224,7 +12341,7 @@ function DataTableInternal({
12224
12341
  throw new Error("DataTable requires authenticated user for RBAC");
12225
12342
  }
12226
12343
  if (permissions.canRead.isLoading) {
12227
- return /* @__PURE__ */ jsx24(LoadingComponent, {});
12344
+ return /* @__PURE__ */ jsx25(LoadingComponent, {});
12228
12345
  }
12229
12346
  if (!permissions.canRead.can) {
12230
12347
  logger.warn("Access denied - no read permission:", {
@@ -12232,10 +12349,10 @@ function DataTableInternal({
12232
12349
  pageId: effectivePageId,
12233
12350
  isLoading: permissions.canRead.isLoading
12234
12351
  });
12235
- return /* @__PURE__ */ jsx24(AccessDeniedPage, { resource: effectivePageId || "unknown-page", operation: "read" });
12352
+ return /* @__PURE__ */ jsx25(AccessDeniedPage, { resource: effectivePageId || "unknown-page", operation: "read" });
12236
12353
  }
12237
12354
  if (isLoading) {
12238
- return /* @__PURE__ */ jsx24(LoadingComponent, {});
12355
+ return /* @__PURE__ */ jsx25(LoadingComponent, {});
12239
12356
  }
12240
12357
  const PaginationComponent = enhancedPagination || finalPaginationMode !== "client" ? EnhancedPaginationControls : PaginationControls;
12241
12358
  const visibleColumns = table?.getVisibleFlatColumns() || [];
@@ -12260,10 +12377,10 @@ function DataTableInternal({
12260
12377
  children: [
12261
12378
  /* @__PURE__ */ jsxs17("caption", { className: "text-left pb-2", children: [
12262
12379
  (title || description) && /* @__PURE__ */ jsxs17(Fragment8, { children: [
12263
- title && /* @__PURE__ */ jsx24("h2", { children: title }),
12264
- description && /* @__PURE__ */ jsx24("p", { id: "table-description", children: description })
12380
+ title && /* @__PURE__ */ jsx25("h2", { children: title }),
12381
+ description && /* @__PURE__ */ jsx25("p", { id: "table-description", children: description })
12265
12382
  ] }),
12266
- /* @__PURE__ */ jsx24(Fragment8, { children: /* @__PURE__ */ jsx24(
12383
+ /* @__PURE__ */ jsx25(Fragment8, { children: /* @__PURE__ */ jsx25(
12267
12384
  DataTableToolbar,
12268
12385
  {
12269
12386
  features: secureFeatures,
@@ -12371,15 +12488,15 @@ function DataTableInternal({
12371
12488
  ) })
12372
12489
  ] }),
12373
12490
  /* @__PURE__ */ jsxs17("colgroup", { children: [
12374
- hasSelectColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "select" }),
12375
- /* @__PURE__ */ jsx24("col", { span: dataColumns, "data-col-type": "data" }),
12376
- hasActionsColumn && /* @__PURE__ */ jsx24("col", { span: 1, "data-col-type": "actions" })
12491
+ hasSelectColumn && /* @__PURE__ */ jsx25("col", { span: 1, "data-col-type": "select" }),
12492
+ /* @__PURE__ */ jsx25("col", { span: dataColumns, "data-col-type": "data" }),
12493
+ hasActionsColumn && /* @__PURE__ */ jsx25("col", { span: 1, "data-col-type": "actions" })
12377
12494
  ] }),
12378
- /* @__PURE__ */ jsx24("thead", { children: table?.getHeaderGroups().map((headerGroup) => {
12495
+ /* @__PURE__ */ jsx25("thead", { children: table?.getHeaderGroups().map((headerGroup) => {
12379
12496
  const visibleHeaders = headerGroup.headers.filter((header) => {
12380
12497
  return typeof header.column.getIsVisible === "function" ? header.column.getIsVisible() : true;
12381
12498
  });
12382
- return /* @__PURE__ */ jsx24("tr", { children: visibleHeaders.map((header, index) => {
12499
+ return /* @__PURE__ */ jsx25("tr", { children: visibleHeaders.map((header, index) => {
12383
12500
  const isFirst = index === 0;
12384
12501
  const isLast = index === visibleHeaders.length - 1;
12385
12502
  const isSortable = header.column.getCanSort();
@@ -12408,7 +12525,7 @@ function DataTableInternal({
12408
12525
  announceSortChange(columnName, newSort);
12409
12526
  }
12410
12527
  );
12411
- return /* @__PURE__ */ jsx24(
12528
+ return /* @__PURE__ */ jsx25(
12412
12529
  "th",
12413
12530
  {
12414
12531
  className: cn(
@@ -12432,7 +12549,7 @@ function DataTableInternal({
12432
12549
  tabIndex: 0,
12433
12550
  children: [
12434
12551
  typeof header.column.columnDef.header === "function" ? header.column.columnDef.header(header.getContext()) : header.column.columnDef.header,
12435
- header.column.getIsSorted() === "asc" ? /* @__PURE__ */ jsx24(ChevronUp2, { className: "h-4 w-4" }) : header.column.getIsSorted() === "desc" ? /* @__PURE__ */ jsx24(ChevronDown3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx24(ChevronsUpDown, { className: "h-4 w-4" })
12552
+ header.column.getIsSorted() === "asc" ? /* @__PURE__ */ jsx25(ChevronUp2, { className: "h-4 w-4" }) : header.column.getIsSorted() === "desc" ? /* @__PURE__ */ jsx25(ChevronDown3, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx25(ChevronsUpDown, { className: "h-4 w-4" })
12436
12553
  ]
12437
12554
  }
12438
12555
  ) : typeof header.column.columnDef.header === "function" ? header.column.columnDef.header(header.getContext()) : header.column.columnDef.header
@@ -12441,7 +12558,7 @@ function DataTableInternal({
12441
12558
  );
12442
12559
  }) }, headerGroup.id);
12443
12560
  }) }),
12444
- /* @__PURE__ */ jsx24(
12561
+ /* @__PURE__ */ jsx25(
12445
12562
  UnifiedTableBody,
12446
12563
  {
12447
12564
  table,
@@ -12488,7 +12605,7 @@ function DataTableInternal({
12488
12605
  grouping: state.grouping,
12489
12606
  aggregates,
12490
12607
  getRowId: resolvedGetRowId,
12491
- emptyState: React19.isValidElement(emptyState) ? void 0 : emptyState,
12608
+ emptyState: React20.isValidElement(emptyState) ? void 0 : emptyState,
12492
12609
  isFiltered: searchQuery !== "" || state.columnFilters.length > 0,
12493
12610
  onClearFilters: () => {
12494
12611
  stateActions.setSearchQuery("");
@@ -12513,7 +12630,7 @@ function DataTableInternal({
12513
12630
  permissions
12514
12631
  }
12515
12632
  ),
12516
- secureFeatures.pagination && /* @__PURE__ */ jsx24("tfoot", { children: /* @__PURE__ */ jsx24("tr", { children: /* @__PURE__ */ jsx24("td", { colSpan: visibleColumns.length, children: /* @__PURE__ */ jsx24(
12633
+ secureFeatures.pagination && /* @__PURE__ */ jsx25("tfoot", { children: /* @__PURE__ */ jsx25("tr", { children: /* @__PURE__ */ jsx25("td", { colSpan: visibleColumns.length, children: /* @__PURE__ */ jsx25(
12517
12634
  PaginationComponent,
12518
12635
  {
12519
12636
  table,
@@ -12526,7 +12643,7 @@ function DataTableInternal({
12526
12643
  ]
12527
12644
  }
12528
12645
  ),
12529
- /* @__PURE__ */ jsx24(
12646
+ /* @__PURE__ */ jsx25(
12530
12647
  DataTableModals,
12531
12648
  {
12532
12649
  showImportModal: state.showImportModal,
@@ -12577,31 +12694,31 @@ function DataTableInternal({
12577
12694
  ] });
12578
12695
  }
12579
12696
  function DataTableCore(props) {
12580
- return /* @__PURE__ */ jsx24(DataTableErrorBoundary, { children: /* @__PURE__ */ jsx24(DataTableInternal, { ...props }) });
12697
+ return /* @__PURE__ */ jsx25(DataTableErrorBoundary, { children: /* @__PURE__ */ jsx25(DataTableInternal, { ...props }) });
12581
12698
  }
12582
12699
 
12583
12700
  // src/components/DataTable/DataTable.tsx
12584
- import { jsx as jsx25 } from "react/jsx-runtime";
12701
+ import { jsx as jsx26 } from "react/jsx-runtime";
12585
12702
  function DataTable(props) {
12586
- const logger = React20.useMemo(() => createLogger("DataTable"), []);
12703
+ const logger = React21.useMemo(() => createLogger("DataTable"), []);
12587
12704
  const { features, ...rest } = props;
12588
- const normalizedFeatures = React20.useMemo(
12705
+ const normalizedFeatures = React21.useMemo(
12589
12706
  () => normalizeDataTableFeatures(features),
12590
12707
  [features]
12591
12708
  );
12592
- React20.useEffect(() => {
12709
+ React21.useEffect(() => {
12593
12710
  if (!features && import.meta.env?.MODE === "development") {
12594
12711
  logger.info("DataTable: no features provided; all capabilities default to disabled. Pass a features object to enable functionality.");
12595
12712
  }
12596
12713
  }, [features, logger]);
12597
- React20.useEffect(() => {
12714
+ React21.useEffect(() => {
12598
12715
  if (normalizedFeatures.deleteSelected && !normalizedFeatures.deletion) {
12599
12716
  logger.warn("deleteSelected requires deletion to be enabled");
12600
12717
  }
12601
12718
  }, [normalizedFeatures.deleteSelected, normalizedFeatures.deletion, logger]);
12602
- return /* @__PURE__ */ jsx25(DataTableCore, { ...rest, features: normalizedFeatures });
12719
+ return /* @__PURE__ */ jsx26(DataTableCore, { ...rest, features: normalizedFeatures });
12603
12720
  }
12604
- var DataTableComponent = React20.memo(DataTable);
12721
+ var DataTableComponent = React21.memo(DataTable);
12605
12722
 
12606
12723
  // src/components/DataTable/components/BulkOperationsDropdown.tsx
12607
12724
  import {
@@ -12609,7 +12726,7 @@ import {
12609
12726
  Download as Download2,
12610
12727
  Trash as Trash3
12611
12728
  } from "lucide-react";
12612
- import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
12729
+ import { jsx as jsx27, jsxs as jsxs18 } from "react/jsx-runtime";
12613
12730
  function BulkOperationsDropdown({
12614
12731
  operations,
12615
12732
  selectedRows = {},
@@ -12638,7 +12755,7 @@ function BulkOperationsDropdown({
12638
12755
  }
12639
12756
  };
12640
12757
  return /* @__PURE__ */ jsxs18(Select, { disabled: !hasSelection, children: [
12641
- /* @__PURE__ */ jsx26(SelectTrigger, { asChild: true, children: /* @__PURE__ */ jsxs18(
12758
+ /* @__PURE__ */ jsx27(SelectTrigger, { asChild: true, children: /* @__PURE__ */ jsxs18(
12642
12759
  Button,
12643
12760
  {
12644
12761
  variant: "outline",
@@ -12646,7 +12763,7 @@ function BulkOperationsDropdown({
12646
12763
  disabled: !hasSelection,
12647
12764
  className: `min-w-[140px] h-9 px-3 py-2 text-sm font-medium ${className || ""}`,
12648
12765
  children: [
12649
- /* @__PURE__ */ jsx26(MoreHorizontal2, { className: "h-4 w-4 mr-2 flex-shrink-0" }),
12766
+ /* @__PURE__ */ jsx27(MoreHorizontal2, { className: "h-4 w-4 mr-2 flex-shrink-0" }),
12650
12767
  /* @__PURE__ */ jsxs18("span", { className: "truncate", children: [
12651
12768
  "Bulk Actions (",
12652
12769
  selectedCount,
@@ -12655,7 +12772,7 @@ function BulkOperationsDropdown({
12655
12772
  ]
12656
12773
  }
12657
12774
  ) }),
12658
- /* @__PURE__ */ jsx26(SelectContent, { className: "w-48 !bg-main-50 border border-sec-200 shadow-lg z-[9999]", style: { backgroundColor: "white" }, children: operations.map((operation) => {
12775
+ /* @__PURE__ */ jsx27(SelectContent, { className: "w-48 !bg-main-50 border border-sec-200 shadow-lg z-[9999]", style: { backgroundColor: "white" }, children: operations.map((operation) => {
12659
12776
  const Icon = operationIcons[operation];
12660
12777
  const label = operationLabels[operation];
12661
12778
  const variant = operationVariants[operation];
@@ -12667,8 +12784,8 @@ function BulkOperationsDropdown({
12667
12784
  disabled: !hasSelection,
12668
12785
  className: `flex items-center gap-2 ${variant === "destructive" ? "text-destructive focus:text-destructive" : ""}`,
12669
12786
  children: [
12670
- /* @__PURE__ */ jsx26(Icon, { className: "h-4 w-4" }),
12671
- /* @__PURE__ */ jsx26("span", { children: label })
12787
+ /* @__PURE__ */ jsx27(Icon, { className: "h-4 w-4" }),
12788
+ /* @__PURE__ */ jsx27("span", { children: label })
12672
12789
  ]
12673
12790
  },
12674
12791
  operation
@@ -12679,7 +12796,7 @@ function BulkOperationsDropdown({
12679
12796
 
12680
12797
  // src/components/DataTable/components/GroupHeader.tsx
12681
12798
  import { ChevronDown as ChevronDown4, ChevronRight as ChevronRight3 } from "lucide-react";
12682
- import { jsx as jsx27, jsxs as jsxs19 } from "react/jsx-runtime";
12799
+ import { jsx as jsx28, jsxs as jsxs19 } from "react/jsx-runtime";
12683
12800
  function GroupHeader({
12684
12801
  row,
12685
12802
  groupByColumn,
@@ -12689,14 +12806,14 @@ function GroupHeader({
12689
12806
  }) {
12690
12807
  const groupValue = row.getValue(groupByColumn);
12691
12808
  return /* @__PURE__ */ jsxs19("div", { className: "flex items-center py-2 px-4 bg-muted/50 border-b font-medium", children: [
12692
- /* @__PURE__ */ jsx27(
12809
+ /* @__PURE__ */ jsx28(
12693
12810
  Button,
12694
12811
  {
12695
12812
  variant: "ghost",
12696
12813
  size: "sm",
12697
12814
  onClick: onToggle,
12698
12815
  className: "p-0 h-auto mr-2",
12699
- children: isExpanded ? /* @__PURE__ */ jsx27(ChevronDown4, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx27(ChevronRight3, { className: "h-4 w-4" })
12816
+ children: isExpanded ? /* @__PURE__ */ jsx28(ChevronDown4, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx28(ChevronRight3, { className: "h-4 w-4" })
12700
12817
  }
12701
12818
  ),
12702
12819
  /* @__PURE__ */ jsxs19("span", { className: "text-sm", children: [
@@ -12738,6 +12855,7 @@ export {
12738
12855
  AlertTitle,
12739
12856
  AlertDescription,
12740
12857
  Checkbox,
12858
+ Progress,
12741
12859
  Select,
12742
12860
  SelectTrigger,
12743
12861
  SelectValue,
@@ -12814,4 +12932,4 @@ lodash/lodash.js:
12814
12932
  * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
12815
12933
  *)
12816
12934
  */
12817
- //# sourceMappingURL=chunk-JJVLYIEO.js.map
12935
+ //# sourceMappingURL=chunk-JDBO5NCG.js.map