Hey is a decentralized and permissionless social media app built with Lens Protocol 馃尶
at main 69 lines 2.2 kB view raw
1import { ClockIcon } from "@heroicons/react/24/outline"; 2import type { CollectActionType } from "@hey/types/hey"; 3import dayjs from "dayjs"; 4import { motion } from "motion/react"; 5import ToggleWithHelper from "@/components/Shared/ToggleWithHelper"; 6import { RangeSlider } from "@/components/Shared/UI"; 7import { useCollectActionStore } from "@/store/non-persisted/post/useCollectActionStore"; 8import { EXPANSION_EASE } from "@/variants"; 9 10interface TimeLimitConfigProps { 11 setCollectType: (data: CollectActionType) => void; 12} 13 14const TimeLimitConfig = ({ setCollectType }: TimeLimitConfigProps) => { 15 const { collectAction } = useCollectActionStore((state) => state); 16 17 return ( 18 <div className="mt-5"> 19 <ToggleWithHelper 20 description="Limit collecting to specific period of time" 21 heading="Time limit" 22 icon={<ClockIcon className="size-5" />} 23 on={Boolean(collectAction.endsAt)} 24 setOn={() => 25 setCollectType({ 26 endsAt: collectAction.endsAt 27 ? null 28 : dayjs().add(1, "day").toISOString() 29 }) 30 } 31 /> 32 {collectAction.endsAt ? ( 33 <motion.div 34 animate="visible" 35 className="mt-4 ml-8 space-y-2 text-sm" 36 initial="hidden" 37 transition={{ duration: 0.2, ease: EXPANSION_EASE }} 38 variants={{ 39 hidden: { height: 0, opacity: 0, y: -20 }, 40 visible: { height: "auto", opacity: 1, y: 0 } 41 }} 42 > 43 <div> 44 Number of days -{" "} 45 <b> 46 {dayjs(collectAction.endsAt).format("MMM D, YYYY - h:mm:ss A")} 47 </b> 48 </div> 49 <RangeSlider 50 defaultValue={[dayjs(collectAction.endsAt).diff(dayjs(), "day")]} 51 displayValue={dayjs(collectAction.endsAt) 52 .diff(dayjs(), "day") 53 .toString()} 54 max={100} 55 min={1} 56 onValueChange={(value) => 57 setCollectType({ 58 endsAt: dayjs().add(Number(value[0]), "day").toISOString() 59 }) 60 } 61 showValueInThumb 62 /> 63 </motion.div> 64 ) : null} 65 </div> 66 ); 67}; 68 69export default TimeLimitConfig;