| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- //
- // DashboardModels.swift
- // App for Indeed
- //
- import Foundation
- struct SidebarItem {
- let title: String
- let systemImage: String
- let badge: String?
- }
- struct StatCard {
- let title: String
- let value: String
- let trend: String
- }
- struct JobRecommendation {
- let title: String
- let company: String
- let location: String
- let matchRate: String
- let postedAgo: String
- }
- struct InsightItem {
- let title: String
- let description: String
- let systemImage: String
- }
- struct DashboardData {
- let greetingName: String
- let sidebarItems: [SidebarItem]
- let stats: [StatCard]
- let recommendations: [JobRecommendation]
- let insights: [InsightItem]
- }
- protocol DashboardDataProviding {
- func loadDashboardData() -> DashboardData
- }
- final class MockDashboardDataProvider: DashboardDataProviding {
- func loadDashboardData() -> DashboardData {
- DashboardData(
- greetingName: "Olivia",
- sidebarItems: [
- SidebarItem(title: "Overview", systemImage: "house.fill", badge: nil),
- SidebarItem(title: "AI Job Search", systemImage: "wand.and.stars", badge: "New"),
- SidebarItem(title: "My Jobs", systemImage: "bookmark", badge: nil),
- SidebarItem(title: "Saved Jobs", systemImage: "heart", badge: nil),
- SidebarItem(title: "Applications", systemImage: "doc.text", badge: nil),
- SidebarItem(title: "Profile", systemImage: "person", badge: nil),
- SidebarItem(title: "Settings", systemImage: "gearshape", badge: nil)
- ],
- stats: [
- StatCard(title: "Jobs Found", value: "128", trend: "+24 this week"),
- StatCard(title: "Saved Jobs", value: "32", trend: "+6 this week"),
- StatCard(title: "Applications", value: "14", trend: "+3 this week"),
- StatCard(title: "Interviews", value: "5", trend: "Upcoming")
- ],
- recommendations: [
- JobRecommendation(title: "Senior Product Designer", company: "Dropbox", location: "San Francisco, CA", matchRate: "95% Match", postedAgo: "2h ago"),
- JobRecommendation(title: "UX Researcher", company: "Airbnb", location: "Remote", matchRate: "90% Match", postedAgo: "4h ago"),
- JobRecommendation(title: "Product Manager", company: "Stripe", location: "New York, NY", matchRate: "88% Match", postedAgo: "6h ago")
- ],
- insights: [
- InsightItem(title: "High Demand", description: "Product designer roles are in high demand right now.", systemImage: "chart.line.uptrend.xyaxis"),
- InsightItem(title: "Improve Your Profile", description: "Add more skills to increase your match rate.", systemImage: "person.crop.circle.badge.checkmark"),
- InsightItem(title: "New Opportunities", description: "24 new jobs match your profile this week.", systemImage: "briefcase.fill")
- ]
- )
- }
- }
|