@ai-matrx/records-ui 0.93.0 → 0.93.3

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.d.cts CHANGED
@@ -559,8 +559,12 @@ interface HostLayout {
559
559
  toolbarSlot?: HTMLElement | null | undefined;
560
560
  }) => ReactNode;
561
561
  }
562
- /** The authored-text slots `renderText` is asked to draw. */
563
- type RenderTextSlot = "form-intro" | "form-help" | "form-thank-you";
562
+ /**
563
+ * The authored-text slots `renderText` is asked to draw. `cell`: a long-text cell of the merged
564
+ * grid and the whole-text dialog's preview — the host may return block content there (the grid
565
+ * clips it to the row); the form slots take phrasing content only.
566
+ */
567
+ type RenderTextSlot = "form-intro" | "form-help" | "form-thank-you" | "cell";
564
568
 
565
569
  interface RecordsUiHost {
566
570
  /**
@@ -666,6 +670,21 @@ interface RecordsUiHost {
666
670
  ok: false;
667
671
  reason: string;
668
672
  }>;
673
+ /**
674
+ * OPTIONAL. THE HOST'S OWN FILE WINDOW (one-grid merge, inventory: the older grid's
675
+ * AttachmentInput). An attachment cell adds files the person already holds through the host's
676
+ * file picker — Airtable's "Attach" over your own files — rather than a second browser this
677
+ * package would invent. `multiple`: the column holds several files; `accept`: the native
678
+ * `accept` list, when the column restricts types. Resolves the host's file ids (the store turns
679
+ * each into its kernel File record at the write door), or `null` when the person cancelled.
680
+ *
681
+ * Unbound, the editor offers `upload` alone; with neither bound it says no file store is bound
682
+ * (`NO_UPLOAD_REASON`) — never a dead button.
683
+ */
684
+ pickFiles?: (ask: {
685
+ multiple: boolean;
686
+ accept?: string;
687
+ }) => Promise<Uuid$1[] | null>;
669
688
  /**
670
689
  * Where this app serves its PUBLIC pages from, when that is not the origin
671
690
  * the screen is running on. A form's link is built here, so an owner copying
@@ -1306,6 +1325,13 @@ interface GridEditing {
1306
1325
  rowError: RecordsError | null;
1307
1326
  clearRowError: () => void;
1308
1327
  busy: boolean;
1328
+ /**
1329
+ * EVERYTHING THIS SESSION HOLDS THAT CHANGES HOW ONE ROW DRAWS (lane RENDER-AUDIT, 2026-09-26):
1330
+ * the open cell and what is typed in it, an optimistic value, a save in flight, a refusal. The
1331
+ * grid hands it to the data table as `rowVersion`, so a keystroke, a save or a refusal redraws
1332
+ * the ONE row it belongs to and no other.
1333
+ */
1334
+ rowSignature: (rowId: Uuid$1) => readonly unknown[];
1309
1335
  }
1310
1336
  interface Options {
1311
1337
  tableId: Uuid$1;
@@ -2443,7 +2469,7 @@ declare function ProvenanceBadge({ document, fieldKey }: {
2443
2469
  * export, a chat line) keeps calling `renderValue` with no resolver and says
2444
2470
  * "Loading…" rather than printing an id.
2445
2471
  */
2446
- declare function RecordValue({ field, value, document, format, withheld, }: {
2472
+ declare function RecordValue({ field, value, document, format, withheld, inCell, }: {
2447
2473
  field: Field;
2448
2474
  value: unknown;
2449
2475
  document?: RecordDocument | undefined;
@@ -2466,6 +2492,12 @@ declare function RecordValue({ field, value, document, format, withheld, }: {
2466
2492
  * means the cell is empty (`withheld.tsx`).
2467
2493
  */
2468
2494
  withheld?: HiddenFieldNotice | null | undefined;
2495
+ /**
2496
+ * Drawn in a GRID CELL. In the merged grid a long-text cell reads through the host's text
2497
+ * renderer (`RecordsUiHost.renderText`, slot `cell` — markdown, formatted), clipped to the row;
2498
+ * unbound, the words as written.
2499
+ */
2500
+ inCell?: boolean | undefined;
2469
2501
  }): react.JSX.Element;
2470
2502
  /**
2471
2503
  * WHAT ONE CARD SAYS — the kanban's, the calendar's, the gallery's and the pipeline's alike, so
@@ -4029,11 +4061,6 @@ interface RecordsMountProps {
4029
4061
  children: ReactNode;
4030
4062
  }
4031
4063
  declare function RecordsMount({ config, host, letTheStoreDecideRights, children, }: RecordsMountProps): react.JSX.Element;
4032
- /**
4033
- * The actor a signed-in person is. `user` is the store's own word (the closed
4034
- * ACTOR_VOCABULARY is `user` · `agent` · `system`), and AGT-N-4 means an agent
4035
- * acting for this person carries exactly this authority and no other.
4036
- */
4037
4064
  declare function personActor(userId: Uuid$1 | null | undefined): RecordsActor;
4038
4065
  /**
4039
4066
  * A supabase-js client AS this package's data seam.
package/dist/index.d.ts CHANGED
@@ -559,8 +559,12 @@ interface HostLayout {
559
559
  toolbarSlot?: HTMLElement | null | undefined;
560
560
  }) => ReactNode;
561
561
  }
562
- /** The authored-text slots `renderText` is asked to draw. */
563
- type RenderTextSlot = "form-intro" | "form-help" | "form-thank-you";
562
+ /**
563
+ * The authored-text slots `renderText` is asked to draw. `cell`: a long-text cell of the merged
564
+ * grid and the whole-text dialog's preview — the host may return block content there (the grid
565
+ * clips it to the row); the form slots take phrasing content only.
566
+ */
567
+ type RenderTextSlot = "form-intro" | "form-help" | "form-thank-you" | "cell";
564
568
 
565
569
  interface RecordsUiHost {
566
570
  /**
@@ -666,6 +670,21 @@ interface RecordsUiHost {
666
670
  ok: false;
667
671
  reason: string;
668
672
  }>;
673
+ /**
674
+ * OPTIONAL. THE HOST'S OWN FILE WINDOW (one-grid merge, inventory: the older grid's
675
+ * AttachmentInput). An attachment cell adds files the person already holds through the host's
676
+ * file picker — Airtable's "Attach" over your own files — rather than a second browser this
677
+ * package would invent. `multiple`: the column holds several files; `accept`: the native
678
+ * `accept` list, when the column restricts types. Resolves the host's file ids (the store turns
679
+ * each into its kernel File record at the write door), or `null` when the person cancelled.
680
+ *
681
+ * Unbound, the editor offers `upload` alone; with neither bound it says no file store is bound
682
+ * (`NO_UPLOAD_REASON`) — never a dead button.
683
+ */
684
+ pickFiles?: (ask: {
685
+ multiple: boolean;
686
+ accept?: string;
687
+ }) => Promise<Uuid$1[] | null>;
669
688
  /**
670
689
  * Where this app serves its PUBLIC pages from, when that is not the origin
671
690
  * the screen is running on. A form's link is built here, so an owner copying
@@ -1306,6 +1325,13 @@ interface GridEditing {
1306
1325
  rowError: RecordsError | null;
1307
1326
  clearRowError: () => void;
1308
1327
  busy: boolean;
1328
+ /**
1329
+ * EVERYTHING THIS SESSION HOLDS THAT CHANGES HOW ONE ROW DRAWS (lane RENDER-AUDIT, 2026-09-26):
1330
+ * the open cell and what is typed in it, an optimistic value, a save in flight, a refusal. The
1331
+ * grid hands it to the data table as `rowVersion`, so a keystroke, a save or a refusal redraws
1332
+ * the ONE row it belongs to and no other.
1333
+ */
1334
+ rowSignature: (rowId: Uuid$1) => readonly unknown[];
1309
1335
  }
1310
1336
  interface Options {
1311
1337
  tableId: Uuid$1;
@@ -2443,7 +2469,7 @@ declare function ProvenanceBadge({ document, fieldKey }: {
2443
2469
  * export, a chat line) keeps calling `renderValue` with no resolver and says
2444
2470
  * "Loading…" rather than printing an id.
2445
2471
  */
2446
- declare function RecordValue({ field, value, document, format, withheld, }: {
2472
+ declare function RecordValue({ field, value, document, format, withheld, inCell, }: {
2447
2473
  field: Field;
2448
2474
  value: unknown;
2449
2475
  document?: RecordDocument | undefined;
@@ -2466,6 +2492,12 @@ declare function RecordValue({ field, value, document, format, withheld, }: {
2466
2492
  * means the cell is empty (`withheld.tsx`).
2467
2493
  */
2468
2494
  withheld?: HiddenFieldNotice | null | undefined;
2495
+ /**
2496
+ * Drawn in a GRID CELL. In the merged grid a long-text cell reads through the host's text
2497
+ * renderer (`RecordsUiHost.renderText`, slot `cell` — markdown, formatted), clipped to the row;
2498
+ * unbound, the words as written.
2499
+ */
2500
+ inCell?: boolean | undefined;
2469
2501
  }): react.JSX.Element;
2470
2502
  /**
2471
2503
  * WHAT ONE CARD SAYS — the kanban's, the calendar's, the gallery's and the pipeline's alike, so
@@ -4029,11 +4061,6 @@ interface RecordsMountProps {
4029
4061
  children: ReactNode;
4030
4062
  }
4031
4063
  declare function RecordsMount({ config, host, letTheStoreDecideRights, children, }: RecordsMountProps): react.JSX.Element;
4032
- /**
4033
- * The actor a signed-in person is. `user` is the store's own word (the closed
4034
- * ACTOR_VOCABULARY is `user` · `agent` · `system`), and AGT-N-4 means an agent
4035
- * acting for this person carries exactly this authority and no other.
4036
- */
4037
4064
  declare function personActor(userId: Uuid$1 | null | undefined): RecordsActor;
4038
4065
  /**
4039
4066
  * A supabase-js client AS this package's data seam.