@kelpie/ui 0.5.2 → 0.7.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.
@@ -1,10 +1,12 @@
1
- import type { ImportColumnMap, ImportConflictMode, ImportJob, ImportObject, ImportSource } from '@kelpie/schemas';
1
+ import type { ImportColumnMap, ImportConflictMode, ImportJob, ImportObject, ImportSource, OnMissingCompany } from '@kelpie/schemas';
2
2
  import type { MutationResult, RecordResult } from '../resource.ts';
3
3
  export interface CreateImportJobInput {
4
4
  readonly file: File;
5
5
  readonly source: ImportSource;
6
6
  readonly object: ImportObject;
7
7
  readonly conflictMode: ImportConflictMode;
8
+ /** People import only: what to do with a row naming a company that is not here yet. */
9
+ readonly onMissingCompany: OnMissingCompany;
8
10
  readonly matchKeyId: string;
9
11
  /**
10
12
  * Absent on the first upload, so the server derives one from the source preset
@@ -1 +1 @@
1
- {"version":3,"file":"importJobs.d.ts","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,YAAY,EACb,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAelE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAA;CACrC;AAwBD,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAgBpF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAwBpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAcjE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAoB5E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAC5C;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAC3C,WAAW,CACZ,CAqBA;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAQnD"}
1
+ {"version":3,"file":"importJobs.d.ts","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,gBAAgB,EACjB,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAelE,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAA;IAC7B,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;IACzC,uFAAuF;IACvF,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,CAAA;CACrC;AAyBD,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAgBpF;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAA;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAwBpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,CAcjE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAoB5E;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,IAAI,cAAc,CAC5C;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,EAC3C,WAAW,CACZ,CAqBA;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAQnD"}
@@ -19,6 +19,7 @@ function jobForm(input) {
19
19
  form.set('source', input.source);
20
20
  form.set('object', input.object);
21
21
  form.set('conflict_mode', input.conflictMode);
22
+ form.set('on_missing_company', input.onMissingCompany);
22
23
  form.set('match_key', input.matchKeyId);
23
24
  form.set('dry_run', 'true');
24
25
  if (input.columnMap !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"importJobs.js","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"importJobs.js","sourceRoot":"","sources":["../../../src/api/resources/importJobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { PublicConfig } from '@kelpie/schemas';
2
+ export interface PublicConfigState {
3
+ readonly config: PublicConfig | undefined;
4
+ readonly isLoading: boolean;
5
+ readonly error: Error | null;
6
+ }
7
+ export declare function usePublicConfig(): PublicConfigState;
8
+ //# sourceMappingURL=publicConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicConfig.d.ts","sourceRoot":"","sources":["../../../src/api/resources/publicConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAgBnD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAC7B;AAED,wBAAgB,eAAe,IAAI,iBAAiB,CASnD"}
@@ -0,0 +1,22 @@
1
+ import { publicConfigSchema } from '@kelpie/schemas';
2
+ import { useQuery } from '@tanstack/react-query';
3
+ import { useApiClient } from '../context.js';
4
+ import { toError } from '../errors.js';
5
+ /**
6
+ * The deployment metadata `GET /v1/public/config` reports.
7
+ *
8
+ * Read once, cached forever: neither `runtimeMode` nor `siteName` changes
9
+ * while the app is open. The endpoint is public, so this hook works before a
10
+ * session exists (the sign-in page reads it too).
11
+ */
12
+ const PUBLIC_CONFIG_KEY = ['public-config'];
13
+ export function usePublicConfig() {
14
+ const client = useApiClient();
15
+ const result = useQuery({
16
+ queryKey: PUBLIC_CONFIG_KEY,
17
+ queryFn: () => client.get('/public/config', publicConfigSchema.parse),
18
+ staleTime: Infinity,
19
+ });
20
+ return { config: result.data, isLoading: result.isPending, error: toError(result.error) };
21
+ }
22
+ //# sourceMappingURL=publicConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publicConfig.js","sourceRoot":"","sources":["../../../src/api/resources/publicConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC;;;;;;GAMG;AAEH,MAAM,iBAAiB,GAAG,CAAC,eAAe,CAAU,CAAA;AAQpD,MAAM,UAAU,eAAe;IAC7B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,QAAQ,CAAC;QACtB,QAAQ,EAAE,iBAAiB;QAC3B,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,CAAC;QACrE,SAAS,EAAE,QAAQ;KACpB,CAAC,CAAA;IAEF,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;AAC3F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"KelpieApp.d.ts","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG3D;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAUpF"}
1
+ {"version":3,"file":"KelpieApp.d.ts","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG3D;;;;;;;;;GASG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAA;IACjC,wEAAwE;IACxE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,wBAAgB,SAAS,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAgBpF"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { BrowserRouter, Navigate, Route, Routes } from 'react-router';
3
3
  import { ApiProvider } from '../api/ApiProvider.js';
4
+ import { EnvironmentBanner } from '../components/EnvironmentBanner.js';
4
5
  import { Shell } from '../components/Shell.js';
5
6
  import { CompaniesPage } from '../pages/CompaniesPage.js';
6
7
  import { CompanyDetail } from '../pages/CompanyDetail.js';
@@ -54,7 +55,7 @@ import { UiExtensionProvider } from '../registry/UiExtensionProvider.js';
54
55
  import { useModuleRoutes } from '../registry/context.js';
55
56
  import { SessionGate } from './SessionGate.js';
56
57
  export function KelpieApp({ extensions, baseUrl }) {
57
- return (_jsx(ApiProvider, { baseUrl: baseUrl, children: _jsx(UiExtensionProvider, { extensions: extensions, children: _jsx(BrowserRouter, { children: _jsx(AppRoutes, {}) }) }) }));
58
+ return (_jsx(ApiProvider, { baseUrl: baseUrl, children: _jsx(UiExtensionProvider, { extensions: extensions, children: _jsxs(BrowserRouter, { children: [_jsx(EnvironmentBanner, {}), _jsx(AppRoutes, {})] }) }) }));
58
59
  }
59
60
  /**
60
61
  * A module route under `account/` renders inside `AccountLayout`, everything
@@ -1 +1 @@
1
- {"version":3,"file":"KelpieApp.js","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"KelpieApp.js","sourceRoot":"","sources":["../../src/app/KelpieApp.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A thin strip above the app that names the site.
3
+ *
4
+ * Renders nothing on production, whether or not a site name was set: the
5
+ * banner exists to tell dev, demo, and any other non-production install
6
+ * apart. Renders nothing while the metadata is loading or on error either,
7
+ * so a slow config request never pushes the app down half a second after
8
+ * boot.
9
+ *
10
+ * Mounted at the top of `KelpieApp`, above the router, so it shows on the
11
+ * sign-in and onboarding pages as well as the main app.
12
+ */
13
+ export declare function EnvironmentBanner(): React.JSX.Element | null;
14
+ //# sourceMappingURL=EnvironmentBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentBanner.d.ts","sourceRoot":"","sources":["../../src/components/EnvironmentBanner.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,wBAAgB,iBAAiB,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,CAc5D"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { usePublicConfig } from '../api/resources/publicConfig.js';
3
+ /**
4
+ * A thin strip above the app that names the site.
5
+ *
6
+ * Renders nothing on production, whether or not a site name was set: the
7
+ * banner exists to tell dev, demo, and any other non-production install
8
+ * apart. Renders nothing while the metadata is loading or on error either,
9
+ * so a slow config request never pushes the app down half a second after
10
+ * boot.
11
+ *
12
+ * Mounted at the top of `KelpieApp`, above the router, so it shows on the
13
+ * sign-in and onboarding pages as well as the main app.
14
+ */
15
+ export function EnvironmentBanner() {
16
+ const { config } = usePublicConfig();
17
+ if (config === undefined || config.runtimeMode === 'production') {
18
+ return null;
19
+ }
20
+ const label = config.siteName ?? config.runtimeMode;
21
+ return (_jsx("div", { className: "flex h-5 shrink-0 items-center justify-center bg-accent px-2 text-[11px] font-medium tracking-wide text-accent-fg uppercase", children: label }));
22
+ }
23
+ //# sourceMappingURL=EnvironmentBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvironmentBanner.js","sourceRoot":"","sources":["../../src/components/EnvironmentBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAElE;;;;;;;;;;;GAWG;AAEH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAAA;IAEpC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,WAAW,KAAK,YAAY,EAAE,CAAC;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAA;IAEnD,OAAO,CACL,cAAK,SAAS,EAAC,6HAA6H,YACzI,KAAK,GACF,CACP,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DataPage.d.ts","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAA0B,SAAS,EAAE,MAAM,OAAO,CAAA;AAkC9D,wBAAgB,QAAQ,IAAI,SAAS,CAyVpC"}
1
+ {"version":3,"file":"DataPage.d.ts","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAA0B,SAAS,EAAE,MAAM,OAAO,CAAA;AAkC9D,wBAAgB,QAAQ,IAAI,SAAS,CA8VpC"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { CONFLICT_MODE_LABELS, IMPORT_OBJECTS, IMPORT_SOURCES, MATCH_KEYS, OBJECT_COLUMNS, OBJECT_LABELS, SOURCE_LABELS, defaultMatchKeyId, findMatchKey, isImportJobSettled, requiredColumns, } from '@kelpie/schemas';
2
+ import { CONFLICT_MODE_LABELS, IMPORT_OBJECTS, IMPORT_SOURCES, MATCH_KEYS, OBJECT_COLUMNS, OBJECT_LABELS, ON_MISSING_COMPANY_LABELS, SOURCE_LABELS, defaultMatchKeyId, findMatchKey, isImportJobSettled, requiredColumns, } from '@kelpie/schemas';
3
3
  import { useState } from 'react';
4
4
  import { saveCsv, useCommitImportJob, useCreateImportJob, useDeleteImportJob, useExportCsv, useImportJob, } from '../../api/resources/importJobs.js';
5
5
  import { PageHeader } from '../../components/PageHeader.js';
@@ -17,6 +17,7 @@ export function DataPage() {
17
17
  const [file, setFile] = useState(null);
18
18
  const [columnMap, setColumnMap] = useState({});
19
19
  const [conflictMode, setConflictMode] = useState('skip');
20
+ const [onMissingCompany, setOnMissingCompany] = useState('skip');
20
21
  const [matchKeyId, setMatchKeyId] = useState(() => defaultMatchKeyId('companies'));
21
22
  const [jobId, setJobId] = useState(undefined);
22
23
  const [problem, setProblem] = useState(null);
@@ -63,6 +64,7 @@ export function DataPage() {
63
64
  setFile(null);
64
65
  setColumnMap({});
65
66
  setConflictMode('skip');
67
+ setOnMissingCompany('skip');
66
68
  setMatchKeyId(defaultMatchKeyId(object));
67
69
  setJobId(undefined);
68
70
  setProblem(null);
@@ -79,6 +81,7 @@ export function DataPage() {
79
81
  source,
80
82
  object,
81
83
  conflictMode,
84
+ onMissingCompany,
82
85
  matchKeyId,
83
86
  ...(map === undefined ? {} : { columnMap: map }),
84
87
  });
@@ -139,7 +142,7 @@ export function DataPage() {
139
142
  const next = event.target.value;
140
143
  setObject(next);
141
144
  setMatchKeyId(defaultMatchKeyId(next));
142
- }, className: "w-full max-w-md rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: IMPORT_OBJECTS.map((item) => (_jsx("option", { value: item, children: OBJECT_LABELS[item] }, item))) }) }), _jsxs("div", { className: "rounded-md border border-border px-4 py-3", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: "Need a blank file?" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["Download a Kelpie CSV template for ", OBJECT_LABELS[object].toLowerCase(), ", fill it in, then continue."] }), _jsx("button", { type: "button", onClick: () => runStep(onDownload(object, true)), className: "mt-3 rounded-md border border-border bg-surface px-3.5 py-2 text-[12px] font-semibold text-ink transition hover:border-accent", children: "Download template" })] }), _jsx("p", { className: "text-[12px] text-ink-muted", children: "Import order for linked data: Companies \u2192 People \u2192 Positions \u2192 Deals." }), _jsx("button", { type: "submit", className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover", children: "Continue" })] })) : null, step === 'upload' ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: [SOURCE_LABELS[source], " \u2192 ", OBJECT_LABELS[object]] }), _jsxs("label", { className: "flex cursor-pointer flex-col items-center justify-center rounded-lg border border-dashed border-border bg-surface-raised px-6 py-10 transition hover:border-accent", children: [_jsx("span", { className: "text-[13px] font-medium text-ink", children: createJob.isPending ? 'Reading the file…' : 'Drop a CSV here or click to browse' }), _jsx("span", { className: "mt-1 text-[12px] text-ink-muted", children: "UTF-8 CSV \u00B7 max 10 MB \u00B7 max 10,000 rows" }), _jsx("input", { type: "file", accept: ".csv,text/csv", className: "sr-only", disabled: createJob.isPending, onChange: (event) => runStep(onFileChange(event)) })] }), _jsx("button", { type: "button", onClick: () => setStep('source'), className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back" })] })) : null, step === 'map' && job !== undefined ? (_jsx(MappingForm, { job: job, object: object, columnMap: columnMap, conflictMode: conflictMode, matchKeyId: matchKeyId, isPending: createJob.isPending, onColumnMapChange: setColumnMap, onConflictModeChange: setConflictMode, onMatchKeyChange: setMatchKeyId, onSubmit: (event) => runStep(onRerun(event)), onBack: () => {
145
+ }, className: "w-full max-w-md rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: IMPORT_OBJECTS.map((item) => (_jsx("option", { value: item, children: OBJECT_LABELS[item] }, item))) }) }), _jsxs("div", { className: "rounded-md border border-border px-4 py-3", children: [_jsx("div", { className: "text-[13px] font-medium text-ink", children: "Need a blank file?" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["Download a Kelpie CSV template for ", OBJECT_LABELS[object].toLowerCase(), ", fill it in, then continue."] }), _jsx("button", { type: "button", onClick: () => runStep(onDownload(object, true)), className: "mt-3 rounded-md border border-border bg-surface px-3.5 py-2 text-[12px] font-semibold text-ink transition hover:border-accent", children: "Download template" })] }), _jsx("p", { className: "text-[12px] text-ink-muted", children: "Import order for linked data: Companies \u2192 People \u2192 Positions \u2192 Deals." }), _jsx("button", { type: "submit", className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover", children: "Continue" })] })) : null, step === 'upload' ? (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: [SOURCE_LABELS[source], " \u2192 ", OBJECT_LABELS[object]] }), _jsxs("label", { className: "flex cursor-pointer flex-col items-center justify-center rounded-lg border border-dashed border-border bg-surface-raised px-6 py-10 transition hover:border-accent", children: [_jsx("span", { className: "text-[13px] font-medium text-ink", children: createJob.isPending ? 'Reading the file…' : 'Drop a CSV here or click to browse' }), _jsx("span", { className: "mt-1 text-[12px] text-ink-muted", children: "UTF-8 CSV \u00B7 max 10 MB \u00B7 max 10,000 rows" }), _jsx("input", { type: "file", accept: ".csv,text/csv", className: "sr-only", disabled: createJob.isPending, onChange: (event) => runStep(onFileChange(event)) })] }), _jsx("button", { type: "button", onClick: () => setStep('source'), className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back" })] })) : null, step === 'map' && job !== undefined ? (_jsx(MappingForm, { job: job, object: object, columnMap: columnMap, conflictMode: conflictMode, onMissingCompany: onMissingCompany, matchKeyId: matchKeyId, isPending: createJob.isPending, onColumnMapChange: setColumnMap, onConflictModeChange: setConflictMode, onMissingCompanyChange: setOnMissingCompany, onMatchKeyChange: setMatchKeyId, onSubmit: (event) => runStep(onRerun(event)), onBack: () => {
143
146
  discardJob(jobId);
144
147
  setFile(null);
145
148
  setJobId(undefined);
@@ -149,9 +152,14 @@ export function DataPage() {
149
152
  function MappingForm(props) {
150
153
  const matchKey = findMatchKey(props.object, props.matchKeyId);
151
154
  const keyColumns = new Set(matchKey?.columns ?? []);
152
- return (_jsxs("form", { className: "space-y-4", onSubmit: props.onSubmit, children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Mapping ", _jsx("span", { className: "font-medium text-ink", children: props.job.fileName ?? 'the file' }), " (", props.job.counts.total, " rows). Match Kelpie fields to CSV columns."] }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsx(Field, { label: "On match", children: _jsx("select", { value: props.conflictMode, onChange: (event) => props.onConflictModeChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: Object.entries(CONFLICT_MODE_LABELS).map(([mode, label]) => (_jsx("option", { value: mode, children: label }, mode))) }) }), _jsx(Field, { label: "Key column", children: _jsx("select", { value: props.matchKeyId, onChange: (event) => props.onMatchKeyChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: MATCH_KEYS[props.object].map((key) => (_jsx("option", { value: key.id, children: key.label }, key.id))) }) })] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: [props.conflictMode === 'update'
155
+ // People rows can carry a company and title that drive a Position, so only a
156
+ // People import has a company to be missing.
157
+ const showMissingCompany = props.object === 'people';
158
+ return (_jsxs("form", { className: "space-y-4", onSubmit: props.onSubmit, children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Mapping ", _jsx("span", { className: "font-medium text-ink", children: props.job.fileName ?? 'the file' }), " (", props.job.counts.total, " rows). Match Kelpie fields to CSV columns."] }), _jsxs("div", { className: "grid gap-3 sm:grid-cols-2", children: [_jsx(Field, { label: "On match", children: _jsx("select", { value: props.conflictMode, onChange: (event) => props.onConflictModeChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: Object.entries(CONFLICT_MODE_LABELS).map(([mode, label]) => (_jsx("option", { value: mode, children: label }, mode))) }) }), _jsx(Field, { label: "Key column", children: _jsx("select", { value: props.matchKeyId, onChange: (event) => props.onMatchKeyChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: MATCH_KEYS[props.object].map((key) => (_jsx("option", { value: key.id, children: key.label }, key.id))) }) }), showMissingCompany ? (_jsx(Field, { label: "Missing company", children: _jsx("select", { value: props.onMissingCompany, onChange: (event) => props.onMissingCompanyChange(event.target.value), className: "w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent", children: Object.entries(ON_MISSING_COMPANY_LABELS).map(([mode, label]) => (_jsx("option", { value: mode, children: label }, mode))) }) })) : null] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: [props.conflictMode === 'update'
153
159
  ? 'Rows matching an existing record on the key column overwrite the fields you map below. A blank cell changes nothing.'
154
- : 'Rows matching an existing record on the key column are skipped.', ' ', "Key columns must be mapped."] }), _jsx("div", { className: "overflow-hidden rounded-md border border-border", children: _jsxs("table", { className: "w-full text-left text-[13px]", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase", children: [_jsx("th", { className: "px-4 py-2.5", children: "Kelpie field" }), _jsx("th", { className: "px-4 py-2.5", children: "CSV column" })] }) }), _jsx("tbody", { children: OBJECT_COLUMNS[props.object].map((column) => {
160
+ : 'Rows matching an existing record on the key column are skipped.', ' ', "Key columns must be mapped."] }), showMissingCompany ? (_jsxs("p", { className: "text-[12px] text-ink-muted", children: ["Map ", _jsx("span", { className: "font-mono text-[11px]", children: "company_domain" }), " or", ' ', _jsx("span", { className: "font-mono text-[11px]", children: "company_name" }), " and", ' ', _jsx("span", { className: "font-mono text-[11px]", children: "title" }), " to link a position for each person.", ' ', props.onMissingCompany === 'create'
161
+ ? 'A company that is not here yet is created from the row.'
162
+ : 'A company that is not here yet is left unlinked and reported as a warning.'] })) : null, _jsx("div", { className: "overflow-hidden rounded-md border border-border", children: _jsxs("table", { className: "w-full text-left text-[13px]", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase", children: [_jsx("th", { className: "px-4 py-2.5", children: "Kelpie field" }), _jsx("th", { className: "px-4 py-2.5", children: "CSV column" })] }) }), _jsx("tbody", { children: OBJECT_COLUMNS[props.object].map((column) => {
155
163
  const isKey = keyColumns.has(column.key);
156
164
  return (_jsxs("tr", { className: "border-b border-border last:border-0", children: [_jsxs("td", { className: "px-4 py-2.5", children: [_jsx("span", { className: "font-medium", children: column.label }), _jsx("span", { className: "ml-2 font-mono text-[11px] text-ink-faint", children: column.key }), column.required || isKey ? (_jsx("span", { className: "ml-2 text-[11px] text-danger", children: isKey ? 'key' : 'required' })) : null] }), _jsx("td", { className: "px-4 py-2.5", children: _jsxs("select", { value: props.columnMap[column.key] ?? '', onChange: (event) => props.onColumnMapChange({
157
165
  ...props.columnMap,
@@ -163,7 +171,11 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }) {
163
171
  const working = !isImportJobSettled(job.status);
164
172
  const done = job.status === 'completed';
165
173
  const nothingToDo = job.counts.create === 0 && job.counts.update === 0;
166
- return (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Job ", _jsx("span", { className: "font-mono text-[12px] text-ink", children: job.id }), " \u00B7 status ", job.status, working ? ' · working…' : null] }), _jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-5", children: [_jsx(Stat, { label: "Total", value: job.counts.total }), _jsx(Stat, { label: "Create", value: job.counts.create }), _jsx(Stat, { label: "Update", value: job.counts.update }), _jsx(Stat, { label: "Skip", value: job.counts.skip }), _jsx(Stat, { label: "Error", value: job.counts.error, danger: true })] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: ["On match: ", CONFLICT_MODE_LABELS[job.conflictMode].toLowerCase(), ". Key column:", ' ', _jsx("span", { className: "font-mono text-[11px] text-ink", children: findMatchKey(object, job.matchKey)?.label ?? job.matchKey })] }), job.preview.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-[13px] font-semibold text-ink", children: "Mapping preview" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["The first ", job.preview.length, " row", job.preview.length === 1 ? '' : 's', " as Kelpie read them. Go back to mapping if a column looks wrong."] })] }), _jsx(PreviewTable, { object: object, rows: job.preview })] })) : null, job.errors.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "overflow-hidden rounded-md border border-border", children: _jsxs("table", { className: "w-full text-left text-[13px]", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase", children: [_jsx("th", { className: "px-4 py-2.5", children: "Row" }), _jsx("th", { className: "px-4 py-2.5", children: "Field" }), _jsx("th", { className: "px-4 py-2.5", children: "Message" })] }) }), _jsx("tbody", { children: job.errors.map((error, index) => (_jsxs("tr", { className: "border-b border-border last:border-0", children: [_jsx("td", { className: "px-4 py-2.5 font-mono text-[12px]", children: error.row }), _jsx("td", { className: "px-4 py-2.5 font-mono text-[12px]", children: error.field }), _jsx("td", { className: "px-4 py-2.5 text-ink-muted", children: error.message })] }, `${String(error.row)}-${error.field}-${String(index)}`))) })] }) }), job.counts.error > job.errors.length ? (_jsxs("p", { className: "text-[12px] text-ink-muted", children: ["Showing ", job.errors.length, " of ", job.counts.error, " failing rows."] })) : null] })) : (_jsx("p", { className: "text-[13px] text-ink-muted", children: "No row errors." })), _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsx("button", { type: "button", onClick: onCommit, disabled: done || working || isCommitting || nothingToDo, className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover disabled:cursor-not-allowed disabled:opacity-50", children: done ? 'Committed' : isCommitting || working ? 'Working…' : 'Commit import' }), _jsx("button", { type: "button", onClick: onBack, className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back to mapping" })] })] }));
174
+ return (_jsxs("div", { className: "space-y-4", children: [_jsxs("p", { className: "text-[13px] text-ink-muted", children: ["Job ", _jsx("span", { className: "font-mono text-[12px] text-ink", children: job.id }), " \u00B7 status ", job.status, working ? ' · working…' : null] }), _jsxs("div", { className: "grid grid-cols-2 gap-3 sm:grid-cols-5", children: [_jsx(Stat, { label: "Total", value: job.counts.total }), _jsx(Stat, { label: "Create", value: job.counts.create }), _jsx(Stat, { label: "Update", value: job.counts.update }), _jsx(Stat, { label: "Skip", value: job.counts.skip }), _jsx(Stat, { label: "Error", value: job.counts.error, danger: true })] }), _jsxs("p", { className: "text-[12px] text-ink-muted", children: ["On match: ", CONFLICT_MODE_LABELS[job.conflictMode].toLowerCase(), ". Key column:", ' ', _jsx("span", { className: "font-mono text-[11px] text-ink", children: findMatchKey(object, job.matchKey)?.label ?? job.matchKey })] }), job.preview.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-[13px] font-semibold text-ink", children: "Mapping preview" }), _jsxs("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: ["The first ", job.preview.length, " row", job.preview.length === 1 ? '' : 's', " as Kelpie read them. Go back to mapping if a column looks wrong."] })] }), _jsx(PreviewTable, { object: object, rows: job.preview })] })) : null, job.errors.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsx(IssueTable, { rows: job.errors }), job.counts.error > job.errors.length ? (_jsxs("p", { className: "text-[12px] text-ink-muted", children: ["Showing ", job.errors.length, " of ", job.counts.error, " failing rows."] })) : null] })) : (_jsx("p", { className: "text-[13px] text-ink-muted", children: "No row errors." })), job.warnings.length > 0 ? (_jsxs("div", { className: "space-y-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-[13px] font-semibold text-ink", children: "Warnings" }), _jsx("p", { className: "mt-0.5 text-[12px] text-ink-muted", children: "These rows were imported. Each note says what was left out, such as a person whose company was not here to link a position to." })] }), _jsx(IssueTable, { rows: job.warnings })] })) : null, _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsx("button", { type: "button", onClick: onCommit, disabled: done || working || isCommitting || nothingToDo, className: "rounded-md bg-accent px-3.5 py-2 text-[12px] font-semibold text-accent-fg transition hover:bg-accent-hover disabled:cursor-not-allowed disabled:opacity-50", children: done ? 'Committed' : isCommitting || working ? 'Working…' : 'Commit import' }), _jsx("button", { type: "button", onClick: onBack, className: "rounded-md px-3 py-2 text-[12px] font-medium text-ink-muted hover:text-ink", children: "Back to mapping" })] })] }));
175
+ }
176
+ /** The row / field / message table shared by the error and warning lists. */
177
+ function IssueTable({ rows }) {
178
+ return (_jsx("div", { className: "overflow-hidden rounded-md border border-border", children: _jsxs("table", { className: "w-full text-left text-[13px]", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase", children: [_jsx("th", { className: "px-4 py-2.5", children: "Row" }), _jsx("th", { className: "px-4 py-2.5", children: "Field" }), _jsx("th", { className: "px-4 py-2.5", children: "Message" })] }) }), _jsx("tbody", { children: rows.map((issue, index) => (_jsxs("tr", { className: "border-b border-border last:border-0", children: [_jsx("td", { className: "px-4 py-2.5 font-mono text-[12px]", children: issue.row }), _jsx("td", { className: "px-4 py-2.5 font-mono text-[12px]", children: issue.field }), _jsx("td", { className: "px-4 py-2.5 text-ink-muted", children: issue.message })] }, `${String(issue.row)}-${issue.field}-${String(index)}`))) })] }) }));
167
179
  }
168
180
  function PreviewTable({ object, rows, }) {
169
181
  const keys = OBJECT_COLUMNS[object]
@@ -1 +1 @@
1
- {"version":3,"file":"DataPage.js","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DataPage.js","sourceRoot":"","sources":["../../../src/pages/admin/DataPage.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kelpie/ui",
3
- "version": "0.5.2",
3
+ "version": "0.7.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.5.2",
51
+ "@kelpie/schemas": "^0.7.0",
52
52
  "@tanstack/react-query": "^5.101.4",
53
53
  "react-markdown": "^10.1.0",
54
54
  "react-router": "^8.3.0",
@@ -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
 
@@ -0,0 +1,33 @@
1
+ import { publicConfigSchema } from '@kelpie/schemas'
2
+ import type { PublicConfig } from '@kelpie/schemas'
3
+ import { useQuery } from '@tanstack/react-query'
4
+
5
+ import { useApiClient } from '../context.ts'
6
+ import { toError } from '../errors.ts'
7
+
8
+ /**
9
+ * The deployment metadata `GET /v1/public/config` reports.
10
+ *
11
+ * Read once, cached forever: neither `runtimeMode` nor `siteName` changes
12
+ * while the app is open. The endpoint is public, so this hook works before a
13
+ * session exists (the sign-in page reads it too).
14
+ */
15
+
16
+ const PUBLIC_CONFIG_KEY = ['public-config'] as const
17
+
18
+ export interface PublicConfigState {
19
+ readonly config: PublicConfig | undefined
20
+ readonly isLoading: boolean
21
+ readonly error: Error | null
22
+ }
23
+
24
+ export function usePublicConfig(): PublicConfigState {
25
+ const client = useApiClient()
26
+ const result = useQuery({
27
+ queryKey: PUBLIC_CONFIG_KEY,
28
+ queryFn: () => client.get('/public/config', publicConfigSchema.parse),
29
+ staleTime: Infinity,
30
+ })
31
+
32
+ return { config: result.data, isLoading: result.isPending, error: toError(result.error) }
33
+ }
@@ -1,6 +1,7 @@
1
1
  import { BrowserRouter, Navigate, Route, Routes } from 'react-router'
2
2
 
3
3
  import { ApiProvider } from '../api/ApiProvider.tsx'
4
+ import { EnvironmentBanner } from '../components/EnvironmentBanner.tsx'
4
5
  import { Shell } from '../components/Shell.tsx'
5
6
  import { CompaniesPage } from '../pages/CompaniesPage.tsx'
6
7
  import { CompanyDetail } from '../pages/CompanyDetail.tsx'
@@ -78,6 +79,12 @@ export function KelpieApp({ extensions, baseUrl }: KelpieAppProps): React.JSX.El
78
79
  <ApiProvider baseUrl={baseUrl}>
79
80
  <UiExtensionProvider extensions={extensions}>
80
81
  <BrowserRouter>
82
+ {/* Above the router so the strip renders on the sign-in page as
83
+ well as the main app. Nothing forces a height here: on
84
+ production the banner returns null, and the Shell (or the sign-
85
+ in layout) fills the viewport as it did before. On non-
86
+ production the 20px strip stacks above them. */}
87
+ <EnvironmentBanner />
81
88
  <AppRoutes />
82
89
  </BrowserRouter>
83
90
  </UiExtensionProvider>
@@ -0,0 +1,30 @@
1
+ import { usePublicConfig } from '../api/resources/publicConfig.ts'
2
+
3
+ /**
4
+ * A thin strip above the app that names the site.
5
+ *
6
+ * Renders nothing on production, whether or not a site name was set: the
7
+ * banner exists to tell dev, demo, and any other non-production install
8
+ * apart. Renders nothing while the metadata is loading or on error either,
9
+ * so a slow config request never pushes the app down half a second after
10
+ * boot.
11
+ *
12
+ * Mounted at the top of `KelpieApp`, above the router, so it shows on the
13
+ * sign-in and onboarding pages as well as the main app.
14
+ */
15
+
16
+ export function EnvironmentBanner(): React.JSX.Element | null {
17
+ const { config } = usePublicConfig()
18
+
19
+ if (config === undefined || config.runtimeMode === 'production') {
20
+ return null
21
+ }
22
+
23
+ const label = config.siteName ?? config.runtimeMode
24
+
25
+ return (
26
+ <div className="flex h-5 shrink-0 items-center justify-center bg-accent px-2 text-[11px] font-medium tracking-wide text-accent-fg uppercase">
27
+ {label}
28
+ </div>
29
+ )
30
+ }
@@ -5,6 +5,7 @@ import {
5
5
  MATCH_KEYS,
6
6
  OBJECT_COLUMNS,
7
7
  OBJECT_LABELS,
8
+ ON_MISSING_COMPANY_LABELS,
8
9
  SOURCE_LABELS,
9
10
  defaultMatchKeyId,
10
11
  findMatchKey,
@@ -18,7 +19,9 @@ import type {
18
19
  ImportObject,
19
20
  ImportPreviewRow,
20
21
  ImportRowAction,
22
+ ImportRowError,
21
23
  ImportSource,
24
+ OnMissingCompany,
22
25
  } from '@kelpie/schemas'
23
26
  import { useState } from 'react'
24
27
  import type { ChangeEvent, FormEvent, ReactNode } from 'react'
@@ -64,6 +67,7 @@ export function DataPage(): ReactNode {
64
67
  const [file, setFile] = useState<File | null>(null)
65
68
  const [columnMap, setColumnMap] = useState<ImportColumnMap>({})
66
69
  const [conflictMode, setConflictMode] = useState<ImportConflictMode>('skip')
70
+ const [onMissingCompany, setOnMissingCompany] = useState<OnMissingCompany>('skip')
67
71
  const [matchKeyId, setMatchKeyId] = useState<string>(() => defaultMatchKeyId('companies'))
68
72
  const [jobId, setJobId] = useState<string | undefined>(undefined)
69
73
  const [problem, setProblem] = useState<string | null>(null)
@@ -115,6 +119,7 @@ export function DataPage(): ReactNode {
115
119
  setFile(null)
116
120
  setColumnMap({})
117
121
  setConflictMode('skip')
122
+ setOnMissingCompany('skip')
118
123
  setMatchKeyId(defaultMatchKeyId(object))
119
124
  setJobId(undefined)
120
125
  setProblem(null)
@@ -133,6 +138,7 @@ export function DataPage(): ReactNode {
133
138
  source,
134
139
  object,
135
140
  conflictMode,
141
+ onMissingCompany,
136
142
  matchKeyId,
137
143
  ...(map === undefined ? {} : { columnMap: map }),
138
144
  })
@@ -373,10 +379,12 @@ export function DataPage(): ReactNode {
373
379
  object={object}
374
380
  columnMap={columnMap}
375
381
  conflictMode={conflictMode}
382
+ onMissingCompany={onMissingCompany}
376
383
  matchKeyId={matchKeyId}
377
384
  isPending={createJob.isPending}
378
385
  onColumnMapChange={setColumnMap}
379
386
  onConflictModeChange={setConflictMode}
387
+ onMissingCompanyChange={setOnMissingCompany}
380
388
  onMatchKeyChange={setMatchKeyId}
381
389
  onSubmit={(event) => runStep(onRerun(event))}
382
390
  onBack={() => {
@@ -407,10 +415,12 @@ interface MappingFormProps {
407
415
  readonly object: ImportObject
408
416
  readonly columnMap: ImportColumnMap
409
417
  readonly conflictMode: ImportConflictMode
418
+ readonly onMissingCompany: OnMissingCompany
410
419
  readonly matchKeyId: string
411
420
  readonly isPending: boolean
412
421
  readonly onColumnMapChange: (map: ImportColumnMap) => void
413
422
  readonly onConflictModeChange: (mode: ImportConflictMode) => void
423
+ readonly onMissingCompanyChange: (mode: OnMissingCompany) => void
414
424
  readonly onMatchKeyChange: (id: string) => void
415
425
  readonly onSubmit: (event: FormEvent) => void
416
426
  readonly onBack: () => void
@@ -419,6 +429,9 @@ interface MappingFormProps {
419
429
  function MappingForm(props: MappingFormProps): ReactNode {
420
430
  const matchKey = findMatchKey(props.object, props.matchKeyId)
421
431
  const keyColumns = new Set(matchKey?.columns ?? [])
432
+ // People rows can carry a company and title that drive a Position, so only a
433
+ // People import has a company to be missing.
434
+ const showMissingCompany = props.object === 'people'
422
435
 
423
436
  return (
424
437
  <form className="space-y-4" onSubmit={props.onSubmit}>
@@ -453,6 +466,23 @@ function MappingForm(props: MappingFormProps): ReactNode {
453
466
  ))}
454
467
  </select>
455
468
  </Field>
469
+ {showMissingCompany ? (
470
+ <Field label="Missing company">
471
+ <select
472
+ value={props.onMissingCompany}
473
+ onChange={(event) =>
474
+ props.onMissingCompanyChange(event.target.value as OnMissingCompany)
475
+ }
476
+ className="w-full rounded-md border border-border bg-surface-raised px-3 py-2 text-[13px] outline-none focus:border-accent"
477
+ >
478
+ {Object.entries(ON_MISSING_COMPANY_LABELS).map(([mode, label]) => (
479
+ <option key={mode} value={mode}>
480
+ {label}
481
+ </option>
482
+ ))}
483
+ </select>
484
+ </Field>
485
+ ) : null}
456
486
  </div>
457
487
  <p className="text-[12px] text-ink-muted">
458
488
  {props.conflictMode === 'update'
@@ -460,6 +490,16 @@ function MappingForm(props: MappingFormProps): ReactNode {
460
490
  : 'Rows matching an existing record on the key column are skipped.'}{' '}
461
491
  Key columns must be mapped.
462
492
  </p>
493
+ {showMissingCompany ? (
494
+ <p className="text-[12px] text-ink-muted">
495
+ Map <span className="font-mono text-[11px]">company_domain</span> or{' '}
496
+ <span className="font-mono text-[11px]">company_name</span> and{' '}
497
+ <span className="font-mono text-[11px]">title</span> to link a position for each person.{' '}
498
+ {props.onMissingCompany === 'create'
499
+ ? 'A company that is not here yet is created from the row.'
500
+ : 'A company that is not here yet is left unlinked and reported as a warning.'}
501
+ </p>
502
+ ) : null}
463
503
  <div className="overflow-hidden rounded-md border border-border">
464
504
  <table className="w-full text-left text-[13px]">
465
505
  <thead>
@@ -576,29 +616,7 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }: ResultPane
576
616
 
577
617
  {job.errors.length > 0 ? (
578
618
  <div className="space-y-2">
579
- <div className="overflow-hidden rounded-md border border-border">
580
- <table className="w-full text-left text-[13px]">
581
- <thead>
582
- <tr className="border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase">
583
- <th className="px-4 py-2.5">Row</th>
584
- <th className="px-4 py-2.5">Field</th>
585
- <th className="px-4 py-2.5">Message</th>
586
- </tr>
587
- </thead>
588
- <tbody>
589
- {job.errors.map((error, index) => (
590
- <tr
591
- key={`${String(error.row)}-${error.field}-${String(index)}`}
592
- className="border-b border-border last:border-0"
593
- >
594
- <td className="px-4 py-2.5 font-mono text-[12px]">{error.row}</td>
595
- <td className="px-4 py-2.5 font-mono text-[12px]">{error.field}</td>
596
- <td className="px-4 py-2.5 text-ink-muted">{error.message}</td>
597
- </tr>
598
- ))}
599
- </tbody>
600
- </table>
601
- </div>
619
+ <IssueTable rows={job.errors} />
602
620
  {job.counts.error > job.errors.length ? (
603
621
  <p className="text-[12px] text-ink-muted">
604
622
  Showing {job.errors.length} of {job.counts.error} failing rows.
@@ -609,6 +627,19 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }: ResultPane
609
627
  <p className="text-[13px] text-ink-muted">No row errors.</p>
610
628
  )}
611
629
 
630
+ {job.warnings.length > 0 ? (
631
+ <div className="space-y-2">
632
+ <div>
633
+ <h3 className="text-[13px] font-semibold text-ink">Warnings</h3>
634
+ <p className="mt-0.5 text-[12px] text-ink-muted">
635
+ These rows were imported. Each note says what was left out, such as a person whose
636
+ company was not here to link a position to.
637
+ </p>
638
+ </div>
639
+ <IssueTable rows={job.warnings} />
640
+ </div>
641
+ ) : null}
642
+
612
643
  <div className="flex flex-wrap gap-3">
613
644
  <button
614
645
  type="button"
@@ -630,6 +661,35 @@ function ResultPanel({ job, object, isCommitting, onCommit, onBack }: ResultPane
630
661
  )
631
662
  }
632
663
 
664
+ /** The row / field / message table shared by the error and warning lists. */
665
+ function IssueTable({ rows }: { readonly rows: readonly ImportRowError[] }): ReactNode {
666
+ return (
667
+ <div className="overflow-hidden rounded-md border border-border">
668
+ <table className="w-full text-left text-[13px]">
669
+ <thead>
670
+ <tr className="border-b border-border bg-surface text-[11px] font-semibold tracking-wide text-ink-muted uppercase">
671
+ <th className="px-4 py-2.5">Row</th>
672
+ <th className="px-4 py-2.5">Field</th>
673
+ <th className="px-4 py-2.5">Message</th>
674
+ </tr>
675
+ </thead>
676
+ <tbody>
677
+ {rows.map((issue, index) => (
678
+ <tr
679
+ key={`${String(issue.row)}-${issue.field}-${String(index)}`}
680
+ className="border-b border-border last:border-0"
681
+ >
682
+ <td className="px-4 py-2.5 font-mono text-[12px]">{issue.row}</td>
683
+ <td className="px-4 py-2.5 font-mono text-[12px]">{issue.field}</td>
684
+ <td className="px-4 py-2.5 text-ink-muted">{issue.message}</td>
685
+ </tr>
686
+ ))}
687
+ </tbody>
688
+ </table>
689
+ </div>
690
+ )
691
+ }
692
+
633
693
  function PreviewTable({
634
694
  object,
635
695
  rows,