import React, { useEffect, useState } from "react"; import { BiCheck, BiLeftArrowAlt, BiRightArrowAlt, BiX } from "react-icons/bi"; import { formatDate, getDateTags } from "./dengi.js"; import { AnimatePresence, motion, LayoutGroup } from "motion/react"; export function Switch({ checked, defaultChecked = false, onChange, disabled = false, ariaLabel, className = "", size = "md", // "sm" | "md" | "lg" }) { const isControlled = checked !== undefined; const [internalChecked, setInternalChecked] = useState(defaultChecked); const current = isControlled ? checked : internalChecked; useEffect(() => { if (!isControlled) return; setInternalChecked(checked); }, [checked, isControlled]); const sizes = { sm: { track: "w-9 h-5", thumb: "w-3 h-3", translate: "translate-x-4" }, md: { track: "w-11 h-6", thumb: "w-4 h-4", translate: "translate-x-5" }, lg: { track: "w-14 h-8", thumb: "w-6 h-6", translate: "translate-x-6" }, }; const s = sizes[size] || sizes.md; const toggle = (next) => { if (disabled) return; const newState = typeof next === "boolean" ? next : !current; if (!isControlled) setInternalChecked(newState); onChange?.(newState); }; return ( ); } export function LoadingSpinner(props) { return ( ); } function DatePickerButton({ next = false, date, setDate }) { return ( { const d = new Date(date); d.setDate(d.getDate() + (next ? 1 : -1)); setDate(d); }} > {!next ? : } ); } export const DatePicker = React.memo((props) => { const dateTag = getDateTags(props.date); return (
{ props.setDate(new Date()); }} > {formatDate(props.date)} {dateTag.length > 0 && ( <> {dateTag} )}
); }); export function DengiButton({ onClick, children, disabled = false, className = "", }) { return ( {children} ); } // BAD IDEA:: // // export function CoolMouseBg() { // const x = useSpring(0, { stiffness: 200, damping: 40 }); // const y = useSpring(0, { stiffness: 200, damping: 40 }); // const [visible, setVisible] = useState(false); // useEffect(() => { // const move = (e) => { // if (visible) { // x.set(e.clientX - 25); // y.set(e.clientY - 25); // } else { // setVisible(true); // } // }; // window.addEventListener("mousemove", move); // return () => { // window.removeEventListener("mousemove", move); // }; // }, [visible]); // return ( //
// //
// ); // } export function DengiYesOrNoDialog({ content = { message: "?", yesBtn: "da", noBtn: "net", bgDissmis: true, yesIcon: , noIcon: , noBtnStyle: "", yesBtnStyle: "", }, show, onAnswer, }) { return ( <> {/* Background */} {show && ( { if (e.target === e.currentTarget && content.bgDissmis) onAnswer(false); }} > {content.message}
onAnswer(true)} > {content.yesIcon} {content.yesBtn} onAnswer(false)} > {content.noIcon} {content.noBtn}
)}
); }