@deftui/react 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/index.d.mts +4 -3
  2. package/dist/index.mjs +2 -3
  3. package/dist/vendor/README.md +4 -2
  4. package/dist/vendor/coss/calendar.mjs +2 -0
  5. package/dist/vendor/coss/card.d.mts +0 -6
  6. package/dist/vendor/coss/card.mjs +1 -68
  7. package/dist/vendor/reui.io/cascader/cascader-async.d.mts +20 -0
  8. package/dist/vendor/reui.io/cascader/cascader-async.mjs +578 -0
  9. package/dist/vendor/reui.io/cascader/cascader-context.d.mts +12 -0
  10. package/dist/vendor/reui.io/cascader/cascader-context.mjs +56 -0
  11. package/dist/vendor/reui.io/cascader/cascader-footer.d.mts +60 -0
  12. package/dist/vendor/reui.io/cascader/cascader-footer.mjs +445 -0
  13. package/dist/vendor/reui.io/cascader/cascader-i18n.mjs +64 -0
  14. package/dist/vendor/reui.io/cascader/cascader-item.d.mts +92 -0
  15. package/dist/vendor/reui.io/cascader/cascader-item.mjs +533 -0
  16. package/dist/vendor/reui.io/cascader/cascader-lib.d.mts +3 -0
  17. package/dist/vendor/reui.io/cascader/cascader-lib.mjs +688 -0
  18. package/dist/vendor/reui.io/cascader/cascader-nav.d.mts +56 -0
  19. package/dist/vendor/reui.io/cascader/cascader-nav.mjs +310 -0
  20. package/dist/vendor/reui.io/cascader/cascader-types.d.mts +140 -0
  21. package/dist/vendor/reui.io/cascader/cascader-virtual.d.mts +18 -0
  22. package/dist/vendor/reui.io/cascader/cascader-virtual.mjs +159 -0
  23. package/dist/vendor/reui.io/cascader/cascader.d.mts +299 -0
  24. package/dist/vendor/reui.io/cascader/cascader.mjs +1470 -0
  25. package/dist/vendor/reui.io/frame.d.mts +22 -0
  26. package/dist/vendor/reui.io/frame.mjs +106 -0
  27. package/dist/vendor/reui.io/timeline.d.mts +21 -0
  28. package/dist/vendor/reui.io/timeline.mjs +127 -0
  29. package/dist/widgets/datetime.mjs +0 -5
  30. package/dist/widgets/export.d.mts +28 -0
  31. package/dist/widgets/index.d.mts +64 -19
  32. package/dist/widgets/index.mjs +54 -10
  33. package/package.json +2 -2
  34. package/dist/vendor/tailored/file-tree.d.mts +0 -21
  35. package/dist/vendor/tailored/file-tree.mjs +0 -146
package/dist/index.d.mts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { useCopyToClipboard } from "./vendor/coss/hooks/use-copy-to-clipboard.mjs";
2
2
  import { useIsMobile, useMediaQuery } from "./vendor/coss/hooks/use-media-query.mjs";
3
+ import { CascaderChangeDetails, CascaderLabels, CascaderMode, CascaderNode } from "./vendor/reui.io/cascader/cascader-types.mjs";
4
+ import { CascaderProps, CascaderSingleProps } from "./vendor/reui.io/cascader/cascader.mjs";
3
5
  import { Separator } from "./vendor/shadcn/separator.mjs";
4
6
  import { Label } from "./vendor/shadcn/label.mjs";
5
7
  import { Button } from "./vendor/shadcn/button.mjs";
@@ -23,10 +25,9 @@ import { Form } from "./vendor/coss/form.mjs";
23
25
  import { ScrollArea } from "./vendor/coss/scroll-area.mjs";
24
26
  import { IconSwap } from "./vendor/tailored/icon-swap.mjs";
25
27
  import { JsonViewer } from "./vendor/tailored/json-viewer.mjs";
26
- import { FileTree, FileTreeNode } from "./vendor/tailored/file-tree.mjs";
27
- import { AlertDialog, Breadcrumb, ButtonGroup, Card, Combobox, Dialog, Drawer, Dropdown, Empty, Field, Frame, InputGroup, Kbd, Popover, Progress, Radio, Select, Table, Tabs, Tooltip } from "./widgets/index.mjs";
28
+ import { AlertDialog, Breadcrumb, ButtonGroup, Card, Cascader, Combobox, Dialog, Drawer, Dropdown, Empty, Field, Frame, InputGroup, Kbd, Popover, Progress, Radio, Select, Table, Tabs, Timeline, Tooltip } from "./widgets/index.mjs";
28
29
  import { cn } from "cn";
29
30
  import { cva } from "class-variance-authority";
30
31
  import { mergeProps } from "@base-ui/react/merge-props";
31
32
  export * from "react-dropzone";
32
- export { AlertDialog, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Carousel, Checkbox, Combobox, DatePicker, type DateRange, DateRangePicker, Dialog, Drawer, Dropdown, Dropzone, Empty, Field, FileTree, type FileTreeNode, Form, Frame, IconSwap, Image, ImageProps, Input, InputGroup, JsonViewer, Kbd, Label, Lightbox, type LightboxActions, type LightboxBackdrop, type LightboxCaptions, type LightboxChangeReason, type LightboxClose, type LightboxContent, type LightboxControl, type LightboxControlContext, type LightboxCounter, type LightboxDownload, type LightboxImageChangeEventDetails, type LightboxImageItem, type LightboxItem, type LightboxMore, type LightboxNext, type LightboxOpenEventDetails, type LightboxPrevious, type LightboxProps, type LightboxSlide, type LightboxSlides, type LightboxThumbnail, type LightboxThumbnails, type LightboxToolbar, type LightboxTrigger, type LightboxTriggerProps, type LightboxVideoItem, type LightboxViewport, type LightboxZoom, type LightboxZoomButton, Pagination, Popover, Progress, Radio, ScrollArea, Select, Separator, Sidebar, Skeleton, Spinner, Switch, Table, Tabs, Textarea, TimePicker, Toaster as ToastProvider, Tooltip, cn, cva, formatBytes, mergeProps, toast, useCopyToClipboard, useDropzone, useIsMobile, type useLightbox, useMediaQuery, useSidebar };
33
+ export { AlertDialog, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Carousel, Cascader, type CascaderChangeDetails, type CascaderLabels, type CascaderMode, type CascaderNode, type CascaderProps, type CascaderSingleProps, Checkbox, Combobox, DatePicker, type DateRange, DateRangePicker, Dialog, Drawer, Dropdown, Dropzone, Empty, Field, Form, Frame, IconSwap, Image, ImageProps, Input, InputGroup, JsonViewer, Kbd, Label, Lightbox, type LightboxActions, type LightboxBackdrop, type LightboxCaptions, type LightboxChangeReason, type LightboxClose, type LightboxContent, type LightboxControl, type LightboxControlContext, type LightboxCounter, type LightboxDownload, type LightboxImageChangeEventDetails, type LightboxImageItem, type LightboxItem, type LightboxMore, type LightboxNext, type LightboxOpenEventDetails, type LightboxPrevious, type LightboxProps, type LightboxSlide, type LightboxSlides, type LightboxThumbnail, type LightboxThumbnails, type LightboxToolbar, type LightboxTrigger, type LightboxTriggerProps, type LightboxVideoItem, type LightboxViewport, type LightboxZoom, type LightboxZoomButton, Pagination, Popover, Progress, Radio, ScrollArea, Select, Separator, Sidebar, Skeleton, Spinner, Switch, Table, Tabs, Textarea, TimePicker, Timeline, Toaster as ToastProvider, Tooltip, cn, cva, formatBytes, mergeProps, toast, useCopyToClipboard, useDropzone, useIsMobile, type useLightbox, useMediaQuery, useSidebar };
package/dist/index.mjs CHANGED
@@ -22,9 +22,8 @@ import { Checkbox } from "./vendor/shadcn/checkbox.mjs";
22
22
  import { Form } from "./vendor/coss/form.mjs";
23
23
  import { IconSwap } from "./vendor/tailored/icon-swap.mjs";
24
24
  import { JsonViewer } from "./vendor/tailored/json-viewer.mjs";
25
- import { FileTree } from "./vendor/tailored/file-tree.mjs";
26
- import { AlertDialog, Breadcrumb, ButtonGroup, Card, Combobox, Dialog, Drawer, Dropdown, Empty, Field, Frame, InputGroup, Kbd, Popover, Progress, Radio, Select, Table, Tabs, Tooltip } from "./widgets/index.mjs";
25
+ import { AlertDialog, Breadcrumb, ButtonGroup, Card, Cascader, Combobox, Dialog, Drawer, Dropdown, Empty, Field, Frame, InputGroup, Kbd, Popover, Progress, Radio, Select, Table, Tabs, Timeline, Tooltip } from "./widgets/index.mjs";
27
26
  import { cn } from "cn";
28
27
  import { cva } from "class-variance-authority";
29
28
  import { mergeProps } from "@base-ui/react/merge-props";
30
- export { AlertDialog, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Carousel, Checkbox, Combobox, DatePicker, DateRangePicker, Dialog, Drawer, Dropdown, Dropzone, Empty, Field, FileTree, Form, Frame, IconSwap, Image, Input, InputGroup, JsonViewer, Kbd, Label, Lightbox, Pagination, Popover, Progress, Radio, ScrollArea, Select, Separator, Sidebar, Skeleton, Spinner, Switch, Table, Tabs, Textarea, TimePicker, Toaster as ToastProvider, Tooltip, cn, cva, formatBytes, mergeProps, toast, useCopyToClipboard, useDropzone, useIsMobile, useMediaQuery, useSidebar };
29
+ export { AlertDialog, Badge, Breadcrumb, Button, ButtonGroup, Calendar, Card, Carousel, Cascader, Checkbox, Combobox, DatePicker, DateRangePicker, Dialog, Drawer, Dropdown, Dropzone, Empty, Field, Form, Frame, IconSwap, Image, Input, InputGroup, JsonViewer, Kbd, Label, Lightbox, Pagination, Popover, Progress, Radio, ScrollArea, Select, Separator, Sidebar, Skeleton, Spinner, Switch, Table, Tabs, Textarea, TimePicker, Timeline, Toaster as ToastProvider, Tooltip, cn, cva, formatBytes, mergeProps, toast, useCopyToClipboard, useDropzone, useIsMobile, useMediaQuery, useSidebar };
@@ -12,7 +12,7 @@ shadcn 组件使用 `components.json` 中的 `base-vega` 风格和 Lucide 图标
12
12
  | ID | File | Docs | Modifications |
13
13
  | --- | --- | --- | --- |
14
14
  | `@coss/alert-dialog` | [coss/alert-dialog.tsx](coss/alert-dialog.tsx) | [Alert Dialog](https://coss.com/ui/docs/components/alert-dialog) | `font-bold text-xl` 替换为 `font-semibold text-lg`;用 `@starting-style` 支持初始打开时的入场动画 |
15
- | `@coss/calendar` | [coss/calendar.tsx](coss/calendar.tsx) | [Calendar](https://coss.com/ui/docs/components/calendar) | — |
15
+ | `@coss/calendar` | [coss/calendar.tsx](coss/calendar.tsx) | [Calendar](https://coss.com/ui/docs/components/calendar) | 根据 `navigator.language` 自动设置 `locale` 为 zhCN 或 enUS |
16
16
  | `@coss/card` | [coss/card.tsx](coss/card.tsx) | [Card](https://coss.com/ui/docs/components/card) | 用 `--card-spacing` 与 `--card-gap` 替代分段 padding;新增 `spacing`、`gap` 属性写入对应变量;标题改为 `text-base font-semibold leading-normal`;首尾图片贴边并补圆角 |
17
17
  | `@coss/dialog` | [coss/dialog.tsx](coss/dialog.tsx) | [Dialog](https://coss.com/ui/docs/components/dialog) | `font-bold text-xl` 替换为 `font-semibold text-lg`;用 `@starting-style` 支持初始打开时的入场动画 |
18
18
  | `@coss/drawer` | [coss/drawer.tsx](coss/drawer.tsx) | [Drawer](https://coss.com/ui/docs/components/drawer) | `font-bold text-xl` 替换为 `font-semibold text-lg`;用 `@starting-style` 支持初始打开时的入场动画 |
@@ -22,6 +22,9 @@ shadcn 组件使用 `components.json` 中的 `base-vega` 风格和 Lucide 图标
22
22
  | `@coss/table` | [coss/table.tsx](coss/table.tsx) | [Table](https://coss.com/ui/docs/components/table) | 默认变体的 `TableFooter` 移除底色,与 `card` 变体一样保持透明 |
23
23
  | `@coss/use-copy-to-clipboard` | [coss/hooks/use-copy-to-clipboard.ts](coss/hooks/use-copy-to-clipboard.ts) | [useCopyToClipboard](https://coss.com/ui/docs/hooks/use-copy-to-clipboard) | — |
24
24
  | `@coss/use-media-query` | [coss/hooks/use-media-query.ts](coss/hooks/use-media-query.ts) | [useMediaQuery](https://coss.com/ui/docs/hooks/use-media-query) | 断点:`md` 设为 768px,与 Tailwind 默认值一致 |
25
+ | `@reui/cascader` | [reui.io/cascader/cascader.tsx](reui.io/cascader/cascader.tsx) | [Cascader](https://reui.io/docs/components/cascader) | 重映射 `scroll-area` 与 `spinner` 的导入 |
26
+ | `@reui/frame` | [reui.io/frame.tsx](reui.io/frame.tsx) | [Frame](https://reui.io/docs/components/base/frame) | — |
27
+ | `@reui/timeline` | [reui.io/timeline.tsx](reui.io/timeline.tsx) | [Timeline](https://reui.io/docs/components/timeline) | — |
25
28
  | `badge` | [shadcn/badge.tsx](shadcn/badge.tsx) | [Badge](https://ui.shadcn.com/docs/components/base/badge) | 提供 `info`、`success`、`warning` 语义变体 |
26
29
  | `breadcrumb` | [shadcn/breadcrumb.tsx](shadcn/breadcrumb.tsx) | [Breadcrumb](https://ui.shadcn.com/docs/components/base/breadcrumb) | 未显式指定 `BreadcrumbList` 则自动包裹 |
27
30
  | `button` | [shadcn/button.tsx](shadcn/button.tsx) | [Button](https://ui.shadcn.com/docs/components/base/button) | `pill` 提供全圆角;`isPending` 提供加载态;提供额外 `destructive` 系列样式变体 |
@@ -64,5 +67,4 @@ shadcn 组件使用 `components.json` 中的 `base-vega` 风格和 Lucide 图标
64
67
  | `https://ui.iandefined.com/r/icon-swap.json` | [tailored/icon-swap.tsx](tailored/icon-swap.tsx) | [Icon Swap](https://ui.iandefined.com/docs/utilities/icon-swap/) | 进出场动画减弱模糊为 2px,缩短为 0.2s 时长 |
65
68
  | `https://ui.iandefined.com/r/lightbox.json` | [tailored/lightbox.tsx](tailored/lightbox.tsx) | [Lightbox](https://ui.iandefined.com/docs/components/lightbox/) | 适配本地组件和尺寸;修正嵌套弹层层级与点击隔离;补充加载失败反馈 |
66
69
  | `https://ui.iandefined.com/r/scroll-area.json` | [tailored/lightbox.tsx](tailored/lightbox.tsx) | [Scroll Area](https://ui.iandefined.com/docs/components/scroll-area/) | 作为 Lightbox 的私有依赖内联 |
67
- | `Tinkerers-Labs/mischief-ui/file-tree` | [tailored/file-tree.tsx](tailored/file-tree.tsx) | [File Tree](https://ui.tinkererslabs.com/docs/components/file-tree/) | — |
68
70
  | `Tinkerers-Labs/mischief-ui/json-viewer` | [tailored/json-viewer.tsx](tailored/json-viewer.tsx) | [JSON Viewer](https://ui.tinkererslabs.com/docs/components/json-viewer/) | — |
@@ -3,6 +3,7 @@ import { cn } from "../shadcn/lib/utils.mjs";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { ChevronLeftIcon, ChevronRightIcon, ChevronsUpDownIcon } from "lucide-react";
5
5
  import { DayPicker } from "@daypicker/react";
6
+ import { enUS, zhCN } from "@daypicker/react/locale";
6
7
  // src/vendor/coss/calendar.tsx
7
8
  const buttonClassNames = "relative flex size-(--cell-size) text-base sm:text-sm items-center justify-center rounded-lg text-foreground not-in-data-selected:hover:bg-accent disabled:pointer-events-none disabled:opacity-64 [&_svg:not([class*='opacity-'])]:opacity-80 [&_svg:not([class*='size-'])]:size-4.5 sm:[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0";
8
9
  /** https://coss.com/ui/docs/components/calendar */
@@ -63,6 +64,7 @@ function Calendar({ className, classNames, showOutsideDays = true, components: u
63
64
  formatters: { formatMonthDropdown: (month, dateLib) => dateLib.format(month, "LLL") },
64
65
  mode,
65
66
  showOutsideDays,
67
+ locale: navigator.language.startsWith("zh") ? zhCN : enUS,
66
68
  ...props
67
69
  };
68
70
  return /* @__PURE__ */ jsx(DayPicker, { ...dayPickerProps });
@@ -8,12 +8,6 @@ type SpacingProps = {
8
8
  };
9
9
  type CardSpacing = number | (string & {});
10
10
  export declare function Card({ className, render, gap, spacing, ...props }: useRender.ComponentProps<"div"> & SpacingProps): React.ReactElement;
11
- export declare function CardFrame({ className, render, gap, spacing, ...props }: useRender.ComponentProps<"div"> & SpacingProps): React.ReactElement;
12
- export declare function CardFrameHeader({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
13
- export declare function CardFrameTitle({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
14
- export declare function CardFrameDescription({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
15
- export declare function CardFrameAction({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
16
- export declare function CardFrameFooter({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
17
11
  export declare function CardHeader({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
18
12
  export declare function CardTitle({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
19
13
  export declare function CardDescription({ className, render, ...props }: useRender.ComponentProps<"div">): React.ReactElement;
@@ -24,73 +24,6 @@ function Card({ className, render, gap, spacing, ...props }) {
24
24
  render
25
25
  });
26
26
  }
27
- function CardFrame({ className, render, gap, spacing, ...props }) {
28
- const defaultProps = {
29
- className: cn("relative flex flex-col rounded-2xl border bg-card not-dark:bg-clip-padding text-card-foreground shadow-xs/5 [--clip-bottom:-1rem] [--clip-top:-1rem] before:pointer-events-none before:absolute before:inset-0 before:rounded-[calc(var(--radius-2xl)-1px)] before:bg-muted/72 before:shadow-[0_1px_--theme(--color-black/4%)] has-data-[slot=table-container]:overflow-hidden *:data-[slot=card]:-m-px *:data-[slot=table-container]:-m-px *:data-[slot=table-container]:w-[calc(100%+2px)] *:not-first:data-[slot=card]:rounded-t-xl *:not-last:data-[slot=card]:rounded-b-xl *:data-[slot=card]:bg-clip-padding *:data-[slot=card]:shadow-none *:data-[slot=card]:before:hidden *:not-first:data-[slot=card]:before:rounded-t-[calc(var(--radius-xl)-1px)] *:not-last:data-[slot=card]:before:rounded-b-[calc(var(--radius-xl)-1px)] dark:before:shadow-[0_-1px_--theme(--color-white/6%)] *:data-[slot=card]:[clip-path:inset(var(--clip-top)_1px_var(--clip-bottom)_1px_round_calc(var(--radius-2xl)-1px))] *:data-[slot=card]:last:[--clip-bottom:1px] *:data-[slot=card]:first:[--clip-top:1px]", className),
30
- "data-slot": "card-frame",
31
- style: getCardStyle(spacing, gap)
32
- };
33
- return useRender({
34
- defaultTagName: "div",
35
- props: mergeProps(defaultProps, props),
36
- render
37
- });
38
- }
39
- function CardFrameHeader({ className, render, ...props }) {
40
- const defaultProps = {
41
- className: cn("relative flex grid auto-rows-min grid-rows-[auto_auto] flex-col items-start gap-x-4 px-(--card-spacing) py-(--card-gap) has-data-[slot=card-frame-action]:grid-cols-[1fr_auto]", className),
42
- "data-slot": "card-frame-header"
43
- };
44
- return useRender({
45
- defaultTagName: "div",
46
- props: mergeProps(defaultProps, props),
47
- render
48
- });
49
- }
50
- function CardFrameTitle({ className, render, ...props }) {
51
- const defaultProps = {
52
- className: cn("self-center font-semibold text-sm", className),
53
- "data-slot": "card-frame-title"
54
- };
55
- return useRender({
56
- defaultTagName: "div",
57
- props: mergeProps(defaultProps, props),
58
- render
59
- });
60
- }
61
- function CardFrameDescription({ className, render, ...props }) {
62
- const defaultProps = {
63
- className: cn("self-center text-muted-foreground text-sm", className),
64
- "data-slot": "card-frame-description"
65
- };
66
- return useRender({
67
- defaultTagName: "div",
68
- props: mergeProps(defaultProps, props),
69
- render
70
- });
71
- }
72
- function CardFrameAction({ className, render, ...props }) {
73
- const defaultProps = {
74
- className: cn("col-start-2 nth-3:row-span-2 nth-3:row-start-1 inline-flex self-center justify-self-end", className),
75
- "data-slot": "card-frame-action"
76
- };
77
- return useRender({
78
- defaultTagName: "div",
79
- props: mergeProps(defaultProps, props),
80
- render
81
- });
82
- }
83
- function CardFrameFooter({ className, render, ...props }) {
84
- const defaultProps = {
85
- className: cn("px-(--card-spacing) py-(--card-gap)", className),
86
- "data-slot": "card-frame-footer"
87
- };
88
- return useRender({
89
- defaultTagName: "div",
90
- props: mergeProps(defaultProps, props),
91
- render
92
- });
93
- }
94
27
  function CardHeader({ className, render, ...props }) {
95
28
  const defaultProps = {
96
29
  className: cn("grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-(--card-spacing) [.border-b]:pb-(--card-gap) has-data-[slot=card-action]:grid-cols-[1fr_auto]", className),
@@ -157,4 +90,4 @@ function CardFooter({ className, render, ...props }) {
157
90
  render
158
91
  });
159
92
  }
160
- export { Card, CardAction, CardPanel as CardContent, CardPanel, CardDescription, CardFooter, CardFrame, CardFrameAction, CardFrameDescription, CardFrameFooter, CardFrameHeader, CardFrameTitle, CardHeader, CardTitle };
93
+ export { Card, CardAction, CardPanel as CardContent, CardPanel, CardDescription, CardFooter, CardHeader, CardTitle };
@@ -0,0 +1,20 @@
1
+ import { CascaderLoadContext, CascaderLoadResult, CascaderNode, CascaderSearchContext } from "./cascader-types.mjs";
2
+ /**
3
+ * Async data for the cascader. Loaded pages live in their own store and are
4
+ * MERGED onto the index built from `items`, never folded into that build:
5
+ * `items` changes identity on any parent re-render, and folding would discard
6
+ * every level the user drilled into. Map membership is the load discriminator:
7
+ * no `states` entry means never fetched, while an entry with no `loading`, no
8
+ * `error` and no children means empty for real.
9
+ */
10
+ /**
11
+ * Fetches one level. `node` is `null` for the root level, and only
12
+ * `{ value, label: value }`, no `data`, for a level on screen whose node has
13
+ * not loaded: a deep link before the level above loads, or a page-loaded
14
+ * level after a `loadKey` change.
15
+ */
16
+ export type CascaderGetChildren<T = unknown> = (node: CascaderNode<T> | null, context: CascaderLoadContext) => CascaderNode<T>[] | CascaderLoadResult<T> | Promise<CascaderNode<T>[] | CascaderLoadResult<T>>;
17
+ /** Server-side search, replacing the local index scan while the query is set. */
18
+ export type CascaderOnSearch<T = unknown> = (query: string, context: CascaderSearchContext) => CascaderNode<T>[] | CascaderLoadResult<T> | Promise<CascaderNode<T>[] | CascaderLoadResult<T>>;
19
+ /** Resolves a selected value to its ancestor chain, root first, node last. */
20
+ export type CascaderResolveValue<T = unknown> = (value: string, context: CascaderLoadContext) => CascaderNode<T>[] | Promise<CascaderNode<T>[]>;