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">
 | 
			
		||||
	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 BookOnDisplay from "./designs/book/BookOnDisplay.svelte";
 | 
			
		||||
	import BookText from "./BookText.svelte";
 | 
			
		||||
| 
						 | 
				
			
			@ -45,8 +50,8 @@
 | 
			
		|||
	}
 | 
			
		||||
 | 
			
		||||
	const color = $derived(
 | 
			
		||||
		colorRaw in COLOR_NAMES
 | 
			
		||||
			? Color.fromName(colorRaw as ColorName)
 | 
			
		||||
		isColorName(colorRaw)
 | 
			
		||||
			? Color.fromName(colorRaw).darken()
 | 
			
		||||
			: Color.fromCSSColor(colorRaw),
 | 
			
		||||
	);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -61,7 +66,7 @@
 | 
			
		|||
				{title}
 | 
			
		||||
				{subtitle}
 | 
			
		||||
				{author}
 | 
			
		||||
				color={colorRaw}
 | 
			
		||||
				color={color.hex}
 | 
			
		||||
				{design}
 | 
			
		||||
				{height}
 | 
			
		||||
				{width}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
<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 BookStackColoredSpine from "./designs/stack/BookStackColoredSpine.svelte";
 | 
			
		||||
	import BookStackDefault from "./designs/stack/BookStackDefault.svelte";
 | 
			
		||||
| 
						 | 
				
			
			@ -21,8 +21,8 @@
 | 
			
		|||
	}: Props = $props();
 | 
			
		||||
 | 
			
		||||
	const color = $derived(
 | 
			
		||||
		colorRaw in COLOR_NAMES
 | 
			
		||||
			? Color.fromName(colorRaw as ColorName)
 | 
			
		||||
		isColorName(colorRaw)
 | 
			
		||||
			? Color.fromName(colorRaw).darken()
 | 
			
		||||
			: Color.fromCSSColor(colorRaw),
 | 
			
		||||
	);
 | 
			
		||||
	const textColor = $derived(color.contrastColor.hex);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,6 +13,10 @@ export const COLOR_NAMES = [
 | 
			
		|||
	"pink",
 | 
			
		||||
] 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 RGB = [number, number, number];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +58,18 @@ export class Color {
 | 
			
		|||
		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 {
 | 
			
		||||
		const rawRgb = style
 | 
			
		||||
			.getPropertyValue(`--color-${color}-rgb`)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue