@tetrascience-npm/tetrascience-react-ui 0.5.0-beta.58.1 → 0.5.0-beta.60.1

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.
Files changed (75) hide show
  1. package/dist/components/ui/data-table/data-table-filter.cjs +1 -1
  2. package/dist/components/ui/data-table/data-table-filter.cjs.map +1 -1
  3. package/dist/components/ui/data-table/data-table-filter.js +139 -124
  4. package/dist/components/ui/data-table/data-table-filter.js.map +1 -1
  5. package/dist/components/ui/data-table/data-table.cjs +1 -1
  6. package/dist/components/ui/data-table/data-table.cjs.map +1 -1
  7. package/dist/components/ui/data-table/data-table.js +0 -1
  8. package/dist/components/ui/data-table/data-table.js.map +1 -1
  9. package/dist/index.cjs +1 -1
  10. package/dist/index.css +1 -1
  11. package/dist/index.d.ts +0 -555
  12. package/dist/index.js +595 -637
  13. package/dist/index.js.map +1 -1
  14. package/dist/index.tailwind.css +1 -1
  15. package/package.json +1 -1
  16. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +0 -2
  17. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +0 -1
  18. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +0 -140
  19. package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +0 -1
  20. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +0 -2
  21. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +0 -1
  22. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +0 -126
  23. package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +0 -1
  24. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +0 -2
  25. package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +0 -1
  26. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +0 -422
  27. package/dist/components/composed/PlateMapEditor/PlateMapEditor.js.map +0 -1
  28. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +0 -2
  29. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +0 -1
  30. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +0 -136
  31. package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +0 -1
  32. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +0 -2
  33. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +0 -1
  34. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +0 -389
  35. package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +0 -1
  36. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +0 -2
  37. package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +0 -1
  38. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +0 -54
  39. package/dist/components/composed/PlateMapEditor/PlateZoomControl.js.map +0 -1
  40. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +0 -2
  41. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +0 -1
  42. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +0 -96
  43. package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js.map +0 -1
  44. package/dist/components/composed/PlateMapEditor/WellLegend.cjs +0 -2
  45. package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +0 -1
  46. package/dist/components/composed/PlateMapEditor/WellLegend.js +0 -58
  47. package/dist/components/composed/PlateMapEditor/WellLegend.js.map +0 -1
  48. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +0 -2
  49. package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +0 -1
  50. package/dist/components/composed/PlateMapEditor/WellManifestTable.js +0 -408
  51. package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +0 -1
  52. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +0 -2
  53. package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +0 -1
  54. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +0 -177
  55. package/dist/components/composed/PlateMapEditor/WellMetadataForm.js.map +0 -1
  56. package/dist/components/composed/PlateMapEditor/autoFill.cjs +0 -2
  57. package/dist/components/composed/PlateMapEditor/autoFill.cjs.map +0 -1
  58. package/dist/components/composed/PlateMapEditor/autoFill.js +0 -41
  59. package/dist/components/composed/PlateMapEditor/autoFill.js.map +0 -1
  60. package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs +0 -4
  61. package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs.map +0 -1
  62. package/dist/components/composed/PlateMapEditor/csvPlateTriage.js +0 -103
  63. package/dist/components/composed/PlateMapEditor/csvPlateTriage.js.map +0 -1
  64. package/dist/components/composed/PlateMapEditor/helpers.cjs +0 -2
  65. package/dist/components/composed/PlateMapEditor/helpers.cjs.map +0 -1
  66. package/dist/components/composed/PlateMapEditor/helpers.js +0 -11
  67. package/dist/components/composed/PlateMapEditor/helpers.js.map +0 -1
  68. package/dist/components/composed/PlateMapEditor/wellGrid.cjs +0 -2
  69. package/dist/components/composed/PlateMapEditor/wellGrid.cjs.map +0 -1
  70. package/dist/components/composed/PlateMapEditor/wellGrid.js +0 -56
  71. package/dist/components/composed/PlateMapEditor/wellGrid.js.map +0 -1
  72. package/dist/components/ui/popover.cjs +0 -2
  73. package/dist/components/ui/popover.cjs.map +0 -1
  74. package/dist/components/ui/popover.js +0 -45
  75. package/dist/components/ui/popover.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -39,7 +39,6 @@ import { NavigationMenu as NavigationMenu_2 } from 'radix-ui';
39
39
  import { OnChange } from '@monaco-editor/react';
40
40
  import { OTPInput } from 'input-otp';
41
41
  import { PaginationState } from '@tanstack/react-table';
42
- import { Popover as Popover_2 } from 'radix-ui';
43
42
  import { PropsWithChildren } from 'react';
44
43
  import { RadioGroup as RadioGroup_2 } from 'radix-ui';
45
44
  import * as React_2 from 'react';
@@ -116,10 +115,6 @@ declare const alertVariants: (props?: ({
116
115
  variant?: "default" | "destructive" | "info" | "positive" | "warning" | null | undefined;
117
116
  } & ClassProp) | undefined) => string;
118
117
 
119
- export declare function allPositions(dims: PlateDimensions): WellId[];
120
-
121
- export declare function applyFilterCondition(cellValue: string, operator: FilterOperator, filterValue: string): boolean;
122
-
123
118
  export declare interface AreaDataSeries {
124
119
  x: number[];
125
120
  y: number[];
@@ -225,33 +220,6 @@ export declare type AttachmentsProps = HTMLAttributes<HTMLDivElement> & {
225
220
 
226
221
  export declare type AttachmentVariant = "grid" | "inline" | "list";
227
222
 
228
- export declare interface AutoFillOptions {
229
- dims: PlateDimensions;
230
- /** Number of distinct items to place. Each is repeated `replicates` times. */
231
- count: number;
232
- /** First well in fill order. Defaults to position (0,0). */
233
- startWellId?: WellId;
234
- /** Traversal strategy. Defaults to `"row-major"`. */
235
- strategy?: FillStrategy;
236
- /** Consecutive cells assigned per item. Defaults to 1. */
237
- replicates?: number;
238
- }
239
-
240
- /**
241
- * Compute the ordered list of well ids to assign to `count` items (each
242
- * repeated `replicates` times) starting from `startWellId`. Returns at most
243
- * `dims.rows * dims.columns` ids — overflow is silently truncated so callers
244
- * can paginate onto multiple plates themselves.
245
- */
246
- export declare function autoFillPositions(options: AutoFillOptions): WellId[];
247
-
248
- /**
249
- * Convenience wrapper: assigns each input item to `replicates` consecutive
250
- * wells, returning a `Map<WellId, T>`. The mapper builds the record stored at
251
- * each well (e.g. stamp item-specific fields onto a base record).
252
- */
253
- export declare function autoFillRecords<T>(items: T[], buildRecord: (item: T, index: number, wellId: WellId) => T, options: Omit<AutoFillOptions, "count">): Map<WellId, T>;
254
-
255
223
  export declare function Avatar({ className, size, ...props }: React_2.ComponentProps<typeof Avatar_2.Root> & {
256
224
  size?: "default" | "sm" | "lg";
257
225
  }): JSX.Element;
@@ -1403,8 +1371,6 @@ declare const fieldVariants: (props?: ({
1403
1371
  orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
1404
1372
  } & ClassProp) | undefined) => string;
1405
1373
 
1406
- export declare type FillStrategy = "row-major" | "column-major" | "row-snake" | "column-snake";
1407
-
1408
1374
  export declare interface FilterColumnConfig {
1409
1375
  columnId: string;
1410
1376
  label?: string;
@@ -1433,8 +1399,6 @@ export declare const getAttachmentLabel: (data: AttachmentData) => string;
1433
1399
 
1434
1400
  export declare const getMediaCategory: (data: AttachmentData) => AttachmentMediaCategory;
1435
1401
 
1436
- export declare function getPlateMapScopedWellId(plateBarcode: string, wellId: WellId): WellId;
1437
-
1438
1402
  export declare const getStatusBadge: (status: ToolPart["state"]) => JSX.Element;
1439
1403
 
1440
1404
  /**
@@ -1540,13 +1504,6 @@ export declare function HoverCardContent({ className, align, sideOffset, ...prop
1540
1504
 
1541
1505
  export declare function HoverCardTrigger({ ...props }: React_2.ComponentProps<typeof HoverCard_2.Trigger>): JSX.Element;
1542
1506
 
1543
- export declare interface ImportExportHandlers {
1544
- onImportCsv?: (file: File, triage?: PlateMapCsvTriage) => void | Promise<void>;
1545
- onExportCsv?: () => void;
1546
- onImportTemplate?: (file: File) => void | Promise<void>;
1547
- onExportTemplate?: () => void;
1548
- }
1549
-
1550
1507
  export declare const InlineCitation: ({ className, ...props }: InlineCitationProps) => JSX.Element;
1551
1508
 
1552
1509
  export declare const InlineCitationCard: (props: InlineCitationCardProps) => JSX.Element;
@@ -1796,19 +1753,6 @@ export declare type LineGraphVariant = "lines" | "lines+markers" | "lines+marker
1796
1753
 
1797
1754
  export declare const LocalReferencedSourcesContext: Context_2<ReferencedSourcesContext | null>;
1798
1755
 
1799
- export declare function ManifestFilterPopover({ columns, columnLabel, filters, onFiltersChange, triggerLabel, className, }: ManifestFilterPopoverProps): JSX.Element;
1800
-
1801
- export declare interface ManifestFilterPopoverProps {
1802
- /** Filterable columns. Operator subsets can be specified per column. */
1803
- columns: FilterColumnConfig[];
1804
- /** Column id → display label resolver. */
1805
- columnLabel?: (columnId: string) => string;
1806
- filters: FilterCondition[];
1807
- onFiltersChange: (next: FilterCondition[]) => void;
1808
- triggerLabel?: string;
1809
- className?: string;
1810
- }
1811
-
1812
1756
  export declare type MarkerSymbol = "circle" | "circle-open" | "circle-dot" | "circle-open-dot" | "square" | "square-open" | "square-dot" | "square-open-dot" | "diamond" | "diamond-open" | "diamond-dot" | "diamond-open-dot" | "cross" | "cross-open" | "cross-dot" | "cross-open-dot" | "x" | "x-open" | "x-dot" | "x-open-dot" | "triangle-up" | "triangle-up-open" | "triangle-up-dot" | "triangle-up-open-dot" | "triangle-down" | "triangle-down-open" | "triangle-down-dot" | "triangle-down-open-dot" | "triangle-left" | "triangle-left-open" | "triangle-left-dot" | "triangle-left-open-dot" | "triangle-right" | "triangle-right-open" | "triangle-right-dot" | "triangle-right-open-dot" | "triangle-ne" | "triangle-ne-open" | "triangle-ne-dot" | "triangle-ne-open-dot" | "triangle-se" | "triangle-se-open" | "triangle-se-dot" | "triangle-se-open-dot" | "triangle-sw" | "triangle-sw-open" | "triangle-sw-dot" | "triangle-sw-open-dot" | "triangle-nw" | "triangle-nw-open" | "triangle-nw-dot" | "triangle-nw-open-dot" | "pentagon" | "pentagon-open" | "pentagon-dot" | "pentagon-open-dot" | "hexagon" | "hexagon-open" | "hexagon-dot" | "hexagon-open-dot" | "hexagon2" | "hexagon2-open" | "hexagon2-dot" | "hexagon2-open-dot" | "octagon" | "octagon-open" | "octagon-dot" | "octagon-open-dot" | "star" | "star-open" | "star-dot" | "star-open-dot" | "hexagram" | "hexagram-open" | "hexagram-dot" | "hexagram-open-dot" | "star-triangle-up" | "star-triangle-up-open" | "star-triangle-up-dot" | "star-triangle-up-open-dot" | "star-triangle-down" | "star-triangle-down-open" | "star-triangle-down-dot" | "star-triangle-down-open-dot" | "star-square" | "star-square-open" | "star-square-dot" | "star-square-open-dot" | "star-diamond" | "star-diamond-open" | "star-diamond-dot" | "star-diamond-open-dot" | "diamond-tall" | "diamond-tall-open" | "diamond-tall-dot" | "diamond-tall-open-dot" | "diamond-wide" | "diamond-wide-open" | "diamond-wide-dot" | "diamond-wide-open-dot" | "hourglass" | "hourglass-open" | "bowtie" | "bowtie-open" | "circle-cross" | "circle-cross-open" | "circle-x" | "circle-x-open" | "square-cross" | "square-cross-open" | "square-x" | "square-x-open" | "diamond-cross" | "diamond-cross-open" | "diamond-x" | "diamond-x-open" | "cross-thin" | "cross-thin-open" | "x-thin" | "x-thin-open" | "asterisk" | "asterisk-open" | "hash" | "hash-open" | "hash-dot" | "hash-open-dot" | "y-up" | "y-up-open" | "y-down" | "y-down-open" | "y-left" | "y-left-open" | "y-right" | "y-right-open" | "line-ew" | "line-ew-open" | "line-ns" | "line-ns-open" | "line-ne" | "line-ne-open" | "line-nw" | "line-nw-open" | "arrow" | "arrow-open" | "arrow-wide" | "arrow-wide-open";
1813
1757
 
1814
1758
  declare type MarkerSymbol_2 = "circle" | "square" | "diamond" | "triangle-up" | "triangle-down" | "star";
@@ -2026,13 +1970,6 @@ export declare interface NavPage {
2026
1970
  onClick?: () => void;
2027
1971
  }
2028
1972
 
2029
- export declare function parsePos(id: WellId, dims: PlateDimensions): {
2030
- row: number;
2031
- col: number;
2032
- } | null;
2033
-
2034
- export declare function parseRowLabel(label: string): number;
2035
-
2036
1973
  /**
2037
1974
  * Peak annotation for labeling peaks on the chromatogram.
2038
1975
  * Used for both user-provided annotations and auto-detected peaks.
@@ -2116,11 +2053,6 @@ declare const PLATE_FORMAT_96: "96";
2116
2053
 
2117
2054
  declare const PLATE_FORMAT_CUSTOM: "custom";
2118
2055
 
2119
- export declare interface PlateDimensions {
2120
- rows: number;
2121
- columns: number;
2122
- }
2123
-
2124
2056
  /**
2125
2057
  * Plate format presets for standard microplate configurations.
2126
2058
  * - `"96"`: 8 rows × 12 columns (wells A1-H12)
@@ -2155,204 +2087,6 @@ export declare type PlateFormat = typeof PLATE_FORMAT_96 | typeof PLATE_FORMAT_3
2155
2087
  */
2156
2088
  export declare const PlateMap: default_2.FC<PlateMapProps>;
2157
2089
 
2158
- export declare function PlateMapActionsMenu({ templates, templateId, onTemplateChange, onClearTemplate, hasEntries, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, label, align, side, csvAccept, templateAccept, importTemplateLabel, exportTemplateLabel, importCsvLabel, exportCsvLabel, clearLabel, className, }: PlateMapActionsMenuProps): JSX.Element | null;
2159
-
2160
- export declare interface PlateMapActionsMenuProps extends ImportExportHandlers {
2161
- templates?: TemplateOption[];
2162
- templateId?: string;
2163
- onTemplateChange?: (id: string) => void;
2164
- onClearTemplate?: () => void;
2165
- /** Disable export/save actions when there is nothing to export. */
2166
- hasEntries?: boolean;
2167
- label?: React_2.ReactNode;
2168
- align?: "start" | "center" | "end";
2169
- side?: "top" | "right" | "bottom" | "left";
2170
- csvAccept?: string;
2171
- templateAccept?: string;
2172
- importTemplateLabel?: string;
2173
- exportTemplateLabel?: string;
2174
- importCsvLabel?: string;
2175
- exportCsvLabel?: string;
2176
- clearLabel?: string;
2177
- className?: string;
2178
- }
2179
-
2180
- export declare interface PlateMapCsvPlate {
2181
- /** User-provided plate barcode used as the selectable plate id. */
2182
- id: string;
2183
- barcode: string;
2184
- rows: PlateMapCsvRow[];
2185
- rowCount: number;
2186
- }
2187
-
2188
- export declare interface PlateMapCsvRow {
2189
- /** 1-based CSV line number, including the header line. */
2190
- line: number;
2191
- values: Record<string, string>;
2192
- }
2193
-
2194
- export declare interface PlateMapCsvTriage {
2195
- headers: string[];
2196
- /** Resolved header name for the plate barcode column, when present. */
2197
- plateBarcodeColumn?: string;
2198
- rows: PlateMapCsvRow[];
2199
- plates: PlateMapCsvPlate[];
2200
- /** Rows missing a barcode. The editor does not create fallback barcodes. */
2201
- missingBarcodeRows: PlateMapCsvRow[];
2202
- }
2203
-
2204
- export declare interface PlateMapCsvTriageOptions {
2205
- /** Exact column name to use before trying aliases. */
2206
- plateBarcodeColumn?: string;
2207
- /** Additional accepted names for the plate barcode column. */
2208
- plateBarcodeColumnAliases?: readonly string[];
2209
- }
2210
-
2211
- export declare function PlateMapEditor<T extends WellRecord = WellRecord>({ format, rows, columns, values, onChange, selection, onSelectionChange, fields, tableColumns, colorForWell, emptyEntry, mergeOnApply, isPopulated, cycleFieldOnWellDoubleClick, title, badges, banner, legend, formExtras, formSlot, footer, plateTitle, plateToolbar, plates, activePlateId, onPlateChange, onAddPlate, onRemovePlate, addPlateLabel, removePlateLabel, plateSelectorLabel, plateSelectorVariant, plateBarcodeField, plateBarcodeColumnHeader, hidePlateBarcodeColumn, groups, activeGroupId, onGroupClick, renderHoverSummary, cellSize, emptyWellFillColor, wellShape, framedPlate, wrapWell, highlightedWellIds, onHoveredWellChange, manifestFilterable, manifestGroupable, autoScaleGrid, minCellSize, maxCellSize, className, templates, templateId, onTemplateChange, onClearTemplate, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, csvAccept, templateAccept, label, align, side, importTemplateLabel, exportTemplateLabel, importCsvLabel, exportCsvLabel, clearLabel, }: PlateMapEditorProps<T>): JSX.Element;
2212
-
2213
- export declare interface PlateMapEditorProps<T extends WellRecord = WellRecord> extends Omit<PlateMapActionsMenuProps, "hasEntries" | "className"> {
2214
- format: PlateFormat;
2215
- rows?: number;
2216
- columns?: number;
2217
- values: Map<WellId, T>;
2218
- onChange: (next: Map<WellId, T>) => void;
2219
- selection: Set<WellId>;
2220
- onSelectionChange: (next: Set<WellId>) => void;
2221
- fields: WellField<T>[];
2222
- tableColumns: WellColumn<T>[];
2223
- /** Resolves the SVG fill color for a well. */
2224
- colorForWell: (well: T | undefined, wellId: WellId) => string;
2225
- /** Builds an empty record when a well is freshly created. */
2226
- emptyEntry: (wellId: WellId) => T;
2227
- /**
2228
- * Merges the staged form record onto an existing well record on Apply.
2229
- * Defaults to a shallow merge (form keys overwrite existing keys when set).
2230
- */
2231
- mergeOnApply?: (existing: T | undefined, staged: Partial<T>, wellId: WellId) => T;
2232
- /** Filter for the manifest's "hide empty" mode. */
2233
- isPopulated?: (row: T) => boolean;
2234
- /** Select field cycled when double-clicking a single well, e.g. role painting. */
2235
- cycleFieldOnWellDoubleClick?: keyof T & string;
2236
- /** Optional header title (e.g. plate set name). */
2237
- title?: string;
2238
- /** Optional badges shown in the header next to the title. */
2239
- badges?: React_2.ReactNode;
2240
- /** Optional banner (e.g. import/error alert) shown above the layout. */
2241
- banner?: React_2.ReactNode;
2242
- /** Legend block rendered under the form column. */
2243
- legend?: React_2.ReactNode;
2244
- /** Form helper slot rendered between fields and the action row. */
2245
- formExtras?: React_2.ReactNode;
2246
- /**
2247
- * Fully replaces the left column. When set, the built-in `WellMetadataForm`
2248
- * is omitted — use this for alternative workflows like a drag-and-drop
2249
- * source palette. The legend slot still renders beneath the replacement.
2250
- */
2251
- formSlot?: React_2.ReactNode;
2252
- /** Footer actions (e.g. Save, Back). */
2253
- footer?: React_2.ReactNode;
2254
- /** Title for the plate grid panel. */
2255
- plateTitle?: React_2.ReactNode;
2256
- /** Optional controls shown next to the built-in actions menu. */
2257
- plateToolbar?: React_2.ReactNode;
2258
- /** User-provided plates available for this editor. Barcodes are never generated by the editor. */
2259
- plates?: PlateMapPlateOption[];
2260
- activePlateId?: string;
2261
- onPlateChange?: (plateId: string) => void;
2262
- /** Opens the host app's manual barcode entry flow for creating a plate. */
2263
- onAddPlate?: () => void;
2264
- /** Removes a plate (typically when using `plateSelectorVariant="tabs"`). */
2265
- onRemovePlate?: (plateId: string) => void;
2266
- addPlateLabel?: string;
2267
- removePlateLabel?: string;
2268
- plateSelectorLabel?: string;
2269
- /** Layout of the plate selector. Defaults to `"dropdown"`. */
2270
- plateSelectorVariant?: PlateMapPlateSelectorVariant;
2271
- /** Row field used to stamp the active user-provided barcode onto edited wells. Defaults to `plateBarcode`. */
2272
- plateBarcodeField?: keyof T & string;
2273
- /** Header for the automatic manifest barcode column. */
2274
- plateBarcodeColumnHeader?: string;
2275
- /** Hide the automatic manifest barcode column when plate-scoped editing is active. */
2276
- hidePlateBarcodeColumn?: boolean;
2277
- /** Optional grouped well shortcuts rendered under the grid. */
2278
- groups?: PlateMapGroupOption[];
2279
- activeGroupId?: string;
2280
- onGroupClick?: (group: PlateMapGroupOption) => void;
2281
- /** Custom hover summary for the strip above the grid. */
2282
- renderHoverSummary?: (well: T | undefined, wellId: WellId) => React_2.ReactNode;
2283
- /** Fixed well size. When unset, the grid grows with the available width. */
2284
- cellSize?: number;
2285
- /** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
2286
- emptyWellFillColor?: string | null;
2287
- /** Well shape forwarded to `PlatePaintGrid`. Defaults to `"rect"`. */
2288
- wellShape?: WellShape;
2289
- /** When true, wraps the grid in a card-like plate frame (rounded + border + soft shadow). */
2290
- framedPlate?: boolean;
2291
- /**
2292
- * Forwarded to `PlatePaintGrid`. Render-prop that places a node inside each
2293
- * absolute-positioned well cell — used to wire drop targets without binding
2294
- * the kit to a specific DnD library.
2295
- */
2296
- wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
2297
- /** Wells to highlight (e.g. when hovering a legend item externally). */
2298
- highlightedWellIds?: ReadonlySet<WellId>;
2299
- /** Fires whenever the currently hovered well changes (null on leave). */
2300
- onHoveredWellChange?: (wellId: WellId | null) => void;
2301
- /** Enables the filter popover on the manifest table. */
2302
- manifestFilterable?: boolean;
2303
- /** Enables the group-by selector on the manifest table. */
2304
- manifestGroupable?: boolean;
2305
- autoScaleGrid?: boolean;
2306
- minCellSize?: number;
2307
- maxCellSize?: number;
2308
- className?: string;
2309
- }
2310
-
2311
- export declare interface PlateMapGroupOption {
2312
- id: string;
2313
- label: string;
2314
- /** Well ids in the group; callers can use this to select the group. */
2315
- wellIds?: WellId[];
2316
- /** Optional explicit count; defaults to `wellIds.length` when present. */
2317
- count?: number;
2318
- color?: string;
2319
- borderColor?: string;
2320
- disabled?: boolean;
2321
- }
2322
-
2323
- export declare interface PlateMapPlateOption {
2324
- /** Stable plate id. For imported CSVs this should be the user-provided barcode. */
2325
- id: string;
2326
- /** User-provided plate barcode. Barcodes are never generated by the editor. */
2327
- barcode: string;
2328
- /** Optional display label when it differs from the barcode. */
2329
- label?: string;
2330
- /** Optional count shown beside the plate pill, usually imported row/well count. */
2331
- count?: number;
2332
- disabled?: boolean;
2333
- }
2334
-
2335
- export declare function PlateMapPlateSelector({ plates, activePlateId, onPlateChange, onAddPlate, onRemovePlate, addPlateLabel, removePlateLabel, label, variant, align, side, className, }: PlateMapPlateSelectorProps): JSX.Element;
2336
-
2337
- export declare interface PlateMapPlateSelectorProps {
2338
- plates?: PlateMapPlateOption[];
2339
- activePlateId?: string;
2340
- onPlateChange?: (plateId: string) => void;
2341
- onAddPlate?: () => void;
2342
- /** When supplied, the tabs variant renders a delete affordance per plate. */
2343
- onRemovePlate?: (plateId: string) => void;
2344
- addPlateLabel?: string;
2345
- removePlateLabel?: string;
2346
- label?: string;
2347
- /** Layout. `"dropdown"` is the default single-trigger menu, `"tabs"` is a horizontal tab strip. */
2348
- variant?: PlateMapPlateSelectorVariant;
2349
- align?: "start" | "center" | "end";
2350
- side?: "top" | "right" | "bottom" | "left";
2351
- className?: string;
2352
- }
2353
-
2354
- export declare type PlateMapPlateSelectorVariant = "dropdown" | "tabs";
2355
-
2356
2090
  /**
2357
2091
  * Props for PlateMap component
2358
2092
  */
@@ -2454,76 +2188,6 @@ export declare interface PlateMapProps {
2454
2188
  onWellClick?: (wellData: WellData) => void;
2455
2189
  }
2456
2190
 
2457
- export declare function plateOptionsFromCsvTriage(triage: PlateMapCsvTriage): PlateMapPlateOption[];
2458
-
2459
- /**
2460
- * Interactive plate grid with drag-rectangle selection.
2461
- * - Click & drag: replace selection
2462
- * - Shift + drag: add to selection
2463
- * - Alt + drag: remove from selection
2464
- */
2465
- export declare function PlatePaintGrid<T extends WellRecord = WellRecord>({ format, rows, columns, values, selection, onSelectionChange, colorForWell, emptyWellFillColor, wellShape, framed, cellSize, autoScale, minCellSize, maxCellSize, borderColor, selectedBorderColor, selectedFillColor, selectedFillOpacity, selectionFillMode, flashWellId, flashWellKey, highlightedWellIds, highlightBorderColor, onWellHover, onWellDoubleClick, wrapWell, className, }: PlatePaintGridProps<T>): JSX.Element;
2466
-
2467
- export declare interface PlatePaintGridProps<T extends WellRecord = WellRecord> {
2468
- format: PlateFormat;
2469
- rows?: number;
2470
- columns?: number;
2471
- values: Map<WellId, T>;
2472
- selection: Set<WellId>;
2473
- onSelectionChange: (next: Set<WellId>) => void;
2474
- /** Returns the fill color for a given well record (or undefined if empty). */
2475
- colorForWell: (well: T | undefined, wellId: WellId) => string;
2476
- /** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
2477
- emptyWellFillColor?: string | null;
2478
- /** Geometric shape of each well. `"circle"` matches scientific plate visuals. Defaults to `"rect"`. */
2479
- wellShape?: WellShape;
2480
- /**
2481
- * When true, wraps the grid in a card-like surface (rounded, bordered,
2482
- * padded, soft shadow) so it reads as a physical plate. Pairs well with
2483
- * `wellShape="circle"`.
2484
- */
2485
- framed?: boolean;
2486
- /** Pixel size of each well cell. Defaults to 34 when fixed. */
2487
- cellSize?: number;
2488
- /** Resize wells to fill available width when `cellSize` is not fixed. */
2489
- autoScale?: boolean;
2490
- minCellSize?: number;
2491
- /** Defaults to 72 for 96-well style plates and 36 for denser plates. */
2492
- maxCellSize?: number;
2493
- /** Stroke color for non-selected wells. Defaults to a light border. */
2494
- borderColor?: string;
2495
- /** Stroke color for selected wells. Defaults to the kit primary blue. */
2496
- selectedBorderColor?: string;
2497
- /** Fill color for selected wells. Defaults to the kit primary blue. */
2498
- selectedFillColor?: string;
2499
- /** Selected fill opacity. */
2500
- selectedFillOpacity?: number;
2501
- /** Whether selected wells use the selection fill or keep their assigned well color. */
2502
- selectionFillMode?: "selection" | "well";
2503
- /** Well id that should briefly flash, usually after a double-click assignment. */
2504
- flashWellId?: WellId;
2505
- /** Changing this value restarts the flash animation for the same well. */
2506
- flashWellKey?: number;
2507
- /**
2508
- * Well ids that should render with a highlight ring. Used for cross-component
2509
- * hover sync (e.g. hovering a legend item to highlight matching wells).
2510
- */
2511
- highlightedWellIds?: ReadonlySet<WellId>;
2512
- /** Stroke color for highlighted wells. Defaults to the kit primary blue. */
2513
- highlightBorderColor?: string;
2514
- onWellHover?: (wellId: WellId | null) => void;
2515
- onWellDoubleClick?: (wellId: WellId) => void;
2516
- /**
2517
- * Optional render-prop invoked once per well. The returned node is placed
2518
- * inside an absolutely-positioned cell on top of the SVG, sized to
2519
- * `cellSize`. The wrapper layer is `pointer-events: none` so the SVG keeps
2520
- * pointer interaction by default; consumers wiring drop targets are expected
2521
- * to set `pointer-events: auto` on their own element while a drag is active.
2522
- */
2523
- wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
2524
- className?: string;
2525
- }
2526
-
2527
2191
  /**
2528
2192
  * A region to highlight on the plate (e.g., controls, sample areas, empty wells)
2529
2193
  */
@@ -2545,30 +2209,6 @@ declare interface PlateRegion {
2545
2209
  fillColor?: string;
2546
2210
  }
2547
2211
 
2548
- export declare function PlateZoomControl({ zoom, onZoomChange, step, min, max, showReadout, className, }: PlateZoomControlProps): JSX.Element;
2549
-
2550
- export declare interface PlateZoomControlProps {
2551
- zoom: number;
2552
- onZoomChange: (next: number) => void;
2553
- /** Increment per click. Defaults to 0.1. */
2554
- step?: number;
2555
- min?: number;
2556
- max?: number;
2557
- /** Render a percentage readout between the buttons. Defaults to true. */
2558
- showReadout?: boolean;
2559
- className?: string;
2560
- }
2561
-
2562
- export declare function Popover({ ...props }: React_2.ComponentProps<typeof Popover_2.Root>): JSX.Element;
2563
-
2564
- export declare function PopoverAnchor({ ...props }: React_2.ComponentProps<typeof Popover_2.Anchor>): JSX.Element;
2565
-
2566
- export declare function PopoverContent({ className, align, sideOffset, ...props }: React_2.ComponentProps<typeof Popover_2.Content>): JSX.Element;
2567
-
2568
- export declare function PopoverTrigger({ ...props }: React_2.ComponentProps<typeof Popover_2.Trigger>): JSX.Element;
2569
-
2570
- export declare function pos(row: number, col: number, columns: number): WellId;
2571
-
2572
2212
  export declare const PromptInput: ({ className, accept, multiple, globalDrop, syncHiddenInput, maxFiles, maxFileSize, onError, onSubmit, children, ...props }: PromptInputProps) => JSX.Element;
2573
2213
 
2574
2214
  export declare const PromptInputActionAddAttachments: ({ label, ...props }: PromptInputActionAddAttachmentsProps) => JSX.Element;
@@ -2901,8 +2541,6 @@ export declare type ReasoningTriggerProps = ComponentProps<typeof CollapsibleTri
2901
2541
  getThinkingMessage?: (isStreaming: boolean, duration?: number) => ReactNode;
2902
2542
  };
2903
2543
 
2904
- export declare function rectPositions(r0: number, c0: number, r1: number, c1: number, columns: number): WellId[];
2905
-
2906
2544
  export declare interface ReferencedSourcesContext {
2907
2545
  sources: (SourceDocumentUIPart & {
2908
2546
  id: string;
@@ -2920,8 +2558,6 @@ export declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelPro
2920
2558
 
2921
2559
  export declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): JSX.Element;
2922
2560
 
2923
- export declare function resolveDimensions(format: PlateFormat, rows?: number, columns?: number): PlateDimensions;
2924
-
2925
2561
  export declare function RichListItem({ leading, primary, secondary, trailing, actions, className, variant, size, ...props }: RichListItemProps): JSX.Element;
2926
2562
 
2927
2563
  export declare function RichListItemAvatar({ initials, className, fallbackClassName, size, ...props }: RichListItemAvatarProps): JSX.Element;
@@ -2944,9 +2580,6 @@ export declare interface RichListItemProps extends Omit<React_2.ComponentProps<t
2944
2580
  actions?: React_2.ReactNode;
2945
2581
  }
2946
2582
 
2947
- /** Letter for a row index. Supports A-Z then AA-ZZ for 1536-format plates. */
2948
- export declare function rowLabel(row: number): string;
2949
-
2950
2583
  export declare interface ScatterDataPoint {
2951
2584
  x: number;
2952
2585
  y: number;
@@ -3510,30 +3143,6 @@ export declare interface TdpSearchSort {
3510
3143
  order: "asc" | "desc";
3511
3144
  }
3512
3145
 
3513
- export declare function TemplateIOPanel({ templates, templateId, onTemplateChange, onClearTemplate, hasEntries, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, className, csvAccept, templateAccept, }: TemplateIOPanelProps): JSX.Element;
3514
-
3515
- export declare interface TemplateIOPanelProps extends ImportExportHandlers {
3516
- templates?: TemplateOption[];
3517
- templateId?: string;
3518
- onTemplateChange?: (id: string) => void;
3519
- onClearTemplate?: () => void;
3520
- /** Disable export buttons when there's nothing to export. */
3521
- hasEntries?: boolean;
3522
- className?: string;
3523
- csvAccept?: string;
3524
- templateAccept?: string;
3525
- }
3526
-
3527
- export declare interface TemplateOption {
3528
- id: string;
3529
- label: string;
3530
- /** Optional group header in the dropdown (e.g. "Built-in", "User"). */
3531
- group?: string;
3532
- /** Optional supporting text for richer chooser menus. */
3533
- description?: string;
3534
- disabled?: boolean;
3535
- }
3536
-
3537
3146
  export declare const TetraScienceIcon: React_2.ForwardRefExoticComponent<Omit<TetraScienceIconProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
3538
3147
 
3539
3148
  export declare interface TetraScienceIconProps extends React_2.SVGProps<SVGSVGElement> {
@@ -3650,10 +3259,6 @@ declare type ToolUIPartApproval = {
3650
3259
  reason?: string;
3651
3260
  } | undefined;
3652
3261
 
3653
- export declare function triagePlateMapCsvByBarcode(text: string, options?: PlateMapCsvTriageOptions): PlateMapCsvTriage;
3654
-
3655
- export declare function triagePlateMapCsvFile(file: File, options?: PlateMapCsvTriageOptions): Promise<PlateMapCsvTriage | undefined>;
3656
-
3657
3262
  /** TetraScience brand gradient — Light Blue 300 → Purple 500 → Violet Marble */
3658
3263
  export declare const TS_SHIMMER_GRADIENT = "linear-gradient(90deg, #549DFF, #8243BA, #9665F4)";
3659
3264
 
@@ -3754,27 +3359,6 @@ export declare interface UseTdpNavigationReturn {
3754
3359
  */
3755
3360
  declare type VisualizationMode = "heatmap" | "categorical";
3756
3361
 
3757
- export declare interface WellColumn<T extends WellRecord = WellRecord> {
3758
- /** Stable id; falls back to `field` if omitted. */
3759
- id?: string;
3760
- header: string;
3761
- /** Optional leading icon in the table header. */
3762
- icon?: React_2.ReactNode;
3763
- /** Read direct property when `field` is set. */
3764
- field?: keyof T & string;
3765
- /** Min width in px (applied via inline style). */
3766
- minWidth?: number;
3767
- /**
3768
- * Cell renderer. If omitted, the cell renders a display value. `select`
3769
- * fields render as badge-style custom cells using the matching option label.
3770
- */
3771
- render?: (ctx: {
3772
- row: T;
3773
- wellId: WellId;
3774
- update: (patch: Partial<T>) => void;
3775
- }) => React_2.ReactNode;
3776
- }
3777
-
3778
3362
  /**
3779
3363
  * Well data for individual wells.
3780
3364
  *
@@ -3830,145 +3414,6 @@ export declare interface WellData {
3830
3414
  tooltipData?: Record<string, unknown>;
3831
3415
  }
3832
3416
 
3833
- export declare interface WellField<T extends WellRecord = WellRecord> {
3834
- /** Key in the well record this field reads/writes. */
3835
- key: keyof T & string;
3836
- label: string;
3837
- /** Optional leading icon shown in form labels and matching table headers. */
3838
- icon?: React_2.ReactNode;
3839
- kind: WellFieldKind;
3840
- placeholder?: string;
3841
- /** Required for `kind: "select"` and `kind: "multiselect"`. */
3842
- options?: WellSelectOption[];
3843
- /** Visual style for `kind: "boolean"`. Defaults to `"checkbox"`. */
3844
- boolStyle?: "checkbox" | "switch";
3845
- /**
3846
- * When true, matching `WellManifestTable` cells render an inline editor of
3847
- * this field's `kind` (mirroring the form). Defaults to false — cells stay
3848
- * read-only unless the developer opts in or supplies `WellColumn.render`.
3849
- */
3850
- editableInTable?: boolean;
3851
- /**
3852
- * Custom renderer for the form input. Receives current value and a setter
3853
- * that patches the field on the staged form record.
3854
- */
3855
- render?: (ctx: {
3856
- value: unknown;
3857
- onChange: (next: unknown) => void;
3858
- selectionSize: number;
3859
- }) => React_2.ReactNode;
3860
- }
3861
-
3862
- /**
3863
- * Field kinds rendered by `WellMetadataForm` and (when `editableInTable`) by
3864
- * `WellManifestTable`.
3865
- */
3866
- export declare type WellFieldKind = "text" | "number" | "integer" | "boolean" | "date" | "datetime" | "time" | "select" | "multiselect" | "custom";
3867
-
3868
- export declare type WellId = string;
3869
-
3870
- export declare function WellLegend({ items, renderItem, onHoverEnter, onHoverLeave, onRemove, removeLabel, emptyLabel, className, }: WellLegendProps): JSX.Element;
3871
-
3872
- export declare interface WellLegendItem {
3873
- id: string;
3874
- label: React_2.ReactNode;
3875
- color: string;
3876
- /** Optional secondary text shown beneath the label. */
3877
- meta?: React_2.ReactNode;
3878
- disabled?: boolean;
3879
- }
3880
-
3881
- export declare interface WellLegendProps {
3882
- items: WellLegendItem[];
3883
- /** Render-prop for fully custom cards. Bypasses the default card layout. */
3884
- renderItem?: (item: WellLegendItem) => React_2.ReactNode;
3885
- onHoverEnter?: (id: string) => void;
3886
- onHoverLeave?: (id: string) => void;
3887
- onRemove?: (id: string) => void;
3888
- removeLabel?: string;
3889
- emptyLabel?: string;
3890
- className?: string;
3891
- }
3892
-
3893
- export declare function WellManifestTable<T extends WellRecord = WellRecord>({ values, columns, fields, selection, onSelectionChange, onChange, emptyEntry, isPopulated, pageSize: initialPageSize, pageSizeOptions, enableFillDown, rowProps, filterable, filterColumns, groupable, className, }: WellManifestTableProps<T>): JSX.Element;
3894
-
3895
- export declare interface WellManifestTableProps<T extends WellRecord = WellRecord> {
3896
- values: Map<WellId, T>;
3897
- columns: WellColumn<T>[];
3898
- /**
3899
- * Field schema. If a column has `field` matching a `select`-kind field, a
3900
- * Select cell renders automatically with that field's options.
3901
- */
3902
- fields?: WellField<T>[];
3903
- selection?: Set<WellId>;
3904
- onSelectionChange?: (next: Set<WellId>) => void;
3905
- onChange: (next: Map<WellId, T>) => void;
3906
- /** Builds an empty record for a freshly-created row. */
3907
- emptyEntry: (id: WellId) => T;
3908
- /** Filter that controls which empty rows surface. Defaults to `false`. */
3909
- isPopulated?: (row: T) => boolean;
3910
- pageSize?: number;
3911
- pageSizeOptions?: number[];
3912
- /** Adds a column header action that copies the first non-empty value downward. */
3913
- enableFillDown?: boolean;
3914
- /**
3915
- * Extra props spread onto each `<tr>` — typically used to attach a DnD
3916
- * library's `setNodeRef`, listeners, and data attributes so rows can act as
3917
- * drag sources. The kit stays DnD-library-agnostic.
3918
- */
3919
- rowProps?: (ctx: WellManifestTableRowContext<T>) => React_2.ComponentProps<"tr"> | undefined;
3920
- /** Enables an inline filter popover above the table. Defaults to false. */
3921
- filterable?: boolean;
3922
- /**
3923
- * Optional override of filterable column configs. When omitted, every column
3924
- * with a `field` becomes filterable using the default operator set from the
3925
- * shared data-table filter system.
3926
- */
3927
- filterColumns?: FilterColumnConfig[];
3928
- /** Enables an inline group-by selector. Defaults to false. */
3929
- groupable?: boolean;
3930
- className?: string;
3931
- }
3932
-
3933
- export declare interface WellManifestTableRowContext<T extends WellRecord = WellRecord> {
3934
- wellId: WellId;
3935
- row: T;
3936
- isSelected: boolean;
3937
- }
3938
-
3939
- export declare function WellMetadataForm<T extends WellRecord = WellRecord>({ fields, value, onChange, selectionSize, onApply, onClear, applyLabel, clearLabel, extras, className, }: WellMetadataFormProps<T>): JSX.Element;
3940
-
3941
- export declare interface WellMetadataFormProps<T extends WellRecord = WellRecord> {
3942
- fields: WellField<T>[];
3943
- /** Staged values used to apply across the selection. */
3944
- value: Partial<T>;
3945
- onChange: (next: Partial<T>) => void;
3946
- selectionSize: number;
3947
- onApply: () => void;
3948
- onClear: () => void;
3949
- applyLabel?: string;
3950
- clearLabel?: string;
3951
- /** Optional extra slot rendered between fields and action row. */
3952
- extras?: React_2.ReactNode;
3953
- className?: string;
3954
- }
3955
-
3956
- /**
3957
- * Generic per-well record. Callers supply concrete shape via the `T` generic
3958
- * on `PlateMapEditor`. Permissive base accepts both interfaces and indexable
3959
- * record types.
3960
- */
3961
- export declare type WellRecord = NonNullable<unknown>;
3962
-
3963
- export declare interface WellSelectOption {
3964
- value: string;
3965
- label: string;
3966
- /** Optional swatch color shown next to the label. */
3967
- swatch?: string;
3968
- }
3969
-
3970
- export declare type WellShape = "rect" | "circle";
3971
-
3972
3417
  export { }
3973
3418
 
3974
3419