mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-10-21 06:26:26 +00:00
7bd9e08016
* feat: add vacay school holiday overlays * fix(vacay): remove SOH control character corruption in locale files 13 of 22 vacay locale files contained a 0x01 (SOH) control character that corrupted the closing }; token. This broke the shared package build (tsdown/rolldown PARSE_ERROR: Invalid Character) and cascaded to all client tests failing to resolve @trek/shared. Affected locales: ar, br, ca, cs, es, fr, gr, hu, id, it, ja, ko, nl, pl, ru, sv, tr, uk, vi, zh, zh-TW * fix(vacay): school-holiday migration order, i18n dupes, settings layout - Move the school-holiday columns migration to the end of the migrations array. It sat before the #1435/#1281 migrations, which every existing DB had already run, so the runner skipped it and school_holidays_enabled / vacay_holiday_calendars.type were never created — PUT /addons/vacay/plan then 500'd with "no such column". - Remove duplicate i18n keys in 13 locale vacay files (TS1117) that failed the shared + client typechecks. - Move the school-holidays block into the right column, directly under public holidays, instead of full-width below everything. - Add the school-holidays section to the mobile Vacay settings sheet. * feat(vacay): modern school-holiday day styling + combined hover tooltip - Replace the stacked 2px underlines with a single rounded accent band and a soft background wash on plain school-break days (desktop + mobile — mobile did not render school holidays at all before). - Fold school holidays into the custom day tooltip under a divider instead of a separate native title, and show the tooltip on every set day (whole vacation days too), not only half days / shared calendars. --------- Co-authored-by: Otto <uif86164@automotive-wan.com> Co-authored-by: Maurice <mauriceboe@icloud.com>
28 lines
1.1 KiB
TypeScript
28 lines
1.1 KiB
TypeScript
// Shared visual treatment for school-holiday days, used by the desktop month card
|
|
// (VacayMonthCard) and the mobile month grid (vacayDayModel/MVacayMonth) so both
|
|
// surfaces render the layer identically.
|
|
|
|
/**
|
|
* Bottom accent band for a school-holiday day: a single rounded bar in the
|
|
* calendar colour, split into equal segments when several school calendars
|
|
* cover the same day (capped at three).
|
|
*/
|
|
export function schoolHolidayBand(colors: string[]): string {
|
|
if (colors.length === 0) return 'transparent'
|
|
if (colors.length === 1) return colors[0]
|
|
const seg = colors.slice(0, 3)
|
|
const stops = seg
|
|
.map((c, i) => `${c} ${Math.round((i * 100) / seg.length)}% ${Math.round(((i + 1) * 100) / seg.length)}%`)
|
|
.join(', ')
|
|
return `linear-gradient(90deg, ${stops})`
|
|
}
|
|
|
|
/**
|
|
* Soft background wash for a plain day that falls inside a school break — light
|
|
* enough to read as a gentle range highlight without competing with the stronger
|
|
* public-holiday / person fills.
|
|
*/
|
|
export function schoolHolidayWash(color: string): string {
|
|
return `color-mix(in srgb, ${color} 15%, transparent)`
|
|
}
|