@ai-matrx/records-ui 0.71.0 → 0.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, RecordFilter as RecordFilter$1, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
4
+ import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, DeclarableFieldKind, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, RecordFilter as RecordFilter$1, ArchiveLane, ArchivedRow, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
5
5
  import { Uuid, RecordFilter, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
6
6
  import { RecordsClient } from '@ai-matrx/records/core';
7
7
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -1136,6 +1136,34 @@ interface ExportMenuProps {
1136
1136
  }
1137
1137
  declare function ExportMenu({ tableId, rows, label, className }: ExportMenuProps): react.JSX.Element;
1138
1138
 
1139
+ interface FilePickerProps {
1140
+ /** What the button says when nothing is chosen yet. */
1141
+ label: string;
1142
+ /** The `accept` list, exactly as the native input takes it. */
1143
+ accept?: string | undefined;
1144
+ /**
1145
+ * The accessible name of the file input itself, when it must differ from the
1146
+ * button's word — an import screen's input has been called "Choose a file to
1147
+ * import" since it existed, and every automation and screen-reader script
1148
+ * that knows this screen resolves that sentence. A name is a contract.
1149
+ */
1150
+ inputLabel?: string | undefined;
1151
+ /**
1152
+ * One sentence describing a good file — the thing the bare input never said.
1153
+ * Shown under the control, before anything is chosen.
1154
+ */
1155
+ hint?: ReactNode;
1156
+ disabled?: boolean | undefined;
1157
+ /** The chosen file. Called once per choice; re-choosing calls it again. */
1158
+ onFile: (file: File) => void;
1159
+ /** Forget the chosen file and go back to the empty state. */
1160
+ onClear?: (() => void) | undefined;
1161
+ /** The name of the file currently in play, when the owner is holding one. */
1162
+ chosenName?: string | null | undefined;
1163
+ className?: string | undefined;
1164
+ }
1165
+ declare function FilePicker({ label, accept, inputLabel, hint, disabled, onFile, onClear, chosenName, className, }: FilePickerProps): react.JSX.Element;
1166
+
1139
1167
  interface ImportWizardProps {
1140
1168
  tableId: Uuid;
1141
1169
  onDone?: ((written: number) => void) | undefined;
@@ -1174,8 +1202,25 @@ type PlainFieldType = "text" | "long_text" | "number";
1174
1202
  * directions: it does not appear there, and it cannot hide a real gap there.
1175
1203
  */
1176
1204
  type RelationFieldType = "relation";
1177
- /** What a person picks in the panel: one of the fourteen, one of the three, or a link. */
1178
- type PickableFieldType = ParityFieldType | PlainFieldType | RelationFieldType;
1205
+ /**
1206
+ * What a person picks in the panel — AND IT IS THE STORE'S OWN LIST, not a union
1207
+ * assembled here.
1208
+ *
1209
+ * 🚨 THE CLASS FIX (FIX-10B-F6, VERIFIER-10). This used to read
1210
+ * `ParityFieldType | PlainFieldType | RelationFieldType` — the parity floor plus two words
1211
+ * this file knew about — and that union was the whole defect. `custom.doc_sign` accepts
1212
+ * exactly one field, a text column whose format is `signature`, and it is granted to
1213
+ * `authenticated`; the Documents screen told a person in so many words to go and declare
1214
+ * one; and no list any screen could read named it, so the control did not exist and the
1215
+ * e-sign half of Documents was unreachable from the product. A kind the store takes and no
1216
+ * screen offers is invisible, and nothing failed — which is the only reason it survived.
1217
+ *
1218
+ * `custom.field_kinds()` is now the ONE registry and `DECLARABLE_FIELD_KINDS` is generated
1219
+ * from it, so the next kind the store learns arrives here as a TYPE ERROR in
1220
+ * `FIELD_TYPE_CHOICES`'s coverage and as a red `kindsWithNoChoice()` below — never as a
1221
+ * silence.
1222
+ */
1223
+ type PickableFieldType = DeclarableFieldKind;
1179
1224
  interface FieldTypeChoice {
1180
1225
  id: PickableFieldType;
1181
1226
  /** The word on the menu. */
@@ -1197,6 +1242,16 @@ declare function isPlainFieldType(id: string): id is PlainFieldType;
1197
1242
  * and not an inline string comparison at four call sites.
1198
1243
  */
1199
1244
  declare function isRelationFieldType(id: string): id is RelationFieldType;
1245
+ /**
1246
+ * One of FLD-11's fourteen, which is what `parity_type` on a declaration means.
1247
+ *
1248
+ * Read from the store's own generated floor, never from a list here — because a kind that
1249
+ * is NOT one of the fourteen (plain text, a person-aimed relation, a signature) has to be
1250
+ * declared by its WORD (`type`) and a panel that sent `parity_type` for it would be refused
1251
+ * "There is no field type called …". That is the shape of the F6 defect: the panel's `save`
1252
+ * had exactly two branches, relation and plain, and everything else fell into `parity_type`.
1253
+ */
1254
+ declare function isParityFieldType(id: string): id is ParityFieldType;
1200
1255
  /**
1201
1256
  * THE GUARD THIS FILE NEEDS, because the list it explains is generated.
1202
1257
  *
@@ -1209,6 +1264,22 @@ declare function isRelationFieldType(id: string): id is RelationFieldType;
1209
1264
  * list and a behaviour that carries no parity type is not in it.
1210
1265
  */
1211
1266
  declare function parityTypesWithNoExplanation(): string[];
1267
+ /**
1268
+ * 🚨 THE GUARD THAT CLOSES THE CLASS (FIX-10B-F6).
1269
+ *
1270
+ * `parityTypesWithNoExplanation()` above watches the parity FLOOR, and the floor was never
1271
+ * the whole list: the store also declares plain text, long text, number, a person-aimed
1272
+ * relation and a signature, and for months nothing anywhere compared the panel's menu with
1273
+ * THAT. So `signature` — the one field `custom.doc_sign` accepts, on a door granted to
1274
+ * every signed-in person, named to the person by the Documents screen itself — was absent
1275
+ * from the menu and every check stayed green.
1276
+ *
1277
+ * This returns the kinds `custom.field_kinds()` publishes that this panel does not offer.
1278
+ * The suite asserts it is empty, so a kind the store learns tomorrow either reaches the
1279
+ * person or turns a test red the same day. It is the class, not the instance: it would have
1280
+ * caught `signature`, and it will catch the twentieth kind nobody has thought of yet.
1281
+ */
1282
+ declare function kindsWithNoChoice(): string[];
1212
1283
 
1213
1284
  /** `Day rate` → `day_rate`. Shown, so nothing about it is a surprise. */
1214
1285
  declare function keyFor(label: string): string;
@@ -1772,7 +1843,23 @@ declare const LAYOUT_FIELD_KIND: Record<ViewLayout, "choice" | "date" | null>;
1772
1843
  * dashboard" is one of the ways to look at this table, and a link to it has to
1773
1844
  * work like a link to the board.
1774
1845
  */
1775
- declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards"];
1846
+ /**
1847
+ * 🚨 `archived` IS THE SIXTH VALUE, AND IT IS NOT A SPECIAL CASE EITHER (lane
1848
+ * FIX-10A-ARCHIVE, 2026-09-22; VERIFIER-10 F4).
1849
+ *
1850
+ * Archiving a record used to be a ONE-WAY DOOR: the grid's row action soft-
1851
+ * deletes correctly — `deleted_at` set, version bumped, nothing removed — and
1852
+ * then no screen anywhere in the platform could bring it back. The store's
1853
+ * `custom.record_restore` was there the whole time and did exactly the right
1854
+ * thing; nothing reached it, because every read door answers live rows only.
1855
+ *
1856
+ * So the archive is a WAY OF LOOKING AT THIS TABLE, like the board and the
1857
+ * dashboards, reached by the same row of buttons and named by the same
1858
+ * `?view=` parameter — never a Trash area of the app somebody has to know
1859
+ * exists, and never a per-table screen. Every Table inherits it the moment it
1860
+ * is in this list.
1861
+ */
1862
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards", "archived"];
1776
1863
  type PageView = (typeof PAGE_VIEWS)[number];
1777
1864
  declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1778
1865
  /**
@@ -1841,11 +1928,91 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
1841
1928
  rows: ReadRow$1[];
1842
1929
  loading: boolean;
1843
1930
  error: RecordsError | null;
1844
- /** Where membership came from, in a sentence. A screen that hides this is hiding the view's meaning. */
1931
+ /**
1932
+ * Where membership came from, in a sentence. A screen that hides this is hiding the
1933
+ * view's meaning — and a screen that says the WRONG one is worse than one that says
1934
+ * nothing at all.
1935
+ *
1936
+ * 🚨 IT SAID "holds the whole table" OVER FOUR OF FORTY-TWO ROWS. Seen on Rincon
1937
+ * Plumbing Co's board the moment a dashboard number could narrow it (lane DRILL,
1938
+ * 2026-09-22): the column read "Scheduled 4", every card under it was real, and the
1939
+ * line above them said this view holds the whole table. The sentence was written when
1940
+ * the only two possibilities were a Rule or everything; a question from the address is
1941
+ * a third, and it gets its own words rather than the nearest wrong one.
1942
+ */
1845
1943
  membership: string;
1846
1944
  };
1847
1945
  declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, onMoved, onNewRecordForm, onAskWhoChanged, pageSize, filter, className, }: ViewSwitcherProps): react.JSX.Element;
1848
1946
 
1947
+ /** What the screen says above the list, so nobody has to be told twice that nothing was destroyed. */
1948
+ declare const ARCHIVE_MEANS = "Archiving never destroys anything. A record you remove from the grid waits here until somebody brings it back.";
1949
+ /** The sentence a person who may not restore reads INSTEAD of a control they cannot use. */
1950
+ declare function mayNotRestoreLine(why: string): string;
1951
+ /** What one row in the archive says, as one string — pulled out so the guard can read it. */
1952
+ declare function archivedRowLine(row: ArchivedRow, titleKey?: string | null): string;
1953
+ interface ArchivedViewProps {
1954
+ tableId: Uuid$1;
1955
+ /** Rows per page. The store refuses above its own ceiling by name rather than quietly serving fewer. */
1956
+ pageSize?: number | undefined;
1957
+ /** Which lane the address or the host asked for. Absent, the organization's. */
1958
+ lane?: ArchiveLane | undefined;
1959
+ /** Called when the person switches lane, so the host can put it in the URL. */
1960
+ onLaneChange?: ((lane: ArchiveLane) => void) | undefined;
1961
+ /** Called after a record comes back, so the host re-reads the rows it owns. */
1962
+ onRestored?: ((recordId: Uuid$1) => void) | undefined;
1963
+ className?: string | undefined;
1964
+ }
1965
+ declare function ArchivedView({ tableId, pageSize, lane: laneFromHost, onLaneChange, onRestored, className, }: ArchivedViewProps): react.JSX.Element;
1966
+
1967
+ /** What every archive on this platform promises, said once. */
1968
+ declare const ARCHIVED_NEVER_DESTROYED = "Archiving never destroys anything. What you put away waits here until somebody brings it back.";
1969
+ interface ArchivedDisclosureProps {
1970
+ /** What is archived, in the plural: "portals", "forms". Drawn as “Archived portals”. */
1971
+ noun: string;
1972
+ /**
1973
+ * How many are archived, when the surface already knows. Absent, the control
1974
+ * still draws — a count nobody has read is not a reason to hide the way in,
1975
+ * and a "(0)" the screen guessed would be a lie.
1976
+ */
1977
+ count?: number | undefined;
1978
+ /** Open on first render — the address asked for the archive. */
1979
+ defaultOpen?: boolean | undefined;
1980
+ /** Told when it opens or closes, so a host can put it in the URL. */
1981
+ onOpenChange?: ((open: boolean) => void) | undefined;
1982
+ children: ReactNode;
1983
+ className?: string | undefined;
1984
+ }
1985
+ /**
1986
+ * ONE CLICK, ON THE SURFACE ITSELF. Not a tab, not a page, not a filter buried
1987
+ * in a menu: the law says revealing the archived things is one press where you
1988
+ * already are, and this is that press for every rail in this package.
1989
+ */
1990
+ declare function ArchivedDisclosure({ noun, count, defaultOpen, onOpenChange, children, className, }: ArchivedDisclosureProps): react.JSX.Element;
1991
+ interface ArchivedPortalsProps {
1992
+ /** Called after a portal comes back, so the rail re-reads the list it owns. */
1993
+ onRestored?: ((portalId: Uuid) => void) | undefined;
1994
+ /**
1995
+ * Bumped by the surface above whenever IT changed something that lands here —
1996
+ * archiving a portal from the live rail, most of all. Without it an archive
1997
+ * standing open would keep showing the list it read when it opened, which is
1998
+ * the quiet lie this package refuses everywhere else.
1999
+ */
2000
+ refreshToken?: number | undefined;
2001
+ defaultOpen?: boolean | undefined;
2002
+ className?: string | undefined;
2003
+ }
2004
+ /**
2005
+ * THE ARCHIVED PORTALS OF THIS ORGANIZATION, AND THE WAY BACK.
2006
+ *
2007
+ * It reads `custom.list_portals(org, 'archived')` — the archive-aware reader the
2008
+ * store grew for exactly this — rather than filtering a list `custom.portals`
2009
+ * already hid. It is organization-wide on purpose, unlike the live rail above
2010
+ * it: a portal is archived precisely because nobody is standing on it any more,
2011
+ * and narrowing the archive to the Table you happen to be on is how an archived
2012
+ * portal becomes unreachable from every page at once.
2013
+ */
2014
+ declare function ArchivedPortals({ onRestored, refreshToken, defaultOpen, className, }: ArchivedPortalsProps): react.JSX.Element;
2015
+
1849
2016
  interface ViewBarProps {
1850
2017
  /** The Table whose views these are. */
1851
2018
  tableId: Uuid;
@@ -3003,7 +3170,17 @@ declare const VIEW_NOT_SAVED_YET: string;
3003
3170
  * somewhere else in the product would be a second answer to "how is the work
3004
3171
  * going", reached by knowing where to click.
3005
3172
  */
3006
- type MainView = "records" | "dashboards";
3173
+ /**
3174
+ * 🚨 `archived` IS THE THIRD (lane FIX-10A-ARCHIVE, 2026-09-22; VERIFIER-10 F4).
3175
+ * Archiving a record was a ONE-WAY DOOR — the row left the grid and no screen
3176
+ * anywhere could bring it back, although `custom.record_restore` was there the
3177
+ * whole time — because nothing in this package listed archived rows and no read
3178
+ * door could answer them. It belongs HERE, beside the records and the counts of
3179
+ * them, for exactly the reason the dashboards do: to the person, the archive is
3180
+ * one of the ways to look at this table, not a Trash area of the app somebody
3181
+ * has to know exists.
3182
+ */
3183
+ type MainView = "records" | "dashboards" | "archived";
3007
3184
  /**
3008
3185
  * WHAT THE PAGE IS SHOWING — the middle and the right-hand panel, as ONE answer.
3009
3186
  *
@@ -3259,4 +3436,4 @@ interface PipelineBoardProps {
3259
3436
  }
3260
3437
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
3261
3438
 
3262
- export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
3439
+ export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, archivedRowLine, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, ComponentType, RefObject } from 'react';
3
3
  import * as _ai_matrx_records from '@ai-matrx/records';
4
- import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, RecordFilter as RecordFilter$1, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
4
+ import { PermissionLevel, Table, RecordScopeContext, EnrichCell, RecordsError, Uuid as Uuid$1, AggregateFilter, Field, RecordDocument, ReadRow, RelationDisplay, WriteConflict, DeclarableFieldKind, ParityFieldType, NewFieldDeclaration, RuleExpression, ValueEnvelope, ChecklistRequirementKind, ContextPolicy, WorkDueState, FieldSensitivity, StageRuleOnFail, SubscriptionCadence, WorkInboxKind, FieldKind, RecordFilter as RecordFilter$1, ArchiveLane, ArchivedRow, FormSummary, PortalCard, PortalPrincipal, PortalPreviewRow, DashboardBlockKind, AggregateBucket, AggregateMeasure, DashboardBlock, DashboardSummary, DocTemplateRow, DocRenderRow, QuietHours, DashboardBlockResult, ChecklistRunStep, BookingSummary, CaptureSheetFace, CaptureField, AnonTokenBinding, RecordsConfig, RecordsActor, RecordsDataSource, HistoryActor, FieldHistoryEntry, FieldTypeWord } from '@ai-matrx/records';
5
5
  import { Uuid, RecordFilter, Field as Field$1, ReadRow as ReadRow$1 } from '@ai-matrx/records/react';
6
6
  import { RecordsClient } from '@ai-matrx/records/core';
7
7
  import { FieldFormatConfig } from '@ai-matrx/design-system/field-formats';
@@ -1136,6 +1136,34 @@ interface ExportMenuProps {
1136
1136
  }
1137
1137
  declare function ExportMenu({ tableId, rows, label, className }: ExportMenuProps): react.JSX.Element;
1138
1138
 
1139
+ interface FilePickerProps {
1140
+ /** What the button says when nothing is chosen yet. */
1141
+ label: string;
1142
+ /** The `accept` list, exactly as the native input takes it. */
1143
+ accept?: string | undefined;
1144
+ /**
1145
+ * The accessible name of the file input itself, when it must differ from the
1146
+ * button's word — an import screen's input has been called "Choose a file to
1147
+ * import" since it existed, and every automation and screen-reader script
1148
+ * that knows this screen resolves that sentence. A name is a contract.
1149
+ */
1150
+ inputLabel?: string | undefined;
1151
+ /**
1152
+ * One sentence describing a good file — the thing the bare input never said.
1153
+ * Shown under the control, before anything is chosen.
1154
+ */
1155
+ hint?: ReactNode;
1156
+ disabled?: boolean | undefined;
1157
+ /** The chosen file. Called once per choice; re-choosing calls it again. */
1158
+ onFile: (file: File) => void;
1159
+ /** Forget the chosen file and go back to the empty state. */
1160
+ onClear?: (() => void) | undefined;
1161
+ /** The name of the file currently in play, when the owner is holding one. */
1162
+ chosenName?: string | null | undefined;
1163
+ className?: string | undefined;
1164
+ }
1165
+ declare function FilePicker({ label, accept, inputLabel, hint, disabled, onFile, onClear, chosenName, className, }: FilePickerProps): react.JSX.Element;
1166
+
1139
1167
  interface ImportWizardProps {
1140
1168
  tableId: Uuid;
1141
1169
  onDone?: ((written: number) => void) | undefined;
@@ -1174,8 +1202,25 @@ type PlainFieldType = "text" | "long_text" | "number";
1174
1202
  * directions: it does not appear there, and it cannot hide a real gap there.
1175
1203
  */
1176
1204
  type RelationFieldType = "relation";
1177
- /** What a person picks in the panel: one of the fourteen, one of the three, or a link. */
1178
- type PickableFieldType = ParityFieldType | PlainFieldType | RelationFieldType;
1205
+ /**
1206
+ * What a person picks in the panel — AND IT IS THE STORE'S OWN LIST, not a union
1207
+ * assembled here.
1208
+ *
1209
+ * 🚨 THE CLASS FIX (FIX-10B-F6, VERIFIER-10). This used to read
1210
+ * `ParityFieldType | PlainFieldType | RelationFieldType` — the parity floor plus two words
1211
+ * this file knew about — and that union was the whole defect. `custom.doc_sign` accepts
1212
+ * exactly one field, a text column whose format is `signature`, and it is granted to
1213
+ * `authenticated`; the Documents screen told a person in so many words to go and declare
1214
+ * one; and no list any screen could read named it, so the control did not exist and the
1215
+ * e-sign half of Documents was unreachable from the product. A kind the store takes and no
1216
+ * screen offers is invisible, and nothing failed — which is the only reason it survived.
1217
+ *
1218
+ * `custom.field_kinds()` is now the ONE registry and `DECLARABLE_FIELD_KINDS` is generated
1219
+ * from it, so the next kind the store learns arrives here as a TYPE ERROR in
1220
+ * `FIELD_TYPE_CHOICES`'s coverage and as a red `kindsWithNoChoice()` below — never as a
1221
+ * silence.
1222
+ */
1223
+ type PickableFieldType = DeclarableFieldKind;
1179
1224
  interface FieldTypeChoice {
1180
1225
  id: PickableFieldType;
1181
1226
  /** The word on the menu. */
@@ -1197,6 +1242,16 @@ declare function isPlainFieldType(id: string): id is PlainFieldType;
1197
1242
  * and not an inline string comparison at four call sites.
1198
1243
  */
1199
1244
  declare function isRelationFieldType(id: string): id is RelationFieldType;
1245
+ /**
1246
+ * One of FLD-11's fourteen, which is what `parity_type` on a declaration means.
1247
+ *
1248
+ * Read from the store's own generated floor, never from a list here — because a kind that
1249
+ * is NOT one of the fourteen (plain text, a person-aimed relation, a signature) has to be
1250
+ * declared by its WORD (`type`) and a panel that sent `parity_type` for it would be refused
1251
+ * "There is no field type called …". That is the shape of the F6 defect: the panel's `save`
1252
+ * had exactly two branches, relation and plain, and everything else fell into `parity_type`.
1253
+ */
1254
+ declare function isParityFieldType(id: string): id is ParityFieldType;
1200
1255
  /**
1201
1256
  * THE GUARD THIS FILE NEEDS, because the list it explains is generated.
1202
1257
  *
@@ -1209,6 +1264,22 @@ declare function isRelationFieldType(id: string): id is RelationFieldType;
1209
1264
  * list and a behaviour that carries no parity type is not in it.
1210
1265
  */
1211
1266
  declare function parityTypesWithNoExplanation(): string[];
1267
+ /**
1268
+ * 🚨 THE GUARD THAT CLOSES THE CLASS (FIX-10B-F6).
1269
+ *
1270
+ * `parityTypesWithNoExplanation()` above watches the parity FLOOR, and the floor was never
1271
+ * the whole list: the store also declares plain text, long text, number, a person-aimed
1272
+ * relation and a signature, and for months nothing anywhere compared the panel's menu with
1273
+ * THAT. So `signature` — the one field `custom.doc_sign` accepts, on a door granted to
1274
+ * every signed-in person, named to the person by the Documents screen itself — was absent
1275
+ * from the menu and every check stayed green.
1276
+ *
1277
+ * This returns the kinds `custom.field_kinds()` publishes that this panel does not offer.
1278
+ * The suite asserts it is empty, so a kind the store learns tomorrow either reaches the
1279
+ * person or turns a test red the same day. It is the class, not the instance: it would have
1280
+ * caught `signature`, and it will catch the twentieth kind nobody has thought of yet.
1281
+ */
1282
+ declare function kindsWithNoChoice(): string[];
1212
1283
 
1213
1284
  /** `Day rate` → `day_rate`. Shown, so nothing about it is a surprise. */
1214
1285
  declare function keyFor(label: string): string;
@@ -1772,7 +1843,23 @@ declare const LAYOUT_FIELD_KIND: Record<ViewLayout, "choice" | "date" | null>;
1772
1843
  * dashboard" is one of the ways to look at this table, and a link to it has to
1773
1844
  * work like a link to the board.
1774
1845
  */
1775
- declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards"];
1846
+ /**
1847
+ * 🚨 `archived` IS THE SIXTH VALUE, AND IT IS NOT A SPECIAL CASE EITHER (lane
1848
+ * FIX-10A-ARCHIVE, 2026-09-22; VERIFIER-10 F4).
1849
+ *
1850
+ * Archiving a record used to be a ONE-WAY DOOR: the grid's row action soft-
1851
+ * deletes correctly — `deleted_at` set, version bumped, nothing removed — and
1852
+ * then no screen anywhere in the platform could bring it back. The store's
1853
+ * `custom.record_restore` was there the whole time and did exactly the right
1854
+ * thing; nothing reached it, because every read door answers live rows only.
1855
+ *
1856
+ * So the archive is a WAY OF LOOKING AT THIS TABLE, like the board and the
1857
+ * dashboards, reached by the same row of buttons and named by the same
1858
+ * `?view=` parameter — never a Trash area of the app somebody has to know
1859
+ * exists, and never a per-table screen. Every Table inherits it the moment it
1860
+ * is in this list.
1861
+ */
1862
+ declare const PAGE_VIEWS: readonly ["grid", "kanban", "calendar", "gallery", "dashboards", "archived"];
1776
1863
  type PageView = (typeof PAGE_VIEWS)[number];
1777
1864
  declare const PAGE_VIEW_LABEL: Record<PageView, string>;
1778
1865
  /**
@@ -1841,11 +1928,91 @@ declare function useViewRecords(view: SavedViewSpec, pageSize?: number, filter?:
1841
1928
  rows: ReadRow$1[];
1842
1929
  loading: boolean;
1843
1930
  error: RecordsError | null;
1844
- /** Where membership came from, in a sentence. A screen that hides this is hiding the view's meaning. */
1931
+ /**
1932
+ * Where membership came from, in a sentence. A screen that hides this is hiding the
1933
+ * view's meaning — and a screen that says the WRONG one is worse than one that says
1934
+ * nothing at all.
1935
+ *
1936
+ * 🚨 IT SAID "holds the whole table" OVER FOUR OF FORTY-TWO ROWS. Seen on Rincon
1937
+ * Plumbing Co's board the moment a dashboard number could narrow it (lane DRILL,
1938
+ * 2026-09-22): the column read "Scheduled 4", every card under it was real, and the
1939
+ * line above them said this view holds the whole table. The sentence was written when
1940
+ * the only two possibilities were a Rule or everything; a question from the address is
1941
+ * a third, and it gets its own words rather than the nearest wrong one.
1942
+ */
1845
1943
  membership: string;
1846
1944
  };
1847
1945
  declare function ViewSwitcher({ view, onLayoutChange, onViewChange, onOpenRecord, onMoved, onNewRecordForm, onAskWhoChanged, pageSize, filter, className, }: ViewSwitcherProps): react.JSX.Element;
1848
1946
 
1947
+ /** What the screen says above the list, so nobody has to be told twice that nothing was destroyed. */
1948
+ declare const ARCHIVE_MEANS = "Archiving never destroys anything. A record you remove from the grid waits here until somebody brings it back.";
1949
+ /** The sentence a person who may not restore reads INSTEAD of a control they cannot use. */
1950
+ declare function mayNotRestoreLine(why: string): string;
1951
+ /** What one row in the archive says, as one string — pulled out so the guard can read it. */
1952
+ declare function archivedRowLine(row: ArchivedRow, titleKey?: string | null): string;
1953
+ interface ArchivedViewProps {
1954
+ tableId: Uuid$1;
1955
+ /** Rows per page. The store refuses above its own ceiling by name rather than quietly serving fewer. */
1956
+ pageSize?: number | undefined;
1957
+ /** Which lane the address or the host asked for. Absent, the organization's. */
1958
+ lane?: ArchiveLane | undefined;
1959
+ /** Called when the person switches lane, so the host can put it in the URL. */
1960
+ onLaneChange?: ((lane: ArchiveLane) => void) | undefined;
1961
+ /** Called after a record comes back, so the host re-reads the rows it owns. */
1962
+ onRestored?: ((recordId: Uuid$1) => void) | undefined;
1963
+ className?: string | undefined;
1964
+ }
1965
+ declare function ArchivedView({ tableId, pageSize, lane: laneFromHost, onLaneChange, onRestored, className, }: ArchivedViewProps): react.JSX.Element;
1966
+
1967
+ /** What every archive on this platform promises, said once. */
1968
+ declare const ARCHIVED_NEVER_DESTROYED = "Archiving never destroys anything. What you put away waits here until somebody brings it back.";
1969
+ interface ArchivedDisclosureProps {
1970
+ /** What is archived, in the plural: "portals", "forms". Drawn as “Archived portals”. */
1971
+ noun: string;
1972
+ /**
1973
+ * How many are archived, when the surface already knows. Absent, the control
1974
+ * still draws — a count nobody has read is not a reason to hide the way in,
1975
+ * and a "(0)" the screen guessed would be a lie.
1976
+ */
1977
+ count?: number | undefined;
1978
+ /** Open on first render — the address asked for the archive. */
1979
+ defaultOpen?: boolean | undefined;
1980
+ /** Told when it opens or closes, so a host can put it in the URL. */
1981
+ onOpenChange?: ((open: boolean) => void) | undefined;
1982
+ children: ReactNode;
1983
+ className?: string | undefined;
1984
+ }
1985
+ /**
1986
+ * ONE CLICK, ON THE SURFACE ITSELF. Not a tab, not a page, not a filter buried
1987
+ * in a menu: the law says revealing the archived things is one press where you
1988
+ * already are, and this is that press for every rail in this package.
1989
+ */
1990
+ declare function ArchivedDisclosure({ noun, count, defaultOpen, onOpenChange, children, className, }: ArchivedDisclosureProps): react.JSX.Element;
1991
+ interface ArchivedPortalsProps {
1992
+ /** Called after a portal comes back, so the rail re-reads the list it owns. */
1993
+ onRestored?: ((portalId: Uuid) => void) | undefined;
1994
+ /**
1995
+ * Bumped by the surface above whenever IT changed something that lands here —
1996
+ * archiving a portal from the live rail, most of all. Without it an archive
1997
+ * standing open would keep showing the list it read when it opened, which is
1998
+ * the quiet lie this package refuses everywhere else.
1999
+ */
2000
+ refreshToken?: number | undefined;
2001
+ defaultOpen?: boolean | undefined;
2002
+ className?: string | undefined;
2003
+ }
2004
+ /**
2005
+ * THE ARCHIVED PORTALS OF THIS ORGANIZATION, AND THE WAY BACK.
2006
+ *
2007
+ * It reads `custom.list_portals(org, 'archived')` — the archive-aware reader the
2008
+ * store grew for exactly this — rather than filtering a list `custom.portals`
2009
+ * already hid. It is organization-wide on purpose, unlike the live rail above
2010
+ * it: a portal is archived precisely because nobody is standing on it any more,
2011
+ * and narrowing the archive to the Table you happen to be on is how an archived
2012
+ * portal becomes unreachable from every page at once.
2013
+ */
2014
+ declare function ArchivedPortals({ onRestored, refreshToken, defaultOpen, className, }: ArchivedPortalsProps): react.JSX.Element;
2015
+
1849
2016
  interface ViewBarProps {
1850
2017
  /** The Table whose views these are. */
1851
2018
  tableId: Uuid;
@@ -3003,7 +3170,17 @@ declare const VIEW_NOT_SAVED_YET: string;
3003
3170
  * somewhere else in the product would be a second answer to "how is the work
3004
3171
  * going", reached by knowing where to click.
3005
3172
  */
3006
- type MainView = "records" | "dashboards";
3173
+ /**
3174
+ * 🚨 `archived` IS THE THIRD (lane FIX-10A-ARCHIVE, 2026-09-22; VERIFIER-10 F4).
3175
+ * Archiving a record was a ONE-WAY DOOR — the row left the grid and no screen
3176
+ * anywhere could bring it back, although `custom.record_restore` was there the
3177
+ * whole time — because nothing in this package listed archived rows and no read
3178
+ * door could answer them. It belongs HERE, beside the records and the counts of
3179
+ * them, for exactly the reason the dashboards do: to the person, the archive is
3180
+ * one of the ways to look at this table, not a Trash area of the app somebody
3181
+ * has to know exists.
3182
+ */
3183
+ type MainView = "records" | "dashboards" | "archived";
3007
3184
  /**
3008
3185
  * WHAT THE PAGE IS SHOWING — the middle and the right-hand panel, as ONE answer.
3009
3186
  *
@@ -3259,4 +3436,4 @@ interface PipelineBoardProps {
3259
3436
  }
3260
3437
  declare function PipelineBoard({ tableId, rows, measure, onMeasureChange, onOpenRecord, onMoved, className, }: PipelineBoardProps): react.JSX.Element;
3261
3438
 
3262
- export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };
3439
+ export { ABSENCE_WORD_LABEL, ABSENCE_WORD_VALUES, ACTION_KINDS, ARCHIVED_NEVER_DESTROYED, ARCHIVE_MEANS, type AbsenceWord, ActionInbox, type ActionInboxProps, type ActionKind, type AgentBuildAsk, ArchivedDisclosure, type ArchivedDisclosureProps, ArchivedPortals, type ArchivedPortalsProps, ArchivedView, type ArchivedViewProps, BOOKING_PAGE_STATE_LABEL, BOOKING_PAGE_STATE_VALUES, BookingBuilder, type BookingBuilderProps, type BookingPageState, BookingSlots, type BookingSlotsProps, BuildOrAsk, type BuildOrAskProps, type BuildableKind, CAPTURE_MODES, CHART_KINDS, CHART_KIND_LABEL, CHART_NEEDS, CHECKLIST_REQUIREMENT_KINDS, CHECKLIST_REQUIREMENT_LABEL, CONDITION_OPS, CONTEXT_POLICY_LABEL, type Capability, type CaptureMode, type CaptureQueuePort, CaptureRun, type CaptureRunProps, CaptureSheet, type CaptureSheetProps, type CellAddress, type CellRefusal, type CellState, ChartBlock, type ChartBlockProps, type ChartConfig, ChartFrame, type ChartKind, ChartLegendContent, type ChartSpec, ChartTooltipContent, ChecklistRunner, type ChecklistRunnerProps, ChecklistTemplateEditor, ChecklistsPanel, type ChecklistsPanelProps, CommentThread, type CommentThreadProps, type ConditionField, ConditionGroup, type ConditionGroupProps, ConditionRow, type ConditionRowProps, CustomFieldsSection, type CustomFieldsSectionProps, DEFAULT_FIELDS, DEFAULT_VIEW_NAME, DUE_STATE_LABEL, DashboardCanvas, type DashboardCanvasProps, type DeclareResult, DigestScheduler, type DigestSchedulerProps, DocRender, type DocRenderProps, DocTemplate, type DocTemplateProps, type DocTemplateSpec, EMPTY_PRESENTATION, ENGINEER_TEXT, type EditorKind, EmbedFrame, type EmbedFrameProps, type EnrichAsk, EnrichBadge, type EnrichBadgeProps, type EnrichOutcome, EnrichPanel, type EnrichPanelProps, ExportMenu, type ExportMenuProps, FIELD_RULE_KIND_LABEL, FIELD_RULE_KIND_VALUES, FIELD_SENSITIVITY_LABEL, FIELD_TYPE_CHOICES, FIELD_TYPE_GROUPS, FORMULA_OP_JOINS, FORMULA_OP_LABEL, FORMULA_OP_VALUES, FORM_FLOWS, FROZEN_COLUMN_WIDTH, FieldControl, FieldEditor, type FieldEditorControlProps, type FieldEditorProps, FieldHistoryPanel, type FieldHistoryPanelProps, FieldLabel, type FieldProposalRow, type FieldRuleKindValue, type FieldTypeChoice, FilePicker, type FilePickerProps, FormBuilder, type FormBuilderProps, type FormFlow, type FormQuestionSpec, FormRunner, type FormRunnerProps, type FormSpec, type FormSubmitOutcome, type FormTheme, FormsPanel, type FormsPanelProps, type FormulaOp, Grid, GridCell, type GridEditing, type GridGrouping, type GridPresentation, type GridProps, HistoryPanel, type HistoryPanelProps, IN_MEMORY_QUEUE_REASON, ImportWizard, type ImportWizardProps, KERNEL_REASON, LANE_EMPTY, LANE_TITLE, LAYOUT_FIELD_KIND, LAYOUT_LABEL, LAYOUT_NEEDS, LAYOUT_NO_FIELD, LEVEL_WORD, type LabelLookup, MACHINE_IDENTITY, MAX_ROW_HEIGHT, MIN_ROW_HEIGHT, type MainView, MyChecklistSteps, NEEDS_A_SENTENCE, NOT_ANSWERED_YET, NOT_DRAWN_HERE, NO_AGENT_PORT, NO_CHAT_REASON, NO_COLUMNS_WHY, NO_COLUMNS_YET, NO_ENRICH_REASON, NO_MEMBERS_REASON, NO_OPEN_RECORDS_REASON, NO_REASK_REASON, NO_RIGHTS, NO_RULES_YET, NO_SAVED_VIEWS_REASON, NO_SHARE_REASON, NO_UPLOAD_REASON, type NewFieldSpec, type NewTableSpec, NotifyRuleEditor, type NotifyRuleEditorProps, type NotifyRuleSpec, type OpenRecordsAsk, type OrganizationMember, PAGE_VIEWS, PAGE_VIEW_LABEL, PARITY_LABEL, PARITY_MADE_OF, PROPOSED_CHANGE_ACT_LABEL, PROPOSED_CHANGE_ACT_VALUES, type PageView, Peek, type PeekProps, type PendingCapture, PersonPicker, type PersonPickerProps, type PickableFieldType, PipelineBoard, type PipelineBoardProps, type PlainFieldType, type PlainRefusal, type PortalAnswer, PortalBuilder, type PortalBuilderProps, PortalCardView, type PortalCardViewProps, PortalShell, type PortalShellProps, PortalsPanel, type PortalsPanelProps, type ProposalOutcome, ProposalRow, type ProposalRowProps, type ProposedChange, type ProposedChangeAct, ProvenanceBadge, PublicViewPage, type PublicViewPageProps, ROLLUP_AGG_LABEL, ROLLUP_AGG_VALUES, type ReaskContext, RecordChat, type RecordChatContext, type RecordChatEntry, type RecordChatProps, type RecordChatWithheld, RecordChip, RecordForm, type RecordFormProps, RecordLabelProvider, RecordValue, RecordsMount, type RecordsMountProps, type RecordsUiHost, RecordsUiProvider, ReferenceBuilder, type ReferenceBuilderProps, type ReferenceChoice, RefusalLine, RefusalNotice, type RelationFieldType, RelationPicker, type RelationPickerProps, type ResolveName, type RollupAgg, SAVED_VIEWS_UNAVAILABLE, SAY_WHAT_YOU_ARE_WAITING_FOR_AFTER_MS, SERIES_COLORS, SOMEBODY, STAGE_RULE_ON_FAIL_LABEL, STORE_ANSWERS_THESE, STORE_DECIDES_REASON, SUBSCRIPTION_CADENCES, SUBSCRIPTION_CADENCE_LABEL, SUBSCRIPTION_CHANNEL_LABEL, SUBSCRIPTION_CHANNEL_VALUES, type SavedDashboard, type SavedForm, type SavedView, type SavedViewSpec, ShareControl, type ShareControlProps, type ShareSubject, SignBlock, type SignBlockProps, StageRulesSection, type StageRulesSectionProps, StepRow, type SubscriptionChannel, SubscriptionsPanel, type SubscriptionsPanelProps, type Surface, type SurfacePress, type SystemFieldSpec, type SystemTableSpec, TABLE_LANES, TABLE_NOT_REACHABLE, THE_SYSTEM, type TableLane, TablePage, type TablePageProps, type TableRights, TableSettings, type TableSettingsProps, TablesHome, type TablesHomeProps, type TrackedVersion, type UseSystemTableState, VIEW_LAYOUTS, VIEW_NOT_SAVED_YET, VIEW_TABLE, ViewBar, type ViewBarProps, type ViewLayout, type ViewSort, ViewSwitcher, type ViewSwitcherProps, WITHHELD_RECORD_LABEL, WORK_DUE_STATES, WORK_INBOX_KINDS, WORK_INBOX_KIND_LABEL, type WhatYouMayDo, type WhoChanged, WhoChangedSource, actorBadge, actorWords, addFields, archivedRowLine, askableFields, blockFromSpec, bodyForReading, bodyFromKeys, cameFromLine, cellState, chooseSurface, colorFromTheValue, columnForField, conditionInWords, conditionIsDrawable, conditionIsSimple, conditionValue, controlFor, currencyCodeFor, dashboardDeclareArgs, dashboardFromSummary, declareTable, editorKindFor, ensureSystemTable, envelopeFor, fieldDeclarationFor, fieldIsEditable, fieldName, fieldToken, fieldTypeChoice, fieldTypeLabel, formDeclareArgs, formFromSummary, formPresentation, formatForField, groupLabel, hintForAPerson, hintIsMachineIdentity, humanize, idsOf, isEngineerText, isId, isMachineIdentity, isParityFieldType, isPlainFieldType, isRelationFieldType, isSignatureField, keyFor, kindsWithNoChoice, laneFor, lastChangeSentence, looksLikeId, machineIdentityIn, mayNotRestoreLine, memberName, nextInWords, openingRail, openingView, pageViewFromParam, parityTypesWithNoExplanation, parseGridPresentation, personActor, personRecordForMember, pointsAtRecords, presentationDocument, presentationIsEmpty, previewLine, previewWords, publiclyAnswerable, recordName, recordNameIn, recordsDataSource, refusalForAPerson, refusalLineForAPerson, renderValue, revokeConsequence, rowName, rowNameIn, scalarText, shareUnavailableReason, specFromBlock, storeDecidesRights, submissionStamp, surfaceChosen, tableName, tableRightsAt, tokenFor, unknownViewLine, useCanShare, useEmbedHandshake, useEnrichCells, useGridEditing, useLabelWait, useMeasuredWidth, useMyChecklistSteps, useRecordLabels, useRecordRights, useRecordsUi, useRowRights, useSystemTable, useTableRights, useViewRecords, useWhoChanged, viewDocument, viewFromRecord, viewPatchDocument, whatIsMissing, whatYouMayDo, whatYouMayDoWithTable, whenWords, whyNotAskable };