| 1 |
import { DesktopCards } from '@assist/components/dashboard/DesktopCards'; |
| 2 |
import { DomainBanner } from '@assist/components/dashboard/domains/DomainBanner'; |
| 3 |
import { SecondaryDomainBanner } from '@assist/components/dashboard/domains/SecondaryDomainBanner'; |
| 4 |
import { MobileCards } from '@assist/components/dashboard/MobileCards'; |
| 5 |
import { QuickLinks } from '@assist/components/dashboard/QuickLinks'; |
| 6 |
import { Recommendations } from '@assist/components/dashboard/Recommendations'; |
| 7 |
import { useTasks } from '@assist/hooks/useTasks'; |
| 8 |
import { |
| 9 |
showDomainBanner, |
| 10 |
showSecondaryDomainBanner, |
| 11 |
} from '@assist/lib/domains'; |
| 12 |
import { Full } from '@assist/pages/layouts/Full'; |
| 13 |
import { useGlobalStore } from '@assist/state/globals'; |
| 14 |
import { useTasksStore } from '@assist/state/tasks'; |
| 15 |
|
| 16 |
export const Dashboard = () => { |
| 17 |
const { tasks } = useTasks(); |
| 18 |
const { isDismissedBanner } = useGlobalStore(); |
| 19 |
const { isCompleted } = useTasksStore(); |
| 20 |
const totalCompleted = tasks.filter((task) => isCompleted(task.slug)).length; |
| 21 |
|
| 22 |
return ( |
| 23 |
<Full> |
| 24 |
{showDomainBanner && !isDismissedBanner('domain-banner') && ( |
| 25 |
<DomainBanner /> |
| 26 |
)} |
| 27 |
|
| 28 |
{showSecondaryDomainBanner && |
| 29 |
!isDismissedBanner('secondary-domain-banner') && ( |
| 30 |
<SecondaryDomainBanner /> |
| 31 |
)} |
| 32 |
|
| 33 |
<DesktopCards |
| 34 |
className="hidden md:block" |
| 35 |
tasks={tasks} |
| 36 |
totalCompleted={totalCompleted} |
| 37 |
/> |
| 38 |
|
| 39 |
<MobileCards |
| 40 |
className="md:hidden" |
| 41 |
tasks={tasks} |
| 42 |
totalCompleted={totalCompleted} |
| 43 |
/> |
| 44 |
|
| 45 |
<div className="mb-6 gap-4 md:grid"> |
| 46 |
<QuickLinks className="col-span-2" /> |
| 47 |
</div> |
| 48 |
|
| 49 |
<Recommendations /> |
| 50 |
</Full> |
| 51 |
); |
| 52 |
}; |
| 53 |
|