@q1travel/design-system 0.22.0 → 0.24.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/contracts/design.dark.md +33 -8
- package/contracts/design.md +33 -8
- package/contracts/implementation-map.md +44 -4
- package/contracts/interface-guidelines.md +3 -3
- package/contracts/token-naming.md +4 -0
- package/dist-pkg/design-system.d.ts +273 -39
- package/dist-pkg/design-system.js +6290 -5539
- package/dist-pkg/style.css +485 -20
- package/dist-pkg/tokens.css +8 -0
- package/package.json +2 -2
|
@@ -214,6 +214,22 @@ export declare function BrowserTabs({ tabs, className }: {
|
|
|
214
214
|
|
|
215
215
|
export declare type BrowserVariant = 'light' | 'dark';
|
|
216
216
|
|
|
217
|
+
export declare function Bubble({ direction, avatar, name, time, children, status, pending, error, retry, onRetry, actions, className, ...props }: BubbleProps): JSX.Element;
|
|
218
|
+
|
|
219
|
+
export declare type BubbleProps = Omit<ComponentPropsWithoutRef<'article'>, 'children'> & {
|
|
220
|
+
direction?: 'incoming' | 'outgoing';
|
|
221
|
+
avatar?: ReactNode;
|
|
222
|
+
name?: ReactNode;
|
|
223
|
+
time?: ReactNode;
|
|
224
|
+
children: ReactNode;
|
|
225
|
+
status?: 'default' | 'pending' | 'error';
|
|
226
|
+
pending?: ReactNode;
|
|
227
|
+
error?: ReactNode;
|
|
228
|
+
retry?: ReactNode;
|
|
229
|
+
onRetry?: () => void;
|
|
230
|
+
actions?: ReactNode;
|
|
231
|
+
};
|
|
232
|
+
|
|
217
233
|
export declare function Button(props: ButtonProps): JSX.Element;
|
|
218
234
|
|
|
219
235
|
declare type ButtonAccessibleName = {
|
|
@@ -315,13 +331,12 @@ export declare type ButtonSize = 'sm' | 'md' | 'lg';
|
|
|
315
331
|
|
|
316
332
|
export declare type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'warning' | 'danger';
|
|
317
333
|
|
|
318
|
-
/**
|
|
334
|
+
/** 标准日期与区间选择器;复用 RangeField 的草稿、弹层和键盘行为。 */
|
|
319
335
|
export declare function Calendar(props: CalendarProps): JSX.Element;
|
|
320
336
|
|
|
321
|
-
export declare function CalendarGrid(
|
|
322
|
-
value: RangeValue;
|
|
323
|
-
onChange: (next: RangeValue) => void;
|
|
337
|
+
export declare function CalendarGrid(props: CalendarSelectionProps & {
|
|
324
338
|
size?: CalendarSize;
|
|
339
|
+
withTime?: boolean;
|
|
325
340
|
minValue?: Date;
|
|
326
341
|
maxValue?: Date;
|
|
327
342
|
today?: Date;
|
|
@@ -334,6 +349,16 @@ export declare type CalendarPreset = {
|
|
|
334
349
|
|
|
335
350
|
export declare type CalendarProps = ComponentProps<typeof RangeField>;
|
|
336
351
|
|
|
352
|
+
export declare type CalendarSelectionProps = {
|
|
353
|
+
mode?: 'range';
|
|
354
|
+
value: RangeValue;
|
|
355
|
+
onChange: (next: RangeValue) => void;
|
|
356
|
+
} | {
|
|
357
|
+
mode: 'single';
|
|
358
|
+
value: Date | null;
|
|
359
|
+
onChange: (next: Date | null) => void;
|
|
360
|
+
};
|
|
361
|
+
|
|
337
362
|
export declare type CalendarSize = 'large' | 'small';
|
|
338
363
|
|
|
339
364
|
export declare function Card(props: CardProps): JSX.Element;
|
|
@@ -393,7 +418,7 @@ export declare type ChartProps = {
|
|
|
393
418
|
className?: string;
|
|
394
419
|
};
|
|
395
420
|
|
|
396
|
-
export declare function Checkbox({ ...props }: CheckboxProps): JSX.Element;
|
|
421
|
+
export declare function Checkbox({ shape, tone, size, ...props }: CheckboxProps): JSX.Element;
|
|
397
422
|
|
|
398
423
|
declare type CheckboxOnlyProps = {
|
|
399
424
|
/** 半选:视觉态而非第三个值,由父级逻辑驱动(如"部分子项已选")。AT 读作 mixed。 */
|
|
@@ -401,7 +426,14 @@ declare type CheckboxOnlyProps = {
|
|
|
401
426
|
};
|
|
402
427
|
|
|
403
428
|
/** Checkbox 的完整 props。消费方包一层时用它标注,无需知道内部由哪几块组合而成。 */
|
|
404
|
-
export declare type CheckboxProps = ControlOptionOwnProps & (FieldShellProps | FieldBareProps) & CheckboxOnlyProps &
|
|
429
|
+
export declare type CheckboxProps = ControlOptionOwnProps & (FieldShellProps | FieldBareProps) & FieldLabelVisibilityProps & CheckboxOnlyProps & {
|
|
430
|
+
/** 圆形仅用于任务与清单完成;表单多选保留默认方形。 */
|
|
431
|
+
shape?: 'square' | 'circle';
|
|
432
|
+
/** 仅圆形生效;业务方自行映射优先级。 */
|
|
433
|
+
tone?: 'neutral' | 'info' | 'warning' | 'danger';
|
|
434
|
+
/** 圆形清单 sm / 详情 md;默认 sm。 */
|
|
435
|
+
size?: 'sm' | 'md';
|
|
436
|
+
} & Omit<ControlOptionNativeInputProps, 'size'>;
|
|
405
437
|
|
|
406
438
|
export declare function Choicebox({ type, label, description, extra, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, ...rest }: ChoiceboxProps): JSX.Element;
|
|
407
439
|
|
|
@@ -596,7 +628,11 @@ export declare type CommandMenuSection = {
|
|
|
596
628
|
items: CommandMenuItem[];
|
|
597
629
|
};
|
|
598
630
|
|
|
599
|
-
export declare function Composer({ onSubmit, onAttach, attachments, mentions, disabled, }: ComposerProps): JSX.Element;
|
|
631
|
+
export declare function Composer({ onSubmit, onAttach, attachments, mentions, onMentionQuery, placeholder, hint, commands, onCommand, disabled, }: ComposerProps): JSX.Element;
|
|
632
|
+
|
|
633
|
+
export declare type ComposerCommand = ComposerMention & {
|
|
634
|
+
keywords?: string[];
|
|
635
|
+
};
|
|
600
636
|
|
|
601
637
|
export declare type ComposerMention = {
|
|
602
638
|
id: string;
|
|
@@ -606,9 +642,14 @@ export declare type ComposerMention = {
|
|
|
606
642
|
|
|
607
643
|
export declare type ComposerProps = {
|
|
608
644
|
onSubmit: (submission: ComposerSubmission) => void;
|
|
609
|
-
onAttach?: () => void;
|
|
645
|
+
onAttach?: (() => void) | ((files: File[]) => void);
|
|
646
|
+
commands?: ComposerCommand[];
|
|
647
|
+
onCommand?: (id: string, argumentText: string) => void;
|
|
610
648
|
attachments?: ReactNode;
|
|
611
649
|
mentions?: ComposerMention[];
|
|
650
|
+
onMentionQuery?: MentionQuery;
|
|
651
|
+
placeholder?: string;
|
|
652
|
+
hint?: ReactNode;
|
|
612
653
|
disabled?: boolean;
|
|
613
654
|
};
|
|
614
655
|
|
|
@@ -760,7 +801,7 @@ export declare type ContextSwitcherSearch = {
|
|
|
760
801
|
noResults: ContextSwitcherEmptyState;
|
|
761
802
|
};
|
|
762
803
|
|
|
763
|
-
export declare function ControlOption({ id, label, description, error, indeterminate, ref, type, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, onClick, ...rest }: ControlOptionProps): JSX.Element;
|
|
804
|
+
export declare function ControlOption({ id, label, labelHidden, description, error, indeterminate, ref, type, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, onClick, ...rest }: ControlOptionProps): JSX.Element;
|
|
764
805
|
|
|
765
806
|
declare type ControlOptionNativeInputProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'id' | 'type'>;
|
|
766
807
|
|
|
@@ -772,7 +813,7 @@ declare type ControlOptionOwnProps = {
|
|
|
772
813
|
};
|
|
773
814
|
|
|
774
815
|
/** ControlOption 的完整 props(Checkbox / Radio 的共同底座,须显式给 type)。 */
|
|
775
|
-
export declare type ControlOptionProps = ControlOptionOwnProps & (FieldShellProps | FieldBareProps) & CheckboxOnlyProps & {
|
|
816
|
+
export declare type ControlOptionProps = ControlOptionOwnProps & (FieldShellProps | FieldBareProps) & FieldLabelVisibilityProps & CheckboxOnlyProps & {
|
|
776
817
|
type: 'checkbox' | 'radio';
|
|
777
818
|
} & ControlOptionNativeInputProps;
|
|
778
819
|
|
|
@@ -830,14 +871,18 @@ export declare type DocsPaginationProps = {
|
|
|
830
871
|
next?: DocsPageLink;
|
|
831
872
|
};
|
|
832
873
|
|
|
833
|
-
export declare function DotsMenu({ entries, size, disabled, align, }: {
|
|
874
|
+
export declare function DotsMenu({ entries, size, disabled, align, label, }: {
|
|
834
875
|
entries: DotsMenuEntry[];
|
|
876
|
+
label?: string;
|
|
835
877
|
size?: 'sm' | 'md' | 'lg';
|
|
836
878
|
disabled?: boolean;
|
|
837
879
|
align?: 'start' | 'end';
|
|
838
880
|
}): JSX.Element;
|
|
839
881
|
|
|
840
882
|
export declare type DotsMenuEntry = {
|
|
883
|
+
type: 'separator';
|
|
884
|
+
} | {
|
|
885
|
+
type?: 'item';
|
|
841
886
|
label: string;
|
|
842
887
|
disabled?: boolean;
|
|
843
888
|
danger?: boolean;
|
|
@@ -865,6 +910,9 @@ export declare function EmptyState({ icon, title, description, actions, headingL
|
|
|
865
910
|
headingLevel?: 2 | 3 | 4 | 5 | 6;
|
|
866
911
|
}): JSX.Element;
|
|
867
912
|
|
|
913
|
+
/** Public host for consumer-owned sibling portals. Package overlays share this Foundation root. */
|
|
914
|
+
export declare function ensurePopoverRoot(): HTMLElement | null;
|
|
915
|
+
|
|
868
916
|
export declare function Entity({ leading, title, subtitle, trailing, }: {
|
|
869
917
|
leading?: ReactNode;
|
|
870
918
|
title: string;
|
|
@@ -926,6 +974,14 @@ declare type FieldBareProps = {
|
|
|
926
974
|
error?: never;
|
|
927
975
|
};
|
|
928
976
|
|
|
977
|
+
export declare type FieldLabelVisibilityProps = {
|
|
978
|
+
label: string;
|
|
979
|
+
labelHidden?: boolean;
|
|
980
|
+
} | {
|
|
981
|
+
label?: never;
|
|
982
|
+
labelHidden?: never;
|
|
983
|
+
};
|
|
984
|
+
|
|
929
985
|
export declare function Fieldset({ title, subtitle, tone, footerStatus, footerAction, disabled, children, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, }: {
|
|
930
986
|
title?: string;
|
|
931
987
|
subtitle: string;
|
|
@@ -963,23 +1019,60 @@ export declare type FileTreeNode = {
|
|
|
963
1019
|
};
|
|
964
1020
|
|
|
965
1021
|
/** 筛选选择器入口;弹层、筛选值与 expanded 状态归调用方。 */
|
|
966
|
-
export declare
|
|
1022
|
+
export declare const FilterChip: ForwardRefExoticComponent< {
|
|
1023
|
+
label: string;
|
|
1024
|
+
/** 可选同高尺寸;默认 sm(32px)胶囊。 */
|
|
1025
|
+
size?: ButtonSize;
|
|
1026
|
+
/** undefined 表示未设置;0、空字符串和 null 仍是已设置。 */
|
|
1027
|
+
value?: ReactNode;
|
|
1028
|
+
onClear?: () => void;
|
|
1029
|
+
} & Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children" | "value"> & RefAttributes<HTMLButtonElement>>;
|
|
967
1030
|
|
|
968
1031
|
export declare type FilterChipProps = {
|
|
969
1032
|
label: string;
|
|
1033
|
+
/** 可选同高尺寸;默认 sm(32px)胶囊。 */
|
|
1034
|
+
size?: ButtonSize;
|
|
970
1035
|
/** undefined 表示未设置;0、空字符串和 null 仍是已设置。 */
|
|
971
1036
|
value?: ReactNode;
|
|
972
1037
|
onClear?: () => void;
|
|
973
1038
|
} & Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'value'>;
|
|
974
1039
|
|
|
975
|
-
export declare
|
|
976
|
-
|
|
1040
|
+
export declare type FilterOption = {
|
|
1041
|
+
value: string;
|
|
977
1042
|
label: string;
|
|
978
1043
|
description?: string;
|
|
1044
|
+
keywords?: string[];
|
|
1045
|
+
disabled?: boolean;
|
|
1046
|
+
};
|
|
1047
|
+
|
|
1048
|
+
/** 可搜索单选内容;调用方通过 Popover 管理关闭和入口焦点。每次打开时面板自行把焦点放进搜索框,无需向 Popover 传 initialFocus。 */
|
|
1049
|
+
export declare function FilterOptionPanel({ options, value, onSelect, label, searchPlaceholder, loading, error, onRetry, emptyText, noMatchText, filter, query: controlledQuery, onQueryChange }: FilterOptionPanelProps): JSX.Element;
|
|
1050
|
+
|
|
1051
|
+
export declare type FilterOptionPanelProps = {
|
|
1052
|
+
options: FilterOption[];
|
|
1053
|
+
value?: string;
|
|
1054
|
+
onSelect: (value: string) => void;
|
|
1055
|
+
/** 搜索框与列表的可访问名称。 */
|
|
1056
|
+
label: string;
|
|
1057
|
+
searchPlaceholder?: string;
|
|
1058
|
+
loading?: boolean;
|
|
1059
|
+
error?: ReactNode;
|
|
1060
|
+
onRetry?: () => void;
|
|
1061
|
+
emptyText?: ReactNode;
|
|
1062
|
+
noMatchText?: (query: string) => ReactNode;
|
|
1063
|
+
filter?: (options: FilterOption[], query: string) => FilterOption[];
|
|
1064
|
+
query?: string;
|
|
1065
|
+
onQueryChange?: (query: string) => void;
|
|
1066
|
+
};
|
|
1067
|
+
|
|
1068
|
+
export declare function FormField({ controlId, label, labelHidden, description, error, wide, children, }: {
|
|
1069
|
+
controlId: string;
|
|
1070
|
+
label?: string;
|
|
1071
|
+
description?: string;
|
|
979
1072
|
error?: string;
|
|
980
1073
|
wide?: boolean;
|
|
981
1074
|
children: ReactNode;
|
|
982
|
-
}): JSX.Element;
|
|
1075
|
+
} & FieldLabelVisibilityProps): JSX.Element;
|
|
983
1076
|
|
|
984
1077
|
export declare function Gauge({ value, size, showValue, tone, toneDirection, label, indeterminate, }: {
|
|
985
1078
|
value?: number;
|
|
@@ -998,6 +1091,21 @@ export declare type GaugeToneDirection = 'quota' | 'health';
|
|
|
998
1091
|
/** One coordinator per document, shared with all package overlays. Null during SSR. */
|
|
999
1092
|
export declare function getOverlayCoordinator(doc?: Document | null): OverlayCoordinator | null;
|
|
1000
1093
|
|
|
1094
|
+
/** Hoverable supplemental information; activation belongs to the trigger. */
|
|
1095
|
+
export declare function HoverCard({ trigger, children, openDelay, closeDelay, side, align, className }: HoverCardProps): JSX.Element;
|
|
1096
|
+
|
|
1097
|
+
export declare type HoverCardProps = {
|
|
1098
|
+
/** A named native button, or a component forwarding native button attributes. */
|
|
1099
|
+
trigger: ReactElement<ButtonHTMLAttributes<HTMLButtonElement>>;
|
|
1100
|
+
/** Supplemental, noninteractive content; essential information belongs in the page. */
|
|
1101
|
+
children: ReactNode;
|
|
1102
|
+
openDelay?: number;
|
|
1103
|
+
closeDelay?: number;
|
|
1104
|
+
side?: PopoverSide;
|
|
1105
|
+
align?: PopoverAlign;
|
|
1106
|
+
className?: string;
|
|
1107
|
+
};
|
|
1108
|
+
|
|
1001
1109
|
export declare function IconButton({ 'aria-label': canonicalAriaLabel, ariaLabel: legacyAriaLabel, 'aria-pressed': ariaPressed, disabled, loading, onClick, onBlur, onKeyDown, onPointerCancel, onPointerDown, onPointerLeave, onPointerUp, onLostPointerCapture, ...rest }: IconButtonProps): JSX.Element;
|
|
1002
1110
|
|
|
1003
1111
|
declare type IconButtonAccessibleName = {
|
|
@@ -1033,7 +1141,7 @@ export declare type IconButtonProps = IconButtonAccessibleName & IconButtonBaseP
|
|
|
1033
1141
|
ref?: Ref<HTMLButtonElement>;
|
|
1034
1142
|
};
|
|
1035
1143
|
|
|
1036
|
-
export declare function Input({ id, label, description, error, invalid, errorId, ref, prefix, suffix, prefixStyling, suffixStyling, rounded, wide, size, className, revealable, revealed, onRevealedChange, revealLabel, hideLabel, disabled, ...rest }: {
|
|
1144
|
+
export declare function Input({ id, label, labelHidden, description, error, invalid, errorId, ref, prefix, suffix, prefixStyling, suffixStyling, rounded, wide, size, className, revealable, revealed, onRevealedChange, revealLabel, hideLabel, disabled, ...rest }: {
|
|
1037
1145
|
/** 可选:未传时内部 useId 兜底(对齐 Combobox);显式传入时行为同 0.3.0。 */
|
|
1038
1146
|
id?: string;
|
|
1039
1147
|
/** 置 aria-invalid 的业务校验态,不渲染文案;与壳模式 error 并轨(invalid || Boolean(error))。 */
|
|
@@ -1070,9 +1178,9 @@ export declare function Input({ id, label, description, error, invalid, errorId,
|
|
|
1070
1178
|
rounded?: boolean;
|
|
1071
1179
|
wide?: boolean;
|
|
1072
1180
|
size?: FieldSize;
|
|
1073
|
-
} & (FieldShellProps | FieldBareProps) & Omit<InputHTMLAttributes<HTMLInputElement>, 'id' | 'size' | 'prefix'>): JSX.Element;
|
|
1181
|
+
} & (FieldShellProps | FieldBareProps) & FieldLabelVisibilityProps & Omit<InputHTMLAttributes<HTMLInputElement>, 'id' | 'size' | 'prefix'>): JSX.Element;
|
|
1074
1182
|
|
|
1075
|
-
export declare function InputOTP({ id, name, value, onValueChange, disabled, readOnly, required, invalid, errorId, size, separator, ref, label, description, error, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': describedBy, }: InputOTPProps): JSX.Element;
|
|
1183
|
+
export declare function InputOTP({ id, name, value, onValueChange, disabled, readOnly, required, invalid, errorId, size, separator, ref, label, labelHidden, description, error, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': describedBy, }: InputOTPProps): JSX.Element;
|
|
1076
1184
|
|
|
1077
1185
|
export declare type InputOTPProps = {
|
|
1078
1186
|
id?: string;
|
|
@@ -1090,7 +1198,7 @@ export declare type InputOTPProps = {
|
|
|
1090
1198
|
separator?: boolean;
|
|
1091
1199
|
ref?: Ref<HTMLInputElement>;
|
|
1092
1200
|
'aria-describedby'?: string;
|
|
1093
|
-
} & ((FieldShellProps & {
|
|
1201
|
+
} & FieldLabelVisibilityProps & ((FieldShellProps & {
|
|
1094
1202
|
'aria-label'?: never;
|
|
1095
1203
|
'aria-labelledby'?: never;
|
|
1096
1204
|
}) | (FieldBareProps & ({
|
|
@@ -1193,7 +1301,7 @@ export declare function Marker({ actor, time, variant, children, }: MarkerProps)
|
|
|
1193
1301
|
export declare type MarkerProps = {
|
|
1194
1302
|
actor?: ReactNode;
|
|
1195
1303
|
time?: ReactNode;
|
|
1196
|
-
variant?: 'default' | 'separator';
|
|
1304
|
+
variant?: 'default' | 'separator' | 'unread';
|
|
1197
1305
|
children: ReactNode;
|
|
1198
1306
|
};
|
|
1199
1307
|
|
|
@@ -1203,8 +1311,14 @@ export declare type MentionProps = {
|
|
|
1203
1311
|
children: ReactNode;
|
|
1204
1312
|
};
|
|
1205
1313
|
|
|
1206
|
-
|
|
1314
|
+
declare type MentionQuery = (query: string, options: {
|
|
1315
|
+
signal: AbortSignal;
|
|
1316
|
+
}) => Promise<ComposerMention[]>;
|
|
1317
|
+
|
|
1318
|
+
export declare function Menu({ label, entries, withChevron, align, triggerContent, size }: {
|
|
1207
1319
|
label: string;
|
|
1320
|
+
/** 文字触发器尺寸,默认 md;图标触发器保留原尺寸。 */
|
|
1321
|
+
size?: ButtonSize;
|
|
1208
1322
|
entries: MenuEntry[];
|
|
1209
1323
|
withChevron?: boolean;
|
|
1210
1324
|
align?: 'start' | 'end';
|
|
@@ -1265,7 +1379,7 @@ declare type MenuLinkBase = {
|
|
|
1265
1379
|
suffix?: ReactNode;
|
|
1266
1380
|
};
|
|
1267
1381
|
|
|
1268
|
-
export declare function Message({ author, avatar, time, children, attachments, actions, status, onRetry, }: MessageProps): JSX.Element;
|
|
1382
|
+
export declare function Message({ author, avatar, time, children, attachments, actions, acknowledgements, status, onRetry, }: MessageProps): JSX.Element;
|
|
1269
1383
|
|
|
1270
1384
|
export declare type MessageProps = {
|
|
1271
1385
|
author: ReactNode;
|
|
@@ -1274,10 +1388,31 @@ export declare type MessageProps = {
|
|
|
1274
1388
|
children: ReactNode;
|
|
1275
1389
|
attachments?: ReactNode;
|
|
1276
1390
|
actions?: ReactNode;
|
|
1391
|
+
acknowledgements?: ReactNode;
|
|
1277
1392
|
status?: 'default' | 'pending' | 'failed';
|
|
1278
1393
|
onRetry?: () => void;
|
|
1279
1394
|
};
|
|
1280
1395
|
|
|
1396
|
+
export declare function MessageScroller({ label, items, conversationKey, nearBottomThreshold, announcement, jumpLabel, before, empty, className, style }: MessageScrollerProps): JSX.Element;
|
|
1397
|
+
|
|
1398
|
+
export declare type MessageScrollerItem = {
|
|
1399
|
+
id: string | number;
|
|
1400
|
+
content: ReactNode;
|
|
1401
|
+
};
|
|
1402
|
+
|
|
1403
|
+
export declare type MessageScrollerProps = {
|
|
1404
|
+
label: string;
|
|
1405
|
+
items: readonly MessageScrollerItem[];
|
|
1406
|
+
conversationKey?: string | number;
|
|
1407
|
+
nearBottomThreshold?: number;
|
|
1408
|
+
announcement?: string;
|
|
1409
|
+
jumpLabel?: string;
|
|
1410
|
+
before?: ReactNode;
|
|
1411
|
+
empty?: ReactNode;
|
|
1412
|
+
className?: string;
|
|
1413
|
+
style?: CSSProperties;
|
|
1414
|
+
};
|
|
1415
|
+
|
|
1281
1416
|
export declare function MiddleTruncate({ text, tailLength, mono }: {
|
|
1282
1417
|
text: string;
|
|
1283
1418
|
tailLength?: number;
|
|
@@ -1520,8 +1655,60 @@ export declare type PillProps = {
|
|
|
1520
1655
|
title?: string;
|
|
1521
1656
|
} & AnchorHTMLAttributes<HTMLAnchorElement>;
|
|
1522
1657
|
|
|
1658
|
+
export declare function Popover({ open: controlledOpen, defaultOpen, onOpenChange, onClose, trigger, anchorRef, children, side, align, placement: requestedPlacement, modal, ariaModal, role: requestedRole, ariaLabel, ariaLabelledBy, ariaDescribedBy, offset, matchWidth, selectedValue, initialFocus, id: suppliedId, className, dismissExcludeRefs }: PopoverProps): JSX.Element;
|
|
1659
|
+
|
|
1660
|
+
export declare type PopoverAlign = 'start' | 'center' | 'end';
|
|
1661
|
+
|
|
1662
|
+
export declare type PopoverInitialFocus = 'first' | 'last' | 'none';
|
|
1663
|
+
|
|
1523
1664
|
export declare type PopoverLayout = 'vertical' | 'horizontal';
|
|
1524
1665
|
|
|
1666
|
+
export declare type PopoverPlacement = 'auto' | 'auto-end' | 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
|
|
1667
|
+
|
|
1668
|
+
export declare type PopoverProps = PopoverSharedProps & (({
|
|
1669
|
+
trigger: ReactNode;
|
|
1670
|
+
anchorRef?: never;
|
|
1671
|
+
open?: boolean;
|
|
1672
|
+
defaultOpen?: boolean;
|
|
1673
|
+
} & ({
|
|
1674
|
+
ariaLabel: string;
|
|
1675
|
+
ariaLabelledBy?: never;
|
|
1676
|
+
} | {
|
|
1677
|
+
ariaLabel?: never;
|
|
1678
|
+
ariaLabelledBy: string;
|
|
1679
|
+
})) | {
|
|
1680
|
+
trigger?: never;
|
|
1681
|
+
anchorRef: RefObject<HTMLElement | null>;
|
|
1682
|
+
open: boolean;
|
|
1683
|
+
defaultOpen?: never;
|
|
1684
|
+
ariaLabel?: string;
|
|
1685
|
+
ariaLabelledBy?: string;
|
|
1686
|
+
});
|
|
1687
|
+
|
|
1688
|
+
export declare type PopoverRole = 'dialog' | 'menu' | 'listbox';
|
|
1689
|
+
|
|
1690
|
+
declare type PopoverSharedProps = {
|
|
1691
|
+
children: ReactNode;
|
|
1692
|
+
onOpenChange?: (open: boolean) => void;
|
|
1693
|
+
onClose?: () => void;
|
|
1694
|
+
placement?: PopoverPlacement;
|
|
1695
|
+
side?: PopoverSide;
|
|
1696
|
+
align?: PopoverAlign;
|
|
1697
|
+
role?: PopoverRole;
|
|
1698
|
+
modal?: boolean;
|
|
1699
|
+
ariaModal?: boolean;
|
|
1700
|
+
ariaDescribedBy?: string;
|
|
1701
|
+
offset?: number;
|
|
1702
|
+
matchWidth?: boolean | number;
|
|
1703
|
+
selectedValue?: string | number;
|
|
1704
|
+
initialFocus?: PopoverInitialFocus;
|
|
1705
|
+
id?: string;
|
|
1706
|
+
className?: string;
|
|
1707
|
+
dismissExcludeRefs?: ReadonlyArray<RefObject<HTMLElement | null>>;
|
|
1708
|
+
};
|
|
1709
|
+
|
|
1710
|
+
export declare type PopoverSide = 'bottom' | 'top' | 'left' | 'right';
|
|
1711
|
+
|
|
1525
1712
|
export declare function ProductLockup({ name, icon, brand, size, className, 'aria-label': ariaLabel, ...rest }: ProductLockupProps): JSX.Element;
|
|
1526
1713
|
|
|
1527
1714
|
export declare type ProductLockupProps = {
|
|
@@ -1575,9 +1762,9 @@ export declare function Q1travelSymbol(props: SVGProps<SVGSVGElement>): JSX.Elem
|
|
|
1575
1762
|
export declare function Radio({ ...props }: RadioProps): JSX.Element;
|
|
1576
1763
|
|
|
1577
1764
|
/** Radio 的完整 props。 */
|
|
1578
|
-
export declare type RadioProps = ControlOptionOwnProps & (FieldShellProps | FieldBareProps) & ControlOptionNativeInputProps;
|
|
1765
|
+
export declare type RadioProps = ControlOptionOwnProps & (FieldShellProps | FieldBareProps) & FieldLabelVisibilityProps & ControlOptionNativeInputProps;
|
|
1579
1766
|
|
|
1580
|
-
export declare function RangeField(
|
|
1767
|
+
export declare function RangeField(props: CalendarSelectionProps & {
|
|
1581
1768
|
layout?: PopoverLayout;
|
|
1582
1769
|
trigger?: TriggerKind;
|
|
1583
1770
|
size?: CalendarSize;
|
|
@@ -1586,18 +1773,18 @@ export declare function RangeField({ layout, trigger, size, fieldSize, minValue,
|
|
|
1586
1773
|
minValue?: Date;
|
|
1587
1774
|
maxValue?: Date;
|
|
1588
1775
|
pinnedTimezone?: string;
|
|
1589
|
-
/** 透传给内部 CalendarGrid(默认真实当前日期);文档 demo 传固定值保持演示可控。 */
|
|
1590
1776
|
today?: Date;
|
|
1591
|
-
|
|
1592
|
-
|
|
1777
|
+
/** 显式启用本地 24 小时时间编辑;默认仅选择日期。 */
|
|
1778
|
+
withTime?: boolean;
|
|
1593
1779
|
}): JSX.Element;
|
|
1594
1780
|
|
|
1595
|
-
export declare function RangeInputs(
|
|
1781
|
+
export declare function RangeInputs(props: (CalendarSelectionProps | {
|
|
1782
|
+
mode?: 'range';
|
|
1596
1783
|
value: RangeValue;
|
|
1597
|
-
|
|
1784
|
+
onChange?: (next: RangeValue) => void;
|
|
1785
|
+
}) & {
|
|
1598
1786
|
withTime: boolean;
|
|
1599
1787
|
onApply: () => void;
|
|
1600
|
-
/** 固定时区:传入时时区从可选 select 变只读文本、不可切换。 */
|
|
1601
1788
|
pinnedTimezone?: string;
|
|
1602
1789
|
}): JSX.Element;
|
|
1603
1790
|
|
|
@@ -1685,10 +1872,12 @@ export declare type SearchDialogTriggerProps = {
|
|
|
1685
1872
|
'aria-controls': string;
|
|
1686
1873
|
};
|
|
1687
1874
|
|
|
1688
|
-
export declare function SearchInput({ id, ariaLabel, value: controlledValue, defaultValue, onValueChange, loading, kbdHint, icon, ref, className, disabled, readOnly, autoComplete, spellCheck, onKeyDown: onInputKeyDown, ...inputProps }: SearchInputProps): JSX.Element;
|
|
1875
|
+
export declare function SearchInput({ id, size, ariaLabel, value: controlledValue, defaultValue, onValueChange, loading, kbdHint, icon, ref, className, disabled, readOnly, autoComplete, spellCheck, onKeyDown: onInputKeyDown, ...inputProps }: SearchInputProps): JSX.Element;
|
|
1689
1876
|
|
|
1690
1877
|
export declare type SearchInputProps = {
|
|
1691
1878
|
id: string;
|
|
1879
|
+
/** 与 Button 同高,默认 md;数字保留原生 input 的字符宽度语义。 */
|
|
1880
|
+
size?: ButtonSize | number;
|
|
1692
1881
|
/** 无可见 label 时的可访问名;与 FormField 或外部 label 组合时留空。 */
|
|
1693
1882
|
ariaLabel?: string;
|
|
1694
1883
|
value?: string;
|
|
@@ -1701,11 +1890,11 @@ export declare type SearchInputProps = {
|
|
|
1701
1890
|
icon?: ReactNode;
|
|
1702
1891
|
/** React 19 ref-as-prop,指向原生 search input。 */
|
|
1703
1892
|
ref?: Ref<HTMLInputElement>;
|
|
1704
|
-
} & Omit<InputHTMLAttributes<HTMLInputElement>, 'aria-label' | 'defaultValue' | 'id' | 'onChange' | 'ref' | 'type' | 'value'>;
|
|
1893
|
+
} & Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'aria-label' | 'defaultValue' | 'id' | 'onChange' | 'ref' | 'type' | 'value'>;
|
|
1705
1894
|
|
|
1706
|
-
export declare function Select({ id, label, description, error, ref, wide, size, prefix, suffix, className, children, value, defaultValue, multiple, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, ...rest }: {
|
|
1895
|
+
export declare function Select({ id, label, labelHidden, description, error, ref, wide, size, prefix, suffix, className, children, value, defaultValue, multiple, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, ...rest }: {
|
|
1707
1896
|
id: string;
|
|
1708
|
-
label
|
|
1897
|
+
label?: string;
|
|
1709
1898
|
description?: string;
|
|
1710
1899
|
error?: string;
|
|
1711
1900
|
/** 指向原生 select(React 19 ref-as-prop),供表单校验后聚焦等场景。 */
|
|
@@ -1713,7 +1902,7 @@ export declare function Select({ id, label, description, error, ref, wide, size,
|
|
|
1713
1902
|
wide?: boolean;
|
|
1714
1903
|
size?: FieldSize;
|
|
1715
1904
|
prefix?: ReactNode;
|
|
1716
|
-
/** 装饰性后缀图标(aria-hidden),渲染在下拉箭头左侧;跟 prefix
|
|
1905
|
+
/** 装饰性后缀图标(aria-hidden),渲染在下拉箭头左侧;跟 prefix 前缀一样不承载信息,可访问名称来自可见 label 或消费方提供的 ARIA / 外部 label。 */
|
|
1717
1906
|
suffix?: ReactNode;
|
|
1718
1907
|
children: ReactNode;
|
|
1719
1908
|
/** Select 只接受单一值;多值选择使用 MultiSelect。 */
|
|
@@ -1722,7 +1911,7 @@ export declare function Select({ id, label, description, error, ref, wide, size,
|
|
|
1722
1911
|
defaultValue?: string | number;
|
|
1723
1912
|
/** Select 是单选字段;多值选择使用 MultiSelect。 */
|
|
1724
1913
|
multiple?: never;
|
|
1725
|
-
} & Omit<SelectHTMLAttributes<HTMLSelectElement>, 'id' | 'children' | 'size' | 'prefix' | 'multiple' | 'value' | 'defaultValue'>): JSX.Element;
|
|
1914
|
+
} & FieldLabelVisibilityProps & Omit<SelectHTMLAttributes<HTMLSelectElement>, 'id' | 'children' | 'size' | 'prefix' | 'multiple' | 'value' | 'defaultValue'>): JSX.Element;
|
|
1726
1915
|
|
|
1727
1916
|
export declare function Separator({ orientation, decorative, className, }: {
|
|
1728
1917
|
orientation?: SeparatorOrientation;
|
|
@@ -1732,13 +1921,15 @@ export declare function Separator({ orientation, decorative, className, }: {
|
|
|
1732
1921
|
|
|
1733
1922
|
export declare type SeparatorOrientation = 'horizontal' | 'vertical';
|
|
1734
1923
|
|
|
1735
|
-
export declare function Sheet({ open, onClose, title, side, size, dismissable, children, footer }: {
|
|
1924
|
+
export declare function Sheet({ open, onClose, title, side, size, dismissable, mobileFullscreen, children, footer }: {
|
|
1736
1925
|
open: boolean;
|
|
1737
1926
|
onClose: () => void;
|
|
1738
1927
|
title: string;
|
|
1739
1928
|
side?: SheetSide;
|
|
1740
1929
|
size?: SheetSize;
|
|
1741
1930
|
dismissable?: boolean;
|
|
1931
|
+
/** 窄屏全视口面板;默认保留浮层间距。 */
|
|
1932
|
+
mobileFullscreen?: boolean;
|
|
1742
1933
|
children: ReactNode;
|
|
1743
1934
|
footer?: ReactNode;
|
|
1744
1935
|
}): ReactNode;
|
|
@@ -2011,7 +2202,7 @@ export declare function Tabs({ tabs, ariaLabel, variant, value, defaultValue, on
|
|
|
2011
2202
|
onValueChange?: (id: string) => void;
|
|
2012
2203
|
}): JSX.Element | null;
|
|
2013
2204
|
|
|
2014
|
-
export declare function Textarea({ id, label, description, error, invalid, errorId, ref, wide, size, className, maxLength, onInput, ...rest }: TextareaProps): JSX.Element;
|
|
2205
|
+
export declare function Textarea({ id, label, labelHidden, description, error, invalid, errorId, ref, wide, size, className, maxLength, onInput, ...rest }: TextareaProps): JSX.Element;
|
|
2015
2206
|
|
|
2016
2207
|
/** Textarea 的完整 props。消费方包一层时用它标注,无需知道内部由哪几块组合而成。 */
|
|
2017
2208
|
export declare type TextareaProps = {
|
|
@@ -2025,7 +2216,7 @@ export declare type TextareaProps = {
|
|
|
2025
2216
|
ref?: Ref<HTMLTextAreaElement>;
|
|
2026
2217
|
wide?: boolean;
|
|
2027
2218
|
size?: FieldSize;
|
|
2028
|
-
} & (FieldShellProps | FieldBareProps) & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'id'>;
|
|
2219
|
+
} & (FieldShellProps | FieldBareProps) & FieldLabelVisibilityProps & Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'id'>;
|
|
2029
2220
|
|
|
2030
2221
|
export declare function TextWithCopyButton({ text, copyValue, successMessage, size, }: {
|
|
2031
2222
|
text: string;
|
|
@@ -2051,6 +2242,13 @@ export declare type ThresholdTone = 'primary' | 'success' | 'warning' | 'danger'
|
|
|
2051
2242
|
|
|
2052
2243
|
export declare function Timeline({ className, ...props }: TimelineProps): JSX.Element;
|
|
2053
2244
|
|
|
2245
|
+
export declare function TimelineCollapsedGroup({ summary, children }: TimelineCollapsedGroupProps): JSX.Element;
|
|
2246
|
+
|
|
2247
|
+
export declare type TimelineCollapsedGroupProps = {
|
|
2248
|
+
summary: ReactNode;
|
|
2249
|
+
children: ReactNode;
|
|
2250
|
+
};
|
|
2251
|
+
|
|
2054
2252
|
export declare function TimelineItem({ tone, indicator, children, className, ...props }: TimelineItemProps): JSX.Element;
|
|
2055
2253
|
|
|
2056
2254
|
export declare type TimelineItemProps = HTMLAttributes<HTMLLIElement> & {
|
|
@@ -2107,6 +2305,42 @@ export declare function Toggle({ checked, defaultOn, onChange, disabled, size, o
|
|
|
2107
2305
|
ariaLabel?: string;
|
|
2108
2306
|
}): JSX.Element;
|
|
2109
2307
|
|
|
2308
|
+
export declare function ToggleGroup(props: ToggleGroupProps): JSX.Element;
|
|
2309
|
+
|
|
2310
|
+
declare type ToggleGroupBaseProps = {
|
|
2311
|
+
items: ToggleGroupItem[];
|
|
2312
|
+
ariaLabel: string;
|
|
2313
|
+
size?: ButtonSize;
|
|
2314
|
+
disabled?: boolean;
|
|
2315
|
+
};
|
|
2316
|
+
|
|
2317
|
+
export declare type ToggleGroupItem = {
|
|
2318
|
+
value: string;
|
|
2319
|
+
disabled?: boolean;
|
|
2320
|
+
} & ({
|
|
2321
|
+
label: string;
|
|
2322
|
+
icon?: ReactNode;
|
|
2323
|
+
ariaLabel?: string;
|
|
2324
|
+
} | {
|
|
2325
|
+
label?: never;
|
|
2326
|
+
icon: ReactNode;
|
|
2327
|
+
ariaLabel: string;
|
|
2328
|
+
});
|
|
2329
|
+
|
|
2330
|
+
export declare type ToggleGroupProps = ToggleGroupBaseProps & ({
|
|
2331
|
+
type: 'single';
|
|
2332
|
+
value?: string;
|
|
2333
|
+
defaultValue?: string;
|
|
2334
|
+
onValueChange?: (value: string) => void;
|
|
2335
|
+
allowEmpty?: boolean;
|
|
2336
|
+
} | {
|
|
2337
|
+
type: 'multiple';
|
|
2338
|
+
value?: string[];
|
|
2339
|
+
defaultValue?: string[];
|
|
2340
|
+
onValueChange?: (value: string[]) => void;
|
|
2341
|
+
allowEmpty?: never;
|
|
2342
|
+
});
|
|
2343
|
+
|
|
2110
2344
|
export declare type ToggleSize = 'sm' | 'md' | 'lg';
|
|
2111
2345
|
|
|
2112
2346
|
export declare function Toolbar({ 'aria-label': ariaLabel, orientation, children, className, }: ToolbarProps): JSX.Element;
|