@burojs/ui-shadcn 0.5.0 → 0.6.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 (133) hide show
  1. package/dist/candidates-gate-Bb70LPAy.js +135 -0
  2. package/dist/candidates-gate-Bb70LPAy.js.map +1 -0
  3. package/dist/candidates-gate-D33jXLHO.cjs +153 -0
  4. package/dist/candidates-gate-D33jXLHO.cjs.map +1 -0
  5. package/dist/candidates-relation-picker-B116Bmqi.js +31 -0
  6. package/dist/candidates-relation-picker-B116Bmqi.js.map +1 -0
  7. package/dist/candidates-relation-picker-Cy0rTxvI.cjs +31 -0
  8. package/dist/candidates-relation-picker-Cy0rTxvI.cjs.map +1 -0
  9. package/dist/{check-confirm-dialog-BRByTFpg.cjs → check-confirm-dialog--gPFnEeg.cjs} +27 -14
  10. package/dist/check-confirm-dialog--gPFnEeg.cjs.map +1 -0
  11. package/dist/{check-confirm-dialog-CkaVTPT9.js → check-confirm-dialog-bRT8lt0d.js} +28 -15
  12. package/dist/check-confirm-dialog-bRT8lt0d.js.map +1 -0
  13. package/dist/{filter-builder-DOnaXNfP.js → filter-builder-Bhn-dhZV.js} +30 -14
  14. package/dist/filter-builder-Bhn-dhZV.js.map +1 -0
  15. package/dist/{filter-builder-B3mZFL-K.cjs → filter-builder-nXqtM_h4.cjs} +39 -11
  16. package/dist/filter-builder-nXqtM_h4.cjs.map +1 -0
  17. package/dist/{flow-runtime-B6zOHYqI.cjs → flow-runtime-D3avVH0I.cjs} +3 -3
  18. package/dist/{flow-runtime-B6zOHYqI.cjs.map → flow-runtime-D3avVH0I.cjs.map} +1 -1
  19. package/dist/{flow-runtime-D8h99FSg.js → flow-runtime-s6lkRPKF.js} +3 -3
  20. package/dist/{flow-runtime-D8h99FSg.js.map → flow-runtime-s6lkRPKF.js.map} +1 -1
  21. package/dist/{flow-screen-CmbARSqg.js → flow-screen-CCvgDI9G.js} +11 -8
  22. package/dist/flow-screen-CCvgDI9G.js.map +1 -0
  23. package/dist/{flow-screen-CX05b3G9.cjs → flow-screen-Ci_Sik4Y.cjs} +10 -7
  24. package/dist/flow-screen-Ci_Sik4Y.cjs.map +1 -0
  25. package/dist/index.cjs +577 -56
  26. package/dist/index.cjs.map +1 -1
  27. package/dist/index.d.cts +181 -103
  28. package/dist/index.d.ts +181 -103
  29. package/dist/index.js +567 -45
  30. package/dist/index.js.map +1 -1
  31. package/dist/{inline-flow-host-C3H2UpSA.js → inline-flow-host-B6FI0ctQ.js} +3 -3
  32. package/dist/{inline-flow-host-C3H2UpSA.js.map → inline-flow-host-B6FI0ctQ.js.map} +1 -1
  33. package/dist/{inline-flow-host-B7U1OJUe.cjs → inline-flow-host-DV1et3c6.cjs} +3 -3
  34. package/dist/{inline-flow-host-B7U1OJUe.cjs.map → inline-flow-host-DV1et3c6.cjs.map} +1 -1
  35. package/dist/label-66W1qbke.js.map +1 -1
  36. package/dist/label-w6JYf2cF.cjs.map +1 -1
  37. package/dist/markdown/index.d.cts +2 -3
  38. package/dist/markdown/index.d.ts +2 -3
  39. package/dist/{page-flow-route-CQ7HsbBm.cjs → page-flow-route-hdnULWqd.cjs} +6 -6
  40. package/dist/{page-flow-route-CQ7HsbBm.cjs.map → page-flow-route-hdnULWqd.cjs.map} +1 -1
  41. package/dist/{page-flow-route-CyXSvXSE.js → page-flow-route-i3ZfJ1sd.js} +6 -6
  42. package/dist/{page-flow-route-CyXSvXSE.js.map → page-flow-route-i3ZfJ1sd.js.map} +1 -1
  43. package/dist/{place-node-SIp4XYQH.cjs → place-node-C5SmIAYU.cjs} +441 -135
  44. package/dist/place-node-C5SmIAYU.cjs.map +1 -0
  45. package/dist/{place-node--GdsP688.js → place-node-NraNYKPx.js} +420 -138
  46. package/dist/place-node-NraNYKPx.js.map +1 -0
  47. package/dist/{related-list-cards-B6x9HQQp.js → related-list-cards-BWZ9GfOG.js} +3 -3
  48. package/dist/{related-list-cards-B6x9HQQp.js.map → related-list-cards-BWZ9GfOG.js.map} +1 -1
  49. package/dist/{related-list-cards-nxuODlIA.cjs → related-list-cards-CFq3meUn.cjs} +3 -3
  50. package/dist/{related-list-cards-nxuODlIA.cjs.map → related-list-cards-CFq3meUn.cjs.map} +1 -1
  51. package/dist/{related-list-timeline-BYJKEbmA.cjs → related-list-timeline-CCzl71aA.cjs} +2 -2
  52. package/dist/{related-list-timeline-BYJKEbmA.cjs.map → related-list-timeline-CCzl71aA.cjs.map} +1 -1
  53. package/dist/{related-list-timeline-DEdfd-rr.js → related-list-timeline-yrPsjA3F.js} +2 -2
  54. package/dist/{related-list-timeline-DEdfd-rr.js.map → related-list-timeline-yrPsjA3F.js.map} +1 -1
  55. package/dist/{related-rows-zh5f_4QR.cjs → related-rows-ea43qhhy.cjs} +10 -11
  56. package/dist/related-rows-ea43qhhy.cjs.map +1 -0
  57. package/dist/{related-rows-B4levHcR.js → related-rows-o0_t-Yce.js} +7 -8
  58. package/dist/related-rows-o0_t-Yce.js.map +1 -0
  59. package/dist/{relation-create-BOaUe12G.cjs → relation-create-IA40t1hi.cjs} +10 -8
  60. package/dist/relation-create-IA40t1hi.cjs.map +1 -0
  61. package/dist/{relation-create-Bg-eEJLs.js → relation-create-h6F9B4C4.js} +10 -8
  62. package/dist/relation-create-h6F9B4C4.js.map +1 -0
  63. package/dist/{relation-many-picker-B-NCEUgX.cjs → relation-many-picker-C8zFEjwd.cjs} +14 -12
  64. package/dist/relation-many-picker-C8zFEjwd.cjs.map +1 -0
  65. package/dist/{relation-many-picker-gdAOD-qK.js → relation-many-picker-bvkjkv-k.js} +13 -11
  66. package/dist/relation-many-picker-bvkjkv-k.js.map +1 -0
  67. package/dist/{relation-picker-BAY77ivO.js → relation-picker-Z0ZJJ5uS.js} +68 -37
  68. package/dist/relation-picker-Z0ZJJ5uS.js.map +1 -0
  69. package/dist/{relation-picker-dialog-M0pQaWlp.cjs → relation-picker-dialog-0IzkjmiA.cjs} +17 -13
  70. package/dist/relation-picker-dialog-0IzkjmiA.cjs.map +1 -0
  71. package/dist/{relation-picker-dialog-hA9rYrZB.js → relation-picker-dialog-B6nIiJBf.js} +18 -14
  72. package/dist/relation-picker-dialog-B6nIiJBf.js.map +1 -0
  73. package/dist/{relation-picker-Da_uhFvA.cjs → relation-picker-gag0qSR5.cjs} +74 -37
  74. package/dist/relation-picker-gag0qSR5.cjs.map +1 -0
  75. package/dist/{resource-page-router-T4vS5gbJ.js → resource-page-router-3RUf9d1j.js} +44 -38
  76. package/dist/resource-page-router-3RUf9d1j.js.map +1 -0
  77. package/dist/{resource-page-router-OSQyRA5b.cjs → resource-page-router-PXfMW9nh.cjs} +42 -36
  78. package/dist/resource-page-router-PXfMW9nh.cjs.map +1 -0
  79. package/dist/{search-access-CURsWn-U.js → search-access-CPPmfuvy.js} +4 -19
  80. package/dist/search-access-CPPmfuvy.js.map +1 -0
  81. package/dist/{search-access-B7G5oR8n.cjs → search-access-Dugvttlg.cjs} +3 -24
  82. package/dist/search-access-Dugvttlg.cjs.map +1 -0
  83. package/dist/{toaster-CfCRLgR-.js → toaster-C02XbB9r.js} +30 -59
  84. package/dist/toaster-C02XbB9r.js.map +1 -0
  85. package/dist/{toaster-C7CiYA4Z.cjs → toaster-Cr51X7bz.cjs} +30 -83
  86. package/dist/toaster-Cr51X7bz.cjs.map +1 -0
  87. package/dist/{use-dialog-filter-state-BDcgS5Oz.js → use-dialog-filter-state-C--oMAZG.js} +2 -2
  88. package/dist/{use-dialog-filter-state-BDcgS5Oz.js.map → use-dialog-filter-state-C--oMAZG.js.map} +1 -1
  89. package/dist/{use-dialog-filter-state-BBCC0OEK.cjs → use-dialog-filter-state-Dhe8PcB5.cjs} +2 -2
  90. package/dist/{use-dialog-filter-state-BBCC0OEK.cjs.map → use-dialog-filter-state-Dhe8PcB5.cjs.map} +1 -1
  91. package/dist/use-theme-DFlpXils.cjs.map +1 -1
  92. package/dist/use-theme-dnE3Od3I.js.map +1 -1
  93. package/package.json +9 -9
  94. package/dist/candidates-gate-CX2PBu6l.js +0 -63
  95. package/dist/candidates-gate-CX2PBu6l.js.map +0 -1
  96. package/dist/candidates-gate-DiFI52r7.cjs +0 -70
  97. package/dist/candidates-gate-DiFI52r7.cjs.map +0 -1
  98. package/dist/candidates-relation-picker-CBsVcnPR.js +0 -82
  99. package/dist/candidates-relation-picker-CBsVcnPR.js.map +0 -1
  100. package/dist/candidates-relation-picker-Dd_GVLlu.cjs +0 -84
  101. package/dist/candidates-relation-picker-Dd_GVLlu.cjs.map +0 -1
  102. package/dist/check-confirm-dialog-BRByTFpg.cjs.map +0 -1
  103. package/dist/check-confirm-dialog-CkaVTPT9.js.map +0 -1
  104. package/dist/filter-builder-B3mZFL-K.cjs.map +0 -1
  105. package/dist/filter-builder-DOnaXNfP.js.map +0 -1
  106. package/dist/flow-screen-CX05b3G9.cjs.map +0 -1
  107. package/dist/flow-screen-CmbARSqg.js.map +0 -1
  108. package/dist/lazy-relation-picker-dialog-2oxnA6IR.js +0 -14
  109. package/dist/lazy-relation-picker-dialog-2oxnA6IR.js.map +0 -1
  110. package/dist/lazy-relation-picker-dialog-BfAGKzUG.cjs +0 -19
  111. package/dist/lazy-relation-picker-dialog-BfAGKzUG.cjs.map +0 -1
  112. package/dist/peek-filter-CnqHwTMU.cjs +0 -51
  113. package/dist/peek-filter-CnqHwTMU.cjs.map +0 -1
  114. package/dist/peek-filter-ErLfO153.js +0 -28
  115. package/dist/peek-filter-ErLfO153.js.map +0 -1
  116. package/dist/place-node--GdsP688.js.map +0 -1
  117. package/dist/place-node-SIp4XYQH.cjs.map +0 -1
  118. package/dist/related-rows-B4levHcR.js.map +0 -1
  119. package/dist/related-rows-zh5f_4QR.cjs.map +0 -1
  120. package/dist/relation-create-BOaUe12G.cjs.map +0 -1
  121. package/dist/relation-create-Bg-eEJLs.js.map +0 -1
  122. package/dist/relation-many-picker-B-NCEUgX.cjs.map +0 -1
  123. package/dist/relation-many-picker-gdAOD-qK.js.map +0 -1
  124. package/dist/relation-picker-BAY77ivO.js.map +0 -1
  125. package/dist/relation-picker-Da_uhFvA.cjs.map +0 -1
  126. package/dist/relation-picker-dialog-M0pQaWlp.cjs.map +0 -1
  127. package/dist/relation-picker-dialog-hA9rYrZB.js.map +0 -1
  128. package/dist/resource-page-router-OSQyRA5b.cjs.map +0 -1
  129. package/dist/resource-page-router-T4vS5gbJ.js.map +0 -1
  130. package/dist/search-access-B7G5oR8n.cjs.map +0 -1
  131. package/dist/search-access-CURsWn-U.js.map +0 -1
  132. package/dist/toaster-C7CiYA4Z.cjs.map +0 -1
  133. package/dist/toaster-CfCRLgR-.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,23 +1,22 @@
1
1
  import { c as scrollToDocAnchor, l as cn, n as useTheme, s as readDocHash, t as THEME_CHOICES } from "./use-theme-dnE3Od3I.js";
2
- import { a as DEFAULT_LANGUAGE_STORAGE_KEY, c as saveLanguage, d as useLinkComponent, f as Popover, g as PopoverTrigger, h as PopoverContent, i as DEFAULT_LANGUAGE, l as saveLocale, m as PopoverClose, n as toast, o as loadLanguage, p as PopoverAnchor, r as toFriendlyError, s as loadLocale, t as Toaster, u as LinkComponentProvider } from "./toaster-CfCRLgR-.js";
3
- import { A as hasIcon, B as DropdownMenuRadioItem, F as DropdownMenuGroup, G as DropdownMenuSubTrigger, H as DropdownMenuShortcut, I as DropdownMenuItem, J as TooltipContent, K as DropdownMenuTrigger, L as DropdownMenuLabel, M as DropdownMenu, N as DropdownMenuCheckboxItem, O as useLoaded, P as DropdownMenuContent, R as DropdownMenuPortal, U as DropdownMenuSub, V as DropdownMenuSeparator, W as DropdownMenuSubContent, X as TooltipTrigger, Y as TooltipProvider, Z as DocInfo, _ as FlowBoundary, a as modeForSurface, c as useListSlot, f as FlowActionButton, j as registerIcons, k as Icon, l as isExternalHref, n as ActionButton, o as canonicalResourceName, q as Tooltip, r as DisabledAction, s as listSlot, t as CheckConfirmDialog, u as openExternal, v as FlowLoadFailed, w as loadFlowScreen, z as DropdownMenuRadioGroup } from "./check-confirm-dialog-CkaVTPT9.js";
2
+ import { a as LinkComponentProvider, c as PopoverAnchor, d as PopoverTrigger, i as toFriendlyError, l as PopoverClose, n as toast, o as useLinkComponent, r as friendlyStringsFrom, s as Popover, t as Toaster, u as PopoverContent } from "./toaster-C02XbB9r.js";
3
+ import { A as hasIcon, B as DropdownMenuRadioItem, F as DropdownMenuGroup, G as DropdownMenuSubTrigger, H as DropdownMenuShortcut, I as DropdownMenuItem, J as TooltipContent, K as DropdownMenuTrigger, L as DropdownMenuLabel, M as DropdownMenu, N as DropdownMenuCheckboxItem, O as useLoaded, P as DropdownMenuContent, R as DropdownMenuPortal, U as DropdownMenuSub, V as DropdownMenuSeparator, W as DropdownMenuSubContent, X as TooltipTrigger, Y as TooltipProvider, Z as DocInfo, _ as FlowBoundary, a as modeForSurface, c as useListSlot, f as FlowActionButton, j as registerIcons, k as Icon, l as isExternalHref, n as ActionButton, o as canonicalResourceName, q as Tooltip, r as DisabledAction, s as listSlot, t as CheckConfirmDialog, u as openExternal, v as FlowLoadFailed, w as loadFlowScreen, z as DropdownMenuRadioGroup } from "./check-confirm-dialog-bRT8lt0d.js";
4
4
  import { n as buttonVariants, t as Button } from "./button-MWVeZaqj.js";
5
5
  import { t as Input } from "./input-CUPStzZO.js";
6
6
  import { a as DialogFooter, c as DialogTrigger, i as DialogDescription, n as DialogClose, o as DialogHeader, r as DialogContent, s as DialogTitle, t as Dialog } from "./dialog-B_rt9S1c.js";
7
- import { C as CommandLoading, S as CommandList, _ as CommandDialog, a as RelationManyDisplay, b as CommandInput, c as focusWithoutPeek, d as PeekHostContext, g as Command, i as RelationField, l as peekAnchorOpener, p as recordDisplayName, r as RelationDisplay, s as relationLinkClassName, u as PeekContext, v as CommandEmpty, w as CommandSeparator, x as CommandItem, y as CommandGroup } from "./search-access-CURsWn-U.js";
7
+ import { C as CommandSeparator, S as CommandLoading, _ as CommandEmpty, b as CommandItem, c as peekAnchorOpener, f as recordDisplayName, g as CommandDialog, h as Command, i as RelationField, l as PeekContext, o as relationLinkClassName, r as RelationDisplay, s as focusWithoutPeek, u as PeekHostContext, v as CommandGroup, x as CommandList, y as CommandInput } from "./search-access-CPPmfuvy.js";
8
8
  import { a as SheetClose, c as SheetFooter, d as SheetTrigger, i as Sheet, l as SheetHeader, n as OwnTitleContext, o as SheetContent, r as SheetPresentationShell, s as SheetDescription, t as DialogPresentationShell, u as SheetTitle } from "./shell-BPlk8hEa.js";
9
9
  import { t as Skeleton } from "./skeleton-U2noefj5.js";
10
- import { $ as Tabs, A as ListColumns, At as ShellProvider, C as ListFilters, Ct as AppFlowButton, D as ExportButton, Dt as ResolvedFieldDisplay, E as ListExport, Et as i18nPrefixToRef, F as ExportDialog, G as CursorLoadMore, I as DeclarativeForm, J as resolveUpdater, K as ListErrorState, L as ScreenTree, M as DataTableViewOptions, Mt as usePaletteState, N as ListBulkBar, Nt as useShell, O as ListCreate, Ot as lowerLegacyField, P as BulkActionToolbar, Q as Checkbox, S as ListFlows, T as ListSearchInput, Tt as FieldDisplay, U as ListBody, W as ResourceList, X as useBuroDataTable, Y as tanStackSortingToBuro, Z as DataTable, _t as ActionOverflow, b as SavedViewsDropdown, bt as downloadArtifact, ct as ShowPageHeader, dt as typography, et as TabsContent, f as CopyId, ft as isShowAvailable, h as RecordTitle, ht as recordRouteAvailable, j as ColumnsToggle, jt as defaultUserMapper, k as CreateButton, kt as toDisplayText, lt as DocumentTitleProvider, m as RecordActions, nt as TabsTrigger, o as resolveFrameView, ot as EditPageHeader, p as FormActions, q as buroSortingToTanStack, r as shadcnBlockImplementations, s as shadcnFrameViews, st as PageHeader, tt as TabsList, ut as useDocumentTitle, v as ListControls, w as FilterRegion, wt as Field, x as ListLive, xt as EnumBadge, y as ListSavedViews, yt as useExportRunWatcher, z as QuickScreenClaimContext } from "./place-node--GdsP688.js";
10
+ import { $ as tanStackSortingToBuro, A as ListExport, At as i18nPrefixToRef, B as DeclarativeForm, C as ListSavedViews, Ct as useExportRunWatcher, D as ListFilters, Dt as AppFlowButton, E as ListFlows, F as ColumnsToggle, Ft as defaultUserMapper, I as DataTableViewOptions, It as usePaletteState, J as ResourceList, L as ListBulkBar, Lt as useShell, M as ListCreate, Mt as lowerLegacyField, N as CreateButton, Nt as toDisplayText, O as FilterRegion, Ot as Field, P as ListColumns, Pt as ShellProvider, Q as resolveUpdater, R as BulkActionToolbar, S as ListControls, T as ListLive, Tt as EnumBadge, U as QuickScreenClaimContext, V as ScreenTree, X as ListErrorState, Y as CursorLoadMore, Z as buroSortingToTanStack, _ as FormActions, a as peekFieldDefinition, at as TabsList, c as peekRow, d as shadcnFrameViews, dt as PageHeader, et as useBuroDataTable, ft as ShowPageHeader, g as CopyId, gt as isShowAvailable, ht as typography, it as TabsContent, j as ExportButton, jt as ResolvedFieldDisplay, k as ListSearchInput, kt as FieldDisplay, mt as useDocumentTitle, nt as Checkbox, o as peekLeafAllowed, ot as TabsTrigger, pt as DocumentTitleProvider, q as ListBody, r as shadcnBlockImplementations, rt as Tabs, s as peekRecord, tt as DataTable, u as resolveFrameView, ut as EditPageHeader, v as RecordActions, w as SavedViewsDropdown, wt as downloadArtifact, xt as ActionOverflow, y as RecordTitle, yt as recordRouteAvailable, z as ExportDialog } from "./place-node-NraNYKPx.js";
11
11
  import { THEME_STORAGE_KEY } from "./layout/theme-storage-key.js";
12
- import { A as useLayoutResolver, C as useNavChromeBoundary, D as usePageAllowed, E as useNavVisible, M as canonicalNavKey, N as canonicalResourceKey, O as layoutSlot, S as NavChromeBoundaryProvider, T as useMatch, _ as useFormControl, a as recordErrorState, b as RecordState, c as readRecentRecords, d as recordTrailRoute, f as useTrailContext, g as RecordScreen, h as usePublishedRecordTrail, i as RecordPage, j as buildNavItems, k as useLayout, l as headerTrail, n as NavAreaPage, o as useRecordVisit, p as recordTrailKey, r as ResourcePageRouter, s as RECENT_LABEL_KEYS, u as recordTrail, v as PlannedBody, w as useHref, x as NavChrome, y as ResourceListPage } from "./resource-page-router-T4vS5gbJ.js";
12
+ import { C as TableHeader, D as DEFAULT_LANGUAGE_STORAGE_KEY, E as badgeVariants, O as loadLocale, S as TableHead, T as Badge, _ as SelectValue, a as FilterBadges, b as TableCaption, c as Select, d as SelectItem, f as SelectLabel, g as SelectTrigger, h as SelectSeparator, i as FilterValueControl, k as saveLocale, l as SelectContent, m as SelectScrollUpButton, n as PinnedFilterControls, o as formatDate, p as SelectScrollDownButton, r as FilterPanel, s as formatNumber, t as FilterBuilder, u as SelectGroup, v as Table, w as TableRow, x as TableCell, y as TableBody } from "./filter-builder-Bhn-dhZV.js";
13
+ import { A as useLayoutResolver, C as useNavChromeBoundary, D as usePageAllowed, E as useNavVisible, M as canonicalNavKey, N as canonicalResourceKey, O as layoutSlot, S as NavChromeBoundaryProvider, T as useMatch, _ as useFormControl, a as recordErrorState, b as RecordState, c as readRecentRecords, d as recordTrailRoute, f as useTrailContext, g as RecordScreen, h as usePublishedRecordTrail, i as RecordPage, j as buildNavItems, k as useLayout, l as headerTrail, n as NavAreaPage, o as useRecordVisit, p as recordTrailKey, r as ResourcePageRouter, s as RECENT_LABEL_KEYS, u as recordTrail, v as PlannedBody, w as useHref, x as NavChrome, y as ResourceListPage } from "./resource-page-router-3RUf9d1j.js";
13
14
  import { t as Label } from "./label-66W1qbke.js";
14
- import { C as TableHeader, E as badgeVariants, S as TableHead, T as Badge, _ as SelectValue, a as FilterBadges, b as TableCaption, c as Select, d as SelectItem, f as SelectLabel, g as SelectTrigger, h as SelectSeparator, i as FilterValueControl, l as SelectContent, m as SelectScrollUpButton, n as PinnedFilterControls, o as formatDate, p as SelectScrollDownButton, r as FilterPanel, s as formatNumber, t as FilterBuilder, u as SelectGroup, v as Table, w as TableRow, x as TableCell, y as TableBody } from "./filter-builder-DOnaXNfP.js";
15
- import { n as RelationPicker, r as RelationPickerInput } from "./relation-picker-BAY77ivO.js";
16
- import { t as LazyRelationPickerDialog } from "./lazy-relation-picker-dialog-2oxnA6IR.js";
17
- import { t as useDialogFilterState } from "./use-dialog-filter-state-BDcgS5Oz.js";
18
- import { i as peekRow, n as peekLeafAllowed, r as peekRecord, t as peekFieldDefinition } from "./peek-filter-ErLfO153.js";
19
- import { builtinFrames, compilePageScreen, compiledScreenFor, dtoFields, effectiveFlow, enumFallbackKey, enumNamespaceOf, evaluateVisible, fieldOptionKey, formatEntityRef, groupChain, hasListPage, hasRecordPage, hrefFor, humanizeKey, isCustomPageDef, isRelationField, isScreenFailure, navHrefFor, nodeKind, normalizeDataError, projectDto, recordEntries, relationAmbiguousError, resolveConceptLabel, resolveContentSlot, resolveDoc, resolveEnumLabel, resolveFieldLabel, resolveNavLabel, resolveResourceLabel, resolveResourceNavLabel, resolveStaticAvailability, resourceCreateHref, resourceShowHref, snapshotAppFrames, snapshotBlockLookup, snapshotFrameLookup, taskRunFraction, taskRunOutcome } from "@burojs/core";
20
- import { ComponentsContext, DispatcherProvider, I18nContext, QUICK_ANCHOR_ATTRIBUTE, QuickEntryContext, ResourceContext, RouteSourceContext, ScreenStateProvider, formatBytes, retryRecordRead, useApp, useAppActions, useApplicationSnapshot, useAvailabilityGate, useCapabilityResolver, useChangeLocale, useCommandPalette, useCurrentUserId, useDebouncedValue, useDispatcherEffects, useDocPanel, useDocScopes, useDocTopics, useDocTrailScopes, useDocsConfig, useDocumentedScopes, useEntryGate, useEnumValues, useFieldAccess, useFileField, useFileUrls, useFormController, useFrameImplementations, useFrameT, useI18nCaps, useIdentity, useLanguageStorageKey, useList, useListAccess, useLocale, useLogout, useNavigationGuardText, useOne, useOptionalAuthController, useOptionalDataRuntime, useOptionalFileStorage, useOptionalLocale, useOptionalRouterAdapter, useOptionalT, usePresentBlock, useProjectedRecord, useProjectedTitle, useQuick, useQuickEntry, useQuickEntryValue, useQuickOpener, useRecordTitle, useRefresh, useRegisterNavigationGuardDialog, useRouteNavigate, useRouterAdapter, useT, useTestIds, useUIInstance, useUIPresentationRuntime, useVisibilityCtx } from "@burojs/react";
15
+ import { i as useRelationSelect, n as RelationPicker, r as RelationPickerInput } from "./relation-picker-Z0ZJJ5uS.js";
16
+ import { r as LazyRelationPickerDialog, t as useCandidateSelection } from "./candidates-gate-Bb70LPAy.js";
17
+ import { t as useDialogFilterState } from "./use-dialog-filter-state-C--oMAZG.js";
18
+ import { builtinFrames, compilePageScreen, compiledScreenFor, declaredField, declaredText, dtoFields, effectiveFlow, enumFallbackKey, enumFallbackText, enumNamespaceOf, enumValueText, evaluateVisible, fieldOptionText, formatEntityRef, groupChain, hasListPage, hasRecordPage, hrefFor, humanizeKey, isCustomPageDef, isRelationField, isScreenFailure, linkOf, navHrefFor, nodeKind, normalizeDataError, normalizeEntityRef, projectDto, recordEntries, relationAmbiguousError, resolveConceptLabel, resolveContentSlot, resolveDoc, resolveEnumLabel, resolveFieldLabel, resolveFieldOptionLabel, resolveNavLabel, resolveResourceLabel, resolveResourceNavLabel, resolveStaticAvailability, resourceCreateHref, resourceKey, resourceShowHref, snapshotAppFrames, snapshotBlockLookup, snapshotFrameLookup, taskRunFraction, taskRunOutcome } from "@burojs/core";
19
+ import { ComponentsContext, DispatcherProvider, I18nContext, NO_RECORD_SCOPE_FRAMES, QUICK_ANCHOR_ATTRIBUTE, QuickEntryContext, RecordScopeChain, ResourceContext, RouteSourceContext, ScreenStateProvider, formatBytes, retryRecordRead, useApp, useAppActions, useApplicationSnapshot, useAvailabilityGate, useCapabilityResolver, useChangeLocale, useCommandPalette, useCurrentUserId, useDataRuntime, useDebouncedValue, useDispatcherEffects, useDocPanel, useDocScopes, useDocTopics, useDocTrailScopes, useDocsConfig, useDocumentedScopes, useEntryGate, useEnumValues, useFieldAccess, useFileField, useFileUrls, useFormController, useFrameImplementations, useFrameT, useI18nCaps, useIdentity, useLanguageStorageKey, useLinkKeys, useList, useListAccess, useLocale, useLogout, useNavigationGuardText, useOne, useOptionalApp, useOptionalAuthController, useOptionalDataRuntime, useOptionalFileStorage, useOptionalLocale, useOptionalRecordFrame, useOptionalRouterAdapter, useOptionalT, usePresentBlock, useProjectedRecord, useProjectedTitle, useQuick, useQuickEntry, useQuickEntryValue, useQuickOpener, useRecordScopeFrames, useRecordTitle, useRefresh, useRegisterNavigationGuardDialog, useRelatedRecord, useRouteNavigate, useRouterAdapter, useT, useTestIds, useUIInstance, useUIPresentationRuntime, useVisibilityCtx } from "@burojs/react";
21
20
  import { IconAlertCircle, IconArrowLeft, IconArrowUpRight, IconBook2, IconCheck, IconChevronDown, IconChevronRight, IconCirclePlus, IconDeviceDesktop, IconDots, IconExternalLink, IconHelp, IconHelpHexagon, IconLayoutSidebar, IconLoader2, IconLogin, IconLogout, IconMaximize, IconMinimize, IconMoon, IconRefresh, IconRotate, IconSearch, IconSelector, IconSun, IconUpload, IconUser, IconX } from "@tabler/icons-react";
22
21
  import * as React from "react";
23
22
  import { Children, Fragment, Suspense, cloneElement, createContext, createElement, isValidElement, lazy, useCallback, useContext, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
@@ -1746,9 +1745,9 @@ function useNavTree(opts = {}) {
1746
1745
  const topLevelCustomPages = allCustomPages.filter((p) => !p.section && !p.group).filter(pageAllowed).filter(passesEntryFilter);
1747
1746
  const resourceHref = (def) => hrefFor(app.registry, canonicalResourceKey(def));
1748
1747
  const resourceLabel = (def) => resolveResourceNavLabel(caps, canonicalResourceKey(def), def);
1749
- const pageLabel = (page) => resolveNavLabel(caps, `pages.${canonicalNavKey(page)}`, page.label);
1750
- const sectionLabel = (section) => resolveNavLabel(caps, `sections.${canonicalNavKey(section)}`, section.label);
1751
- const groupLabel = (group) => resolveNavLabel(caps, `groups.${canonicalNavKey(group)}`, group.label);
1748
+ const pageLabel = (page) => resolveNavLabel(caps, `pages.${canonicalNavKey(page)}`, declaredText("chrome", page, "label"));
1749
+ const sectionLabel = (section) => resolveNavLabel(caps, `sections.${canonicalNavKey(section)}`, declaredText("chrome", section, "label"));
1750
+ const groupLabel = (group) => resolveNavLabel(caps, `groups.${canonicalNavKey(group)}`, declaredText("chrome", group, "label"));
1752
1751
  const pageEntry = (page) => {
1753
1752
  const href = page.path;
1754
1753
  return {
@@ -2039,7 +2038,7 @@ function SecondarySidebarLayout({ group, groupKey, items, children }) {
2039
2038
  const RouterLink = useLinkComponent();
2040
2039
  const caps = useI18nCaps();
2041
2040
  const id = groupKey ?? group.name;
2042
- const label = resolveNavLabel(caps, `groups.${id}`, group.label);
2041
+ const label = resolveNavLabel(caps, `groups.${id}`, declaredText("chrome", group, "label"));
2043
2042
  return jsxs("div", {
2044
2043
  className: "md:-m-6 md:flex md:min-h-[calc(100%+3rem)]",
2045
2044
  "data-testid": `nav-secondary:${id}`,
@@ -2084,7 +2083,7 @@ function TabsLayout({ group, groupKey, items, children }) {
2084
2083
  const RouterLink = useLinkComponent();
2085
2084
  const caps = useI18nCaps();
2086
2085
  const id = groupKey ?? group.name;
2087
- const label = resolveNavLabel(caps, `groups.${id}`, group.label);
2086
+ const label = resolveNavLabel(caps, `groups.${id}`, declaredText("chrome", group, "label"));
2088
2087
  return jsxs("div", {
2089
2088
  className: "flex flex-col gap-4",
2090
2089
  "data-testid": `nav-tabs:${id}`,
@@ -2551,7 +2550,7 @@ function CommandPaletteNavigationGroups({ onSelect, getTestId }) {
2551
2550
  navigate(href);
2552
2551
  };
2553
2552
  const resourceLabel = (def) => resolveResourceLabel(caps, canonicalResourceKey(def), "plural", def);
2554
- const pageLabel = (def) => resolveNavLabel(caps, `pages.${canonicalNavKey(def)}`, def.label);
2553
+ const pageLabel = (def) => resolveNavLabel(caps, `pages.${canonicalNavKey(def)}`, declaredText("chrome", def, "label"));
2555
2554
  const groups = [];
2556
2555
  if (topLevelResources.length > 0) groups.push(jsx(CommandGroup, {
2557
2556
  heading: t("commandPalette.resources", { defaultValue: "Resources" }),
@@ -2583,7 +2582,7 @@ function CommandPaletteNavigationGroups({ onSelect, getTestId }) {
2583
2582
  }, "pages"));
2584
2583
  for (const { section, children } of sectionGroups) {
2585
2584
  const sectionKey = canonicalNavKey(section);
2586
- const sectionLabel = resolveNavLabel(caps, `sections.${sectionKey}`, section.label);
2585
+ const sectionLabel = resolveNavLabel(caps, `sections.${sectionKey}`, declaredText("chrome", section, "label"));
2587
2586
  groups.push(jsxs(CommandGroup, {
2588
2587
  heading: sectionLabel,
2589
2588
  children: [jsx(CommandItem, {
@@ -2622,7 +2621,7 @@ function CommandPaletteNavigationGroups({ onSelect, getTestId }) {
2622
2621
  const items = [];
2623
2622
  if (!!resolveLayout(group.layout)) {
2624
2623
  const groupKey = canonicalNavKey(group);
2625
- const label = resolveNavLabel(caps, `groups.${groupKey}`, group.label);
2624
+ const label = resolveNavLabel(caps, `groups.${groupKey}`, declaredText("chrome", group, "label"));
2626
2625
  const href = navHrefFor(app.registry, groupKey, { isVisible });
2627
2626
  items.push(jsx(CommandItem, {
2628
2627
  value: `group:${idPath}:${label}`,
@@ -2676,7 +2675,7 @@ function CommandPaletteNavigationGroups({ onSelect, getTestId }) {
2676
2675
  const groupKey = canonicalNavKey(group);
2677
2676
  const items = collectGroupItems(group, groupKey, 0);
2678
2677
  if (items.length === 0) continue;
2679
- const heading = resolveNavLabel(caps, `groups.${groupKey}`, group.label);
2678
+ const heading = resolveNavLabel(caps, `groups.${groupKey}`, declaredText("chrome", group, "label"));
2680
2679
  groups.push(jsx(CommandGroup, {
2681
2680
  heading,
2682
2681
  children: items
@@ -2848,6 +2847,7 @@ function PerResourceSearchHits({ def, displayField, query, pageSize, goTo, recor
2848
2847
  page: 1,
2849
2848
  pageSize
2850
2849
  },
2850
+ scope: "session",
2851
2851
  enabled: shouldFetch
2852
2852
  });
2853
2853
  const report = useCommandPaletteResults(`records:${resource}`);
@@ -3219,7 +3219,6 @@ function localizedSchema(t) {
3219
3219
  function LoginForm({ onSubmit, title, description, className }) {
3220
3220
  const tid = useTestIds();
3221
3221
  const t = useOptionalT();
3222
- const locale = useLocale();
3223
3222
  const resolvedTitle = title ?? t("auth.signIn", { defaultValue: "Sign in" });
3224
3223
  const { register, handleSubmit, formState: { errors, isSubmitting } } = useForm({
3225
3224
  resolver: zodResolver(localizedSchema(t)),
@@ -3235,7 +3234,7 @@ function LoginForm({ onSubmit, title, description, className }) {
3235
3234
  await onSubmit(values);
3236
3235
  } catch (e) {
3237
3236
  const raw = e instanceof Error ? e.message : String(e);
3238
- const friendly = toFriendlyError(raw, "", locale);
3237
+ const friendly = toFriendlyError(raw, "", friendlyStringsFrom(t));
3239
3238
  setSubmitError(friendly.replaced ? `${friendly.title}. ${friendly.detail}` : credentialsMessage(raw, t));
3240
3239
  }
3241
3240
  });
@@ -3427,7 +3426,7 @@ function EnumPicker({ enumName, value, onChange, renderAs = "select", name, id,
3427
3426
  ...ariaErrorMessage ? { "aria-errormessage": ariaErrorMessage } : {},
3428
3427
  "data-testid": `${tid}:option:${entry.value}`,
3429
3428
  className: "h-4 w-4"
3430
- }), jsx("span", { children: resolveEnumLabel(caps, ns, entry.value, entry.label) })]
3429
+ }), jsx("span", { children: resolveEnumLabel(caps, ns, entry.value, enumValueText(def, entry.value) ?? entry.label) })]
3431
3430
  }, entry.value);
3432
3431
  })
3433
3432
  });
@@ -3448,7 +3447,7 @@ function EnumPicker({ enumName, value, onChange, renderAs = "select", name, id,
3448
3447
  disabled,
3449
3448
  onClick: () => onChange(entry.value),
3450
3449
  className: cn("inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium transition-all", "data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-xs", "disabled:pointer-events-none disabled:opacity-50", "focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring"),
3451
- children: resolveEnumLabel(caps, ns, entry.value, entry.label)
3450
+ children: resolveEnumLabel(caps, ns, entry.value, enumValueText(def, entry.value) ?? entry.label)
3452
3451
  }, entry.value);
3453
3452
  })
3454
3453
  });
@@ -3480,7 +3479,7 @@ function EnumPicker({ enumName, value, onChange, renderAs = "select", name, id,
3480
3479
  "data-testid": `${tid}:option:__clear__`,
3481
3480
  children: clearLabel
3482
3481
  }), values.map((entry) => {
3483
- const optionLabel = resolveEnumLabel(caps, ns, entry.value, entry.label);
3482
+ const optionLabel = resolveEnumLabel(caps, ns, entry.value, enumValueText(def, entry.value) ?? entry.label);
3484
3483
  const optionDoc = resolveDoc(caps, `enum/${ns}/${entry.value}`)?.summary;
3485
3484
  return jsx(SelectItem, {
3486
3485
  value: entry.value,
@@ -3570,20 +3569,28 @@ function DateInput({ name, id, value, onChange, testid, disabled, required, aria
3570
3569
  function optionLabel(caps, field, value, inline) {
3571
3570
  const ns = enumNamespaceOf(field);
3572
3571
  if (ns) return resolveEnumLabel(caps, ns, value, inline);
3573
- return field ? resolveContentSlot(caps, [fieldOptionKey(field.name, value)], { default: inline }) : inline;
3572
+ return field ? resolveFieldOptionLabel(caps, field.name, value, inline) : inline;
3573
+ }
3574
+ function declaredOptionLabel(option, value, enumDef) {
3575
+ return (enumDef === void 0 ? void 0 : enumValueText(enumDef, value)) ?? (typeof option?.label === "string" ? option.label : value);
3576
+ }
3577
+ function useBoundEnum(field) {
3578
+ const app = useOptionalApp();
3579
+ const namespace = enumNamespaceOf(field);
3580
+ return namespace === void 0 ? void 0 : app?.registry.enums.get(namespace);
3574
3581
  }
3575
3582
  function useOptionCaps(resource) {
3576
3583
  return useI18nCaps(useContext(ResourceContext).resource ?? resource);
3577
3584
  }
3578
3585
  function EnumDisplay({ value, options, field, resource }) {
3579
3586
  const caps = useOptionCaps(resource);
3587
+ const enumDef = useBoundEnum(field);
3580
3588
  if (value == null || value === "") return jsx("span", {
3581
3589
  className: "text-muted-foreground",
3582
3590
  children: "—"
3583
3591
  });
3584
3592
  const opt = options?.find((o) => o.value === String(value));
3585
- const inline = typeof opt?.label === "string" ? opt.label : String(value);
3586
- const label = optionLabel(caps, field, String(value), inline);
3593
+ const label = optionLabel(caps, field, String(value), declaredOptionLabel(opt, String(value), enumDef));
3587
3594
  return jsxs("span", {
3588
3595
  className: "inline-flex items-center gap-1",
3589
3596
  children: [opt?.icon ? jsx(Icon, {
@@ -3595,6 +3602,7 @@ function EnumDisplay({ value, options, field, resource }) {
3595
3602
  function EnumInput({ name, id, value, onChange, testid, options, field, placeholder, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage, resource }) {
3596
3603
  const t = useOptionalT();
3597
3604
  const caps = useOptionCaps(resource);
3605
+ const enumDef = useBoundEnum(field);
3598
3606
  return jsxs(Select, {
3599
3607
  value: value ?? "",
3600
3608
  onValueChange: onChange,
@@ -3616,7 +3624,7 @@ function EnumInput({ name, id, value, onChange, testid, options, field, placehol
3616
3624
  children: [o.icon ? jsx(Icon, {
3617
3625
  name: o.icon,
3618
3626
  className: "size-3.5 shrink-0 text-muted-foreground"
3619
- }) : null, optionLabel(caps, field, o.value, typeof o.label === "string" ? o.label : o.value)]
3627
+ }) : null, optionLabel(caps, field, o.value, declaredOptionLabel(o, o.value, enumDef))]
3620
3628
  })
3621
3629
  }, o.value)) })]
3622
3630
  });
@@ -3989,6 +3997,7 @@ function JsonDisplay({ value, presentation, testid }) {
3989
3997
  });
3990
3998
  }
3991
3999
  function JsonInput({ name, id, value, onChange, testid, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage }) {
4000
+ const t = useOptionalT();
3992
4001
  const seed = React.useMemo(() => {
3993
4002
  if (value == null || value === "") return "";
3994
4003
  return toDisplayText(value).text;
@@ -4032,13 +4041,13 @@ function JsonInput({ name, id, value, onChange, testid, disabled, required, aria
4032
4041
  }), invalid && jsx("p", {
4033
4042
  className: "text-[13px] leading-snug text-destructive",
4034
4043
  "data-testid": `${testid}-json-error`,
4035
- children: "Некорректный JSON — изменения не будут сохранены, пока он не станет валидным."
4044
+ children: t("field.jsonInvalid", { defaultValue: "Invalid JSON. Changes will not be saved until it is valid." })
4036
4045
  })]
4037
4046
  });
4038
4047
  }
4039
4048
  //#endregion
4040
4049
  //#region src/fields/lazy-relation-many.tsx
4041
- const RelationManyPickerInput = lazy(() => import("./relation-many-picker-gdAOD-qK.js").then((module) => ({ default: module.RelationManyPickerInput })));
4050
+ const RelationManyPickerInput = lazy(() => import("./relation-many-picker-bvkjkv-k.js").then((module) => ({ default: module.RelationManyPickerInput })));
4042
4051
  function LazyRelationManyInput(props) {
4043
4052
  return jsx(Suspense, {
4044
4053
  fallback: jsx(Skeleton, {
@@ -4149,6 +4158,192 @@ function NumberInput({ name, id, value, onChange, testid, placeholder, disabled,
4149
4158
  });
4150
4159
  }
4151
4160
  //#endregion
4161
+ //#region src/fields/link-keys-display.tsx
4162
+ const isRecord$1 = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4163
+ function qualify(name, owner) {
4164
+ try {
4165
+ const namespace = normalizeEntityRef(owner).namespace;
4166
+ const ref = normalizeEntityRef(name, { defaultNamespace: namespace });
4167
+ return ref.namespace === "default" ? ref.id : `${ref.namespace}:${ref.id}`;
4168
+ } catch {
4169
+ return;
4170
+ }
4171
+ }
4172
+ function idFieldOf(def) {
4173
+ const declared = (def?.data)?.idField;
4174
+ return typeof declared === "string" && declared.length > 0 ? declared : "id";
4175
+ }
4176
+ function byOf(field) {
4177
+ const by = isRecord$1(field) && isRecord$1(field.meta) ? field.meta.by : void 0;
4178
+ return typeof by === "string" && by.length > 0 ? by : void 0;
4179
+ }
4180
+ const chipClassName = "inline-flex items-center rounded-md border border-border bg-muted/40 px-1.5 py-0.5 text-xs";
4181
+ function LinkKeysDisplay(props) {
4182
+ const { field, record } = props;
4183
+ const owner = props.owner ?? props.resource ?? "";
4184
+ const name = field?.name ?? "";
4185
+ const app = useApp();
4186
+ const t = useOptionalT();
4187
+ const tid = useTestIds();
4188
+ const ownerDef = owner === "" ? void 0 : app.registry.get(owner);
4189
+ const declaration = ownerDef === void 0 ? void 0 : declaredField(ownerDef, name);
4190
+ const link = isRecord$1(declaration) ? linkOf(declaration) : void 0;
4191
+ const junctionName = link === void 0 ? void 0 : qualify(link.junction, owner);
4192
+ const junctionDef = junctionName === void 0 ? void 0 : app.registry.get(junctionName);
4193
+ const junctionField = (key) => junctionDef === void 0 ? void 0 : declaredField(junctionDef, key);
4194
+ const ownerField = link === void 0 ? idFieldOf(ownerDef) : byOf(junctionField(link.sourceKey)) ?? idFieldOf(ownerDef);
4195
+ const targetBy = link === void 0 ? void 0 : byOf(junctionField(link.targetKey));
4196
+ const ownerKey = record?.[ownerField];
4197
+ const { keys, complete, isLoading, error } = useLinkKeys(owner, name, ownerKey);
4198
+ const [missed, setMissed] = useState(() => new Set());
4199
+ const onMiss = useCallback((key, miss) => {
4200
+ setMissed((current) => {
4201
+ if (current.has(key) === miss) return current;
4202
+ const next = new Set(current);
4203
+ if (miss) next.add(key);
4204
+ else next.delete(key);
4205
+ return next;
4206
+ });
4207
+ }, []);
4208
+ const target = (isRecord$1(declaration) && isRecord$1(declaration.meta) ? declaration.meta.to : void 0) ?? field?.meta?.to;
4209
+ const chipField = useMemo(() => ({
4210
+ name,
4211
+ meta: {
4212
+ ...target === void 0 ? {} : { to: target },
4213
+ ...targetBy === void 0 ? {} : { by: targetBy }
4214
+ },
4215
+ ...field?.ui === void 0 ? {} : { ui: field.ui }
4216
+ }), [
4217
+ name,
4218
+ target,
4219
+ field?.ui,
4220
+ targetBy
4221
+ ]);
4222
+ const chipsId = tid.linkChips(owner, name);
4223
+ if (error) return jsx("span", {
4224
+ "data-testid": tid.linkError(owner, name),
4225
+ role: "status",
4226
+ className: "text-destructive text-xs",
4227
+ title: error.message,
4228
+ children: t("fields.link.failed", { defaultValue: "Links could not be loaded" })
4229
+ });
4230
+ if (keys === void 0) {
4231
+ if (!isLoading) return jsx("span", {
4232
+ "data-testid": "relation-many-display:empty",
4233
+ className: "text-muted-foreground",
4234
+ children: "—"
4235
+ });
4236
+ return jsx("span", {
4237
+ "data-testid": `${chipsId}:loading`,
4238
+ className: "inline-block h-5 w-20 animate-pulse rounded bg-muted",
4239
+ "aria-busy": "true"
4240
+ });
4241
+ }
4242
+ if (!complete) return jsx("span", {
4243
+ "data-testid": chipsId,
4244
+ className: "inline-flex flex-wrap gap-1",
4245
+ children: jsx("span", {
4246
+ "data-testid": tid.linkIncomplete(owner, name),
4247
+ className: "text-muted-foreground",
4248
+ children: t("fields.link.incomplete", {
4249
+ count: keys.length,
4250
+ defaultValue: "More than {{count}} links"
4251
+ })
4252
+ })
4253
+ });
4254
+ if (keys.length === 0) return jsx("span", {
4255
+ "data-testid": "relation-many-display:empty",
4256
+ className: "text-muted-foreground",
4257
+ children: "—"
4258
+ });
4259
+ const hidden = keys.filter((key) => missed.has(String(key))).length;
4260
+ return jsxs("span", {
4261
+ "data-testid": chipsId,
4262
+ className: "inline-flex flex-wrap gap-1",
4263
+ children: [keys.map((key) => jsx(LinkChip, {
4264
+ value: key,
4265
+ field: chipField,
4266
+ onMiss
4267
+ }, String(key))), hidden > 0 ? jsx("span", {
4268
+ "data-testid": tid.linkHidden(owner, name),
4269
+ className: `${chipClassName} text-muted-foreground`,
4270
+ children: t("fields.link.hidden", {
4271
+ count: hidden,
4272
+ defaultValue: "{{count}} not visible"
4273
+ })
4274
+ }) : null]
4275
+ });
4276
+ }
4277
+ function LinkChip({ value, field, onMiss }) {
4278
+ const gate = useEntryGate();
4279
+ const meta = field.meta;
4280
+ let to;
4281
+ try {
4282
+ to = meta?.to === void 0 ? void 0 : resourceKey(meta.to);
4283
+ } catch {
4284
+ to = void 0;
4285
+ }
4286
+ const answer = to === void 0 ? void 0 : gate(to, "show");
4287
+ if (!(to !== void 0 && answer !== void 0 && answer.state !== "undecided" && answer.state !== "hidden" && answer.state !== "disabled")) return jsx("span", {
4288
+ className: chipClassName,
4289
+ children: jsx(RelationDisplay, {
4290
+ value,
4291
+ field
4292
+ })
4293
+ });
4294
+ return jsx(ReadChip, {
4295
+ to,
4296
+ value,
4297
+ field,
4298
+ onMiss
4299
+ });
4300
+ }
4301
+ function ReadChip({ to, value, field, onMiss }) {
4302
+ const app = useApp();
4303
+ const by = field.meta?.by;
4304
+ const { record, isLoading, error, ambiguous } = useRelatedRecord(to, value, typeof by === "string" ? { by } : void 0);
4305
+ const miss = app.registry.get(to) !== void 0 && !isLoading && !error && !ambiguous && !record;
4306
+ const key = String(value);
4307
+ useEffect(() => {
4308
+ onMiss(key, miss);
4309
+ }, [
4310
+ onMiss,
4311
+ key,
4312
+ miss
4313
+ ]);
4314
+ useEffect(() => () => onMiss(key, false), [onMiss, key]);
4315
+ if (miss) return null;
4316
+ return jsx("span", {
4317
+ className: chipClassName,
4318
+ children: jsx(RelationDisplay, {
4319
+ value,
4320
+ field
4321
+ })
4322
+ });
4323
+ }
4324
+ function RelationManyDisplay(props) {
4325
+ const app = useApp();
4326
+ const owner = props.owner ?? props.resource ?? "";
4327
+ const ownerDef = owner === "" ? void 0 : app.registry.get(owner);
4328
+ const declared = ownerDef === void 0 || props.field?.name === void 0 ? void 0 : declaredField(ownerDef, props.field.name);
4329
+ if (isRecord$1(declared) && linkOf(declared) !== void 0) return jsx(LinkKeysDisplay, { ...props });
4330
+ const { value, field } = props;
4331
+ const keys = Array.isArray(value) ? value : [];
4332
+ if (keys.length === 0) return jsx("span", {
4333
+ "data-testid": "relation-many-display:empty",
4334
+ className: "text-muted-foreground",
4335
+ children: "—"
4336
+ });
4337
+ return jsx("span", {
4338
+ className: "inline-flex flex-wrap gap-x-2",
4339
+ "data-testid": "relation-many-display",
4340
+ children: keys.map((key, index) => jsx(RelationDisplay, {
4341
+ value: key,
4342
+ field
4343
+ }, `${String(key)}:${index}`))
4344
+ });
4345
+ }
4346
+ //#endregion
4152
4347
  //#region src/fields/relation-meta-schema.ts
4153
4348
  const isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
4154
4349
  const relationMetaSchema = Object.freeze({ "~standard": Object.freeze({
@@ -4280,20 +4475,28 @@ function TextareaInput({ name, id, value, onChange, testid, placeholder, disable
4280
4475
  //#region src/fields/default-renderers.ts
4281
4476
  function legacyField(props) {
4282
4477
  const name = typeof props.path.at(-1) === "string" ? props.path.at(-1) : "field";
4478
+ const texts = props.field.texts;
4283
4479
  return Object.freeze({
4284
4480
  name,
4285
4481
  meta: props.meta,
4286
4482
  ui: props.ui,
4287
- codec: props.field.codec
4483
+ codec: props.field.codec,
4484
+ ...texts === void 0 ? {} : { texts }
4288
4485
  });
4289
4486
  }
4290
- function legacyOptions(options) {
4487
+ function legacyOptions(options, field) {
4291
4488
  if (options.length === 0) return void 0;
4292
- return options.map((option) => Object.freeze({
4293
- value: String(option.value ?? ""),
4294
- label: option.label,
4295
- ...typeof option.meta?.icon === "string" ? { icon: option.meta.icon } : {}
4296
- }));
4489
+ return options.map((option) => {
4490
+ const value = String(option.value ?? "");
4491
+ return Object.freeze({
4492
+ value,
4493
+ label: fieldOptionText(field, value) ?? value,
4494
+ ...typeof option.meta?.icon === "string" ? { icon: option.meta.icon } : {}
4495
+ });
4496
+ });
4497
+ }
4498
+ function registryKey(ref) {
4499
+ return ref.namespace === "default" ? ref.id : formatEntityRef(ref);
4297
4500
  }
4298
4501
  function display(renderer) {
4299
4502
  return function ShadcnDisplay(props) {
@@ -4301,8 +4504,9 @@ function display(renderer) {
4301
4504
  value: props.value,
4302
4505
  multiple: props.multiple,
4303
4506
  field: legacyField(props),
4304
- options: legacyOptions(props.options),
4507
+ options: legacyOptions(props.options, props.field),
4305
4508
  resource: props.resource.id,
4509
+ owner: registryKey(props.resource),
4306
4510
  record: props.record,
4307
4511
  presentation: props.presentation,
4308
4512
  testid: props.testIds.display
@@ -4327,7 +4531,7 @@ function input(renderer) {
4327
4531
  multiple: props.multiple,
4328
4532
  onChange: props.onChange ?? (() => void 0),
4329
4533
  testid: props.testIds.input,
4330
- options: legacyOptions(props.options),
4534
+ options: legacyOptions(props.options, props.field),
4331
4535
  placeholder: typeof props.ui.placeholder === "string" ? props.ui.placeholder : void 0,
4332
4536
  disabled: props.disabled,
4333
4537
  required: props.field.required === true,
@@ -4501,6 +4705,313 @@ const shadcnFieldImplementations = Object.freeze({
4501
4705
  file: scalarOrCollection(file, { size: "full" })
4502
4706
  });
4503
4707
  //#endregion
4708
+ //#region src/fields/use-relation-picker.tsx
4709
+ const noop = () => void 0;
4710
+ function safeKey(input) {
4711
+ if (input === void 0 || input === null) return void 0;
4712
+ try {
4713
+ return resourceKey(input);
4714
+ } catch {
4715
+ return;
4716
+ }
4717
+ }
4718
+ function sessionIdentity(runtime) {
4719
+ const state = runtime.dataSession.getState();
4720
+ const snapshot = state.status === "ready" ? state.snapshot : state.target;
4721
+ let scopeKey;
4722
+ try {
4723
+ scopeKey = JSON.stringify(snapshot.scopeKey) ?? "";
4724
+ } catch {
4725
+ scopeKey = String(snapshot.scopeKey);
4726
+ }
4727
+ return {
4728
+ sessionKey: snapshot.sessionKey,
4729
+ scopeKey
4730
+ };
4731
+ }
4732
+ function PickerHost(props) {
4733
+ const { register } = props;
4734
+ React.useEffect(() => register(), [register]);
4735
+ return jsx(Fragment$1, { children: props.children });
4736
+ }
4737
+ function useRelationPicker(options) {
4738
+ const app = useApp();
4739
+ const runtime = useDataRuntime();
4740
+ const frame = useOptionalRecordFrame();
4741
+ const frames = useRecordScopeFrames();
4742
+ const multiple = options.multiple === true;
4743
+ const fieldName = options.field;
4744
+ let to;
4745
+ let declaredBy;
4746
+ let declaredCandidates;
4747
+ if (fieldName !== void 0) {
4748
+ const meta = ((frame === null ? void 0 : app.registry.get(frame.resource)?.fields)?.[fieldName])?.meta;
4749
+ to = safeKey(meta?.to);
4750
+ declaredBy = typeof meta?.by === "string" ? meta.by : void 0;
4751
+ declaredCandidates = Array.isArray(meta?.candidates) ? meta.candidates : void 0;
4752
+ } else to = safeKey(options.to);
4753
+ const target = to ?? "";
4754
+ const by = options.valueField ?? declaredBy;
4755
+ const scope = options.scope ?? "context";
4756
+ const selection = useCandidateSelection({
4757
+ to,
4758
+ candidates: options.candidates ?? declaredCandidates,
4759
+ sources: frame?.controller.sources,
4760
+ resource: frame?.resource ?? "",
4761
+ fieldName: fieldName ?? target,
4762
+ fixedFilters: options.fixedFilters
4763
+ });
4764
+ const held = selection.gate !== void 0;
4765
+ const pendingRef = React.useRef(null);
4766
+ const [active, setActive] = React.useState(null);
4767
+ const activeRef = React.useRef(null);
4768
+ activeRef.current = active;
4769
+ const rowsRef = React.useRef(new Map());
4770
+ const createdRowRef = React.useRef(void 0);
4771
+ const alive = React.useRef(true);
4772
+ const mounts = React.useRef(0);
4773
+ const sequence = React.useRef(0);
4774
+ const latest = React.useRef({
4775
+ multiple,
4776
+ select: options.select,
4777
+ idField: "id",
4778
+ valueField: "id",
4779
+ available: false,
4780
+ frames
4781
+ });
4782
+ const project = React.useCallback((row) => {
4783
+ const select = latest.current.select;
4784
+ if (select === void 0) return { ...row };
4785
+ const out = {};
4786
+ const key = row.id !== void 0 ? row.id : row[latest.current.idField];
4787
+ if (key !== void 0) out.id = key;
4788
+ const { valueField } = latest.current;
4789
+ if (Object.hasOwn(row, valueField)) out[valueField] = row[valueField];
4790
+ for (const name of select) if (Object.hasOwn(row, name)) out[name] = row[name];
4791
+ return out;
4792
+ }, []);
4793
+ const settle = React.useCallback((result) => {
4794
+ const pending = pendingRef.current;
4795
+ if (pending === null) return;
4796
+ pendingRef.current = null;
4797
+ pending.detach();
4798
+ if (alive.current) setActive(null);
4799
+ pending.resolve(result);
4800
+ }, []);
4801
+ const toggle = React.useCallback((key, row) => {
4802
+ setActive((current) => {
4803
+ if (current === null) return current;
4804
+ const has = current.selected.some((k) => String(k) === String(key));
4805
+ if (has) rowsRef.current.delete(String(key));
4806
+ else if (row !== void 0) rowsRef.current.set(String(key), row);
4807
+ const selected = has ? current.selected.filter((k) => String(k) !== String(key)) : [...current.selected, key];
4808
+ const next = {
4809
+ ...current,
4810
+ selected
4811
+ };
4812
+ activeRef.current = next;
4813
+ return next;
4814
+ });
4815
+ }, []);
4816
+ const onValue = React.useCallback((value) => {
4817
+ const row = createdRowRef.current;
4818
+ createdRowRef.current = void 0;
4819
+ if (latest.current.multiple) {
4820
+ const current = activeRef.current;
4821
+ if (current !== null && !current.selected.some((k) => String(k) === String(value))) toggle(value, row);
4822
+ return;
4823
+ }
4824
+ settle({
4825
+ kind: "selected",
4826
+ keys: [value],
4827
+ rows: row === void 0 ? [] : [project(row)]
4828
+ });
4829
+ }, [
4830
+ project,
4831
+ settle,
4832
+ toggle
4833
+ ]);
4834
+ const wiring = useRelationSelect({
4835
+ to: target,
4836
+ by,
4837
+ fixedFilters: selection.fixedFilters,
4838
+ scope,
4839
+ ...fieldName === void 0 ? {} : { scopeField: fieldName },
4840
+ held,
4841
+ onValue
4842
+ });
4843
+ latest.current = {
4844
+ multiple,
4845
+ select: options.select,
4846
+ idField: wiring.idField,
4847
+ valueField: wiring.valueField,
4848
+ available: to !== void 0 && wiring.targetDef !== void 0 && !held,
4849
+ frames
4850
+ };
4851
+ const { create: shared } = wiring;
4852
+ const create = React.useMemo(() => ({
4853
+ ...shared,
4854
+ start: (openCreate) => shared.start(() => {
4855
+ const opened = openCreate();
4856
+ opened.then((row) => {
4857
+ createdRowRef.current = row === null ? void 0 : { ...row };
4858
+ }, noop);
4859
+ return opened;
4860
+ })
4861
+ }), [shared]);
4862
+ React.useEffect(() => runtime.dataSession.subscribe(() => {
4863
+ const pending = pendingRef.current;
4864
+ if (pending === null) return;
4865
+ const now = sessionIdentity(runtime);
4866
+ if (now.sessionKey !== pending.sessionKey || now.scopeKey !== pending.scopeKey) settle({
4867
+ kind: "cancelled",
4868
+ reason: "session-changed"
4869
+ });
4870
+ }), [runtime, settle]);
4871
+ React.useEffect(() => {
4872
+ alive.current = true;
4873
+ return () => {
4874
+ alive.current = false;
4875
+ settle({
4876
+ kind: "cancelled",
4877
+ reason: "unmounted"
4878
+ });
4879
+ };
4880
+ }, [settle]);
4881
+ React.useEffect(() => {
4882
+ if (held) settle({
4883
+ kind: "cancelled",
4884
+ reason: "unavailable"
4885
+ });
4886
+ }, [held, settle]);
4887
+ const register = React.useCallback(() => {
4888
+ mounts.current += 1;
4889
+ return () => {
4890
+ mounts.current -= 1;
4891
+ if (mounts.current === 0) settle({
4892
+ kind: "cancelled",
4893
+ reason: "unmounted"
4894
+ });
4895
+ };
4896
+ }, [settle]);
4897
+ const open = React.useCallback((opts = {}) => new Promise((resolve) => {
4898
+ settle({
4899
+ kind: "cancelled",
4900
+ reason: "superseded"
4901
+ });
4902
+ if (mounts.current === 0) {
4903
+ if (process.env.NODE_ENV !== "production") console.error("[burojs] useRelationPicker: open() was called but its element is not rendered — render `handle.element` once in your tree.");
4904
+ resolve({
4905
+ kind: "cancelled",
4906
+ reason: "not-mounted"
4907
+ });
4908
+ return;
4909
+ }
4910
+ const { signal } = opts;
4911
+ if (signal?.aborted === true) {
4912
+ resolve({
4913
+ kind: "cancelled",
4914
+ reason: "aborted"
4915
+ });
4916
+ return;
4917
+ }
4918
+ if (!latest.current.available) {
4919
+ resolve({
4920
+ kind: "cancelled",
4921
+ reason: "unavailable"
4922
+ });
4923
+ return;
4924
+ }
4925
+ sequence.current += 1;
4926
+ const id = sequence.current;
4927
+ const onAbort = () => {
4928
+ if (pendingRef.current?.id === id) settle({
4929
+ kind: "cancelled",
4930
+ reason: "aborted"
4931
+ });
4932
+ };
4933
+ signal?.addEventListener("abort", onAbort, { once: true });
4934
+ pendingRef.current = {
4935
+ id,
4936
+ ...sessionIdentity(runtime),
4937
+ resolve,
4938
+ detach: () => signal?.removeEventListener("abort", onAbort)
4939
+ };
4940
+ rowsRef.current = new Map();
4941
+ createdRowRef.current = void 0;
4942
+ const next = {
4943
+ id,
4944
+ frames: latest.current.frames,
4945
+ selected: opts.selected ?? []
4946
+ };
4947
+ activeRef.current = next;
4948
+ setActive(next);
4949
+ }), [runtime, settle]);
4950
+ const onSelectRow = React.useCallback((row) => {
4951
+ const field = wiring.valueField;
4952
+ const value = field === "id" ? row.id : row[field];
4953
+ if (typeof value !== "string" && typeof value !== "number") return;
4954
+ settle({
4955
+ kind: "selected",
4956
+ keys: [value],
4957
+ rows: [project(row)]
4958
+ });
4959
+ }, [
4960
+ wiring.valueField,
4961
+ settle,
4962
+ project
4963
+ ]);
4964
+ const onDone = React.useCallback(() => {
4965
+ const keys = activeRef.current?.selected ?? [];
4966
+ const rows = keys.flatMap((key) => {
4967
+ const row = rowsRef.current.get(String(key));
4968
+ return row === void 0 ? [] : [project(row)];
4969
+ });
4970
+ settle({
4971
+ kind: "selected",
4972
+ keys,
4973
+ rows
4974
+ });
4975
+ }, [settle, project]);
4976
+ const onOpenChange = React.useCallback((next) => {
4977
+ if (!next) settle({
4978
+ kind: "cancelled",
4979
+ reason: "dismissed"
4980
+ });
4981
+ }, [settle]);
4982
+ return {
4983
+ open,
4984
+ element: jsx(PickerHost, {
4985
+ register,
4986
+ children: active === null || held ? null : jsxs(RecordScopeChain, {
4987
+ frames: active.frames,
4988
+ children: [jsx(LazyRelationPickerDialog, {
4989
+ to: target,
4990
+ open: true,
4991
+ onOpenChange,
4992
+ onSelect: noop,
4993
+ onSelectRow,
4994
+ valueField: wiring.valueField,
4995
+ ...selection.fixedFilters === void 0 ? {} : { fixedFilters: selection.fixedFilters },
4996
+ scope,
4997
+ ...fieldName === void 0 ? {} : { scopeField: fieldName },
4998
+ ...options.create === void 0 ? {} : {
4999
+ create,
5000
+ ...options.create.seeds === void 0 ? {} : { createSeeds: options.create.seeds }
5001
+ },
5002
+ fieldName: fieldName ?? target,
5003
+ ...multiple ? {
5004
+ multiple: true,
5005
+ selected: active.selected,
5006
+ onToggle: (value, row) => toggle(value, row),
5007
+ onDone
5008
+ } : {}
5009
+ }), wiring.reader]
5010
+ }, active.id)
5011
+ })
5012
+ };
5013
+ }
5014
+ //#endregion
4504
5015
  //#region src/forms/declarative-display.tsx
4505
5016
  function DeclarativeDisplay(props) {
4506
5017
  return jsx(ScreenStateProvider, { children: jsx(DisplayBody, { ...props }) });
@@ -4556,7 +5067,7 @@ function EnumDisplay$1({ enumName, value, variant = "badge", testid, className }
4556
5067
  children: value
4557
5068
  });
4558
5069
  const entry = values?.find((v) => v.value === value);
4559
- const label = entry === void 0 && def?.fallback ? resolveContentSlot(caps, [enumFallbackKey(ns)], { default: def.fallback.label }) ?? value : resolveEnumLabel(caps, ns, value, entry?.label);
5070
+ const label = entry === void 0 && (def?.fallback !== void 0 || enumFallbackText(def) !== void 0) ? resolveContentSlot(caps, [enumFallbackKey(ns)], { default: enumFallbackText(def) }) ?? value : resolveEnumLabel(caps, ns, value, enumValueText(def, value) ?? entry?.label);
4560
5071
  const icon = entry?.icon;
4561
5072
  if (variant === "icon-label") return jsxs("span", {
4562
5073
  "data-testid": id,
@@ -4876,7 +5387,11 @@ const OPERATOR_LABELS = {
4876
5387
  null: "is null",
4877
5388
  nnull: "is not null",
4878
5389
  startswith: "starts with",
4879
- endswith: "ends with"
5390
+ endswith: "ends with",
5391
+ has: "has",
5392
+ hasAny: "has any of",
5393
+ hasAll: "has all of",
5394
+ hasNone: "has none of"
4880
5395
  };
4881
5396
  function formatOperatorLabel(op, t) {
4882
5397
  return t ? t(`filters.operators.${op}`, { defaultValue: OPERATOR_LABELS[op] }) : OPERATOR_LABELS[op];
@@ -5198,6 +5713,7 @@ function PeekByKey({ target, by }) {
5198
5713
  page: 1,
5199
5714
  pageSize: 2
5200
5715
  },
5716
+ scope: "none",
5201
5717
  enabled: by.key !== "",
5202
5718
  retry: false
5203
5719
  });
@@ -5521,7 +6037,7 @@ function DefaultPeekBody({ target, testid, row, open }) {
5521
6037
  className: "flex min-w-0 items-baseline gap-2 text-sm",
5522
6038
  children: [jsx("dt", {
5523
6039
  className: "w-24 shrink-0 truncate text-xs text-muted-foreground",
5524
- children: resolveFieldLabel(caps, name, field?.label)
6040
+ children: resolveFieldLabel(caps, name, declaredText("field", field, "label"))
5525
6041
  }), jsx("dd", {
5526
6042
  className: "min-w-0 break-words",
5527
6043
  children: jsx(ResolvedFieldDisplay, {
@@ -5542,6 +6058,12 @@ function DefaultPeekBody({ target, testid, row, open }) {
5542
6058
  //#region src/quick/quick-body.tsx
5543
6059
  const EMPTY_ROUTE = Object.freeze({});
5544
6060
  function QuickBody({ entry }) {
6061
+ return jsx(RecordScopeChain, {
6062
+ frames: entry.scopeFrames ?? NO_RECORD_SCOPE_FRAMES,
6063
+ children: jsx(QuickBodyOf, { entry })
6064
+ });
6065
+ }
6066
+ function QuickBodyOf({ entry }) {
5545
6067
  if (entry.mode === "create") return jsx(QuickScreenOf, {
5546
6068
  entry,
5547
6069
  route: EMPTY_ROUTE
@@ -6361,6 +6883,6 @@ function ScopeSwitcher({ options, value, onChange, label, extra, placeholder })
6361
6883
  const PACKAGE_NAME = "@burojs/ui-shadcn";
6362
6884
  const PACKAGE_VERSION = "0.0.0";
6363
6885
  //#endregion
6364
- export { ActionButton, ActionOverflow, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AppActions, AppFlowButton, AppHeader, AppLayout, AppShell, AppSidebar, AuthPage, Avatar, AvatarFallback, AvatarImage, Badge, BooleanDisplay, BooleanInput, BrandMark, Breadcrumbs, BulkActionToolbar, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CheckConfirmDialog, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnsToggle, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandPalette, CommandPaletteActionsGroup, CommandPaletteCreateGroup, CommandPaletteDocsGroup, CommandPaletteNavigationGroups, CommandPaletteRecentGroup, CommandPaletteRecordsGroup, CommandPaletteTrigger, CommandSeparator, ContextPicker, CopyId, CreateButton, CursorLoadMore, DEFAULT_LANGUAGE, DEFAULT_LANGUAGE_STORAGE_KEY, DataTable, DataTableDateRangeFilter, DataTableEnumFilter, DataTableFacetedFilter, DataTableNumRangeFilter, DataTableOperatorFilter, DataTableRowActions, DataTableTextFilter, DataTableToolbar, DataTableViewOptions, DateDisplay, DateInput, DeclarativeDisplay, DeclarativeForm, DefaultCommandPalette, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPresentationHost, DialogPresentationShell, DialogTitle, DialogTrigger, DisabledAction, DocBrowser, DocInfo, DocPanel, DocTrailHelp, DocumentTitleProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENUM_PICKER_CLEAR_SENTINEL, EditPageHeader, EnumBadge, EnumDisplay, EnumInput, EnumPicker, EnumDisplay$1 as EnumValueDisplay, ExportButton, ExportDialog, Field, FieldDisplay, FileDisplay, FileField, FileInput, FilterBadges, FilterBuilder, FilterPanel, FilterRegion, FilterValueControl, FlowActionButton, Form, FormActions, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HeaderBreadcrumbs, HelpButton, Icon, Input, Label, LanguageSubmenu, LanguageSwitch, LinkComponentProvider, ListBody, ListBulkBar, ListColumns, ListControls, ListCreate, ListErrorState, ListExport, ListFilters, ListFlows, ListLive, ListSavedViews, ListSearchInput, LoginForm, NavAreaLayout, NavAreaPage, NavChrome, NavChromeBoundaryProvider, NavMain, NavigationGuardDialog, NumberDisplay, NumberInput, PACKAGE_NAME, PACKAGE_VERSION, PageHeader, PinnedFilterControls, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPresentationHost, PopoverTrigger, Progress, RecordActions, RecordBreadcrumbs, RecordPage, RecordScreen, RecordTitle, RefreshButton, RelationDisplay, RelationField, RelationManyDisplay, RelationPicker, LazyRelationPickerDialog as RelationPickerDialog, RelationPickerInput, ResourceList, ResourceListPage, ResourcePageRouter, SavedViewsDropdown, ScopeSwitcher, SecondarySidebarLayout, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPresentationHost, SheetPresentationShell, SheetTitle, SheetTrigger, ShellProvider, ShowPageHeader, Sidebar, SidebarBrand, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, THEME_CHOICES, THEME_STORAGE_KEY, Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLayout, TabsList, TabsTrigger, TaskRunPanel, TextDisplay, TextInput, Textarea, TextareaDisplay, TextareaInput, ThemeSubmenu, ThemeToggle, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserMenu, badgeVariants, buildNavItems, buroSortingToTanStack, buttonVariants, cn, defaultNavLayouts, defaultUserMapper, downloadArtifact, formatOperatorLabel, hasIcon, i18nPrefixToRef, isImage, layoutSlot, listSlot, loadLanguage, loadLocale, localeLabel, modeForSurface, recordDisplayName, registerIcons, relationLinkClassName, resolveNavIcon, resolveUpdater, saveLanguage, saveLocale, shadcnBlockImplementations, shadcnFieldImplementations, shadcnPresentationHosts, spacing, tanStackSortingToBuro, toast, typography, useBuroDataTable, useCurrentUser, useDialogFilterState, useDocumentTitle, useExportRunWatcher, useFormControl, useFormField, useHref, useIsMobile, useLanguagePaletteActions, useLanguageSwitch, useLayout, useLayoutResolver, useLinkComponent, useListSlot, useMatch, useNavChromeBoundary, useNavIcon, useNavTree, useNavVisible, useOptionalSidebar, usePaletteState, usePresentationCopy, useShell, useSidebar, useTheme, useThemePaletteActions, wrapperEnabled };
6886
+ export { ActionButton, ActionOverflow, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AppActions, AppFlowButton, AppHeader, AppLayout, AppShell, AppSidebar, AuthPage, Avatar, AvatarFallback, AvatarImage, Badge, BooleanDisplay, BooleanInput, BrandMark, Breadcrumbs, BulkActionToolbar, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CheckConfirmDialog, Checkbox, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnsToggle, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandPalette, CommandPaletteActionsGroup, CommandPaletteCreateGroup, CommandPaletteDocsGroup, CommandPaletteNavigationGroups, CommandPaletteRecentGroup, CommandPaletteRecordsGroup, CommandPaletteTrigger, CommandSeparator, ContextPicker, CopyId, CreateButton, CursorLoadMore, DEFAULT_LANGUAGE_STORAGE_KEY, DataTable, DataTableDateRangeFilter, DataTableEnumFilter, DataTableFacetedFilter, DataTableNumRangeFilter, DataTableOperatorFilter, DataTableRowActions, DataTableTextFilter, DataTableToolbar, DataTableViewOptions, DateDisplay, DateInput, DeclarativeDisplay, DeclarativeForm, DefaultCommandPalette, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogPresentationHost, DialogPresentationShell, DialogTitle, DialogTrigger, DisabledAction, DocBrowser, DocInfo, DocPanel, DocTrailHelp, DocumentTitleProvider, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENUM_PICKER_CLEAR_SENTINEL, EditPageHeader, EnumBadge, EnumDisplay, EnumInput, EnumPicker, EnumDisplay$1 as EnumValueDisplay, ExportButton, ExportDialog, Field, FieldDisplay, FileDisplay, FileField, FileInput, FilterBadges, FilterBuilder, FilterPanel, FilterRegion, FilterValueControl, FlowActionButton, Form, FormActions, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, HeaderBreadcrumbs, HelpButton, Icon, Input, Label, LanguageSubmenu, LanguageSwitch, LinkComponentProvider, LinkKeysDisplay, ListBody, ListBulkBar, ListColumns, ListControls, ListCreate, ListErrorState, ListExport, ListFilters, ListFlows, ListLive, ListSavedViews, ListSearchInput, LoginForm, NavAreaLayout, NavAreaPage, NavChrome, NavChromeBoundaryProvider, NavMain, NavigationGuardDialog, NumberDisplay, NumberInput, PACKAGE_NAME, PACKAGE_VERSION, PageHeader, PinnedFilterControls, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverPresentationHost, PopoverTrigger, Progress, RecordActions, RecordBreadcrumbs, RecordPage, RecordScreen, RecordTitle, RefreshButton, RelationDisplay, RelationField, RelationManyDisplay, RelationPicker, LazyRelationPickerDialog as RelationPickerDialog, RelationPickerInput, ResourceList, ResourceListPage, ResourcePageRouter, SavedViewsDropdown, ScopeSwitcher, SecondarySidebarLayout, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetPresentationHost, SheetPresentationShell, SheetTitle, SheetTrigger, ShellProvider, ShowPageHeader, Sidebar, SidebarBrand, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, THEME_CHOICES, THEME_STORAGE_KEY, Table, TableBody, TableCaption, TableCell, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsLayout, TabsList, TabsTrigger, TaskRunPanel, TextDisplay, TextInput, Textarea, TextareaDisplay, TextareaInput, ThemeSubmenu, ThemeToggle, Toaster, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, UserMenu, badgeVariants, buildNavItems, buroSortingToTanStack, buttonVariants, cn, defaultNavLayouts, defaultUserMapper, downloadArtifact, formatOperatorLabel, hasIcon, i18nPrefixToRef, isImage, layoutSlot, listSlot, loadLocale, localeLabel, modeForSurface, recordDisplayName, registerIcons, relationLinkClassName, resolveNavIcon, resolveUpdater, saveLocale, shadcnBlockImplementations, shadcnFieldImplementations, shadcnPresentationHosts, spacing, tanStackSortingToBuro, toast, typography, useBuroDataTable, useCurrentUser, useDialogFilterState, useDocumentTitle, useExportRunWatcher, useFormControl, useFormField, useHref, useIsMobile, useLanguagePaletteActions, useLanguageSwitch, useLayout, useLayoutResolver, useLinkComponent, useListSlot, useMatch, useNavChromeBoundary, useNavIcon, useNavTree, useNavVisible, useOptionalSidebar, usePaletteState, usePresentationCopy, useRelationPicker, useShell, useSidebar, useTheme, useThemePaletteActions, wrapperEnabled };
6365
6887
 
6366
6888
  //# sourceMappingURL=index.js.map