@declarion/react 0.104.0 → 0.109.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist-lib/api/agents.js +8 -7
  2. package/dist-lib/api/client.js +48 -49
  3. package/dist-lib/components/agents/AgentChatPanel.impl.js +362 -301
  4. package/dist-lib/components/agents/ChatAttachments.js +144 -0
  5. package/dist-lib/components/agents/transcript-runs.js +1 -1
  6. package/dist-lib/components/chrome/AssociationTabs.js +89 -75
  7. package/dist-lib/components/detail-layout/AssociatedBlock.js +243 -235
  8. package/dist-lib/components/detail-layout/ChildrenCards.js +57 -55
  9. package/dist-lib/components/detail-layout/ChildrenList.js +45 -43
  10. package/dist-lib/components/detail-layout/ChildrenTable.js +93 -91
  11. package/dist-lib/components/detail-layout/ChildrenTimeline.js +160 -155
  12. package/dist-lib/components/detail-layout/widgets/EntityScorecardWidget.js +127 -121
  13. package/dist-lib/components/fields/RefCombobox.js +53 -48
  14. package/dist-lib/components/fields/index.js +1 -0
  15. package/dist-lib/components/file-widgets/useFileSelection.js +152 -0
  16. package/dist-lib/components/pages/SmartDetailPage.impl.js +506 -482
  17. package/dist-lib/components/pages/SmartRecordListPage.impl.js +335 -300
  18. package/dist-lib/components/pages/tenant-params/TenantParamsPage.impl.js +112 -109
  19. package/dist-lib/components/params/ParamsBlock.js +18 -15
  20. package/dist-lib/components/params/param-editors.js +60 -54
  21. package/dist-lib/components/primitives/RetryButton.js +14 -0
  22. package/dist-lib/components/primitives/StatTile.js +42 -34
  23. package/dist-lib/hooks/useAgentConversation.js +18 -13
  24. package/dist-lib/hooks/useParams.js +54 -52
  25. package/dist-lib/hooks/useSchema.js +5 -2
  26. package/dist-lib/hooks/useTimelineData.js +26 -24
  27. package/dist-lib/index.d.ts +89 -5
  28. package/dist-lib/index.js +95 -93
  29. package/dist-lib/lib/read-display-state.js +19 -0
  30. package/dist-lib/stores/auth.js +1 -0
  31. package/dist-lib/testing.d.ts +1 -1
  32. package/dist-lib/types/fieldType.js +1 -1
  33. package/dist-lib/{useResponsiveMode-ECv1AEhv.d.ts → useResponsiveMode-DODbtSrY.d.ts} +3 -0
  34. package/package.json +1 -1
@@ -1,44 +1,46 @@
1
1
  import { apiFetch as e } from "../api/client.js";
2
2
  import { pkValuesFromId as t } from "../types/schema.js";
3
- import { ENTITY_CHILDREN_KEY as n } from "./useChildrenData.js";
4
- import { useMemo as r } from "react";
5
- import { useInfiniteQuery as i } from "@tanstack/react-query";
3
+ import { readDisplayState as n } from "../lib/read-display-state.js";
4
+ import { ENTITY_CHILDREN_KEY as r } from "./useChildrenData.js";
5
+ import { useMemo as i } from "react";
6
+ import { useInfiniteQuery as a } from "@tanstack/react-query";
6
7
  //#region src/hooks/useTimelineData.ts
7
- var a = 50;
8
- function o(o, s, c, l, u, d) {
9
- let f = Array.isArray(l) ? l : [l], p = Array.isArray(l) ? t(s, f.length) : [s], m = d ?? a, h = i({
8
+ var o = 50;
9
+ function s(s, c, l, u, d, f) {
10
+ let p = Array.isArray(u) ? u : [u], m = Array.isArray(u) ? t(c, p.length) : [c], h = f ?? o, g = a({
10
11
  queryKey: [
11
- n,
12
- o,
12
+ r,
13
13
  s,
14
14
  c,
15
+ l,
15
16
  "timeline",
16
- u,
17
- m
17
+ d,
18
+ h
18
19
  ],
19
20
  queryFn: ({ pageParam: t }) => {
20
21
  let n = new URLSearchParams();
21
- if (!p) throw Error("invalid composite parent id");
22
- let r = f.map((e, t) => ({
22
+ if (!m) throw Error("invalid composite parent id");
23
+ let r = p.map((e, t) => ({
23
24
  field: e,
24
25
  op: "eq",
25
- value: p[t]
26
+ value: m[t]
26
27
  }));
27
- return n.set("filters", JSON.stringify(r)), u ? n.set("sort", `${u}:desc`) : typeof console < "u" && console.warn(`[useTimelineData] no time_field for ${c}; fetch order falls back to API default`), n.set("limit", String(m)), t && n.set("after", t), e(`/api/data/${c}?${n.toString()}`);
28
+ return n.set("filters", JSON.stringify(r)), d ? n.set("sort", `${d}:desc`) : typeof console < "u" && console.warn(`[useTimelineData] no time_field for ${l}; fetch order falls back to API default`), n.set("limit", String(h)), t && n.set("after", t), e(`/api/data/${l}?${n.toString()}`);
28
29
  },
29
30
  getNextPageParam: (e) => e.meta?.has_more ? e.meta.cursor : void 0,
30
31
  initialPageParam: void 0,
31
- enabled: !!o && !!s && !!c && !!l && p !== null
32
- });
32
+ enabled: !!s && !!c && !!l && !!u && m !== null
33
+ }), _ = i(() => g.data?.pages.flatMap((e) => e.data) ?? [], [g.data?.pages]), v = g.data?.pages[0]?.$refs, y = n(g);
33
34
  return {
34
- rows: r(() => h.data?.pages.flatMap((e) => e.data) ?? [], [h.data?.pages]),
35
- refs: h.data?.pages[0]?.$refs,
36
- fetchNextPage: h.fetchNextPage,
37
- hasOlder: !!h.hasNextPage,
38
- isFetchingOlder: h.isFetchingNextPage,
39
- isLoading: h.isLoading,
40
- isError: h.isError
35
+ rows: _,
36
+ refs: v,
37
+ fetchNextPage: g.fetchNextPage,
38
+ hasOlder: !!g.hasNextPage,
39
+ isFetchingOlder: g.isFetchingNextPage,
40
+ isLoading: y.loading,
41
+ isError: y.error !== null,
42
+ retry: y.retry
41
43
  };
42
44
  }
43
45
  //#endregion
44
- export { o as useTimelineData };
46
+ export { s as useTimelineData };
@@ -1,6 +1,6 @@
1
1
  import { i as DynamicIcon, n as IconName, r as IconProps, t as Icon } from "./Icons-Dzl-AkD_.js";
2
2
  import { i as setIconRegistry, n as getIcon, t as IconDef } from "./icon-registry-CUT4eF63.js";
3
- import { $ as AreaDef, $t as HydratedFile, A as EnrichedRow, At as MANDATORY_LANGUAGE, B as Refs, Bt as FilterValueResolver, C as ApiErrorBody, Ct as fieldDisplayName, D as CURSOR_SEMANTICS_MISMATCH, Dt as pkValuesToDetailId, E as CURSOR_LANGUAGE_CHANGED, Et as pkValuesFromId, F as LoginResponse, Ft as pluralText, G as V2ListParams, Gt as parseFilterURLState, H as StatusInfo, Ht as OP_LABELS, I as ParamLookup, It as textWithNodes, J as V2ParamInstance, Jt as FileAddress, K as V2ListResponse, Kt as parseFiltersFromURL, L as PropertyValue, Lt as FilterNode, M as ListMeta, Mt as TextVars, N as ListParams, Nt as makeTextFn, O as CheckSetupResponse, Ot as pkValuesToId, P as ListResponse, Pt as pickLocalized, Q as Action, Qt as FileFieldValue, R as PublicParam, Rt as FilterOp, S as ApiError, St as extractPkValues, T as BrandingIdentity, Tt as pkValuePartsToId, U as Tenant, Ut as countActiveFilters, V as SignupResponse, Vt as NO_VALUE_OPS, W as TenantEnv, Wt as hasOrGroups, X as V2StatusInstance, Xt as FileFieldDisplay, Y as V2PropertyInstance, Yt as FileFieldDef, Z as isCursorStaleError, Zt as FileFieldMode, _ as executeAction$1, _t as StatusGroupDef, a as ResponsiveMode, at as FieldAccessInfo, b as AggregateParams, bt as buildEntityDetailHref, c as resolveViewportCategory, ct as NavNode, d as ActionExecuteResponse, dt as PropertyDef, en as UploadProgress, et as ChildRelation, f as ActionItemError, ft as RefConfig, g as deleteObject, gt as StatusDef, h as buildActionBody, ht as SpecialValue, i as ResponsiveBreakpoints, it as EnumDef, j as ImpersonationInfo, jt as TextFn, k as DataResponse, kt as resolveDetailRoute, l as ActionBatchError, lt as ParameterDef, m as GetEntityOptions, mt as Screen, n as useResponsiveMode, nn as OrderedMap, nt as Entity, o as ResponsiveViewport, ot as LanguageDef, p as ActionItemSkip, pt as Schema, q as V2Meta, qt as setFiltersInURL, r as DEFAULT_RESPONSIVE_BREAKPOINTS, rt as EntityField, s as ViewportCategory, st as LocalizedString, t as ResponsiveModeProvider, tn as UploadedFile, tt as ClassificationTierDef, u as ActionExecuteRequest, ut as PkValues, v as restoreObject, vt as StructureDef, w as AuthUser, wt as getPrimaryKeyFields, x as AggregateResponse, xt as buildRowDetailHref, y as AggregateGroup, yt as buildDetailHrefFromId, z as PublicParamsResponse, zt as FilterURLState } from "./useResponsiveMode-ECv1AEhv.js";
3
+ import { $ as AreaDef, $t as HydratedFile, A as EnrichedRow, At as MANDATORY_LANGUAGE, B as Refs, Bt as FilterValueResolver, C as ApiErrorBody, Ct as fieldDisplayName, D as CURSOR_SEMANTICS_MISMATCH, Dt as pkValuesToDetailId, E as CURSOR_LANGUAGE_CHANGED, Et as pkValuesFromId, F as LoginResponse, Ft as pluralText, G as V2ListParams, Gt as parseFilterURLState, H as StatusInfo, Ht as OP_LABELS, I as ParamLookup, It as textWithNodes, J as V2ParamInstance, Jt as FileAddress, K as V2ListResponse, Kt as parseFiltersFromURL, L as PropertyValue, Lt as FilterNode, M as ListMeta, Mt as TextVars, N as ListParams, Nt as makeTextFn, O as CheckSetupResponse, Ot as pkValuesToId, P as ListResponse, Pt as pickLocalized, Q as Action, Qt as FileFieldValue, R as PublicParam, Rt as FilterOp, S as ApiError, St as extractPkValues, T as BrandingIdentity, Tt as pkValuePartsToId, U as Tenant, Ut as countActiveFilters, V as SignupResponse, Vt as NO_VALUE_OPS, W as TenantEnv, Wt as hasOrGroups, X as V2StatusInstance, Xt as FileFieldDisplay, Y as V2PropertyInstance, Yt as FileFieldDef, Z as isCursorStaleError, Zt as FileFieldMode, _ as executeAction$1, _t as StatusGroupDef, a as ResponsiveMode, at as FieldAccessInfo, b as AggregateParams, bt as buildEntityDetailHref, c as resolveViewportCategory, ct as NavNode, d as ActionExecuteResponse, dt as PropertyDef, en as UploadProgress, et as ChildRelation, f as ActionItemError, ft as RefConfig, g as deleteObject, gt as StatusDef, h as buildActionBody, ht as SpecialValue, i as ResponsiveBreakpoints, it as EnumDef, j as ImpersonationInfo, jt as TextFn, k as DataResponse, kt as resolveDetailRoute, l as ActionBatchError, lt as ParameterDef, m as GetEntityOptions, mt as Screen, n as useResponsiveMode, nn as OrderedMap, nt as Entity, o as ResponsiveViewport, ot as LanguageDef, p as ActionItemSkip, pt as Schema, q as V2Meta, qt as setFiltersInURL, r as DEFAULT_RESPONSIVE_BREAKPOINTS, rt as EntityField, s as ViewportCategory, st as LocalizedString, t as ResponsiveModeProvider, tn as UploadedFile, tt as ClassificationTierDef, u as ActionExecuteRequest, ut as PkValues, v as restoreObject, vt as StructureDef, w as AuthUser, wt as getPrimaryKeyFields, x as AggregateResponse, xt as buildRowDetailHref, y as AggregateGroup, yt as buildDetailHrefFromId, z as PublicParamsResponse, zt as FilterURLState } from "./useResponsiveMode-DODbtSrY.js";
4
4
  import { ButtonHTMLAttributes, CSSProperties, ComponentType, InputHTMLAttributes, MouseEvent, ReactNode, RefObject } from "react";
5
5
  import { QueryClient, QueryKey, UseQueryResult } from "@tanstack/react-query";
6
6
  import { useLocation, useNavigate, useParams, useSearchParams } from "react-router";
@@ -704,6 +704,15 @@ export declare function useText(catalog?: "messages" | "errors"): TextFn;
704
704
  //#region src/lib/failure.d.ts
705
705
  export declare function failureTitle(errorTitle: TextFn, err: unknown): string;
706
706
  //#endregion
707
+ //#region src/lib/read-display-state.d.ts
708
+ interface ReadDisplayState {
709
+ loading: boolean;
710
+ error: unknown;
711
+ retry: () => void;
712
+ }
713
+ type ReadQuery = Pick<UseQueryResult<unknown, unknown>, "data" | "error" | "failureReason" | "fetchStatus" | "refetch">;
714
+ export declare function readDisplayState(query: ReadQuery): ReadDisplayState;
715
+ //#endregion
707
716
  //#region src/stores/tabs.d.ts
708
717
  type TabMode = "view" | "edit" | "create";
709
718
  type TabCloseScope = "current" | "others" | "right" | "all";
@@ -1589,9 +1598,10 @@ type StatTileProps = {
1589
1598
  footer?: ReactNode;
1590
1599
  loading?: boolean;
1591
1600
  error?: ReactNode;
1601
+ onRetry?: () => void;
1592
1602
  href?: string;
1593
1603
  };
1594
- export declare function StatTile({ label, value, unit, tone, delta, note, footer, loading, error, href }: StatTileProps): import("react").JSX.Element;
1604
+ export declare function StatTile({ label, value, unit, tone, delta, note, footer, loading, error, onRetry, href }: StatTileProps): import("react").JSX.Element;
1595
1605
  //#endregion
1596
1606
  //#region src/components/primitives/RecordIdBadge.d.ts
1597
1607
  type RecordIdBadgeProps = {
@@ -1895,6 +1905,11 @@ export declare class UploadError extends Error {
1895
1905
  /** A declared member of this error's type, read the one way. */
1896
1906
  ext<T = unknown>(member: string): T | undefined;
1897
1907
  }
1908
+ interface UploadFailure {
1909
+ code: string;
1910
+ message: string;
1911
+ detail?: string;
1912
+ }
1898
1913
  export declare function uploadFile(opts: UploadOptions): Promise<UploadedFile>;
1899
1914
  export declare function discardFile(fileId: string): Promise<void>;
1900
1915
  type UploadCheck = {
@@ -1910,6 +1925,73 @@ type UploadCheck = {
1910
1925
  export declare function validateClientSide(file: File, accepts: string[] | undefined, maxBytes: number | undefined): UploadCheck | null;
1911
1926
  export declare function formatBytes(n: number): string;
1912
1927
  //#endregion
1928
+ //#region src/components/file-widgets/useFileSelection.d.ts
1929
+ type FileSelectionState = "uploading" | "failed" | "cancelled" | "ready";
1930
+ interface FileSelection {
1931
+ localId: string;
1932
+ filename: string;
1933
+ sizeBytes: number;
1934
+ state: FileSelectionState;
1935
+ progress: UploadProgress | null;
1936
+ failure: UploadFailure | null;
1937
+ uploaded: UploadedFile | null;
1938
+ }
1939
+ type FileSelectionEvent = {
1940
+ type: "added";
1941
+ localId: string;
1942
+ filename: string;
1943
+ sizeBytes: number;
1944
+ } | {
1945
+ type: "refused";
1946
+ localId: string;
1947
+ filename: string;
1948
+ sizeBytes: number;
1949
+ failure: UploadFailure;
1950
+ } | {
1951
+ type: "progressed";
1952
+ localId: string;
1953
+ progress: UploadProgress;
1954
+ } | {
1955
+ type: "uploaded";
1956
+ localId: string;
1957
+ uploaded: UploadedFile;
1958
+ } | {
1959
+ type: "failed";
1960
+ localId: string;
1961
+ failure: UploadFailure;
1962
+ } | {
1963
+ type: "cancelled";
1964
+ localId: string;
1965
+ } | {
1966
+ type: "removed";
1967
+ localId: string;
1968
+ } | {
1969
+ type: "released";
1970
+ localIds: string[];
1971
+ };
1972
+ export declare function fileSelectionReducer(selections: FileSelection[], event: FileSelectionEvent): FileSelection[];
1973
+ interface FileSelectionSummary {
1974
+ readyFiles: UploadedFile[];
1975
+ uploading: boolean;
1976
+ failed: boolean;
1977
+ settled: boolean;
1978
+ }
1979
+ export declare function summarizeFileSelections(selections: FileSelection[]): FileSelectionSummary;
1980
+ interface UseFileSelectionOptions {
1981
+ entityCode?: string;
1982
+ fieldCode?: string;
1983
+ accepts?: string[];
1984
+ maxSizeBytes?: number;
1985
+ }
1986
+ interface UseFileSelection extends FileSelectionSummary {
1987
+ selections: FileSelection[];
1988
+ add: (files: FileList | File[]) => void;
1989
+ cancel: (localId: string) => void;
1990
+ remove: (localId: string) => void;
1991
+ release: (localIds: string[]) => void;
1992
+ }
1993
+ export declare function useFileSelection({ entityCode, fieldCode, accepts, maxSizeBytes }: UseFileSelectionOptions): UseFileSelection;
1994
+ //#endregion
1913
1995
  //#region src/components/file-widgets/cropper.d.ts
1914
1996
  interface CropperOptions {
1915
1997
  aspectRatio?: number;
@@ -2211,6 +2293,8 @@ interface AgentMessage {
2211
2293
  seq: number;
2212
2294
  role: AgentRole;
2213
2295
  content: AgentContentBlock[];
2296
+ attachments?: HydratedFile[];
2297
+ turn_id?: string | null;
2214
2298
  created_at: string;
2215
2299
  streaming?: boolean;
2216
2300
  }
@@ -2293,7 +2377,7 @@ interface AgentMessageContext {
2293
2377
  screen: string;
2294
2378
  record?: string;
2295
2379
  }
2296
- export declare function sendMessage(text: string, conversationId: string, context?: AgentMessageContext): Promise<AgentMessage>;
2380
+ export declare function sendMessage(text: string, conversationId: string, context?: AgentMessageContext, attachments?: string[]): Promise<AgentMessage>;
2297
2381
  export declare function answerQuestion(invocationId: string, answer: Record<string, unknown>): Promise<void>;
2298
2382
  export declare function sendElicitResponse(_conversationId: string, invocationId: string, data: Record<string, unknown>): Promise<void>;
2299
2383
  /** What a person permitted: this call alone, or the action for the rest of
@@ -2386,7 +2470,7 @@ export declare function useAgentConversation(initialConversationId?: string): {
2386
2470
  turns: AgentTurn[];
2387
2471
  invocations: AgentToolInvocation[];
2388
2472
  conversations: AgentConversation[];
2389
- send: (text: string, context?: AgentMessageContext) => Promise<void>;
2473
+ send: (text: string, context?: AgentMessageContext, attachments?: HydratedFile[]) => Promise<void>;
2390
2474
  approve: (invocationId: string, scope?: ApprovalScope) => Promise<void>;
2391
2475
  reject: (invocationId: string, note?: string) => Promise<void>;
2392
2476
  submitInput: (invocationId: string, data: Record<string, unknown>) => Promise<void>;
@@ -2572,4 +2656,4 @@ export declare function isFieldSoDProtected(schema: Schema | undefined, entity:
2572
2656
  */
2573
2657
  export declare function fieldAccessInfo(entity: Entity | undefined, fieldName: string): FieldAccessInfo | undefined;
2574
2658
  //#endregion
2575
- export { type Action, ActionBatchError, type ActionExecuteRequest, type ActionExecuteResponse, type ActionItemError, type ActionItemSkip, type ActionListPage, type AgentChatPanelProps, type AgentContentBlock, type AgentConversation, type AgentConversationDrawerProps, type AgentConversationStatus, type AgentElicitFormProps, type AgentInvocationKind, type AgentInvocationStatus, type AgentMessage, type AgentPickerProps, type AgentRole, type AgentToolInvocation, type AgentTurn, type AgentTurnState, type AgentTurnStatus, type AggregateGroup, type AggregateParams, type AggregateResponse, type ApiError, App as Declarion, type ApprovalScope, type AuthShellProps, type AuthUser, type AvailableAgent, type AvatarProps, type BatchOp, type BatchOpResult, type BatchResponse, type BoolToggleProps, type BrandGlyphProps, type BreadcrumbsProps, type BtnKind, type BtnProps, type BtnSize, CURSOR_LANGUAGE_CHANGED, CURSOR_SEMANTICS_MISMATCH, type CanonicalLocation, type ChangePasswordDialogProps, type CheckProps, type CheckSetupResponse, type ChildRelation, type ChipProps, type ClassificationTierDef, type CommandAction, type CommandActionType, type CommandPaletteProps, type CropperOptions, type CropperResult, type Crumb, type CurrencyDisplay, type CurrentScreen, type CursorActionDataResult, type CursorEntityDataParams, type CursorEntityDataResult, type CustomScreenProps, DEFAULT_RESPONSIVE_BREAKPOINTS, type DataResponse, type DateInputProps, type DraftEntry, type DropdownProps, DynamicIcon, type EnrichedRow, type Entity, type EntityField, type EnumDef, type FieldAccessInfo, type FieldLabelProps, type FileAddress, type FileDraftScopeApi, type FileFieldDef, type FileFieldDisplay, type FileFieldMode, type FileWidget, type FileWidgetProps, type FilterNode, type FilterOp, type FilterRecord, type FilterRecordField, type FilterRecordFields, type FilterURLState, type HoverCardAlign, type HoverCardProps, type HydratedFile, Icon, type IconBtnProps, type IconDef, type IconName, type IconProps, type ImageCropper, type InfoTooltipProps, type InlineEditCellProps, type InlineEditKind, type InlineEditTrigger, type JsonFieldProps, type LanguageDef, type LayoutWidget, type LayoutWidgetProps, type ListMeta, type ListParams, type ListResponse, type LiveObjectResult, type LocalizedString, type LoginResponse, MANDATORY_LANGUAGE, MULTIPLE_VALUES, type MassEditTarget, type MassEditTargetKind, type MenuItemProps, type MoneyTextOptions, type MultiSelectProps, NO_VALUE_OPS, type NavNode, OP_LABELS, type ObjectActionBarProps, type ObjectActionBarSlot, type ObjectActionSelection, OrderedMap, type PageStateSetter, type ParameterDef, type PasswordInputProps, type PatchMap, type PillProps, type PillSize, type PillTone, type PkValues, type PropertyDef, type PropertyValue, type PublicParam, type QEFieldProps, type QuickEditCellProps, type QuickPeekFieldSpec, type QuickPeekProps, type RailAreaItem, type RailProps, type RecordIdBadgeProps, type RefComboboxProps, type RefFieldItem, type RefFieldProps, type RefreshControlProps, type Refs, type ResponsiveBreakpoints, type ResponsiveMode, ResponsiveModeProvider, type ResponsiveViewport, type ReturnTarget, type RowFieldProps, type RowHelpers, type RunActionOptions, type Schema, type Screen, type ScreenBack, type ScrollAnchor, type ScrollableVirtualizer, type SectionBadge, type SectionCardProps, type SectionEmphasis, type SelectOption, type SelectProps, type SidebarProps, type StatTileProps, type StatTileTone, type StatusDef, type StatusGroupDef, type StatusInfo, type StructureDef, type TabItem, type TabStripProps, type TagsInputProps, type Tenant, type TenantChipProps, type TextAreaProps, type TextFn, type TextInputProps, type TextVars, type TooltipProps, type TopBarProps, type UploadCheck, type UploadProgress, type UploadedFile, type UseObjectActionsResult, type UseScreenBackOptions, type UseScreenTabOptions, type V2ListParams, type V2ListResponse, type V2Meta, type V2ParamInstance, type V2PropertyInstance, type V2StatusInstance, type ViewFieldProps, type ViewportCategory, buildActionBody, buildDetailHrefFromId, buildEntityDetailHref, buildRowDetailHref, countActiveFilters, deleteObject, executeAction$1 as executeAction, extractPkValues, fieldDisplayName, getIcon, getPrimaryKeyFields, hasOrGroups, isCursorStaleError, makeTextFn, parseFilterURLState, parseFiltersFromURL, pickLocalized, pkValuePartsToId, pkValuesFromId, pkValuesToDetailId, pkValuesToId, pluralText, resolveDetailRoute, resolveViewportCategory, restoreObject, setFiltersInURL, setIconRegistry, textWithNodes, useLocation, useNavigate, useParams, useResponsiveMode, useSearchParams };
2659
+ export { type Action, ActionBatchError, type ActionExecuteRequest, type ActionExecuteResponse, type ActionItemError, type ActionItemSkip, type ActionListPage, type AgentChatPanelProps, type AgentContentBlock, type AgentConversation, type AgentConversationDrawerProps, type AgentConversationStatus, type AgentElicitFormProps, type AgentInvocationKind, type AgentInvocationStatus, type AgentMessage, type AgentPickerProps, type AgentRole, type AgentToolInvocation, type AgentTurn, type AgentTurnState, type AgentTurnStatus, type AggregateGroup, type AggregateParams, type AggregateResponse, type ApiError, App as Declarion, type ApprovalScope, type AuthShellProps, type AuthUser, type AvailableAgent, type AvatarProps, type BatchOp, type BatchOpResult, type BatchResponse, type BoolToggleProps, type BrandGlyphProps, type BreadcrumbsProps, type BtnKind, type BtnProps, type BtnSize, CURSOR_LANGUAGE_CHANGED, CURSOR_SEMANTICS_MISMATCH, type CanonicalLocation, type ChangePasswordDialogProps, type CheckProps, type CheckSetupResponse, type ChildRelation, type ChipProps, type ClassificationTierDef, type CommandAction, type CommandActionType, type CommandPaletteProps, type CropperOptions, type CropperResult, type Crumb, type CurrencyDisplay, type CurrentScreen, type CursorActionDataResult, type CursorEntityDataParams, type CursorEntityDataResult, type CustomScreenProps, DEFAULT_RESPONSIVE_BREAKPOINTS, type DataResponse, type DateInputProps, type DraftEntry, type DropdownProps, DynamicIcon, type EnrichedRow, type Entity, type EntityField, type EnumDef, type FieldAccessInfo, type FieldLabelProps, type FileAddress, type FileDraftScopeApi, type FileFieldDef, type FileFieldDisplay, type FileFieldMode, type FileSelection, type FileSelectionEvent, type FileSelectionState, type FileSelectionSummary, type FileWidget, type FileWidgetProps, type FilterNode, type FilterOp, type FilterRecord, type FilterRecordField, type FilterRecordFields, type FilterURLState, type HoverCardAlign, type HoverCardProps, type HydratedFile, Icon, type IconBtnProps, type IconDef, type IconName, type IconProps, type ImageCropper, type InfoTooltipProps, type InlineEditCellProps, type InlineEditKind, type InlineEditTrigger, type JsonFieldProps, type LanguageDef, type LayoutWidget, type LayoutWidgetProps, type ListMeta, type ListParams, type ListResponse, type LiveObjectResult, type LocalizedString, type LoginResponse, MANDATORY_LANGUAGE, MULTIPLE_VALUES, type MassEditTarget, type MassEditTargetKind, type MenuItemProps, type MoneyTextOptions, type MultiSelectProps, NO_VALUE_OPS, type NavNode, OP_LABELS, type ObjectActionBarProps, type ObjectActionBarSlot, type ObjectActionSelection, OrderedMap, type PageStateSetter, type ParameterDef, type PasswordInputProps, type PatchMap, type PillProps, type PillSize, type PillTone, type PkValues, type PropertyDef, type PropertyValue, type PublicParam, type QEFieldProps, type QuickEditCellProps, type QuickPeekFieldSpec, type QuickPeekProps, type RailAreaItem, type RailProps, type ReadDisplayState, type ReadQuery, type RecordIdBadgeProps, type RefComboboxProps, type RefFieldItem, type RefFieldProps, type RefreshControlProps, type Refs, type ResponsiveBreakpoints, type ResponsiveMode, ResponsiveModeProvider, type ResponsiveViewport, type ReturnTarget, type RowFieldProps, type RowHelpers, type RunActionOptions, type Schema, type Screen, type ScreenBack, type ScrollAnchor, type ScrollableVirtualizer, type SectionBadge, type SectionCardProps, type SectionEmphasis, type SelectOption, type SelectProps, type SidebarProps, type StatTileProps, type StatTileTone, type StatusDef, type StatusGroupDef, type StatusInfo, type StructureDef, type TabItem, type TabStripProps, type TagsInputProps, type Tenant, type TenantChipProps, type TextAreaProps, type TextFn, type TextInputProps, type TextVars, type TooltipProps, type TopBarProps, type UploadCheck, type UploadProgress, type UploadedFile, type UseFileSelection, type UseFileSelectionOptions, type UseObjectActionsResult, type UseScreenBackOptions, type UseScreenTabOptions, type V2ListParams, type V2ListResponse, type V2Meta, type V2ParamInstance, type V2PropertyInstance, type V2StatusInstance, type ViewFieldProps, type ViewportCategory, buildActionBody, buildDetailHrefFromId, buildEntityDetailHref, buildRowDetailHref, countActiveFilters, deleteObject, executeAction$1 as executeAction, extractPkValues, fieldDisplayName, getIcon, getPrimaryKeyFields, hasOrGroups, isCursorStaleError, makeTextFn, parseFilterURLState, parseFiltersFromURL, pickLocalized, pkValuePartsToId, pkValuesFromId, pkValuesToDetailId, pkValuesToId, pluralText, resolveDetailRoute, resolveViewportCategory, restoreObject, setFiltersInURL, setIconRegistry, textWithNodes, useLocation, useNavigate, useParams, useResponsiveMode, useSearchParams };
package/dist-lib/index.js CHANGED
@@ -36,97 +36,99 @@ import { Check as le } from "./components/primitives/Check.js";
36
36
  import { Spinner as ue } from "./components/primitives/Spinner.js";
37
37
  import { ClassifiedFieldLocked as de } from "./components/primitives/ClassifiedFieldLocked.js";
38
38
  import { DateInput as fe, FieldLabel as pe, JsonField as me, MultiSelect as he, PasswordInput as ge, QuickEditCell as _e, RefField as ve, Select as ye, TagsInput as be, TextArea as xe, TextInput as Se, ViewField as Ce } from "./components/primitives/Fields.js";
39
- import { useEffectiveParam as we, useParam as Te, usePublicParams as Ee, useResolvedParam as De } from "./hooks/useParams.js";
40
- import { getIcon as Oe, setIconRegistry as ke } from "./stores/icon-registry.js";
41
- import { DynamicIcon as Ae } from "./components/shared/DynamicIcon.js";
42
- import { Rail as je } from "./components/layout/Rail.js";
43
- import { useTabStore as Me } from "./stores/tabs.js";
44
- import { ConfirmDialog as Ne } from "./components/shared/ConfirmDialog.js";
45
- import { useTabNavigate as Pe } from "./hooks/useTabNavigate.js";
46
- import { entityDataQueryKey as Fe, useEntityCount as Ie, useEntityData as Le } from "./hooks/useEntityData.js";
47
- import { useEntity as Re } from "./hooks/useEntity.js";
48
- import { useScreen as ze } from "./hooks/useScreen.js";
49
- import { useViews as Be } from "./hooks/useViews.js";
50
- import { Sidebar as Ve, buildSections as He } from "./components/layout/Sidebar.js";
51
- import { useAuth as Ue } from "./hooks/useAuth.js";
52
- import { useImpersonation as We } from "./hooks/useImpersonation.js";
53
- import { TenantChip as Ge, envTone as Ke } from "./components/layout/TenantChip.js";
54
- import { Breadcrumbs as qe } from "./components/chrome/Breadcrumbs.js";
55
- import { TopBar as Je } from "./components/layout/TopBar.js";
56
- import { TabStrip as Ye } from "./components/layout/TabStrip.js";
57
- import { ImpersonationBanner as Xe } from "./components/layout/ImpersonationBanner.js";
58
- import { ImpersonationFrame as Ze } from "./components/layout/ImpersonationFrame.js";
59
- import { CommandPalette as Qe } from "./components/layout/CommandPalette.js";
60
- import { AgentChatPanel as $e } from "./components/agents/AgentChatPanel.js";
61
- import { classificationTier as et, fieldAccessInfo as tt, fieldClassification as nt, fieldRequiredPermission as rt, isFieldReadable as it, isFieldSoDProtected as at, isFieldWritable as ot } from "./lib/field-classification.js";
62
- import { ACTION_DATA_CURSOR_KEY as st, ACTION_DATA_KEY as ct, actionDataQueryKey as lt, cursorActionDataQueryKey as ut, useActionData as dt, useCursorActionData as ft } from "./hooks/useActionData.js";
63
- import { EntityClient as pt, RefCache as mt, entityClient as ht } from "./api/entities.js";
64
- import { cursorEntityDataQueryKey as gt, cursorEntityStableKey as _t, useCursorEntityData as vt } from "./hooks/useCursorEntityData.js";
65
- import { ActionRunnerProvider as yt, useActionRunner as bt } from "./components/actions/ActionRunner.js";
66
- import { canonicalUrl as xt } from "./lib/canonical-url.js";
67
- import { PAGE_STATE_TTL_PARAM as St, usePageStateTtl as Ct } from "./hooks/usePageStateTtl.js";
68
- import { useRegisterRetainedQuery as wt } from "./hooks/usePageStateRuntime.js";
69
- import { AuthShell as Tt } from "./components/pages/auth/AuthShell.js";
70
- import { SignIn as Q } from "./components/pages/auth/SignIn.js";
71
- import { SignUp as Et } from "./components/pages/auth/SignUp.js";
72
- import { Forgot as Dt } from "./components/pages/auth/Forgot.js";
73
- import { Reset as Ot } from "./components/pages/auth/Reset.js";
74
- import { TwoFA as kt } from "./components/pages/auth/TwoFA.js";
75
- import { Profile as At } from "./components/pages/profile/Profile.js";
76
- import { Preferences as jt } from "./components/pages/profile/Preferences.js";
77
- import { registerScreen as Mt } from "./stores/screen-registry.js";
78
- import { CurrentScreenProvider as Nt, useCurrentScreen as Pt } from "./hooks/useCurrentScreen.js";
39
+ import { readDisplayState as we } from "./lib/read-display-state.js";
40
+ import { useEffectiveParam as Te, useParam as Ee, usePublicParams as De, useResolvedParam as Oe } from "./hooks/useParams.js";
41
+ import { getIcon as ke, setIconRegistry as Ae } from "./stores/icon-registry.js";
42
+ import { DynamicIcon as je } from "./components/shared/DynamicIcon.js";
43
+ import { Rail as Me } from "./components/layout/Rail.js";
44
+ import { useTabStore as Ne } from "./stores/tabs.js";
45
+ import { ConfirmDialog as Pe } from "./components/shared/ConfirmDialog.js";
46
+ import { useTabNavigate as Fe } from "./hooks/useTabNavigate.js";
47
+ import { entityDataQueryKey as Ie, useEntityCount as Le, useEntityData as Re } from "./hooks/useEntityData.js";
48
+ import { useEntity as ze } from "./hooks/useEntity.js";
49
+ import { useScreen as Be } from "./hooks/useScreen.js";
50
+ import { useViews as Ve } from "./hooks/useViews.js";
51
+ import { Sidebar as He, buildSections as Ue } from "./components/layout/Sidebar.js";
52
+ import { useAuth as We } from "./hooks/useAuth.js";
53
+ import { useImpersonation as Ge } from "./hooks/useImpersonation.js";
54
+ import { TenantChip as Ke, envTone as qe } from "./components/layout/TenantChip.js";
55
+ import { Breadcrumbs as Je } from "./components/chrome/Breadcrumbs.js";
56
+ import { TopBar as Ye } from "./components/layout/TopBar.js";
57
+ import { TabStrip as Xe } from "./components/layout/TabStrip.js";
58
+ import { ImpersonationBanner as Ze } from "./components/layout/ImpersonationBanner.js";
59
+ import { ImpersonationFrame as Qe } from "./components/layout/ImpersonationFrame.js";
60
+ import { CommandPalette as $e } from "./components/layout/CommandPalette.js";
61
+ import { AgentChatPanel as et } from "./components/agents/AgentChatPanel.js";
62
+ import { classificationTier as tt, fieldAccessInfo as nt, fieldClassification as rt, fieldRequiredPermission as it, isFieldReadable as at, isFieldSoDProtected as ot, isFieldWritable as st } from "./lib/field-classification.js";
63
+ import { ACTION_DATA_CURSOR_KEY as ct, ACTION_DATA_KEY as lt, actionDataQueryKey as ut, cursorActionDataQueryKey as dt, useActionData as ft, useCursorActionData as pt } from "./hooks/useActionData.js";
64
+ import { EntityClient as mt, RefCache as ht, entityClient as gt } from "./api/entities.js";
65
+ import { cursorEntityDataQueryKey as _t, cursorEntityStableKey as vt, useCursorEntityData as yt } from "./hooks/useCursorEntityData.js";
66
+ import { ActionRunnerProvider as bt, useActionRunner as xt } from "./components/actions/ActionRunner.js";
67
+ import { canonicalUrl as St } from "./lib/canonical-url.js";
68
+ import { PAGE_STATE_TTL_PARAM as Ct, usePageStateTtl as wt } from "./hooks/usePageStateTtl.js";
69
+ import { useRegisterRetainedQuery as Tt } from "./hooks/usePageStateRuntime.js";
70
+ import { AuthShell as Et } from "./components/pages/auth/AuthShell.js";
71
+ import { SignIn as Dt } from "./components/pages/auth/SignIn.js";
72
+ import { SignUp as Ot } from "./components/pages/auth/SignUp.js";
73
+ import { Forgot as kt } from "./components/pages/auth/Forgot.js";
74
+ import { Reset as Q } from "./components/pages/auth/Reset.js";
75
+ import { TwoFA as At } from "./components/pages/auth/TwoFA.js";
76
+ import { Profile as jt } from "./components/pages/profile/Profile.js";
77
+ import { Preferences as Mt } from "./components/pages/profile/Preferences.js";
78
+ import { registerScreen as Nt } from "./stores/screen-registry.js";
79
+ import { CurrentScreenProvider as Pt, useCurrentScreen as Ft } from "./hooks/useCurrentScreen.js";
79
80
  import { App as $ } from "./app.js";
80
- import { formatMoneyText as Ft } from "./lib/money-text.js";
81
- import { Batch as It } from "./api/batch.js";
82
- import { useAggregate as Lt } from "./hooks/useAggregate.js";
83
- import { useAllEntityData as Rt } from "./hooks/useAllEntityData.js";
84
- import { objectQueryKey as zt, useObject as Bt } from "./hooks/useObject.js";
85
- import { fileReferenceJSONQueryKey as Vt, useFileReferenceJSON as Ht } from "./hooks/useFileReferenceJSON.js";
86
- import { useDebounce as Ut } from "./hooks/useDebounce.js";
87
- import { RefCombobox as Wt } from "./components/fields/RefCombobox.js";
88
- import { getFileWidget as Gt, hasFileWidget as Kt, registerFileWidget as qt } from "./components/file-widgets/registry.js";
89
- import { UploadError as Jt, discardFile as Yt, formatBytes as Xt, uploadFile as Zt, validateClientSide as Qt } from "./components/file-widgets/upload.js";
90
- import { getImageCropper as $t, setImageCropper as en } from "./components/file-widgets/cropper.js";
91
- import { FileDraftScope as tn, useDraftRegistration as nn, useFileDraftScope as rn } from "./components/file-widgets/draft-scope.js";
92
- import { SquareImage as an } from "./components/file-widgets/SquareImage.js";
93
- import { CircleImage as on } from "./components/file-widgets/CircleImage.js";
94
- import { WideBanner as sn } from "./components/file-widgets/WideBanner.js";
95
- import { StructureField as cn } from "./components/fields/StructureField.js";
96
- import { useLiveObject as ln } from "./hooks/useLiveObject.js";
97
- import { useCreateObject as un, useDeleteObject as dn, useUpdateObject as fn } from "./hooks/useMutations.js";
98
- import { useSetStatus as pn } from "./hooks/useObjectStatus.js";
99
- import { useDeleteProperty as mn, useSetProperty as hn } from "./hooks/useProperties.js";
100
- import { NO_VALUE_OPS as gn, OP_LABELS as _n, countActiveFilters as vn, hasOrGroups as yn, parseFilterURLState as bn, parseFiltersFromURL as xn, setFiltersInURL as Sn } from "./lib/filters.js";
101
- import { useFilters as Cn } from "./hooks/useFilters.js";
102
- import { useColumns as wn } from "./hooks/useColumns.js";
103
- import { getLayoutWidget as Tn, hasLayoutWidget as En, registerLayoutWidget as Dn } from "./components/detail-layout/widgets/registry.js";
104
- import { useScreenBack as On } from "./hooks/useScreenBack.js";
105
- import { usePageState as kn } from "./hooks/usePageState.js";
106
- import { useTabSearchMirror as An } from "./hooks/useTabSearchMirror.js";
107
- import { useScreenTab as jn } from "./hooks/useScreenTab.js";
108
- import { SCROLL_STATE_KEY as Mn, usePlainScrollRestoration as Nn, useSavedScrollOffset as Pn, useVirtualScrollRestoration as Fn } from "./lib/scroll-restoration.js";
109
- import { PageHeader as In } from "./components/chrome/PageHeader.js";
110
- import { EmptyState as Ln } from "./components/shared/EmptyState.js";
111
- import { FilterDrawer as Rn } from "./components/filters/FilterDrawer.js";
112
- import { FilterChips as zn } from "./components/filters/FilterChips.js";
113
- import { ColumnPicker as Bn } from "./components/list/ColumnPicker.js";
114
- import { ViewSwitcher as Vn } from "./components/list/ViewSwitcher.js";
115
- import { evaluateFilterTree as Hn } from "./lib/filter-evaluator.js";
116
- import { commonVariantActionCodes as Un, effectiveScreenForRecord as Wn, resolveEntityVariantCode as Gn, resolveScreenVariantCode as Kn, variantActionCodesForRecord as qn } from "./lib/variants.js";
117
- import { ObjectActionBar as Jn, useObjectActions as Yn } from "./components/actions/ObjectActionBar.js";
118
- import { RefreshControl as Xn } from "./components/shared/RefreshControl.js";
119
- import { QEField as Zn, QuickPeek as Qn } from "./components/list/QuickPeek.js";
120
- import { InlineEditCell as $n } from "./components/list/InlineEditCell.js";
121
- import { ChangePasswordDialog as er } from "./components/shared/ChangePasswordDialog.js";
122
- import { ImpersonationStartModal as tr } from "./components/layout/ImpersonationStartModal.js";
123
- import { AgentElicitForm as nr } from "./components/agents/AgentElicitForm.js";
124
- import { AgentPicker as rr } from "./components/agents/AgentPicker.js";
125
- import { AgentConversationDrawer as ir } from "./components/agents/AgentConversationDrawer.js";
126
- import { answerQuestion as ar, approveInvocation as or, cancelConversation as sr, cancelInvocation as cr, createConversation as lr, listAvailableAgents as ur, listConversations as dr, loadConversationInvocations as fr, loadConversationTurns as pr, loadHistory as mr, rejectInvocation as hr, sendElicitResponse as gr, sendMessage as _r } from "./api/agents.js";
127
- import { useAgentConversation as vr } from "./hooks/useAgentConversation.js";
128
- import { formatCount as yr, formatEstimatedCount as br, formatExactCount as xr } from "./lib/format-count.js";
129
- import { buildMassEditTargets as Sr, parseTargetFilter as Cr } from "./lib/mass-edit.js";
130
- import { MULTIPLE_VALUES as wr, PropertyGridEditor as Tr, detectCommonValue as Er } from "./components/actions/PropertyGridEditor.js";
131
- import { useLocation as Dr, useNavigate as Or, useParams as kr, useSearchParams as Ar } from "react-router";
132
- export { st as ACTION_DATA_CURSOR_KEY, ct as ACTION_DATA_KEY, k as ActionBatchError, yt as ActionRunnerProvider, $e as AgentChatPanel, ir as AgentConversationDrawer, nr as AgentElicitForm, rr as AgentPicker, $ as App, Tt as AuthShell, B as Avatar, It as Batch, se as BoolToggle, V as BrandGlyph, qe as Breadcrumbs, I as Btn, ee as CURSOR_LANGUAGE_CHANGED, te as CURSOR_SEMANTICS_MISMATCH, er as ChangePasswordDialog, le as Check, K as Chip, on as CircleImage, de as ClassifiedFieldLocked, Bn as ColumnPicker, Qe as CommandPalette, Ne as ConfirmDialog, Nt as CurrentScreenProvider, Z as DEFAULT_RESPONSIVE_BREAKPOINTS, fe as DateInput, $ as Declarion, H as Dropdown, Ae as DynamicIcon, Ln as EmptyState, pt as EntityClient, pe as FieldLabel, tn as FileDraftScope, zn as FilterChips, Rn as FilterDrawer, Dt as Forgot, U as HoverCard, F as Icon, L as IconBtn, Xe as ImpersonationBanner, Ze as ImpersonationFrame, tr as ImpersonationStartModal, W as InfoTooltip, $n as InlineEditCell, me as JsonField, z as Kbd, x as MANDATORY_LANGUAGE, wr as MULTIPLE_VALUES, ce as MenuItem, he as MultiSelect, gn as NO_VALUE_OPS, _n as OP_LABELS, Jn as ObjectActionBar, e as OrderedMap, St as PAGE_STATE_TTL_PARAM, In as PageHeader, ge as PasswordInput, R as Pill, jt as Preferences, At as Profile, Tr as PropertyGridEditor, Zn as QEField, _e as QuickEditCell, Qn as QuickPeek, je as Rail, X as RecordIdBadge, mt as RefCache, Wt as RefCombobox, ve as RefField, Xn as RefreshControl, Ot as Reset, ie as ResponsiveModeProvider, oe as RowField, Mn as SCROLL_STATE_KEY, J as SectionCard, ye as Select, Ve as Sidebar, Q as SignIn, Et as SignUp, _ as SmartDetailPage, v as SmartListPage, y as SmartRecordListPage, ue as Spinner, an as SquareImage, Y as StatTile, cn as StructureField, Ye as TabStrip, be as TagsInput, Ge as TenantChip, xe as TextArea, Se as TextInput, G as Tooltip, Je as TopBar, kt as TwoFA, Jt as UploadError, Ce as ViewField, Vn as ViewSwitcher, sn as WideBanner, lt as actionDataQueryKey, ar as answerQuestion, or as approveInvocation, A as buildActionBody, o as buildDetailHrefFromId, s as buildEntityDetailHref, Sr as buildMassEditTargets, c as buildRowDetailHref, He as buildSections, sr as cancelConversation, cr as cancelInvocation, xt as canonicalUrl, et as classificationTier, t as coerceDisplayString, Un as commonVariantActionCodes, vn as countActiveFilters, lr as createConversation, ut as cursorActionDataQueryKey, gt as cursorEntityDataQueryKey, _t as cursorEntityStableKey, j as deleteObject, Er as detectCommonValue, Yt as discardFile, n as editorWallClock, r as editorWireValue, Wn as effectiveScreenForRecord, ht as entityClient, Fe as entityDataQueryKey, Ke as envTone, Hn as evaluateFilterTree, M as executeAction, l as extractPkValues, P as failureTitle, tt as fieldAccessInfo, nt as fieldClassification, u as fieldDisplayName, rt as fieldRequiredPermission, Vt as fileReferenceJSONQueryKey, Xt as formatBytes, yr as formatCount, br as formatEstimatedCount, xr as formatExactCount, Ft as formatMoneyText, i as formatOffsetTimestamp, Gt as getFileWidget, Oe as getIcon, $t as getImageCropper, Tn as getLayoutWidget, d as getPrimaryKeyFields, Kt as hasFileWidget, En as hasLayoutWidget, yn as hasOrGroups, ne as isCursorStaleError, it as isFieldReadable, at as isFieldSoDProtected, ot as isFieldWritable, ur as listAvailableAgents, dr as listConversations, fr as loadConversationInvocations, pr as loadConversationTurns, mr as loadHistory, S as makeTextFn, zt as objectQueryKey, bn as parseFilterURLState, xn as parseFiltersFromURL, Cr as parseTargetFilter, C as pickLocalized, f as pkValuePartsToId, p as pkValuesFromId, m as pkValuesToDetailId, h as pkValuesToId, w as pluralText, qt as registerFileWidget, Dn as registerLayoutWidget, Mt as registerScreen, hr as rejectInvocation, E as reresolveLanguage, g as resolveDetailRoute, Gn as resolveEntityVariantCode, Kn as resolveScreenVariantCode, re as resolveViewportCategory, N as restoreObject, gr as sendElicitResponse, _r as sendMessage, Sn as setFiltersInURL, ke as setIconRegistry, en as setImageCropper, T as textWithNodes, Zt as uploadFile, dt as useActionData, bt as useActionRunner, vr as useAgentConversation, Lt as useAggregate, Rt as useAllEntityData, Ue as useAuth, wn as useColumns, un as useCreateObject, Pt as useCurrentScreen, ft as useCursorActionData, vt as useCursorEntityData, Ut as useDebounce, dn as useDeleteObject, mn as useDeleteProperty, D as useDeploymentLanguage, nn as useDraftRegistration, we as useEffectiveParam, Re as useEntity, Ie as useEntityCount, Le as useEntityData, rn as useFileDraftScope, Ht as useFileReferenceJSON, Cn as useFilters, We as useImpersonation, O as useLanguage, ln as useLiveObject, Dr as useLocation, Or as useNavigate, Bt as useObject, Yn as useObjectActions, kn as usePageState, Ct as usePageStateTtl, Te as useParam, kr as useParams, Nn as usePlainScrollRestoration, Ee as usePublicParams, wt as useRegisterRetainedQuery, De as useResolvedParam, ae as useResponsiveMode, Pn as useSavedScrollOffset, b as useSchema, ze as useScreen, On as useScreenBack, jn as useScreenTab, Ar as useSearchParams, hn as useSetProperty, pn as useSetStatus, Pe as useTabNavigate, An as useTabSearchMirror, Me as useTabStore, q as useText, fn as useUpdateObject, Be as useViews, Fn as useVirtualScrollRestoration, Qt as validateClientSide, qn as variantActionCodesForRecord, a as zoneMark };
81
+ import { formatMoneyText as It } from "./lib/money-text.js";
82
+ import { Batch as Lt } from "./api/batch.js";
83
+ import { useAggregate as Rt } from "./hooks/useAggregate.js";
84
+ import { useAllEntityData as zt } from "./hooks/useAllEntityData.js";
85
+ import { objectQueryKey as Bt, useObject as Vt } from "./hooks/useObject.js";
86
+ import { fileReferenceJSONQueryKey as Ht, useFileReferenceJSON as Ut } from "./hooks/useFileReferenceJSON.js";
87
+ import { useDebounce as Wt } from "./hooks/useDebounce.js";
88
+ import { RefCombobox as Gt } from "./components/fields/RefCombobox.js";
89
+ import { getFileWidget as Kt, hasFileWidget as qt, registerFileWidget as Jt } from "./components/file-widgets/registry.js";
90
+ import { UploadError as Yt, discardFile as Xt, formatBytes as Zt, uploadFile as Qt, validateClientSide as $t } from "./components/file-widgets/upload.js";
91
+ import { getImageCropper as en, setImageCropper as tn } from "./components/file-widgets/cropper.js";
92
+ import { FileDraftScope as nn, useDraftRegistration as rn, useFileDraftScope as an } from "./components/file-widgets/draft-scope.js";
93
+ import { SquareImage as on } from "./components/file-widgets/SquareImage.js";
94
+ import { CircleImage as sn } from "./components/file-widgets/CircleImage.js";
95
+ import { WideBanner as cn } from "./components/file-widgets/WideBanner.js";
96
+ import { fileSelectionReducer as ln, summarizeFileSelections as un, useFileSelection as dn } from "./components/file-widgets/useFileSelection.js";
97
+ import { StructureField as fn } from "./components/fields/StructureField.js";
98
+ import { useLiveObject as pn } from "./hooks/useLiveObject.js";
99
+ import { useCreateObject as mn, useDeleteObject as hn, useUpdateObject as gn } from "./hooks/useMutations.js";
100
+ import { useSetStatus as _n } from "./hooks/useObjectStatus.js";
101
+ import { useDeleteProperty as vn, useSetProperty as yn } from "./hooks/useProperties.js";
102
+ import { NO_VALUE_OPS as bn, OP_LABELS as xn, countActiveFilters as Sn, hasOrGroups as Cn, parseFilterURLState as wn, parseFiltersFromURL as Tn, setFiltersInURL as En } from "./lib/filters.js";
103
+ import { useFilters as Dn } from "./hooks/useFilters.js";
104
+ import { useColumns as On } from "./hooks/useColumns.js";
105
+ import { getLayoutWidget as kn, hasLayoutWidget as An, registerLayoutWidget as jn } from "./components/detail-layout/widgets/registry.js";
106
+ import { useScreenBack as Mn } from "./hooks/useScreenBack.js";
107
+ import { usePageState as Nn } from "./hooks/usePageState.js";
108
+ import { useTabSearchMirror as Pn } from "./hooks/useTabSearchMirror.js";
109
+ import { useScreenTab as Fn } from "./hooks/useScreenTab.js";
110
+ import { SCROLL_STATE_KEY as In, usePlainScrollRestoration as Ln, useSavedScrollOffset as Rn, useVirtualScrollRestoration as zn } from "./lib/scroll-restoration.js";
111
+ import { PageHeader as Bn } from "./components/chrome/PageHeader.js";
112
+ import { EmptyState as Vn } from "./components/shared/EmptyState.js";
113
+ import { FilterDrawer as Hn } from "./components/filters/FilterDrawer.js";
114
+ import { FilterChips as Un } from "./components/filters/FilterChips.js";
115
+ import { ColumnPicker as Wn } from "./components/list/ColumnPicker.js";
116
+ import { ViewSwitcher as Gn } from "./components/list/ViewSwitcher.js";
117
+ import { evaluateFilterTree as Kn } from "./lib/filter-evaluator.js";
118
+ import { commonVariantActionCodes as qn, effectiveScreenForRecord as Jn, resolveEntityVariantCode as Yn, resolveScreenVariantCode as Xn, variantActionCodesForRecord as Zn } from "./lib/variants.js";
119
+ import { ObjectActionBar as Qn, useObjectActions as $n } from "./components/actions/ObjectActionBar.js";
120
+ import { RefreshControl as er } from "./components/shared/RefreshControl.js";
121
+ import { QEField as tr, QuickPeek as nr } from "./components/list/QuickPeek.js";
122
+ import { InlineEditCell as rr } from "./components/list/InlineEditCell.js";
123
+ import { ChangePasswordDialog as ir } from "./components/shared/ChangePasswordDialog.js";
124
+ import { ImpersonationStartModal as ar } from "./components/layout/ImpersonationStartModal.js";
125
+ import { AgentElicitForm as or } from "./components/agents/AgentElicitForm.js";
126
+ import { AgentPicker as sr } from "./components/agents/AgentPicker.js";
127
+ import { AgentConversationDrawer as cr } from "./components/agents/AgentConversationDrawer.js";
128
+ import { answerQuestion as lr, approveInvocation as ur, cancelConversation as dr, cancelInvocation as fr, createConversation as pr, listAvailableAgents as mr, listConversations as hr, loadConversationInvocations as gr, loadConversationTurns as _r, loadHistory as vr, rejectInvocation as yr, sendElicitResponse as br, sendMessage as xr } from "./api/agents.js";
129
+ import { useAgentConversation as Sr } from "./hooks/useAgentConversation.js";
130
+ import { formatCount as Cr, formatEstimatedCount as wr, formatExactCount as Tr } from "./lib/format-count.js";
131
+ import { buildMassEditTargets as Er, parseTargetFilter as Dr } from "./lib/mass-edit.js";
132
+ import { MULTIPLE_VALUES as Or, PropertyGridEditor as kr, detectCommonValue as Ar } from "./components/actions/PropertyGridEditor.js";
133
+ import { useLocation as jr, useNavigate as Mr, useParams as Nr, useSearchParams as Pr } from "react-router";
134
+ export { ct as ACTION_DATA_CURSOR_KEY, lt as ACTION_DATA_KEY, k as ActionBatchError, bt as ActionRunnerProvider, et as AgentChatPanel, cr as AgentConversationDrawer, or as AgentElicitForm, sr as AgentPicker, $ as App, Et as AuthShell, B as Avatar, Lt as Batch, se as BoolToggle, V as BrandGlyph, Je as Breadcrumbs, I as Btn, ee as CURSOR_LANGUAGE_CHANGED, te as CURSOR_SEMANTICS_MISMATCH, ir as ChangePasswordDialog, le as Check, K as Chip, sn as CircleImage, de as ClassifiedFieldLocked, Wn as ColumnPicker, $e as CommandPalette, Pe as ConfirmDialog, Pt as CurrentScreenProvider, Z as DEFAULT_RESPONSIVE_BREAKPOINTS, fe as DateInput, $ as Declarion, H as Dropdown, je as DynamicIcon, Vn as EmptyState, mt as EntityClient, pe as FieldLabel, nn as FileDraftScope, Un as FilterChips, Hn as FilterDrawer, kt as Forgot, U as HoverCard, F as Icon, L as IconBtn, Ze as ImpersonationBanner, Qe as ImpersonationFrame, ar as ImpersonationStartModal, W as InfoTooltip, rr as InlineEditCell, me as JsonField, z as Kbd, x as MANDATORY_LANGUAGE, Or as MULTIPLE_VALUES, ce as MenuItem, he as MultiSelect, bn as NO_VALUE_OPS, xn as OP_LABELS, Qn as ObjectActionBar, e as OrderedMap, Ct as PAGE_STATE_TTL_PARAM, Bn as PageHeader, ge as PasswordInput, R as Pill, Mt as Preferences, jt as Profile, kr as PropertyGridEditor, tr as QEField, _e as QuickEditCell, nr as QuickPeek, Me as Rail, X as RecordIdBadge, ht as RefCache, Gt as RefCombobox, ve as RefField, er as RefreshControl, Q as Reset, ie as ResponsiveModeProvider, oe as RowField, In as SCROLL_STATE_KEY, J as SectionCard, ye as Select, He as Sidebar, Dt as SignIn, Ot as SignUp, _ as SmartDetailPage, v as SmartListPage, y as SmartRecordListPage, ue as Spinner, on as SquareImage, Y as StatTile, fn as StructureField, Xe as TabStrip, be as TagsInput, Ke as TenantChip, xe as TextArea, Se as TextInput, G as Tooltip, Ye as TopBar, At as TwoFA, Yt as UploadError, Ce as ViewField, Gn as ViewSwitcher, cn as WideBanner, ut as actionDataQueryKey, lr as answerQuestion, ur as approveInvocation, A as buildActionBody, o as buildDetailHrefFromId, s as buildEntityDetailHref, Er as buildMassEditTargets, c as buildRowDetailHref, Ue as buildSections, dr as cancelConversation, fr as cancelInvocation, St as canonicalUrl, tt as classificationTier, t as coerceDisplayString, qn as commonVariantActionCodes, Sn as countActiveFilters, pr as createConversation, dt as cursorActionDataQueryKey, _t as cursorEntityDataQueryKey, vt as cursorEntityStableKey, j as deleteObject, Ar as detectCommonValue, Xt as discardFile, n as editorWallClock, r as editorWireValue, Jn as effectiveScreenForRecord, gt as entityClient, Ie as entityDataQueryKey, qe as envTone, Kn as evaluateFilterTree, M as executeAction, l as extractPkValues, P as failureTitle, nt as fieldAccessInfo, rt as fieldClassification, u as fieldDisplayName, it as fieldRequiredPermission, Ht as fileReferenceJSONQueryKey, ln as fileSelectionReducer, Zt as formatBytes, Cr as formatCount, wr as formatEstimatedCount, Tr as formatExactCount, It as formatMoneyText, i as formatOffsetTimestamp, Kt as getFileWidget, ke as getIcon, en as getImageCropper, kn as getLayoutWidget, d as getPrimaryKeyFields, qt as hasFileWidget, An as hasLayoutWidget, Cn as hasOrGroups, ne as isCursorStaleError, at as isFieldReadable, ot as isFieldSoDProtected, st as isFieldWritable, mr as listAvailableAgents, hr as listConversations, gr as loadConversationInvocations, _r as loadConversationTurns, vr as loadHistory, S as makeTextFn, Bt as objectQueryKey, wn as parseFilterURLState, Tn as parseFiltersFromURL, Dr as parseTargetFilter, C as pickLocalized, f as pkValuePartsToId, p as pkValuesFromId, m as pkValuesToDetailId, h as pkValuesToId, w as pluralText, we as readDisplayState, Jt as registerFileWidget, jn as registerLayoutWidget, Nt as registerScreen, yr as rejectInvocation, E as reresolveLanguage, g as resolveDetailRoute, Yn as resolveEntityVariantCode, Xn as resolveScreenVariantCode, re as resolveViewportCategory, N as restoreObject, br as sendElicitResponse, xr as sendMessage, En as setFiltersInURL, Ae as setIconRegistry, tn as setImageCropper, un as summarizeFileSelections, T as textWithNodes, Qt as uploadFile, ft as useActionData, xt as useActionRunner, Sr as useAgentConversation, Rt as useAggregate, zt as useAllEntityData, We as useAuth, On as useColumns, mn as useCreateObject, Ft as useCurrentScreen, pt as useCursorActionData, yt as useCursorEntityData, Wt as useDebounce, hn as useDeleteObject, vn as useDeleteProperty, D as useDeploymentLanguage, rn as useDraftRegistration, Te as useEffectiveParam, ze as useEntity, Le as useEntityCount, Re as useEntityData, an as useFileDraftScope, Ut as useFileReferenceJSON, dn as useFileSelection, Dn as useFilters, Ge as useImpersonation, O as useLanguage, pn as useLiveObject, jr as useLocation, Mr as useNavigate, Vt as useObject, $n as useObjectActions, Nn as usePageState, wt as usePageStateTtl, Ee as useParam, Nr as useParams, Ln as usePlainScrollRestoration, De as usePublicParams, Tt as useRegisterRetainedQuery, Oe as useResolvedParam, ae as useResponsiveMode, Rn as useSavedScrollOffset, b as useSchema, Be as useScreen, Mn as useScreenBack, Fn as useScreenTab, Pr as useSearchParams, yn as useSetProperty, _n as useSetStatus, Fe as useTabNavigate, Pn as useTabSearchMirror, Ne as useTabStore, q as useText, gn as useUpdateObject, Ve as useViews, zn as useVirtualScrollRestoration, $t as validateClientSide, Zn as variantActionCodesForRecord, a as zoneMark };
@@ -0,0 +1,19 @@
1
+ //#region src/lib/read-display-state.ts
2
+ function e(e) {
3
+ let t = () => {
4
+ e.refetch();
5
+ };
6
+ if (e.data !== void 0) return {
7
+ loading: !1,
8
+ error: e.error ?? null,
9
+ retry: t
10
+ };
11
+ let n = e.fetchStatus !== "idle", r = (n ? e.failureReason : e.error) ?? null;
12
+ return {
13
+ loading: n && r === null,
14
+ error: r,
15
+ retry: t
16
+ };
17
+ }
18
+ //#endregion
19
+ export { e as readDisplayState };
@@ -38,6 +38,7 @@ var p = d((r, i) => ({
38
38
  t === "refresh-first" && (t = await n().then(() => "first-wave", () => "probe-first")), r({ sessionPresumed: t === "first-wave" }), t === "first-wave" && l(), await f(r, i, c), t === "probe-first" && i().isAuthenticated && l();
39
39
  },
40
40
  reloadSession: () => f(r, i, a),
41
+ recheckSession: () => f(r, i, c),
41
42
  refreshMe: async () => {
42
43
  try {
43
44
  let e = await a(), t = i(), n = t.user?.id !== e.id || t.activeTenant?.id !== e.tenant?.id;
@@ -1,4 +1,4 @@
1
- import { B as Refs, M as ListMeta, P as ListResponse, d as ActionExecuteResponse, jt as TextFn, k as DataResponse, o as ResponsiveViewport, pt as Schema, st as LocalizedString, u as ActionExecuteRequest } from "./useResponsiveMode-ECv1AEhv.js";
1
+ import { B as Refs, M as ListMeta, P as ListResponse, d as ActionExecuteResponse, jt as TextFn, k as DataResponse, o as ResponsiveViewport, pt as Schema, st as LocalizedString, u as ActionExecuteRequest } from "./useResponsiveMode-DODbtSrY.js";
2
2
  import { ReactElement, ReactNode } from "react";
3
3
  import { QueryClient } from "@tanstack/react-query";
4
4
  import { RenderResult } from "@testing-library/react";
@@ -1,4 +1,4 @@
1
1
  //#region src/types/fieldType.ts
2
- var e = /* @__PURE__ */ "bool.bytes.date.decimal.email.enum.file_ref.float.int.int_array.json.multilang.multilang_array.multilang_text.password.phone.ref.rich_text.secret.string.string_array.structure.tags.text.time.timestamp.url.uuid.uuid_array".split(".");
2
+ var e = /* @__PURE__ */ "bool.bytes.date.decimal.email.enum.file_ref.float.folder_ref.int.int_array.json.multilang.multilang_array.multilang_text.password.phone.ref.rich_text.secret.string.string_array.structure.tags.text.time.timestamp.url.uuid.uuid_array".split(".");
3
3
  //#endregion
4
4
  export { e as FIELD_TYPES };
@@ -268,6 +268,9 @@ interface EntityField {
268
268
  file_ref?: {
269
269
  storage_backend: string;
270
270
  };
271
+ folder_ref?: {
272
+ storage_backend: string;
273
+ };
271
274
  /**
272
275
  * Populated by the schema hydrator from the enclosing map key. Tests and
273
276
  * fixtures may omit it; production code always receives it set.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@declarion/react",
3
- "version": "0.104.0",
3
+ "version": "0.109.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "React SDK for Declarion, the schema-driven business apps platform.",