feat: update fixing error, import, etc until success build

This commit is contained in:
hanif salafi 2025-05-27 18:37:53 +07:00
parent 71416a40d0
commit 073dfe3b1c
52 changed files with 7982 additions and 1235 deletions

8794
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -54,39 +54,99 @@
"@radix-ui/react-toggle": "^1.0.3", "@radix-ui/react-toggle": "^1.0.3",
"@radix-ui/react-toggle-group": "^1.0.4", "@radix-ui/react-toggle-group": "^1.0.4",
"@radix-ui/react-tooltip": "^1.0.7", "@radix-ui/react-tooltip": "^1.0.7",
"@reach/combobox": "^0.18.0",
"@react-google-maps/api": "^2.20.3",
"@south-paw/react-vector-maps": "^3.2.0",
"@studio-freight/react-lenis": "^0.0.47", "@studio-freight/react-lenis": "^0.0.47",
"@tanstack/react-table": "^8.19.2", "@tanstack/react-table": "^8.19.2",
"@types/cleave.js": "^1.4.12",
"@types/crypto-js": "^4.2.2",
"@types/js-cookie": "^3.0.6",
"@types/next": "^9.0.0",
"@types/qs": "^6.9.17",
"@types/react-google-recaptcha": "^2.1.9",
"@types/react-html-parser": "^2.0.6",
"@types/react-syntax-highlighter": "^15.5.13",
"@types/sanitize-html": "^2.13.0",
"@vercel/analytics": "^1.3.1", "@vercel/analytics": "^1.3.1",
"@wavesurfer/react": "^1.0.8", "@wavesurfer/react": "^1.0.8",
"add": "^2.0.6",
"apexcharts": "^3.49.2", "apexcharts": "^3.49.2",
"axios": "^1.7.8", "axios": "^1.7.8",
"chart": "^0.1.2",
"chart.js": "^4.4.3", "chart.js": "^4.4.3",
"ckeditor5-custom-build": "file:src/vendor/ckeditor5",
"class-variance-authority": "^0.7.0", "class-variance-authority": "^0.7.0",
"cleave.js": "^1.6.0",
"clsx": "^2.1.1", "clsx": "^2.1.1",
"cmdk": "^1.0.0", "cmdk": "^1.0.0",
"cookie": "^1.0.2",
"crypto-js": "^4.2.0",
"date-fns": "^3.6.0", "date-fns": "^3.6.0",
"dayjs": "^1.11.11", "dayjs": "^1.11.11",
"embla-carousel-autoplay": "^8.1.3", "embla-carousel-autoplay": "^8.1.3",
"embla-carousel-react": "^8.1.3", "embla-carousel-react": "^8.1.3",
"emoji-mart": "^5.6.0",
"framer-motion": "^11.15.0", "framer-motion": "^11.15.0",
"geojson": "^0.5.0",
"google-map-react": "^2.2.1",
"html-react-parser": "^5.2.0", "html-react-parser": "^5.2.0",
"input-otp": "^1.2.4", "input-otp": "^1.2.4",
"jodit-react": "^4.1.2",
"jotai": "^2.9.3", "jotai": "^2.9.3",
"jquery": "^3.7.1",
"js-cookie": "^3.0.5",
"jspdf": "^3.0.1",
"layout-grid": "^2.2.0",
"leaflet": "^1.9.4",
"lucide-react": "^0.390.0", "lucide-react": "^0.390.0",
"moment": "^2.30.1",
"next": "14.2.3", "next": "14.2.3",
"next-intl": "^4.0.0", "next-intl": "^4.0.0",
"next-themes": "^0.3.0", "next-themes": "^0.3.0",
"nextra": "^2.13.4", "nextra": "^2.13.4",
"nextra-theme-docs": "^2.13.4", "nextra-theme-docs": "^2.13.4",
"qs": "^6.13.1",
"react": "^18.2.0", "react": "^18.2.0",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-hook-form": "^7.52.1", "react-hook-form": "^7.52.1",
"react-apexcharts": "^1.7.0",
"react-audio-player": "^0.17.0",
"react-audio-voice-recorder": "^2.2.0",
"react-chartjs-2": "^5.2.0",
"react-cssfx-loading": "^2.1.0",
"react-datepicker": "^7.5.0",
"react-day-picker": "^8.10.1",
"react-hot-toast": "^2.4.1", "react-hot-toast": "^2.4.1",
"react-dropzone": "^14.2.3",
"react-geocode": "^0.2.3",
"react-icons": "^5.3.0", "react-icons": "^5.3.0",
"react-leaflet": "^4.2.1",
"react-loading-skeleton": "^3.5.0",
"react-password-checklist": "^1.8.1",
"react-player": "^2.16.0",
"react-resizable-panels": "^2.0.19",
"react-responsive": "^10.0.0",
"react-select": "^5.8.3",
"react-slick": "^0.30.2",
"react-syntax-highlighter": "^15.5.0",
"react-time-picker": "^7.0.0",
"recharts": "^2.12.7",
"rtl-detect": "^1.1.2",
"sanitize-html": "^2.14.0",
"shadcn": "^2.3.0",
"sharp": "^0.33.4",
"sonner": "^1.5.0", "sonner": "^1.5.0",
"sweetalert2": "^11.10.5",
"sweetalert2-react-content": "^5.0.7",
"swiper": "^11.1.15",
"tailwind-merge": "^2.5.5", "tailwind-merge": "^2.5.5",
"tailwindcss-animate": "^1.0.7", "tailwindcss-animate": "^1.0.7",
"tus-js-client": "^4.2.3",
"use-places-autocomplete": "^4.0.1",
"vaul": "^0.9.1",
"wavesurfer.js": "^7.9.5", "wavesurfer.js": "^7.9.5",
"yup": "^1.6.1",
"zod": "^3.23.8" "zod": "^3.23.8"
}, },
"devDependencies": { "devDependencies": {
@ -97,6 +157,12 @@
"@types/node": "^20", "@types/node": "^20",
"@types/react": "^18.2.0", "@types/react": "^18.2.0",
"@types/react-dom": "^18.2.0", "@types/react-dom": "^18.2.0",
"@types/d3-shape": "^3.1.6",
"@types/geojson": "^7946.0.15",
"@types/jquery": "^3.5.32",
"@types/leaflet": "^1.9.12",
"@types/react-geocode": "^0.2.4",
"@types/rtl-detect": "^1.0.3",
"eslint": "^8", "eslint": "^8",
"eslint-config-next": "14.2.3", "eslint-config-next": "14.2.3",
"postcss": "^8", "postcss": "^8",

View File

@ -81,7 +81,7 @@ const columns: ColumnDef<any>[] = [
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent className="p-0" align="end"> <DropdownMenuContent className="p-0" align="end">
<DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none"> <DropdownMenuItem className="p-2 border-b text-default-700 group focus:bg-default focus:text-primary-foreground rounded-none">
<Link href="#">Detail</Link> <Link href="/">Detail</Link>
</DropdownMenuItem> </DropdownMenuItem>
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>

View File

@ -35,12 +35,12 @@ const socials = [
}, },
]; ];
const ChatPageSingle = async ({ params: { id } }: { params: { id: string } }) => { const ChatPageSingle = async ({ params: { id, locale } }: { params: { id: string; locale: string } }) => {
const { chat, contact } = await getChatsByContactId(id); const { chat, contact } = await getChatsByContactId(id);
const profile = await getProfileUser(); const profile = await getProfileUser();
if (!contact) { if (!contact) {
redirect("/app/chat"); redirect({ href: "/app/chat", locale });
} }
return ( return (
@ -154,7 +154,7 @@ const ChatPageSingle = async ({ params: { id } }: { params: { id: string } }) =>
<div className="flex flex-col items-center px-6"> <div className="flex flex-col items-center px-6">
<Avatar className="h-24 w-24 border-none shadow-none bg-transparent hover:bg-transparent"> <Avatar className="h-24 w-24 border-none shadow-none bg-transparent hover:bg-transparent">
<AvatarImage src={contact?.avatar?.src || `/images/users/user-5.jpg`} alt="" /> <AvatarImage src={contact?.avatar || `/images/users/user-5.jpg`} alt="" />
<AvatarFallback>{contact?.fullName?.slice(0, 2)}</AvatarFallback> <AvatarFallback>{contact?.fullName?.slice(0, 2)}</AvatarFallback>
</Avatar> </Avatar>
<div className="text-center mt-4 "> <div className="text-center mt-4 ">

View File

@ -34,7 +34,7 @@ const ContactList = ({ contact }: { contact: ContactType }) => {
<div className="flex-1 flex items-center gap-3 "> <div className="flex-1 flex items-center gap-3 ">
<div className="relative inline-block "> <div className="relative inline-block ">
<Avatar className="border-none bg-transparent hover:bg-transparent"> <Avatar className="border-none bg-transparent hover:bg-transparent">
<AvatarImage src={avatar.src} /> <AvatarImage src={avatar} />
<AvatarFallback className="uppercase">{fullName.slice(0, 2)}</AvatarFallback> <AvatarFallback className="uppercase">{fullName.slice(0, 2)}</AvatarFallback>
</Avatar> </Avatar>
<Badge <Badge

View File

@ -1,7 +1,7 @@
import { redirect } from "@/i18n/navigation"; import { redirect } from "@/i18n/navigation";
const ProjectPage = () => { const ProjectPage = async ({ params: { locale } }: { params: { locale: string } }) => {
redirect("/app/projects/grid"); redirect({ href: "/app/projects/grid", locale });
return null; return null;
}; };

View File

@ -2,8 +2,8 @@
import { redirect } from "@/i18n/navigation"; import { redirect } from "@/i18n/navigation";
const Backend = () => { const Backend = async ({ params: { locale } }: { params: { locale: string } }) => {
redirect("/ecommerce/backend/add-product"); redirect({ href: "/ecommerce/backend/add-product", locale });
return null; return null;
}; };

View File

@ -2,8 +2,8 @@
import { redirect } from "@/i18n/navigation"; import { redirect } from "@/i18n/navigation";
const Backend = () => { const Backend = async ({ params: { locale } }: { params: { locale: string } }) => {
redirect("/ecommerce/frontend"); redirect({ href: "/ecommerce/frontend", locale });
return null; return null;
}; };

View File

@ -19,7 +19,13 @@ import {
SelectValue, SelectValue,
} from "@/components/ui/select"; } from "@/components/ui/select";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import CustomEditor from "@/components/features/editor/custom-editor"; import dynamic from "next/dynamic";
const CustomEditor = dynamic(
() => {
return import("@/components/features/editor/custom-editor");
},
{ ssr: false }
);
const imageSchema = z.object({ const imageSchema = z.object({
title: z.string().min(1, { message: "Judul diperlukan" }), title: z.string().min(1, { message: "Judul diperlukan" }),

View File

@ -31,9 +31,15 @@ import {
SelectValue, SelectValue,
} from "@/components/ui/select"; } from "@/components/ui/select";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import CustomEditor from "@/components/features/editor/custom-editor";
import HeaderManagement from "@/components/features/landing-page/header-management"; import HeaderManagement from "@/components/features/landing-page/header-management";
import SidebarManagement from "@/components/features/landing-page/sidebar-management"; import SidebarManagement from "@/components/features/landing-page/sidebar-management";
import dynamic from "next/dynamic";
const CustomEditor = dynamic(
() => {
return import("@/components/features/editor/custom-editor");
},
{ ssr: false }
);
const imageSchema = z.object({ const imageSchema = z.object({
title: z.string().min(1, { message: "Judul diperlukan" }), title: z.string().min(1, { message: "Judul diperlukan" }),

View File

@ -15,9 +15,15 @@ import { saveContentRewrite } from "@/lib/services/content/content";
import { getContentRewrite, getInfoProfile } from "@/lib/services/landing/landing"; import { getContentRewrite, getInfoProfile } from "@/lib/services/landing/landing";
import { getCookiesDecrypt } from "@/lib/utils/utils"; import { getCookiesDecrypt } from "@/lib/utils/utils";
import { Input } from "@/components/ui/input"; import { Input } from "@/components/ui/input";
import CustomEditor from "@/components/features/editor/custom-editor";
import HeaderManagement from "@/components/features/landing-page/header-management"; import HeaderManagement from "@/components/features/landing-page/header-management";
import SidebarManagement from "@/components/features/landing-page/sidebar-management"; import SidebarManagement from "@/components/features/landing-page/sidebar-management";
import dynamic from "next/dynamic";
const CustomEditor = dynamic(
() => {
return import("@/components/features/editor/custom-editor");
},
{ ssr: false }
);
const page = () => { const page = () => {
const [profile, setProfile] = useState(); const [profile, setProfile] = useState();

View File

@ -50,7 +50,6 @@ import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import ViewEditor from "@/components/features/editor/view-editor";
ChartJS.register(ArcElement, Tooltip, Legend); ChartJS.register(ArcElement, Tooltip, Legend);
const imageSchema = z.object({ const imageSchema = z.object({

View File

@ -52,7 +52,6 @@ import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import ViewEditor from "@/components/features/editor/view-editor";
ChartJS.register(ArcElement, Tooltip, Legend); ChartJS.register(ArcElement, Tooltip, Legend);
const imageSchema = z.object({ const imageSchema = z.object({

View File

@ -50,7 +50,6 @@ import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import ViewEditor from "@/components/features/editor/view-editor";
ChartJS.register(ArcElement, Tooltip, Legend); ChartJS.register(ArcElement, Tooltip, Legend);
const imageSchema = z.object({ const imageSchema = z.object({

View File

@ -50,7 +50,6 @@ import { Input } from "@/components/ui/input";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { Textarea } from "@/components/ui/textarea"; import { Textarea } from "@/components/ui/textarea";
import ViewEditor from "@/components/features/editor/view-editor";
ChartJS.register(ArcElement, Tooltip, Legend); ChartJS.register(ArcElement, Tooltip, Legend);
const imageSchema = z.object({ const imageSchema = z.object({

View File

@ -101,7 +101,7 @@ const Repeater = () => {
</form> </form>
<div className="mt-4"> <div className="mt-4">
<Link <Link
href="#" href="/"
className="text-default-800 p-0 flex gap-2 text-sm font-medium items-center" className="text-default-800 p-0 flex gap-2 text-sm font-medium items-center"
onClick={() => append({ firstName: "", lastName: "", phone: "" })} onClick={() => append({ firstName: "", lastName: "", phone: "" })}
> >

View File

@ -68,7 +68,7 @@ const EventCalender = () => {
Kapolri Jenderal Pol. Listyo Sigit Prabowo memberikan apresiasi kepada polisi wanita Kapolri Jenderal Pol. Listyo Sigit Prabowo memberikan apresiasi kepada polisi wanita
yang berprestasi... yang berprestasi...
</p> </p>
<a href="#" className="text-xs text-blue-500"> <a href="/" className="text-xs text-blue-500">
Lihat Selengkapnya Lihat Selengkapnya
</a> </a>
</div> </div>

View File

@ -59,7 +59,7 @@ const Footer = () => {
<Dialog> <Dialog>
<DialogTrigger> <DialogTrigger>
<span className="hidden md:inline-block">|</span> <span className="hidden md:inline-block">|</span>
<a href="#" className="hover:underline px-2"> <a href="/" className="hover:underline px-2">
{t("privacy")} {t("privacy")}
</a> </a>
</DialogTrigger> </DialogTrigger>
@ -78,19 +78,19 @@ const Footer = () => {
{/* Social Media Icons */} {/* Social Media Icons */}
<div className="flex justify-center items-center space-x-3"> <div className="flex justify-center items-center space-x-3">
<span className="text-sm">Follow Us:</span> <span className="text-sm">Follow Us:</span>
<a href="#" aria-label="Facebook"> <a href="/" aria-label="Facebook">
<img src="/assets/facebook.svg" alt="Facebook" className="w-5 h-5" /> <img src="/assets/facebook.svg" alt="Facebook" className="w-5 h-5" />
</a> </a>
<a href="#" aria-label="Instagram"> <a href="/" aria-label="Instagram">
<img src="/assets/instagram.svg" alt="Instagram" className="w-5 h-5" /> <img src="/assets/instagram.svg" alt="Instagram" className="w-5 h-5" />
</a> </a>
<a href="#" aria-label="Twitter"> <a href="/" aria-label="Twitter">
<img src="/assets/twitter.svg" alt="Instagram" className="w-5 h-5" /> <img src="/assets/twitter.svg" alt="Instagram" className="w-5 h-5" />
</a> </a>
<a href="#" aria-label="TikTok"> <a href="/" aria-label="TikTok">
<img src="/assets/tiktok.svg" alt="TikTok" className="w-5 h-5" /> <img src="/assets/tiktok.svg" alt="TikTok" className="w-5 h-5" />
</a> </a>
<a href="#" aria-label="YouTube"> <a href="/" aria-label="YouTube">
<img src="/assets/youtube.svg" alt="YouTube" className="w-5 h-5" /> <img src="/assets/youtube.svg" alt="YouTube" className="w-5 h-5" />
</a> </a>
</div> </div>

View File

@ -207,19 +207,19 @@ const ContactUsKaltara = () => {
<h2 className="text-lg font-bold">Sosial Media Humas</h2> <h2 className="text-lg font-bold">Sosial Media Humas</h2>
<hr className="border-t-2 border-dotted border-black my-2" /> <hr className="border-t-2 border-dotted border-black my-2" />
<div className="flex gap-4"> <div className="flex gap-4">
<a href="#"> <a href="/">
<Icon icon="fa6-brands:square-x-twitter" className="w-6 h-6" /> <Icon icon="fa6-brands:square-x-twitter" className="w-6 h-6" />
</a> </a>
<a href="#"> <a href="/">
<Icon icon="skill-icons:instagram" className="w-6 h-6" /> <Icon icon="skill-icons:instagram" className="w-6 h-6" />
</a> </a>
<a href="#"> <a href="/">
<Icon icon="devicon:facebook" className="w-6 h-6" /> <Icon icon="devicon:facebook" className="w-6 h-6" />
</a> </a>
<a href="#"> <a href="/">
<Icon icon="hugeicons:tiktok" className="w-6 h-6" /> <Icon icon="hugeicons:tiktok" className="w-6 h-6" />
</a> </a>
<a href="#"> <a href="/">
<Icon icon="fa-brands:youtube-square" className="w-6 h-6" /> <Icon icon="fa-brands:youtube-square" className="w-6 h-6" />
</a> </a>
</div> </div>

View File

@ -355,7 +355,7 @@ const Navbar = () => {
</div> </div>
)} )}
{/* <Link href="#" className="flex items-center space-x-1 text-red-600"> {/* <Link href="/" className="flex items-center space-x-1 text-red-600">
<span className="w-2 h-2 bg-red-500 rounded-full"></span> <span className="w-2 h-2 bg-red-500 rounded-full"></span>
<span className="font-medium">{t("live")}</span> <span className="font-medium">{t("live")}</span>
</Link> */} </Link> */}
@ -434,7 +434,7 @@ const Navbar = () => {
</Link> </Link>
</DropdownMenuItem> </DropdownMenuItem>
<DropdownMenuItem> <DropdownMenuItem>
<Link href="#" className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg"> <Link href="/" className="flex items-center gap-1 hover:bg-slate-600 w-full rounded-lg">
<Icon icon="iconamoon:exit-bold" /> <Icon icon="iconamoon:exit-bold" />
Keluar Keluar
</Link> </Link>
@ -447,7 +447,7 @@ const Navbar = () => {
<Link href="/auth" className="px-4 py-1 bg-[#bb3523] text-white font-semibold rounded-md hover:bg-[#bb3523]"> <Link href="/auth" className="px-4 py-1 bg-[#bb3523] text-white font-semibold rounded-md hover:bg-[#bb3523]">
Masuk Masuk
</Link> </Link>
<Link href="#" className="px-4 py-1 border border-[#bb3523] text-[#bb3523] font-semibold rounded-md hover:bg-[#bb3523] hover:text-white"> <Link href="/" className="px-4 py-1 border border-[#bb3523] text-[#bb3523] font-semibold rounded-md hover:bg-[#bb3523] hover:text-white">
Daftar Daftar
</Link>{" "} </Link>{" "}
</> </>

View File

@ -214,7 +214,7 @@ const PopularContent = () => {
<CarouselItem key={description.id} className="md:basis-1/2 lg:basis-1/3"> <CarouselItem key={description.id} className="md:basis-1/2 lg:basis-1/3">
<div className="flex flex-row gap-6"> <div className="flex flex-row gap-6">
<a <a
href="#" href="/"
key={description.id} key={description.id}
className="flex flex-col sm:flex-row items-center bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full" className="flex flex-col sm:flex-row items-center bg-white dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full"
> >
@ -295,7 +295,7 @@ const PopularContent = () => {
<CarouselItem key={description.id} className="md:basis-1/2 lg:basis-1/3"> <CarouselItem key={description.id} className="md:basis-1/2 lg:basis-1/3">
<div className="md:basis-1/2 lg:basis-1/3"> <div className="md:basis-1/2 lg:basis-1/3">
<a <a
href="#" href="/"
className="flex flex-col bg-yellow-500 sm:flex-row items-center dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full" className="flex flex-col bg-yellow-500 sm:flex-row items-center dark:bg-gray-800 cursor-pointer shadow-md rounded-lg p-4 gap-4 w-full"
> >
<div className="flex items-center justify-center rounded-lg w-16 h-2 lg:h-16"> <div className="flex items-center justify-center rounded-lg w-16 h-2 lg:h-16">
@ -349,7 +349,7 @@ const PopularContent = () => {
</div> </div>
<div className="flex items-center flex-row justify-center"> <div className="flex items-center flex-row justify-center">
<Link <Link
href="#" href="/"
className="border text-[#bb3523] text-sm lg:text-md px-4 py-1 border-[#bb3523]" className="border text-[#bb3523] text-sm lg:text-md px-4 py-1 border-[#bb3523]"
> >
LIHAT SEMUA LIHAT SEMUA

View File

@ -809,7 +809,7 @@ const DetailAudio = () => {
<a <a
className="ml-5 cursor-pointer" className="ml-5 cursor-pointer"
data-toggle="dropdown" data-toggle="dropdown"
href="#" href="/"
aria-expanded="false" aria-expanded="false"
> >
<Icon <Icon

View File

@ -644,7 +644,7 @@ const DetailDocument = () => {
<a <a
className="ml-5 cursor-pointer" className="ml-5 cursor-pointer"
data-toggle="dropdown" data-toggle="dropdown"
href="#" href="/"
aria-expanded="false" aria-expanded="false"
> >
<Icon <Icon

View File

@ -736,7 +736,7 @@ const DetailImage = (data: any) => {
<a <a
className="ml-5 cursor-pointer" className="ml-5 cursor-pointer"
data-toggle="dropdown" data-toggle="dropdown"
href="#" href="/"
aria-expanded="false" aria-expanded="false"
> >
<Icon <Icon

View File

@ -660,7 +660,7 @@ const DetailVideo = () => {
<a <a
className="ml-5 cursor-pointer" className="ml-5 cursor-pointer"
data-toggle="dropdown" data-toggle="dropdown"
href="#" href="/"
aria-expanded="false" aria-expanded="false"
> >
<Icon <Icon

View File

@ -6,7 +6,7 @@ const Social = ({ locale }: { locale: string }) => {
<ul className="flex"> <ul className="flex">
<li className="flex-1"> <li className="flex-1">
<a <a
href="#" href="/"
className="inline-flex h-10 w-10 p-2 bg-[#1C9CEB] text-white text-2xl flex-col items-center justify-center rounded-full" className="inline-flex h-10 w-10 p-2 bg-[#1C9CEB] text-white text-2xl flex-col items-center justify-center rounded-full"
> >
<Image <Image
@ -20,7 +20,7 @@ const Social = ({ locale }: { locale: string }) => {
</li> </li>
<li className="flex-1"> <li className="flex-1">
<a <a
href="#" href="/"
className="inline-flex h-10 w-10 p-2 bg-[#395599] text-white text-2xl flex-col items-center justify-center rounded-full" className="inline-flex h-10 w-10 p-2 bg-[#395599] text-white text-2xl flex-col items-center justify-center rounded-full"
> >
<Image <Image
@ -34,7 +34,7 @@ const Social = ({ locale }: { locale: string }) => {
</li> </li>
<li className="flex-1"> <li className="flex-1">
<a <a
href="#" href="/"
className="inline-flex h-10 w-10 p-2 bg-[#0A63BC] text-white text-2xl flex-col items-center justify-center rounded-full" className="inline-flex h-10 w-10 p-2 bg-[#0A63BC] text-white text-2xl flex-col items-center justify-center rounded-full"
> >
<Image <Image

View File

@ -3,7 +3,7 @@
import { Check } from "lucide-react"; import { Check } from "lucide-react";
import { useConfig } from "@/lib/hooks/use-config"; import { useConfig } from "@/lib/hooks/use-config";
import { navBarType } from "@/lib/type"; import { navBarType } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group"; import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";

View File

@ -3,7 +3,7 @@
import React from "react"; import React from "react";
import { useConfig } from "@/lib/hooks/use-config"; import { useConfig } from "@/lib/hooks/use-config";
import { contentType } from "@/lib/type"; import { contentType } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
import { Icon } from "@/components/ui/icon"; import { Icon } from "@/components/ui/icon";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";

View File

@ -4,7 +4,7 @@ import React from "react";
import Image from "next/image"; import Image from "next/image";
import { useConfig } from "@/lib/hooks/use-config"; import { useConfig } from "@/lib/hooks/use-config";
import { layoutType } from "@/lib/type"; import { layoutType } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
import { Icon } from "@/components/ui/icon"; import { Icon } from "@/components/ui/icon";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";

View File

@ -3,7 +3,7 @@
import React from "react"; import React from "react";
import { useConfig } from "@/lib/hooks/use-config"; import { useConfig } from "@/lib/hooks/use-config";
import { sidebarType } from "@/lib/type"; import { sidebarType } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
import { Icon } from "@/components/ui/icon"; import { Icon } from "@/components/ui/icon";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";

View File

@ -3,7 +3,7 @@
import React from "react"; import React from "react";
import { useConfig } from "@/lib/hooks/use-config"; import { useConfig } from "@/lib/hooks/use-config";
import { skinType } from "@/lib/type"; import { skinType } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
import { Icon } from "@/components/ui/icon"; import { Icon } from "@/components/ui/icon";
import { Label } from "@/components/ui/label"; import { Label } from "@/components/ui/label";

View File

@ -109,7 +109,7 @@ export const messages = [
hasnotifaction: true, hasnotifaction: true,
notification_count: 1, notification_count: 1,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
{ {
title: "Savannah Nguyen", title: "Savannah Nguyen",
@ -117,7 +117,7 @@ export const messages = [
active: false, active: false,
hasnotifaction: false, hasnotifaction: false,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
{ {
title: "Ralph Edwards", title: "Ralph Edwards",
@ -126,7 +126,7 @@ export const messages = [
hasnotifaction: true, hasnotifaction: true,
notification_count: 8, notification_count: 8,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
{ {
title: "Cody Fisher", title: "Cody Fisher",
@ -134,7 +134,7 @@ export const messages = [
active: true, active: true,
hasnotifaction: false, hasnotifaction: false,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
{ {
title: "Savannah Nguyen", title: "Savannah Nguyen",
@ -142,7 +142,7 @@ export const messages = [
active: false, active: false,
hasnotifaction: false, hasnotifaction: false,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
{ {
title: "Ralph Edwards", title: "Ralph Edwards",
@ -151,7 +151,7 @@ export const messages = [
hasnotifaction: true, hasnotifaction: true,
notification_count: 8, notification_count: 8,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
{ {
title: "Cody Fisher", title: "Cody Fisher",
@ -159,7 +159,7 @@ export const messages = [
active: true, active: true,
hasnotifaction: false, hasnotifaction: false,
image: undefined, image: undefined,
link: "#", link: "/",
}, },
]; ];

View File

@ -4,7 +4,7 @@ import * as React from "react";
import { Icon } from "@iconify/react"; import { Icon } from "@iconify/react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { color, rounded, shadow } from "@/lib/type"; import { color, rounded, shadow } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const alertVariants = cva( const alertVariants = cva(

View File

@ -4,7 +4,7 @@ import * as React from "react";
import * as AvatarPrimitive from "@radix-ui/react-avatar"; import * as AvatarPrimitive from "@radix-ui/react-avatar";
import { cva } from "class-variance-authority"; import { cva } from "class-variance-authority";
import { color, rounded } from "@/lib/type"; import { color, rounded } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
export interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> { export interface AvatarProps extends React.HTMLAttributes<HTMLSpanElement> {

View File

@ -1,7 +1,7 @@
import * as React from "react"; import * as React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { color, rounded } from "@/lib/type"; import { color, rounded } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const badgeVariants = cva( const badgeVariants = cva(

View File

@ -2,7 +2,7 @@ import * as React from "react";
import { Slot } from "@radix-ui/react-slot"; import { Slot } from "@radix-ui/react-slot";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { color, rounded, shadow } from "@/lib/type"; import { color, rounded, shadow } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const buttonVariants = cva( const buttonVariants = cva(

View File

@ -5,7 +5,7 @@ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { Check } from "lucide-react"; import { Check } from "lucide-react";
import { color } from "@/lib/type"; import { color } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const checkboxVariants = cva( const checkboxVariants = cva(

View File

@ -5,7 +5,7 @@ import * as DialogPrimitive from "@radix-ui/react-dialog";
import { cva } from "class-variance-authority"; import { cva } from "class-variance-authority";
import { X } from "lucide-react"; import { X } from "lucide-react";
import { size } from "@/lib/type"; import { size } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const Dialog = DialogPrimitive.Root; const Dialog = DialogPrimitive.Root;

View File

@ -2,7 +2,7 @@
import React from "react"; import React from "react";
import { Icon as IconIfyIcon } from "@iconify/react"; import { Icon as IconIfyIcon } from "@iconify/react";
import { SVGProps } from "react";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const Icon = React.forwardRef< const Icon = React.forwardRef<
@ -14,3 +14,167 @@ const Icon = React.forwardRef<
Icon.displayName = "Icon"; Icon.displayName = "Icon";
export { Icon }; export { Icon };
type IconSvgProps = SVGProps<SVGSVGElement> & {
size?: number;
};
export const FacebookIcon = ({
size,
height = 24,
width = 24,
fill = "currentColor",
...props
}: IconSvgProps) => (
<svg
height={size || height}
width={size || width}
viewBox="0 0 24 24"
fill={fill}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g fill="none">
<g clip-path="url(#akarIconsFacebookFill0)">
<path
fill="currentColor"
fillRule="evenodd"
d="M0 12.067C0 18.034 4.333 22.994 10 24v-8.667H7V12h3V9.333c0-3 1.933-4.666 4.667-4.666c.866 0 1.8.133 2.666.266V8H15.8c-1.467 0-1.8.733-1.8 1.667V12h3.2l-.533 3.333H14V24c5.667-1.006 10-5.966 10-11.933C24 5.43 18.6 0 12 0S0 5.43 0 12.067"
clipRule="evenodd"
/>
</g>
<defs>
<clipPath id="akarIconsFacebookFill0">
<path fill="#fff" d="M0 0h24v24H0z" />
</clipPath>
</defs>
</g>
</svg>
);
export const InstagramIcon = ({
size,
height = 24,
width = 24,
fill = "currentColor",
...props
}: IconSvgProps) => (
<svg
height={size || height}
width={size || width}
viewBox="0 0 24 24"
fill={fill}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
fill="currentColor"
d="M7.8 2h8.4C19.4 2 22 4.6 22 7.8v8.4a5.8 5.8 0 0 1-5.8 5.8H7.8C4.6 22 2 19.4 2 16.2V7.8A5.8 5.8 0 0 1 7.8 2m-.2 2A3.6 3.6 0 0 0 4 7.6v8.8C4 18.39 5.61 20 7.6 20h8.8a3.6 3.6 0 0 0 3.6-3.6V7.6C20 5.61 18.39 4 16.4 4zm9.65 1.5a1.25 1.25 0 0 1 1.25 1.25A1.25 1.25 0 0 1 17.25 8A1.25 1.25 0 0 1 16 6.75a1.25 1.25 0 0 1 1.25-1.25M12 7a5 5 0 0 1 5 5a5 5 0 0 1-5 5a5 5 0 0 1-5-5a5 5 0 0 1 5-5m0 2a3 3 0 0 0-3 3a3 3 0 0 0 3 3a3 3 0 0 0 3-3a3 3 0 0 0-3-3"
/>
</svg>
);
export const YoutubeIcon = ({
size,
height = 24,
width = 24,
fill = "currentColor",
...props
}: IconSvgProps) => (
<svg
height={size || height}
width={size || width}
viewBox="0 0 24 24"
fill={fill}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g fill="none">
<path d="m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z" />
<path
fill="currentColor"
d="M12 4c.855 0 1.732.022 2.582.058l1.004.048l.961.057l.9.061l.822.064a3.8 3.8 0 0 1 3.494 3.423l.04.425l.075.91c.07.943.122 1.971.122 2.954s-.052 2.011-.122 2.954l-.075.91l-.04.425a3.8 3.8 0 0 1-3.495 3.423l-.82.063l-.9.062l-.962.057l-1.004.048A62 62 0 0 1 12 20a62 62 0 0 1-2.582-.058l-1.004-.048l-.961-.057l-.9-.062l-.822-.063a3.8 3.8 0 0 1-3.494-3.423l-.04-.425l-.075-.91A41 41 0 0 1 2 12c0-.983.052-2.011.122-2.954l.075-.91l.04-.425A3.8 3.8 0 0 1 5.73 4.288l.821-.064l.9-.061l.962-.057l1.004-.048A62 62 0 0 1 12 4m0 2c-.825 0-1.674.022-2.5.056l-.978.047l-.939.055l-.882.06l-.808.063a1.8 1.8 0 0 0-1.666 1.623C4.11 9.113 4 10.618 4 12s.11 2.887.227 4.096c.085.872.777 1.55 1.666 1.623l.808.062l.882.06l.939.056l.978.047c.826.034 1.675.056 2.5.056s1.674-.022 2.5-.056l.978-.047l.939-.055l.882-.06l.808-.063a1.8 1.8 0 0 0 1.666-1.623C19.89 14.887 20 13.382 20 12s-.11-2.887-.227-4.096a1.8 1.8 0 0 0-1.666-1.623l-.808-.062l-.882-.06l-.939-.056l-.978-.047A61 61 0 0 0 12 6m-2 3.575a.6.6 0 0 1 .819-.559l.081.04l4.2 2.424a.6.6 0 0 1 .085.98l-.085.06l-4.2 2.425a.6.6 0 0 1-.894-.43l-.006-.09z"
/>
</g>
</svg>
);
export const TiktokIcon = ({
size,
height = 24,
width = 24,
fill = "currentColor",
...props
}: IconSvgProps) => (
<svg
height={size || height}
width={size || width}
viewBox="0 0 24 24"
fill={fill}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
fill="currentColor"
d="M16.6 5.82s.51.5 0 0A4.28 4.28 0 0 1 15.54 3h-3.09v12.4a2.59 2.59 0 0 1-2.59 2.5c-1.42 0-2.6-1.16-2.6-2.6c0-1.72 1.66-3.01 3.37-2.48V9.66c-3.45-.46-6.47 2.22-6.47 5.64c0 3.33 2.76 5.7 5.69 5.7c3.14 0 5.69-2.55 5.69-5.7V9.01a7.35 7.35 0 0 0 4.3 1.38V7.3s-1.88.09-3.24-1.48"
/>
</svg>
);
export const XIcon = ({
size,
height = 24,
width = 24,
fill = "currentColor",
...props
}: IconSvgProps) => (
<svg
height={size || height}
width={size || width}
viewBox="0 0 24 24"
fill={fill}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<path
fill="none"
stroke="currentColor"
strokeLinecap="round"
strokeLinejoin="round"
strokeWidth="1.5"
d="m13.081 10.712l-4.786-6.71a.6.6 0 0 0-.489-.252H5.28a.6.6 0 0 0-.488.948l6.127 8.59m2.162-2.576l6.127 8.59a.6.6 0 0 1-.488.948h-2.526a.6.6 0 0 1-.489-.252l-4.786-6.71m2.162-2.576l5.842-6.962m-8.004 9.538L5.077 20.25"
/>
</svg>
);
export const NewCampaignIcon = ({
size,
height = 24,
width = 24,
fill = "currentColor",
...props
}: IconSvgProps) => (
<svg
height={size || height}
width={size || width}
viewBox="0 0 18 18"
fill={fill}
xmlns="http://www.w3.org/2000/svg"
{...props}
>
<g clipPath="url(#clip0_4_200)">
<path
d="M12 2.25C12.1989 2.25 12.3897 2.32902 12.5303 2.46967C12.671 2.61032 12.75 2.80109 12.75 3V3.75H14.25C14.6284 3.74988 14.9929 3.8928 15.2704 4.15012C15.5479 4.40744 15.7179 4.76013 15.7463 5.1375L15.75 5.25V14.25C15.7501 14.6284 15.6072 14.9929 15.3499 15.2704C15.0926 15.5479 14.7399 15.7179 14.3625 15.7463L14.25 15.75H3.75C3.37157 15.7501 3.00708 15.6072 2.72959 15.3499C2.4521 15.0926 2.28213 14.7399 2.25375 14.3625L2.25 14.25V5.25C2.24988 4.87157 2.3928 4.50708 2.65012 4.22959C2.90744 3.9521 3.26013 3.78213 3.6375 3.75375L3.75 3.75H5.25V3C5.25 2.80109 5.32902 2.61032 5.46967 2.46967C5.61032 2.32902 5.80109 2.25 6 2.25C6.19891 2.25 6.38968 2.32902 6.53033 2.46967C6.67098 2.61032 6.75 2.80109 6.75 3V3.75H11.25V3C11.25 2.80109 11.329 2.61032 11.4697 2.46967C11.6103 2.32902 11.8011 2.25 12 2.25ZM11.118 7.03425L7.9365 10.2158L6.87525 9.15525C6.7338 9.01863 6.54435 8.94304 6.3477 8.94474C6.15105 8.94645 5.96294 9.02533 5.82389 9.16439C5.68483 9.30344 5.60595 9.49155 5.60424 9.6882C5.60254 9.88485 5.67813 10.0743 5.81475 10.2158L7.40025 11.802C7.4706 11.8724 7.55414 11.9283 7.64608 11.9664C7.73803 12.0045 7.83659 12.0241 7.93612 12.0241C8.03566 12.0241 8.13422 12.0045 8.22617 11.9664C8.31811 11.9283 8.40165 11.8724 8.472 11.802L12.1785 8.09475C12.2501 8.02557 12.3073 7.94281 12.3466 7.8513C12.3859 7.7598 12.4066 7.66139 12.4074 7.5618C12.4083 7.46222 12.3893 7.36346 12.3516 7.27129C12.3139 7.17911 12.2582 7.09537 12.1878 7.02495C12.1174 6.95453 12.0336 6.89884 11.9415 6.86113C11.8493 6.82342 11.7505 6.80445 11.6509 6.80531C11.5514 6.80618 11.4529 6.82687 11.3614 6.86617C11.2699 6.90548 11.1872 6.96262 11.118 7.03425Z"
fill="white"
/>
<rect width="10" height="10" transform="translate(4 5)" fill="white" />
<path
d="M13.2857 10.7143H9.71429V14.2857C9.71429 14.6786 9.39286 15 9 15C8.60714 15 8.28571 14.6786 8.28571 14.2857V10.7143H4.71429C4.32143 10.7143 4 10.3929 4 10C4 9.60714 4.32143 9.28571 4.71429 9.28571H8.28571V5.71429C8.28571 5.32143 8.60714 5 9 5C9.39286 5 9.71429 5.32143 9.71429 5.71429V9.28571H13.2857C13.6786 9.28571 14 9.60714 14 10C14 10.3929 13.6786 10.7143 13.2857 10.7143Z"
fill="#0d6efd"
/>
</g>
<defs>
<clipPath id="clip0_4_200">
<rect width="18" height="18" fill="white" />
</clipPath>
</defs>
</svg>
);

View File

@ -1,7 +1,7 @@
import * as React from "react"; import * as React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { InputColor } from "@/lib/type"; import { InputColor } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
export const inputVariants = cva( export const inputVariants = cva(

View File

@ -4,7 +4,7 @@ import * as React from "react";
import * as ProgressPrimitive from "@radix-ui/react-progress"; import * as ProgressPrimitive from "@radix-ui/react-progress";
import { cva } from "class-variance-authority"; import { cva } from "class-variance-authority";
import { color, size } from "@/lib/type"; import { color, size } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const progressVariants = cva( const progressVariants = cva(

View File

@ -5,7 +5,7 @@ import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { Circle } from "lucide-react"; import { Circle } from "lucide-react";
import { color, size } from "@/lib/type"; import { color, size } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const radioVariants = cva( const radioVariants = cva(

View File

@ -5,7 +5,7 @@ import * as SelectPrimitive from "@radix-ui/react-select";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { Check, ChevronDown, ChevronUp } from "lucide-react"; import { Check, ChevronDown, ChevronUp } from "lucide-react";
import { InputColor, size } from "@/lib/type"; import { InputColor, size } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const Select = SelectPrimitive.Root; const Select = SelectPrimitive.Root;

View File

@ -4,7 +4,7 @@ import * as React from "react";
import * as SwitchPrimitives from "@radix-ui/react-switch"; import * as SwitchPrimitives from "@radix-ui/react-switch";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { color, size } from "@/lib/type"; import { color, size } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const switchVariants = cva( const switchVariants = cva(

View File

@ -1,7 +1,7 @@
import * as React from "react"; import * as React from "react";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { InputColor, radius } from "@/lib/type"; import { InputColor, radius } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
export const textareaVariants = cva( export const textareaVariants = cva(

View File

@ -4,7 +4,7 @@ import * as React from "react";
import * as TooltipPrimitive from "@radix-ui/react-tooltip"; import * as TooltipPrimitive from "@radix-ui/react-tooltip";
import { cva, type VariantProps } from "class-variance-authority"; import { cva, type VariantProps } from "class-variance-authority";
import { color } from "@/lib/type"; import { color } from "@/lib/utils/type";
import { cn } from "@/lib/utils/utils"; import { cn } from "@/lib/utils/utils";
const tooltipVariants = cva( const tooltipVariants = cva(

View File

@ -0,0 +1,4 @@
export const customPaths = [
"/",
"/app/chat",
];

View File

@ -1,9 +1,8 @@
import { defineRouting } from "next-intl/routing"; import { defineRouting } from "next-intl/routing";
import { customPaths } from "./routing-pathnames";
export const routing = defineRouting({ export const routing = defineRouting({
locales: ["in", "en"], locales: ["in", "en"],
defaultLocale: "in", defaultLocale: "in",
pathnames: { localePrefix: "always"
"/": "/",
},
}); });

View File

@ -1,7 +1,7 @@
import { useAtom } from "jotai"; import { useAtom } from "jotai";
import { atomWithStorage } from "jotai/utils"; import { atomWithStorage } from "jotai/utils";
import { layoutType, navBarType, sidebarType } from "@/lib/type"; import { layoutType, navBarType, sidebarType } from "@/lib/utils/type";
export type Config = { export type Config = {
collapsed: boolean; collapsed: boolean;

View File

@ -1,10 +0,0 @@
{
"Index": {
"title": "Welcome to Media Hub",
"description": "Integrated Media Platform for Indonesian National Police"
},
"Common": {
"search": "Search",
"menu": "Menu"
}
}

View File

@ -1,10 +0,0 @@
{
"Index": {
"title": "Selamat Datang di Media Hub",
"description": "Platform Media Terpadu untuk Kepolisian Republik Indonesia"
},
"Common": {
"search": "Cari",
"menu": "Menu"
}
}

View File

@ -3,7 +3,13 @@ import type { Config } from "tailwindcss";
const config = { const config = {
darkMode: ["class"], darkMode: ["class"],
content: [ content: [
"./src/**/*.{js,jsx,ts,tsx}", "./src/app/**/*.{js,jsx,ts,tsx}",
"./src/pages/**/*.{js,jsx,ts,tsx}",
"./src/components/**/*.{js,jsx,ts,tsx}",
"./src/features/**/*.{js,jsx,ts,tsx}",
"./src/layouts/**/*.{js,jsx,ts,tsx}",
"./src/lib/**/*.{js,jsx,ts,tsx}",
"./src/hooks/**/*.{js,jsx,ts,tsx}"
], ],
prefix: "", prefix: "",
theme: { theme: {