long-git-cli 1.0.16 → 1.0.20

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 (33) hide show
  1. package/dist/commands/open-account.d.ts +6 -0
  2. package/dist/commands/open-account.d.ts.map +1 -0
  3. package/dist/commands/open-account.js +151 -0
  4. package/dist/commands/open-account.js.map +1 -0
  5. package/dist/devops/ui/server.d.ts.map +1 -1
  6. package/dist/devops/ui/server.js +6 -1
  7. package/dist/devops/ui/server.js.map +1 -1
  8. package/dist/index.js +3 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/utils/oa-config-manager.d.ts +28 -0
  11. package/dist/utils/oa-config-manager.d.ts.map +1 -0
  12. package/dist/utils/oa-config-manager.js +108 -0
  13. package/dist/utils/oa-config-manager.js.map +1 -0
  14. package/dist/utils/open-account.d.ts +8 -0
  15. package/dist/utils/open-account.d.ts.map +1 -0
  16. package/dist/utils/open-account.js +298 -0
  17. package/dist/utils/open-account.js.map +1 -0
  18. package/dist/utils/slider-captcha.d.ts +9 -0
  19. package/dist/utils/slider-captcha.d.ts.map +1 -0
  20. package/dist/utils/slider-captcha.js +202 -0
  21. package/dist/utils/slider-captcha.js.map +1 -0
  22. package/package.json +5 -1
  23. package/src/devops/ui/public/css/components.css +397 -0
  24. package/src/devops/ui/public/css/main.css +381 -0
  25. package/src/devops/ui/public/index.html +489 -0
  26. package/src/devops/ui/public/js/api.js +116 -0
  27. package/src/devops/ui/public/js/app.js +104 -0
  28. package/src/devops/ui/public/js/components.js +267 -0
  29. package/src/devops/ui/public/js/config-page.js +339 -0
  30. package/src/devops/ui/public/js/deploy-page.js +158 -0
  31. package/src/devops/ui/public/js/full-deploy-page.js +247 -0
  32. package/src/devops/ui/public/js/pipeline-page.js +364 -0
  33. package/src/devops/ui/public/js/projects-page.js +659 -0
@@ -0,0 +1,397 @@
1
+ /**
2
+ * 组件样式文件
3
+ * 包含 Toast、Loading、Modal 等组件样式
4
+ */
5
+
6
+ /* ==================== Toast 组件 ==================== */
7
+ #toast-container {
8
+ position: fixed;
9
+ top: var(--spacing-lg);
10
+ right: var(--spacing-lg);
11
+ z-index: 9999;
12
+ display: flex;
13
+ flex-direction: column;
14
+ gap: var(--spacing-sm);
15
+ max-width: 400px;
16
+ }
17
+
18
+ .toast {
19
+ display: flex;
20
+ align-items: center;
21
+ gap: var(--spacing-md);
22
+ padding: var(--spacing-md) var(--spacing-lg);
23
+ background-color: var(--card-bg);
24
+ border-radius: var(--radius-md);
25
+ box-shadow: var(--shadow-lg);
26
+ animation: slideInRight 0.3s ease;
27
+ border-left: 4px solid var(--primary-color);
28
+ }
29
+
30
+ .toast.success {
31
+ border-left-color: var(--success-color);
32
+ }
33
+
34
+ .toast.error {
35
+ border-left-color: var(--error-color);
36
+ }
37
+
38
+ .toast.warning {
39
+ border-left-color: var(--warning-color);
40
+ }
41
+
42
+ .toast-icon {
43
+ font-size: 1.25rem;
44
+ flex-shrink: 0;
45
+ }
46
+
47
+ .toast-content {
48
+ flex: 1;
49
+ }
50
+
51
+ .toast-title {
52
+ font-weight: 600;
53
+ font-size: 0.875rem;
54
+ color: var(--text-primary);
55
+ margin-bottom: var(--spacing-xs);
56
+ }
57
+
58
+ .toast-message {
59
+ font-size: 0.875rem;
60
+ color: var(--text-secondary);
61
+ }
62
+
63
+ .toast-close {
64
+ background: none;
65
+ border: none;
66
+ font-size: 1.25rem;
67
+ color: var(--text-secondary);
68
+ cursor: pointer;
69
+ padding: 0;
70
+ line-height: 1;
71
+ transition: color 0.2s ease;
72
+ }
73
+
74
+ .toast-close:hover {
75
+ color: var(--text-primary);
76
+ }
77
+
78
+ @keyframes slideInRight {
79
+ from {
80
+ transform: translateX(100%);
81
+ opacity: 0;
82
+ }
83
+ to {
84
+ transform: translateX(0);
85
+ opacity: 1;
86
+ }
87
+ }
88
+
89
+ @keyframes slideOutRight {
90
+ from {
91
+ transform: translateX(0);
92
+ opacity: 1;
93
+ }
94
+ to {
95
+ transform: translateX(100%);
96
+ opacity: 0;
97
+ }
98
+ }
99
+
100
+ .toast.removing {
101
+ animation: slideOutRight 0.3s ease;
102
+ }
103
+
104
+ /* ==================== Loading 组件 ==================== */
105
+ .loading-overlay {
106
+ position: fixed;
107
+ top: 0;
108
+ left: 0;
109
+ right: 0;
110
+ bottom: 0;
111
+ background-color: rgba(0, 0, 0, 0.5);
112
+ display: flex;
113
+ flex-direction: column;
114
+ align-items: center;
115
+ justify-content: center;
116
+ z-index: 10000;
117
+ backdrop-filter: blur(2px);
118
+ }
119
+
120
+ .loading-spinner {
121
+ width: 48px;
122
+ height: 48px;
123
+ border: 4px solid rgba(255, 255, 255, 0.3);
124
+ border-top-color: white;
125
+ border-radius: 50%;
126
+ animation: spin 0.8s linear infinite;
127
+ }
128
+
129
+ @keyframes spin {
130
+ to {
131
+ transform: rotate(360deg);
132
+ }
133
+ }
134
+
135
+ .loading-text {
136
+ margin-top: var(--spacing-lg);
137
+ color: white;
138
+ font-size: 1rem;
139
+ font-weight: 500;
140
+ }
141
+
142
+ /* ==================== Modal 组件 ==================== */
143
+ .modal-overlay {
144
+ position: fixed;
145
+ top: 0;
146
+ left: 0;
147
+ right: 0;
148
+ bottom: 0;
149
+ background-color: rgba(0, 0, 0, 0.5);
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: center;
153
+ z-index: 9998;
154
+ backdrop-filter: blur(2px);
155
+ animation: fadeIn 0.2s ease;
156
+ }
157
+
158
+ .modal {
159
+ background-color: var(--card-bg);
160
+ border-radius: var(--radius-lg);
161
+ box-shadow: var(--shadow-lg);
162
+ max-width: 600px;
163
+ width: 90%;
164
+ max-height: 90vh;
165
+ overflow: hidden;
166
+ display: flex;
167
+ flex-direction: column;
168
+ animation: scaleIn 0.2s ease;
169
+ }
170
+
171
+ @keyframes scaleIn {
172
+ from {
173
+ transform: scale(0.9);
174
+ opacity: 0;
175
+ }
176
+ to {
177
+ transform: scale(1);
178
+ opacity: 1;
179
+ }
180
+ }
181
+
182
+ .modal-header {
183
+ display: flex;
184
+ justify-content: space-between;
185
+ align-items: center;
186
+ padding: var(--spacing-lg);
187
+ border-bottom: 1px solid var(--border-color);
188
+ }
189
+
190
+ .modal-title {
191
+ font-size: 1.25rem;
192
+ font-weight: 600;
193
+ color: var(--text-primary);
194
+ }
195
+
196
+ .modal-close {
197
+ background: none;
198
+ border: none;
199
+ font-size: 1.5rem;
200
+ color: var(--text-secondary);
201
+ cursor: pointer;
202
+ padding: 0;
203
+ line-height: 1;
204
+ transition: color 0.2s ease;
205
+ }
206
+
207
+ .modal-close:hover {
208
+ color: var(--text-primary);
209
+ }
210
+
211
+ .modal-body {
212
+ padding: var(--spacing-lg);
213
+ overflow-y: auto;
214
+ flex: 1;
215
+ }
216
+
217
+ .modal-footer {
218
+ display: flex;
219
+ justify-content: flex-end;
220
+ gap: var(--spacing-md);
221
+ padding: var(--spacing-lg);
222
+ border-top: 1px solid var(--border-color);
223
+ }
224
+
225
+ /* ==================== Badge 组件 ==================== */
226
+ .badge {
227
+ display: inline-flex;
228
+ align-items: center;
229
+ padding: var(--spacing-xs) var(--spacing-sm);
230
+ border-radius: var(--radius-sm);
231
+ font-size: 0.75rem;
232
+ font-weight: 500;
233
+ }
234
+
235
+ .badge-primary {
236
+ background-color: rgba(37, 99, 235, 0.1);
237
+ color: var(--primary-color);
238
+ }
239
+
240
+ .badge-success {
241
+ background-color: rgba(16, 185, 129, 0.1);
242
+ color: var(--success-color);
243
+ }
244
+
245
+ .badge-warning {
246
+ background-color: rgba(245, 158, 11, 0.1);
247
+ color: var(--warning-color);
248
+ }
249
+
250
+ .badge-error {
251
+ background-color: rgba(239, 68, 68, 0.1);
252
+ color: var(--error-color);
253
+ }
254
+
255
+ /* ==================== Input Group 组件 ==================== */
256
+ .input-group {
257
+ display: flex;
258
+ align-items: stretch;
259
+ }
260
+
261
+ .input-group .form-input {
262
+ border-radius: var(--radius-md) 0 0 var(--radius-md);
263
+ }
264
+
265
+ .input-group-append {
266
+ display: flex;
267
+ align-items: center;
268
+ padding: var(--spacing-md);
269
+ background-color: var(--hover-bg);
270
+ border: 1px solid var(--border-color);
271
+ border-left: none;
272
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
273
+ }
274
+
275
+ .input-group-append .btn {
276
+ border-radius: 0 var(--radius-md) var(--radius-md) 0;
277
+ }
278
+
279
+ /* ==================== Password Input 组件 ==================== */
280
+ .password-input-wrapper {
281
+ position: relative;
282
+ }
283
+
284
+ .password-toggle {
285
+ position: absolute;
286
+ right: var(--spacing-md);
287
+ top: 50%;
288
+ transform: translateY(-50%);
289
+ background: none;
290
+ border: none;
291
+ cursor: pointer;
292
+ font-size: 1.25rem;
293
+ color: var(--text-secondary);
294
+ padding: 0;
295
+ line-height: 1;
296
+ transition: color 0.2s ease;
297
+ }
298
+
299
+ .password-toggle:hover {
300
+ color: var(--text-primary);
301
+ }
302
+
303
+ .password-input-wrapper .form-input {
304
+ padding-right: 2.5rem;
305
+ }
306
+
307
+ /* ==================== Status Indicator 组件 ==================== */
308
+ .status-indicator {
309
+ display: inline-flex;
310
+ align-items: center;
311
+ gap: var(--spacing-sm);
312
+ font-size: 0.875rem;
313
+ }
314
+
315
+ .status-dot {
316
+ width: 8px;
317
+ height: 8px;
318
+ border-radius: 50%;
319
+ animation: pulse 2s ease-in-out infinite;
320
+ }
321
+
322
+ .status-dot.success {
323
+ background-color: var(--success-color);
324
+ }
325
+
326
+ .status-dot.error {
327
+ background-color: var(--error-color);
328
+ }
329
+
330
+ .status-dot.warning {
331
+ background-color: var(--warning-color);
332
+ }
333
+
334
+ @keyframes pulse {
335
+ 0%,
336
+ 100% {
337
+ opacity: 1;
338
+ }
339
+ 50% {
340
+ opacity: 0.5;
341
+ }
342
+ }
343
+
344
+ /* ==================== Empty State 组件 ==================== */
345
+ .empty-state {
346
+ display: flex;
347
+ flex-direction: column;
348
+ align-items: center;
349
+ justify-content: center;
350
+ padding: var(--spacing-xl);
351
+ text-align: center;
352
+ }
353
+
354
+ .empty-state-icon {
355
+ font-size: 3rem;
356
+ margin-bottom: var(--spacing-md);
357
+ opacity: 0.5;
358
+ }
359
+
360
+ .empty-state-title {
361
+ font-size: 1.125rem;
362
+ font-weight: 600;
363
+ color: var(--text-primary);
364
+ margin-bottom: var(--spacing-sm);
365
+ }
366
+
367
+ .empty-state-description {
368
+ font-size: 0.875rem;
369
+ color: var(--text-secondary);
370
+ margin-bottom: var(--spacing-lg);
371
+ }
372
+
373
+ /* ==================== Connection Status 组件 ==================== */
374
+ .connection-status {
375
+ display: inline-flex;
376
+ align-items: center;
377
+ margin-left: var(--spacing-md);
378
+ font-size: 0.875rem;
379
+ font-weight: 500;
380
+ padding: var(--spacing-xs) var(--spacing-sm);
381
+ border-radius: var(--radius-sm);
382
+ }
383
+
384
+ .connection-status.testing {
385
+ color: var(--warning-color);
386
+ background-color: rgba(245, 158, 11, 0.1);
387
+ }
388
+
389
+ .connection-status.success {
390
+ color: var(--success-color);
391
+ background-color: rgba(16, 185, 129, 0.1);
392
+ }
393
+
394
+ .connection-status.error {
395
+ color: var(--error-color);
396
+ background-color: rgba(239, 68, 68, 0.1);
397
+ }