@h-ai/ui 0.1.0-alpha.29 → 0.1.0-alpha.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. package/README.md +12 -0
  2. package/dist/components/compounds/Accordion.svelte +6 -3
  3. package/dist/components/compounds/Accordion.svelte.d.ts +3 -1
  4. package/dist/components/compounds/ActionSheet.svelte +11 -8
  5. package/dist/components/compounds/ActionSheet.svelte.d.ts +3 -1
  6. package/dist/components/compounds/Alert.svelte +6 -4
  7. package/dist/components/compounds/Alert.svelte.d.ts +3 -2
  8. package/dist/components/compounds/AppBar.svelte +13 -9
  9. package/dist/components/compounds/AppBar.svelte.d.ts +3 -1
  10. package/dist/components/compounds/BottomNav.svelte +13 -10
  11. package/dist/components/compounds/BottomNav.svelte.d.ts +3 -1
  12. package/dist/components/compounds/Breadcrumb.svelte +6 -4
  13. package/dist/components/compounds/Breadcrumb.svelte.d.ts +3 -2
  14. package/dist/components/compounds/Calendar.svelte +7 -2
  15. package/dist/components/compounds/Calendar.svelte.d.ts +3 -1
  16. package/dist/components/compounds/Card.svelte +6 -4
  17. package/dist/components/compounds/Card.svelte.d.ts +3 -2
  18. package/dist/components/compounds/Combobox.svelte +6 -2
  19. package/dist/components/compounds/Combobox.svelte.d.ts +3 -1
  20. package/dist/components/compounds/Confirm.svelte +9 -7
  21. package/dist/components/compounds/Confirm.svelte.d.ts +3 -2
  22. package/dist/components/compounds/DataTable.svelte +6 -2
  23. package/dist/components/compounds/DataTable.svelte.d.ts +2 -1
  24. package/dist/components/compounds/DatePicker.svelte +7 -2
  25. package/dist/components/compounds/DatePicker.svelte.d.ts +3 -1
  26. package/dist/components/compounds/Drawer.svelte +6 -4
  27. package/dist/components/compounds/Drawer.svelte.d.ts +3 -2
  28. package/dist/components/compounds/Dropdown.svelte +6 -4
  29. package/dist/components/compounds/Dropdown.svelte.d.ts +3 -2
  30. package/dist/components/compounds/Empty.svelte +6 -4
  31. package/dist/components/compounds/Empty.svelte.d.ts +3 -2
  32. package/dist/components/compounds/Form.svelte +11 -9
  33. package/dist/components/compounds/Form.svelte.d.ts +3 -2
  34. package/dist/components/compounds/FormField.svelte +6 -4
  35. package/dist/components/compounds/FormField.svelte.d.ts +3 -2
  36. package/dist/components/compounds/InfiniteScroll.svelte +10 -7
  37. package/dist/components/compounds/InfiniteScroll.svelte.d.ts +3 -1
  38. package/dist/components/compounds/MessageBoxContainer.svelte +6 -1
  39. package/dist/components/compounds/MessageBoxContainer.svelte.d.ts +3 -17
  40. package/dist/components/compounds/MessageBoxDialog.svelte +9 -7
  41. package/dist/components/compounds/MessageBoxDialog.svelte.d.ts +2 -1
  42. package/dist/components/compounds/MessageContainer.svelte +6 -2
  43. package/dist/components/compounds/MessageContainer.svelte.d.ts +2 -1
  44. package/dist/components/compounds/Modal.svelte +9 -7
  45. package/dist/components/compounds/Modal.svelte.d.ts +3 -2
  46. package/dist/components/compounds/PageHeader.svelte +6 -2
  47. package/dist/components/compounds/PageHeader.svelte.d.ts +3 -1
  48. package/dist/components/compounds/Pagination.svelte +6 -4
  49. package/dist/components/compounds/Pagination.svelte.d.ts +3 -2
  50. package/dist/components/compounds/Popover.svelte +10 -8
  51. package/dist/components/compounds/Popover.svelte.d.ts +3 -2
  52. package/dist/components/compounds/PullRefresh.svelte +11 -8
  53. package/dist/components/compounds/PullRefresh.svelte.d.ts +3 -1
  54. package/dist/components/compounds/Result.svelte +6 -4
  55. package/dist/components/compounds/Result.svelte.d.ts +3 -2
  56. package/dist/components/compounds/SafeArea.svelte +6 -3
  57. package/dist/components/compounds/SafeArea.svelte.d.ts +3 -1
  58. package/dist/components/compounds/Skeleton.svelte +6 -4
  59. package/dist/components/compounds/Skeleton.svelte.d.ts +3 -2
  60. package/dist/components/compounds/Steps.svelte +6 -4
  61. package/dist/components/compounds/Steps.svelte.d.ts +3 -2
  62. package/dist/components/compounds/SwipeCell.svelte +6 -3
  63. package/dist/components/compounds/SwipeCell.svelte.d.ts +3 -1
  64. package/dist/components/compounds/Tabs.svelte +6 -4
  65. package/dist/components/compounds/Tabs.svelte.d.ts +3 -2
  66. package/dist/components/compounds/TagInput.svelte +11 -9
  67. package/dist/components/compounds/TagInput.svelte.d.ts +3 -2
  68. package/dist/components/compounds/Timeline.svelte +6 -3
  69. package/dist/components/compounds/Timeline.svelte.d.ts +3 -1
  70. package/dist/components/compounds/ToastContainer.svelte +6 -2
  71. package/dist/components/compounds/ToastContainer.svelte.d.ts +2 -1
  72. package/dist/components/compounds/Tooltip.svelte +6 -4
  73. package/dist/components/compounds/Tooltip.svelte.d.ts +3 -2
  74. package/dist/components/primitives/Avatar.svelte +6 -4
  75. package/dist/components/primitives/Avatar.svelte.d.ts +3 -2
  76. package/dist/components/primitives/Badge.svelte +6 -4
  77. package/dist/components/primitives/Badge.svelte.d.ts +3 -2
  78. package/dist/components/primitives/BareButton.svelte +15 -12
  79. package/dist/components/primitives/BareButton.svelte.d.ts +3 -2
  80. package/dist/components/primitives/BareInput.svelte +37 -34
  81. package/dist/components/primitives/BareInput.svelte.d.ts +3 -2
  82. package/dist/components/primitives/Button.svelte +12 -10
  83. package/dist/components/primitives/Button.svelte.d.ts +3 -2
  84. package/dist/components/primitives/Checkbox.svelte +6 -4
  85. package/dist/components/primitives/Checkbox.svelte.d.ts +3 -2
  86. package/dist/components/primitives/IconButton.svelte +6 -4
  87. package/dist/components/primitives/IconButton.svelte.d.ts +3 -2
  88. package/dist/components/primitives/Input.svelte +6 -4
  89. package/dist/components/primitives/Input.svelte.d.ts +3 -2
  90. package/dist/components/primitives/Progress.svelte +6 -4
  91. package/dist/components/primitives/Progress.svelte.d.ts +3 -2
  92. package/dist/components/primitives/Radio.svelte +6 -4
  93. package/dist/components/primitives/Radio.svelte.d.ts +2 -2
  94. package/dist/components/primitives/Range.svelte +6 -3
  95. package/dist/components/primitives/Range.svelte.d.ts +3 -1
  96. package/dist/components/primitives/Rating.svelte +6 -3
  97. package/dist/components/primitives/Rating.svelte.d.ts +3 -1
  98. package/dist/components/primitives/Select.svelte +6 -4
  99. package/dist/components/primitives/Select.svelte.d.ts +2 -2
  100. package/dist/components/primitives/Spinner.svelte +6 -4
  101. package/dist/components/primitives/Spinner.svelte.d.ts +3 -2
  102. package/dist/components/primitives/Switch.svelte +6 -4
  103. package/dist/components/primitives/Switch.svelte.d.ts +3 -2
  104. package/dist/components/primitives/Tag.svelte +6 -4
  105. package/dist/components/primitives/Tag.svelte.d.ts +3 -2
  106. package/dist/components/primitives/Textarea.svelte +6 -4
  107. package/dist/components/primitives/Textarea.svelte.d.ts +3 -2
  108. package/dist/components/primitives/ToggleCheckbox.svelte +13 -10
  109. package/dist/components/primitives/ToggleCheckbox.svelte.d.ts +3 -2
  110. package/dist/components/primitives/ToggleInput.svelte +13 -10
  111. package/dist/components/primitives/ToggleInput.svelte.d.ts +3 -2
  112. package/dist/components/primitives/ToggleRadio.svelte +13 -10
  113. package/dist/components/primitives/ToggleRadio.svelte.d.ts +3 -2
  114. package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte +8 -5
  115. package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte.d.ts +3 -1
  116. package/dist/components/scenes/ai/AiDocumentEditor.svelte +6 -3
  117. package/dist/components/scenes/ai/AiDocumentEditor.svelte.d.ts +3 -1
  118. package/dist/components/scenes/ai/MarkdownRenderer.svelte +8 -7
  119. package/dist/components/scenes/ai/MarkdownRenderer.svelte.d.ts +3 -1
  120. package/dist/components/scenes/ai/document-types.d.ts +2 -1
  121. package/dist/components/scenes/ai/table/AiTableEditor.svelte +6 -3
  122. package/dist/components/scenes/ai/table/AiTableEditor.svelte.d.ts +3 -1
  123. package/dist/components/scenes/ai/table/table-types.d.ts +2 -1
  124. package/dist/components/scenes/app/FeedbackModal.svelte +5 -2
  125. package/dist/components/scenes/app/FeedbackModal.svelte.d.ts +3 -1
  126. package/dist/components/scenes/app/LanguageSwitch.svelte +6 -2
  127. package/dist/components/scenes/app/LanguageSwitch.svelte.d.ts +3 -1
  128. package/dist/components/scenes/app/SettingsLayout.svelte +6 -3
  129. package/dist/components/scenes/app/SettingsLayout.svelte.d.ts +2 -1
  130. package/dist/components/scenes/app/SettingsModal.svelte +6 -3
  131. package/dist/components/scenes/app/SettingsModal.svelte.d.ts +3 -1
  132. package/dist/components/scenes/app/ThemeColorPicker.svelte +6 -3
  133. package/dist/components/scenes/app/ThemeColorPicker.svelte.d.ts +3 -1
  134. package/dist/components/scenes/app/ThemeSelector.svelte +6 -3
  135. package/dist/components/scenes/app/ThemeSelector.svelte.d.ts +3 -1
  136. package/dist/components/scenes/app/ThemeToggle.svelte +6 -2
  137. package/dist/components/scenes/app/ThemeToggle.svelte.d.ts +3 -1
  138. package/dist/components/scenes/crud/CrudDeleteConfirm.svelte +16 -11
  139. package/dist/components/scenes/crud/CrudDeleteConfirm.svelte.d.ts +2 -1
  140. package/dist/components/scenes/crud/CrudDetailDrawer.svelte +6 -3
  141. package/dist/components/scenes/crud/CrudDetailDrawer.svelte.d.ts +2 -2
  142. package/dist/components/scenes/crud/CrudDetailPanel.svelte +6 -3
  143. package/dist/components/scenes/crud/CrudDetailPanel.svelte.d.ts +2 -2
  144. package/dist/components/scenes/crud/CrudEditPanel.svelte +6 -3
  145. package/dist/components/scenes/crud/CrudEditPanel.svelte.d.ts +2 -2
  146. package/dist/components/scenes/crud/CrudFilterBar.svelte +6 -2
  147. package/dist/components/scenes/crud/CrudFilterBar.svelte.d.ts +2 -1
  148. package/dist/components/scenes/crud/CrudPage.svelte +6 -2
  149. package/dist/components/scenes/crud/CrudPage.svelte.d.ts +2 -1
  150. package/dist/components/scenes/crud/crud-types.d.ts +2 -2
  151. package/dist/components/scenes/crypto/EncryptedInput.svelte +6 -3
  152. package/dist/components/scenes/crypto/EncryptedInput.svelte.d.ts +3 -2
  153. package/dist/components/scenes/crypto/HashDisplay.svelte +6 -3
  154. package/dist/components/scenes/crypto/HashDisplay.svelte.d.ts +3 -1
  155. package/dist/components/scenes/crypto/SignatureDisplay.svelte +6 -3
  156. package/dist/components/scenes/crypto/SignatureDisplay.svelte.d.ts +3 -1
  157. package/dist/components/scenes/error/ErrorPage.svelte +6 -3
  158. package/dist/components/scenes/error/ErrorPage.svelte.d.ts +2 -1
  159. package/dist/components/scenes/iam/AuthShell.svelte +6 -3
  160. package/dist/components/scenes/iam/AuthShell.svelte.d.ts +2 -1
  161. package/dist/components/scenes/iam/ChangePasswordForm.svelte +6 -3
  162. package/dist/components/scenes/iam/ChangePasswordForm.svelte.d.ts +3 -1
  163. package/dist/components/scenes/iam/ForgotPasswordForm.svelte +6 -3
  164. package/dist/components/scenes/iam/ForgotPasswordForm.svelte.d.ts +3 -1
  165. package/dist/components/scenes/iam/LoginForm.svelte +6 -3
  166. package/dist/components/scenes/iam/LoginForm.svelte.d.ts +3 -1
  167. package/dist/components/scenes/iam/PasswordInput.svelte +6 -4
  168. package/dist/components/scenes/iam/PasswordInput.svelte.d.ts +3 -2
  169. package/dist/components/scenes/iam/RegisterForm.svelte +6 -4
  170. package/dist/components/scenes/iam/RegisterForm.svelte.d.ts +3 -1
  171. package/dist/components/scenes/iam/ResetPasswordForm.svelte +6 -3
  172. package/dist/components/scenes/iam/ResetPasswordForm.svelte.d.ts +3 -1
  173. package/dist/components/scenes/iam/UserProfile.svelte +6 -3
  174. package/dist/components/scenes/iam/UserProfile.svelte.d.ts +3 -1
  175. package/dist/components/scenes/storage/AvatarUpload.svelte +11 -8
  176. package/dist/components/scenes/storage/AvatarUpload.svelte.d.ts +3 -1
  177. package/dist/components/scenes/storage/FileList.svelte +6 -3
  178. package/dist/components/scenes/storage/FileList.svelte.d.ts +3 -1
  179. package/dist/components/scenes/storage/FileUpload.svelte +6 -3
  180. package/dist/components/scenes/storage/FileUpload.svelte.d.ts +3 -1
  181. package/dist/components/scenes/storage/ImageUpload.svelte +12 -9
  182. package/dist/components/scenes/storage/ImageUpload.svelte.d.ts +3 -1
  183. package/dist/components/scenes/types.d.ts +16 -16
  184. package/dist/types.d.ts +43 -36
  185. package/dist/utils.d.ts +6 -1
  186. package/dist/utils.js +15 -0
  187. package/package.json +2 -2
package/dist/types.d.ts CHANGED
@@ -5,6 +5,13 @@
5
5
  * @module types
6
6
  */
7
7
  import type { Snippet } from 'svelte';
8
+ /**
9
+ * 可转发到组件根节点或主交互节点的 data-* 属性。
10
+ */
11
+ export type DataAttributeValue = string | number | boolean | null | undefined;
12
+ export interface DataAttributes {
13
+ [key: `data-${string}`]: DataAttributeValue;
14
+ }
8
15
  /**
9
16
  * 基础变体类型
10
17
  */
@@ -24,7 +31,7 @@ export type Alignment = 'start' | 'center' | 'end';
24
31
  /**
25
32
  * 按钮属性
26
33
  */
27
- export interface ButtonProps {
34
+ export interface ButtonProps extends DataAttributes {
28
35
  /** 变体 */
29
36
  variant?: Variant;
30
37
  /** 尺寸 */
@@ -53,7 +60,7 @@ export interface ButtonProps {
53
60
  /**
54
61
  * 无样式按钮属性
55
62
  */
56
- export interface BareButtonProps {
63
+ export interface BareButtonProps extends DataAttributes {
57
64
  /** 按钮类型 */
58
65
  type?: 'button' | 'submit' | 'reset';
59
66
  /** 是否禁用 */
@@ -78,7 +85,7 @@ export interface BareButtonProps {
78
85
  /**
79
86
  * 输入框属性
80
87
  */
81
- export interface InputProps {
88
+ export interface InputProps extends DataAttributes {
82
89
  /** 值 */
83
90
  value?: string;
84
91
  /** 占位符 */
@@ -151,7 +158,7 @@ export interface InputProps {
151
158
  /**
152
159
  * 无样式输入框属性
153
160
  */
154
- export interface BareInputProps {
161
+ export interface BareInputProps extends DataAttributes {
155
162
  /** 值 */
156
163
  value?: string;
157
164
  /** 占位符 */
@@ -230,7 +237,7 @@ export interface BareInputProps {
230
237
  /**
231
238
  * 文本域属性
232
239
  */
233
- export interface TextareaProps {
240
+ export interface TextareaProps extends DataAttributes {
234
241
  /** 值 */
235
242
  value?: string;
236
243
  /** 占位符 */
@@ -276,7 +283,7 @@ export interface SelectOption<T = string> {
276
283
  /**
277
284
  * 选择框属性
278
285
  */
279
- export interface SelectProps<T = string> {
286
+ export interface SelectProps<T = string> extends DataAttributes {
280
287
  /** 值 */
281
288
  value?: T;
282
289
  /** 选项(使用 options 或 children 二选一) */
@@ -305,7 +312,7 @@ export interface SelectProps<T = string> {
305
312
  /**
306
313
  * 复选框属性
307
314
  */
308
- export interface CheckboxProps {
315
+ export interface CheckboxProps extends DataAttributes {
309
316
  /** 是否选中 */
310
317
  checked?: boolean;
311
318
  /** 标签 */
@@ -326,7 +333,7 @@ export interface CheckboxProps {
326
333
  /**
327
334
  * 开关属性
328
335
  */
329
- export interface SwitchProps {
336
+ export interface SwitchProps extends DataAttributes {
330
337
  /** 是否开启 */
331
338
  checked?: boolean;
332
339
  /** 标签 */
@@ -343,7 +350,7 @@ export interface SwitchProps {
343
350
  /**
344
351
  * 原生开关输入(用于折叠/抽屉等结构要求 input 直系子元素的场景)
345
352
  */
346
- export interface ToggleCheckboxProps {
353
+ export interface ToggleCheckboxProps extends DataAttributes {
347
354
  /** 是否选中 */
348
355
  checked?: boolean;
349
356
  /** 表单字段名称 */
@@ -357,7 +364,7 @@ export interface ToggleCheckboxProps {
357
364
  /** 变化事件 */
358
365
  onchange?: (checked: boolean) => void;
359
366
  }
360
- export interface ToggleRadioProps {
367
+ export interface ToggleRadioProps extends DataAttributes {
361
368
  /** 是否选中 */
362
369
  checked?: boolean;
363
370
  /** 表单字段名称 */
@@ -374,7 +381,7 @@ export interface ToggleRadioProps {
374
381
  /**
375
382
  * 单选框属性
376
383
  */
377
- export interface RadioProps<T = string> {
384
+ export interface RadioProps<T = string> extends DataAttributes {
378
385
  /** 值 */
379
386
  value?: T;
380
387
  /** 选项 */
@@ -395,7 +402,7 @@ export interface RadioProps<T = string> {
395
402
  /**
396
403
  * 徽章属性
397
404
  */
398
- export interface BadgeProps {
405
+ export interface BadgeProps extends DataAttributes {
399
406
  /** 变体 */
400
407
  variant?: Variant;
401
408
  /** 尺寸 */
@@ -410,7 +417,7 @@ export interface BadgeProps {
410
417
  /**
411
418
  * 卡片属性
412
419
  */
413
- export interface CardProps {
420
+ export interface CardProps extends DataAttributes {
414
421
  /** 标题 */
415
422
  title?: string;
416
423
  /** 是否有边框 */
@@ -431,7 +438,7 @@ export interface CardProps {
431
438
  /**
432
439
  * 模态框属性
433
440
  */
434
- export interface ModalProps {
441
+ export interface ModalProps extends DataAttributes {
435
442
  /** 是否打开 */
436
443
  open?: boolean;
437
444
  /** 标题 */
@@ -468,7 +475,7 @@ export interface ModalProps {
468
475
  /**
469
476
  * 抽屉属性
470
477
  */
471
- export interface DrawerProps {
478
+ export interface DrawerProps extends DataAttributes {
472
479
  /** 是否打开 */
473
480
  open?: boolean;
474
481
  /** 标题 */
@@ -493,7 +500,7 @@ export interface DrawerProps {
493
500
  /**
494
501
  * 提示框属性
495
502
  */
496
- export interface TooltipProps {
503
+ export interface TooltipProps extends DataAttributes {
497
504
  /** 提示内容 */
498
505
  content: string;
499
506
  /** 位置 */
@@ -508,7 +515,7 @@ export interface TooltipProps {
508
515
  /**
509
516
  * 加载属性
510
517
  */
511
- export interface SpinnerProps {
518
+ export interface SpinnerProps extends DataAttributes {
512
519
  /** 尺寸 */
513
520
  size?: Size;
514
521
  /** 变体 */
@@ -519,7 +526,7 @@ export interface SpinnerProps {
519
526
  /**
520
527
  * 进度条属性
521
528
  */
522
- export interface ProgressProps {
529
+ export interface ProgressProps extends DataAttributes {
523
530
  /** 值 (0-100) */
524
531
  value: number;
525
532
  /** 最大值 */
@@ -542,7 +549,7 @@ export interface ProgressProps {
542
549
  /**
543
550
  * 警告框属性
544
551
  */
545
- export interface AlertProps {
552
+ export interface AlertProps extends DataAttributes {
546
553
  /** 变体 */
547
554
  variant?: Variant;
548
555
  /** 标题 */
@@ -559,7 +566,7 @@ export interface AlertProps {
559
566
  /**
560
567
  * Toast 属性
561
568
  */
562
- export interface ToastProps {
569
+ export interface ToastProps extends DataAttributes {
563
570
  /** 消息 */
564
571
  message: string;
565
572
  /** 变体 */
@@ -576,7 +583,7 @@ export interface ToastProps {
576
583
  /**
577
584
  * 分页属性
578
585
  */
579
- export interface PaginationProps {
586
+ export interface PaginationProps extends DataAttributes {
580
587
  /** 当前页 */
581
588
  page: number;
582
589
  /** 总数 */
@@ -629,7 +636,7 @@ export interface BreadcrumbItem {
629
636
  /**
630
637
  * 面包屑属性
631
638
  */
632
- export interface BreadcrumbProps {
639
+ export interface BreadcrumbProps extends DataAttributes {
633
640
  /** 项目 */
634
641
  items: BreadcrumbItem[];
635
642
  /** 分隔符 */
@@ -653,7 +660,7 @@ export interface TabItem {
653
660
  /**
654
661
  * 标签页属性
655
662
  */
656
- export interface TabsProps {
663
+ export interface TabsProps extends DataAttributes {
657
664
  /** 标签项 */
658
665
  items: TabItem[];
659
666
  /** 当前激活的标签 */
@@ -672,7 +679,7 @@ export interface TabsProps {
672
679
  /**
673
680
  * 头像属性
674
681
  */
675
- export interface AvatarProps {
682
+ export interface AvatarProps extends DataAttributes {
676
683
  /** 图片地址 */
677
684
  src?: string;
678
685
  /** 替代文本 */
@@ -708,7 +715,7 @@ export interface DropdownItem {
708
715
  /**
709
716
  * 下拉菜单属性
710
717
  */
711
- export interface DropdownProps {
718
+ export interface DropdownProps extends DataAttributes {
712
719
  /** 菜单项 */
713
720
  items: DropdownItem[];
714
721
  /** 触发方式 */
@@ -727,7 +734,7 @@ export interface DropdownProps {
727
734
  /**
728
735
  * 表单属性
729
736
  */
730
- export interface FormProps {
737
+ export interface FormProps extends DataAttributes {
731
738
  /** 表单 ID */
732
739
  id?: string;
733
740
  /** 自定义类名 */
@@ -748,7 +755,7 @@ export interface FormProps {
748
755
  /**
749
756
  * 表单字段属性
750
757
  */
751
- export interface FormFieldProps {
758
+ export interface FormFieldProps extends DataAttributes {
752
759
  /** 标签 */
753
760
  label?: string;
754
761
  /** 字段名 */
@@ -767,7 +774,7 @@ export interface FormFieldProps {
767
774
  /**
768
775
  * 骨架屏属性
769
776
  */
770
- export interface SkeletonProps {
777
+ export interface SkeletonProps extends DataAttributes {
771
778
  /** 变体 */
772
779
  variant?: 'text' | 'title' | 'avatar' | 'thumbnail' | 'button' | 'input';
773
780
  /** 宽度 */
@@ -786,7 +793,7 @@ export interface SkeletonProps {
786
793
  /**
787
794
  * 空状态属性
788
795
  */
789
- export interface EmptyProps {
796
+ export interface EmptyProps extends DataAttributes {
790
797
  /** 标题 */
791
798
  title?: string;
792
799
  /** 描述 */
@@ -805,7 +812,7 @@ export interface EmptyProps {
805
812
  /**
806
813
  * 结果页属性
807
814
  */
808
- export interface ResultProps {
815
+ export interface ResultProps extends DataAttributes {
809
816
  /** 状态 */
810
817
  status?: 'success' | 'error' | 'warning' | 'info';
811
818
  /** 标题 */
@@ -824,7 +831,7 @@ export interface ResultProps {
824
831
  /**
825
832
  * 确认对话框属性
826
833
  */
827
- export interface ConfirmProps {
834
+ export interface ConfirmProps extends DataAttributes {
828
835
  /** 是否打开 */
829
836
  open?: boolean;
830
837
  /** 标题 */
@@ -849,7 +856,7 @@ export interface ConfirmProps {
849
856
  /**
850
857
  * 标签属性
851
858
  */
852
- export interface TagProps {
859
+ export interface TagProps extends DataAttributes {
853
860
  /** 文本 */
854
861
  text?: string;
855
862
  /** 变体 */
@@ -872,7 +879,7 @@ export interface TagProps {
872
879
  /**
873
880
  * 标签输入框属性
874
881
  */
875
- export interface TagInputProps {
882
+ export interface TagInputProps extends DataAttributes {
876
883
  /** 标签列表 */
877
884
  tags?: string[];
878
885
  /** 占位符 */
@@ -904,7 +911,7 @@ export interface StepItem {
904
911
  /**
905
912
  * 步骤条属性
906
913
  */
907
- export interface StepsProps {
914
+ export interface StepsProps extends DataAttributes {
908
915
  /** 步骤列表 */
909
916
  items?: StepItem[];
910
917
  /** 当前步骤 */
@@ -923,7 +930,7 @@ export interface StepsProps {
923
930
  /**
924
931
  * 图标按钮属性
925
932
  */
926
- export interface IconButtonProps {
933
+ export interface IconButtonProps extends DataAttributes {
927
934
  /** 图标(受信任的内联 SVG 字符串或 Snippet) */
928
935
  icon?: string | Snippet;
929
936
  /** 标签(无障碍) */
@@ -950,7 +957,7 @@ export interface IconButtonProps {
950
957
  /**
951
958
  * 弹出层属性
952
959
  */
953
- export interface PopoverProps {
960
+ export interface PopoverProps extends DataAttributes {
954
961
  /** 是否打开 */
955
962
  open?: boolean;
956
963
  /** 位置 */
package/dist/utils.d.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  * CSS 类名处理工具
5
5
  * @module utils
6
6
  */
7
- import type { Size, Variant } from './types.js';
7
+ import type { DataAttributes, Size, Variant } from './types.js';
8
8
  /**
9
9
  * 合并类名(支持 Tailwind 类冲突消解)
10
10
  *
@@ -12,6 +12,11 @@ import type { Size, Variant } from './types.js';
12
12
  * @returns 合并后的类名字符串
13
13
  */
14
14
  export declare function cn(...classes: (string | boolean | undefined | null)[]): string;
15
+ export type ForwardedDataAttributes = Record<`data-${string}`, string | number | boolean>;
16
+ /**
17
+ * 从组件未声明 props 中提取 data-* 属性,避免把普通未知属性透传到 DOM。
18
+ */
19
+ export declare function getDataAttributes(props: DataAttributes | Record<string, unknown>): ForwardedDataAttributes;
15
20
  /**
16
21
  * 获取变体类名
17
22
  */
package/dist/utils.js CHANGED
@@ -14,6 +14,21 @@ import { twMerge } from 'tailwind-merge';
14
14
  export function cn(...classes) {
15
15
  return twMerge(classes.filter(Boolean).join(' '));
16
16
  }
17
+ /**
18
+ * 从组件未声明 props 中提取 data-* 属性,避免把普通未知属性透传到 DOM。
19
+ */
20
+ export function getDataAttributes(props) {
21
+ const dataAttributes = {};
22
+ for (const [key, value] of Object.entries(props)) {
23
+ if (!key.startsWith('data-') || value === null || value === undefined) {
24
+ continue;
25
+ }
26
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
27
+ dataAttributes[key] = value;
28
+ }
29
+ }
30
+ return dataAttributes;
31
+ }
17
32
  /**
18
33
  * 已知前缀的变体类名静态映射
19
34
  *
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@h-ai/ui",
3
3
  "type": "module",
4
- "version": "0.1.0-alpha.29",
4
+ "version": "0.1.0-alpha.30",
5
5
  "description": "Hai Framework UI component library for Svelte 5 Runes.",
6
6
  "license": "Apache-2.0",
7
7
  "svelte": "./dist/index.js",
@@ -51,7 +51,7 @@
51
51
  "mermaid": "^11.12.0",
52
52
  "shiki": "^4.0.2",
53
53
  "tailwind-merge": "^3.5.0",
54
- "@h-ai/core": "0.1.0-alpha.29"
54
+ "@h-ai/core": "0.1.0-alpha.30"
55
55
  },
56
56
  "devDependencies": {
57
57
  "@sveltejs/package": "^2.5.7",