@kelpie/ui 0.6.0 → 0.8.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 (243) hide show
  1. package/dist/api/resource.d.ts +58 -5
  2. package/dist/api/resource.d.ts.map +1 -1
  3. package/dist/api/resource.js +106 -24
  4. package/dist/api/resource.js.map +1 -1
  5. package/dist/api/resources/companies.d.ts +2 -0
  6. package/dist/api/resources/companies.d.ts.map +1 -1
  7. package/dist/api/resources/companies.js +5 -1
  8. package/dist/api/resources/companies.js.map +1 -1
  9. package/dist/api/resources/decisions.d.ts +2 -0
  10. package/dist/api/resources/decisions.d.ts.map +1 -1
  11. package/dist/api/resources/decisions.js +1 -0
  12. package/dist/api/resources/decisions.js.map +1 -1
  13. package/dist/api/resources/emailDomainLinker.d.ts +16 -0
  14. package/dist/api/resources/emailDomainLinker.d.ts.map +1 -0
  15. package/dist/api/resources/emailDomainLinker.js +16 -0
  16. package/dist/api/resources/emailDomainLinker.js.map +1 -0
  17. package/dist/api/resources/forms.d.ts.map +1 -1
  18. package/dist/api/resources/forms.js +6 -20
  19. package/dist/api/resources/forms.js.map +1 -1
  20. package/dist/api/resources/handbookPages.d.ts +1 -1
  21. package/dist/api/resources/handbookPages.js +1 -1
  22. package/dist/api/resources/importJobs.d.ts +3 -1
  23. package/dist/api/resources/importJobs.d.ts.map +1 -1
  24. package/dist/api/resources/importJobs.js +1 -0
  25. package/dist/api/resources/importJobs.js.map +1 -1
  26. package/dist/api/resources/listMembers.d.ts +27 -0
  27. package/dist/api/resources/listMembers.d.ts.map +1 -0
  28. package/dist/api/resources/listMembers.js +108 -0
  29. package/dist/api/resources/listMembers.js.map +1 -0
  30. package/dist/api/resources/lists.d.ts +14 -0
  31. package/dist/api/resources/lists.d.ts.map +1 -0
  32. package/dist/api/resources/lists.js +34 -0
  33. package/dist/api/resources/lists.js.map +1 -0
  34. package/dist/api/resources/people.d.ts.map +1 -1
  35. package/dist/api/resources/people.js +4 -1
  36. package/dist/api/resources/people.js.map +1 -1
  37. package/dist/api/resources/publicConfig.d.ts +8 -0
  38. package/dist/api/resources/publicConfig.d.ts.map +1 -0
  39. package/dist/api/resources/publicConfig.js +22 -0
  40. package/dist/api/resources/publicConfig.js.map +1 -0
  41. package/dist/api/resources/roles.d.ts +2 -0
  42. package/dist/api/resources/roles.d.ts.map +1 -1
  43. package/dist/api/resources/roles.js +1 -1
  44. package/dist/api/resources/roles.js.map +1 -1
  45. package/dist/api/resources/sampleData.d.ts +17 -0
  46. package/dist/api/resources/sampleData.d.ts.map +1 -0
  47. package/dist/api/resources/sampleData.js +30 -0
  48. package/dist/api/resources/sampleData.js.map +1 -0
  49. package/dist/api/resources/webhooks.d.ts.map +1 -1
  50. package/dist/api/resources/webhooks.js +7 -22
  51. package/dist/api/resources/webhooks.js.map +1 -1
  52. package/dist/app/KelpieApp.d.ts.map +1 -1
  53. package/dist/app/KelpieApp.js +5 -2
  54. package/dist/app/KelpieApp.js.map +1 -1
  55. package/dist/components/ActivitiesPanel.d.ts.map +1 -1
  56. package/dist/components/ActivitiesPanel.js +2 -1
  57. package/dist/components/ActivitiesPanel.js.map +1 -1
  58. package/dist/components/ColumnPicker.d.ts +24 -0
  59. package/dist/components/ColumnPicker.d.ts.map +1 -0
  60. package/dist/components/ColumnPicker.js +56 -0
  61. package/dist/components/ColumnPicker.js.map +1 -0
  62. package/dist/components/DataTable.d.ts +16 -1
  63. package/dist/components/DataTable.d.ts.map +1 -1
  64. package/dist/components/DataTable.js +51 -10
  65. package/dist/components/DataTable.js.map +1 -1
  66. package/dist/components/DecisionsPanel.d.ts.map +1 -1
  67. package/dist/components/DecisionsPanel.js +4 -3
  68. package/dist/components/DecisionsPanel.js.map +1 -1
  69. package/dist/components/EntitySearch.d.ts.map +1 -1
  70. package/dist/components/EntitySearch.js +11 -5
  71. package/dist/components/EntitySearch.js.map +1 -1
  72. package/dist/components/EnvironmentBanner.d.ts +14 -0
  73. package/dist/components/EnvironmentBanner.d.ts.map +1 -0
  74. package/dist/components/EnvironmentBanner.js +23 -0
  75. package/dist/components/EnvironmentBanner.js.map +1 -0
  76. package/dist/components/ListsPanel.d.ts +14 -0
  77. package/dist/components/ListsPanel.d.ts.map +1 -0
  78. package/dist/components/ListsPanel.js +56 -0
  79. package/dist/components/ListsPanel.js.map +1 -0
  80. package/dist/components/NotesPanel.d.ts.map +1 -1
  81. package/dist/components/NotesPanel.js +6 -5
  82. package/dist/components/NotesPanel.js.map +1 -1
  83. package/dist/components/Paginator.d.ts +26 -0
  84. package/dist/components/Paginator.d.ts.map +1 -0
  85. package/dist/components/Paginator.js +16 -0
  86. package/dist/components/Paginator.js.map +1 -0
  87. package/dist/components/PlanPanel.d.ts.map +1 -1
  88. package/dist/components/PlanPanel.js +2 -1
  89. package/dist/components/PlanPanel.js.map +1 -1
  90. package/dist/components/Shell.d.ts.map +1 -1
  91. package/dist/components/Shell.js +1 -0
  92. package/dist/components/Shell.js.map +1 -1
  93. package/dist/index.d.ts +8 -2
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +4 -1
  96. package/dist/index.js.map +1 -1
  97. package/dist/lib/listView.d.ts +15 -0
  98. package/dist/lib/listView.d.ts.map +1 -0
  99. package/dist/lib/listView.js +66 -0
  100. package/dist/lib/listView.js.map +1 -0
  101. package/dist/lib/sort.d.ts +43 -0
  102. package/dist/lib/sort.d.ts.map +1 -0
  103. package/dist/lib/sort.js +102 -0
  104. package/dist/lib/sort.js.map +1 -0
  105. package/dist/pages/CompaniesPage.d.ts.map +1 -1
  106. package/dist/pages/CompaniesPage.js +88 -3
  107. package/dist/pages/CompaniesPage.js.map +1 -1
  108. package/dist/pages/CompanyDetail.d.ts.map +1 -1
  109. package/dist/pages/CompanyDetail.js +17 -14
  110. package/dist/pages/CompanyDetail.js.map +1 -1
  111. package/dist/pages/DealDetail.d.ts.map +1 -1
  112. package/dist/pages/DealDetail.js +3 -1
  113. package/dist/pages/DealDetail.js.map +1 -1
  114. package/dist/pages/DealsPage.d.ts.map +1 -1
  115. package/dist/pages/DealsPage.js +134 -14
  116. package/dist/pages/DealsPage.js.map +1 -1
  117. package/dist/pages/DecisionsPage.d.ts.map +1 -1
  118. package/dist/pages/DecisionsPage.js +50 -8
  119. package/dist/pages/DecisionsPage.js.map +1 -1
  120. package/dist/pages/FormsPage.d.ts.map +1 -1
  121. package/dist/pages/FormsPage.js +53 -2
  122. package/dist/pages/FormsPage.js.map +1 -1
  123. package/dist/pages/FundraisingPage.d.ts.map +1 -1
  124. package/dist/pages/FundraisingPage.js +116 -14
  125. package/dist/pages/FundraisingPage.js.map +1 -1
  126. package/dist/pages/HiringPage.d.ts.map +1 -1
  127. package/dist/pages/HiringPage.js +27 -4
  128. package/dist/pages/HiringPage.js.map +1 -1
  129. package/dist/pages/ListDetail.d.ts +11 -0
  130. package/dist/pages/ListDetail.d.ts.map +1 -0
  131. package/dist/pages/ListDetail.js +188 -0
  132. package/dist/pages/ListDetail.js.map +1 -0
  133. package/dist/pages/ListsPage.d.ts +9 -0
  134. package/dist/pages/ListsPage.d.ts.map +1 -0
  135. package/dist/pages/ListsPage.js +125 -0
  136. package/dist/pages/ListsPage.js.map +1 -0
  137. package/dist/pages/OpportunitiesPage.d.ts.map +1 -1
  138. package/dist/pages/OpportunitiesPage.js +97 -14
  139. package/dist/pages/OpportunitiesPage.js.map +1 -1
  140. package/dist/pages/OpportunityDetail.d.ts.map +1 -1
  141. package/dist/pages/OpportunityDetail.js +3 -1
  142. package/dist/pages/OpportunityDetail.js.map +1 -1
  143. package/dist/pages/PartnershipDetail.d.ts.map +1 -1
  144. package/dist/pages/PartnershipDetail.js +3 -1
  145. package/dist/pages/PartnershipDetail.js.map +1 -1
  146. package/dist/pages/PartnershipsPage.d.ts.map +1 -1
  147. package/dist/pages/PartnershipsPage.js +111 -14
  148. package/dist/pages/PartnershipsPage.js.map +1 -1
  149. package/dist/pages/PeoplePage.d.ts.map +1 -1
  150. package/dist/pages/PeoplePage.js +102 -3
  151. package/dist/pages/PeoplePage.js.map +1 -1
  152. package/dist/pages/PersonDetail.d.ts.map +1 -1
  153. package/dist/pages/PersonDetail.js +5 -3
  154. package/dist/pages/PersonDetail.js.map +1 -1
  155. package/dist/pages/PlanningPage.d.ts.map +1 -1
  156. package/dist/pages/PlanningPage.js +85 -17
  157. package/dist/pages/PlanningPage.js.map +1 -1
  158. package/dist/pages/RaiseDetail.d.ts.map +1 -1
  159. package/dist/pages/RaiseDetail.js +3 -1
  160. package/dist/pages/RaiseDetail.js.map +1 -1
  161. package/dist/pages/RoleDetail.d.ts.map +1 -1
  162. package/dist/pages/RoleDetail.js +5 -4
  163. package/dist/pages/RoleDetail.js.map +1 -1
  164. package/dist/pages/admin/DataPage.d.ts.map +1 -1
  165. package/dist/pages/admin/DataPage.js +126 -16
  166. package/dist/pages/admin/DataPage.js.map +1 -1
  167. package/dist/pages/admin/WebhookDeliveries.d.ts.map +1 -1
  168. package/dist/pages/admin/WebhookDeliveries.js +3 -2
  169. package/dist/pages/admin/WebhookDeliveries.js.map +1 -1
  170. package/dist/pages/admin/WebhooksPage.d.ts.map +1 -1
  171. package/dist/pages/admin/WebhooksPage.js +3 -2
  172. package/dist/pages/admin/WebhooksPage.js.map +1 -1
  173. package/dist/pages/admin/WorkspaceSettingsPage.d.ts.map +1 -1
  174. package/dist/pages/admin/WorkspaceSettingsPage.js +45 -2
  175. package/dist/pages/admin/WorkspaceSettingsPage.js.map +1 -1
  176. package/dist/pages/forms/SubmissionsTable.d.ts.map +1 -1
  177. package/dist/pages/forms/SubmissionsTable.js +2 -1
  178. package/dist/pages/forms/SubmissionsTable.js.map +1 -1
  179. package/dist/pages/handbook/HandbookPage.js +1 -1
  180. package/dist/pages/hiringDirectory.js +2 -2
  181. package/dist/pages/onboarding/WorkspaceStepPage.d.ts.map +1 -1
  182. package/dist/pages/onboarding/WorkspaceStepPage.js +15 -2
  183. package/dist/pages/onboarding/WorkspaceStepPage.js.map +1 -1
  184. package/dist/pages/positionDirectory.js +2 -2
  185. package/package.json +2 -2
  186. package/src/api/resource.ts +149 -31
  187. package/src/api/resources/companies.ts +7 -1
  188. package/src/api/resources/decisions.ts +3 -0
  189. package/src/api/resources/emailDomainLinker.ts +43 -0
  190. package/src/api/resources/forms.ts +5 -23
  191. package/src/api/resources/handbookPages.ts +1 -1
  192. package/src/api/resources/importJobs.ts +4 -0
  193. package/src/api/resources/listMembers.ts +173 -0
  194. package/src/api/resources/lists.ts +61 -0
  195. package/src/api/resources/people.ts +4 -1
  196. package/src/api/resources/publicConfig.ts +33 -0
  197. package/src/api/resources/roles.ts +3 -1
  198. package/src/api/resources/sampleData.ts +56 -0
  199. package/src/api/resources/webhooks.ts +8 -24
  200. package/src/app/KelpieApp.tsx +11 -0
  201. package/src/components/ActivitiesPanel.tsx +2 -10
  202. package/src/components/ColumnPicker.tsx +124 -0
  203. package/src/components/DataTable.tsx +89 -10
  204. package/src/components/DecisionsPanel.tsx +4 -12
  205. package/src/components/EntitySearch.tsx +12 -5
  206. package/src/components/EnvironmentBanner.tsx +30 -0
  207. package/src/components/ListsPanel.tsx +176 -0
  208. package/src/components/NotesPanel.tsx +6 -14
  209. package/src/components/Paginator.tsx +78 -0
  210. package/src/components/PlanPanel.tsx +2 -10
  211. package/src/components/Shell.tsx +1 -0
  212. package/src/index.ts +10 -1
  213. package/src/lib/listView.ts +149 -0
  214. package/src/lib/sort.ts +143 -0
  215. package/src/pages/CompaniesPage.tsx +125 -11
  216. package/src/pages/CompanyDetail.tsx +62 -62
  217. package/src/pages/DealDetail.tsx +3 -0
  218. package/src/pages/DealsPage.tsx +178 -24
  219. package/src/pages/DecisionsPage.tsx +73 -18
  220. package/src/pages/FormsPage.tsx +81 -17
  221. package/src/pages/FundraisingPage.tsx +152 -24
  222. package/src/pages/HiringPage.tsx +39 -11
  223. package/src/pages/ListDetail.tsx +408 -0
  224. package/src/pages/ListsPage.tsx +281 -0
  225. package/src/pages/OpportunitiesPage.tsx +130 -24
  226. package/src/pages/OpportunityDetail.tsx +3 -0
  227. package/src/pages/PartnershipDetail.tsx +3 -0
  228. package/src/pages/PartnershipsPage.tsx +149 -24
  229. package/src/pages/PeoplePage.tsx +137 -11
  230. package/src/pages/PersonDetail.tsx +5 -3
  231. package/src/pages/PlanningPage.tsx +256 -29
  232. package/src/pages/RaiseDetail.tsx +3 -0
  233. package/src/pages/RoleDetail.tsx +21 -26
  234. package/src/pages/admin/DataPage.tsx +359 -36
  235. package/src/pages/admin/WebhookDeliveries.tsx +10 -15
  236. package/src/pages/admin/WebhooksPage.tsx +14 -19
  237. package/src/pages/admin/WorkspaceSettingsPage.tsx +134 -2
  238. package/src/pages/forms/SubmissionsTable.tsx +3 -10
  239. package/src/pages/handbook/HandbookPage.tsx +1 -1
  240. package/src/pages/hiringDirectory.ts +2 -2
  241. package/src/pages/onboarding/WorkspaceStepPage.tsx +31 -3
  242. package/src/pages/positionDirectory.ts +2 -2
  243. package/src/styles.css +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceSettingsPage.js","sourceRoot":"","sources":["../../../src/pages/admin/WorkspaceSettingsPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkspaceSettingsPage.js","sourceRoot":"","sources":["../../../src/pages/admin/WorkspaceSettingsPage.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SubmissionsTable.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAI3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAsB7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAA;CACvD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAyFhG"}
1
+ {"version":3,"file":"SubmissionsTable.d.ts","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAI3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAuB7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAA;CACvD;AAED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,qBAAqB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAiFhG"}
@@ -5,6 +5,7 @@ import { useTimezone } from '../../api/resources/account.js';
5
5
  import { useCompanies } from '../../api/resources/companies.js';
6
6
  import { usePeople } from '../../api/resources/people.js';
7
7
  import { DataTable } from '../../components/DataTable.js';
8
+ import { Paginator } from '../../components/Paginator.js';
8
9
  import { ErrorPanel, LoadingPanel } from '../../components/QueryState.js';
9
10
  import { SectionHeader } from '../../components/SectionHeader.js';
10
11
  import { formatDateTime } from '../../lib/dates.js';
@@ -58,7 +59,7 @@ export function SubmissionsTable({ form, submissions }) {
58
59
  if (submissions.isLoading) {
59
60
  return _jsx(LoadingPanel, { label: "Loading submissions\u2026" });
60
61
  }
61
- return (_jsxs("div", { children: [_jsx(SectionHeader, { title: "Submissions", description: "Inbound answers, and the records each one created or matched." }), _jsx(DataTable, { columns: columns, rows: submissions.records, getRowId: (submission) => submission.id, emptyMessage: "No submissions yet" }), submissions.hasMore && (_jsx("button", { type: "button", onClick: submissions.loadMore, disabled: submissions.isLoadingMore, className: "mt-3 rounded-md border border-border px-3 py-1.5 text-[12px] font-medium text-ink transition hover:border-border-strong hover:bg-surface-sunken disabled:opacity-50", children: submissions.isLoadingMore ? 'Loading…' : 'Load more' }))] }));
62
+ return (_jsxs("div", { children: [_jsx(SectionHeader, { title: "Submissions", description: "Inbound answers, and the records each one created or matched." }), _jsx(Paginator, { list: submissions, placement: "top" }), _jsx(DataTable, { columns: columns, rows: submissions.records, getRowId: (submission) => submission.id, emptyMessage: "No submissions yet" }), _jsx(Paginator, { list: submissions })] }));
62
63
  }
63
64
  function RecordLink({ to, id, name, fallback, }) {
64
65
  if (id === null) {
@@ -1 +1 @@
1
- {"version":3,"file":"SubmissionsTable.js","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubmissionsTable.js","sourceRoot":"","sources":["../../../src/pages/forms/SubmissionsTable.tsx"],"names":[],"mappings":"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"}
@@ -129,7 +129,7 @@ export function HandbookLayout() {
129
129
  void addPage(item.id);
130
130
  }, onDelete: () => {
131
131
  void removePage(item.page);
132
- } }, item.id))) }) }), _jsx(DragOverlay, { dropAnimation: null, children: dragging === undefined ? null : (_jsx("div", { className: "rounded-md border border-accent bg-surface-raised px-2.5 py-1.5 text-[13px] font-medium text-ink", style: { marginLeft: (liveDepth ?? dragging.depth) * INDENT }, children: dragging.page.title })) })] }), flat.length === 0 && (_jsx("p", { className: "px-2 py-6 text-center text-[12px] text-ink-faint", children: "No pages yet." })), pages.hasMore && (_jsx("p", { className: "px-2 py-3 text-center text-[11px] text-ink-faint", children: "This handbook has more pages than one request returns, so the tree below is incomplete." }))] })] }), _jsx("div", { className: "min-w-0 flex-1", children: active === undefined ? (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-ink-faint", children: "No handbook pages yet." })) : (_jsx(HandbookEditor, { page: active, authorName: active.updatedBy === null ? undefined : members.nameById.get(active.updatedBy), isSaving: updatePage.isPending, error: updatePage.error ?? deletePage.error, onSave: (changes) => {
132
+ } }, item.id))) }) }), _jsx(DragOverlay, { dropAnimation: null, children: dragging === undefined ? null : (_jsx("div", { className: "rounded-md border border-accent bg-surface-raised px-2.5 py-1.5 text-[13px] font-medium text-ink", style: { marginLeft: (liveDepth ?? dragging.depth) * INDENT }, children: dragging.page.title })) })] }), flat.length === 0 && (_jsx("p", { className: "px-2 py-6 text-center text-[12px] text-ink-faint", children: "No pages yet." })), pages.hasNext && (_jsx("p", { className: "px-2 py-3 text-center text-[11px] text-ink-faint", children: "This handbook has more pages than one request returns, so the tree below is incomplete." }))] })] }), _jsx("div", { className: "min-w-0 flex-1", children: active === undefined ? (_jsx("div", { className: "flex h-full items-center justify-center text-[13px] text-ink-faint", children: "No handbook pages yet." })) : (_jsx(HandbookEditor, { page: active, authorName: active.updatedBy === null ? undefined : members.nameById.get(active.updatedBy), isSaving: updatePage.isPending, error: updatePage.error ?? deletePage.error, onSave: (changes) => {
133
133
  updatePage.run({ id: active.id, changes });
134
134
  }, onAddChild: () => {
135
135
  void addPage(active.id);
@@ -25,7 +25,7 @@ export function useRoleCandidateCounts(roleIds) {
25
25
  return {
26
26
  countFor: (roleId) => countByRole.get(roleId) ?? 0,
27
27
  isLoading: candidates.isLoading,
28
- isComplete: !candidates.hasMore,
28
+ isComplete: !candidates.hasNext,
29
29
  };
30
30
  }
31
31
  /**
@@ -51,7 +51,7 @@ export function useCandidateNotes(candidateIds) {
51
51
  return {
52
52
  noteFor: (candidateId) => newestByCandidate.get(candidateId),
53
53
  isLoading: notes.isLoading,
54
- isComplete: !notes.hasMore,
54
+ isComplete: !notes.hasNext,
55
55
  };
56
56
  }
57
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceStepPage.d.ts","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"AA8CA,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CA2ErD"}
1
+ {"version":3,"file":"WorkspaceStepPage.d.ts","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"AA+CA,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAsGrD"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useState } from 'react';
3
3
  import { Link, Navigate, useNavigate } from 'react-router';
4
+ import { useInstallSampleData } from '../../api/resources/sampleData.js';
4
5
  import { useCreateWorkspace, useSession } from '../../api/resources/session.js';
5
6
  import { ErrorPanel } from '../../components/QueryState.js';
6
7
  import { SubmitButton, TextField } from '../auth/AuthForm.js';
@@ -43,10 +44,12 @@ export function WorkspaceStepPage() {
43
44
  const navigate = useNavigate();
44
45
  const { isSignedOut } = useSession();
45
46
  const createWorkspace = useCreateWorkspace();
47
+ const installSampleData = useInstallSampleData();
46
48
  const [name, setName] = useState('');
47
49
  const [slug, setSlug] = useState('');
48
50
  const [slugEdited, setSlugEdited] = useState(false);
49
51
  const [timezone] = useState(browserTimezone);
52
+ const [seedSample, setSeedSample] = useState(false);
50
53
  function changeName(value) {
51
54
  setName(value);
52
55
  if (!slugEdited) {
@@ -61,12 +64,22 @@ export function WorkspaceStepPage() {
61
64
  event.preventDefault();
62
65
  createWorkspace
63
66
  .runAsync({ name: name.trim(), slug: slug.trim(), timezone })
64
- .then(() => navigate('/onboarding/invites', { replace: true }))
67
+ .then(async (workspace) => {
68
+ if (seedSample) {
69
+ // A refusal here does not block the wizard: the workspace itself is
70
+ // already created, and the invites step is what comes next either
71
+ // way. The error stays on screen so the reader sees what failed.
72
+ await installSampleData
73
+ .runAsync({ workspaceId: workspace.id })
74
+ .catch(() => undefined);
75
+ }
76
+ navigate('/onboarding/invites', { replace: true });
77
+ })
65
78
  .catch(() => undefined);
66
79
  }
67
80
  if (isSignedOut) {
68
81
  return _jsx(Navigate, { to: "/login", replace: true });
69
82
  }
70
- return (_jsx(AuthLayout, { step: 1, title: "Create your workspace", description: "A workspace is your company brain \u2014 CRM records, handbook, and team.", footer: _jsx(Link, { to: "/login", className: "font-medium text-accent hover:underline", children: "Sign in as somebody else" }), children: _jsxs("form", { onSubmit: submit, className: "mt-5 space-y-3", children: [_jsx(TextField, { label: "Workspace name", value: name, onChange: changeName, placeholder: "Acme Labs", autoComplete: "organization", required: true }), _jsx(TextField, { label: "Slug", value: slug, onChange: changeSlug, hint: "Lowercase letters, digits, and hyphens. It appears in URLs.", mono: true, required: true }), _jsxs("p", { className: "text-[11px] text-ink-faint", children: ["Timezone: ", timezone, ". Change it later in Admin \u2192 Workspace."] }), createWorkspace.error !== null && _jsx(ErrorPanel, { error: createWorkspace.error }), _jsx(SubmitButton, { label: "Continue", pendingLabel: "Creating\u2026", isPending: createWorkspace.isPending })] }) }));
83
+ return (_jsx(AuthLayout, { step: 1, title: "Create your workspace", description: "A workspace is your company brain \u2014 CRM records, handbook, and team.", footer: _jsx(Link, { to: "/login", className: "font-medium text-accent hover:underline", children: "Sign in as somebody else" }), children: _jsxs("form", { onSubmit: submit, className: "mt-5 space-y-3", children: [_jsx(TextField, { label: "Workspace name", value: name, onChange: changeName, placeholder: "Acme Labs", autoComplete: "organization", required: true }), _jsx(TextField, { label: "Slug", value: slug, onChange: changeSlug, hint: "Lowercase letters, digits, and hyphens. It appears in URLs.", mono: true, required: true }), _jsxs("p", { className: "text-[11px] text-ink-faint", children: ["Timezone: ", timezone, ". Change it later in Admin \u2192 Workspace."] }), _jsxs("label", { className: "flex items-start gap-2 text-[12px] text-ink", children: [_jsx("input", { type: "checkbox", checked: seedSample, onChange: (event) => setSeedSample(event.target.checked), className: "mt-0.5 h-4 w-4 rounded border-border text-accent focus:ring-accent" }), _jsx("span", { children: "Install sample data \u2014 a small set of companies, people, deals, opportunities, fundraising, partnerships, and hiring so the workspace has something to look at. You can delete it later." })] }), createWorkspace.error !== null && _jsx(ErrorPanel, { error: createWorkspace.error }), installSampleData.error !== null && _jsx(ErrorPanel, { error: installSampleData.error }), _jsx(SubmitButton, { label: "Continue", pendingLabel: installSampleData.isPending ? 'Installing sample data…' : 'Creating…', isPending: createWorkspace.isPending || installSampleData.isPending })] }) }));
71
84
  }
72
85
  //# sourceMappingURL=WorkspaceStepPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"WorkspaceStepPage.js","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkspaceStepPage.js","sourceRoot":"","sources":["../../../src/pages/onboarding/WorkspaceStepPage.tsx"],"names":[],"mappings":"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"}
@@ -37,7 +37,7 @@ export function usePeopleDirectory(personIds) {
37
37
  .map((held) => companyNameById.get(held.companyId))
38
38
  .filter((name) => name !== undefined),
39
39
  isLoading: positions.isLoading || companies.isLoading,
40
- isComplete: !positions.hasMore && !companies.hasMore,
40
+ isComplete: !positions.hasNext && !companies.hasNext,
41
41
  };
42
42
  }
43
43
  export function useCompanyHeadcounts(companyIds) {
@@ -52,7 +52,7 @@ export function useCompanyHeadcounts(companyIds) {
52
52
  return {
53
53
  countFor: (companyId) => countByCompany.get(companyId) ?? 0,
54
54
  isLoading: positions.isLoading,
55
- isComplete: !positions.hasMore,
55
+ isComplete: !positions.hasNext,
56
56
  };
57
57
  }
58
58
  //# sourceMappingURL=positionDirectory.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kelpie/ui",
3
- "version": "0.6.0",
3
+ "version": "0.8.0",
4
4
  "description": "React UI for Kelpie: components, pages, API client, and the extension registry an assembly composes modules through.",
5
5
  "keywords": [
6
6
  "kelpie",
@@ -48,7 +48,7 @@
48
48
  "@dnd-kit/core": "^6.3.1",
49
49
  "@dnd-kit/sortable": "^10.0.0",
50
50
  "@dnd-kit/utilities": "^3.2.2",
51
- "@kelpie/schemas": "^0.6.0",
51
+ "@kelpie/schemas": "^0.8.0",
52
52
  "@tanstack/react-query": "^5.101.4",
53
53
  "react-markdown": "^10.1.0",
54
54
  "react-router": "^8.3.0",
@@ -6,6 +6,7 @@ import {
6
6
  useQueryClient,
7
7
  } from '@tanstack/react-query'
8
8
  import type { InfiniteData, QueryClient } from '@tanstack/react-query'
9
+ import { useEffect, useState } from 'react'
9
10
 
10
11
  import { ApiError } from './client.ts'
11
12
  import type { Decoder, Page, QueryParameters } from './client.ts'
@@ -25,14 +26,44 @@ import { toError } from './errors.ts'
25
26
  * and leaves the cache library replaceable without touching a page.
26
27
  */
27
28
 
28
- /** A list, one page at a time. Nothing is truncated in silence: `hasMore` says so. */
29
- export interface RecordListResult<TRecord> {
29
+ /**
30
+ * The default page size when a caller does not name one via `query.limit`.
31
+ * Matches the `/v1` default from `api.md`.
32
+ */
33
+ export const DEFAULT_PAGE_SIZE = 50
34
+
35
+ /**
36
+ * The pagination controls a list surface renders. Split out from
37
+ * `RecordListResult` so the `Paginator` component can accept just this subset
38
+ * and stay generic in the record type.
39
+ */
40
+ export interface Paged {
41
+ /** Zero-based index of the page currently on screen. */
42
+ readonly pageIndex: number
43
+ /** Number of records the API returns per page, from `?limit=`. */
44
+ readonly pageSize: number
45
+ readonly hasPrev: boolean
46
+ readonly hasNext: boolean
47
+ /** True while fetching a not-yet-cached page. Prev on a cached page is instant. */
48
+ readonly isChangingPage: boolean
49
+ readonly prevPage: () => void
50
+ readonly nextPage: () => void
51
+ /**
52
+ * Changes the API `?limit=` and returns the reader to page 1. The API caps
53
+ * `?limit=` at 200 (`api.md`); a larger value is coerced by the server, not
54
+ * refused by this hook.
55
+ */
56
+ readonly setPageSize: (size: number) => void
57
+ }
58
+
59
+ /**
60
+ * A list, one page at a time. Records are the current page only, not the
61
+ * accumulation across pages a `Load more` reader would give.
62
+ */
63
+ export interface RecordListResult<TRecord> extends Paged {
30
64
  readonly records: readonly TRecord[]
31
65
  readonly isLoading: boolean
32
66
  readonly error: Error | null
33
- readonly hasMore: boolean
34
- readonly isLoadingMore: boolean
35
- readonly loadMore: () => void
36
67
  }
37
68
 
38
69
  export interface RecordResult<TRecord> {
@@ -184,6 +215,114 @@ function removeRecordEverywhere<TRecord extends { readonly id: string }>(
184
215
  )
185
216
  }
186
217
 
218
+ export interface PagedListInput<TRecord> {
219
+ /**
220
+ * The React Query cache key for this list, without `?limit=`. `usePagedList`
221
+ * appends the current page size so the cache splits by size — swapping page
222
+ * sizes has to fetch, or the cursors from one size would page a list saved
223
+ * under another.
224
+ */
225
+ readonly queryKey: readonly unknown[]
226
+ readonly path: string
227
+ readonly decode: Decoder<TRecord>
228
+ /** Query parameters other than `limit` and `cursor`. `usePagedList` sends both itself. */
229
+ readonly query: QueryParameters
230
+ readonly enabled?: boolean
231
+ }
232
+
233
+ /**
234
+ * The paged reader every list hook uses: `createResourceHooks`'s `useList`,
235
+ * and the three custom collections whose paths carry a parent id
236
+ * (`useFormSubmissions`, `useListMembers`, `useWebhookDeliveries`).
237
+ *
238
+ * The API is cursor-only (`api.md`), so pages are fetched forward. Already
239
+ * fetched pages stay cached in `useInfiniteQuery`, and `pageIndex` selects
240
+ * which one is on screen — so going back to a visited page is instant and
241
+ * going forward past the fetched set kicks off exactly one new request.
242
+ */
243
+ export function usePagedList<TRecord>(input: PagedListInput<TRecord>): RecordListResult<TRecord> {
244
+ const client = useApiClient()
245
+ const enabled = input.enabled ?? true
246
+ const requestedLimit = input.query.limit
247
+ const initialPageSize =
248
+ typeof requestedLimit === 'number' && Number.isFinite(requestedLimit) && requestedLimit > 0
249
+ ? requestedLimit
250
+ : DEFAULT_PAGE_SIZE
251
+ const [pageSize, setPageSize] = useState<number>(initialPageSize)
252
+ const [pageIndex, setPageIndex] = useState<number>(0)
253
+
254
+ const queryKey = [...input.queryKey, { limit: pageSize }] as const
255
+ const queryKeySignature = JSON.stringify(queryKey)
256
+
257
+ // A filter or sort change lands as a fresh `useInfiniteQuery`, so the page
258
+ // number the user was on no longer makes sense. Effect over signature keeps
259
+ // this cheap: same key, no re-render.
260
+ useEffect(() => {
261
+ setPageIndex(0)
262
+ }, [queryKeySignature])
263
+
264
+ const result = useInfiniteQuery({
265
+ queryKey,
266
+ queryFn: ({ pageParam }) =>
267
+ client.list(input.path, input.decode, {
268
+ ...input.query,
269
+ limit: pageSize,
270
+ ...(pageParam === null ? {} : { cursor: pageParam }),
271
+ }),
272
+ initialPageParam: null as string | null,
273
+ getNextPageParam: (lastPage) => lastPage.nextCursor,
274
+ // Without this a keystroke in the filter box blanks the table while the
275
+ // next query runs, which reads as "no results" for as long as it takes.
276
+ placeholderData: keepPreviousData,
277
+ enabled,
278
+ })
279
+
280
+ const pages = result.data?.pages ?? []
281
+ // A shrinking cache — a delete followed by a refetch — can leave the index
282
+ // past the last page. Clamp so a stale index never renders a blank table.
283
+ const safeIndex = pages.length === 0 ? 0 : Math.min(pageIndex, pages.length - 1)
284
+ const currentPage = pages[safeIndex]
285
+ const hasCachedNext = safeIndex + 1 < pages.length
286
+ const hasNext = hasCachedNext || result.hasNextPage
287
+ const hasPrev = safeIndex > 0
288
+
289
+ return {
290
+ records: currentPage?.items ?? [],
291
+ // A disabled query stays pending forever, which is not the same as loading.
292
+ isLoading: result.isPending && enabled,
293
+ error: toError(result.error),
294
+ pageIndex: safeIndex,
295
+ pageSize,
296
+ hasPrev,
297
+ hasNext,
298
+ isChangingPage: result.isFetchingNextPage,
299
+ prevPage: () => {
300
+ setPageIndex((current) => Math.max(0, current - 1))
301
+ },
302
+ nextPage: () => {
303
+ if (hasCachedNext) {
304
+ setPageIndex((current) => current + 1)
305
+ return
306
+ }
307
+
308
+ if (!result.hasNextPage) {
309
+ return
310
+ }
311
+
312
+ void result.fetchNextPage().then((r) => {
313
+ if (r.error === null) {
314
+ setPageIndex((current) => current + 1)
315
+ }
316
+ })
317
+ },
318
+ // Query key includes `limit`, so the effect above resets `pageIndex` to 0
319
+ // once React sees the new key.
320
+ setPageSize: (size) => {
321
+ setPageSize(size)
322
+ },
323
+ }
324
+ }
325
+
187
326
  /**
188
327
  * The read half: `useList` and `useRecord`, and nothing that writes.
189
328
  *
@@ -197,34 +336,13 @@ export function createReadOnlyResourceHooks<TRecord>(
197
336
  const keys = keysFor(definition.name)
198
337
 
199
338
  function useList(query: QueryParameters = {}, options: ListOptions = {}): RecordListResult<TRecord> {
200
- const client = useApiClient()
201
- const enabled = options.enabled ?? true
202
- const result = useInfiniteQuery({
339
+ return usePagedList<TRecord>({
203
340
  queryKey: keys.list(query),
204
- queryFn: ({ pageParam }) =>
205
- client.list(definition.path, definition.decode, {
206
- ...query,
207
- ...(pageParam === null ? {} : { cursor: pageParam }),
208
- }),
209
- initialPageParam: null as string | null,
210
- getNextPageParam: (lastPage) => lastPage.nextCursor,
211
- // Without this a keystroke in the filter box blanks the table while the
212
- // next query runs, which reads as "no results" for as long as it takes.
213
- placeholderData: keepPreviousData,
214
- enabled,
341
+ path: definition.path,
342
+ decode: definition.decode,
343
+ query,
344
+ enabled: options.enabled ?? true,
215
345
  })
216
-
217
- return {
218
- records: result.data?.pages.flatMap((page) => page.items) ?? [],
219
- // A disabled query stays pending forever, which is not the same as loading.
220
- isLoading: result.isPending && enabled,
221
- error: toError(result.error),
222
- hasMore: result.hasNextPage,
223
- isLoadingMore: result.isFetchingNextPage,
224
- loadMore: () => {
225
- void result.fetchNextPage()
226
- },
227
- }
228
346
  }
229
347
 
230
348
  function useRecord(id: string | undefined): RecordResult<TRecord> {
@@ -25,7 +25,10 @@ const companies = createResourceHooks<Company, CreateCompanyInput, CompanyInput>
25
25
  updateBody: companyBody,
26
26
  // Every write here emits an activity server-side, in the same transaction, so
27
27
  // a timeline rendered on this record is stale the moment the write lands.
28
- alsoInvalidates: ['activities'],
28
+ // Creating or renaming a domain may also auto-link Positions to workspace
29
+ // people whose email is at it, which changes position lists and the
30
+ // `?company_id=` people list that names the far side of each new row.
31
+ alsoInvalidates: ['activities', 'positions', 'people'],
29
32
  })
30
33
 
31
34
  /** The documented filters on `GET /v1/companies`. */
@@ -34,6 +37,8 @@ export interface CompanyFilters {
34
37
  readonly term?: string | undefined
35
38
  /** Companies where any of these people holds a position. Repeats on the wire. */
36
39
  readonly personIds?: readonly string[] | undefined
40
+ /** true = only the workspace's own companies; false = only the rest. */
41
+ readonly isOwn?: boolean | undefined
37
42
  readonly limit?: number | undefined
38
43
  /** `field` ascending, `-field` descending. Only `name`, `created_at`, `updated_at` are sortable. */
39
44
  readonly sort?: string | undefined
@@ -43,6 +48,7 @@ function companyQuery(filters: CompanyFilters): QueryParameters {
43
48
  return {
44
49
  q: filters.term,
45
50
  person_id: filters.personIds,
51
+ is_own: filters.isOwn === undefined ? undefined : String(filters.isOwn),
46
52
  limit: filters.limit,
47
53
  sort: filters.sort,
48
54
  }
@@ -33,6 +33,8 @@ export interface DecisionFilters {
33
33
  readonly targetId?: string | undefined
34
34
  /** Matches the body, the rationale, the target type, and the target's name. */
35
35
  readonly term?: string | undefined
36
+ /** `field` ascending, `-field` descending. Only `decided_at`, `created_at`, `updated_at` are sortable. */
37
+ readonly sort?: string | undefined
36
38
  }
37
39
 
38
40
  function decisionQuery(filters: DecisionFilters): QueryParameters {
@@ -40,6 +42,7 @@ function decisionQuery(filters: DecisionFilters): QueryParameters {
40
42
  target_type: filters.targetType,
41
43
  target_id: filters.targetId,
42
44
  q: filters.term,
45
+ sort: filters.sort,
43
46
  }
44
47
  }
45
48
 
@@ -0,0 +1,43 @@
1
+ import { relinkEmailDomainsCountsSchema } from '@kelpie/schemas'
2
+ import type { RelinkEmailDomainsCounts } from '@kelpie/schemas'
3
+ import { useMutation, useQueryClient } from '@tanstack/react-query'
4
+
5
+ import { useApiClient } from '../context.ts'
6
+ import type { MutationResult } from '../resource.ts'
7
+ import { asMutationResult } from './mutation.ts'
8
+
9
+ /**
10
+ * `POST /v1/workspaces/:id/relink-email-domains`: sweep every Company that
11
+ * carries a domain and stub a Position for every workspace Person whose email
12
+ * matches. Idempotent — a follow-up run creates no new rows.
13
+ *
14
+ * On success invalidates positions, activities, and the person-scoped /
15
+ * company-scoped list joins so a page open on any of those refreshes with the
16
+ * new links.
17
+ */
18
+
19
+ export interface RelinkInput {
20
+ readonly workspaceId: string
21
+ }
22
+
23
+ export function useRelinkEmailDomains(): MutationResult<RelinkInput, RelinkEmailDomainsCounts> {
24
+ const client = useApiClient()
25
+ const cache = useQueryClient()
26
+ const mutation = useMutation({
27
+ mutationFn: ({ workspaceId }: RelinkInput) =>
28
+ client.post(
29
+ `/workspaces/${workspaceId}/relink-email-domains`,
30
+ {},
31
+ relinkEmailDomainsCountsSchema.parse,
32
+ ),
33
+ onSuccess: async () => {
34
+ await Promise.all(
35
+ ['positions', 'activities', 'companies', 'people'].map((name) =>
36
+ cache.invalidateQueries({ queryKey: [name] }),
37
+ ),
38
+ )
39
+ },
40
+ })
41
+
42
+ return asMutationResult(mutation)
43
+ }
@@ -7,8 +7,6 @@ import type {
7
7
  FormSubmission,
8
8
  } from '@kelpie/schemas'
9
9
  import {
10
- keepPreviousData,
11
- useInfiniteQuery,
12
10
  useMutation,
13
11
  useQuery,
14
12
  useQueryClient,
@@ -18,7 +16,7 @@ import { isRecord } from '../json.ts'
18
16
  import type { QueryParameters } from '../client.ts'
19
17
  import { useApiClient } from '../context.ts'
20
18
  import { toError } from '../errors.ts'
21
- import { createResourceHooks } from '../resource.ts'
19
+ import { createResourceHooks, usePagedList } from '../resource.ts'
22
20
  import type {
23
21
  MutationResult,
24
22
  RecordListResult,
@@ -139,29 +137,13 @@ export function useDeleteForm(): MutationResult<string, void> {
139
137
  * The result shape is the same, so a page cannot tell the difference.
140
138
  */
141
139
  export function useFormSubmissions(formId: string | undefined): RecordListResult<FormSubmission> {
142
- const client = useApiClient()
143
- const result = useInfiniteQuery({
140
+ return usePagedList<FormSubmission>({
144
141
  queryKey: ['forms', 'submissions', formId ?? ''],
145
- queryFn: ({ pageParam }) =>
146
- client.list(`/forms/${formId ?? ''}/submissions`, formSubmissionSchema.parse, {
147
- ...(pageParam === null ? {} : { cursor: pageParam }),
148
- }),
149
- initialPageParam: null as string | null,
150
- getNextPageParam: (lastPage) => lastPage.nextCursor,
151
- placeholderData: keepPreviousData,
142
+ path: `/forms/${formId ?? ''}/submissions`,
143
+ decode: formSubmissionSchema.parse,
144
+ query: {},
152
145
  enabled: formId !== undefined,
153
146
  })
154
-
155
- return {
156
- records: result.data?.pages.flatMap((page) => page.items) ?? [],
157
- isLoading: result.isPending && formId !== undefined,
158
- error: toError(result.error),
159
- hasMore: result.hasNextPage,
160
- isLoadingMore: result.isFetchingNextPage,
161
- loadMore: () => {
162
- void result.fetchNextPage()
163
- },
164
- }
165
147
  }
166
148
 
167
149
  /** What a customer pastes into their site, built server-side from the request origin. */
@@ -42,7 +42,7 @@ function handbookQuery(filters: HandbookPageFilters): QueryParameters {
42
42
  * The same call the kanban board makes for its stages, for the same reason: a
43
43
  * tree cannot be drawn from part of itself, and a page whose parent is on the
44
44
  * next page of results would render at the top level as though somebody had
45
- * moved it there. The caller reads `hasMore` and says so rather than drawing a
45
+ * moved it there. The caller reads `hasNext` and says so rather than drawing a
46
46
  * tree with holes in it.
47
47
  */
48
48
  export function useHandbookPages(filters: HandbookPageFilters = {}): RecordListResult<HandbookPage> {
@@ -5,6 +5,7 @@ import type {
5
5
  ImportJob,
6
6
  ImportObject,
7
7
  ImportSource,
8
+ OnMissingCompany,
8
9
  } from '@kelpie/schemas'
9
10
  import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
10
11
 
@@ -30,6 +31,8 @@ export interface CreateImportJobInput {
30
31
  readonly source: ImportSource
31
32
  readonly object: ImportObject
32
33
  readonly conflictMode: ImportConflictMode
34
+ /** People import only: what to do with a row naming a company that is not here yet. */
35
+ readonly onMissingCompany: OnMissingCompany
33
36
  readonly matchKeyId: string
34
37
  /**
35
38
  * Absent on the first upload, so the server derives one from the source preset
@@ -46,6 +49,7 @@ function jobForm(input: CreateImportJobInput): FormData {
46
49
  form.set('source', input.source)
47
50
  form.set('object', input.object)
48
51
  form.set('conflict_mode', input.conflictMode)
52
+ form.set('on_missing_company', input.onMissingCompany)
49
53
  form.set('match_key', input.matchKeyId)
50
54
  form.set('dry_run', 'true')
51
55