diff --git a/src/page-components/color-compare/CompareLayout.module.css b/src/page-components/color-compare/CompareLayout.module.css
index 2bc395e..fcee504 100644
--- a/src/page-components/color-compare/CompareLayout.module.css
+++ b/src/page-components/color-compare/CompareLayout.module.css
@@ -4,6 +4,9 @@
flex-direction: row;
align-items: stretch;
gap: var(--spacing-m);
+ &:not(:first-of-type) {
+ margin-top: var(--spacing-s);
+ }
.element {
display: flex;
flex-direction: row;
@@ -20,6 +23,11 @@
font-size: var(--font-size-xs);
line-height: var(--font-size-xs);
}
+ .element_value {
+ align-self: flex-end;
+ font-size: var(--font-size-s);
+ line-height: var(--font-size-s);
+ }
}
}
}
diff --git a/src/page-components/color-compare/ShadeScale.tsx b/src/page-components/color-compare/ShadeScale.tsx
new file mode 100644
index 0000000..29ee39c
--- /dev/null
+++ b/src/page-components/color-compare/ShadeScale.tsx
@@ -0,0 +1,54 @@
+import { useMemo } from 'react';
+import { MixReversing } from '../../color_functions/color_module';
+import { useColorFunction } from '../../ColorFunctionContext';
+import styles from './CompareLayout.module.css';
+import { CompareMethodProps } from './share-props';
+
+const defaultMixResult: MixReversing = {
+ r_factor: 0,
+ g_factor: 0,
+ b_factor: 0,
+ average: 0,
+};
+
+export function ShadeScale({ basic = '000000', compare = '000000' }: CompareMethodProps) {
+ const { colorFn } = useColorFunction();
+ const mixFactors = useMemo(() => {
+ if (!colorFn) {
+ return defaultMixResult;
+ }
+ try {
+ const factor = colorFn.shade_scale(basic, compare);
+ return factor;
+ } catch (e) {
+ console.error('[Reversing Tint]', e);
+ }
+ return defaultMixResult;
+ }, [basic, compare]);
+
+ return (
+
+
Compare in RGB Shade.
+
+
+
R
+
{(mixFactors.r_factor * 100).toFixed(2)}%
+
+
+
G
+
{(mixFactors.g_factor * 100).toFixed(2)}%
+
+
+
B
+
{(mixFactors.b_factor * 100).toFixed(2)}%
+
+
+
+
+
Average
+
{(mixFactors.average * 100).toFixed(2)}%
+
+
+
+ );
+}
diff --git a/src/page-components/color-compare/TintScale.tsx b/src/page-components/color-compare/TintScale.tsx
new file mode 100644
index 0000000..6b9aa9a
--- /dev/null
+++ b/src/page-components/color-compare/TintScale.tsx
@@ -0,0 +1,54 @@
+import { useMemo } from 'react';
+import { MixReversing } from '../../color_functions/color_module';
+import { useColorFunction } from '../../ColorFunctionContext';
+import styles from './CompareLayout.module.css';
+import { CompareMethodProps } from './share-props';
+
+const defaultMixResult: MixReversing = {
+ r_factor: 0,
+ g_factor: 0,
+ b_factor: 0,
+ average: 0,
+};
+
+export function TintScale({ basic = '000000', compare = '000000' }: CompareMethodProps) {
+ const { colorFn } = useColorFunction();
+ const mixFactors = useMemo(() => {
+ if (!colorFn) {
+ return defaultMixResult;
+ }
+ try {
+ const factor = colorFn.tint_scale(basic, compare);
+ return factor;
+ } catch (e) {
+ console.error('[Reversing Tint]', e);
+ }
+ return defaultMixResult;
+ }, [basic, compare]);
+
+ return (
+
+
Compare in RGB Tint.
+
+
+
R
+
{(mixFactors.r_factor * 100).toFixed(2)}%
+
+
+
G
+
{(mixFactors.g_factor * 100).toFixed(2)}%
+
+
+
B
+
{(mixFactors.b_factor * 100).toFixed(2)}%
+
+
+
+
+
Average
+
{(mixFactors.average * 100).toFixed(2)}%
+
+
+
+ );
+}
diff --git a/src/pages/Compare.tsx b/src/pages/Compare.tsx
index e03a999..bc2d6ab 100644
--- a/src/pages/Compare.tsx
+++ b/src/pages/Compare.tsx
@@ -6,6 +6,8 @@ import { HCTCompare } from '../page-components/color-compare/HCTCompare';
import { HSLCompare } from '../page-components/color-compare/HSLCompare';
import { OklchCompare } from '../page-components/color-compare/OKLCHCompare';
import { RGBCompare } from '../page-components/color-compare/RGBCompare';
+import { ShadeScale } from '../page-components/color-compare/ShadeScale';
+import { TintScale } from '../page-components/color-compare/TintScale';
import styles from './Compare.module.css';
export function ColorCompare() {
@@ -36,6 +38,8 @@ export function ColorCompare() {
+
+