|
|
|
@@ -11,17 +11,22 @@
|
|
|
|
|
|
|
|
|
|
<!-- ── 导入区域 ── -->
|
|
|
|
|
<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 style="font-weight:600;margin-bottom:8px">📦 导入 ZIP 包</div>
|
|
|
|
|
<input type="file" id="zip-file" accept=".zip" style="margin-bottom:8px;color:var(--text)">
|
|
|
|
|
<button class="btn btn-sm btn-filled" onclick="importZip()">上传安装</button>
|
|
|
|
|
<span id="zip-status" style="margin-left:8px;font-size:.8rem"></span>
|
|
|
|
|
<div class="import-card">
|
|
|
|
|
<div class="card-title">📦 导入 ZIP 包</div>
|
|
|
|
|
<label class="file-label" for="zip-file">选择 .zip 文件</label>
|
|
|
|
|
<input type="file" id="zip-file" accept=".zip" class="file-input">
|
|
|
|
|
<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 class="card" style="flex:1;min-width:280px;padding:12px">
|
|
|
|
|
<div style="font-weight:600;margin-bottom:8px">📥 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)">
|
|
|
|
|
<button class="btn btn-sm btn-filled" onclick="importGit()">Clone 安装</button>
|
|
|
|
|
<span id="git-status" style="margin-left:8px;font-size:.8rem"></span>
|
|
|
|
|
<div class="import-card">
|
|
|
|
|
<div class="card-title">📥 Git Clone 安装</div>
|
|
|
|
|
<input id="git-url" class="text-input" placeholder="https://github.com/user/repo.git">
|
|
|
|
|
<div class="card-actions">
|
|
|
|
|
<button class="btn btn-sm btn-filled" onclick="importGit()">Clone 安装</button>
|
|
|
|
|
<span id="git-status" class="status-text"></span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
@@ -41,6 +46,16 @@
|
|
|
|
|
.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 .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>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|