From 9b50b0f92a3bed572a4a00c9350992497f15f9b7 Mon Sep 17 00:00:00 2001 From: Karli Date: Mon, 18 Aug 2025 13:58:42 +0300 Subject: [PATCH 1/3] feat(MED-123): update dashboard cards for "order analysis" --- app/home/(user)/(dashboard)/page.tsx | 2 + .../(user)/_components/dashboard-cards.tsx | 45 +++++++++++++++++++ .../_components/order-analyses-cards.tsx | 33 ++++++++++---- public/locales/en/dashboard.json | 8 +++- public/locales/et/dashboard.json | 8 +++- 5 files changed, 85 insertions(+), 11 deletions(-) create mode 100644 app/home/(user)/_components/dashboard-cards.tsx diff --git a/app/home/(user)/(dashboard)/page.tsx b/app/home/(user)/(dashboard)/page.tsx index 2f8b287..14d8bff 100644 --- a/app/home/(user)/(dashboard)/page.tsx +++ b/app/home/(user)/(dashboard)/page.tsx @@ -8,6 +8,7 @@ import { toTitleCase } from '@/lib/utils'; import Dashboard from '../_components/dashboard'; import { loadCurrentUserAccount } from '../_lib/server/load-user-account'; +import DashboardCards from '../_components/dashboard-cards'; export const generateMetadata = async () => { const i18n = await createI18nServerInstance(); @@ -26,6 +27,7 @@ async function UserHomePage() { return ( <> + diff --git a/app/home/(user)/_components/dashboard-cards.tsx b/app/home/(user)/_components/dashboard-cards.tsx new file mode 100644 index 0000000..a24e465 --- /dev/null +++ b/app/home/(user)/_components/dashboard-cards.tsx @@ -0,0 +1,45 @@ +import { Trans } from '@kit/ui/trans'; +import { + Card, + CardHeader, + CardDescription, + CardFooter, +} from '@kit/ui/card'; + +import Link from 'next/link'; +import { Button } from '@kit/ui/button'; +import { ChevronRight, HeartPulse } from 'lucide-react'; + +export default function DashboardCards() { + return ( +
+ + +
+ +
+
+ + + +
+
+ +
+ +
+ + + +
+
+
+ ); +} diff --git a/app/home/(user)/_components/order-analyses-cards.tsx b/app/home/(user)/_components/order-analyses-cards.tsx index 9a9d8d8..ea58399 100644 --- a/app/home/(user)/_components/order-analyses-cards.tsx +++ b/app/home/(user)/_components/order-analyses-cards.tsx @@ -7,11 +7,13 @@ import { Card, CardHeader, CardFooter, + CardDescription, } from '@kit/ui/card'; import { StoreProduct, StoreProductVariant } from '@medusajs/types'; import { useState } from 'react'; import { handleAddToCart } from '~/lib/services/medusaCart.service'; import { useRouter } from 'next/navigation'; +import { InfoTooltip } from '~/components/ui/info-tooltip'; export default function OrderAnalysesCards({ analyses, @@ -21,7 +23,7 @@ export default function OrderAnalysesCards({ countryCode: string; }) { const router = useRouter(); - + const [isAddingToCart, setIsAddingToCart] = useState(false); const handleSelect = async (selectedVariant: StoreProductVariant) => { if (!selectedVariant?.id || isAddingToCart) return null @@ -44,15 +46,22 @@ export default function OrderAnalysesCards({
{analyses.map(({ title, - variants + variants, + description, + subtitle, }) => ( - -
+ +
+ +
+
-
-
- -
- {title} - {description && ( - <> - {' '} - - + +
+ {isAvailable && ( +
+ +
)} - - {subtitle && ( - - {subtitle} - - )} - -
- ))} + + +
+ {title} + {description && ( + <> + {' '} + + + )} +
+ {isAvailable && subtitle && ( + + {subtitle} + + )} + {!isAvailable && ( + + + + )} +
+ + ); + })}
); } diff --git a/public/locales/en/order-analysis.json b/public/locales/en/order-analysis.json index 3cc4ea9..6ab9af8 100644 --- a/public/locales/en/order-analysis.json +++ b/public/locales/en/order-analysis.json @@ -1,4 +1,5 @@ { "title": "Select analysis", - "description": "Select the analysis that suits your needs" + "description": "Select the analysis that suits your needs", + "analysisNotAvailable": "Analysis is not available currently" } \ No newline at end of file diff --git a/public/locales/et/order-analysis.json b/public/locales/et/order-analysis.json index f04be5e..42f790e 100644 --- a/public/locales/et/order-analysis.json +++ b/public/locales/et/order-analysis.json @@ -1,4 +1,5 @@ { "title": "Vali analüüs", - "description": "Vali enda vajadustele sobiv analüüs" + "description": "Vali enda vajadustele sobiv analüüs", + "analysisNotAvailable": "Analüüsi tellimine ei ole hetkel saadaval" } \ No newline at end of file From 2f732b254fdeef1cbfb12cb456df5c04e45aa98e Mon Sep 17 00:00:00 2001 From: Karli Date: Mon, 18 Aug 2025 14:11:27 +0300 Subject: [PATCH 3/3] feat(MED-123): log order analysis page view --- app/home/(user)/(dashboard)/order-analysis/page.tsx | 12 ++++++++++++ lib/services/audit/pageView.service.ts | 1 + 2 files changed, 13 insertions(+) diff --git a/app/home/(user)/(dashboard)/order-analysis/page.tsx b/app/home/(user)/(dashboard)/order-analysis/page.tsx index 942f78e..6358f18 100644 --- a/app/home/(user)/(dashboard)/order-analysis/page.tsx +++ b/app/home/(user)/(dashboard)/order-analysis/page.tsx @@ -5,6 +5,8 @@ import { Trans } from '@kit/ui/trans'; import { HomeLayoutPageHeader } from '../../_components/home-page-header'; import { loadAnalyses } from '../../_lib/server/load-analyses'; import OrderAnalysesCards from '../../_components/order-analyses-cards'; +import { createPageViewLog, PAGE_VIEW_ACTION } from '~/lib/services/audit/pageView.service'; +import { loadCurrentUserAccount } from '../../_lib/server/load-user-account'; export const generateMetadata = async () => { const { t } = await createI18nServerInstance(); @@ -15,8 +17,18 @@ export const generateMetadata = async () => { }; async function OrderAnalysisPage() { + const account = await loadCurrentUserAccount(); + if (!account) { + throw new Error('Account not found'); + } + const { analyses, countryCode } = await loadAnalyses(); + await createPageViewLog({ + accountId: account.id, + action: PAGE_VIEW_ACTION.VIEW_ORDER_ANALYSIS, + }); + return ( <>