@ai-matrx/records-ui 0.85.10 → 0.85.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -7
- package/dist/index.cjs +142 -131
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +134 -123
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.cjs
CHANGED
|
@@ -3423,7 +3423,7 @@ function OpenCell({
|
|
|
3423
3423
|
// src/Grid.tsx
|
|
3424
3424
|
var import_react32 = require("react");
|
|
3425
3425
|
var import_react33 = require("@ai-matrx/records/react");
|
|
3426
|
-
var
|
|
3426
|
+
var import_records10 = require("@ai-matrx/records");
|
|
3427
3427
|
var import_data_table3 = require("@ai-matrx/design-system/data-table");
|
|
3428
3428
|
|
|
3429
3429
|
// src/presentation.ts
|
|
@@ -5141,6 +5141,7 @@ function GridLayoutMenu({
|
|
|
5141
5141
|
// src/handOrder.tsx
|
|
5142
5142
|
var import_react30 = require("react");
|
|
5143
5143
|
var import_react31 = require("@ai-matrx/records/react");
|
|
5144
|
+
var import_records9 = require("@ai-matrx/records");
|
|
5144
5145
|
var import_design_system15 = require("@ai-matrx/design-system");
|
|
5145
5146
|
|
|
5146
5147
|
// src/viewKeys.ts
|
|
@@ -5456,12 +5457,6 @@ var HAND_ORDER_NOTE = "Sort: Manual \u2014 the cards are in the order set by han
|
|
|
5456
5457
|
function reorderNote(startSortName, direction) {
|
|
5457
5458
|
return startSortName && direction ? `Saving makes this order the view's sort. It replaces the sort by ${startSortName} ${sortArrow(direction)}. Nothing changes until you save.` : "Saving makes this order the view's sort. Nothing changes until you save.";
|
|
5458
5459
|
}
|
|
5459
|
-
function inHandOrder(rows, positions) {
|
|
5460
|
-
const placed = rows.filter((r) => positions.has(r.id));
|
|
5461
|
-
const rest = rows.filter((r) => !positions.has(r.id));
|
|
5462
|
-
placed.sort((a, b) => positions.get(a.id) - positions.get(b.id));
|
|
5463
|
-
return [...placed, ...rest];
|
|
5464
|
-
}
|
|
5465
5460
|
function moveRow(list, from, to) {
|
|
5466
5461
|
if (from === to || from < 0 || from >= list.length) return [...list];
|
|
5467
5462
|
const next = [...list];
|
|
@@ -5472,31 +5467,34 @@ function moveRow(list, from, to) {
|
|
|
5472
5467
|
var DOOR_PAGE_MAX = 500;
|
|
5473
5468
|
function useHandOrderRows(args) {
|
|
5474
5469
|
const client = (0, import_react31.useRecordsClient)();
|
|
5475
|
-
const { viewId, active, page, pageSize
|
|
5470
|
+
const { viewId, active, page, pageSize } = args;
|
|
5471
|
+
const filter = args.filter && Object.keys(args.filter).length > 0 ? args.filter : null;
|
|
5472
|
+
const filterKey = filter ? (0, import_records9.stableFilterKey)(filter) : "";
|
|
5473
|
+
const filterNow = (0, import_react30.useRef)(filter);
|
|
5474
|
+
filterNow.current = filter;
|
|
5476
5475
|
const [answer, setAnswer] = (0, import_react30.useState)(null);
|
|
5477
5476
|
const [tick, setTick] = (0, import_react30.useState)(0);
|
|
5478
|
-
const limit =
|
|
5479
|
-
const offset =
|
|
5480
|
-
const key = `${viewId ?? ""}:${limit}:${offset}`;
|
|
5477
|
+
const limit = Math.max(1, Math.min(pageSize, DOOR_PAGE_MAX));
|
|
5478
|
+
const offset = Math.max(0, page) * limit;
|
|
5479
|
+
const key = `${viewId ?? ""}:${limit}:${offset}:${filterKey}`;
|
|
5481
5480
|
(0, import_react30.useEffect)(() => {
|
|
5482
5481
|
if (!active || !viewId) return;
|
|
5483
5482
|
let cancelled = false;
|
|
5484
|
-
void client.readInViewOrder({ view_id: viewId, limit, offset }).then((result) => {
|
|
5483
|
+
void client.readInViewOrder({ view_id: viewId, filter: filterNow.current, limit, offset }).then((result) => {
|
|
5485
5484
|
if (cancelled) return;
|
|
5486
|
-
setAnswer(
|
|
5485
|
+
setAnswer(
|
|
5486
|
+
result.ok ? { key, rows: (result.data ?? []).map(({ position: _p, ...row }) => row), error: null } : { key, rows: [], error: result.error }
|
|
5487
|
+
);
|
|
5487
5488
|
});
|
|
5488
5489
|
return () => {
|
|
5489
5490
|
cancelled = true;
|
|
5490
5491
|
};
|
|
5491
|
-
}, [client, viewId, active, limit, offset, key, args.version, tick]);
|
|
5492
|
+
}, [client, viewId, active, limit, offset, key, filterKey, args.version, tick]);
|
|
5492
5493
|
const rows = (0, import_react30.useMemo)(() => {
|
|
5493
5494
|
if (!active || !viewId || !answer || answer.key !== key) return null;
|
|
5494
5495
|
if (answer.error) return null;
|
|
5495
|
-
|
|
5496
|
-
|
|
5497
|
-
answer.rows.forEach((row, i) => positions.set(row.id, row.position ?? DOOR_PAGE_MAX * 1024 + i));
|
|
5498
|
-
return inHandOrder(args.filteredRows, positions);
|
|
5499
|
-
}, [active, viewId, answer, key, filtered, args.filteredRows]);
|
|
5496
|
+
return answer.rows;
|
|
5497
|
+
}, [active, viewId, answer, key]);
|
|
5500
5498
|
return {
|
|
5501
5499
|
rows,
|
|
5502
5500
|
loading: active && Boolean(viewId) && (!answer || answer.key !== key),
|
|
@@ -5635,8 +5633,7 @@ function Grid({
|
|
|
5635
5633
|
active: manual,
|
|
5636
5634
|
page,
|
|
5637
5635
|
pageSize,
|
|
5638
|
-
|
|
5639
|
-
filteredRows: storeRows,
|
|
5636
|
+
filter: filter ?? null,
|
|
5640
5637
|
version: records.data
|
|
5641
5638
|
});
|
|
5642
5639
|
const rows = (0, import_react32.useMemo)(() => manual ? hand.rows ?? [] : storeRows, [manual, hand.rows, storeRows]);
|
|
@@ -6280,7 +6277,7 @@ function Grid({
|
|
|
6280
6277
|
tableName: table.data ? tableName(table.data) : "",
|
|
6281
6278
|
fields: fields.data ?? [],
|
|
6282
6279
|
document: row.document ?? {},
|
|
6283
|
-
level: (0,
|
|
6280
|
+
level: (0, import_records10.asPermissionLevel)(row.level)
|
|
6284
6281
|
})
|
|
6285
6282
|
},
|
|
6286
6283
|
action.id
|
|
@@ -7750,10 +7747,10 @@ var import_design_system23 = require("@ai-matrx/design-system");
|
|
|
7750
7747
|
// src/FormulaTextEditor.tsx
|
|
7751
7748
|
var import_react42 = require("react");
|
|
7752
7749
|
var import_react43 = require("@ai-matrx/records/react");
|
|
7753
|
-
var
|
|
7750
|
+
var import_records11 = require("@ai-matrx/records");
|
|
7754
7751
|
var import_design_system21 = require("@ai-matrx/design-system");
|
|
7755
7752
|
var import_jsx_runtime26 = require("react/jsx-runtime");
|
|
7756
|
-
var FORMULA_FUNCTIONS =
|
|
7753
|
+
var FORMULA_FUNCTIONS = import_records11.RULE_NODE_KINDS.map((row) => row.node).filter((node) => node.startsWith("fx.")).map((node) => node.slice(3).toUpperCase()).filter((name) => !["ADD", "SUB", "MUL", "DIV", "EQ", "NEQ", "GT", "GTE", "LT", "LTE", "NEG", "FIELD", "CONST"].includes(name)).sort();
|
|
7757
7754
|
var RESULT_WORD = {
|
|
7758
7755
|
number: "a number",
|
|
7759
7756
|
text: "text",
|
|
@@ -7974,11 +7971,11 @@ function EntityReferenceKindPicker({ value, onChange, locked = false, className
|
|
|
7974
7971
|
}
|
|
7975
7972
|
|
|
7976
7973
|
// src/FieldEditor.tsx
|
|
7977
|
-
var
|
|
7974
|
+
var import_records12 = require("@ai-matrx/records");
|
|
7978
7975
|
var import_jsx_runtime28 = require("react/jsx-runtime");
|
|
7979
7976
|
var RULE_KINDS = FIELD_RULE_KIND_VALUES.map((kind) => ({ kind, label: FIELD_RULE_KIND_LABEL[kind] }));
|
|
7980
|
-
var SENSITIVITIES =
|
|
7981
|
-
var AGENT_VISIBILITY =
|
|
7977
|
+
var SENSITIVITIES = import_records12.FIELD_SENSITIVITIES.map((value) => ({ value, label: FIELD_SENSITIVITY_LABEL[value] }));
|
|
7978
|
+
var AGENT_VISIBILITY = import_records12.CONTEXT_POLICIES.map((value) => ({ value, label: CONTEXT_POLICY_LABEL[value] }));
|
|
7982
7979
|
var ROLLUP_OPERATIONS = ROLLUP_AGG_VALUES.map((value) => ({
|
|
7983
7980
|
value,
|
|
7984
7981
|
label: ROLLUP_AGG_LABEL[value]
|
|
@@ -10800,14 +10797,14 @@ function computedInPlainWords(row, field) {
|
|
|
10800
10797
|
// src/ViewSwitcher.tsx
|
|
10801
10798
|
var import_react67 = require("react");
|
|
10802
10799
|
var import_react68 = require("@ai-matrx/records/react");
|
|
10803
|
-
var
|
|
10800
|
+
var import_records14 = require("@ai-matrx/records");
|
|
10804
10801
|
var import_design_system33 = require("@ai-matrx/design-system");
|
|
10805
10802
|
var import_data_table5 = require("@ai-matrx/design-system/data-table");
|
|
10806
10803
|
|
|
10807
10804
|
// src/Pipeline.tsx
|
|
10808
10805
|
var import_react65 = require("react");
|
|
10809
10806
|
var import_react66 = require("@ai-matrx/records/react");
|
|
10810
|
-
var
|
|
10807
|
+
var import_records13 = require("@ai-matrx/records");
|
|
10811
10808
|
var import_design_system32 = require("@ai-matrx/design-system");
|
|
10812
10809
|
var import_data_table4 = require("@ai-matrx/design-system/data-table");
|
|
10813
10810
|
var import_jsx_runtime37 = require("react/jsx-runtime");
|
|
@@ -10873,7 +10870,7 @@ function PipelineBoard({
|
|
|
10873
10870
|
alive.current = false;
|
|
10874
10871
|
};
|
|
10875
10872
|
}, []);
|
|
10876
|
-
const filterKey = (0,
|
|
10873
|
+
const filterKey = (0, import_records13.stableFilterKey)(filter);
|
|
10877
10874
|
const reload = (0, import_react65.useCallback)(async () => {
|
|
10878
10875
|
setLoading(true);
|
|
10879
10876
|
const [read, board, held] = await Promise.all([
|
|
@@ -11517,8 +11514,8 @@ function useViewRecords(view, pageSize = 200, filter, viewId) {
|
|
|
11517
11514
|
cancelled = true;
|
|
11518
11515
|
};
|
|
11519
11516
|
}, [client, ruleId, pageSize]);
|
|
11520
|
-
const asked = (0,
|
|
11521
|
-
const fromView = asked !== "{}" && (asked === (0,
|
|
11517
|
+
const asked = (0, import_records14.stableFilterKey)(filter ?? null);
|
|
11518
|
+
const fromView = asked !== "{}" && (asked === (0, import_records14.stableFilterKey)(view.where ?? null) || asked === (0, import_records14.stableFilterKey)(view.filters ?? null));
|
|
11522
11519
|
const tableRows = (0, import_react67.useMemo)(() => table.data?.rows ?? [], [table.data]);
|
|
11523
11520
|
const manual = view.order === "manual" && Boolean(viewId) && !ruleId;
|
|
11524
11521
|
const hand = useHandOrderRows({
|
|
@@ -11526,8 +11523,7 @@ function useViewRecords(view, pageSize = 200, filter, viewId) {
|
|
|
11526
11523
|
active: manual,
|
|
11527
11524
|
page: 0,
|
|
11528
11525
|
pageSize,
|
|
11529
|
-
|
|
11530
|
-
filteredRows: tableRows,
|
|
11526
|
+
filter: filter ?? null,
|
|
11531
11527
|
version: table.data
|
|
11532
11528
|
});
|
|
11533
11529
|
const rows = ruleId ? ruled.rows : manual ? hand.rows ?? [] : tableRows;
|
|
@@ -12078,7 +12074,7 @@ function Card2({
|
|
|
12078
12074
|
|
|
12079
12075
|
// src/ArchivedView.tsx
|
|
12080
12076
|
var import_react69 = require("react");
|
|
12081
|
-
var
|
|
12077
|
+
var import_records15 = require("@ai-matrx/records");
|
|
12082
12078
|
var import_react70 = require("@ai-matrx/records/react");
|
|
12083
12079
|
var import_design_system34 = require("@ai-matrx/design-system");
|
|
12084
12080
|
var import_jsx_runtime39 = require("react/jsx-runtime");
|
|
@@ -12088,7 +12084,7 @@ function mayNotRestoreLine(why) {
|
|
|
12088
12084
|
return said === "" ? "Bringing a record back needs permission to edit this table. Ask somebody who has it." : said;
|
|
12089
12085
|
}
|
|
12090
12086
|
function archivedRowLine(row, titleKey) {
|
|
12091
|
-
return `${recordName(row.document, titleKey)} \u2014 ${(0,
|
|
12087
|
+
return `${recordName(row.document, titleKey)} \u2014 ${(0, import_records15.archivedByLine)(row)}`;
|
|
12092
12088
|
}
|
|
12093
12089
|
function ArchivedView({
|
|
12094
12090
|
tableId,
|
|
@@ -12102,7 +12098,7 @@ function ArchivedView({
|
|
|
12102
12098
|
const table = (0, import_react70.useTable)(tableId);
|
|
12103
12099
|
const rights = useTableRights(table.data);
|
|
12104
12100
|
const fields = (0, import_react70.useFields)(tableId);
|
|
12105
|
-
const [lane, setLane] = (0, import_react69.useState)(laneFromHost ??
|
|
12101
|
+
const [lane, setLane] = (0, import_react69.useState)(laneFromHost ?? import_records15.DEFAULT_ARCHIVE_LANE);
|
|
12106
12102
|
const [rows, setRows] = (0, import_react69.useState)([]);
|
|
12107
12103
|
const [loading, setLoading] = (0, import_react69.useState)(true);
|
|
12108
12104
|
const [error, setError] = (0, import_react69.useState)(null);
|
|
@@ -12149,15 +12145,15 @@ function ArchivedView({
|
|
|
12149
12145
|
return /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: (0, import_design_system34.cn)("flex min-h-0 flex-col gap-2", className), "data-testid": "archived-view", children: [
|
|
12150
12146
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "flex flex-wrap items-center gap-2", children: [
|
|
12151
12147
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "text-sm font-medium", children: "Archived" }),
|
|
12152
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "ml-auto flex items-center gap-0.5", role: "group", "aria-label": "Archived by", children:
|
|
12148
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("div", { className: "ml-auto flex items-center gap-0.5", role: "group", "aria-label": "Archived by", children: import_records15.ARCHIVE_LANES.map((option) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
12153
12149
|
import_design_system34.Button,
|
|
12154
12150
|
{
|
|
12155
12151
|
size: "sm",
|
|
12156
12152
|
variant: option === lane ? "secondary" : "ghost",
|
|
12157
12153
|
"aria-pressed": option === lane,
|
|
12158
|
-
title:
|
|
12154
|
+
title: import_records15.ARCHIVE_LANE_MEANS[option],
|
|
12159
12155
|
onClick: () => pick(option),
|
|
12160
|
-
children:
|
|
12156
|
+
children: import_records15.ARCHIVE_LANE_LABEL[option]
|
|
12161
12157
|
},
|
|
12162
12158
|
option
|
|
12163
12159
|
)) })
|
|
@@ -12173,7 +12169,7 @@ function ArchivedView({
|
|
|
12173
12169
|
),
|
|
12174
12170
|
error ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(RefusalNotice, { error }) : null,
|
|
12175
12171
|
loading && !error ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(import_design_system34.Skeleton, { className: "h-24 w-full" }) : null,
|
|
12176
|
-
!loading && !error && rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { "data-testid": "archived-empty", className: "rounded-md border border-dashed px-3 py-6 text-xs text-muted-foreground", children: (0,
|
|
12172
|
+
!loading && !error && rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("p", { "data-testid": "archived-empty", className: "rounded-md border border-dashed px-3 py-6 text-xs text-muted-foreground", children: (0, import_records15.emptyArchiveLine)(lane) }) : null,
|
|
12177
12173
|
!loading && !error && rows.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)("ul", { className: "flex flex-col gap-1", "data-testid": "archived-rows", children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime39.jsxs)(
|
|
12178
12174
|
"li",
|
|
12179
12175
|
{
|
|
@@ -12183,7 +12179,7 @@ function ArchivedView({
|
|
|
12183
12179
|
children: [
|
|
12184
12180
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsxs)("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
12185
12181
|
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "truncate text-sm", children: recordName(row.document, titleKey) }),
|
|
12186
|
-
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "truncate text-xs text-muted-foreground", "data-testid": "archived-who", children: (0,
|
|
12182
|
+
/* @__PURE__ */ (0, import_jsx_runtime39.jsx)("span", { className: "truncate text-xs text-muted-foreground", "data-testid": "archived-who", children: (0, import_records15.archivedByLine)(row) }),
|
|
12187
12183
|
refusal2 && refusal2.recordId === row.id ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(RefusalNotice, { error: refusal2.error, className: "mt-2" }) : null
|
|
12188
12184
|
] }),
|
|
12189
12185
|
mayRestore ? /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
|
|
@@ -12206,7 +12202,7 @@ function ArchivedView({
|
|
|
12206
12202
|
|
|
12207
12203
|
// src/ArchivedDisclosure.tsx
|
|
12208
12204
|
var import_react71 = require("react");
|
|
12209
|
-
var
|
|
12205
|
+
var import_records16 = require("@ai-matrx/records");
|
|
12210
12206
|
var import_react72 = require("@ai-matrx/records/react");
|
|
12211
12207
|
var import_design_system35 = require("@ai-matrx/design-system");
|
|
12212
12208
|
var import_jsx_runtime40 = require("react/jsx-runtime");
|
|
@@ -12306,10 +12302,10 @@ function ArchivedPortals({
|
|
|
12306
12302
|
error ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(RefusalNotice, { error }) : null,
|
|
12307
12303
|
rows === null && !error ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)(import_design_system35.Skeleton, { className: "h-16 w-full" }) : null,
|
|
12308
12304
|
said ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { className: "rounded-md border border-border px-3 py-2 text-xs", "data-testid": "archived-portal-said", children: said }) : null,
|
|
12309
|
-
rows !== null && !error && rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { "data-testid": "archived-portals-empty", className: "text-xs text-muted-foreground", children: (0,
|
|
12305
|
+
rows !== null && !error && rows.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("p", { "data-testid": "archived-portals-empty", className: "text-xs text-muted-foreground", children: (0, import_records16.emptyPortalArchiveLine)() }) : null,
|
|
12310
12306
|
rows !== null && rows.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("ul", { className: "flex flex-col gap-1.5", "data-testid": "archived-portals", children: rows.map((portal) => {
|
|
12311
12307
|
const asking = confirming === portal.portal_id;
|
|
12312
|
-
const matches2 = (0,
|
|
12308
|
+
const matches2 = (0, import_records16.portalTitleTypedBack)(typed, portal.title);
|
|
12313
12309
|
return /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)(
|
|
12314
12310
|
"li",
|
|
12315
12311
|
{
|
|
@@ -12348,7 +12344,7 @@ function ArchivedPortals({
|
|
|
12348
12344
|
] }),
|
|
12349
12345
|
asking ? /* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex flex-col gap-1.5", children: [
|
|
12350
12346
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("p", { className: "text-xs text-muted-foreground", children: [
|
|
12351
|
-
(0,
|
|
12347
|
+
(0, import_records16.portalConfirmLine)(portal.title),
|
|
12352
12348
|
" Restoring it puts it back exactly as it was: everyone who was invited can sign in again, and it shows the same Tables."
|
|
12353
12349
|
] }),
|
|
12354
12350
|
/* @__PURE__ */ (0, import_jsx_runtime40.jsxs)("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
@@ -15115,7 +15111,7 @@ function PortalBuilder({ tableId, portalId, onSaved, onClose, className }) {
|
|
|
15115
15111
|
// src/PortalsPanel.tsx
|
|
15116
15112
|
var import_react93 = require("react");
|
|
15117
15113
|
var import_react94 = require("@ai-matrx/records/react");
|
|
15118
|
-
var
|
|
15114
|
+
var import_records17 = require("@ai-matrx/records");
|
|
15119
15115
|
var import_design_system46 = require("@ai-matrx/design-system");
|
|
15120
15116
|
|
|
15121
15117
|
// src/BuildOrAsk.tsx
|
|
@@ -15350,74 +15346,89 @@ function PortalLookEditor({ card, onSaved, className }) {
|
|
|
15350
15346
|
] }),
|
|
15351
15347
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex flex-col gap-1 text-xs", children: [
|
|
15352
15348
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { children: "Footer links" }),
|
|
15353
|
-
links.map((link, i) =>
|
|
15354
|
-
|
|
15355
|
-
|
|
15356
|
-
|
|
15357
|
-
|
|
15358
|
-
|
|
15359
|
-
|
|
15360
|
-
|
|
15361
|
-
|
|
15362
|
-
|
|
15363
|
-
|
|
15364
|
-
|
|
15365
|
-
|
|
15366
|
-
|
|
15367
|
-
|
|
15368
|
-
|
|
15369
|
-
|
|
15370
|
-
|
|
15371
|
-
|
|
15372
|
-
|
|
15373
|
-
|
|
15349
|
+
links.map((link, i) => (
|
|
15350
|
+
// Wraps at phone width: the two boxes share a row when there is room, and "Remove" is
|
|
15351
|
+
// never pushed past the edge (measured at 390: it was clipped).
|
|
15352
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
15353
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
15354
|
+
import_design_system45.BasicInput,
|
|
15355
|
+
{
|
|
15356
|
+
className: "min-w-0 flex-1 basis-32",
|
|
15357
|
+
value: link.label,
|
|
15358
|
+
placeholder: "Call dispatch",
|
|
15359
|
+
"aria-label": `Footer link ${i + 1} words`,
|
|
15360
|
+
onChange: (e) => setLinks((ls) => ls.map((l, j) => j === i ? { ...l, label: e.target.value } : l))
|
|
15361
|
+
}
|
|
15362
|
+
),
|
|
15363
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
15364
|
+
import_design_system45.BasicInput,
|
|
15365
|
+
{
|
|
15366
|
+
className: "min-w-0 flex-1 basis-40",
|
|
15367
|
+
value: link.url,
|
|
15368
|
+
placeholder: "tel:+1 805 555 0142",
|
|
15369
|
+
"aria-label": `Footer link ${i + 1} address`,
|
|
15370
|
+
onChange: (e) => setLinks((ls) => ls.map((l, j) => j === i ? { ...l, url: e.target.value } : l))
|
|
15371
|
+
}
|
|
15372
|
+
),
|
|
15373
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_design_system45.Button, { type: "button", size: "sm", variant: "ghost", onClick: () => setLinks((ls) => ls.filter((_, j) => j !== i)), children: "Remove" })
|
|
15374
|
+
] }, i)
|
|
15375
|
+
)),
|
|
15374
15376
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_design_system45.Button, { type: "button", size: "sm", variant: "outline", onClick: () => setLinks((ls) => [...ls, { label: "", url: "" }]), children: "Add a footer link" }) }),
|
|
15375
15377
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-muted-foreground", children: "A link is a web address (https://), an email (mailto:) or a phone number (tel:)." })
|
|
15376
15378
|
] }),
|
|
15377
15379
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("h4", { className: "mt-1 text-xs font-medium", children: "Forms clients can send" }),
|
|
15378
15380
|
formsError ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(RefusalNotice, { error: formsError }) : null,
|
|
15379
15381
|
formsUnread ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xs text-muted-foreground", children: "The other forms on these tables could not be listed just now; the ones already on the portal are below." }) : null,
|
|
15380
|
-
forms === null ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xs text-muted-foreground", children: "Reading the forms on this portal's tables\u2026" }) : forms.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xs text-muted-foreground", children: "None of the tables this portal shows has a form yet. Make one on a table's Forms tab and it appears here." }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ul", { className: "flex flex-col gap-1", children: forms.map((f, i) =>
|
|
15381
|
-
|
|
15382
|
-
|
|
15383
|
-
|
|
15384
|
-
|
|
15385
|
-
|
|
15386
|
-
|
|
15387
|
-
|
|
15388
|
-
|
|
15389
|
-
|
|
15390
|
-
|
|
15391
|
-
|
|
15392
|
-
|
|
15393
|
-
|
|
15394
|
-
|
|
15382
|
+
forms === null ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xs text-muted-foreground", children: "Reading the forms on this portal's tables\u2026" }) : forms.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "text-xs text-muted-foreground", children: "None of the tables this portal shows has a form yet. Make one on a table's Forms tab and it appears here." }) : /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("ul", { className: "flex flex-col gap-1", children: forms.map((f, i) => (
|
|
15383
|
+
// Two rows: the form's whole name first (at 390 a one-row layout truncated every title
|
|
15384
|
+
// to "Re…"/"Up…"), then its button words and its order.
|
|
15385
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("li", { className: "flex flex-col gap-1 rounded border border-border px-2 py-1.5 text-xs", children: [
|
|
15386
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("label", { className: "flex items-start gap-1.5", children: [
|
|
15387
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
15388
|
+
"input",
|
|
15389
|
+
{
|
|
15390
|
+
className: "mt-0.5",
|
|
15391
|
+
type: "checkbox",
|
|
15392
|
+
checked: f.on,
|
|
15393
|
+
"aria-label": `Offer ${f.title} on the portal`,
|
|
15394
|
+
onChange: (e) => setForms((rows) => rows?.map((r) => r.form_id === f.form_id ? { ...r, on: e.target.checked } : r) ?? rows)
|
|
15395
|
+
}
|
|
15396
|
+
),
|
|
15397
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { className: "min-w-0 flex-1", children: [
|
|
15398
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "font-medium", children: f.title }),
|
|
15399
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { className: "text-muted-foreground", children: [
|
|
15400
|
+
" \xB7 answers go to ",
|
|
15401
|
+
f.table
|
|
15402
|
+
] })
|
|
15403
|
+
] })
|
|
15404
|
+
] }),
|
|
15405
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex items-center gap-1.5 pl-5", children: [
|
|
15406
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
15407
|
+
import_design_system45.BasicInput,
|
|
15408
|
+
{
|
|
15409
|
+
className: "h-7 min-w-0 flex-1",
|
|
15410
|
+
value: f.label,
|
|
15411
|
+
placeholder: "Button words (optional)",
|
|
15412
|
+
"aria-label": `What the portal calls ${f.title}`,
|
|
15413
|
+
onChange: (e) => setForms((rows) => rows?.map((r) => r.form_id === f.form_id ? { ...r, label: e.target.value } : r) ?? rows)
|
|
15414
|
+
}
|
|
15415
|
+
),
|
|
15416
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_design_system45.Button, { type: "button", size: "sm", variant: "ghost", "aria-label": `Move ${f.title} up`, disabled: i === 0, onClick: () => move(i, -1), children: "Up" }),
|
|
15417
|
+
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
15418
|
+
import_design_system45.Button,
|
|
15419
|
+
{
|
|
15420
|
+
type: "button",
|
|
15421
|
+
size: "sm",
|
|
15422
|
+
variant: "ghost",
|
|
15423
|
+
"aria-label": `Move ${f.title} down`,
|
|
15424
|
+
disabled: i === forms.length - 1,
|
|
15425
|
+
onClick: () => move(i, 1),
|
|
15426
|
+
children: "Down"
|
|
15427
|
+
}
|
|
15428
|
+
)
|
|
15395
15429
|
] })
|
|
15396
|
-
] })
|
|
15397
|
-
|
|
15398
|
-
import_design_system45.BasicInput,
|
|
15399
|
-
{
|
|
15400
|
-
className: "h-7 w-40",
|
|
15401
|
-
value: f.label,
|
|
15402
|
-
placeholder: "Button words (optional)",
|
|
15403
|
-
"aria-label": `What the portal calls ${f.title}`,
|
|
15404
|
-
onChange: (e) => setForms((rows) => rows?.map((r) => r.form_id === f.form_id ? { ...r, label: e.target.value } : r) ?? rows)
|
|
15405
|
-
}
|
|
15406
|
-
),
|
|
15407
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_design_system45.Button, { type: "button", size: "sm", variant: "ghost", "aria-label": `Move ${f.title} up`, disabled: i === 0, onClick: () => move(i, -1), children: "Up" }),
|
|
15408
|
-
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
|
|
15409
|
-
import_design_system45.Button,
|
|
15410
|
-
{
|
|
15411
|
-
type: "button",
|
|
15412
|
-
size: "sm",
|
|
15413
|
-
variant: "ghost",
|
|
15414
|
-
"aria-label": `Move ${f.title} down`,
|
|
15415
|
-
disabled: i === forms.length - 1,
|
|
15416
|
-
onClick: () => move(i, 1),
|
|
15417
|
-
children: "Down"
|
|
15418
|
-
}
|
|
15419
|
-
)
|
|
15420
|
-
] }, f.form_id)) }),
|
|
15430
|
+
] }, f.form_id)
|
|
15431
|
+
)) }),
|
|
15421
15432
|
error ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(RefusalNotice, { error }) : null,
|
|
15422
15433
|
said ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("p", { className: "text-xs text-muted-foreground", "aria-live": "polite", children: said }) : null,
|
|
15423
15434
|
/* @__PURE__ */ (0, import_jsx_runtime50.jsx)("div", { children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_design_system45.Button, { type: "button", size: "sm", onClick: () => void save(), disabled: busy, children: busy ? "Saving\u2026" : "Save the look and forms" }) })
|
|
@@ -15564,7 +15575,7 @@ function PortalsPanel({ tableId, activePortalId, className }) {
|
|
|
15564
15575
|
] }) : null,
|
|
15565
15576
|
activePortalId && !shown3.some((p) => p.portal_id === activePortalId) ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "rounded-md border border-amber-600/40 bg-amber-500/5 px-3 py-2 text-xs leading-relaxed text-amber-700 dark:border-amber-400/40 dark:text-amber-300", children: PORTAL_NOT_HERE_LINE }) : null,
|
|
15566
15577
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("ul", { className: "flex flex-col gap-2", children: shown3.map((portal) => {
|
|
15567
|
-
const url = `${origin}${(0,
|
|
15578
|
+
const url = `${origin}${(0, import_records17.portalPath)(portal.slug)}`;
|
|
15568
15579
|
const open = openId === portal.portal_id;
|
|
15569
15580
|
const linked = portal.portal_id === activePortalId;
|
|
15570
15581
|
return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
|
|
@@ -15679,8 +15690,8 @@ function ArchivePortalControl({
|
|
|
15679
15690
|
}
|
|
15680
15691
|
),
|
|
15681
15692
|
asking ? /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "mt-1.5 flex w-full flex-col gap-1.5 rounded-md border border-dashed border-border p-2.5", children: [
|
|
15682
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "text-xs text-muted-foreground", "data-testid": "portal-archive-consequence", children: (0,
|
|
15683
|
-
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "text-xs text-muted-foreground", children: (0,
|
|
15693
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "text-xs text-muted-foreground", "data-testid": "portal-archive-consequence", children: (0, import_records17.portalArchiveConsequence)(portal.title, portal.signed_in, portal.invited) }),
|
|
15694
|
+
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "text-xs text-muted-foreground", children: (0, import_records17.portalConfirmLine)(portal.title) }),
|
|
15684
15695
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsxs)("div", { className: "flex flex-wrap items-center gap-1.5", children: [
|
|
15685
15696
|
/* @__PURE__ */ (0, import_jsx_runtime51.jsx)(
|
|
15686
15697
|
import_design_system46.BasicInput,
|
|
@@ -15698,7 +15709,7 @@ function ArchivePortalControl({
|
|
|
15698
15709
|
size: "sm",
|
|
15699
15710
|
variant: "destructive",
|
|
15700
15711
|
"data-testid": "portal-archive-do",
|
|
15701
|
-
disabled: busy || !(0,
|
|
15712
|
+
disabled: busy || !(0, import_records17.portalTitleTypedBack)(typed, portal.title),
|
|
15702
15713
|
onClick: () => void go(),
|
|
15703
15714
|
children: busy ? "Archiving\u2026" : "Archive it"
|
|
15704
15715
|
}
|
|
@@ -16857,7 +16868,7 @@ function usePublishGate() {
|
|
|
16857
16868
|
}
|
|
16858
16869
|
|
|
16859
16870
|
// src/FormBuilder.tsx
|
|
16860
|
-
var
|
|
16871
|
+
var import_records18 = require("@ai-matrx/records");
|
|
16861
16872
|
var import_design_system52 = require("@ai-matrx/design-system");
|
|
16862
16873
|
|
|
16863
16874
|
// src/FormRunner.tsx
|
|
@@ -17722,7 +17733,7 @@ function FormBuilder({ tableId, seed, activeFormId, onActiveForm, className }) {
|
|
|
17722
17733
|
/* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
|
|
17723
17734
|
PublishRow,
|
|
17724
17735
|
{
|
|
17725
|
-
url: `${publicOrigin}${(0,
|
|
17736
|
+
url: `${publicOrigin}${(0, import_records18.publicFormPath)(draft.id)}`,
|
|
17726
17737
|
state: draft.state,
|
|
17727
17738
|
mayPublish: rights.structure && !publishGate.blocked,
|
|
17728
17739
|
why: publishGate.why ?? rights.why("structure"),
|
|
@@ -18740,7 +18751,7 @@ function SignBlock({ tableId, recordId, render, className }) {
|
|
|
18740
18751
|
// src/ChartBlock.tsx
|
|
18741
18752
|
var import_react117 = require("react");
|
|
18742
18753
|
var import_recharts = require("recharts");
|
|
18743
|
-
var
|
|
18754
|
+
var import_records19 = require("@ai-matrx/records");
|
|
18744
18755
|
var import_core8 = require("@ai-matrx/records/core");
|
|
18745
18756
|
var import_design_system57 = require("@ai-matrx/design-system");
|
|
18746
18757
|
var import_jsx_runtime62 = require("react/jsx-runtime");
|
|
@@ -18811,7 +18822,7 @@ function ChartBlock({ block, subject, className }) {
|
|
|
18811
18822
|
const kind = block.kind;
|
|
18812
18823
|
const tableId = block.table_id ?? subject;
|
|
18813
18824
|
const measures = block.measures && block.measures.length > 0 ? block.measures : [{ op: "count" }];
|
|
18814
|
-
const primary = (0,
|
|
18825
|
+
const primary = (0, import_records19.measureKey)(measures[0]);
|
|
18815
18826
|
const windows = kind === "stuck" ? null : block.compare ?? null;
|
|
18816
18827
|
const compared = !!windows;
|
|
18817
18828
|
const grain = block.bucket?.by ?? null;
|
|
@@ -19737,7 +19748,7 @@ function TargetControl({
|
|
|
19737
19748
|
// src/FormsPanel.tsx
|
|
19738
19749
|
var import_react120 = require("react");
|
|
19739
19750
|
var import_react121 = require("@ai-matrx/records/react");
|
|
19740
|
-
var
|
|
19751
|
+
var import_records20 = require("@ai-matrx/records");
|
|
19741
19752
|
var import_design_system59 = require("@ai-matrx/design-system");
|
|
19742
19753
|
var import_jsx_runtime64 = require("react/jsx-runtime");
|
|
19743
19754
|
var FORM_NOT_HERE_LINE = "The link named a form this table does not have \u2014 it may have been removed, or it belongs to another table. The forms this table does have are listed here.";
|
|
@@ -19841,7 +19852,7 @@ function FormsPanel({ tableId, activeFormId, className }) {
|
|
|
19841
19852
|
}
|
|
19842
19853
|
) : null,
|
|
19843
19854
|
/* @__PURE__ */ (0, import_jsx_runtime64.jsx)("ul", { className: "flex flex-col gap-2", children: forms.map((form) => {
|
|
19844
|
-
const url = `${origin}${(0,
|
|
19855
|
+
const url = `${origin}${(0, import_records20.publicFormPath)(form.form_id)}`;
|
|
19845
19856
|
return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(
|
|
19846
19857
|
"li",
|
|
19847
19858
|
{
|
|
@@ -19906,7 +19917,7 @@ function FormsPanel({ tableId, activeFormId, className }) {
|
|
|
19906
19917
|
// src/BookingBuilder.tsx
|
|
19907
19918
|
var import_react122 = require("react");
|
|
19908
19919
|
var import_react123 = require("@ai-matrx/records/react");
|
|
19909
|
-
var
|
|
19920
|
+
var import_records21 = require("@ai-matrx/records");
|
|
19910
19921
|
var import_design_system60 = require("@ai-matrx/design-system");
|
|
19911
19922
|
var import_jsx_runtime65 = require("react/jsx-runtime");
|
|
19912
19923
|
var STORE_ANSWERS_THESE = ["slot", "status", "booked_with"];
|
|
@@ -20050,7 +20061,7 @@ function BookingBuilder({ tableId, bookingId, onSaved, onClose, className }) {
|
|
|
20050
20061
|
if (!rights.structure) {
|
|
20051
20062
|
return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)("p", { className: (0, import_design_system60.cn)("text-xs text-muted-foreground", className), children: rights.why("structure") ?? "Making a booking page needs the admin level on this table, because it lets people with no account take time in your calendar." });
|
|
20052
20063
|
}
|
|
20053
|
-
const url = formId ? `${publicOrigin}${(0,
|
|
20064
|
+
const url = formId ? `${publicOrigin}${(0, import_records21.bookingPath)(formId)}` : null;
|
|
20054
20065
|
const shown3 = offer ?? null;
|
|
20055
20066
|
return (
|
|
20056
20067
|
// THE RAIL IS 384px WIDE AND THE VIEWPORT IS NOT (walk 1, 2026-09-21):
|
|
@@ -20252,7 +20263,7 @@ function BookingBuilder({ tableId, bookingId, onSaved, onClose, className }) {
|
|
|
20252
20263
|
// src/BookingSlots.tsx
|
|
20253
20264
|
var import_react124 = require("react");
|
|
20254
20265
|
var import_react125 = require("@ai-matrx/records/react");
|
|
20255
|
-
var
|
|
20266
|
+
var import_records22 = require("@ai-matrx/records");
|
|
20256
20267
|
var import_design_system61 = require("@ai-matrx/design-system");
|
|
20257
20268
|
var import_jsx_runtime66 = require("react/jsx-runtime");
|
|
20258
20269
|
var BOOKING_NOT_HERE_LINE = "The link named a booking page this table does not have \u2014 it may have been closed for good, or it writes into another table. The booking pages this table does have are listed here.";
|
|
@@ -20369,7 +20380,7 @@ function BookingSlots({ tableId, activeBookingId, className }) {
|
|
|
20369
20380
|
" Open the table the appointments should land in to make one."
|
|
20370
20381
|
] }) : null,
|
|
20371
20382
|
/* @__PURE__ */ (0, import_jsx_runtime66.jsx)("ul", { className: "flex flex-col gap-2", children: pages.map((page) => {
|
|
20372
|
-
const url = `${origin}${(0,
|
|
20383
|
+
const url = `${origin}${(0, import_records22.bookingPath)(page.form_id)}`;
|
|
20373
20384
|
const mayOpen = levels.data?.[page.table_id] === "admin";
|
|
20374
20385
|
const open = page.published_at !== null && page.closed_at === null;
|
|
20375
20386
|
return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
|
|
@@ -20471,7 +20482,7 @@ var import_design_system63 = require("@ai-matrx/design-system");
|
|
|
20471
20482
|
|
|
20472
20483
|
// src/CaptureRun.tsx
|
|
20473
20484
|
var import_react126 = require("react");
|
|
20474
|
-
var
|
|
20485
|
+
var import_records23 = require("@ai-matrx/records");
|
|
20475
20486
|
var import_react127 = require("@ai-matrx/records/react");
|
|
20476
20487
|
var import_design_system62 = require("@ai-matrx/design-system");
|
|
20477
20488
|
var import_jsx_runtime67 = require("react/jsx-runtime");
|
|
@@ -20526,7 +20537,7 @@ function CaptureRun({ sheetId, face: given, className }) {
|
|
|
20526
20537
|
const [sending, setSending] = (0, import_react126.useState)(false);
|
|
20527
20538
|
const queueRef = (0, import_react126.useRef)(null);
|
|
20528
20539
|
(0, import_react126.useEffect)(() => {
|
|
20529
|
-
const q2 = (0,
|
|
20540
|
+
const q2 = (0, import_records23.openCaptureQueue)({
|
|
20530
20541
|
onChange: (c, all) => {
|
|
20531
20542
|
setCounts(c);
|
|
20532
20543
|
setItems(all);
|
|
@@ -20793,7 +20804,7 @@ function CaptureRun({ sheetId, face: given, className }) {
|
|
|
20793
20804
|
value: String(answers[q.field] ?? ""),
|
|
20794
20805
|
onChange: (e) => {
|
|
20795
20806
|
const raw = e.target.value;
|
|
20796
|
-
const answered2 = field ? (0,
|
|
20807
|
+
const answered2 = field ? (0, import_records23.coerceTypedAnswer)(field, raw, { label: q.ask ?? (0, import_records23.coercionLabel)(field) }) : { value: raw };
|
|
20797
20808
|
setAnswers((held) => ({
|
|
20798
20809
|
...held,
|
|
20799
20810
|
[q.field]: raw === "" ? "" : "refusal" in answered2 ? raw : answered2.value
|
|
@@ -21450,7 +21461,7 @@ function recordsDataSource(client, fallbackSchema = "custom") {
|
|
|
21450
21461
|
var import_react142 = require("react");
|
|
21451
21462
|
var import_react143 = require("@ai-matrx/records/react");
|
|
21452
21463
|
var import_core10 = require("@ai-matrx/records/core");
|
|
21453
|
-
var
|
|
21464
|
+
var import_records25 = require("@ai-matrx/records");
|
|
21454
21465
|
var import_design_system69 = require("@ai-matrx/design-system");
|
|
21455
21466
|
|
|
21456
21467
|
// src/ExampleTables.tsx
|
|
@@ -21548,7 +21559,7 @@ var import_core9 = require("@ai-matrx/records/core");
|
|
|
21548
21559
|
|
|
21549
21560
|
// src/WhereItLives.tsx
|
|
21550
21561
|
var import_react140 = require("react");
|
|
21551
|
-
var
|
|
21562
|
+
var import_records24 = require("@ai-matrx/records");
|
|
21552
21563
|
var import_react141 = require("@ai-matrx/records/react");
|
|
21553
21564
|
var import_design_system68 = require("@ai-matrx/design-system");
|
|
21554
21565
|
var import_jsx_runtime74 = require("react/jsx-runtime");
|
|
@@ -21674,7 +21685,7 @@ function WhereItLives({ tableId, knownOrganizationName, onMoved, variant = "head
|
|
|
21674
21685
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(SharedNameAddress, { to: choosing, all: answer.home.destinations }),
|
|
21675
21686
|
"?"
|
|
21676
21687
|
] }),
|
|
21677
|
-
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "text-muted-foreground", children: (0,
|
|
21688
|
+
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { className: "text-muted-foreground", children: (0, import_records24.moveConsequence)(answer.home, choosing) }),
|
|
21678
21689
|
said?.tone === "refused" ? /* @__PURE__ */ (0, import_jsx_runtime74.jsx)("p", { "data-where-it-lives-said": "refused", role: "alert", className: "text-destructive", children: said.text }) : null,
|
|
21679
21690
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsxs)("div", { className: "flex gap-2", children: [
|
|
21680
21691
|
/* @__PURE__ */ (0, import_jsx_runtime74.jsx)(import_design_system68.Button, { size: "sm", className: "h-7 text-xs", disabled: moving, onClick: () => void move(choosing), children: moving ? `Moving to ${choosing.name}\u2026` : said?.tone === "refused" ? "Try again" : "Move it" }),
|
|
@@ -21813,7 +21824,7 @@ function TablesHome({ onOpenTable, organizationName, makingOnly = false, classNa
|
|
|
21813
21824
|
alive = false;
|
|
21814
21825
|
};
|
|
21815
21826
|
}, [client]);
|
|
21816
|
-
const listed = facts.phase === "read" ? (0,
|
|
21827
|
+
const listed = facts.phase === "read" ? (0, import_records25.withTablePlacement)(
|
|
21817
21828
|
(0, import_core10.withTableFacts)(tables.data ?? [], facts.rows, me),
|
|
21818
21829
|
facts.rows
|
|
21819
21830
|
) : tables.data ?? [];
|
|
@@ -22018,7 +22029,7 @@ function TablesHome({ onOpenTable, organizationName, makingOnly = false, classNa
|
|
|
22018
22029
|
|
|
22019
22030
|
// src/TablePage.tsx
|
|
22020
22031
|
var import_react146 = require("react");
|
|
22021
|
-
var
|
|
22032
|
+
var import_records26 = require("@ai-matrx/records");
|
|
22022
22033
|
var import_react147 = require("@ai-matrx/records/react");
|
|
22023
22034
|
var import_design_system71 = require("@ai-matrx/design-system");
|
|
22024
22035
|
|
|
@@ -22220,7 +22231,7 @@ function TableNotHere({
|
|
|
22220
22231
|
return /* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: (0, import_design_system71.cn)("flex flex-col items-start gap-2 rounded-md border border-dashed p-6", className), children: [
|
|
22221
22232
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("p", { className: "text-sm font-medium", children: "This table is archived" }),
|
|
22222
22233
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("p", { className: "max-w-prose text-xs text-muted-foreground", children: TABLE_IS_ARCHIVED }),
|
|
22223
|
-
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("p", { className: "text-xs text-muted-foreground", children: (0,
|
|
22234
|
+
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)("p", { className: "text-xs text-muted-foreground", children: (0, import_records26.archivedByLine)(row) }),
|
|
22224
22235
|
refusal2 ? /* @__PURE__ */ (0, import_jsx_runtime77.jsx)(RefusalNotice, { error: refusal2 }) : null,
|
|
22225
22236
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsxs)("div", { className: "flex gap-2", children: [
|
|
22226
22237
|
/* @__PURE__ */ (0, import_jsx_runtime77.jsx)(
|