@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
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — Storage 场景组件导出
|
|
3
|
+
*
|
|
4
|
+
* 存储相关的场景化组件
|
|
5
|
+
* @module index
|
|
6
|
+
*/
|
|
7
|
+
export { default as AvatarUpload } from './AvatarUpload.svelte';
|
|
8
|
+
export { default as FileList } from './FileList.svelte';
|
|
9
|
+
export { default as FileUpload } from './FileUpload.svelte';
|
|
10
|
+
export { default as ImageUpload } from './ImageUpload.svelte';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — Storage 场景组件导出
|
|
3
|
+
*
|
|
4
|
+
* 存储相关的场景化组件
|
|
5
|
+
* @module index
|
|
6
|
+
*/
|
|
7
|
+
export { default as AvatarUpload } from './AvatarUpload.svelte';
|
|
8
|
+
export { default as FileList } from './FileList.svelte';
|
|
9
|
+
// 文件上传
|
|
10
|
+
export { default as FileUpload } from './FileUpload.svelte';
|
|
11
|
+
// 图片上传
|
|
12
|
+
export { default as ImageUpload } from './ImageUpload.svelte';
|
|
@@ -0,0 +1,583 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — 场景组件类型定义
|
|
3
|
+
*
|
|
4
|
+
* 场景化组件的 Props 类型
|
|
5
|
+
* @module types
|
|
6
|
+
*/
|
|
7
|
+
import type { Snippet } from 'svelte';
|
|
8
|
+
import type { Size } from '../../types.js';
|
|
9
|
+
/**
|
|
10
|
+
* 密码输入框属性
|
|
11
|
+
*/
|
|
12
|
+
export interface PasswordInputProps {
|
|
13
|
+
/** 元素 ID */
|
|
14
|
+
id?: string;
|
|
15
|
+
/** 值 */
|
|
16
|
+
value?: string;
|
|
17
|
+
/** 占位符 */
|
|
18
|
+
placeholder?: string;
|
|
19
|
+
/** 尺寸 */
|
|
20
|
+
size?: Size;
|
|
21
|
+
/** 是否禁用 */
|
|
22
|
+
disabled?: boolean;
|
|
23
|
+
/** 是否只读 */
|
|
24
|
+
readonly?: boolean;
|
|
25
|
+
/** 是否必填 */
|
|
26
|
+
required?: boolean;
|
|
27
|
+
/** 错误消息 */
|
|
28
|
+
error?: string;
|
|
29
|
+
/** 是否显示切换按钮 */
|
|
30
|
+
showToggle?: boolean;
|
|
31
|
+
/** 是否显示密码强度 */
|
|
32
|
+
showStrength?: boolean;
|
|
33
|
+
/** 最小长度 */
|
|
34
|
+
minLength?: number;
|
|
35
|
+
/** 自定义类名 */
|
|
36
|
+
class?: string;
|
|
37
|
+
/** 输入事件 */
|
|
38
|
+
oninput?: (e: Event & {
|
|
39
|
+
currentTarget: HTMLInputElement;
|
|
40
|
+
}) => void;
|
|
41
|
+
/** 变化事件 */
|
|
42
|
+
onchange?: (e: Event & {
|
|
43
|
+
currentTarget: HTMLInputElement;
|
|
44
|
+
}) => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 协议展示配置
|
|
48
|
+
*/
|
|
49
|
+
export interface AgreementDisplay {
|
|
50
|
+
/** 用户协议 URL */
|
|
51
|
+
userAgreementUrl?: string;
|
|
52
|
+
/** 隐私协议 URL */
|
|
53
|
+
privacyPolicyUrl?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* 登录表单数据
|
|
57
|
+
*/
|
|
58
|
+
export interface LoginFormData {
|
|
59
|
+
username: string;
|
|
60
|
+
password: string;
|
|
61
|
+
rememberMe: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 登录表单属性
|
|
65
|
+
*/
|
|
66
|
+
export interface LoginFormProps {
|
|
67
|
+
/** 加载状态 */
|
|
68
|
+
loading?: boolean;
|
|
69
|
+
/** 禁用状态 */
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
/** 是否显示标题 */
|
|
72
|
+
showTitle?: boolean;
|
|
73
|
+
/** 是否显示记住我 */
|
|
74
|
+
showRememberMe?: boolean;
|
|
75
|
+
/** 是否显示忘记密码 */
|
|
76
|
+
showForgotPassword?: boolean;
|
|
77
|
+
/** 忘记密码链接 */
|
|
78
|
+
forgotPasswordUrl?: string;
|
|
79
|
+
/** 是否显示注册链接 */
|
|
80
|
+
showRegisterLink?: boolean;
|
|
81
|
+
/** 注册页面链接 */
|
|
82
|
+
registerUrl?: string;
|
|
83
|
+
/** 协议展示配置 */
|
|
84
|
+
agreements?: AgreementDisplay;
|
|
85
|
+
/** 提交按钮文本 */
|
|
86
|
+
submitText?: string;
|
|
87
|
+
/** 自定义类名 */
|
|
88
|
+
class?: string;
|
|
89
|
+
/** 错误信息 */
|
|
90
|
+
errors?: Record<string, string>;
|
|
91
|
+
/** 提交事件 */
|
|
92
|
+
onsubmit?: (data: LoginFormData) => void | Promise<void>;
|
|
93
|
+
/** 忘记密码事件 */
|
|
94
|
+
onforgotpassword?: () => void;
|
|
95
|
+
/** 头部插槽 */
|
|
96
|
+
header?: Snippet;
|
|
97
|
+
/** 底部插槽 */
|
|
98
|
+
footer?: Snippet;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* 注册表单字段
|
|
102
|
+
*/
|
|
103
|
+
export type RegisterField = 'username' | 'email' | 'phone' | 'password' | 'confirmPassword' | 'nickname';
|
|
104
|
+
/**
|
|
105
|
+
* 注册表单数据
|
|
106
|
+
*/
|
|
107
|
+
export interface RegisterFormData {
|
|
108
|
+
username?: string;
|
|
109
|
+
email?: string;
|
|
110
|
+
phone?: string;
|
|
111
|
+
password: string;
|
|
112
|
+
confirmPassword?: string;
|
|
113
|
+
nickname?: string;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 注册表单属性
|
|
117
|
+
*/
|
|
118
|
+
export interface RegisterFormProps {
|
|
119
|
+
/** 加载状态 */
|
|
120
|
+
loading?: boolean;
|
|
121
|
+
/** 禁用状态 */
|
|
122
|
+
disabled?: boolean;
|
|
123
|
+
/** 是否显示标题 */
|
|
124
|
+
showTitle?: boolean;
|
|
125
|
+
/** 是否显示密码强度 */
|
|
126
|
+
showPasswordStrength?: boolean;
|
|
127
|
+
/** 是否需要确认密码 */
|
|
128
|
+
requireConfirmPassword?: boolean;
|
|
129
|
+
/** 最小密码长度 */
|
|
130
|
+
minPasswordLength?: number;
|
|
131
|
+
/** 显示的字段 */
|
|
132
|
+
fields?: RegisterField[];
|
|
133
|
+
/** 是否显示登录链接 */
|
|
134
|
+
showLoginLink?: boolean;
|
|
135
|
+
/** 登录页面链接 */
|
|
136
|
+
loginUrl?: string;
|
|
137
|
+
/** 协议展示配置 */
|
|
138
|
+
agreements?: AgreementDisplay;
|
|
139
|
+
/** 提交按钮文本 */
|
|
140
|
+
submitText?: string;
|
|
141
|
+
/** 自定义类名 */
|
|
142
|
+
class?: string;
|
|
143
|
+
/** 错误信息 */
|
|
144
|
+
errors?: Record<string, string>;
|
|
145
|
+
/** 提交事件 */
|
|
146
|
+
onsubmit?: (data: RegisterFormData) => void | Promise<void>;
|
|
147
|
+
/** 头部插槽 */
|
|
148
|
+
header?: Snippet;
|
|
149
|
+
/** 底部插槽 */
|
|
150
|
+
footer?: Snippet;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* 修改密码表单数据
|
|
154
|
+
*/
|
|
155
|
+
export interface ChangePasswordFormData {
|
|
156
|
+
oldPassword?: string;
|
|
157
|
+
newPassword: string;
|
|
158
|
+
confirmPassword: string;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* 修改密码表单属性
|
|
162
|
+
*/
|
|
163
|
+
export interface ChangePasswordFormProps {
|
|
164
|
+
/** 加载状态 */
|
|
165
|
+
loading?: boolean;
|
|
166
|
+
/** 禁用状态 */
|
|
167
|
+
disabled?: boolean;
|
|
168
|
+
/** 是否需要旧密码 */
|
|
169
|
+
requireOldPassword?: boolean;
|
|
170
|
+
/** 是否显示密码强度 */
|
|
171
|
+
showPasswordStrength?: boolean;
|
|
172
|
+
/** 最小密码长度 */
|
|
173
|
+
minPasswordLength?: number;
|
|
174
|
+
/** 提交按钮文本 */
|
|
175
|
+
submitText?: string;
|
|
176
|
+
/** 自定义类名 */
|
|
177
|
+
class?: string;
|
|
178
|
+
/** 错误信息 */
|
|
179
|
+
errors?: Record<string, string>;
|
|
180
|
+
/** 提交事件 */
|
|
181
|
+
onsubmit?: (data: ChangePasswordFormData) => void | Promise<void>;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* 找回密码表单数据
|
|
185
|
+
*/
|
|
186
|
+
export interface ForgotPasswordFormData {
|
|
187
|
+
email?: string;
|
|
188
|
+
phone?: string;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* 找回密码表单属性
|
|
192
|
+
*/
|
|
193
|
+
export interface ForgotPasswordFormProps {
|
|
194
|
+
/** 加载状态 */
|
|
195
|
+
loading?: boolean;
|
|
196
|
+
/** 禁用状态 */
|
|
197
|
+
disabled?: boolean;
|
|
198
|
+
/** 是否显示标题 */
|
|
199
|
+
showTitle?: boolean;
|
|
200
|
+
/** 是否显示描述 */
|
|
201
|
+
showDescription?: boolean;
|
|
202
|
+
/** 找回方式 */
|
|
203
|
+
mode?: 'email' | 'phone';
|
|
204
|
+
/** 是否显示返回登录链接 */
|
|
205
|
+
showBackLink?: boolean;
|
|
206
|
+
/** 登录页面链接 */
|
|
207
|
+
loginUrl?: string;
|
|
208
|
+
/** 提交按钮文本 */
|
|
209
|
+
submitText?: string;
|
|
210
|
+
/** 自定义类名 */
|
|
211
|
+
class?: string;
|
|
212
|
+
/** 错误信息 */
|
|
213
|
+
errors?: Record<string, string>;
|
|
214
|
+
/** 提交事件 */
|
|
215
|
+
onsubmit?: (data: ForgotPasswordFormData) => void | Promise<void>;
|
|
216
|
+
/** 头部插槽 */
|
|
217
|
+
header?: Snippet;
|
|
218
|
+
/** 底部插槽 */
|
|
219
|
+
footer?: Snippet;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* 重置密码表单数据
|
|
223
|
+
*/
|
|
224
|
+
export interface ResetPasswordFormData {
|
|
225
|
+
code?: string;
|
|
226
|
+
newPassword: string;
|
|
227
|
+
confirmPassword: string;
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* 重置密码表单属性
|
|
231
|
+
*/
|
|
232
|
+
export interface ResetPasswordFormProps {
|
|
233
|
+
/** 加载状态 */
|
|
234
|
+
loading?: boolean;
|
|
235
|
+
/** 禁用状态 */
|
|
236
|
+
disabled?: boolean;
|
|
237
|
+
/** 是否显示标题 */
|
|
238
|
+
showTitle?: boolean;
|
|
239
|
+
/** 是否显示描述 */
|
|
240
|
+
showDescription?: boolean;
|
|
241
|
+
/** 是否显示验证码 */
|
|
242
|
+
showCode?: boolean;
|
|
243
|
+
/** 是否显示密码强度 */
|
|
244
|
+
showPasswordStrength?: boolean;
|
|
245
|
+
/** 最小密码长度 */
|
|
246
|
+
minPasswordLength?: number;
|
|
247
|
+
/** 是否显示返回登录链接 */
|
|
248
|
+
showBackLink?: boolean;
|
|
249
|
+
/** 登录页面链接 */
|
|
250
|
+
loginUrl?: string;
|
|
251
|
+
/** 提交按钮文本 */
|
|
252
|
+
submitText?: string;
|
|
253
|
+
/** 自定义类名 */
|
|
254
|
+
class?: string;
|
|
255
|
+
/** 错误信息 */
|
|
256
|
+
errors?: Record<string, string>;
|
|
257
|
+
/** 提交事件 */
|
|
258
|
+
onsubmit?: (data: ResetPasswordFormData) => void | Promise<void>;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* 用户个人信息字段
|
|
262
|
+
*/
|
|
263
|
+
export type UserProfileField = 'avatar' | 'username' | 'email' | 'displayName' | 'nickname' | 'phone' | 'bio';
|
|
264
|
+
/**
|
|
265
|
+
* 用户信息
|
|
266
|
+
*/
|
|
267
|
+
export interface UserProfileData {
|
|
268
|
+
id?: string;
|
|
269
|
+
username?: string;
|
|
270
|
+
email?: string;
|
|
271
|
+
displayName?: string;
|
|
272
|
+
nickname?: string;
|
|
273
|
+
phone?: string;
|
|
274
|
+
avatar?: string;
|
|
275
|
+
avatarUrl?: string;
|
|
276
|
+
bio?: string;
|
|
277
|
+
}
|
|
278
|
+
export interface UserProfileSubmitData {
|
|
279
|
+
username: string;
|
|
280
|
+
email: string;
|
|
281
|
+
displayName: string;
|
|
282
|
+
phone: string;
|
|
283
|
+
bio: string;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* 用户个人信息属性
|
|
287
|
+
*/
|
|
288
|
+
export interface UserProfileProps {
|
|
289
|
+
/** 用户信息 */
|
|
290
|
+
user?: UserProfileData;
|
|
291
|
+
/** 是否可编辑 */
|
|
292
|
+
editable?: boolean;
|
|
293
|
+
alwaysEditable?: boolean;
|
|
294
|
+
/** 加载状态 */
|
|
295
|
+
loading?: boolean;
|
|
296
|
+
/** 显示的字段 */
|
|
297
|
+
fields?: UserProfileField[];
|
|
298
|
+
/** 头像上传地址 */
|
|
299
|
+
avatarUploadUrl?: string;
|
|
300
|
+
/** 自定义类名 */
|
|
301
|
+
class?: string;
|
|
302
|
+
/** 错误信息 */
|
|
303
|
+
errors?: Record<string, string>;
|
|
304
|
+
/** 保存事件 */
|
|
305
|
+
onsubmit?: (data: UserProfileSubmitData) => void | Promise<void>;
|
|
306
|
+
/** 头像变更事件 */
|
|
307
|
+
onavatarchange?: (file: File) => void | Promise<void>;
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* 上传状态
|
|
311
|
+
*/
|
|
312
|
+
export type UploadState = 'pending' | 'uploading' | 'success' | 'error';
|
|
313
|
+
/**
|
|
314
|
+
* 上传文件信息
|
|
315
|
+
*/
|
|
316
|
+
export interface UploadFile {
|
|
317
|
+
/** 唯一 ID */
|
|
318
|
+
id: string;
|
|
319
|
+
/** 原始文件 */
|
|
320
|
+
file: File;
|
|
321
|
+
/** 文件名 */
|
|
322
|
+
name: string;
|
|
323
|
+
/** 文件大小 */
|
|
324
|
+
size: number;
|
|
325
|
+
/** 文件类型 */
|
|
326
|
+
type: string;
|
|
327
|
+
/** 上传状态 */
|
|
328
|
+
state: UploadState;
|
|
329
|
+
/** 上传进度 (0-100) */
|
|
330
|
+
progress: number;
|
|
331
|
+
/** 错误信息 */
|
|
332
|
+
error?: string;
|
|
333
|
+
/** 上传响应 */
|
|
334
|
+
response?: unknown;
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* 文件上传属性
|
|
338
|
+
*/
|
|
339
|
+
export interface FileUploadProps {
|
|
340
|
+
/** 接受的文件类型 */
|
|
341
|
+
accept?: string;
|
|
342
|
+
/** 最大文件大小 (bytes) */
|
|
343
|
+
maxSize?: number;
|
|
344
|
+
/** 最大文件数量 */
|
|
345
|
+
maxFiles?: number;
|
|
346
|
+
/** 是否多选 */
|
|
347
|
+
multiple?: boolean;
|
|
348
|
+
/** 是否禁用 */
|
|
349
|
+
disabled?: boolean;
|
|
350
|
+
/** 上传地址 */
|
|
351
|
+
uploadUrl?: string;
|
|
352
|
+
/** 签名 URL 地址 */
|
|
353
|
+
presignUrl?: string;
|
|
354
|
+
/** 请求头 */
|
|
355
|
+
headers?: Record<string, string>;
|
|
356
|
+
/** 是否自动上传 */
|
|
357
|
+
autoUpload?: boolean;
|
|
358
|
+
/** 是否显示文件列表 */
|
|
359
|
+
showList?: boolean;
|
|
360
|
+
/** 是否支持拖拽 */
|
|
361
|
+
dragDrop?: boolean;
|
|
362
|
+
/** 自定义类名 */
|
|
363
|
+
class?: string;
|
|
364
|
+
/** 文件变化事件 */
|
|
365
|
+
onchange?: (files: UploadFile[]) => void;
|
|
366
|
+
/** 上传成功事件 */
|
|
367
|
+
onupload?: (file: UploadFile) => void;
|
|
368
|
+
/** 上传失败事件 */
|
|
369
|
+
onerror?: (error: string) => void;
|
|
370
|
+
/** 移除文件事件 */
|
|
371
|
+
onremove?: (file: UploadFile) => void;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* 文件项
|
|
375
|
+
*/
|
|
376
|
+
export interface FileItem {
|
|
377
|
+
/** 唯一 ID */
|
|
378
|
+
id: string;
|
|
379
|
+
/** 文件名 */
|
|
380
|
+
name: string;
|
|
381
|
+
/** 文件大小 */
|
|
382
|
+
size: number;
|
|
383
|
+
/** 文件类型 */
|
|
384
|
+
type: string;
|
|
385
|
+
/** 文件 URL */
|
|
386
|
+
url?: string;
|
|
387
|
+
/** 缩略图 URL */
|
|
388
|
+
thumbnailUrl?: string;
|
|
389
|
+
/** 更新时间 */
|
|
390
|
+
updatedAt?: Date | string;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* 文件列表属性
|
|
394
|
+
*/
|
|
395
|
+
export interface FileListProps {
|
|
396
|
+
/** 文件列表 */
|
|
397
|
+
files?: FileItem[];
|
|
398
|
+
/** 加载状态 */
|
|
399
|
+
loading?: boolean;
|
|
400
|
+
/** 是否显示预览 */
|
|
401
|
+
showPreview?: boolean;
|
|
402
|
+
/** 是否显示下载 */
|
|
403
|
+
showDownload?: boolean;
|
|
404
|
+
/** 是否显示删除 */
|
|
405
|
+
showDelete?: boolean;
|
|
406
|
+
/** 是否显示大小 */
|
|
407
|
+
showSize?: boolean;
|
|
408
|
+
/** 是否显示日期 */
|
|
409
|
+
showDate?: boolean;
|
|
410
|
+
/** 布局模式 */
|
|
411
|
+
layout?: 'list' | 'grid';
|
|
412
|
+
/** 自定义类名 */
|
|
413
|
+
class?: string;
|
|
414
|
+
/** 下载事件 */
|
|
415
|
+
ondownload?: (file: FileItem) => void;
|
|
416
|
+
/** 删除事件 */
|
|
417
|
+
ondelete?: (file: FileItem) => void;
|
|
418
|
+
/** 预览事件 */
|
|
419
|
+
onpreview?: (file: FileItem) => void;
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* 图片上传属性
|
|
423
|
+
*/
|
|
424
|
+
export interface ImageUploadProps {
|
|
425
|
+
/** 图片 URL */
|
|
426
|
+
value?: string;
|
|
427
|
+
/** 接受的文件类型 */
|
|
428
|
+
accept?: string;
|
|
429
|
+
/** 最大文件大小 (bytes) */
|
|
430
|
+
maxSize?: number;
|
|
431
|
+
/** 是否禁用 */
|
|
432
|
+
disabled?: boolean;
|
|
433
|
+
/** 上传地址 */
|
|
434
|
+
uploadUrl?: string;
|
|
435
|
+
/** 签名 URL 地址 */
|
|
436
|
+
presignUrl?: string;
|
|
437
|
+
/** 请求头 */
|
|
438
|
+
headers?: Record<string, string>;
|
|
439
|
+
/** 占位文本 */
|
|
440
|
+
placeholder?: string;
|
|
441
|
+
/** 宽高比 */
|
|
442
|
+
aspectRatio?: string;
|
|
443
|
+
/** 宽度 */
|
|
444
|
+
width?: string;
|
|
445
|
+
/** 高度 */
|
|
446
|
+
height?: string;
|
|
447
|
+
/** 自定义类名 */
|
|
448
|
+
class?: string;
|
|
449
|
+
/** 变化事件 */
|
|
450
|
+
onchange?: (url: string) => void;
|
|
451
|
+
/** 错误事件 */
|
|
452
|
+
onerror?: (error: string) => void;
|
|
453
|
+
}
|
|
454
|
+
/**
|
|
455
|
+
* 头像上传属性
|
|
456
|
+
*/
|
|
457
|
+
export interface AvatarUploadProps {
|
|
458
|
+
/** 头像 URL */
|
|
459
|
+
value?: string;
|
|
460
|
+
/** 尺寸 */
|
|
461
|
+
size?: Size;
|
|
462
|
+
/** 接受的文件类型 */
|
|
463
|
+
accept?: string;
|
|
464
|
+
/** 最大文件大小 (bytes) */
|
|
465
|
+
maxSize?: number;
|
|
466
|
+
/** 是否禁用 */
|
|
467
|
+
disabled?: boolean;
|
|
468
|
+
/** 上传地址 */
|
|
469
|
+
uploadUrl?: string;
|
|
470
|
+
/** 签名 URL 地址 */
|
|
471
|
+
presignUrl?: string;
|
|
472
|
+
/** 请求头 */
|
|
473
|
+
headers?: Record<string, string>;
|
|
474
|
+
/** 默认文字(没有图片时显示) */
|
|
475
|
+
fallback?: string;
|
|
476
|
+
/** 自定义类名 */
|
|
477
|
+
class?: string;
|
|
478
|
+
/** 变化事件 */
|
|
479
|
+
onchange?: (url: string) => void;
|
|
480
|
+
/** 错误事件 */
|
|
481
|
+
onerror?: (error: string) => void;
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* 加密输入框属性
|
|
485
|
+
*/
|
|
486
|
+
export interface EncryptedInputProps {
|
|
487
|
+
/** 原始值 */
|
|
488
|
+
value?: string;
|
|
489
|
+
/** 加密后的值 */
|
|
490
|
+
encryptedValue?: string;
|
|
491
|
+
/** 占位符 */
|
|
492
|
+
placeholder?: string;
|
|
493
|
+
/** 尺寸 */
|
|
494
|
+
size?: Size;
|
|
495
|
+
/** 是否禁用 */
|
|
496
|
+
disabled?: boolean;
|
|
497
|
+
/** 是否只读 */
|
|
498
|
+
readonly?: boolean;
|
|
499
|
+
/** 是否显示加密结果 */
|
|
500
|
+
showEncrypted?: boolean;
|
|
501
|
+
/** 加密算法 */
|
|
502
|
+
algorithm?: 'SM2' | 'SM4' | 'AES';
|
|
503
|
+
/** 加密函数 */
|
|
504
|
+
onencrypt?: (value: string) => Promise<string>;
|
|
505
|
+
/** 自定义类名 */
|
|
506
|
+
class?: string;
|
|
507
|
+
/** 输入事件 */
|
|
508
|
+
oninput?: (e: Event & {
|
|
509
|
+
currentTarget: HTMLInputElement;
|
|
510
|
+
}) => void;
|
|
511
|
+
/** 变化事件 */
|
|
512
|
+
onchange?: (e: Event & {
|
|
513
|
+
currentTarget: HTMLInputElement;
|
|
514
|
+
}) => void;
|
|
515
|
+
}
|
|
516
|
+
/**
|
|
517
|
+
* 哈希展示属性
|
|
518
|
+
*/
|
|
519
|
+
export interface HashDisplayProps {
|
|
520
|
+
/** 哈希值 */
|
|
521
|
+
value?: string;
|
|
522
|
+
/** 算法 */
|
|
523
|
+
algorithm?: 'SM3' | 'SHA256' | 'MD5';
|
|
524
|
+
/** 标签 */
|
|
525
|
+
label?: string;
|
|
526
|
+
/** 是否可复制 */
|
|
527
|
+
copyable?: boolean;
|
|
528
|
+
/** 是否截断显示 */
|
|
529
|
+
truncate?: boolean;
|
|
530
|
+
/** 截断长度 */
|
|
531
|
+
truncateLength?: number;
|
|
532
|
+
/** i18n 文案配置 */
|
|
533
|
+
labels?: {
|
|
534
|
+
copyHash?: string;
|
|
535
|
+
};
|
|
536
|
+
/** 自定义类名 */
|
|
537
|
+
class?: string;
|
|
538
|
+
}
|
|
539
|
+
/**
|
|
540
|
+
* Markdown 渲染器属性
|
|
541
|
+
*/
|
|
542
|
+
export interface MarkdownRendererProps {
|
|
543
|
+
/** Markdown 源文本 */
|
|
544
|
+
content?: string;
|
|
545
|
+
/** 自定义类名 */
|
|
546
|
+
class?: string;
|
|
547
|
+
/** 是否显示代码块复制按钮(默认 true) */
|
|
548
|
+
showCopyButton?: boolean;
|
|
549
|
+
/** 是否启用代码语法高亮(默认 true) */
|
|
550
|
+
enableHighlight?: boolean;
|
|
551
|
+
/** 是否将换行符转换为 <br>(默认 true,适合 AI 输出) */
|
|
552
|
+
breaks?: boolean;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* 签名展示属性
|
|
556
|
+
*/
|
|
557
|
+
export interface SignatureDisplayProps {
|
|
558
|
+
/** 签名值 */
|
|
559
|
+
signature?: string;
|
|
560
|
+
/** 公钥 */
|
|
561
|
+
publicKey?: string;
|
|
562
|
+
/** 算法 */
|
|
563
|
+
algorithm?: 'SM2' | 'RSA' | 'ECDSA';
|
|
564
|
+
/** 验证状态 */
|
|
565
|
+
verified?: boolean;
|
|
566
|
+
/** 是否显示公钥 */
|
|
567
|
+
showPublicKey?: boolean;
|
|
568
|
+
/** 是否可复制 */
|
|
569
|
+
copyable?: boolean;
|
|
570
|
+
/** i18n 文案配置 */
|
|
571
|
+
labels?: {
|
|
572
|
+
signature?: string;
|
|
573
|
+
publicKey?: string;
|
|
574
|
+
verified?: string;
|
|
575
|
+
verifyFailed?: string;
|
|
576
|
+
notVerified?: string;
|
|
577
|
+
noSignature?: string;
|
|
578
|
+
copySignature?: string;
|
|
579
|
+
copyPublicKey?: string;
|
|
580
|
+
};
|
|
581
|
+
/** 自定义类名 */
|
|
582
|
+
class?: string;
|
|
583
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @h-ai/ui — i18n Svelte 响应式封装
|
|
3
|
+
*
|
|
4
|
+
* 为 Svelte 5 应用提供 locale 状态管理的辅助工具
|
|
5
|
+
* @module i18n.svelte
|
|
6
|
+
*/
|
|
7
|
+
import type { Locale, LocaleInfo } from '@h-ai/core';
|
|
8
|
+
declare const DEFAULT_LOCALE: string, DEFAULT_LOCALES: LocaleInfo[], setGlobalLocale: (locale: Locale) => void;
|
|
9
|
+
declare function isLocaleSupported(locale: Locale, supportedLocales?: LocaleInfo[]): boolean;
|
|
10
|
+
declare function resolveLocale(locale: Locale, supportedLocales?: LocaleInfo[], defaultLocale?: Locale): Locale;
|
|
11
|
+
declare function detectBrowserLocale(supportedLocales?: LocaleInfo[]): Locale | null;
|
|
12
|
+
declare function interpolate(template: string, params?: Record<string, string | number | boolean>): string;
|
|
13
|
+
/**
|
|
14
|
+
* 创建 locale 状态管理器
|
|
15
|
+
*
|
|
16
|
+
* @param options - 配置选项
|
|
17
|
+
* @param options.defaultLocale - 默认 locale
|
|
18
|
+
* @param options.supportedLocales - 支持的 locale 列表
|
|
19
|
+
* @param options.detectBrowser - 是否检测浏览器语言
|
|
20
|
+
* @param options.persistKey - localStorage key
|
|
21
|
+
* @returns locale 状态对象
|
|
22
|
+
*/
|
|
23
|
+
export declare function createLocaleStore(options?: {
|
|
24
|
+
defaultLocale?: Locale;
|
|
25
|
+
supportedLocales?: LocaleInfo[];
|
|
26
|
+
detectBrowser?: boolean;
|
|
27
|
+
persistKey?: string;
|
|
28
|
+
}): {
|
|
29
|
+
/** 当前语言(响应式) */
|
|
30
|
+
readonly current: string;
|
|
31
|
+
/** 支持的语言列表 */
|
|
32
|
+
readonly supported: LocaleInfo[];
|
|
33
|
+
/**
|
|
34
|
+
* 设置当前语言
|
|
35
|
+
* 会同步到 @h-ai/core 的全局 locale 管理器
|
|
36
|
+
* 注意:你还需要调用 Paraglide 的 setLocale 来更新 UI 翻译
|
|
37
|
+
*/
|
|
38
|
+
set(locale: Locale): void;
|
|
39
|
+
/** 检查语言是否支持 */
|
|
40
|
+
isSupported(locale: Locale): boolean;
|
|
41
|
+
};
|
|
42
|
+
export type { InterpolationParams, Locale, LocaleInfo } from '@h-ai/core';
|
|
43
|
+
export { DEFAULT_LOCALE, DEFAULT_LOCALES, detectBrowserLocale, interpolate, isLocaleSupported, resolveLocale, setGlobalLocale, };
|
|
44
|
+
export declare const getGlobalLocale: () => Locale;
|