@yss123/cage-admin 0.2.0 → 0.3.1
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/README.md +31 -3
- package/dist/bootstrap.d.ts +27 -1
- package/dist/bootstrap.js +52 -16
- package/dist/bootstrap.js.map +1 -1
- package/dist/catalog.d.ts +6 -0
- package/dist/catalog.js +7 -0
- package/dist/catalog.js.map +1 -1
- package/dist/diagnostics.d.ts +14 -0
- package/dist/diagnostics.js +163 -0
- package/dist/diagnostics.js.map +1 -0
- package/dist/domain/constraints.d.ts +23 -0
- package/dist/domain/constraints.js +27 -0
- package/dist/domain/constraints.js.map +1 -1
- package/dist/domain/index.d.ts +5 -0
- package/dist/domain/index.js +5 -0
- package/dist/domain/index.js.map +1 -1
- package/dist/domain/org.d.ts +82 -1
- package/dist/domain/org.js +98 -4
- package/dist/domain/org.js.map +1 -1
- package/dist/http.d.ts +11 -0
- package/dist/http.js +24 -0
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
- package/ui/dist/app/shell.js +39 -5
- package/ui/dist/app.js +10 -0
- package/ui/dist/modules/audit/audit-page.js +12 -0
- package/ui/dist/modules/audit/index.js +4 -0
- package/ui/dist/modules/auth/index.js +4 -0
- package/ui/dist/modules/auth/login-page.js +8 -0
- package/ui/dist/modules/models/index.js +5 -0
- package/ui/dist/modules/models/models-page.js +60 -0
- package/ui/dist/modules/operations/index.js +4 -0
- package/ui/dist/modules/operations/operations-page.js +15 -0
- package/ui/dist/modules/operations/sync-page.js +12 -0
- package/ui/dist/modules/org/index.js +4 -0
- package/ui/dist/modules/org/org-page.js +30 -0
- package/ui/dist/modules/personalities/index.js +5 -0
- package/ui/dist/modules/personalities/personalities-page.js +161 -0
- package/ui/dist/modules/roles/index.js +4 -0
- package/ui/dist/modules/roles/roles-page.js +40 -0
- package/ui/dist/modules/tasks/index.js +5 -0
- package/ui/dist/modules/tasks/operations-pages.js +107 -0
- package/ui/dist/modules/tasks/tasks-page.js +44 -12
- package/ui/dist/shared/api.js +84 -2
- package/ui/dist/shared/dom.js +36 -0
- package/ui/dist/shared/labels.js +29 -0
- package/ui/dist/shared/navigation.js +7 -0
- package/ui/index.html +1 -0
- package/ui/style.css +118 -0
package/ui/style.css
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* 系统管理页面样式:基础变量、应用壳、表单表格、授权编辑与 AI 配置区按既有层叠顺序组织。
|
|
2
|
+
* 页面状态由 TS 添加类名或属性,CSS 只负责显示、布局和响应式适配,不承载授权判断或业务状态转换。 */
|
|
1
3
|
/* 管理工作台采用同一套色彩与间距。仅为桌面排版,不引入远程字体或 UI 运行时。 */
|
|
2
4
|
:root {
|
|
3
5
|
color-scheme: light;
|
|
@@ -223,6 +225,43 @@ pre {
|
|
|
223
225
|
.muted {
|
|
224
226
|
color: var(--muted);
|
|
225
227
|
}
|
|
228
|
+
/* 审批提醒使用真实链接保存筛选 URL;选中态和键盘焦点都沿用系统绿色,状态不只靠文字颜色区分。 */
|
|
229
|
+
.approval-filter {
|
|
230
|
+
display: inline-flex;
|
|
231
|
+
align-items: center;
|
|
232
|
+
min-height: 30px;
|
|
233
|
+
padding: 4px 12px;
|
|
234
|
+
border: 1px solid var(--line-strong);
|
|
235
|
+
border-radius: 7px;
|
|
236
|
+
color: var(--ink);
|
|
237
|
+
text-decoration: none;
|
|
238
|
+
}
|
|
239
|
+
.approval-filter.selected {
|
|
240
|
+
background: var(--accent-soft);
|
|
241
|
+
border-color: var(--accent);
|
|
242
|
+
color: var(--accent-dark);
|
|
243
|
+
font-weight: 600;
|
|
244
|
+
}
|
|
245
|
+
.approval-filter:focus-visible {
|
|
246
|
+
outline: 2px solid var(--accent);
|
|
247
|
+
outline-offset: 2px;
|
|
248
|
+
}
|
|
249
|
+
/* 审批页支持窄侧面板:横向溢出仅留在表格内,避免整页滚动后操作按钮落到固定侧栏下。 */
|
|
250
|
+
body:has(.approval-workspace) { min-width: 0; }
|
|
251
|
+
.approval-workspace { min-width: 0; }
|
|
252
|
+
.approval-workspace .table-wrap { max-width: 100%; overflow-x: auto; }
|
|
253
|
+
.approval-workspace .table-toolbar { flex-wrap: wrap; gap: 12px; }
|
|
254
|
+
.approval-workspace table { min-width: 700px; }
|
|
255
|
+
@media (max-width: 700px) {
|
|
256
|
+
body:has(.approval-workspace) .app-sidebar { position: static; width: auto; padding: 16px; }
|
|
257
|
+
body:has(.approval-workspace) .app-sidebar nav { display: flex; flex-wrap: wrap; gap: 4px; }
|
|
258
|
+
body:has(.approval-workspace) .sidebar-bottom { display: none; }
|
|
259
|
+
body:has(.approval-workspace) .app-main { margin-left: 0; }
|
|
260
|
+
body:has(.approval-workspace) .app-topbar { padding: 0 16px; }
|
|
261
|
+
body:has(.approval-workspace) .page-container { padding: 22px 16px; }
|
|
262
|
+
body:has(.approval-workspace) .page-heading,
|
|
263
|
+
body:has(.approval-workspace) .page-footer { flex-wrap: wrap; }
|
|
264
|
+
}
|
|
226
265
|
.eyebrow {
|
|
227
266
|
display: block;
|
|
228
267
|
margin-bottom: 4px;
|
|
@@ -1232,6 +1271,18 @@ details summary {
|
|
|
1232
1271
|
padding-top: 18px;
|
|
1233
1272
|
border-top: 1px solid var(--line);
|
|
1234
1273
|
}
|
|
1274
|
+
.model-overview { display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 26px 0; }
|
|
1275
|
+
body:has(.model-overview) { min-width: 0; }
|
|
1276
|
+
.model-overview h2 { margin: 8px 0; font-size: 24px; font-weight: 500; }
|
|
1277
|
+
.model-overview p, .model-meta, .model-save-status { color: var(--muted); font-size: 12px; line-height: 1.8; }
|
|
1278
|
+
.model-meta { display: flex; gap: 18px; align-items: center; padding: 0 24px 20px; flex-wrap: wrap; }
|
|
1279
|
+
.model-form { padding: 0 24px 24px; }
|
|
1280
|
+
.model-fields { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 24px; }
|
|
1281
|
+
.model-fields input:not([type=checkbox]) { width: 100%; box-sizing: border-box; }
|
|
1282
|
+
.model-enabled { display: flex; gap: 10px; align-items: center; }
|
|
1283
|
+
.model-actions { display: flex; gap: 12px; align-items: center; border-top: 1px solid var(--line); margin-top: 24px; padding-top: 20px; }
|
|
1284
|
+
.model-save-status { flex: 1; }
|
|
1285
|
+
@media (max-width: 700px) { .model-fields { grid-template-columns: 1fr; } .model-actions, .model-overview { flex-wrap: wrap; } .model-save-status { flex-basis: 100%; } }
|
|
1235
1286
|
.modal {
|
|
1236
1287
|
width: 470px;
|
|
1237
1288
|
max-width: 80vw;
|
|
@@ -1575,3 +1626,70 @@ details summary {
|
|
|
1575
1626
|
transition: none !important;
|
|
1576
1627
|
}
|
|
1577
1628
|
}
|
|
1629
|
+
|
|
1630
|
+
/* 助理性格:预设卡片与并排试聊,沿用管理工作台的绿色和纸面层次。 */
|
|
1631
|
+
body:has(.persona-overview) { min-width: 0; }
|
|
1632
|
+
.persona-overview { display: flex; justify-content: space-between; align-items: center; gap: 24px; padding: 22px 4px 28px; }
|
|
1633
|
+
.persona-overview h2 { margin: 8px 0; font-size: 26px; letter-spacing: -.4px; }
|
|
1634
|
+
.persona-overview p { color: var(--secondary); }
|
|
1635
|
+
.persona-default { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding: 20px 24px; border: 1px solid var(--line); border-radius: 12px; background: #fff; margin-bottom: 18px; }
|
|
1636
|
+
.persona-default p { margin: 4px 0 0; font-size: 11px; color: var(--muted); }
|
|
1637
|
+
.persona-default-actions { display: flex; align-items: center; gap: 10px; }
|
|
1638
|
+
.persona-default select { min-width: 180px; }
|
|
1639
|
+
.persona-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 24px; }
|
|
1640
|
+
.persona-card { display: flex; position: relative; gap: 13px; align-items: flex-start; min-width: 0; padding: 21px 18px 42px; border: 1px solid var(--line); border-radius: 12px; background: #fff; text-align: left; white-space: normal; }
|
|
1641
|
+
.persona-card.selected { border-color: #7baf8f; background: #f0f7ed; box-shadow: inset 0 0 0 1px #7baf8f; }
|
|
1642
|
+
.persona-avatar { display: grid; place-items: center; width: 38px; height: 38px; flex-shrink: 0; border: 1px solid #e2eadc; border-radius: 11px; background: #f8faf5; font-size: 22px; }
|
|
1643
|
+
.persona-card-copy { display: block; min-width: 0; }
|
|
1644
|
+
.persona-card-copy strong { display: block; color: #284f3e; font-size: 14px; margin-bottom: 5px; }
|
|
1645
|
+
.persona-card-copy small { display: -webkit-box; overflow: hidden; -webkit-line-clamp: 2; -webkit-box-orient: vertical; color: var(--secondary); font-size: 11px; line-height: 1.8; font-weight: 400; }
|
|
1646
|
+
.persona-card-tags { position: absolute; right: 16px; bottom: 12px; }
|
|
1647
|
+
.persona-card-tags .badge { font-size: 9px; }
|
|
1648
|
+
.persona-editor-area { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 20px; align-items: start; }
|
|
1649
|
+
.persona-form { padding: 27px; background: #fff; border: 1px solid var(--line); border-radius: 14px; }
|
|
1650
|
+
.persona-section-heading { margin-bottom: 23px; }
|
|
1651
|
+
.persona-section-heading h2, .persona-preview h2 { margin: 7px 0; font-size: 20px; }
|
|
1652
|
+
.persona-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 0 16px; }
|
|
1653
|
+
.persona-form .field { margin-bottom: 17px; }
|
|
1654
|
+
.persona-form textarea { resize: vertical; min-height: 120px; }
|
|
1655
|
+
.persona-examples { display: grid; gap: 9px; margin: 5px 0 18px; }
|
|
1656
|
+
.persona-examples strong { font-size: 12px; font-weight: 500; }
|
|
1657
|
+
.persona-examples small { color: var(--muted); font-size: 10px; margin-top: -4px; }
|
|
1658
|
+
.persona-enabled { display: flex; align-items: center; gap: 9px; color: var(--secondary); font-size: 12px; }
|
|
1659
|
+
.persona-enabled input { width: auto; }
|
|
1660
|
+
.persona-save-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 22px; margin-top: 22px; border-top: 1px solid var(--line); }
|
|
1661
|
+
.persona-save-status { font-size: 10px; color: var(--secondary); margin: 0; }
|
|
1662
|
+
.persona-preview { position: sticky; top: 20px; padding: 27px; border: 1px solid #d4dfcb; border-radius: 14px; background: #f4f7ee; }
|
|
1663
|
+
.persona-preview-intro { font-size: 11px; color: #7a886d; margin: 0 0 23px; line-height: 1.9; }
|
|
1664
|
+
.persona-preview-answer { min-height: 220px; max-height: 390px; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; padding: 18px; border: 1px solid #e0e7d7; border-radius: 10px; background: #fffef9; color: #3d5943; font-size: 13px; line-height: 1.9; }
|
|
1665
|
+
.persona-preview-status { min-height: 20px; margin: 10px 0; color: var(--secondary); font-size: 10px; }
|
|
1666
|
+
.persona-preview textarea { width: 100%; resize: vertical; min-height: 75px; }
|
|
1667
|
+
.persona-preview-actions { display: flex; gap: 10px; justify-content: flex-end; margin-top: 15px; }
|
|
1668
|
+
@media (max-width: 1250px) { .persona-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } .persona-editor-area { grid-template-columns: minmax(0, 1fr) minmax(0, .9fr); } .persona-default { flex-wrap: wrap; } }
|
|
1669
|
+
@media (max-width: 900px) {
|
|
1670
|
+
.persona-editor-area { grid-template-columns: minmax(0, 1fr); }
|
|
1671
|
+
.persona-preview { position: static; }
|
|
1672
|
+
.persona-overview { flex-wrap: wrap; }
|
|
1673
|
+
}
|
|
1674
|
+
@media (max-width: 700px) {
|
|
1675
|
+
body:has(.persona-overview, .model-overview) .app-sidebar { position: static; width: auto; padding: 18px; border-right: 0; border-bottom: 1px solid var(--line); }
|
|
1676
|
+
body:has(.persona-overview, .model-overview) .brand { padding: 0 0 10px; }
|
|
1677
|
+
body:has(.persona-overview, .model-overview) .nav-group { margin-top: 8px; }
|
|
1678
|
+
body:has(.persona-overview, .model-overview) .nav-caption { margin: 0 0 5px; }
|
|
1679
|
+
body:has(.persona-overview, .model-overview) .app-sidebar nav { display: flex; flex-wrap: wrap; gap: 5px; }
|
|
1680
|
+
body:has(.persona-overview, .model-overview) .nav-item { min-height: 38px; padding: 8px 10px; margin: 0; gap: 6px; }
|
|
1681
|
+
body:has(.persona-overview, .model-overview) .sidebar-bottom { padding: 10px 0 0; }
|
|
1682
|
+
body:has(.persona-overview, .model-overview) .workspace-label { display: none; }
|
|
1683
|
+
body:has(.persona-overview, .model-overview) .app-main { margin-left: 0; }
|
|
1684
|
+
body:has(.persona-overview, .model-overview) .app-topbar { padding: 0 18px; gap: 10px; }
|
|
1685
|
+
body:has(.persona-overview, .model-overview) .breadcrumb > :not(strong), body:has(.persona-overview, .model-overview) .account-copy { display: none; }
|
|
1686
|
+
body:has(.persona-overview, .model-overview) .page-container { padding: 24px 16px; }
|
|
1687
|
+
body:has(.persona-overview, .model-overview) .page-heading, body:has(.persona-overview, .model-overview) .page-footer { align-items: flex-start; flex-wrap: wrap; }
|
|
1688
|
+
.persona-grid { grid-template-columns: minmax(0, 1fr); }
|
|
1689
|
+
.persona-default { padding: 18px; }
|
|
1690
|
+
.persona-default-actions { width: 100%; flex-wrap: wrap; }
|
|
1691
|
+
.persona-default select { flex: 1; min-width: 0; }
|
|
1692
|
+
.persona-form, .persona-preview { padding: 20px; }
|
|
1693
|
+
.persona-save-row { flex-wrap: wrap; }
|
|
1694
|
+
.persona-overview h2 { font-size: 23px; }
|
|
1695
|
+
}
|