nfx-ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/README.md +235 -0
  2. package/dist/animations.cjs +3 -0
  3. package/dist/animations.d.ts +102 -0
  4. package/dist/animations.mjs +14 -0
  5. package/dist/apis.cjs +5 -0
  6. package/dist/apis.cjs.map +1 -0
  7. package/dist/apis.d.ts +7 -0
  8. package/dist/apis.mjs +18 -0
  9. package/dist/apis.mjs.map +1 -0
  10. package/dist/chunk-BounceLoading-B54QEw0n.mjs +244 -0
  11. package/dist/chunk-BounceLoading-B54QEw0n.mjs.map +1 -0
  12. package/dist/chunk-BounceLoading-C6n4BZVJ.cjs +11 -0
  13. package/dist/chunk-BounceLoading-C6n4BZVJ.cjs.map +1 -0
  14. package/dist/chunk-animations-Brp-bsaE.mjs +1243 -0
  15. package/dist/chunk-animations-Brp-bsaE.mjs.map +1 -0
  16. package/dist/chunk-animations-e2F3zuP9.cjs +190 -0
  17. package/dist/chunk-animations-e2F3zuP9.cjs.map +1 -0
  18. package/dist/chunk-chunk-BFrxaqQT.cjs +1 -0
  19. package/dist/chunk-i18n-Bp6pPM9n.mjs +207 -0
  20. package/dist/chunk-i18n-Bp6pPM9n.mjs.map +1 -0
  21. package/dist/chunk-i18n-_7W7guSV.cjs +3 -0
  22. package/dist/chunk-i18n-_7W7guSV.cjs.map +1 -0
  23. package/dist/chunk-lstorage-BVCD00Ow.mjs +27 -0
  24. package/dist/chunk-lstorage-BVCD00Ow.mjs.map +1 -0
  25. package/dist/chunk-lstorage-BnxLXHgH.cjs +3 -0
  26. package/dist/chunk-lstorage-BnxLXHgH.cjs.map +1 -0
  27. package/dist/chunk-lucide-BhgnmTNo.mjs +158 -0
  28. package/dist/chunk-lucide-BhgnmTNo.mjs.map +1 -0
  29. package/dist/chunk-lucide-CP2lvOPY.cjs +3 -0
  30. package/dist/chunk-lucide-CP2lvOPY.cjs.map +1 -0
  31. package/dist/chunk-preference-CYl68oeU.cjs +3 -0
  32. package/dist/chunk-preference-CYl68oeU.cjs.map +1 -0
  33. package/dist/chunk-preference-DImtu5jI.mjs +51 -0
  34. package/dist/chunk-preference-DImtu5jI.mjs.map +1 -0
  35. package/dist/chunk-types-BE3JCLff.cjs +3 -0
  36. package/dist/chunk-types-BE3JCLff.cjs.map +1 -0
  37. package/dist/chunk-types-BkFxelHl.mjs +20 -0
  38. package/dist/chunk-types-BkFxelHl.mjs.map +1 -0
  39. package/dist/chunk-types-C_opkZGr.cjs +3 -0
  40. package/dist/chunk-types-C_opkZGr.cjs.map +1 -0
  41. package/dist/chunk-types-CkbZrFqZ.cjs +3 -0
  42. package/dist/chunk-types-CkbZrFqZ.cjs.map +1 -0
  43. package/dist/chunk-types-DNPBKfmx.mjs +11 -0
  44. package/dist/chunk-types-DNPBKfmx.mjs.map +1 -0
  45. package/dist/chunk-types-SD4MzUGp.mjs +11 -0
  46. package/dist/chunk-types-SD4MzUGp.mjs.map +1 -0
  47. package/dist/chunk-useLayout-BAJHOIL3.cjs +3 -0
  48. package/dist/chunk-useLayout-BAJHOIL3.cjs.map +1 -0
  49. package/dist/chunk-useLayout-DPxlynT-.mjs +12 -0
  50. package/dist/chunk-useLayout-DPxlynT-.mjs.map +1 -0
  51. package/dist/chunk-useTheme-DgleVMMh.cjs +3 -0
  52. package/dist/chunk-useTheme-DgleVMMh.cjs.map +1 -0
  53. package/dist/chunk-useTheme-oHcq3d0o.mjs +13 -0
  54. package/dist/chunk-useTheme-oHcq3d0o.mjs.map +1 -0
  55. package/dist/components.cjs +8 -0
  56. package/dist/components.cjs.map +1 -0
  57. package/dist/components.d.ts +411 -0
  58. package/dist/components.mjs +1688 -0
  59. package/dist/components.mjs.map +1 -0
  60. package/dist/constants.cjs +5 -0
  61. package/dist/constants.cjs.map +1 -0
  62. package/dist/constants.d.ts +130 -0
  63. package/dist/constants.mjs +85 -0
  64. package/dist/constants.mjs.map +1 -0
  65. package/dist/events.cjs +5 -0
  66. package/dist/events.cjs.map +1 -0
  67. package/dist/events.d.ts +66 -0
  68. package/dist/events.mjs +31 -0
  69. package/dist/events.mjs.map +1 -0
  70. package/dist/hooks.cjs +5 -0
  71. package/dist/hooks.cjs.map +1 -0
  72. package/dist/hooks.d.ts +316 -0
  73. package/dist/hooks.mjs +107 -0
  74. package/dist/hooks.mjs.map +1 -0
  75. package/dist/icons.cjs +3 -0
  76. package/dist/icons.d.ts +218 -0
  77. package/dist/icons.mjs +76 -0
  78. package/dist/languages.cjs +5 -0
  79. package/dist/languages.cjs.map +1 -0
  80. package/dist/languages.d.ts +174 -0
  81. package/dist/languages.mjs +112 -0
  82. package/dist/languages.mjs.map +1 -0
  83. package/dist/layouts.cjs +5 -0
  84. package/dist/layouts.cjs.map +1 -0
  85. package/dist/layouts.d.ts +209 -0
  86. package/dist/layouts.mjs +460 -0
  87. package/dist/layouts.mjs.map +1 -0
  88. package/dist/navigations.cjs +5 -0
  89. package/dist/navigations.cjs.map +1 -0
  90. package/dist/navigations.d.ts +72 -0
  91. package/dist/navigations.mjs +30 -0
  92. package/dist/navigations.mjs.map +1 -0
  93. package/dist/preference.cjs +3 -0
  94. package/dist/preference.d.ts +94 -0
  95. package/dist/preference.mjs +14 -0
  96. package/dist/services.cjs +5 -0
  97. package/dist/services.cjs.map +1 -0
  98. package/dist/services.d.ts +8 -0
  99. package/dist/services.mjs +26 -0
  100. package/dist/services.mjs.map +1 -0
  101. package/dist/stores.cjs +5 -0
  102. package/dist/stores.cjs.map +1 -0
  103. package/dist/stores.d.ts +101 -0
  104. package/dist/stores.mjs +167 -0
  105. package/dist/stores.mjs.map +1 -0
  106. package/dist/themes.cjs +5 -0
  107. package/dist/themes.cjs.map +1 -0
  108. package/dist/themes.d.ts +229 -0
  109. package/dist/themes.mjs +894 -0
  110. package/dist/themes.mjs.map +1 -0
  111. package/dist/types.cjs +2 -0
  112. package/dist/types.d.ts +147 -0
  113. package/dist/types.mjs +2 -0
  114. package/dist/utils.cjs +5 -0
  115. package/dist/utils.cjs.map +1 -0
  116. package/dist/utils.d.ts +374 -0
  117. package/dist/utils.mjs +293 -0
  118. package/dist/utils.mjs.map +1 -0
  119. package/package.json +196 -0
@@ -0,0 +1,411 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ import { ForwardRefExoticComponent } from 'react';
3
+ import { InputHTMLAttributes } from 'react';
4
+ import { JSX } from 'react/jsx-runtime';
5
+ import * as LucideIcons from '@/icons/lucide';
6
+ import { LucideProps } from 'lucide-react';
7
+ import { MemoExoticComponent } from 'react';
8
+ import { NamedExoticComponent } from 'react';
9
+ import { QueryErrorResetBoundaryProps } from '@tanstack/react-query';
10
+ import { ReactNode } from 'react';
11
+ import { RefAttributes } from 'react';
12
+ import { SuspenseProps as SuspenseProps_2 } from 'react';
13
+ import { TextareaHTMLAttributes } from 'react';
14
+ import { VirtualizerOptions } from '@tanstack/react-virtual';
15
+
16
+ export declare const Button: ForwardRefExoticComponent<ButtonProps & RefAttributes<HTMLButtonElement>>;
17
+
18
+ export declare interface ButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "size"> {
19
+ variant?: "primary" | "secondary" | "outline" | "ghost" | "danger";
20
+ size?: "small" | "medium" | "large";
21
+ fullWidth?: boolean;
22
+ leftIcon?: ReactNode;
23
+ rightIcon?: ReactNode;
24
+ /** 上方图标。Top icon. */
25
+ topIcon?: ReactNode;
26
+ /** 下方图标。Bottom icon. */
27
+ bottomIcon?: ReactNode;
28
+ /** 仅图标无文案。Icon only, no text. */
29
+ iconOnly?: boolean;
30
+ /** 图标尺寸覆盖。Override icon size. */
31
+ iconSize?: number;
32
+ loading?: boolean;
33
+ children?: ReactNode;
34
+ }
35
+
36
+ export declare const Dropdown: NamedExoticComponent<DropdownProps>;
37
+
38
+ export declare interface DropdownOption {
39
+ /** 选项值。Option value. */
40
+ value: string;
41
+ /** 选项展示文案。Option label. */
42
+ label: string;
43
+ }
44
+
45
+ export declare interface DropdownProps {
46
+ /** 选项列表。Options list. */
47
+ options: DropdownOption[];
48
+ /** 当前选中值。Current value. */
49
+ value: string;
50
+ /** 选中回调。Change callback. */
51
+ onChange: (value: string) => void;
52
+ /** 占位符。Placeholder. */
53
+ placeholder?: string;
54
+ /** 是否禁用。Disabled. */
55
+ disabled?: boolean;
56
+ /** 是否错误态。Error state. */
57
+ error?: boolean;
58
+ /** 容器 className。Container className. */
59
+ className?: string;
60
+ }
61
+
62
+ export declare const Icon: MemoExoticComponent<({ name, ...props }: IconProps) => JSX.Element | null>;
63
+
64
+ export declare type IconName = keyof Omit<typeof LucideIcons, "LucideIcon">;
65
+
66
+ export declare interface IconProps extends LucideProps {
67
+ /** 图标名(lucide 注册名)。Icon name (lucide registered name). */
68
+ name: IconName;
69
+ }
70
+
71
+ export declare const Input: ForwardRefExoticComponent<InputProps & RefAttributes<HTMLInputElement>>;
72
+
73
+ export declare interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "size"> {
74
+ /** 标签文案。Label text. */
75
+ label?: string;
76
+ /** 错误信息。Error message. */
77
+ error?: string;
78
+ /** 辅助说明。Helper text. */
79
+ helperText?: string;
80
+ /** 左侧图标。Left icon. */
81
+ leftIcon?: ReactNode;
82
+ /** 右侧图标。Right icon. */
83
+ rightIcon?: ReactNode;
84
+ /** 为 true 时 rightIcon 可点击(如密码切换、清除按钮)。When true, right icon is clickable (e.g. password toggle, clear). */
85
+ rightIconInteractive?: boolean;
86
+ /** 尺寸。Size. */
87
+ size?: "small" | "medium" | "large";
88
+ /** 视觉变体。Variant. */
89
+ variant?: "default" | "filled";
90
+ /** 是否占满宽度。Full width. */
91
+ fullWidth?: boolean;
92
+ }
93
+
94
+ export declare const KeyValueEditor: MemoExoticComponent<({ label, pairs, onChange, valueType, keyPlaceholder, valuePlaceholder, valueArrayPlaceholder, removeAriaLabel, addLabel, error, }: KeyValueEditorProps) => JSX.Element>;
95
+
96
+ export declare interface KeyValueEditorProps {
97
+ /** 表单项标签。Field label. */
98
+ label: string;
99
+ /** 键值对列表。Key-value pairs. */
100
+ pairs: KeyValuePair[];
101
+ /** 列表变化回调。Change callback. */
102
+ onChange: (pairs: KeyValuePair[]) => void;
103
+ /** 值类型:string 或 array。Value type: string or array. */
104
+ valueType?: "string" | "array";
105
+ /** 键占位符。Key placeholder. */
106
+ keyPlaceholder?: string;
107
+ /** 值占位符(string 模式)。Value placeholder (string mode). */
108
+ valuePlaceholder?: string;
109
+ /** 值占位符(array 模式)。Value placeholder (array mode). */
110
+ valueArrayPlaceholder?: string;
111
+ /** 删除按钮 aria-label。Remove button aria-label. */
112
+ removeAriaLabel?: string;
113
+ /** 新增按钮文案。Add button label. */
114
+ addLabel?: string;
115
+ /** 错误信息。Error message. */
116
+ error?: string;
117
+ }
118
+
119
+ export declare interface KeyValuePair {
120
+ /** 键。Key. */
121
+ key: string;
122
+ /** 值(字符串或字符串数组)。Value (string or string[]). */
123
+ value: string | string[];
124
+ }
125
+
126
+ /**
127
+ * 布局模式枚举与常量。Layout mode enum and constants.
128
+ */
129
+ declare enum LayoutModeEnum {
130
+ SHOW = "show",
131
+ HIDE = "hide"
132
+ }
133
+
134
+ export declare const LayoutSwitcher: MemoExoticComponent<({ status, getLayoutDisplayName, handleChangeLayoutMode }: LayoutSwitcherProps) => JSX.Element>;
135
+
136
+ /** 布局切换器 props。LayoutSwitcher props. */
137
+ export declare interface LayoutSwitcherProps {
138
+ /** 样式状态。Visual status. */
139
+ status?: "primary" | "default";
140
+ /** 显示模式标签(未传 getLayoutDisplayName 且无内置翻译时使用)。Show mode label. */
141
+ showLabel?: string;
142
+ /** 隐藏模式标签(未传 getLayoutDisplayName 且无内置翻译时使用)。Hide mode label. */
143
+ hideLabel?: string;
144
+ /** 根据布局模式返回展示名;未传则使用 showLabel / hideLabel。Display name for layout mode; default uses showLabel/hideLabel. */
145
+ getLayoutDisplayName?: (mode: LayoutModeEnum) => string;
146
+ /** 处理布局模式改变。Handle layout mode change. */
147
+ handleChangeLayoutMode?: (mode: LayoutModeEnum) => void;
148
+ }
149
+
150
+ export declare const SearchInput: MemoExoticComponent<({ value, onChange, placeholder, clearButtonAriaLabel }: SearchInputProps) => JSX.Element>;
151
+
152
+ export declare interface SearchInputProps {
153
+ /** 当前输入值。Current value. */
154
+ value: string;
155
+ /** 值变化回调。Change callback. */
156
+ onChange: (value: string) => void;
157
+ /** 占位符,由调用方传入。Placeholder; pass from caller. */
158
+ placeholder?: string;
159
+ /** 清除按钮 aria-label;由调用方传入(可来自 i18n)。Clear button aria-label; pass from caller. */
160
+ clearButtonAriaLabel?: string;
161
+ }
162
+
163
+ export declare const ShowFilter: MemoExoticComponent<({ value, onChange, filterEnabled, filterDisabled, enableFilterAriaLabel, disableFilterAriaLabel, all, show, hide, }: ShowFilterProps) => JSX.Element>;
164
+
165
+ export declare interface ShowFilterProps {
166
+ /** 当前值。Current value. */
167
+ value: ShowFilterValue;
168
+ /** 值变化回调。Change callback. */
169
+ onChange: (value: ShowFilterValue) => void;
170
+ /** 筛选开启时的按钮文案。Label when filter enabled. */
171
+ filterEnabled?: string;
172
+ /** 筛选关闭时的按钮文案。Label when filter disabled. */
173
+ filterDisabled?: string;
174
+ /** 开启筛选按钮的 aria-label。Aria-label for enable filter button. */
175
+ enableFilterAriaLabel?: string;
176
+ /** 关闭筛选按钮的 aria-label。Aria-label for disable filter button. */
177
+ disableFilterAriaLabel?: string;
178
+ /** 「全部」选项文案。Label for "all" option. */
179
+ all?: string;
180
+ /** 「显示」选项文案。Label for "show" option. */
181
+ show?: string;
182
+ /** 「隐藏」选项文案。Label for "hide" option. */
183
+ hide?: string;
184
+ }
185
+
186
+ export declare interface ShowFilterValue {
187
+ /** 筛选是否启用。Whether filter is enabled. */
188
+ enabled: boolean;
189
+ /** 显示/隐藏:null=全部,true=显示,false=隐藏。Show/hide: null=all, true=show, false=hide. */
190
+ value: boolean | null;
191
+ }
192
+
193
+ export declare const SlideDownSwitcher: typeof SlideDownSwitcherInner & {
194
+ displayName?: string;
195
+ };
196
+
197
+ declare const SlideDownSwitcherInner: <T extends string>({ value, options, getDisplayName, onChange, status }: SlideDownSwitcherProps<T>) => JSX.Element;
198
+
199
+ export declare interface SlideDownSwitcherProps<T extends string> {
200
+ /** 当前选中的值(enum 或 string) */
201
+ value: T;
202
+ /** 可选项列表(如 Object.values(SomeEnum)) */
203
+ options: readonly T[];
204
+ /** 选项展示文案 */
205
+ getDisplayName: (value: T) => string;
206
+ /** 选中后回调 */
207
+ onChange: (value: T) => void;
208
+ status?: "primary" | "default";
209
+ }
210
+
211
+ export declare const Slider: NamedExoticComponent<SliderProps & RefAttributes<HTMLDivElement>>;
212
+
213
+ export declare interface SliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange"> {
214
+ /** 当前值。Current value. */
215
+ value: number;
216
+ /** 值变化回调。Change callback. */
217
+ onChange: (value: number) => void;
218
+ /** 最小值。Minimum. */
219
+ min?: number;
220
+ /** 最大值。Maximum. */
221
+ max?: number;
222
+ /** 步长。Step. */
223
+ step?: number;
224
+ /** 是否显示数值。Show value. */
225
+ showValue?: boolean;
226
+ /** 是否占满宽度。Full width. */
227
+ fullWidth?: boolean;
228
+ /** 标签文案。Label text. */
229
+ label?: string;
230
+ /** 错误信息。Error message. */
231
+ error?: string;
232
+ /** 辅助说明。Helper text. */
233
+ helperText?: string;
234
+ /** 是否必填。Required. */
235
+ required?: boolean;
236
+ }
237
+
238
+ export declare const Suspense: MemoExoticComponent<({ fallback, test, loadingType, loadingShape, loadingClassName, loadingText, loadingSize, loadingContainerClassName, loadingTextClassName, children, errorFallback, errorTitle, errorDescription, retryText, errorDetailsText, clearLocalDataText, onClearLocalData, errorContainerClassName, errorDetailsClassName, showErrorDetails, ...restProps }: SuspenseProps) => JSX.Element>;
239
+
240
+ export declare interface SuspenseProps extends Omit<SuspenseProps_2, "fallback">, Omit<QueryErrorResetBoundaryProps, "children"> {
241
+ /** 自定义 fallback。Custom fallback. */
242
+ fallback?: ReactNode;
243
+ /** 测试用:始终挂起。Test: always suspend. */
244
+ test?: boolean;
245
+ /** 加载动画类型。Loading type. */
246
+ loadingType?: "ecg" | "truck" | "bounce";
247
+ /** 加载图形形状。Loading shape. */
248
+ loadingShape?: "square" | "circle";
249
+ /** 加载中文案,由调用方传入。Loading text; pass from caller (e.g. i18n). */
250
+ loadingText?: string;
251
+ /** 加载图尺寸。Loading size. */
252
+ loadingSize?: "small" | "medium" | "large";
253
+ /** 加载容器 className。Loading container className. */
254
+ loadingContainerClassName?: string;
255
+ /** 加载文案 className。Loading text className. */
256
+ loadingTextClassName?: string;
257
+ /** 加载图 className。Loading className. */
258
+ loadingClassName?: string;
259
+ /** 自定义错误 UI。Custom error fallback. */
260
+ errorFallback?: (args: {
261
+ error: Error | null;
262
+ retry: () => void;
263
+ }) => ReactNode;
264
+ /** 错误标题,由调用方传入。Error title; pass from caller. */
265
+ errorTitle?: string;
266
+ /** 错误描述,由调用方传入。Error description; pass from caller. */
267
+ errorDescription?: string;
268
+ /** 重试按钮文案,由调用方传入。Retry text; pass from caller. */
269
+ retryText?: string;
270
+ /** 错误详情折叠文案。Error details text. */
271
+ errorDetailsText?: string;
272
+ /** 清除本地数据按钮文案。Clear local data text. */
273
+ clearLocalDataText?: string;
274
+ /** 点击「清除本地数据」后执行(如跳转登录页),由调用方传入。Called after clear local data (e.g. navigate to login); pass from caller. */
275
+ onClearLocalData?: () => void;
276
+ /** 错误容器 className。Error container className. */
277
+ errorContainerClassName?: string;
278
+ /** 错误详情 className。Error details className. */
279
+ errorDetailsClassName?: string;
280
+ /** 是否展示错误详情。Show error details. */
281
+ showErrorDetails?: boolean;
282
+ }
283
+
284
+ export declare const Textarea: ForwardRefExoticComponent<TextareaProps & RefAttributes<HTMLTextAreaElement>>;
285
+
286
+ export declare interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, "size"> {
287
+ /** 标签文案。Label text. */
288
+ label?: string;
289
+ /** 错误信息。Error message. */
290
+ error?: string;
291
+ /** 辅助说明。Helper text. */
292
+ helperText?: string;
293
+ /** 左侧图标。Left icon. */
294
+ leftIcon?: ReactNode;
295
+ /** 右侧图标。Right icon. */
296
+ rightIcon?: ReactNode;
297
+ /** 尺寸。Size. */
298
+ size?: "small" | "medium" | "large";
299
+ /** 视觉变体。Variant. */
300
+ variant?: "default" | "filled";
301
+ /** 是否占满宽度。Full width. */
302
+ fullWidth?: boolean;
303
+ }
304
+
305
+ /** 颜色主题枚举 */
306
+ declare enum ThemeEnum {
307
+ DEFAULT = "default",
308
+ LIGHT = "light",
309
+ CORPORATE = "corporate",
310
+ FOREST = "forest",
311
+ DARK = "dark",
312
+ COSMIC = "cosmic",
313
+ COFFEE = "coffee",
314
+ WINE = "wine"
315
+ }
316
+
317
+ export declare const ThemeSwitcher: MemoExoticComponent<({ status, getThemeDisplayName, handleChangeTheme }: ThemeSwitcherProps) => JSX.Element>;
318
+
319
+ /** 主题切换器 props。ThemeSwitcher props. */
320
+ export declare interface ThemeSwitcherProps {
321
+ /** 样式状态。Visual status. */
322
+ status?: "primary" | "default";
323
+ /** 根据 theme 返回显示名称;未传则使用 theme 原值。Display name for theme; default is theme value. */
324
+ getThemeDisplayName?: (theme: ThemeEnum) => string;
325
+ /** 处理主题改变。Handle theme change. */
326
+ handleChangeTheme?: (theme: ThemeEnum) => void;
327
+ }
328
+
329
+ export declare const VirtualList: typeof VirtualListComponent;
330
+
331
+ declare function VirtualListComponent<T>({ data, hasNextPage, isFetchingNextPage, fetchNextPage, renderItem, estimateSize, overscan, height, getItemKey, emptyState, loadingIndicator, endOfListIndicator, emptyText, loadingMoreText, endOfListText, flexClass, outerClass, innerClass, ...virtualizerOptions }: VirtualListProps<T>): JSX.Element;
332
+
333
+ export declare interface VirtualListProps<T> extends Partial<Omit<VirtualizerOptions<HTMLDivElement, Element>, "count" | "getScrollElement" | "observeElementRect" | "observeElementOffset" | "scrollToFn" | "getItemKey" | "estimateSize">> {
334
+ /** 数据列表。Data array. */
335
+ data: T[];
336
+ /** 是否有下一页。Has next page. */
337
+ hasNextPage?: boolean;
338
+ /** 是否正在拉取下一页。Is fetching next page. */
339
+ isFetchingNextPage?: boolean;
340
+ /** 拉取下一页。Fetch next page. */
341
+ fetchNextPage?: () => void;
342
+ /** 单项渲染。Render item. */
343
+ renderItem: (item: T, index: number) => ReactNode;
344
+ /** 单项高度估计。Estimate item size. */
345
+ estimateSize?: number | ((index: number) => number);
346
+ /** 列表高度。List height. */
347
+ height?: string | number;
348
+ /** 单项 key。Get item key. */
349
+ getItemKey: (item: T, index: number) => string | number;
350
+ /** 空状态自定义节点。Empty state node. */
351
+ emptyState?: ReactNode;
352
+ /** 加载更多指示器。Loading indicator node. */
353
+ loadingIndicator?: ReactNode;
354
+ /** 列表底指示器。End of list indicator node. */
355
+ endOfListIndicator?: ReactNode;
356
+ /** 当未提供 emptyState 时使用的文案,由调用方传入。Text when no data; used when emptyState not provided. */
357
+ emptyText?: string;
358
+ /** 当未提供 loadingIndicator 时使用的文案。Text when loading more. */
359
+ loadingMoreText?: string;
360
+ /** 当未提供 endOfListIndicator 时使用的文案。Text at end of list. */
361
+ endOfListText?: string;
362
+ /** 列表项容器 className。Flex container class. */
363
+ flexClass?: string;
364
+ /** 外层容器 className。Outer class. */
365
+ outerClass?: string;
366
+ /** 内层容器 className。Inner class. */
367
+ innerClass?: string;
368
+ }
369
+
370
+ export declare const VirtualWindowList: typeof VirtualWindowListComponent;
371
+
372
+ declare function VirtualWindowListComponent<T>({ data, hasNextPage, isFetchingNextPage, fetchNextPage, renderItem, estimateSize, overscan, height, getItemKey, emptyState, loadingIndicator, endOfListIndicator, emptyText, loadingMoreText, endOfListText, flexClass, outerClass, innerClass, ...virtualizerOptions }: VirtualWindowListProps<T>): JSX.Element;
373
+
374
+ export declare interface VirtualWindowListProps<T> extends Partial<Omit<VirtualizerOptions<Window, Element>, "count" | "getScrollElement" | "observeElementRect" | "observeElementOffset" | "scrollToFn" | "estimateSize" | "getItemKey">> {
375
+ /** 数据列表。Data array. */
376
+ data: T[];
377
+ /** 是否有下一页。Has next page. */
378
+ hasNextPage?: boolean;
379
+ /** 是否正在拉取下一页。Is fetching next page. */
380
+ isFetchingNextPage?: boolean;
381
+ /** 拉取下一页。Fetch next page. */
382
+ fetchNextPage?: () => void;
383
+ /** 单项渲染。Render item. */
384
+ renderItem: (item: T, index: number) => ReactNode;
385
+ /** 单项高度估计。Estimate item size. */
386
+ estimateSize?: number | ((index: number) => number);
387
+ /** 列表高度。List height. */
388
+ height?: string | number;
389
+ /** 单项 key。Get item key. */
390
+ getItemKey: (item: T, index: number) => string | number;
391
+ /** 空状态自定义节点。Empty state node. */
392
+ emptyState?: ReactNode;
393
+ /** 加载更多指示器。Loading indicator node. */
394
+ loadingIndicator?: ReactNode;
395
+ /** 列表底指示器。End of list indicator node. */
396
+ endOfListIndicator?: ReactNode;
397
+ /** 空状态文案(未提供 emptyState 时)。Empty text. */
398
+ emptyText?: string;
399
+ /** 加载更多文案。Loading more text. */
400
+ loadingMoreText?: string;
401
+ /** 列表底文案。End of list text. */
402
+ endOfListText?: string;
403
+ /** 列表项容器 className。Flex container class. */
404
+ flexClass?: string;
405
+ /** 外层容器 className。Outer class. */
406
+ outerClass?: string;
407
+ /** 内层容器 className。Inner class. */
408
+ innerClass?: string;
409
+ }
410
+
411
+ export { }