andy-stack_vaultkeeper-ai/Styles/diff2html_styles.css

191 lines
6 KiB
CSS
Raw Normal View History

/*
* Remap diff2html's CSS variables to Obsidian's theme variables.
* Because .d2h-wrapper is more specific than :root (where diff2html defines
* its defaults), these win without !important and any Obsidian theme that
* overrides --background-primary, --color-red, etc. flows through for free.
*/
.d2h-wrapper {
--d2h-bg-color: var(--background-primary);
--d2h-border-color: var(--background-modifier-border);
--d2h-line-border-color: var(--background-modifier-border);
--d2h-file-header-bg-color: var(--background-secondary);
--d2h-file-header-border-color: var(--background-modifier-border);
--d2h-info-bg-color: var(--background-secondary);
--d2h-info-border-color: var(--background-modifier-border);
--d2h-empty-placeholder-bg-color: var(--background-secondary-alt);
--d2h-empty-placeholder-border-color: var(--background-modifier-border);
--d2h-selected-color: var(--background-modifier-hover);
--d2h-dim-color: var(--text-muted);
--d2h-ins-bg-color: rgba(var(--color-green-rgb), 0.15);
--d2h-ins-border-color: rgba(var(--color-green-rgb), 0.4);
--d2h-ins-highlight-bg-color: rgba(var(--color-green-rgb), 0.35);
--d2h-ins-label-color: var(--color-green);
--d2h-del-bg-color: rgba(var(--color-red-rgb), 0.15);
--d2h-del-border-color: rgba(var(--color-red-rgb), 0.4);
--d2h-del-highlight-bg-color: rgba(var(--color-red-rgb), 0.35);
--d2h-del-label-color: var(--color-red);
--d2h-change-del-color: rgba(var(--color-yellow-rgb), 0.2);
--d2h-change-ins-color: rgba(var(--color-green-rgb), 0.2);
--d2h-change-label-color: var(--color-yellow);
--d2h-moved-label-color: var(--color-blue);
/*
* Dark-scheme twins: diff2html applies .d2h-dark-color-scheme or
* .d2h-auto-color-scheme (via prefers-color-scheme) and switches its rules
* to the --d2h-dark-* variables. Point those at the same Obsidian
* variables Obsidian itself swaps --background-primary etc. when the
* vault theme toggles, so one mapping covers both modes.
*/
--d2h-dark-color: var(--text-normal);
--d2h-dark-bg-color: var(--background-primary);
--d2h-dark-border-color: var(--background-modifier-border);
--d2h-dark-dim-color: var(--text-muted);
--d2h-dark-line-border-color: var(--background-modifier-border);
--d2h-dark-file-header-bg-color: var(--background-secondary);
--d2h-dark-file-header-border-color: var(--background-modifier-border);
--d2h-dark-empty-placeholder-bg-color: var(--background-secondary-alt);
--d2h-dark-empty-placeholder-border-color: var(--background-modifier-border);
--d2h-dark-selected-color: var(--background-modifier-hover);
--d2h-dark-ins-bg-color: rgba(var(--color-green-rgb), 0.15);
--d2h-dark-ins-border-color: rgba(var(--color-green-rgb), 0.4);
--d2h-dark-ins-highlight-bg-color: rgba(var(--color-green-rgb), 0.35);
--d2h-dark-ins-label-color: var(--color-green);
--d2h-dark-del-bg-color: rgba(var(--color-red-rgb), 0.15);
--d2h-dark-del-border-color: rgba(var(--color-red-rgb), 0.4);
--d2h-dark-del-highlight-bg-color: rgba(var(--color-red-rgb), 0.35);
--d2h-dark-del-label-color: var(--color-red);
--d2h-dark-change-del-color: rgba(var(--color-yellow-rgb), 0.2);
--d2h-dark-change-ins-color: rgba(var(--color-green-rgb), 0.2);
--d2h-dark-change-label-color: var(--color-yellow);
--d2h-dark-moved-label-color: var(--color-blue);
color: var(--text-normal);
}
/* ============================== */
/* Structural / layout fixes */
/* ============================== */
.d2h-wrapper {
container-type: size;
container-name: diff-wrapper;
transform: translateZ(0);
height: 100cqh;
}
.d2h-file-header {
height: 35px;
padding: 0;
}
.d2h-file-name-wrapper {
padding-left: 8px;
}
.d2h-code-linenumber {
cursor: default;
}
.d2h-file-diff {
overflow: auto;
max-height: calc(100cqh - 37px);
}
.d2h-diff-table {
position: relative;
}
.d2h-code-side-linenumber {
position: relative;
display: table-cell;
}
/* ============================== */
/* Mobile Controls */
/* ============================== */
.diff-mobile-controls {
display: none; /* Hidden by default (desktop) */
}
/* Avoid the floating obsidian controls */
@media (max-width: 600px) {
.diff-mobile-controls {
margin-bottom: 85px;
}
}
.diff-view-mobile .diff-mobile-controls {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: var(--size-4-2);
position: absolute;
bottom: 0;
left: 0;
right: 0;
padding: var(--size-4-3);
z-index: 10;
}
.diff-mobile-controls .diff-mobile-button {
min-height: 44px;
font-size: var(--font-ui-medium);
font-weight: var(--font-semibold);
border-radius: var(--button-radius);
cursor: pointer;
border-width: var(--size-2-1);
border-style: solid;
background-color: var(--background-primary);
}
.diff-mobile-controls .diff-mobile-accept {
color: var(--color-green);
border-color: var(--color-green);
}
.diff-mobile-controls .diff-mobile-accept:active {
background-color: color-mix(
in srgb,
var(--color-green) 25%,
white 10%
);
}
.diff-mobile-controls .diff-mobile-discuss {
color: var(--interactive-accent);
border-color: var(--interactive-accent);
}
.diff-mobile-controls .diff-mobile-discuss:active {
background-color: color-mix(
in srgb,
var(--interactive-accent) 25%,
white 10%
);
}
.diff-mobile-controls .diff-mobile-reject {
color: var(--color-red);
border-color: var(--color-red);
}
.diff-mobile-controls .diff-mobile-reject:active {
background-color: color-mix(
in srgb,
var(--color-red) 25%,
white 10%
);
}
/* Adjust diff height on mobile to account for buttons */
.diff-view-mobile .d2h-file-diff {
max-height: calc(100cqh - 37px - 40px);
}
/* Avoid the floating obsidian controls */
@media (max-width: 600px) {
.diff-view-mobile .d2h-file-diff {
max-height: calc(100cqh - 37px - 120px);
}
}