@burojs/ui-shadcn 0.6.0 → 0.8.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.
- package/README.md +9 -0
- package/dist/bulk-summary-2HLgz7Il.cjs +169 -0
- package/dist/bulk-summary-2HLgz7Il.cjs.map +1 -0
- package/dist/bulk-summary-D6A0ua21.js +169 -0
- package/dist/bulk-summary-D6A0ua21.js.map +1 -0
- package/dist/{candidates-relation-picker-Cy0rTxvI.cjs → candidates-relation-picker-C47mF260.cjs} +4 -4
- package/dist/{candidates-relation-picker-Cy0rTxvI.cjs.map → candidates-relation-picker-C47mF260.cjs.map} +1 -1
- package/dist/{candidates-relation-picker-B116Bmqi.js → candidates-relation-picker-CGXItMN0.js} +3 -3
- package/dist/{candidates-relation-picker-B116Bmqi.js.map → candidates-relation-picker-CGXItMN0.js.map} +1 -1
- package/dist/{check-confirm-dialog--gPFnEeg.cjs → check-confirm-dialog-BT04Mieo.cjs} +475 -107
- package/dist/check-confirm-dialog-BT04Mieo.cjs.map +1 -0
- package/dist/{check-confirm-dialog-bRT8lt0d.js → check-confirm-dialog-CtiRzOAt.js} +391 -108
- package/dist/check-confirm-dialog-CtiRzOAt.js.map +1 -0
- package/dist/{dialog-B_rt9S1c.js → dialog-C123sVQ8.js} +4 -4
- package/dist/dialog-C123sVQ8.js.map +1 -0
- package/dist/{dialog-DRNUq9EA.cjs → dialog-vmMdfUWs.cjs} +3 -3
- package/dist/dialog-vmMdfUWs.cjs.map +1 -0
- package/dist/{filter-builder-nXqtM_h4.cjs → filter-builder-ByGhxLf_.cjs} +1021 -154
- package/dist/filter-builder-ByGhxLf_.cjs.map +1 -0
- package/dist/{filter-builder-Bhn-dhZV.js → filter-builder-z3Axzf9Y.js} +929 -140
- package/dist/filter-builder-z3Axzf9Y.js.map +1 -0
- package/dist/{flow-runtime-D3avVH0I.cjs → flow-runtime-BVFjMU5-.cjs} +64 -29
- package/dist/flow-runtime-BVFjMU5-.cjs.map +1 -0
- package/dist/{flow-runtime-s6lkRPKF.js → flow-runtime-DrUWyTS0.js} +65 -30
- package/dist/flow-runtime-DrUWyTS0.js.map +1 -0
- package/dist/{flow-screen-CCvgDI9G.js → flow-screen-3fk6J33y.js} +130 -87
- package/dist/flow-screen-3fk6J33y.js.map +1 -0
- package/dist/{flow-screen-Ci_Sik4Y.cjs → flow-screen-6y5E_HT6.cjs} +130 -87
- package/dist/flow-screen-6y5E_HT6.cjs.map +1 -0
- package/dist/index.cjs +1186 -950
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +631 -322
- package/dist/index.d.ts +631 -322
- package/dist/index.js +1100 -870
- package/dist/index.js.map +1 -1
- package/dist/{inline-flow-host-DV1et3c6.cjs → inline-flow-host-C4KmZIYE.cjs} +5 -5
- package/dist/inline-flow-host-C4KmZIYE.cjs.map +1 -0
- package/dist/{inline-flow-host-B6FI0ctQ.js → inline-flow-host-YnnvWjdU.js} +5 -5
- package/dist/inline-flow-host-YnnvWjdU.js.map +1 -0
- package/dist/{candidates-gate-D33jXLHO.cjs → lazy-relation-picker-dialog-BAKBRn3V.cjs} +10 -10
- package/dist/lazy-relation-picker-dialog-BAKBRn3V.cjs.map +1 -0
- package/dist/{candidates-gate-Bb70LPAy.js → lazy-relation-picker-dialog-DN4bvQfg.js} +11 -11
- package/dist/lazy-relation-picker-dialog-DN4bvQfg.js.map +1 -0
- package/dist/{page-flow-route-i3ZfJ1sd.js → page-flow-route-CtEfqAvU.js} +35 -23
- package/dist/page-flow-route-CtEfqAvU.js.map +1 -0
- package/dist/{page-flow-route-hdnULWqd.cjs → page-flow-route-DEjAxHe3.cjs} +42 -30
- package/dist/page-flow-route-DEjAxHe3.cjs.map +1 -0
- package/dist/{place-node-NraNYKPx.js → place-node-BdxT-30h.js} +1980 -1041
- package/dist/place-node-BdxT-30h.js.map +1 -0
- package/dist/{place-node-C5SmIAYU.cjs → place-node-Bhl8B3fF.cjs} +2038 -1087
- package/dist/place-node-Bhl8B3fF.cjs.map +1 -0
- package/dist/{related-list-cards-CFq3meUn.cjs → related-list-cards-Bc_vfCE_.cjs} +9 -4
- package/dist/{related-list-cards-CFq3meUn.cjs.map → related-list-cards-Bc_vfCE_.cjs.map} +1 -1
- package/dist/{related-list-cards-BWZ9GfOG.js → related-list-cards-BvkD5OcC.js} +9 -4
- package/dist/{related-list-cards-BWZ9GfOG.js.map → related-list-cards-BvkD5OcC.js.map} +1 -1
- package/dist/related-list-timeline-DCrwN9oO.js +167 -0
- package/dist/related-list-timeline-DCrwN9oO.js.map +1 -0
- package/dist/related-list-timeline-k0DtnxTs.cjs +167 -0
- package/dist/related-list-timeline-k0DtnxTs.cjs.map +1 -0
- package/dist/{related-rows-ea43qhhy.cjs → related-rows-BW9Jr07T.cjs} +27 -16
- package/dist/related-rows-BW9Jr07T.cjs.map +1 -0
- package/dist/{related-rows-o0_t-Yce.js → related-rows-CPE-9FFr.js} +25 -14
- package/dist/related-rows-CPE-9FFr.js.map +1 -0
- package/dist/{search-access-CPPmfuvy.js → relation-create-C43cdPQt.js} +595 -13
- package/dist/relation-create-C43cdPQt.js.map +1 -0
- package/dist/{search-access-Dugvttlg.cjs → relation-create-DDEYcKfw.cjs} +633 -14
- package/dist/relation-create-DDEYcKfw.cjs.map +1 -0
- package/dist/{relation-many-picker-bvkjkv-k.js → relation-many-picker-BlrGRwMV.js} +210 -104
- package/dist/relation-many-picker-BlrGRwMV.js.map +1 -0
- package/dist/{relation-many-picker-C8zFEjwd.cjs → relation-many-picker-Br-zBHxT.cjs} +218 -112
- package/dist/relation-many-picker-Br-zBHxT.cjs.map +1 -0
- package/dist/{relation-picker-gag0qSR5.cjs → relation-picker-ADjxI_TI.cjs} +36 -73
- package/dist/relation-picker-ADjxI_TI.cjs.map +1 -0
- package/dist/{relation-picker-dialog-B6nIiJBf.js → relation-picker-dialog-CyKliBkN.js} +134 -36
- package/dist/relation-picker-dialog-CyKliBkN.js.map +1 -0
- package/dist/{relation-picker-dialog-0IzkjmiA.cjs → relation-picker-dialog-DimVQF9Y.cjs} +133 -35
- package/dist/relation-picker-dialog-DimVQF9Y.cjs.map +1 -0
- package/dist/{relation-picker-Z0ZJJ5uS.js → relation-picker-x7P5HKie.js} +30 -61
- package/dist/relation-picker-x7P5HKie.js.map +1 -0
- package/dist/relation-select-B8Fq4o-t.js +48 -0
- package/dist/relation-select-B8Fq4o-t.js.map +1 -0
- package/dist/relation-select-Cr3CfNLy.cjs +55 -0
- package/dist/relation-select-Cr3CfNLy.cjs.map +1 -0
- package/dist/{resource-page-router-3RUf9d1j.js → resource-page-router-BRpUnhay.js} +634 -264
- package/dist/resource-page-router-BRpUnhay.js.map +1 -0
- package/dist/{resource-page-router-PXfMW9nh.cjs → resource-page-router-qEd2xb55.cjs} +694 -312
- package/dist/resource-page-router-qEd2xb55.cjs.map +1 -0
- package/dist/{rich-text-vTyVjDoa.cjs → rich-text-C_7JCvRo.cjs} +2 -2
- package/dist/{rich-text-vTyVjDoa.cjs.map → rich-text-C_7JCvRo.cjs.map} +1 -1
- package/dist/{rich-text-DFerywgz.js → rich-text-RcPBf6hr.js} +2 -2
- package/dist/{rich-text-DFerywgz.js.map → rich-text-RcPBf6hr.js.map} +1 -1
- package/dist/success-notices-Dl3M1fZP.cjs +46 -0
- package/dist/success-notices-Dl3M1fZP.cjs.map +1 -0
- package/dist/success-notices-LDEgEkc4.js +41 -0
- package/dist/success-notices-LDEgEkc4.js.map +1 -0
- package/dist/{toaster-Cr51X7bz.cjs → toaster-BbByOytP.cjs} +60 -15
- package/dist/toaster-BbByOytP.cjs.map +1 -0
- package/dist/{toaster-C02XbB9r.js → toaster-Ct_YHGs6.js} +43 -16
- package/dist/toaster-Ct_YHGs6.js.map +1 -0
- package/dist/{use-dialog-filter-state-C--oMAZG.js → use-dialog-filter-state-B_MqzHaT.js} +5 -4
- package/dist/use-dialog-filter-state-B_MqzHaT.js.map +1 -0
- package/dist/{use-dialog-filter-state-Dhe8PcB5.cjs → use-dialog-filter-state-tNvqAAjh.cjs} +6 -5
- package/dist/use-dialog-filter-state-tNvqAAjh.cjs.map +1 -0
- package/dist/use-record-subtitle-bfwIoUme.cjs +70 -0
- package/dist/use-record-subtitle-bfwIoUme.cjs.map +1 -0
- package/dist/use-record-subtitle-gIaCGgbI.js +53 -0
- package/dist/use-record-subtitle-gIaCGgbI.js.map +1 -0
- package/package.json +11 -11
- package/dist/bulk-summary-CwSd6Yjb.cjs +0 -108
- package/dist/bulk-summary-CwSd6Yjb.cjs.map +0 -1
- package/dist/bulk-summary-GxMDP4bw.js +0 -108
- package/dist/bulk-summary-GxMDP4bw.js.map +0 -1
- package/dist/candidates-gate-Bb70LPAy.js.map +0 -1
- package/dist/candidates-gate-D33jXLHO.cjs.map +0 -1
- package/dist/check-confirm-dialog--gPFnEeg.cjs.map +0 -1
- package/dist/check-confirm-dialog-bRT8lt0d.js.map +0 -1
- package/dist/dialog-B_rt9S1c.js.map +0 -1
- package/dist/dialog-DRNUq9EA.cjs.map +0 -1
- package/dist/filter-builder-Bhn-dhZV.js.map +0 -1
- package/dist/filter-builder-nXqtM_h4.cjs.map +0 -1
- package/dist/flow-runtime-D3avVH0I.cjs.map +0 -1
- package/dist/flow-runtime-s6lkRPKF.js.map +0 -1
- package/dist/flow-screen-CCvgDI9G.js.map +0 -1
- package/dist/flow-screen-Ci_Sik4Y.cjs.map +0 -1
- package/dist/inline-flow-host-B6FI0ctQ.js.map +0 -1
- package/dist/inline-flow-host-DV1et3c6.cjs.map +0 -1
- package/dist/page-flow-route-hdnULWqd.cjs.map +0 -1
- package/dist/page-flow-route-i3ZfJ1sd.js.map +0 -1
- package/dist/place-node-C5SmIAYU.cjs.map +0 -1
- package/dist/place-node-NraNYKPx.js.map +0 -1
- package/dist/related-list-timeline-CCzl71aA.cjs +0 -142
- package/dist/related-list-timeline-CCzl71aA.cjs.map +0 -1
- package/dist/related-list-timeline-yrPsjA3F.js +0 -142
- package/dist/related-list-timeline-yrPsjA3F.js.map +0 -1
- package/dist/related-rows-ea43qhhy.cjs.map +0 -1
- package/dist/related-rows-o0_t-Yce.js.map +0 -1
- package/dist/relation-create-IA40t1hi.cjs +0 -364
- package/dist/relation-create-IA40t1hi.cjs.map +0 -1
- package/dist/relation-create-h6F9B4C4.js +0 -339
- package/dist/relation-create-h6F9B4C4.js.map +0 -1
- package/dist/relation-many-picker-C8zFEjwd.cjs.map +0 -1
- package/dist/relation-many-picker-bvkjkv-k.js.map +0 -1
- package/dist/relation-picker-Z0ZJJ5uS.js.map +0 -1
- package/dist/relation-picker-dialog-0IzkjmiA.cjs.map +0 -1
- package/dist/relation-picker-dialog-B6nIiJBf.js.map +0 -1
- package/dist/relation-picker-gag0qSR5.cjs.map +0 -1
- package/dist/resource-page-router-3RUf9d1j.js.map +0 -1
- package/dist/resource-page-router-PXfMW9nh.cjs.map +0 -1
- package/dist/search-access-CPPmfuvy.js.map +0 -1
- package/dist/search-access-Dugvttlg.cjs.map +0 -1
- package/dist/shell-BPlk8hEa.js +0 -205
- package/dist/shell-BPlk8hEa.js.map +0 -1
- package/dist/shell-DxhlsPwm.cjs +0 -271
- package/dist/shell-DxhlsPwm.cjs.map +0 -1
- package/dist/toaster-C02XbB9r.js.map +0 -1
- package/dist/toaster-Cr51X7bz.cjs.map +0 -1
- package/dist/use-dialog-filter-state-C--oMAZG.js.map +0 -1
- package/dist/use-dialog-filter-state-Dhe8PcB5.cjs.map +0 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { t as THEME_STORAGE_KEY } from "./theme-storage-key-pYlp4aDS.cjs";
|
|
2
|
+
import { webPlatform } from "@burojs/react/web";
|
|
2
3
|
import * as React$1 from "react";
|
|
3
|
-
import { AnchorHTMLAttributes,
|
|
4
|
-
import { ActionDensity, AnyFrameHandle, AppRuntime, AuthResult, Check, CheckSurface, CustomPageDef, DraftOption, EntityRef, ErasedResourceHandle, ExportArtifact, ExportTarget, FieldDeclaration, FilterExpression, FilterGroup, FilterOperator, FixedFilterInput, FormBody, FrameHandle, HrefOpts, I18nCaps, NavGroupDef, NavNode, PortableValue, RelationCandidate, RelationOpen, ResolvedFixedFilter, ResourceDef, ResourceFieldMap, ResourceHandle, RouteMatch, SavedViewDef, ScopeSource, ScreenMode, ScreenSources, SearchDecl, SectionDef, SortExpression, StandardSchemaV1, TaskRunReport, UiSettingsIssue,
|
|
5
|
-
import { BlockImplementationCatalog, CheckGateState, CollectionDisplayProps, CollectionInputProps, DEFAULT_LANGUAGE_STORAGE_KEY, FieldBinding, FieldImplementation, FieldImplementationLayout, FieldPresentation, FilterFieldSpec, FilterKind, FormValues, QuickSettledRow, RowRecord, SavedViewEntry, ScalarDisplayProps, ScalarInputProps, UIPresentationHostProps, UIPresentationHosts, UseFormControllerFormOptions, modeForSurface } from "@burojs/react";
|
|
4
|
+
import { AnchorHTMLAttributes, ComponentType, JSX, ReactElement, ReactNode, SVGProps } from "react";
|
|
5
|
+
import { ActionDensity, AnyFrameHandle, AppRuntime, AuthResult, Check, CheckSurface, CustomPageDef, DraftOption, EntityRef, EnumControl, EnumNameOrRef, ErasedResourceHandle, ExportArtifact, ExportTarget, FieldDeclaration, FieldStatus, FieldZone, FilterExpression, FilterGroup, FilterOperator, FixedFilterInput, FormBody, FrameHandle, HrefOpts, I18nCaps, NavGroupDef, NavNode, PortableValue, RecordId, RecordTitleContext, RelationCandidate, RelationOpen, ResolvedColumnUi, ResolvedFixedFilter, ResourceDef, ResourceFieldMap, ResourceHandle, ResourceHandleOf, ResourceNameArg, ResourceNameOrRef, ResourceRefArg, RouteMatch, SavedViewDef, ScopeSource, ScreenMode, ScreenSources, SearchDecl, SectionDef, SortExpression, StandardSchemaV1, TaskRunReport, UiSettingsIssue, UiSurface, ValidationIssues, i18nPrefixToRef } from "@burojs/core";
|
|
6
|
+
import { BlockImplementationCatalog, CheckGateState, CollectionDisplayProps, CollectionInputProps, DEFAULT_LANGUAGE_STORAGE_KEY, EnumUseSite, FieldBinding, FieldImplementation, FieldImplementationLayout, FieldLinkState, FieldPresentation, FilterFieldSpec, FilterKind, FormSubmitContext, FormValues, ListOptionFilter, QuickSettledRow, RowRecord, SavedViewEntry, ScalarDisplayProps, ScalarInputProps, UIPresentationHostProps, UIPresentationHosts, UseFormControllerFormOptions, modeForSurface } from "@burojs/react";
|
|
6
7
|
import { ToasterProps as ToasterProps$1, toast } from "sonner";
|
|
7
8
|
import { z } from "zod";
|
|
8
9
|
import { isImage } from "@burojs/file-storage";
|
|
@@ -353,7 +354,10 @@ declare function useLayout(key: string): NavLayout | undefined;
|
|
|
353
354
|
/**
|
|
354
355
|
* Non-hook-in-loop layout lookup: read the Components registry once, return a
|
|
355
356
|
* resolver `(key) => NavLayout | undefined`. Lets `NavChrome` resolve a
|
|
356
|
-
* variable-length group chain without violating Rules of Hooks.
|
|
357
|
+
* variable-length group chain without violating Rules of Hooks. The registry
|
|
358
|
+
* (`layout.<key>`) wins; the built-ins (`secondary-sidebar`, `tabs`) are the
|
|
359
|
+
* fallback, so they work without registration. `flat` and `collapsible` resolve
|
|
360
|
+
* to nothing: they are main-sidebar-only groupings.
|
|
357
361
|
*/
|
|
358
362
|
declare function useLayoutResolver(): (key: string) => NavLayout | undefined;
|
|
359
363
|
//#endregion
|
|
@@ -417,44 +421,19 @@ interface NavChromeProps {
|
|
|
417
421
|
/**
|
|
418
422
|
* Wrap the active page in its group-chain chrome. Walks `match.groupChain`
|
|
419
423
|
* innermost→outermost, wrapping the accumulating content in each group's
|
|
420
|
-
*
|
|
421
|
-
*
|
|
422
|
-
*
|
|
424
|
+
* content layout (secondary-sidebar / tabs). Groups whose layout has no
|
|
425
|
+
* content renderer (flat / collapsible — main-sidebar only) contribute no
|
|
426
|
+
* wrapping. No match → children bare (`/login`, a host's own routes).
|
|
427
|
+
*
|
|
428
|
+
* Mount it ONCE in the persistent layout, around whatever the router renders —
|
|
429
|
+
* `AppShell` does this by default. Moving within an area keeps the outer layout
|
|
430
|
+
* element at the same type and position, so React reconciles it in place: the
|
|
431
|
+
* secondary sidebar stays the same DOM node and only its active item changes.
|
|
432
|
+
* Output depends only on the registry, the adapter's pathname and i18n — no
|
|
433
|
+
* effect decides it, so it renders on the server as on the client.
|
|
423
434
|
*/
|
|
424
435
|
declare function NavChrome({ children, entryFilter, icons }: NavChromeProps): ReactElement;
|
|
425
436
|
//#endregion
|
|
426
|
-
//#region src/layout/nav-chrome-boundary.d.ts
|
|
427
|
-
declare function useNavChromeBoundary(): ReadonlySet<string>;
|
|
428
|
-
/**
|
|
429
|
-
* Merge `claim` into the ancestor boundary set and provide it downward. Nested
|
|
430
|
-
* NavAreaLayouts compose: each adds its own group (+ ancestors) to the set.
|
|
431
|
-
*/
|
|
432
|
-
declare function NavChromeBoundaryProvider({ claim, children }: {
|
|
433
|
-
claim: readonly string[];
|
|
434
|
-
children: ReactNode;
|
|
435
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
436
|
-
//#endregion
|
|
437
|
-
//#region src/layout/nav-area-layout.d.ts
|
|
438
|
-
interface NavAreaLayoutProps {
|
|
439
|
-
groupName: string;
|
|
440
|
-
children: ReactNode;
|
|
441
|
-
entryFilter?: (node: {
|
|
442
|
-
name: string;
|
|
443
|
-
}) => boolean;
|
|
444
|
-
icons?: BuildNavItemsArgs['icons'];
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* Persistent chrome for ONE group, meant to be rendered from a Next
|
|
448
|
-
* `layout.tsx` (so it reconciles across navigations within the area instead of
|
|
449
|
-
* remounting like the page does). Renders the group's registered content layout
|
|
450
|
-
* (active-state from the current match — the layout re-renders on navigation
|
|
451
|
-
* but does not remount, so internal state is preserved), and CLAIMS the group
|
|
452
|
-
* (+ its ancestors) in `NavChromeBoundary` so the descendant page `NavChrome`
|
|
453
|
-
* skips it (no double render). `chromeOn:'list'` groups still collapse on a
|
|
454
|
-
* resource detail action; the boundary claim holds regardless.
|
|
455
|
-
*/
|
|
456
|
-
declare function NavAreaLayout({ groupName, children, entryFilter, icons }: NavAreaLayoutProps): ReactElement;
|
|
457
|
-
//#endregion
|
|
458
437
|
//#region src/layout/resource-page-router.d.ts
|
|
459
438
|
interface ResourcePageRouterProps {
|
|
460
439
|
match: RouteMatch;
|
|
@@ -483,9 +462,11 @@ interface ResourcePageRouterProps {
|
|
|
483
462
|
*/
|
|
484
463
|
declare function ResourcePageRouter({ match }: ResourcePageRouterProps): ReactElement;
|
|
485
464
|
/**
|
|
486
|
-
*
|
|
487
|
-
*
|
|
488
|
-
*
|
|
465
|
+
* The page a host mounts: resolves the active route (`useMatch`, from the
|
|
466
|
+
* router adapter) and dispatches to the right framework component via
|
|
467
|
+
* `ResourcePageRouter`. Content only — the group-chain chrome (`NavChrome`)
|
|
468
|
+
* lives in the persistent layout around it (`AppShell` mounts it), so it
|
|
469
|
+
* survives navigation while this page remounts. No match → a not-found panel;
|
|
489
470
|
* no router adapter at all → the same panel, and in development one
|
|
490
471
|
* `console.error` naming `RouterAdapterProvider` (once per app), because
|
|
491
472
|
* then EVERY route is not-found. Wrapped in a `Suspense` boundary so a
|
|
@@ -502,12 +483,13 @@ declare function NavAreaPage(): ReactElement;
|
|
|
502
483
|
* `defaults` exists on `create` only: show and edit render the record as it
|
|
503
484
|
* is, so the type refuses it there rather than ignoring it.
|
|
504
485
|
*/
|
|
505
|
-
type RecordPageProps = {
|
|
506
|
-
|
|
486
|
+
type RecordPageProps<N extends string = string> = {
|
|
487
|
+
/** A name checked against the registered resources, or the entity ref. */
|
|
488
|
+
readonly resource?: ResourceNameOrRef<N>;
|
|
507
489
|
readonly action: Exclude<ScreenMode, 'create'>;
|
|
508
490
|
readonly defaults?: never;
|
|
509
491
|
} | {
|
|
510
|
-
readonly resource?:
|
|
492
|
+
readonly resource?: ResourceNameOrRef<N>;
|
|
511
493
|
readonly action?: Extract<ScreenMode, 'create'>;
|
|
512
494
|
/**
|
|
513
495
|
* The caller's tier of starting values, above each field's declared
|
|
@@ -528,37 +510,102 @@ type RecordPageProps = {
|
|
|
528
510
|
* `<ResourcePageRouter>` renders the record route itself; a different layout is a frame on the
|
|
529
511
|
* screen (`views.<mode>.frame`), never a replaced route (P6-56).
|
|
530
512
|
*/
|
|
531
|
-
declare function RecordPage(props: RecordPageProps): ReactElement;
|
|
513
|
+
declare function RecordPage<const N extends string = string>(props: RecordPageProps<N>): ReactElement;
|
|
532
514
|
//#endregion
|
|
533
|
-
//#region src/layout/
|
|
515
|
+
//#region src/layout/breadcrumbs.d.ts
|
|
516
|
+
/** A crumb; `jump` makes its click start a fresh trail (`useOriginIntent`), as a group link does. */
|
|
517
|
+
type Segment = {
|
|
518
|
+
label: string;
|
|
519
|
+
href?: string;
|
|
520
|
+
jump?: boolean;
|
|
521
|
+
};
|
|
522
|
+
interface BreadcrumbsBaseProps {
|
|
523
|
+
className?: string;
|
|
524
|
+
/**
|
|
525
|
+
* Scopes the trail offers help for, outermost first. Defaults to the resource
|
|
526
|
+
* this breadcrumb is rooted at (none for a trail without a resource).
|
|
527
|
+
*/
|
|
528
|
+
docScopes?: string[];
|
|
529
|
+
/**
|
|
530
|
+
* Segments rendered before the resource segment (or before the page label in
|
|
531
|
+
* a trail without one), each followed by a chevron — the group chain. A
|
|
532
|
+
* segment with an `href` renders as a link; without one, as muted text.
|
|
533
|
+
*/
|
|
534
|
+
leadingSegments?: Segment[];
|
|
535
|
+
/** Optional testid forwarded to the root nav. */
|
|
536
|
+
'data-testid'?: string;
|
|
537
|
+
}
|
|
538
|
+
/** A trail that ends at, or passes through, a resource: its list link, then the record. */
|
|
539
|
+
interface ResourceBreadcrumbsProps<N extends string = string> extends BreadcrumbsBaseProps {
|
|
540
|
+
/** Resource name (the registry key), checked against the registered resources; or its entity ref. */
|
|
541
|
+
resource: ResourceNameOrRef<N>;
|
|
542
|
+
name?: never;
|
|
543
|
+
/** Identifier for the current page (testid only); a record id on show/edit pages. */
|
|
544
|
+
recordId?: string;
|
|
545
|
+
/**
|
|
546
|
+
* Display label for the trailing segment (the current page). When omitted
|
|
547
|
+
* the resource segment itself is the current crumb (a list page).
|
|
548
|
+
*/
|
|
549
|
+
pageLabel?: string;
|
|
550
|
+
/**
|
|
551
|
+
* Segments rendered between the resource link and the trailing page label —
|
|
552
|
+
* the record on an edit page («Documents › live-one › Edit»). A segment
|
|
553
|
+
* without `href` renders as plain text.
|
|
554
|
+
*/
|
|
555
|
+
middleSegments?: Segment[];
|
|
556
|
+
/**
|
|
557
|
+
* Where the resource crumb links instead of the list's canonical address: the list as the user
|
|
558
|
+
* had it, filters and page included (a record page reached from it, navigation origin).
|
|
559
|
+
*/
|
|
560
|
+
resourceHref?: string;
|
|
561
|
+
/**
|
|
562
|
+
* Segments that replace the leading segments and the resource crumb: the trail of the page the
|
|
563
|
+
* user came from when it is not this resource's list (a parent record's card). `middleSegments`
|
|
564
|
+
* are not drawn with them.
|
|
565
|
+
*/
|
|
566
|
+
rootSegments?: Segment[];
|
|
567
|
+
}
|
|
568
|
+
/** A trail with no resource segment: a custom page or a group index. */
|
|
569
|
+
interface PageBreadcrumbsProps extends BreadcrumbsBaseProps {
|
|
570
|
+
resource?: never;
|
|
571
|
+
/** The test-id name of the current crumb: the custom page's or the group's key. */
|
|
572
|
+
name: string;
|
|
573
|
+
/** The current page's label, the trail's last crumb. */
|
|
574
|
+
pageLabel: string;
|
|
575
|
+
recordId?: never;
|
|
576
|
+
middleSegments?: never;
|
|
577
|
+
resourceHref?: never;
|
|
578
|
+
rootSegments?: never;
|
|
579
|
+
}
|
|
580
|
+
type BreadcrumbsProps<N extends string = string> = ResourceBreadcrumbsProps<N> | PageBreadcrumbsProps;
|
|
534
581
|
/**
|
|
535
|
-
* The
|
|
536
|
-
*
|
|
537
|
-
*
|
|
538
|
-
*
|
|
539
|
-
*
|
|
540
|
-
*
|
|
541
|
-
*
|
|
542
|
-
* has failed, or is not mounted at all.
|
|
543
|
-
*
|
|
544
|
-
* On a page-hosted flow's route: the record's edit-shaped trail ending with the
|
|
545
|
-
* flow's label, once the flow page shows its form or its "not available"
|
|
546
|
-
* notice; until then, and on every not-found it answers with, the record's
|
|
547
|
-
* show trail with the id, so a flow the user may not run is never named. A
|
|
548
|
-
* name no flow answers to is the framework 404, with no trail.
|
|
549
|
-
*
|
|
550
|
-
* Nothing on any other route.
|
|
582
|
+
* The navigation breadcrumb, in two shapes. With `resource`: the leading
|
|
583
|
+
* segments, the resource (a link to its canonical, nesting-aware list href,
|
|
584
|
+
* or the current crumb on a bare list), the middle segments and the page
|
|
585
|
+
* label. Without: the leading segments and the page label only, test ids
|
|
586
|
+
* named by `name`. The last crumb is always the "you are here" marker — an
|
|
587
|
+
* emphasised, non-linked span with `aria-current="page"`. Every crumb carries
|
|
588
|
+
* its label as a `title` tooltip, so a truncated one can still be read.
|
|
551
589
|
*/
|
|
590
|
+
declare function Breadcrumbs<const N extends string = string>(input: BreadcrumbsProps<N>): ReactElement | null;
|
|
591
|
+
//#endregion
|
|
592
|
+
//#region src/layout/record-breadcrumbs.d.ts
|
|
552
593
|
declare function RecordBreadcrumbs(): ReactElement | null;
|
|
553
594
|
//#endregion
|
|
554
595
|
//#region src/record/record-screen.d.ts
|
|
555
596
|
type AnyResourceHandle$1 = ResourceHandle<any, any, any, any>;
|
|
556
|
-
interface RecordScreenProps {
|
|
557
|
-
/**
|
|
558
|
-
|
|
597
|
+
interface RecordScreenProps<N extends string = string> {
|
|
598
|
+
/**
|
|
599
|
+
* The resource: its name (checked against the registered resources), its handle or its entity
|
|
600
|
+
* ref `{ namespace, id }`.
|
|
601
|
+
*/
|
|
602
|
+
readonly resource: ResourceNameArg<N> | AnyResourceHandle$1 | EntityRef;
|
|
559
603
|
readonly mode: 'show' | 'edit' | 'create';
|
|
560
|
-
/**
|
|
561
|
-
|
|
604
|
+
/**
|
|
605
|
+
* The record to read and write (show, edit), as its id field types it: a number for a numeric id
|
|
606
|
+
* field. Not needed when `record` is given.
|
|
607
|
+
*/
|
|
608
|
+
readonly recordId?: RecordId;
|
|
562
609
|
/**
|
|
563
610
|
* The accepted type of a typed create. Without a router, changing it remounts the form for the
|
|
564
611
|
* new type and discards unsaved input without asking for confirmation.
|
|
@@ -574,8 +621,12 @@ interface RecordScreenProps {
|
|
|
574
621
|
* (the form is dirty); any other key is dropped. Not a default, never trusted.
|
|
575
622
|
*/
|
|
576
623
|
readonly input?: Readonly<Record<string, unknown>>;
|
|
577
|
-
/**
|
|
578
|
-
|
|
624
|
+
/**
|
|
625
|
+
* Replaces the built-in update or create; receives the payload (the record's columns) and, as
|
|
626
|
+
* `context.links`, each inline link field's keys to add and remove; `context.idempotencyKey` and
|
|
627
|
+
* `context.resend` name the attempt (a resend of an unknown write keeps its key).
|
|
628
|
+
*/
|
|
629
|
+
readonly onSubmit?: (payload: Record<string, unknown>, context: FormSubmitContext) => Promise<unknown>;
|
|
579
630
|
/** Called after a successful submit with what the write returned. */
|
|
580
631
|
readonly onSuccess?: (result: unknown) => void;
|
|
581
632
|
/** Replaces Cancel's default back navigation. */
|
|
@@ -597,7 +648,7 @@ interface RecordScreenProps {
|
|
|
597
648
|
* `record` is given; writes with the resource's update or create unless
|
|
598
649
|
* `onSubmit` is given. A resource the app does not know renders not-found.
|
|
599
650
|
*/
|
|
600
|
-
declare function RecordScreen(props: RecordScreenProps): ReactElement;
|
|
651
|
+
declare function RecordScreen<const N extends string = string>(props: RecordScreenProps<N>): ReactElement;
|
|
601
652
|
//#endregion
|
|
602
653
|
//#region src/record/frame-pieces.d.ts
|
|
603
654
|
/**
|
|
@@ -622,11 +673,16 @@ declare const CopyId: () => ReactElement | null;
|
|
|
622
673
|
declare const FormActions: () => ReactElement | null;
|
|
623
674
|
//#endregion
|
|
624
675
|
//#region src/layout/default-nav-layouts.d.ts
|
|
625
|
-
/**
|
|
676
|
+
/**
|
|
677
|
+
* The built-in content-wrapping layouts as a Components-registry table.
|
|
678
|
+
*
|
|
679
|
+
* Optional: `secondary-sidebar` and `tabs` resolve without it. Spread it into
|
|
680
|
+
* `BuroProvider`'s `components` only to wrap or re-register the built-ins.
|
|
681
|
+
*/
|
|
626
682
|
declare const defaultNavLayouts: Record<string, NavLayout>;
|
|
627
683
|
//#endregion
|
|
628
684
|
//#region src/layout/context-picker.d.ts
|
|
629
|
-
interface
|
|
685
|
+
interface ContextPickerBase {
|
|
630
686
|
/**
|
|
631
687
|
* Slice name (also used in testid). Free-form — playground uses 'company',
|
|
632
688
|
* 'productGroup', 'location' etc.
|
|
@@ -638,8 +694,6 @@ interface ContextPickerProps {
|
|
|
638
694
|
value: string;
|
|
639
695
|
label: string;
|
|
640
696
|
}>;
|
|
641
|
-
value: string | null;
|
|
642
|
-
onChange: (value: string) => void;
|
|
643
697
|
placeholder?: string;
|
|
644
698
|
disabled?: boolean;
|
|
645
699
|
className?: string;
|
|
@@ -654,6 +708,19 @@ interface ContextPickerProps {
|
|
|
654
708
|
*/
|
|
655
709
|
hideLabel?: boolean;
|
|
656
710
|
}
|
|
711
|
+
type ContextPickerProps = (ContextPickerBase & {
|
|
712
|
+
allOption?: undefined;
|
|
713
|
+
value: string | null;
|
|
714
|
+
onChange: (value: string) => void;
|
|
715
|
+
}) | (ContextPickerBase & {
|
|
716
|
+
/**
|
|
717
|
+
* Adds an "All" item first: `true` labels it with the `scope.all` chrome string, a string
|
|
718
|
+
* is the label. `value: null` selects it and `onChange` receives `null` for it.
|
|
719
|
+
*/
|
|
720
|
+
allOption: true | string;
|
|
721
|
+
value: string | null;
|
|
722
|
+
onChange: (value: string | null) => void;
|
|
723
|
+
});
|
|
657
724
|
/**
|
|
658
725
|
* Generic context picker — a labeled dropdown that drives a slice value.
|
|
659
726
|
* Used in the sidebar / header to switch company, product group, location, etc.
|
|
@@ -661,7 +728,24 @@ interface ContextPickerProps {
|
|
|
661
728
|
* The component is presentational. Consumers wire it to whatever store they
|
|
662
729
|
* use (auth context, buro context engine, or local state).
|
|
663
730
|
*/
|
|
664
|
-
declare function ContextPicker({ sliceName, label, options, value, onChange, placeholder, disabled, className, hideLabel }: ContextPickerProps): React.ReactElement;
|
|
731
|
+
declare function ContextPicker({ sliceName, label, options, value, onChange, placeholder, disabled, className, hideLabel, allOption }: ContextPickerProps): React.ReactElement;
|
|
732
|
+
//#endregion
|
|
733
|
+
//#region src/layout/scope-dimension-picker.d.ts
|
|
734
|
+
interface ScopeDimensionPickerProps {
|
|
735
|
+
/** A key of `defineScope(...)`. */
|
|
736
|
+
dimension: string;
|
|
737
|
+
/** Falls back to `humanizeKey(dimension)`. */
|
|
738
|
+
label?: string;
|
|
739
|
+
hideLabel?: boolean;
|
|
740
|
+
className?: string;
|
|
741
|
+
}
|
|
742
|
+
/**
|
|
743
|
+
* The control for one scope dimension (read-scope spec 7c.3): the dimension's values as options,
|
|
744
|
+
* "All" first (nothing selected means everything allowed), writing `useScope().select`. A
|
|
745
|
+
* selection change, never a transition: no cache is cleared and nothing in flight is cancelled.
|
|
746
|
+
* Renders nothing for `select: 'none'`.
|
|
747
|
+
*/
|
|
748
|
+
declare function ScopeDimensionPicker(props: ScopeDimensionPickerProps): React.ReactElement | null;
|
|
665
749
|
//#endregion
|
|
666
750
|
//#region src/layout/use-theme.d.ts
|
|
667
751
|
/** What the user picked. `'system'` means "no explicit choice" — nothing is
|
|
@@ -747,68 +831,6 @@ declare function loadLocale(storageKey?: string): string | undefined;
|
|
|
747
831
|
/** Persist a locale code. Counterpart to {@link loadLocale}. */
|
|
748
832
|
declare function saveLocale(code: string, storageKey?: string): void;
|
|
749
833
|
//#endregion
|
|
750
|
-
//#region src/layout/breadcrumbs.d.ts
|
|
751
|
-
type Segment = {
|
|
752
|
-
label: string;
|
|
753
|
-
href?: string;
|
|
754
|
-
};
|
|
755
|
-
interface BreadcrumbsBaseProps {
|
|
756
|
-
className?: string;
|
|
757
|
-
/**
|
|
758
|
-
* Scopes the trail offers help for, outermost first. Defaults to the resource
|
|
759
|
-
* this breadcrumb is rooted at (none for a trail without a resource).
|
|
760
|
-
*/
|
|
761
|
-
docScopes?: string[];
|
|
762
|
-
/**
|
|
763
|
-
* Segments rendered before the resource segment (or before the page label in
|
|
764
|
-
* a trail without one), each followed by a chevron — the group chain. A
|
|
765
|
-
* segment with an `href` renders as a link; without one, as muted text.
|
|
766
|
-
*/
|
|
767
|
-
leadingSegments?: Segment[];
|
|
768
|
-
/** Optional testid forwarded to the root nav. */
|
|
769
|
-
'data-testid'?: string;
|
|
770
|
-
}
|
|
771
|
-
/** A trail that ends at, or passes through, a resource: its list link, then the record. */
|
|
772
|
-
interface ResourceBreadcrumbsProps extends BreadcrumbsBaseProps {
|
|
773
|
-
/** Resource name (the registry key). */
|
|
774
|
-
resource: string;
|
|
775
|
-
name?: never;
|
|
776
|
-
/** Identifier for the current page (testid only); a record id on show/edit pages. */
|
|
777
|
-
recordId?: string;
|
|
778
|
-
/**
|
|
779
|
-
* Display label for the trailing segment (the current page). When omitted
|
|
780
|
-
* the resource segment itself is the current crumb (a list page).
|
|
781
|
-
*/
|
|
782
|
-
pageLabel?: string;
|
|
783
|
-
/**
|
|
784
|
-
* Segments rendered between the resource link and the trailing page label —
|
|
785
|
-
* the record on an edit page («Documents › live-one › Edit»). A segment
|
|
786
|
-
* without `href` renders as plain text.
|
|
787
|
-
*/
|
|
788
|
-
middleSegments?: Segment[];
|
|
789
|
-
}
|
|
790
|
-
/** A trail with no resource segment: a custom page or a group index. */
|
|
791
|
-
interface PageBreadcrumbsProps extends BreadcrumbsBaseProps {
|
|
792
|
-
resource?: never;
|
|
793
|
-
/** The test-id name of the current crumb: the custom page's or the group's key. */
|
|
794
|
-
name: string;
|
|
795
|
-
/** The current page's label, the trail's last crumb. */
|
|
796
|
-
pageLabel: string;
|
|
797
|
-
recordId?: never;
|
|
798
|
-
middleSegments?: never;
|
|
799
|
-
}
|
|
800
|
-
type BreadcrumbsProps = ResourceBreadcrumbsProps | PageBreadcrumbsProps;
|
|
801
|
-
/**
|
|
802
|
-
* The navigation breadcrumb, in two shapes. With `resource`: the leading
|
|
803
|
-
* segments, the resource (a link to its canonical, nesting-aware list href,
|
|
804
|
-
* or the current crumb on a bare list), the middle segments and the page
|
|
805
|
-
* label. Without: the leading segments and the page label only, test ids
|
|
806
|
-
* named by `name`. The last crumb is always the "you are here" marker — an
|
|
807
|
-
* emphasised, non-linked span with `aria-current="page"`. Every crumb carries
|
|
808
|
-
* its label as a `title` tooltip, so a truncated one can still be read.
|
|
809
|
-
*/
|
|
810
|
-
declare function Breadcrumbs(props: BreadcrumbsProps): ReactElement | null;
|
|
811
|
-
//#endregion
|
|
812
834
|
//#region src/layout/header-breadcrumbs.d.ts
|
|
813
835
|
/**
|
|
814
836
|
* The page's one breadcrumb trail, and `<AppHeader>`'s default `breadcrumbs`:
|
|
@@ -1033,7 +1055,7 @@ interface CommandPaletteRecentGroupProps {
|
|
|
1033
1055
|
heading?: string;
|
|
1034
1056
|
/**
|
|
1035
1057
|
* Re-read trigger. When this prop changes the component re-reads
|
|
1036
|
-
*
|
|
1058
|
+
* the platform's local store (e.g. flip from `false` → `true` on palette open).
|
|
1037
1059
|
* Optional — when omitted the component reads only on mount and when
|
|
1038
1060
|
* the user changes, which is sufficient for the typical "palette
|
|
1039
1061
|
* dialog re-mounts on each open" use case.
|
|
@@ -1207,6 +1229,7 @@ interface CommandPaletteRecordsGroupProps {
|
|
|
1207
1229
|
* ```tsx
|
|
1208
1230
|
* 'use client';
|
|
1209
1231
|
* import { useCommandPalette } from '@burojs/react';
|
|
1232
|
+
* import { useGlobalShortcut } from '@burojs/react/web';
|
|
1210
1233
|
* import {
|
|
1211
1234
|
* CommandPalette,
|
|
1212
1235
|
* CommandPaletteRecordsGroup,
|
|
@@ -1214,7 +1237,8 @@ interface CommandPaletteRecordsGroupProps {
|
|
|
1214
1237
|
* } from '@burojs/ui-shadcn';
|
|
1215
1238
|
*
|
|
1216
1239
|
* function Shell() {
|
|
1217
|
-
* const { open, setOpen } = useCommandPalette();
|
|
1240
|
+
* const { open, setOpen, toggle } = useCommandPalette();
|
|
1241
|
+
* useGlobalShortcut({ key: 'k', mod: true }, toggle);
|
|
1218
1242
|
* return (
|
|
1219
1243
|
* <CommandPalette open={open} onOpenChange={setOpen}>
|
|
1220
1244
|
* <CommandPaletteRecordsGroup
|
|
@@ -1470,7 +1494,7 @@ interface CommandPaletteCreateGroupProps {
|
|
|
1470
1494
|
*
|
|
1471
1495
|
* 1. Resources with no list page (`views.list.page: false`) are
|
|
1472
1496
|
* excluded — they are reached through a parent's placement.
|
|
1473
|
-
* 2. `
|
|
1497
|
+
* 2. `useResourceVisible()` (the sidebar's predicate: its `visible(ctx)`) must return true.
|
|
1474
1498
|
* Same predicate the sidebar + navigation group use, fail-closed
|
|
1475
1499
|
* on throwing predicates. Hidden in sidebar → hidden here.
|
|
1476
1500
|
* 3. Caller-supplied `resourceFilter` (if any). Returning `false`
|
|
@@ -1731,6 +1755,27 @@ interface AuthPageProps {
|
|
|
1731
1755
|
*/
|
|
1732
1756
|
declare function AuthPage({ children, brand, footer, className }: AuthPageProps): React.ReactElement;
|
|
1733
1757
|
//#endregion
|
|
1758
|
+
//#region src/fields/object-group.d.ts
|
|
1759
|
+
/**
|
|
1760
|
+
* The input chrome of an object field (T2 5.5): a bordered group around its properties. The
|
|
1761
|
+
* shell lays the properties out in the declared layout and hands them over as `children`; the
|
|
1762
|
+
* field's own label is the leaf's, so the group is named by it.
|
|
1763
|
+
*/
|
|
1764
|
+
declare function ObjectGroupInput(props: ScalarInputProps<unknown>): ReactElement;
|
|
1765
|
+
/** The display chrome of an object field: the same group around its properties' displays. */
|
|
1766
|
+
declare function ObjectGroupDisplay(props: ScalarDisplayProps<unknown>): ReactElement;
|
|
1767
|
+
//#endregion
|
|
1768
|
+
//#region src/fields/repeater.d.ts
|
|
1769
|
+
/**
|
|
1770
|
+
* The input chrome of an array field (T2 5.5): its elements, each with move-up, move-down and
|
|
1771
|
+
* remove, and an add button. The shell supplies the elements (`renderElement`), their stable keys
|
|
1772
|
+
* and the one set of actions; the repeater only draws them. Test ids are
|
|
1773
|
+
* `<input id>:item:<n>`, `:add`, `:empty` and, per element, `:remove:<n>`, `:up:<n>`, `:down:<n>`.
|
|
1774
|
+
*/
|
|
1775
|
+
declare function RepeaterInput(props: CollectionInputProps<unknown>): ReactElement;
|
|
1776
|
+
/** The display chrome of an array field: a read-only list of its elements' displays. */
|
|
1777
|
+
declare function RepeaterDisplay(props: CollectionDisplayProps<unknown>): ReactElement;
|
|
1778
|
+
//#endregion
|
|
1734
1779
|
//#region src/fields/default-renderers.d.ts
|
|
1735
1780
|
/** Immutable, trusted shadcn implementations keyed by the compiler's UI IDs. */
|
|
1736
1781
|
declare const shadcnFieldImplementations: Readonly<{
|
|
@@ -1744,6 +1789,8 @@ declare const shadcnFieldImplementations: Readonly<{
|
|
|
1744
1789
|
dateTime: FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1745
1790
|
'date-time': FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1746
1791
|
'default:date-time': FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1792
|
+
time: FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1793
|
+
'default:time': FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1747
1794
|
enum: FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1748
1795
|
json: FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1749
1796
|
relation: Readonly<{
|
|
@@ -1753,11 +1800,23 @@ declare const shadcnFieldImplementations: Readonly<{
|
|
|
1753
1800
|
CollectionDisplay?: import("react").ComponentType<CollectionDisplayProps<unknown, Readonly<Record<string, unknown>>>> | undefined;
|
|
1754
1801
|
layout?: FieldImplementationLayout;
|
|
1755
1802
|
meta: import("@burojs/core").StandardSchemaV1<unknown, Readonly<Record<string, unknown>>>;
|
|
1803
|
+
chrome?: true;
|
|
1804
|
+
texts?: Readonly<Record<string, string>>;
|
|
1756
1805
|
}>;
|
|
1757
1806
|
richText: FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1758
1807
|
'rich-text': FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1759
1808
|
'default:rich-text': FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1760
1809
|
file: FieldImplementation<unknown, Readonly<Record<string, unknown>>>;
|
|
1810
|
+
object: Readonly<{
|
|
1811
|
+
Input: typeof ObjectGroupInput;
|
|
1812
|
+
Display: typeof ObjectGroupDisplay;
|
|
1813
|
+
chrome: true;
|
|
1814
|
+
}>;
|
|
1815
|
+
array: Readonly<{
|
|
1816
|
+
CollectionInput: typeof RepeaterInput;
|
|
1817
|
+
CollectionDisplay: typeof RepeaterDisplay;
|
|
1818
|
+
chrome: true;
|
|
1819
|
+
}>;
|
|
1761
1820
|
}>;
|
|
1762
1821
|
//#endregion
|
|
1763
1822
|
//#region src/blocks/builtins.d.ts
|
|
@@ -1768,18 +1827,33 @@ declare const shadcnFieldImplementations: Readonly<{
|
|
|
1768
1827
|
*/
|
|
1769
1828
|
declare const shadcnBlockImplementations: BlockImplementationCatalog;
|
|
1770
1829
|
//#endregion
|
|
1830
|
+
//#region src/resource/use-record-subtitle.d.ts
|
|
1831
|
+
/**
|
|
1832
|
+
* A record's second line as code declares it (REF-136): the resource's `recordSubtitle`, or a
|
|
1833
|
+
* relation field's `optionSubtitle` for that field's options. A string is the line, `null` says
|
|
1834
|
+
* there is none, `undefined` (or a blank string) leaves it to the surface.
|
|
1835
|
+
*/
|
|
1836
|
+
type RecordSubtitleFn = (record: Readonly<Record<string, unknown>>, ctx?: RecordTitleContext) => string | null | undefined;
|
|
1837
|
+
//#endregion
|
|
1771
1838
|
//#region src/fields/registry.d.ts
|
|
1772
1839
|
interface FieldRendererProps {
|
|
1773
1840
|
value: unknown;
|
|
1841
|
+
/**
|
|
1842
|
+
* The value's formatted display text (REF-117 §4.6), when the surface declares a transform and
|
|
1843
|
+
* the value is not empty. A built-in display renders it instead of its own formatting; a custom
|
|
1844
|
+
* renderer may ignore it.
|
|
1845
|
+
*/
|
|
1846
|
+
text?: string;
|
|
1774
1847
|
/** True when this renderer is reached through a collection implementation. */
|
|
1775
1848
|
multiple?: boolean;
|
|
1776
1849
|
field?: {
|
|
1777
1850
|
name: string;
|
|
1778
1851
|
meta?: Record<string, unknown>;
|
|
1779
1852
|
ui?: Record<string, unknown>;
|
|
1780
|
-
codec?: ValueCodec<unknown, unknown, unknown>;
|
|
1781
1853
|
/** The field's declared `texts`; an option's label is read from it (`fieldOptionText`). */
|
|
1782
1854
|
texts?: unknown;
|
|
1855
|
+
/** A date field's zone: an IANA name or a value source (REF-118 §4.2). */
|
|
1856
|
+
zone?: unknown;
|
|
1783
1857
|
};
|
|
1784
1858
|
options?: Array<{
|
|
1785
1859
|
value: string;
|
|
@@ -1821,11 +1895,23 @@ interface FieldInputProps {
|
|
|
1821
1895
|
relationSeeds?: Readonly<Record<string, unknown>>;
|
|
1822
1896
|
/** A relation select's extra filters from the form's `filter` function (P7 3.4). */
|
|
1823
1897
|
fixedFilters?: readonly FixedFilterInput[];
|
|
1898
|
+
/** A relation select's option subtitle, the field's `optionSubtitle` (REF-136). */
|
|
1899
|
+
optionSubtitle?: RecordSubtitleFn;
|
|
1824
1900
|
/**
|
|
1825
1901
|
* The field owner's source states, projected by what the user may view: what a relation's
|
|
1826
1902
|
* `candidates` refs are read from (P7 3.4).
|
|
1827
1903
|
*/
|
|
1828
1904
|
metaSources?: ScreenSources;
|
|
1905
|
+
/**
|
|
1906
|
+
* What a `changed` operand compares against: the form's starting values (seeded on a create).
|
|
1907
|
+
* An enum control reads its available set against them. Absent: `record`.
|
|
1908
|
+
*/
|
|
1909
|
+
baseline?: Readonly<Record<string, unknown>>;
|
|
1910
|
+
/**
|
|
1911
|
+
* An inline link field of a record form: what the user may do with it, the keys they cannot
|
|
1912
|
+
* see, and whether the form holds its keys. Only the to-many select reads it.
|
|
1913
|
+
*/
|
|
1914
|
+
link?: FieldLinkState;
|
|
1829
1915
|
id?: string;
|
|
1830
1916
|
value: unknown;
|
|
1831
1917
|
/** True when this renderer is reached through a collection implementation. */
|
|
@@ -1870,6 +1956,12 @@ interface FieldInputProps {
|
|
|
1870
1956
|
* be honored — `<RecordScreen>` already wires both together.
|
|
1871
1957
|
*/
|
|
1872
1958
|
ariaErrorMessage?: string;
|
|
1959
|
+
/**
|
|
1960
|
+
* Id of the field's label element, when the surface renders one with an id.
|
|
1961
|
+
* A control whose root is not labelable (a radio group) passes it to
|
|
1962
|
+
* `aria-labelledby`; a labelable one is already named by the label's `for`.
|
|
1963
|
+
*/
|
|
1964
|
+
ariaLabelledBy?: string;
|
|
1873
1965
|
/**
|
|
1874
1966
|
* Field metadata, mirroring `FieldRendererProps.field`. Forwarded by
|
|
1875
1967
|
* `<RecordScreen>` so renderers that depend on per-field meta (e.g.
|
|
@@ -1888,8 +1980,14 @@ interface FieldInputProps {
|
|
|
1888
1980
|
name: string;
|
|
1889
1981
|
meta?: Record<string, unknown>;
|
|
1890
1982
|
ui?: Record<string, unknown>;
|
|
1891
|
-
|
|
1983
|
+
/** A date field's zone: an IANA name or a value source (REF-118 §4.2). */
|
|
1984
|
+
zone?: unknown;
|
|
1892
1985
|
};
|
|
1986
|
+
/**
|
|
1987
|
+
* The form's live values, when the field is edited in a form. A date field whose zone is a
|
|
1988
|
+
* `ref('record', …)` reads it, so changing the zone column re-reads the box (REF-118 C5).
|
|
1989
|
+
*/
|
|
1990
|
+
values?: Readonly<Record<string, unknown>>;
|
|
1893
1991
|
/**
|
|
1894
1992
|
* Registry name of the resource this field belongs to.
|
|
1895
1993
|
*
|
|
@@ -1907,27 +2005,40 @@ interface FieldInputProps {
|
|
|
1907
2005
|
}
|
|
1908
2006
|
//#endregion
|
|
1909
2007
|
//#region src/fields/text.d.ts
|
|
1910
|
-
declare function TextDisplay({ value }: FieldRendererProps): React$1.ReactElement;
|
|
2008
|
+
declare function TextDisplay({ value, text: formatted }: FieldRendererProps): React$1.ReactElement;
|
|
1911
2009
|
declare function TextInput({ name, id, value, onChange, testid, placeholder, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage, minLength, maxLength, pattern }: FieldInputProps): React$1.ReactElement;
|
|
1912
2010
|
//#endregion
|
|
1913
2011
|
//#region src/fields/number.d.ts
|
|
1914
|
-
declare function NumberDisplay({ value, field }: FieldRendererProps): React$1.ReactElement;
|
|
2012
|
+
declare function NumberDisplay({ value, field, text }: FieldRendererProps): React$1.ReactElement;
|
|
1915
2013
|
declare function NumberInput({ name, id, value, onChange, testid, placeholder, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage, min, max }: FieldInputProps): React$1.ReactElement;
|
|
1916
2014
|
//#endregion
|
|
1917
2015
|
//#region src/fields/boolean.d.ts
|
|
1918
|
-
declare function BooleanDisplay({ value }: FieldRendererProps): React$1.ReactElement;
|
|
2016
|
+
declare function BooleanDisplay({ value, text }: FieldRendererProps): React$1.ReactElement;
|
|
1919
2017
|
declare function BooleanInput({ name, id, value, onChange, testid, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage }: FieldInputProps): React$1.ReactElement;
|
|
1920
2018
|
//#endregion
|
|
1921
2019
|
//#region src/fields/date.d.ts
|
|
1922
|
-
declare function DateDisplay(
|
|
1923
|
-
declare function DateInput(
|
|
2020
|
+
declare function DateDisplay(props: FieldRendererProps): React$1.ReactElement;
|
|
2021
|
+
declare function DateInput(props: FieldInputProps): React$1.ReactElement;
|
|
1924
2022
|
//#endregion
|
|
1925
2023
|
//#region src/fields/enum.d.ts
|
|
1926
2024
|
declare function EnumDisplay({ value, options, field, resource }: FieldRendererProps): React$1.ReactElement;
|
|
1927
|
-
|
|
2025
|
+
/**
|
|
2026
|
+
* The options-driven enum input: a field with inline options, or one bound to
|
|
2027
|
+
* an enum only through `meta.enumNamespace`. Renders the control the field
|
|
2028
|
+
* asks for (`ui.control`), else the bound enum's `control`, else a select; the
|
|
2029
|
+
* non-select controls are the shared `EnumChoiceGroup`. When the field is bound
|
|
2030
|
+
* to an enum namespace, each value's summary is read the way `EnumPicker` reads
|
|
2031
|
+
* it (`enum/<ns>/<value>`), so one enum looks the same however its field is
|
|
2032
|
+
* bound; a truly inline enum has no value docs and shows labels only.
|
|
2033
|
+
*
|
|
2034
|
+
* The field's `meta.narrow` (REF-132 §7.2) removes options here as it does on a
|
|
2035
|
+
* registered enum's picker; a current value that is not offered still shows,
|
|
2036
|
+
* first and inert (§8).
|
|
2037
|
+
*/
|
|
2038
|
+
declare function EnumInput({ name, id, value, onChange, testid, options, field, placeholder, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage, ariaLabelledBy, resource, record, values, metaSources, baseline }: FieldInputProps): React$1.ReactElement;
|
|
1928
2039
|
//#endregion
|
|
1929
2040
|
//#region src/fields/textarea.d.ts
|
|
1930
|
-
declare function TextareaDisplay({ value }: FieldRendererProps): React$1.ReactElement;
|
|
2041
|
+
declare function TextareaDisplay({ value, text: formatted }: FieldRendererProps): React$1.ReactElement;
|
|
1931
2042
|
declare function TextareaInput({ name, id, value, onChange, testid, placeholder, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage, className, onKeyDown, minLength, maxLength }: FieldInputProps & {
|
|
1932
2043
|
className?: string;
|
|
1933
2044
|
onKeyDown?: React$1.KeyboardEventHandler<HTMLTextAreaElement>;
|
|
@@ -1984,9 +2095,9 @@ declare function RelationDisplay({ value, field }: FieldRendererProps): React$1.
|
|
|
1984
2095
|
* `RelationDisplay` above), so this wrapper just shapes that `meta` object;
|
|
1985
2096
|
* `field.name` is set to `''` since standalone usage has no owning field.
|
|
1986
2097
|
*/
|
|
1987
|
-
declare function RelationField({ to, value }: {
|
|
2098
|
+
declare function RelationField<const N extends string = string>({ to: toInput, value }: {
|
|
1988
2099
|
/** Target resource name (matches `f.relation({ to: '...' })`). */
|
|
1989
|
-
to:
|
|
2100
|
+
to: ResourceNameOrRef<N>;
|
|
1990
2101
|
/** FK value to resolve, or null/undefined/'' when empty. */
|
|
1991
2102
|
value: unknown;
|
|
1992
2103
|
}): React$1.ReactElement;
|
|
@@ -2049,9 +2160,9 @@ type CandidatesGate = {
|
|
|
2049
2160
|
* - target row for `value` not found → trigger shows the raw id
|
|
2050
2161
|
* (so the operator can at least see what was stored).
|
|
2051
2162
|
*/
|
|
2052
|
-
interface RelationPickerProps {
|
|
2163
|
+
interface RelationPickerProps<N extends string = string> {
|
|
2053
2164
|
/** Target resource name (matches `f.relation({ to: '...' })`). */
|
|
2054
|
-
to:
|
|
2165
|
+
to: ResourceNameOrRef<N>;
|
|
2055
2166
|
/** Currently-selected FK value, or null/undefined when empty. */
|
|
2056
2167
|
value: string | number | null | undefined;
|
|
2057
2168
|
/** Called with the new selected id (or `by` value), or null when cleared. */
|
|
@@ -2112,6 +2223,11 @@ interface RelationPickerProps {
|
|
|
2112
2223
|
fieldName?: string;
|
|
2113
2224
|
/** The field's `ui.open` (P7 3.6): what the "view" button opens, or no button for `none`. */
|
|
2114
2225
|
open?: RelationOpen;
|
|
2226
|
+
/**
|
|
2227
|
+
* The options' second line over the target row (a relation field's `optionSubtitle`): wins over
|
|
2228
|
+
* the target's `recordSubtitle`; without either, `#<id>`.
|
|
2229
|
+
*/
|
|
2230
|
+
optionSubtitle?: RecordSubtitleFn;
|
|
2115
2231
|
/**
|
|
2116
2232
|
* The read scope of the option reads (the popover, "Advanced search" and the create hand-back).
|
|
2117
2233
|
* Default `'context'`: the record around the picker narrows its options, except by the field
|
|
@@ -2129,7 +2245,7 @@ interface RelationPickerProps {
|
|
|
2129
2245
|
/** Forwarded to the trigger button as `aria-errormessage` (WAI-ARIA 1.2). */
|
|
2130
2246
|
ariaErrorMessage?: string;
|
|
2131
2247
|
}
|
|
2132
|
-
declare function RelationPicker({ to, value, onChange, by, searchField, pageSize, clearable, placeholder, name, id, testid, fixedFilters, createSeeds, candidatesGate, rowFits, fieldName, open: openMode, scope, disabled, required, className, ariaInvalid, ariaDescribedBy, ariaErrorMessage }: RelationPickerProps): React$1.ReactElement;
|
|
2248
|
+
declare function RelationPicker<const N extends string = string>({ to: toInput, value, onChange, by, searchField, pageSize, clearable, placeholder, name, id, testid, fixedFilters, createSeeds, candidatesGate, rowFits, fieldName, open: openMode, optionSubtitle, scope, disabled, required, className, ariaInvalid, ariaDescribedBy, ariaErrorMessage }: RelationPickerProps<N>): React$1.ReactElement;
|
|
2133
2249
|
/**
|
|
2134
2250
|
* Form-field adapter wrapping `<RelationPicker>` for use as a default
|
|
2135
2251
|
* Input renderer in the field registry. Reads `field.meta.to` for the
|
|
@@ -2164,8 +2280,8 @@ interface SelectCreate {
|
|
|
2164
2280
|
* #9 — compact, and the table area is a FIXED height so paging never resizes /
|
|
2165
2281
|
* jumps the dialog; responsive down to mobile.
|
|
2166
2282
|
*/
|
|
2167
|
-
interface RelationPickerDialogProps {
|
|
2168
|
-
to:
|
|
2283
|
+
interface RelationPickerDialogProps<N extends string = string> {
|
|
2284
|
+
to: ResourceNameOrRef<N>;
|
|
2169
2285
|
open: boolean;
|
|
2170
2286
|
onOpenChange: (open: boolean) => void;
|
|
2171
2287
|
onSelect: (value: string | number) => void;
|
|
@@ -2188,8 +2304,8 @@ interface RelationPickerDialogProps {
|
|
|
2188
2304
|
*/
|
|
2189
2305
|
searchField?: string;
|
|
2190
2306
|
/**
|
|
2191
|
-
* Which field of the chosen row `onSelect` returns. Defaults to
|
|
2192
|
-
* FK relation). Set to another column (e.g. `gtin`) for "relate by a non-id
|
|
2307
|
+
* Which field of the chosen row `onSelect` returns. Defaults to the target's id
|
|
2308
|
+
* field (`data.idField`, else `id`: a normal FK relation). Set to another column (e.g. `gtin`) for "relate by a non-id
|
|
2193
2309
|
* value" pickers — the core mechanic behind the playground GTIN field.
|
|
2194
2310
|
*/
|
|
2195
2311
|
valueField?: string;
|
|
@@ -2241,18 +2357,34 @@ interface RelationPickerDialogProps {
|
|
|
2241
2357
|
* dialog with `onOpenChange(false)`, so a confirm and a dismissal can be told apart.
|
|
2242
2358
|
*/
|
|
2243
2359
|
onDone?: () => void;
|
|
2360
|
+
/**
|
|
2361
|
+
* Asked once per shown page with the keys of its rows: rows whose key is in the resolved set
|
|
2362
|
+
* are drawn checked and disabled (a link panel's already-linked targets). Until it answers the
|
|
2363
|
+
* page's rows cannot be picked and the footer says the rows are being checked; when it fails
|
|
2364
|
+
* none of them can, and the footer says so with a Retry.
|
|
2365
|
+
*/
|
|
2366
|
+
disabledKeys?: (keys: readonly (string | number)[], signal: AbortSignal) => Promise<ReadonlySet<string>>;
|
|
2367
|
+
/**
|
|
2368
|
+
* With `disabledKeys`: the footer's note for the page's disabled rows, given how many there
|
|
2369
|
+
* are (the caller says what they are, "3 already linked"). Absent: no note.
|
|
2370
|
+
*/
|
|
2371
|
+
disabledLabel?: (count: number) => React$1.ReactNode;
|
|
2244
2372
|
}
|
|
2245
|
-
declare function RelationPickerDialog({ to, open, onOpenChange, onSelect, onSelectRow, searchField, valueField, fixedFilters, scope, scopeField, create, createSeeds, fieldName, onBeforeCreate, pageSize, multiple, selected, onToggle, onDone }: RelationPickerDialogProps): React$1.ReactElement;
|
|
2246
2373
|
//#endregion
|
|
2247
2374
|
//#region src/fields/lazy-relation-picker-dialog.d.ts
|
|
2248
2375
|
/** The "Advanced search" dialog, loaded on the first open: nothing is drawn until it arrives. */
|
|
2249
|
-
declare function LazyRelationPickerDialog(props:
|
|
2376
|
+
declare function LazyRelationPickerDialog<const N extends string = string>(props: RelationPickerDialogProps<N>): ReactElement;
|
|
2250
2377
|
//#endregion
|
|
2251
2378
|
//#region src/fields/use-relation-picker.d.ts
|
|
2252
2379
|
type AnyResourceHandle = ResourceHandle<any, any, any, any>;
|
|
2253
|
-
type FieldNamesOf<R> = R extends ResourceHandle<any, infer F, any, any> ? keyof F & string : string;
|
|
2254
|
-
type UseRelationPickerOptions<R extends AnyResourceHandle | string, TSelect extends FieldNamesOf<R>> =
|
|
2255
|
-
|
|
2380
|
+
type FieldNamesOf<R> = R extends ResourceHandle<any, infer F, any, any> ? keyof F & string : R extends string ? FieldNamesOf<ResourceHandleOf<R>> : string;
|
|
2381
|
+
type UseRelationPickerOptions<R extends AnyResourceHandle | string | EntityRef, TSelect extends FieldNamesOf<R>> =
|
|
2382
|
+
/**
|
|
2383
|
+
* The target: its handle, its name (checked against the registered resources, and typing
|
|
2384
|
+
* `select` by the registered fields) or its entity ref.
|
|
2385
|
+
*/
|
|
2386
|
+
({
|
|
2387
|
+
readonly to: ResourceRefArg<R>;
|
|
2256
2388
|
readonly field?: never;
|
|
2257
2389
|
} |
|
|
2258
2390
|
/** A relation field of the surrounding record (`useOptionalRecordFrame()`): `to`, `by` and `candidates` come from its declaration. */
|
|
@@ -2274,6 +2406,10 @@ type UseRelationPickerOptions<R extends AnyResourceHandle | string, TSelect exte
|
|
|
2274
2406
|
};
|
|
2275
2407
|
/** Default 'context'. */
|
|
2276
2408
|
readonly scope?: ScopeSource;
|
|
2409
|
+
/** Rows of each shown page whose key is in the resolved set are drawn checked and disabled. */
|
|
2410
|
+
readonly disabledKeys?: (keys: readonly (string | number)[], signal: AbortSignal) => Promise<ReadonlySet<string>>;
|
|
2411
|
+
/** With `disabledKeys`: the dialog footer's note for a page's disabled rows, given their count. */
|
|
2412
|
+
readonly disabledLabel?: (count: number) => React$1.ReactNode;
|
|
2277
2413
|
};
|
|
2278
2414
|
type RelationPickerRow<TSelect extends string> = { readonly [K in TSelect]?: unknown; } & {
|
|
2279
2415
|
readonly id?: unknown;
|
|
@@ -2325,7 +2461,7 @@ interface RelationPickerHandle<TRow> {
|
|
|
2325
2461
|
* `element` once, anywhere in the caller's tree; an `open()` while it is not rendered settles
|
|
2326
2462
|
* `not-mounted`.
|
|
2327
2463
|
*/
|
|
2328
|
-
declare function useRelationPicker<R extends AnyResourceHandle | string, TSelect extends FieldNamesOf<R> = FieldNamesOf<R>>(options: UseRelationPickerOptions<R, TSelect>): RelationPickerHandle<RelationPickerRow<TSelect>>;
|
|
2464
|
+
declare function useRelationPicker<R extends AnyResourceHandle | string | EntityRef, TSelect extends FieldNamesOf<R> = FieldNamesOf<R>>(options: UseRelationPickerOptions<R, TSelect>): RelationPickerHandle<RelationPickerRow<TSelect>>;
|
|
2329
2465
|
//#endregion
|
|
2330
2466
|
//#region src/fields/use-dialog-filter-state.d.ts
|
|
2331
2467
|
/** The portable erased AST — the only shape this module deals in. */
|
|
@@ -2391,7 +2527,7 @@ interface DialogFilterState {
|
|
|
2391
2527
|
* screen real estate for a couple of always-visible facets); a modal has no
|
|
2392
2528
|
* spare real estate to spend on them.
|
|
2393
2529
|
*/
|
|
2394
|
-
declare function useDialogFilterState(
|
|
2530
|
+
declare function useDialogFilterState<const N extends string = string>(resourceInput: ResourceNameOrRef<N>, options: UseDialogFilterStateOptions): DialogFilterState;
|
|
2395
2531
|
//#endregion
|
|
2396
2532
|
//#region src/fields/file-display.d.ts
|
|
2397
2533
|
interface FileFieldProps extends FieldRendererProps {
|
|
@@ -2460,7 +2596,6 @@ type FieldLike = LegacyFieldLike & {
|
|
|
2460
2596
|
readonly ui?: object;
|
|
2461
2597
|
readonly options?: FieldDeclaration['options'];
|
|
2462
2598
|
readonly required?: boolean;
|
|
2463
|
-
readonly codec?: unknown;
|
|
2464
2599
|
};
|
|
2465
2600
|
interface ResolvedFieldDisplayProps {
|
|
2466
2601
|
readonly resource: EntityRef;
|
|
@@ -2477,17 +2612,51 @@ interface ResolvedFieldDisplayProps {
|
|
|
2477
2612
|
* `form`, so a field P5 withholds stays pending in a `meta` ref as it does everywhere else.
|
|
2478
2613
|
*/
|
|
2479
2614
|
readonly metaSources?: ScreenSources;
|
|
2615
|
+
/**
|
|
2616
|
+
* The surface the display is drawn on (REF-117 §4.13): `'display'` (the default) for record
|
|
2617
|
+
* screens, `'column'` for a table cell, `'card'` for the default card item. Its layers select
|
|
2618
|
+
* the implementation, its params and its transform.
|
|
2619
|
+
*/
|
|
2620
|
+
readonly uiSurface?: Exclude<UiSurface, 'input'>;
|
|
2621
|
+
/** A table cell's list entry, the last layer of the `column` surface. */
|
|
2622
|
+
readonly columnEntry?: {
|
|
2623
|
+
readonly display?: unknown;
|
|
2624
|
+
};
|
|
2625
|
+
/**
|
|
2626
|
+
* The object property paths the form's plan holds absent by a `when` (REF-132 1a-9,
|
|
2627
|
+
* `ScreenPlan.absentPaths`), dotted from the record root (`'head.vsd'`), at or below this field.
|
|
2628
|
+
* An object group draws no property at or below one of them. Absent: every property is drawn.
|
|
2629
|
+
*/
|
|
2630
|
+
readonly absentPaths?: readonly string[];
|
|
2631
|
+
/**
|
|
2632
|
+
* Each object path below this field whose status path rules decide (REF-131 S1,
|
|
2633
|
+
* `ScreenPlan.fieldPaths`), dotted from the record root (`'head.y'`). An object group draws an
|
|
2634
|
+
* `inactive` part not at all and any other part that is not `active` read-only. Absent: every
|
|
2635
|
+
* part follows the field.
|
|
2636
|
+
*/
|
|
2637
|
+
readonly pathStatus?: Readonly<Record<string, FieldStatus>>;
|
|
2480
2638
|
}
|
|
2481
|
-
interface ResolvedFieldInputProps extends Omit<ResolvedFieldDisplayProps, 'fallback'> {
|
|
2639
|
+
interface ResolvedFieldInputProps extends Omit<ResolvedFieldDisplayProps, 'fallback' | 'uiSurface' | 'columnEntry'> {
|
|
2482
2640
|
readonly inputId?: string;
|
|
2483
2641
|
readonly onChange: (value: unknown) => void;
|
|
2484
2642
|
/** Live form values, distinct from the edit record baseline. */
|
|
2485
2643
|
readonly form?: Readonly<Record<string, unknown>>;
|
|
2644
|
+
/**
|
|
2645
|
+
* What a `changed` operand compares against: the form controller's starting values (seeded on a
|
|
2646
|
+
* create). An enum picker reads its available set against them. Absent: `record`.
|
|
2647
|
+
*/
|
|
2648
|
+
readonly baseline?: Readonly<Record<string, unknown>>;
|
|
2486
2649
|
readonly onBlur?: () => void;
|
|
2487
2650
|
readonly disabled?: boolean;
|
|
2488
2651
|
readonly required?: boolean;
|
|
2489
2652
|
readonly placeholder?: string;
|
|
2490
2653
|
readonly descriptionId?: string;
|
|
2654
|
+
/**
|
|
2655
|
+
* Id of the label the surface renders for this field. A control that a
|
|
2656
|
+
* `<label for>` cannot name (an enum's radio group) uses it as its
|
|
2657
|
+
* `aria-labelledby`.
|
|
2658
|
+
*/
|
|
2659
|
+
readonly labelId?: string;
|
|
2491
2660
|
readonly errorId?: string;
|
|
2492
2661
|
readonly errorMessage?: string | null;
|
|
2493
2662
|
/** Current lifecycle state from the enclosing form. */
|
|
@@ -2507,6 +2676,13 @@ interface ResolvedFieldInputProps extends Omit<ResolvedFieldDisplayProps, 'fallb
|
|
|
2507
2676
|
* Never read from `field.meta`, which a layer can write.
|
|
2508
2677
|
*/
|
|
2509
2678
|
readonly fixedFilters?: readonly FixedFilterInput[];
|
|
2679
|
+
/**
|
|
2680
|
+
* A relation select's option subtitle (the field's `optionSubtitle`, REF-136): code, handed down
|
|
2681
|
+
* by the form controller on its own channel, as `fixedFilters` is.
|
|
2682
|
+
*/
|
|
2683
|
+
readonly optionSubtitle?: FieldBinding['optionSubtitle'];
|
|
2684
|
+
/** An inline link field's rights, hidden keys and load state, from the form controller. */
|
|
2685
|
+
readonly link?: FieldLinkState;
|
|
2510
2686
|
readonly fallback: ReactNode;
|
|
2511
2687
|
}
|
|
2512
2688
|
//#endregion
|
|
@@ -2549,7 +2725,7 @@ type FieldProps = Omit<ResolvedFieldInputProps, 'resource' | 'fallback'> & {
|
|
|
2549
2725
|
* wired to the field's value/onChange/disabled state.
|
|
2550
2726
|
*/
|
|
2551
2727
|
declare function Field({ resource, i18nPrefix, fallback, fixedFilters, field, doc, ...rest }: FieldProps): ReactElement;
|
|
2552
|
-
type FieldDisplayProps = Omit<ResolvedFieldDisplayProps, 'resource' | 'fallback'> & {
|
|
2728
|
+
type FieldDisplayProps = Omit<ResolvedFieldDisplayProps, 'resource' | 'fallback' | 'uiSurface' | 'columnEntry'> & {
|
|
2553
2729
|
readonly resource?: EntityRef;
|
|
2554
2730
|
readonly i18nPrefix?: string;
|
|
2555
2731
|
readonly fallback?: ReactNode;
|
|
@@ -2558,7 +2734,8 @@ type FieldDisplayProps = Omit<ResolvedFieldDisplayProps, 'resource' | 'fallback'
|
|
|
2558
2734
|
* Public, resource-independent single-field display brick over
|
|
2559
2735
|
* `ResolvedFieldDisplay`. See {@link Field} for the `resource`/`i18nPrefix`
|
|
2560
2736
|
* resolution rule. `fallback` defaults to a `<span>` rendering the value, or
|
|
2561
|
-
* an em dash when the value is empty.
|
|
2737
|
+
* an em dash when the value is empty. It draws the record screens' `display`
|
|
2738
|
+
* surface, with the field's copy action and overflow around it (REF-117 P8).
|
|
2562
2739
|
*/
|
|
2563
2740
|
declare function FieldDisplay({ resource, i18nPrefix, fallback, value, ...rest }: FieldDisplayProps): ReactElement;
|
|
2564
2741
|
//#endregion
|
|
@@ -2701,10 +2878,10 @@ interface DeclarativeDisplayProps<F extends ResourceFieldMap = ResourceFieldMap>
|
|
|
2701
2878
|
declare function DeclarativeDisplay<F extends ResourceFieldMap = ResourceFieldMap>(props: DeclarativeDisplayProps<F>): ReactElement;
|
|
2702
2879
|
//#endregion
|
|
2703
2880
|
//#region src/export/export-dialog.d.ts
|
|
2704
|
-
interface ExportDialogProps {
|
|
2881
|
+
interface ExportDialogProps<N extends string = string> {
|
|
2705
2882
|
readonly open: boolean;
|
|
2706
2883
|
readonly onOpenChange: (open: boolean) => void;
|
|
2707
|
-
readonly resource:
|
|
2884
|
+
readonly resource: ResourceNameOrRef<N>;
|
|
2708
2885
|
readonly target: ExportTarget;
|
|
2709
2886
|
/**
|
|
2710
2887
|
* The list's currently visible columns — what "as in table" (the default) sends as `request.columns`.
|
|
@@ -2733,7 +2910,7 @@ interface ExportDialogProps {
|
|
|
2733
2910
|
* menu-held dialog, deleted in P4) — this dialog
|
|
2734
2911
|
* never repeats that shape.
|
|
2735
2912
|
*/
|
|
2736
|
-
declare function ExportDialog({ open, onOpenChange, resource, target, visibleColumns, estimatedCount, scope }: ExportDialogProps): React$1.ReactElement;
|
|
2913
|
+
declare function ExportDialog<const N extends string = string>({ open, onOpenChange, resource: resourceInput, target, visibleColumns, estimatedCount, scope }: ExportDialogProps<N>): React$1.ReactElement;
|
|
2737
2914
|
//#endregion
|
|
2738
2915
|
//#region src/export/download.d.ts
|
|
2739
2916
|
/**
|
|
@@ -2756,8 +2933,8 @@ declare function ExportDialog({ open, onOpenChange, resource, target, visibleCol
|
|
|
2756
2933
|
declare function downloadArtifact(artifact: ExportArtifact): void;
|
|
2757
2934
|
//#endregion
|
|
2758
2935
|
//#region src/export/export-button.d.ts
|
|
2759
|
-
interface ExportButtonProps {
|
|
2760
|
-
resource:
|
|
2936
|
+
interface ExportButtonProps<N extends string = string> {
|
|
2937
|
+
resource: ResourceNameOrRef<N>;
|
|
2761
2938
|
className?: string;
|
|
2762
2939
|
}
|
|
2763
2940
|
/**
|
|
@@ -2787,7 +2964,7 @@ interface ExportButtonProps {
|
|
|
2787
2964
|
* of any rule. `useResourceExport` already answers the existence
|
|
2788
2965
|
* question; `useCapability` is asked ONLY about permission.
|
|
2789
2966
|
*/
|
|
2790
|
-
declare function ExportButton({ resource, className }: ExportButtonProps): React$1.ReactElement | null;
|
|
2967
|
+
declare function ExportButton<const N extends string = string>({ resource: resourceInput, className }: ExportButtonProps<N>): React$1.ReactElement | null;
|
|
2791
2968
|
//#endregion
|
|
2792
2969
|
//#region src/export/run-watcher.d.ts
|
|
2793
2970
|
/**
|
|
@@ -2816,9 +2993,12 @@ declare function ExportButton({ resource, className }: ExportButtonProps): React
|
|
|
2816
2993
|
declare function useExportRunWatcher(): void;
|
|
2817
2994
|
//#endregion
|
|
2818
2995
|
//#region src/enum/enum-badge.d.ts
|
|
2819
|
-
interface EnumBadgeProps {
|
|
2820
|
-
/**
|
|
2821
|
-
|
|
2996
|
+
interface EnumBadgeProps<N extends string = string> {
|
|
2997
|
+
/**
|
|
2998
|
+
* Name of the enum registered via `defineEnum` + `app.use(...)`, checked against the
|
|
2999
|
+
* registered enums, or its entity ref `{ namespace, id }` (untyped).
|
|
3000
|
+
*/
|
|
3001
|
+
enumName: EnumNameOrRef<N>;
|
|
2822
3002
|
/** Raw value as stored on the record. */
|
|
2823
3003
|
value: string | null | undefined;
|
|
2824
3004
|
/** Test-id override. Defaults to `enum-badge:<enumName>:<value>`. */
|
|
@@ -2847,12 +3027,13 @@ interface EnumBadgeProps {
|
|
|
2847
3027
|
* - Value is unknown AND no `fallback` declared → render the raw value
|
|
2848
3028
|
* as a plain badge (variant `outline`).
|
|
2849
3029
|
*/
|
|
2850
|
-
declare function EnumBadge({ enumName, value, testid, className, presentation }: EnumBadgeProps): React$1.ReactElement;
|
|
3030
|
+
declare function EnumBadge<const N extends string = string>({ enumName: enumInput, value, testid, className, presentation }: EnumBadgeProps<N>): React$1.ReactElement;
|
|
2851
3031
|
//#endregion
|
|
2852
3032
|
//#region src/enum/enum-display.d.ts
|
|
2853
3033
|
type EnumDisplayVariant = 'badge' | 'plain' | 'icon-label';
|
|
2854
|
-
interface EnumDisplayProps {
|
|
2855
|
-
|
|
3034
|
+
interface EnumDisplayProps<N extends string = string> {
|
|
3035
|
+
/** The enum's name, checked against the registered enums, or its entity ref `{ namespace, id }`. */
|
|
3036
|
+
enumName: EnumNameOrRef<N>;
|
|
2856
3037
|
value: string | null | undefined;
|
|
2857
3038
|
/** Display variant. Defaults to 'badge'. */
|
|
2858
3039
|
variant?: EnumDisplayVariant;
|
|
@@ -2873,10 +3054,9 @@ interface EnumDisplayProps {
|
|
|
2873
3054
|
* every variant. Unregistered enums fall back to raw value text (logged
|
|
2874
3055
|
* once via console.warn, dev-only).
|
|
2875
3056
|
*/
|
|
2876
|
-
declare function EnumDisplay$1({ enumName, value, variant, testid, className }: EnumDisplayProps): React$1.ReactElement;
|
|
3057
|
+
declare function EnumDisplay$1<const N extends string = string>({ enumName: enumInput, value, variant, testid, className }: EnumDisplayProps<N>): React$1.ReactElement;
|
|
2877
3058
|
//#endregion
|
|
2878
3059
|
//#region src/enum/enum-picker.d.ts
|
|
2879
|
-
type EnumPickerRenderAs = 'select' | 'radio' | 'segmented';
|
|
2880
3060
|
/**
|
|
2881
3061
|
* Internal sentinel used as the `value` for the "All" / clear item when
|
|
2882
3062
|
* `clearable` is set. Radix `<SelectItem value="">` is forbidden, so we use
|
|
@@ -2884,18 +3064,23 @@ type EnumPickerRenderAs = 'select' | 'radio' | 'segmented';
|
|
|
2884
3064
|
* it back to `undefined` before calling the consumer's `onChange`.
|
|
2885
3065
|
*/
|
|
2886
3066
|
declare const ENUM_PICKER_CLEAR_SENTINEL = "__buro_clear__";
|
|
2887
|
-
interface EnumPickerProps {
|
|
2888
|
-
|
|
3067
|
+
interface EnumPickerProps<N extends string = string> {
|
|
3068
|
+
/** The enum's name, checked against the registered enums, or its entity ref `{ namespace, id }`. */
|
|
3069
|
+
enumName: EnumNameOrRef<N>;
|
|
2889
3070
|
value: string | null | undefined;
|
|
2890
3071
|
/**
|
|
2891
|
-
* Called whenever the user picks an option.
|
|
2892
|
-
* the user picks the "All" item
|
|
2893
|
-
*
|
|
2894
|
-
*
|
|
3072
|
+
* Called whenever the user picks an option. `value` is `undefined` when
|
|
3073
|
+
* the user picks the select's "All" item (`clearable`) or the "None"
|
|
3074
|
+
* option of a non-required `cards` / `radio` / `segmented` control —
|
|
3075
|
+
* consumers use that to clear their state. Otherwise it is one of the
|
|
3076
|
+
* enum's declared values.
|
|
2895
3077
|
*/
|
|
2896
3078
|
onChange: (value: string | undefined) => void;
|
|
2897
|
-
/**
|
|
2898
|
-
|
|
3079
|
+
/**
|
|
3080
|
+
* The control that renders the values. Defaults to `'select'`. `cards`,
|
|
3081
|
+
* `radio` and `segmented` offer a "None" option first unless `required`.
|
|
3082
|
+
*/
|
|
3083
|
+
control?: EnumControl;
|
|
2899
3084
|
/** HTML name attribute (form integration). */
|
|
2900
3085
|
name?: string;
|
|
2901
3086
|
/** HTML id attribute. */
|
|
@@ -2912,6 +3097,12 @@ interface EnumPickerProps {
|
|
|
2912
3097
|
ariaDescribedBy?: string;
|
|
2913
3098
|
/** Current field-error element id, valid only while ariaInvalid is true. */
|
|
2914
3099
|
ariaErrorMessage?: string;
|
|
3100
|
+
/**
|
|
3101
|
+
* Id of the field's label. Names the `cards` / `radio` / `segmented` group
|
|
3102
|
+
* (`aria-labelledby`), which a `<label for>` cannot. The select trigger is a
|
|
3103
|
+
* labelable button and keeps its name from the label's `for`.
|
|
3104
|
+
*/
|
|
3105
|
+
ariaLabelledBy?: string;
|
|
2915
3106
|
className?: string;
|
|
2916
3107
|
/**
|
|
2917
3108
|
* When `true`, prepend an "All" item (label customizable via
|
|
@@ -2920,33 +3111,33 @@ interface EnumPickerProps {
|
|
|
2920
3111
|
* valid state. Defaults to `false` so existing form-input call sites
|
|
2921
3112
|
* (where the value is required) keep their old behavior.
|
|
2922
3113
|
*
|
|
2923
|
-
*
|
|
2924
|
-
*
|
|
3114
|
+
* Only honored by the `select` control. The other controls clear through
|
|
3115
|
+
* their "None" option, shown whenever `required` is not set.
|
|
2925
3116
|
*/
|
|
2926
3117
|
clearable?: boolean;
|
|
2927
3118
|
/** Label for the clear item. Defaults to "All". */
|
|
2928
3119
|
clearLabel?: string;
|
|
3120
|
+
/**
|
|
3121
|
+
* The field's use site (REF-132 §7.2): its `params`, its `narrow` and the sources they read.
|
|
3122
|
+
* Given, the picker offers only the available set (§7.6); absent, every value, as a filter
|
|
3123
|
+
* offers them. Either way a current value that is not offered still shows (§8), as a
|
|
3124
|
+
* "current" item that cannot be picked again once the user moves away.
|
|
3125
|
+
*/
|
|
3126
|
+
use?: EnumUseSite;
|
|
2929
3127
|
}
|
|
2930
3128
|
/**
|
|
2931
|
-
* Single picker primitive that renders enum values
|
|
2932
|
-
*
|
|
3129
|
+
* Single picker primitive that renders enum values with one of the
|
|
3130
|
+
* `EnumControl`s: a Select (default), bordered cards (`control='cards'`), a
|
|
3131
|
+
* compact radio list (`control='radio'`), or a segmented control
|
|
3132
|
+
* (`control='segmented'`). The three non-select controls are the shared
|
|
3133
|
+
* `EnumChoiceGroup`; this component only resolves the options (label, icon,
|
|
3134
|
+
* value summary) from the registered enum.
|
|
2933
3135
|
*
|
|
2934
3136
|
* Falls back to a disabled placeholder when the enum is not registered —
|
|
2935
3137
|
* matches the EnumBadge fallback policy: a half-shipped enum should not
|
|
2936
3138
|
* crash the form.
|
|
2937
|
-
*
|
|
2938
|
-
* The radio mode uses native HTML `<input type="radio">` rather than
|
|
2939
|
-
* pulling `@radix-ui/react-radio-group` into the bundle: the playground
|
|
2940
|
-
* doesn't need keyboard-focus arrow-key navigation in v1, and the dep
|
|
2941
|
-
* footprint is real (~6kB gzipped). If a future fire needs the richer
|
|
2942
|
-
* keyboard semantics, swap the `<input>` markup for the radix primitive
|
|
2943
|
-
* — the props API stays the same.
|
|
2944
|
-
*
|
|
2945
|
-
* Segmented mode renders a row of buttons styled like the Tabs primitive
|
|
2946
|
-
* but acts as a single-select control (one button is `aria-pressed=true`
|
|
2947
|
-
* at a time).
|
|
2948
3139
|
*/
|
|
2949
|
-
declare function EnumPicker({ enumName, value, onChange,
|
|
3140
|
+
declare function EnumPicker<const N extends string = string>({ enumName: enumInput, value, onChange, control, name, id, testid, placeholder, disabled, required, ariaInvalid, ariaDescribedBy, ariaErrorMessage, ariaLabelledBy, className, clearable, clearLabel, use }: EnumPickerProps<N>): React$1.ReactElement;
|
|
2950
3141
|
//#endregion
|
|
2951
3142
|
//#region src/primitives/button.d.ts
|
|
2952
3143
|
declare const buttonVariants: (props?: ({
|
|
@@ -2959,8 +3150,9 @@ interface ButtonProps extends React$1.ButtonHTMLAttributes<HTMLButtonElement>, V
|
|
|
2959
3150
|
declare const Button: React$1.ForwardRefExoticComponent<ButtonProps & React$1.RefAttributes<HTMLButtonElement>>;
|
|
2960
3151
|
//#endregion
|
|
2961
3152
|
//#region src/actions/action-button.d.ts
|
|
2962
|
-
interface ActionButtonProps {
|
|
2963
|
-
|
|
3153
|
+
interface ActionButtonProps<N extends string = string> {
|
|
3154
|
+
/** A name checked against the registered resources, or the entity ref. */
|
|
3155
|
+
resource: ResourceNameOrRef<N>;
|
|
2964
3156
|
actionName: string;
|
|
2965
3157
|
record?: {
|
|
2966
3158
|
id: string;
|
|
@@ -3009,6 +3201,16 @@ interface ActionButtonProps {
|
|
|
3009
3201
|
* Destructive actions get destructive item styling.
|
|
3010
3202
|
*/
|
|
3011
3203
|
asMenuItem?: boolean;
|
|
3204
|
+
/**
|
|
3205
|
+
* The sources of the screen the button is drawn on (a record screen's header or frame:
|
|
3206
|
+
* `FormController.sources`), which the action's `when` reads before its own `record`, `scope`,
|
|
3207
|
+
* `user` and `route` (T4 D9 part 4: the screen's win where both have one, except `record`,
|
|
3208
|
+
* which stays the action's own unprojected row; the action's fill the rest). The screen loads
|
|
3209
|
+
* what its item actions' `when`s read (its show and edit demand them), never waiting on it. Absent in
|
|
3210
|
+
* a record's menu: a `when` there reads the action's own four only, and a ref to any other
|
|
3211
|
+
* source leaves it undecided, which hides the action.
|
|
3212
|
+
*/
|
|
3213
|
+
sources?: ScreenSources;
|
|
3012
3214
|
}
|
|
3013
3215
|
/**
|
|
3014
3216
|
* A denial the rule asked to SHOW.
|
|
@@ -3031,7 +3233,7 @@ interface ActionButtonProps {
|
|
|
3031
3233
|
* toast-on-click behaviour, and copying it into app code would fork the one
|
|
3032
3234
|
* place accessibility for a denied action is decided.
|
|
3033
3235
|
*/
|
|
3034
|
-
interface DisabledActionProps {
|
|
3236
|
+
interface DisabledActionProps<N extends string = string> {
|
|
3035
3237
|
reason?: string;
|
|
3036
3238
|
label: React.ReactNode;
|
|
3037
3239
|
icon?: string;
|
|
@@ -3046,7 +3248,7 @@ interface DisabledActionProps {
|
|
|
3046
3248
|
* same way the record form's field-lock reason is scoped, so a resource can
|
|
3047
3249
|
* override the generic wording via `resources.<res>.<key>`.
|
|
3048
3250
|
*/
|
|
3049
|
-
resource?:
|
|
3251
|
+
resource?: ResourceNameOrRef<N>;
|
|
3050
3252
|
/**
|
|
3051
3253
|
* Density for the STANDALONE control (ignored for `asMenuItem`, which is
|
|
3052
3254
|
* always icon + label). Defaults to `'regular'`, so every caller that
|
|
@@ -3065,12 +3267,12 @@ interface DisabledActionProps {
|
|
|
3065
3267
|
/** Surface name, for the same no-icon warning key `resolveControlChrome` keys on. */
|
|
3066
3268
|
surface?: string;
|
|
3067
3269
|
}
|
|
3068
|
-
declare function DisabledAction({ reason, label, icon, testid, size, variant, className, asMenuItem, resource, density, actionName, surface }: DisabledActionProps): React.ReactElement;
|
|
3069
|
-
declare function ActionButton(
|
|
3270
|
+
declare function DisabledAction<const N extends string = string>({ reason, label, icon, testid, size, variant, className, asMenuItem, resource: resourceInput, density, actionName, surface }: DisabledActionProps<N>): React.ReactElement;
|
|
3271
|
+
declare function ActionButton<const N extends string = string>(input: ActionButtonProps<N>): React.ReactElement | null;
|
|
3070
3272
|
//#endregion
|
|
3071
3273
|
//#region src/actions/action-overflow.d.ts
|
|
3072
|
-
interface ActionOverflowProps {
|
|
3073
|
-
resource:
|
|
3274
|
+
interface ActionOverflowProps<N extends string = string> {
|
|
3275
|
+
resource: ResourceNameOrRef<N>;
|
|
3074
3276
|
record: {
|
|
3075
3277
|
id: string;
|
|
3076
3278
|
} & Record<string, unknown>;
|
|
@@ -3091,6 +3293,14 @@ interface ActionOverflowProps {
|
|
|
3091
3293
|
* control wide. Default: {@link RowActionsCollapseContext}.
|
|
3092
3294
|
*/
|
|
3093
3295
|
collapse?: boolean;
|
|
3296
|
+
/**
|
|
3297
|
+
* The sources of the screen the actions are drawn on (a record screen's header or frame:
|
|
3298
|
+
* `FormController.sources`): an action's `when` reads them besides `record` (T4 D9 part 4). The
|
|
3299
|
+
* screen loads what its item actions' `when`s read (its show and edit demand them), so a `with`
|
|
3300
|
+
* source no node reads still decides here. Absent in a record's menu (a row, an overlay's item
|
|
3301
|
+
* menu): a `when` there reads `record` only, and a ref to any other source hides the action.
|
|
3302
|
+
*/
|
|
3303
|
+
sources?: ScreenSources;
|
|
3094
3304
|
}
|
|
3095
3305
|
/**
|
|
3096
3306
|
* Collapses an entity's actions into an overflow menu so tables and detail
|
|
@@ -3109,7 +3319,7 @@ interface ActionOverflowProps {
|
|
|
3109
3319
|
* `ghost` used to strip a destructive standalone action of its destructive
|
|
3110
3320
|
* look.
|
|
3111
3321
|
*/
|
|
3112
|
-
declare function ActionOverflow({ resource, record, surface, className, hideFlows, collapse }: ActionOverflowProps): React.ReactElement | null;
|
|
3322
|
+
declare function ActionOverflow<const N extends string = string>({ resource: resourceInput, record, surface, className, hideFlows, collapse, sources }: ActionOverflowProps<N>): React.ReactElement | null;
|
|
3113
3323
|
//#endregion
|
|
3114
3324
|
//#region src/actions/action-surface.d.ts
|
|
3115
3325
|
/**
|
|
@@ -3126,8 +3336,8 @@ type ActionSurface = 'row' | 'show' | 'edit' | 'list';
|
|
|
3126
3336
|
type BulkRecord = {
|
|
3127
3337
|
id: string;
|
|
3128
3338
|
} & Record<string, unknown>;
|
|
3129
|
-
interface BulkActionToolbarProps<TRecord extends BulkRecord = BulkRecord> {
|
|
3130
|
-
resource:
|
|
3339
|
+
interface BulkActionToolbarProps<TRecord extends BulkRecord = BulkRecord, N extends string = string> {
|
|
3340
|
+
resource: ResourceNameOrRef<N>;
|
|
3131
3341
|
/**
|
|
3132
3342
|
* TanStack table instance from the surrounding `<ResourceList>`. Used only
|
|
3133
3343
|
* as a FALLBACK, for standalone call sites that have no accumulated set of
|
|
@@ -3171,12 +3381,18 @@ interface BulkActionToolbarProps<TRecord extends BulkRecord = BulkRecord> {
|
|
|
3171
3381
|
visibleColumns?: readonly string[];
|
|
3172
3382
|
/** How the built-in bulk Export reads the resource: the scope of the list the ids came from. */
|
|
3173
3383
|
scope?: ScopeSource;
|
|
3384
|
+
/**
|
|
3385
|
+
* The bar's controls in place of the resource's bulk actions and the built-in Export (a link
|
|
3386
|
+
* panel's Detach). The count and Clear stay.
|
|
3387
|
+
*/
|
|
3388
|
+
actions?: React.ReactNode;
|
|
3174
3389
|
}
|
|
3175
|
-
declare function BulkActionToolbar<TRecord extends BulkRecord = BulkRecord>({ resource, table, selectedRecords, selectedIds, onClearSelection, onSelectionChange, className, visibleColumns, scope }: BulkActionToolbarProps<TRecord>): React.ReactElement | null;
|
|
3390
|
+
declare function BulkActionToolbar<TRecord extends BulkRecord = BulkRecord, const N extends string = string>({ resource: resourceInput, table, selectedRecords, selectedIds, onClearSelection, onSelectionChange, className, visibleColumns, scope, actions }: BulkActionToolbarProps<TRecord, N>): React.ReactElement | null;
|
|
3176
3391
|
//#endregion
|
|
3177
3392
|
//#region src/flows/flow-action-button.d.ts
|
|
3178
|
-
interface FlowActionButtonProps {
|
|
3179
|
-
|
|
3393
|
+
interface FlowActionButtonProps<N extends string = string> {
|
|
3394
|
+
/** A name checked against the registered resources, or the entity ref. */
|
|
3395
|
+
readonly resource: ResourceNameOrRef<N>;
|
|
3180
3396
|
/** The flow's name in the resource's `actions`. */
|
|
3181
3397
|
readonly actionName: string;
|
|
3182
3398
|
readonly record?: {
|
|
@@ -3199,7 +3415,7 @@ interface FlowActionButtonProps {
|
|
|
3199
3415
|
* sources load then: until it has decided, the control is busy and a second click does nothing,
|
|
3200
3416
|
* so one click sends at most once.
|
|
3201
3417
|
*/
|
|
3202
|
-
declare function FlowActionButton(
|
|
3418
|
+
declare function FlowActionButton<const N extends string = string>(input: FlowActionButtonProps<N>): ReactElement | null;
|
|
3203
3419
|
//#endregion
|
|
3204
3420
|
//#region src/flows/app-flow-button.d.ts
|
|
3205
3421
|
interface AppFlowButtonProps {
|
|
@@ -3251,6 +3467,11 @@ interface CheckConfirmDialogProps {
|
|
|
3251
3467
|
* the old dialog's `confirmLabel` did.
|
|
3252
3468
|
*/
|
|
3253
3469
|
readonly proceedLabel?: ReactNode;
|
|
3470
|
+
/**
|
|
3471
|
+
* Overrides the neutral `checks.back` label on the cancelling button: a flow's own `dismiss`
|
|
3472
|
+
* ("Keep the order"), the word every cancel button of that flow says.
|
|
3473
|
+
*/
|
|
3474
|
+
readonly cancelLabel?: ReactNode;
|
|
3254
3475
|
/**
|
|
3255
3476
|
* `'destructive'` styles the confirming button destructively — restoring
|
|
3256
3477
|
* what `action.variant === 'destructive'` used to produce. Default
|
|
@@ -3271,7 +3492,7 @@ interface CheckConfirmDialogProps {
|
|
|
3271
3492
|
* is removed here too so a blocked user is never offered a button that does
|
|
3272
3493
|
* nothing.
|
|
3273
3494
|
*/
|
|
3274
|
-
declare function CheckConfirmDialog({ state, testid, onAnchorFocus, title, proceedLabel, tone }: CheckConfirmDialogProps): ReactElement;
|
|
3495
|
+
declare function CheckConfirmDialog({ state, testid, onAnchorFocus, title, proceedLabel, cancelLabel, tone }: CheckConfirmDialogProps): ReactElement;
|
|
3275
3496
|
//#endregion
|
|
3276
3497
|
//#region src/data-table/use-buro-data-table.d.ts
|
|
3277
3498
|
/**
|
|
@@ -3508,9 +3729,26 @@ interface FacetedFilterOption {
|
|
|
3508
3729
|
icon?: React.ComponentType<{
|
|
3509
3730
|
className?: string;
|
|
3510
3731
|
}>;
|
|
3732
|
+
/** Optional secondary line drawn under the label (an option filter's `doc.summary`). */
|
|
3733
|
+
summary?: string;
|
|
3511
3734
|
}
|
|
3512
|
-
|
|
3513
|
-
|
|
3735
|
+
/**
|
|
3736
|
+
* The column-free multi-select under {@link DataTableFacetedFilter}: the selection is a plain
|
|
3737
|
+
* list of option values the caller owns. Anything that is not a table column mounts it directly:
|
|
3738
|
+
* an option filter of a list (T4 D3) drives it from `filters.presets`, a scope dimension picker
|
|
3739
|
+
* from the dimension's selection.
|
|
3740
|
+
*/
|
|
3741
|
+
interface FacetedFilterPickerProps {
|
|
3742
|
+
/** The selected option values. */
|
|
3743
|
+
selected: readonly string[];
|
|
3744
|
+
/** Called with the whole next selection (empty for Clear or the last deselect). */
|
|
3745
|
+
onChange: (next: string[]) => void;
|
|
3746
|
+
/** A hint for the control: the trigger's tooltip and a line at the top of the popover. */
|
|
3747
|
+
hint?: string;
|
|
3748
|
+
/** Shown beside the title while nothing is selected, e.g. "All". */
|
|
3749
|
+
emptyLabel?: string;
|
|
3750
|
+
/** Whether the footer offers to clear the selection. Default `true`. */
|
|
3751
|
+
clearable?: boolean;
|
|
3514
3752
|
title: string;
|
|
3515
3753
|
options?: FacetedFilterOption[];
|
|
3516
3754
|
/**
|
|
@@ -3538,11 +3776,20 @@ interface DataTableFacetedFilterProps<TData, TValue> {
|
|
|
3538
3776
|
* 'search' → the cmdk search input
|
|
3539
3777
|
* 'option' → option item (value passed as second arg)
|
|
3540
3778
|
* 'clear' → the Clear-filters footer item
|
|
3779
|
+
* 'hint' → the hint line at the top of the popover
|
|
3541
3780
|
*/
|
|
3542
|
-
getTestId?: (role: 'trigger' | 'option' | 'clear' | 'search', value?: string) => string | undefined;
|
|
3781
|
+
getTestId?: (role: 'trigger' | 'option' | 'clear' | 'search' | 'hint', value?: string) => string | undefined;
|
|
3543
3782
|
className?: string;
|
|
3544
3783
|
}
|
|
3545
|
-
|
|
3784
|
+
interface DataTableFacetedFilterProps<TData, TValue> extends Omit<FacetedFilterPickerProps, 'selected' | 'onChange' | 'hint' | 'getTestId'> {
|
|
3785
|
+
column: Column<TData, TValue>;
|
|
3786
|
+
/** As `FacetedFilterPickerProps.getTestId`, without `'hint'`: a column filter has no hint. */
|
|
3787
|
+
getTestId?: (role: 'trigger' | 'option' | 'clear' | 'search', value?: string) => string | undefined;
|
|
3788
|
+
}
|
|
3789
|
+
/** A faceted filter bound to a TanStack column: the column's filter value is the selection. */
|
|
3790
|
+
declare function DataTableFacetedFilter<TData, TValue>({ column, getTestId, ...rest }: DataTableFacetedFilterProps<TData, TValue>): React.ReactElement;
|
|
3791
|
+
/** The picker behind `DataTableFacetedFilter`, controlled by a plain selection. */
|
|
3792
|
+
declare function FacetedFilterPicker({ title, options, loadOptions, selectedLabelFor, searchPlaceholder, emptyText, getTestId, className, selected: selectedList, onChange, hint, emptyLabel, clearable }: FacetedFilterPickerProps): React.ReactElement;
|
|
3546
3793
|
//#endregion
|
|
3547
3794
|
//#region src/data-table/data-table-text-filter.d.ts
|
|
3548
3795
|
/**
|
|
@@ -3694,7 +3941,7 @@ interface DataTableOperatorFilterProps<TData, TValue> {
|
|
|
3694
3941
|
* an adopter can override per-locale via composition rather than
|
|
3695
3942
|
* patching this file.
|
|
3696
3943
|
*/
|
|
3697
|
-
declare function formatOperatorLabel(op: FilterOperator,
|
|
3944
|
+
declare function formatOperatorLabel(op: FilterOperator, chromeT?: (key: string, opts?: {
|
|
3698
3945
|
defaultValue?: string;
|
|
3699
3946
|
}) => string): string;
|
|
3700
3947
|
declare function DataTableOperatorFilter<TData, TValue>({ column, operators, defaultOperator, valueKind, getTestId, className }: DataTableOperatorFilterProps<TData, TValue>): React.ReactElement;
|
|
@@ -3906,20 +4153,14 @@ declare function DataTableToolbar<TData>({ table, searchColumnId, searchPlacehol
|
|
|
3906
4153
|
* once per character. Re-syncs from the external `value` when it changes
|
|
3907
4154
|
* (deep-link / saved view / clear-all).
|
|
3908
4155
|
*/
|
|
3909
|
-
declare function ListSearchInput({ resource
|
|
3910
|
-
resource:
|
|
3911
|
-
label: string;
|
|
4156
|
+
declare function ListSearchInput<const N extends string = string>({ resource: resourceInput, value, onCommit, placeholder }: {
|
|
4157
|
+
resource: ResourceNameOrRef<N>;
|
|
3912
4158
|
value: string;
|
|
3913
4159
|
onCommit: (next: string) => void;
|
|
3914
4160
|
/**
|
|
3915
|
-
* Override the placeholder. The default
|
|
3916
|
-
*
|
|
3917
|
-
*
|
|
3918
|
-
* repo passes an explicit `placeholder` instead of relying on this
|
|
3919
|
-
* default: `<ResourceListPage>` distinguishes a declarative
|
|
3920
|
-
* `views.list.search` (names its first field) from a resolver (generic
|
|
3921
|
-
* `list.search` label, since the framework cannot know what a resolver
|
|
3922
|
-
* matches), and a `related-list` placement names its own search field.
|
|
4161
|
+
* Override the placeholder. The default is the kit's `list.search` ("Search"):
|
|
4162
|
+
* a plain word that promises nothing about HOW the query is matched and
|
|
4163
|
+
* names no field, because the framework cannot know what the search matches.
|
|
3923
4164
|
*/
|
|
3924
4165
|
placeholder?: string;
|
|
3925
4166
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -3954,8 +4195,8 @@ declare function ListSearchInput({ resource, label, value, onCommit, placeholder
|
|
|
3954
4195
|
* label "Columns" with no icon, popover `align="start" w-64 p-2`
|
|
3955
4196
|
* with no header.
|
|
3956
4197
|
*/
|
|
3957
|
-
declare function ColumnsToggle({ resource, def, allAvailable, required, visibleColumns, defaultVisible, onChange, onResetSizes, onRestoreDefaults }: {
|
|
3958
|
-
resource:
|
|
4198
|
+
declare function ColumnsToggle<const N extends string = string>({ resource: resourceInput, def, allAvailable, required, visibleColumns, defaultVisible, onChange, onResetSizes, onRestoreDefaults }: {
|
|
4199
|
+
resource: ResourceNameOrRef<N>;
|
|
3959
4200
|
def: ResourceDef;
|
|
3960
4201
|
allAvailable: string[];
|
|
3961
4202
|
required: string[];
|
|
@@ -4004,8 +4245,8 @@ declare const ListSavedViews: () => ReactElement | null;
|
|
|
4004
4245
|
type RowRecord$1 = {
|
|
4005
4246
|
id: string;
|
|
4006
4247
|
} & Record<string, unknown>;
|
|
4007
|
-
interface ResourceListProps {
|
|
4008
|
-
resource:
|
|
4248
|
+
interface ResourceListProps<N extends string = string> {
|
|
4249
|
+
resource: ResourceNameOrRef<N>;
|
|
4009
4250
|
data?: RowRecord$1[];
|
|
4010
4251
|
total?: number;
|
|
4011
4252
|
page?: number;
|
|
@@ -4059,9 +4300,11 @@ interface ResourceListProps {
|
|
|
4059
4300
|
selectable?: boolean;
|
|
4060
4301
|
/**
|
|
4061
4302
|
* The row-actions column (each row's item actions). `false` draws none: a read-only list
|
|
4062
|
-
* offers nothing to do with a row but open it.
|
|
4303
|
+
* offers nothing to do with a row but open it. A function draws its own controls in the column
|
|
4304
|
+
* instead of the item actions (a link panel's Detach); keep its identity stable, the columns
|
|
4305
|
+
* are rebuilt when it changes.
|
|
4063
4306
|
*/
|
|
4064
|
-
rowActions?: boolean;
|
|
4307
|
+
rowActions?: boolean | ((row: RowRecord$1) => React.ReactNode);
|
|
4065
4308
|
/**
|
|
4066
4309
|
* Accumulating selection owned by the caller. When provided the component
|
|
4067
4310
|
* is CONTROLLED: this is the WHOLE selected set (ids that are not on the
|
|
@@ -4099,7 +4342,12 @@ interface ResourceListProps {
|
|
|
4099
4342
|
createHref?: string;
|
|
4100
4343
|
/** Whether the list is currently filtered (changes empty-state copy). */
|
|
4101
4344
|
isFiltered?: boolean;
|
|
4102
|
-
/**
|
|
4345
|
+
/**
|
|
4346
|
+
* Called when the user clicks the "Clear filter" button in the empty state. The button is drawn
|
|
4347
|
+
* exactly when this is given: the caller decides whether there is anything to reset (a list
|
|
4348
|
+
* that starts filtered has rows narrowed and nothing to reset). `isFiltered` only picks the
|
|
4349
|
+
* wording.
|
|
4350
|
+
*/
|
|
4103
4351
|
onClearFilter?: () => void;
|
|
4104
4352
|
/**
|
|
4105
4353
|
* Replacement for the "no rows" rendering, forwarded to
|
|
@@ -4178,6 +4426,13 @@ interface ResourceListProps {
|
|
|
4178
4426
|
* honour an explicit direction and fall back to toggling when it's undefined.
|
|
4179
4427
|
*/
|
|
4180
4428
|
onSort?: (field: string, direction?: 'asc' | 'desc' | null) => void;
|
|
4429
|
+
/**
|
|
4430
|
+
* Whether a column offers sort (T4 D7). The list kit passes the controller's
|
|
4431
|
+
* `sorting.sortable`; when omitted, core's `isColumnSortable` decides — nothing sorts by
|
|
4432
|
+
* default, a field's `sort` or the app's `lists.sortable` turns a column on, and a link never
|
|
4433
|
+
* sorts. A column offers sort only when this says yes AND `onSort` is supplied.
|
|
4434
|
+
*/
|
|
4435
|
+
sortable?: (column: string) => boolean;
|
|
4181
4436
|
/**
|
|
4182
4437
|
* Hide a column from a column-header menu. Receives the column name; the
|
|
4183
4438
|
* parent removes it from the visible-columns list. When omitted, the header
|
|
@@ -4207,6 +4462,24 @@ interface ResourceListProps {
|
|
|
4207
4462
|
* `views.list.optionalColumns` / `requiredColumns`).
|
|
4208
4463
|
*/
|
|
4209
4464
|
columns?: string[];
|
|
4465
|
+
/**
|
|
4466
|
+
* Each data column's resolved presentation by name (REF-117 §4.9, P10): its width (`default`,
|
|
4467
|
+
* `min`, `max`), whether it resizes, its alignment, and its cell display (implementation,
|
|
4468
|
+
* params, transform, overflow). The list controller's `columns.ui`, which `ListBody` passes.
|
|
4469
|
+
* A column it does not cover, or every column when it is omitted (a standalone mount),
|
|
4470
|
+
* resolves here with core's `resolveColumnUi` over its field and its `views.list` entry, so
|
|
4471
|
+
* a field's `ui.column` holds either way. A width is a default, not a floor: the floor is
|
|
4472
|
+
* `min` (C13).
|
|
4473
|
+
*/
|
|
4474
|
+
columnUi?: Readonly<Record<string, ResolvedColumnUi>>;
|
|
4475
|
+
/**
|
|
4476
|
+
* Where the user's column layout (widths, order, pinning) is stored: the list id of the
|
|
4477
|
+
* `buro/table-layout` UI setting, beside the resource (REF-117 §4.10, C18). The route list passes
|
|
4478
|
+
* `'route'`, a placement `<owner resource>/<placement key path>`. A list rendered by hand passes
|
|
4479
|
+
* its own stable id to keep the layout across mounts; without one, the layout lasts for the mount.
|
|
4480
|
+
* Nothing is stored without a `UiSettingsProvider` either.
|
|
4481
|
+
*/
|
|
4482
|
+
layoutId?: string;
|
|
4210
4483
|
/**
|
|
4211
4484
|
* Optional callback that hands the parent the underlying TanStack
|
|
4212
4485
|
* `Table` instance. Fires once after the table is mounted (and
|
|
@@ -4220,7 +4493,7 @@ interface ResourceListProps {
|
|
|
4220
4493
|
*/
|
|
4221
4494
|
tableRef?: (table: Table$1<RowRecord$1> | null) => void;
|
|
4222
4495
|
}
|
|
4223
|
-
declare function ResourceList({ resource, data, total, page, pageSize, onPageSize, onRequestCount, isCountingRows, pageSizeOptions, onPage, loadMore, selectable, rowActions, selectedIds, onSelectionChange, className, isLoading, error, onRetry, createHref, isFiltered, onClearFilter, emptyState, rowsView, rowHref, rowQuick, rowLinkKey, renderCell, sort, onSort, onHideColumn, requiredColumns, resetLayout, columns: columnsOverride, tableRef }: ResourceListProps): React.ReactElement;
|
|
4496
|
+
declare function ResourceList<const N extends string = string>({ resource: resourceInput, data, total, page, pageSize, onPageSize, onRequestCount, isCountingRows, pageSizeOptions, onPage, loadMore, selectable, rowActions, selectedIds, onSelectionChange, className, isLoading, error, onRetry, createHref, isFiltered, onClearFilter, emptyState, rowsView, rowHref, rowQuick, rowLinkKey, renderCell, sort, onSort, sortable, onHideColumn, requiredColumns, resetLayout, columns: columnsOverride, columnUi, layoutId, tableRef }: ResourceListProps<N>): React.ReactElement;
|
|
4224
4497
|
//#endregion
|
|
4225
4498
|
//#region src/list-kit/cursor-load-more.d.ts
|
|
4226
4499
|
/**
|
|
@@ -4279,7 +4552,7 @@ declare function CursorLoadMore({ hasMore, loading, onMore }: CursorLoadMoreProp
|
|
|
4279
4552
|
/**
|
|
4280
4553
|
* Props of {@link ResourceListPage}.
|
|
4281
4554
|
*/
|
|
4282
|
-
interface ResourceListPageProps {
|
|
4555
|
+
interface ResourceListPageProps<N extends string = string> {
|
|
4283
4556
|
/**
|
|
4284
4557
|
* Registry name of the resource to list.
|
|
4285
4558
|
*
|
|
@@ -4289,7 +4562,7 @@ interface ResourceListPageProps {
|
|
|
4289
4562
|
* should 404 before mounting this component (the playground's
|
|
4290
4563
|
* `app/(admin)/[resource]/page.tsx` does exactly that).
|
|
4291
4564
|
*/
|
|
4292
|
-
resource:
|
|
4565
|
+
resource: ResourceNameOrRef<N>;
|
|
4293
4566
|
/**
|
|
4294
4567
|
* Extra `meta` merged into the underlying `useList` call — and therefore
|
|
4295
4568
|
* into the react-query cache key. This is the seam for app-level query
|
|
@@ -4314,10 +4587,10 @@ interface ResourceListPageProps {
|
|
|
4314
4587
|
*/
|
|
4315
4588
|
meta?: Record<string, unknown>;
|
|
4316
4589
|
/**
|
|
4317
|
-
* App-level per-cell renderer, consulted AFTER
|
|
4318
|
-
*
|
|
4319
|
-
*
|
|
4320
|
-
*
|
|
4590
|
+
* App-level per-cell renderer, consulted AFTER a typed resource's
|
|
4591
|
+
* discriminator badge and BEFORE the declared-`enum` badge and
|
|
4592
|
+
* `<ResourceList>`'s default field-type display. Return `undefined` to
|
|
4593
|
+
* fall through, exactly like `<ResourceList renderCell>`.
|
|
4321
4594
|
*
|
|
4322
4595
|
* The built-ins cover what the registry can describe on its own; this
|
|
4323
4596
|
* prop is for the rest — the playground uses it for a legacy hardcoded
|
|
@@ -4391,9 +4664,10 @@ interface ResourceListPageProps {
|
|
|
4391
4664
|
* covers:
|
|
4392
4665
|
*
|
|
4393
4666
|
* - **`list.cell.<resource>`** (level 1) is consulted for every cell, AFTER
|
|
4394
|
-
*
|
|
4395
|
-
*
|
|
4396
|
-
* display
|
|
4667
|
+
* a typed resource's discriminator badge and BEFORE the declared-`enum`
|
|
4668
|
+
* badge and `<ResourceList>`'s default field-type display (a field with
|
|
4669
|
+
* its own `ui.display` skips the enum badge) — the same position the
|
|
4670
|
+
* `renderCell` prop occupies, and the
|
|
4397
4671
|
* explicit prop wins when both are present. Everything else — filters,
|
|
4398
4672
|
* saved views, the columns menu, the table, pagination — stays standard.
|
|
4399
4673
|
* - **`list.filters.<resource>`** (level 2) replaces the filter region —
|
|
@@ -4414,13 +4688,14 @@ interface ResourceListPageProps {
|
|
|
4414
4688
|
*
|
|
4415
4689
|
* @see docs/superpowers/plans/2026-07-26-cfb3-assembled-page-slots.md — Tasks B3.1, B3.2
|
|
4416
4690
|
*/
|
|
4417
|
-
declare function ResourceListPage({ resource, meta, renderCell, emptyState }: ResourceListPageProps): import("react/jsx-runtime").JSX.Element;
|
|
4691
|
+
declare function ResourceListPage<const N extends string = string>({ resource: resourceInput, meta, renderCell, emptyState }: ResourceListPageProps<N>): import("react/jsx-runtime").JSX.Element;
|
|
4418
4692
|
//#endregion
|
|
4419
4693
|
//#region src/list-kit/filter-builder/filter-region.d.ts
|
|
4420
4694
|
/**
|
|
4421
|
-
* The default `list.filters.<resource>` content — search box,
|
|
4422
|
-
* controls, the builder popover trigger, applied-filter badges and a
|
|
4423
|
-
* "Clear
|
|
4695
|
+
* The default `list.filters.<resource>` content — search box, option
|
|
4696
|
+
* pickers, pinned controls, the builder popover trigger, applied-filter badges and a
|
|
4697
|
+
* "Clear filters" action (shown while `filters.canReset`, which returns the list to its initial
|
|
4698
|
+
* state), left to right. Props-free: like every list slot, it
|
|
4424
4699
|
* reads the live controller from `useResourceListContext()` rather than a
|
|
4425
4700
|
* prop chain, which is the SAME contract a registered
|
|
4426
4701
|
* `list.filters.<resource>` slot fulfils — an adopter that wants a
|
|
@@ -4429,7 +4704,7 @@ declare function ResourceListPage({ resource, meta, renderCell, emptyState }: Re
|
|
|
4429
4704
|
* exported) into its own region instead of forking this file.
|
|
4430
4705
|
*
|
|
4431
4706
|
* A THIN wrapper: everything that needs the list controller (the search
|
|
4432
|
-
* box, its placeholder, "Clear
|
|
4707
|
+
* box, its placeholder, "Clear filters") stays here — that's the page's
|
|
4433
4708
|
* concern, not the builder's — and everything else (the pinned controls,
|
|
4434
4709
|
* the panel, the badges, and the `open`/`focusPath`/`externalRemoval`
|
|
4435
4710
|
* wiring between them) is `<FilterBuilder>`'s job, which has no controller
|
|
@@ -4458,6 +4733,13 @@ interface FilterBuilderProps {
|
|
|
4458
4733
|
readonly pinnedFields?: readonly FilterFieldSpec[];
|
|
4459
4734
|
readonly pinnedValue?: readonly Expression$2[];
|
|
4460
4735
|
readonly setPinnedValue?: (next: readonly Expression$2[]) => void;
|
|
4736
|
+
/**
|
|
4737
|
+
* The list's option filters (`filters.presets`), drawn as faceted pickers before the pinned
|
|
4738
|
+
* controls. Absent where there are none (the relation picker's dialog).
|
|
4739
|
+
*/
|
|
4740
|
+
readonly presets?: readonly ListOptionFilter[];
|
|
4741
|
+
/** `filters.setPreset`: it resets the page itself, so no `setPage(1)` is composed here. */
|
|
4742
|
+
readonly setPreset?: (id: string, optionIds: readonly string[]) => void;
|
|
4461
4743
|
/** Apply / a pinned write / a badge × all reset to page 1, same as every other filter mutation. */
|
|
4462
4744
|
readonly setPage: (page: number) => void;
|
|
4463
4745
|
readonly testIdBase: string;
|
|
@@ -4632,33 +4914,6 @@ interface FilterBadgesProps {
|
|
|
4632
4914
|
readonly pinnedValue?: readonly Expression$1[];
|
|
4633
4915
|
readonly setPinnedValue?: (next: readonly Expression$1[]) => void;
|
|
4634
4916
|
}
|
|
4635
|
-
/**
|
|
4636
|
-
* One badge per top-level row of the APPLIED filter group, plus one per
|
|
4637
|
-
* `filters.fixed` entry that carries a `label`, plus one per PINNED-slot
|
|
4638
|
-
* expression no `pinnedFields` control claims (finding 3, see `pinnedValue`
|
|
4639
|
-
* above).
|
|
4640
|
-
*
|
|
4641
|
-
* Group-row badges have two very different click targets:
|
|
4642
|
-
* - the × removes that row and calls `setGroup` IMMEDIATELY, bypassing the
|
|
4643
|
-
* panel's draft entirely — this is a deletion, not an edit, and making
|
|
4644
|
-
* the user re-open the panel and press "Apply" to confirm a removal they
|
|
4645
|
-
* already committed to would be a broken expectation;
|
|
4646
|
-
* - the body opens the panel with `focusPath` pointing at this row, for a
|
|
4647
|
-
* user who wants to ADJUST rather than remove it. It is a real
|
|
4648
|
-
* `<button>` (finding 6 of the SP2 final review — it used to be a plain
|
|
4649
|
-
* `<div onClick>`, reachable and activatable only by mouse), so it picks
|
|
4650
|
-
* up keyboard focus, Enter/Space activation, and a browser-native
|
|
4651
|
-
* accessible name (its own text — the `describeRow` summary — same as
|
|
4652
|
-
* any other button whose label IS its content) for free. It sits beside
|
|
4653
|
-
* the × as a SIBLING, not a nested/overlapping hit target, so activating
|
|
4654
|
-
* one never also triggers the other.
|
|
4655
|
-
*
|
|
4656
|
-
* Fixed-filter badges (labelled call-site narrowing) and orphan pinned-slot
|
|
4657
|
-
* badges both render with NO body affordance: fixed badges because the
|
|
4658
|
-
* user did not add them and cannot remove them; pinned-slot badges because
|
|
4659
|
-
* there is no builder row behind them to focus — only a working × to
|
|
4660
|
-
* remove that one expression from the pinned slot.
|
|
4661
|
-
*/
|
|
4662
4917
|
declare function FilterBadges(props: FilterBadgesProps): React.ReactElement;
|
|
4663
4918
|
//#endregion
|
|
4664
4919
|
//#region src/list-kit/filter-builder/pinned-filter-controls.d.ts
|
|
@@ -4704,6 +4959,28 @@ interface PinnedFilterControlsProps {
|
|
|
4704
4959
|
*/
|
|
4705
4960
|
declare function PinnedFilterControls(props: PinnedFilterControlsProps): React.ReactElement;
|
|
4706
4961
|
//#endregion
|
|
4962
|
+
//#region src/list-kit/filter-builder/preset-filter-controls.d.ts
|
|
4963
|
+
interface PresetFilterControlsProps {
|
|
4964
|
+
/** The list's option filters (`filters.presets`). */
|
|
4965
|
+
readonly presets: readonly ListOptionFilter[];
|
|
4966
|
+
/**
|
|
4967
|
+
* `filters.setPreset`: it writes the whole selection of one filter and resets the page to 1
|
|
4968
|
+
* itself, so this component does not.
|
|
4969
|
+
*/
|
|
4970
|
+
readonly setPreset: (id: string, optionIds: readonly string[]) => void;
|
|
4971
|
+
readonly testIdBase: string;
|
|
4972
|
+
}
|
|
4973
|
+
/**
|
|
4974
|
+
* One faceted multi-select per option filter (T4 D3, D4): the filter's label is the trigger, its
|
|
4975
|
+
* `doc.summary` the hint, each option shows its label with its `doc.summary` under it. The
|
|
4976
|
+
* trigger doubles as the chip: it lists the selected options, and deselecting the last one (or
|
|
4977
|
+
* the picker's own Clear) writes an empty selection, which the URL keeps as `?<ns>.<id>=` so a
|
|
4978
|
+
* reload keeps the initial option removed.
|
|
4979
|
+
*
|
|
4980
|
+
* Test ids: `<base>:preset:<id>:trigger | :option:<optionId> | :clear | :search | :hint`.
|
|
4981
|
+
*/
|
|
4982
|
+
declare function PresetFilterControls(props: PresetFilterControlsProps): React.ReactElement;
|
|
4983
|
+
//#endregion
|
|
4707
4984
|
//#region src/list-kit/filter-builder/values/filter-value-control.d.ts
|
|
4708
4985
|
interface FilterValueControlProps {
|
|
4709
4986
|
readonly kind: FilterKind;
|
|
@@ -4723,7 +5000,9 @@ interface FilterValueControlProps {
|
|
|
4723
5000
|
*/
|
|
4724
5001
|
readonly fieldLabel?: string;
|
|
4725
5002
|
/**
|
|
4726
|
-
* Visible hint inside a text/number box (`ScalarValueInput`)
|
|
5003
|
+
* Visible hint inside a text/number box (`ScalarValueInput`), and the empty
|
|
5004
|
+
* text of a select-like trigger (enum, options, relation, boolean), whose
|
|
5005
|
+
* accessible name stays "Value for <field>". Only a caller
|
|
4727
5006
|
* that shows the control with nothing naming its field beside it passes one:
|
|
4728
5007
|
* the pinned toolbar (`PinnedFilterControls`) gives the field's label, so a
|
|
4729
5008
|
* pinned text filter is not an unlabelled empty box (REF-44). A builder row
|
|
@@ -4731,6 +5010,11 @@ interface FilterValueControlProps {
|
|
|
4731
5010
|
*/
|
|
4732
5011
|
readonly placeholder?: string;
|
|
4733
5012
|
readonly autoFocus?: boolean;
|
|
5013
|
+
/**
|
|
5014
|
+
* `FilterFieldSpec.zone`: the zone a date-time box reads and writes in, before the user's, the
|
|
5015
|
+
* app's and the host's (REF-118 §4.2). Other kinds ignore it.
|
|
5016
|
+
*/
|
|
5017
|
+
readonly zone?: FieldZone;
|
|
4734
5018
|
/**
|
|
4735
5019
|
* Delay (ms) before a scalar single-value edit (`ScalarValueInput`'s
|
|
4736
5020
|
* text/number/date box) commits upward. Only that control debounces —
|
|
@@ -4917,8 +5201,8 @@ declare function listSlot(region: ListSlotRegion, resource: string): string;
|
|
|
4917
5201
|
* `'filters'` overload's contract is byte-identical to before this
|
|
4918
5202
|
* region existed.
|
|
4919
5203
|
*/
|
|
4920
|
-
declare function useListSlot(region: 'cell', resource:
|
|
4921
|
-
declare function useListSlot(region: 'filters', resource:
|
|
5204
|
+
declare function useListSlot<const N extends string = string>(region: 'cell', resource: ResourceNameOrRef<N>): ListCellRenderer | undefined;
|
|
5205
|
+
declare function useListSlot<const N extends string = string>(region: 'filters', resource: ResourceNameOrRef<N>): ListSlot | undefined;
|
|
4922
5206
|
//#endregion
|
|
4923
5207
|
//#region src/saved-views/saved-views-dropdown.d.ts
|
|
4924
5208
|
/**
|
|
@@ -4965,14 +5249,14 @@ declare function useListSlot(region: 'filters', resource: string): ListSlot | un
|
|
|
4965
5249
|
* dialogs, and `onDeleteEntry`/`onManage` to the delete flow / manage
|
|
4966
5250
|
* dialog.
|
|
4967
5251
|
*/
|
|
4968
|
-
interface SavedViewsDropdownProps {
|
|
5252
|
+
interface SavedViewsDropdownProps<N extends string = string> {
|
|
4969
5253
|
/**
|
|
4970
5254
|
* The resource the views belong to. Declared views (`adopterViews`) read their label from
|
|
4971
5255
|
* `resources.<resource>.savedViews.<id>` in the bundle (that resource's own entry only, never
|
|
4972
5256
|
* `resources._` or `common`); without it they render as declared.
|
|
4973
5257
|
* User-saved `entries` are user data and always render as written.
|
|
4974
5258
|
*/
|
|
4975
|
-
resource?:
|
|
5259
|
+
resource?: ResourceNameOrRef<N>;
|
|
4976
5260
|
/** Adopter-defined views from `def.views.list.savedViews`. Always read-only. */
|
|
4977
5261
|
adopterViews: SavedViewDef[];
|
|
4978
5262
|
/** Adapter-backed entries, WITH scope/permission metadata (Task 9). */
|
|
@@ -5032,14 +5316,12 @@ interface SavedViewsDropdownProps {
|
|
|
5032
5316
|
/** Popover content alignment. Default: 'start'. */
|
|
5033
5317
|
popoverAlign?: 'start' | 'center' | 'end';
|
|
5034
5318
|
}
|
|
5035
|
-
declare function SavedViewsDropdown({ resource, adopterViews, entries, issues, onApply, onSaveCurrent, canSaveCurrent, onManage, onRenameEntry, onDeleteEntry, onForkEntry, canFork, getTestId, triggerLabel, iconOnly, triggerClassName, popoverContentClassName, popoverAlign }: SavedViewsDropdownProps): React.ReactElement;
|
|
5319
|
+
declare function SavedViewsDropdown<const N extends string = string>({ resource: resourceInput, adopterViews, entries, issues, onApply, onSaveCurrent, canSaveCurrent, onManage, onRenameEntry, onDeleteEntry, onForkEntry, canFork, getTestId, triggerLabel, iconOnly, triggerClassName, popoverContentClassName, popoverAlign }: SavedViewsDropdownProps<N>): React.ReactElement;
|
|
5036
5320
|
//#endregion
|
|
5037
5321
|
//#region src/resource/list-error-state.d.ts
|
|
5038
5322
|
interface ListErrorStateProps {
|
|
5039
5323
|
/** Whatever the query threw. */
|
|
5040
|
-
error:
|
|
5041
|
-
message?: string;
|
|
5042
|
-
} | Error;
|
|
5324
|
+
error: unknown;
|
|
5043
5325
|
/** When provided, a Retry button is rendered and calls this. */
|
|
5044
5326
|
onRetry?: () => void;
|
|
5045
5327
|
/** Resource name, used to build the retry button's test id. */
|
|
@@ -5064,12 +5346,14 @@ interface ListErrorStateProps {
|
|
|
5064
5346
|
* When Temporal was briefly down, the only recovery was reloading the page.
|
|
5065
5347
|
*
|
|
5066
5348
|
* A slot author should not have to re-derive an error state the framework
|
|
5067
|
-
* already knows how to render, so this is now shared by both. `
|
|
5068
|
-
*
|
|
5069
|
-
*
|
|
5070
|
-
*
|
|
5349
|
+
* already knows how to render, so this is now shared by both. It is the `list`
|
|
5350
|
+
* surface of `<LoadError>`: the sentence is the error's own text (its code's, its
|
|
5351
|
+
* message reference's), a plain-language sentence for a dead network or an
|
|
5352
|
+
* unavailable service, or `list.errorBody`; an HTTP trace or a thrown message is
|
|
5353
|
+
* never the sentence. The raw text stays reachable under «Details», in
|
|
5354
|
+
* development, for whoever has to file the bug.
|
|
5071
5355
|
*/
|
|
5072
|
-
declare function ListErrorState(
|
|
5356
|
+
declare function ListErrorState(props: ListErrorStateProps): React.ReactElement;
|
|
5073
5357
|
//#endregion
|
|
5074
5358
|
//#region src/resource/record-display-name.d.ts
|
|
5075
5359
|
/**
|
|
@@ -5079,9 +5363,9 @@ declare function ListErrorState({ error, onRetry, resource, title, className }:
|
|
|
5079
5363
|
declare function recordDisplayName(record: Record<string, unknown>, displayField?: string): string;
|
|
5080
5364
|
//#endregion
|
|
5081
5365
|
//#region src/resource/page-header.d.ts
|
|
5082
|
-
interface PageHeaderProps {
|
|
5366
|
+
interface PageHeaderProps<N extends string = string> {
|
|
5083
5367
|
/** Resource name (matches the registry key). Used for back-link target + label resolution. */
|
|
5084
|
-
resource:
|
|
5368
|
+
resource: ResourceNameOrRef<N>;
|
|
5085
5369
|
/**
|
|
5086
5370
|
* Page mode. Drives default title:
|
|
5087
5371
|
* - 'list' → labelPlural
|
|
@@ -5146,13 +5430,13 @@ interface PageHeaderProps {
|
|
|
5146
5430
|
labelOverride?: string;
|
|
5147
5431
|
className?: string;
|
|
5148
5432
|
}
|
|
5149
|
-
declare function PageHeader({ resource, mode, recordName, backHref, backLabel, actions, title, breadcrumbs, backLink, visibleTitle, labelOverride, className }: PageHeaderProps): React.ReactElement | null;
|
|
5433
|
+
declare function PageHeader<const N extends string = string>({ resource: resourceInput, mode, recordName, backHref, backLabel, actions, title, breadcrumbs, backLink, visibleTitle, labelOverride, className }: PageHeaderProps<N>): React.ReactElement | null;
|
|
5150
5434
|
/**
|
|
5151
5435
|
* The show-page `<PageHeader>`: the breadcrumb, the record's title and the resolved
|
|
5152
5436
|
* `<ActionOverflow surface="show">` item-action list, then any `extraActions`.
|
|
5153
5437
|
*/
|
|
5154
|
-
declare function ShowPageHeader({ resource, record, extraActions, breadcrumbs }: {
|
|
5155
|
-
resource:
|
|
5438
|
+
declare function ShowPageHeader<const N extends string = string>({ resource: resourceInput, record, extraActions, breadcrumbs }: {
|
|
5439
|
+
resource: ResourceNameOrRef<N>;
|
|
5156
5440
|
record: {
|
|
5157
5441
|
id: string;
|
|
5158
5442
|
} & Record<string, unknown>;
|
|
@@ -5161,10 +5445,12 @@ declare function ShowPageHeader({ resource, record, extraActions, breadcrumbs }:
|
|
|
5161
5445
|
}): React.ReactElement | null;
|
|
5162
5446
|
/**
|
|
5163
5447
|
* The edit-page `<PageHeader>`: the back-link, the record's title and the resolved
|
|
5164
|
-
* `<ActionOverflow surface="edit">` item-action list.
|
|
5448
|
+
* `<ActionOverflow surface="edit">` item-action list. The back-link is `backHref` when given,
|
|
5449
|
+
* else where the record page's Save returns (`useReturnTarget`): where the user came from, by
|
|
5450
|
+
* default, else the record's show page, else the list.
|
|
5165
5451
|
*/
|
|
5166
|
-
declare function EditPageHeader({ resource, record, backHref, breadcrumbs }: {
|
|
5167
|
-
resource:
|
|
5452
|
+
declare function EditPageHeader<const N extends string = string>({ resource: resourceInput, record, backHref, breadcrumbs }: {
|
|
5453
|
+
resource: ResourceNameOrRef<N>;
|
|
5168
5454
|
record: {
|
|
5169
5455
|
id: string;
|
|
5170
5456
|
} & Record<string, unknown>;
|
|
@@ -5173,9 +5459,9 @@ declare function EditPageHeader({ resource, record, backHref, breadcrumbs }: {
|
|
|
5173
5459
|
}): React.ReactElement;
|
|
5174
5460
|
//#endregion
|
|
5175
5461
|
//#region src/resource/create-button.d.ts
|
|
5176
|
-
interface CreateButtonProps {
|
|
5462
|
+
interface CreateButtonProps<N extends string = string> {
|
|
5177
5463
|
/** Resource this creates. Required — the button gates itself. */
|
|
5178
|
-
resource:
|
|
5464
|
+
resource: ResourceNameOrRef<N>;
|
|
5179
5465
|
/** Target create route, e.g. `resourceCreateHref(def, resource)`. Ignored with `onOpen`. */
|
|
5180
5466
|
href: string;
|
|
5181
5467
|
/**
|
|
@@ -5204,14 +5490,15 @@ interface CreateButtonProps {
|
|
|
5204
5490
|
* nothing for `absent`/`hidden`, a focusable `aria-disabled` control with a
|
|
5205
5491
|
* toast reason for `disabled`, and the normal link for `available`.
|
|
5206
5492
|
*/
|
|
5207
|
-
declare function CreateButton({ resource, href, testid, size, variant, label, className, onOpen }: CreateButtonProps): React.ReactElement | null;
|
|
5493
|
+
declare function CreateButton<const N extends string = string>({ resource: resourceInput, href, testid, size, variant, label, className, onOpen }: CreateButtonProps<N>): React.ReactElement | null;
|
|
5208
5494
|
//#endregion
|
|
5209
5495
|
//#region src/resource/form-context.d.ts
|
|
5210
5496
|
/**
|
|
5211
5497
|
* Minimal form-control handle exposed to field renderers so a field can update
|
|
5212
5498
|
* SIBLING fields (a field renderer otherwise only sees its own value). Used for
|
|
5213
5499
|
* reactive prefills — e.g. picking a product on a GTIN field also fills the
|
|
5214
|
-
* «Product name» / «Code type» fields (#2).
|
|
5500
|
+
* «Product name» / «Code type» fields (#2). Every form host provides it:
|
|
5501
|
+
* `<RecordScreen>`, a flow's form and `<DeclarativeForm>`.
|
|
5215
5502
|
*/
|
|
5216
5503
|
interface FormControl {
|
|
5217
5504
|
/** Merge a patch of `{ fieldName: value }` into the form's live values. */
|
|
@@ -5655,8 +5942,22 @@ type SelectContentProps = React$1.ComponentPropsWithoutRef<typeof SelectPrimitiv
|
|
|
5655
5942
|
declare const SelectContent: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
5656
5943
|
type SelectLabelProps = React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>;
|
|
5657
5944
|
declare const SelectLabel: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
5658
|
-
type SelectItemProps = React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Item
|
|
5659
|
-
|
|
5945
|
+
type SelectItemProps = React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Item> & {
|
|
5946
|
+
/**
|
|
5947
|
+
* Secondary text rendered under the label. It sits outside `ItemText` on
|
|
5948
|
+
* purpose: Radix clones everything inside `ItemText` into the closed trigger,
|
|
5949
|
+
* so a description placed there would be glued onto the selected value.
|
|
5950
|
+
*/
|
|
5951
|
+
description?: React$1.ReactNode;
|
|
5952
|
+
};
|
|
5953
|
+
declare const SelectItem: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & {
|
|
5954
|
+
/**
|
|
5955
|
+
* Secondary text rendered under the label. It sits outside `ItemText` on
|
|
5956
|
+
* purpose: Radix clones everything inside `ItemText` into the closed trigger,
|
|
5957
|
+
* so a description placed there would be glued onto the selected value.
|
|
5958
|
+
*/
|
|
5959
|
+
description?: React$1.ReactNode;
|
|
5960
|
+
} & React$1.RefAttributes<HTMLDivElement>>;
|
|
5660
5961
|
type SelectSeparatorProps = React$1.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>;
|
|
5661
5962
|
declare const SelectSeparator: React$1.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React$1.RefAttributes<HTMLDivElement>, "ref"> & React$1.RefAttributes<HTMLDivElement>>;
|
|
5662
5963
|
//#endregion
|
|
@@ -6160,14 +6461,22 @@ interface AppShellProps {
|
|
|
6160
6461
|
palette?: Slot;
|
|
6161
6462
|
/** Passed to `AppLayout`, typically `<DocPanel />`. */
|
|
6162
6463
|
docPanel?: ReactNode;
|
|
6464
|
+
/**
|
|
6465
|
+
* Default `true`: `children` render inside `<NavChrome>`, the secondary sidebar and tabs of
|
|
6466
|
+
* the active navigation group chain, mounted once here so it keeps its DOM node while the
|
|
6467
|
+
* user moves within an area. `false` renders `children` bare, for an app that places
|
|
6468
|
+
* `<NavChrome>` itself (also the way to pass it `entryFilter` or `icons`).
|
|
6469
|
+
*/
|
|
6470
|
+
navChrome?: boolean;
|
|
6163
6471
|
children: ReactNode;
|
|
6164
6472
|
}
|
|
6165
6473
|
/**
|
|
6166
|
-
* `AppLayout` with the default sidebar, header and command palette,
|
|
6167
|
-
* context they read. Renders inside
|
|
6168
|
-
* `LinkComponentProvider`; it does not boot the runtime,
|
|
6474
|
+
* `AppLayout` with the default sidebar, header and command palette, the area chrome
|
|
6475
|
+
* (`<NavChrome>`) around its children, and the brand and user context they read. Renders inside
|
|
6476
|
+
* `BuroProvider`, a `RouterAdapter` and a `LinkComponentProvider`; it does not boot the runtime,
|
|
6477
|
+
* own routes or guard auth.
|
|
6169
6478
|
*/
|
|
6170
|
-
declare function AppShell({ brand, user, loginPath, sidebar, header, palette, docPanel, children }: AppShellProps): ReactElement;
|
|
6479
|
+
declare function AppShell({ brand, user, loginPath, sidebar, header, palette, docPanel, navChrome, children }: AppShellProps): ReactElement;
|
|
6171
6480
|
//#endregion
|
|
6172
6481
|
//#region src/shell/default-command-palette.d.ts
|
|
6173
6482
|
interface DefaultCommandPaletteProps {
|
|
@@ -6298,5 +6607,5 @@ declare function useLanguagePaletteActions(): ActionItem[];
|
|
|
6298
6607
|
declare const PACKAGE_NAME: "@burojs/ui-shadcn";
|
|
6299
6608
|
declare const PACKAGE_VERSION: "0.0.0";
|
|
6300
6609
|
//#endregion
|
|
6301
|
-
export { ActionButton, type ActionButtonProps, type ActionItem, ActionOverflow, type ActionOverflowProps, type ActionSurface, AlertDialog, AlertDialogAction, AlertDialogActionProps, AlertDialogCancel, AlertDialogCancelProps, AlertDialogContent, AlertDialogContentProps, AlertDialogDescription, AlertDialogDescriptionProps, AlertDialogFooter, AlertDialogFooterProps, AlertDialogHeader, AlertDialogHeaderProps, AlertDialogOverlay, AlertDialogOverlayProps, AlertDialogPortal, AlertDialogTitle, AlertDialogTitleProps, AlertDialogTrigger, AppActions, AppFlowButton, type AppFlowButtonProps, AppHeader, type AppHeaderProps, AppLayout, type AppLayoutProps, AppShell, type AppShellProps, AppSidebar, type AppSidebarProps, AuthPage, type AuthPageProps, Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, BooleanDisplay, BooleanInput, BrandMark, Breadcrumbs, type BreadcrumbsProps, type BuildNavItemsArgs, BulkActionToolbar, type BulkActionToolbarProps, Button, ButtonProps, Card, CardContent, CardContentProps, CardDescription, CardDescriptionProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, CheckConfirmDialog, type CheckConfirmDialogProps, Checkbox, CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnsToggle, Command, CommandDialog, CommandDialogProps, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandLoadingProps, CommandPalette, CommandPaletteActionsGroup, type CommandPaletteActionsGroupProps, type CommandPaletteActionsTestIdRole, CommandPaletteCreateGroup, type CommandPaletteCreateGroupProps, type CommandPaletteCreateTestIdRole, CommandPaletteDocsGroup, type CommandPaletteDocsGroupProps, CommandPaletteNavigationGroups, type CommandPaletteNavigationGroupsProps, type CommandPaletteNavigationTestIdRole, type CommandPaletteProps, CommandPaletteRecentGroup, type CommandPaletteRecentGroupProps, type CommandPaletteRecentTestIdRole, CommandPaletteRecordsGroup, type CommandPaletteRecordsGroupProps, type CommandPaletteRecordsTestIdRole, type CommandPaletteTestIdRole, CommandPaletteTrigger, type CommandPaletteTriggerProps, CommandSeparator, ContextPicker, type ContextPickerProps, CopyId, CreateButton, type CreateButtonProps, CursorLoadMore, type CursorLoadMoreProps, DEFAULT_LANGUAGE_STORAGE_KEY, DataTable, DataTableDateRangeFilter, type DataTableDateRangeFilterProps, DataTableEnumFilter, type DataTableEnumFilterProps, DataTableFacetedFilter, type DataTableFacetedFilterProps, DataTableNumRangeFilter, type DataTableNumRangeFilterProps, DataTableOperatorFilter, type DataTableOperatorFilterProps, type DataTableProps, DataTableRowActions, type DataTableRowActionsProps, DataTableTextFilter, type DataTableTextFilterProps, DataTableToolbar, type DataTableToolbarProps, DataTableViewOptions, type DataTableViewOptionsProps, DateDisplay, DateInput, DeclarativeDisplay, type DeclarativeDisplayProps, DeclarativeForm, type DeclarativeFormProps, type DeclarativeFormSlots, DefaultCommandPalette, type DefaultCommandPaletteProps, Dialog, DialogClose, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, type DialogFilterState, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogOverlayProps, DialogPresentationHost, DialogPresentationShell, DialogTitle, DialogTitleProps, DialogTrigger, DisabledAction, type DisabledActionProps, DocBrowser, type DocBrowserProps, DocInfo, type DocInfoProps, DocPanel, type DocPanelProps, DocTrailHelp, type DocTrailHelpProps, DocumentTitleProvider, type DraftRemovalSignal, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENUM_PICKER_CLEAR_SENTINEL, EditPageHeader, EnumBadge, type EnumBadgeProps, EnumDisplay, EnumInput, EnumPicker, type EnumPickerProps,
|
|
6610
|
+
export { ActionButton, type ActionButtonProps, type ActionItem, ActionOverflow, type ActionOverflowProps, type ActionSurface, AlertDialog, AlertDialogAction, AlertDialogActionProps, AlertDialogCancel, AlertDialogCancelProps, AlertDialogContent, AlertDialogContentProps, AlertDialogDescription, AlertDialogDescriptionProps, AlertDialogFooter, AlertDialogFooterProps, AlertDialogHeader, AlertDialogHeaderProps, AlertDialogOverlay, AlertDialogOverlayProps, AlertDialogPortal, AlertDialogTitle, AlertDialogTitleProps, AlertDialogTrigger, AppActions, AppFlowButton, type AppFlowButtonProps, AppHeader, type AppHeaderProps, AppLayout, type AppLayoutProps, AppShell, type AppShellProps, AppSidebar, type AppSidebarProps, AuthPage, type AuthPageProps, Avatar, AvatarFallback, AvatarImage, Badge, BadgeProps, BooleanDisplay, BooleanInput, BrandMark, Breadcrumbs, type BreadcrumbsProps, type BuildNavItemsArgs, BulkActionToolbar, type BulkActionToolbarProps, Button, ButtonProps, Card, CardContent, CardContentProps, CardDescription, CardDescriptionProps, CardFooter, CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps, CheckConfirmDialog, type CheckConfirmDialogProps, Checkbox, CheckboxProps, Collapsible, CollapsibleContent, CollapsibleTrigger, ColumnsToggle, Command, CommandDialog, CommandDialogProps, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandLoading, CommandLoadingProps, CommandPalette, CommandPaletteActionsGroup, type CommandPaletteActionsGroupProps, type CommandPaletteActionsTestIdRole, CommandPaletteCreateGroup, type CommandPaletteCreateGroupProps, type CommandPaletteCreateTestIdRole, CommandPaletteDocsGroup, type CommandPaletteDocsGroupProps, CommandPaletteNavigationGroups, type CommandPaletteNavigationGroupsProps, type CommandPaletteNavigationTestIdRole, type CommandPaletteProps, CommandPaletteRecentGroup, type CommandPaletteRecentGroupProps, type CommandPaletteRecentTestIdRole, CommandPaletteRecordsGroup, type CommandPaletteRecordsGroupProps, type CommandPaletteRecordsTestIdRole, type CommandPaletteTestIdRole, CommandPaletteTrigger, type CommandPaletteTriggerProps, CommandSeparator, ContextPicker, type ContextPickerProps, CopyId, CreateButton, type CreateButtonProps, CursorLoadMore, type CursorLoadMoreProps, DEFAULT_LANGUAGE_STORAGE_KEY, DataTable, DataTableDateRangeFilter, type DataTableDateRangeFilterProps, DataTableEnumFilter, type DataTableEnumFilterProps, DataTableFacetedFilter, type DataTableFacetedFilterProps, DataTableNumRangeFilter, type DataTableNumRangeFilterProps, DataTableOperatorFilter, type DataTableOperatorFilterProps, type DataTableProps, DataTableRowActions, type DataTableRowActionsProps, DataTableTextFilter, type DataTableTextFilterProps, DataTableToolbar, type DataTableToolbarProps, DataTableViewOptions, type DataTableViewOptionsProps, DateDisplay, DateInput, DeclarativeDisplay, type DeclarativeDisplayProps, DeclarativeForm, type DeclarativeFormProps, type DeclarativeFormSlots, DefaultCommandPalette, type DefaultCommandPaletteProps, Dialog, DialogClose, DialogContent, DialogContentProps, DialogDescription, DialogDescriptionProps, type DialogFilterState, DialogFooter, DialogFooterProps, DialogHeader, DialogHeaderProps, DialogOverlayProps, DialogPresentationHost, DialogPresentationShell, DialogTitle, DialogTitleProps, DialogTrigger, DisabledAction, type DisabledActionProps, DocBrowser, type DocBrowserProps, DocInfo, type DocInfoProps, DocPanel, type DocPanelProps, DocTrailHelp, type DocTrailHelpProps, DocumentTitleProvider, type DraftRemovalSignal, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENUM_PICKER_CLEAR_SENTINEL, EditPageHeader, EnumBadge, type EnumBadgeProps, EnumDisplay, EnumInput, EnumPicker, type EnumPickerProps, EnumDisplay$1 as EnumValueDisplay, type EnumDisplayProps as EnumValueDisplayProps, type EnumDisplayVariant as EnumValueDisplayVariant, ExportButton, type ExportButtonProps, ExportDialog, type ExportDialogProps, type FacetedFilterOption, FacetedFilterPicker, type FacetedFilterPickerProps, Field, FieldDisplay, type FieldDisplayProps, type FieldProps, FileDisplay, FileField, type FileFieldProps, FileInput, type FileInputProps, FilterBadges, type FilterBadgesProps, FilterBuilder, type FilterBuilderProps, type FilterOperator, FilterPanel, type FilterPanelProps, FilterRegion, FilterValueControl, type FilterValueControlProps, FlowActionButton, type FlowActionButtonProps, Form, FormActions, FormControl, FormControlProps, FormDescription, FormDescriptionProps, FormField, FormItem, FormItemProps, FormLabel, FormLabelProps, FormMessage, FormMessageProps, HeaderBreadcrumbs, HelpButton, type HelpButtonProps, Icon, IconComponent, IconProps, Input, InputProps, Label, LabelProps, LanguageSubmenu, LanguageSwitch, type LanguageSwitchApi, type LanguageSwitchProps, type LinkComponent, type LinkComponentProps, LinkComponentProvider, type LinkComponentProviderProps, LinkKeysDisplay, ListBody, ListBulkBar, type ListCellRenderer, ListColumns, ListControls, ListCreate, ListErrorState, type ListErrorStateProps, ListExport, ListFilters, ListFlows, ListLive, ListSavedViews, ListSearchInput, type ListSlot, type ListSlotRegion, type LoginCredentials, LoginForm, type LoginFormProps, NavAreaPage, NavChrome, type NavChromeProps, type NavItem, type NavLayout, type NavLayoutProps, NavMain, type NavMainProps, type NavTreeEntry, type NavTreeLayout, type NavTreeSection, NavigationGuardDialog, NumberDisplay, NumberInput, PACKAGE_NAME, PACKAGE_VERSION, type PageBreadcrumbsProps, PageHeader, type PageHeaderProps, type PaletteState, PinnedFilterControls, type PinnedFilterControlsProps, Popover, PopoverAnchor, PopoverClose, PopoverContent, PopoverContentProps, PopoverPresentationHost, PopoverTrigger, type PresentationCopy, PresetFilterControls, type PresetFilterControlsProps, Progress, ProgressProps, RecordActions, RecordBreadcrumbs, RecordPage, type RecordPageProps, RecordScreen, type RecordScreenProps, RecordTitle, RefreshButton, type RefreshButtonProps, RelationDisplay, RelationField, RelationManyDisplay, RelationPicker, type RelationPickerCancelReason, LazyRelationPickerDialog as RelationPickerDialog, type RelationPickerDialogProps, type RelationPickerHandle, RelationPickerInput, type RelationPickerOpenOptions, type RelationPickerProps, type RelationPickerResult, type RelationPickerRow, type ResolvedTheme, type ResourceBreadcrumbsProps, ResourceList, ResourceListPage, type ResourceListPageProps, type ResourceListProps, ResourcePageRouter, type ResourcePageRouterProps, type RowActionDescriptor, SavedViewsDropdown, type SavedViewsDropdownProps, ScopeDimensionPicker, type ScopeDimensionPickerProps, type ScopeOption, ScopeSwitcher, type ScopeSwitcherProps, SecondarySidebarLayout, Select, SelectContent, SelectContentProps, SelectGroup, SelectItem, SelectItemProps, SelectLabel, SelectLabelProps, SelectScrollDownButton, SelectScrollDownButtonProps, SelectScrollUpButton, SelectScrollUpButtonProps, SelectSeparator, SelectSeparatorProps, SelectTrigger, SelectTriggerProps, SelectValue, Separator, Sheet, SheetClose, SheetContent, SheetContentProps, SheetDescription, SheetDescriptionProps, SheetFooter, SheetFooterProps, SheetHeader, SheetHeaderProps, SheetOverlayProps, SheetPresentationHost, SheetPresentationShell, SheetTitle, SheetTitleProps, SheetTrigger, type ShellBrand, type ShellContextValue, ShellProvider, type ShellProviderProps, type ShellUser, type ShellUserMapper, ShowPageHeader, Sidebar, SidebarBrand, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuButtonProps, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubButtonProps, SidebarMenuSubItem, SidebarProps, SidebarProvider, SidebarProviderProps, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, type Slot, type SpacingKey, THEME_CHOICES, THEME_STORAGE_KEY, Table, TableBody, TableBodyProps, TableCaption, TableCaptionProps, TableCell, TableCellProps, TableHead, TableHeadProps, TableHeader, TableHeaderProps, TableProps, TableRow, TableRowProps, Tabs, TabsContent, TabsContentProps, TabsLayout, TabsList, TabsListProps, TabsTrigger, TabsTriggerProps, TaskRunPanel, TaskRunPanelProps, TextDisplay, TextInput, Textarea, TextareaDisplay, TextareaInput, TextareaProps, type ThemeChoice, ThemeSubmenu, ThemeToggle, Toaster, type ToasterProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, type TypographyKey, type UseBuroDataTableOptions, type UseDialogFilterStateOptions, type UseNavTreeOptions, type UseRelationPickerOptions, type UseThemeResult, UserMenu, type UserMenuProps, 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, useNavIcon, useNavTree, useNavVisible, useOptionalSidebar, usePaletteState, usePresentationCopy, useRelationPicker, useShell, useSidebar, useTheme, useThemePaletteActions, webPlatform, wrapperEnabled };
|
|
6302
6611
|
//# sourceMappingURL=index.d.cts.map
|