From 76d484a1b3aa8fc55bbeb9176fa80fb23a9c3967 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Tue, 27 Jan 2026 10:55:04 -0600 Subject: [PATCH] Signed-off-by: Matt Bruce --- .../Views/Components/EmptyStateCardView.swift | 11 +++----- .../Views/Components/SectionHeaderView.swift | 4 +-- .../Insights/Components/InsightCardView.swift | 6 ++--- .../Components/InsightDetailSheet.swift | 2 +- .../Onboarding/GoalSelectionStepView.swift | 8 +++--- .../Onboarding/TimeSelectionStepView.swift | 8 +++--- .../Views/Onboarding/WelcomeStepView.swift | 6 ++--- .../Views/Onboarding/WhatsNextStepView.swift | 4 +-- .../Rituals/Components/RitualCardView.swift | 15 +++++------ .../App/Views/Rituals/RitualDetailView.swift | 4 +-- Andromida/App/Views/Rituals/RitualsView.swift | 14 ++++------ .../Rituals/Sheets/ArcRenewalSheet.swift | 26 +++++++++---------- .../Rituals/Sheets/PresetLibrarySheet.swift | 4 +-- .../Rituals/Sheets/RitualEditSheet.swift | 6 ----- .../Components/RitualFocusCardView.swift | 8 +++--- .../Components/TodayEmptyStateView.swift | 10 +++---- .../Today/Components/TodayHabitRowView.swift | 2 +- .../Today/Components/TodayHeaderView.swift | 4 +-- .../TodayNoRitualsForTimeView.swift | 14 +++++----- 19 files changed, 71 insertions(+), 85 deletions(-) diff --git a/Andromida/App/Views/Components/EmptyStateCardView.swift b/Andromida/App/Views/Components/EmptyStateCardView.swift index 899c42e..f4e58e8 100644 --- a/Andromida/App/Views/Components/EmptyStateCardView.swift +++ b/Andromida/App/Views/Components/EmptyStateCardView.swift @@ -21,17 +21,14 @@ struct EmptyStateCardView: View { var body: some View { VStack(alignment: .leading, spacing: Design.Spacing.medium) { - TitleLabel(title, style: .displaySmall, color: AppTextColors.primary) + StyledLabel(title, .title2Bold, emphasis: .custom(AppTextColors.primary)) - // Exception: Uses .bodyLarge which isn't a standard BodyLabel weight - Text(message) - .font(Design.Typography.bodyLarge) - .foregroundStyle(AppTextColors.secondary) + StyledLabel(message, .body, emphasis: .custom(AppTextColors.secondary)) Button(action: action) { - // Exception: Needs .frame() modifiers + // Needs .frame() modifiers Text(actionTitle) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.primary) .frame(maxWidth: .infinity) .frame(height: AppMetrics.Size.buttonHeight) diff --git a/Andromida/App/Views/Components/SectionHeaderView.swift b/Andromida/App/Views/Components/SectionHeaderView.swift index ce3dc2a..ba5133f 100644 --- a/Andromida/App/Views/Components/SectionHeaderView.swift +++ b/Andromida/App/Views/Components/SectionHeaderView.swift @@ -12,9 +12,9 @@ struct SectionHeaderView: View { var body: some View { VStack(alignment: .leading, spacing: Design.Spacing.xxxSmall) { - TitleLabel(title, style: .headline, color: AppTextColors.primary) + StyledLabel(title, .heading, emphasis: .custom(AppTextColors.primary)) if let subtitle { - BodyLabel(subtitle, emphasis: .secondary, color: AppTextColors.secondary) + StyledLabel(subtitle, .subheading, emphasis: .custom(AppTextColors.secondary)) } } .frame(maxWidth: .infinity, alignment: .leading) diff --git a/Andromida/App/Views/Insights/Components/InsightCardView.swift b/Andromida/App/Views/Insights/Components/InsightCardView.swift index 771eb3d..a6b03b3 100644 --- a/Andromida/App/Views/Insights/Components/InsightCardView.swift +++ b/Andromida/App/Views/Insights/Components/InsightCardView.swift @@ -22,7 +22,7 @@ struct InsightCardView: View { private var cardContent: some View { VStack(alignment: .leading, spacing: Design.Spacing.medium) { HStack { - BodyLabel(card.title, weight: .bold, color: AppTextColors.secondary) + StyledLabel(card.title, .subheadingEmphasis, emphasis: .custom(AppTextColors.secondary)) Spacer() @@ -32,11 +32,11 @@ struct InsightCardView: View { } // Show value prominently - TitleLabel(card.value, style: .displayMedium, color: AppTextColors.primary) + StyledLabel(card.value, .titleBold, emphasis: .custom(AppTextColors.primary)) // Show caption if present (non-chart cards) if !card.caption.isEmpty { - CaptionLabel(card.caption, color: AppTextColors.secondary) + StyledLabel(card.caption, .caption, emphasis: .custom(AppTextColors.secondary)) } // Show full-width mini bar chart at bottom (Athlytic style) diff --git a/Andromida/App/Views/Insights/Components/InsightDetailSheet.swift b/Andromida/App/Views/Insights/Components/InsightDetailSheet.swift index 8a28fdc..956382b 100644 --- a/Andromida/App/Views/Insights/Components/InsightDetailSheet.swift +++ b/Andromida/App/Views/Insights/Components/InsightDetailSheet.swift @@ -89,7 +89,7 @@ struct InsightDetailSheet: View { .foregroundStyle(AppTextColors.primary) Text(card.caption) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) } .frame(maxWidth: .infinity) diff --git a/Andromida/App/Views/Onboarding/GoalSelectionStepView.swift b/Andromida/App/Views/Onboarding/GoalSelectionStepView.swift index 1b1130e..737fc46 100644 --- a/Andromida/App/Views/Onboarding/GoalSelectionStepView.swift +++ b/Andromida/App/Views/Onboarding/GoalSelectionStepView.swift @@ -21,7 +21,7 @@ struct GoalSelectionStepView: View { // Header VStack(spacing: Design.Spacing.small) { Text(String(localized: "What would you like to focus on?")) - .font(Design.Typography.displaySmall) + .typography(.title2Bold) .foregroundStyle(AppTextColors.primary) .multilineTextAlignment(.center) } @@ -55,7 +55,7 @@ struct GoalSelectionStepView: View { if !selectedGoals.isEmpty { Button(action: onContinue) { Text(String(localized: "Continue")) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.inverse) .frame(maxWidth: .infinity) .frame(height: AppMetrics.Size.buttonHeight) @@ -99,11 +99,11 @@ private struct GoalCardView: View { // Text VStack(spacing: Design.Spacing.xSmall) { Text(goal.displayName) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.primary) Text(goal.subtitle) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) .lineLimit(2) diff --git a/Andromida/App/Views/Onboarding/TimeSelectionStepView.swift b/Andromida/App/Views/Onboarding/TimeSelectionStepView.swift index 6877745..97d384d 100644 --- a/Andromida/App/Views/Onboarding/TimeSelectionStepView.swift +++ b/Andromida/App/Views/Onboarding/TimeSelectionStepView.swift @@ -16,7 +16,7 @@ struct TimeSelectionStepView: View { // Header VStack(spacing: Design.Spacing.small) { Text(String(localized: "When do you want to build habits?")) - .font(Design.Typography.displaySmall) + .typography(.title2Bold) .foregroundStyle(AppTextColors.primary) .multilineTextAlignment(.center) } @@ -50,7 +50,7 @@ struct TimeSelectionStepView: View { if selectedTime != nil { Button(action: onContinue) { Text(String(localized: "Continue")) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.inverse) .frame(maxWidth: .infinity) .frame(height: AppMetrics.Size.buttonHeight) @@ -87,11 +87,11 @@ private struct TimeCardView: View { // Text VStack(alignment: .leading, spacing: Design.Spacing.xSmall) { Text(time.displayName) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.primary) Text(time.subtitle) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) } diff --git a/Andromida/App/Views/Onboarding/WelcomeStepView.swift b/Andromida/App/Views/Onboarding/WelcomeStepView.swift index 4f07a09..cc832aa 100644 --- a/Andromida/App/Views/Onboarding/WelcomeStepView.swift +++ b/Andromida/App/Views/Onboarding/WelcomeStepView.swift @@ -21,12 +21,12 @@ struct WelcomeStepView: View { VStack(spacing: Design.Spacing.medium) { Text(String(localized: "Welcome to Rituals")) - .font(Design.Typography.displayLarge) + .typography(.heroBold) .foregroundStyle(AppTextColors.primary) .multilineTextAlignment(.center) Text(String(localized: "Build lasting habits through focused, time-bound journeys")) - .font(Design.Typography.bodyLarge) + .typography(.body) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) .padding(.horizontal, Design.Spacing.xxLarge) @@ -39,7 +39,7 @@ struct WelcomeStepView: View { // Get Started button Button(action: onContinue) { Text(String(localized: "Get Started")) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.inverse) .frame(maxWidth: .infinity) .frame(height: AppMetrics.Size.buttonHeight) diff --git a/Andromida/App/Views/Onboarding/WhatsNextStepView.swift b/Andromida/App/Views/Onboarding/WhatsNextStepView.swift index 4101774..620402b 100644 --- a/Andromida/App/Views/Onboarding/WhatsNextStepView.swift +++ b/Andromida/App/Views/Onboarding/WhatsNextStepView.swift @@ -16,11 +16,11 @@ struct WhatsNextStepView: View { SymbolIcon("checkmark.circle.fill", size: .section, color: AppStatus.success) Text(String(localized: "You're all set!")) - .font(Design.Typography.displayLarge) + .typography(.heroBold) .foregroundStyle(AppTextColors.primary) Text(String(localized: "Here's how to get the most from Rituals")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) } diff --git a/Andromida/App/Views/Rituals/Components/RitualCardView.swift b/Andromida/App/Views/Rituals/Components/RitualCardView.swift index b8d44fe..2812de0 100644 --- a/Andromida/App/Views/Rituals/Components/RitualCardView.swift +++ b/Andromida/App/Views/Rituals/Components/RitualCardView.swift @@ -35,16 +35,16 @@ struct RitualCardView: View { SymbolIcon(iconName, size: .row, color: hasActiveArc ? AppAccent.primary : AppTextColors.tertiary) .accessibilityHidden(true) - // Title + // Title - conditional color needs Text() Text(title) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(hasActiveArc ? AppTextColors.primary : AppTextColors.tertiary) Spacer(minLength: Design.Spacing.medium) - // Day label + // Day label - needs padding modifiers Text(dayLabel) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.secondary) .padding(.horizontal, Design.Spacing.small) .padding(.vertical, Design.Spacing.xxxSmall) @@ -53,13 +53,12 @@ struct RitualCardView: View { .accessibilityLabel(Text(dayLabel)) } + // Theme - conditional color needs Text() Text(theme) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(hasActiveArc ? AppTextColors.secondary : AppTextColors.tertiary) - Text(completionSummary) - .font(Design.Typography.caption) - .foregroundStyle(AppTextColors.secondary) + StyledLabel(completionSummary, .caption, emphasis: .custom(AppTextColors.secondary)) } .padding(Design.Spacing.large) .background(AppSurface.card) diff --git a/Andromida/App/Views/Rituals/RitualDetailView.swift b/Andromida/App/Views/Rituals/RitualDetailView.swift index a740b32..f46fb98 100644 --- a/Andromida/App/Views/Rituals/RitualDetailView.swift +++ b/Andromida/App/Views/Rituals/RitualDetailView.swift @@ -206,10 +206,10 @@ struct RitualDetailView: View { VStack(alignment: .leading, spacing: Design.Spacing.xSmall) { Text(ritual.title) - .font(Design.Typography.displaySmall) + .typography(.title2Bold) .foregroundStyle(AppTextColors.primary) Text(ritual.theme) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) } diff --git a/Andromida/App/Views/Rituals/RitualsView.swift b/Andromida/App/Views/Rituals/RitualsView.swift index 21e6e45..7688224 100644 --- a/Andromida/App/Views/Rituals/RitualsView.swift +++ b/Andromida/App/Views/Rituals/RitualsView.swift @@ -182,12 +182,10 @@ struct RitualsView: View { VStack(spacing: Design.Spacing.large) { SymbolIcon("sparkles", size: .hero, color: AppAccent.primary) - Text(String(localized: "No Active Rituals")) - .font(Design.Typography.headline) - .foregroundStyle(AppTextColors.primary) + StyledLabel(String(localized: "No Active Rituals"), .heading, emphasis: .custom(AppTextColors.primary)) Text(String(localized: "Create a custom ritual or browse our preset library to get started.")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) @@ -210,7 +208,7 @@ struct RitualsView: View { if !store.pastRituals.isEmpty { Text(String(localized: "Or restart a past ritual from the Past tab.")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) .padding(.top, Design.Spacing.small) } @@ -223,12 +221,10 @@ struct RitualsView: View { VStack(spacing: Design.Spacing.large) { SymbolIcon("clock.arrow.circlepath", size: .hero, color: AppTextColors.tertiary) - Text(String(localized: "No Past Rituals")) - .font(Design.Typography.headline) - .foregroundStyle(AppTextColors.primary) + StyledLabel(String(localized: "No Past Rituals"), .heading, emphasis: .custom(AppTextColors.primary)) Text(String(localized: "Rituals that have ended will appear here. You can restart them anytime.")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) } diff --git a/Andromida/App/Views/Rituals/Sheets/ArcRenewalSheet.swift b/Andromida/App/Views/Rituals/Sheets/ArcRenewalSheet.swift index d15dbdd..03e9737 100644 --- a/Andromida/App/Views/Rituals/Sheets/ArcRenewalSheet.swift +++ b/Andromida/App/Views/Rituals/Sheets/ArcRenewalSheet.swift @@ -66,12 +66,12 @@ struct ArcRenewalSheet: View { SymbolIcon("checkmark.seal.fill", size: .section, color: AppStatus.success) Text(ritual.title) - .font(Design.Typography.displaySmall) + .typography(.title2Bold) .foregroundStyle(AppTextColors.primary) if let arc = completedArc { Text(String(localized: "Arc \(arc.arcNumber) Complete")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) } } @@ -82,13 +82,13 @@ struct ArcRenewalSheet: View { private var summaryCard: some View { VStack(alignment: .leading, spacing: Design.Spacing.medium) { Text(String(localized: "Your Journey")) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.primary) HStack { SymbolIcon("chart.line.uptrend.xyaxis", size: .row, color: AppAccent.primary) Text(arcSummary) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) } @@ -97,7 +97,7 @@ struct ArcRenewalSheet: View { HStack { SymbolIcon("checkmark.circle.fill", size: .row, color: AppAccent.primary) Text(String(localized: "\(habitCount) habits tracked")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) } } @@ -111,13 +111,13 @@ struct ArcRenewalSheet: View { private var durationSection: some View { VStack(alignment: .leading, spacing: Design.Spacing.medium) { Text(String(localized: "Next Arc Duration")) - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.primary) VStack(spacing: Design.Spacing.small) { HStack { Text(String(localized: "\(Int(durationDays)) days")) - .font(Design.Typography.displaySmall) + .typography(.title2Bold) .foregroundStyle(AppAccent.primary) Spacer() } @@ -127,11 +127,11 @@ struct ArcRenewalSheet: View { HStack { Text(String(localized: "1 week")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) Spacer() Text(String(localized: "1 year")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) } } @@ -143,7 +143,7 @@ struct ArcRenewalSheet: View { durationDays = Double(days) } label: { Text("\(days)") - .font(Design.Typography.captionBold) + .typography(.captionEmphasis) .foregroundStyle(Int(durationDays) == days ? AppTextColors.primary : AppTextColors.secondary) .padding(.horizontal, Design.Spacing.small) .padding(.vertical, Design.Spacing.xSmall) @@ -170,7 +170,7 @@ struct ArcRenewalSheet: View { SymbolIcon("arrow.clockwise", size: .row, color: AppTextColors.primary) Text(String(localized: "Continue with Same Habits")) } - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppTextColors.primary) .frame(maxWidth: .infinity) .padding(Design.Spacing.medium) @@ -188,7 +188,7 @@ struct ArcRenewalSheet: View { SymbolIcon("pencil", size: .row, color: AppAccent.primary) Text(String(localized: "Continue with Changes")) } - .font(Design.Typography.headline) + .typography(.heading) .foregroundStyle(AppAccent.primary) .frame(maxWidth: .infinity) .padding(Design.Spacing.medium) @@ -210,7 +210,7 @@ struct ArcRenewalSheet: View { SymbolIcon("checkmark.circle", size: .row, color: AppTextColors.secondary) Text(String(localized: "End This Ritual")) } - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) .frame(maxWidth: .infinity) .padding(Design.Spacing.medium) diff --git a/Andromida/App/Views/Rituals/Sheets/PresetLibrarySheet.swift b/Andromida/App/Views/Rituals/Sheets/PresetLibrarySheet.swift index 0f95fd7..dee6015 100644 --- a/Andromida/App/Views/Rituals/Sheets/PresetLibrarySheet.swift +++ b/Andromida/App/Views/Rituals/Sheets/PresetLibrarySheet.swift @@ -203,14 +203,14 @@ struct PresetDetailSheet: View { SymbolIcon(preset.iconName, size: .hero, color: AppAccent.primary) Text(preset.theme) - .font(Design.Typography.bodyLarge) + .typography(.body) .foregroundStyle(AppTextColors.secondary) HStack(spacing: Design.Spacing.large) { Label(preset.timeOfDay.displayName, systemImage: preset.timeOfDay.symbolName) Label(String(localized: "\(preset.durationDays) days"), systemImage: "calendar") } - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) } .frame(maxWidth: .infinity) diff --git a/Andromida/App/Views/Rituals/Sheets/RitualEditSheet.swift b/Andromida/App/Views/Rituals/Sheets/RitualEditSheet.swift index 610bc63..f64b00e 100644 --- a/Andromida/App/Views/Rituals/Sheets/RitualEditSheet.swift +++ b/Andromida/App/Views/Rituals/Sheets/RitualEditSheet.swift @@ -271,12 +271,6 @@ struct RitualEditSheet: View { Section { ForEach(Array(habits.enumerated()), id: \.element.id) { index, habit in HStack(spacing: Design.Spacing.small) { - // Drag handle - Image(systemName: "line.3.horizontal") - .font(.caption) - .foregroundStyle(AppTextColors.tertiary) - .frame(width: 20) - // Icon picker button Button { editingHabitIndex = index diff --git a/Andromida/App/Views/Today/Components/RitualFocusCardView.swift b/Andromida/App/Views/Today/Components/RitualFocusCardView.swift index d298734..3518542 100644 --- a/Andromida/App/Views/Today/Components/RitualFocusCardView.swift +++ b/Andromida/App/Views/Today/Components/RitualFocusCardView.swift @@ -33,13 +33,13 @@ struct RitualFocusCardView: View { .accessibilityHidden(true) // Title - TitleLabel(title, style: .headline, color: AppTextColors.primary) + StyledLabel(title, .heading, emphasis: .custom(AppTextColors.primary)) Spacer(minLength: Design.Spacing.medium) // Day label - needs additional modifiers (padding, background) Text(dayLabel) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.secondary) .padding(.horizontal, Design.Spacing.small) .padding(.vertical, Design.Spacing.xxxSmall) @@ -48,12 +48,12 @@ struct RitualFocusCardView: View { .accessibilityLabel(Text(dayLabel)) } - BodyLabel(theme, color: AppTextColors.secondary) + StyledLabel(theme, .subheading, emphasis: .custom(AppTextColors.secondary)) VStack(alignment: .leading, spacing: Design.Spacing.xSmall) { ProgressView(value: progress) .tint(AppAccent.primary) - CaptionLabel(completionSummary, color: AppTextColors.secondary) + StyledLabel(completionSummary, .caption, emphasis: .custom(AppTextColors.secondary)) } } .padding(Design.Spacing.large) diff --git a/Andromida/App/Views/Today/Components/TodayEmptyStateView.swift b/Andromida/App/Views/Today/Components/TodayEmptyStateView.swift index 4f82530..fa01714 100644 --- a/Andromida/App/Views/Today/Components/TodayEmptyStateView.swift +++ b/Andromida/App/Views/Today/Components/TodayEmptyStateView.swift @@ -20,7 +20,7 @@ struct TodayEmptyStateView: View { .padding(.top, Design.Spacing.large) Text(String(localized: "Rituals help you build consistent habits through focused, time-bound journeys.")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) .padding(.horizontal, Design.Spacing.large) @@ -34,7 +34,7 @@ struct TodayEmptyStateView: View { .fill(AppBorder.subtle) .frame(height: 1) Text(String(localized: "or")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) Rectangle() .fill(AppBorder.subtle) @@ -71,7 +71,7 @@ struct TodayEmptyStateView: View { // Past rituals hint if !store.pastRituals.isEmpty { Text(String(localized: "You can also restart a past ritual from the Rituals tab.")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) .multilineTextAlignment(.center) .padding(.top, Design.Spacing.small) @@ -95,7 +95,7 @@ struct TodayEmptyStateView: View { private var quickStartSection: some View { VStack(alignment: .leading, spacing: Design.Spacing.small) { Text(String(localized: "Quick Start")) - .font(Design.Typography.captionMedium) + .typography(.captionEmphasis) .foregroundStyle(AppTextColors.tertiary) .padding(.horizontal, Design.Spacing.medium) @@ -135,7 +135,7 @@ private struct QuickStartButton: View { SymbolIcon(goal.symbolName, size: .row, color: AppAccent.primary) Text(goal.displayName) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.primary) Spacer() diff --git a/Andromida/App/Views/Today/Components/TodayHabitRowView.swift b/Andromida/App/Views/Today/Components/TodayHabitRowView.swift index 83ae040..24321d1 100644 --- a/Andromida/App/Views/Today/Components/TodayHabitRowView.swift +++ b/Andromida/App/Views/Today/Components/TodayHabitRowView.swift @@ -29,7 +29,7 @@ struct TodayHabitRowView: View { .frame(width: AppMetrics.Size.iconLarge) .accessibilityHidden(true) - BodyLabel(title, color: AppTextColors.primary) + StyledLabel(title, .subheading, emphasis: .custom(AppTextColors.primary)) Spacer(minLength: Design.Spacing.medium) diff --git a/Andromida/App/Views/Today/Components/TodayHeaderView.swift b/Andromida/App/Views/Today/Components/TodayHeaderView.swift index a4a1c54..9f8774a 100644 --- a/Andromida/App/Views/Today/Components/TodayHeaderView.swift +++ b/Andromida/App/Views/Today/Components/TodayHeaderView.swift @@ -10,8 +10,8 @@ struct TodayHeaderView: View { var body: some View { VStack(alignment: .leading, spacing: Design.Spacing.xxxSmall) { - TitleLabel(String(localized: "Today"), style: .displayLarge, color: AppTextColors.primary) - BodyLabel(dateText, color: AppTextColors.secondary) + StyledLabel(String(localized: "Today"), .heroBold, emphasis: .custom(AppTextColors.primary)) + StyledLabel(dateText, .subheading, emphasis: .custom(AppTextColors.secondary)) } .frame(maxWidth: .infinity, alignment: .leading) .accessibilityElement(children: .combine) diff --git a/Andromida/App/Views/Today/Components/TodayNoRitualsForTimeView.swift b/Andromida/App/Views/Today/Components/TodayNoRitualsForTimeView.swift index a153d92..7601f93 100644 --- a/Andromida/App/Views/Today/Components/TodayNoRitualsForTimeView.swift +++ b/Andromida/App/Views/Today/Components/TodayNoRitualsForTimeView.swift @@ -53,12 +53,12 @@ struct TodayNoRitualsForTimeView: View { VStack(spacing: Design.Spacing.xSmall) { Text(String(localized: "No rituals scheduled for \(currentTimePeriod.displayName.lowercased()).")) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.secondary) .multilineTextAlignment(.center) Text(currentTimePeriod.timeRange) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) } @@ -66,7 +66,7 @@ struct TodayNoRitualsForTimeView: View { if !nextRituals.isEmpty { VStack(alignment: .leading, spacing: Design.Spacing.medium) { Text(String(localized: "Coming up later:")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) ForEach(nextRituals) { ritual in @@ -74,13 +74,13 @@ struct TodayNoRitualsForTimeView: View { SymbolIcon(ritual.timeOfDay.symbolName, size: .chevron, color: AppTextColors.secondary) Text(ritual.title) - .font(Design.Typography.body) + .typography(.subheading) .foregroundStyle(AppTextColors.primary) Spacer() Text(ritual.timeOfDay.displayName) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) } .padding(Design.Spacing.small) @@ -96,7 +96,7 @@ struct TodayNoRitualsForTimeView: View { tomorrowRitual.timeOfDay.displayName, tomorrowRitual.timeOfDay.timeRange )) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) .multilineTextAlignment(.center) .padding(.top, Design.Spacing.small) @@ -104,7 +104,7 @@ struct TodayNoRitualsForTimeView: View { // Motivational message Text(String(localized: "Enjoy this moment. Your next ritual will appear when it's time.")) - .font(Design.Typography.caption) + .typography(.caption) .foregroundStyle(AppTextColors.tertiary) .multilineTextAlignment(.center) .padding(.top, Design.Spacing.small)