@burojs/ui-shadcn 0.8.0 → 0.10.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 (126) hide show
  1. package/dist/{bulk-summary-2HLgz7Il.cjs → bulk-summary-Chc61Pyw.cjs} +9 -7
  2. package/dist/bulk-summary-Chc61Pyw.cjs.map +1 -0
  3. package/dist/{bulk-summary-D6A0ua21.js → bulk-summary-DpSQD2Fq.js} +9 -7
  4. package/dist/bulk-summary-DpSQD2Fq.js.map +1 -0
  5. package/dist/{candidates-relation-picker-CGXItMN0.js → candidates-relation-picker-DRsHKe6N.js} +3 -3
  6. package/dist/{candidates-relation-picker-CGXItMN0.js.map → candidates-relation-picker-DRsHKe6N.js.map} +1 -1
  7. package/dist/{candidates-relation-picker-C47mF260.cjs → candidates-relation-picker-GIxsp7D_.cjs} +3 -3
  8. package/dist/{candidates-relation-picker-C47mF260.cjs.map → candidates-relation-picker-GIxsp7D_.cjs.map} +1 -1
  9. package/dist/{check-confirm-dialog-BT04Mieo.cjs → check-confirm-dialog-BMSb7wFv.cjs} +76 -9
  10. package/dist/check-confirm-dialog-BMSb7wFv.cjs.map +1 -0
  11. package/dist/{check-confirm-dialog-CtiRzOAt.js → check-confirm-dialog-B_u3YVHS.js} +72 -11
  12. package/dist/{check-confirm-dialog-CtiRzOAt.js.map → check-confirm-dialog-B_u3YVHS.js.map} +1 -1
  13. package/dist/{filter-builder-z3Axzf9Y.js → filter-builder-DX-xC3Yd.js} +14 -6
  14. package/dist/filter-builder-DX-xC3Yd.js.map +1 -0
  15. package/dist/{filter-builder-ByGhxLf_.cjs → filter-builder-Dt5E8PSX.cjs} +14 -6
  16. package/dist/filter-builder-Dt5E8PSX.cjs.map +1 -0
  17. package/dist/{flow-runtime-BVFjMU5-.cjs → flow-runtime-CQ4wf8co.cjs} +3 -3
  18. package/dist/{flow-runtime-BVFjMU5-.cjs.map → flow-runtime-CQ4wf8co.cjs.map} +1 -1
  19. package/dist/{flow-runtime-DrUWyTS0.js → flow-runtime-Q2vD7R3c.js} +3 -3
  20. package/dist/{flow-runtime-DrUWyTS0.js.map → flow-runtime-Q2vD7R3c.js.map} +1 -1
  21. package/dist/{flow-screen-3fk6J33y.js → flow-screen-B1y2yizP.js} +68 -29
  22. package/dist/flow-screen-B1y2yizP.js.map +1 -0
  23. package/dist/{flow-screen-6y5E_HT6.cjs → flow-screen-sw2cP70t.cjs} +67 -28
  24. package/dist/flow-screen-sw2cP70t.cjs.map +1 -0
  25. package/dist/index.cjs +2304 -247
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +119 -12
  28. package/dist/index.d.ts +119 -12
  29. package/dist/index.js +2225 -172
  30. package/dist/index.js.map +1 -1
  31. package/dist/{inline-flow-host-C4KmZIYE.cjs → inline-flow-host-CkhoA69R.cjs} +3 -3
  32. package/dist/{inline-flow-host-C4KmZIYE.cjs.map → inline-flow-host-CkhoA69R.cjs.map} +1 -1
  33. package/dist/{inline-flow-host-YnnvWjdU.js → inline-flow-host-DqbXqcPS.js} +3 -3
  34. package/dist/{inline-flow-host-YnnvWjdU.js.map → inline-flow-host-DqbXqcPS.js.map} +1 -1
  35. package/dist/{lazy-relation-picker-dialog-DN4bvQfg.js → lazy-relation-picker-dialog-BaIEWLbF.js} +3 -52
  36. package/dist/lazy-relation-picker-dialog-BaIEWLbF.js.map +1 -0
  37. package/dist/{lazy-relation-picker-dialog-BAKBRn3V.cjs → lazy-relation-picker-dialog-CeRzOAi0.cjs} +3 -52
  38. package/dist/lazy-relation-picker-dialog-CeRzOAi0.cjs.map +1 -0
  39. package/dist/{page-flow-route-CtEfqAvU.js → page-flow-route-CP7cS7FY.js} +7 -7
  40. package/dist/page-flow-route-CP7cS7FY.js.map +1 -0
  41. package/dist/{page-flow-route-DEjAxHe3.cjs → page-flow-route-UDx8qvdM.cjs} +10 -10
  42. package/dist/page-flow-route-UDx8qvdM.cjs.map +1 -0
  43. package/dist/{place-node-Bhl8B3fF.cjs → place-node-C5ZmuHaN.cjs} +208 -55
  44. package/dist/place-node-C5ZmuHaN.cjs.map +1 -0
  45. package/dist/{place-node-BdxT-30h.js → place-node-DwWAigv0.js} +205 -58
  46. package/dist/place-node-DwWAigv0.js.map +1 -0
  47. package/dist/record-trail-store-Cjo9vtod.cjs +126 -0
  48. package/dist/record-trail-store-Cjo9vtod.cjs.map +1 -0
  49. package/dist/record-trail-store-Dn6bVry4.js +91 -0
  50. package/dist/record-trail-store-Dn6bVry4.js.map +1 -0
  51. package/dist/{related-list-cards-Bc_vfCE_.cjs → related-list-cards-BypKfm9t.cjs} +3 -3
  52. package/dist/{related-list-cards-Bc_vfCE_.cjs.map → related-list-cards-BypKfm9t.cjs.map} +1 -1
  53. package/dist/{related-list-cards-BvkD5OcC.js → related-list-cards-Dcmruy09.js} +3 -3
  54. package/dist/{related-list-cards-BvkD5OcC.js.map → related-list-cards-Dcmruy09.js.map} +1 -1
  55. package/dist/{related-list-timeline-k0DtnxTs.cjs → related-list-timeline-D-KClgKb.cjs} +4 -4
  56. package/dist/related-list-timeline-D-KClgKb.cjs.map +1 -0
  57. package/dist/{related-list-timeline-DCrwN9oO.js → related-list-timeline-DZON_qSc.js} +4 -4
  58. package/dist/related-list-timeline-DZON_qSc.js.map +1 -0
  59. package/dist/{related-rows-BW9Jr07T.cjs → related-rows-DgF05ssi.cjs} +4 -4
  60. package/dist/{related-rows-BW9Jr07T.cjs.map → related-rows-DgF05ssi.cjs.map} +1 -1
  61. package/dist/{related-rows-CPE-9FFr.js → related-rows-ETZl5CB9.js} +4 -4
  62. package/dist/{related-rows-CPE-9FFr.js.map → related-rows-ETZl5CB9.js.map} +1 -1
  63. package/dist/{relation-create-DDEYcKfw.cjs → relation-create-B8zngAcA.cjs} +82 -13
  64. package/dist/relation-create-B8zngAcA.cjs.map +1 -0
  65. package/dist/{relation-create-C43cdPQt.js → relation-create-CeCWyxIb.js} +79 -16
  66. package/dist/relation-create-CeCWyxIb.js.map +1 -0
  67. package/dist/{relation-many-picker-BlrGRwMV.js → relation-many-picker-CT7nKfE2.js} +12 -10
  68. package/dist/relation-many-picker-CT7nKfE2.js.map +1 -0
  69. package/dist/{relation-many-picker-Br-zBHxT.cjs → relation-many-picker-Cq0EHY5I.cjs} +12 -10
  70. package/dist/relation-many-picker-Cq0EHY5I.cjs.map +1 -0
  71. package/dist/{relation-picker-x7P5HKie.js → relation-picker-CCyuMeGq.js} +13 -10
  72. package/dist/relation-picker-CCyuMeGq.js.map +1 -0
  73. package/dist/{relation-picker-ADjxI_TI.cjs → relation-picker-DmwTzgsd.cjs} +13 -10
  74. package/dist/relation-picker-DmwTzgsd.cjs.map +1 -0
  75. package/dist/{relation-picker-dialog-CyKliBkN.js → relation-picker-dialog-CoWKjNv8.js} +5 -5
  76. package/dist/relation-picker-dialog-CoWKjNv8.js.map +1 -0
  77. package/dist/{relation-picker-dialog-DimVQF9Y.cjs → relation-picker-dialog-mbwyNK43.cjs} +5 -5
  78. package/dist/relation-picker-dialog-mbwyNK43.cjs.map +1 -0
  79. package/dist/{relation-select-Cr3CfNLy.cjs → relation-select-CguIo2M5.cjs} +2 -2
  80. package/dist/{relation-select-Cr3CfNLy.cjs.map → relation-select-CguIo2M5.cjs.map} +1 -1
  81. package/dist/{relation-select-B8Fq4o-t.js → relation-select-nAYxhopN.js} +2 -2
  82. package/dist/{relation-select-B8Fq4o-t.js.map → relation-select-nAYxhopN.js.map} +1 -1
  83. package/dist/{success-notices-Dl3M1fZP.cjs → success-notices-Cl4b6MLQ.cjs} +3 -2
  84. package/dist/success-notices-Cl4b6MLQ.cjs.map +1 -0
  85. package/dist/{success-notices-LDEgEkc4.js → success-notices-CrcWOGSo.js} +3 -2
  86. package/dist/success-notices-CrcWOGSo.js.map +1 -0
  87. package/dist/{use-dialog-filter-state-tNvqAAjh.cjs → use-dialog-filter-state-CpWblz3C.cjs} +2 -2
  88. package/dist/{use-dialog-filter-state-tNvqAAjh.cjs.map → use-dialog-filter-state-CpWblz3C.cjs.map} +1 -1
  89. package/dist/{use-dialog-filter-state-B_MqzHaT.js → use-dialog-filter-state-ZYxOp5WO.js} +2 -2
  90. package/dist/{use-dialog-filter-state-B_MqzHaT.js.map → use-dialog-filter-state-ZYxOp5WO.js.map} +1 -1
  91. package/dist/{use-record-subtitle-bfwIoUme.cjs → use-record-subtitle-B4lTR7pf.cjs} +5 -8
  92. package/dist/use-record-subtitle-B4lTR7pf.cjs.map +1 -0
  93. package/dist/{use-record-subtitle-gIaCGgbI.js → use-record-subtitle-pWMBqQx9.js} +5 -8
  94. package/dist/use-record-subtitle-pWMBqQx9.js.map +1 -0
  95. package/package.json +9 -9
  96. package/dist/bulk-summary-2HLgz7Il.cjs.map +0 -1
  97. package/dist/bulk-summary-D6A0ua21.js.map +0 -1
  98. package/dist/check-confirm-dialog-BT04Mieo.cjs.map +0 -1
  99. package/dist/filter-builder-ByGhxLf_.cjs.map +0 -1
  100. package/dist/filter-builder-z3Axzf9Y.js.map +0 -1
  101. package/dist/flow-screen-3fk6J33y.js.map +0 -1
  102. package/dist/flow-screen-6y5E_HT6.cjs.map +0 -1
  103. package/dist/lazy-relation-picker-dialog-BAKBRn3V.cjs.map +0 -1
  104. package/dist/lazy-relation-picker-dialog-DN4bvQfg.js.map +0 -1
  105. package/dist/page-flow-route-CtEfqAvU.js.map +0 -1
  106. package/dist/page-flow-route-DEjAxHe3.cjs.map +0 -1
  107. package/dist/place-node-BdxT-30h.js.map +0 -1
  108. package/dist/place-node-Bhl8B3fF.cjs.map +0 -1
  109. package/dist/related-list-timeline-DCrwN9oO.js.map +0 -1
  110. package/dist/related-list-timeline-k0DtnxTs.cjs.map +0 -1
  111. package/dist/relation-create-C43cdPQt.js.map +0 -1
  112. package/dist/relation-create-DDEYcKfw.cjs.map +0 -1
  113. package/dist/relation-many-picker-BlrGRwMV.js.map +0 -1
  114. package/dist/relation-many-picker-Br-zBHxT.cjs.map +0 -1
  115. package/dist/relation-picker-ADjxI_TI.cjs.map +0 -1
  116. package/dist/relation-picker-dialog-CyKliBkN.js.map +0 -1
  117. package/dist/relation-picker-dialog-DimVQF9Y.cjs.map +0 -1
  118. package/dist/relation-picker-x7P5HKie.js.map +0 -1
  119. package/dist/resource-page-router-BRpUnhay.js +0 -1958
  120. package/dist/resource-page-router-BRpUnhay.js.map +0 -1
  121. package/dist/resource-page-router-qEd2xb55.cjs +0 -2167
  122. package/dist/resource-page-router-qEd2xb55.cjs.map +0 -1
  123. package/dist/success-notices-Dl3M1fZP.cjs.map +0 -1
  124. package/dist/success-notices-LDEgEkc4.js.map +0 -1
  125. package/dist/use-record-subtitle-bfwIoUme.cjs.map +0 -1
  126. package/dist/use-record-subtitle-gIaCGgbI.js.map +0 -1
@@ -1,17 +1,17 @@
1
1
  import { l as cn } from "./use-theme-dnE3Od3I.js";
2
2
  import { i as isNetworkFailure, l as useLinkComponent, m as PopoverTrigger, n as toast, o as technicalTexts, p as PopoverContent, r as friendlyStringsFrom, s as toFriendlyError, u as Popover } from "./toaster-Ct_YHGs6.js";
3
- import { B as DropdownMenuContent, C as loadBulkSummary, E as loadInlineFlowHost, F as Icon, H as DropdownMenuItem, O as preloadFlowRuntime, Q as DropdownMenuTrigger, R as DropdownMenu, S as RuntimeFlowRunner, U as DropdownMenuLabel, V as DropdownMenuGroup, _ as reasonText, b as RuntimeAppFlowRunner, c as useListSlot, d as useToBrowserHref, dt as DocInfo, f as FlowActionButton, g as ActionInner, k as useLoaded, m as useFlowChrome, n as ActionButton, o as canonicalResourceName, p as FlowMenuItem, q as DropdownMenuSeparator, r as DisabledAction, t as CheckConfirmDialog, v as FlowBoundary, w as loadFailedText, x as RuntimeBulkFlowRunner } from "./check-confirm-dialog-CtiRzOAt.js";
3
+ import { $ as DropdownMenuTrigger, A as useLoaded, C as RuntimeFlowRunner, D as loadInlineFlowHost, H as DropdownMenuGroup, I as Icon, J as DropdownMenuSeparator, S as RuntimeBulkFlowRunner, T as loadFailedText, U as DropdownMenuItem, V as DropdownMenuContent, W as DropdownMenuLabel, _ as ActionInner, f as useToBrowserHref, ft as DocInfo, h as useFlowChrome, i as UndecidedAction, k as preloadFlowRuntime, l as useListSlot, m as FlowMenuItem, n as ActionButton, p as FlowActionButton, r as DisabledAction, s as canonicalResourceName, t as CheckConfirmDialog, v as reasonText, w as loadBulkSummary, x as RuntimeAppFlowRunner, y as FlowBoundary, z as DropdownMenu } from "./check-confirm-dialog-B_u3YVHS.js";
4
4
  import { t as Button } from "./button-MWVeZaqj.js";
5
5
  import { t as Input } from "./input-CUPStzZO.js";
6
6
  import { a as DialogFooter, i as DialogDescription, o as DialogHeader, r as DialogContent, s as DialogTitle, t as Dialog } from "./dialog-C123sVQ8.js";
7
- import { g as ClaimedQuickLink, l as relationLinkClassName, y as LoadError } from "./relation-create-C43cdPQt.js";
7
+ import { _ as ClaimedQuickLink, b as LoadError, l as relationLinkClassName } from "./relation-create-CeCWyxIb.js";
8
8
  import { t as Skeleton } from "./skeleton-U2noefj5.js";
9
- import { A as TableHeader, C as SelectTrigger, E as TableBody, F as ResolvedFieldDisplay, I as ResolvedFieldInput, L as useFieldMetaDiagnostic, M as Badge, O as TableCell, P as MetaPlaceholder, R as fieldDescription, T as Table$1, g as SelectContent, h as Select, j as TableRow, k as TableHead, t as FilterBuilder, v as SelectItem, w as SelectValue, z as lowerLegacyField } from "./filter-builder-z3Axzf9Y.js";
9
+ import { A as TableHeader, C as SelectTrigger, E as TableBody, F as ResolvedFieldDisplay, I as ResolvedFieldInput, L as useFieldMetaDiagnostic, M as Badge, O as TableCell, P as MetaPlaceholder, R as fieldDescription, T as Table$1, g as SelectContent, h as Select, j as TableRow, k as TableHead, t as FilterBuilder, v as SelectItem, w as SelectValue, z as lowerLegacyField } from "./filter-builder-DX-xC3Yd.js";
10
10
  import { t as Label } from "./label-66W1qbke.js";
11
- import { n as useCandidateSelection, t as LazyRelationPickerDialog } from "./lazy-relation-picker-dialog-DN4bvQfg.js";
12
- import { t as useRelationSelect } from "./relation-select-B8Fq4o-t.js";
13
- import { BULK_EACH_LIMIT, FORM_SLOT, LAYOUT_SIZES, builtinFrames, canonicalEntityNodeKey, columnName, compileFlow, compiledScreenFor, declaredField, declaredText, displayClassOf, dtoFields, enumFallbackKey, enumFallbackText, enumNamespaceOf, enumValueText, exportFormatFieldKey, exportFormatLabelKey, exportFormatOptionKey, facts, fieldOptionText, fieldSensitivity, flowRecordOf, formatEntityRef, grantedPlacementKeys, hasRecordPage, humanizeKey, i18nPrefixToRef, i18nPrefixToRef as i18nPrefixToRef$1, inlineFlow, isBuiltinItemAction, isColumnSortable, isRelationField, isScreenFailure, linkOf, normalizeDataError, normalizeEntityRef, planItemActions, projectDto, recordEntries, relatedList, relatedRecord, resolveActionDensity, resolveActionSurfaceMode, resolveColumnUi, resolveContentSlot, resolveEnumLabel, resolveFieldLabel, resolveFieldOptionLabel, resolveFieldSlot, resolveNavLabel, resolveResourceLabel, resolveSurfaceUi, resolveTextSlot, resourceKey, resourceShowHref, reverseLinkOf, routeResourceKey, routeServerIssues, savedViewKey, validatePlacementProps, whereEntryToFilter } from "@burojs/core";
14
- import { ActionRouteContext, DismissGuardScope, FlowRowBatchContext, LOCAL_USER_SCOPE_ID, QUICK_ANCHOR_ATTRIBUTE, RECORD_KIND_KEYS, RecordScopeChain, ResourceListProvider, RouteSourceContext, ScreenStateProvider, columnTypeWidth, deriveRecord, implementFrame, isObjectColumn, kindErrorText, linkCapabilitiesOf, policyRecordOf, policyRowsOf, readColumnValue, recordKeyOf, resolveColumnField, resolveErrorText, resolveObjectColumn, resolveValidationMessage, resourceFlowsOn, specificErrorText, tableLayoutSetting, useApp, useApplicationSnapshot, useAvailability, useAvailabilityResolver, useCapability, useCapabilityResolver, useChromeT, useClipboard, useComponent, useCtx, useCurrentUserId, useCustomQuery, useDataRuntime, useDismissGuard, useEntryGate, useEnumValues, useExportRuns, useFieldAccess, useFieldImplementation, useFieldMeta, useFieldMetaSources, useFlowRowBatch, useFlowRowResolver, useFormController, useFrameImplementations, useFramePiece, useFrameT, useI18nCaps, useItemActions, useLinkRights, useLinkWriter, useLinkedKeys, useListAccess, useLocale, useNavigationBlocker, useOne, useOptionalDataRuntime, useOptionalRecordFrame, useOptionalRouterAdapter, useOptionalT, useOptionalUiSettings, usePageFlowGate, usePageScreen, usePathAccess, usePlacement, useProjectedRecord, useProjectedTitle, usePublishDocVariant, useQuick, useQuickEntry, useQuickOpener, useRecordFrame, useRecordScopeFrames, useRecordTitle, useResource, useResourceExport, useResourceList, useResourceListContext, useReturnTarget, useRouteNavigate, useScreenState, useSearchParamsWriter, useT, useTestIds, useViewRow, withRecordKeys } from "@burojs/react";
11
+ import { n as useCandidateSelection, t as LazyRelationPickerDialog } from "./lazy-relation-picker-dialog-BaIEWLbF.js";
12
+ import { t as useRelationSelect } from "./relation-select-nAYxhopN.js";
13
+ import { BULK_EACH_LIMIT, FORM_SLOT, LAYOUT_SIZES, addressesCapability, builtinFrames, canonicalEntityNodeKey, columnName, compileFlow, compiledScreenFor, declaredField, declaredText, displayClassOf, dtoFields, enumFallbackKey, enumFallbackText, enumNamespaceOf, enumValueText, exportFormatFieldKey, exportFormatLabelKey, exportFormatOptionKey, facts, fieldOptionText, fieldSensitivity, flowRecordOf, formatEntityRef, grantedPlacementKeys, hasRecordPage, humanizeKey, i18nPrefixToRef, i18nPrefixToRef as i18nPrefixToRef$1, inlineFlow, isBuiltinItemAction, isColumnSortable, isRelationField, isScreenFailure, linkOf, memberFactOf, normalizeDataError, normalizeEntityRef, permissionsUndecided, planItemActions, projectDto, propertyTextKey, recordEntries, relatedList, relatedRecord, resolveActionDensity, resolveActionSurfaceMode, resolveColumnUi, resolveContentSlot, resolveEnumLabel, resolveFieldLabel, resolveFieldOptionLabel, resolveFieldSlot, resolveNavLabel, resolveResourceLabel, resolveSurfaceUi, resolveTextSlot, resourceKey, resourceShowHref, reverseLinkOf, routeResourceKey, routeServerIssues, savedViewKey, validatePlacementProps, whereEntryToFilter } from "@burojs/core";
14
+ import { ActionRouteContext, DismissGuardScope, FlowRowBatchContext, LOCAL_USER_SCOPE_ID, QUICK_ANCHOR_ATTRIBUTE, RECORD_KIND_KEYS, RecordScopeChain, ResourceListProvider, RouteSourceContext, ScreenStateProvider, collectionBulkState, columnTypeWidth, deriveRecord, implementFrame, isObjectColumn, kindErrorText, linkCapabilitiesOf, policyRecordOf, policyRowsOf, readColumnValue, recordKeyOf, resolveColumnField, resolveErrorText, resolveObjectColumn, resolveValidationMessage, resourceFlowsOn, specificErrorText, tableLayoutSetting, useApp, useApplicationSnapshot, useAvailability, useAvailabilityGate, useAvailabilityResolver, useCapability, useCapabilityResolver, useChromeT, useClipboard, useCollectionRows, useComponent, useCtx, useCurrentUserId, useCustomQuery, useDataRuntime, useDismissGuard, useEntryGate, useEnumValues, useExportRuns, useFieldAccess, useFieldImplementation, useFieldMeta, useFieldMetaSources, useFlowRowBatches, useFlowRowResolver, useFormController, useFrameImplementations, useFramePiece, useFrameT, useI18nCaps, useItemActions, useLinkRights, useLinkWriter, useLinkedKeys, useListAccess, useLocale, useNavigationBlocker, useOne, useOptionalDataRuntime, useOptionalRecordFrame, useOptionalRouterAdapter, useOptionalT, useOptionalUiSettings, usePageFlowGate, usePageScreen, usePathAccess, usePermissionsUndecided, usePlacement, useProjectedRecord, useProjectedTitle, usePublishDocVariant, useQuick, useQuickEntry, useQuickOpener, useRecordFrame, useRecordScopeFrames, useRecordTitle, useResource, useResourceExport, useResourceList, useResourceListContext, useReturnTarget, useRouteNavigate, useScreenState, useSearchParamsWriter, useT, useTestIds, useViewRow, withRecordKeys } from "@burojs/react";
15
15
  import { IconAlertCircle, IconAlertTriangle, IconArrowDown, IconArrowLeft, IconArrowRight, IconArrowUp, IconBookmark, IconCheck, IconChevronLeft, IconChevronRight, IconChevronsLeft, IconChevronsRight, IconColumns3, IconCopy, IconDots, IconDownload, IconEyeOff, IconFilterX, IconInbox, IconLink, IconLoader2, IconLock, IconMinus, IconPencil, IconPinned, IconPinnedOff, IconPlus, IconRefresh, IconSelector, IconSettings2, IconTrash, IconUnlink, IconX } from "@tabler/icons-react";
16
16
  import * as React from "react";
17
17
  import { Component, Fragment, Suspense, createContext, createElement, lazy, memo, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -879,6 +879,20 @@ function AppFlowButton({ action, variant = "ghost", size = "sm", className }) {
879
879
  actionName: action.name,
880
880
  surface: "app"
881
881
  });
882
+ if (action.undecided === true) return jsx(Button, {
883
+ type: "button",
884
+ variant,
885
+ size,
886
+ className,
887
+ "data-testid": testid,
888
+ "data-buro-flow-state": "undecided",
889
+ disabled: true,
890
+ "aria-busy": "true",
891
+ children: jsx(ActionInner, {
892
+ icon: action.icon,
893
+ label
894
+ })
895
+ });
882
896
  if (action.hostHref !== void 0) return jsx(Button, {
883
897
  asChild: true,
884
898
  variant,
@@ -1446,14 +1460,15 @@ function useExportRunWatcher() {
1446
1460
  //#endregion
1447
1461
  //#region src/actions/action-overflow.tsx
1448
1462
  const RowActionsCollapseContext = createContext(false);
1449
- function ActionOverflow({ resource: resourceInput, record, surface, className, hideFlows, collapse, sources }) {
1463
+ function ActionOverflow({ resource: resourceInput, record, surface, className, hideFlows, hideActions, collapse, sources }) {
1450
1464
  const resource = routeResourceKey(resourceInput);
1451
1465
  const chromeT = useChromeT();
1452
1466
  const tid = useTestIds();
1453
1467
  const recordKey = String(recordKeyOf(useApp().registry.get(resource), record) ?? "");
1454
1468
  const collapsedRows = useContext(RowActionsCollapseContext);
1455
1469
  const [flowFor, setFlowFor] = useState(null);
1456
- const actions = useShownItemActions(resource, record, surface, hideFlows, sources);
1470
+ const shown = useShownItemActions(resource, record, surface, hideFlows, sources);
1471
+ const actions = hideActions === void 0 ? shown : shown.filter((a) => !hideActions(a.name));
1457
1472
  if (actions.length === 0) return null;
1458
1473
  const isRow = surface === "row";
1459
1474
  const folded = isRow && (collapse ?? collapsedRows);
@@ -3042,6 +3057,22 @@ function actionsColumnSize(items) {
3042
3057
  const strip = controls * ROW_ACTION_CONTROL_PX + (controls - 1) * ROW_ACTION_GAP_PX + ACTIONS_CELL_PADDING_PX;
3043
3058
  return Math.max(ACTIONS_COL_MIN_PX, strip);
3044
3059
  }
3060
+ const isNamedEntry = (value) => typeof value === "object" && value !== null;
3061
+ function offered(items, offers) {
3062
+ return offers === void 0 || items === void 0 ? items : items.filter((action) => offers(action.name));
3063
+ }
3064
+ function rowFlowsOf(def, offers) {
3065
+ if (!def) return [];
3066
+ const items = offered(def.actions?.item, offers) ?? [];
3067
+ const out = [];
3068
+ for (const placement of planItemActions(items, "row")) {
3069
+ if (items.find((entry) => entry.name === placement.name)?.kind !== "flow") continue;
3070
+ try {
3071
+ out.push(compileFlow(def, placement.name));
3072
+ } catch {}
3073
+ }
3074
+ return out;
3075
+ }
3045
3076
  const ALIGN_CLASS = {
3046
3077
  start: "text-start",
3047
3078
  center: "text-center",
@@ -3108,25 +3139,72 @@ function ResourceList({ resource: resourceInput, data, total, page = 1, pageSize
3108
3139
  ]);
3109
3140
  const skeletonColumnKeys = accessPending ? declaredColumnKeys : visibleColumnKeys;
3110
3141
  const rows = useMemo(() => data ?? [], [data]);
3111
- const rowFlows = useMemo(() => {
3112
- if (!def) return [];
3113
- const items = def.actions?.item ?? [];
3114
- const out = [];
3115
- for (const placement of planItemActions(items, "row")) {
3116
- if (items.find((entry) => entry.name === placement.name)?.kind !== "flow") continue;
3117
- try {
3118
- out.push(compileFlow(def, placement.name));
3119
- } catch {}
3142
+ const collectionRows = useCollectionRows(resource);
3143
+ const rowKinds = useMemo(() => collectionRows === void 0 ? void 0 : rows.map((row) => collectionRows(row)), [collectionRows, rows]);
3144
+ const rowOffers = useMemo(() => {
3145
+ const fact = memberFactOf(def);
3146
+ if (fact?.collection === void 0 || def?.rowActions !== "base") return void 0;
3147
+ const declared = app.registry.bases.get(fact.ref)?.actions?.item;
3148
+ const names = new Set(["edit", "delete"]);
3149
+ if (Array.isArray(declared)) {
3150
+ for (const entry of declared) if (isNamedEntry(entry) && typeof entry.name === "string") names.add(entry.name);
3120
3151
  }
3121
- return out;
3122
- }, [def]);
3123
- const pageIds = useMemo(() => rows.map((row) => String(row.id)), [rows]);
3124
- const rowBatch = useFlowRowBatch(resource, pageIds, rowFlows);
3125
- const rowBatchState = rowBatch.state;
3126
- const flowRowBatch = useMemo(() => ({
3152
+ return (name) => names.has(name);
3153
+ }, [def, app]);
3154
+ const hideRowAction = useMemo(() => rowOffers === void 0 ? void 0 : (name) => !rowOffers(name), [rowOffers]);
3155
+ const flowsByDef = useMemo(() => {
3156
+ const cache = new WeakMap();
3157
+ return (target) => {
3158
+ if (target === void 0) return [];
3159
+ let flows = cache.get(target);
3160
+ if (flows === void 0) {
3161
+ flows = rowFlowsOf(target, rowOffers);
3162
+ cache.set(target, flows);
3163
+ }
3164
+ return flows;
3165
+ };
3166
+ }, [rowOffers]);
3167
+ const batchGroups = useMemo(() => {
3168
+ if (rowKinds === void 0) return [{
3169
+ resource,
3170
+ ids: rows.map((row) => String(row.id)),
3171
+ flows: flowsByDef(def)
3172
+ }];
3173
+ const idsByMember = new Map();
3174
+ rowKinds.forEach((kind, index) => {
3175
+ if (!("member" in kind)) return;
3176
+ const ids = idsByMember.get(kind.member) ?? [];
3177
+ ids.push(String(rows[index]?.id));
3178
+ idsByMember.set(kind.member, ids);
3179
+ });
3180
+ return [...idsByMember].map(([member, ids]) => ({
3181
+ resource: member,
3182
+ ids,
3183
+ flows: flowsByDef(app.registry.get(member)),
3184
+ list: resource
3185
+ }));
3186
+ }, [
3187
+ rowKinds,
3188
+ rows,
3127
3189
  resource,
3128
- state: rowBatchState
3129
- }), [resource, rowBatchState]);
3190
+ def,
3191
+ flowsByDef,
3192
+ app
3193
+ ]);
3194
+ const rowBatch = useFlowRowBatches(batchGroups);
3195
+ const rowBatchState = rowBatch.state;
3196
+ const flowRowBatch = useMemo(() => ({ state: rowBatchState }), [rowBatchState]);
3197
+ const actionsWidth = useMemo(() => {
3198
+ if (rowKinds === void 0) return actionsColumnSize(def?.actions?.item);
3199
+ let widest = ACTIONS_COL_MIN_PX;
3200
+ for (const member of new Set(rowKinds.flatMap((kind) => "member" in kind ? [kind.member] : []))) widest = Math.max(widest, actionsColumnSize(offered(app.registry.get(member)?.actions?.item, rowOffers)));
3201
+ return widest;
3202
+ }, [
3203
+ rowKinds,
3204
+ def,
3205
+ app,
3206
+ rowOffers
3207
+ ]);
3130
3208
  const knownTotal = typeof total === "number";
3131
3209
  const totalPages = knownTotal ? Math.max(1, Math.ceil(total / pageSize)) : void 0;
3132
3210
  const pageIsFull = rows.length >= pageSize;
@@ -3374,7 +3452,7 @@ function ResourceList({ resource: resourceInput, data, total, page = 1, pageSize
3374
3452
  id: ACTIONS_COL_ID,
3375
3453
  enableSorting: false,
3376
3454
  enableResizing: false,
3377
- size: narrow || typeof rowActions === "function" ? 44 : actionsColumnSize(def?.actions?.item),
3455
+ size: narrow || typeof rowActions === "function" ? 44 : actionsWidth,
3378
3456
  enableHiding: false,
3379
3457
  header: () => jsx("span", {
3380
3458
  className: "sr-only",
@@ -3385,11 +3463,22 @@ function ResourceList({ resource: resourceInput, data, total, page = 1, pageSize
3385
3463
  noRowNav: true,
3386
3464
  noClip: true
3387
3465
  },
3388
- cell: ({ row }) => typeof rowActions === "function" ? rowActions(row.original) : jsx(ActionOverflow, {
3389
- resource,
3390
- record: row.original,
3391
- surface: "row"
3392
- })
3466
+ cell: ({ row }) => {
3467
+ if (typeof rowActions === "function") return rowActions(row.original);
3468
+ if (collectionRows === void 0) return jsx(ActionOverflow, {
3469
+ resource,
3470
+ record: row.original,
3471
+ surface: "row"
3472
+ });
3473
+ const kind = collectionRows(row.original);
3474
+ if (!("member" in kind)) return null;
3475
+ return jsx(ActionOverflow, {
3476
+ resource: kind.member,
3477
+ record: row.original,
3478
+ surface: "row",
3479
+ ...hideRowAction === void 0 ? {} : { hideActions: hideRowAction }
3480
+ });
3481
+ }
3393
3482
  });
3394
3483
  return cols;
3395
3484
  }, [
@@ -3406,6 +3495,9 @@ function ResourceList({ resource: resourceInput, data, total, page = 1, pageSize
3406
3495
  i18nCaps,
3407
3496
  rowLinkKey,
3408
3497
  narrow,
3498
+ actionsWidth,
3499
+ collectionRows,
3500
+ hideRowAction,
3409
3501
  columnUiOf
3410
3502
  ]);
3411
3503
  const handleSelectionChange = (updater) => {
@@ -3594,7 +3686,7 @@ function ResourceList({ resource: resourceInput, data, total, page = 1, pageSize
3594
3686
  value: flowRowBatch,
3595
3687
  children: jsxs(RowActionsCollapseContext.Provider, {
3596
3688
  value: narrow,
3597
- children: [rowBatch.reader, jsxs("div", {
3689
+ children: [rowBatch.readers, jsxs("div", {
3598
3690
  ref: listRoot,
3599
3691
  className: cn("space-y-4", className),
3600
3692
  children: [
@@ -4473,7 +4565,7 @@ function issueText(issue, caps, i18nPrefix) {
4473
4565
  }, {
4474
4566
  has: caps.has,
4475
4567
  t: caps.t,
4476
- ...issue.field === "_form" ? {} : { fieldKey: `resources.${i18nPrefix}.fields.${issue.field}` }
4568
+ ...issue.field === "_form" ? {} : { fieldKey: `resources.${i18nPrefix}.${propertyTextKey([...issue.field.split("."), ...issue.path])}` }
4477
4569
  });
4478
4570
  }
4479
4571
  const EMPTY_ISSUES = Object.freeze([]);
@@ -4522,9 +4614,10 @@ function DeclarativeForm(props) {
4522
4614
  function DeclarativeFormBody(props) {
4523
4615
  const gate = useDeclarativeCheckGate();
4524
4616
  const prefix = props.i18nPrefix ?? "form";
4617
+ const mode = props.mode ?? "create";
4525
4618
  const form = useFormController({
4526
4619
  fields: props.fields,
4527
- mode: "create",
4620
+ mode,
4528
4621
  onConfirmChecks: gate.confirmChecks,
4529
4622
  ...props.body === void 0 ? {} : { body: props.body },
4530
4623
  ...props.formId === void 0 ? {} : { formId: props.formId },
@@ -4589,7 +4682,7 @@ function DeclarativeFormBody(props) {
4589
4682
  children: jsx(ScreenTree, {
4590
4683
  region: "form-body",
4591
4684
  resource: prefix,
4592
- mode: "create",
4685
+ mode,
4593
4686
  compiled: form.screen,
4594
4687
  controller: form,
4595
4688
  leafIds,
@@ -4953,10 +5046,12 @@ function BulkSummary(props) {
4953
5046
  children: jsx(Summary, { ...props })
4954
5047
  });
4955
5048
  }
4956
- function BulkFlowButton({ resource, actionName, ids, onSelectionChange }) {
5049
+ function BulkFlowButton({ resource, actionName, ids, records, onSelectionChange }) {
4957
5050
  const app = useApp();
4958
5051
  const tid = useTestIds();
4959
5052
  const t = useOptionalT();
5053
+ const caps = useI18nCaps();
5054
+ const gate = useAvailabilityGate();
4960
5055
  const control = useFlowRowResolver(resource)(actionName, void 0);
4961
5056
  const chrome = useFlowChrome(resource, actionName);
4962
5057
  const def = app.registry.get(resource);
@@ -4975,11 +5070,31 @@ function BulkFlowButton({ resource, actionName, ids, onSelectionChange }) {
4975
5070
  if (control.state === "absent") return null;
4976
5071
  const variant = chrome.destructive ? "destructive" : "outline";
4977
5072
  const overLimit = each && ids.length > BULK_EACH_LIMIT;
4978
- if (overLimit || control.state === "disabled") return jsx(DisabledAction, {
5073
+ let membersUndecided = false;
5074
+ const selection = def === void 0 ? void 0 : collectionBulkState({
5075
+ registry: app.registry,
5076
+ collection: def,
5077
+ action: actionName,
5078
+ ids,
5079
+ records: records ?? [],
5080
+ available: (member, action) => {
5081
+ const state = gate(member, action).state;
5082
+ if (state === "undecided") membersUndecided = true;
5083
+ return state === "available";
5084
+ }
5085
+ });
5086
+ const refused = membersUndecided || selection?.state !== "disabled" ? void 0 : selection.members.length > 0 ? t("collection.bulkUnavailable", {
5087
+ defaultValue: "Not available for {{types}}.",
5088
+ params: { types: selection.members.map((member) => resolveResourceLabel(caps, member, "single", app.registry.get(member))).join(", ") }
5089
+ }) : t("collection.bulkUnknownRows", {
5090
+ defaultValue: "{{count}} selected records are not loaded.",
5091
+ count: selection.missing
5092
+ });
5093
+ if (overLimit || control.state === "disabled" || refused !== void 0) return jsx(DisabledAction, {
4979
5094
  reason: overLimit ? t("flow.bulkLimit", {
4980
5095
  defaultValue: `Select at most ${BULK_EACH_LIMIT}.`,
4981
5096
  count: BULK_EACH_LIMIT
4982
- }) : control.reason,
5097
+ }) : control.state === "disabled" ? control.reason : refused,
4983
5098
  label: chrome.label,
4984
5099
  icon: chrome.icon,
4985
5100
  testid,
@@ -4989,7 +5104,7 @@ function BulkFlowButton({ resource, actionName, ids, onSelectionChange }) {
4989
5104
  actionName,
4990
5105
  surface: "bulk"
4991
5106
  });
4992
- const busy = control.state === "undecided" || control.state === "pending" || running;
5107
+ const busy = control.state === "undecided" || control.state === "pending" || membersUndecided || running;
4993
5108
  const finish = (result, progress) => {
4994
5109
  setRunning(false);
4995
5110
  if (progress === void 0) return;
@@ -5051,7 +5166,8 @@ function BulkFlowButton({ resource, actionName, ids, onSelectionChange }) {
5051
5166
  label: chrome.labelText,
5052
5167
  total: summary.total,
5053
5168
  progress: summary.progress,
5054
- texts: compiled?.flow.texts
5169
+ texts: compiled?.flow.texts,
5170
+ ...compiled === void 0 ? {} : { prefixes: compiled.textKeys.prefixes }
5055
5171
  }),
5056
5172
  jsx(DialogFooter, { children: jsx(Button, {
5057
5173
  type: "button",
@@ -5117,6 +5233,7 @@ function BulkActionToolbar({ resource: resourceInput, table, selectedRecords, se
5117
5233
  resource,
5118
5234
  actionName: action.name,
5119
5235
  ids,
5236
+ records,
5120
5237
  onSelectionChange: (next) => {
5121
5238
  if (onSelectionChange !== void 0) onSelectionChange(next);
5122
5239
  else if (next.length === 0) handleClear();
@@ -5435,6 +5552,14 @@ function CreateButton({ resource: resourceInput, href, testid, size = "sm", vari
5435
5552
  resource,
5436
5553
  defaultValue: "Create"
5437
5554
  });
5555
+ const undecided = jsx(UndecidedAction, {
5556
+ label: text,
5557
+ icon: "Plus",
5558
+ testid,
5559
+ size,
5560
+ variant,
5561
+ className
5562
+ });
5438
5563
  if (onOpen !== void 0) {
5439
5564
  const answer = gate(resource, "create");
5440
5565
  if (answer.state === "disabled") return jsx(DisabledAction, {
@@ -5447,6 +5572,7 @@ function CreateButton({ resource: resourceInput, href, testid, size = "sm", vari
5447
5572
  className,
5448
5573
  resource
5449
5574
  });
5575
+ if (answer.state === "undecided") return undecided;
5450
5576
  if (answer.state !== "open") return null;
5451
5577
  return jsxs(Button, {
5452
5578
  type: "button",
@@ -5462,6 +5588,7 @@ function CreateButton({ resource: resourceInput, href, testid, size = "sm", vari
5462
5588
  });
5463
5589
  }
5464
5590
  if (availability.state === "absent" || availability.state === "hidden") return null;
5591
+ if (availability.state === "undecided") return undecided;
5465
5592
  if (availability.state === "disabled") return jsx(DisabledAction, {
5466
5593
  reason: availability.reason,
5467
5594
  label: text,
@@ -5505,6 +5632,10 @@ const ListCreate = listPiece("ListCreate", ListCreateView);
5505
5632
  //#endregion
5506
5633
  //#region src/export/export-button.tsx
5507
5634
  const warnedProviderQueryResources = new Set();
5635
+ const EXPORT_TARGET = {
5636
+ kind: "action",
5637
+ name: "export"
5638
+ };
5508
5639
  function ExportButton({ resource: resourceInput, className }) {
5509
5640
  const resource = routeResourceKey(resourceInput);
5510
5641
  if (!(useOptionalDataRuntime() !== null)) return null;
@@ -5518,12 +5649,11 @@ function ExportButtonActive({ resource, className }) {
5518
5649
  const { available, prefetch } = useResourceExport(resource);
5519
5650
  const capability = useCapability("run", {
5520
5651
  resource,
5521
- target: {
5522
- kind: "action",
5523
- name: "export"
5524
- },
5652
+ target: EXPORT_TARGET,
5525
5653
  mode: "list"
5526
5654
  });
5655
+ const app = useApp();
5656
+ const undecided = usePermissionsUndecided() && addressesCapability(app.ruleSource.rules(resource), "run", EXPORT_TARGET);
5527
5657
  const tid = useTestIds();
5528
5658
  const t = useOptionalT();
5529
5659
  const [open, setOpen] = React.useState(false);
@@ -5541,18 +5671,35 @@ function ExportButtonActive({ resource, className }) {
5541
5671
  if (target !== null) lastTarget.current = target;
5542
5672
  const dialogTarget = target ?? lastTarget.current;
5543
5673
  React.useEffect(() => {
5544
- if (!available || !capability.allowed) return;
5674
+ if (!available || undecided || !capability.allowed) return;
5545
5675
  if (list.providerQuery.value === void 0) return;
5546
5676
  if (warnedProviderQueryResources.has(resource)) return;
5547
5677
  warnedProviderQueryResources.add(resource);
5548
5678
  console.warn(`[buro] ExportButton('${resource}'): this list is narrowed by \`providerQuery\` (a raw provider blob), which an export target cannot carry — the exported file will NOT be narrowed by it. See docs/adopters/data-export.md.`);
5549
5679
  }, [
5550
5680
  available,
5681
+ undecided,
5551
5682
  capability.allowed,
5552
5683
  list.providerQuery.value,
5553
5684
  resource
5554
5685
  ]);
5555
- if (!available || !capability.allowed || list.isForbidden) return null;
5686
+ if (!available || list.isForbidden) return null;
5687
+ if (undecided) return jsx(Button, {
5688
+ type: "button",
5689
+ variant: "outline",
5690
+ size: "icon",
5691
+ "aria-label": t("export.button.label"),
5692
+ title: t("export.button.label"),
5693
+ className: cn("h-8 w-8", className),
5694
+ "data-testid": tid.exportButton(resource),
5695
+ disabled: true,
5696
+ "aria-busy": "true",
5697
+ children: jsx(IconDownload, {
5698
+ className: "size-4",
5699
+ "aria-hidden": "true"
5700
+ })
5701
+ });
5702
+ if (!capability.allowed) return null;
5556
5703
  if (target === null && !open) return null;
5557
5704
  if (dialogTarget === null) return null;
5558
5705
  return jsxs(Fragment$1, { children: [target === null ? null : jsx(Button, {
@@ -6085,6 +6232,7 @@ function BuroPeekFrame({ slots }) {
6085
6232
  //#endregion
6086
6233
  //#region src/record/frame-context.ts
6087
6234
  const FrameChromeContext = createContext(null);
6235
+ const ItemActionsOffContext = createContext(false);
6088
6236
  function useFrameChrome() {
6089
6237
  const chrome = useContext(FrameChromeContext);
6090
6238
  if (chrome === null) throw new Error("[burojs] useRecordFrame() must be called inside <RecordScreen>");
@@ -6122,7 +6270,7 @@ function RecordActionsView() {
6122
6270
  const { extraActions } = useFrameChrome();
6123
6271
  const id = useFrameId();
6124
6272
  const holder = useScreenState()?.inline;
6125
- if (mode === "create" || record === void 0 || id === void 0) return null;
6273
+ if (useContext(ItemActionsOffContext) || mode === "create" || record === void 0 || id === void 0) return null;
6126
6274
  const row = withRecordKeys(policyRecordOf(controller) ?? record, { id });
6127
6275
  holder?.declare(inlineFlowNames(controller.screen, controller.plan));
6128
6276
  return jsxs("div", {
@@ -6223,7 +6371,7 @@ function FormActionsView() {
6223
6371
  }, {
6224
6372
  has: caps.has,
6225
6373
  t: caps.t,
6226
- ...declared === void 0 ? {} : { fieldKey: `resources.${resource}.fields.${name}` }
6374
+ ...declared === void 0 ? {} : { fieldKey: `resources.${resource}.${propertyTextKey(issue.path)}` }
6227
6375
  });
6228
6376
  if (issue.path.length === 0 && message === failure) return [];
6229
6377
  return [{
@@ -6722,8 +6870,8 @@ function declaresDisplay(field) {
6722
6870
  return field !== void 0 && resolveSurfaceUi(field, "column").use !== void 0;
6723
6871
  }
6724
6872
  const NO_INITIAL_FILTERS = Object.freeze({});
6725
- const RelatedCards = lazy(async () => ({ default: (await import("./related-list-cards-BvkD5OcC.js")).RelatedCards }));
6726
- const RelatedTimeline = lazy(async () => ({ default: (await import("./related-list-timeline-DCrwN9oO.js")).RelatedTimeline }));
6873
+ const RelatedCards = lazy(async () => ({ default: (await import("./related-list-cards-Dcmruy09.js")).RelatedCards }));
6874
+ const RelatedTimeline = lazy(async () => ({ default: (await import("./related-list-timeline-DZON_qSc.js")).RelatedTimeline }));
6727
6875
  function discriminatorOptionLabel(field, value) {
6728
6876
  const text = fieldOptionText(field, value);
6729
6877
  if (text !== void 0) return text;
@@ -7910,16 +8058,15 @@ function byOf(field) {
7910
8058
  }
7911
8059
  const MAX_TARGET_HOPS = 2;
7912
8060
  function targetColumns(registry, target, def) {
7913
- if (!isRecord(def) || !isRecord(def.fields)) return [];
7914
- const source = def;
8061
+ if (def === void 0) return [];
7915
8062
  const views = isRecord(def.views) ? def.views : void 0;
7916
8063
  const list = views !== void 0 && isRecord(views.list) ? views.list : void 0;
7917
8064
  return (list !== void 0 && Array.isArray(list.columns) ? list.columns.flatMap((entry) => {
7918
8065
  const name = isRecord(entry) ? entry.field : entry;
7919
8066
  return typeof name === "string" ? [name] : [];
7920
- }) : dtoFields(source, "list")).filter((name) => {
8067
+ }) : dtoFields(def, "list")).filter((name) => {
7921
8068
  if (name.includes(".")) return name.split(".").length - 1 <= MAX_TARGET_HOPS && resolveColumnField(registry, target, name) !== void 0;
7922
- const field = peekFieldDefinition(source, name);
8069
+ const field = peekFieldDefinition(def, name);
7923
8070
  return isRecord(field) && !isRelationField(field) && fieldSensitivity(field) === void 0;
7924
8071
  });
7925
8072
  }
@@ -8114,7 +8261,7 @@ function RelatedListView({ props, empty }) {
8114
8261
  ...route.renderCell === void 0 ? {} : { renderCell: route.renderCell },
8115
8262
  ...route.emptyState === void 0 ? {} : { emptyState: route.emptyState }
8116
8263
  });
8117
- if (own.view !== void 0 && own.view !== "table" && permissions?.status === "loading") return jsx("div", {
8264
+ if (own.view !== void 0 && own.view !== "table" && permissionsUndecided(permissions)) return jsx("div", {
8118
8265
  role: "status",
8119
8266
  "aria-busy": "true",
8120
8267
  "data-testid": `list-undecided:${resource}`,
@@ -8531,6 +8678,6 @@ function PlaceNode({ node }) {
8531
8678
  });
8532
8679
  }
8533
8680
  //#endregion
8534
- export { CursorLoadMore as $, ListSearchInput as A, AppFlowButton as At, ExportDialog as B, ListControls as C, useShownItemActions as Ct, ListFlows as D, EnumSettlingRow as Dt, ListLive as E, EnumBadge as Et, ListColumns as F, toDisplayText as Ft, RouteScreenClaimContext as G, ScreenTree as H, ColumnsToggle as I, ShellProvider as It, FormControlProvider as J, RouteScreenContext as K, DataTableViewOptions as L, defaultUserMapper as Lt, ExportButton as M, FieldDisplay as Mt, ListCreate as N, i18nPrefixToRef$1 as Nt, ListFilters as O, unknownEnumValueLabel as Ot, CreateButton as P, FieldValueFrame as Pt, ResourceList as Q, ListBulkBar as R, usePaletteState as Rt, useFrameChrome as S, ActionOverflow as St, SavedViewsDropdown as T, downloadArtifact as Tt, useTabsUrlState as U, DeclarativeForm as V, QuickScreenClaimContext as W, useFormControlOf as X, useFormControl as Y, ListBody as Z, CopyId as _, ShowPageHeader as _t, peekFieldDefinition as a, DataTable as at, RecordTitle as b, useDocumentTitle as bt, peekRow as c, TabsContent as ct, resolveFrameView as d, RelatedItem as dt, ListErrorState as et, shadcnFrameViews as f, useItemDrawn as ft, UndeclaredTypeNotice as g, PageHeader as gt, TypeChromeDrawnContext as h, EditPageHeader as ht, RouteListContext as i, useBuroDataTable as it, ListExport as j, Field as jt, FilterRegion as k, DeepLinkScope as kt, useRelationPicker as l, TabsList as lt, HeaderTypeNotice as m, RelatedTimelineSkeleton as mt, viewOf as n, resolveUpdater as nt, peekLeafAllowed as o, Checkbox as ot, ChangeTypeButton as p, RELATED_GRID_CLASS as pt, useIsRouteScreen as q, shadcnBlockImplementations as r, tanStackSortingToBuro as rt, peekRecord as s, Tabs as st, selectImplementation as t, buroSortingToTanStack as tt, isBuiltinRecordView as u, TabsTrigger as ut, FormActions as v, resolveResourceTitle as vt, ListSavedViews as w, useExportRunWatcher as wt, FrameChromeContext as x, typography as xt, RecordActions as y, DocumentTitleProvider as yt, BulkActionToolbar as z, useShell as zt };
8681
+ export { ResourceList as $, FilterRegion as A, DeepLinkScope as At, BulkActionToolbar as B, useShell as Bt, useFrameChrome as C, ActionOverflow as Ct, ListLive as D, EnumBadge as Dt, SavedViewsDropdown as E, downloadArtifact as Et, CreateButton as F, FieldValueFrame as Ft, QuickScreenClaimContext as G, DeclarativeForm as H, ListColumns as I, toDisplayText as It, useIsRouteScreen as J, RouteScreenClaimContext as K, ColumnsToggle as L, ShellProvider as Lt, ListExport as M, Field as Mt, ExportButton as N, FieldDisplay as Nt, ListFlows as O, EnumSettlingRow as Ot, ListCreate as P, i18nPrefixToRef$1 as Pt, ListBody as Q, DataTableViewOptions as R, defaultUserMapper as Rt, ItemActionsOffContext as S, typography as St, ListSavedViews as T, useExportRunWatcher as Tt, ScreenTree as U, ExportDialog as V, useTabsUrlState as W, useFormControl as X, FormControlProvider as Y, useFormControlOf as Z, CopyId as _, PageHeader as _t, peekFieldDefinition as a, useBuroDataTable as at, RecordTitle as b, DocumentTitleProvider as bt, peekRow as c, Tabs as ct, resolveFrameView as d, TabsTrigger as dt, CursorLoadMore as et, shadcnFrameViews as f, RelatedItem as ft, UndeclaredTypeNotice as g, EditPageHeader as gt, TypeChromeDrawnContext as h, RelatedTimelineSkeleton as ht, RouteListContext as i, tanStackSortingToBuro as it, ListSearchInput as j, AppFlowButton as jt, ListFilters as k, unknownEnumValueLabel as kt, useRelationPicker as l, TabsContent as lt, HeaderTypeNotice as m, RELATED_GRID_CLASS as mt, viewOf as n, buroSortingToTanStack as nt, peekLeafAllowed as o, DataTable as ot, ChangeTypeButton as p, useItemDrawn as pt, RouteScreenContext as q, shadcnBlockImplementations as r, resolveUpdater as rt, peekRecord as s, Checkbox as st, selectImplementation as t, ListErrorState as tt, isBuiltinRecordView as u, TabsList as ut, FormActions as v, ShowPageHeader as vt, ListControls as w, useShownItemActions as wt, FrameChromeContext as x, useDocumentTitle as xt, RecordActions as y, resolveResourceTitle as yt, ListBulkBar as z, usePaletteState as zt };
8535
8682
 
8536
- //# sourceMappingURL=place-node-BdxT-30h.js.map
8683
+ //# sourceMappingURL=place-node-DwWAigv0.js.map