Next.js website for Rocky Mountain Vending company featuring: - Product catalog with Stripe integration - Service areas and parts pages - Admin dashboard with Clerk authentication - SEO optimized pages with JSON-LD structured data Co-authored-by: Cursor <cursoragent@cursor.com>
32 lines
1,005 B
Text
32 lines
1,005 B
Text
import type { CSSProperties } from "react";
|
|
|
|
import { UI } from "../UI.js";
|
|
import type { Modifiers, ModifiersStyles, Styles } from "../types/index.js";
|
|
|
|
/**
|
|
* Returns the computed style for a day based on its modifiers.
|
|
*
|
|
* This function merges the base styles for the day with any styles associated
|
|
* with active modifiers.
|
|
*
|
|
* @param dayModifiers The modifiers applied to the day.
|
|
* @param styles The base styles for the calendar elements.
|
|
* @param modifiersStyles The styles associated with specific modifiers.
|
|
* @returns The computed style for the day.
|
|
*/
|
|
export function getStyleForModifiers(
|
|
dayModifiers: Modifiers,
|
|
styles: Partial<Styles> = {},
|
|
modifiersStyles: Partial<ModifiersStyles> = {}
|
|
): CSSProperties {
|
|
let style: CSSProperties = { ...styles?.[UI.Day] };
|
|
Object.entries(dayModifiers)
|
|
.filter(([, active]) => active === true)
|
|
.forEach(([modifier]) => {
|
|
style = {
|
|
...style,
|
|
...modifiersStyles?.[modifier]
|
|
};
|
|
});
|
|
return style;
|
|
}
|