diff --git a/projects/ngx-diff/ng-package.json b/projects/ngx-diff/ng-package.json index 5c8d325..b4f8992 100644 --- a/projects/ngx-diff/ng-package.json +++ b/projects/ngx-diff/ng-package.json @@ -3,5 +3,8 @@ "dest": "../../dist/ngx-diff", "lib": { "entryFile": "src/public-api.ts" - } + }, + "assets": [ + "styles/*" + ] } diff --git a/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.html b/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.html index b741969..693930d 100644 --- a/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.html +++ b/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.html @@ -8,7 +8,9 @@ --- {{ diffSummary.numLinesRemoved }} @if (isContentEqual) { -
There are no changes to display.
+
+
There are no changes to display.
+
} @if (!isContentEqual) {
diff --git a/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.scss b/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.scss index 3047ff8..b53ca66 100644 --- a/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.scss +++ b/projects/ngx-diff/src/lib/components/inline-diff/inline-diff.component.scss @@ -1,44 +1,13 @@ -:host { - --ngx-diff-border-color: #888888; - --ngx-diff-font-size: 0.9rem; - --ngx-diff-font-family: Consolas, Courier, monospace; - --ngx-diff-font-color: #000000; - --ngx-diff-line-number-font-color: #484848; - --ngx-diff-line-number-hover-font-color: #ffffff; - --ngx-diff-selected-border-color: #ff8000; - - --ngx-diff-line-number-width: 2rem; - --ngx-diff-border-width: 1px; - --ngx-diff-line-left-padding: 1rem; - --ngx-diff-bottom-spacer-height: 1rem; - --ngx-diff-title-bar-padding: 0.5rem; - --ngx-diff-title-font-weight: 600; - - --ngx-diff-insert-color: #d6ffd6; - --ngx-diff-delete-color: #ffd6d6; - --ngx-diff-equal-color: #ffffff; - --ngx-diff-mix-color: #000; - --ngx-diff-light-mix-percentage: 4%; - --ngx-diff-heavy-mix-percentage: 10%; - - --ngx-diff-inserted-background-color: var(--ngx-diff-insert-color); - --ngx-diff-deleted-background-color: var(--ngx-diff-delete-color); - --ngx-diff-equal-background-color: var(--ngx-diff-equal-color); - --ngx-diff-margin-background-color: color-mix(in srgb, var(--ngx-diff-equal-color), var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage)); - - --ngx-diff-insert-color-darker: color-mix(in srgb, var(--ngx-diff-insert-color), var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage)); - --ngx-diff-insert-color-darkest: color-mix(in srgb, var(--ngx-diff-insert-color), var(--ngx-diff-mix-color) var(--ngx-diff-heavy-mix-percentage)); - - --ngx-diff-delete-color-darker: color-mix(in srgb, var(--ngx-diff-delete-color), var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage)); - --ngx-diff-delete-color-darkest: color-mix(in srgb, var(--ngx-diff-delete-color), var(--ngx-diff-mix-color) var(--ngx-diff-heavy-mix-percentage)); -} - div.inline-diff-title-bar { background-color: var(--ngx-diff-margin-background-color); + color: var(--ngx-diff-font-color); font-family: var(--ngx-diff-font-family); font-size: var(--ngx-diff-font-size); font-weight: var(--ngx-diff-title-font-weight); padding: var(--ngx-diff-title-bar-padding); + border-top: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); + border-left: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); + border-right: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); } div.inline-diff-no-changes-text { @@ -48,10 +17,11 @@ div.inline-diff-no-changes-text { padding: var(--ngx-diff-title-bar-padding); background-color: var(--ngx-diff-equal-background-color); color: var(--ngx-diff-font-color); + flex-grow: 1; } .inline-diff-summary-lines-added { - color: var(--ngx-diff-insert-color-darkest); + color: var(--ngx-diff-insert-color-darkest); } .inline-diff-summary-lines-removed { @@ -159,14 +129,16 @@ div.inline-diff-text { } &.selected { - border-top: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-left: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-bottom: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); + border-top: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-left: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-bottom: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + background-color: var(--ngx-diff-selected-line-background-color); } } .line-content.selected { - border-top: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-right: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-bottom: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); + border-top: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-right: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-bottom: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + background-color: var(--ngx-diff-selected-line-background-color); } diff --git a/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.html b/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.html index 2d1ffa4..a14a5fe 100644 --- a/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.html +++ b/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.html @@ -8,7 +8,9 @@ --- {{ diffSummary.numLinesRemoved }}
@if (isContentEqual) { -
There are no changes to display.
+
+
There are no changes to display.
+
} @if (!isContentEqual) {
diff --git a/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.scss b/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.scss index 3b01979..4ebde11 100644 --- a/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.scss +++ b/projects/ngx-diff/src/lib/components/side-by-side-diff/side-by-side-diff.component.scss @@ -1,181 +1,153 @@ -:host { - --ngx-diff-border-color: #888888; - --ngx-diff-font-size: 0.9rem; - --ngx-diff-font-family: Consolas, Courier, monospace; - --ngx-diff-font-color: #000000; - --ngx-diff-line-number-font-color: #484848; - --ngx-diff-line-number-hover-font-color: #ffffff; - --ngx-diff-selected-border-color: #ff8000; - - --ngx-diff-line-number-width: 2rem; - --ngx-diff-border-width: 1px; - --ngx-diff-line-left-padding: 1rem; - --ngx-diff-bottom-spacer-height: 1rem; - --ngx-diff-title-bar-padding: 0.5rem; - --ngx-diff-title-font-weight: 600; - - --ngx-diff-insert-color: #d6ffd6; - --ngx-diff-delete-color: #ffd6d6; - --ngx-diff-equal-color: #ffffff; - --ngx-diff-mix-color: #000; - --ngx-diff-light-mix-percentage: 4%; - --ngx-diff-heavy-mix-percentage: 10%; - - --ngx-diff-inserted-background-color: var(--ngx-diff-insert-color); - --ngx-diff-deleted-background-color: var(--ngx-diff-delete-color); - --ngx-diff-equal-background-color: var(--ngx-diff-equal-color); - --ngx-diff-margin-background-color: color-mix(in srgb, var(--ngx-diff-equal-color), var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage)); - - --ngx-diff-insert-color-darker: color-mix(in srgb, var(--ngx-diff-insert-color), var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage)); - --ngx-diff-insert-color-darkest: color-mix(in srgb, var(--ngx-diff-insert-color), var(--ngx-diff-mix-color) var(--ngx-diff-heavy-mix-percentage)); - - --ngx-diff-delete-color-darker: color-mix(in srgb, var(--ngx-diff-delete-color), var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage)); - --ngx-diff-delete-color-darkest: color-mix(in srgb, var(--ngx-diff-delete-color), var(--ngx-diff-mix-color) var(--ngx-diff-heavy-mix-percentage)); - } - - div.sbs-diff-title-bar { - background-color: var(--ngx-diff-margin-background-color); - font-family: var(--ngx-diff-font-family); - font-size: var(--ngx-diff-font-size); - font-weight: var(--ngx-diff-title-font-weight); - padding: var(--ngx-diff-title-bar-padding); - } - - div.sbs-diff-no-changes-text { - font-family: var(--ngx-diff-font-family); - font-size: var(--ngx-diff-font-size); - font-weight: var(--ngx-diff-title-font-weight); - padding: var(--ngx-diff-title-bar-padding); +div.sbs-diff-title-bar { + background-color: var(--ngx-diff-margin-background-color); + color: var(--ngx-diff-font-color); + font-family: var(--ngx-diff-font-family); + font-size: var(--ngx-diff-font-size); + font-weight: var(--ngx-diff-title-font-weight); + padding: var(--ngx-diff-title-bar-padding); + border-top: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); + border-left: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); + border-right: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); +} + +div.sbs-diff-no-changes-text { + font-family: var(--ngx-diff-font-family); + font-size: var(--ngx-diff-font-size); + font-weight: var(--ngx-diff-title-font-weight); + padding: var(--ngx-diff-title-bar-padding); + background-color: var(--ngx-diff-equal-background-color); + color: var(--ngx-diff-font-color); +} + +.sbs-diff-summary-lines-added { + color: var(--ngx-diff-insert-color-darkest); +} + +.sbs-diff-summary-lines-removed { + color: var(--ngx-diff-delete-color-darkest); +} + +div.sbs-diff { + display: flex; + flex-direction: row; + border: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); + font-family: var(--ngx-diff-font-family); + + div.sbs-diff-margin:last-of-type { + border-left: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); + } +} + +div.sbs-diff-content { + position: relative; + top: 0px; + left: 0px; + flex-grow: 1; + overflow-x: auto; + overflow-y: hidden; +} + +div.sbs-diff-content-wrapper { + position: absolute; + top: 0px; + left: 0px; + display: flex; + flex-direction: column; + align-items: stretch; + width: 100%; +} + +div.sbs-diff-old { + width: var(--ngx-diff-line-number-width); + text-align: center; + font-size: var(--ngx-diff-font-size); +} + +div.sbs-diff-new { + width: var(--ngx-diff-line-number-width); + text-align: center; + border-right: var(--ngx-diff-border-width) solid var(--border-color); + font-size: var(--ngx-diff-font-size); +} + +div.sbs-diff-text { + white-space: pre; + padding-left: var(--ngx-diff-line-left-padding); + font-size: var(--ngx-diff-font-size); + color: var(--ngx-diff-font-color); +} + +.sbs-diff-equal { + background-color: var(--ngx-diff-margin-background-color); + + &.line-content { background-color: var(--ngx-diff-equal-background-color); - color: var(--ngx-diff-font-color); } +} - .sbs-diff-summary-lines-added { - color: var(--ngx-diff-insert-color-darkest); - } +.sbs-diff-delete { + background-color: var(--ngx-diff-delete-color-darker); - .sbs-diff-summary-lines-removed { - color: var(--ngx-diff-delete-color-darkest); + &.line-content { + background-color: var(--ngx-diff-deleted-background-color); } +} - div.sbs-diff { - display: flex; - flex-direction: row; - border: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); - font-family: var(--ngx-diff-font-family); +.sbs-diff-insert { + background-color: var(--ngx-diff-insert-color-darker); - div.sbs-diff-margin:last-of-type { - border-left: var(--ngx-diff-border-width) solid var(--ngx-diff-border-color); - } + &.line-content { + background-color: var(--ngx-diff-inserted-background-color); } +} - div.sbs-diff-content { - position: relative; - top: 0px; - left: 0px; - flex-grow: 1; - overflow-x: auto; - overflow-y: hidden; - } +.sbs-diff-delete > div { + display: inline-block; +} - div.sbs-diff-content-wrapper { - position: absolute; - top: 0px; - left: 0px; - display: flex; - flex-direction: column; - align-items: stretch; - width: 100%; - } +.sbs-diff-insert > div { + display: inline-block; +} - div.sbs-diff-old { - width: var(--ngx-diff-line-number-width); - text-align: center; - font-size: var(--ngx-diff-font-size); - } - - div.sbs-diff-new { - width: var(--ngx-diff-line-number-width); - text-align: center; - border-right: var(--ngx-diff-border-width) solid var(--border-color); - font-size: var(--ngx-diff-font-size); - } - - div.sbs-diff-text { - white-space: pre; - padding-left: var(--ngx-diff-line-left-padding); - font-size: var(--ngx-diff-font-size); - color: var(--ngx-diff-font-color); - } +.sbs-diff-equal > div { + display: inline-block; +} - .sbs-diff-equal { - background-color: var(--ngx-diff-margin-background-color); +.dmp-margin-bottom-spacer { + height: var(--ngx-diff-bottom-spacer-height); + background-color: var(--ngx-diff-margin-background-color); + border-right: var(--ngx-diff-border-width) solid var(--border-color); - &.line-content { - background-color: var(--ngx-diff-equal-background-color); - } - } - - .sbs-diff-delete { - background-color: var(--ngx-diff-delete-color-darker); - - &.line-content { - background-color: var(--ngx-diff-deleted-background-color); - } - } - - .sbs-diff-insert { - background-color: var(--ngx-diff-insert-color-darker); - - &.line-content { - background-color: var(--ngx-diff-inserted-background-color); - } - } - - .sbs-diff-delete > div { - display: inline-block; + &.line-content { + background-color: var(--ngx-diff-equal-background-color); } +} - .sbs-diff-insert > div { - display: inline-block; - } +.line-selector { + color: var(--ngx-diff-line-number-font-color); - .sbs-diff-equal > div { - display: inline-block; + .sbs-diff-before, + .sbs-diff-after { + width: var(--ngx-diff-line-number-width); + text-align: center; } - .dmp-margin-bottom-spacer { - height: var(--ngx-diff-bottom-spacer-height); - background-color: var(--ngx-diff-margin-background-color); - border-right: var(--ngx-diff-border-width) solid var(--border-color); - - &.line-content { - background-color: var(--ngx-diff-equal-background-color); - } + &:hover { + cursor: pointer; + color: var(--ngx-diff-line-number-hover-font-color); } - .line-selector { - color: var(--ngx-diff-line-number-font-color); - - .sbs-diff-before, .sbs-diff-after { - width: var(--ngx-diff-line-number-width); - text-align: center; - } - - &:hover { - cursor: pointer; - color: var(--ngx-diff-line-number-hover-font-color); - } - - &.selected { - border-top: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-left: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-bottom: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - } + &.selected { + border-top: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-left: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-bottom: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + background-color: var(--ngx-diff-selected-line-background-color); } +} - .line-content.selected { - border-top: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-right: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - border-bottom: var(--ngx-diff-border-width) solid var(--ngx-diff-selected-border-color); - } +.line-content.selected { + border-top: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-right: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + border-bottom: var(--ngx-diff-selected-border-width) solid var(--ngx-diff-selected-border-color); + background-color: var(--ngx-diff-selected-line-background-color); +} diff --git a/projects/ngx-diff/src/lib/pipes/line-number/line-number.pipe.ts b/projects/ngx-diff/src/lib/pipes/line-number/line-number.pipe.ts index a753a64..f99502a 100644 --- a/projects/ngx-diff/src/lib/pipes/line-number/line-number.pipe.ts +++ b/projects/ngx-diff/src/lib/pipes/line-number/line-number.pipe.ts @@ -1,8 +1,8 @@ import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ - name: 'lineNumber', - standalone: true, + name: 'lineNumber', + standalone: true, }) export class LineNumberPipe implements PipeTransform { public transform(value: number | null): string { diff --git a/projects/ngx-diff/src/lib/services/diff-match-patch/diff-match-patch.service.ts b/projects/ngx-diff/src/lib/services/diff-match-patch/diff-match-patch.service.ts index 3550a5b..2a332a6 100644 --- a/projects/ngx-diff/src/lib/services/diff-match-patch/diff-match-patch.service.ts +++ b/projects/ngx-diff/src/lib/services/diff-match-patch/diff-match-patch.service.ts @@ -6,11 +6,7 @@ import { Injectable } from '@angular/core'; providedIn: 'root', }) export class DiffMatchPatchService { - private readonly dmp: DiffMatchPatch; - - public constructor() { - this.dmp = new DiffMatchPatch(); - } + private readonly dmp = new DiffMatchPatch(); public computeLineDiff(text1: string, text2: string): Diff[] { return this.dmp.diff_lineMode(text1, text2); diff --git a/projects/ngx-diff/styles/default-theme.css b/projects/ngx-diff/styles/default-theme.css new file mode 100644 index 0000000..d671cd7 --- /dev/null +++ b/projects/ngx-diff/styles/default-theme.css @@ -0,0 +1,75 @@ +.ngx-diff-light-theme, +.ngx-diff-dark-theme { + --ngx-diff-border-color: #dfdfdf; + --ngx-diff-font-size: 0.9rem; + --ngx-diff-font-family: Consolas, Courier, monospace; + --ngx-diff-font-color: #000; + --ngx-diff-line-number-font-color: #aaaaaa; + --ngx-diff-line-number-hover-font-color: #484848; + + --ngx-diff-selected-border-width: 0; + --ngx-diff-selected-border-color: #000; + --ngx-diff-selected-line-background-color: #d6f1ff; + + --ngx-diff-line-number-width: 2rem; + --ngx-diff-border-width: 1px; + --ngx-diff-line-left-padding: 1rem; + --ngx-diff-bottom-spacer-height: 1rem; + --ngx-diff-title-bar-padding: 0.5rem; + --ngx-diff-title-font-weight: 600; + + --ngx-diff-insert-color: #d6ffd6; + --ngx-diff-delete-color: #ffd6d6; + --ngx-diff-equal-color: #ffffff; + --ngx-diff-mix-color: #000; + --ngx-diff-light-mix-percentage: 4%; + --ngx-diff-heavy-mix-percentage: 10%; + + --ngx-diff-inserted-background-color: var(--ngx-diff-insert-color); + --ngx-diff-deleted-background-color: var(--ngx-diff-delete-color); + --ngx-diff-equal-background-color: var(--ngx-diff-equal-color); + --ngx-diff-margin-background-color: color-mix( + in srgb, + var(--ngx-diff-equal-color), + var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage) + ); + + --ngx-diff-insert-color-darker: color-mix( + in srgb, + var(--ngx-diff-insert-color), + var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage) + ); + --ngx-diff-insert-color-darkest: color-mix( + in srgb, + var(--ngx-diff-insert-color), + var(--ngx-diff-mix-color) var(--ngx-diff-heavy-mix-percentage) + ); + + --ngx-diff-delete-color-darker: color-mix( + in srgb, + var(--ngx-diff-delete-color), + var(--ngx-diff-mix-color) var(--ngx-diff-light-mix-percentage) + ); + --ngx-diff-delete-color-darkest: color-mix( + in srgb, + var(--ngx-diff-delete-color), + var(--ngx-diff-mix-color) var(--ngx-diff-heavy-mix-percentage) + ); +} + +.ngx-diff-dark-theme { + --ngx-diff-border-color: #474747; + + --ngx-diff-font-color: #ffffff; + --ngx-diff-line-number-font-color: #636363; + --ngx-diff-line-number-hover-font-color: #ffffff; + + --ngx-diff-selected-line-background-color: #354a54; + + --ngx-diff-insert-color: #355435; + --ngx-diff-delete-color: #543535; + --ngx-diff-equal-color: #292929; + --ngx-diff-mix-color: #fff; + --ngx-diff-light-mix-percentage: 4%; + --ngx-diff-heavy-mix-percentage: 10%; +} diff --git a/src/app/app.component.html b/src/app/app.component.html index ef82f98..6cbfdf8 100644 --- a/src/app/app.component.html +++ b/src/app/app.component.html @@ -1,4 +1,4 @@ -
+

-
- -
+
+
+
diff --git a/src/styles.scss b/src/styles.scss index ae27217..7cf31b6 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -1,27 +1,19 @@ /* You can add global styles to this file, and also import other style files */ -:root .my-inline-diff-theme { - --ngx-diff-border-color: yellow; - --ngx-diff-selected-border-color: blue; - --ngx-diff-font-family: Consolas; - --ngx-diff-line-number-hover-font-color: white; - --ngx-diff-line-number-width: 2rem; - --ngx-diff-font-size: 1rem; - --ngx-diff-line-left-padding: 1rem; - --ngx-diff-bottom-spacer-height: 1rem; - - --ngx-diff-insert-color-darker: color-mix(in srgb, var(--ngx-diff-insert-color), #000 15%); - --ngx-diff-insert-color-darkest: color-mix(in srgb, var(--ngx-diff-insert-color), #000 30%); - --ngx-diff-delete-color-darker: color-mix(in srgb, var(--ngx-diff-delete-color), #000 15%); - --ngx-diff-delete-color-darkest: color-mix(in srgb, var(--ngx-diff-delete-color), #000 30%); -} +@import '../projects/ngx-diff/styles/default-theme'; +:root .my-inline-diff-theme { + --ngx-diff-border-color: yellow; + --ngx-diff-selected-border-color: blue; + --ngx-diff-font-family: Consolas; + --ngx-diff-line-number-hover-font-color: white; + --ngx-diff-line-number-width: 2rem; + --ngx-diff-font-size: 1rem; + --ngx-diff-line-left-padding: 1rem; + --ngx-diff-bottom-spacer-height: 1rem; -:root .dark-theme .my-inline-diff-theme { - --ngx-diff-border-color: magenta; - --ngx-diff-selected-border-color: cyan; - --ngx-diff-font-family: Consolas; - --ngx-diff-equal-background-color: grey; - --ngx-diff-font-color: indigo; - --ngx-diff-border-width: 4px; + --ngx-diff-insert-color-darker: color-mix(in srgb, var(--ngx-diff-insert-color), #000 15%); + --ngx-diff-insert-color-darkest: color-mix(in srgb, var(--ngx-diff-insert-color), #000 30%); + --ngx-diff-delete-color-darker: color-mix(in srgb, var(--ngx-diff-delete-color), #000 15%); + --ngx-diff-delete-color-darkest: color-mix(in srgb, var(--ngx-diff-delete-color), #000 30%); }