From 66c13bc08abe786d879efd6623d64cbc20353b67 Mon Sep 17 00:00:00 2001 From: Maddox Werts Date: Sat, 2 Aug 2025 15:01:06 -0400 Subject: [PATCH] Created Calendar Widget --- project/ui/calendar.slint | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 project/ui/calendar.slint diff --git a/project/ui/calendar.slint b/project/ui/calendar.slint new file mode 100644 index 0000000..d4a337a --- /dev/null +++ b/project/ui/calendar.slint @@ -0,0 +1,43 @@ +import { Palette } from "std-widgets.slint"; + +export component CalendarGrid inherits VerticalLayout { + in property start: 0; + in property end: 0; + property reversed: end < start; + + spacing: 15px; + // Day headers (S, M, T, W, T, F, S) + HorizontalLayout { + spacing: 20px; + alignment: center; + for day in ["S", "M", "T", "W", "T", "F", "S"]: Text { + text: day; + font-size: 1.25rem; + font-weight: 600; + horizontal-alignment: center; + width: 45px; + } + } + // Calendar days (1-31) + VerticalLayout { + spacing: 20px; + for week in 6: HorizontalLayout { + spacing: 20px; + for day in 7: Rectangle { + width: 45px; + height: 45px; + + border-color: (week * 7) + day + 1 == end ? Palette.accent-background : (week * 7) + day + 1 == start ? Palette.border : Palette.background; + border-width: (week * 7) + day + 1 == start ? 2px : 4px; + border-radius: 4px; + + Text { + text: (week * 7) + day + 1 <= 31 ? (week * 7) + day + 1 : " "; + color: (!reversed && ((week * 7) + day + 1 > start && (week * 7) + day + 1 <= end)) || (reversed && ((week * 7) + day + 1 < start && (week * 7) + day + 1 >= end)) ? Palette.accent-background : Palette.foreground; + horizontal-alignment: center; + font-size: 1.25rem; + } + } + } + } +}