@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.
- package/LICENSE +202 -0
- package/README.md +488 -0
- package/auto-import.d.ts +96 -0
- package/auto-import.js +259 -0
- package/dist/components/compounds/Accordion.svelte +142 -0
- package/dist/components/compounds/Accordion.svelte.d.ts +25 -0
- package/dist/components/compounds/ActionSheet.svelte +116 -0
- package/dist/components/compounds/ActionSheet.svelte.d.ts +22 -0
- package/dist/components/compounds/Alert.svelte +67 -0
- package/dist/components/compounds/Alert.svelte.d.ts +8 -0
- package/dist/components/compounds/AppBar.svelte +77 -0
- package/dist/components/compounds/AppBar.svelte.d.ts +20 -0
- package/dist/components/compounds/BottomNav.svelte +75 -0
- package/dist/components/compounds/BottomNav.svelte.d.ts +18 -0
- package/dist/components/compounds/Breadcrumb.svelte +49 -0
- package/dist/components/compounds/Breadcrumb.svelte.d.ts +4 -0
- package/dist/components/compounds/Calendar.svelte +116 -0
- package/dist/components/compounds/Calendar.svelte.d.ts +47 -0
- package/dist/components/compounds/Card.svelte +77 -0
- package/dist/components/compounds/Card.svelte.d.ts +8 -0
- package/dist/components/compounds/Combobox.svelte +327 -0
- package/dist/components/compounds/Combobox.svelte.d.ts +69 -0
- package/dist/components/compounds/Confirm.svelte +90 -0
- package/dist/components/compounds/Confirm.svelte.d.ts +4 -0
- package/dist/components/compounds/DataTable.svelte +133 -0
- package/dist/components/compounds/DataTable.svelte.d.ts +69 -0
- package/dist/components/compounds/DatePicker.svelte +135 -0
- package/dist/components/compounds/DatePicker.svelte.d.ts +46 -0
- package/dist/components/compounds/Drawer.svelte +113 -0
- package/dist/components/compounds/Drawer.svelte.d.ts +4 -0
- package/dist/components/compounds/Dropdown.svelte +91 -0
- package/dist/components/compounds/Dropdown.svelte.d.ts +8 -0
- package/dist/components/compounds/Empty.svelte +83 -0
- package/dist/components/compounds/Empty.svelte.d.ts +4 -0
- package/dist/components/compounds/Form.svelte +96 -0
- package/dist/components/compounds/Form.svelte.d.ts +7 -0
- package/dist/components/compounds/FormField.svelte +56 -0
- package/dist/components/compounds/FormField.svelte.d.ts +4 -0
- package/dist/components/compounds/InfiniteScroll.svelte +82 -0
- package/dist/components/compounds/InfiniteScroll.svelte.d.ts +22 -0
- package/dist/components/compounds/Modal.svelte +123 -0
- package/dist/components/compounds/Modal.svelte.d.ts +8 -0
- package/dist/components/compounds/PageHeader.svelte +44 -0
- package/dist/components/compounds/PageHeader.svelte.d.ts +28 -0
- package/dist/components/compounds/Pagination.svelte +157 -0
- package/dist/components/compounds/Pagination.svelte.d.ts +4 -0
- package/dist/components/compounds/Popover.svelte +137 -0
- package/dist/components/compounds/Popover.svelte.d.ts +4 -0
- package/dist/components/compounds/PullRefresh.svelte +98 -0
- package/dist/components/compounds/PullRefresh.svelte.d.ts +16 -0
- package/dist/components/compounds/Result.svelte +84 -0
- package/dist/components/compounds/Result.svelte.d.ts +4 -0
- package/dist/components/compounds/SafeArea.svelte +37 -0
- package/dist/components/compounds/SafeArea.svelte.d.ts +12 -0
- package/dist/components/compounds/Skeleton.svelte +75 -0
- package/dist/components/compounds/Skeleton.svelte.d.ts +8 -0
- package/dist/components/compounds/Steps.svelte +111 -0
- package/dist/components/compounds/Steps.svelte.d.ts +4 -0
- package/dist/components/compounds/SwipeCell.svelte +115 -0
- package/dist/components/compounds/SwipeCell.svelte.d.ts +19 -0
- package/dist/components/compounds/Tabs.svelte +79 -0
- package/dist/components/compounds/Tabs.svelte.d.ts +8 -0
- package/dist/components/compounds/TagInput.svelte +108 -0
- package/dist/components/compounds/TagInput.svelte.d.ts +4 -0
- package/dist/components/compounds/Timeline.svelte +167 -0
- package/dist/components/compounds/Timeline.svelte.d.ts +25 -0
- package/dist/components/compounds/ToastContainer.svelte +59 -0
- package/dist/components/compounds/ToastContainer.svelte.d.ts +3 -0
- package/dist/components/compounds/Tooltip.svelte +41 -0
- package/dist/components/compounds/Tooltip.svelte.d.ts +4 -0
- package/dist/components/compounds/accordion-types.d.ts +16 -0
- package/dist/components/compounds/accordion-types.js +5 -0
- package/dist/components/compounds/action-sheet-types.d.ts +14 -0
- package/dist/components/compounds/action-sheet-types.js +5 -0
- package/dist/components/compounds/bottom-nav-types.d.ts +17 -0
- package/dist/components/compounds/bottom-nav-types.js +5 -0
- package/dist/components/compounds/index.d.ts +44 -0
- package/dist/components/compounds/index.js +54 -0
- package/dist/components/compounds/swipe-cell-types.d.ts +14 -0
- package/dist/components/compounds/swipe-cell-types.js +5 -0
- package/dist/components/compounds/timeline-types.d.ts +20 -0
- package/dist/components/compounds/timeline-types.js +5 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.js +12 -0
- package/dist/components/primitives/Avatar.svelte +102 -0
- package/dist/components/primitives/Avatar.svelte.d.ts +8 -0
- package/dist/components/primitives/Badge.svelte +33 -0
- package/dist/components/primitives/Badge.svelte.d.ts +8 -0
- package/dist/components/primitives/BareButton.svelte +45 -0
- package/dist/components/primitives/BareButton.svelte.d.ts +4 -0
- package/dist/components/primitives/BareInput.svelte +101 -0
- package/dist/components/primitives/BareInput.svelte.d.ts +4 -0
- package/dist/components/primitives/Button.svelte +60 -0
- package/dist/components/primitives/Button.svelte.d.ts +8 -0
- package/dist/components/primitives/Checkbox.svelte +58 -0
- package/dist/components/primitives/Checkbox.svelte.d.ts +4 -0
- package/dist/components/primitives/IconButton.svelte +105 -0
- package/dist/components/primitives/IconButton.svelte.d.ts +4 -0
- package/dist/components/primitives/Input.svelte +130 -0
- package/dist/components/primitives/Input.svelte.d.ts +8 -0
- package/dist/components/primitives/Progress.svelte +58 -0
- package/dist/components/primitives/Progress.svelte.d.ts +4 -0
- package/dist/components/primitives/Radio.svelte +60 -0
- package/dist/components/primitives/Radio.svelte.d.ts +25 -0
- package/dist/components/primitives/Range.svelte +117 -0
- package/dist/components/primitives/Range.svelte.d.ts +27 -0
- package/dist/components/primitives/Rating.svelte +148 -0
- package/dist/components/primitives/Rating.svelte.d.ts +27 -0
- package/dist/components/primitives/Select.svelte +95 -0
- package/dist/components/primitives/Select.svelte.d.ts +25 -0
- package/dist/components/primitives/Spinner.svelte +54 -0
- package/dist/components/primitives/Spinner.svelte.d.ts +4 -0
- package/dist/components/primitives/Switch.svelte +53 -0
- package/dist/components/primitives/Switch.svelte.d.ts +4 -0
- package/dist/components/primitives/Tag.svelte +64 -0
- package/dist/components/primitives/Tag.svelte.d.ts +4 -0
- package/dist/components/primitives/Textarea.svelte +92 -0
- package/dist/components/primitives/Textarea.svelte.d.ts +4 -0
- package/dist/components/primitives/ToggleCheckbox.svelte +36 -0
- package/dist/components/primitives/ToggleCheckbox.svelte.d.ts +4 -0
- package/dist/components/primitives/ToggleInput.svelte +36 -0
- package/dist/components/primitives/ToggleInput.svelte.d.ts +4 -0
- package/dist/components/primitives/ToggleRadio.svelte +36 -0
- package/dist/components/primitives/ToggleRadio.svelte.d.ts +4 -0
- package/dist/components/primitives/index.d.ts +26 -0
- package/dist/components/primitives/index.js +30 -0
- package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte +387 -0
- package/dist/components/scenes/ai/AiDocumentDownloadMenu.svelte.d.ts +38 -0
- package/dist/components/scenes/ai/AiDocumentEditor.svelte +2259 -0
- package/dist/components/scenes/ai/AiDocumentEditor.svelte.d.ts +4 -0
- package/dist/components/scenes/ai/MarkdownRenderer.svelte +460 -0
- package/dist/components/scenes/ai/MarkdownRenderer.svelte.d.ts +4 -0
- package/dist/components/scenes/ai/document-download.d.ts +40 -0
- package/dist/components/scenes/ai/document-download.js +300 -0
- package/dist/components/scenes/ai/document-parse.d.ts +28 -0
- package/dist/components/scenes/ai/document-parse.js +243 -0
- package/dist/components/scenes/ai/document-types.d.ts +164 -0
- package/dist/components/scenes/ai/document-types.js +1 -0
- package/dist/components/scenes/ai/index.d.ts +17 -0
- package/dist/components/scenes/ai/index.js +13 -0
- package/dist/components/scenes/ai/markdown-parse.d.ts +32 -0
- package/dist/components/scenes/ai/markdown-parse.js +161 -0
- package/dist/components/scenes/app/FeedbackModal.svelte +160 -0
- package/dist/components/scenes/app/FeedbackModal.svelte.d.ts +47 -0
- package/dist/components/scenes/app/LanguageSwitch.svelte +136 -0
- package/dist/components/scenes/app/LanguageSwitch.svelte.d.ts +50 -0
- package/dist/components/scenes/app/SettingsModal.svelte +174 -0
- package/dist/components/scenes/app/SettingsModal.svelte.d.ts +31 -0
- package/dist/components/scenes/app/ThemeSelector.svelte +176 -0
- package/dist/components/scenes/app/ThemeSelector.svelte.d.ts +31 -0
- package/dist/components/scenes/app/ThemeToggle.svelte +76 -0
- package/dist/components/scenes/app/ThemeToggle.svelte.d.ts +29 -0
- package/dist/components/scenes/app/index.d.ts +11 -0
- package/dist/components/scenes/app/index.js +11 -0
- package/dist/components/scenes/crud/CrudDeleteConfirm.svelte +39 -0
- package/dist/components/scenes/crud/CrudDeleteConfirm.svelte.d.ts +18 -0
- package/dist/components/scenes/crud/CrudDetailDrawer.svelte +155 -0
- package/dist/components/scenes/crud/CrudDetailDrawer.svelte.d.ts +38 -0
- package/dist/components/scenes/crud/CrudEditDrawer.svelte +222 -0
- package/dist/components/scenes/crud/CrudEditDrawer.svelte.d.ts +48 -0
- package/dist/components/scenes/crud/CrudFilterBar.svelte +96 -0
- package/dist/components/scenes/crud/CrudFilterBar.svelte.d.ts +31 -0
- package/dist/components/scenes/crud/CrudPage.svelte +499 -0
- package/dist/components/scenes/crud/CrudPage.svelte.d.ts +114 -0
- package/dist/components/scenes/crud/crud-types.d.ts +135 -0
- package/dist/components/scenes/crud/crud-types.js +7 -0
- package/dist/components/scenes/crud/index.d.ts +12 -0
- package/dist/components/scenes/crud/index.js +11 -0
- package/dist/components/scenes/crypto/EncryptedInput.svelte +156 -0
- package/dist/components/scenes/crypto/EncryptedInput.svelte.d.ts +32 -0
- package/dist/components/scenes/crypto/HashDisplay.svelte +97 -0
- package/dist/components/scenes/crypto/HashDisplay.svelte.d.ts +4 -0
- package/dist/components/scenes/crypto/SignatureDisplay.svelte +161 -0
- package/dist/components/scenes/crypto/SignatureDisplay.svelte.d.ts +4 -0
- package/dist/components/scenes/crypto/index.d.ts +9 -0
- package/dist/components/scenes/crypto/index.js +11 -0
- package/dist/components/scenes/iam/ChangePasswordForm.svelte +134 -0
- package/dist/components/scenes/iam/ChangePasswordForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/ForgotPasswordForm.svelte +147 -0
- package/dist/components/scenes/iam/ForgotPasswordForm.svelte.d.ts +4 -0
- package/dist/components/scenes/iam/LoginForm.svelte +191 -0
- package/dist/components/scenes/iam/LoginForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/PasswordInput.svelte +203 -0
- package/dist/components/scenes/iam/PasswordInput.svelte.d.ts +49 -0
- package/dist/components/scenes/iam/PermGuard.svelte +69 -0
- package/dist/components/scenes/iam/PermGuard.svelte.d.ts +16 -0
- package/dist/components/scenes/iam/RegisterForm.svelte +269 -0
- package/dist/components/scenes/iam/RegisterForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/ResetPasswordForm.svelte +153 -0
- package/dist/components/scenes/iam/ResetPasswordForm.svelte.d.ts +8 -0
- package/dist/components/scenes/iam/UserProfile.svelte +251 -0
- package/dist/components/scenes/iam/UserProfile.svelte.d.ts +4 -0
- package/dist/components/scenes/iam/index.d.ts +16 -0
- package/dist/components/scenes/iam/index.js +18 -0
- package/dist/components/scenes/iam/password-utils.d.ts +15 -0
- package/dist/components/scenes/iam/password-utils.js +19 -0
- package/dist/components/scenes/iam/permission-context.svelte.d.ts +90 -0
- package/dist/components/scenes/iam/permission-context.svelte.js +114 -0
- package/dist/components/scenes/index.d.ts +13 -0
- package/dist/components/scenes/index.js +20 -0
- package/dist/components/scenes/storage/AvatarUpload.svelte +218 -0
- package/dist/components/scenes/storage/AvatarUpload.svelte.d.ts +4 -0
- package/dist/components/scenes/storage/FileList.svelte +260 -0
- package/dist/components/scenes/storage/FileList.svelte.d.ts +4 -0
- package/dist/components/scenes/storage/FileUpload.svelte +400 -0
- package/dist/components/scenes/storage/FileUpload.svelte.d.ts +7 -0
- package/dist/components/scenes/storage/ImageUpload.svelte +285 -0
- package/dist/components/scenes/storage/ImageUpload.svelte.d.ts +4 -0
- package/dist/components/scenes/storage/index.d.ts +10 -0
- package/dist/components/scenes/storage/index.js +12 -0
- package/dist/components/scenes/types.d.ts +583 -0
- package/dist/components/scenes/types.js +7 -0
- package/dist/i18n.svelte.d.ts +44 -0
- package/dist/i18n.svelte.js +108 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +19 -0
- package/dist/messages/en-US.json +242 -0
- package/dist/messages/zh-CN.json +242 -0
- package/dist/messages.d.ts +29 -0
- package/dist/messages.js +42 -0
- package/dist/styles/design-tokens.css +58 -0
- package/dist/styles/global.css +218 -0
- package/dist/styles/mobile.css +105 -0
- package/dist/theme-config.d.ts +92 -0
- package/dist/theme-config.js +122 -0
- package/dist/toast.svelte.d.ts +45 -0
- package/dist/toast.svelte.js +77 -0
- package/dist/types.d.ts +944 -0
- package/dist/types.js +7 -0
- package/dist/utils/platform.svelte.d.ts +54 -0
- package/dist/utils/platform.svelte.js +87 -0
- package/dist/utils.d.ts +46 -0
- package/dist/utils.js +100 -0
- package/package.json +69 -0
package/dist/types.js
ADDED
|
@@ -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
|
+
}
|
package/dist/utils.d.ts
ADDED
|
@@ -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
|
+
}
|