starry-sky-ui 0.1.0

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 (59) hide show
  1. package/README.md +644 -0
  2. package/dist/ChatInput/index.d.ts +23 -0
  3. package/dist/ChatInput/index.d.ts.map +1 -0
  4. package/dist/ChatInput/index.js +50 -0
  5. package/dist/ChatInput/index.js.map +1 -0
  6. package/dist/ChatInput/index.scss +170 -0
  7. package/dist/ContentRenderer/index.d.ts +15 -0
  8. package/dist/ContentRenderer/index.d.ts.map +1 -0
  9. package/dist/ContentRenderer/index.js +73 -0
  10. package/dist/ContentRenderer/index.js.map +1 -0
  11. package/dist/ContentRenderer/index.scss +203 -0
  12. package/dist/Input/Textarea.d.ts +46 -0
  13. package/dist/Input/Textarea.d.ts.map +1 -0
  14. package/dist/Input/Textarea.js +42 -0
  15. package/dist/Input/Textarea.js.map +1 -0
  16. package/dist/Input/index.d.ts +57 -0
  17. package/dist/Input/index.d.ts.map +1 -0
  18. package/dist/Input/index.js +87 -0
  19. package/dist/Input/index.js.map +1 -0
  20. package/dist/Input/index.scss +498 -0
  21. package/dist/Message/index.d.ts +36 -0
  22. package/dist/Message/index.d.ts.map +1 -0
  23. package/dist/Message/index.js +184 -0
  24. package/dist/Message/index.js.map +1 -0
  25. package/dist/Message/index.scss +147 -0
  26. package/dist/Modal/index.d.ts +57 -0
  27. package/dist/Modal/index.d.ts.map +1 -0
  28. package/dist/Modal/index.js +99 -0
  29. package/dist/Modal/index.js.map +1 -0
  30. package/dist/Modal/index.scss +250 -0
  31. package/dist/Pagination/index.d.ts +37 -0
  32. package/dist/Pagination/index.d.ts.map +1 -0
  33. package/dist/Pagination/index.js +98 -0
  34. package/dist/Pagination/index.js.map +1 -0
  35. package/dist/Pagination/index.scss +393 -0
  36. package/dist/Select/index.d.ts +56 -0
  37. package/dist/Select/index.d.ts.map +1 -0
  38. package/dist/Select/index.js +153 -0
  39. package/dist/Select/index.js.map +1 -0
  40. package/dist/Select/index.scss +251 -0
  41. package/dist/Starfield/index.d.ts +20 -0
  42. package/dist/Starfield/index.d.ts.map +1 -0
  43. package/dist/Starfield/index.js +39 -0
  44. package/dist/Starfield/index.js.map +1 -0
  45. package/dist/Starfield/index.scss +61 -0
  46. package/dist/Table/index.d.ts +72 -0
  47. package/dist/Table/index.d.ts.map +1 -0
  48. package/dist/Table/index.js +192 -0
  49. package/dist/Table/index.js.map +1 -0
  50. package/dist/Table/index.scss +377 -0
  51. package/dist/index.d.ts +22 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +11 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/types.d.ts +12 -0
  56. package/dist/types.d.ts.map +1 -0
  57. package/dist/types.js +3 -0
  58. package/dist/types.js.map +1 -0
  59. package/package.json +57 -0
@@ -0,0 +1,250 @@
1
+ // Modal 根容器
2
+ .modal-root {
3
+ position: fixed;
4
+ top: 0;
5
+ left: 0;
6
+ right: 0;
7
+ bottom: 0;
8
+ overflow: auto;
9
+ outline: 0;
10
+
11
+ &.modal-root-leave {
12
+ pointer-events: none;
13
+ }
14
+
15
+ &.modal-centered {
16
+ display: flex;
17
+ align-items: center;
18
+ justify-content: center;
19
+ }
20
+ }
21
+
22
+ // 遮罩
23
+ .modal-mask {
24
+ position: fixed;
25
+ top: 0;
26
+ left: 0;
27
+ right: 0;
28
+ bottom: 0;
29
+ background: rgba(0, 0, 0, 0.8);
30
+ opacity: 0;
31
+ transition: opacity 0.2s ease;
32
+
33
+ &.modal-mask-enter {
34
+ opacity: 1;
35
+ }
36
+ }
37
+
38
+ // 弹窗包裹层
39
+ .modal-wrap {
40
+ position: relative;
41
+ min-height: 100%;
42
+ padding: 64px 0;
43
+ display: flex;
44
+ align-items: flex-start;
45
+ justify-content: center;
46
+
47
+ &.modal-wrap-centered {
48
+ align-items: center;
49
+ min-height: 0;
50
+ padding: 0;
51
+ }
52
+
53
+ &.modal-wrap-enter {
54
+ .modal-content {
55
+ transform: scale(1);
56
+ opacity: 1;
57
+ }
58
+ }
59
+ }
60
+
61
+ // 弹窗内容
62
+ .modal-content {
63
+ position: relative;
64
+ background: rgba(30, 30, 46, 0.95);
65
+ border: 1px solid rgba(139, 92, 246, 0.3);
66
+ border-radius: 15px;
67
+ max-width: calc(100vw - 32px);
68
+ display: flex;
69
+ flex-direction: column;
70
+ backdrop-filter: blur(20px);
71
+ transform: scale(0.9);
72
+ opacity: 0;
73
+ transition: transform 0.2s ease, opacity 0.2s ease;
74
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
75
+ }
76
+
77
+ // 头部
78
+ .modal-header {
79
+ display: flex;
80
+ align-items: center;
81
+ justify-content: flex-start;
82
+ padding: 1.5rem 2rem;
83
+ border-bottom: 1px solid rgba(255, 255, 255, 0.1);
84
+ flex-shrink: 0;
85
+ min-height: 60px;
86
+ }
87
+
88
+ .modal-title {
89
+ font-size: 1.8rem;
90
+ font-weight: 600;
91
+ color: #fff;
92
+ background: linear-gradient(45deg, #8b5cf6, #3b82f6);
93
+ -webkit-background-clip: text;
94
+ -webkit-text-fill-color: transparent;
95
+ background-clip: text;
96
+ line-height: 1.5;
97
+ word-break: break-word;
98
+ flex: 1;
99
+ }
100
+
101
+ // 关闭按钮
102
+ .modal-close {
103
+ position: absolute;
104
+ top: 1.5rem;
105
+ right: 1.5rem;
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ width: 40px;
110
+ height: 40px;
111
+ border: none;
112
+ background: transparent;
113
+ border-radius: 50%;
114
+ color: #ccc;
115
+ font-size: 1.5rem;
116
+ cursor: pointer;
117
+ transition: all 0.3s ease;
118
+ z-index: 1;
119
+
120
+ &:hover {
121
+ background: rgba(255, 255, 255, 0.1);
122
+ color: #fff;
123
+ transform: scale(1.1);
124
+ }
125
+
126
+ &:active {
127
+ transform: scale(0.95);
128
+ }
129
+ }
130
+
131
+ .modal-close-custom {
132
+ position: absolute;
133
+ top: 1.5rem;
134
+ right: 1.5rem;
135
+ z-index: 1;
136
+ cursor: pointer;
137
+ display: flex;
138
+ align-items: center;
139
+ justify-content: center;
140
+ }
141
+
142
+ // 内容区
143
+ .modal-body {
144
+ padding: 2rem;
145
+ flex: 1;
146
+ overflow-y: auto;
147
+ font-size: 0.95rem;
148
+ color: #ccc;
149
+ line-height: 1.6;
150
+ word-break: break-word;
151
+ min-height: 0;
152
+
153
+ &::-webkit-scrollbar {
154
+ width: 6px;
155
+ }
156
+ &::-webkit-scrollbar-track {
157
+ background: rgba(255, 255, 255, 0.05);
158
+ border-radius: 3px;
159
+ }
160
+ &::-webkit-scrollbar-thumb {
161
+ background: rgba(139, 92, 246, 0.5);
162
+ border-radius: 3px;
163
+
164
+ &:hover {
165
+ background: rgba(139, 92, 246, 0.8);
166
+ }
167
+ }
168
+ }
169
+
170
+ // 底部
171
+ .modal-footer {
172
+ display: flex;
173
+ align-items: center;
174
+ justify-content: flex-end;
175
+ gap: 12px;
176
+ padding: 1rem 2rem;
177
+ border-top: 1px solid rgba(255, 255, 255, 0.1);
178
+ flex-shrink: 0;
179
+ }
180
+
181
+ // 按钮
182
+ .modal-btn {
183
+ display: inline-flex;
184
+ align-items: center;
185
+ justify-content: center;
186
+ gap: 6px;
187
+ height: 36px;
188
+ padding: 0 20px;
189
+ border-radius: 8px;
190
+ font-size: 0.9rem;
191
+ font-weight: 500;
192
+ cursor: pointer;
193
+ border: 1px solid;
194
+ transition: all 0.3s ease;
195
+ outline: none;
196
+ white-space: nowrap;
197
+
198
+ &:disabled {
199
+ opacity: 0.5;
200
+ cursor: not-allowed;
201
+ }
202
+
203
+ &.modal-btn-cancel {
204
+ background: rgba(255, 255, 255, 0.06);
205
+ color: #ccc;
206
+ border-color: rgba(255, 255, 255, 0.12);
207
+
208
+ &:hover:not(:disabled) {
209
+ background: rgba(255, 255, 255, 0.1);
210
+ color: #fff;
211
+ }
212
+ }
213
+
214
+ &.modal-btn-ok {
215
+ background: linear-gradient(135deg, #8b5cf6, #3b82f6);
216
+ color: #fff;
217
+ border-color: transparent;
218
+
219
+ &:hover:not(:disabled) {
220
+ box-shadow: 0 4px 15px rgba(139, 92, 246, 0.4);
221
+ transform: translateY(-1px);
222
+ }
223
+
224
+ &.modal-btn-loading {
225
+ position: relative;
226
+ pointer-events: none;
227
+ }
228
+ }
229
+ }
230
+
231
+ .modal-btn-spinner {
232
+ display: inline-block;
233
+ width: 14px;
234
+ height: 14px;
235
+ border: 2px solid rgba(255, 255, 255, 0.4);
236
+ border-top-color: #fff;
237
+ border-radius: 50%;
238
+ animation: modalSpin 0.6s linear infinite;
239
+ }
240
+
241
+ @keyframes modalSpin {
242
+ to {
243
+ transform: rotate(360deg);
244
+ }
245
+ }
246
+
247
+ @keyframes fadeIn {
248
+ from { opacity: 0; }
249
+ to { opacity: 1; }
250
+ }
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import './index.scss';
3
+ export interface PaginationProps {
4
+ /** 当前页数(受控) */
5
+ current?: number;
6
+ /** 默认当前页数 */
7
+ defaultCurrent?: number;
8
+ /** 每页条数(受控) */
9
+ pageSize?: number;
10
+ /** 默认每页条数 */
11
+ defaultPageSize?: number;
12
+ /** 数据总数 */
13
+ total: number;
14
+ /** 页码变化回调 */
15
+ onChange?: (page: number, pageSize: number) => void;
16
+ /** 是否显示每页条数切换器 */
17
+ showSizeChanger?: boolean;
18
+ /** 每页条数可选值 */
19
+ pageSizeOptions?: number[];
20
+ /** 是否显示总条数 */
21
+ showTotal?: boolean;
22
+ /** 总条数自定义渲染 */
23
+ showTotalRender?: (total: number, range: [number, number]) => React.ReactNode;
24
+ /** 简洁模式 */
25
+ simple?: boolean;
26
+ /** 禁用 */
27
+ disabled?: boolean;
28
+ /** 是否显示快速跳转输入框 */
29
+ showQuickJumper?: boolean;
30
+ /** 自定义类名 */
31
+ className?: string;
32
+ /** 尺寸 */
33
+ size?: 'default' | 'small';
34
+ }
35
+ declare const Pagination: React.FC<PaginationProps>;
36
+ export default Pagination;
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Pagination/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAC9D,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,eAAe;IAC9B,eAAe;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa;IACb,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa;IACb,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,kBAAkB;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc;IACd,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe;IACf,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,KAAK,CAAC,SAAS,CAAC;IAC9E,WAAW;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS;IACT,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kBAAkB;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS;IACT,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC5B;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CA6NzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,98 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useCallback, useMemo } from 'react';
3
+ import './index.scss';
4
+ const Pagination = ({ current: currentProp, defaultCurrent = 1, pageSize: pageSizeProp, defaultPageSize = 10, total, onChange, showSizeChanger = false, pageSizeOptions = [10, 20, 50, 100], showTotal = false, showTotalRender, simple = false, disabled = false, showQuickJumper = false, className = '', size = 'default', }) => {
5
+ const [innerCurrent, setInnerCurrent] = useState(defaultCurrent);
6
+ const [innerPageSize, setInnerPageSize] = useState(defaultPageSize);
7
+ const current = currentProp !== null && currentProp !== void 0 ? currentProp : innerCurrent;
8
+ const pageSize = pageSizeProp !== null && pageSizeProp !== void 0 ? pageSizeProp : innerPageSize;
9
+ const totalPages = useMemo(() => Math.max(1, Math.ceil(total / pageSize)), [total, pageSize]);
10
+ const safeCurrent = Math.min(Math.max(1, current), totalPages);
11
+ // ---- 切换页码 ----
12
+ const changePage = useCallback((page) => {
13
+ if (disabled)
14
+ return;
15
+ const p = Math.min(Math.max(1, page), totalPages);
16
+ if (p === safeCurrent)
17
+ return;
18
+ if (currentProp === undefined)
19
+ setInnerCurrent(p);
20
+ onChange === null || onChange === void 0 ? void 0 : onChange(p, pageSize);
21
+ }, [disabled, totalPages, safeCurrent, currentProp, onChange, pageSize]);
22
+ // ---- 切换每页条数 ----
23
+ const changePageSize = useCallback((newSize) => {
24
+ if (disabled)
25
+ return;
26
+ if (pageSizeProp === undefined)
27
+ setInnerPageSize(newSize);
28
+ if (currentProp === undefined)
29
+ setInnerCurrent(1);
30
+ onChange === null || onChange === void 0 ? void 0 : onChange(1, newSize);
31
+ }, [disabled, pageSizeProp, currentProp, onChange]);
32
+ // ---- 快捷跳转 ----
33
+ const [jumpValue, setJumpValue] = useState('');
34
+ const doJump = useCallback(() => {
35
+ const val = parseInt(jumpValue, 10);
36
+ if (!isNaN(val) && val >= 1 && val <= totalPages) {
37
+ changePage(val);
38
+ }
39
+ setJumpValue('');
40
+ }, [jumpValue, totalPages, changePage]);
41
+ const handleJumpKey = useCallback((e) => {
42
+ if (e.key === 'Enter')
43
+ doJump();
44
+ }, [doJump]);
45
+ // ---- 简洁模式输入(直接跳转) ----
46
+ const handleSimpleInputChange = useCallback((e) => {
47
+ const v = parseInt(e.target.value, 10);
48
+ if (!isNaN(v) && v >= 1 && v <= totalPages) {
49
+ changePage(v);
50
+ }
51
+ }, [totalPages, changePage]);
52
+ // ---- 生成页码 ----
53
+ const pages = useMemo(() => {
54
+ const items = [];
55
+ if (simple || totalPages <= 7) {
56
+ // 简洁模式下不渲染页码按钮,由 simple 分支处理
57
+ if (!simple) {
58
+ for (let i = 1; i <= totalPages; i++)
59
+ items.push(i);
60
+ }
61
+ return items;
62
+ }
63
+ const range = 2;
64
+ let start = Math.max(1, safeCurrent - range);
65
+ let end = Math.min(totalPages, safeCurrent + range);
66
+ if (start > 1)
67
+ items.push(1);
68
+ if (start > 2)
69
+ items.push('...');
70
+ for (let i = start; i <= end; i++)
71
+ items.push(i);
72
+ if (end < totalPages - 1)
73
+ items.push('...');
74
+ if (end < totalPages)
75
+ items.push(totalPages);
76
+ return items;
77
+ }, [totalPages, safeCurrent, simple]);
78
+ // ---- 数据范围 ----
79
+ const range = [
80
+ total === 0 ? 0 : (safeCurrent - 1) * pageSize + 1,
81
+ Math.min(safeCurrent * pageSize, total),
82
+ ];
83
+ const cls = [
84
+ 'pagination',
85
+ disabled ? 'pagination-disabled' : '',
86
+ size === 'small' ? 'pagination-small' : '',
87
+ className,
88
+ ]
89
+ .filter(Boolean)
90
+ .join(' ');
91
+ if (total === 0)
92
+ return null;
93
+ return (_jsxs("div", Object.assign({ className: cls }, { children: [showTotal && (_jsx("span", Object.assign({ className: "pagination-total" }, { children: showTotalRender
94
+ ? showTotalRender(total, range)
95
+ : `共 ${total} 条` }))), _jsx("button", Object.assign({ className: "pagination-btn", disabled: disabled || safeCurrent <= 1, onClick: () => changePage(safeCurrent - 1) }, { children: "\u2039" })), simple ? (_jsxs("span", Object.assign({ className: "pagination-simple-wrapper" }, { children: [_jsx("input", { className: "pagination-simple-input", type: "text", inputMode: "numeric", value: safeCurrent, disabled: disabled, onChange: handleSimpleInputChange }), _jsx("span", Object.assign({ className: "pagination-simple-sep" }, { children: "/" })), _jsx("span", Object.assign({ className: "pagination-simple-total" }, { children: totalPages }))] }))) : (pages.map((item, idx) => typeof item === 'number' ? (_jsx("button", Object.assign({ className: `pagination-btn${item === safeCurrent ? ' active' : ''}`, disabled: disabled, onClick: () => changePage(item) }, { children: item }), item)) : (_jsx("span", Object.assign({ className: "pagination-ellipsis" }, { children: "..." }), `e${idx}`)))), _jsx("button", Object.assign({ className: "pagination-btn", disabled: disabled || safeCurrent >= totalPages, onClick: () => changePage(safeCurrent + 1) }, { children: "\u203A" })), showSizeChanger && (_jsx("div", Object.assign({ className: "pagination-size-changer" }, { children: _jsx("select", Object.assign({ value: pageSize, disabled: disabled, onChange: (e) => changePageSize(Number(e.target.value)) }, { children: pageSizeOptions.map((s) => (_jsxs("option", Object.assign({ value: s }, { children: [s, " \u6761/\u9875"] }), s))) })) }))), showQuickJumper && (_jsxs("span", Object.assign({ className: "pagination-jumper-wrapper" }, { children: [_jsx("span", Object.assign({ className: "pagination-jumper-label" }, { children: "\u8DF3\u81F3" })), _jsx("input", { className: "pagination-jumper-input", type: "text", inputMode: "numeric", placeholder: "\u9875\u53F7", value: jumpValue, disabled: disabled, onChange: (e) => setJumpValue(e.target.value), onKeyDown: handleJumpKey }), _jsx("button", Object.assign({ className: "pagination-jumper-btn", disabled: disabled || !jumpValue, onClick: doJump }, { children: "\u786E\u5B9A" }))] })))] })));
96
+ };
97
+ export default Pagination;
98
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Pagination/index.tsx"],"names":[],"mappings":"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"}