import{a as e,j as a}from"./vendor-react-BHG7lGYR.js";import{d as y,l as g,p as j}from"./index-BWcMVITa.js";const I=e.forwardRef(({className:m,label:o,error:t,icon:s,type:n,id:x,...l},h)=>{const i=e.useId(),d=x||i;return a.jsxs("div",{className:"relative group w-full mb-5",children:[a.jsxs("div",{className:"relative",children:[a.jsx("input",{type:n,id:d,className:y("block px-4 pb-2.5 pt-5 w-full text-sm text-white bg-kodo-graphite/40 rounded-xl border appearance-none focus:outline-none focus:ring-0 peer transition-all duration-200",t?"border-kodo-red focus:border-kodo-red":"border-white/10 hover:border-white/20 focus:border-kodo-cyan","backdrop-blur-sm",s?"pl-11":"",m),placeholder:" ",ref:h,...l}),s&&a.jsx("div",{className:"absolute left-3.5 top-1/2 -translate-y-1/2 text-kodo-text-dim peer-focus:text-kodo-cyan transition-colors pointer-events-none",children:s}),a.jsx("label",{htmlFor:d,className:y("absolute text-sm duration-200 transform -translate-y-3 scale-75 top-4 z-10 origin-[0] peer-placeholder-shown:scale-100 peer-placeholder-shown:translate-y-0 peer-focus:scale-75 peer-focus:-translate-y-3 pointer-events-none",s?"left-11 peer-focus:left-11 peer-placeholder-shown:left-11":"left-4 peer-focus:left-4 peer-placeholder-shown:left-4",t?"text-kodo-red":"text-kodo-text-dim peer-focus:text-kodo-cyan group-hover:text-white/70"),children:o})]}),t&&a.jsx("p",{className:"mt-1 text-xs text-kodo-red animate-slideDown",children:t})]})});I.displayName="FloatingInput";function N(m){const{type:o,debounceMs:t=300}=m,[s,n]=e.useState(!1),[x,l]=e.useState([]),[h,i]=e.useState(null),[d,b]=e.useState(null),u=e.useRef(null),r=e.useRef(0),k=e.useCallback(async(w,c)=>{if(!o)return g.warn("[useFormValidation] Validation type is required"),!1;n(!0),b(null);try{return l([]),i(!0),!0}catch(f){if(c!==r.current)return!1;const p=j(f);return b(p),l([]),i(!1),g.error("[useFormValidation] Validation request failed",{error:p.message,type:o}),!1}finally{c===r.current&&n(!1)}},[o]),V=e.useCallback(async w=>{if(t<=0)return r.current+=1,k(w,r.current);u.current&&clearTimeout(u.current),r.current+=1;const c=r.current;return new Promise(f=>{u.current=setTimeout(async()=>{if(c===r.current){const p=await k(w,c);f(p)}else f(!1)},t)})},[t,k]);e.useEffect(()=>()=>{u.current&&clearTimeout(u.current)},[]);const v=e.useCallback(()=>{l([]),i(null),b(null),n(!1)},[]);return{isValidating:s,errors:x,isValid:h,error:d,validate:V,clear:v}}export{I as F,N as u};