@proveanything/smartlinks-utils-ui 0.10.9 → 0.11.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.
@@ -1,5 +1,6 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { FacetRule, MatchedAt, AppRecord, RecordTarget, MatchResult, ResolveAllEntry } from '@proveanything/smartlinks/dist/types/appObjects';
3
+ import * as React$1 from 'react';
3
4
  import { ReactNode, ComponentType } from 'react';
4
5
  import { LucideIcon } from 'lucide-react';
5
6
  import * as _tanstack_query_core from '@tanstack/query-core';
@@ -770,6 +771,17 @@ interface ItemColumn<TData = unknown> {
770
771
  width?: string;
771
772
  /** Right-align the cell (numeric columns). */
772
773
  align?: 'left' | 'right' | 'center';
774
+ /**
775
+ * When supplied, the column header becomes clickable and toggles
776
+ * asc → desc → none on the loaded records. The framework sorts
777
+ * client-side over whatever pages have been fetched; if more pages
778
+ * exist a small "Sorting first N — Load more for full set" hint is
779
+ * shown above the table so admins know they're sorting a subset.
780
+ *
781
+ * Return a primitive (`string` / `number` / `Date` / `boolean`) — the
782
+ * framework handles nulls (always sorted last) and stable ordering.
783
+ */
784
+ sortBy?: (record: RecordSummary<TData>) => string | number | Date | boolean | null | undefined;
773
785
  }
774
786
  /**
775
787
  * Context passed to right-pane item-view slot renderers.
@@ -1008,6 +1020,15 @@ interface RailConfig<TData = unknown> {
1008
1020
  onGroupExpanded?: (key: string) => void;
1009
1021
  /** Visual density. Default `comfortable`. */
1010
1022
  density?: 'comfortable' | 'compact';
1023
+ /**
1024
+ * Page size requested from the SDK for the records-driven rail
1025
+ * (Rules / Global / All tabs). Default 100. Raise for apps that
1026
+ * routinely have hundreds of rule-targeted records and want fewer
1027
+ * "Load more" clicks; lower to reduce initial payload on large
1028
+ * collections. The footer remains visible whenever more pages exist
1029
+ * so admins always have a path to record N+1.
1030
+ */
1031
+ pageSize?: number;
1011
1032
  }
1012
1033
  interface EditorPreviewConfig<TData = unknown> {
1013
1034
  /**
@@ -1077,6 +1098,26 @@ interface ItemsConfig<TData = unknown> {
1077
1098
  * `{ ...base, label: rec.data?.headline ?? base.label }`).
1078
1099
  */
1079
1100
  toSummary?: (rec: AppRecord, base: RecordSummary<TData>) => RecordSummary<TData>;
1101
+ /**
1102
+ * Page size requested from the SDK for the right-pane item list (and
1103
+ * the sibling rail, since both share `useCollectionItems`). Default
1104
+ * 100. Raise for apps where a single scope routinely holds hundreds
1105
+ * of items (votes, attestations, ledger entries) so admins don't
1106
+ * have to "Load more" on every visit. The footer always renders when
1107
+ * more pages exist — the goal is to never silently truncate.
1108
+ */
1109
+ pageSize?: number;
1110
+ /**
1111
+ * Optional projector returning extra strings to include in the
1112
+ * built-in item-list search match. The framework always searches
1113
+ * `label` + `subtitle`; this hook lets hosts add fields that aren't
1114
+ * on the summary (e.g. body text, tags, internal codes).
1115
+ *
1116
+ * Set `searchable: false` to disable the search box entirely.
1117
+ */
1118
+ searchableFields?: (record: RecordSummary<TData>) => Array<string | undefined | null>;
1119
+ /** Disable the built-in search input. Default `true` (enabled). */
1120
+ searchable?: boolean;
1080
1121
  }
1081
1122
  interface UnsavedConfig<TData = unknown> {
1082
1123
  /**
@@ -1163,7 +1204,7 @@ interface RecordBrowserProps {
1163
1204
  }
1164
1205
  declare const RecordBrowser: ({ scopes, activeScope, onActiveScopeChange, selectedId, onSelectRef, items, counts, isLoading, error, filter, onFilterChange, search, onSearchChange, hasNextPage, isFetchingNextPage, onLoadMore, scopesLoading, i18n, }: RecordBrowserProps) => react_jsx_runtime.JSX.Element;
1165
1206
 
1166
- interface Props$g {
1207
+ interface Props$h {
1167
1208
  scopes: ScopeKind[];
1168
1209
  active: ScopeKind;
1169
1210
  onChange: (s: ScopeKind) => void;
@@ -1181,20 +1222,20 @@ interface Props$g {
1181
1222
  /** Override icons used per scope. Falls back to DEFAULT_ICONS.scope. */
1182
1223
  icons?: RecordsAdminIcons['scope'];
1183
1224
  }
1184
- declare const ScopeTabs: ({ scopes, active, onChange, loading, counts, tooltips, icons, }: Props$g) => react_jsx_runtime.JSX.Element;
1225
+ declare const ScopeTabs: ({ scopes, active, onChange, loading, counts, tooltips, icons, }: Props$h) => react_jsx_runtime.JSX.Element;
1185
1226
 
1186
- interface Props$f {
1227
+ interface Props$g {
1187
1228
  source?: RecordSource;
1188
1229
  status?: RecordStatus;
1189
1230
  className?: string;
1190
1231
  }
1191
1232
  /** Emerald = own data, amber = inherited, muted = empty */
1192
- declare const StatusDot: ({ source, status, className }: Props$f) => react_jsx_runtime.JSX.Element;
1233
+ declare const StatusDot: ({ source, status, className }: Props$g) => react_jsx_runtime.JSX.Element;
1193
1234
 
1194
1235
  type StatusTone = 'own' | 'shared' | 'missing';
1195
1236
  /** Semantic tones used by host-driven iconography (e.g. lifecycle buckets). */
1196
1237
  type SemanticTone = 'success' | 'warning' | 'danger' | 'muted' | 'info' | 'default';
1197
- interface Props$e {
1238
+ interface Props$f {
1198
1239
  source?: RecordSource;
1199
1240
  status?: RecordStatus;
1200
1241
  className?: string;
@@ -1216,11 +1257,11 @@ interface Props$e {
1216
1257
  */
1217
1258
  semanticTone?: SemanticTone;
1218
1259
  }
1219
- declare const StatusIcon: ({ source, status, className, size, label, iconHint, semanticTone, }: Props$e) => react_jsx_runtime.JSX.Element;
1260
+ declare const StatusIcon: ({ source, status, className, size, label, iconHint, semanticTone, }: Props$f) => react_jsx_runtime.JSX.Element;
1220
1261
  /** Short label rendered next to / under the row title. */
1221
1262
  declare const statusToneLabel: (tone: StatusTone) => string;
1222
1263
 
1223
- interface Props$d {
1264
+ interface Props$e {
1224
1265
  value: 'all' | RecordStatus;
1225
1266
  onChange: (v: 'all' | RecordStatus) => void;
1226
1267
  counts: {
@@ -1235,9 +1276,9 @@ interface Props$d {
1235
1276
  * active filter is always rendered so users never lose context. */
1236
1277
  hideZero?: Array<'all' | RecordStatus>;
1237
1278
  }
1238
- declare const StatusFilterPills: ({ value, onChange, counts, i18n, hideZero }: Props$d) => react_jsx_runtime.JSX.Element;
1279
+ declare const StatusFilterPills: ({ value, onChange, counts, i18n, hideZero }: Props$e) => react_jsx_runtime.JSX.Element;
1239
1280
 
1240
- interface Props$c {
1281
+ interface Props$d {
1241
1282
  items: RecordSummary[];
1242
1283
  /**
1243
1284
  * UUID of the currently-selected row. Matches `RecordSummary.id`. Records
@@ -1308,11 +1349,11 @@ interface Props$c {
1308
1349
  /** Resolved i18n strings — used by default row/card renderers. */
1309
1350
  i18n?: RecordsAdminI18n;
1310
1351
  }
1311
- declare const RecordList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$c) => react_jsx_runtime.JSX.Element;
1312
- declare const ProductList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$c) => react_jsx_runtime.JSX.Element;
1313
- declare const FacetList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$c) => react_jsx_runtime.JSX.Element;
1314
- declare const VariantList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$c) => react_jsx_runtime.JSX.Element;
1315
- declare const BatchList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$c) => react_jsx_runtime.JSX.Element;
1352
+ declare const RecordList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$d) => react_jsx_runtime.JSX.Element;
1353
+ declare const ProductList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$d) => react_jsx_runtime.JSX.Element;
1354
+ declare const FacetList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$d) => react_jsx_runtime.JSX.Element;
1355
+ declare const VariantList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$d) => react_jsx_runtime.JSX.Element;
1356
+ declare const BatchList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$d) => react_jsx_runtime.JSX.Element;
1316
1357
 
1317
1358
  interface DefaultRecordRowProps {
1318
1359
  record: RecordSummary;
@@ -1354,7 +1395,7 @@ declare const ErrorState: ({ error }: {
1354
1395
  error: Error;
1355
1396
  }) => react_jsx_runtime.JSX.Element;
1356
1397
 
1357
- interface Props$b {
1398
+ interface Props$c {
1358
1399
  i18n: RecordsAdminI18n;
1359
1400
  onApplyToMany?: () => void;
1360
1401
  onCopyFrom?: () => void;
@@ -1362,9 +1403,9 @@ interface Props$b {
1362
1403
  onImportCsv?: () => void;
1363
1404
  onExportCsv?: () => void;
1364
1405
  }
1365
- declare const BulkActionsMenu: ({ i18n, onApplyToMany, onCopyFrom, onClearMany, onImportCsv, onExportCsv, }: Props$b) => react_jsx_runtime.JSX.Element | null;
1406
+ declare const BulkActionsMenu: ({ i18n, onApplyToMany, onCopyFrom, onClearMany, onImportCsv, onExportCsv, }: Props$c) => react_jsx_runtime.JSX.Element | null;
1366
1407
 
1367
- interface Props$a<T> {
1408
+ interface Props$b<T> {
1368
1409
  ctx: EditorContext<T>;
1369
1410
  i18n: RecordsAdminI18n;
1370
1411
  children: ReactNode;
@@ -1429,7 +1470,7 @@ interface Props$a<T> {
1429
1470
  /** Host-provided icons rendered before save / discard / delete labels. */
1430
1471
  actionIcons?: Partial<Record<RecordsAdminActionKey, RecordsAdminActionIcon>>;
1431
1472
  }
1432
- declare function RecordEditor<T>({ ctx, i18n, children, preview, targeting, targetingControl, bulkActions, footerExtra, onBeforeDelete, headerLabel, headerSubtitle, headerMeta, headerLeading, clipboard, actionLabels, actionIcons, }: Props$a<T>): react_jsx_runtime.JSX.Element;
1473
+ declare function RecordEditor<T>({ ctx, i18n, children, preview, targeting, targetingControl, bulkActions, footerExtra, onBeforeDelete, headerLabel, headerSubtitle, headerMeta, headerLeading, clipboard, actionLabels, actionIcons, }: Props$b<T>): react_jsx_runtime.JSX.Element;
1433
1474
 
1434
1475
  interface InheritanceCtx {
1435
1476
  parentValue?: Record<string, unknown> | null;
@@ -1447,10 +1488,10 @@ interface MarkerProps {
1447
1488
  }
1448
1489
  declare const InheritanceMarker: ({ field, inheritedValue, value, children }: MarkerProps) => react_jsx_runtime.JSX.Element;
1449
1490
 
1450
- interface Props$9 {
1491
+ interface Props$a {
1451
1492
  children: ReactNode;
1452
1493
  }
1453
- declare const ResolvedPreview: ({ children }: Props$9) => react_jsx_runtime.JSX.Element;
1494
+ declare const ResolvedPreview: ({ children }: Props$a) => react_jsx_runtime.JSX.Element;
1454
1495
 
1455
1496
  interface ProductChildItem {
1456
1497
  /** Variant or batch id (the `<id>` part of `variant:<id>` / `batch:<id>`). */
@@ -1481,7 +1522,7 @@ declare const useProductChildren: (args: UseProductChildrenArgs) => {
1481
1522
  };
1482
1523
 
1483
1524
  type DrillTab = 'product' | 'variant' | 'batch';
1484
- interface Props$8 {
1525
+ interface Props$9 {
1485
1526
  productLabel: string;
1486
1527
  /** Which child types are available on the collection. */
1487
1528
  showVariants: boolean;
@@ -1506,7 +1547,7 @@ interface Props$8 {
1506
1547
  */
1507
1548
  hideSingleTab?: boolean;
1508
1549
  }
1509
- declare const ProductDrillDown: ({ productLabel, showVariants, showBatches, active, onChange, selectedChildId, onSelectChild, variants, batches, variantsLoading, batchesLoading, children, hideSingleTab, }: Props$8) => react_jsx_runtime.JSX.Element;
1550
+ declare const ProductDrillDown: ({ productLabel, showVariants, showBatches, active, onChange, selectedChildId, onSelectChild, variants, batches, variantsLoading, batchesLoading, children, hideSingleTab, }: Props$9) => react_jsx_runtime.JSX.Element;
1510
1551
 
1511
1552
  type PreviewMode = 'inline' | 'side' | 'tab' | 'drawer';
1512
1553
  interface CommonProps {
@@ -1574,6 +1615,16 @@ interface PreviewScopePickerProps {
1574
1615
  }
1575
1616
  declare const PreviewScopePicker: ({ SL, collectionId, editingScope, value, onChange, showVariants, showBatches, activeScope, i18n, }: PreviewScopePickerProps) => react_jsx_runtime.JSX.Element | null;
1576
1617
 
1618
+ interface Props$8 {
1619
+ /** Element whose right edge the pill should anchor to. */
1620
+ anchorRef: React.RefObject<HTMLElement>;
1621
+ onClick: () => void;
1622
+ ariaLabel: string;
1623
+ title: string;
1624
+ children: ReactNode;
1625
+ }
1626
+ declare function PreviewReopenPill({ anchorRef, onClick, ariaLabel, title, children }: Props$8): React$1.ReactPortal | null;
1627
+
1577
1628
  declare const ScopeBreadcrumb: ({ scope }: {
1578
1629
  scope: ParsedRef;
1579
1630
  }) => react_jsx_runtime.JSX.Element | null;
@@ -2082,9 +2133,25 @@ declare const useScopeCounts: (args: UseScopeCountsArgs) => UseScopeCountsResult
2082
2133
  /** React Query key factory for cache invalidation from save/delete sites. */
2083
2134
  declare const scopeCountsQueryKey: (collectionId: string, appId: string, recordType?: string) => (string | null)[];
2084
2135
 
2085
- declare const useIntroDismissed: (SL: SmartLinksSDK, collectionId: string, appId: string, recordType?: string) => {
2136
+ /**
2137
+ * Records-admin intro dismiss state. Thin shim over the library-level
2138
+ * `useIntroState` so the shell shares one persistence model with every
2139
+ * other admin app:
2140
+ *
2141
+ * • Global "show inline help" preference on the user record
2142
+ * (`SL.userAppData('prefs').showHints`) — flipped once, applies
2143
+ * everywhere. When `false` the intro is collapsed by default but the
2144
+ * `?` reopen button is still rendered.
2145
+ * • Per-browser, per-app temporary dismiss in `localStorage`
2146
+ * (`sl:intro-dismissed:${appId}[:recordType]`).
2147
+ *
2148
+ * `collectionId` is no longer used (the old per-collection persistence on
2149
+ * `appConfiguration._meta.introDismissed` was removed) but kept in the
2150
+ * signature for back-compat with existing callers.
2151
+ */
2152
+ declare const useIntroDismissed: (SL: SmartLinksSDK, _collectionId: string, appId: string, recordType?: string) => {
2086
2153
  dismissed: boolean;
2087
- dismiss: () => Promise<void>;
2154
+ dismiss: () => void;
2088
2155
  undismiss: () => void;
2089
2156
  };
2090
2157
 
@@ -2444,9 +2511,25 @@ interface Props$5<T> {
2444
2511
  onCopy?: () => void;
2445
2512
  onDuplicate?: () => void;
2446
2513
  } | null;
2514
+ /**
2515
+ * Optional projector returning extra strings to include in the search
2516
+ * match. Framework always searches `label` + `subtitle`.
2517
+ */
2518
+ searchableFields?: (record: RecordSummary<T>) => Array<string | undefined | null>;
2519
+ /** Disable the search box. Default `true`. */
2520
+ searchable?: boolean;
2521
+ /**
2522
+ * Pagination — when the underlying `useCollectionItems` reports more
2523
+ * pages, the list renders a footer with "Showing X of Y · Load more"
2524
+ * so admins always have a path to record N+1.
2525
+ */
2526
+ total?: number;
2527
+ hasNextPage?: boolean;
2528
+ isFetchingNextPage?: boolean;
2529
+ onLoadMore?: () => void;
2447
2530
  i18n: RecordsAdminI18n;
2448
2531
  }
2449
- declare function ItemListView<T>({ items, isLoading, error, ctx, itemNoun, ruleSummary, view, views, onViewChange, renderItemList, renderItemCard, renderItemEmpty, itemColumns, cardSize, rowActions, rowClipboard, i18n, }: Props$5<T>): react_jsx_runtime.JSX.Element;
2532
+ declare function ItemListView<T>({ items, isLoading, error, ctx, itemNoun, ruleSummary, view, views, onViewChange, renderItemList, renderItemCard, renderItemEmpty, itemColumns, cardSize, rowActions, rowClipboard, searchableFields, searchable, total, hasNextPage, isFetchingNextPage, onLoadMore, i18n, }: Props$5<T>): react_jsx_runtime.JSX.Element;
2450
2533
 
2451
2534
  interface Props$4 {
2452
2535
  options: ItemView[];
@@ -2456,12 +2539,23 @@ interface Props$4 {
2456
2539
  }
2457
2540
  declare const ItemViewSwitcher: ({ options, value, onChange, i18n }: Props$4) => react_jsx_runtime.JSX.Element | null;
2458
2541
 
2542
+ type SortDir = 'asc' | 'desc' | null;
2543
+ interface SortState {
2544
+ key: string | null;
2545
+ dir: SortDir;
2546
+ }
2459
2547
  interface Props$3<T> {
2460
2548
  items: RecordSummary<T>[];
2461
2549
  columns?: ItemColumn<T>[];
2462
2550
  selectedId?: string;
2463
2551
  onOpen: (itemId: string) => void;
2464
2552
  onDelete: (itemId: string) => void;
2553
+ /** Current sort state (controlled by ItemListView). */
2554
+ sort?: SortState;
2555
+ /** Toggle sort for a given column key (asc → desc → none). */
2556
+ onToggleSort?: (key: string) => void;
2557
+ /** Sort key + direction for the fallback (label / updated) columns. */
2558
+ fallbackSortKey?: 'label' | 'updated';
2465
2559
  /** Host-supplied per-record menu actions for each row's `…` kebab. */
2466
2560
  rowActions?: (record: RecordSummary<T>) => RecordAction[] | null | undefined;
2467
2561
  /** Per-record Copy / Duplicate wiring from the shell clipboard. */
@@ -2471,7 +2565,7 @@ interface Props$3<T> {
2471
2565
  } | null;
2472
2566
  i18n: Pick<RecordsAdminI18n, 'itemColumnLabel' | 'itemColumnUpdated' | 'itemActions' | 'delete'>;
2473
2567
  }
2474
- declare function DefaultItemTable<T>({ items, columns, selectedId, onOpen, onDelete, rowActions, rowClipboard, i18n, }: Props$3<T>): react_jsx_runtime.JSX.Element;
2568
+ declare function DefaultItemTable<T>({ items, columns, selectedId, onOpen, onDelete, sort, onToggleSort, rowActions, rowClipboard, i18n, }: Props$3<T>): react_jsx_runtime.JSX.Element;
2475
2569
 
2476
2570
  interface Props$2<T> {
2477
2571
  items: RecordSummary<T>[];
@@ -2548,9 +2642,14 @@ interface Props<T> {
2548
2642
  dirtyKeys?: ReadonlySet<string>;
2549
2643
  /** Subset of `dirtyKeys` whose last save attempt failed. */
2550
2644
  errorKeys?: ReadonlySet<string>;
2645
+ /** Pagination passthrough from `useCollectionItems`. */
2646
+ total?: number;
2647
+ hasNextPage?: boolean;
2648
+ isFetchingNextPage?: boolean;
2649
+ onLoadMore?: () => void;
2551
2650
  i18n: Pick<RecordsAdminI18n, 'backToScopes' | 'siblingsHeading' | 'noItemsTitle' | 'noItemsBody' | 'backToList' | 'newItem'>;
2552
2651
  }
2553
- declare function SiblingRail<T>({ items, selectedItemId, isLoading, error, onBack, onSelect, contextKind, contextSummary, onCreate, itemNoun, dirtyKeys, errorKeys, i18n, }: Props<T>): react_jsx_runtime.JSX.Element;
2652
+ declare function SiblingRail<T>({ items, selectedItemId, isLoading, error, onBack, onSelect, contextKind, contextSummary, onCreate, itemNoun, dirtyKeys, errorKeys, i18n, total, hasNextPage, isFetchingNextPage, onLoadMore, }: Props<T>): react_jsx_runtime.JSX.Element;
2554
2653
 
2555
2654
  interface ClipboardEntry<T = unknown> {
2556
2655
  value: T;
@@ -2707,4 +2806,4 @@ declare const exportCsv: <T>(records: RecordSummary<T>[], schema: CsvSchema<T>)
2707
2806
  declare const importCsv: <T>(file: File, schema: CsvSchema<T>, ctx: RecordsCtx) => Promise<ImportReport>;
2708
2807
  declare const downloadBlob: (blob: Blob, filename: string) => void;
2709
2808
 
2710
- export { ALL_ITEM_VIEWS, ALL_PRESENTATIONS, BatchList, BulkActionsMenu, type ClipboardEntry, type CollectedRecord, type CollectedSort, type CollectionRailMode, type CsvSchema, type CsvSchemaColumn, DEFAULT_DEEP_LINK_PARAM_NAMES, DEFAULT_I18N, DEFAULT_ICONS, type DeepLinkAdapter, type DeepLinkChangeKind, type DeepLinkHistoryMode, type DeepLinkOptions, type DeepLinkParamNames, type DeepLinkState, DefaultItemCards, DefaultItemTable, DefaultRecordCard, DefaultRecordRow, DeleteButton, type DirtyDraft, DirtyDraftProvider, type DirtyDraftStatus, type DirtyDraftStore, type DirtyStrategy, DrawerPreview, type EditorContext, EditorItemNav, EmptyState, ErrorState, FacetList, InheritanceMarker, InheritanceProvider, InlinePreview, IntroCard, type ItemColumn, ItemListView, type ItemSlotContext, type ItemView, type ItemViewContext, ItemViewSwitcher, LoadingState, type MergeStrategy, type MergedRecord, type NavConfirmI18n, type NormalisedRule, type ParsedRef, type PasteCompatibility, type PasteCompatibilityResult, PresentationSwitcher, type PreviewMode, PreviewScopePicker, PreviewToggleButton, type ProductBrowseItem, type ProductChildItem, ProductDrillDown, ProductList, type RecordAction, type RecordBadge, RecordBrowser, type RecordCardinality, RecordEditor, RecordList, type RecordPresentation, type RecordSlotContext, type RecordSource, type RecordStatus, type RecordSummary, type RecordsAdminActionIcon, type RecordsAdminActionKey, type RecordsAdminI18n, type RecordsAdminIcons, RecordsAdminShell, type RecordsAdminShellProps, type ResolvedDeepLinkParamNames, ResolvedPreview, type ResolvedRecord, type RouterParamsGetter, type RouterParamsSetter, ScopeBreadcrumb, type ScopeCounts, type ScopeKind, ScopeTabs, SiblingRail, SidePreview, type SmartLinksSDK, StatusDot, StatusFilterPills, StatusIcon, type StatusTone, TabbedPreview, type TelemetryEvent, type UseCollectionItemsArgs, type UseRecordClipboardArgs, type UseRecordClipboardReturn, type UseResolveAllRecordsArgs, type UseResolveAllResult, type UseRulePreviewArgs, type UseRulePreviewResult, type UseScopeCountsArgs, type UseScopeCountsResult, UtilityRow, VariantList, buildDraftKey, buildRef, bulkDelete, bulkUpsert, checkPasteCompatibility, cloneValue, createDefaultDeepLinkAdapter, createPostMessageDeepLinkAdapter, createRecord, createRouterDeepLinkAdapter, downloadBlob, exportCsv, getRecordById, importCsv, isInSmartLinksIframe, listRecords, matchRecords, mergeIcons, normaliseRule, parseRef, parsedRefToScope, parsedRefToTarget, pickHeaderIcon, removeRecord, resolutionChain, resolveRecord, restoreRecord, ruleHash, rulesEqual, scopeCountsQueryKey, scopesEqual, statusToneLabel, summariseRule, upsertRecord, useCollectedRecords, useCollectionItems, useDeepLinkState, useDirtyDraft, useDirtyDraftActions, useDirtyDraftStore, useDirtyDrafts, useDirtyNavigation, useFacetBrowse, useIntroDismissed, useItemViewPref, useMergedRecord, usePresentationPref, useProductBrowse, useProductChildren, useRecordClipboard, useRecordEditor, useRecordList, useResolveAllRecords, useResolvedRecord, useRulePreview, useScopeCounts, useScopeProbe, useUnsavedGuard };
2809
+ export { ALL_ITEM_VIEWS, ALL_PRESENTATIONS, BatchList, BulkActionsMenu, type ClipboardEntry, type CollectedRecord, type CollectedSort, type CollectionRailMode, type CsvSchema, type CsvSchemaColumn, DEFAULT_DEEP_LINK_PARAM_NAMES, DEFAULT_I18N, DEFAULT_ICONS, type DeepLinkAdapter, type DeepLinkChangeKind, type DeepLinkHistoryMode, type DeepLinkOptions, type DeepLinkParamNames, type DeepLinkState, DefaultItemCards, DefaultItemTable, DefaultRecordCard, DefaultRecordRow, DeleteButton, type DirtyDraft, DirtyDraftProvider, type DirtyDraftStatus, type DirtyDraftStore, type DirtyStrategy, DrawerPreview, type EditorContext, EditorItemNav, EmptyState, ErrorState, FacetList, InheritanceMarker, InheritanceProvider, InlinePreview, IntroCard, type ItemColumn, ItemListView, type ItemSlotContext, type ItemView, type ItemViewContext, ItemViewSwitcher, LoadingState, type MergeStrategy, type MergedRecord, type NavConfirmI18n, type NormalisedRule, type ParsedRef, type PasteCompatibility, type PasteCompatibilityResult, PresentationSwitcher, type PreviewMode, PreviewReopenPill, PreviewScopePicker, PreviewToggleButton, type ProductBrowseItem, type ProductChildItem, ProductDrillDown, ProductList, type RecordAction, type RecordBadge, RecordBrowser, type RecordCardinality, RecordEditor, RecordList, type RecordPresentation, type RecordSlotContext, type RecordSource, type RecordStatus, type RecordSummary, type RecordsAdminActionIcon, type RecordsAdminActionKey, type RecordsAdminI18n, type RecordsAdminIcons, RecordsAdminShell, type RecordsAdminShellProps, type ResolvedDeepLinkParamNames, ResolvedPreview, type ResolvedRecord, type RouterParamsGetter, type RouterParamsSetter, ScopeBreadcrumb, type ScopeCounts, type ScopeKind, ScopeTabs, SiblingRail, SidePreview, type SmartLinksSDK, StatusDot, StatusFilterPills, StatusIcon, type StatusTone, TabbedPreview, type TelemetryEvent, type UseCollectionItemsArgs, type UseRecordClipboardArgs, type UseRecordClipboardReturn, type UseResolveAllRecordsArgs, type UseResolveAllResult, type UseRulePreviewArgs, type UseRulePreviewResult, type UseScopeCountsArgs, type UseScopeCountsResult, UtilityRow, VariantList, buildDraftKey, buildRef, bulkDelete, bulkUpsert, checkPasteCompatibility, cloneValue, createDefaultDeepLinkAdapter, createPostMessageDeepLinkAdapter, createRecord, createRouterDeepLinkAdapter, downloadBlob, exportCsv, getRecordById, importCsv, isInSmartLinksIframe, listRecords, matchRecords, mergeIcons, normaliseRule, parseRef, parsedRefToScope, parsedRefToTarget, pickHeaderIcon, removeRecord, resolutionChain, resolveRecord, restoreRecord, ruleHash, rulesEqual, scopeCountsQueryKey, scopesEqual, statusToneLabel, summariseRule, upsertRecord, useCollectedRecords, useCollectionItems, useDeepLinkState, useDirtyDraft, useDirtyDraftActions, useDirtyDraftStore, useDirtyDrafts, useDirtyNavigation, useFacetBrowse, useIntroDismissed, useItemViewPref, useMergedRecord, usePresentationPref, useProductBrowse, useProductChildren, useRecordClipboard, useRecordEditor, useRecordList, useResolveAllRecords, useResolvedRecord, useRulePreview, useScopeCounts, useScopeProbe, useUnsavedGuard };