@h-ai/ui 0.1.0-alpha.67 → 0.1.0-alpha.68

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 (286) hide show
  1. package/README.en.md +31 -5
  2. package/README.ja.md +31 -5
  3. package/README.md +64 -38
  4. package/dist/components/compounds/Accordion.svelte +24 -0
  5. package/dist/components/compounds/Accordion.svelte.d.ts +34 -0
  6. package/dist/components/compounds/ActionSheet.svelte +24 -0
  7. package/dist/components/compounds/ActionSheet.svelte.d.ts +38 -0
  8. package/dist/components/compounds/Alert.svelte +15 -4
  9. package/dist/components/compounds/Alert.svelte.d.ts +10 -0
  10. package/dist/components/compounds/AppBar.svelte +24 -0
  11. package/dist/components/compounds/AppBar.svelte.d.ts +33 -0
  12. package/dist/components/compounds/BottomNav.svelte +37 -0
  13. package/dist/components/compounds/BottomNav.svelte.d.ts +43 -0
  14. package/dist/components/compounds/Breadcrumb.svelte +11 -0
  15. package/dist/components/compounds/Breadcrumb.svelte.d.ts +20 -0
  16. package/dist/components/compounds/Calendar.svelte +20 -6
  17. package/dist/components/compounds/Calendar.svelte.d.ts +20 -6
  18. package/dist/components/compounds/Card.svelte +10 -0
  19. package/dist/components/compounds/Card.svelte.d.ts +10 -0
  20. package/dist/components/compounds/Combobox.svelte +35 -18
  21. package/dist/components/compounds/Combobox.svelte.d.ts +35 -18
  22. package/dist/components/compounds/Confirm.svelte +11 -0
  23. package/dist/components/compounds/Confirm.svelte.d.ts +21 -0
  24. package/dist/components/compounds/DataTable.svelte +40 -17
  25. package/dist/components/compounds/DataTable.svelte.d.ts +9 -13
  26. package/dist/components/compounds/DatePicker.svelte +20 -6
  27. package/dist/components/compounds/DatePicker.svelte.d.ts +20 -6
  28. package/dist/components/compounds/Drawer.svelte +11 -0
  29. package/dist/components/compounds/Drawer.svelte.d.ts +21 -0
  30. package/dist/components/compounds/Dropdown.svelte +10 -0
  31. package/dist/components/compounds/Dropdown.svelte.d.ts +10 -0
  32. package/dist/components/compounds/Empty.svelte +16 -5
  33. package/dist/components/compounds/Empty.svelte.d.ts +20 -0
  34. package/dist/components/compounds/Form.svelte +37 -2
  35. package/dist/components/compounds/Form.svelte.d.ts +20 -0
  36. package/dist/components/compounds/FormField.svelte +11 -0
  37. package/dist/components/compounds/FormField.svelte.d.ts +20 -0
  38. package/dist/components/compounds/FormLayout.svelte +13 -1
  39. package/dist/components/compounds/FormLayout.svelte.d.ts +13 -0
  40. package/dist/components/compounds/InfiniteScroll.svelte +24 -0
  41. package/dist/components/compounds/InfiniteScroll.svelte.d.ts +34 -0
  42. package/dist/components/compounds/MessageBoxContainer.svelte +11 -0
  43. package/dist/components/compounds/MessageBoxContainer.svelte.d.ts +21 -0
  44. package/dist/components/compounds/MessageBoxDialog.svelte +14 -0
  45. package/dist/components/compounds/MessageBoxDialog.svelte.d.ts +21 -0
  46. package/dist/components/compounds/MessageContainer.svelte +11 -0
  47. package/dist/components/compounds/MessageContainer.svelte.d.ts +21 -0
  48. package/dist/components/compounds/Modal.svelte +10 -0
  49. package/dist/components/compounds/Modal.svelte.d.ts +10 -0
  50. package/dist/components/compounds/PageHeader.svelte +21 -8
  51. package/dist/components/compounds/PageHeader.svelte.d.ts +21 -8
  52. package/dist/components/compounds/Pagination.svelte +34 -8
  53. package/dist/components/compounds/Pagination.svelte.d.ts +20 -0
  54. package/dist/components/compounds/Popover.svelte +11 -0
  55. package/dist/components/compounds/Popover.svelte.d.ts +20 -0
  56. package/dist/components/compounds/PullRefresh.svelte +24 -0
  57. package/dist/components/compounds/PullRefresh.svelte.d.ts +32 -0
  58. package/dist/components/compounds/Result.svelte +11 -0
  59. package/dist/components/compounds/Result.svelte.d.ts +20 -0
  60. package/dist/components/compounds/SafeArea.svelte +24 -0
  61. package/dist/components/compounds/SafeArea.svelte.d.ts +32 -0
  62. package/dist/components/compounds/Skeleton.svelte +10 -0
  63. package/dist/components/compounds/Skeleton.svelte.d.ts +10 -0
  64. package/dist/components/compounds/Steps.svelte +11 -0
  65. package/dist/components/compounds/Steps.svelte.d.ts +20 -0
  66. package/dist/components/compounds/SwipeCell.svelte +24 -0
  67. package/dist/components/compounds/SwipeCell.svelte.d.ts +37 -0
  68. package/dist/components/compounds/TableToolbar.svelte +66 -28
  69. package/dist/components/compounds/TableToolbar.svelte.d.ts +29 -19
  70. package/dist/components/compounds/Tabs.svelte +58 -10
  71. package/dist/components/compounds/Tabs.svelte.d.ts +10 -0
  72. package/dist/components/compounds/TagInput.svelte +11 -0
  73. package/dist/components/compounds/TagInput.svelte.d.ts +20 -0
  74. package/dist/components/compounds/Timeline.svelte +24 -0
  75. package/dist/components/compounds/Timeline.svelte.d.ts +34 -0
  76. package/dist/components/compounds/ToastContainer.svelte +11 -0
  77. package/dist/components/compounds/ToastContainer.svelte.d.ts +26 -0
  78. package/dist/components/compounds/Tooltip.svelte +11 -0
  79. package/dist/components/compounds/Tooltip.svelte.d.ts +22 -0
  80. package/dist/components/compounds/accordion-types.d.ts +10 -1
  81. package/dist/components/compounds/action-sheet-types.d.ts +9 -0
  82. package/dist/components/compounds/bottom-nav-types.d.ts +9 -0
  83. package/dist/components/compounds/swipe-cell-types.d.ts +9 -0
  84. package/dist/components/compounds/timeline-types.d.ts +9 -0
  85. package/dist/components/control-size.d.ts +17 -0
  86. package/dist/components/control-size.js +8 -0
  87. package/dist/components/primitives/Avatar.svelte +10 -0
  88. package/dist/components/primitives/Avatar.svelte.d.ts +10 -0
  89. package/dist/components/primitives/Badge.svelte +10 -0
  90. package/dist/components/primitives/Badge.svelte.d.ts +10 -0
  91. package/dist/components/primitives/BareButton.svelte +11 -0
  92. package/dist/components/primitives/BareButton.svelte.d.ts +20 -0
  93. package/dist/components/primitives/BareInput.svelte +11 -0
  94. package/dist/components/primitives/BareInput.svelte.d.ts +20 -0
  95. package/dist/components/primitives/Button.svelte +10 -0
  96. package/dist/components/primitives/Button.svelte.d.ts +10 -0
  97. package/dist/components/primitives/Checkbox.svelte +11 -0
  98. package/dist/components/primitives/Checkbox.svelte.d.ts +20 -0
  99. package/dist/components/primitives/IconButton.svelte +11 -0
  100. package/dist/components/primitives/IconButton.svelte.d.ts +20 -0
  101. package/dist/components/primitives/Input.svelte +10 -0
  102. package/dist/components/primitives/Input.svelte.d.ts +10 -0
  103. package/dist/components/primitives/Progress.svelte +11 -0
  104. package/dist/components/primitives/Progress.svelte.d.ts +20 -0
  105. package/dist/components/primitives/Radio.svelte +11 -0
  106. package/dist/components/primitives/Radio.svelte.d.ts +20 -0
  107. package/dist/components/primitives/Range.svelte +24 -0
  108. package/dist/components/primitives/Range.svelte.d.ts +34 -0
  109. package/dist/components/primitives/Rating.svelte +24 -0
  110. package/dist/components/primitives/Rating.svelte.d.ts +34 -0
  111. package/dist/components/primitives/Select.svelte +11 -0
  112. package/dist/components/primitives/Select.svelte.d.ts +21 -0
  113. package/dist/components/primitives/Spinner.svelte +11 -0
  114. package/dist/components/primitives/Spinner.svelte.d.ts +20 -0
  115. package/dist/components/primitives/Switch.svelte +11 -0
  116. package/dist/components/primitives/Switch.svelte.d.ts +20 -0
  117. package/dist/components/primitives/Tag.svelte +11 -0
  118. package/dist/components/primitives/Tag.svelte.d.ts +20 -0
  119. package/dist/components/primitives/Textarea.svelte +11 -0
  120. package/dist/components/primitives/Textarea.svelte.d.ts +21 -0
  121. package/dist/components/primitives/ToggleCheckbox.svelte +11 -0
  122. package/dist/components/primitives/ToggleCheckbox.svelte.d.ts +20 -0
  123. package/dist/components/primitives/ToggleInput.svelte +11 -0
  124. package/dist/components/primitives/ToggleInput.svelte.d.ts +20 -0
  125. package/dist/components/primitives/ToggleRadio.svelte +11 -0
  126. package/dist/components/primitives/ToggleRadio.svelte.d.ts +20 -0
  127. package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte +27 -0
  128. package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte.d.ts +27 -0
  129. package/dist/components/scenes/ai/AiDocumentEditor.svelte +79 -0
  130. package/dist/components/scenes/ai/AiDocumentEditor.svelte.d.ts +23 -0
  131. package/dist/components/scenes/ai/MarkdownRenderer.svelte +11 -0
  132. package/dist/components/scenes/ai/MarkdownRenderer.svelte.d.ts +28 -0
  133. package/dist/components/scenes/ai/code-preview.d.ts +28 -0
  134. package/dist/components/scenes/ai/code-preview.js +20 -0
  135. package/dist/components/scenes/ai/document-download.d.ts +52 -0
  136. package/dist/components/scenes/ai/document-download.js +30 -2
  137. package/dist/components/scenes/ai/document-parse.d.ts +71 -14
  138. package/dist/components/scenes/ai/document-parse.js +19 -9
  139. package/dist/components/scenes/ai/document-types.d.ts +222 -88
  140. package/dist/components/scenes/ai/editor-markdown-extensions.d.ts +16 -0
  141. package/dist/components/scenes/ai/editor-markdown-extensions.js +16 -0
  142. package/dist/components/scenes/ai/highlight.d.ts +11 -0
  143. package/dist/components/scenes/ai/highlight.js +11 -0
  144. package/dist/components/scenes/ai/markdown-parse.d.ts +8 -2
  145. package/dist/components/scenes/ai/markdown-parse.js +2 -2
  146. package/dist/components/scenes/ai/mermaid-host-sync.d.ts +38 -0
  147. package/dist/components/scenes/ai/mermaid-host-sync.js +30 -0
  148. package/dist/components/scenes/ai/mermaid-render.d.ts +23 -0
  149. package/dist/components/scenes/ai/mermaid-render.js +23 -0
  150. package/dist/components/scenes/ai/safe-html.d.ts +54 -6
  151. package/dist/components/scenes/ai/safe-html.js +54 -6
  152. package/dist/components/scenes/ai/table/AiTableEditor.svelte +48 -0
  153. package/dist/components/scenes/ai/table/AiTableEditor.svelte.d.ts +24 -0
  154. package/dist/components/scenes/ai/table/table-types.d.ts +79 -0
  155. package/dist/components/scenes/app/FeedbackModal.svelte +45 -5
  156. package/dist/components/scenes/app/FeedbackModal.svelte.d.ts +45 -5
  157. package/dist/components/scenes/app/LanguageSwitch.svelte +29 -19
  158. package/dist/components/scenes/app/LanguageSwitch.svelte.d.ts +28 -19
  159. package/dist/components/scenes/app/SettingsLayout.svelte +21 -9
  160. package/dist/components/scenes/app/SettingsLayout.svelte.d.ts +21 -9
  161. package/dist/components/scenes/app/SettingsModal.svelte +23 -0
  162. package/dist/components/scenes/app/SettingsModal.svelte.d.ts +23 -0
  163. package/dist/components/scenes/app/ThemeColorPicker.svelte +31 -0
  164. package/dist/components/scenes/app/ThemeColorPicker.svelte.d.ts +31 -0
  165. package/dist/components/scenes/app/ThemeSelector.svelte +21 -6
  166. package/dist/components/scenes/app/ThemeSelector.svelte.d.ts +21 -6
  167. package/dist/components/scenes/app/ThemeToggle.svelte +21 -4
  168. package/dist/components/scenes/app/ThemeToggle.svelte.d.ts +21 -4
  169. package/dist/components/scenes/app/index.d.ts +1 -1
  170. package/dist/components/scenes/app/index.js +1 -1
  171. package/dist/components/scenes/charts/Chart.svelte +11 -0
  172. package/dist/components/scenes/charts/Chart.svelte.d.ts +20 -0
  173. package/dist/components/scenes/charts/chart-theme.d.ts +25 -1
  174. package/dist/components/scenes/charts/chart-theme.js +25 -1
  175. package/dist/components/scenes/charts/chart-types.d.ts +83 -7
  176. package/dist/components/scenes/charts/renderers/LineChart.svelte +53 -0
  177. package/dist/components/scenes/charts/renderers/LineChart.svelte.d.ts +13 -0
  178. package/dist/components/scenes/crud/CrudDeleteConfirm.svelte +10 -0
  179. package/dist/components/scenes/crud/CrudDeleteConfirm.svelte.d.ts +10 -0
  180. package/dist/components/scenes/crud/CrudDetailDrawer.svelte +8 -0
  181. package/dist/components/scenes/crud/CrudDetailDrawer.svelte.d.ts +8 -0
  182. package/dist/components/scenes/crud/CrudDetailPanel.svelte +18 -0
  183. package/dist/components/scenes/crud/CrudDetailPanel.svelte.d.ts +18 -0
  184. package/dist/components/scenes/crud/CrudEditPanel.svelte +10 -0
  185. package/dist/components/scenes/crud/CrudEditPanel.svelte.d.ts +10 -0
  186. package/dist/components/scenes/crud/CrudFilterBar.svelte +18 -0
  187. package/dist/components/scenes/crud/CrudFilterBar.svelte.d.ts +18 -0
  188. package/dist/components/scenes/crud/CrudPage.svelte +37 -5
  189. package/dist/components/scenes/crud/CrudPage.svelte.d.ts +35 -3
  190. package/dist/components/scenes/crud/crud-controller.svelte.d.ts +142 -23
  191. package/dist/components/scenes/crud/crud-controller.svelte.js +22 -11
  192. package/dist/components/scenes/crud/crud-form-validation.d.ts +12 -0
  193. package/dist/components/scenes/crud/crud-form-validation.js +12 -0
  194. package/dist/components/scenes/crud/crud-types.d.ts +79 -8
  195. package/dist/components/scenes/crud/nav-adapter.d.ts +14 -0
  196. package/dist/components/scenes/crud/nav-adapter.js +8 -0
  197. package/dist/components/scenes/crypto/EncryptedInput.svelte +24 -0
  198. package/dist/components/scenes/crypto/EncryptedInput.svelte.d.ts +34 -0
  199. package/dist/components/scenes/crypto/HashDisplay.svelte +11 -0
  200. package/dist/components/scenes/crypto/HashDisplay.svelte.d.ts +21 -0
  201. package/dist/components/scenes/crypto/SignatureDisplay.svelte +11 -0
  202. package/dist/components/scenes/crypto/SignatureDisplay.svelte.d.ts +21 -0
  203. package/dist/components/scenes/error/ErrorPage.svelte +8 -1
  204. package/dist/components/scenes/error/ErrorPage.svelte.d.ts +8 -1
  205. package/dist/components/scenes/error/error-presets.d.ts +40 -4
  206. package/dist/components/scenes/error/error-presets.js +22 -2
  207. package/dist/components/scenes/guide/GuideHost.svelte +27 -0
  208. package/dist/components/scenes/guide/GuideHost.svelte.d.ts +27 -0
  209. package/dist/components/scenes/guide/HelpCenter.svelte +27 -0
  210. package/dist/components/scenes/guide/HelpCenter.svelte.d.ts +27 -0
  211. package/dist/components/scenes/iam/AuthPanel.svelte +26 -2
  212. package/dist/components/scenes/iam/AuthPanel.svelte.d.ts +25 -0
  213. package/dist/components/scenes/iam/AuthShell.svelte +8 -3
  214. package/dist/components/scenes/iam/AuthShell.svelte.d.ts +8 -3
  215. package/dist/components/scenes/iam/ChangePasswordForm.svelte +10 -0
  216. package/dist/components/scenes/iam/ChangePasswordForm.svelte.d.ts +10 -0
  217. package/dist/components/scenes/iam/ForgotPasswordForm.svelte +11 -0
  218. package/dist/components/scenes/iam/ForgotPasswordForm.svelte.d.ts +21 -0
  219. package/dist/components/scenes/iam/LoginForm.svelte +24 -31
  220. package/dist/components/scenes/iam/LoginForm.svelte.d.ts +10 -0
  221. package/dist/components/scenes/iam/PasswordInput.svelte +23 -0
  222. package/dist/components/scenes/iam/PasswordInput.svelte.d.ts +23 -0
  223. package/dist/components/scenes/iam/PermGuard.svelte +21 -11
  224. package/dist/components/scenes/iam/PermGuard.svelte.d.ts +30 -0
  225. package/dist/components/scenes/iam/RegisterForm.svelte +10 -0
  226. package/dist/components/scenes/iam/RegisterForm.svelte.d.ts +10 -0
  227. package/dist/components/scenes/iam/ResetPasswordForm.svelte +10 -0
  228. package/dist/components/scenes/iam/ResetPasswordForm.svelte.d.ts +10 -0
  229. package/dist/components/scenes/iam/UserProfile.svelte +11 -0
  230. package/dist/components/scenes/iam/UserProfile.svelte.d.ts +21 -0
  231. package/dist/components/scenes/iam/auth-error-message.d.ts +10 -0
  232. package/dist/components/scenes/iam/auth-error-message.js +10 -0
  233. package/dist/components/scenes/iam/password-utils.d.ts +39 -1
  234. package/dist/components/scenes/iam/password-utils.js +39 -1
  235. package/dist/components/scenes/iam/permission-context.svelte.d.ts +33 -23
  236. package/dist/components/scenes/iam/permission-context.svelte.js +20 -22
  237. package/dist/components/scenes/storage/AvatarUpload.svelte +11 -0
  238. package/dist/components/scenes/storage/AvatarUpload.svelte.d.ts +20 -0
  239. package/dist/components/scenes/storage/FileList.svelte +13 -2
  240. package/dist/components/scenes/storage/FileList.svelte.d.ts +20 -0
  241. package/dist/components/scenes/storage/FileUpload.svelte +37 -2
  242. package/dist/components/scenes/storage/FileUpload.svelte.d.ts +21 -0
  243. package/dist/components/scenes/storage/ImageUpload.svelte +11 -0
  244. package/dist/components/scenes/storage/ImageUpload.svelte.d.ts +21 -0
  245. package/dist/components/scenes/types.d.ts +352 -11
  246. package/dist/guide-storage.d.ts +13 -1
  247. package/dist/guide-storage.js +13 -1
  248. package/dist/guide-types.d.ts +67 -2
  249. package/dist/guide.svelte.d.ts +22 -1
  250. package/dist/guide.svelte.js +22 -1
  251. package/dist/i18n.svelte.d.ts +64 -3
  252. package/dist/i18n.svelte.js +99 -18
  253. package/dist/index.d.ts +2 -1
  254. package/dist/index.js +1 -2
  255. package/dist/internal/browser-safety.d.ts +51 -2
  256. package/dist/internal/browser-safety.js +45 -7
  257. package/dist/internal/form-context.d.ts +73 -0
  258. package/dist/internal/form-context.js +57 -0
  259. package/dist/internal/form-validation.svelte.d.ts +42 -0
  260. package/dist/internal/form-validation.svelte.js +26 -0
  261. package/dist/internal/icon-safety.d.ts +7 -0
  262. package/dist/internal/icon-safety.js +7 -0
  263. package/dist/internal/locale.d.ts +19 -0
  264. package/dist/internal/locale.js +21 -0
  265. package/dist/message.svelte.d.ts +90 -0
  266. package/dist/message.svelte.js +84 -0
  267. package/dist/messagebox.svelte.d.ts +61 -13
  268. package/dist/messagebox.svelte.js +55 -13
  269. package/dist/messages/en-US.json +6 -1
  270. package/dist/messages/ja-JP.json +389 -0
  271. package/dist/messages/zh-CN.json +6 -1
  272. package/dist/messages.d.ts +24 -3
  273. package/dist/messages.js +18 -3
  274. package/dist/styles/design-tokens.css +4 -2
  275. package/dist/styles/global.css +28 -8
  276. package/dist/styles/theme.css +2 -0
  277. package/dist/theme-config.d.ts +173 -0
  278. package/dist/theme-config.js +143 -0
  279. package/dist/toast.svelte.d.ts +114 -4
  280. package/dist/toast.svelte.js +108 -4
  281. package/dist/types.d.ts +526 -9
  282. package/dist/utils/platform.svelte.d.ts +28 -15
  283. package/dist/utils/platform.svelte.js +19 -14
  284. package/dist/utils.d.ts +102 -0
  285. package/dist/utils.js +93 -0
  286. package/package.json +66 -6
@@ -4,7 +4,15 @@
4
4
  * 提供运行时平台检测与 Svelte 5 响应式平台状态。
5
5
  * @module platform
6
6
  */
7
- /** 运行平台 */
7
+ /**
8
+ * 运行平台
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import type { Platform } from '@h-ai/ui'
13
+ * const example: Platform = 'web'
14
+ * ```
15
+ */
8
16
  export type Platform = 'web' | 'h5' | 'android' | 'ios' | 'unknown';
9
17
  /**
10
18
  * 检测当前运行平台
@@ -13,19 +21,31 @@ export type Platform = 'web' | 'h5' | 'android' | 'ios' | 'unknown';
13
21
  *
14
22
  * @example
15
23
  * ```ts
24
+ * import { detectPlatform } from '@h-ai/ui'
16
25
  * const platform = detectPlatform()
17
- * if (platform === 'android') {
18
- * // Android 特定逻辑
19
- * }
20
26
  * ```
21
27
  */
22
28
  export declare function detectPlatform(): Platform;
23
29
  /**
24
30
  * 判断是否为移动端
31
+ * @returns 当前是否为 H5 或 Android/iOS 原生壳。
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { isMobile } from '@h-ai/ui'
36
+ * const compactLayout = isMobile()
37
+ * ```
25
38
  */
26
39
  export declare function isMobile(): boolean;
27
40
  /**
28
41
  * 判断是否为 Capacitor App
42
+ * @returns 是否为 Capacitor Android/iOS 原生壳。
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * import { isNativeApp } from '@h-ai/ui'
47
+ * const useNativeBridge = isNativeApp()
48
+ * ```
29
49
  */
30
50
  export declare function isNativeApp(): boolean;
31
51
  /**
@@ -34,17 +54,10 @@ export declare function isNativeApp(): boolean;
34
54
  * @returns 包含当前平台、是否移动端和是否原生应用的响应式对象
35
55
  *
36
56
  * @example
37
- * ```svelte
38
- * <script>
39
- * import { usePlatform } from '@hai/ui'
40
- * const platform = usePlatform()
41
- * </script>
42
- *
43
- * {#if platform.isMobile}
44
- * <BottomNav />
45
- * {:else}
46
- * <Sidebar />
47
- * {/if}
57
+ * ```ts
58
+ * import { usePlatform } from '@h-ai/ui'
59
+ * const platform = usePlatform()
60
+ * const device = platform.current
48
61
  * ```
49
62
  */
50
63
  export declare function usePlatform(): {
@@ -13,10 +13,8 @@ const IOS_UA_REGEX = /iphone|ipad|ipod/;
13
13
  *
14
14
  * @example
15
15
  * ```ts
16
+ * import { detectPlatform } from '@h-ai/ui'
16
17
  * const platform = detectPlatform()
17
- * if (platform === 'android') {
18
- * // Android 特定逻辑
19
- * }
20
18
  * ```
21
19
  */
22
20
  export function detectPlatform() {
@@ -46,6 +44,13 @@ export function detectPlatform() {
46
44
  }
47
45
  /**
48
46
  * 判断是否为移动端
47
+ * @returns 当前是否为 H5 或 Android/iOS 原生壳。
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * import { isMobile } from '@h-ai/ui'
52
+ * const compactLayout = isMobile()
53
+ * ```
49
54
  */
50
55
  export function isMobile() {
51
56
  const platform = detectPlatform();
@@ -53,6 +58,13 @@ export function isMobile() {
53
58
  }
54
59
  /**
55
60
  * 判断是否为 Capacitor App
61
+ * @returns 是否为 Capacitor Android/iOS 原生壳。
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * import { isNativeApp } from '@h-ai/ui'
66
+ * const useNativeBridge = isNativeApp()
67
+ * ```
56
68
  */
57
69
  export function isNativeApp() {
58
70
  const platform = detectPlatform();
@@ -64,17 +76,10 @@ export function isNativeApp() {
64
76
  * @returns 包含当前平台、是否移动端和是否原生应用的响应式对象
65
77
  *
66
78
  * @example
67
- * ```svelte
68
- * <script>
69
- * import { usePlatform } from '@hai/ui'
70
- * const platform = usePlatform()
71
- * </script>
72
- *
73
- * {#if platform.isMobile}
74
- * <BottomNav />
75
- * {:else}
76
- * <Sidebar />
77
- * {/if}
79
+ * ```ts
80
+ * import { usePlatform } from '@h-ai/ui'
81
+ * const platform = usePlatform()
82
+ * const device = platform.current
78
83
  * ```
79
84
  */
80
85
  export function usePlatform() {
package/dist/utils.d.ts CHANGED
@@ -10,43 +10,135 @@ import type { DataAttributes, Size, Variant } from './types.js';
10
10
  *
11
11
  * @param classes - 类名列表
12
12
  * @returns 合并后的类名字符串
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { cn } from '@h-ai/ui'
17
+ * const classes = cn('px-2', 'px-4', false, 'font-medium')
18
+ * // classes 为冲突合并后的类名,可直接用于元素 class。
19
+ * ```
13
20
  */
14
21
  export declare function cn(...classes: (string | boolean | undefined | null)[]): string;
22
+ /**
23
+ * 实际可转发的 data-* 原子值映射,不包含 null 或 undefined。
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * import type { ForwardedDataAttributes } from '@h-ai/ui'
28
+ * const example: ForwardedDataAttributes = { 'data-testid': 'profile-save' }
29
+ * ```
30
+ */
15
31
  export type ForwardedDataAttributes = Record<`data-${string}`, string | number | boolean>;
16
32
  /**
17
33
  * 从组件未声明 props 中提取 data-* 属性,避免把普通未知属性透传到 DOM。
34
+ * @param props - 组件的属性对象。
35
+ * @returns 只包含安全原子值的 data-* 属性对象。
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import { getDataAttributes } from '@h-ai/ui'
40
+ * const attributes = getDataAttributes({ 'data-testid': 'save', 'data-loading': false, onclick: 'ignored' })
41
+ * // 仅保留安全类型的 data-* 字段。
42
+ * ```
18
43
  */
19
44
  export declare function getDataAttributes(props: DataAttributes | Record<string, unknown>): ForwardedDataAttributes;
20
45
  /**
21
46
  * 获取变体类名
47
+ * @param variant - 语义变体。
48
+ * @param prefix - 类名前缀或界面 ID 前缀。
49
+ * @returns 对应前缀和变体的 DaisyUI 类名;未知前缀按约定拼接。
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * import { getVariantClass } from '@h-ai/ui'
54
+ * const classes = getVariantClass('primary', 'btn')
55
+ * ```
22
56
  */
23
57
  export declare function getVariantClass(variant: Variant, prefix?: string): string;
24
58
  /**
25
59
  * 获取尺寸类名
60
+ * @param size - 组件尺寸预设。
61
+ * @param prefix - 类名前缀或界面 ID 前缀。
62
+ * @returns 对应尺寸的类名,中号尺寸使用空字符串。
63
+ *
64
+ * @example
65
+ * ```ts
66
+ * import { getSizeClass } from '@h-ai/ui'
67
+ * const classes = getSizeClass('lg', 'btn')
68
+ * ```
26
69
  */
27
70
  export declare function getSizeClass(size: Size, prefix?: string): string;
28
71
  /**
29
72
  * 输入框尺寸类名
73
+ * @param size - 组件尺寸预设。
74
+ * @returns 输入框尺寸类名;大于 xl 的预设统一使用 input-xl。
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * import { getInputSizeClass } from '@h-ai/ui'
79
+ * const classes = getInputSizeClass('sm')
80
+ * ```
30
81
  */
31
82
  export declare function getInputSizeClass(size: Size): string;
32
83
  /**
33
84
  * 徽章变体类名
85
+ * @param variant - 语义变体。
86
+ * @returns 徽章语义变体类名。
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * import { getBadgeVariantClass } from '@h-ai/ui'
91
+ * const classes = getBadgeVariantClass('success')
92
+ * ```
34
93
  */
35
94
  export declare function getBadgeVariantClass(variant: Variant): string;
36
95
  /**
37
96
  * 徽章尺寸类名
97
+ * @param size - 组件尺寸预设。
98
+ * @returns 徽章尺寸类名。
99
+ *
100
+ * @example
101
+ * ```ts
102
+ * import { getBadgeSizeClass } from '@h-ai/ui'
103
+ * const classes = getBadgeSizeClass('sm')
104
+ * ```
38
105
  */
39
106
  export declare function getBadgeSizeClass(size: Size): string;
40
107
  /**
41
108
  * 警告框变体类名
109
+ * @param variant - 语义变体。
110
+ * @returns 警告框语义变体类名。
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * import { getAlertVariantClass } from '@h-ai/ui'
115
+ * const classes = getAlertVariantClass('warning')
116
+ * ```
42
117
  */
43
118
  export declare function getAlertVariantClass(variant: Variant): string;
44
119
  /**
45
120
  * 进度条变体类名
121
+ * @param variant - 语义变体。
122
+ * @returns 进度条语义变体类名。
123
+ *
124
+ * @example
125
+ * ```ts
126
+ * import { getProgressVariantClass } from '@h-ai/ui'
127
+ * const classes = getProgressVariantClass('success')
128
+ * ```
46
129
  */
47
130
  export declare function getProgressVariantClass(variant: Variant): string;
48
131
  /**
49
132
  * 生成唯一 ID
133
+ * @param prefix - 类名前缀或界面 ID 前缀。
134
+ * @returns 用于界面节点关联的随机 ID,不具备安全令牌或分布式主键保证。
135
+ *
136
+ * @example
137
+ * ```ts
138
+ * import { generateId } from '@h-ai/ui'
139
+ * const inputId = generateId('profile-email')
140
+ * // 仅用于界面节点关联,不用作安全令牌或分布式业务主键。
141
+ * ```
50
142
  */
51
143
  export declare function generateId(prefix?: string): string;
52
144
  /**
@@ -57,6 +149,16 @@ export declare function generateId(prefix?: string): string;
57
149
  *
58
150
  * @param node - 要移动的节点
59
151
  * @param target - 目标容器或选择器;默认 body
152
+ * @returns 包含 update 和 destroy 的 Svelte action 句柄。
153
+ *
154
+ * @example
155
+ * ```ts
156
+ * import { portal } from '@h-ai/ui'
157
+ * const popup = document.createElement('div')
158
+ * const action = portal(popup, document.body)
159
+ * action.update(document.body)
160
+ * action.destroy()
161
+ * ```
60
162
  */
61
163
  export declare function portal(node: HTMLElement, target?: HTMLElement | string): {
62
164
  update(next: HTMLElement | string): void;
package/dist/utils.js CHANGED
@@ -10,12 +10,28 @@ import { twMerge } from 'tailwind-merge';
10
10
  *
11
11
  * @param classes - 类名列表
12
12
  * @returns 合并后的类名字符串
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * import { cn } from '@h-ai/ui'
17
+ * const classes = cn('px-2', 'px-4', false, 'font-medium')
18
+ * // classes 为冲突合并后的类名,可直接用于元素 class。
19
+ * ```
13
20
  */
14
21
  export function cn(...classes) {
15
22
  return twMerge(classes.filter(Boolean).join(' '));
16
23
  }
17
24
  /**
18
25
  * 从组件未声明 props 中提取 data-* 属性,避免把普通未知属性透传到 DOM。
26
+ * @param props - 组件的属性对象。
27
+ * @returns 只包含安全原子值的 data-* 属性对象。
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { getDataAttributes } from '@h-ai/ui'
32
+ * const attributes = getDataAttributes({ 'data-testid': 'save', 'data-loading': false, onclick: 'ignored' })
33
+ * // 仅保留安全类型的 data-* 字段。
34
+ * ```
19
35
  */
20
36
  export function getDataAttributes(props) {
21
37
  const dataAttributes = {};
@@ -99,6 +115,15 @@ const SIZE_MAPS = {
99
115
  };
100
116
  /**
101
117
  * 获取变体类名
118
+ * @param variant - 语义变体。
119
+ * @param prefix - 类名前缀或界面 ID 前缀。
120
+ * @returns 对应前缀和变体的 DaisyUI 类名;未知前缀按约定拼接。
121
+ *
122
+ * @example
123
+ * ```ts
124
+ * import { getVariantClass } from '@h-ai/ui'
125
+ * const classes = getVariantClass('primary', 'btn')
126
+ * ```
102
127
  */
103
128
  export function getVariantClass(variant, prefix = 'btn') {
104
129
  const map = VARIANT_MAPS[prefix];
@@ -109,6 +134,15 @@ export function getVariantClass(variant, prefix = 'btn') {
109
134
  }
110
135
  /**
111
136
  * 获取尺寸类名
137
+ * @param size - 组件尺寸预设。
138
+ * @param prefix - 类名前缀或界面 ID 前缀。
139
+ * @returns 对应尺寸的类名,中号尺寸使用空字符串。
140
+ *
141
+ * @example
142
+ * ```ts
143
+ * import { getSizeClass } from '@h-ai/ui'
144
+ * const classes = getSizeClass('lg', 'btn')
145
+ * ```
112
146
  */
113
147
  export function getSizeClass(size, prefix = 'btn') {
114
148
  if (size === 'md')
@@ -120,6 +154,14 @@ export function getSizeClass(size, prefix = 'btn') {
120
154
  }
121
155
  /**
122
156
  * 输入框尺寸类名
157
+ * @param size - 组件尺寸预设。
158
+ * @returns 输入框尺寸类名;大于 xl 的预设统一使用 input-xl。
159
+ *
160
+ * @example
161
+ * ```ts
162
+ * import { getInputSizeClass } from '@h-ai/ui'
163
+ * const classes = getInputSizeClass('sm')
164
+ * ```
123
165
  */
124
166
  export function getInputSizeClass(size) {
125
167
  const map = {
@@ -136,18 +178,42 @@ export function getInputSizeClass(size) {
136
178
  }
137
179
  /**
138
180
  * 徽章变体类名
181
+ * @param variant - 语义变体。
182
+ * @returns 徽章语义变体类名。
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * import { getBadgeVariantClass } from '@h-ai/ui'
187
+ * const classes = getBadgeVariantClass('success')
188
+ * ```
139
189
  */
140
190
  export function getBadgeVariantClass(variant) {
141
191
  return getVariantClass(variant, 'badge');
142
192
  }
143
193
  /**
144
194
  * 徽章尺寸类名
195
+ * @param size - 组件尺寸预设。
196
+ * @returns 徽章尺寸类名。
197
+ *
198
+ * @example
199
+ * ```ts
200
+ * import { getBadgeSizeClass } from '@h-ai/ui'
201
+ * const classes = getBadgeSizeClass('sm')
202
+ * ```
145
203
  */
146
204
  export function getBadgeSizeClass(size) {
147
205
  return getSizeClass(size, 'badge');
148
206
  }
149
207
  /**
150
208
  * 警告框变体类名
209
+ * @param variant - 语义变体。
210
+ * @returns 警告框语义变体类名。
211
+ *
212
+ * @example
213
+ * ```ts
214
+ * import { getAlertVariantClass } from '@h-ai/ui'
215
+ * const classes = getAlertVariantClass('warning')
216
+ * ```
151
217
  */
152
218
  export function getAlertVariantClass(variant) {
153
219
  const map = {
@@ -166,12 +232,29 @@ export function getAlertVariantClass(variant) {
166
232
  }
167
233
  /**
168
234
  * 进度条变体类名
235
+ * @param variant - 语义变体。
236
+ * @returns 进度条语义变体类名。
237
+ *
238
+ * @example
239
+ * ```ts
240
+ * import { getProgressVariantClass } from '@h-ai/ui'
241
+ * const classes = getProgressVariantClass('success')
242
+ * ```
169
243
  */
170
244
  export function getProgressVariantClass(variant) {
171
245
  return getVariantClass(variant, 'progress');
172
246
  }
173
247
  /**
174
248
  * 生成唯一 ID
249
+ * @param prefix - 类名前缀或界面 ID 前缀。
250
+ * @returns 用于界面节点关联的随机 ID,不具备安全令牌或分布式主键保证。
251
+ *
252
+ * @example
253
+ * ```ts
254
+ * import { generateId } from '@h-ai/ui'
255
+ * const inputId = generateId('profile-email')
256
+ * // 仅用于界面节点关联,不用作安全令牌或分布式业务主键。
257
+ * ```
175
258
  */
176
259
  export function generateId(prefix = 'hai') {
177
260
  return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;
@@ -184,6 +267,16 @@ export function generateId(prefix = 'hai') {
184
267
  *
185
268
  * @param node - 要移动的节点
186
269
  * @param target - 目标容器或选择器;默认 body
270
+ * @returns 包含 update 和 destroy 的 Svelte action 句柄。
271
+ *
272
+ * @example
273
+ * ```ts
274
+ * import { portal } from '@h-ai/ui'
275
+ * const popup = document.createElement('div')
276
+ * const action = portal(popup, document.body)
277
+ * action.update(document.body)
278
+ * action.destroy()
279
+ * ```
187
280
  */
188
281
  export function portal(node, target = 'body') {
189
282
  function mount(to) {
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.67",
4
+ "version": "0.1.0-alpha.68",
5
5
  "description": "Hai Framework UI component library for Svelte 5 Runes.",
6
6
  "license": "Apache-2.0",
7
7
  "svelte": "./dist/index.js",
@@ -33,10 +33,70 @@
33
33
  "svelte": "./dist/guide.js",
34
34
  "import": "./dist/guide.js"
35
35
  },
36
- "./components/*": {
37
- "types": "./dist/components/*.d.ts",
38
- "svelte": "./dist/components/*.js",
39
- "import": "./dist/components/*.js"
36
+ "./components/compounds/index": {
37
+ "types": "./dist/components/compounds/index.d.ts",
38
+ "svelte": "./dist/components/compounds/index.js",
39
+ "import": "./dist/components/compounds/index.js"
40
+ },
41
+ "./components/index": {
42
+ "types": "./dist/components/index.d.ts",
43
+ "svelte": "./dist/components/index.js",
44
+ "import": "./dist/components/index.js"
45
+ },
46
+ "./components/primitives/index": {
47
+ "types": "./dist/components/primitives/index.d.ts",
48
+ "svelte": "./dist/components/primitives/index.js",
49
+ "import": "./dist/components/primitives/index.js"
50
+ },
51
+ "./components/scenes/ai/index": {
52
+ "types": "./dist/components/scenes/ai/index.d.ts",
53
+ "svelte": "./dist/components/scenes/ai/index.js",
54
+ "import": "./dist/components/scenes/ai/index.js"
55
+ },
56
+ "./components/scenes/app/index": {
57
+ "types": "./dist/components/scenes/app/index.d.ts",
58
+ "svelte": "./dist/components/scenes/app/index.js",
59
+ "import": "./dist/components/scenes/app/index.js"
60
+ },
61
+ "./components/scenes/charts/index": {
62
+ "types": "./dist/components/scenes/charts/index.d.ts",
63
+ "svelte": "./dist/components/scenes/charts/index.js",
64
+ "import": "./dist/components/scenes/charts/index.js"
65
+ },
66
+ "./components/scenes/crud/index": {
67
+ "types": "./dist/components/scenes/crud/index.d.ts",
68
+ "svelte": "./dist/components/scenes/crud/index.js",
69
+ "import": "./dist/components/scenes/crud/index.js"
70
+ },
71
+ "./components/scenes/crypto/index": {
72
+ "types": "./dist/components/scenes/crypto/index.d.ts",
73
+ "svelte": "./dist/components/scenes/crypto/index.js",
74
+ "import": "./dist/components/scenes/crypto/index.js"
75
+ },
76
+ "./components/scenes/error/index": {
77
+ "types": "./dist/components/scenes/error/index.d.ts",
78
+ "svelte": "./dist/components/scenes/error/index.js",
79
+ "import": "./dist/components/scenes/error/index.js"
80
+ },
81
+ "./components/scenes/guide/index": {
82
+ "types": "./dist/components/scenes/guide/index.d.ts",
83
+ "svelte": "./dist/components/scenes/guide/index.js",
84
+ "import": "./dist/components/scenes/guide/index.js"
85
+ },
86
+ "./components/scenes/iam/index": {
87
+ "types": "./dist/components/scenes/iam/index.d.ts",
88
+ "svelte": "./dist/components/scenes/iam/index.js",
89
+ "import": "./dist/components/scenes/iam/index.js"
90
+ },
91
+ "./components/scenes/index": {
92
+ "types": "./dist/components/scenes/index.d.ts",
93
+ "svelte": "./dist/components/scenes/index.js",
94
+ "import": "./dist/components/scenes/index.js"
95
+ },
96
+ "./components/scenes/storage/index": {
97
+ "types": "./dist/components/scenes/storage/index.d.ts",
98
+ "svelte": "./dist/components/scenes/storage/index.js",
99
+ "import": "./dist/components/scenes/storage/index.js"
40
100
  },
41
101
  "./styles/*": "./dist/styles/*"
42
102
  },
@@ -59,7 +119,7 @@
59
119
  "svelte": "^5.57.2"
60
120
  },
61
121
  "dependencies": {
62
- "@h-ai/core": "0.1.0-alpha.67",
122
+ "@h-ai/core": "0.1.0-alpha.68",
63
123
  "@internationalized/date": "^3.12.4",
64
124
  "@shikijs/langs": "^4.5.0",
65
125
  "bits-ui": "^2.19.5",