style: 插件导入卡片 CSS — 等高 / 文件按钮 / 纵向布局
This commit is contained in:
@@ -438,5 +438,27 @@
|
|||||||
"framework.command.execute"
|
"framework.command.execute"
|
||||||
],
|
],
|
||||||
"timestamp": 29119.62760988
|
"timestamp": 29119.62760988
|
||||||
|
},
|
||||||
|
"4a860528": {
|
||||||
|
"plugin_name": "example_plugin",
|
||||||
|
"permissions": [
|
||||||
|
"plugin.example.read",
|
||||||
|
"plugin.example.write",
|
||||||
|
"plugin.example.execute",
|
||||||
|
"framework.event.subscribe",
|
||||||
|
"framework.command.execute"
|
||||||
|
],
|
||||||
|
"timestamp": 29166.970752102
|
||||||
|
},
|
||||||
|
"57820181": {
|
||||||
|
"plugin_name": "sentinel",
|
||||||
|
"permissions": [
|
||||||
|
"plugin.sentinel.read",
|
||||||
|
"plugin.sentinel.write",
|
||||||
|
"plugin.network.access",
|
||||||
|
"framework.event.subscribe",
|
||||||
|
"framework.command.execute"
|
||||||
|
],
|
||||||
|
"timestamp": 29166.973069289
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -101,7 +101,7 @@ commands:
|
|||||||
permissions:
|
permissions:
|
||||||
- framework.command.test
|
- framework.command.test
|
||||||
source: internal
|
source: internal
|
||||||
last_updated: 29119.596258526
|
last_updated: 29166.959137102
|
||||||
plugin_commands:
|
plugin_commands:
|
||||||
example_plugin:
|
example_plugin:
|
||||||
echo: *id001
|
echo: *id001
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
http_port: 4200
|
http_port: 4200
|
||||||
last_updated: 29119.62443889
|
last_updated: 29166.971388508
|
||||||
plugin_routes:
|
plugin_routes:
|
||||||
example_plugin:
|
example_plugin:
|
||||||
- methods:
|
- methods:
|
||||||
|
|||||||
@@ -11,17 +11,22 @@
|
|||||||
|
|
||||||
<!-- ── 导入区域 ── -->
|
<!-- ── 导入区域 ── -->
|
||||||
<div style="display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap;align-items:flex-start">
|
<div style="display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap;align-items:flex-start">
|
||||||
<div class="card" style="flex:1;min-width:280px;padding:12px">
|
<div class="import-card">
|
||||||
<div style="font-weight:600;margin-bottom:8px">📦 导入 ZIP 包</div>
|
<div class="card-title">📦 导入 ZIP 包</div>
|
||||||
<input type="file" id="zip-file" accept=".zip" style="margin-bottom:8px;color:var(--text)">
|
<label class="file-label" for="zip-file">选择 .zip 文件</label>
|
||||||
<button class="btn btn-sm btn-filled" onclick="importZip()">上传安装</button>
|
<input type="file" id="zip-file" accept=".zip" class="file-input">
|
||||||
<span id="zip-status" style="margin-left:8px;font-size:.8rem"></span>
|
<div class="card-actions">
|
||||||
|
<button class="btn btn-sm btn-filled" onclick="importZip()">上传安装</button>
|
||||||
|
<span id="zip-status" class="status-text"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card" style="flex:1;min-width:280px;padding:12px">
|
<div class="import-card">
|
||||||
<div style="font-weight:600;margin-bottom:8px">📥 Git Clone 安装</div>
|
<div class="card-title">📥 Git Clone 安装</div>
|
||||||
<input id="git-url" placeholder="https://github.com/user/repo.git" style="width:100%;padding:6px 8px;margin-bottom:8px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--shape-xs)">
|
<input id="git-url" class="text-input" placeholder="https://github.com/user/repo.git">
|
||||||
<button class="btn btn-sm btn-filled" onclick="importGit()">Clone 安装</button>
|
<div class="card-actions">
|
||||||
<span id="git-status" style="margin-left:8px;font-size:.8rem"></span>
|
<button class="btn btn-sm btn-filled" onclick="importGit()">Clone 安装</button>
|
||||||
|
<span id="git-status" class="status-text"></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -41,6 +46,16 @@
|
|||||||
.plugin-row .info { flex:1;min-width:0 }
|
.plugin-row .info { flex:1;min-width:0 }
|
||||||
.plugin-row .name { font-weight:600 } .plugin-row .ver { font-size:.75rem;color:var(--text-dim) }
|
.plugin-row .name { font-weight:600 } .plugin-row .ver { font-size:.75rem;color:var(--text-dim) }
|
||||||
.plugin-row .error-tag { font-size:.75rem;color:var(--error) }
|
.plugin-row .error-tag { font-size:.75rem;color:var(--error) }
|
||||||
|
.import-card { flex:1;min-width:280px;padding:14px;background:var(--md-sys-color-surface-container);border-radius:var(--shape-sm);display:flex;flex-direction:column;gap:8px }
|
||||||
|
.import-card .card-title { font-weight:600 }
|
||||||
|
.import-card .card-actions { display:flex;align-items:center;gap:8px;margin-top:auto }
|
||||||
|
.import-card .status-text { font-size:.8rem;white-space:nowrap }
|
||||||
|
.import-card .text-input { width:100%;padding:6px 8px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--shape-xs);box-sizing:border-box }
|
||||||
|
.import-card .text-input:focus { outline:1px solid var(--primary) }
|
||||||
|
.file-input { color:var(--text);font-size:.85rem }
|
||||||
|
.file-input::file-selector-button { padding:5px 12px;background:var(--md-sys-color-surface-container-lowest);color:var(--text);border:1px solid var(--border);border-radius:var(--shape-xs);cursor:pointer;margin-right:8px }
|
||||||
|
.file-input::file-selector-button:hover { background:var(--md-sys-color-surface-container-highest) }
|
||||||
|
.file-label { font-size:.8rem;color:var(--text-dim) }
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
Reference in New Issue
Block a user