@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
package/dist/types.js ADDED
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @h-ai/ui — 类型定义
3
+ *
4
+ * UI 组件相关类型
5
+ * @module types
6
+ */
7
+ export {};
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @h-ai/ui — 平台检测工具
3
+ *
4
+ * 提供运行时平台检测与 Svelte 5 响应式平台状态。
5
+ * @module platform
6
+ */
7
+ /** 运行平台 */
8
+ export type Platform = 'web' | 'h5' | 'android' | 'ios' | 'unknown';
9
+ /**
10
+ * 检测当前运行平台
11
+ *
12
+ * @returns 当前平台标识
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const platform = detectPlatform()
17
+ * if (platform === 'android') {
18
+ * // Android 特定逻辑
19
+ * }
20
+ * ```
21
+ */
22
+ export declare function detectPlatform(): Platform;
23
+ /**
24
+ * 判断是否为移动端
25
+ */
26
+ export declare function isMobile(): boolean;
27
+ /**
28
+ * 判断是否为 Capacitor App
29
+ */
30
+ export declare function isNativeApp(): boolean;
31
+ /**
32
+ * Svelte 5 Runes 响应式平台状态
33
+ *
34
+ * @returns 包含当前平台、是否移动端和是否原生应用的响应式对象
35
+ *
36
+ * @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}
48
+ * ```
49
+ */
50
+ export declare function usePlatform(): {
51
+ readonly current: Platform;
52
+ readonly isMobile: boolean;
53
+ readonly isApp: boolean;
54
+ };
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @h-ai/ui — 平台检测工具
3
+ *
4
+ * 提供运行时平台检测与 Svelte 5 响应式平台状态。
5
+ * @module platform
6
+ */
7
+ /**
8
+ * 检测当前运行平台
9
+ *
10
+ * @returns 当前平台标识
11
+ *
12
+ * @example
13
+ * ```ts
14
+ * const platform = detectPlatform()
15
+ * if (platform === 'android') {
16
+ * // Android 特定逻辑
17
+ * }
18
+ * ```
19
+ */
20
+ export function detectPlatform() {
21
+ if (typeof window === 'undefined') {
22
+ return 'unknown';
23
+ }
24
+ const ua = navigator.userAgent.toLowerCase();
25
+ // Capacitor 注入全局标识
26
+ if ('Capacitor' in window) {
27
+ const cap = window.Capacitor;
28
+ const platform = cap?.getPlatform?.();
29
+ if (platform === 'android')
30
+ return 'android';
31
+ if (platform === 'ios')
32
+ return 'ios';
33
+ }
34
+ // 移动端 UA 检测
35
+ if (/android/.test(ua))
36
+ return 'h5';
37
+ if (/iphone|ipad|ipod/.test(ua))
38
+ return 'h5';
39
+ // 移动端特征检测
40
+ if ('ontouchstart' in window && navigator.maxTouchPoints > 0 && window.innerWidth < 768) {
41
+ return 'h5';
42
+ }
43
+ return 'web';
44
+ }
45
+ /**
46
+ * 判断是否为移动端
47
+ */
48
+ export function isMobile() {
49
+ const platform = detectPlatform();
50
+ return platform === 'h5' || platform === 'android' || platform === 'ios';
51
+ }
52
+ /**
53
+ * 判断是否为 Capacitor App
54
+ */
55
+ export function isNativeApp() {
56
+ const platform = detectPlatform();
57
+ return platform === 'android' || platform === 'ios';
58
+ }
59
+ /**
60
+ * Svelte 5 Runes 响应式平台状态
61
+ *
62
+ * @returns 包含当前平台、是否移动端和是否原生应用的响应式对象
63
+ *
64
+ * @example
65
+ * ```svelte
66
+ * <script>
67
+ * import { usePlatform } from '@hai/ui'
68
+ * const platform = usePlatform()
69
+ * </script>
70
+ *
71
+ * {#if platform.isMobile}
72
+ * <BottomNav />
73
+ * {:else}
74
+ * <Sidebar />
75
+ * {/if}
76
+ * ```
77
+ */
78
+ export function usePlatform() {
79
+ const current = $state(detectPlatform());
80
+ const mobile = $derived(current === 'h5' || current === 'android' || current === 'ios');
81
+ const app = $derived(current === 'android' || current === 'ios');
82
+ return {
83
+ get current() { return current; },
84
+ get isMobile() { return mobile; },
85
+ get isApp() { return app; },
86
+ };
87
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @h-ai/ui — 样式工具
3
+ *
4
+ * CSS 类名处理工具
5
+ * @module utils
6
+ */
7
+ import type { Size, Variant } from './types.js';
8
+ /**
9
+ * 合并类名(支持 Tailwind 类冲突消解)
10
+ *
11
+ * @param classes - 类名列表
12
+ * @returns 合并后的类名字符串
13
+ */
14
+ export declare function cn(...classes: (string | boolean | undefined | null)[]): string;
15
+ /**
16
+ * 获取变体类名
17
+ */
18
+ export declare function getVariantClass(variant: Variant, prefix?: string): string;
19
+ /**
20
+ * 获取尺寸类名
21
+ */
22
+ export declare function getSizeClass(size: Size, prefix?: string): string;
23
+ /**
24
+ * 输入框尺寸类名
25
+ */
26
+ export declare function getInputSizeClass(size: Size): string;
27
+ /**
28
+ * 徽章变体类名
29
+ */
30
+ export declare function getBadgeVariantClass(variant: Variant): string;
31
+ /**
32
+ * 徽章尺寸类名
33
+ */
34
+ export declare function getBadgeSizeClass(size: Size): string;
35
+ /**
36
+ * 警告框变体类名
37
+ */
38
+ export declare function getAlertVariantClass(variant: Variant): string;
39
+ /**
40
+ * 进度条变体类名
41
+ */
42
+ export declare function getProgressVariantClass(variant: Variant): string;
43
+ /**
44
+ * 生成唯一 ID
45
+ */
46
+ export declare function generateId(prefix?: string): string;
package/dist/utils.js ADDED
@@ -0,0 +1,100 @@
1
+ /**
2
+ * @h-ai/ui — 样式工具
3
+ *
4
+ * CSS 类名处理工具
5
+ * @module utils
6
+ */
7
+ import { twMerge } from 'tailwind-merge';
8
+ /**
9
+ * 合并类名(支持 Tailwind 类冲突消解)
10
+ *
11
+ * @param classes - 类名列表
12
+ * @returns 合并后的类名字符串
13
+ */
14
+ export function cn(...classes) {
15
+ return twMerge(classes.filter(Boolean).join(' '));
16
+ }
17
+ /**
18
+ * 获取变体类名
19
+ */
20
+ export function getVariantClass(variant, prefix = 'btn') {
21
+ const map = {
22
+ default: `${prefix}-neutral`,
23
+ primary: `${prefix}-primary`,
24
+ secondary: `${prefix}-secondary`,
25
+ success: `${prefix}-success`,
26
+ warning: `${prefix}-warning`,
27
+ error: `${prefix}-error`,
28
+ info: `${prefix}-info`,
29
+ ghost: `${prefix}-ghost`,
30
+ link: `${prefix}-link`,
31
+ outline: `${prefix}-outline`,
32
+ };
33
+ return map[variant] ?? map.default;
34
+ }
35
+ /**
36
+ * 获取尺寸类名
37
+ */
38
+ export function getSizeClass(size, prefix = 'btn') {
39
+ if (size === 'md')
40
+ return '';
41
+ return `${prefix}-${size}`;
42
+ }
43
+ /**
44
+ * 输入框尺寸类名
45
+ */
46
+ export function getInputSizeClass(size) {
47
+ const map = {
48
+ 'xs': 'input-xs',
49
+ 'sm': 'input-sm',
50
+ 'md': '',
51
+ 'lg': 'input-lg',
52
+ 'xl': 'input-xl',
53
+ '2xl': 'input-xl',
54
+ '3xl': 'input-xl',
55
+ '4xl': 'input-xl',
56
+ };
57
+ return map[size] ?? '';
58
+ }
59
+ /**
60
+ * 徽章变体类名
61
+ */
62
+ export function getBadgeVariantClass(variant) {
63
+ return getVariantClass(variant, 'badge');
64
+ }
65
+ /**
66
+ * 徽章尺寸类名
67
+ */
68
+ export function getBadgeSizeClass(size) {
69
+ return getSizeClass(size, 'badge');
70
+ }
71
+ /**
72
+ * 警告框变体类名
73
+ */
74
+ export function getAlertVariantClass(variant) {
75
+ const map = {
76
+ default: 'alert',
77
+ primary: 'alert-primary',
78
+ secondary: 'alert-secondary',
79
+ success: 'alert-success',
80
+ warning: 'alert-warning',
81
+ error: 'alert-error',
82
+ info: 'alert-info',
83
+ ghost: 'alert',
84
+ link: 'alert',
85
+ outline: 'alert',
86
+ };
87
+ return map[variant] ?? map.default;
88
+ }
89
+ /**
90
+ * 进度条变体类名
91
+ */
92
+ export function getProgressVariantClass(variant) {
93
+ return getVariantClass(variant, 'progress');
94
+ }
95
+ /**
96
+ * 生成唯一 ID
97
+ */
98
+ export function generateId(prefix = 'hai') {
99
+ return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;
100
+ }
package/package.json ADDED
@@ -0,0 +1,69 @@
1
+ {
2
+ "name": "@h-ai/ui",
3
+ "type": "module",
4
+ "version": "0.1.0-alpha5",
5
+ "description": "Hai Framework UI component library for Svelte 5 Runes.",
6
+ "license": "Apache-2.0",
7
+ "svelte": "./dist/index.js",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "svelte": "./dist/index.js",
12
+ "import": "./dist/index.js"
13
+ },
14
+ "./auto-import": {
15
+ "types": "./auto-import.d.ts",
16
+ "import": "./auto-import.js"
17
+ },
18
+ "./components/*": {
19
+ "types": "./dist/components/*.d.ts",
20
+ "svelte": "./dist/components/*.js",
21
+ "import": "./dist/components/*.js"
22
+ },
23
+ "./styles/*": "./dist/styles/*"
24
+ },
25
+ "main": "./dist/index.js",
26
+ "types": "./dist/index.d.ts",
27
+ "files": [
28
+ "auto-import.d.ts",
29
+ "auto-import.js",
30
+ "dist"
31
+ ],
32
+ "publishConfig": {
33
+ "access": "public"
34
+ },
35
+ "peerDependencies": {
36
+ "svelte": "^5.53.5"
37
+ },
38
+ "dependencies": {
39
+ "@internationalized/date": "^3.8.0",
40
+ "bits-ui": "^2.8.0",
41
+ "highlight.js": "^11.11.0",
42
+ "marked": "^17.0.4",
43
+ "tailwind-merge": "^3.5.0",
44
+ "@h-ai/core": "0.1.0-alpha5"
45
+ },
46
+ "devDependencies": {
47
+ "@sveltejs/package": "^2.3.7",
48
+ "@sveltejs/vite-plugin-svelte": "^7.0.0",
49
+ "@types/node": "^25.1.0",
50
+ "jsdom": "^28.1.0",
51
+ "rimraf": "^6.0.1",
52
+ "svelte": "^5.53.5",
53
+ "svelte-check": "^4.1.2",
54
+ "typescript": "^5.7.2",
55
+ "vite": "^8.0.0",
56
+ "vitest": "^4.0.18"
57
+ },
58
+ "scripts": {
59
+ "build": "svelte-package -i src/lib",
60
+ "dev": "svelte-package -i src/lib --watch",
61
+ "check": "svelte-check --tsconfig ./tsconfig.json",
62
+ "test": "vitest run",
63
+ "test:watch": "vitest",
64
+ "typecheck": "tsc --noEmit",
65
+ "lint": "eslint .",
66
+ "lint:fix": "eslint . --fix",
67
+ "clean": "rimraf dist .turbo"
68
+ }
69
+ }