@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.
- package/dist/{IconPicker-DKpL5Hcc.d.ts → IconPicker-nhY3wWlB.d.ts} +2 -2
- package/dist/{chunk-2MW54ZVG.js → chunk-3RRHM4LP.js} +97 -4
- package/dist/chunk-3RRHM4LP.js.map +1 -0
- package/dist/components/AssetPicker/index.css +3 -0
- package/dist/components/AssetPicker/index.css.map +1 -1
- package/dist/components/AssetPicker/index.d.ts +1 -1
- package/dist/components/ConditionsEditor/index.css +3 -0
- package/dist/components/ConditionsEditor/index.css.map +1 -1
- package/dist/components/ConditionsEditor/index.d.ts +2 -2
- package/dist/components/FacetRuleEditor/index.d.ts +2 -2
- package/dist/components/FontPicker/index.css +3 -0
- package/dist/components/FontPicker/index.css.map +1 -1
- package/dist/components/FontPicker/index.d.ts +2 -2
- package/dist/components/IconPicker/index.css +3 -0
- package/dist/components/IconPicker/index.css.map +1 -1
- package/dist/components/IconPicker/index.d.ts +2 -2
- package/dist/components/RecordsAdmin/index.css +3 -0
- package/dist/components/RecordsAdmin/index.css.map +1 -1
- package/dist/components/RecordsAdmin/index.d.ts +127 -28
- package/dist/components/RecordsAdmin/index.js +535 -95
- package/dist/components/RecordsAdmin/index.js.map +1 -1
- package/dist/index.css +3 -0
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +53 -3
- package/dist/index.js +32 -1
- package/dist/index.js.map +1 -1
- package/dist/{useAssets-BAtXv6D5.d.ts → useAssets-DwUdZePm.d.ts} +2 -2
- package/package.json +3 -3
- package/dist/chunk-2MW54ZVG.js.map +0 -1
|
@@ -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$
|
|
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$
|
|
1225
|
+
declare const ScopeTabs: ({ scopes, active, onChange, loading, counts, tooltips, icons, }: Props$h) => react_jsx_runtime.JSX.Element;
|
|
1185
1226
|
|
|
1186
|
-
interface Props$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1279
|
+
declare const StatusFilterPills: ({ value, onChange, counts, i18n, hideZero }: Props$e) => react_jsx_runtime.JSX.Element;
|
|
1239
1280
|
|
|
1240
|
-
interface Props$
|
|
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$
|
|
1312
|
-
declare const ProductList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$
|
|
1313
|
-
declare const FacetList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$
|
|
1314
|
-
declare const VariantList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$
|
|
1315
|
-
declare const BatchList: ({ items, selectedId, selectedAnchorKey, onSelect, dirtyId, dirtyAnchorKey, dirtyKeys, errorKeys, presentation, renderListRow, groupBy, renderGroupActions, rowClipboard, rowActions, i18n, }: Props$
|
|
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$
|
|
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$
|
|
1406
|
+
declare const BulkActionsMenu: ({ i18n, onApplyToMany, onCopyFrom, onClearMany, onImportCsv, onExportCsv, }: Props$c) => react_jsx_runtime.JSX.Element | null;
|
|
1366
1407
|
|
|
1367
|
-
interface Props$
|
|
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$
|
|
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$
|
|
1491
|
+
interface Props$a {
|
|
1451
1492
|
children: ReactNode;
|
|
1452
1493
|
}
|
|
1453
|
-
declare const ResolvedPreview: ({ children }: Props$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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: () =>
|
|
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 };
|