@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.
@@ -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
- /** 标准日期区间选择器;复用 RangeField 的草稿、弹层和键盘行为。 */
334
+ /** 标准日期与区间选择器;复用 RangeField 的草稿、弹层和键盘行为。 */
319
335
  export declare function Calendar(props: CalendarProps): JSX.Element;
320
336
 
321
- export declare function CalendarGrid({ value, onChange, size, minValue, maxValue, today, }: {
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 & ControlOptionNativeInputProps;
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 function FilterChip({ label, value, onClear, disabled, className, ...props }: FilterChipProps): JSX.Element;
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 function FormField({ controlId, label, description, error, wide, children, }: {
976
- controlId: string;
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
- export declare function Menu({ label, entries, withChevron, align, triggerContent }: {
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({ layout, trigger, size, fieldSize, minValue, maxValue, pinnedTimezone, today, value, onChange, }: {
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
- value: RangeValue;
1592
- onChange: (next: RangeValue) => void;
1777
+ /** 显式启用本地 24 小时时间编辑;默认仅选择日期。 */
1778
+ withTime?: boolean;
1593
1779
  }): JSX.Element;
1594
1780
 
1595
- export declare function RangeInputs({ value, onApply, pinnedTimezone, }: {
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: string;
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 前缀一样不承载信息,可访问名称仍完全来自 label。 */
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;