setSelectedAddressId(addr.id)}
className={cn(
- "p-4 rounded-2xl border-2 cursor-pointer transition-all flex items-start gap-3",
+ "p-3 sm:p-4 rounded-2xl border-2 cursor-pointer transition-all flex items-start gap-2.5 sm:gap-3 w-full min-w-0 max-w-full overflow-hidden",
selectedAddressId === addr.id ? "border-canina-blue bg-canina-blue/5" : "border-medical-gray-100 hover:border-medical-gray-200"
)}
>
@@ -275,17 +275,17 @@ export default function CheckoutPage() {
name="selectedAddress"
checked={selectedAddressId === addr.id}
onChange={() => setSelectedAddressId(addr.id)}
- className="mt-1"
+ className="mt-1 shrink-0"
/>
-
-
+
+
{addr.title}
{addr.isDefault && (
- پیشفرض
+ پیشفرض
)}
-
{addr.province}، {addr.city}، {addr.detail}
-
گیرنده: {addr.receptorName} | همراه: {toPersian(addr.phone)}
+
{addr.province}، {addr.city}، {addr.detail}
+
گیرنده: {addr.receptorName} | همراه: {toPersian(addr.phone)}
))}
diff --git a/frontend/application/components/PetProfile.tsx b/frontend/application/components/PetProfile.tsx
index 8ffd254..4de3a92 100644
--- a/frontend/application/components/PetProfile.tsx
+++ b/frontend/application/components/PetProfile.tsx
@@ -36,9 +36,10 @@ import api from "../lib/services/api";
import { useRouter } from 'next/navigation';
-export default function PetProfile({ initialView }: {
+export default function PetProfile({ initialView, advisorNeed, embedded = false }: {
initialView?: "index" | "detail" | "add" | "edit",
- advisorNeed?: string | null
+ advisorNeed?: string | null,
+ embedded?: boolean
}) {
const router = useRouter();
const { pets, addPet, removePet, setActivePet, getActivePet, updatePet, addReminder, toggleReminder, addHealthLog } = usePetStore();
@@ -262,7 +263,7 @@ export default function PetProfile({ initialView }: {
// 1. Pet Index Page
if (view === "index") {
return (
-
+
@@ -386,7 +387,7 @@ export default function PetProfile({ initialView }: {
if (view === "add" || view === "edit") {
if (view === "add" && pets.length === 0) {
return (
-
+
{/* Render SmartAdvisor directly without redundant top banner */}
+
-
+
{/* Progress Bar */}
+
{/* Navigation Bar */}
diff --git a/frontend/application/components/UserDashboard.tsx b/frontend/application/components/UserDashboard.tsx
index 711d20a..9d24584 100644
--- a/frontend/application/components/UserDashboard.tsx
+++ b/frontend/application/components/UserDashboard.tsx
@@ -14,6 +14,7 @@ import DeleteConfirmModal from "./DeleteConfirmModal";
import TopUpModal from "./TopUpModal";
import { ticketService, Ticket, TicketMessage } from "../lib/services/ticketService";
import { usePetStore } from "../lib/store/usePetStore";
+import PetProfile from "./PetProfile";
import { useRouter, useSearchParams } from 'next/navigation';
@@ -656,132 +657,8 @@ export default function UserDashboard() {
)}
{activeTab === "pets" && (
-
-
-
-
پتهای من (حیوانات خانگی)
-
مدیریت مشخصات، سوابق سلامت، رژیم غذایی و پت فعال
-
-
-
-
- {(pets || []).length === 0 ? (
-
-
-
-
-
هنوز حیوانی ثبت نکردهاید
-
- با ثبت اطلاعات پت خود، پیشنهادهای اختصاصی مکمل، دوز مصرفی دقیق و یادآورهای پزشکی دریافت کنید.
-
-
-
- ) : (
-
- {pets.map((p) => {
- const isActive = p.id === activePetId;
- const isDog = p.type === 'سگ' || (p.type as string) === 'dog';
- return (
-
-
-
-
-
- {p.imageUrl || p.image ? (
-

- ) : (
-
{isDog ? '🐶' : '🐱'}
- )}
-
-
-
-
{p.name}
- {isActive && (
-
- پت فعال
-
- )}
-
-
- {isDog ? 'سگ' : 'گربه'} {p.breed ? `• نژاد ${p.breed}` : ''}
-
-
-
-
-
-
-
-
- سن
- {toPersian(p.age)} ساله
-
-
- وزن
- {toPersian(p.weight)} کیلو
-
-
- فعالیت
- {p.activityLevel || 'متوسط'}
-
-
-
-
-
- {!isActive && (
-
- )}
-
-
-
- );
- })}
-
- )}
+
+
0 ? "index" : "add"} />
)}
@@ -1547,41 +1424,6 @@ export default function UserDashboard() {
)}
-
- {/* Pet Delete Confirmation Modal */}
- {petToDelete && (
-
-
-
-
-
-
حذف پروفایل {petToDelete.name}
-
- آیا از حذف اطلاعات و پرونده پزشکی «{petToDelete.name}» اطمینان دارید؟ این عملیات قابل بازگشت نیست.
-
-
-
-
-
-
-
- )}
);
}