generated from tpl/obsidian-sample-plugin
Fix colors on bookshelf
This commit is contained in:
parent
5c73b8871c
commit
86ffa3753f
|
@ -1,6 +1,11 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Self from "./Book.svelte";
|
import Self from "./Book.svelte";
|
||||||
import { Color, COLOR_NAMES, type ColorName } from "@utils/color";
|
import {
|
||||||
|
Color,
|
||||||
|
COLOR_NAMES,
|
||||||
|
isColorName,
|
||||||
|
type ColorName,
|
||||||
|
} from "@utils/color";
|
||||||
import BookTiltedDefault from "./designs/tilted/BookTiltedDefault.svelte";
|
import BookTiltedDefault from "./designs/tilted/BookTiltedDefault.svelte";
|
||||||
import BookOnDisplay from "./designs/book/BookOnDisplay.svelte";
|
import BookOnDisplay from "./designs/book/BookOnDisplay.svelte";
|
||||||
import BookText from "./BookText.svelte";
|
import BookText from "./BookText.svelte";
|
||||||
|
@ -45,8 +50,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const color = $derived(
|
const color = $derived(
|
||||||
colorRaw in COLOR_NAMES
|
isColorName(colorRaw)
|
||||||
? Color.fromName(colorRaw as ColorName)
|
? Color.fromName(colorRaw).darken()
|
||||||
: Color.fromCSSColor(colorRaw),
|
: Color.fromCSSColor(colorRaw),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -61,7 +66,7 @@
|
||||||
{title}
|
{title}
|
||||||
{subtitle}
|
{subtitle}
|
||||||
{author}
|
{author}
|
||||||
color={colorRaw}
|
color={color.hex}
|
||||||
{design}
|
{design}
|
||||||
{height}
|
{height}
|
||||||
{width}
|
{width}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Color, COLOR_NAMES, type ColorName } from "@utils/color";
|
import { Color, isColorName, type ColorName } from "@utils/color";
|
||||||
import BookText from "./BookText.svelte";
|
import BookText from "./BookText.svelte";
|
||||||
import BookStackColoredSpine from "./designs/stack/BookStackColoredSpine.svelte";
|
import BookStackColoredSpine from "./designs/stack/BookStackColoredSpine.svelte";
|
||||||
import BookStackDefault from "./designs/stack/BookStackDefault.svelte";
|
import BookStackDefault from "./designs/stack/BookStackDefault.svelte";
|
||||||
|
@ -21,8 +21,8 @@
|
||||||
}: Props = $props();
|
}: Props = $props();
|
||||||
|
|
||||||
const color = $derived(
|
const color = $derived(
|
||||||
colorRaw in COLOR_NAMES
|
isColorName(colorRaw)
|
||||||
? Color.fromName(colorRaw as ColorName)
|
? Color.fromName(colorRaw).darken()
|
||||||
: Color.fromCSSColor(colorRaw),
|
: Color.fromCSSColor(colorRaw),
|
||||||
);
|
);
|
||||||
const textColor = $derived(color.contrastColor.hex);
|
const textColor = $derived(color.contrastColor.hex);
|
||||||
|
|
|
@ -13,6 +13,10 @@ export const COLOR_NAMES = [
|
||||||
"pink",
|
"pink",
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
|
export function isColorName(color: string): color is ColorName {
|
||||||
|
return COLOR_NAMES.includes(color as ColorName);
|
||||||
|
}
|
||||||
|
|
||||||
export type ColorName = (typeof COLOR_NAMES)[number];
|
export type ColorName = (typeof COLOR_NAMES)[number];
|
||||||
export type RGB = [number, number, number];
|
export type RGB = [number, number, number];
|
||||||
|
|
||||||
|
@ -54,6 +58,18 @@ export class Color {
|
||||||
return new Color(this.r, this.g, this.b, alpha);
|
return new Color(this.r, this.g, this.b, alpha);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
darken(amount?: number): Color {
|
||||||
|
return new Color(
|
||||||
|
...chroma([this.r, this.g, this.b]).darken(amount).rgb()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
lighten(amount?: number): Color {
|
||||||
|
return new Color(
|
||||||
|
...chroma([this.r, this.g, this.b]).brighten(amount).rgb()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
static fromName(color: ColorName): Color {
|
static fromName(color: ColorName): Color {
|
||||||
const rawRgb = style
|
const rawRgb = style
|
||||||
.getPropertyValue(`--color-${color}-rgb`)
|
.getPropertyValue(`--color-${color}-rgb`)
|
||||||
|
|
Loading…
Reference in New Issue