import { HStack, Image, Text, VStack } from "@expo/ui/swift-ui"; import { frame, font, foregroundStyle, layoutPriority, lineLimit, minimumScaleFactor, monospacedDigit, padding, widgetAccentedRenderingMode, } from "@expo/ui/swift-ui/modifiers"; import { createLiveActivity, type LiveActivityEnvironment } from "expo-widgets"; import type { TimeClockActivityProps } from "@/lib/time-clock-live-activity.types"; function TimeClockActivity(props: TimeClockActivityProps, _environment: LiveActivityEnvironment) { "widget"; const island = "#FFFFFF"; const businessLabel = props.businessName.trim(); const clientLabel = props.clientName.trim(); const title = clientLabel || businessLabel || "Clock In"; const timerMods = [ font({ weight: "bold", size: 17 }), foregroundStyle({ type: "hierarchical", style: "primary" }), lineLimit(1), minimumScaleFactor(0.75), layoutPriority(2), frame({ width: 100, alignment: "center" }), ]; const compactTimerMods = [ font({ design: "monospaced", weight: "semibold", size: 11 }), monospacedDigit(), foregroundStyle(island), lineLimit(1), minimumScaleFactor(0.75), frame({ minWidth: 38, alignment: "center" }), layoutPriority(2), ]; const clientMods = [ font({ weight: "bold", size: 17 }), foregroundStyle({ type: "hierarchical", style: "primary" }), lineLimit(1), minimumScaleFactor(0.75), ]; // Avoid greedy layout primitives here: the live timerInterval Text can // collapse when paired with Spacer/maxWidth. Fixed centered boxes keep the // content stable without forcing left/right edge alignment. const titleRowMods = [ layoutPriority(1), frame({ width: 140, alignment: "center" }), ]; const sideZoneMods = [ frame({ width: 100, alignment: "center" }), ]; const bannerRowMods = [ padding({ horizontal: 10, vertical: 10 }), frame({ maxWidth: Infinity, alignment: "center" }), ]; const bannerTimer = {props.elapsedShort}; const compactTimer = {props.elapsedShort}; const logoLarge = ( ); const logoSmall = ( ); return { banner: ( {logoLarge} {title} {bannerTimer} ), bannerSmall: ( {logoLarge} {title} {bannerTimer} ), compactLeading: logoSmall, compactTrailing: compactTimer, minimal: logoSmall, }; } export default createLiveActivity("TimeClockActivity", TimeClockActivity);