diff --git a/apps/landing/src/app/(public)/roadmap/_components/feature-request-cta.tsx b/apps/landing/src/app/(public)/roadmap/_components/feature-request-cta.tsx index eb19a56..eb6d51d 100644 --- a/apps/landing/src/app/(public)/roadmap/_components/feature-request-cta.tsx +++ b/apps/landing/src/app/(public)/roadmap/_components/feature-request-cta.tsx @@ -1,13 +1,9 @@ 'use client'; import { motion } from 'framer-motion'; -import { FiPlus } from 'react-icons/fi'; +import { RequestFeaturePopup } from './request-feature-popup'; export function FeatureRequestCTA() { - const handleSubmitFeature = () => { - alert('Feature submission form would appear here!'); - }; - return ( - - - Ajukan Fitur - + ); diff --git a/apps/landing/src/app/(public)/roadmap/_components/projects-vote.tsx b/apps/landing/src/app/(public)/roadmap/_components/projects-vote.tsx index ba1505c..fdc015f 100644 --- a/apps/landing/src/app/(public)/roadmap/_components/projects-vote.tsx +++ b/apps/landing/src/app/(public)/roadmap/_components/projects-vote.tsx @@ -9,6 +9,12 @@ import { MdOutlineOpenInNew } from 'react-icons/md'; export default function ProjectsVote() { const [upcomingItems, setUpcomingItems] = useState([ + { + title: 'IMPHNEN Project Showcase', + description: 'Showcase projectmu ke member lain dan dapatkan feedback', + votes: 42, + voted: false, + }, { title: 'IMPHNEN Meme Generator', description: 'Bikin meme kocak kapanpun dengan mudah', diff --git a/apps/landing/src/app/(public)/roadmap/_components/request-feature-popup.tsx b/apps/landing/src/app/(public)/roadmap/_components/request-feature-popup.tsx new file mode 100644 index 0000000..4ed2c66 --- /dev/null +++ b/apps/landing/src/app/(public)/roadmap/_components/request-feature-popup.tsx @@ -0,0 +1,130 @@ +'use client'; + +import * as React from 'react'; + +import { useMediaQuery } from '@/hooks/use-media-query'; +import { + Button, + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, + Drawer, + DrawerClose, + DrawerContent, + DrawerDescription, + DrawerFooter, + DrawerHeader, + DrawerTitle, + DrawerTrigger, + Input, + Label, + Textarea, +} from '@components'; +import { cn } from '@utils'; + +export function RequestFeaturePopup() { + const [open, setOpen] = React.useState(false); + const isDesktop = useMediaQuery('(min-width: 768px)'); + + if (isDesktop) { + return ( + + + + + + + Request Fitur + + Request fitur apa pun disini. Kami akan mempertimbangkan + permintaan Anda. + + + + + + ); + } + + return ( + + + + + + + Request Fitur + + Punya ide fitur keren? Bagikan di sini! Kami selalu terbuka untuk + inovasi yang bisa membuat produk ini lebih baik. + + + + + + + + + + + ); +} + +interface ProfileFormProps extends React.ComponentProps<'form'> { + showFooterButton?: boolean; +} + +function ProfileForm({ + className, + showFooterButton = false, +}: ProfileFormProps) { + const [description, setDescription] = React.useState(''); + const maxDescriptionLength = 10000; + + return ( +
+
+ + +
+ +
+
+ + + {description.length}/{maxDescriptionLength} + +
+