@rfdtech/components 1.15.0 → 1.21.0

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 (127) hide show
  1. package/README.md +86 -31
  2. package/dist/components/app-header/AppHeader.d.ts +2 -2
  3. package/dist/components/app-header/AppHeader.d.ts.map +1 -1
  4. package/dist/components/app-header/AppHeaderProfile.d.ts.map +1 -1
  5. package/dist/components/app-header/AppHeaderSearch.d.ts.map +1 -1
  6. package/dist/components/app-layout/AppBody.d.ts +2 -2
  7. package/dist/components/app-layout/AppBody.d.ts.map +1 -1
  8. package/dist/components/app-layout/AppLayout.d.ts +5 -1
  9. package/dist/components/app-layout/AppLayout.d.ts.map +1 -1
  10. package/dist/components/app-layout/AppLayoutInner.d.ts +8 -0
  11. package/dist/components/app-layout/AppLayoutInner.d.ts.map +1 -0
  12. package/dist/components/app-layout/AppSidebar.d.ts +2 -3
  13. package/dist/components/app-layout/AppSidebar.d.ts.map +1 -1
  14. package/dist/components/avatar/Avatar.d.ts +4 -0
  15. package/dist/components/avatar/Avatar.d.ts.map +1 -0
  16. package/dist/components/avatar/index.d.ts +3 -0
  17. package/dist/components/avatar/index.d.ts.map +1 -0
  18. package/dist/components/breadcrumb/Breadcrumb.d.ts.map +1 -1
  19. package/dist/components/breadcrumb/breadcrumb-context.d.ts +17 -0
  20. package/dist/components/breadcrumb/breadcrumb-context.d.ts.map +1 -0
  21. package/dist/components/breadcrumb/index.d.ts +2 -0
  22. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  23. package/dist/components/bulk-import-modal/BulkImportModal.d.ts +1 -1
  24. package/dist/components/bulk-import-modal/BulkImportModal.d.ts.map +1 -1
  25. package/dist/components/bulk-import-modal/constants.d.ts +8 -0
  26. package/dist/components/bulk-import-modal/constants.d.ts.map +1 -0
  27. package/dist/components/bulk-import-modal/hooks/useBulkImportFlow.d.ts.map +1 -1
  28. package/dist/components/bulk-import-modal/index.d.ts +5 -4
  29. package/dist/components/bulk-import-modal/index.d.ts.map +1 -1
  30. package/dist/components/bulk-import-modal/internal/FieldMappingSelect.d.ts +5 -1
  31. package/dist/components/bulk-import-modal/internal/FieldMappingSelect.d.ts.map +1 -1
  32. package/dist/components/bulk-import-modal/steps/MatchColumnsStep.d.ts +2 -1
  33. package/dist/components/bulk-import-modal/steps/MatchColumnsStep.d.ts.map +1 -1
  34. package/dist/components/bulk-import-modal/steps/SelectHeaderRowStep.d.ts.map +1 -1
  35. package/dist/components/bulk-import-modal/steps/UploadStep.d.ts +4 -2
  36. package/dist/components/bulk-import-modal/steps/UploadStep.d.ts.map +1 -1
  37. package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts +8 -10
  38. package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts.map +1 -1
  39. package/dist/components/bulk-import-modal/utils/mapRowsToRecords.d.ts +1 -0
  40. package/dist/components/bulk-import-modal/utils/mapRowsToRecords.d.ts.map +1 -1
  41. package/dist/components/bulk-import-modal/utils/parseSpreadsheetFile.d.ts +4 -0
  42. package/dist/components/bulk-import-modal/utils/parseSpreadsheetFile.d.ts.map +1 -1
  43. package/dist/components/bulk-import-modal/utils/validateMappedRows.d.ts +2 -1
  44. package/dist/components/bulk-import-modal/utils/validateMappedRows.d.ts.map +1 -1
  45. package/dist/components/bulk-import-modal/utils/validateRowsChunked.d.ts +11 -0
  46. package/dist/components/bulk-import-modal/utils/validateRowsChunked.d.ts.map +1 -0
  47. package/dist/components/card/Card.d.ts +4 -1
  48. package/dist/components/card/Card.d.ts.map +1 -1
  49. package/dist/components/card/index.d.ts +2 -2
  50. package/dist/components/card/index.d.ts.map +1 -1
  51. package/dist/components/command/Command.d.ts.map +1 -1
  52. package/dist/components/command/CommandPopoverContext.d.ts +15 -0
  53. package/dist/components/command/CommandPopoverContext.d.ts.map +1 -0
  54. package/dist/components/date-range-selector/DateRangeSelector.d.ts.map +1 -1
  55. package/dist/components/dialog/Dialog.d.ts.map +1 -1
  56. package/dist/components/dropdown/Dropdown.d.ts +1 -1
  57. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  58. package/dist/components/form/Form.d.ts.map +1 -1
  59. package/dist/components/metric-card/MetricCard.d.ts.map +1 -1
  60. package/dist/components/modal/Modal.d.ts.map +1 -1
  61. package/dist/components/modal/index.d.ts +1 -1
  62. package/dist/components/modal/index.d.ts.map +1 -1
  63. package/dist/components/phone-number-input/PhoneNumberInput.d.ts.map +1 -1
  64. package/dist/components/sidebar/Sidebar.d.ts +1 -1
  65. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  66. package/dist/components/sidebar/SidebarContext.d.ts.map +1 -1
  67. package/dist/components/sortable/Sortable.d.ts.map +1 -1
  68. package/dist/components/sortable/SortableContext.d.ts.map +1 -1
  69. package/dist/components/table/ProgressModal.d.ts +13 -0
  70. package/dist/components/table/ProgressModal.d.ts.map +1 -0
  71. package/dist/components/table/Table.d.ts +2 -15
  72. package/dist/components/table/Table.d.ts.map +1 -1
  73. package/dist/components/table/TableHeader.d.ts +4 -0
  74. package/dist/components/table/TableHeader.d.ts.map +1 -1
  75. package/dist/components/table/TablePagination.d.ts.map +1 -1
  76. package/dist/components/table/index.d.ts +2 -2
  77. package/dist/components/table/index.d.ts.map +1 -1
  78. package/dist/components/theme/ThemeProvider.d.ts +1 -1
  79. package/dist/components/theme/ThemeProvider.d.ts.map +1 -1
  80. package/dist/components/tooltip/Tooltip.d.ts +4 -0
  81. package/dist/components/tooltip/Tooltip.d.ts.map +1 -0
  82. package/dist/components/tooltip/Tooltip.test.d.ts +2 -0
  83. package/dist/components/tooltip/Tooltip.test.d.ts.map +1 -0
  84. package/dist/components/tooltip/index.d.ts +3 -0
  85. package/dist/components/tooltip/index.d.ts.map +1 -0
  86. package/dist/components/upload-field/UploadField.d.ts.map +1 -1
  87. package/dist/hooks/index.d.ts +2 -0
  88. package/dist/hooks/index.d.ts.map +1 -1
  89. package/dist/hooks/useComposedRefs.d.ts +14 -0
  90. package/dist/hooks/useComposedRefs.d.ts.map +1 -0
  91. package/dist/hooks/useConfirmBeforeUnload.d.ts +9 -0
  92. package/dist/hooks/useConfirmBeforeUnload.d.ts.map +1 -0
  93. package/dist/hooks/useTableState.d.ts.map +1 -1
  94. package/dist/index.cjs +50 -198
  95. package/dist/index.css +1 -1
  96. package/dist/index.d.ts +3 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +16532 -13235
  99. package/dist/test/mocks/lottie-react.d.ts +2 -0
  100. package/dist/test/mocks/lottie-react.d.ts.map +1 -0
  101. package/dist/types/avatar.d.ts +18 -0
  102. package/dist/types/avatar.d.ts.map +1 -0
  103. package/dist/types/bulk-import-modal.d.ts +38 -15
  104. package/dist/types/bulk-import-modal.d.ts.map +1 -1
  105. package/dist/types/button.d.ts +1 -1
  106. package/dist/types/button.d.ts.map +1 -1
  107. package/dist/types/card.d.ts +10 -8
  108. package/dist/types/card.d.ts.map +1 -1
  109. package/dist/types/checkbox.d.ts +1 -1
  110. package/dist/types/checkbox.d.ts.map +1 -1
  111. package/dist/types/dropdown.d.ts +2 -0
  112. package/dist/types/dropdown.d.ts.map +1 -1
  113. package/dist/types/metric-card.d.ts +4 -0
  114. package/dist/types/metric-card.d.ts.map +1 -1
  115. package/dist/types/modal.d.ts +5 -0
  116. package/dist/types/modal.d.ts.map +1 -1
  117. package/dist/types/sidebar.d.ts +4 -2
  118. package/dist/types/sidebar.d.ts.map +1 -1
  119. package/dist/types/table.d.ts +17 -2
  120. package/dist/types/table.d.ts.map +1 -1
  121. package/dist/types/theme.d.ts +2 -0
  122. package/dist/types/theme.d.ts.map +1 -1
  123. package/dist/types/tooltip.d.ts +13 -0
  124. package/dist/types/tooltip.d.ts.map +1 -0
  125. package/dist/utils/stringToColor.d.ts +9 -0
  126. package/dist/utils/stringToColor.d.ts.map +1 -0
  127. package/package.json +39 -16
package/README.md CHANGED
@@ -8,30 +8,84 @@ Requires React 18+ and a bundler that processes CSS (Vite, Webpack, etc.).
8
8
 
9
9
  See [CHANGELOG.md](./CHANGELOG.md) for release history.
10
10
 
11
- ## Styles
11
+ ## Getting Started
12
12
 
13
- Component styles load automatically when you import from `@rfdtech/components` (the JS bundle includes `import './index.css'`). For reliable styling in production, add this once in your app entry (`main.tsx` or `App.tsx`):
13
+ ### 1. Install
14
+
15
+ ```bash
16
+ npm install @rfdtech/components
17
+ ```
18
+
19
+ Requires React 18+. npm 7+ auto-installs `react` and `react-dom` as peer dependencies. Radix UI and other runtime packages are dependencies of `@rfdtech/components`.
20
+
21
+ ### 2. Import CSS
22
+
23
+ Add this once to your app entry (`main.tsx` or `App.tsx`):
14
24
 
15
25
  ```ts
16
26
  import "@rfdtech/components/style.css";
17
27
  ```
18
28
 
19
- After upgrading the package, clear Vite's dependency cache if styles look stale: `rm -rf node_modules/.vite`.
29
+ Components load CSS automatically from the JS bundle (the JS bundle includes `import './index.css'`), but the explicit import above ensures reliable production styling. After upgrading, clear Vite's dependency cache if styles look stale: `rm -rf node_modules/.vite`.
20
30
 
21
- ## Shared theming
22
-
23
- Wrap your app in `ThemeProvider` for light, dark, and system themes. Design tokens live in [`src/styles/theme.css`](src/styles/theme.css) and apply to `.gsl-theme`, `document.documentElement`, and all components (including portaled modals and popovers).
31
+ ### 3. Wrap with ThemeProvider
24
32
 
25
33
  ```tsx
26
34
  import { ThemeProvider } from "@rfdtech/components";
27
- import "@rfdtech/components/style.css";
28
35
 
29
36
  <ThemeProvider defaultTheme="system">
30
37
  <App />
31
38
  </ThemeProvider>
32
39
  ```
33
40
 
34
- Use `useTheme()` to read or change the active theme at runtime. See the [Theme](/docs/theme) docs page for token reference and controlled mode.
41
+ Supports `"light"`, `"dark"`, and `"system"` (follows `prefers-color-scheme`). Use `useTheme()` to read or change the active theme at runtime. Design tokens apply to `.gsl-theme`, `document.documentElement`, and all components (including portaled modals and popovers).
42
+
43
+ ### 4. Tailwind v4 integration
44
+
45
+ If your project uses Tailwind v4, all `--gsl-*` design tokens are automatically available as utility classes. Import `style.css` after `tailwindcss` in your CSS entry:
46
+
47
+ ```css
48
+ /* app/src/index.css */
49
+ @import "tailwindcss";
50
+ @import "@rfdtech/components/style.css";
51
+ ```
52
+
53
+ The `@theme` block ships inside `style.css`. The consumer's Tailwind build processes it and generates these utility classes:
54
+
55
+ | Utility | Resolves to |
56
+ |---------|-------------|
57
+ | `bg-primary` / `text-primary` | `var(--gsl-primary)` |
58
+ | `bg-primary-foreground` / `text-primary-foreground` | `var(--gsl-on-primary)` |
59
+ | `bg-background` / `text-foreground` | `var(--gsl-page-bg)` / `var(--gsl-text)` |
60
+ | `bg-secondary` / `text-secondary-foreground` | `var(--gsl-surface-dark)` / `var(--gsl-text-secondary)` |
61
+ | `bg-muted` / `text-muted-foreground` | `var(--gsl-surface-subtle)` / `var(--gsl-text-secondary)` |
62
+ | `bg-accent` / `text-accent-foreground` | `var(--gsl-hover)` / `var(--gsl-text)` |
63
+ | `bg-destructive` / `text-destructive-foreground` | `var(--gsl-error)` / `var(--gsl-error-text)` |
64
+ | `bg-card` / `text-card-foreground` | `var(--gsl-bg)` / `var(--gsl-text)` |
65
+ | `bg-popover` / `text-popover-foreground` | `var(--gsl-bg)` / `var(--gsl-text)` |
66
+ | `border` / `input` / `ring` | `var(--gsl-border)` / `var(--gsl-border-strong)` / `var(--gsl-focus)` |
67
+ | `rounded-lg` | `var(--gsl-radius-base)` |
68
+ | `shadow-sm` / `shadow-md` / `shadow-lg` | `var(--gsl-shadow-sm)` / etc. |
69
+ | `font-sans` | `var(--gsl-font)` |
70
+
71
+ **Dark mode** supports both conventions: `<html class="dark">` (Tailwind default) and `<html data-gsl-theme="dark">`.
72
+
73
+ **Non-Tailwind consumers** are unaffected. Browsers silently ignore `@theme` as an unknown at-rule. All `--gsl-*` tokens continue to work as CSS custom properties.
74
+
75
+ ### 5. Customize tokens
76
+
77
+ Override any `--gsl-*` token on any ancestor:
78
+
79
+ ```css
80
+ .my-app {
81
+ --gsl-primary: #1d4ed8;
82
+ --gsl-primary-light: #eff6ff;
83
+ }
84
+ ```
85
+
86
+ ## Design tokens
87
+
88
+ Quick reference of commonly used tokens and their light-mode defaults:
35
89
 
36
90
  | Token | Light default | Use |
37
91
  |-------|---------------|-----|
@@ -46,24 +100,9 @@ Use `useTheme()` to read or change the active theme at runtime. See the [Theme](
46
100
  | `--gsl-success` | `#16a34a` | Success states |
47
101
  | `--gsl-warning` | `#eab308` | Warnings |
48
102
 
49
- You can still override tokens on any ancestor without `ThemeProvider`:
50
-
51
- ```css
52
- .my-app {
53
- --gsl-primary: #1d4ed8;
54
- --gsl-primary-light: #eff6ff;
55
- }
56
- ```
57
-
58
103
  `BulkImportModal` also accepts legacy aliases (`--gsl-bulk-import-primary`, etc.) that map to the shared tokens.
59
104
 
60
- ## Install
61
-
62
- ```bash
63
- npm install @rfdtech/components
64
- ```
65
-
66
- Requires React 18+. npm 7+ auto-installs `react` and `react-dom` as peer dependencies. Radix UI and other runtime packages are included as dependencies of `@rfdtech/components`.
105
+ See the [Theme](/docs/theme) docs page for the full token reference (radius, shadows, z-index, fonts) and controlled mode.
67
106
 
68
107
 
69
108
  ## Hooks
@@ -261,9 +300,9 @@ const { open, onOpenChange, openWith } = useModalSearchParam("bulk-import");
261
300
  1. **Upload Document** — preview expected columns, then upload `.xlsx`, `.xls`, or `.csv`
262
301
  2. **Select header row** — choose the header row with radio buttons
263
302
  3. **Match Columns** — map each uploaded column to a target field (`Your table` → `Will become`)
264
- 4. **Validate data** — review rows in a table, discard invalid rows, then **Confirm**
303
+ 4. **Validate data** — review editable rows with error checking, discard rows, or reset discarded rows, then **Confirm**
265
304
 
266
- The first worksheet is used for multi-sheet workbooks. Discarded rows are excluded from `onComplete`.
305
+ The first worksheet is used for multi-sheet workbooks. Discarded rows are excluded from `onComplete`. Use reset discarded rows button to restore them. The validate data table is virtualized for performance with large spreadsheets.
267
306
 
268
307
  ### Props
269
308
 
@@ -276,6 +315,7 @@ The first worksheet is used for multi-sheet workbooks. Discarded rows are exclud
276
315
  | `title` | `string` | `"Bulk import"` | Modal title |
277
316
  | `maxFileSizeBytes` | `number` | `5242880` | Maximum upload size (5 MB) |
278
317
  | `allowImportWithWarnings` | `boolean` | `false` | Allow import when only warnings exist |
318
+ | `defaultState` | `BulkImportFlowDefaultState` | — | Seed initial flow state for progress preservation across open/close cycles |
279
319
  | `className` | `string` | — | Root CSS class |
280
320
 
281
321
  ### Field schema
@@ -755,7 +795,7 @@ Props: `label`, `value`, `icon`, `description`, `trend`, `trendValue`, `variant`
755
795
 
756
796
  ## Modal
757
797
 
758
- Compound modal primitives for near full-viewport overlays with header, body, and footer slots. See the [Modal](/docs/modal) docs page for props and exported types.
798
+ Centered modal with four size variants (`sm`, `md`, `lg`, `xl`), popover-style border, and optional close-prevention. Size tokens are independently customizable via `--gsl-modal-max-width-*`. See the [Modal](/docs/modal) docs page for props and exported types.
759
799
 
760
800
  ```tsx
761
801
  import {
@@ -763,7 +803,6 @@ import {
763
803
  Modal,
764
804
  ModalBody,
765
805
  ModalContent,
766
- ModalDescription,
767
806
  ModalFooter,
768
807
  ModalHeader,
769
808
  ModalOverlay,
@@ -781,10 +820,9 @@ const { open, onOpenChange, openWith } = useModalSearchParam("review-changes");
781
820
  <Modal open={open} onOpenChange={onOpenChange}>
782
821
  <ModalPortal>
783
822
  <ModalOverlay />
784
- <ModalContent showCloseButton>
823
+ <ModalContent showCloseButton size="lg" preventClose={isDirty}>
785
824
  <ModalHeader>
786
825
  <ModalTitle>Review changes</ModalTitle>
787
- <ModalDescription>Confirm before publishing.</ModalDescription>
788
826
  </ModalHeader>
789
827
  <ModalBody>{children}</ModalBody>
790
828
  <ModalFooter>
@@ -796,7 +834,7 @@ const { open, onOpenChange, openWith } = useModalSearchParam("review-changes");
796
834
  </Modal>
797
835
  ```
798
836
 
799
- Props: `Modal` — `open`, `defaultOpen`, `onOpenChange`. `ModalContent` — `showCloseButton`, `classNames`, `className`. Layout parts (`ModalHeader`, `ModalBody`, `ModalFooter`) support part-level `classNames`. Exported types: `ModalOverlayProps`, `ModalContentProps`, `ModalHeaderProps`, `ModalTitleProps`, `ModalDescriptionProps`, `ModalBodyProps`, `ModalFooterProps`, and related `*ClassNames` interfaces.
837
+ Props: `Modal` — `open`, `defaultOpen`, `onOpenChange`. `ModalContent` — `showCloseButton`, `size`, `preventClose`, `preventCloseTitle`, `preventCloseDescription`, `onOpenChange`, `classNames`, `className`. Layout parts (`ModalHeader`, `ModalBody`, `ModalFooter`) support part-level `classNames`. Exported types: `ModalSize`, `ModalOverlayProps`, `ModalContentProps`, `ModalHeaderProps`, `ModalTitleProps`, `ModalDescriptionProps`, `ModalBodyProps`, `ModalFooterProps`, and related `*ClassNames` interfaces.
800
838
 
801
839
 
802
840
  ## NetworkOperator
@@ -1122,6 +1160,23 @@ toast({
1122
1160
  Exports: `ToastProvider`, `Toaster`, `useToast`. Types: `ToastOptions`, `ToastVariant`, `ToastProviderProps`, `ToasterProps`, `UseToastReturn`, `ToastClassNames`, `ToastAction`, `ToastReturn`.
1123
1161
 
1124
1162
 
1163
+ ## Tooltip
1164
+
1165
+ Pure-CSS hover tooltip with directional arrow (top, right, bottom, left). Used internally by SidebarLink on the collapsed icon rail. See the [Tooltip](/docs/tooltip) docs page for props and exported types.
1166
+
1167
+ ```tsx
1168
+ import { Tooltip } from "@rfdtech/components";
1169
+
1170
+ <Tooltip content="Save changes" side="right">
1171
+ <button type="button" aria-label="Save">
1172
+ <SaveIcon size={20} />
1173
+ </button>
1174
+ </Tooltip>
1175
+ ```
1176
+
1177
+ Props: `content`, `side`, `classNames`, `className`. Exported types: `TooltipProps`, `TooltipClassNames`.
1178
+
1179
+
1125
1180
  ## UploadField
1126
1181
 
1127
1182
  File upload with dashed-border dropzone, cloud upload icon, auto-generated file type/size support text, file cards with type icons, and a primary action button. See the [UploadField](/docs/upload-field) docs page for props and exported types.
@@ -1,5 +1,5 @@
1
1
  import type { AppHeaderProps, AppHeaderActionsProps } from "../../types/app-header";
2
2
  import "./styles/app-header.css";
3
- export declare const AppHeader: import("react").ForwardRefExoticComponent<AppHeaderProps & import("react").RefAttributes<HTMLDivElement>>;
4
- export declare const AppHeaderActions: import("react").ForwardRefExoticComponent<AppHeaderActionsProps & import("react").RefAttributes<HTMLDivElement>>;
3
+ export declare const AppHeader: ({ className, children, ...props }: AppHeaderProps) => import("react").JSX.Element;
4
+ export declare const AppHeaderActions: ({ className, children, ...props }: AppHeaderActionsProps) => import("react").JSX.Element;
5
5
  //# sourceMappingURL=AppHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeader.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,SAAS,2GAQrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,kHAQ5B,CAAC"}
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAEpF,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,SAAS,GAAI,mCAAmC,cAAc,gCAE1E,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,mCAAmC,qBAAqB,gCAMxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeaderProfile.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderProfile.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAW,MAAM,wBAAwB,CAAC;AAK7E,eAAO,MAAM,gBAAgB,kHAmG3B,CAAC"}
1
+ {"version":3,"file":"AppHeaderProfile.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderProfile.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAMpE,eAAO,MAAM,gBAAgB,kHAgE3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeaderSearch.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderSearch.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,eAAe,mHAyE1B,CAAC"}
1
+ {"version":3,"file":"AppHeaderSearch.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderSearch.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,eAAe,mHAyE1B,CAAC"}
@@ -1,7 +1,7 @@
1
- import { type ReactNode } from "react";
1
+ import type { ReactNode } from "react";
2
2
  export interface AppBodyProps {
3
3
  children?: ReactNode;
4
4
  className?: string;
5
5
  }
6
- export declare const AppBody: import("react").ForwardRefExoticComponent<AppBodyProps & import("react").RefAttributes<HTMLElement>>;
6
+ export declare const AppBody: ({ children }: AppBodyProps) => ReactNode;
7
7
  //# sourceMappingURL=AppBody.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppBody.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppBody.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,OAAO,sGAQnB,CAAC"}
1
+ {"version":3,"file":"AppBody.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppBody.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,OAAO,GAAI,cAAc,YAAY,KAC7B,SACpB,CAAC"}
@@ -1,8 +1,12 @@
1
1
  import { type ReactNode } from "react";
2
- import "./styles/app-layout.css";
3
2
  export interface AppLayoutProps {
4
3
  children?: ReactNode;
5
4
  className?: string;
6
5
  }
6
+ /**
7
+ * Application layout that internally wraps children with BreadcrumbProvider
8
+ * and SidebarProvider. Auto-positions AppHeader, AppSidebar, and AppBody
9
+ * by componentId. Breadcrumbs render automatically from context.
10
+ */
7
11
  export declare const AppLayout: import("react").ForwardRefExoticComponent<AppLayoutProps & import("react").RefAttributes<HTMLDivElement>>;
8
12
  //# sourceMappingURL=AppLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppLayout.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,yBAAyB,CAAC;AAEjC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,SAAS,2GA4BrB,CAAC"}
1
+ {"version":3,"file":"AppLayout.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,2GAYrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type ReactNode } from "react";
2
+ import "./styles/app-layout.css";
3
+ export interface AppLayoutInnerProps {
4
+ children?: ReactNode;
5
+ className?: string;
6
+ }
7
+ export declare const AppLayoutInner: import("react").ForwardRefExoticComponent<AppLayoutInnerProps & import("react").RefAttributes<HTMLDivElement>>;
8
+ //# sourceMappingURL=AppLayoutInner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppLayoutInner.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppLayoutInner.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf,OAAO,yBAAyB,CAAC;AAEjC,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,gHAmE1B,CAAC"}
@@ -1,8 +1,7 @@
1
- import { type ReactNode } from "react";
2
- import "./styles/app-layout.css";
1
+ import type { ReactNode } from "react";
3
2
  export interface AppSidebarProps {
4
3
  children?: ReactNode;
5
4
  className?: string;
6
5
  }
7
- export declare const AppSidebar: import("react").ForwardRefExoticComponent<AppSidebarProps & import("react").RefAttributes<HTMLElement>>;
6
+ export declare const AppSidebar: ({ children }: AppSidebarProps) => ReactNode;
8
7
  //# sourceMappingURL=AppSidebar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,yBAAyB,CAAC;AAEjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,yGAQtB,CAAC"}
1
+ {"version":3,"file":"AppSidebar.d.ts","sourceRoot":"","sources":["../../../src/components/app-layout/AppSidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,UAAU,GAAI,cAAc,eAAe,KACnC,SACpB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AvatarProps } from "../../types/avatar";
2
+ import "./styles/avatar.css";
3
+ export declare const Avatar: import("react").ForwardRefExoticComponent<AvatarProps & import("react").RefAttributes<HTMLDivElement>>;
4
+ //# sourceMappingURL=Avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAGlE,OAAO,qBAAqB,CAAC;AAyB7B,eAAO,MAAM,MAAM,wGAgDjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { Avatar } from "./Avatar";
2
+ export type { AvatarProps, AvatarSize, AvatarClassNames } from "../../types/avatar";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,UAAU,yGAsBtB,CAAC;AAEF,eAAO,MAAM,cAAc,kHAY1B,CAAC;AAEF,eAAO,MAAM,cAAc,+GAY1B,CAAC;AAEF,eAAO,MAAM,cAAc,mHAgC1B,CAAC;AAEF,eAAO,MAAM,cAAc,iHAa1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,oHAwB9B,CAAC;AAEH,eAAO,MAAM,kBAAkB,qHA6B7B,CAAC"}
1
+ {"version":3,"file":"Breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/Breadcrumb.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACzB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,UAAU,yGAsBtB,CAAC;AAEF,eAAO,MAAM,cAAc,kHAY1B,CAAC;AAEF,eAAO,MAAM,cAAc,+GAY1B,CAAC;AAEF,eAAO,MAAM,cAAc,mHA6C1B,CAAC;AAEF,eAAO,MAAM,cAAc,iHAa1B,CAAC;AAEF,eAAO,MAAM,mBAAmB,oHAwB9B,CAAC;AAEH,eAAO,MAAM,kBAAkB,qHA6B7B,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type ReactNode } from "react";
2
+ export interface BreadcrumbEntry {
3
+ label: string;
4
+ href?: string;
5
+ }
6
+ interface BreadcrumbContextValue {
7
+ items: BreadcrumbEntry[];
8
+ setItems: (items: BreadcrumbEntry[]) => void;
9
+ }
10
+ export declare function BreadcrumbProvider({ children }: {
11
+ children: ReactNode;
12
+ }): import("react").JSX.Element;
13
+ /** Hook for child pages to set the breadcrumb trail. Compares by value to avoid infinite loops. Cleans up on unmount. */
14
+ export declare function useBreadcrumbs(items: BreadcrumbEntry[]): void;
15
+ export declare function useBreadcrumbContext(): BreadcrumbContextValue;
16
+ export {};
17
+ //# sourceMappingURL=breadcrumb-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb-context.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/breadcrumb-context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0D,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/F,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;CAC9C;AAOD,wBAAgB,kBAAkB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,+BAQvE;AAED,yHAAyH;AACzH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,QAgBtD;AAED,wBAAgB,oBAAoB,2BAEnC"}
@@ -1,3 +1,5 @@
1
+ export { BreadcrumbProvider, useBreadcrumbs, useBreadcrumbContext } from "./breadcrumb-context";
2
+ export type { BreadcrumbEntry } from "./breadcrumb-context";
1
3
  export { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "./Breadcrumb";
2
4
  export type { BreadcrumbClassNames, BreadcrumbEllipsisClassNames, BreadcrumbEllipsisProps, BreadcrumbItemClassNames, BreadcrumbItemProps, BreadcrumbLinkClassNames, BreadcrumbLinkProps, BreadcrumbListClassNames, BreadcrumbListProps, BreadcrumbPageClassNames, BreadcrumbPageProps, BreadcrumbProps, BreadcrumbSeparatorClassNames, BreadcrumbSeparatorProps, } from "../../types/breadcrumb";
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/breadcrumb/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,EACvB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,EACf,6BAA6B,EAC7B,wBAAwB,GACzB,MAAM,wBAAwB,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import type { BulkImportModalProps } from "../../types/bulk-import-modal";
2
2
  import "./styles/bulk-import-modal.css";
3
- export declare function BulkImportModal({ open, onOpenChange, fields, onComplete, title, maxFileSizeBytes, allowImportWithWarnings, className, }: BulkImportModalProps): import("react").JSX.Element;
3
+ export declare function BulkImportModal({ open, onOpenChange, fields, onComplete, maxFileSizeBytes, className, defaultState, }: BulkImportModalProps): import("react").JSX.Element;
4
4
  //# sourceMappingURL=BulkImportModal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BulkImportModal.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/BulkImportModal.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAO1E,OAAO,gCAAgC,CAAC;AAgCxC,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,KAAqB,EACrB,gBAAwC,EACxC,uBAA+B,EAC/B,SAAS,GACV,EAAE,oBAAoB,+BAkUtB"}
1
+ {"version":3,"file":"BulkImportModal.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/BulkImportModal.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,+BAA+B,CAAC;AAYvC,OAAO,gCAAgC,CAAC;AAgCxC,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,gBAAwC,EACxC,SAAS,EACT,YAAY,GACb,EAAE,oBAAoB,+BA8atB"}
@@ -0,0 +1,8 @@
1
+ export declare const DEFAULT_CHUNK_SIZE = 2048;
2
+ export declare const PARSE_CHUNK_SIZE = 4096;
3
+ export declare const INITIAL_VALIDATION_CHUNK_SIZE = 1024;
4
+ export declare const REMAP_CHUNK_SIZE = 1024;
5
+ export declare const BACKGROUND_VALIDATION_CHUNK_SIZE = 256;
6
+ export declare const DEFAULT_MAX_FILE_SIZE: number;
7
+ export declare const ACCEPTED_EXTENSIONS: readonly [".xlsx", ".xls", ".csv"];
8
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,OAAO,CAAC;AACvC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD,eAAO,MAAM,qBAAqB,QAAkB,CAAC;AACrD,eAAO,MAAM,mBAAmB,oCAAqC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBulkImportFlow.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/hooks/useBulkImportFlow.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAmB1C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAkTzB"}
1
+ {"version":3,"file":"useBulkImportFlow.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/hooks/useBulkImportFlow.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAIV,wBAAwB,EACxB,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAwE1C,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CAkXzB"}
@@ -4,9 +4,10 @@ export { SelectHeaderRowStep } from "./steps/SelectHeaderRowStep";
4
4
  export { MatchColumnsStep } from "./steps/MatchColumnsStep";
5
5
  export { ValidateDataStep } from "./steps/ValidateDataStep";
6
6
  export { useBulkImportFlow } from "./hooks/useBulkImportFlow";
7
- export { BulkImportParseError, isAcceptedSpreadsheetFile, parseSpreadsheetFile, } from "./utils/parseSpreadsheetFile";
8
- export { autoMatchSourceColumns, buildAllSourceColumns, buildSourceColumns, createEmptySourceMapping, getMappedFieldKeys, isRequiredMappingComplete, mapRowsToRecords, } from "./utils/mapRowsToRecords";
9
- export { splitValidationIssues, validateMappedRows, } from "./utils/validateMappedRows";
7
+ export { BulkImportParseError, filterEmptyRows, isAcceptedSpreadsheetFile, isCsv, normalizeRows, parseCsvText, parseSpreadsheetFile, } from "./utils/parseSpreadsheetFile";
8
+ export { autoMatchSourceColumns, buildAllSourceColumns, buildSourceColumns, createEmptySourceMapping, getMappedFieldKeys, isRequiredMappingComplete, mapDataRows, mapRowsToRecords, } from "./utils/mapRowsToRecords";
9
+ export { splitValidationIssues, validateBatch, validateMappedRows, } from "./utils/validateMappedRows";
10
10
  export { getFieldExampleValue, getFieldHint, validateFieldValue, } from "./utils/validateFieldValue";
11
- export type { BulkImportField, BulkImportFieldType, BulkImportModalProps, BulkImportResult, BulkImportStep, BulkImportValidationError, ColumnMapping, ParsedSpreadsheet, SourceColumn, SourceColumnMapping, UseBulkImportFlowOptions, UseBulkImportFlowReturn, } from "../../types/bulk-import-modal";
11
+ export type { BulkImportFlowDefaultState, BulkImportField, BulkImportFieldType, BulkImportModalProps, BulkImportResult, BulkImportValidationError, ColumnMapping, ParsedSpreadsheet, SourceColumn, SourceColumnMapping, UseBulkImportFlowOptions, UseBulkImportFlowReturn, } from "../../types/bulk-import-modal";
12
+ export { BulkImportStep } from "../../types/bulk-import-modal";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,yBAAyB,EACzB,KAAK,EACL,aAAa,EACb,YAAY,EACZ,oBAAoB,GACrB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,aAAa,EACb,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EACV,0BAA0B,EAC1B,eAAe,EACf,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC"}
@@ -1,3 +1,5 @@
1
+ import type { ReactNode } from "react";
2
+ import type { DropdownOption } from "../../../types/dropdown";
1
3
  export interface FieldMappingSelectOption {
2
4
  value: string;
3
5
  label: string;
@@ -9,6 +11,8 @@ export interface FieldMappingSelectProps {
9
11
  options: FieldMappingSelectOption[];
10
12
  placeholder?: string;
11
13
  clearable?: boolean;
14
+ invalid?: boolean;
15
+ formatOption?: (option: DropdownOption | null, state: "selected" | "idle" | "empty") => ReactNode;
12
16
  }
13
- export declare function FieldMappingSelect({ ariaLabel, value, onChange, options, placeholder, clearable, }: FieldMappingSelectProps): import("react").JSX.Element;
17
+ export declare function FieldMappingSelect({ ariaLabel, value, onChange, options, placeholder, clearable, invalid, formatOption, }: FieldMappingSelectProps): import("react").JSX.Element;
14
18
  //# sourceMappingURL=FieldMappingSelect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldMappingSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/internal/FieldMappingSelect.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAyB,EACzB,SAAiB,GAClB,EAAE,uBAAuB,+BAWzB"}
1
+ {"version":3,"file":"FieldMappingSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/internal/FieldMappingSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAG9D,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,OAAO,EAAE,wBAAwB,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,GAAG,OAAO,KAAK,SAAS,CAAC;CACnG;AAED,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAyB,EACzB,SAAiB,EACjB,OAAe,EACf,YAAY,GACb,EAAE,uBAAuB,+BAazB"}
@@ -7,7 +7,8 @@ interface MatchColumnsStepProps {
7
7
  excludedColumns: number[];
8
8
  onSourceMappingChange: (sourceIndex: number, fieldKey: string | null) => void;
9
9
  onToggleExcludedColumn: (sourceIndex: number) => void;
10
+ onResetMapping: () => void;
10
11
  }
11
- export declare function MatchColumnsStep({ fields, allSourceColumns, previewRows, sourceColumnMapping, excludedColumns, onSourceMappingChange, onToggleExcludedColumn, }: MatchColumnsStepProps): import("react").JSX.Element;
12
+ export declare function MatchColumnsStep({ fields, allSourceColumns, previewRows, sourceColumnMapping, excludedColumns, onSourceMappingChange, onToggleExcludedColumn, onResetMapping, }: MatchColumnsStepProps): import("react").JSX.Element;
12
13
  export {};
13
14
  //# sourceMappingURL=MatchColumnsStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MatchColumnsStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/MatchColumnsStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAG1C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9E,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAwCD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,GACvB,EAAE,qBAAqB,+BAoFvB"}
1
+ {"version":3,"file":"MatchColumnsStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/MatchColumnsStep.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAI1C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,gBAAgB,EAAE,YAAY,EAAE,CAAC;IACjC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC;IACxB,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9E,sBAAsB,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACtD,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAoDD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,GACf,EAAE,qBAAqB,+BAwIvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectHeaderRowStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/SelectHeaderRowStep.tsx"],"names":[],"mappings":"AAEA,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,cAAc,EACd,iBAAiB,GAClB,EAAE,wBAAwB,+BAyD1B"}
1
+ {"version":3,"file":"SelectHeaderRowStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/SelectHeaderRowStep.tsx"],"names":[],"mappings":"AAIA,UAAU,wBAAwB;IAChC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC;IACjB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAKD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,cAAc,EACd,iBAAiB,GAClB,EAAE,wBAAwB,+BAgG1B"}
@@ -1,11 +1,13 @@
1
1
  import type { BulkImportField } from "../../../types/bulk-import-modal";
2
2
  interface UploadStepProps {
3
3
  fields: BulkImportField[];
4
- fileName: string | null;
5
4
  parseError: string | null;
6
5
  isParsing: boolean;
6
+ maxFileSizeBytes: number;
7
7
  onFileSelected: (file: File) => void;
8
+ uploadedFile?: File | null;
9
+ onRemoveFile?: () => void;
8
10
  }
9
- export declare function UploadStep({ fields, fileName, parseError, isParsing, onFileSelected, }: UploadStepProps): import("react").JSX.Element;
11
+ export declare function UploadStep({ fields, parseError, isParsing, maxFileSizeBytes, onFileSelected, uploadedFile, onRemoveFile, }: UploadStepProps): import("react").JSX.Element;
10
12
  export {};
11
13
  //# sourceMappingURL=UploadStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UploadStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/UploadStep.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAGxE,UAAU,eAAe;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,cAAc,GACf,EAAE,eAAe,+BAiFjB"}
1
+ {"version":3,"file":"UploadStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/UploadStep.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAIxE,UAAU,eAAe;IACvB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,cAAc,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,GACb,EAAE,eAAe,+BAuDjB"}
@@ -1,18 +1,16 @@
1
- import type { BulkImportField, BulkImportValidationError } from "../../../types/bulk-import-modal";
1
+ import type { MutableRefObject } from "react";
2
+ import type { BulkImportField, BulkImportResult, BulkImportValidationError } from "../../../types/bulk-import-modal";
2
3
  interface ValidateDataStepProps {
3
4
  fields: BulkImportField[];
4
- mappedFieldKeys: string[];
5
5
  mappedRows: Record<string, string>[];
6
6
  errors: BulkImportValidationError[];
7
- selectedRowIds: number[];
8
- showOnlyErrors: boolean;
9
7
  discardedRows: number[];
10
- onToggleRowSelection: (rowId: number) => void;
11
- onSetVisibleRowsSelection: (rowIds: number[], selected: boolean) => void;
12
- onShowOnlyErrorsChange: (value: boolean) => void;
13
- onDiscardSelectedRows: () => void;
14
- onUpdateRowValue: (rowId: number, fieldKey: string, value: string) => void;
8
+ dirtyCellsRef: MutableRefObject<Record<string, string>>;
9
+ stepResultRef: MutableRefObject<() => BulkImportResult>;
10
+ onDiscardSelectedRows: (ids: number[]) => void;
11
+ onResetDiscardedRows: () => void;
12
+ onCanConfirmChange: (canConfirm: boolean) => void;
15
13
  }
16
- export declare function ValidateDataStep({ fields, mappedFieldKeys, mappedRows, errors, selectedRowIds, showOnlyErrors, discardedRows, onToggleRowSelection, onSetVisibleRowsSelection, onShowOnlyErrorsChange, onDiscardSelectedRows, onUpdateRowValue, }: ValidateDataStepProps): import("react").JSX.Element;
14
+ export declare function ValidateDataStep({ fields, mappedRows, errors, discardedRows, dirtyCellsRef, stepResultRef, onDiscardSelectedRows, onResetDiscardedRows, onCanConfirmChange, }: ValidateDataStepProps): import("react").JSX.Element;
17
15
  export {};
18
16
  //# sourceMappingURL=ValidateDataStep.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ValidateDataStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/ValidateDataStep.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAE1C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,yBAAyB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IACzE,sBAAsB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5E;AAYD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,eAAe,EACf,UAAU,EACV,MAAM,EACN,cAAc,EACd,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,GACjB,EAAE,qBAAqB,+BAyKvB"}
1
+ {"version":3,"file":"ValidateDataStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/ValidateDataStep.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAkB1C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,aAAa,EAAE,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACxD,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/C,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,kBAAkB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AA2GD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,UAAU,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,EAAE,qBAAqB,+BAocvB"}
@@ -5,5 +5,6 @@ export declare function createEmptySourceMapping(sourceColumns: SourceColumn[]):
5
5
  export declare function autoMatchSourceColumns(fields: BulkImportField[], sourceColumns: SourceColumn[]): SourceColumnMapping;
6
6
  export declare function isRequiredMappingComplete(fields: BulkImportField[], sourceColumnMapping: SourceColumnMapping, excludedColumns: number[]): boolean;
7
7
  export declare function mapRowsToRecords(rows: string[][], headerRowIndex: number, sourceColumnMapping: SourceColumnMapping, excludedColumns: number[]): Record<string, string>[];
8
+ export declare function mapDataRows(dataRows: string[][], sourceColumnMapping: SourceColumnMapping, excludedColumns: number[]): Record<string, string>[];
8
9
  export declare function getMappedFieldKeys(sourceColumnMapping: SourceColumnMapping, excludedColumns: number[]): string[];
9
10
  //# sourceMappingURL=mapRowsToRecords.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapRowsToRecords.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/mapRowsToRecords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAE1C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,cAAc,EAAE,MAAM,GACrB,YAAY,EAAE,CAIhB;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,cAAc,EAAE,MAAM,GACrB,YAAY,EAAE,CAOhB;AAED,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,YAAY,EAAE,GAC5B,mBAAmB,CAIrB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EAAE,EACzB,aAAa,EAAE,YAAY,EAAE,GAC5B,mBAAmB,CA0BrB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EAAE,EACzB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,WAY1B;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAwB1B;AAED,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,YAM1B"}
1
+ {"version":3,"file":"mapRowsToRecords.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/mapRowsToRecords.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAE1C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,cAAc,EAAE,MAAM,GACrB,YAAY,EAAE,CAIhB;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,cAAc,EAAE,MAAM,GACrB,YAAY,EAAE,CAOhB;AAED,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,YAAY,EAAE,GAC5B,mBAAmB,CAIrB;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,eAAe,EAAE,EACzB,aAAa,EAAE,YAAY,EAAE,GAC5B,mBAAmB,CA0BrB;AAED,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,eAAe,EAAE,EACzB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,WAY1B;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EAAE,EAAE,EAChB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAwB1B;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,MAAM,EAAE,EAAE,EACpB,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,GACxB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAqB1B;AAED,wBAAgB,kBAAkB,CAChC,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,MAAM,EAAE,YAM1B"}
@@ -2,6 +2,10 @@ import type { ParsedSpreadsheet } from "../../../types/bulk-import-modal";
2
2
  export declare class BulkImportParseError extends Error {
3
3
  constructor(message: string);
4
4
  }
5
+ export declare function normalizeRows(rows: unknown[][]): string[][];
6
+ export declare function filterEmptyRows(rows: string[][]): string[][];
5
7
  export declare function isAcceptedSpreadsheetFile(fileName: string): boolean;
8
+ export declare function isCsv(fileName: string): boolean;
9
+ export declare function parseCsvText(text: string): string[][];
6
10
  export declare function parseSpreadsheetFile(file: File, maxFileSizeBytes?: number): Promise<ParsedSpreadsheet>;
7
11
  //# sourceMappingURL=parseSpreadsheetFile.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseSpreadsheetFile.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/parseSpreadsheetFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAI1E,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAqBD,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,WAEzD;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,gBAAgB,SAAkB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAwC5B"}
1
+ {"version":3,"file":"parseSpreadsheetFile.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/parseSpreadsheetFile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAG1E,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM;CAI5B;AAmBD,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAI3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAI5D;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,WAEzD;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,WAErC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,CA+CrD;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,IAAI,EACV,gBAAgB,SAAkB,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAsD5B"}
@@ -1,5 +1,6 @@
1
1
  import type { BulkImportField, BulkImportValidationError } from "../../../types/bulk-import-modal";
2
- export declare function validateMappedRows(rows: Record<string, string>[], fields: BulkImportField[]): BulkImportValidationError[];
2
+ export declare function validateMappedRows(rows: Record<string, string>[], fields: BulkImportField[], changedRowIndex?: number): BulkImportValidationError[];
3
+ export declare function validateBatch(rows: Record<string, string>[], fields: BulkImportField[]): BulkImportValidationError[];
3
4
  export declare function splitValidationIssues(issues: BulkImportValidationError[]): {
4
5
  errors: BulkImportValidationError[];
5
6
  warnings: BulkImportValidationError[];
@@ -1 +1 @@
1
- {"version":3,"file":"validateMappedRows.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/validateMappedRows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAG1C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC9B,MAAM,EAAE,eAAe,EAAE,GACxB,yBAAyB,EAAE,CAuB7B;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,yBAAyB,EAAE;;;EAKxE"}
1
+ {"version":3,"file":"validateMappedRows.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/validateMappedRows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAG1C,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC9B,MAAM,EAAE,eAAe,EAAE,EACzB,eAAe,CAAC,EAAE,MAAM,GACvB,yBAAyB,EAAE,CAQ7B;AAwGD,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC9B,MAAM,EAAE,eAAe,EAAE,GACxB,yBAAyB,EAAE,CAE7B;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,yBAAyB,EAAE;;;EAKxE"}
@@ -0,0 +1,11 @@
1
+ import type { BulkImportField, BulkImportValidationError } from "../../../types/bulk-import-modal";
2
+ export interface ValidateRowsChunkedOptions {
3
+ rows: Record<string, string>[];
4
+ fields: BulkImportField[];
5
+ signal?: AbortSignal;
6
+ onProgress?: (pct: number) => void;
7
+ getRow?: (row: Record<string, string>, rowIndex: number) => Record<string, string>;
8
+ chunk_size?: number;
9
+ }
10
+ export declare function validateRowsChunked(options: ValidateRowsChunkedOptions): Promise<BulkImportValidationError[]>;
11
+ //# sourceMappingURL=validateRowsChunked.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateRowsChunked.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/utils/validateRowsChunked.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAM1C,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CACP,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC3B,QAAQ,EAAE,MAAM,KACb,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,0BAA0B,GAClC,OAAO,CAAC,yBAAyB,EAAE,CAAC,CA4DtC"}