2949984428_claude-skill-sync/styles.css
2949984428 9789f21c58 Release v0.2.0: 按用量排序 Skill 列表
- 解析 Claude Code 会话日志统计 Skill 调用次数,侧边栏按热度排序
- 新增 usageRange 设置(全部历史 / 最近 N 天),结果缓存 60s
- Skill 名自动去插件命名空间前缀,与 vault 裸目录名对齐
- 更新 manifest 0.1.0 → 0.2.0、versions.json、CHANGELOG、README

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-25 02:13:41 +08:00

448 lines
11 KiB
CSS

.css-skill-sync {
padding: 8px 10px;
}
.css-skill-sync .css-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 4px;
}
.css-skill-sync .css-header h3 {
margin: 0;
font-size: 14px;
}
.css-skill-sync .css-btn-row {
display: flex;
gap: 6px;
margin-bottom: 8px;
}
.css-skill-sync .css-btn-row button {
flex: 1;
font-size: 12px;
}
.css-skill-sync .css-meta {
font-size: 11px;
color: var(--text-muted);
margin-bottom: 10px;
word-break: break-all;
}
.css-skill-sync .css-status-card {
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
padding: 8px;
margin-bottom: 10px;
background: var(--background-secondary);
}
.css-skill-sync .css-status-loading {
font-size: 11px;
color: var(--text-muted);
text-align: center;
padding: 4px;
}
.css-skill-sync .css-status-head {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 6px;
font-size: 12px;
}
.css-skill-sync .css-status-title { font-weight: 600; }
.css-skill-sync .css-status-overall {
font-size: 10px;
padding: 2px 6px;
border-radius: 3px;
}
.css-skill-sync .css-status-overall.all-good {
background: rgba(16, 185, 129, 0.15);
color: #10b981;
}
.css-skill-sync .css-status-overall.has-issue {
background: rgba(234, 179, 8, 0.15);
color: #eab308;
}
.css-skill-sync .css-status-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 4px;
}
.css-skill-sync .css-status-cell {
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
padding: 6px 8px;
text-align: center;
}
.css-skill-sync .css-status-cell.css-clickable {
cursor: pointer;
transition: background 0.1s;
}
.css-skill-sync .css-status-cell.css-clickable:hover {
background: var(--background-modifier-hover);
}
.css-skill-sync .css-status-num {
font-size: 16px;
font-weight: 600;
line-height: 1.2;
}
.css-skill-sync .css-status-label {
font-size: 10px;
color: var(--text-muted);
margin-top: 2px;
}
.css-skill-sync .css-status-cell.css-good .css-status-num { color: #10b981; }
.css-skill-sync .css-status-cell.css-warn .css-status-num { color: #eab308; }
.css-skill-sync .css-status-cell.css-bad .css-status-num { color: #ef4444; }
.css-skill-sync .css-status-cell.css-info .css-status-num { color: var(--text-normal); }
.css-skill-sync .css-status-cell.css-mute .css-status-num { color: var(--text-muted); }
.css-skill-sync .css-empty {
font-size: 12px;
color: var(--text-muted);
padding: 12px;
border: 1px dashed var(--background-modifier-border);
border-radius: 6px;
}
.css-skill-sync .css-search-wrap {
position: relative;
display: flex;
align-items: center;
margin-bottom: 8px;
}
.css-skill-sync .css-search-input {
flex: 1;
font-size: 12px;
padding: 4px 56px 4px 8px;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
background: var(--background-primary);
}
.css-skill-sync .css-search-count {
position: absolute;
right: 6px;
top: 50%;
transform: translateY(-50%);
font-size: 11px;
font-weight: 600;
color: var(--text-normal);
background: var(--background-modifier-border);
padding: 1px 8px;
border-radius: 9px;
white-space: nowrap;
pointer-events: none;
}
.css-skill-sync .css-skill-list {
display: flex;
flex-direction: column;
}
.css-skill-sync .css-skill {
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
padding: 8px 10px;
margin-bottom: 6px;
background: var(--background-secondary);
}
.css-skill-sync .css-name-row {
display: flex;
align-items: center;
gap: 4px;
user-select: none;
}
.css-skill-sync .css-toggle {
font-size: 10px;
color: var(--text-muted);
width: 12px;
display: inline-block;
text-align: center;
}
.css-skill-sync .css-name {
font-weight: 600;
font-size: 13px;
}
.css-skill-sync .css-desc {
font-size: 11px;
color: var(--text-muted);
margin: 6px 0 4px 16px;
line-height: 1.4;
padding-left: 6px;
border-left: 2px solid var(--background-modifier-border);
}
.css-skill-sync .css-row {
display: flex;
align-items: center;
gap: 6px;
margin-top: 4px;
font-size: 11px;
}
.css-skill-sync .css-plat {
flex: 1;
color: var(--text-muted);
}
.css-skill-sync .css-badge {
padding: 1px 6px;
border-radius: 3px;
font-size: 10px;
font-weight: 500;
}
.css-skill-sync .css-linked { background: rgba(16, 185, 129, 0.15); color: #10b981; }
.css-skill-sync .css-missing { background: rgba(255, 255, 255, 0.06); color: var(--text-muted); }
.css-skill-sync .css-conflict { background: rgba(239, 68, 68, 0.15); color: #ef4444; }
.css-skill-sync .css-mislinked { background: rgba(234, 179, 8, 0.15); color: #eab308; }
.css-skill-sync .css-warn {
font-size: 10px;
color: var(--text-warning, #eab308);
margin-left: 4px;
}
.css-skill-sync .css-row button {
font-size: 10px;
padding: 2px 8px;
height: auto;
}
.css-platform-edit {
border-left: 2px solid var(--background-modifier-border);
padding-left: 8px;
margin-bottom: 4px;
}
.css-skill-sync-modal .css-import-hint {
font-size: 12px;
color: var(--text-muted);
margin: 4px 0 12px;
line-height: 1.5;
}
.css-skill-sync-modal .css-import-ctrl {
display: flex;
gap: 6px;
align-items: center;
margin-bottom: 8px;
}
.css-skill-sync-modal .css-import-count {
margin-left: auto;
font-size: 11px;
color: var(--text-muted);
}
.css-skill-sync-modal .css-import-list {
max-height: 50vh;
overflow-y: auto;
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
padding: 4px;
}
.css-skill-sync-modal .css-import-row {
display: flex;
align-items: flex-start;
gap: 8px;
padding: 6px 8px;
border-radius: 4px;
}
.css-skill-sync-modal .css-import-row:hover {
background: var(--background-modifier-hover);
}
.css-skill-sync-modal .css-import-row label {
flex: 1;
cursor: pointer;
font-size: 12px;
}
.css-skill-sync-modal .css-del-btn {
font-size: 11px;
padding: 2px 8px;
background: transparent;
border: 1px solid var(--background-modifier-border);
color: var(--text-muted);
border-radius: 3px;
cursor: pointer;
white-space: nowrap;
}
.css-skill-sync-modal .css-del-btn:hover {
border-color: #ef4444;
color: #ef4444;
}
.css-skill-sync-modal .css-del-btn.mod-warning {
background: #ef4444;
border-color: #ef4444;
color: #fff;
}
.css-skill-sync-modal .css-source {
color: var(--text-muted);
font-size: 11px;
}
.css-skill-sync-modal .css-source-path {
font-size: 10px;
color: var(--text-faint);
word-break: break-all;
margin-top: 2px;
}
.css-skill-sync-modal .css-empty {
color: var(--text-muted);
padding: 16px;
text-align: center;
}
.css-skill-sync-modal .css-custom-row {
display: flex;
gap: 6px;
margin-bottom: 10px;
}
.css-skill-sync-modal .css-custom-row input {
flex: 1;
font-size: 12px;
padding: 4px 8px;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
background: var(--background-primary);
}
.css-skill-sync-modal .css-import-row input[type="checkbox"]:disabled + label {
opacity: 0.5;
}
/* —— 添加平台 modal —— */
.css-add-platform-modal .css-search-wrap {
margin-bottom: 8px;
}
.css-add-platform-modal .css-preset-list {
max-height: 320px;
overflow-y: auto;
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
margin-bottom: 10px;
}
.css-add-platform-modal .css-preset-row {
display: flex;
align-items: center;
gap: 8px;
padding: 4px 8px;
font-size: 12px;
border-bottom: 1px solid var(--background-modifier-border);
}
.css-add-platform-modal .css-preset-row:last-child {
border-bottom: none;
}
.css-add-platform-modal .css-preset-row:hover {
background: var(--background-modifier-hover);
}
.css-add-platform-modal .css-preset-row label {
flex: 1;
display: flex;
align-items: center;
gap: 8px;
cursor: pointer;
margin: 0;
}
.css-add-platform-modal .css-preset-name {
font-weight: 500;
min-width: 110px;
}
.css-add-platform-modal .css-preset-path {
color: var(--text-muted);
font-size: 11px;
font-family: var(--font-monospace);
flex: 1;
}
.css-add-platform-modal .css-preset-tag {
font-size: 10px;
color: var(--text-muted);
padding: 1px 6px;
background: var(--background-modifier-border);
border-radius: 3px;
}
.css-add-platform-modal .css-preset-exists {
opacity: 0.5;
}
.css-add-platform-modal .css-custom-toggle {
font-size: 12px;
background: transparent;
border: 1px dashed var(--background-modifier-border);
color: var(--text-muted);
padding: 4px 10px;
border-radius: 4px;
cursor: pointer;
width: 100%;
margin-bottom: 8px;
}
.css-add-platform-modal .css-custom-toggle:hover {
background: var(--background-modifier-hover);
color: var(--text-normal);
}
.css-add-platform-modal .css-custom-wrap {
margin-bottom: 10px;
}
.css-skill-sync .css-name-link {
cursor: pointer;
}
.css-skill-sync .css-name-link:hover {
color: var(--text-accent);
text-decoration: underline;
}
.css-skill-sync .css-mtime {
font-size: 10px;
color: var(--text-faint);
flex-shrink: 0;
margin-left: auto;
}
.css-skill-sync-notice {
cursor: pointer;
}
/* 调用次数统计条:时间段控 + 排序 */
.css-skill-sync .css-usage-bar {
display: flex;
align-items: center;
gap: 8px;
margin-bottom: 8px;
}
/* 段控:全部 / 7天 / 30天 */
.css-skill-sync .css-seg {
display: inline-flex;
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
overflow: hidden;
}
.css-skill-sync .css-seg-btn {
font-size: 11px;
padding: 2px 9px;
border: none;
border-radius: 0;
background: var(--background-primary);
color: var(--text-muted);
box-shadow: none;
cursor: pointer;
}
.css-skill-sync .css-seg-btn:not(:last-child) {
border-right: 1px solid var(--background-modifier-border);
}
.css-skill-sync .css-seg-btn:hover {
background: var(--background-modifier-hover);
}
.css-skill-sync .css-seg-btn.is-active {
background: var(--interactive-accent);
color: var(--text-on-accent);
}
/* 按次数排序 */
.css-skill-sync .css-sort-btn {
margin-left: auto;
font-size: 11px;
padding: 2px 8px;
border: 1px solid var(--background-modifier-border);
border-radius: 6px;
background: var(--background-primary);
color: var(--text-muted);
box-shadow: none;
cursor: pointer;
white-space: nowrap;
}
.css-skill-sync .css-sort-btn:hover {
background: var(--background-modifier-hover);
}
.css-skill-sync .css-sort-btn.is-active {
background: var(--interactive-accent);
color: var(--text-on-accent);
border-color: var(--interactive-accent);
}
/* 每个 skill 名字行后的次数徽标(热度四档) */
.css-skill-sync .css-uc {
flex-shrink: 0;
margin-left: 6px;
font-size: 10px;
font-weight: 600;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
.css-skill-sync .css-uc-hot { color: var(--color-red, #e5534b); }
.css-skill-sync .css-uc-warm { color: var(--color-orange, #d2904a); }
.css-skill-sync .css-uc-cool { color: var(--text-accent); }
.css-skill-sync .css-uc-zero { color: var(--text-faint); font-weight: 400; }