Add GitHub-style code preview + UE icon in context menu
- New CodeView: syntax-highlighted source (highlight.js, bundled offline) with line numbers for new files, colored unified diff for edits. Covers cpp/c/h, cs, py, js/ts, json/uproject, xml, ini, glsl. hljs tokens mapped to the app palette so it's theme-aware. Replaces the bare DiffView. - Context-menu items now support icons; the Launch Unreal Engine item shows the UE mark. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
34
src/App.css
34
src/App.css
@ -195,7 +195,9 @@ body.resizing{cursor:col-resize!important;user-select:none}
|
||||
/* right-click context menu */
|
||||
.ctxmenu{position:fixed;z-index:300;min-width:210px;padding:5px;border-radius:12px;
|
||||
background:var(--elevated);border:1px solid var(--border);box-shadow:0 18px 44px -12px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.03) inset}
|
||||
.ctxitem{padding:8px 12px;border-radius:8px;font-size:12.5px;color:var(--txt);cursor:pointer;white-space:nowrap;transition:background .1s}
|
||||
.ctxitem{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;font-size:12.5px;color:var(--txt);cursor:pointer;white-space:nowrap;transition:background .1s}
|
||||
.ctx-ic{width:16px;height:16px;flex:0 0 auto;display:grid;place-items:center}
|
||||
.ctx-ic svg{width:16px;height:16px}
|
||||
.ctxitem:hover{background:var(--hover)}
|
||||
.ctxitem.danger{color:var(--del)}
|
||||
.ctxitem.danger:hover{background:rgba(242,99,126,.12)}
|
||||
@ -439,6 +441,36 @@ body.resizing{cursor:col-resize!important;user-select:none}
|
||||
.dl.add{background:rgba(62,207,142,.10)}.dl.add .c{color:var(--diff-add-c)}.dl.add .g{background:var(--add)}
|
||||
.dl.del{background:rgba(242,99,126,.10)}.dl.del .c{color:var(--diff-del-c)}.dl.del .g{background:var(--del)}
|
||||
.dl.hunk{background:rgba(124,110,246,.08)}.dl.hunk .c{color:var(--accent-2)}
|
||||
|
||||
/* code viewer (GitHub-style content + line numbers) */
|
||||
.right-body{flex:1;min-height:0;display:flex;flex-direction:column}
|
||||
.codebar{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:8px 16px;border-bottom:1px solid var(--border-soft);font-size:12px}
|
||||
.cb-badge{flex:0 0 auto;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--muted);
|
||||
background:var(--panel-3);border-radius:7px;padding:2px 9px}
|
||||
.cb-badge.add{color:var(--add);background:rgba(62,207,142,.14)}
|
||||
.cb-badge.diff{color:var(--accent-2);background:rgba(124,110,246,.14)}
|
||||
.cb-name{color:var(--txt);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
||||
.cb-lines{margin-left:auto;flex:0 0 auto;color:var(--faint);font-variant-numeric:tabular-nums}
|
||||
.code{flex:1;min-height:0;overflow:auto;display:flex;font-family:var(--mono);font-size:12.5px;line-height:1.7}
|
||||
.code-gutter{position:sticky;left:0;z-index:1;flex:0 0 auto;display:flex;flex-direction:column;text-align:right;
|
||||
padding:10px 12px 10px 16px;color:var(--faint);background:var(--stage-bg);border-right:1px solid var(--border-soft);
|
||||
user-select:none;font-variant-numeric:tabular-nums}
|
||||
.code.added .code-gutter{color:var(--add);background:rgba(62,207,142,.06)}
|
||||
.code-body{flex:1;margin:0;padding:10px 16px;white-space:pre;overflow:visible}
|
||||
.code-body code{white-space:pre;font-family:inherit;background:none;padding:0}
|
||||
.code.added .code-body{background:rgba(62,207,142,.04)}
|
||||
|
||||
/* highlight.js tokens mapped to the app palette (theme-aware) */
|
||||
.hljs{color:var(--txt);background:none}
|
||||
.hljs-comment,.hljs-quote{color:var(--faint);font-style:italic}
|
||||
.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-name,.hljs-tag{color:var(--accent-2)}
|
||||
.hljs-string,.hljs-attr,.hljs-symbol,.hljs-bullet,.hljs-addition,.hljs-meta-string{color:var(--add)}
|
||||
.hljs-number,.hljs-literal,.hljs-type,.hljs-params,.hljs-template-variable,.hljs-variable{color:var(--edit)}
|
||||
.hljs-title,.hljs-title.function_,.hljs-section,.hljs-class .hljs-title{color:var(--txt);font-weight:600}
|
||||
.hljs-attribute,.hljs-selector-id,.hljs-selector-class,.hljs-selector-attr{color:var(--accent)}
|
||||
.hljs-meta,.hljs-comment.hljs-doctag{color:var(--muted)}
|
||||
.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
|
||||
.hljs-deletion{color:var(--del)}
|
||||
.diff::-webkit-scrollbar{width:10px}.diff::-webkit-scrollbar-thumb{background:var(--panel-3);border-radius:8px}
|
||||
|
||||
/* history */
|
||||
|
||||
Reference in New Issue
Block a user