@h-ai/ui 0.1.0-alpha5

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 (234) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +488 -0
  3. package/auto-import.d.ts +96 -0
  4. package/auto-import.js +259 -0
  5. package/dist/components/compounds/Accordion.svelte +142 -0
  6. package/dist/components/compounds/Accordion.svelte.d.ts +25 -0
  7. package/dist/components/compounds/ActionSheet.svelte +116 -0
  8. package/dist/components/compounds/ActionSheet.svelte.d.ts +22 -0
  9. package/dist/components/compounds/Alert.svelte +67 -0
  10. package/dist/components/compounds/Alert.svelte.d.ts +8 -0
  11. package/dist/components/compounds/AppBar.svelte +77 -0
  12. package/dist/components/compounds/AppBar.svelte.d.ts +20 -0
  13. package/dist/components/compounds/BottomNav.svelte +75 -0
  14. package/dist/components/compounds/BottomNav.svelte.d.ts +18 -0
  15. package/dist/components/compounds/Breadcrumb.svelte +49 -0
  16. package/dist/components/compounds/Breadcrumb.svelte.d.ts +4 -0
  17. package/dist/components/compounds/Calendar.svelte +116 -0
  18. package/dist/components/compounds/Calendar.svelte.d.ts +47 -0
  19. package/dist/components/compounds/Card.svelte +77 -0
  20. package/dist/components/compounds/Card.svelte.d.ts +8 -0
  21. package/dist/components/compounds/Combobox.svelte +327 -0
  22. package/dist/components/compounds/Combobox.svelte.d.ts +69 -0
  23. package/dist/components/compounds/Confirm.svelte +90 -0
  24. package/dist/components/compounds/Confirm.svelte.d.ts +4 -0
  25. package/dist/components/compounds/DataTable.svelte +133 -0
  26. package/dist/components/compounds/DataTable.svelte.d.ts +69 -0
  27. package/dist/components/compounds/DatePicker.svelte +135 -0
  28. package/dist/components/compounds/DatePicker.svelte.d.ts +46 -0
  29. package/dist/components/compounds/Drawer.svelte +113 -0
  30. package/dist/components/compounds/Drawer.svelte.d.ts +4 -0
  31. package/dist/components/compounds/Dropdown.svelte +91 -0
  32. package/dist/components/compounds/Dropdown.svelte.d.ts +8 -0
  33. package/dist/components/compounds/Empty.svelte +83 -0
  34. package/dist/components/compounds/Empty.svelte.d.ts +4 -0
  35. package/dist/components/compounds/Form.svelte +96 -0
  36. package/dist/components/compounds/Form.svelte.d.ts +7 -0
  37. package/dist/components/compounds/FormField.svelte +56 -0
  38. package/dist/components/compounds/FormField.svelte.d.ts +4 -0
  39. package/dist/components/compounds/InfiniteScroll.svelte +82 -0
  40. package/dist/components/compounds/InfiniteScroll.svelte.d.ts +22 -0
  41. package/dist/components/compounds/Modal.svelte +123 -0
  42. package/dist/components/compounds/Modal.svelte.d.ts +8 -0
  43. package/dist/components/compounds/PageHeader.svelte +44 -0
  44. package/dist/components/compounds/PageHeader.svelte.d.ts +28 -0
  45. package/dist/components/compounds/Pagination.svelte +157 -0
  46. package/dist/components/compounds/Pagination.svelte.d.ts +4 -0
  47. package/dist/components/compounds/Popover.svelte +137 -0
  48. package/dist/components/compounds/Popover.svelte.d.ts +4 -0
  49. package/dist/components/compounds/PullRefresh.svelte +98 -0
  50. package/dist/components/compounds/PullRefresh.svelte.d.ts +16 -0
  51. package/dist/components/compounds/Result.svelte +84 -0
  52. package/dist/components/compounds/Result.svelte.d.ts +4 -0
  53. package/dist/components/compounds/SafeArea.svelte +37 -0
  54. package/dist/components/compounds/SafeArea.svelte.d.ts +12 -0
  55. package/dist/components/compounds/Skeleton.svelte +75 -0
  56. package/dist/components/compounds/Skeleton.svelte.d.ts +8 -0
  57. package/dist/components/compounds/Steps.svelte +111 -0
  58. package/dist/components/compounds/Steps.svelte.d.ts +4 -0
  59. package/dist/components/compounds/SwipeCell.svelte +115 -0
  60. package/dist/components/compounds/SwipeCell.svelte.d.ts +19 -0
  61. package/dist/components/compounds/Tabs.svelte +79 -0
  62. package/dist/components/compounds/Tabs.svelte.d.ts +8 -0
  63. package/dist/components/compounds/TagInput.svelte +108 -0
  64. package/dist/components/compounds/TagInput.svelte.d.ts +4 -0
  65. package/dist/components/compounds/Timeline.svelte +167 -0
  66. package/dist/components/compounds/Timeline.svelte.d.ts +25 -0
  67. package/dist/components/compounds/ToastContainer.svelte +59 -0
  68. package/dist/components/compounds/ToastContainer.svelte.d.ts +3 -0
  69. package/dist/components/compounds/Tooltip.svelte +41 -0
  70. package/dist/components/compounds/Tooltip.svelte.d.ts +4 -0
  71. package/dist/components/compounds/accordion-types.d.ts +16 -0
  72. package/dist/components/compounds/accordion-types.js +5 -0
  73. package/dist/components/compounds/action-sheet-types.d.ts +14 -0
  74. package/dist/components/compounds/action-sheet-types.js +5 -0
  75. package/dist/components/compounds/bottom-nav-types.d.ts +17 -0
  76. package/dist/components/compounds/bottom-nav-types.js +5 -0
  77. package/dist/components/compounds/index.d.ts +44 -0
  78. package/dist/components/compounds/index.js +54 -0
  79. package/dist/components/compounds/swipe-cell-types.d.ts +14 -0
  80. package/dist/components/compounds/swipe-cell-types.js +5 -0
  81. package/dist/components/compounds/timeline-types.d.ts +20 -0
  82. package/dist/components/compounds/timeline-types.js +5 -0
  83. package/dist/components/index.d.ts +9 -0
  84. package/dist/components/index.js +12 -0
  85. package/dist/components/primitives/Avatar.svelte +102 -0
  86. package/dist/components/primitives/Avatar.svelte.d.ts +8 -0
  87. package/dist/components/primitives/Badge.svelte +33 -0
  88. package/dist/components/primitives/Badge.svelte.d.ts +8 -0
  89. package/dist/components/primitives/BareButton.svelte +45 -0
  90. package/dist/components/primitives/BareButton.svelte.d.ts +4 -0
  91. package/dist/components/primitives/BareInput.svelte +101 -0
  92. package/dist/components/primitives/BareInput.svelte.d.ts +4 -0
  93. package/dist/components/primitives/Button.svelte +60 -0
  94. package/dist/components/primitives/Button.svelte.d.ts +8 -0
  95. package/dist/components/primitives/Checkbox.svelte +58 -0
  96. package/dist/components/primitives/Checkbox.svelte.d.ts +4 -0
  97. package/dist/components/primitives/IconButton.svelte +105 -0
  98. package/dist/components/primitives/IconButton.svelte.d.ts +4 -0
  99. package/dist/components/primitives/Input.svelte +130 -0
  100. package/dist/components/primitives/Input.svelte.d.ts +8 -0
  101. package/dist/components/primitives/Progress.svelte +58 -0
  102. package/dist/components/primitives/Progress.svelte.d.ts +4 -0
  103. package/dist/components/primitives/Radio.svelte +60 -0
  104. package/dist/components/primitives/Radio.svelte.d.ts +25 -0
  105. package/dist/components/primitives/Range.svelte +117 -0
  106. package/dist/components/primitives/Range.svelte.d.ts +27 -0
  107. package/dist/components/primitives/Rating.svelte +148 -0
  108. package/dist/components/primitives/Rating.svelte.d.ts +27 -0
  109. package/dist/components/primitives/Select.svelte +95 -0
  110. package/dist/components/primitives/Select.svelte.d.ts +25 -0
  111. package/dist/components/primitives/Spinner.svelte +54 -0
  112. package/dist/components/primitives/Spinner.svelte.d.ts +4 -0
  113. package/dist/components/primitives/Switch.svelte +53 -0
  114. package/dist/components/primitives/Switch.svelte.d.ts +4 -0
  115. package/dist/components/primitives/Tag.svelte +64 -0
  116. package/dist/components/primitives/Tag.svelte.d.ts +4 -0
  117. package/dist/components/primitives/Textarea.svelte +92 -0
  118. package/dist/components/primitives/Textarea.svelte.d.ts +4 -0
  119. package/dist/components/primitives/ToggleCheckbox.svelte +36 -0
  120. package/dist/components/primitives/ToggleCheckbox.svelte.d.ts +4 -0
  121. package/dist/components/primitives/ToggleInput.svelte +36 -0
  122. package/dist/components/primitives/ToggleInput.svelte.d.ts +4 -0
  123. package/dist/components/primitives/ToggleRadio.svelte +36 -0
  124. package/dist/components/primitives/ToggleRadio.svelte.d.ts +4 -0
  125. package/dist/components/primitives/index.d.ts +26 -0
  126. package/dist/components/primitives/index.js +30 -0
  127. package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte +387 -0
  128. package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte.d.ts +38 -0
  129. package/dist/components/scenes/ai/AiDocumentEditor.svelte +2259 -0
  130. package/dist/components/scenes/ai/AiDocumentEditor.svelte.d.ts +4 -0
  131. package/dist/components/scenes/ai/MarkdownRenderer.svelte +460 -0
  132. package/dist/components/scenes/ai/MarkdownRenderer.svelte.d.ts +4 -0
  133. package/dist/components/scenes/ai/document-download.d.ts +40 -0
  134. package/dist/components/scenes/ai/document-download.js +300 -0
  135. package/dist/components/scenes/ai/document-parse.d.ts +28 -0
  136. package/dist/components/scenes/ai/document-parse.js +243 -0
  137. package/dist/components/scenes/ai/document-types.d.ts +164 -0
  138. package/dist/components/scenes/ai/document-types.js +1 -0
  139. package/dist/components/scenes/ai/index.d.ts +17 -0
  140. package/dist/components/scenes/ai/index.js +13 -0
  141. package/dist/components/scenes/ai/markdown-parse.d.ts +32 -0
  142. package/dist/components/scenes/ai/markdown-parse.js +161 -0
  143. package/dist/components/scenes/app/FeedbackModal.svelte +160 -0
  144. package/dist/components/scenes/app/FeedbackModal.svelte.d.ts +47 -0
  145. package/dist/components/scenes/app/LanguageSwitch.svelte +136 -0
  146. package/dist/components/scenes/app/LanguageSwitch.svelte.d.ts +50 -0
  147. package/dist/components/scenes/app/SettingsModal.svelte +174 -0
  148. package/dist/components/scenes/app/SettingsModal.svelte.d.ts +31 -0
  149. package/dist/components/scenes/app/ThemeSelector.svelte +176 -0
  150. package/dist/components/scenes/app/ThemeSelector.svelte.d.ts +31 -0
  151. package/dist/components/scenes/app/ThemeToggle.svelte +76 -0
  152. package/dist/components/scenes/app/ThemeToggle.svelte.d.ts +29 -0
  153. package/dist/components/scenes/app/index.d.ts +11 -0
  154. package/dist/components/scenes/app/index.js +11 -0
  155. package/dist/components/scenes/crud/CrudDeleteConfirm.svelte +39 -0
  156. package/dist/components/scenes/crud/CrudDeleteConfirm.svelte.d.ts +18 -0
  157. package/dist/components/scenes/crud/CrudDetailDrawer.svelte +155 -0
  158. package/dist/components/scenes/crud/CrudDetailDrawer.svelte.d.ts +38 -0
  159. package/dist/components/scenes/crud/CrudEditDrawer.svelte +222 -0
  160. package/dist/components/scenes/crud/CrudEditDrawer.svelte.d.ts +48 -0
  161. package/dist/components/scenes/crud/CrudFilterBar.svelte +96 -0
  162. package/dist/components/scenes/crud/CrudFilterBar.svelte.d.ts +31 -0
  163. package/dist/components/scenes/crud/CrudPage.svelte +499 -0
  164. package/dist/components/scenes/crud/CrudPage.svelte.d.ts +114 -0
  165. package/dist/components/scenes/crud/crud-types.d.ts +135 -0
  166. package/dist/components/scenes/crud/crud-types.js +7 -0
  167. package/dist/components/scenes/crud/index.d.ts +12 -0
  168. package/dist/components/scenes/crud/index.js +11 -0
  169. package/dist/components/scenes/crypto/EncryptedInput.svelte +156 -0
  170. package/dist/components/scenes/crypto/EncryptedInput.svelte.d.ts +32 -0
  171. package/dist/components/scenes/crypto/HashDisplay.svelte +97 -0
  172. package/dist/components/scenes/crypto/HashDisplay.svelte.d.ts +4 -0
  173. package/dist/components/scenes/crypto/SignatureDisplay.svelte +161 -0
  174. package/dist/components/scenes/crypto/SignatureDisplay.svelte.d.ts +4 -0
  175. package/dist/components/scenes/crypto/index.d.ts +9 -0
  176. package/dist/components/scenes/crypto/index.js +11 -0
  177. package/dist/components/scenes/iam/ChangePasswordForm.svelte +134 -0
  178. package/dist/components/scenes/iam/ChangePasswordForm.svelte.d.ts +8 -0
  179. package/dist/components/scenes/iam/ForgotPasswordForm.svelte +147 -0
  180. package/dist/components/scenes/iam/ForgotPasswordForm.svelte.d.ts +4 -0
  181. package/dist/components/scenes/iam/LoginForm.svelte +191 -0
  182. package/dist/components/scenes/iam/LoginForm.svelte.d.ts +8 -0
  183. package/dist/components/scenes/iam/PasswordInput.svelte +203 -0
  184. package/dist/components/scenes/iam/PasswordInput.svelte.d.ts +49 -0
  185. package/dist/components/scenes/iam/PermGuard.svelte +69 -0
  186. package/dist/components/scenes/iam/PermGuard.svelte.d.ts +16 -0
  187. package/dist/components/scenes/iam/RegisterForm.svelte +269 -0
  188. package/dist/components/scenes/iam/RegisterForm.svelte.d.ts +8 -0
  189. package/dist/components/scenes/iam/ResetPasswordForm.svelte +153 -0
  190. package/dist/components/scenes/iam/ResetPasswordForm.svelte.d.ts +8 -0
  191. package/dist/components/scenes/iam/UserProfile.svelte +251 -0
  192. package/dist/components/scenes/iam/UserProfile.svelte.d.ts +4 -0
  193. package/dist/components/scenes/iam/index.d.ts +16 -0
  194. package/dist/components/scenes/iam/index.js +18 -0
  195. package/dist/components/scenes/iam/password-utils.d.ts +15 -0
  196. package/dist/components/scenes/iam/password-utils.js +19 -0
  197. package/dist/components/scenes/iam/permission-context.svelte.d.ts +90 -0
  198. package/dist/components/scenes/iam/permission-context.svelte.js +114 -0
  199. package/dist/components/scenes/index.d.ts +13 -0
  200. package/dist/components/scenes/index.js +20 -0
  201. package/dist/components/scenes/storage/AvatarUpload.svelte +218 -0
  202. package/dist/components/scenes/storage/AvatarUpload.svelte.d.ts +4 -0
  203. package/dist/components/scenes/storage/FileList.svelte +260 -0
  204. package/dist/components/scenes/storage/FileList.svelte.d.ts +4 -0
  205. package/dist/components/scenes/storage/FileUpload.svelte +400 -0
  206. package/dist/components/scenes/storage/FileUpload.svelte.d.ts +7 -0
  207. package/dist/components/scenes/storage/ImageUpload.svelte +285 -0
  208. package/dist/components/scenes/storage/ImageUpload.svelte.d.ts +4 -0
  209. package/dist/components/scenes/storage/index.d.ts +10 -0
  210. package/dist/components/scenes/storage/index.js +12 -0
  211. package/dist/components/scenes/types.d.ts +583 -0
  212. package/dist/components/scenes/types.js +7 -0
  213. package/dist/i18n.svelte.d.ts +44 -0
  214. package/dist/i18n.svelte.js +108 -0
  215. package/dist/index.d.ts +13 -0
  216. package/dist/index.js +19 -0
  217. package/dist/messages/en-US.json +242 -0
  218. package/dist/messages/zh-CN.json +242 -0
  219. package/dist/messages.d.ts +29 -0
  220. package/dist/messages.js +42 -0
  221. package/dist/styles/design-tokens.css +58 -0
  222. package/dist/styles/global.css +218 -0
  223. package/dist/styles/mobile.css +105 -0
  224. package/dist/theme-config.d.ts +92 -0
  225. package/dist/theme-config.js +122 -0
  226. package/dist/toast.svelte.d.ts +45 -0
  227. package/dist/toast.svelte.js +77 -0
  228. package/dist/types.d.ts +944 -0
  229. package/dist/types.js +7 -0
  230. package/dist/utils/platform.svelte.d.ts +54 -0
  231. package/dist/utils/platform.svelte.js +87 -0
  232. package/dist/utils.d.ts +46 -0
  233. package/dist/utils.js +100 -0
  234. package/package.json +69 -0
@@ -0,0 +1,944 @@
1
+ /**
2
+ * @h-ai/ui — 类型定义
3
+ *
4
+ * UI 组件相关类型
5
+ * @module types
6
+ */
7
+ import type { Snippet } from 'svelte';
8
+ /**
9
+ * 基础变体类型
10
+ */
11
+ export type Variant = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'info' | 'ghost' | 'link' | 'outline';
12
+ /**
13
+ * 尺寸类型
14
+ */
15
+ export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';
16
+ /**
17
+ * 位置类型
18
+ */
19
+ export type Position = 'top' | 'right' | 'bottom' | 'left';
20
+ /**
21
+ * 对齐类型
22
+ */
23
+ export type Alignment = 'start' | 'center' | 'end';
24
+ /**
25
+ * 按钮属性
26
+ */
27
+ export interface ButtonProps {
28
+ /** 变体 */
29
+ variant?: Variant;
30
+ /** 尺寸 */
31
+ size?: Size;
32
+ /** 自定义类名 */
33
+ class?: string;
34
+ /** aria-label(无障碍标签) */
35
+ ariaLabel?: string;
36
+ /** 是否禁用 */
37
+ disabled?: boolean;
38
+ /** 是否加载中 */
39
+ loading?: boolean;
40
+ /** 是否为轮廓样式 */
41
+ outline?: boolean;
42
+ /** 是否为圆形 */
43
+ circle?: boolean;
44
+ /** 按钮类型 */
45
+ type?: 'button' | 'submit' | 'reset';
46
+ /** 点击事件 */
47
+ onclick?: (e: MouseEvent) => void;
48
+ /** 子内容 */
49
+ children?: Snippet;
50
+ }
51
+ /**
52
+ * 无样式按钮属性
53
+ */
54
+ export interface BareButtonProps {
55
+ /** 按钮类型 */
56
+ type?: 'button' | 'submit' | 'reset';
57
+ /** 是否禁用 */
58
+ disabled?: boolean;
59
+ /** 自定义类名 */
60
+ class?: string;
61
+ /** aria-label(无障碍标签) */
62
+ ariaLabel?: string;
63
+ /** 角色(用于特殊交互) */
64
+ role?: string;
65
+ /** aria-selected(用于 option/tab 等) */
66
+ ariaSelected?: boolean;
67
+ /** tabindex */
68
+ tabindex?: number;
69
+ /** 点击事件 */
70
+ onclick?: (e: MouseEvent) => void;
71
+ /** 键盘事件 */
72
+ onkeydown?: (e: KeyboardEvent) => void;
73
+ /** 子内容 */
74
+ children?: Snippet;
75
+ }
76
+ /**
77
+ * 输入框属性
78
+ */
79
+ export interface InputProps {
80
+ /** 值 */
81
+ value?: string;
82
+ /** 占位符 */
83
+ placeholder?: string;
84
+ /** 类型 */
85
+ type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search';
86
+ /** 尺寸 */
87
+ size?: Size;
88
+ /** 是否禁用 */
89
+ disabled?: boolean;
90
+ /** 是否只读 */
91
+ readonly?: boolean;
92
+ /** 是否必填 */
93
+ required?: boolean;
94
+ /** 错误消息 */
95
+ error?: string;
96
+ /** 自定义验证消息(用于覆盖浏览器原生验证提示) */
97
+ validationMessage?: string;
98
+ /** 自定义类名 */
99
+ class?: string;
100
+ /** 元素 ID */
101
+ id?: string;
102
+ /** input 引用 */
103
+ inputRef?: HTMLInputElement;
104
+ /** 表单字段名 */
105
+ name?: string;
106
+ /** 自动完成 */
107
+ autocomplete?: string;
108
+ /** 输入模式验证(正则表达式) */
109
+ pattern?: string;
110
+ /** 关联的 datalist id */
111
+ list?: string;
112
+ /** 输入模式(移动端键盘) */
113
+ inputmode?: 'text' | 'search' | 'none' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal';
114
+ /** 最小长度 */
115
+ minlength?: number;
116
+ /** 最大长度 */
117
+ maxlength?: number;
118
+ /** 最小值(针对 number 类型) */
119
+ min?: number;
120
+ /** 最大值(针对 number 类型) */
121
+ max?: number;
122
+ /** 步进值(number 类型) */
123
+ step?: number;
124
+ /** 输入事件 */
125
+ oninput?: (e: Event & {
126
+ currentTarget: HTMLInputElement;
127
+ }) => void;
128
+ /** 变化事件 */
129
+ onchange?: (e: Event & {
130
+ currentTarget: HTMLInputElement;
131
+ }) => void;
132
+ /** 键盘事件 */
133
+ onkeydown?: (e: KeyboardEvent & {
134
+ currentTarget: HTMLInputElement;
135
+ }) => void;
136
+ /** 失去焦点事件 */
137
+ onblur?: (e: FocusEvent & {
138
+ currentTarget: HTMLInputElement;
139
+ }) => void;
140
+ /** 获得焦点事件 */
141
+ onfocus?: (e: FocusEvent & {
142
+ currentTarget: HTMLInputElement;
143
+ }) => void;
144
+ /** 失效事件(表单验证失败) */
145
+ oninvalid?: (e: Event & {
146
+ currentTarget: HTMLInputElement;
147
+ }) => void;
148
+ }
149
+ /**
150
+ * 无样式输入框属性
151
+ */
152
+ export interface BareInputProps {
153
+ /** 值 */
154
+ value?: string;
155
+ /** 占位符 */
156
+ placeholder?: string;
157
+ /** 类型 */
158
+ type?: 'text' | 'password' | 'email' | 'number' | 'tel' | 'url' | 'search' | 'file' | 'range';
159
+ /** 是否禁用 */
160
+ disabled?: boolean;
161
+ /** 是否只读 */
162
+ readonly?: boolean;
163
+ /** 是否必填 */
164
+ required?: boolean;
165
+ /** 自定义类名 */
166
+ class?: string;
167
+ /** 角色 */
168
+ role?: string;
169
+ /** aria-expanded */
170
+ ariaExpanded?: boolean;
171
+ /** aria-controls */
172
+ ariaControls?: string;
173
+ /** aria-autocomplete */
174
+ ariaAutocomplete?: 'none' | 'list' | 'inline' | 'both';
175
+ /** 元素 ID */
176
+ id?: string;
177
+ /** input 引用 */
178
+ inputRef?: HTMLInputElement;
179
+ /** 表单字段名 */
180
+ name?: string;
181
+ /** 自动完成 */
182
+ autocomplete?: string;
183
+ /** 输入模式验证(正则表达式) */
184
+ pattern?: string;
185
+ /** 关联的 datalist id */
186
+ list?: string;
187
+ /** 文件类型限制(file 类型) */
188
+ accept?: string;
189
+ /** 是否允许多选(file 类型) */
190
+ multiple?: boolean;
191
+ /** 最小长度 */
192
+ minlength?: number;
193
+ /** 最大长度 */
194
+ maxlength?: number;
195
+ /** 最小值(针对 number 类型) */
196
+ min?: number;
197
+ /** 最大值(针对 number 类型) */
198
+ max?: number;
199
+ /** 步进值(number 类型) */
200
+ step?: number;
201
+ /** 禁用软键盘(移动端) */
202
+ inputmode?: 'text' | 'search' | 'none' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal';
203
+ /** 输入事件 */
204
+ oninput?: (e: Event & {
205
+ currentTarget: HTMLInputElement;
206
+ }) => void;
207
+ /** 变化事件 */
208
+ onchange?: (e: Event & {
209
+ currentTarget: HTMLInputElement;
210
+ }) => void;
211
+ /** 键盘事件 */
212
+ onkeydown?: (e: KeyboardEvent & {
213
+ currentTarget: HTMLInputElement;
214
+ }) => void;
215
+ /** 失去焦点事件 */
216
+ onblur?: (e: FocusEvent & {
217
+ currentTarget: HTMLInputElement;
218
+ }) => void;
219
+ /** 获得焦点事件 */
220
+ onfocus?: (e: FocusEvent & {
221
+ currentTarget: HTMLInputElement;
222
+ }) => void;
223
+ /** 失效事件(表单验证失败) */
224
+ oninvalid?: (e: Event & {
225
+ currentTarget: HTMLInputElement;
226
+ }) => void;
227
+ }
228
+ /**
229
+ * 文本域属性
230
+ */
231
+ export interface TextareaProps {
232
+ /** 值 */
233
+ value?: string;
234
+ /** 占位符 */
235
+ placeholder?: string;
236
+ /** 行数 */
237
+ rows?: number;
238
+ /** 尺寸 */
239
+ size?: Size;
240
+ /** 是否禁用 */
241
+ disabled?: boolean;
242
+ /** 是否只读 */
243
+ readonly?: boolean;
244
+ /** 是否必填 */
245
+ required?: boolean;
246
+ /** 是否自动调整高度 */
247
+ autoResize?: boolean;
248
+ inputmode?: HTMLInputElement['inputMode'];
249
+ error?: string;
250
+ /** 自定义验证消息(用于覆盖浏览器原生验证提示) */
251
+ validationMessage?: string;
252
+ /** 自定义类名 */
253
+ class?: string;
254
+ /** 元素 ID */
255
+ id?: string;
256
+ /** 表单字段名 */
257
+ name?: string;
258
+ /** 输入事件 */
259
+ oninput?: (e: Event & {
260
+ currentTarget: HTMLTextAreaElement;
261
+ }) => void;
262
+ }
263
+ /**
264
+ * 选择框选项
265
+ */
266
+ export interface SelectOption<T = string> {
267
+ /** 值 */
268
+ value: T;
269
+ /** 显示文本 */
270
+ label: string;
271
+ /** 是否禁用 */
272
+ disabled?: boolean;
273
+ }
274
+ /**
275
+ * 选择框属性
276
+ */
277
+ export interface SelectProps<T = string> {
278
+ /** 值 */
279
+ value?: T;
280
+ /** 选项(使用 options 或 children 二选一) */
281
+ options?: SelectOption<T>[];
282
+ /** 占位符 */
283
+ placeholder?: string;
284
+ /** 尺寸 */
285
+ size?: Size;
286
+ /** 是否禁用 */
287
+ disabled?: boolean;
288
+ /** 是否必填 */
289
+ required?: boolean;
290
+ /** 错误消息 */
291
+ error?: string;
292
+ /** 自定义验证消息(用于覆盖浏览器原生验证提示) */
293
+ validationMessage?: string;
294
+ /** 自定义类名 */
295
+ class?: string;
296
+ /** 元素 ID */
297
+ id?: string;
298
+ /** 变化事件 */
299
+ onchange?: (value: T) => void;
300
+ /** 子元素(原生 option 元素) */
301
+ children?: Snippet;
302
+ }
303
+ /**
304
+ * 复选框属性
305
+ */
306
+ export interface CheckboxProps {
307
+ /** 是否选中 */
308
+ checked?: boolean;
309
+ /** 标签 */
310
+ label?: string;
311
+ /** 尺寸 */
312
+ size?: Size;
313
+ /** 是否禁用 */
314
+ disabled?: boolean;
315
+ /** 是否只读 */
316
+ readonly?: boolean;
317
+ /** 是否不确定状态 */
318
+ indeterminate?: boolean;
319
+ /** 自定义类名 */
320
+ class?: string;
321
+ /** 变化事件 - 传递选中状态 */
322
+ onchange?: (checked: boolean) => void;
323
+ }
324
+ /**
325
+ * 开关属性
326
+ */
327
+ export interface SwitchProps {
328
+ /** 是否开启 */
329
+ checked?: boolean;
330
+ /** 标签 */
331
+ label?: string;
332
+ /** 尺寸 */
333
+ size?: Size;
334
+ /** 是否禁用 */
335
+ disabled?: boolean;
336
+ /** 自定义类名 */
337
+ class?: string;
338
+ /** 变化事件 */
339
+ onchange?: (checked: boolean) => void;
340
+ }
341
+ /**
342
+ * 原生开关输入(用于折叠/抽屉等结构要求 input 直系子元素的场景)
343
+ */
344
+ export interface ToggleCheckboxProps {
345
+ /** 是否选中 */
346
+ checked?: boolean;
347
+ /** 表单字段名称 */
348
+ name?: string;
349
+ /** 元素 ID */
350
+ id?: string;
351
+ /** 是否禁用 */
352
+ disabled?: boolean;
353
+ /** 自定义类名 */
354
+ class?: string;
355
+ /** 变化事件 */
356
+ onchange?: (checked: boolean) => void;
357
+ }
358
+ export interface ToggleRadioProps {
359
+ /** 是否选中 */
360
+ checked?: boolean;
361
+ /** 表单字段名称 */
362
+ name?: string;
363
+ /** 元素 ID */
364
+ id?: string;
365
+ /** 是否禁用 */
366
+ disabled?: boolean;
367
+ /** 自定义类名 */
368
+ class?: string;
369
+ /** 变化事件 */
370
+ onchange?: (checked: boolean) => void;
371
+ }
372
+ /**
373
+ * 单选框属性
374
+ */
375
+ export interface RadioProps<T = string> {
376
+ /** 值 */
377
+ value?: T;
378
+ /** 选项 */
379
+ options: SelectOption<T>[];
380
+ /** 表单字段名称 */
381
+ name?: string;
382
+ /** 尺寸 */
383
+ size?: Size;
384
+ /** 是否禁用 */
385
+ disabled?: boolean;
386
+ /** 方向 */
387
+ direction?: 'horizontal' | 'vertical';
388
+ /** 自定义类名 */
389
+ class?: string;
390
+ /** 变化事件 */
391
+ onchange?: (value: T) => void;
392
+ }
393
+ /**
394
+ * 徽章属性
395
+ */
396
+ export interface BadgeProps {
397
+ /** 变体 */
398
+ variant?: Variant;
399
+ /** 尺寸 */
400
+ size?: Size;
401
+ /** 是否为轮廓样式 */
402
+ outline?: boolean;
403
+ /** 自定义类名 */
404
+ class?: string;
405
+ /** 子内容 */
406
+ children?: Snippet;
407
+ }
408
+ /**
409
+ * 卡片属性
410
+ */
411
+ export interface CardProps {
412
+ /** 标题 */
413
+ title?: string;
414
+ /** 是否有边框 */
415
+ bordered?: boolean;
416
+ /** 是否有阴影 */
417
+ shadow?: boolean | 'sm' | 'md' | 'lg';
418
+ /** 内边距 */
419
+ padding?: Size | 'none';
420
+ /** 自定义类名 */
421
+ class?: string;
422
+ /** 标题插槽 */
423
+ header?: Snippet;
424
+ /** 底部插槽 */
425
+ footer?: Snippet;
426
+ /** 内容插槽 */
427
+ children?: Snippet;
428
+ }
429
+ /**
430
+ * 模态框属性
431
+ */
432
+ export interface ModalProps {
433
+ /** 是否打开 */
434
+ open?: boolean;
435
+ /** 标题 */
436
+ title?: string;
437
+ /** 尺寸 */
438
+ size?: Size | 'full';
439
+ /** 是否可通过点击遮罩关闭 */
440
+ closeOnBackdrop?: boolean;
441
+ /** 是否可通过 ESC 键关闭 */
442
+ closeOnEscape?: boolean;
443
+ /** 是否显示关闭按钮 */
444
+ showClose?: boolean;
445
+ /** 自定义类名 */
446
+ class?: string;
447
+ /** 关闭事件 */
448
+ onclose?: () => void;
449
+ /** 标题插槽 */
450
+ header?: Snippet;
451
+ /** 底部插槽 */
452
+ footer?: Snippet;
453
+ /** 内容插槽 */
454
+ children?: Snippet;
455
+ }
456
+ /**
457
+ * 抽屉属性
458
+ */
459
+ export interface DrawerProps {
460
+ /** 是否打开 */
461
+ open?: boolean;
462
+ /** 标题 */
463
+ title?: string;
464
+ /** 位置 */
465
+ position?: Position;
466
+ /** 尺寸 */
467
+ size?: Size;
468
+ /** 是否可通过点击遮罩关闭 */
469
+ closeOnBackdrop?: boolean;
470
+ /** 是否显示关闭按钮 */
471
+ showClose?: boolean;
472
+ /** 自定义类名 */
473
+ class?: string;
474
+ /** 关闭事件 */
475
+ onclose?: () => void;
476
+ /** 内容插槽 */
477
+ children?: Snippet;
478
+ }
479
+ /**
480
+ * 提示框属性
481
+ */
482
+ export interface TooltipProps {
483
+ /** 提示内容 */
484
+ content: string;
485
+ /** 位置 */
486
+ position?: Position;
487
+ /** 延迟显示 (ms) */
488
+ delay?: number;
489
+ /** 自定义类名 */
490
+ class?: string;
491
+ /** 触发元素插槽 */
492
+ children?: Snippet;
493
+ }
494
+ /**
495
+ * 加载属性
496
+ */
497
+ export interface SpinnerProps {
498
+ /** 尺寸 */
499
+ size?: Size;
500
+ /** 变体 */
501
+ variant?: Variant;
502
+ /** 自定义类名 */
503
+ class?: string;
504
+ }
505
+ /**
506
+ * 进度条属性
507
+ */
508
+ export interface ProgressProps {
509
+ /** 值 (0-100) */
510
+ value: number;
511
+ /** 最大值 */
512
+ max?: number;
513
+ /** 步进值(number 类型) */
514
+ step?: number;
515
+ /** 尺寸 */
516
+ size?: Size;
517
+ /** 变体 */
518
+ variant?: Variant;
519
+ /** 是否显示标签 */
520
+ showLabel?: boolean;
521
+ /** 是否有条纹 */
522
+ striped?: boolean;
523
+ /** 是否动画 */
524
+ animated?: boolean;
525
+ /** 自定义类名 */
526
+ class?: string;
527
+ }
528
+ /**
529
+ * 警告框属性
530
+ */
531
+ export interface AlertProps {
532
+ /** 变体 */
533
+ variant?: Variant;
534
+ /** 标题 */
535
+ title?: string;
536
+ /** 是否可关闭 */
537
+ dismissible?: boolean;
538
+ /** 自定义类名 */
539
+ class?: string;
540
+ /** 关闭事件 */
541
+ onclose?: () => void;
542
+ /** 内容插槽 */
543
+ children?: Snippet;
544
+ }
545
+ /**
546
+ * Toast 属性
547
+ */
548
+ export interface ToastProps {
549
+ /** 消息 */
550
+ message: string;
551
+ /** 变体 */
552
+ variant?: Variant;
553
+ /** 持续时间 (ms),0 为不自动关闭 */
554
+ duration?: number;
555
+ /** 位置 */
556
+ position?: 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';
557
+ /** 是否可关闭 */
558
+ dismissible?: boolean;
559
+ /** 关闭事件 */
560
+ onclose?: () => void;
561
+ }
562
+ /**
563
+ * 分页属性
564
+ */
565
+ export interface PaginationProps {
566
+ /** 当前页 */
567
+ page: number;
568
+ /** 总数 */
569
+ total: number;
570
+ /** 每页数量 */
571
+ pageSize?: number;
572
+ /** 尺寸 */
573
+ size?: Size;
574
+ /** 是否显示总数 */
575
+ showTotal?: boolean;
576
+ /** 是否显示跳转 */
577
+ showJumper?: boolean;
578
+ /** i18n 文案配置 */
579
+ labels?: {
580
+ /** 总数文案,{count} 会被替换为实际数字 */
581
+ total?: string;
582
+ /** 跳转到 */
583
+ jumpTo?: string;
584
+ /** 页 */
585
+ page?: string;
586
+ };
587
+ /** 自定义类名 */
588
+ class?: string;
589
+ /** 页码变化事件 */
590
+ onchange?: (page: number) => void;
591
+ }
592
+ /**
593
+ * 面包屑项
594
+ */
595
+ export interface BreadcrumbItem {
596
+ /** 显示文本 */
597
+ label: string;
598
+ /** 链接 */
599
+ href?: string;
600
+ /** 图标 */
601
+ icon?: string;
602
+ }
603
+ /**
604
+ * 面包屑属性
605
+ */
606
+ export interface BreadcrumbProps {
607
+ /** 项目 */
608
+ items: BreadcrumbItem[];
609
+ /** 分隔符 */
610
+ separator?: string;
611
+ /** 自定义类名 */
612
+ class?: string;
613
+ }
614
+ /**
615
+ * 标签页项
616
+ */
617
+ export interface TabItem {
618
+ /** 唯一标识 */
619
+ key: string;
620
+ /** 标签 */
621
+ label: string;
622
+ /** 是否禁用 */
623
+ disabled?: boolean;
624
+ /** 图标 */
625
+ icon?: string;
626
+ }
627
+ /**
628
+ * 标签页属性
629
+ */
630
+ export interface TabsProps {
631
+ /** 标签项 */
632
+ items: TabItem[];
633
+ /** 当前激活的标签 */
634
+ active?: string;
635
+ /** 尺寸 */
636
+ size?: Size;
637
+ /** 样式类型 */
638
+ type?: 'line' | 'card' | 'pills';
639
+ /** 自定义类名 */
640
+ class?: string;
641
+ /** 变化事件 */
642
+ onchange?: (key: string) => void;
643
+ /** 内容插槽 */
644
+ children?: Snippet;
645
+ }
646
+ /**
647
+ * 头像属性
648
+ */
649
+ export interface AvatarProps {
650
+ /** 图片地址 */
651
+ src?: string;
652
+ /** 替代文本 */
653
+ alt?: string;
654
+ /** 名称(用于生成首字母) */
655
+ name?: string;
656
+ /** 占位文字(没有图片时显示) */
657
+ placeholder?: string;
658
+ /** 尺寸 */
659
+ size?: Size | number;
660
+ /** 形状 */
661
+ shape?: 'circle' | 'square';
662
+ /** 是否显示边框环 */
663
+ ring?: boolean;
664
+ /** 自定义类名 */
665
+ class?: string;
666
+ }
667
+ /**
668
+ * 下拉菜单项
669
+ */
670
+ export interface DropdownItem {
671
+ /** 唯一标识 */
672
+ key: string;
673
+ /** 显示文本 */
674
+ label: string;
675
+ /** 图标 */
676
+ icon?: string;
677
+ /** 是否禁用 */
678
+ disabled?: boolean;
679
+ /** 是否为分隔线 */
680
+ divider?: boolean;
681
+ }
682
+ /**
683
+ * 下拉菜单属性
684
+ */
685
+ export interface DropdownProps {
686
+ /** 菜单项 */
687
+ items: DropdownItem[];
688
+ /** 触发方式 */
689
+ trigger?: 'click' | 'hover';
690
+ /** 位置 */
691
+ position?: Position;
692
+ /** 对齐 */
693
+ align?: Alignment;
694
+ /** 自定义类名 */
695
+ class?: string;
696
+ /** 选择事件 */
697
+ onselect?: (key: string) => void;
698
+ /** 触发元素插槽 */
699
+ children?: Snippet;
700
+ }
701
+ /**
702
+ * 表单属性
703
+ */
704
+ export interface FormProps {
705
+ /** 自定义类名 */
706
+ class?: string;
707
+ /** 加载状态 */
708
+ loading?: boolean;
709
+ /** 禁用状态 */
710
+ disabled?: boolean;
711
+ /** 提交事件 */
712
+ onsubmit?: (data: Record<string, unknown>) => void | Promise<void>;
713
+ /** 重置事件 */
714
+ onreset?: () => void;
715
+ /** 错误事件 */
716
+ onerror?: (error: unknown) => void;
717
+ /** 子内容 */
718
+ children?: Snippet;
719
+ }
720
+ /**
721
+ * 表单字段属性
722
+ */
723
+ export interface FormFieldProps {
724
+ /** 标签 */
725
+ label?: string;
726
+ /** 字段名 */
727
+ name?: string;
728
+ /** 错误消息 */
729
+ error?: string;
730
+ /** 提示信息 */
731
+ hint?: string;
732
+ /** 是否必填 */
733
+ required?: boolean;
734
+ /** 自定义类名 */
735
+ class?: string;
736
+ /** 子内容 */
737
+ children?: Snippet;
738
+ }
739
+ /**
740
+ * 骨架屏属性
741
+ */
742
+ export interface SkeletonProps {
743
+ /** 变体 */
744
+ variant?: 'text' | 'title' | 'avatar' | 'thumbnail' | 'button' | 'input';
745
+ /** 宽度 */
746
+ width?: string;
747
+ /** 高度 */
748
+ height?: string;
749
+ /** 是否圆形 */
750
+ circle?: boolean;
751
+ /** 是否有动画 */
752
+ animation?: boolean;
753
+ /** 数量 */
754
+ count?: number;
755
+ /** 自定义类名 */
756
+ class?: string;
757
+ }
758
+ /**
759
+ * 空状态属性
760
+ */
761
+ export interface EmptyProps {
762
+ /** 标题 */
763
+ title?: string;
764
+ /** 描述 */
765
+ description?: string;
766
+ /** 图标类型 */
767
+ icon?: 'inbox' | 'search' | 'file' | 'error';
768
+ /** 尺寸 */
769
+ size?: Size;
770
+ /** 自定义类名 */
771
+ class?: string;
772
+ /** 操作按钮插槽 */
773
+ action?: Snippet;
774
+ /** 自定义图标插槽 */
775
+ children?: Snippet;
776
+ }
777
+ /**
778
+ * 结果页属性
779
+ */
780
+ export interface ResultProps {
781
+ /** 状态 */
782
+ status?: 'success' | 'error' | 'warning' | 'info';
783
+ /** 标题 */
784
+ title?: string;
785
+ /** 描述 */
786
+ description?: string;
787
+ /** 自定义类名 */
788
+ class?: string;
789
+ /** 自定义图标插槽 */
790
+ icon?: Snippet;
791
+ /** 操作按钮插槽 */
792
+ actions?: Snippet;
793
+ /** 额外内容插槽 */
794
+ children?: Snippet;
795
+ }
796
+ /**
797
+ * 确认对话框属性
798
+ */
799
+ export interface ConfirmProps {
800
+ /** 是否打开 */
801
+ open?: boolean;
802
+ /** 标题 */
803
+ title?: string;
804
+ /** 消息内容 */
805
+ message?: string;
806
+ /** 确认按钮文本 */
807
+ confirmText?: string;
808
+ /** 取消按钮文本 */
809
+ cancelText?: string;
810
+ /** 变体 */
811
+ variant?: 'default' | 'primary' | 'warning' | 'error';
812
+ /** 加载状态 */
813
+ loading?: boolean;
814
+ /** 自定义类名 */
815
+ class?: string;
816
+ /** 确认事件 */
817
+ onconfirm?: () => void | Promise<void>;
818
+ /** 取消事件 */
819
+ oncancel?: () => void;
820
+ }
821
+ /**
822
+ * 标签属性
823
+ */
824
+ export interface TagProps {
825
+ /** 文本 */
826
+ text?: string;
827
+ /** 变体 */
828
+ variant?: Variant;
829
+ /** 尺寸 */
830
+ size?: Size;
831
+ /** 是否可关闭 */
832
+ closable?: boolean;
833
+ /** 是否为轮廓样式 */
834
+ outline?: boolean;
835
+ /** 移除按钮的 aria-label */
836
+ removeLabel?: string;
837
+ /** 自定义类名 */
838
+ class?: string;
839
+ /** 关闭事件 */
840
+ onclose?: () => void;
841
+ /** 子内容 */
842
+ children?: Snippet;
843
+ }
844
+ /**
845
+ * 标签输入框属性
846
+ */
847
+ export interface TagInputProps {
848
+ /** 标签列表 */
849
+ tags?: string[];
850
+ /** 占位符 */
851
+ placeholder?: string;
852
+ /** 最大标签数 */
853
+ maxTags?: number;
854
+ /** 是否允许重复 */
855
+ allowDuplicates?: boolean;
856
+ /** 是否禁用 */
857
+ disabled?: boolean;
858
+ /** 尺寸 */
859
+ size?: Size;
860
+ /** 自定义类名 */
861
+ class?: string;
862
+ /** 变化事件 */
863
+ onchange?: (tags: string[]) => void;
864
+ }
865
+ /**
866
+ * 步骤项
867
+ */
868
+ export interface StepItem {
869
+ /** 标题 */
870
+ title: string;
871
+ /** 描述 */
872
+ description?: string;
873
+ /** 图标 */
874
+ icon?: string;
875
+ }
876
+ /**
877
+ * 步骤条属性
878
+ */
879
+ export interface StepsProps {
880
+ /** 步骤列表 */
881
+ items?: StepItem[];
882
+ /** 当前步骤 */
883
+ current?: number;
884
+ /** 方向 */
885
+ direction?: 'horizontal' | 'vertical';
886
+ /** 尺寸 */
887
+ size?: 'xs' | 'sm' | 'md' | 'lg';
888
+ /** 是否可点击 */
889
+ clickable?: boolean;
890
+ /** 自定义类名 */
891
+ class?: string;
892
+ /** 变化事件 */
893
+ onchange?: (index: number) => void;
894
+ }
895
+ /**
896
+ * 图标按钮属性
897
+ */
898
+ export interface IconButtonProps {
899
+ /** 图标(HTML/SVG 字符串或 Snippet) */
900
+ icon?: string | Snippet;
901
+ /** 标签(无障碍) */
902
+ label?: string;
903
+ /** aria-label(无障碍标签,别名) */
904
+ ariaLabel?: string;
905
+ /** 提示文本 */
906
+ tooltip?: string;
907
+ /** 变体 */
908
+ variant?: Variant;
909
+ /** 尺寸 */
910
+ size?: Size;
911
+ /** 是否禁用 */
912
+ disabled?: boolean;
913
+ /** 是否加载中 */
914
+ loading?: boolean;
915
+ /** 自定义类名 */
916
+ class?: string;
917
+ /** 点击事件 */
918
+ onclick?: (e: MouseEvent) => void;
919
+ /** 图标插槽 */
920
+ children?: Snippet;
921
+ }
922
+ /**
923
+ * 弹出层属性
924
+ */
925
+ export interface PopoverProps {
926
+ /** 是否打开 */
927
+ open?: boolean;
928
+ /** 位置 */
929
+ position?: Position;
930
+ /** 触发方式 */
931
+ trigger?: 'click' | 'hover';
932
+ /** 偏移量 */
933
+ offset?: number;
934
+ /** 自定义类名 */
935
+ class?: string;
936
+ /** 打开事件 */
937
+ onopen?: () => void;
938
+ /** 关闭事件 */
939
+ onclose?: () => void;
940
+ /** 触发器插槽 */
941
+ triggerContent?: Snippet;
942
+ /** 内容插槽 */
943
+ children?: Snippet;
944
+ }