@xihan-ui/web-components 1.0.0-alpha.3 → 1.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.
package/dist/define.d.ts CHANGED
@@ -1,9 +1,10 @@
1
1
  import { r as PropertyValues } from "./types-BvWWqMd_.js";
2
2
  import { t as XhReactiveElement } from "./element-DRoFjrYO.js";
3
3
  import { l as Spreader, n as XhConfigScope, t as XhConfig } from "./config-Cz16-P4i.js";
4
- import { AccordionNode, AlertSchema, AnchorTranslations, BadgeVariant, BreadcrumbTranslations, CalendarDay, CalendarSelectionMode, CalendarView, CalendarWeekDay, CalendarWeekdayFormat, CarouselTranslations, CascaderExpandTrigger, CascaderNode, CascaderSchema, CascaderValue, CheckboxCheckedState, CheckboxGroupNode, ColorPickerFormat, ColorPickerTranslations, ComboboxInputBehavior, ComboboxNode, ComboboxSchema, ComponentMeta, ComposerRunStatus, ComposerTranslations, ContextMenuNode, ContextMenuSchema, DateFieldTranslations, DateGranularity, DatePickerPreset, DatePickerSchema, DateSegmentSet, DateSegmentType, DownloadTriggerData, DrawerSchema, EditableActivationMode, EditableSubmitMode, EmptyStateLive, FieldsetTranslations, FileUploadRemoteFile, FileUploadSchema, FileUploadTranslations, FloatingPanelPosition, FloatingPanelSchema, FloatingPanelSize, FloatingPanelStage, FormErrorPatch, FormSchema, FormValidateOn, FormValues, HeatmapAxisInput, HeatmapGrid, HeatmapMatrixGrid, HeatmapMonthGrid, HeatmapPalette, HeatmapTranslations, HeatmapValue, HeatmapVariant, HotkeysPlatform, HotkeysTarget, HotkeysTranslations, IconWeight, ImageCropperRect, ImageCropperSchema, ImageCropperShape, ImageViewerItem, ImageViewerTranslations, JsonViewerTranslations, ListboxNode, ListboxSelectionMode, LoadingBarTranslations, MasonryColumns, MasonryProps, MenuNode, MenubarNode, NavigationMenuNode, NavigationMenuTranslations, NumberFieldSchema, PaginationTranslations, PasswordInputTranslations, PinInputTranslations, PinInputType, PopoverTranslations, ProgressGapPosition, ProgressVariant, RadioGroupNode, ResolvedToast, ScrollAreaOrientation, ScrollbarSchema, ScrollbarType, SegmentedNode, SelectNode, SelectSchema, SideNavNode, SideNavSchema, SideNavTranslations, SignaturePadDrawingOptions, SignaturePadTranslations, SkeletonVariant, SliderSchema, SliderValueTextDetails, SpaceProps, SpinnerTranslations, SplitterPanelProps, TableColumnDef, TableRowDef, TableSelection, TableSelectionMode, TableSortDescriptor, TabsActivationMode, TabsNode, TabsVariant, TagSchema, TagVariant, TagsInputBlurBehavior, TextFieldSchema, TextFieldType, ThreadStatus, ThreadTranslations, TimeFieldSchema, TimeGranularity, TimeHourCycle, TimePickerPreset, TimePickerSchema, TimerSchema, ToastOptions, ToastPlacement, ToastRecord, ToastTranslations, ToastType, ToasterTranslations, ToggleGroupNode, TourStep, TourTranslations, TransferFilter, TransferItem, TreeNode, TreeSchema, TreeSelectSchema, TreeSelectionMode, VirtualizerAlign, VirtualizerItemState, XhTranslationOverrides } from "@xihan-ui/headless";
4
+ import { AccordionNode, AlertSchema, AnchorTranslations, BadgePlacement, BreadcrumbTranslations, CalendarDay, CalendarSelectionMode, CalendarView, CalendarWeekDay, CalendarWeekdayFormat, CarouselTranslations, CascaderExpandTrigger, CascaderNode, CascaderSchema, CascaderValue, CheckboxCheckedState, CheckboxGroupNode, ColorPickerFormat, ColorPickerTranslations, ComboboxInputBehavior, ComboboxNode, ComboboxSchema, ComponentMeta, ComposerRunStatus, ComposerTranslations, ContextMenuNode, ContextMenuSchema, DateFieldTranslations, DateGranularity, DatePickerPreset, DatePickerSchema, DateSegmentSet, DateSegmentType, DownloadTriggerData, DrawerSchema, EditableActivationMode, EditableSubmitMode, EmptyStateLive, FieldsetTranslations, FileUploadRemoteFile, FileUploadSchema, FileUploadTranslations, FloatingPanelPosition, FloatingPanelSchema, FloatingPanelSize, FloatingPanelStage, FormErrorPatch, FormSchema, FormValidateOn, FormValues, HeatmapAxisInput, HeatmapGrid, HeatmapMatrixGrid, HeatmapMonthGrid, HeatmapPalette, HeatmapTranslations, HeatmapValue, HeatmapVariant, HotkeysPlatform, HotkeysTarget, HotkeysTranslations, IconWeight, ImageCropperRect, ImageCropperSchema, ImageCropperShape, ImageViewerItem, ImageViewerTranslations, JsonViewerTranslations, ListboxNode, ListboxSelectionMode, LoadingBarTranslations, MasonryColumns, MasonryProps, MenuNode, MenubarNode, NavigationMenuNode, NavigationMenuTranslations, NotificationOptions, NotificationPlacement, NotificationRecord, NotificationTranslations, NotificationType, NumberFieldSchema, PaginationTranslations, PasswordInputTranslations, PinInputTranslations, PinInputType, PopoverTranslations, ProgressGapPosition, ProgressVariant, RadioGroupNode, ResizableSize, ResolvedNotification, ScrollAreaOrientation, ScrollbarSchema, ScrollbarType, SegmentedNode, SelectNode, SelectSchema, SideNavNode, SideNavSchema, SideNavTranslations, SignaturePadDrawingOptions, SignaturePadTranslations, SkeletonVariant, SliderSchema, SliderValueTextDetails, SpaceProps, SpinnerTranslations, SplitterPanelProps, TableColumnDef, TableColumnKind, TableColumnPreference, TableRowDef, TableSchema, TableSelection, TableSelectionMode, TableSortDescriptor, TabsActivationMode, TabsNode, TabsTranslations, TabsVariant, TagSchema, TagVariant, TagsInputBlurBehavior, TextFieldSchema, TextFieldType, ThreadStatus, ThreadTranslations, TimeFieldSchema, TimeGranularity, TimeHourCycle, TimePickerPreset, TimePickerSchema, TimerSchema, ToastTranslations, ToastType, ToggleGroupNode, TourStep, TourTranslations, TransferFilter, TransferItem, TreeNode, TreeSchema, TreeSelectSchema, TreeSelectionMode, TreeTranslations, VirtualizerAlign, VirtualizerItemState, XhTranslationOverrides } from "@xihan-ui/headless";
5
5
  import { MotionPreference } from "@xihan-ui/motion";
6
6
  import { ActionVariant, ControlVariant, Direction, HighlighterPort, IconRecord, Orientation, Placement, Size, Tone } from "@xihan-ui/kernel";
7
+ import { ResizeEdge, SortableAxis } from "@xihan-ui/pointer";
7
8
  //#region src/dom/part-contract.d.ts
8
9
  /** 只取校验用得上的两项,避免把 `Anatomy<具体 part 联合>` 收窄成 `Anatomy<string>` 时不可赋值。 */
9
10
  interface PartContract {
@@ -374,26 +375,30 @@ declare class XhAvatarElement extends XhElement {
374
375
  //#endregion
375
376
  //#region src/elements/badge.d.ts
376
377
  /**
377
- * `<xh-badge>` —— 徽标展示宿主,无状态机,外观来自 variant 属性。
378
+ * `<xh-badge>` —— 角标宿主,无状态机。
379
+ *
380
+ * 被标记的东西写进 root,角标本身写进 indicator;角标是挂在别的元素角上的一枚标记,
381
+ * 行内的状态药丸请用 `<xh-tag>`。
378
382
  *
379
383
  * @customElement xh-badge
380
- * @attr {'solid'|'subtle'|'outline'} variant - 视觉变体
384
+ * @attr {'top-end'|'top-start'|'bottom-end'|'bottom-start'} placement - 挂在哪个角上,默认 top-end
381
385
  * @attr {'brand'|'neutral'|'success'|'warning'|'danger'|'info'} tone - 语气
382
386
  * @attr {'sm'|'md'|'lg'} size - 尺寸
383
387
  * @attr {number} count - 计数:给了它徽标就自己出数字,超过 max 写成「max+」;节点已有内容时以内容为准
384
388
  * @attr {number} max - 计数上限,默认 99
385
389
  * @attr {boolean} show-zero - 计数为 0 时也显示,默认不显示
386
390
  * @attr {boolean} dot - 只出一个点,不出数字
387
- * @attr {string} label - 读屏怎么念这枚徽标,例如「3 条未读」
388
- * @csspart root - 承载 data-scope/data-part/data-* 的展示节点
391
+ * @attr {string} label - 读屏怎么念这枚角标,例如「3 条未读」
392
+ * @csspart root - 锚点:被标记的那个东西放进它里面
393
+ * @csspart indicator - 角标本身,绝对定位在 root 的某个角上
389
394
  */
390
395
  declare class XhBadgeElement extends XhElement {
391
396
  static partContract: {
392
- anatomy: import("@xihan-ui/kernel").Anatomy<"root">;
397
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "indicator">;
393
398
  meta: import("@xihan-ui/headless").ComponentMeta;
394
399
  };
395
400
  static properties: {
396
- variant: {
401
+ placement: {
397
402
  converter: {
398
403
  fromAttribute: (v: string | null) => string | undefined;
399
404
  };
@@ -431,7 +436,7 @@ declare class XhBadgeElement extends XhElement {
431
436
  };
432
437
  };
433
438
  };
434
- variant?: BadgeVariant;
439
+ placement?: BadgePlacement;
435
440
  tone?: Tone;
436
441
  size?: Size;
437
442
  count?: number;
@@ -1064,6 +1069,12 @@ declare class XhCascaderElement extends XhElement {
1064
1069
  private readonly notifyValue;
1065
1070
  private readonly notifyOpen;
1066
1071
  private readonly ctrl;
1072
+ /**
1073
+ * 列区的自绘条:与 content 同级挂在已经 fixed 的 positioner 上。
1074
+ * 只摆横的——列多到放不下时整体横向滚动,纵向溢出归每一列自己;
1075
+ * 横条的正负按排版方向算,而组件不读计算样式,把作者写的那份显式交过去。
1076
+ */
1077
+ private readonly bars;
1067
1078
  private machineProps;
1068
1079
  private ensureConfig;
1069
1080
  private readonly registerLayer;
@@ -1459,6 +1470,7 @@ declare class XhCollapsibleElement extends XhElement {
1459
1470
  * @attr {boolean} read-only - 只读:浮层照开,进去只是改不动
1460
1471
  * @attr {boolean} alpha - 带透明度,默认关;关掉时透明度那条滑杆与输入框整条禁用
1461
1472
  * @attr {string} swatches - 预设色板,逗号分隔(如 "#ff0000,#00ff00")
1473
+ * @attr {'sm'|'md'|'lg'} size - 尺寸
1462
1474
  * @attr {'ltr'|'rtl'} dir - 文字方向,只改写横轴上左右两键与指针的语义,默认 ltr
1463
1475
  * @attr {string} placement - 首选放置位,默认 bottom-start;避让后的实际位写在 data-placement 上
1464
1476
  * @attr {number} offset - 浮层与锚点的间距(px)
@@ -1541,6 +1553,11 @@ declare class XhColorPickerElement extends XhElement {
1541
1553
  fromAttribute: (v: string | null) => string | undefined;
1542
1554
  };
1543
1555
  };
1556
+ size: {
1557
+ converter: {
1558
+ fromAttribute: (v: string | null) => string | undefined;
1559
+ };
1560
+ };
1544
1561
  direction: {
1545
1562
  converter: {
1546
1563
  fromAttribute: (v: string | null) => string | undefined;
@@ -1571,6 +1588,7 @@ declare class XhColorPickerElement extends XhElement {
1571
1588
  alpha?: boolean;
1572
1589
  swatches?: string[];
1573
1590
  name?: string;
1591
+ size?: Size;
1574
1592
  direction?: Direction;
1575
1593
  placement?: Placement;
1576
1594
  offset?: number;
@@ -1584,6 +1602,8 @@ declare class XhColorPickerElement extends XhElement {
1584
1602
  private readonly notifyValue;
1585
1603
  private readonly notifyOpen;
1586
1604
  private readonly ctrl;
1605
+ /** 面板的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
1606
+ private readonly bars;
1587
1607
  private machineProps;
1588
1608
  private ensureConfig;
1589
1609
  private readonly registerLayer;
@@ -1801,6 +1821,8 @@ declare class XhComboboxElement extends XhElement {
1801
1821
  private readonly notifyInputValue;
1802
1822
  private readonly notifyOpen;
1803
1823
  private readonly ctrl;
1824
+ /** 候选列表的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
1825
+ private readonly bars;
1804
1826
  /** 作者声明的条目禁用,只认首见那一份;给了 collection 时用它,否则现读 */
1805
1827
  private readonly declaredDisabled;
1806
1828
  private machineProps;
@@ -2072,6 +2094,8 @@ declare class XhContextMenuElement extends XhElement {
2072
2094
  private readonly notifyOpen;
2073
2095
  private readonly notifySelect;
2074
2096
  private readonly ctrl;
2097
+ /** 条目列表的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
2098
+ private readonly bars;
2075
2099
  /** 作者声明的条目禁用,只认首见那一份;给了 collection 时用它,否则现读 */
2076
2100
  private readonly declaredDisabled;
2077
2101
  private machineProps;
@@ -2146,7 +2170,7 @@ type SegmentTexts = { readonly [K in DateSegmentType]?: string; };
2146
2170
  */
2147
2171
  declare class XhDateFieldElement extends XhElement {
2148
2172
  static partContract: {
2149
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "label" | "control" | "clear-trigger" | "hidden-input" | "segment-group" | "segment">;
2173
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "label" | "control" | "clear-trigger" | "hidden-input" | "segment" | "segment-group">;
2150
2174
  meta: import("@xihan-ui/headless").ComponentMeta;
2151
2175
  };
2152
2176
  static properties: {
@@ -2298,7 +2322,9 @@ declare class XhDateFieldElement extends XhElement {
2298
2322
  * @attr {'day'|'month'|'quarter'|'year'} active-view - 受控:面板此刻钻到了哪一层;缺省跟着 view,每次展开都拨回去
2299
2323
  * @attr {boolean} week-selection - 周选:点任意一天选中它所在的整周(view=day 且区间模式下生效)
2300
2324
  * @prop {DatePickerPreset[]} presets - 快捷选项(数组只走 property):给了就在浮层里多出一列
2301
- * @attr {number} visible-count - 并排展示几页
2325
+ * @attr {number} visible-count - 并排展示几页;缺省单选 1,区间按两端定,同一页放得下就 1
2326
+ * @attr {boolean} fixed-weeks - 日历恒渲染六行,默认开;写 fixed-weeks="false" 关掉
2327
+ * @attr {string} default-focused-value - 初始聚焦日,同时决定展开时先落在哪一页
2302
2328
  * @attr {boolean} disabled - 整个控件禁用:trigger 转原生 disabled,段位退出 Tab 序
2303
2329
  * @attr {boolean} read-only - 只读:浮层照常展开、日历照常浏览,但选中值改不动
2304
2330
  * @attr {boolean} invalid - 校验失败标注
@@ -2353,7 +2379,7 @@ declare class XhDatePickerElement extends XhElement {
2353
2379
  static partContract: {
2354
2380
  anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "content" | "trigger" | "label" | "control" | "positioner" | "clear-trigger" | "segment-group" | "confirm-trigger" | "preset" | "presets" | "calendar" | "time-column" | "time-item">;
2355
2381
  meta: import("@xihan-ui/headless").ComponentMeta;
2356
- delegates: (import("@xihan-ui/kernel").Anatomy<"root" | "header" | "grid" | "heading" | "prev-trigger" | "next-trigger" | "prev-year-trigger" | "next-year-trigger" | "heading-year-trigger" | "heading-month-trigger" | "grid-head" | "week-day" | "grid-body" | "week-row" | "week-number" | "cell" | "cell-trigger"> | import("@xihan-ui/kernel").Anatomy<"root" | "label" | "control" | "clear-trigger" | "hidden-input" | "segment-group" | "segment">)[];
2382
+ delegates: (import("@xihan-ui/kernel").Anatomy<"root" | "header" | "grid" | "heading" | "prev-trigger" | "next-trigger" | "prev-year-trigger" | "next-year-trigger" | "heading-year-trigger" | "heading-month-trigger" | "grid-head" | "week-day" | "grid-body" | "week-row" | "week-number" | "cell" | "cell-trigger"> | import("@xihan-ui/kernel").Anatomy<"root" | "label" | "control" | "clear-trigger" | "hidden-input" | "segment" | "segment-group">)[];
2357
2383
  };
2358
2384
  static properties: {
2359
2385
  value: {
@@ -2432,6 +2458,18 @@ declare class XhDatePickerElement extends XhElement {
2432
2458
  };
2433
2459
  attribute: string;
2434
2460
  };
2461
+ fixedWeeks: {
2462
+ converter: {
2463
+ fromAttribute: (v: string | null) => boolean | undefined;
2464
+ };
2465
+ attribute: string;
2466
+ };
2467
+ defaultFocusedValue: {
2468
+ converter: {
2469
+ fromAttribute: (v: string | null) => string | undefined;
2470
+ };
2471
+ attribute: string;
2472
+ };
2435
2473
  disabled: {
2436
2474
  converter: {
2437
2475
  fromAttribute: (v: string | null) => boolean | undefined;
@@ -2529,6 +2567,8 @@ declare class XhDatePickerElement extends XhElement {
2529
2567
  weekSelection?: boolean;
2530
2568
  presets?: DatePickerPreset[];
2531
2569
  visibleCount?: number;
2570
+ fixedWeeks?: boolean;
2571
+ defaultFocusedValue?: string;
2532
2572
  disabled?: boolean;
2533
2573
  readOnly?: boolean;
2534
2574
  invalid?: boolean;
@@ -2559,6 +2599,8 @@ declare class XhDatePickerElement extends XhElement {
2559
2599
  private readonly calendarCtrl;
2560
2600
  private readonly fieldCtrl;
2561
2601
  private readonly fieldEndCtrl;
2602
+ /** 浮层面板的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
2603
+ private readonly bars;
2562
2604
  private services;
2563
2605
  private machineProps;
2564
2606
  private ensureConfig;
@@ -3974,6 +4016,8 @@ declare class XhHoverCardElement extends XhElement {
3974
4016
  private exit;
3975
4017
  private readonly notify;
3976
4018
  private readonly ctrl;
4019
+ /** 卡片内容的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
4020
+ private readonly bars;
3977
4021
  private machineProps;
3978
4022
  private ensureConfig;
3979
4023
  private readonly registerLayer;
@@ -4307,7 +4351,7 @@ declare class XhImageCropperElement extends XhElement {
4307
4351
  */
4308
4352
  declare class XhImageViewerElement extends XhElement {
4309
4353
  static partContract: {
4310
- anatomy: import("@xihan-ui/kernel").Anatomy<"viewport" | "content" | "trigger" | "close-trigger" | "image" | "prev-trigger" | "next-trigger" | "positioner" | "backdrop" | "reset-trigger" | "toolbar" | "zoom-in-trigger" | "zoom-out-trigger" | "rotate-left-trigger" | "rotate-right-trigger" | "flip-horizontal-trigger" | "flip-vertical-trigger" | "counter">;
4354
+ anatomy: import("@xihan-ui/kernel").Anatomy<"content" | "viewport" | "trigger" | "close-trigger" | "image" | "prev-trigger" | "next-trigger" | "positioner" | "backdrop" | "reset-trigger" | "toolbar" | "zoom-in-trigger" | "zoom-out-trigger" | "rotate-left-trigger" | "rotate-right-trigger" | "flip-horizontal-trigger" | "flip-vertical-trigger" | "counter">;
4311
4355
  meta: import("@xihan-ui/headless").ComponentMeta;
4312
4356
  };
4313
4357
  static properties: {
@@ -4454,7 +4498,7 @@ declare class XhImageViewerElement extends XhElement {
4454
4498
  */
4455
4499
  declare class XhJsonViewerElement extends XhElement {
4456
4500
  static partContract: {
4457
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "preview" | "tree" | "item-key" | "item-value" | "branch" | "branch-control" | "branch-trigger" | "branch-indicator" | "branch-text" | "branch-content">;
4501
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "text" | "preview" | "tree" | "item-key" | "item-value" | "branch" | "branch-control" | "branch-trigger" | "branch-indicator" | "branch-text" | "branch-content">;
4458
4502
  meta: import("@xihan-ui/headless").ComponentMeta;
4459
4503
  };
4460
4504
  static properties: {
@@ -4493,6 +4537,9 @@ declare class XhJsonViewerElement extends XhElement {
4493
4537
  };
4494
4538
  attribute: string;
4495
4539
  };
4540
+ view: {
4541
+ attribute: string;
4542
+ };
4496
4543
  loop: {
4497
4544
  converter: {
4498
4545
  fromAttribute: (v: string | null) => boolean | undefined;
@@ -4520,15 +4567,25 @@ declare class XhJsonViewerElement extends XhElement {
4520
4567
  maxStringLength?: number;
4521
4568
  maxItems?: number;
4522
4569
  sortKeys?: boolean;
4570
+ view?: 'tree' | 'text';
4523
4571
  loop?: boolean;
4524
4572
  direction?: Direction;
4525
4573
  size?: Size;
4526
4574
  translations?: Partial<JsonViewerTranslations>;
4527
4575
  private readonly notify;
4528
4576
  private readonly ctrl;
4577
+ /**
4578
+ * 两档的自绘条:与滚动层同级挂在根上。两档互斥,交此刻在场的那个——
4579
+ * 两个容器都归本元素建,身上没有 data-xh-part,从 root 里现查。
4580
+ * 两条轴都摆:深层缩进往行首方向推、长字符串往行尾伸。
4581
+ */
4582
+ private readonly bars;
4583
+ /** 条子上一轮接的是哪一档的容器。 */
4584
+ private wiredLayer;
4529
4585
  private machineProps;
4530
4586
  /** 树容器与每一行都归本元素建,按路径留着复用。 */
4531
4587
  private treeEl;
4588
+ private textEl;
4532
4589
  private readonly rows;
4533
4590
  /**
4534
4591
  * root 被移出本宿主时,铺在它里面的行也一并离场。浏览器此时不派 focusout,
@@ -4539,6 +4596,18 @@ declare class XhJsonViewerElement extends XhElement {
4539
4596
  private makeRow;
4540
4597
  private paint;
4541
4598
  protected wire(): void;
4599
+ /**
4600
+ * 把条子接到此刻在场的那一档容器上。
4601
+ * 机器的追踪器在本轮渲染之前就跑完了,这一轮换掉的容器它看不见;
4602
+ * 换了档就再催一轮,下一轮的追踪器才把滚动监听与容器标记挪过去。
4603
+ */
4604
+ private syncBars;
4605
+ /**
4606
+ * root 里只留这一档的容器:摘走另一档,作者写在里面的东西也一并清掉。
4607
+ * 自绘条同样挂在 root 上,按 scope 认出来留着——整份 replaceChildren 会把条子一起抹掉。
4608
+ * 已经就位的节点一个都不碰:移动一个节点等于把它摘下来再插回去,焦点在树里会掉回 body。
4609
+ */
4610
+ private adopt;
4542
4611
  }
4543
4612
  //#endregion
4544
4613
  //#region src/elements/listbox.d.ts
@@ -4953,6 +5022,8 @@ declare class XhMenuElement extends XhElement {
4953
5022
  private readonly notifyOpen;
4954
5023
  private readonly notifySelect;
4955
5024
  private readonly ctrl;
5025
+ /** 条目列表的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
5026
+ private readonly bars;
4956
5027
  /** 作者声明的条目禁用,只认首见那一份;给了 collection 时用它,否则现读 */
4957
5028
  private readonly declaredDisabled;
4958
5029
  private machineProps;
@@ -5160,7 +5231,7 @@ declare class XhNavigationMenuElement extends XhElement {
5160
5231
  /** 退场闸门与消解层共用一份环境包。 */
5161
5232
  private config;
5162
5233
  static partContract: {
5163
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "viewport" | "content" | "indicator" | "trigger" | "list" | "link">;
5234
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "content" | "viewport" | "indicator" | "trigger" | "list" | "link">;
5164
5235
  meta: import("@xihan-ui/headless").ComponentMeta;
5165
5236
  };
5166
5237
  static properties: {
@@ -5243,6 +5314,229 @@ declare class XhNavigationMenuElement extends XhElement {
5243
5314
  disconnectedCallback(): void;
5244
5315
  }
5245
5316
  //#endregion
5317
+ //#region src/elements/notification.d.ts
5318
+ /**
5319
+ * `<xh-notification>` —— Light-DOM 行为宿主:作者写 root 与若干 group 角色节点,
5320
+ * 元素跑 notification 机器并把 connect 产出打上去。每个 group 用 `placement` 属性声明自己是哪个位置,
5321
+ * 不写就落在队列的 placement 上。
5322
+ *
5323
+ * 单条通知的节点由作者按队列渲染(读 `items` 或听 `items-change`),元素不替作者生成:
5324
+ * 生成节点就等于收走模板控制权,图标、进度条、i18n 文案都再塞不进来。
5325
+ * 每条渲染成一个 `<xh-notification-item>`,它走完退场会冒泡一条 status-change,本元素据此把记录删掉。
5326
+ *
5327
+ * @customElement xh-notification
5328
+ * @attr {'top-start'|'top'|'top-end'|'middle-start'|'middle'|'middle-end'|'bottom-start'|'bottom'|'bottom-end'} placement - 默认落位,默认 bottom-end
5329
+ * @attr {number} max - 每个位置最多同时留几条,超出挤掉最旧的;不给即不限
5330
+ * @attr {number} gap - 同一摞内的间距(px),默认 16
5331
+ * @attr {number} duration - 单条没写 duration 时的默认停留毫秒
5332
+ * @attr {number} remove-delay - 单条没写 remove-delay 时的默认退场窗口毫秒
5333
+ * @attr {boolean} pause-on-page-idle - 页面切到后台时按住计时,逐条下发
5334
+ * @fires items-change - 队列变化;detail 为 `{ items: NotificationRecord[] }`
5335
+ * @csspart root - 队列的作用域包装(display: contents,不占布局),承载 data-count / data-empty
5336
+ * @csspart group - role=region 的地标,某一个位置上的那一摞;可自带 placement 属性,承载 data-placement / data-count / data-empty 与间距
5337
+ */
5338
+ declare class XhNotificationElement extends XhElement {
5339
+ static partContract: {
5340
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "item-indicator" | "group" | "item-title" | "item-description" | "item-action-trigger" | "item-close-trigger">;
5341
+ meta: import("@xihan-ui/headless").ComponentMeta;
5342
+ };
5343
+ static properties: {
5344
+ items: {
5345
+ attribute: boolean;
5346
+ };
5347
+ defaultItems: {
5348
+ attribute: boolean;
5349
+ };
5350
+ placement: {
5351
+ converter: {
5352
+ fromAttribute: (v: string | null) => string | undefined;
5353
+ };
5354
+ };
5355
+ max: {
5356
+ converter: {
5357
+ fromAttribute: (v: string | null) => number | undefined;
5358
+ };
5359
+ };
5360
+ gap: {
5361
+ converter: {
5362
+ fromAttribute: (v: string | null) => number | undefined;
5363
+ };
5364
+ };
5365
+ duration: {
5366
+ converter: {
5367
+ fromAttribute: (v: string | null) => number | undefined;
5368
+ };
5369
+ };
5370
+ removeDelay: {
5371
+ converter: {
5372
+ fromAttribute: (v: string | null) => number | undefined;
5373
+ };
5374
+ attribute: string;
5375
+ };
5376
+ pauseOnPageIdle: {
5377
+ converter: {
5378
+ fromAttribute: (v: string | null) => boolean | undefined;
5379
+ };
5380
+ attribute: string;
5381
+ };
5382
+ translations: {
5383
+ attribute: boolean;
5384
+ };
5385
+ };
5386
+ items?: NotificationRecord[];
5387
+ defaultItems?: NotificationRecord[];
5388
+ placement?: NotificationPlacement;
5389
+ max?: number;
5390
+ gap?: number;
5391
+ duration?: number;
5392
+ removeDelay?: number;
5393
+ pauseOnPageIdle?: boolean;
5394
+ translations?: Partial<NotificationTranslations>;
5395
+ private readonly notify;
5396
+ private readonly ctrl;
5397
+ private machineProps;
5398
+ /**
5399
+ * 命令式入口共用的取法。机器要到进文档(hostConnected)才建:
5400
+ * 还没进文档就发通知是调用方的时序问题,明说好过把这条通知静默丢掉。
5401
+ */
5402
+ private commands;
5403
+ /** 入队并返回 id;同 id 已存在则就地改写,位置不动(处理中转已完成走的就是这条)。 */
5404
+ create(options?: NotificationOptions): string;
5405
+ /**
5406
+ * 刻意不叫 `update`:那是 Lit 自己的渲染生命周期钩子,占用它会让宿主每次重渲
5407
+ * 都拐进这里来(还带着一个 changedProperties 当 id),组件当场不工作。
5408
+ * Vue 侧没有这层基类,composable 上仍叫 `update`。
5409
+ */
5410
+ updateItem(id: string, options: Partial<NotificationOptions>): void;
5411
+ dismiss(id: string): void;
5412
+ dismissAll(): void;
5413
+ /** max 之内、按加入先后排列的可见条目,已补齐默认值,可直接摊给 `<xh-notification-item>`。 */
5414
+ get visibleNotifications(): ResolvedNotification[];
5415
+ /** 当前有条目的位置,按九宫格固定顺序。 */
5416
+ get placements(): NotificationPlacement[];
5417
+ get count(): number;
5418
+ getItemsByPlacement(placement: NotificationPlacement): ResolvedNotification[];
5419
+ /**
5420
+ * 单条通知走完退场会冒泡上来:记录该从队列里删掉了。
5421
+ * 认元素名而不是只认事件名——avatar 之类的部件也派 status-change,且完全可能就摆在通知内部。
5422
+ */
5423
+ private readonly onItemStatus;
5424
+ connectedCallback(): void;
5425
+ disconnectedCallback(): void;
5426
+ protected wire(): void;
5427
+ }
5428
+ /**
5429
+ * `<xh-notification-item>` —— 单条通知卡片:作者写 item/item-indicator/item-title/
5430
+ * item-description/item-action-trigger/item-close-trigger 角色节点,
5431
+ * 元素跑生命周期机器并把 connect 产出打上去。
5432
+ *
5433
+ * item 承载 role 与 aria-live:默认 status + polite(排队等读屏的空隙),
5434
+ * type="error" 换成 alert + assertive(打断当前朗读)。指针停在卡片上、
5435
+ * 或焦点落进卡片内部都会把倒计时按住,离开才接着走剩下的那一段。
5436
+ *
5437
+ * 退场窗口走完只把卡片收起、不删节点:作者写在里面的内容归作者,
5438
+ * 什么时候把这条从队列里删掉是 `<xh-notification>` 的事(它收本元素冒泡上去的 status-change)。
5439
+ *
5440
+ * @customElement xh-notification-item
5441
+ * @attr {string} id - 队列身份,`<xh-notification>` 按它寻址;不给就用实例自己的 scope id
5442
+ * @attr {string} title - 标题文案;作者没在 item-title 部件里写内容时由元素填入
5443
+ * @attr {string} description - 补充说明;作者没在 item-description 部件里写内容时由元素填入
5444
+ * @attr {'info'|'success'|'warning'|'error'|'loading'} type - 语气,默认 info;loading 不自动消失
5445
+ * @attr {number} duration - 停留毫秒,默认 5000;<=0 即关掉自动消失
5446
+ * @attr {number} remove-delay - 退场窗口毫秒,默认 200,留给退场动画
5447
+ * @attr {boolean} closable - 是否给可用的关闭按钮,默认 true;写 closable="false" 关掉
5448
+ * @attr {boolean} pause-on-page-idle - 页面切到后台时按住计时,默认关
5449
+ * @fires status-change - 生命周期落位;detail 为 `{ id: string, status: 'dismissing'|'unmounted' }`
5450
+ * @fires action - 操作按钮被按下;detail 为 `{ id: string }`
5451
+ * @csspart item - role=status(error 时 alert)的卡片,承载 data-type / data-tone / data-state / data-paused
5452
+ * @csspart item-indicator - 类型指示符;留空即由皮肤按 data-type 画一枚兜底字形
5453
+ * @csspart item-title - 标题,aria-labelledby 的目标
5454
+ * @csspart item-description - 补充说明,aria-describedby 的目标
5455
+ * @csspart item-action-trigger - 操作按钮:先发 action 再进入退场
5456
+ * @csspart item-close-trigger - 关闭按钮;closable=false 时转原生 disabled 并收起
5457
+ */
5458
+ declare class XhNotificationItemElement extends XhElement {
5459
+ static partContract: {
5460
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "item-indicator" | "group" | "item-title" | "item-description" | "item-action-trigger" | "item-close-trigger">;
5461
+ meta: {
5462
+ component: string;
5463
+ requiredParts: string[];
5464
+ };
5465
+ };
5466
+ static properties: {
5467
+ itemId: {
5468
+ converter: {
5469
+ fromAttribute: (v: string | null) => string | undefined;
5470
+ };
5471
+ attribute: string;
5472
+ };
5473
+ titleText: {
5474
+ converter: {
5475
+ fromAttribute: (v: string | null) => string | undefined;
5476
+ };
5477
+ attribute: string;
5478
+ };
5479
+ description: {
5480
+ converter: {
5481
+ fromAttribute: (v: string | null) => string | undefined;
5482
+ };
5483
+ };
5484
+ type: {
5485
+ converter: {
5486
+ fromAttribute: (v: string | null) => string | undefined;
5487
+ };
5488
+ };
5489
+ duration: {
5490
+ converter: {
5491
+ fromAttribute: (v: string | null) => number | undefined;
5492
+ };
5493
+ };
5494
+ removeDelay: {
5495
+ converter: {
5496
+ fromAttribute: (v: string | null) => number | undefined;
5497
+ };
5498
+ attribute: string;
5499
+ };
5500
+ closable: {
5501
+ converter: {
5502
+ fromAttribute: (v: string | null) => boolean | undefined;
5503
+ };
5504
+ };
5505
+ pauseOnPageIdle: {
5506
+ converter: {
5507
+ fromAttribute: (v: string | null) => boolean | undefined;
5508
+ };
5509
+ attribute: string;
5510
+ };
5511
+ translations: {
5512
+ attribute: boolean;
5513
+ };
5514
+ };
5515
+ itemId?: string;
5516
+ titleText?: string;
5517
+ description?: string;
5518
+ type?: NotificationType;
5519
+ duration?: number;
5520
+ removeDelay?: number;
5521
+ closable?: boolean;
5522
+ pauseOnPageIdle?: boolean;
5523
+ translations?: Partial<NotificationTranslations>;
5524
+ private readonly notifyStatus;
5525
+ private readonly notifyAction;
5526
+ private readonly ctrl;
5527
+ private machineProps;
5528
+ /** 这个部件的文字归不归作者:头一回见到它时定案,之后不再改口。 */
5529
+ private readonly authorOwnsText;
5530
+ /**
5531
+ * 作者没往部件里写内容时,用 props 上的文案填进去。
5532
+ *
5533
+ * 归属只判一次:判完本轮就会把文字写进去,再回读分不清是作者写的还是自己写的,
5534
+ * 从那以后 title 属性改了也再刷不动(Vue 侧是响应式渲染,会跟着改,两侧就此分叉)。
5535
+ */
5536
+ private fillText;
5537
+ protected wire(): void;
5538
+ }
5539
+ //#endregion
5246
5540
  //#region src/elements/number-field.d.ts
5247
5541
  /**
5248
5542
  * `<xh-number-field>` —— Light-DOM 行为宿主:作者写 root/label/input/加减按钮四类角色节点,
@@ -5413,15 +5707,22 @@ declare class XhNumberFieldElement extends XhElement {
5413
5707
  * @attr {'brand'|'neutral'|'success'|'warning'|'danger'|'info'} tone - 语气
5414
5708
  * @attr {'sm'|'md'|'lg'} size - 尺寸
5415
5709
  * @fires page-change - 页码变化;detail 为 `{ page: number, pageSize: number }`
5710
+ * @fires page-size-change - 每页条数变化;detail 为 `{ pageSize: number, page: number }`,页码是换算后的
5711
+ * @attr {string} placement - 省略位摊开后的落点,默认 bottom-start
5712
+ * @attr {number} offset - 浮层与省略位之间的间距(px),默认 8
5713
+ * @attr {number} open-delay - 指针停在省略位多久才摊开(ms),默认 200
5714
+ * @attr {number} close-delay - 指针离开后多久收起(ms),默认 300
5715
+ * @attr {number} default-page-size - 非受控初始每页条数,默认 10
5716
+ * @prop {number[]} pageSizeOptions - 可选的每页条数档位,默认 [10, 20, 50, 100]
5416
5717
  * @csspart root - nav 地标,承载 aria-label 与 data-empty
5417
5718
  * @csspart prev-trigger - 上一页;首页时转原生 disabled
5418
5719
  * @csspart next-trigger - 下一页;末页时转原生 disabled
5419
5720
  * @csspart item - 页码按钮,须自带 value 属性;当前页带 aria-current="page" 与 data-current
5420
- * @csspart ellipsis - 折叠掉的那几页的占位,对读屏隐藏
5721
+ * @csspart ellipsis - 折进去那几页的入口,须自带 side 属性(start / end);承载 data-side 与 aria-expanded
5421
5722
  */
5422
5723
  declare class XhPaginationElement extends XhElement {
5423
5724
  static partContract: {
5424
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "ellipsis" | "prev-trigger" | "next-trigger">;
5725
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "content" | "ellipsis" | "prev-trigger" | "next-trigger" | "positioner" | "page-size-select">;
5425
5726
  meta: import("@xihan-ui/headless").ComponentMeta;
5426
5727
  };
5427
5728
  static properties: {
@@ -5436,6 +5737,15 @@ declare class XhPaginationElement extends XhElement {
5436
5737
  };
5437
5738
  attribute: string;
5438
5739
  };
5740
+ defaultPageSize: {
5741
+ converter: {
5742
+ fromAttribute: (v: string | null) => number | undefined;
5743
+ };
5744
+ attribute: string;
5745
+ };
5746
+ pageSizeOptions: {
5747
+ attribute: boolean;
5748
+ };
5439
5749
  page: {
5440
5750
  converter: {
5441
5751
  fromAttribute: (v: string | null) => number | undefined;
@@ -5472,9 +5782,33 @@ declare class XhPaginationElement extends XhElement {
5472
5782
  translations: {
5473
5783
  attribute: boolean;
5474
5784
  };
5785
+ placement: {
5786
+ converter: {
5787
+ fromAttribute: (v: string | null) => string | undefined;
5788
+ };
5789
+ };
5790
+ offset: {
5791
+ converter: {
5792
+ fromAttribute: (v: string | null) => number | undefined;
5793
+ };
5794
+ };
5795
+ openDelay: {
5796
+ converter: {
5797
+ fromAttribute: (v: string | null) => number | undefined;
5798
+ };
5799
+ attribute: string;
5800
+ };
5801
+ closeDelay: {
5802
+ converter: {
5803
+ fromAttribute: (v: string | null) => number | undefined;
5804
+ };
5805
+ attribute: string;
5806
+ };
5475
5807
  };
5476
5808
  count?: number;
5477
5809
  pageSize?: number;
5810
+ defaultPageSize?: number;
5811
+ pageSizeOptions?: number[];
5478
5812
  page?: number;
5479
5813
  defaultPage?: number;
5480
5814
  siblingCount?: number;
@@ -5482,10 +5816,34 @@ declare class XhPaginationElement extends XhElement {
5482
5816
  tone?: Tone;
5483
5817
  size?: Size;
5484
5818
  translations?: Partial<PaginationTranslations>;
5819
+ placement?: Placement;
5820
+ offset?: number;
5821
+ openDelay?: number;
5822
+ closeDelay?: number;
5823
+ private readonly idGen;
5824
+ private readonly paginationScope;
5825
+ private readonly positionEngine;
5826
+ private config;
5827
+ /** 退场闸门:收起从跟着展开态走改成跟着 presence 走,退场动画播完才真收。 */
5828
+ private exit;
5485
5829
  private readonly notify;
5830
+ private readonly notifyPageSize;
5486
5831
  private readonly ctrl;
5832
+ /** 折叠页码列表的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
5833
+ private readonly bars;
5834
+ private ensureConfig;
5835
+ /** 此刻摊开的是哪个省略位的节点——它是定位锚点。 */
5836
+ private openEllipsisEl;
5837
+ private readonly registerLayer;
5838
+ private injectRefs;
5839
+ /**
5840
+ * 角色节点提前发现一次:常规发现要等首次 updated,那一刻 partMap 还空着,
5841
+ * 引擎挂不上,浮层会停在容器左上角。
5842
+ */
5843
+ connectedCallback(): void;
5487
5844
  private machineProps;
5488
5845
  protected wire(): void;
5846
+ disconnectedCallback(): void;
5489
5847
  }
5490
5848
  //#endregion
5491
5849
  //#region src/elements/password-input.d.ts
@@ -5858,6 +6216,8 @@ declare class XhPopoverElement extends XhElement {
5858
6216
  private exit;
5859
6217
  private readonly notify;
5860
6218
  private readonly ctrl;
6219
+ /** 面板内容的自绘条:与 content 同级挂在已经 fixed 的 positioner 上 */
6220
+ private readonly bars;
5861
6221
  private machineProps;
5862
6222
  private ensureConfig;
5863
6223
  private readonly registerLayer;
@@ -6174,11 +6534,151 @@ declare class XhRatingElement extends XhElement {
6174
6534
  protected wire(): void;
6175
6535
  }
6176
6536
  //#endregion
6177
- //#region src/elements/scroll-area.d.ts
6537
+ //#region src/elements/resizable.d.ts
6178
6538
  /**
6179
- * `<xh-scroll-area>` —— Light-DOM 行为宿主:作者写 root/viewport/content 与两条 scrollbar
6180
- * 角色节点,元素按轴各跑一台 scrollbar 机器并把 connect 产出打上去。
6181
- *
6539
+ * `<xh-resizable>` —— Light-DOM 行为宿主:作者写 root 与八向 handle 角色节点,
6540
+ * 元素跑 resizable 机器并把 connect 产出打上去。
6541
+ *
6542
+ * 每个 handle 用 `edge` 属性写明自己是哪条边(`n` / `ne` / `e` / `se` / `s` / `sw` / `w` / `nw`),
6543
+ * 与 Vue 侧的 `:edge` 是同一份声明。
6544
+ *
6545
+ * 尺寸由元素每帧写进 root 的内联 `inline-size` / `block-size`,作者的样式表不要再碰这两条轴。
6546
+ * **推西边与北边时容器的起点会动**,那段位移写成 root 的 `left` / `top`——皮肤已给
6547
+ * `position: relative`,开箱即对;把 root 改成 `static` 会让这两个方向只变尺寸不移位。
6548
+ *
6549
+ * 键盘全在把手上:方向键按屏幕方向推一步(推东边时右键变宽、推西边时右键变窄,与拖动同义),
6550
+ * 按住 Shift 走大步,Home / End 推到这条边能到的两端。
6551
+ *
6552
+ * @customElement xh-resizable
6553
+ * @attr {string} size - 受控尺寸,写成 `宽x高`(如 `320x200`);缺省该属性即非受控
6554
+ * @attr {string} default-size - 非受控初值,同样写成 `宽x高`
6555
+ * @attr {number} min-width - 宽度下限
6556
+ * @attr {number} min-height - 高度下限
6557
+ * @attr {number} max-width - 宽度上限;不给即不封顶
6558
+ * @attr {number} max-height - 高度上限;不给即不封顶
6559
+ * @attr {number} aspect-ratio - 宽高比(宽 ÷ 高)。给了就锁死,四个角以宽为准
6560
+ * @attr {number} step - 吸附步进:宽高各自落到最近的整数倍
6561
+ * @attr {number} keyboard-step - 方向键一次推多远(px),默认 8
6562
+ * @attr {number} keyboard-large-step - 按住 Shift 时的步长(px),默认 40
6563
+ * @attr {string} edges - 开放哪几条边,逗号分隔(如 `e,s,se`);默认八向全开
6564
+ * @attr {boolean} disabled - 禁用:把手退出 Tab 序列,按下也不进调整
6565
+ * @attr {'ltr'|'rtl'} dir - 文字方向,只对调水平位移与左右两键的正负,默认 ltr
6566
+ * @fires size-change - 尺寸变化(拖动途中会连发);detail 为 `{ size }`
6567
+ * @fires size-change-end - 一次调整收尾发一次;detail 为 `{ size, edge }`
6568
+ * @csspart root - 承载 data-resizing / data-edge / data-disabled 的容器,尺寸写在它的内联样式上
6569
+ * @csspart handle - role=separator 的把手,指针与键盘交互全在它身上
6570
+ */
6571
+ declare class XhResizableElement extends XhElement {
6572
+ static partContract: {
6573
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "handle">;
6574
+ meta: import("@xihan-ui/headless").ComponentMeta;
6575
+ };
6576
+ static properties: {
6577
+ size: {
6578
+ converter: {
6579
+ fromAttribute: (v: string | null) => ResizableSize | undefined;
6580
+ };
6581
+ };
6582
+ defaultSize: {
6583
+ converter: {
6584
+ fromAttribute: (v: string | null) => ResizableSize | undefined;
6585
+ };
6586
+ attribute: string;
6587
+ };
6588
+ minWidth: {
6589
+ converter: {
6590
+ fromAttribute: (v: string | null) => number | undefined;
6591
+ };
6592
+ attribute: string;
6593
+ };
6594
+ minHeight: {
6595
+ converter: {
6596
+ fromAttribute: (v: string | null) => number | undefined;
6597
+ };
6598
+ attribute: string;
6599
+ };
6600
+ maxWidth: {
6601
+ converter: {
6602
+ fromAttribute: (v: string | null) => number | undefined;
6603
+ };
6604
+ attribute: string;
6605
+ };
6606
+ maxHeight: {
6607
+ converter: {
6608
+ fromAttribute: (v: string | null) => number | undefined;
6609
+ };
6610
+ attribute: string;
6611
+ };
6612
+ aspectRatio: {
6613
+ converter: {
6614
+ fromAttribute: (v: string | null) => number | undefined;
6615
+ };
6616
+ attribute: string;
6617
+ };
6618
+ step: {
6619
+ converter: {
6620
+ fromAttribute: (v: string | null) => number | undefined;
6621
+ };
6622
+ };
6623
+ keyboardStep: {
6624
+ converter: {
6625
+ fromAttribute: (v: string | null) => number | undefined;
6626
+ };
6627
+ attribute: string;
6628
+ };
6629
+ keyboardLargeStep: {
6630
+ converter: {
6631
+ fromAttribute: (v: string | null) => number | undefined;
6632
+ };
6633
+ attribute: string;
6634
+ };
6635
+ edges: {
6636
+ converter: {
6637
+ fromAttribute: (v: string | null) => ResizeEdge[] | undefined;
6638
+ };
6639
+ };
6640
+ disabled: {
6641
+ converter: {
6642
+ fromAttribute: (v: string | null) => boolean | undefined;
6643
+ };
6644
+ };
6645
+ direction: {
6646
+ converter: {
6647
+ fromAttribute: (v: string | null) => string | undefined;
6648
+ };
6649
+ attribute: string;
6650
+ };
6651
+ };
6652
+ size?: ResizableSize;
6653
+ defaultSize?: ResizableSize;
6654
+ minWidth?: number;
6655
+ minHeight?: number;
6656
+ maxWidth?: number;
6657
+ maxHeight?: number;
6658
+ aspectRatio?: number;
6659
+ step?: number;
6660
+ keyboardStep?: number;
6661
+ keyboardLargeStep?: number;
6662
+ edges?: ResizeEdge[];
6663
+ disabled?: boolean;
6664
+ direction?: Direction;
6665
+ private readonly idGen;
6666
+ private readonly resizableScope;
6667
+ private readonly notifySize;
6668
+ private readonly notifySizeEnd;
6669
+ private readonly ctrl;
6670
+ private machineProps;
6671
+ private injectRefs;
6672
+ /** 把手自报的边。没写就落东南角——那是文档流里最常见的那个。 */
6673
+ private edgeOf;
6674
+ protected wire(): void;
6675
+ }
6676
+ //#endregion
6677
+ //#region src/elements/scroll-area.d.ts
6678
+ /**
6679
+ * `<xh-scroll-area>` —— Light-DOM 行为宿主:作者写 root/viewport/content 与两条 scrollbar
6680
+ * 角色节点,元素按轴各跑一台 scrollbar 机器并把 connect 产出打上去。
6681
+ *
6182
6682
  * 滚动区没有自己的机器,它是视口加两条 scrollbar 的组装:scrollbar 角色节点是那条
6183
6683
  * scrollbar 的挂载点、同时充当它的根,里面照 scrollbar 那套写 track / thumb / corner
6184
6684
  * (它们戴 data-scope="scrollbar"),两个组件共用同一份滚动条。
@@ -6191,8 +6691,8 @@ declare class XhRatingElement extends XhElement {
6191
6691
  * 轨道与滑块按所在滚动条的轴向取几何,不必另写。这是挂载时的静态声明:运行期要换轴,换节点。
6192
6692
  *
6193
6693
  * @customElement xh-scroll-area
6194
- * @attr {'auto'|'always'|'scroll'|'hover'} type - 滚动条露面的时机,默认 hover
6195
- * @attr {number} hide-delay - 收起前的等待毫秒(type 为 scroll / hover 时生效),默认 600
6694
+ * @attr {'auto'|'always'|'scroll'|'hover'|'scroll-hover'} type - 滚动条露面的时机,默认 scroll-hover
6695
+ * @attr {number} hide-delay - 收起前的等待毫秒(type 为 scroll / hover / scroll-hover 时生效),默认 600
6196
6696
  * @attr {'horizontal'|'vertical'|'both'} orientation - 哪几条轴归本组件管,默认 both
6197
6697
  * @attr {'sm'|'md'|'lg'} size - 尺寸档,换的是滚动条厚度
6198
6698
  * @attr {'ltr'|'rtl'} dir - 排版方向,只改写横轴的滚动量正负与指针位移方向
@@ -6207,7 +6707,7 @@ declare class XhRatingElement extends XhElement {
6207
6707
  */
6208
6708
  declare class XhScrollAreaElement extends XhElement {
6209
6709
  static partContract: {
6210
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "viewport" | "content" | "scrollbar">;
6710
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "content" | "viewport" | "scrollbar">;
6211
6711
  meta: import("@xihan-ui/headless").ComponentMeta;
6212
6712
  delegates: import("@xihan-ui/kernel").Anatomy<"root" | "track" | "thumb" | "corner">[];
6213
6713
  };
@@ -6288,8 +6788,8 @@ declare class XhScrollAreaElement extends XhElement {
6288
6788
  * @customElement xh-scrollbar
6289
6789
  * @attr {string} controls - 滚动容器的 id;没设 scrollable 属性时按它查节点,focusable 时同时落到 aria-controls
6290
6790
  * @attr {'horizontal'|'vertical'} orientation - 这条滚动条管哪条轴,默认 vertical
6291
- * @attr {'auto'|'always'|'scroll'|'hover'} type - 露面的时机,默认 hover
6292
- * @attr {number} hide-delay - 收起前的等待毫秒(type 为 scroll / hover 时生效),默认 600
6791
+ * @attr {'auto'|'always'|'scroll'|'hover'|'scroll-hover'} type - 露面的时机,默认 scroll-hover
6792
+ * @attr {number} hide-delay - 收起前的等待毫秒(type 为 scroll / hover / scroll-hover 时生效),默认 600
6293
6793
  * @attr {number} min-thumb-size - 滑块最短多少像素,默认 20
6294
6794
  * @attr {number} step - 方向键一步滚多少像素,默认 40
6295
6795
  * @attr {'sm'|'md'|'lg'} size - 尺寸档,换的是滚动条厚度
@@ -7237,6 +7737,103 @@ declare class XhSliderElement extends XhElement {
7237
7737
  protected wire(): void;
7238
7738
  }
7239
7739
  //#endregion
7740
+ //#region src/elements/sortable.d.ts
7741
+ /**
7742
+ * `<xh-sortable>` —— Light-DOM 行为宿主:作者写 root/item/item-handle/live-region 角色节点,
7743
+ * 元素跑 sortable 机器并把 connect 产出打上去。
7744
+ *
7745
+ * 顺序的唯一真源是 `ids`,DOM 里项的先后必须与它一致——几何按 DOM 量,事件按 `ids` 算。
7746
+ * 每个 item 与它的 item-handle 都要用 `item-id` 属性写明自己是哪一项(与 Vue 侧的 `:item-id` 同一份声明)。
7747
+ * 单独禁掉某一项写 `item-disabled`。不给 item-handle 时整项可拖。
7748
+ *
7749
+ * 拖动落点走乐观投影:拖动过程中其余项实时让位,松手即定。让位与跟手的位移由元素每帧
7750
+ * 写进内联 transform,作者的样式表不要再碰这条属性。
7751
+ *
7752
+ * 键盘全在手柄上:空格或回车拾起、方向键挪一格、再按空格放下、Esc 取消。
7753
+ * 拖动中的 Tab 会被拦下——焦点一旦移走,这一场就没有出口了。
7754
+ *
7755
+ * @customElement xh-sortable
7756
+ * @attr {string} ids - 顺序真源,逗号分隔的项标识(如 "a,b,c")
7757
+ * @attr {'horizontal'|'vertical'|'both'} orientation - 排序轴,默认 vertical;换行网格用 both
7758
+ * @attr {'ltr'|'rtl'} dir - 文字方向,只对调水平排布下左右两键的语义,默认 ltr
7759
+ * @attr {boolean} disabled - 禁用:手柄退出 Tab 序列,按下也不进拖动
7760
+ * @attr {number} activation-distance - 按下之后走多远才算开始拖,默认 5;给 0 表示按下即拖
7761
+ * @attr {boolean} auto-scroll - 拖到容器边缘时自动滚动,默认开
7762
+ * @fires sort - 顺序变化;detail 为 `{ from, to, id, ids }`,其中 ids 已重排好
7763
+ * @fires drag-start - 拾起;detail 为 `{ id, from, mode }`
7764
+ * @fires drag-end - 收尾(含取消);detail 为 `{ id, from, to, mode, canceled }`
7765
+ * @csspart root - 承载 data-orientation / data-disabled / data-dragging 的容器
7766
+ * @csspart item - 一项;位移由内联 transform 给出,被拖的那项带 data-dragging
7767
+ * @csspart item-handle - role=button 的拖拽手柄,指针与键盘交互全在它身上
7768
+ * @csspart live-region - 视觉隐藏的播报区,拖动过程的读屏文案写在这里
7769
+ */
7770
+ declare class XhSortableElement extends XhElement {
7771
+ static partContract: {
7772
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "live-region" | "item-handle">;
7773
+ meta: import("@xihan-ui/headless").ComponentMeta;
7774
+ };
7775
+ static properties: {
7776
+ ids: {
7777
+ converter: {
7778
+ fromAttribute: (v: string | null) => string[] | undefined;
7779
+ };
7780
+ };
7781
+ orientation: {
7782
+ converter: {
7783
+ fromAttribute: (v: string | null) => string | undefined;
7784
+ };
7785
+ };
7786
+ direction: {
7787
+ converter: {
7788
+ fromAttribute: (v: string | null) => string | undefined;
7789
+ };
7790
+ attribute: string;
7791
+ };
7792
+ disabled: {
7793
+ converter: {
7794
+ fromAttribute: (v: string | null) => boolean | undefined;
7795
+ };
7796
+ };
7797
+ activationDistance: {
7798
+ converter: {
7799
+ fromAttribute: (v: string | null) => number | undefined;
7800
+ };
7801
+ attribute: string;
7802
+ };
7803
+ autoScroll: {
7804
+ converter: {
7805
+ fromAttribute: (v: string | null) => boolean | undefined;
7806
+ };
7807
+ attribute: string;
7808
+ };
7809
+ };
7810
+ ids?: string[];
7811
+ orientation?: SortableAxis;
7812
+ direction?: Direction;
7813
+ disabled?: boolean;
7814
+ activationDistance?: number;
7815
+ autoScroll?: boolean;
7816
+ private readonly idGen;
7817
+ private readonly sortableScope;
7818
+ private readonly notifySort;
7819
+ private readonly notifyDragStart;
7820
+ private readonly notifyDragEnd;
7821
+ private readonly ctrl;
7822
+ private machineProps;
7823
+ private injectRefs;
7824
+ /**
7825
+ * 部件自报的项标识。作者在节点上写 item-id="a",与 Vue 侧的 `:id` 是同一份声明;
7826
+ * 没写就落空串——connect 那边找不到对应项,会当作不可拖的普通节点。
7827
+ *
7828
+ * 不用 `id`:那是 HTML 全局属性,写上去会留在 DOM 里(Vue 侧的同名 prop 不会),
7829
+ * 而且同一项的外壳与手柄同名时会造出两个相同的 DOM id。
7830
+ */
7831
+ private partId;
7832
+ /** 项级禁用。写 item-disabled 即禁掉这一项,与列表级的 disabled 各管各的。 */
7833
+ private partDisabled;
7834
+ protected wire(): void;
7835
+ }
7836
+ //#endregion
7240
7837
  //#region src/elements/space.d.ts
7241
7838
  /**
7242
7839
  * `<xh-space>` —— Light-DOM 行为宿主,无状态机,把 connectSpace 产出打到 root 角色节点。
@@ -7251,7 +7848,8 @@ declare class XhSliderElement extends XhElement {
7251
7848
  * 根上不写 role:容器只做排布,里面装的是列表还是一组按钮由作者自己声明。
7252
7849
  *
7253
7850
  * @customElement xh-space
7254
- * @attr {'horizontal'|'vertical'} direction - 排布方向,缺省 horizontal
7851
+ * @attr {'horizontal'|'vertical'} orientation - 排布方向,缺省 horizontal
7852
+ * @attr {'horizontal'|'vertical'} direction - 排布方向的旧写法,两个都写时以 orientation 为准
7255
7853
  * @attr {'xs'|'sm'|'md'|'lg'|'xl'} gap - 子项间距档位,缺省 md,逐档对应一个间距令牌
7256
7854
  * @attr {'start'|'center'|'end'|'stretch'|'baseline'} align - 交叉轴对齐
7257
7855
  * @attr {'start'|'center'|'end'|'between'|'around'|'evenly'} justify - 主轴分布
@@ -7266,6 +7864,11 @@ declare class XhSpaceElement extends XhElement {
7266
7864
  meta: import("@xihan-ui/headless").ComponentMeta;
7267
7865
  };
7268
7866
  static properties: {
7867
+ orientation: {
7868
+ converter: {
7869
+ fromAttribute: (v: string | null) => string | undefined;
7870
+ };
7871
+ };
7269
7872
  direction: {
7270
7873
  converter: {
7271
7874
  fromAttribute: (v: string | null) => string | undefined;
@@ -7297,6 +7900,7 @@ declare class XhSpaceElement extends XhElement {
7297
7900
  };
7298
7901
  };
7299
7902
  };
7903
+ orientation?: SpaceProps['orientation'];
7300
7904
  direction?: SpaceProps['direction'];
7301
7905
  gap?: SpaceProps['gap'];
7302
7906
  align?: SpaceProps['align'];
@@ -7654,6 +8258,8 @@ declare class XhSwitchElement extends XhElement {
7654
8258
  }
7655
8259
  //#endregion
7656
8260
  //#region src/elements/table.d.ts
8261
+ /** 行换位事件的 detail:从机器 props 上的回调取,不在适配器里另抄一份类型。 */
8262
+ type TableRowMoveDetails = Parameters<NonNullable<TableSchema['props']['onRowMove']>>[0];
7657
8263
  /**
7658
8264
  * `<xh-table>` —— Light-DOM 行为宿主:作者写 root/caption/header/body/footer 与若干
7659
8265
  * row / column-header / cell 角色节点,元素跑 table 机器并把 connect 产出打上去。
@@ -7665,7 +8271,13 @@ declare class XhSwitchElement extends XhElement {
7665
8271
  * 同一个 row 部件写在 header / body / footer 里语义不同(表头行、数据行、脚注行),
7666
8272
  * 元素按祖先链现查区段,作者无需换用别的部件名。
7667
8273
  *
7668
- * 两份定义与三个集合都是数组/对象,只走 property(`el.rows = [...]`)。
8274
+ * 两份定义与三个集合都是数组/对象,只走 property(`el.rows = [...]`);
8275
+ * 落点校验 `allowRowDrop`(函数)同理。
8276
+ *
8277
+ * 打开 row-reorderable 后行可以拖着换位:整行都是拖动源。落点画在参照行上——
8278
+ * data-drop 为 before/after 是插在这一行前后;rows 带 parentId 的树形表另有 inside,
8279
+ * 是放进这一行底下,只有可展开或已经有孩子的行给这一档。触屏那一路走 row-drag-trigger 把手。
8280
+ * 键盘走 Alt + 方向键:上下在同层挪一位,左右在树形表下改缩进层级(rtl 下左右对调)。
7669
8281
  *
7670
8282
  * @customElement xh-table
7671
8283
  * @attr {'none'|'single'|'multiple'} selection-mode - 选择模式,默认 none(不声明就没有选择这回事)
@@ -7676,12 +8288,18 @@ declare class XhSwitchElement extends XhElement {
7676
8288
  * @attr {boolean} borderless - 去掉外框,只留行间横线
7677
8289
  * @attr {boolean} ruled - 列与列之间加竖分隔线
7678
8290
  * @attr {boolean} footer - 表格带脚注行:行号空间的最后一行留给它,aria-rowcount 也算上
8291
+ * @attr {boolean} row-reorderable - 行可以拖着换位:整行都是拖动源;触屏那一路走 row-drag-trigger 把手
7679
8292
  * @attr {boolean} loop - 上下键走到首尾回绕,默认关;写 loop="true" 打开
7680
8293
  * @attr {'ltr'|'rtl'} dir - 文字方向,只对调左右方向键的展开/收起语义,默认 ltr
7681
8294
  * @attr {'sm'|'md'|'lg'} size - 密度:只换单元格的纵向内边距与字号,列宽不受影响
7682
8295
  * @fires sort-change - 排序链变化;detail 为 `{ value: { id, direction }[] }`
8296
+ * @fires column-preference-change - 列偏好变化;detail 为 `{ value: TableColumnPreference }`
8297
+ * @prop {TableColumnPreference} columnPreference - 列偏好(显隐/顺序/宽/冻结),给定即受控
8298
+ * @prop {TableColumnKind[]} prefixColumns - 要哪几列前缀列,按给定顺序插在最前面
7683
8299
  * @fires selection-change - 选中集合变化;detail 为 `{ value: string[] | 'all' }`
7684
8300
  * @fires expanded-change - 展开集合变化;detail 为 `{ value: string[] }`
8301
+ * @fires row-move - 行换了位置;detail 为 `{ id, parent, index, ids }`,parent 为 null 即根层,index 是在那一层的落位(已算过先摘后插),ids 是重排好的整份行序
8302
+ * @prop {(move: TableRowMoveDetails) => boolean} allowRowDrop - 这一次搬家许不许,收到的是折算好的落点;不给即都许
7685
8303
  * @csspart root - role=grid 容器(rows 里有可展开的行时为 treegrid),报行列总数与多选声明
7686
8304
  * @csspart caption - 表格标题(aria-labelledby 目标)
7687
8305
  * @csspart header - role=rowgroup 表头区
@@ -7693,6 +8311,10 @@ declare class XhSwitchElement extends XhElement {
7693
8311
  * @csspart select-all-trigger - 全选把手,三态(aria-checked 半选为 mixed),自占一个 Tab 位
7694
8312
  * @csspart row-select-trigger - 行选择把手(aria-hidden 且不占 Tab 位,键盘那一路由 Space 承担)
7695
8313
  * @csspart sort-trigger - 排序把手,自占一个 Tab 位;按住 Shift 点是追加到排序链
8314
+ * @csspart column-resize-trigger - 列宽把手,自占一个 Tab 位;方向键改一步、按住 Shift 是大步
8315
+ * @csspart column-drag-trigger - 列拖拽把手,自占一个 Tab 位;方向键移一位、Home/End 移到可拖区段首末
8316
+ * @csspart row-drag-trigger - 行拖拽把手,触屏那一路的入口(自带 touch-action: none,按下即拖);对读屏隐藏且不占 Tab 位,键盘那一路由表体上的 Alt + 方向键承担
8317
+ * @csspart live-region - 视觉隐藏的播报区,列拖拽过程的读屏文案写在这里;须写在 root 之外(root 是 role=grid,它的子节点只能是 row 与 rowgroup)
7696
8318
  * @csspart expand-trigger - 展开把手(aria-hidden 且不占 Tab 位,键盘那一路由左右方向键承担)
7697
8319
  * @csspart expanded-row - role=row 详情行,须自带 value 属性与它所属的数据行配对,内部须放一个 cell 承载详情;收起时 hidden
7698
8320
  * @csspart empty - 空态节点,表体为空且不在加载时显形
@@ -7700,7 +8322,7 @@ declare class XhSwitchElement extends XhElement {
7700
8322
  */
7701
8323
  declare class XhTableElement extends XhElement {
7702
8324
  static partContract: {
7703
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "header" | "cell" | "empty" | "expand-trigger" | "body" | "row" | "footer" | "select-all-trigger" | "column-header" | "caption" | "row-select-trigger" | "sort-trigger" | "expanded-row" | "loading-state">;
8325
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "header" | "cell" | "empty" | "expand-trigger" | "body" | "row" | "footer" | "live-region" | "select-all-trigger" | "column-header" | "caption" | "row-select-trigger" | "sort-trigger" | "column-resize-trigger" | "column-drag-trigger" | "row-drag-trigger" | "expanded-row" | "loading-state">;
7704
8326
  meta: import("@xihan-ui/headless").ComponentMeta;
7705
8327
  };
7706
8328
  static properties: {
@@ -7734,6 +8356,26 @@ declare class XhTableElement extends XhElement {
7734
8356
  };
7735
8357
  attribute: string;
7736
8358
  };
8359
+ prefixColumns: {
8360
+ attribute: boolean;
8361
+ };
8362
+ columnPreference: {
8363
+ attribute: boolean;
8364
+ };
8365
+ defaultColumnPreference: {
8366
+ attribute: boolean;
8367
+ };
8368
+ page: {
8369
+ converter: {
8370
+ fromAttribute: (v: string | null) => number | undefined;
8371
+ };
8372
+ };
8373
+ pageSize: {
8374
+ converter: {
8375
+ fromAttribute: (v: string | null) => number | undefined;
8376
+ };
8377
+ attribute: string;
8378
+ };
7737
8379
  loading: {
7738
8380
  type: BooleanConstructor;
7739
8381
  };
@@ -7758,6 +8400,13 @@ declare class XhTableElement extends XhElement {
7758
8400
  footer: {
7759
8401
  type: BooleanConstructor;
7760
8402
  };
8403
+ rowReorderable: {
8404
+ type: BooleanConstructor;
8405
+ attribute: string;
8406
+ };
8407
+ allowRowDrop: {
8408
+ attribute: boolean;
8409
+ };
7761
8410
  loop: {
7762
8411
  converter: {
7763
8412
  fromAttribute: (v: string | null) => boolean | undefined;
@@ -7784,6 +8433,11 @@ declare class XhTableElement extends XhElement {
7784
8433
  expanded?: string[];
7785
8434
  defaultExpanded?: string[];
7786
8435
  selectionMode?: TableSelectionMode;
8436
+ prefixColumns?: TableColumnKind[];
8437
+ columnPreference?: TableColumnPreference;
8438
+ defaultColumnPreference?: TableColumnPreference;
8439
+ page?: number;
8440
+ pageSize?: number;
7787
8441
  loading?: boolean;
7788
8442
  empty?: boolean;
7789
8443
  stickyHeader?: boolean;
@@ -7791,12 +8445,16 @@ declare class XhTableElement extends XhElement {
7791
8445
  borderless?: boolean;
7792
8446
  ruled?: boolean;
7793
8447
  footer?: boolean;
8448
+ rowReorderable?: boolean;
8449
+ allowRowDrop?: (move: TableRowMoveDetails) => boolean;
7794
8450
  loop?: boolean;
7795
8451
  direction?: Direction;
7796
8452
  size?: Size;
8453
+ private readonly notifyColumnPreference;
7797
8454
  private readonly notifySort;
7798
8455
  private readonly notifySelection;
7799
8456
  private readonly notifyExpanded;
8457
+ private readonly notifyRowMove;
7800
8458
  private readonly ctrl;
7801
8459
  private machineProps;
7802
8460
  /** 承载焦点的行被移出 DOM 时上报 TABLE.BLUR,让机器重挑焦点锚点。 */
@@ -7808,6 +8466,11 @@ declare class XhTableElement extends XhElement {
7808
8466
  private identityOf;
7809
8467
  private rowOf;
7810
8468
  private columnOf;
8469
+ /**
8470
+ * 播报区节点。第一次用时建出来挂在元素末尾,之后一直复用——
8471
+ * 读屏不播报后插入的节点,等到拾起才建等于没有。
8472
+ */
8473
+ private ensureLiveRegion;
7811
8474
  /** 按祖先链现查行所在的区段。 */
7812
8475
  private sectionOf;
7813
8476
  protected wire(): void;
@@ -7818,6 +8481,13 @@ declare class XhTableElement extends XhElement {
7818
8481
  * `<xh-tabs>` —— Light-DOM 行为宿主,跑 tabs 机器并把 connect 产出打到 root/list/trigger/content
7819
8482
  * 角色节点上。条目身份取作者写在 trigger/content 上的 value 属性,trigger 的禁用由部件自报。
7820
8483
  *
8484
+ * 读屏文案 `translations` 是对象,属性表达不了,只能走 property(`el.translations = {...}`)。
8485
+ *
8486
+ * 打开 reorderable 后标签可以拖着换位:整个标签都是拖动源。拖动中被拖的标签原地不动,
8487
+ * 只落 data-dragging;落点画在参照标签上,data-drop 为 before/after 即插在这个标签前后。触屏那一路走 tab-drag-trigger 把手。
8488
+ * 键盘走 Alt + 主轴方向键(横排是左右、竖排是上下,横排 rtl 下左右对调),一按就是一次完整提交。
8489
+ * 顺序不由元素保管:换位只发 tab-move,标签序由使用方写回自己的数据源。
8490
+ *
7821
8491
  * @customElement xh-tabs
7822
8492
  * @attr {string} value - 受控选中值;缺省该属性即非受控
7823
8493
  * @attr {string} default-value - 非受控的初始选中值
@@ -7828,15 +8498,19 @@ declare class XhTableElement extends XhElement {
7828
8498
  * @attr {'line'|'card'|'segment'} variant - 形态,默认 line
7829
8499
  * @attr {'brand'|'neutral'|'success'|'warning'|'danger'|'info'} tone - 语气
7830
8500
  * @attr {'sm'|'md'|'lg'} size - 尺寸
8501
+ * @attr {boolean} reorderable - 标签可以拖着换位,默认关
7831
8502
  * @fires value-change - 选中值变化;detail 为 `{ value: string | null }`
8503
+ * @fires tab-move - 标签换了位;detail 为 `{ value, from, to, values }`,values 是重排好的整份标签序
7832
8504
  * @csspart root - 组件根容器(承载 data-orientation)
7833
8505
  * @csspart list - role=tablist 容器(方向键与 Tab 序列在此收口)
8506
+ * @csspart live-region - 视觉隐藏的播报区,拖动过程的读屏文案写在这里;写在 root 里、与 list 部件平级(root 自己不带角色,它落不进 role=tablist 的子节点集合)
7834
8507
  * @csspart trigger - role=tab 的标签按钮,须自带 value 属性标识身份
7835
8508
  * @csspart content - role=tabpanel 的面板,须自带 value 属性与 trigger 配对;未选中时 hidden
8509
+ * @csspart tab-drag-trigger - 标签拖拽把手,触屏那一路的入口(自带 touch-action: none,按下即拖);对读屏隐藏且不占 Tab 位,键盘那一路由标签带上的 Alt + 方向键承担
7836
8510
  */
7837
8511
  declare class XhTabsElement extends XhElement {
7838
8512
  static partContract: {
7839
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "content" | "trigger" | "list">;
8513
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "content" | "trigger" | "list" | "live-region" | "tab-drag-trigger">;
7840
8514
  meta: import("@xihan-ui/headless").ComponentMeta;
7841
8515
  };
7842
8516
  static properties: {
@@ -7891,6 +8565,12 @@ declare class XhTabsElement extends XhElement {
7891
8565
  fromAttribute: (v: string | null) => string | undefined;
7892
8566
  };
7893
8567
  };
8568
+ reorderable: {
8569
+ type: BooleanConstructor;
8570
+ };
8571
+ translations: {
8572
+ attribute: boolean;
8573
+ };
7894
8574
  };
7895
8575
  collection?: TabsNode[];
7896
8576
  value?: string;
@@ -7902,13 +8582,22 @@ declare class XhTabsElement extends XhElement {
7902
8582
  variant?: TabsVariant;
7903
8583
  tone?: Tone;
7904
8584
  size?: Size;
8585
+ reorderable?: boolean;
8586
+ translations?: Partial<TabsTranslations>;
7905
8587
  private readonly notify;
8588
+ private readonly notifyTabMove;
7906
8589
  private readonly ctrl;
7907
8590
  /** 作者声明的条目禁用,只认首见那一份;给了 collection 时用它,否则现读 */
7908
8591
  private readonly declaredDisabled;
7909
8592
  private machineProps;
7910
8593
  /** 承载焦点的条目被移出 DOM 时浏览器不派 focusout,这里替 DOM 上报焦点离场。 */
7911
8594
  protected onPartsReleased(nodes: readonly HTMLElement[]): void;
8595
+ /**
8596
+ * 取把手所属标签的身份:向上找本宿主内最近的 trigger,没有包裹层时退回读节点自身。
8597
+ * 越出本宿主的 trigger 不算数——嵌套 xh-tabs 的内层把手不会认外层的标签。
8598
+ */
8599
+ /** 把手所属的那个 trigger 节点;把手自己就写在 trigger 上时即它本身。 */
8600
+ private triggerElOf;
7912
8601
  protected wire(): void;
7913
8602
  }
7914
8603
  //#endregion
@@ -8338,7 +9027,7 @@ declare class XhTextFieldElement extends XhElement {
8338
9027
  */
8339
9028
  declare class XhThreadElement extends XhElement {
8340
9029
  static partContract: {
8341
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "viewport" | "content" | "scroll-button" | "live-region">;
9030
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "content" | "viewport" | "live-region" | "scroll-button">;
8342
9031
  meta: import("@xihan-ui/headless").ComponentMeta;
8343
9032
  };
8344
9033
  static properties: {
@@ -8411,7 +9100,7 @@ declare class XhThreadElement extends XhElement {
8411
9100
  */
8412
9101
  declare class XhTimeFieldElement extends XhElement {
8413
9102
  static partContract: {
8414
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "label" | "control" | "clear-trigger" | "hidden-input" | "segment-group" | "segment">;
9103
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "label" | "control" | "clear-trigger" | "hidden-input" | "segment" | "segment-group">;
8415
9104
  meta: import("@xihan-ui/headless").ComponentMeta;
8416
9105
  };
8417
9106
  static properties: {
@@ -8843,20 +9532,19 @@ declare class XhTimerElement extends XhElement {
8843
9532
  //#endregion
8844
9533
  //#region src/elements/toast.d.ts
8845
9534
  /**
8846
- * `<xh-toast>` —— Light-DOM 行为宿主:作者写 root/title/description/action-trigger/close-trigger
9535
+ * `<xh-toast>` —— Light-DOM 行为宿主:作者写 root/title/action-trigger/close-trigger
8847
9536
  * 角色节点,元素跑 toast 机器并把 connect 产出打上去。
8848
9537
  *
8849
9538
  * root 承载 role 与 aria-live:默认 status + polite(排队等读屏的空隙),
8850
- * type="error" 换成 alert + assertive(打断当前朗读)。指针停在通知上、
8851
- * 或焦点落进通知内部都会把倒计时按住,离开才接着走剩下的那一段。
9539
+ * type="error" 换成 alert + assertive(打断当前朗读)。指针停在条子上、
9540
+ * 或焦点落进条子内部都会把倒计时按住,离开才接着走剩下的那一段。
8852
9541
  *
8853
9542
  * 退场窗口走完只把 root 收起、不删节点:作者写在里面的内容归作者,
8854
- * 什么时候把这条从队列里删掉是 `<xh-toaster>` 的事(它收本元素冒泡上去的 status-change)。
9543
+ * 什么时候把这条从队列里删掉是全局服务的事(它收本元素冒泡上去的 status-change)。
8855
9544
  *
8856
9545
  * @customElement xh-toast
8857
- * @attr {string} id - 队列身份,`<xh-toaster>` 按它寻址;不给就用实例自己的 scope id
9546
+ * @attr {string} id - 队列身份,全局服务按它寻址;不给就用实例自己的 scope id
8858
9547
  * @attr {string} title - 标题文案;作者没在 title 部件里写内容时由元素填入
8859
- * @attr {string} description - 补充说明;作者没在 description 部件里写内容时由元素填入
8860
9548
  * @attr {'info'|'success'|'warning'|'error'|'loading'} type - 语气,默认 info;loading 不自动消失
8861
9549
  * @attr {number} duration - 停留毫秒,默认 5000;<=0 即关掉自动消失
8862
9550
  * @attr {number} remove-delay - 退场窗口毫秒,默认 200,留给退场动画
@@ -8866,13 +9554,12 @@ declare class XhTimerElement extends XhElement {
8866
9554
  * @fires action - 操作按钮被按下;detail 为 `{ id: string }`
8867
9555
  * @csspart root - role=status(error 时 alert)的容器,承载 data-type / data-tone / data-state / data-paused
8868
9556
  * @csspart title - 标题,aria-labelledby 的目标
8869
- * @csspart description - 补充说明,aria-describedby 的目标
8870
9557
  * @csspart action-trigger - 操作按钮:先发 action 再进入退场
8871
9558
  * @csspart close-trigger - 关闭按钮;closable=false 时转原生 disabled 并收起
8872
9559
  */
8873
9560
  declare class XhToastElement extends XhElement {
8874
9561
  static partContract: {
8875
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "title" | "description" | "close-trigger" | "action-trigger">;
9562
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "title" | "close-trigger" | "group" | "action-trigger">;
8876
9563
  meta: import("@xihan-ui/headless").ComponentMeta;
8877
9564
  };
8878
9565
  static properties: {
@@ -8888,11 +9575,6 @@ declare class XhToastElement extends XhElement {
8888
9575
  };
8889
9576
  attribute: string;
8890
9577
  };
8891
- description: {
8892
- converter: {
8893
- fromAttribute: (v: string | null) => string | undefined;
8894
- };
8895
- };
8896
9578
  type: {
8897
9579
  converter: {
8898
9580
  fromAttribute: (v: string | null) => string | undefined;
@@ -8926,7 +9608,6 @@ declare class XhToastElement extends XhElement {
8926
9608
  };
8927
9609
  toastId?: string;
8928
9610
  titleText?: string;
8929
- description?: string;
8930
9611
  type?: ToastType;
8931
9612
  duration?: number;
8932
9613
  removeDelay?: number;
@@ -8949,118 +9630,6 @@ declare class XhToastElement extends XhElement {
8949
9630
  protected wire(): void;
8950
9631
  }
8951
9632
  //#endregion
8952
- //#region src/elements/toaster.d.ts
8953
- /**
8954
- * `<xh-toaster>` —— Light-DOM 行为宿主:作者写 root 与若干 group 角色节点,
8955
- * 元素跑 toaster 机器并把 connect 产出打上去。每个 group 用 `placement` 属性声明自己是哪个位置,
8956
- * 不写就落在 toaster 的 placement 上。
8957
- *
8958
- * 单条通知的节点由作者按队列渲染(读 `visibleToasts` 或听 `toasts-change`),元素不替作者生成:
8959
- * 生成节点就等于收走模板控制权,图标、进度条、i18n 文案都再塞不进来。
8960
- * 每条渲染成一个 `<xh-toast>`,它走完退场会冒泡一条 status-change,本元素据此把记录删掉。
8961
- *
8962
- * @customElement xh-toaster
8963
- * @attr {'top-start'|'top'|'top-end'|'middle-start'|'middle'|'middle-end'|'bottom-start'|'bottom'|'bottom-end'} placement - 默认落位,默认 bottom-end
8964
- * @attr {number} max - 每个位置最多同时留几条,超出挤掉最旧的;不给即不限
8965
- * @attr {number} gap - 同一摞内的间距(px),默认 16
8966
- * @attr {number} duration - 单条没写 duration 时的默认停留毫秒
8967
- * @attr {number} remove-delay - 单条没写 remove-delay 时的默认退场窗口毫秒
8968
- * @attr {boolean} pause-on-page-idle - 页面切到后台时按住计时,逐条下发
8969
- * @fires toasts-change - 队列变化;detail 为 `{ toasts: ToastRecord[] }`
8970
- * @csspart root - role=region 的地标容器,承载 data-count / data-empty
8971
- * @csspart group - 某一个位置上的那一摞,可自带 placement 属性;承载 data-placement / data-count / data-empty 与间距
8972
- */
8973
- declare class XhToasterElement extends XhElement {
8974
- static partContract: {
8975
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "group">;
8976
- meta: import("@xihan-ui/headless").ComponentMeta;
8977
- };
8978
- static properties: {
8979
- toasts: {
8980
- attribute: boolean;
8981
- };
8982
- defaultToasts: {
8983
- attribute: boolean;
8984
- };
8985
- placement: {
8986
- converter: {
8987
- fromAttribute: (v: string | null) => string | undefined;
8988
- };
8989
- };
8990
- max: {
8991
- converter: {
8992
- fromAttribute: (v: string | null) => number | undefined;
8993
- };
8994
- };
8995
- gap: {
8996
- converter: {
8997
- fromAttribute: (v: string | null) => number | undefined;
8998
- };
8999
- };
9000
- duration: {
9001
- converter: {
9002
- fromAttribute: (v: string | null) => number | undefined;
9003
- };
9004
- };
9005
- removeDelay: {
9006
- converter: {
9007
- fromAttribute: (v: string | null) => number | undefined;
9008
- };
9009
- attribute: string;
9010
- };
9011
- pauseOnPageIdle: {
9012
- converter: {
9013
- fromAttribute: (v: string | null) => boolean | undefined;
9014
- };
9015
- attribute: string;
9016
- };
9017
- translations: {
9018
- attribute: boolean;
9019
- };
9020
- };
9021
- toasts?: ToastRecord[];
9022
- defaultToasts?: ToastRecord[];
9023
- placement?: ToastPlacement;
9024
- max?: number;
9025
- gap?: number;
9026
- duration?: number;
9027
- removeDelay?: number;
9028
- pauseOnPageIdle?: boolean;
9029
- translations?: Partial<ToasterTranslations>;
9030
- private readonly notify;
9031
- private readonly ctrl;
9032
- private machineProps;
9033
- /**
9034
- * 命令式入口共用的取法。机器要到进文档(hostConnected)才建:
9035
- * 还没进文档就发通知是调用方的时序问题,明说好过把这条通知静默丢掉。
9036
- */
9037
- private commands;
9038
- /** 入队并返回 id;同 id 已存在则就地改写,位置不动(loading 转 success 走的就是这条)。 */
9039
- create(options?: ToastOptions): string;
9040
- /**
9041
- * 刻意不叫 `update`:那是 Lit 自己的渲染生命周期钩子,占用它会让宿主每次重渲
9042
- * 都拐进这里来(还带着一个 changedProperties 当 id),组件当场不工作。
9043
- * Vue 侧没有这层基类,composable 上仍叫 `update`。
9044
- */
9045
- updateToast(id: string, options: Partial<ToastOptions>): void;
9046
- dismiss(id: string): void;
9047
- dismissAll(): void;
9048
- /** max 之内、按加入先后排列的可见条目,已补齐默认值,可直接摊给 `<xh-toast>`。 */
9049
- get visibleToasts(): ResolvedToast[];
9050
- /** 当前有条目的位置,按九宫格固定顺序。 */
9051
- get placements(): ToastPlacement[];
9052
- get count(): number;
9053
- getToastsByPlacement(placement: ToastPlacement): ResolvedToast[];
9054
- /**
9055
- * 单条通知走完退场会冒泡上来:记录该从队列里删掉了。
9056
- * 认元素名而不是只认事件名——avatar 之类的部件也派 status-change,且完全可能就摆在通知内部。
9057
- */
9058
- private readonly onToastStatus;
9059
- connectedCallback(): void;
9060
- disconnectedCallback(): void;
9061
- protected wire(): void;
9062
- }
9063
- //#endregion
9064
9633
  //#region src/elements/toggle.d.ts
9065
9634
  /**
9066
9635
  * `<xh-toggle>` —— Light-DOM 行为宿主,跑 toggle 机器并把 connect 产出打到 root 角色节点。
@@ -9126,6 +9695,7 @@ declare class XhToggleElement extends XhElement {
9126
9695
  * @attr {boolean} multiple - 允许多项同时选中,默认关闭
9127
9696
  * @attr {boolean} disabled - 整组禁用
9128
9697
  * @attr {boolean} disallow-empty - 不许把值点空(最后一个选中项摘不掉)
9698
+ * @attr {'sm'|'md'|'lg'} size - 尺寸
9129
9699
  * @attr {'horizontal'|'vertical'} orientation - 视觉排布,默认 horizontal;方向键四个恒响应,与它无关
9130
9700
  * @attr {'ltr'|'rtl'} dir - 文字方向,只改写左右方向键语义,默认 ltr
9131
9701
  * @attr {boolean} loop - 方向键走到尽头回绕,默认开启
@@ -9170,6 +9740,11 @@ declare class XhToggleGroupElement extends XhElement {
9170
9740
  };
9171
9741
  attribute: string;
9172
9742
  };
9743
+ size: {
9744
+ converter: {
9745
+ fromAttribute: (v: string | null) => string | undefined;
9746
+ };
9747
+ };
9173
9748
  orientation: {
9174
9749
  converter: {
9175
9750
  fromAttribute: (v: string | null) => string | undefined;
@@ -9199,6 +9774,7 @@ declare class XhToggleGroupElement extends XhElement {
9199
9774
  multiple?: boolean;
9200
9775
  disabled?: boolean;
9201
9776
  disallowEmpty?: boolean;
9777
+ size?: Size;
9202
9778
  orientation?: Orientation;
9203
9779
  direction?: Direction;
9204
9780
  loop?: boolean;
@@ -9680,6 +10256,8 @@ declare class XhTransferElement extends XhElement {
9680
10256
  }
9681
10257
  //#endregion
9682
10258
  //#region src/elements/tree.d.ts
10259
+ /** 搬家事件的 detail:从机器 props 上的回调取,不在适配器里另抄一份类型。 */
10260
+ type TreeNodeMoveDetails = Parameters<NonNullable<TreeSchema['props']['onNodeMove']>>[0];
9683
10261
  /**
9684
10262
  * `<xh-tree>` —— Light-DOM 行为宿主:作者写 root/label/tree 与若干 item / branch 角色节点,
9685
10263
  * 元素跑 tree 机器并把 connect 产出打上去。节点身份取自节点上的 value 属性。
@@ -9688,10 +10266,18 @@ declare class XhTransferElement extends XhElement {
9688
10266
  * 这份树数据——它是元信息的唯一事实源,作者的标记只管长相,两个适配器也就不会各推各的。
9689
10267
  * 因此 collection 必须与标记同源:标记里有、collection 里没有的节点报不出层级,也进不了导航。
9690
10268
  *
9691
- * 树数据与展开/选中集合都是数组,属性表达不了,只能走 property(`el.collection = [...]`)。
10269
+ * 树数据与展开/选中集合都是数组,属性表达不了,只能走 property(`el.collection = [...]`);
10270
+ * 落点校验 `allowDrop`(函数)与读屏文案 `translations`(对象)同理。
10271
+ *
10272
+ * 打开 node-draggable 后节点可以拖着搬家:整个节点都是拖动源。拖动中被拖的节点原地不动,
10273
+ * 只落 data-dragging;落点画在参照节点上——data-drop 为 before/after 是插在这一行前后,
10274
+ * 为 inside 是放进这个分支。触屏那一路走 node-drag-trigger 把手。
10275
+ * 键盘走 Alt + 方向键:上下在同层兄弟间挪,左右改缩进层级(rtl 下左右对调),一按就是一次完整提交。
9692
10276
  *
9693
10277
  * @customElement xh-tree
9694
- * @attr {'single'|'multiple'} selection-mode - 选择模式,默认 single
10278
+ * @attr {boolean} multiple - 复选,默认关闭
10279
+ * @attr {'horizontal'|'vertical'} leaf-orientation - 末端那一层怎么排,默认 vertical;horizontal 让子节点全是叶子的那层并排铺开
10280
+ * @attr {'single'|'multiple'} selection-mode - 选择模式的旧写法,默认 single;与 multiple 同时给时以它为准
9695
10281
  * @attr {boolean} cascade - multiple 下父子级联勾选(整枝传导/半选/禁用冻结),默认 false
9696
10282
  * @attr {string} checked-strategy - 级联下对外值的收敛策略:child(默认)/ parent / all
9697
10283
  * @attr {boolean} expand-on-click - 点分支行顺带展开/收起,默认开;写 expand-on-click="false" 关掉
@@ -9699,10 +10285,13 @@ declare class XhTransferElement extends XhElement {
9699
10285
  * @attr {boolean} loop - 上下键走到首尾回绕,默认关;写 loop="true" 打开
9700
10286
  * @attr {boolean} typeahead - 连打检索,默认开;写 typeahead="false" 关掉
9701
10287
  * @attr {'ltr'|'rtl'} dir - 文字方向,只对调左右方向键的展开/收起语义,默认 ltr
10288
+ * @attr {boolean} node-draggable - 节点可以拖着搬家,默认关;不叫 draggable 是因为那是 HTML 全局属性,写在元素上浏览器会拿它接管原生拖放,指针就到不了这里
9702
10289
  * @fires expanded-change - 展开集合变化;detail 为 `{ value: string[] }`
9703
10290
  * @fires selection-change - 选中集合变化;detail 为 `{ value: string[] }`
10291
+ * @fires node-move - 节点搬了家;detail 为 `{ value, parent, index }`,parent 为 null 即根层,index 是在那一层的落位(已算过先摘后插)
9704
10292
  * @csspart root - 组件根容器
9705
10293
  * @csspart label - 树标题(aria-labelledby 目标)
10294
+ * @csspart live-region - 视觉隐藏的播报区,拖动过程的读屏文案写在这里;写在 root 里、与 tree 部件平级(root 自己不带角色,它落不进 role=tree 的子节点集合)
9706
10295
  * @csspart tree - role=tree 容器,键盘在此收口,也是 roving tabindex 的兜底位
9707
10296
  * @csspart item - role=treeitem 叶子,须自带 value 属性标识身份
9708
10297
  * @csspart item-text - 叶子文本
@@ -9715,10 +10304,11 @@ declare class XhTransferElement extends XhElement {
9715
10304
  * @csspart branch-indicator - 展开方向指示符(aria-hidden)
9716
10305
  * @csspart branch-text - 分支文本
9717
10306
  * @csspart branch-content - role=group 子层容器,收起时隐藏
10307
+ * @csspart node-drag-trigger - 节点拖拽把手,触屏那一路的入口(自带 touch-action: none,按下即拖);对读屏隐藏且不占 Tab 位,键盘那一路由树上的 Alt + 方向键承担
9718
10308
  */
9719
10309
  declare class XhTreeElement extends XhElement {
9720
10310
  static partContract: {
9721
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "label" | "item-text" | "item-indicator" | "tree" | "branch" | "branch-control" | "branch-trigger" | "branch-indicator" | "branch-text" | "branch-content" | "item-checkbox" | "branch-checkbox">;
10311
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "label" | "item-text" | "item-indicator" | "tree" | "branch" | "branch-control" | "branch-trigger" | "branch-indicator" | "branch-text" | "branch-content" | "live-region" | "item-checkbox" | "branch-checkbox" | "node-drag-trigger">;
9722
10312
  meta: import("@xihan-ui/headless").ComponentMeta;
9723
10313
  };
9724
10314
  static properties: {
@@ -9737,6 +10327,17 @@ declare class XhTreeElement extends XhElement {
9737
10327
  defaultSelection: {
9738
10328
  attribute: boolean;
9739
10329
  };
10330
+ multiple: {
10331
+ converter: {
10332
+ fromAttribute: (v: string | null) => boolean | undefined;
10333
+ };
10334
+ };
10335
+ leafOrientation: {
10336
+ converter: {
10337
+ fromAttribute: (v: string | null) => string | undefined;
10338
+ };
10339
+ attribute: string;
10340
+ };
9740
10341
  selectionMode: {
9741
10342
  converter: {
9742
10343
  fromAttribute: (v: string | null) => string | undefined;
@@ -9777,12 +10378,24 @@ declare class XhTreeElement extends XhElement {
9777
10378
  };
9778
10379
  attribute: string;
9779
10380
  };
10381
+ nodeDraggable: {
10382
+ type: BooleanConstructor;
10383
+ attribute: string;
10384
+ };
10385
+ allowDrop: {
10386
+ attribute: boolean;
10387
+ };
10388
+ translations: {
10389
+ attribute: boolean;
10390
+ };
9780
10391
  };
9781
10392
  collection?: TreeNode[];
9782
10393
  expandedValue?: string[];
9783
10394
  defaultExpandedValue?: string[];
9784
10395
  selection?: string[];
9785
10396
  defaultSelection?: string[];
10397
+ multiple?: boolean;
10398
+ leafOrientation?: Orientation;
9786
10399
  selectionMode?: TreeSelectionMode;
9787
10400
  cascade?: boolean;
9788
10401
  checkedStrategy?: TreeSchema['props']['checkedStrategy'];
@@ -9791,8 +10404,12 @@ declare class XhTreeElement extends XhElement {
9791
10404
  loop?: boolean;
9792
10405
  typeahead?: boolean;
9793
10406
  direction?: Direction;
10407
+ nodeDraggable?: boolean;
10408
+ allowDrop?: (move: TreeNodeMoveDetails) => boolean;
10409
+ translations?: Partial<TreeTranslations>;
9794
10410
  private readonly notifyExpanded;
9795
10411
  private readonly notifySelection;
10412
+ private readonly notifyNodeMove;
9796
10413
  private readonly ctrl;
9797
10414
  private machineProps;
9798
10415
  /**
@@ -10017,6 +10634,12 @@ declare class XhTreeSelectElement extends XhElement {
10017
10634
  private readonly notifyExpanded;
10018
10635
  private readonly notifyOpen;
10019
10636
  private readonly ctrl;
10637
+ /**
10638
+ * 树的自绘条:与 content 同级挂在已经 fixed 的 positioner 上。
10639
+ * 两条轴都摆——深层节点靠缩进往行末推,横向溢出与纵向一样是常态;
10640
+ * 横条的正负按排版方向算,而组件不读计算样式,把作者写的那份显式交过去。
10641
+ */
10642
+ private readonly bars;
10020
10643
  private machineProps;
10021
10644
  private ensureConfig;
10022
10645
  private readonly registerLayer;
@@ -10071,7 +10694,7 @@ declare class XhTreeSelectElement extends XhElement {
10071
10694
  */
10072
10695
  declare class XhVirtualizerElement extends XhElement {
10073
10696
  static partContract: {
10074
- anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "viewport" | "content">;
10697
+ anatomy: import("@xihan-ui/kernel").Anatomy<"root" | "item" | "content" | "viewport">;
10075
10698
  meta: import("@xihan-ui/headless").ComponentMeta;
10076
10699
  };
10077
10700
  static properties: {
@@ -10167,5 +10790,5 @@ declare class XhVirtualizerElement extends XhElement {
10167
10790
  //#region src/define.d.ts
10168
10791
  declare function defineXhElements(): void;
10169
10792
  //#endregion
10170
- export { XhAccordionElement, XhAlertElement, XhAnchorElement, XhAvatarElement, XhBadgeElement, XhBreadcrumbElement, XhButtonElement, XhCalendarElement, XhCarouselElement, XhCascaderElement, XhCheckboxElement, XhCheckboxGroupElement, XhClipboardElement, XhCodeBlockElement, XhCollapsibleElement, XhColorPickerElement, XhComboboxElement, XhComposerElement, XhConfigElement, XhContextMenuElement, XhDateFieldElement, XhDatePickerElement, XhDialogElement, XhDownloadTriggerElement, XhDrawerElement, XhEditableElement, XhEmptyStateElement, XhFieldElement, XhFieldsetElement, XhFileUploadElement, XhFloatingPanelElement, XhFormElement, XhHeatmapElement, XhHotkeysElement, XhHoverCardElement, XhIconElement, XhImageCropperElement, XhImageElement, XhImageViewerElement, XhJsonViewerElement, XhListboxElement, XhLoadingBarElement, XhMasonryElement, XhMenuElement, XhMenubarElement, XhNavigationMenuElement, XhNumberFieldElement, XhPaginationElement, XhPasswordInputElement, XhPinInputElement, XhPopoverElement, XhProgressElement, XhRadioGroupElement, XhRatingElement, XhScrollAreaElement, XhScrollbarElement, XhSegmentedElement, XhSelectElement, XhSeparatorElement, XhSideNavElement, XhSignaturePadElement, XhSkeletonElement, XhSliderElement, XhSpaceElement, XhSpinnerElement, XhSplitterElement, XhStepsElement, XhSwitchElement, XhTableElement, XhTabsElement, XhTagElement, XhTagsInputElement, XhTextFieldElement, XhThreadElement, XhTimeFieldElement, XhTimePickerElement, XhTimerElement, XhToastElement, XhToasterElement, XhToggleElement, XhToggleGroupElement, XhToolbarElement, XhTooltipElement, XhTourElement, XhTransferElement, XhTreeElement, XhTreeSelectElement, XhVirtualizerElement, defineXhElements };
10793
+ export { XhAccordionElement, XhAlertElement, XhAnchorElement, XhAvatarElement, XhBadgeElement, XhBreadcrumbElement, XhButtonElement, XhCalendarElement, XhCarouselElement, XhCascaderElement, XhCheckboxElement, XhCheckboxGroupElement, XhClipboardElement, XhCodeBlockElement, XhCollapsibleElement, XhColorPickerElement, XhComboboxElement, XhComposerElement, XhConfigElement, XhContextMenuElement, XhDateFieldElement, XhDatePickerElement, XhDialogElement, XhDownloadTriggerElement, XhDrawerElement, XhEditableElement, XhEmptyStateElement, XhFieldElement, XhFieldsetElement, XhFileUploadElement, XhFloatingPanelElement, XhFormElement, XhHeatmapElement, XhHotkeysElement, XhHoverCardElement, XhIconElement, XhImageCropperElement, XhImageElement, XhImageViewerElement, XhJsonViewerElement, XhListboxElement, XhLoadingBarElement, XhMasonryElement, XhMenuElement, XhMenubarElement, XhNavigationMenuElement, XhNotificationElement, XhNotificationItemElement, XhNumberFieldElement, XhPaginationElement, XhPasswordInputElement, XhPinInputElement, XhPopoverElement, XhProgressElement, XhRadioGroupElement, XhRatingElement, XhResizableElement, XhScrollAreaElement, XhScrollbarElement, XhSegmentedElement, XhSelectElement, XhSeparatorElement, XhSideNavElement, XhSignaturePadElement, XhSkeletonElement, XhSliderElement, XhSortableElement, XhSpaceElement, XhSpinnerElement, XhSplitterElement, XhStepsElement, XhSwitchElement, XhTableElement, XhTabsElement, XhTagElement, XhTagsInputElement, XhTextFieldElement, XhThreadElement, XhTimeFieldElement, XhTimePickerElement, XhTimerElement, XhToastElement, XhToggleElement, XhToggleGroupElement, XhToolbarElement, XhTooltipElement, XhTourElement, XhTransferElement, XhTreeElement, XhTreeSelectElement, XhVirtualizerElement, defineXhElements };
10171
10794
  //# sourceMappingURL=define.d.ts.map