@tetrascience-npm/tetrascience-react-ui 0.5.0 → 0.6.0-beta.78.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.
- package/README.md +84 -37
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js +140 -0
- package/dist/components/composed/PlateMapEditor/ManifestFilterPopover.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js +126 -0
- package/dist/components/composed/PlateMapEditor/PlateMapActionsMenu.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js +341 -0
- package/dist/components/composed/PlateMapEditor/PlateMapEditor.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js +43 -0
- package/dist/components/composed/PlateMapEditor/PlateMapForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js +154 -0
- package/dist/components/composed/PlateMapEditor/PlateMapGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.js +44 -0
- package/dist/components/composed/PlateMapEditor/PlateMapManifest.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js +136 -0
- package/dist/components/composed/PlateMapEditor/PlateMapPlateSelector.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js +389 -0
- package/dist/components/composed/PlateMapEditor/PlatePaintGrid.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js +54 -0
- package/dist/components/composed/PlateMapEditor/PlateZoomControl.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js +96 -0
- package/dist/components/composed/PlateMapEditor/TemplateIOPanel.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js +58 -0
- package/dist/components/composed/PlateMapEditor/WellLegend.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js +421 -0
- package/dist/components/composed/PlateMapEditor/WellManifestTable.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js +177 -0
- package/dist/components/composed/PlateMapEditor/WellMetadataForm.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/autoFill.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js +41 -0
- package/dist/components/composed/PlateMapEditor/autoFill.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs +4 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js +103 -0
- package/dist/components/composed/PlateMapEditor/csvPlateTriage.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/helpers.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/helpers.js +11 -0
- package/dist/components/composed/PlateMapEditor/helpers.js.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs +2 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.cjs.map +1 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js +56 -0
- package/dist/components/composed/PlateMapEditor/wellGrid.js.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.cjs +2 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.cjs.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.js +543 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.js.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs +2 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.cjs.map +1 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js +84 -0
- package/dist/components/composed/ProcessFlow/ProcessFlow.utils.js.map +1 -0
- package/dist/components/ui/accordion.cjs +1 -1
- package/dist/components/ui/accordion.cjs.map +1 -1
- package/dist/components/ui/accordion.js +1 -1
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/badge.cjs +1 -1
- package/dist/components/ui/badge.cjs.map +1 -1
- package/dist/components/ui/badge.js +18 -18
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/button.cjs +1 -1
- package/dist/components/ui/button.cjs.map +1 -1
- package/dist/components/ui/button.js +16 -16
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.cjs +1 -1
- package/dist/components/ui/calendar.cjs.map +1 -1
- package/dist/components/ui/calendar.js +5 -5
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.cjs +1 -1
- package/dist/components/ui/card.cjs.map +1 -1
- package/dist/components/ui/card.js +1 -1
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/checkbox.cjs +1 -1
- package/dist/components/ui/checkbox.cjs.map +1 -1
- package/dist/components/ui/checkbox.js +9 -9
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/combobox.cjs +1 -1
- package/dist/components/ui/combobox.cjs.map +1 -1
- package/dist/components/ui/combobox.js +5 -5
- package/dist/components/ui/combobox.js.map +1 -1
- package/dist/components/ui/data-table/data-table-group.cjs +2 -0
- package/dist/components/ui/data-table/data-table-group.cjs.map +1 -0
- package/dist/components/ui/data-table/data-table-group.js +118 -0
- package/dist/components/ui/data-table/data-table-group.js.map +1 -0
- package/dist/components/ui/data-table/data-table-pagination.cjs +1 -1
- package/dist/components/ui/data-table/data-table-pagination.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table-pagination.js +22 -22
- package/dist/components/ui/data-table/data-table-pagination.js.map +1 -1
- package/dist/components/ui/data-table/data-table.cjs +1 -1
- package/dist/components/ui/data-table/data-table.cjs.map +1 -1
- package/dist/components/ui/data-table/data-table.js +567 -316
- package/dist/components/ui/data-table/data-table.js.map +1 -1
- package/dist/components/ui/dialog.cjs +1 -1
- package/dist/components/ui/dialog.cjs.map +1 -1
- package/dist/components/ui/dialog.js +13 -13
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/input-group.cjs +1 -1
- package/dist/components/ui/input-group.cjs.map +1 -1
- package/dist/components/ui/input-group.js +29 -29
- package/dist/components/ui/input-group.js.map +1 -1
- package/dist/components/ui/input-otp.cjs +1 -1
- package/dist/components/ui/input-otp.cjs.map +1 -1
- package/dist/components/ui/input-otp.js +10 -10
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input.cjs +1 -1
- package/dist/components/ui/input.cjs.map +1 -1
- package/dist/components/ui/input.js +7 -7
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/item.cjs +1 -1
- package/dist/components/ui/item.cjs.map +1 -1
- package/dist/components/ui/item.js +17 -17
- package/dist/components/ui/item.js.map +1 -1
- package/dist/components/ui/navigation-menu.cjs +1 -1
- package/dist/components/ui/navigation-menu.cjs.map +1 -1
- package/dist/components/ui/navigation-menu.js +24 -24
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/popover.cjs +2 -0
- package/dist/components/ui/popover.cjs.map +1 -0
- package/dist/components/ui/popover.js +45 -0
- package/dist/components/ui/popover.js.map +1 -0
- package/dist/components/ui/radio-group.cjs +1 -1
- package/dist/components/ui/radio-group.cjs.map +1 -1
- package/dist/components/ui/radio-group.js +16 -16
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/scroll-area.cjs +1 -1
- package/dist/components/ui/scroll-area.cjs.map +1 -1
- package/dist/components/ui/scroll-area.js +6 -6
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.cjs +1 -1
- package/dist/components/ui/select.cjs.map +1 -1
- package/dist/components/ui/select.js +48 -48
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/slider.cjs +1 -1
- package/dist/components/ui/slider.cjs.map +1 -1
- package/dist/components/ui/slider.js +22 -22
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/switch.cjs +1 -1
- package/dist/components/ui/switch.cjs.map +1 -1
- package/dist/components/ui/switch.js +14 -14
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/table.cjs +1 -1
- package/dist/components/ui/table.cjs.map +1 -1
- package/dist/components/ui/table.js +2 -2
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.cjs +1 -1
- package/dist/components/ui/tabs.cjs.map +1 -1
- package/dist/components/ui/tabs.js +9 -9
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.cjs +1 -1
- package/dist/components/ui/textarea.cjs.map +1 -1
- package/dist/components/ui/textarea.js +6 -6
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toggle.cjs +1 -1
- package/dist/components/ui/toggle.cjs.map +1 -1
- package/dist/components/ui/toggle.js +13 -13
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +830 -3
- package/dist/index.js +649 -593
- package/dist/index.js.map +1 -1
- package/dist/index.tailwind.css +1 -1
- package/dist/utils/colors.cjs +1 -1
- package/dist/utils/colors.cjs.map +1 -1
- package/dist/utils/colors.js +43 -21
- package/dist/utils/colors.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { ColumnOrderState } from '@tanstack/react-table';
|
|
|
12
12
|
import { Combobox as Combobox_2 } from '@base-ui/react';
|
|
13
13
|
import { Command as Command_2 } from 'cmdk';
|
|
14
14
|
import { ComponentProps } from 'react';
|
|
15
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
15
16
|
import { Context as Context_2 } from 'react';
|
|
16
17
|
import { ContextMenu as ContextMenu_2 } from 'radix-ui';
|
|
17
18
|
import { DayButton } from 'react-day-picker';
|
|
@@ -35,10 +36,12 @@ import { Locale } from 'react-day-picker';
|
|
|
35
36
|
import { LucideIcon } from 'lucide-react';
|
|
36
37
|
import { MemoExoticComponent } from 'react';
|
|
37
38
|
import { Menubar as Menubar_2 } from 'radix-ui';
|
|
39
|
+
import { MouseEvent as MouseEvent_2 } from 'react';
|
|
38
40
|
import { NavigationMenu as NavigationMenu_2 } from 'radix-ui';
|
|
39
41
|
import { OnChange } from '@monaco-editor/react';
|
|
40
42
|
import { OTPInput } from 'input-otp';
|
|
41
43
|
import { PaginationState } from '@tanstack/react-table';
|
|
44
|
+
import { Popover as Popover_2 } from 'radix-ui';
|
|
42
45
|
import { PropsWithChildren } from 'react';
|
|
43
46
|
import { RadioGroup as RadioGroup_2 } from 'radix-ui';
|
|
44
47
|
import * as React_2 from 'react';
|
|
@@ -115,6 +118,10 @@ declare const alertVariants: (props?: ({
|
|
|
115
118
|
variant?: "default" | "destructive" | "info" | "positive" | "warning" | null | undefined;
|
|
116
119
|
} & ClassProp) | undefined) => string;
|
|
117
120
|
|
|
121
|
+
export declare function allPositions(dims: PlateDimensions): WellId[];
|
|
122
|
+
|
|
123
|
+
export declare function applyFilterCondition(cellValue: string, operator: FilterOperator, filterValue: string): boolean;
|
|
124
|
+
|
|
118
125
|
export declare interface AreaDataSeries {
|
|
119
126
|
x: number[];
|
|
120
127
|
y: number[];
|
|
@@ -220,6 +227,33 @@ export declare type AttachmentsProps = HTMLAttributes<HTMLDivElement> & {
|
|
|
220
227
|
|
|
221
228
|
export declare type AttachmentVariant = "grid" | "inline" | "list";
|
|
222
229
|
|
|
230
|
+
export declare interface AutoFillOptions {
|
|
231
|
+
dims: PlateDimensions;
|
|
232
|
+
/** Number of distinct items to place. Each is repeated `replicates` times. */
|
|
233
|
+
count: number;
|
|
234
|
+
/** First well in fill order. Defaults to position (0,0). */
|
|
235
|
+
startWellId?: WellId;
|
|
236
|
+
/** Traversal strategy. Defaults to `"row-major"`. */
|
|
237
|
+
strategy?: FillStrategy;
|
|
238
|
+
/** Consecutive cells assigned per item. Defaults to 1. */
|
|
239
|
+
replicates?: number;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Compute the ordered list of well ids to assign to `count` items (each
|
|
244
|
+
* repeated `replicates` times) starting from `startWellId`. Returns at most
|
|
245
|
+
* `dims.rows * dims.columns` ids — overflow is silently truncated so callers
|
|
246
|
+
* can paginate onto multiple plates themselves.
|
|
247
|
+
*/
|
|
248
|
+
export declare function autoFillPositions(options: AutoFillOptions): WellId[];
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* Convenience wrapper: assigns each input item to `replicates` consecutive
|
|
252
|
+
* wells, returning a `Map<WellId, T>`. The mapper builds the record stored at
|
|
253
|
+
* each well (e.g. stamp item-specific fields onto a base record).
|
|
254
|
+
*/
|
|
255
|
+
export declare function autoFillRecords<T>(items: T[], buildRecord: (item: T, index: number, wellId: WellId) => T, options: Omit<AutoFillOptions, "count">): Map<WellId, T>;
|
|
256
|
+
|
|
223
257
|
export declare function Avatar({ className, size, ...props }: React_2.ComponentProps<typeof Avatar_2.Root> & {
|
|
224
258
|
size?: "default" | "sm" | "lg";
|
|
225
259
|
}): JSX.Element;
|
|
@@ -509,11 +543,38 @@ export declare type ChainOfThoughtTriggerProps = ComponentProps<typeof Collapsib
|
|
|
509
543
|
};
|
|
510
544
|
|
|
511
545
|
/**
|
|
512
|
-
* Chart color palette for consistent graph styling
|
|
513
|
-
*
|
|
546
|
+
* Chart color palette for consistent graph styling.
|
|
547
|
+
*
|
|
548
|
+
* CVD-friendly (deuteranopia / protanopia / tritanopia) categorical palette.
|
|
549
|
+
* Single source of truth is the `--chart-1` … `--chart-12` CSS variables in
|
|
550
|
+
* `index.tailwind.css`; the hex fallbacks below are used during SSR / before
|
|
551
|
+
* the stylesheet resolves. Slots 1–8 are recommended; 9–12 are for sparing use
|
|
552
|
+
* when more than 8 series are needed.
|
|
514
553
|
*/
|
|
515
554
|
export declare const CHART_COLORS: readonly [string, string, string, string, string, string, string, string, string, string, string, string];
|
|
516
555
|
|
|
556
|
+
/**
|
|
557
|
+
* CVD-friendly diverging ramps (midpoint at step 06/07). Red/green pairings
|
|
558
|
+
* are intentionally avoided (worst for deutan/protan).
|
|
559
|
+
* Source of truth: `--chart-div-*` CSS variables in `index.tailwind.css`.
|
|
560
|
+
*/
|
|
561
|
+
export declare const CHART_DIVERGING: {
|
|
562
|
+
readonly blueOrange: string[];
|
|
563
|
+
readonly tealMagenta: string[];
|
|
564
|
+
readonly purpleYellowGreen: string[];
|
|
565
|
+
};
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* CVD-friendly sequential ramps (light → dark, anchored on brand).
|
|
569
|
+
* 12 steps each — pass to a chart's colorscale / sequential interpolator.
|
|
570
|
+
* Source of truth: `--chart-seq-*` CSS variables in `index.tailwind.css`.
|
|
571
|
+
*/
|
|
572
|
+
export declare const CHART_SEQUENTIAL: {
|
|
573
|
+
readonly blue: string[];
|
|
574
|
+
readonly teal: string[];
|
|
575
|
+
readonly purple: string[];
|
|
576
|
+
};
|
|
577
|
+
|
|
517
578
|
export declare const Chat: ({ initialMessages, models, defaultModel, suggestions, onSend, className, }: ChatProps) => JSX.Element;
|
|
518
579
|
|
|
519
580
|
export declare interface ChatMessage {
|
|
@@ -1134,7 +1195,7 @@ export declare interface DataAppShellProps {
|
|
|
1134
1195
|
className?: string;
|
|
1135
1196
|
}
|
|
1136
1197
|
|
|
1137
|
-
export declare function DataTable<TData, TValue>({ columns, data, toolbar, enableSorting, enableColumnVisibility, children, columnOrder: controlledColumnOrder, onColumnOrderChange, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, columnLabels: controlledColumnLabels, onColumnLabelChange, enablePagination, defaultPageSize, pagination: controlledPagination, onPaginationChange, enableColumnReorder, enableFiltering, filters: controlledFilters, onFiltersChange, filterConfig, manualFiltering, density, className, variant, containerClassName, truncate, }: DataTableProps<TData, TValue>): JSX.Element;
|
|
1198
|
+
export declare function DataTable<TData, TValue>({ columns, data, toolbar, enableSorting, enableColumnVisibility, children, columnOrder: controlledColumnOrder, onColumnOrderChange, columnVisibility: controlledColumnVisibility, onColumnVisibilityChange, columnLabels: controlledColumnLabels, onColumnLabelChange, enablePagination, defaultPageSize, pagination: controlledPagination, onPaginationChange, enableColumnReorder, enableFiltering, filters: controlledFilters, onFiltersChange, filterConfig, manualFiltering, enableGrouping, grouping: controlledGrouping, onGroupingChange, groupConfig, density, className, variant, containerClassName, truncate, }: DataTableProps<TData, TValue>): JSX.Element;
|
|
1138
1199
|
|
|
1139
1200
|
export declare function DataTableColumnToggle({ className }: DataTableColumnToggleProps): JSX.Element | null;
|
|
1140
1201
|
|
|
@@ -1152,6 +1213,16 @@ export declare interface DataTableFilterProps {
|
|
|
1152
1213
|
className?: string;
|
|
1153
1214
|
}
|
|
1154
1215
|
|
|
1216
|
+
export declare function DataTableGroup({ className }: DataTableGroupProps): JSX.Element | null;
|
|
1217
|
+
|
|
1218
|
+
export declare namespace DataTableGroup {
|
|
1219
|
+
var displayName: string;
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
export declare interface DataTableGroupProps {
|
|
1223
|
+
className?: string;
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1155
1226
|
export declare function DataTablePagination({ pageSizeOptions, className, }: DataTablePaginationProps): JSX.Element | null;
|
|
1156
1227
|
|
|
1157
1228
|
export declare interface DataTablePaginationProps {
|
|
@@ -1183,6 +1254,11 @@ export declare interface DataTableProps<TData, TValue> {
|
|
|
1183
1254
|
filterConfig?: FilterColumnConfig[];
|
|
1184
1255
|
/** When true, filtering is handled externally — onFiltersChange fires but rows are not filtered client-side. */
|
|
1185
1256
|
manualFiltering?: boolean;
|
|
1257
|
+
enableGrouping?: boolean;
|
|
1258
|
+
/** ID of the column currently grouped by, or null for no grouping. */
|
|
1259
|
+
grouping?: string | null;
|
|
1260
|
+
onGroupingChange?: (grouping: string | null) => void;
|
|
1261
|
+
groupConfig?: GroupColumnConfig[];
|
|
1186
1262
|
density?: "compact" | "default" | "relaxed";
|
|
1187
1263
|
children?: React_2.ReactNode;
|
|
1188
1264
|
className?: string;
|
|
@@ -1356,6 +1432,8 @@ declare const fieldVariants: (props?: ({
|
|
|
1356
1432
|
orientation?: "horizontal" | "vertical" | "responsive" | null | undefined;
|
|
1357
1433
|
} & ClassProp) | undefined) => string;
|
|
1358
1434
|
|
|
1435
|
+
export declare type FillStrategy = "row-major" | "column-major" | "row-snake" | "column-snake";
|
|
1436
|
+
|
|
1359
1437
|
export declare interface FilterColumnConfig {
|
|
1360
1438
|
columnId: string;
|
|
1361
1439
|
label?: string;
|
|
@@ -1384,6 +1462,8 @@ export declare const getAttachmentLabel: (data: AttachmentData) => string;
|
|
|
1384
1462
|
|
|
1385
1463
|
export declare const getMediaCategory: (data: AttachmentData) => AttachmentMediaCategory;
|
|
1386
1464
|
|
|
1465
|
+
export declare function getPlateMapScopedWellId(plateBarcode: string, wellId: WellId): WellId;
|
|
1466
|
+
|
|
1387
1467
|
export declare const getStatusBadge: (status: ToolPart["state"]) => JSX.Element;
|
|
1388
1468
|
|
|
1389
1469
|
/**
|
|
@@ -1411,6 +1491,11 @@ export declare const getStatusBadge: (status: ToolPart["state"]) => JSX.Element;
|
|
|
1411
1491
|
*/
|
|
1412
1492
|
export declare function getTdpBaseUrlFromReferrer(): string | null;
|
|
1413
1493
|
|
|
1494
|
+
export declare interface GroupColumnConfig {
|
|
1495
|
+
columnId: string;
|
|
1496
|
+
label?: string;
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1414
1499
|
export declare const Heatmap: default_2.FC<HeatmapProps>;
|
|
1415
1500
|
|
|
1416
1501
|
/**
|
|
@@ -1484,6 +1569,13 @@ export declare function HoverCardContent({ className, align, sideOffset, ...prop
|
|
|
1484
1569
|
|
|
1485
1570
|
export declare function HoverCardTrigger({ ...props }: React_2.ComponentProps<typeof HoverCard_2.Trigger>): JSX.Element;
|
|
1486
1571
|
|
|
1572
|
+
export declare interface ImportExportHandlers {
|
|
1573
|
+
onImportCsv?: (file: File, triage?: PlateMapCsvTriage) => void | Promise<void>;
|
|
1574
|
+
onExportCsv?: () => void;
|
|
1575
|
+
onImportTemplate?: (file: File) => void | Promise<void>;
|
|
1576
|
+
onExportTemplate?: () => void;
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1487
1579
|
export declare const InlineCitation: ({ className, ...props }: InlineCitationProps) => JSX.Element;
|
|
1488
1580
|
|
|
1489
1581
|
export declare const InlineCitationCard: (props: InlineCitationCardProps) => JSX.Element;
|
|
@@ -1733,6 +1825,19 @@ export declare type LineGraphVariant = "lines" | "lines+markers" | "lines+marker
|
|
|
1733
1825
|
|
|
1734
1826
|
export declare const LocalReferencedSourcesContext: Context_2<ReferencedSourcesContext | null>;
|
|
1735
1827
|
|
|
1828
|
+
export declare function ManifestFilterPopover({ columns, columnLabel, filters, onFiltersChange, triggerLabel, className, }: ManifestFilterPopoverProps): JSX.Element;
|
|
1829
|
+
|
|
1830
|
+
export declare interface ManifestFilterPopoverProps {
|
|
1831
|
+
/** Filterable columns. Operator subsets can be specified per column. */
|
|
1832
|
+
columns: FilterColumnConfig[];
|
|
1833
|
+
/** Column id → display label resolver. */
|
|
1834
|
+
columnLabel?: (columnId: string) => string;
|
|
1835
|
+
filters: FilterCondition[];
|
|
1836
|
+
onFiltersChange: (next: FilterCondition[]) => void;
|
|
1837
|
+
triggerLabel?: string;
|
|
1838
|
+
className?: string;
|
|
1839
|
+
}
|
|
1840
|
+
|
|
1736
1841
|
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";
|
|
1737
1842
|
|
|
1738
1843
|
declare type MarkerSymbol_2 = "circle" | "square" | "diamond" | "triangle-up" | "triangle-down" | "star";
|
|
@@ -1950,6 +2055,13 @@ export declare interface NavPage {
|
|
|
1950
2055
|
onClick?: () => void;
|
|
1951
2056
|
}
|
|
1952
2057
|
|
|
2058
|
+
export declare function parsePos(id: WellId, dims: PlateDimensions): {
|
|
2059
|
+
row: number;
|
|
2060
|
+
col: number;
|
|
2061
|
+
} | null;
|
|
2062
|
+
|
|
2063
|
+
export declare function parseRowLabel(label: string): number;
|
|
2064
|
+
|
|
1953
2065
|
/**
|
|
1954
2066
|
* Peak annotation for labeling peaks on the chromatogram.
|
|
1955
2067
|
* Used for both user-provided annotations and auto-detected peaks.
|
|
@@ -2033,6 +2145,11 @@ declare const PLATE_FORMAT_96: "96";
|
|
|
2033
2145
|
|
|
2034
2146
|
declare const PLATE_FORMAT_CUSTOM: "custom";
|
|
2035
2147
|
|
|
2148
|
+
export declare interface PlateDimensions {
|
|
2149
|
+
rows: number;
|
|
2150
|
+
columns: number;
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2036
2153
|
/**
|
|
2037
2154
|
* Plate format presets for standard microplate configurations.
|
|
2038
2155
|
* - `"96"`: 8 rows × 12 columns (wells A1-H12)
|
|
@@ -2067,6 +2184,326 @@ export declare type PlateFormat = typeof PLATE_FORMAT_96 | typeof PLATE_FORMAT_3
|
|
|
2067
2184
|
*/
|
|
2068
2185
|
export declare const PlateMap: default_2.FC<PlateMapProps>;
|
|
2069
2186
|
|
|
2187
|
+
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;
|
|
2188
|
+
|
|
2189
|
+
export declare interface PlateMapActionsMenuProps extends ImportExportHandlers {
|
|
2190
|
+
templates?: TemplateOption[];
|
|
2191
|
+
templateId?: string;
|
|
2192
|
+
onTemplateChange?: (id: string) => void;
|
|
2193
|
+
onClearTemplate?: () => void;
|
|
2194
|
+
/** Disable export/save actions when there is nothing to export. */
|
|
2195
|
+
hasEntries?: boolean;
|
|
2196
|
+
label?: React_2.ReactNode;
|
|
2197
|
+
align?: "start" | "center" | "end";
|
|
2198
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
2199
|
+
csvAccept?: string;
|
|
2200
|
+
templateAccept?: string;
|
|
2201
|
+
importTemplateLabel?: string;
|
|
2202
|
+
exportTemplateLabel?: string;
|
|
2203
|
+
importCsvLabel?: string;
|
|
2204
|
+
exportCsvLabel?: string;
|
|
2205
|
+
clearLabel?: string;
|
|
2206
|
+
className?: string;
|
|
2207
|
+
}
|
|
2208
|
+
|
|
2209
|
+
export declare interface PlateMapCsvPlate {
|
|
2210
|
+
/** User-provided plate barcode used as the selectable plate id. */
|
|
2211
|
+
id: string;
|
|
2212
|
+
barcode: string;
|
|
2213
|
+
rows: PlateMapCsvRow[];
|
|
2214
|
+
rowCount: number;
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
export declare interface PlateMapCsvRow {
|
|
2218
|
+
/** 1-based CSV line number, including the header line. */
|
|
2219
|
+
line: number;
|
|
2220
|
+
values: Record<string, string>;
|
|
2221
|
+
}
|
|
2222
|
+
|
|
2223
|
+
export declare interface PlateMapCsvTriage {
|
|
2224
|
+
headers: string[];
|
|
2225
|
+
/** Resolved header name for the plate barcode column, when present. */
|
|
2226
|
+
plateBarcodeColumn?: string;
|
|
2227
|
+
rows: PlateMapCsvRow[];
|
|
2228
|
+
plates: PlateMapCsvPlate[];
|
|
2229
|
+
/** Rows missing a barcode. The editor does not create fallback barcodes. */
|
|
2230
|
+
missingBarcodeRows: PlateMapCsvRow[];
|
|
2231
|
+
}
|
|
2232
|
+
|
|
2233
|
+
export declare interface PlateMapCsvTriageOptions {
|
|
2234
|
+
/** Exact column name to use before trying aliases. */
|
|
2235
|
+
plateBarcodeColumn?: string;
|
|
2236
|
+
/** Additional accepted names for the plate barcode column. */
|
|
2237
|
+
plateBarcodeColumnAliases?: readonly string[];
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
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;
|
|
2241
|
+
|
|
2242
|
+
export declare interface PlateMapEditorProps<T extends WellRecord = WellRecord> extends Omit<PlateMapActionsMenuProps, "hasEntries" | "className"> {
|
|
2243
|
+
format: PlateFormat;
|
|
2244
|
+
rows?: number;
|
|
2245
|
+
columns?: number;
|
|
2246
|
+
values: Map<WellId, T>;
|
|
2247
|
+
onChange: (next: Map<WellId, T>) => void;
|
|
2248
|
+
selection: Set<WellId>;
|
|
2249
|
+
onSelectionChange: (next: Set<WellId>) => void;
|
|
2250
|
+
fields: WellField<T>[];
|
|
2251
|
+
tableColumns: WellColumn<T>[];
|
|
2252
|
+
/** Resolves the SVG fill color for a well. */
|
|
2253
|
+
colorForWell: (well: T | undefined, wellId: WellId) => string;
|
|
2254
|
+
/** Builds an empty record when a well is freshly created. */
|
|
2255
|
+
emptyEntry: (wellId: WellId) => T;
|
|
2256
|
+
/**
|
|
2257
|
+
* Merges the staged form record onto an existing well record on Apply.
|
|
2258
|
+
* Defaults to a shallow merge (form keys overwrite existing keys when set).
|
|
2259
|
+
*/
|
|
2260
|
+
mergeOnApply?: (existing: T | undefined, staged: Partial<T>, wellId: WellId) => T;
|
|
2261
|
+
/** Filter for the manifest's "hide empty" mode. */
|
|
2262
|
+
isPopulated?: (row: T) => boolean;
|
|
2263
|
+
/** Select field cycled when double-clicking a single well, e.g. role painting. */
|
|
2264
|
+
cycleFieldOnWellDoubleClick?: keyof T & string;
|
|
2265
|
+
/** Optional header title (e.g. plate set name). */
|
|
2266
|
+
title?: string;
|
|
2267
|
+
/** Optional badges shown in the header next to the title. */
|
|
2268
|
+
badges?: React_2.ReactNode;
|
|
2269
|
+
/** Optional banner (e.g. import/error alert) shown above the layout. */
|
|
2270
|
+
banner?: React_2.ReactNode;
|
|
2271
|
+
/** Legend block rendered under the form column. */
|
|
2272
|
+
legend?: React_2.ReactNode;
|
|
2273
|
+
/** Form helper slot rendered between fields and the action row. */
|
|
2274
|
+
formExtras?: React_2.ReactNode;
|
|
2275
|
+
/**
|
|
2276
|
+
* Fully replaces the left column. When set, the built-in `WellMetadataForm`
|
|
2277
|
+
* is omitted — use this for alternative workflows like a drag-and-drop
|
|
2278
|
+
* source palette. The legend slot still renders beneath the replacement.
|
|
2279
|
+
*/
|
|
2280
|
+
formSlot?: React_2.ReactNode;
|
|
2281
|
+
/** Footer actions (e.g. Save, Back). */
|
|
2282
|
+
footer?: React_2.ReactNode;
|
|
2283
|
+
/** Title for the plate grid panel. */
|
|
2284
|
+
plateTitle?: React_2.ReactNode;
|
|
2285
|
+
/** Optional controls shown next to the built-in actions menu. */
|
|
2286
|
+
plateToolbar?: React_2.ReactNode;
|
|
2287
|
+
/** User-provided plates available for this editor. Barcodes are never generated by the editor. */
|
|
2288
|
+
plates?: PlateMapPlateOption[];
|
|
2289
|
+
activePlateId?: string;
|
|
2290
|
+
onPlateChange?: (plateId: string) => void;
|
|
2291
|
+
/** Opens the host app's manual barcode entry flow for creating a plate. */
|
|
2292
|
+
onAddPlate?: () => void;
|
|
2293
|
+
/** Removes a plate (typically when using `plateSelectorVariant="tabs"`). */
|
|
2294
|
+
onRemovePlate?: (plateId: string) => void;
|
|
2295
|
+
addPlateLabel?: string;
|
|
2296
|
+
removePlateLabel?: string;
|
|
2297
|
+
plateSelectorLabel?: string;
|
|
2298
|
+
/** Layout of the plate selector. Defaults to `"dropdown"`. */
|
|
2299
|
+
plateSelectorVariant?: PlateMapPlateSelectorVariant;
|
|
2300
|
+
/** Row field used to stamp the active user-provided barcode onto edited wells. Defaults to `plateBarcode`. */
|
|
2301
|
+
plateBarcodeField?: keyof T & string;
|
|
2302
|
+
/** Header for the automatic manifest barcode column. */
|
|
2303
|
+
plateBarcodeColumnHeader?: string;
|
|
2304
|
+
/** Hide the automatic manifest barcode column when plate-scoped editing is active. */
|
|
2305
|
+
hidePlateBarcodeColumn?: boolean;
|
|
2306
|
+
/** Optional grouped well shortcuts rendered under the grid. */
|
|
2307
|
+
groups?: PlateMapGroupOption[];
|
|
2308
|
+
activeGroupId?: string;
|
|
2309
|
+
onGroupClick?: (group: PlateMapGroupOption) => void;
|
|
2310
|
+
/** Custom hover summary for the strip above the grid. */
|
|
2311
|
+
renderHoverSummary?: (well: T | undefined, wellId: WellId) => React_2.ReactNode;
|
|
2312
|
+
/** Fixed well size. When unset, the grid grows with the available width. */
|
|
2313
|
+
cellSize?: number;
|
|
2314
|
+
/** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
|
|
2315
|
+
emptyWellFillColor?: string | null;
|
|
2316
|
+
/** Well shape forwarded to `PlatePaintGrid`. Defaults to `"rect"`. */
|
|
2317
|
+
wellShape?: WellShape;
|
|
2318
|
+
/** When true, wraps the grid in a card-like plate frame (rounded + border + soft shadow). */
|
|
2319
|
+
framedPlate?: boolean;
|
|
2320
|
+
/**
|
|
2321
|
+
* Forwarded to `PlatePaintGrid`. Render-prop that places a node inside each
|
|
2322
|
+
* absolute-positioned well cell — used to wire drop targets without binding
|
|
2323
|
+
* the kit to a specific DnD library.
|
|
2324
|
+
*/
|
|
2325
|
+
wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
|
|
2326
|
+
/** Wells to highlight (e.g. when hovering a legend item externally). */
|
|
2327
|
+
highlightedWellIds?: ReadonlySet<WellId>;
|
|
2328
|
+
/** Fires whenever the currently hovered well changes (null on leave). */
|
|
2329
|
+
onHoveredWellChange?: (wellId: WellId | null) => void;
|
|
2330
|
+
/** Enables the filter popover on the manifest table. */
|
|
2331
|
+
manifestFilterable?: boolean;
|
|
2332
|
+
/** Enables the group-by selector on the manifest table. */
|
|
2333
|
+
manifestGroupable?: boolean;
|
|
2334
|
+
autoScaleGrid?: boolean;
|
|
2335
|
+
minCellSize?: number;
|
|
2336
|
+
maxCellSize?: number;
|
|
2337
|
+
className?: string;
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
/**
|
|
2341
|
+
* Card-agnostic metadata form panel. Renders the staged-value form (or a
|
|
2342
|
+
* caller-supplied `formSlot`) plus an optional legend. Bring your own
|
|
2343
|
+
* container — drop it bare into a sidebar, wrap it in a `Card`, or stack it
|
|
2344
|
+
* above the grid.
|
|
2345
|
+
*/
|
|
2346
|
+
export declare function PlateMapForm<T extends WellRecord = WellRecord>({ fields, value, onChange, selectionSize, onApply, onClear, applyLabel, clearLabel, extras, legend, formSlot, className, }: PlateMapFormProps<T>): JSX.Element;
|
|
2347
|
+
|
|
2348
|
+
export declare interface PlateMapFormProps<T extends WellRecord = WellRecord> {
|
|
2349
|
+
fields: WellField<T>[];
|
|
2350
|
+
/** Staged values applied across the current selection on Apply. */
|
|
2351
|
+
value: Partial<T>;
|
|
2352
|
+
onChange: (next: Partial<T>) => void;
|
|
2353
|
+
selectionSize: number;
|
|
2354
|
+
onApply: () => void;
|
|
2355
|
+
onClear: () => void;
|
|
2356
|
+
applyLabel?: string;
|
|
2357
|
+
clearLabel?: string;
|
|
2358
|
+
/** Helper slot rendered between the fields and the action row. */
|
|
2359
|
+
extras?: React_2.ReactNode;
|
|
2360
|
+
/** Legend block rendered beneath the form, separated by a divider. */
|
|
2361
|
+
legend?: React_2.ReactNode;
|
|
2362
|
+
/**
|
|
2363
|
+
* Fully replaces the built-in `WellMetadataForm` — e.g. a drag-and-drop
|
|
2364
|
+
* source palette. The legend slot still renders beneath the replacement.
|
|
2365
|
+
*/
|
|
2366
|
+
formSlot?: React_2.ReactNode;
|
|
2367
|
+
className?: string;
|
|
2368
|
+
}
|
|
2369
|
+
|
|
2370
|
+
/**
|
|
2371
|
+
* Card-agnostic plate grid panel. Renders the selection toolbar, hover
|
|
2372
|
+
* summary, the interactive `PlatePaintGrid`, and optional group shortcuts —
|
|
2373
|
+
* and owns the ephemeral hover state internally. The plate title, plate
|
|
2374
|
+
* selector, and actions menu are intentionally NOT part of this panel; compose
|
|
2375
|
+
* `PlateMapPlateSelector` and `PlateMapActionsMenu` around it for full layout
|
|
2376
|
+
* freedom.
|
|
2377
|
+
*/
|
|
2378
|
+
export declare function PlateMapGrid<T extends WellRecord = WellRecord>({ format, rows, columns, values, selection, onSelectionChange, colorForWell, fields, renderHoverSummary, onHoveredWellChange, hoveredWellId, toolbar, hideSelectionControls, selectAllLabel, deselectAllLabel, emptyWellFillColor, wellShape, framed, wrapWell, highlightedWellIds, onWellDoubleClick, selectionFillMode, flashWellId, flashWellKey, cellSize, autoScale, minCellSize, maxCellSize, groups, activeGroupId, onGroupClick, className, }: PlateMapGridProps<T>): JSX.Element;
|
|
2379
|
+
|
|
2380
|
+
export declare interface PlateMapGridProps<T extends WellRecord = WellRecord> {
|
|
2381
|
+
format: PlateFormat;
|
|
2382
|
+
rows?: number;
|
|
2383
|
+
columns?: number;
|
|
2384
|
+
values: Map<WellId, T>;
|
|
2385
|
+
selection: Set<WellId>;
|
|
2386
|
+
onSelectionChange: (next: Set<WellId>) => void;
|
|
2387
|
+
/** Resolves the SVG fill color for a well. */
|
|
2388
|
+
colorForWell: (well: T | undefined, wellId: WellId) => string;
|
|
2389
|
+
/** Field schema used to build the default hover summary string. */
|
|
2390
|
+
fields?: WellField<T>[];
|
|
2391
|
+
/** Custom hover summary for the strip above the grid. */
|
|
2392
|
+
renderHoverSummary?: (well: T | undefined, wellId: WellId) => React_2.ReactNode;
|
|
2393
|
+
/** Fires whenever the currently hovered well changes (null on leave). */
|
|
2394
|
+
onHoveredWellChange?: (wellId: WellId | null) => void;
|
|
2395
|
+
/**
|
|
2396
|
+
* Controlled hovered well id. When provided, the panel reflects this value
|
|
2397
|
+
* instead of tracking hover internally — useful for syncing the hover
|
|
2398
|
+
* summary with external state (e.g. resetting it on a plate switch).
|
|
2399
|
+
*/
|
|
2400
|
+
hoveredWellId?: WellId | null;
|
|
2401
|
+
/** Controls rendered to the left of the built-in select/deselect links. */
|
|
2402
|
+
toolbar?: React_2.ReactNode;
|
|
2403
|
+
/** Hide the built-in "Select all" / "Deselect all" links. */
|
|
2404
|
+
hideSelectionControls?: boolean;
|
|
2405
|
+
selectAllLabel?: string;
|
|
2406
|
+
deselectAllLabel?: string;
|
|
2407
|
+
/** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
|
|
2408
|
+
emptyWellFillColor?: string | null;
|
|
2409
|
+
/** Well shape forwarded to `PlatePaintGrid`. Defaults to `"rect"`. */
|
|
2410
|
+
wellShape?: WellShape;
|
|
2411
|
+
/** When true, wraps the grid in a card-like plate frame (rounded + border + soft shadow). */
|
|
2412
|
+
framed?: boolean;
|
|
2413
|
+
/** Render-prop that places a node inside each absolute-positioned well cell. */
|
|
2414
|
+
wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
|
|
2415
|
+
/** Wells to highlight (e.g. when hovering a legend item externally). */
|
|
2416
|
+
highlightedWellIds?: ReadonlySet<WellId>;
|
|
2417
|
+
onWellDoubleClick?: (wellId: WellId) => void;
|
|
2418
|
+
selectionFillMode?: "selection" | "well";
|
|
2419
|
+
flashWellId?: WellId;
|
|
2420
|
+
flashWellKey?: number;
|
|
2421
|
+
/** Fixed well size. When unset, the grid grows with the available width. */
|
|
2422
|
+
cellSize?: number;
|
|
2423
|
+
autoScale?: boolean;
|
|
2424
|
+
minCellSize?: number;
|
|
2425
|
+
maxCellSize?: number;
|
|
2426
|
+
/** Optional grouped well shortcuts rendered under the grid. */
|
|
2427
|
+
groups?: PlateMapGroupOption[];
|
|
2428
|
+
activeGroupId?: string;
|
|
2429
|
+
onGroupClick?: (group: PlateMapGroupOption) => void;
|
|
2430
|
+
className?: string;
|
|
2431
|
+
}
|
|
2432
|
+
|
|
2433
|
+
export declare interface PlateMapGroupOption {
|
|
2434
|
+
id: string;
|
|
2435
|
+
label: string;
|
|
2436
|
+
/** Well ids in the group; callers can use this to select the group. */
|
|
2437
|
+
wellIds?: WellId[];
|
|
2438
|
+
/** Optional explicit count; defaults to `wellIds.length` when present. */
|
|
2439
|
+
count?: number;
|
|
2440
|
+
color?: string;
|
|
2441
|
+
borderColor?: string;
|
|
2442
|
+
disabled?: boolean;
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
/**
|
|
2446
|
+
* Card-agnostic sample-manifest panel. A thin wrapper over `WellManifestTable`
|
|
2447
|
+
* with an optional heading and no width constraint of its own, so it can span
|
|
2448
|
+
* the full screen width or sit inside any container the caller chooses.
|
|
2449
|
+
*/
|
|
2450
|
+
export declare function PlateMapManifest<T extends WellRecord = WellRecord>({ values, onChange, columns, fields, selection, onSelectionChange, emptyEntry, isPopulated, filterable, groupable, pageSize, pageSizeOptions, title, className, }: PlateMapManifestProps<T>): JSX.Element;
|
|
2451
|
+
|
|
2452
|
+
export declare interface PlateMapManifestProps<T extends WellRecord = WellRecord> {
|
|
2453
|
+
values: Map<WellId, T>;
|
|
2454
|
+
onChange: (next: Map<WellId, T>) => void;
|
|
2455
|
+
columns: WellColumn<T>[];
|
|
2456
|
+
fields?: WellField<T>[];
|
|
2457
|
+
selection?: Set<WellId>;
|
|
2458
|
+
onSelectionChange?: (next: Set<WellId>) => void;
|
|
2459
|
+
/** Builds an empty record when a manifest row is freshly created. */
|
|
2460
|
+
emptyEntry: (id: WellId) => T;
|
|
2461
|
+
/** Filter for the manifest's "hide empty" mode. */
|
|
2462
|
+
isPopulated?: (row: T) => boolean;
|
|
2463
|
+
/** Enables the filter popover on the manifest table. */
|
|
2464
|
+
filterable?: boolean;
|
|
2465
|
+
/** Enables the group-by selector on the manifest table. */
|
|
2466
|
+
groupable?: boolean;
|
|
2467
|
+
pageSize?: number;
|
|
2468
|
+
pageSizeOptions?: number[];
|
|
2469
|
+
/** Optional heading rendered above the table. Omit for a bare table. */
|
|
2470
|
+
title?: React_2.ReactNode;
|
|
2471
|
+
className?: string;
|
|
2472
|
+
}
|
|
2473
|
+
|
|
2474
|
+
export declare interface PlateMapPlateOption {
|
|
2475
|
+
/** Stable plate id. For imported CSVs this should be the user-provided barcode. */
|
|
2476
|
+
id: string;
|
|
2477
|
+
/** User-provided plate barcode. Barcodes are never generated by the editor. */
|
|
2478
|
+
barcode: string;
|
|
2479
|
+
/** Optional display label when it differs from the barcode. */
|
|
2480
|
+
label?: string;
|
|
2481
|
+
/** Optional count shown beside the plate pill, usually imported row/well count. */
|
|
2482
|
+
count?: number;
|
|
2483
|
+
disabled?: boolean;
|
|
2484
|
+
}
|
|
2485
|
+
|
|
2486
|
+
export declare function PlateMapPlateSelector({ plates, activePlateId, onPlateChange, onAddPlate, onRemovePlate, addPlateLabel, removePlateLabel, label, variant, align, side, className, }: PlateMapPlateSelectorProps): JSX.Element;
|
|
2487
|
+
|
|
2488
|
+
export declare interface PlateMapPlateSelectorProps {
|
|
2489
|
+
plates?: PlateMapPlateOption[];
|
|
2490
|
+
activePlateId?: string;
|
|
2491
|
+
onPlateChange?: (plateId: string) => void;
|
|
2492
|
+
onAddPlate?: () => void;
|
|
2493
|
+
/** When supplied, the tabs variant renders a delete affordance per plate. */
|
|
2494
|
+
onRemovePlate?: (plateId: string) => void;
|
|
2495
|
+
addPlateLabel?: string;
|
|
2496
|
+
removePlateLabel?: string;
|
|
2497
|
+
label?: string;
|
|
2498
|
+
/** Layout. `"dropdown"` is the default single-trigger menu, `"tabs"` is a horizontal tab strip. */
|
|
2499
|
+
variant?: PlateMapPlateSelectorVariant;
|
|
2500
|
+
align?: "start" | "center" | "end";
|
|
2501
|
+
side?: "top" | "right" | "bottom" | "left";
|
|
2502
|
+
className?: string;
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2505
|
+
export declare type PlateMapPlateSelectorVariant = "dropdown" | "tabs";
|
|
2506
|
+
|
|
2070
2507
|
/**
|
|
2071
2508
|
* Props for PlateMap component
|
|
2072
2509
|
*/
|
|
@@ -2168,6 +2605,76 @@ export declare interface PlateMapProps {
|
|
|
2168
2605
|
onWellClick?: (wellData: WellData) => void;
|
|
2169
2606
|
}
|
|
2170
2607
|
|
|
2608
|
+
export declare function plateOptionsFromCsvTriage(triage: PlateMapCsvTriage): PlateMapPlateOption[];
|
|
2609
|
+
|
|
2610
|
+
/**
|
|
2611
|
+
* Interactive plate grid with drag-rectangle selection.
|
|
2612
|
+
* - Click & drag: replace selection
|
|
2613
|
+
* - Shift + drag: add to selection
|
|
2614
|
+
* - Alt + drag: remove from selection
|
|
2615
|
+
*/
|
|
2616
|
+
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;
|
|
2617
|
+
|
|
2618
|
+
export declare interface PlatePaintGridProps<T extends WellRecord = WellRecord> {
|
|
2619
|
+
format: PlateFormat;
|
|
2620
|
+
rows?: number;
|
|
2621
|
+
columns?: number;
|
|
2622
|
+
values: Map<WellId, T>;
|
|
2623
|
+
selection: Set<WellId>;
|
|
2624
|
+
onSelectionChange: (next: Set<WellId>) => void;
|
|
2625
|
+
/** Returns the fill color for a given well record (or undefined if empty). */
|
|
2626
|
+
colorForWell: (well: T | undefined, wellId: WellId) => string;
|
|
2627
|
+
/** Fill color for empty wells. Pass `null` to delegate empty wells to `colorForWell`. */
|
|
2628
|
+
emptyWellFillColor?: string | null;
|
|
2629
|
+
/** Geometric shape of each well. `"circle"` matches scientific plate visuals. Defaults to `"rect"`. */
|
|
2630
|
+
wellShape?: WellShape;
|
|
2631
|
+
/**
|
|
2632
|
+
* When true, wraps the grid in a card-like surface (rounded, bordered,
|
|
2633
|
+
* padded, soft shadow) so it reads as a physical plate. Pairs well with
|
|
2634
|
+
* `wellShape="circle"`.
|
|
2635
|
+
*/
|
|
2636
|
+
framed?: boolean;
|
|
2637
|
+
/** Pixel size of each well cell. Defaults to 34 when fixed. */
|
|
2638
|
+
cellSize?: number;
|
|
2639
|
+
/** Resize wells to fill available width when `cellSize` is not fixed. */
|
|
2640
|
+
autoScale?: boolean;
|
|
2641
|
+
minCellSize?: number;
|
|
2642
|
+
/** Defaults to 72 for 96-well style plates and 36 for denser plates. */
|
|
2643
|
+
maxCellSize?: number;
|
|
2644
|
+
/** Stroke color for non-selected wells. Defaults to a light border. */
|
|
2645
|
+
borderColor?: string;
|
|
2646
|
+
/** Stroke color for selected wells. Defaults to the kit primary blue. */
|
|
2647
|
+
selectedBorderColor?: string;
|
|
2648
|
+
/** Fill color for selected wells. Defaults to the kit primary blue. */
|
|
2649
|
+
selectedFillColor?: string;
|
|
2650
|
+
/** Selected fill opacity. */
|
|
2651
|
+
selectedFillOpacity?: number;
|
|
2652
|
+
/** Whether selected wells use the selection fill or keep their assigned well color. */
|
|
2653
|
+
selectionFillMode?: "selection" | "well";
|
|
2654
|
+
/** Well id that should briefly flash, usually after a double-click assignment. */
|
|
2655
|
+
flashWellId?: WellId;
|
|
2656
|
+
/** Changing this value restarts the flash animation for the same well. */
|
|
2657
|
+
flashWellKey?: number;
|
|
2658
|
+
/**
|
|
2659
|
+
* Well ids that should render with a highlight ring. Used for cross-component
|
|
2660
|
+
* hover sync (e.g. hovering a legend item to highlight matching wells).
|
|
2661
|
+
*/
|
|
2662
|
+
highlightedWellIds?: ReadonlySet<WellId>;
|
|
2663
|
+
/** Stroke color for highlighted wells. Defaults to the kit primary blue. */
|
|
2664
|
+
highlightBorderColor?: string;
|
|
2665
|
+
onWellHover?: (wellId: WellId | null) => void;
|
|
2666
|
+
onWellDoubleClick?: (wellId: WellId) => void;
|
|
2667
|
+
/**
|
|
2668
|
+
* Optional render-prop invoked once per well. The returned node is placed
|
|
2669
|
+
* inside an absolutely-positioned cell on top of the SVG, sized to
|
|
2670
|
+
* `cellSize`. The wrapper layer is `pointer-events: none` so the SVG keeps
|
|
2671
|
+
* pointer interaction by default; consumers wiring drop targets are expected
|
|
2672
|
+
* to set `pointer-events: auto` on their own element while a drag is active.
|
|
2673
|
+
*/
|
|
2674
|
+
wrapWell?: (wellId: WellId, cellSize: number) => React_2.ReactNode;
|
|
2675
|
+
className?: string;
|
|
2676
|
+
}
|
|
2677
|
+
|
|
2171
2678
|
/**
|
|
2172
2679
|
* A region to highlight on the plate (e.g., controls, sample areas, empty wells)
|
|
2173
2680
|
*/
|
|
@@ -2189,6 +2696,127 @@ declare interface PlateRegion {
|
|
|
2189
2696
|
fillColor?: string;
|
|
2190
2697
|
}
|
|
2191
2698
|
|
|
2699
|
+
export declare function PlateZoomControl({ zoom, onZoomChange, step, min, max, showReadout, className, }: PlateZoomControlProps): JSX.Element;
|
|
2700
|
+
|
|
2701
|
+
export declare interface PlateZoomControlProps {
|
|
2702
|
+
zoom: number;
|
|
2703
|
+
onZoomChange: (next: number) => void;
|
|
2704
|
+
/** Increment per click. Defaults to 0.1. */
|
|
2705
|
+
step?: number;
|
|
2706
|
+
min?: number;
|
|
2707
|
+
max?: number;
|
|
2708
|
+
/** Render a percentage readout between the buttons. Defaults to true. */
|
|
2709
|
+
showReadout?: boolean;
|
|
2710
|
+
className?: string;
|
|
2711
|
+
}
|
|
2712
|
+
|
|
2713
|
+
export declare function Popover({ ...props }: React_2.ComponentProps<typeof Popover_2.Root>): JSX.Element;
|
|
2714
|
+
|
|
2715
|
+
export declare function PopoverAnchor({ ...props }: React_2.ComponentProps<typeof Popover_2.Anchor>): JSX.Element;
|
|
2716
|
+
|
|
2717
|
+
export declare function PopoverContent({ className, align, sideOffset, ...props }: React_2.ComponentProps<typeof Popover_2.Content>): JSX.Element;
|
|
2718
|
+
|
|
2719
|
+
export declare function PopoverTrigger({ ...props }: React_2.ComponentProps<typeof Popover_2.Trigger>): JSX.Element;
|
|
2720
|
+
|
|
2721
|
+
export declare function pos(row: number, col: number, columns: number): WellId;
|
|
2722
|
+
|
|
2723
|
+
/**
|
|
2724
|
+
* Runtime list of the visual states supported by ProcessFlow steps.
|
|
2725
|
+
* Use this for controls, schemas, and forms that need to present the same status values the component understands.
|
|
2726
|
+
*/
|
|
2727
|
+
export declare const PROCESS_FLOW_STEP_STATUSES: readonly ["pending", "active", "completed", "error", "disabled"];
|
|
2728
|
+
|
|
2729
|
+
export declare function ProcessFlow({ steps, connections, selectedStepId, onStepSelect, orientation, size, showDescriptions, className, style, "aria-label": ariaLabel, ...props }: ProcessFlowProps): JSX.Element | null;
|
|
2730
|
+
|
|
2731
|
+
/** Connection between two steps in a branching/configurable flow. Linear flows derive connections automatically. */
|
|
2732
|
+
export declare interface ProcessFlowConnection {
|
|
2733
|
+
id?: string;
|
|
2734
|
+
from: string;
|
|
2735
|
+
to: string;
|
|
2736
|
+
status?: ProcessFlowStepStatus;
|
|
2737
|
+
ariaLabel?: string;
|
|
2738
|
+
}
|
|
2739
|
+
|
|
2740
|
+
/** Direction for linear process flows. Branching flows are configured with step positions and connections. */
|
|
2741
|
+
export declare type ProcessFlowOrientation = "horizontal" | "vertical";
|
|
2742
|
+
|
|
2743
|
+
/**
|
|
2744
|
+
* Presentational process flow.
|
|
2745
|
+
*
|
|
2746
|
+
* ProcessFlow is fully controlled by props. It visualizes parent-owned workflow state and emits user selection through
|
|
2747
|
+
* onStepSelect. It intentionally does not own status transitions or fire completion/error side effects.
|
|
2748
|
+
*/
|
|
2749
|
+
export declare interface ProcessFlowProps extends Omit<ComponentPropsWithoutRef<"nav">, "onSelect"> {
|
|
2750
|
+
/** Ordered list of steps to render. Each step controls its own visual status. */
|
|
2751
|
+
steps: ProcessFlowStep[];
|
|
2752
|
+
/** Optional explicit connections for branching/configurable flows. */
|
|
2753
|
+
connections?: ProcessFlowConnection[];
|
|
2754
|
+
/** Selected/viewed step id. This is separate from the active workflow status. */
|
|
2755
|
+
selectedStepId?: string;
|
|
2756
|
+
/** Called when a selectable step is clicked. Disabled and non-selectable steps do not call this. */
|
|
2757
|
+
onStepSelect?: (step: ProcessFlowStep, details: ProcessFlowStepSelectDetails) => void;
|
|
2758
|
+
orientation?: ProcessFlowOrientation;
|
|
2759
|
+
size?: ProcessFlowSize;
|
|
2760
|
+
/** Defaults to true. Set to false to hide step descriptions. */
|
|
2761
|
+
showDescriptions?: boolean;
|
|
2762
|
+
}
|
|
2763
|
+
|
|
2764
|
+
/** Visual density of the process flow. */
|
|
2765
|
+
export declare type ProcessFlowSize = "default" | "compact";
|
|
2766
|
+
|
|
2767
|
+
/**
|
|
2768
|
+
* Configurable step rendered by ProcessFlow.
|
|
2769
|
+
*
|
|
2770
|
+
* Keep workflow-specific behavior in the parent. A step config should describe what to render, not what to do when a
|
|
2771
|
+
* workflow completes or errors.
|
|
2772
|
+
*/
|
|
2773
|
+
export declare interface ProcessFlowStep {
|
|
2774
|
+
/** Stable identifier used for selection and connections. */
|
|
2775
|
+
id: string;
|
|
2776
|
+
/** Visible step label. */
|
|
2777
|
+
label: ReactNode;
|
|
2778
|
+
/** Optional secondary text shown under or beside the label. */
|
|
2779
|
+
description?: ReactNode;
|
|
2780
|
+
/** Parent-controlled visual state. Defaults to "pending". */
|
|
2781
|
+
status?: ProcessFlowStepStatus;
|
|
2782
|
+
/** Accessible label for selectable steps. */
|
|
2783
|
+
ariaLabel?: string;
|
|
2784
|
+
/** Forces the step into the disabled visual/non-interactive state. */
|
|
2785
|
+
disabled?: boolean;
|
|
2786
|
+
/** Set to false when the step should render as non-navigable even when onStepSelect is provided. */
|
|
2787
|
+
selectable?: boolean;
|
|
2788
|
+
/** Optional grid position for simple branching/configurable layouts. */
|
|
2789
|
+
position?: ProcessFlowStepPosition;
|
|
2790
|
+
}
|
|
2791
|
+
|
|
2792
|
+
export declare type ProcessFlowStepConfig = ProcessFlowStep;
|
|
2793
|
+
|
|
2794
|
+
export declare interface ProcessFlowStepPosition {
|
|
2795
|
+
/** Zero-based row used when rendering a simple branching/configurable flow. */
|
|
2796
|
+
row?: number;
|
|
2797
|
+
/** Zero-based column used when rendering a simple branching/configurable flow. */
|
|
2798
|
+
column?: number;
|
|
2799
|
+
}
|
|
2800
|
+
|
|
2801
|
+
export declare interface ProcessFlowStepSelectDetails {
|
|
2802
|
+
/** Zero-based index of the selected step in the steps prop. */
|
|
2803
|
+
stepIndex: number;
|
|
2804
|
+
/** Current visual status of the selected step. */
|
|
2805
|
+
status: ProcessFlowStepStatus;
|
|
2806
|
+
nativeEvent: MouseEvent_2<HTMLButtonElement>;
|
|
2807
|
+
}
|
|
2808
|
+
|
|
2809
|
+
/**
|
|
2810
|
+
* Visual state for a ProcessFlow step.
|
|
2811
|
+
*
|
|
2812
|
+
* The parent application owns this state. ProcessFlow renders the provided status and does not run workflow side effects.
|
|
2813
|
+
*/
|
|
2814
|
+
export declare type ProcessFlowStepStatus = (typeof PROCESS_FLOW_STEP_STATUSES)[number];
|
|
2815
|
+
|
|
2816
|
+
export declare type ProcessStep = ProcessFlowStep;
|
|
2817
|
+
|
|
2818
|
+
export declare type ProcessStepStatus = ProcessFlowStepStatus;
|
|
2819
|
+
|
|
2192
2820
|
export declare const PromptInput: ({ className, accept, multiple, globalDrop, syncHiddenInput, maxFiles, maxFileSize, onError, onSubmit, children, ...props }: PromptInputProps) => JSX.Element;
|
|
2193
2821
|
|
|
2194
2822
|
export declare const PromptInputActionAddAttachments: ({ label, ...props }: PromptInputActionAddAttachmentsProps) => JSX.Element;
|
|
@@ -2521,6 +3149,8 @@ export declare type ReasoningTriggerProps = ComponentProps<typeof CollapsibleTri
|
|
|
2521
3149
|
getThinkingMessage?: (isStreaming: boolean, duration?: number) => ReactNode;
|
|
2522
3150
|
};
|
|
2523
3151
|
|
|
3152
|
+
export declare function rectPositions(r0: number, c0: number, r1: number, c1: number, columns: number): WellId[];
|
|
3153
|
+
|
|
2524
3154
|
export declare interface ReferencedSourcesContext {
|
|
2525
3155
|
sources: (SourceDocumentUIPart & {
|
|
2526
3156
|
id: string;
|
|
@@ -2538,6 +3168,8 @@ export declare function ResizablePanel({ ...props }: ResizablePrimitive.PanelPro
|
|
|
2538
3168
|
|
|
2539
3169
|
export declare function ResizablePanelGroup({ className, ...props }: ResizablePrimitive.GroupProps): JSX.Element;
|
|
2540
3170
|
|
|
3171
|
+
export declare function resolveDimensions(format: PlateFormat, rows?: number, columns?: number): PlateDimensions;
|
|
3172
|
+
|
|
2541
3173
|
export declare function RichListItem({ leading, primary, secondary, trailing, actions, className, variant, size, ...props }: RichListItemProps): JSX.Element;
|
|
2542
3174
|
|
|
2543
3175
|
export declare function RichListItemAvatar({ initials, className, fallbackClassName, size, ...props }: RichListItemAvatarProps): JSX.Element;
|
|
@@ -2560,6 +3192,9 @@ export declare interface RichListItemProps extends Omit<React_2.ComponentProps<t
|
|
|
2560
3192
|
actions?: React_2.ReactNode;
|
|
2561
3193
|
}
|
|
2562
3194
|
|
|
3195
|
+
/** Letter for a row index. Supports A-Z then AA-ZZ for 1536-format plates. */
|
|
3196
|
+
export declare function rowLabel(row: number): string;
|
|
3197
|
+
|
|
2563
3198
|
export declare interface ScatterDataPoint {
|
|
2564
3199
|
x: number;
|
|
2565
3200
|
y: number;
|
|
@@ -2880,6 +3515,10 @@ declare interface TableContextValue<TData> {
|
|
|
2880
3515
|
setFilters: (filters: FilterCondition[]) => void;
|
|
2881
3516
|
filterConfig: FilterColumnConfig[];
|
|
2882
3517
|
enableFiltering: boolean;
|
|
3518
|
+
grouping: string | null;
|
|
3519
|
+
setGrouping: (columnId: string | null) => void;
|
|
3520
|
+
groupConfig: GroupColumnConfig[];
|
|
3521
|
+
enableGrouping: boolean;
|
|
2883
3522
|
}
|
|
2884
3523
|
|
|
2885
3524
|
export declare function TableFooter({ className, ...props }: React_2.ComponentProps<"tfoot">): JSX.Element;
|
|
@@ -3119,6 +3758,30 @@ export declare interface TdpSearchSort {
|
|
|
3119
3758
|
order: "asc" | "desc";
|
|
3120
3759
|
}
|
|
3121
3760
|
|
|
3761
|
+
export declare function TemplateIOPanel({ templates, templateId, onTemplateChange, onClearTemplate, hasEntries, onImportCsv, onExportCsv, onImportTemplate, onExportTemplate, className, csvAccept, templateAccept, }: TemplateIOPanelProps): JSX.Element;
|
|
3762
|
+
|
|
3763
|
+
export declare interface TemplateIOPanelProps extends ImportExportHandlers {
|
|
3764
|
+
templates?: TemplateOption[];
|
|
3765
|
+
templateId?: string;
|
|
3766
|
+
onTemplateChange?: (id: string) => void;
|
|
3767
|
+
onClearTemplate?: () => void;
|
|
3768
|
+
/** Disable export buttons when there's nothing to export. */
|
|
3769
|
+
hasEntries?: boolean;
|
|
3770
|
+
className?: string;
|
|
3771
|
+
csvAccept?: string;
|
|
3772
|
+
templateAccept?: string;
|
|
3773
|
+
}
|
|
3774
|
+
|
|
3775
|
+
export declare interface TemplateOption {
|
|
3776
|
+
id: string;
|
|
3777
|
+
label: string;
|
|
3778
|
+
/** Optional group header in the dropdown (e.g. "Built-in", "User"). */
|
|
3779
|
+
group?: string;
|
|
3780
|
+
/** Optional supporting text for richer chooser menus. */
|
|
3781
|
+
description?: string;
|
|
3782
|
+
disabled?: boolean;
|
|
3783
|
+
}
|
|
3784
|
+
|
|
3122
3785
|
export declare const TetraScienceIcon: React_2.ForwardRefExoticComponent<Omit<TetraScienceIconProps, "ref"> & React_2.RefAttributes<SVGSVGElement>>;
|
|
3123
3786
|
|
|
3124
3787
|
export declare interface TetraScienceIconProps extends React_2.SVGProps<SVGSVGElement> {
|
|
@@ -3235,6 +3898,10 @@ declare type ToolUIPartApproval = {
|
|
|
3235
3898
|
reason?: string;
|
|
3236
3899
|
} | undefined;
|
|
3237
3900
|
|
|
3901
|
+
export declare function triagePlateMapCsvByBarcode(text: string, options?: PlateMapCsvTriageOptions): PlateMapCsvTriage;
|
|
3902
|
+
|
|
3903
|
+
export declare function triagePlateMapCsvFile(file: File, options?: PlateMapCsvTriageOptions): Promise<PlateMapCsvTriage | undefined>;
|
|
3904
|
+
|
|
3238
3905
|
/** TetraScience brand gradient — Light Blue 300 → Purple 500 → Violet Marble */
|
|
3239
3906
|
export declare const TS_SHIMMER_GRADIENT = "linear-gradient(90deg, #549DFF, #8243BA, #9665F4)";
|
|
3240
3907
|
|
|
@@ -3335,6 +4002,27 @@ export declare interface UseTdpNavigationReturn {
|
|
|
3335
4002
|
*/
|
|
3336
4003
|
declare type VisualizationMode = "heatmap" | "categorical";
|
|
3337
4004
|
|
|
4005
|
+
export declare interface WellColumn<T extends WellRecord = WellRecord> {
|
|
4006
|
+
/** Stable id; falls back to `field` if omitted. */
|
|
4007
|
+
id?: string;
|
|
4008
|
+
header: string;
|
|
4009
|
+
/** Optional leading icon in the table header. */
|
|
4010
|
+
icon?: React_2.ReactNode;
|
|
4011
|
+
/** Read direct property when `field` is set. */
|
|
4012
|
+
field?: keyof T & string;
|
|
4013
|
+
/** Min width in px (applied via inline style). */
|
|
4014
|
+
minWidth?: number;
|
|
4015
|
+
/**
|
|
4016
|
+
* Cell renderer. If omitted, the cell renders a display value. `select`
|
|
4017
|
+
* fields render as badge-style custom cells using the matching option label.
|
|
4018
|
+
*/
|
|
4019
|
+
render?: (ctx: {
|
|
4020
|
+
row: T;
|
|
4021
|
+
wellId: WellId;
|
|
4022
|
+
update: (patch: Partial<T>) => void;
|
|
4023
|
+
}) => React_2.ReactNode;
|
|
4024
|
+
}
|
|
4025
|
+
|
|
3338
4026
|
/**
|
|
3339
4027
|
* Well data for individual wells.
|
|
3340
4028
|
*
|
|
@@ -3390,6 +4078,145 @@ export declare interface WellData {
|
|
|
3390
4078
|
tooltipData?: Record<string, unknown>;
|
|
3391
4079
|
}
|
|
3392
4080
|
|
|
4081
|
+
export declare interface WellField<T extends WellRecord = WellRecord> {
|
|
4082
|
+
/** Key in the well record this field reads/writes. */
|
|
4083
|
+
key: keyof T & string;
|
|
4084
|
+
label: string;
|
|
4085
|
+
/** Optional leading icon shown in form labels and matching table headers. */
|
|
4086
|
+
icon?: React_2.ReactNode;
|
|
4087
|
+
kind: WellFieldKind;
|
|
4088
|
+
placeholder?: string;
|
|
4089
|
+
/** Required for `kind: "select"` and `kind: "multiselect"`. */
|
|
4090
|
+
options?: WellSelectOption[];
|
|
4091
|
+
/** Visual style for `kind: "boolean"`. Defaults to `"checkbox"`. */
|
|
4092
|
+
boolStyle?: "checkbox" | "switch";
|
|
4093
|
+
/**
|
|
4094
|
+
* When true, matching `WellManifestTable` cells render an inline editor of
|
|
4095
|
+
* this field's `kind` (mirroring the form). Defaults to false — cells stay
|
|
4096
|
+
* read-only unless the developer opts in or supplies `WellColumn.render`.
|
|
4097
|
+
*/
|
|
4098
|
+
editableInTable?: boolean;
|
|
4099
|
+
/**
|
|
4100
|
+
* Custom renderer for the form input. Receives current value and a setter
|
|
4101
|
+
* that patches the field on the staged form record.
|
|
4102
|
+
*/
|
|
4103
|
+
render?: (ctx: {
|
|
4104
|
+
value: unknown;
|
|
4105
|
+
onChange: (next: unknown) => void;
|
|
4106
|
+
selectionSize: number;
|
|
4107
|
+
}) => React_2.ReactNode;
|
|
4108
|
+
}
|
|
4109
|
+
|
|
4110
|
+
/**
|
|
4111
|
+
* Field kinds rendered by `WellMetadataForm` and (when `editableInTable`) by
|
|
4112
|
+
* `WellManifestTable`.
|
|
4113
|
+
*/
|
|
4114
|
+
export declare type WellFieldKind = "text" | "number" | "integer" | "boolean" | "date" | "datetime" | "time" | "select" | "multiselect" | "custom";
|
|
4115
|
+
|
|
4116
|
+
export declare type WellId = string;
|
|
4117
|
+
|
|
4118
|
+
export declare function WellLegend({ items, renderItem, onHoverEnter, onHoverLeave, onRemove, removeLabel, emptyLabel, className, }: WellLegendProps): JSX.Element;
|
|
4119
|
+
|
|
4120
|
+
export declare interface WellLegendItem {
|
|
4121
|
+
id: string;
|
|
4122
|
+
label: React_2.ReactNode;
|
|
4123
|
+
color: string;
|
|
4124
|
+
/** Optional secondary text shown beneath the label. */
|
|
4125
|
+
meta?: React_2.ReactNode;
|
|
4126
|
+
disabled?: boolean;
|
|
4127
|
+
}
|
|
4128
|
+
|
|
4129
|
+
export declare interface WellLegendProps {
|
|
4130
|
+
items: WellLegendItem[];
|
|
4131
|
+
/** Render-prop for fully custom cards. Bypasses the default card layout. */
|
|
4132
|
+
renderItem?: (item: WellLegendItem) => React_2.ReactNode;
|
|
4133
|
+
onHoverEnter?: (id: string) => void;
|
|
4134
|
+
onHoverLeave?: (id: string) => void;
|
|
4135
|
+
onRemove?: (id: string) => void;
|
|
4136
|
+
removeLabel?: string;
|
|
4137
|
+
emptyLabel?: string;
|
|
4138
|
+
className?: string;
|
|
4139
|
+
}
|
|
4140
|
+
|
|
4141
|
+
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;
|
|
4142
|
+
|
|
4143
|
+
export declare interface WellManifestTableProps<T extends WellRecord = WellRecord> {
|
|
4144
|
+
values: Map<WellId, T>;
|
|
4145
|
+
columns: WellColumn<T>[];
|
|
4146
|
+
/**
|
|
4147
|
+
* Field schema. If a column has `field` matching a `select`-kind field, a
|
|
4148
|
+
* Select cell renders automatically with that field's options.
|
|
4149
|
+
*/
|
|
4150
|
+
fields?: WellField<T>[];
|
|
4151
|
+
selection?: Set<WellId>;
|
|
4152
|
+
onSelectionChange?: (next: Set<WellId>) => void;
|
|
4153
|
+
onChange: (next: Map<WellId, T>) => void;
|
|
4154
|
+
/** Builds an empty record for a freshly-created row. */
|
|
4155
|
+
emptyEntry: (id: WellId) => T;
|
|
4156
|
+
/** Filter that controls which empty rows surface. Defaults to `false`. */
|
|
4157
|
+
isPopulated?: (row: T) => boolean;
|
|
4158
|
+
pageSize?: number;
|
|
4159
|
+
pageSizeOptions?: number[];
|
|
4160
|
+
/** Adds a column header action that copies the first non-empty value downward. */
|
|
4161
|
+
enableFillDown?: boolean;
|
|
4162
|
+
/**
|
|
4163
|
+
* Extra props spread onto each `<tr>` — typically used to attach a DnD
|
|
4164
|
+
* library's `setNodeRef`, listeners, and data attributes so rows can act as
|
|
4165
|
+
* drag sources. The kit stays DnD-library-agnostic.
|
|
4166
|
+
*/
|
|
4167
|
+
rowProps?: (ctx: WellManifestTableRowContext<T>) => React_2.ComponentProps<"tr"> | undefined;
|
|
4168
|
+
/** Enables an inline filter popover above the table. Defaults to false. */
|
|
4169
|
+
filterable?: boolean;
|
|
4170
|
+
/**
|
|
4171
|
+
* Optional override of filterable column configs. When omitted, every column
|
|
4172
|
+
* with a `field` becomes filterable using the default operator set from the
|
|
4173
|
+
* shared data-table filter system.
|
|
4174
|
+
*/
|
|
4175
|
+
filterColumns?: FilterColumnConfig[];
|
|
4176
|
+
/** Enables an inline group-by selector. Defaults to false. */
|
|
4177
|
+
groupable?: boolean;
|
|
4178
|
+
className?: string;
|
|
4179
|
+
}
|
|
4180
|
+
|
|
4181
|
+
export declare interface WellManifestTableRowContext<T extends WellRecord = WellRecord> {
|
|
4182
|
+
wellId: WellId;
|
|
4183
|
+
row: T;
|
|
4184
|
+
isSelected: boolean;
|
|
4185
|
+
}
|
|
4186
|
+
|
|
4187
|
+
export declare function WellMetadataForm<T extends WellRecord = WellRecord>({ fields, value, onChange, selectionSize, onApply, onClear, applyLabel, clearLabel, extras, className, }: WellMetadataFormProps<T>): JSX.Element;
|
|
4188
|
+
|
|
4189
|
+
export declare interface WellMetadataFormProps<T extends WellRecord = WellRecord> {
|
|
4190
|
+
fields: WellField<T>[];
|
|
4191
|
+
/** Staged values used to apply across the selection. */
|
|
4192
|
+
value: Partial<T>;
|
|
4193
|
+
onChange: (next: Partial<T>) => void;
|
|
4194
|
+
selectionSize: number;
|
|
4195
|
+
onApply: () => void;
|
|
4196
|
+
onClear: () => void;
|
|
4197
|
+
applyLabel?: string;
|
|
4198
|
+
clearLabel?: string;
|
|
4199
|
+
/** Optional extra slot rendered between fields and action row. */
|
|
4200
|
+
extras?: React_2.ReactNode;
|
|
4201
|
+
className?: string;
|
|
4202
|
+
}
|
|
4203
|
+
|
|
4204
|
+
/**
|
|
4205
|
+
* Generic per-well record. Callers supply concrete shape via the `T` generic
|
|
4206
|
+
* on `PlateMapEditor`. Permissive base accepts both interfaces and indexable
|
|
4207
|
+
* record types.
|
|
4208
|
+
*/
|
|
4209
|
+
export declare type WellRecord = NonNullable<unknown>;
|
|
4210
|
+
|
|
4211
|
+
export declare interface WellSelectOption {
|
|
4212
|
+
value: string;
|
|
4213
|
+
label: string;
|
|
4214
|
+
/** Optional swatch color shown next to the label. */
|
|
4215
|
+
swatch?: string;
|
|
4216
|
+
}
|
|
4217
|
+
|
|
4218
|
+
export declare type WellShape = "rect" | "circle";
|
|
4219
|
+
|
|
3393
4220
|
export { }
|
|
3394
4221
|
|
|
3395
4222
|
|