From 4dd276d9e71f3a9a2365c2f5e00e57120d46e406 Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Tue, 7 Jul 2026 12:09:36 +0330 Subject: [PATCH] design setting --- src/assets/images/iphone_camera.png | Bin 0 -> 4506 bytes src/assets/images/iphonr.png | Bin 0 -> 83797 bytes src/assets/images/pattern/1.svg | 469 ++++++++++++++++++ src/assets/images/pattern/2.svg | 150 ++++++ src/assets/images/pattern/3.svg | 19 + src/assets/images/pattern/4.svg | 39 ++ src/assets/images/pattern/5.svg | 181 +++++++ src/assets/images/pattern/6.svg | 354 +++++++++++++ src/config/menuPreview.ts | 70 +++ src/pages/settings/Setting.tsx | 100 ++-- .../settings/components/DesignSettings.tsx | 392 +++++++++++++++ .../settings/components/DesignSlider.tsx | 41 ++ src/pages/settings/enum/Enum.ts | 1 + src/pages/settings/hooks/usePatterns.ts | 129 +++++ src/pages/settings/hooks/useSettingData.ts | 13 + src/pages/settings/service/SettingService.ts | 12 +- src/pages/settings/types/Types.ts | 19 + 17 files changed, 1938 insertions(+), 51 deletions(-) create mode 100644 src/assets/images/iphone_camera.png create mode 100644 src/assets/images/iphonr.png create mode 100644 src/assets/images/pattern/1.svg create mode 100644 src/assets/images/pattern/2.svg create mode 100644 src/assets/images/pattern/3.svg create mode 100644 src/assets/images/pattern/4.svg create mode 100644 src/assets/images/pattern/5.svg create mode 100644 src/assets/images/pattern/6.svg create mode 100644 src/config/menuPreview.ts create mode 100644 src/pages/settings/components/DesignSettings.tsx create mode 100644 src/pages/settings/components/DesignSlider.tsx create mode 100644 src/pages/settings/hooks/usePatterns.ts diff --git a/src/assets/images/iphone_camera.png b/src/assets/images/iphone_camera.png new file mode 100644 index 0000000000000000000000000000000000000000..7660b1066823be71c74897ed1a91f67c2606dcd9 GIT binary patch literal 4506 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%0DNmaMf{XD_*xR)*soL? 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 BG_n8y literal 0 HcmV?d00001 diff --git a/src/assets/images/pattern/1.svg b/src/assets/images/pattern/1.svg new file mode 100644 index 0000000..dbbbfe7 --- /dev/null +++ b/src/assets/images/pattern/1.svg @@ -0,0 +1,469 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/pattern/2.svg b/src/assets/images/pattern/2.svg new file mode 100644 index 0000000..b34efd2 --- /dev/null +++ b/src/assets/images/pattern/2.svg @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/pattern/3.svg b/src/assets/images/pattern/3.svg new file mode 100644 index 0000000..8829725 --- /dev/null +++ b/src/assets/images/pattern/3.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/pattern/4.svg b/src/assets/images/pattern/4.svg new file mode 100644 index 0000000..c8ac17c --- /dev/null +++ b/src/assets/images/pattern/4.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/pattern/5.svg b/src/assets/images/pattern/5.svg new file mode 100644 index 0000000..aa35f9a --- /dev/null +++ b/src/assets/images/pattern/5.svg @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/pattern/6.svg b/src/assets/images/pattern/6.svg new file mode 100644 index 0000000..9ee23ad --- /dev/null +++ b/src/assets/images/pattern/6.svg @@ -0,0 +1,354 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/config/menuPreview.ts b/src/config/menuPreview.ts new file mode 100644 index 0000000..0b39e81 --- /dev/null +++ b/src/config/menuPreview.ts @@ -0,0 +1,70 @@ +export const MENU_SITE_ORIGIN = "https://dkala.danakcorp.com"; + +/** Admin routes whose first segment must not be proxied to the public menu site. */ +export const MENU_PREVIEW_RESERVED_SEGMENTS = new Set([ + "auth", + "dashboard", + "setting", + "statistics", + "schedule", + "payment_methods", + "foods", + "orders", + "customers", + "discounts", + "announcements", + "reports", + "comments", + "roles", + "admins", + "shipment_methods", + "coupons", + "reviews", + "pagers", + "notifications", + "sliders", + "wallet", + "assets", + "menu-preview", +]); + +export const isMenuPreviewProxyPath = (pathname: string) => { + if (!pathname.startsWith("/menu-preview/")) return false; + const rest = pathname.slice("/menu-preview".length); + return rest.length > 0; +}; + +export const isMenuSlugProxyPath = (pathname: string) => { + const [firstSegment] = pathname.split("/").filter(Boolean); + if (!firstSegment) return false; + return !MENU_PREVIEW_RESERVED_SEGMENTS.has(firstSegment); +}; + +export const toMenuPreviewProxyPath = (slug: string) => { + const normalizedOrigin = MENU_SITE_ORIGIN.replace(/\/+$/, ""); + const normalizedSlug = slug.replace(/^\/+/, ""); + return `${normalizedOrigin}/${normalizedSlug}`; +}; + +export const MENU_PREVIEW_CACHE_PARAM = "_preview"; + +export const buildMenuPreviewUrl = (slug: string, cacheKey: number) => `${toMenuPreviewProxyPath(slug)}?${MENU_PREVIEW_CACHE_PARAM}=${cacheKey}`; + +export const stripMenuPreviewCacheParam = (search: string) => { + const params = new URLSearchParams(search.startsWith("?") ? search.slice(1) : search); + params.delete(MENU_PREVIEW_CACHE_PARAM); + const query = params.toString(); + return query ? `?${query}` : ""; +}; + +export const toMenuSitePath = (pathname: string) => { + if (isMenuPreviewProxyPath(pathname)) { + return pathname.replace(/^\/menu-preview/, "") || "/"; + } + + if (isMenuSlugProxyPath(pathname)) { + return pathname; + } + + return null; +}; diff --git a/src/pages/settings/Setting.tsx b/src/pages/settings/Setting.tsx index 174836e..0c124aa 100644 --- a/src/pages/settings/Setting.tsx +++ b/src/pages/settings/Setting.tsx @@ -1,56 +1,56 @@ -import Tabs from '@/components/Tabs' -import { Money2, NotificationStatus, Setting4 } from 'iconsax-react' -import { useState, type FC } from 'react' -import { SettingTabEnum } from './enum/Enum' -import GeneralSettings from './GeneralSettings' -import ScoreSetting from './components/ScoreSetting' -import NotificationsList from '../notifications/List' +import Tabs from "@/components/Tabs"; +import { Brush, Money2, NotificationStatus, Setting4 } from "iconsax-react"; +import { useState, type FC } from "react"; +import NotificationsList from "../notifications/List"; +import DesignSettings from "./components/DesignSettings"; +import ScoreSetting from "./components/ScoreSetting"; +import { SettingTabEnum } from "./enum/Enum"; +import GeneralSettings from "./GeneralSettings"; const Setting: FC = () => { + const [activeTab, setActiveTab] = useState(SettingTabEnum.GENERAL); - const [activeTab, setActiveTab] = useState(SettingTabEnum.GENERAL) + return ( +
+

تنظیمات

- return ( -
-

تنظیمات

+
+ , + label: "عمومی", + value: SettingTabEnum.GENERAL, + }, + { + icon: , + label: "تنظیمات امتیاز", + value: SettingTabEnum.FINANCIAL, + }, + { + icon: , + label: "تنظیمات اعلان", + value: SettingTabEnum.NOTIFICATION, + }, + { + icon: , + label: "تنظیمات طراحی", + value: SettingTabEnum.BACKGROUND, + }, + ]} + onChange={(value: string) => setActiveTab(value as SettingTabEnum)} + active={activeTab} + /> +
-
- , - label: 'عمومی', - value: SettingTabEnum.GENERAL, - }, - { - icon: , - label: 'تنظیمات امتیاز', - value: SettingTabEnum.FINANCIAL, - }, - { - icon: , - label: 'تنظیمات اعلان', - value: SettingTabEnum.NOTIFICATION, - }, - ]} - onChange={(value: string) => setActiveTab(value as SettingTabEnum)} - active={activeTab} - /> -
+
+ {activeTab === SettingTabEnum.GENERAL && } + {activeTab === SettingTabEnum.FINANCIAL && } + {activeTab === SettingTabEnum.NOTIFICATION && } + {activeTab === SettingTabEnum.BACKGROUND && } +
+
+ ); +}; -
- { - activeTab === SettingTabEnum.GENERAL && - } - { - activeTab === SettingTabEnum.FINANCIAL && - } - { - activeTab === SettingTabEnum.NOTIFICATION && - } -
-
- ) -} - -export default Setting \ No newline at end of file +export default Setting; diff --git a/src/pages/settings/components/DesignSettings.tsx b/src/pages/settings/components/DesignSettings.tsx new file mode 100644 index 0000000..fba74b4 --- /dev/null +++ b/src/pages/settings/components/DesignSettings.tsx @@ -0,0 +1,392 @@ +import iphoneCamera from "@/assets/images/iphone_camera.png"; +import iphoneFrame from "@/assets/images/iphonr.png"; +import Button from "@/components/Button"; +import ColorPicker from "@/components/ColorPicker"; +import Radio from "@/components/Radio"; +import { extractErrorMessage } from "@/config/func"; +import { buildMenuPreviewUrl } from "@/config/menuPreview"; +import type { ErrorType } from "@/helpers/types"; +import { clx } from "@/helpers/utils"; +import DesignSlider from "@/pages/settings/components/DesignSlider"; +import { getBackgroundPatternUrl, PATTERN_BACKGROUND_OPACITY, useBackgroundPatterns } from "@/pages/settings/hooks/usePatterns"; +import { useGetBackgrounds, useGetRestaurant, useSetBackground, useUpdateRestaurant } from "@/pages/settings/hooks/useSettingData"; +import type { BackgroundItemType, SetBackgroundType } from "@/pages/settings/types/Types"; +import { useSingleUpload } from "@/pages/uploader/hooks/useUploaderData"; +import { DocumentUpload, Gallery, TickCircle, Trash } from "iconsax-react"; +import { useCallback, useEffect, useMemo, useState, type FC } from "react"; +import { useDropzone } from "react-dropzone"; +import { toast } from "react-toastify"; + +const COLOR_APPLY_DELAY_MS = 500; +type BackgroundType = "pattern" | "custom"; + +const UPLOAD_BOX_CLASS = "w-[200px] h-[362px] rounded-2xl border border-dashed border-description"; + +const PHONE_FRAME_WIDTH = 375; +const PHONE_PREVIEW_SCALE = 0.8; + +/** Measured from `iphonr.png` (839×1759) — white screen rect inside the bezel. */ +const PHONE_FRAME_IMAGE = { width: 839, height: 1759 } as const; +const PHONE_SCREEN_RECT = { left: 33, top: 36, right: 806, bottom: 1756, radius: 89 } as const; + +const toFramePercent = (value: number, axis: "width" | "height") => `${(value / PHONE_FRAME_IMAGE[axis]) * 100}%`; + +const PHONE_SCREEN_STYLE = { + top: toFramePercent(PHONE_SCREEN_RECT.top, "height"), + left: toFramePercent(PHONE_SCREEN_RECT.left, "width"), + right: toFramePercent(PHONE_FRAME_IMAGE.width - 1 - PHONE_SCREEN_RECT.right, "width"), + bottom: toFramePercent(PHONE_FRAME_IMAGE.height - 1 - PHONE_SCREEN_RECT.bottom, "height"), + borderRadius: (PHONE_SCREEN_RECT.radius / PHONE_FRAME_IMAGE.width) * PHONE_FRAME_WIDTH, +} as const; + +const PHONE_CAMERA_STYLE = { + top: toFramePercent(18, "height"), + width: toFramePercent(178, "width"), +} as const; + +const getPatternBgUrl = (item: BackgroundItemType) => item.url ?? item.bgUrl ?? ""; + +const normalizeBgUrl = (url: string) => { + if (!url) return ""; + if (url.startsWith("http")) return url; + return `${import.meta.env.VITE_BASE_URL}${url.startsWith("/") ? url : `/${url}`}`; +}; + +const resolveBgType = (type: BackgroundType, selectedPatternId: string | null): SetBackgroundType["bgType"] => { + if (type === "custom") return "custom"; + if (selectedPatternId === "0") return "color"; + return "pattern"; +}; + +const DesignSettings: FC = () => { + const [menuColor, setMenuColor] = useState("#000000"); + const [appliedColor, setAppliedColor] = useState("#000000"); + const [selectedPatternId, setSelectedPatternId] = useState(null); + const [backgroundType, setBackgroundType] = useState("pattern"); + const [customImage, setCustomImage] = useState(null); + const [customImagePreview, setCustomImagePreview] = useState(null); + const [existingBgUrl, setExistingBgUrl] = useState(null); + const [imageOpacity, setImageOpacity] = useState(100); + const [imageBlur, setImageBlur] = useState(0); + const [overlayDarkness, setOverlayDarkness] = useState(0); + const [isInitialized, setIsInitialized] = useState(false); + const [previewReloadKey, setPreviewReloadKey] = useState(0); + const { data: backgrounds } = useGetBackgrounds(); + const { mutate: setBackground, isPending: isSavingBackground } = useSetBackground(); + const { mutate: updateRestaurant, isPending: isUpdatingRestaurant } = useUpdateRestaurant(); + const { mutate: singleUpload, isPending: isUploadingImage } = useSingleUpload(); + const { patterns, isLoading: isPatternsLoading, isError: isPatternsError } = useBackgroundPatterns(appliedColor); + const { data: restaurant, refetch } = useGetRestaurant(); + const backgroundItems = useMemo(() => backgrounds?.data ?? [], [backgrounds]); + const menuPreviewUrl = useMemo(() => { + const slug = restaurant?.data?.slug; + if (!slug) return ""; + return buildMenuPreviewUrl(slug, previewReloadKey); + }, [restaurant?.data?.slug, previewReloadKey]); + const isSaving = isSavingBackground || isUploadingImage || isUpdatingRestaurant; + + useEffect(() => { + if (!restaurant?.data || isInitialized) return; + + const restaurantData = restaurant.data; + const savedBgUrl = restaurantData.bgUrl; + + if (savedBgUrl && backgroundItems.length === 0) return; + + const color = restaurantData.menuColor || "#000000"; + setMenuColor(color); + setAppliedColor(color); + + const savedBgType = restaurantData.bgType; + + if (savedBgType === "color" || (!savedBgUrl && savedBgType !== "custom" && savedBgType !== "image")) { + setBackgroundType("pattern"); + setSelectedPatternId("0"); + } else if (savedBgUrl) { + const matchingPattern = backgroundItems.find((item) => getBackgroundPatternUrl(item) === normalizeBgUrl(savedBgUrl) || getPatternBgUrl(item) === savedBgUrl); + + if (matchingPattern && savedBgType !== "custom" && savedBgType !== "image") { + setBackgroundType("pattern"); + setSelectedPatternId(matchingPattern.id); + } else { + setBackgroundType("custom"); + setExistingBgUrl(savedBgUrl); + setCustomImagePreview(normalizeBgUrl(savedBgUrl)); + setImageOpacity(Number(restaurantData.bgOpacity) || 100); + setImageBlur(Number(restaurantData.bgBlur) || 0); + setOverlayDarkness(Number(restaurantData.bgOverlay) || 0); + } + } else { + setSelectedPatternId("0"); + } + + setIsInitialized(true); + }, [restaurant, backgroundItems, isInitialized]); + + useEffect(() => { + const timer = setTimeout(() => setAppliedColor(menuColor), COLOR_APPLY_DELAY_MS); + return () => clearTimeout(timer); + }, [menuColor]); + + useEffect(() => { + if (!customImage) return; + + const previewUrl = URL.createObjectURL(customImage); + setCustomImagePreview(previewUrl); + + return () => URL.revokeObjectURL(previewUrl); + }, [customImage]); + + const onDrop = useCallback((acceptedFiles: File[]) => { + if (acceptedFiles[0]) { + setCustomImage(acceptedFiles[0]); + } + }, []); + + const { getRootProps, getInputProps } = useDropzone({ + onDrop, + accept: { "image/*": [] }, + multiple: false, + }); + + const handleRemoveImage = () => { + setCustomImage(null); + setExistingBgUrl(null); + setCustomImagePreview(null); + setImageOpacity(100); + setImageBlur(0); + setOverlayDarkness(0); + }; + + const handleSaveSuccess = useCallback(() => { + toast.success("تنظیمات طراحی با موفقیت ذخیره شد"); + refetch(); + setPreviewReloadKey(Date.now()); + }, [refetch]); + + const saveCustomBackground = (bgUrl: string) => { + const backgroundPayload: SetBackgroundType = { + bgUrl, + bgType: "custom", + bgBlur: String(imageBlur ?? 0), + bgOverlay: String(overlayDarkness ?? 0), + }; + + if (imageOpacity) { + backgroundPayload.bgOpacity = String(imageOpacity); + } + + setBackground(backgroundPayload, { + onSuccess: handleSaveSuccess, + onError: (error: unknown) => { + toast.error(extractErrorMessage(error as ErrorType, "خطا در ذخیره تنظیمات طراحی")); + }, + }); + }; + + const handleApplyChanges = () => { + updateRestaurant( + { menuColor }, + { + onSuccess: () => { + if (backgroundType === "pattern") { + let bgUrl = ""; + + if (selectedPatternId !== "0") { + const selectedItem = backgroundItems.find((item) => item.id === selectedPatternId); + bgUrl = selectedItem ? getPatternBgUrl(selectedItem) : ""; + + if (!bgUrl) { + toast.error("لطفاً یک پترن انتخاب کنید"); + return; + } + } + + setBackground( + { + bgUrl, + bgType: resolveBgType(backgroundType, selectedPatternId), + }, + { + onSuccess: handleSaveSuccess, + onError: (error: unknown) => { + toast.error(extractErrorMessage(error as ErrorType, "خطا در ذخیره تنظیمات طراحی")); + }, + }, + ); + return; + } + + if (customImage) { + singleUpload(customImage, { + onSuccess: (response) => { + const bgUrl = response?.data?.url ?? ""; + + if (!bgUrl) { + toast.error("خطا در آپلود تصویر"); + return; + } + + saveCustomBackground(bgUrl); + }, + onError: (error: ErrorType) => { + toast.error(extractErrorMessage(error, "خطا در آپلود تصویر")); + }, + }); + return; + } + + if (existingBgUrl) { + saveCustomBackground(existingBgUrl); + return; + } + + toast.error("لطفاً تصویر پس‌زمینه را آپلود کنید"); + }, + onError: (error: unknown) => { + toast.error(extractErrorMessage(error as ErrorType, "خطا در ذخیره تنظیمات طراحی")); + }, + }, + ); + }; + + const isApplyDisabled = isSaving || (backgroundType === "pattern" ? !selectedPatternId : !customImage && !existingBgUrl); + + return ( +
+
تنظیمات طراحی
+ +
+
+ + +
+
+ setBackgroundType(value as BackgroundType)} /> +
انتخاب پس زمینه
+
+ + {backgroundType === "pattern" && ( +
+ {isPatternsLoading && Array.from({ length: 6 }).map((_, index) =>
)} + {!isPatternsLoading && isPatternsError &&
خطا در بارگذاری پترن‌ها
} + {!isPatternsLoading && !isPatternsError && patterns.length === 0 &&
پترنی یافت نشد
} + + {patterns.map((pattern) => ( + + ))} +
+ )} +
+ +
+
+ setBackgroundType(value as BackgroundType)} /> +
تصویر پس زمینه دلخواه
+
+ + {backgroundType === "custom" && ( +
+ {!customImagePreview ? ( +
+ + +
تصویر مورد نظر را آپلود کنید
+
+ +
آپلود
+
+
+ ) : ( +
+
+ پس‌زمینه دلخواه + {overlayDarkness > 0 &&
} + +
+ +
+
تنظیمات
+ + + +
+
+ )} +
+ )} +
+
+ +
+
+ +
+
+
+ +
+ {menuPreviewUrl ? ( +