From 20c780f104b81464c0aea82be9f4a19e22fbb7cf Mon Sep 17 00:00:00 2001 From: payacom <59262811+payacom@users.noreply.github.com> Date: Sun, 12 Jul 2026 12:48:02 +0330 Subject: [PATCH] icone --- public/service-worker.js | 24 +++++++++++++++---- src/components/academy/CommentsModal.tsx | 3 ++- .../BillboardPage/BillboardDetails.tsx | 3 ++- src/components/main/BaseUrl.ts | 2 +- .../models/MainModelCard/CommentsModal.tsx | 3 ++- .../projects/Workroom/ProjectWorkroomRate.tsx | 3 ++- .../settings/offers/CommentModal.tsx | 3 ++- src/styles/rc-rate-custom.css | 11 +++++++++ 8 files changed, 41 insertions(+), 11 deletions(-) create mode 100644 src/styles/rc-rate-custom.css diff --git a/public/service-worker.js b/public/service-worker.js index 4114631..726b683 100644 --- a/public/service-worker.js +++ b/public/service-worker.js @@ -33,11 +33,25 @@ self.addEventListener("activate", (event) => { ); }); -// هندل درخواست‌ها -self.addEventListener("fetch", (event) => { - const url = new URL(event.request.url); - - // آیکون‌ها: network-first تا تغییرات فوری اعمال شوند +// هندل درخواست‌ها + self.addEventListener("fetch", (event) => { + const url = new URL(event.request.url); + + // استراتژی network-first برای درخواست‌های HTML (navigation requests) + if (event.request.mode === "navigate") { + event.respondWith( + fetch(event.request) + .then(async (response) => { + const cache = await caches.open(CACHE_NAME); + await cache.put(event.request, response.clone()); + return response; + }) + .catch(() => caches.match(event.request)) + ); + return; + } + + // آیکون‌ها: network-first تا تغییرات فوری اعمال شوند if (url.pathname.startsWith("/images/icons/")) { event.respondWith( fetch(event.request) diff --git a/src/components/academy/CommentsModal.tsx b/src/components/academy/CommentsModal.tsx index e7b2f03..a61aa18 100644 --- a/src/components/academy/CommentsModal.tsx +++ b/src/components/academy/CommentsModal.tsx @@ -7,7 +7,8 @@ import RoundedInput from "@/components/elements/RoundedInput"; import useAxios from "@/hooks/useAxios"; import toast from "react-hot-toast"; import Rate from "rc-rate"; -import "rc-rate/assets/index.css"; +import "rc-rate/assets/index.css"; +import "@/styles/rc-rate-custom.css"; import { useUser } from "@/hooks/useUser"; import { Course } from "@/types/types"; import { useRequireAuth } from "@/lib/auth/useRequireAuth"; diff --git a/src/components/billboards/BillboardPage/BillboardDetails.tsx b/src/components/billboards/BillboardPage/BillboardDetails.tsx index 3890812..09bc9c1 100644 --- a/src/components/billboards/BillboardPage/BillboardDetails.tsx +++ b/src/components/billboards/BillboardPage/BillboardDetails.tsx @@ -4,7 +4,8 @@ import RoundedButton from "@/components/elements/RoundedButton"; import { IContactInfo, IFeature, Service } from "@/types/types"; import React, { useState } from "react"; import Rate from "rc-rate"; -import "rc-rate/assets/index.css"; +import "rc-rate/assets/index.css"; +import "@/styles/rc-rate-custom.css"; import Image from "next/image"; import useAxios from "@/hooks/useAxios"; import BillboardServicesModal from "./BillboardServicesModal"; diff --git a/src/components/main/BaseUrl.ts b/src/components/main/BaseUrl.ts index d43a4f6..64b1e5f 100644 --- a/src/components/main/BaseUrl.ts +++ b/src/components/main/BaseUrl.ts @@ -40,7 +40,7 @@ export const IMAGE_BASE_URL = getStorageBaseUrl(); /** نسخه آیکون‌ها — با هر تغییر آیکون این مقدار را افزایش دهید */ export const ICON_VERSION = - process.env.NEXT_PUBLIC_ICON_VERSION ?? "6"; + process.env.NEXT_PUBLIC_ICON_VERSION ?? "7"; /** URL آیکون استاتیک با cache-busting */ export function staticIconUrl(path: string): string { diff --git a/src/components/models/MainModelCard/CommentsModal.tsx b/src/components/models/MainModelCard/CommentsModal.tsx index 09b71ac..6d0c60b 100644 --- a/src/components/models/MainModelCard/CommentsModal.tsx +++ b/src/components/models/MainModelCard/CommentsModal.tsx @@ -5,7 +5,8 @@ import RoundedInput from "@/components/elements/RoundedInput"; import useAxios from "@/hooks/useAxios"; import toast from "react-hot-toast"; import Rate from "rc-rate"; -import "rc-rate/assets/index.css"; +import "rc-rate/assets/index.css"; +import "@/styles/rc-rate-custom.css"; import BoldIcon from "@/components/ui/BoldIcon"; import ProfileAvatar from "@/components/main/ProfileAvatar"; import { useRequireAuth } from "@/lib/auth/useRequireAuth"; diff --git a/src/components/projects/Workroom/ProjectWorkroomRate.tsx b/src/components/projects/Workroom/ProjectWorkroomRate.tsx index e5edafa..99d84f6 100644 --- a/src/components/projects/Workroom/ProjectWorkroomRate.tsx +++ b/src/components/projects/Workroom/ProjectWorkroomRate.tsx @@ -2,7 +2,8 @@ import React, { useState, useEffect } from "react"; import Rate from "rc-rate"; -import "rc-rate/assets/index.css"; +import "rc-rate/assets/index.css"; +import "@/styles/rc-rate-custom.css"; import useAxios from "@/hooks/useAxios"; import RoundedButton from "@/components/elements/RoundedButton"; import toast from "react-hot-toast"; diff --git a/src/components/settings/offers/CommentModal.tsx b/src/components/settings/offers/CommentModal.tsx index 94a324b..eb3b506 100644 --- a/src/components/settings/offers/CommentModal.tsx +++ b/src/components/settings/offers/CommentModal.tsx @@ -1,6 +1,7 @@ import React, { useState, useEffect } from "react"; import Rate from "rc-rate"; -import "rc-rate/assets/index.css"; +import "rc-rate/assets/index.css"; +import "@/styles/rc-rate-custom.css"; import Modal from "@/components/elements/Modal"; import useAxios from "@/hooks/useAxios"; import { IOffers } from "@/types/types"; diff --git a/src/styles/rc-rate-custom.css b/src/styles/rc-rate-custom.css new file mode 100644 index 0000000..7d15f8b --- /dev/null +++ b/src/styles/rc-rate-custom.css @@ -0,0 +1,11 @@ +.rc-rate-star-full .rc-rate-star-content:before, +.rc-rate-star-half .rc-rate-star-content:before, +.rc-rate-star-full i, +.rc-rate-star-half i { + color: gold !important; +} + +.rc-rate-star:hover .rc-rate-star-content:before, +.rc-rate-star:hover i { + color: gold !important; +}