@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/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 import_records9 = require("@ai-matrx/records");
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, filtered } = args;
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 = filtered ? DOOR_PAGE_MAX : Math.max(1, Math.min(pageSize, DOOR_PAGE_MAX));
5479
- const offset = filtered ? 0 : page * pageSize;
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(result.ok ? { key, rows: result.data ?? [], error: null } : { key, rows: [], error: result.error });
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
- if (!filtered) return answer.rows.map(({ position: _p, ...row }) => row);
5496
- const positions = /* @__PURE__ */ new Map();
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
- filtered: Boolean(filter),
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, import_records9.asPermissionLevel)(row.level)
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 import_records10 = require("@ai-matrx/records");
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 = import_records10.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();
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 import_records11 = require("@ai-matrx/records");
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 = import_records11.FIELD_SENSITIVITIES.map((value) => ({ value, label: FIELD_SENSITIVITY_LABEL[value] }));
7981
- var AGENT_VISIBILITY = import_records11.CONTEXT_POLICIES.map((value) => ({ value, label: CONTEXT_POLICY_LABEL[value] }));
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 import_records13 = require("@ai-matrx/records");
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 import_records12 = require("@ai-matrx/records");
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, import_records12.stableFilterKey)(filter);
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, import_records13.stableFilterKey)(filter ?? null);
11521
- const fromView = asked !== "{}" && (asked === (0, import_records13.stableFilterKey)(view.where ?? null) || asked === (0, import_records13.stableFilterKey)(view.filters ?? null));
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
- filtered: Boolean(filter),
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 import_records14 = require("@ai-matrx/records");
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, import_records14.archivedByLine)(row)}`;
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 ?? import_records14.DEFAULT_ARCHIVE_LANE);
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: import_records14.ARCHIVE_LANES.map((option) => /* @__PURE__ */ (0, import_jsx_runtime39.jsx)(
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: import_records14.ARCHIVE_LANE_MEANS[option],
12154
+ title: import_records15.ARCHIVE_LANE_MEANS[option],
12159
12155
  onClick: () => pick(option),
12160
- children: import_records14.ARCHIVE_LANE_LABEL[option]
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, import_records14.emptyArchiveLine)(lane) }) : null,
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, import_records14.archivedByLine)(row) }),
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 import_records15 = require("@ai-matrx/records");
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, import_records15.emptyPortalArchiveLine)() }) : null,
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, import_records15.portalTitleTypedBack)(typed, portal.title);
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, import_records15.portalConfirmLine)(portal.title),
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 import_records16 = require("@ai-matrx/records");
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) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("div", { className: "flex gap-1.5", children: [
15354
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
15355
- import_design_system45.BasicInput,
15356
- {
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
- value: link.url,
15367
- placeholder: "tel:+1 805 555 0142",
15368
- "aria-label": `Footer link ${i + 1} address`,
15369
- onChange: (e) => setLinks((ls) => ls.map((l, j) => j === i ? { ...l, url: e.target.value } : l))
15370
- }
15371
- ),
15372
- /* @__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" })
15373
- ] }, i)),
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) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("li", { className: "flex flex-wrap items-center gap-1.5 rounded border border-border px-2 py-1 text-xs", children: [
15381
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
15382
- "input",
15383
- {
15384
- type: "checkbox",
15385
- checked: f.on,
15386
- "aria-label": `Offer ${f.title} on the portal`,
15387
- onChange: (e) => setForms((rows) => rows?.map((r) => r.form_id === f.form_id ? { ...r, on: e.target.checked } : r) ?? rows)
15388
- }
15389
- ),
15390
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { className: "min-w-0 flex-1 truncate", children: [
15391
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)("span", { className: "font-medium", children: f.title }),
15392
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)("span", { className: "text-muted-foreground", children: [
15393
- " \xB7 answers go to ",
15394
- f.table
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
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
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, import_records16.portalPath)(portal.slug)}`;
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, import_records16.portalArchiveConsequence)(portal.title, portal.signed_in, portal.invited) }),
15683
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)("p", { className: "text-xs text-muted-foreground", children: (0, import_records16.portalConfirmLine)(portal.title) }),
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, import_records16.portalTitleTypedBack)(typed, portal.title),
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 import_records17 = require("@ai-matrx/records");
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, import_records17.publicFormPath)(draft.id)}`,
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 import_records18 = require("@ai-matrx/records");
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, import_records18.measureKey)(measures[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 import_records19 = require("@ai-matrx/records");
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, import_records19.publicFormPath)(form.form_id)}`;
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 import_records20 = require("@ai-matrx/records");
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, import_records20.bookingPath)(formId)}` : null;
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 import_records21 = require("@ai-matrx/records");
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, import_records21.bookingPath)(page.form_id)}`;
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 import_records22 = require("@ai-matrx/records");
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, import_records22.openCaptureQueue)({
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, import_records22.coerceTypedAnswer)(field, raw, { label: q.ask ?? (0, import_records22.coercionLabel)(field) }) : { value: raw };
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 import_records24 = require("@ai-matrx/records");
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 import_records23 = require("@ai-matrx/records");
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, import_records23.moveConsequence)(answer.home, choosing) }),
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, import_records24.withTablePlacement)(
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 import_records25 = require("@ai-matrx/records");
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, import_records25.archivedByLine)(row) }),
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)(