@hua-labs/ui 2.0.2 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -161
- package/dist/{ComponentLayout-btJq4TjA.d.mts → ComponentLayout-DrZpz0yv.d.mts} +1 -1
- package/dist/Section-BWzyshgX.d.mts +67 -0
- package/dist/advanced/dashboard.d.ts.map +1 -1
- package/dist/advanced-dashboard.d.mts +1 -1
- package/dist/advanced-dashboard.js +4 -4
- package/dist/advanced-dashboard.js.map +1 -1
- package/dist/advanced-dashboard.mjs +3 -3
- package/dist/advanced-dashboard.mjs.map +1 -1
- package/dist/advanced-emotion.mjs +1 -1
- package/dist/advanced-motion.d.mts +65 -1
- package/dist/advanced-motion.js +14 -14
- package/dist/advanced-motion.js.map +1 -1
- package/dist/advanced-motion.mjs +1 -1
- package/dist/advanced.d.mts +4 -4
- package/dist/advanced.js +16 -16
- package/dist/advanced.js.map +1 -1
- package/dist/advanced.mjs +3 -3
- package/dist/advanced.mjs.map +1 -1
- package/dist/chunk-3CCF7U3P.mjs +3 -0
- package/dist/{chunk-IFSEJVOR.mjs.map → chunk-3CCF7U3P.mjs.map} +1 -1
- package/dist/chunk-3GAUTZXQ.mjs +3 -0
- package/dist/{chunk-X7ZIWYRC.mjs.map → chunk-3GAUTZXQ.mjs.map} +1 -1
- package/dist/chunk-42RGFEL2.mjs +3 -0
- package/dist/chunk-42RGFEL2.mjs.map +1 -0
- package/dist/chunk-4NJE7D6X.mjs +3 -0
- package/dist/chunk-4NJE7D6X.mjs.map +1 -0
- package/dist/chunk-6HVJFEDA.mjs +3 -0
- package/dist/{chunk-FSL373O6.mjs.map → chunk-6HVJFEDA.mjs.map} +1 -1
- package/dist/chunk-7OYT3QSY.mjs +3 -0
- package/dist/chunk-7OYT3QSY.mjs.map +1 -0
- package/dist/chunk-ANYZ56VB.mjs +3 -0
- package/dist/{chunk-QQCELXFD.mjs.map → chunk-ANYZ56VB.mjs.map} +1 -1
- package/dist/chunk-AOSXB5JJ.mjs +4 -0
- package/dist/{chunk-GLZKT7JN.mjs.map → chunk-AOSXB5JJ.mjs.map} +1 -1
- package/dist/chunk-B544MRF7.mjs +3 -0
- package/dist/{chunk-SDFHJ4GB.mjs.map → chunk-B544MRF7.mjs.map} +1 -1
- package/dist/chunk-CVWWS25A.mjs +3 -0
- package/dist/chunk-CVWWS25A.mjs.map +1 -0
- package/dist/chunk-DYNBM24D.mjs +3 -0
- package/dist/{chunk-OSCMSA2Q.mjs.map → chunk-DYNBM24D.mjs.map} +1 -1
- package/dist/{chunk-NBJUE7NR.mjs → chunk-FX57OSYG.mjs} +2 -2
- package/dist/{chunk-NBJUE7NR.mjs.map → chunk-FX57OSYG.mjs.map} +1 -1
- package/dist/chunk-IJSYSNM5.mjs +3 -0
- package/dist/{chunk-IN7RWQCJ.mjs.map → chunk-IJSYSNM5.mjs.map} +1 -1
- package/dist/chunk-KJZGOL2Z.mjs +3 -0
- package/dist/{chunk-LOYAJIWO.mjs.map → chunk-KJZGOL2Z.mjs.map} +1 -1
- package/dist/chunk-KYRIUUQP.mjs +3 -0
- package/dist/{chunk-PAEKNQWW.mjs.map → chunk-KYRIUUQP.mjs.map} +1 -1
- package/dist/chunk-LSA7DU3N.mjs +73 -0
- package/dist/chunk-LSA7DU3N.mjs.map +1 -0
- package/dist/chunk-MDLCJASB.mjs +3 -0
- package/dist/{chunk-LH77I6HO.mjs.map → chunk-MDLCJASB.mjs.map} +1 -1
- package/dist/chunk-N56BUOCD.mjs +3 -0
- package/dist/{chunk-XV3Y7QVU.mjs.map → chunk-N56BUOCD.mjs.map} +1 -1
- package/dist/chunk-OFYITQXI.mjs +13 -0
- package/dist/chunk-OFYITQXI.mjs.map +1 -0
- package/dist/chunk-OZNST3EZ.mjs +3 -0
- package/dist/{chunk-SGEP3CQE.mjs.map → chunk-OZNST3EZ.mjs.map} +1 -1
- package/dist/chunk-RS6RKW5U.mjs +13 -0
- package/dist/{chunk-6KTHJ3EL.mjs.map → chunk-RS6RKW5U.mjs.map} +1 -1
- package/dist/{chunk-C4OACMTB.mjs → chunk-TXBZZJNR.mjs} +2 -2
- package/dist/{chunk-C4OACMTB.mjs.map → chunk-TXBZZJNR.mjs.map} +1 -1
- package/dist/chunk-TZ4YSHMC.mjs +3 -0
- package/dist/{chunk-UWHCM3S6.mjs.map → chunk-TZ4YSHMC.mjs.map} +1 -1
- package/dist/chunk-U6CTBZ2U.mjs +3 -0
- package/dist/chunk-U6CTBZ2U.mjs.map +1 -0
- package/dist/{chunk-5BMH7223.mjs → chunk-WP7VFE77.mjs} +2 -2
- package/dist/{chunk-5BMH7223.mjs.map → chunk-WP7VFE77.mjs.map} +1 -1
- package/dist/{chunk-FFH4ZFKS.mjs → chunk-XCZMLKPK.mjs} +2 -2
- package/dist/{chunk-FFH4ZFKS.mjs.map → chunk-XCZMLKPK.mjs.map} +1 -1
- package/dist/chunk-XGHT7WMO.mjs +3 -0
- package/dist/chunk-XGHT7WMO.mjs.map +1 -0
- package/dist/chunk-XL4KTJ4L.mjs +3 -0
- package/dist/{chunk-VWSBJUNI.mjs.map → chunk-XL4KTJ4L.mjs.map} +1 -1
- package/dist/chunk-Z74YUUVT.mjs +3 -0
- package/dist/chunk-Z74YUUVT.mjs.map +1 -0
- package/dist/chunk-ZXZIHU7J.mjs +8 -0
- package/dist/{chunk-N7M6RIN4.mjs.map → chunk-ZXZIHU7J.mjs.map} +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/Modal.d.ts.map +1 -1
- package/dist/components/Popover.d.ts +2 -0
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Progress.d.ts +1 -0
- package/dist/components/Progress.d.ts.map +1 -1
- package/dist/components/Section.d.ts +44 -0
- package/dist/components/Section.d.ts.map +1 -0
- package/dist/components/advanced/AnimatedGradient.d.ts.map +1 -1
- package/dist/components/advanced/DotNav.d.ts +26 -0
- package/dist/components/advanced/DotNav.d.ts.map +1 -0
- package/dist/components/advanced/HorizontalScroll.d.ts +20 -0
- package/dist/components/advanced/HorizontalScroll.d.ts.map +1 -0
- package/dist/components/advanced/ImageReveal.d.ts +24 -0
- package/dist/components/advanced/ImageReveal.d.ts.map +1 -0
- package/dist/components/advanced/index.d.ts +6 -0
- package/dist/components/advanced/index.d.ts.map +1 -1
- package/dist/data.mjs +2 -2
- package/dist/data.mjs.map +1 -1
- package/dist/feedback.mjs +1 -1
- package/dist/form.js +3 -3
- package/dist/form.js.map +1 -1
- package/dist/form.mjs +4 -4
- package/dist/form.mjs.map +1 -1
- package/dist/{icons-Bj_nr8Ba.d.mts → icons-DmhQEH_E.d.mts} +6 -1
- package/dist/index.d.mts +9 -27
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/landing/LandingAbout.d.ts +3 -0
- package/dist/landing/LandingAbout.d.ts.map +1 -0
- package/dist/landing/LandingCTA.d.ts +3 -0
- package/dist/landing/LandingCTA.d.ts.map +1 -0
- package/dist/landing/LandingContact.d.ts +3 -0
- package/dist/landing/LandingContact.d.ts.map +1 -0
- package/dist/landing/LandingExperience.d.ts +3 -0
- package/dist/landing/LandingExperience.d.ts.map +1 -0
- package/dist/landing/LandingFeatures.d.ts +3 -0
- package/dist/landing/LandingFeatures.d.ts.map +1 -0
- package/dist/landing/LandingHero.d.ts +3 -0
- package/dist/landing/LandingHero.d.ts.map +1 -0
- package/dist/landing/LandingLogoCloud.d.ts +3 -0
- package/dist/landing/LandingLogoCloud.d.ts.map +1 -0
- package/dist/landing/LandingMetrics.d.ts +3 -0
- package/dist/landing/LandingMetrics.d.ts.map +1 -0
- package/dist/landing/LandingProjects.d.ts +3 -0
- package/dist/landing/LandingProjects.d.ts.map +1 -0
- package/dist/landing/LandingProvider.d.ts +4 -0
- package/dist/landing/LandingProvider.d.ts.map +1 -0
- package/dist/landing/LandingShowcase.d.ts +3 -0
- package/dist/landing/LandingShowcase.d.ts.map +1 -0
- package/dist/landing/LandingSkills.d.ts +3 -0
- package/dist/landing/LandingSkills.d.ts.map +1 -0
- package/dist/landing/LandingStats.d.ts +3 -0
- package/dist/landing/LandingStats.d.ts.map +1 -0
- package/dist/landing/LandingTestimonials.d.ts +3 -0
- package/dist/landing/LandingTestimonials.d.ts.map +1 -0
- package/dist/landing/index.d.ts +47 -0
- package/dist/landing/index.d.ts.map +1 -0
- package/dist/landing/themes/app.d.ts +3 -0
- package/dist/landing/themes/app.d.ts.map +1 -0
- package/dist/landing/themes/corporate.d.ts +3 -0
- package/dist/landing/themes/corporate.d.ts.map +1 -0
- package/dist/landing/themes/dashboard.d.ts +3 -0
- package/dist/landing/themes/dashboard.d.ts.map +1 -0
- package/dist/landing/themes/immersive.d.ts +3 -0
- package/dist/landing/themes/immersive.d.ts.map +1 -0
- package/dist/landing/themes/index.d.ts +15 -0
- package/dist/landing/themes/index.d.ts.map +1 -0
- package/dist/landing/themes/marketing.d.ts +3 -0
- package/dist/landing/themes/marketing.d.ts.map +1 -0
- package/dist/landing/themes/portfolio.d.ts +3 -0
- package/dist/landing/themes/portfolio.d.ts.map +1 -0
- package/dist/landing/themes/product.d.ts +3 -0
- package/dist/landing/themes/product.d.ts.map +1 -0
- package/dist/landing/types.d.ts +346 -0
- package/dist/landing/types.d.ts.map +1 -0
- package/dist/landing.d.mts +417 -0
- package/dist/landing.js +100 -0
- package/dist/landing.js.map +1 -0
- package/dist/landing.mjs +31 -0
- package/dist/landing.mjs.map +1 -0
- package/dist/lib/icons.d.ts +6 -1
- package/dist/lib/icons.d.ts.map +1 -1
- package/dist/navigation.d.mts +1 -1
- package/dist/navigation.js +2 -2
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +1 -1
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlay.d.mts +2 -0
- package/dist/overlay.js +1 -1
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.mjs +1 -1
- package/dist/overlay.mjs.map +1 -1
- package/dist/sdui.js +4 -4
- package/dist/sdui.js.map +1 -1
- package/dist/sdui.mjs +1 -1
- package/dist/sdui.mjs.map +1 -1
- package/package.json +18 -7
- package/src/styles/landing.css +107 -0
- package/src/styles/utilities.css +58 -0
- package/dist/chunk-6KTHJ3EL.mjs +0 -13
- package/dist/chunk-COR6CDMA.mjs +0 -83
- package/dist/chunk-COR6CDMA.mjs.map +0 -1
- package/dist/chunk-FSL373O6.mjs +0 -3
- package/dist/chunk-GLZKT7JN.mjs +0 -4
- package/dist/chunk-HN5LSP6L.mjs +0 -3
- package/dist/chunk-HN5LSP6L.mjs.map +0 -1
- package/dist/chunk-IFSEJVOR.mjs +0 -3
- package/dist/chunk-IN7RWQCJ.mjs +0 -3
- package/dist/chunk-LH77I6HO.mjs +0 -3
- package/dist/chunk-LOYAJIWO.mjs +0 -3
- package/dist/chunk-LPAG7DCA.mjs +0 -3
- package/dist/chunk-LPAG7DCA.mjs.map +0 -1
- package/dist/chunk-N7M6RIN4.mjs +0 -8
- package/dist/chunk-OSCMSA2Q.mjs +0 -3
- package/dist/chunk-PAEKNQWW.mjs +0 -3
- package/dist/chunk-QQCELXFD.mjs +0 -3
- package/dist/chunk-RPUS7G7Q.mjs +0 -3
- package/dist/chunk-RPUS7G7Q.mjs.map +0 -1
- package/dist/chunk-SDFHJ4GB.mjs +0 -3
- package/dist/chunk-SGEP3CQE.mjs +0 -3
- package/dist/chunk-UUHAXGMO.mjs +0 -3
- package/dist/chunk-UUHAXGMO.mjs.map +0 -1
- package/dist/chunk-UWHCM3S6.mjs +0 -3
- package/dist/chunk-VWSBJUNI.mjs +0 -3
- package/dist/chunk-X7ZIWYRC.mjs +0 -3
- package/dist/chunk-XV3Y7QVU.mjs +0 -3
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {l}from'./chunk-7OYT3QSY.mjs';import {b}from'./chunk-U6CTBZ2U.mjs';import X,{useState,useRef,useCallback,useEffect,useMemo,createContext,useContext}from'react';import {jsxs,jsx,Fragment}from'react/jsx-runtime';var G=X.forwardRef(({children:r,className:e,type:t="fade",duration:o=500,easing:a="smooth",delay:i=0,autoStart:p=true,onStart:v,onComplete:g,showProgress:s=false,progressClassName:h},m)=>{let[f,c]=useState(false),[l,n]=useState(0),[b$1,T]=useState(false),E=useRef(null),d=useRef(null),u=M=>({linear:P=>P,"ease-in":P=>P*P,"ease-out":P=>1-Math.pow(1-P,2),"ease-in-out":P=>P<.5?2*P*P:1-Math.pow(-2*P+2,2)/2,bounce:P=>P<.36363636363636365?7.5625*P*P:P<.7272727272727273?7.5625*(P-=.5454545454545454)*P+.75:P<.9090909090909091?7.5625*(P-=.8181818181818182)*P+.9375:7.5625*(P-=.9545454545454546)*P+.984375,elastic:P=>Math.pow(2,-10*P)*Math.sin((P-.075)*(2*Math.PI)/.3)+1,smooth:P=>P*P*(3-2*P)})[M],w=useCallback(M=>{d.current||(d.current=M);let k=M-d.current,P=u(a),B=Math.min(k/o,1);B=P(B),n(B),c(B>.1),B<1?E.current=requestAnimationFrame(z=>w(z)):(T(false),n(1),g==null||g());},[o,a,g]),y=useCallback(()=>{T(true),n(0),v==null||v(),d.current=null,E.current=requestAnimationFrame(w);},[w,v]);useEffect(()=>{if(p){let M=setTimeout(()=>{y();},i);return ()=>clearTimeout(M)}},[p,i,y]),useEffect(()=>()=>{E.current&&cancelAnimationFrame(E.current);},[]);let C=(()=>{switch(t){case "fade":return {opacity:f?1:0,transform:"none"};case "slide":return {opacity:f?1:0,transform:`translateX(${(1-l)*100}%)`};case "slide-up":return {opacity:f?1:0,transform:`translateY(${(1-l)*100}%)`};case "slide-down":return {opacity:f?1:0,transform:`translateY(-${(1-l)*100}%)`};case "slide-left":return {opacity:f?1:0,transform:`translateX(-${(1-l)*100}%)`};case "slide-right":return {opacity:f?1:0,transform:`translateX(${(1-l)*100}%)`};case "scale":return {opacity:f?1:0,transform:`scale(${.8+l*.2})`};case "flip":return {opacity:f?1:0,transform:`perspective(1000px) rotateY(${(1-l)*90}deg)`};case "morph":return {opacity:f?1:0,transform:`scale(${.9+l*.1}) rotate(${(1-l)*5}deg)`};case "cube":return {opacity:f?1:0,transform:`perspective(1000px) rotateX(${(1-l)*90}deg) rotateY(${(1-l)*45}deg)`};case "zoom":return {opacity:f?1:0,transform:`scale(${.5+l*.5})`};default:return {opacity:f?1:0,transform:"none"}}})();return jsxs("div",{className:"relative",children:[s&&jsxs("div",{className:b("fixed top-4 right-4 z-50 bg-background rounded-lg px-3 py-2 shadow-lg border",h),children:[jsxs("div",{className:"text-sm font-medium text-foreground",children:["Progress: ",Math.round(l*100),"%"]}),jsx("div",{className:"w-24 h-2 bg-muted rounded-full mt-2",children:jsx("div",{className:"h-full bg-primary rounded-full transition-all duration-100",style:{width:`${l*100}%`}})})]}),jsx("div",{ref:m,className:b("transition-all duration-500 ease-out",e),style:{...C,transitionDuration:`${o}ms`,transitionTimingFunction:a==="smooth"?"cubic-bezier(0.4, 0, 0.2, 1)":a==="bounce"?"cubic-bezier(0.68, -0.55, 0.265, 1.55)":a==="elastic"?"cubic-bezier(0.175, 0.885, 0.32, 1.275)":a},children:r})]})});G.displayName="AdvancedPageTransition";var zt=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"fade",...r})),Dt=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"slide",...r})),Vt=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"scale",...r})),qt=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"flip",...r})),Ot=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"morph",...r})),_t=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"cube",...r})),Ut=X.forwardRef((r,e)=>jsx(G,{ref:e,type:"zoom",...r}));zt.displayName="FadePageTransition";Dt.displayName="SlidePageTransition";Vt.displayName="ScalePageTransition";qt.displayName="FlipPageTransition";Ot.displayName="MorphPageTransition";_t.displayName="CubePageTransition";Ut.displayName="ZoomPageTransition";var Gt=(r={})=>{let[e,t]=useState({isTransitioning:false,isVisible:false,currentStep:0,progress:0}),o=useRef(null),a=useRef(null),i=useRef({type:"fade",duration:500,easing:"smooth",delay:0,stagger:0,direction:"forward",...r}),p=useCallback(c=>({linear:n=>n,"ease-in":n=>n*n,"ease-out":n=>1-Math.pow(1-n,2),"ease-in-out":n=>n<.5?2*n*n:1-Math.pow(-2*n+2,2)/2,bounce:n=>n<.36363636363636365?7.5625*n*n:n<.7272727272727273?7.5625*(n-=.5454545454545454)*n+.75:n<.9090909090909091?7.5625*(n-=.8181818181818182)*n+.9375:7.5625*(n-=.9545454545454546)*n+.984375,elastic:n=>Math.pow(2,-10*n)*Math.sin((n-.075)*(2*Math.PI)/.3)+1,smooth:n=>n*n*(3-2*n)})[c],[]),v=useCallback(c=>{var E;a.current||(a.current=c);let l=c-a.current,n=i.current,b=p(n.easing),T=Math.min(l/n.duration,1);T=b(T),t(d=>({...d,progress:T,isVisible:n.direction==="forward"?T>.1:T<.9,currentStep:Math.floor(T*10)})),T<1?o.current=requestAnimationFrame(v):(t(d=>({...d,isTransitioning:false,progress:n.direction==="forward"?1:0})),(E=n.onComplete)==null||E.call(n));},[p]),g=useCallback(async c=>new Promise(l=>{var b;c&&(i.current={...i.current,...c});let n=i.current;n.onComplete=()=>l(),t(T=>({...T,isTransitioning:true,progress:n.direction==="forward"?0:1})),a.current=null,(b=n.onStart)==null||b.call(n),n.delay?setTimeout(()=>{o.current=requestAnimationFrame(v);},n.delay):o.current=requestAnimationFrame(v);}),[v]),s=useCallback(async()=>new Promise(c=>{let l=i.current;l.direction="backward",l.onComplete=()=>c(),g();}),[g]),h=useCallback(()=>{o.current&&cancelAnimationFrame(o.current);},[]),m=useCallback(()=>{e.isTransitioning&&(o.current=requestAnimationFrame(v));},[e.isTransitioning,v]),f=useCallback(()=>{o.current&&cancelAnimationFrame(o.current),t({isTransitioning:false,isVisible:false,currentStep:0,progress:0});},[]);return useEffect(()=>()=>{o.current&&cancelAnimationFrame(o.current);},[]),[e,{start:g,reverse:s,pause:h,resume:m,reset:f}]};var Kt=(r={})=>{let{defaultType:e="fade",defaultDuration:t=500,defaultEasing:o="smooth",enableHistory:a=true,enableProgress:i=true,enableDebug:p=false}=r,[v,g]=useState({isTransitioning:false,currentTransition:null,transitionHistory:[],totalTransitions:0,averageDuration:0}),s=useRef(new Map),h=useRef(0),m=useCallback((d,u)=>{p&&console.log(`[PageTransitionManager] ${d}`,u);},[p]),f=useCallback(d=>{g(u=>{let w=a?[...u.transitionHistory,d]:u.transitionHistory,y=w.length,R=w.reduce((C,M)=>C+M.duration,0)/y;return {...u,totalTransitions:y,averageDuration:R,transitionHistory:w}});},[a]),c=useCallback(async d=>{let u=`transition_${++h.current}`,w={type:e,duration:t,easing:o,...d},y={id:u,type:w.type,duration:w.duration,easing:w.easing,timestamp:Date.now(),status:"pending"};m("Starting transition",{id:u,config:w}),g(C=>({...C,isTransitioning:true,currentTransition:y}));let R=setTimeout(()=>{var M;let C={...y,status:"completed"};g(k=>({...k,isTransitioning:false,currentTransition:null})),f(C),s.current.delete(u),m("Transition completed",{id:u}),(M=w.onComplete)==null||M.call(w);},w.duration);return s.current.set(u,{timer:R,config:w}),setTimeout(()=>{g(C=>({...C,currentTransition:{...C.currentTransition,status:"active"}}));},50),u},[e,t,o,m,f]),l=useCallback(d=>{let u=s.current.get(d);u&&(clearTimeout(u.timer),s.current.delete(d),g(w=>{var y;return {...w,isTransitioning:s.current.size>0,currentTransition:((y=w.currentTransition)==null?void 0:y.id)===d?null:w.currentTransition}}),m("Transition cancelled",{id:d}));},[m]),n=useCallback(()=>{s.current.forEach(({timer:d},u)=>{clearTimeout(d),m("Transition paused",{id:u});});},[m]),b=useCallback(()=>{s.current.forEach(({config:d},u)=>{c(d);});},[c]),T=useCallback(()=>{g(d=>({...d,transitionHistory:[],totalTransitions:0,averageDuration:0})),m("History cleared");},[m]),E=useCallback(()=>{let{transitionHistory:d}=v,u=d.reduce((y,R)=>(y[R.type]=(y[R.type]||0)+1,y),{}),w=d.reduce((y,R)=>(y[R.status]=(y[R.status]||0)+1,y),{});return {total:d.length,average:v.averageDuration,byType:u,byStatus:w}},[v]);return useEffect(()=>{let d=s.current;return ()=>{d.forEach(({timer:u})=>{clearTimeout(u);}),d.clear();}},[]),[v,{startTransition:c,cancelTransition:l,pauseAll:n,resumeAll:b,clearHistory:T,getTransitionStats:E}]};var pt=X.forwardRef(({children:r,className:e,speed:t=.5,direction:o="up",offset:a=0,disabled:i=false,scale:p=false,opacity:v=false,rotate:g=false,rotateDirection:s="cw",style:h,...m},f)=>{let c=useRef(null),[l,n]=useState({x:0,y:0,scale:1,opacity:1,rotate:0}),b$1=er(),T=useCallback(()=>{if(i||b$1)return;let d=c.current;if(!d)return;let u=d.getBoundingClientRect(),w=window.innerHeight,R=u.top+u.height/2,M=(w/2-R)/w,k=M*t*100+a,P=0,B=0;switch(o){case "up":B=-k;break;case "down":B=k;break;case "left":P=-k;break;case "right":P=k;break}let z=p?1+Math.abs(M)*.1:1,q=v?Math.max(.3,1-Math.abs(M)*.5):1,A=g?M*10*(s==="cw"?1:-1):0;n({x:P,y:B,scale:z,opacity:q,rotate:A});},[i,b$1,t,o,a,p,v,g,s]);useEffect(()=>{if(i||b$1)return;T();let d=()=>{requestAnimationFrame(T);};return window.addEventListener("scroll",d,{passive:true}),window.addEventListener("resize",d,{passive:true}),()=>{window.removeEventListener("scroll",d),window.removeEventListener("resize",d);}},[T,i,b$1]);let E={...h,transform:i||b$1?void 0:`translate3d(${l.x}px, ${l.y}px, 0) scale(${l.scale}) rotate(${l.rotate}deg)`,opacity:i||b$1?1:l.opacity,willChange:i||b$1?void 0:"transform, opacity"};return jsx("div",{ref:tr(f,c),className:b("transition-none",e),style:E,...m,children:r})});pt.displayName="Parallax";function er(){let[r,e]=useState(false);return useEffect(()=>{let t=window.matchMedia("(prefers-reduced-motion: reduce)");e(t.matches);let o=a=>{e(a.matches);};return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),r}function tr(...r){return e=>{r.forEach(t=>{typeof t=="function"?t(e):t&&typeof t=="object"&&(t.current=e);});}}var bt=X.forwardRef(({text:r,className:e,revealColor:t="currentColor",hiddenColor:o="rgba(128, 128, 128, 0.3)",threshold:a=.5,byWord:i=false,byChar:p=false,style:v,...g},s)=>{let h=useRef(null),[m,f]=useState(0),c=sr(),l=useCallback(()=>{if(!h.current)return;let b=h.current.getBoundingClientRect(),T=window.innerHeight,E=T*(1-a),d=T*a,u=b.top+b.height/2,w=0;u<=E&&u>=d?w=(E-u)/(E-d):u<d&&(w=1),f(Math.max(0,Math.min(1,w)));},[a]);useEffect(()=>{if(c){f(1);return}l();let b=()=>{requestAnimationFrame(l);};return window.addEventListener("scroll",b,{passive:true}),window.addEventListener("resize",b,{passive:true}),()=>{window.removeEventListener("scroll",b),window.removeEventListener("resize",b);}},[l,c]);let n=()=>{if(p){let b=r.split("");return b.map((T,E)=>{let d=m*b.length,u=E<d;return jsx("span",{style:{color:u?t:o,transition:"color 0.1s ease-out"},children:T},E)})}if(i){let b=r.split(" ");return b.map((T,E)=>{let d=m*b.length,u=E<d;return jsxs("span",{children:[jsx("span",{style:{color:u?t:o,transition:"color 0.15s ease-out"},children:T}),E<b.length-1&&" "]},E)})}return jsx("span",{style:{background:`linear-gradient(90deg, ${t} ${m*100}%, ${o} ${m*100}%)`,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text",transition:"background 0.1s ease-out"},children:r})};return jsx("div",{ref:ir(s,h),className:b("font-medium",e),style:v,...g,children:n()})});bt.displayName="TextReveal";function sr(){let[r,e]=useState(false);return useEffect(()=>{let t=window.matchMedia("(prefers-reduced-motion: reduce)");e(t.matches);let o=a=>{e(a.matches);};return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),r}function ir(...r){return e=>{r.forEach(t=>{typeof t=="function"?t(e):t&&typeof t=="object"&&(t.current=e);});}}var yt=X.forwardRef(({children:r,className:e,maxTilt:t=15,perspective:o=1e3,scale:a=1.02,speed:i=400,glare:p=true,maxGlare:v=.3,reset:g=true,style:s,...h},m)=>{let f=useRef(null),[c,l]=useState({rotateX:0,rotateY:0,scale:1}),[n,b$1]=useState({x:50,y:50}),[T,E]=useState(false),d=useCallback(M=>{if(!f.current)return;let k=f.current.getBoundingClientRect(),P=k.left+k.width/2,B=k.top+k.height/2,z=M.clientX-P,q=M.clientY-B,A=z/(k.width/2)*t,U=-(q/(k.height/2))*t;l({rotateX:U,rotateY:A,scale:a});let ve=(M.clientX-k.left)/k.width*100,ee=(M.clientY-k.top)/k.height*100;b$1({x:ve,y:ee});},[t,a]),u=()=>{E(true);},w=()=>{E(false),g&&l({rotateX:0,rotateY:0,scale:1});},y={...s,perspective:`${o}px`},R={transform:`rotateX(${c.rotateX}deg) rotateY(${c.rotateY}deg) scale(${c.scale})`,transition:T?"none":`transform ${i}ms ease-out`,transformStyle:"preserve-3d"},C={position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",background:`linear-gradient(
|
|
3
|
+
${Math.atan2(n.y-50,n.x-50)*(180/Math.PI)+90}deg,
|
|
4
|
+
rgba(255, 255, 255, ${T?v:0}) 0%,
|
|
5
|
+
transparent 80%
|
|
6
|
+
)`,transition:T?"opacity 0.1s ease-out":`opacity ${i}ms ease-out`,pointerEvents:"none",opacity:T?1:0};return jsx("div",{ref:gr(m,f),className:b("relative",e),style:y,onMouseMove:d,onMouseEnter:u,onMouseLeave:w,...h,children:jsxs("div",{style:R,className:"relative",children:[r,p&&jsx("div",{style:C,"aria-hidden":"true"})]})})});yt.displayName="TiltCard";function gr(...r){return e=>{r.forEach(t=>{typeof t=="function"?t(e):t&&typeof t=="object"&&(t.current=e);});}}var Tt=X.forwardRef(({src:r,type:e="native",poster:t,autoPlay:o=true,loop:a=true,muted:i=true,controls:p=false,objectFit:v="cover",overlay:g=true,overlayColor:s="rgba(0, 0, 0, 0.4)",gradient:h=false,gradientDirection:m="bottom",playbackRate:f=1,fadeIn:c=true,children:l,className:n,style:b$1,...T},E)=>{let d=useRef(null),[u,w]=useState(false),[y,R]=useState(false);useEffect(()=>{e==="native"&&d.current&&(d.current.playbackRate=f);},[f,e]);let C=()=>{w(true);},M=()=>{R(true);},k=A=>{let U=new URLSearchParams({autoplay:o?"1":"0",mute:i?"1":"0",loop:a?"1":"0",controls:p?"1":"0",playlist:A,modestbranding:"1",rel:"0",showinfo:"0",iv_load_policy:"3",disablekb:"1",enablejsapi:"1",playsinline:"1"});return `https://www.youtube.com/embed/${A}?${U.toString()}`},P=A=>{let U=new URLSearchParams({autoplay:o?"1":"0",muted:i?"1":"0",loop:a?"1":"0",controls:p?"1":"0",background:"1",quality:"auto",dnt:"1"});return `https://player.vimeo.com/video/${A}?${U.toString()}`},B=()=>{let A={cover:"object-cover",contain:"object-contain",fill:"object-fill"}[v];switch(e){case "youtube":return jsx("iframe",{src:k(r),className:b("absolute inset-0 w-full h-full pointer-events-none","scale-[1.2]"),style:{opacity:u||!c?1:0,transition:c?"opacity 0.8s ease-out":void 0},allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:true,onLoad:()=>w(true),title:"YouTube video background"});case "vimeo":return jsx("iframe",{src:P(r),className:"absolute inset-0 w-full h-full pointer-events-none",style:{opacity:u||!c?1:0,transition:c?"opacity 0.8s ease-out":void 0},allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:true,onLoad:()=>w(true),title:"Vimeo video background"});default:return jsx("video",{ref:d,src:r,poster:t,autoPlay:o,loop:a,muted:i,controls:p,playsInline:true,className:b("absolute inset-0 w-full h-full",A),style:{opacity:y||!c?1:0,transition:c?"opacity 0.8s ease-out":void 0},onLoadedData:C,onPlaying:M})}},z=()=>{if(!h)return null;let A=[];return (m==="top"||m==="both")&&A.push(jsx("div",{className:"absolute top-0 left-0 right-0 h-1/3",style:{background:`linear-gradient(to bottom, ${s}, transparent)`},"aria-hidden":"true"},"top")),(m==="bottom"||m==="both")&&A.push(jsx("div",{className:"absolute bottom-0 left-0 right-0 h-1/3",style:{background:`linear-gradient(to top, ${s}, transparent)`},"aria-hidden":"true"},"bottom")),jsx(Fragment,{children:A})},q=n&&/\b(fixed|absolute|sticky)\b/.test(n);return jsxs("div",{ref:E,className:b("overflow-hidden",!q&&"relative",n),style:b$1,...T,children:[t&&c&&!u&&!y&&jsx("div",{className:"absolute inset-0 bg-cover bg-center",style:{backgroundImage:`url(${t})`},"aria-hidden":"true"}),B(),g&&!h&&jsx("div",{className:"absolute inset-0",style:{backgroundColor:s},"aria-hidden":"true"}),z(),l&&jsx("div",{className:"relative z-10 h-full",children:l})]})});Tt.displayName="VideoBackground";var Pt=X.forwardRef(({src:r,alt:e,direction:t="left",threshold:o=.3,height:a="400px",overlayColor:i,className:p,style:v,...g},s)=>{let h=useRef(null),[m,f]=useState(0),c=wr(),l=useCallback(()=>{if(!h.current)return;let b=h.current.getBoundingClientRect(),T=window.innerHeight,E=T*(1-o),d=T*o,u=b.top+b.height/2,w=0;u<=E&&u>=d?w=(E-u)/(E-d):u<d&&(w=1),f(Math.max(0,Math.min(1,w)));},[o]);useEffect(()=>{if(c){f(1);return}l();let b=()=>requestAnimationFrame(l);return window.addEventListener("scroll",b,{passive:true}),window.addEventListener("resize",b,{passive:true}),()=>{window.removeEventListener("scroll",b),window.removeEventListener("resize",b);}},[l,c]);let n=Er(t,m);return jsxs("div",{ref:Pr(s,h),className:b("relative overflow-hidden",p),style:{height:a,...v},...g,children:[jsx("img",{src:r,alt:e,className:"absolute inset-0 w-full h-full object-cover",style:{clipPath:n,transition:"clip-path 0.1s ease-out"}}),i&&jsx("div",{className:"absolute inset-0 pointer-events-none",style:{background:i,opacity:1-m,transition:"opacity 0.3s ease-out"},"aria-hidden":"true"})]})});Pt.displayName="ImageReveal";function Er(r,e){switch(r){case "left":return `inset(0 ${100-e*100}% 0 0)`;case "right":return `inset(0 0 0 ${100-e*100}%)`;case "up":return `inset(0 0 ${100-e*100}% 0)`;case "down":return `inset(${100-e*100}% 0 0 0)`;default:return `inset(0 ${100-e*100}% 0 0)`}}function wr(){let[r,e]=useState(false);return useEffect(()=>{let t=window.matchMedia("(prefers-reduced-motion: reduce)");e(t.matches);let o=a=>e(a.matches);return t.addEventListener("change",o),()=>t.removeEventListener("change",o)},[]),r}function Pr(...r){return e=>{r.forEach(t=>{typeof t=="function"?t(e):t&&typeof t=="object"&&(t.current=e);});}}var Mt=X.forwardRef(({items:r,position:e="right",activeColor:t="bg-primary",inactiveColor:o="bg-muted-foreground/30",className:a,...i},p)=>{let[v,g]=useState(0),s=useCallback(()=>{let f=window.innerHeight,c=0,l=1/0;r.forEach((n,b)=>{let T=document.getElementById(n.id);if(!T)return;let E=T.getBoundingClientRect(),d=Math.abs(E.top-f*.3);d<l&&(l=d,c=b);}),g(c);},[r]);useEffect(()=>(s(),window.addEventListener("scroll",s,{passive:true}),()=>window.removeEventListener("scroll",s)),[s]);let h=useCallback(f=>{let c=document.getElementById(f);c&&c.scrollIntoView({behavior:"smooth",block:"start"});},[]),m=useMemo(()=>e==="left"?"left-4":"right-4",[e]);return jsx("nav",{ref:p,className:b("fixed top-1/2 -translate-y-1/2 z-40 flex flex-col gap-3",m,a),"aria-label":"Section navigation",...i,children:r.map((f,c)=>jsx("button",{onClick:()=>h(f.id),className:b("group relative w-3 h-3 rounded-full transition-all duration-300",c===v?`${t} scale-125`:`${o} hover:scale-110`),"aria-label":f.label||f.id,"aria-current":c===v?"true":void 0,children:f.label&&jsx("span",{className:b("absolute top-1/2 -translate-y-1/2 whitespace-nowrap px-2 py-1 text-xs rounded bg-popover text-popover-foreground shadow-md opacity-0 group-hover:opacity-100 transition-opacity pointer-events-none",e==="right"?"right-full mr-2":"left-full ml-2"),children:f.label})},f.id))})});Mt.displayName="DotNav";var Nt=X.forwardRef(({children:r,heightMultiplier:e=1,snap:t=false,onProgress:o,className:a,style:i,...p},v)=>{let g=useRef(null),s=useRef(null),[h,m]=useState(0),[f,c]=useState(0);useEffect(()=>{if(!s.current)return;let T=()=>{s.current&&m(s.current.scrollWidth-window.innerWidth);};T();let E=new ResizeObserver(T);return E.observe(s.current),()=>E.disconnect()},[r]);let l=useCallback(()=>{if(!g.current||h<=0)return;let T=g.current.getBoundingClientRect(),E=g.current.offsetHeight-window.innerHeight,d=-T.top,u=Math.max(0,Math.min(1,d/E));c(u),o==null||o(u);},[h,o]);useEffect(()=>(window.addEventListener("scroll",l,{passive:true}),()=>window.removeEventListener("scroll",l)),[l]);let b$1=`${X.Children.count(r)*e*100}vh`;return jsx("div",{ref:Lr(v,g),className:b("relative",a),style:{height:b$1,...i},...p,children:jsx("div",{className:"sticky top-0 h-screen overflow-hidden",children:jsx("div",{ref:s,className:b("flex h-full will-change-transform",t&&"scroll-snap-x"),style:{transform:`translateX(${-f*h}px)`},children:X.Children.map(r,(T,E)=>jsx("div",{className:b("flex-shrink-0 w-screen h-full",t&&"snap-start"),children:T},E))})})})});Nt.displayName="HorizontalScroll";function Lr(...r){return e=>{r.forEach(t=>{typeof t=="function"?t(e):t&&typeof t=="object"&&(t.current=e);});}}function Se(r){return r.toLowerCase().replace(/[^a-z0-9가-힣ぁ-んァ-ン一-龯_.~\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"").trim()}function Sr(r){return !r||r.length===0||r.length>200?false:/^[a-z0-9가-힣ぁ-んァ-ン一-龯_.~-]+$/.test(r)}function He(r){return r.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9가-힣ぁ-んァ-ン一-龯_.~-]/g,"").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}var $r={pageTitle:"\uC0C8 \uAE00 \uC791\uC131",editTitle:"\uAE00 \uC218\uC815",preview:"\uBBF8\uB9AC\uBCF4\uAE30",editMode:"\uD3B8\uC9D1",basicInfo:"\uAE30\uBCF8 \uC815\uBCF4",slug:"\uC2AC\uB7EC\uADF8",slugPrefix:"/blog/",tags:"\uD0DC\uADF8",tagsPlaceholder:"\uAC1C\uBC1C, \uC77C\uC0C1, \uC5C5\uB370\uC774\uD2B8",coverImage:"\uCEE4\uBC84 \uC774\uBBF8\uC9C0 URL",coverImagePlaceholder:"https://example.com/image.jpg",publishDate:"\uBC1C\uD589 \uC608\uC57D\uC77C\uC2DC",publishDateHint:"\uBE44\uC6CC\uB450\uBA74 \uC989\uC2DC \uBC1C\uD589\uB428",expiresAt:"\uB9CC\uB8CC \uC77C\uC2DC",expiresAtHint:"\uBE44\uC6CC\uB450\uBA74 \uB9CC\uB8CC\uB418\uC9C0 \uC54A\uC74C",titleLabel:"\uC81C\uBAA9",titlePlaceholder:"\uC81C\uBAA9\uC744 \uC785\uB825\uD558\uC138\uC694",excerpt:"\uC694\uC57D",excerptPlaceholder:"\uCE74\uB4DC\uC5D0 \uD45C\uC2DC\uB420 \uC9E7\uC740 \uC694\uC57D",contentLabel:"\uBCF8\uBB38",contentPlaceholder:"\uB9C8\uD06C\uB2E4\uC6B4\uC73C\uB85C \uC791\uC131\uD558\uC138\uC694...",cancel:"\uCDE8\uC18C",saveDraft:"\uC784\uC2DC\uC800\uC7A5",publish:"\uBC1C\uD589",update:"\uC218\uC815 \uC644\uB8CC",saving:"\uC800\uC7A5 \uC911...",translateHint:"AI \uBC88\uC5ED \uAE30\uB2A5",translateButton:"AI \uBC88\uC5ED",translating:"\uBC88\uC5ED \uC911...",translateSuccess:"\uBC88\uC5ED \uC644\uB8CC!",requiredFields:"\uD544\uC218 \uD544\uB4DC\uB97C \uC785\uB825\uD574\uC8FC\uC138\uC694",saveError:"\uC800\uC7A5 \uC911 \uC624\uB958 \uBC1C\uC0DD",translateError:"\uBC88\uC5ED \uC911 \uC624\uB958 \uBC1C\uC0DD",noTitle:"\uC81C\uBAA9 \uC5C6\uC74C",bold:"\uAD75\uAC8C",italic:"\uAE30\uC6B8\uC784",strikethrough:"\uCDE8\uC18C\uC120",heading:"\uC81C\uBAA9",link:"\uB9C1\uD06C",image:"\uC774\uBBF8\uC9C0",code:"\uCF54\uB4DC",codeBlock:"\uCF54\uB4DC\uBE14\uB85D",quote:"\uC778\uC6A9\uBB38",list:"\uBAA9\uB85D",orderedList:"\uC21C\uC11C \uBAA9\uB85D",horizontalRule:"\uC218\uD3C9\uC120"},Ir={enableSlug:true,enableTags:true,enableCoverImage:true,enablePublishDate:true,enableExcerpt:true,enableTranslation:true,enablePreview:true,enableMarkdownToolbar:true,enableAutoSave:true,enableExpiresAt:false},Fr=[{key:"ko",label:"\uD55C\uAD6D\uC5B4",isPrimary:true,flag:"\u{1F1F0}\u{1F1F7}"},{key:"en",label:"English",flag:"\u{1F1FA}\u{1F1F8}"},{key:"ja",label:"\u65E5\u672C\u8A9E",flag:"\u{1F1EF}\u{1F1F5}"}];function $e(r){let e={};return r.forEach(t=>{e[t.key]="";}),e}function zr(r,e){var t,o,a,i,p,v,g,s;return {slug:(t=e==null?void 0:e.slug)!=null?t:"",title:(o=e==null?void 0:e.title)!=null?o:$e(r),excerpt:(a=e==null?void 0:e.excerpt)!=null?a:$e(r),content:(i=e==null?void 0:e.content)!=null?i:$e(r),tags:(p=e==null?void 0:e.tags)!=null?p:[],coverImage:(v=e==null?void 0:e.coverImage)!=null?v:"",publishedAt:(g=e==null?void 0:e.publishedAt)!=null?g:null,expiresAt:(s=e==null?void 0:e.expiresAt)!=null?s:null}}var Ht=createContext(null);function H(){let r=useContext(Ht);if(!r)throw new Error("useBlogEditor must be used within a BlogEditorProvider");return r}function Ie({children:r,initialData:e,isEditMode:t=false,languages:o=Fr,defaultLanguage:a,labels:i,callbacks:p,features:v,variant:g="default",autoSaveKey:s,autoSaveInterval:h=3e3}){var et,tt,rt,ot;let m=(ot=(rt=(et=o.find(L=>L.isPrimary))==null?void 0:et.key)!=null?rt:(tt=o[0])==null?void 0:tt.key)!=null?ot:"ko",f=a!=null?a:m,c=useMemo(()=>({...$r,...i}),[i]),l=useMemo(()=>({...Ir,...v}),[v]),[n,b]=useState(()=>zr(o,e)),[T,E]=useState(f),[d,u]=useState(false),[w,y]=useState(false),[R,C]=useState(false),[M,k]=useState(false),[P,B]=useState(null),[z,q]=useState(false),[A,U]=useState(t||!!(e!=null&&e.slug)),[ve,ee]=useState("idle"),ne=useRef(null),Ye=useRef(true),Y=s||(t?null:"blog-editor-draft");useEffect(()=>{if(!(!l.enableAutoSave||!Y||t))try{let L=localStorage.getItem(Y);if(L){let F=JSON.parse(L);b(F);}}catch{}},[]),useEffect(()=>{if(!(!l.enableAutoSave||!Y)){if(Ye.current){Ye.current=false;return}return ne.current&&clearTimeout(ne.current),ee("saving"),ne.current=setTimeout(()=>{try{localStorage.setItem(Y,JSON.stringify(n)),ee("saved"),setTimeout(()=>ee("idle"),2e3);}catch{ee("idle");}},h),()=>{ne.current&&clearTimeout(ne.current);}}},[n,l.enableAutoSave,Y,h]);let Xe=useCallback(()=>{if(Y)try{localStorage.removeItem(Y);}catch{}},[Y]),Ge=useCallback((L,F)=>{b(K=>({...K,[L]:F}));},[]),We=useCallback((L,F,K)=>{b(Q=>({...Q,[L]:{...Q[L],[F]:K}}));},[]),je=useCallback(L=>Se(L),[]),Ke=useCallback(async L=>{let F=n.title[m],K=n.content[m];if(!F||!K){B(c.requiredFields);return}if(l.enableSlug&&!n.slug){B(c.requiredFields);return}y(true),B(null);try{await p.onSave(n,L),Xe();}catch{B(c.saveError);}finally{y(false);}},[n,m,c,l,p,Xe]),Qe=useCallback(async()=>{if(!p.onTranslate)return;let L=n.title[m],F=n.content[m],K=n.excerpt[m];if(!L||!F){B(c.requiredFields);return}C(true),B(null),q(false);try{let Q=await p.onTranslate({sourceLanguage:m,title:L,content:F,excerpt:K||void 0});b(ye=>{let nt={...ye.title},at={...ye.content},st={...ye.excerpt};return Object.keys(Q).forEach(ae=>{if(ae!==m){let Re=Q[ae];if(typeof Re=="object"&&Re!==null){let te=Re;te.title&&(nt[ae]=te.title),te.content&&(at[ae]=te.content),te.excerpt&&(st[ae]=te.excerpt);}}}),{...ye,title:nt,content:at,excerpt:st}}),q(!0),setTimeout(()=>q(!1),3e3);}catch{B(c.translateError);}finally{C(false);}},[n,m,c,p]),Je=useCallback(async L=>{if(!p.onUploadImage)return null;k(true),B(null);try{return await p.onUploadImage(L)}catch{return B("\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC \uC2E4\uD328"),null}finally{k(false);}},[p]),Ze=useCallback(()=>{var L;(L=p.onCancel)==null||L.call(p);},[p]),Ft=useMemo(()=>({formData:n,activeLanguage:T,showPreview:d,submitting:w,translating:R,uploading:M,error:P,translateSuccess:z,autoSaveStatus:ve,languages:o,features:l,labels:c,variant:g,isEditMode:t,setActiveLanguage:E,setShowPreview:u,updateField:Ge,updateMultilingualField:We,handleSave:Ke,handleTranslate:Qe,handleUploadImage:Je,handleCancel:Ze,setError:B,generateSlug:je,slugManuallyEdited:A,setSlugManuallyEdited:U}),[n,T,d,w,R,M,P,z,ve,o,l,c,g,t,Ge,We,Ke,Qe,Je,Ze,je,A,U]);return jsx(Ht.Provider,{value:Ft,children:r})}var se=X.forwardRef(({onBack:r,backLink:e,className:t},o)=>{let{labels:a,isEditMode:i,formData:p}=H();return jsx("header",{ref:o,className:b("flex items-center justify-between mb-8",t),children:jsxs("div",{className:"flex items-center gap-4",children:[e||r&&jsx("button",{type:"button",onClick:r,className:"p-2 text-muted-foreground hover:text-foreground transition-colors","aria-label":"\uB4A4\uB85C\uAC00\uAE30",children:jsx(l,{name:"chevronLeft",size:24})}),jsxs("div",{children:[jsx("h1",{className:"text-2xl font-bold text-foreground",children:i?a.editTitle:a.pageTitle}),i&&p.slug&&jsxs("p",{className:"text-sm text-muted-foreground",children:[a.slugPrefix,p.slug]})]})]})})});se.displayName="BlogEditorHeader";var ie=X.forwardRef(({className:r},e)=>{var u,w;let{formData:t,updateField:o,features:a,labels:i,variant:p,handleUploadImage:v,uploading:g,setSlugManuallyEdited:s}=H(),[h,m]=useState(""),f=useRef(null),c=b("rounded-xl p-6 space-y-4",p==="glass"?"bg-white/10 backdrop-blur-sm border border-white/20 dark:bg-background/20 dark:border-border/50":p==="minimal"?"bg-transparent":"bg-background",r),l$1="w-full px-3 py-2 border border-border rounded-lg bg-background text-foreground focus:ring-1 focus:ring-ring focus:border-transparent transition-colors",n="block text-sm font-medium text-foreground mb-1",b$1=useCallback(y=>{let R=y.trim();R&&!t.tags.includes(R)&&o("tags",[...t.tags,R]),m("");},[t.tags,o]),T=useCallback(y=>{o("tags",t.tags.filter(R=>R!==y));},[t.tags,o]),E=useCallback(y=>{let R=y.target.value;if(R.includes(",")){let C=R.split(",");C.forEach((M,k)=>{k<C.length-1?b$1(M):m(M);});}else m(R);},[b$1]),d=useCallback(y=>{y.key==="Enter"?(y.preventDefault(),b$1(h)):y.key==="Backspace"&&!h&&t.tags.length>0&&T(t.tags[t.tags.length-1]);},[h,t.tags,b$1,T]);return jsxs("div",{ref:e,className:c,children:[jsx("h2",{className:"font-semibold text-foreground",children:i.basicInfo}),jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[a.enableSlug&&jsxs("div",{children:[jsxs("label",{className:n,children:[i.slug," *"]}),jsxs("div",{className:"flex items-center",children:[jsx("span",{className:"text-muted-foreground mr-1 text-sm",children:i.slugPrefix}),jsx("input",{type:"text",value:t.slug,onChange:y=>{o("slug",He(y.target.value)),s(true);},className:b(l$1,"flex-1"),placeholder:"my-post-slug"})]})]}),a.enableTags&&jsxs("div",{children:[jsx("label",{className:n,children:i.tags}),jsxs("div",{className:b("flex flex-wrap items-center gap-2 min-h-[42px] px-3 py-2 border border-border rounded-lg bg-background focus-within:ring-1 focus-within:ring-ring focus-within:border-transparent transition-colors"),children:[t.tags.map(y=>jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary text-sm rounded-md",children:[y,jsx("button",{type:"button",onClick:()=>T(y),className:"hover:text-primary transition-colors","aria-label":`${y} \uD0DC\uADF8 \uC0AD\uC81C`,children:jsx(l,{name:"x",size:14})})]},y)),jsx("input",{type:"text",value:h,onChange:E,onKeyDown:d,className:"flex-1 min-w-[100px] bg-transparent outline-none text-foreground text-sm",placeholder:t.tags.length===0?i.tagsPlaceholder:"\uD0DC\uADF8 \uCD94\uAC00..."})]}),jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"\uC27C\uD45C(,) \uB610\uB294 Enter\uB85C \uD0DC\uADF8 \uCD94\uAC00"})]})]}),a.enableCoverImage&&jsxs("div",{children:[jsx("label",{className:n,children:i.coverImage}),jsxs("div",{className:"space-y-3",children:[t.coverImage&&jsxs("div",{className:"relative w-full h-40 rounded-lg overflow-hidden bg-muted",children:[jsx("img",{src:t.coverImage,alt:"\uCEE4\uBC84 \uC774\uBBF8\uC9C0 \uBBF8\uB9AC\uBCF4\uAE30",className:"w-full h-full object-cover"}),jsx("button",{type:"button",onClick:()=>o("coverImage",""),className:"absolute top-2 right-2 p-1.5 bg-red-500 text-white rounded-full hover:bg-red-600 transition-colors","aria-label":"\uC774\uBBF8\uC9C0 \uC0AD\uC81C",children:jsx(l,{name:"x",size:14})})]}),jsxs("div",{className:"flex gap-2",children:[jsx("input",{type:"text",value:t.coverImage,onChange:y=>o("coverImage",y.target.value),className:b(l$1,"flex-1"),placeholder:i.coverImagePlaceholder}),jsx("input",{ref:f,type:"file",accept:"image/*",className:"hidden",onChange:async y=>{var C;let R=(C=y.target.files)==null?void 0:C[0];if(R){let M=await v(R);M&&o("coverImage",M);}y.target.value="";}}),jsx("button",{type:"button",onClick:()=>{var y;return (y=f.current)==null?void 0:y.click()},disabled:g,className:"px-3 py-2 border border-border rounded-lg hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors",title:"\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC",children:g?jsx(l,{name:"loader",size:20,spin:true}):jsx(l,{name:"upload",size:20})})]})]})]}),jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[a.enablePublishDate&&jsxs("div",{children:[jsx("label",{className:n,children:i.publishDate}),jsx("input",{type:"datetime-local",value:(u=t.publishedAt)!=null?u:"",onChange:y=>o("publishedAt",y.target.value||null),className:l$1}),jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:i.publishDateHint})]}),a.enableExpiresAt&&jsxs("div",{children:[jsx("label",{className:n,children:i.expiresAt}),jsx("input",{type:"datetime-local",value:(w=t.expiresAt)!=null?w:"",onChange:y=>o("expiresAt",y.target.value||null),className:l$1}),jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:i.expiresAtHint})]})]})]})});ie.displayName="BlogEditorMetadata";var le=X.forwardRef(({className:r},e)=>{let{languages:t,activeLanguage:o,setActiveLanguage:a,showPreview:i,setShowPreview:p,features:v,labels:g}=H();return jsxs("div",{ref:e,className:b("flex items-center border-b border-border sticky top-0 z-10 bg-background",r),role:"tablist","aria-label":"\uC5B8\uC5B4 \uC120\uD0DD",children:[jsx("div",{className:"flex flex-1",children:t.map(s=>{let h=o===s.key,m=s.isPrimary;return jsxs("button",{type:"button",role:"tab","aria-selected":h,"aria-controls":`tabpanel-${s.key}`,id:`tab-${s.key}`,onClick:()=>a(s.key),className:b("flex-1 px-4 py-3 text-sm font-medium transition-colors",h?"bg-primary/10 text-primary border-b-2 border-primary":"text-muted-foreground hover:bg-muted"),children:[s.flag&&jsx("span",{className:"mr-1.5",children:s.flag}),s.label,m&&" *"]},s.key)})}),v.enablePreview&&jsxs("button",{type:"button",onClick:()=>p(!i),className:"inline-flex items-center gap-1.5 px-3 py-2 mx-2 text-sm border border-border rounded-lg hover:bg-muted transition-colors shrink-0",children:[jsx(l,{name:i?"pencil":"eye",size:14}),i?g.editMode:g.preview]})]})});le.displayName="BlogEditorLanguageTabs";var ue=X.forwardRef(({className:r,textareaRef:e},t)=>{var d;let{formData:o,activeLanguage:a,updateMultilingualField:i,updateField:p,features:v,labels:g,languages:s,generateSlug:h,isEditMode:m,slugManuallyEdited:f}=H(),c=((d=s.find(u=>u.isPrimary))==null?void 0:d.key)===a,l=s.find(u=>u.key===a),n="w-full px-3 py-2 border border-border rounded-lg bg-background text-foreground focus:ring-1 focus:ring-ring focus:border-transparent transition-colors",b$1="block text-sm font-medium text-foreground mb-1",T=u=>{i("title",a,u),a==="en"&&!m&&!f&&p("slug",h(u));},E=u=>c?`${u} *`:`${u} (${(l==null?void 0:l.label)||a})`;return jsxs("div",{ref:t,className:b("p-6 space-y-4",r),children:[jsxs("div",{children:[jsx("label",{className:b$1,children:E(g.titleLabel)}),jsx("input",{type:"text",value:o.title[a]||"",onChange:u=>T(u.target.value),className:n,placeholder:g.titlePlaceholder})]}),v.enableExcerpt&&jsxs("div",{children:[jsx("label",{className:b$1,children:E(g.excerpt)}),jsx("textarea",{value:o.excerpt[a]||"",onChange:u=>i("excerpt",a,u.target.value),rows:2,className:b(n,"resize-none"),placeholder:g.excerptPlaceholder})]}),jsxs("div",{children:[jsxs("label",{className:b$1,children:[E(g.contentLabel)," (\uB9C8\uD06C\uB2E4\uC6B4)"]}),jsx("textarea",{ref:e,value:o.content[a]||"",onChange:u=>i("content",a,u.target.value),rows:15,className:b(n,"font-mono text-sm resize-y min-h-[300px]"),placeholder:g.contentPlaceholder})]})]})});ue.displayName="BlogEditorContent";function Xr(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function Ve(r){if(!r)return "";let e=r;return e=e.replace(/```(\w*)\n?([\s\S]*?)```/g,(t,o,a)=>`<pre class="bg-gray-100 dark:bg-gray-800 rounded-lg p-4 overflow-x-auto my-4"><code class="text-sm">${Xr(a.trim())}</code></pre>`),e=e.replace(/`([^`]+)`/g,'<code class="bg-gray-100 dark:bg-gray-700 px-1.5 py-0.5 rounded text-sm">$1</code>'),e=e.replace(/^######\s+(.+)$/gm,'<h6 class="text-base font-semibold mt-4 mb-2">$1</h6>'),e=e.replace(/^#####\s+(.+)$/gm,'<h5 class="text-lg font-semibold mt-4 mb-2">$1</h5>'),e=e.replace(/^####\s+(.+)$/gm,'<h4 class="text-xl font-semibold mt-5 mb-2">$1</h4>'),e=e.replace(/^###\s+(.+)$/gm,'<h3 class="text-2xl font-semibold mt-5 mb-3">$1</h3>'),e=e.replace(/^##\s+(.+)$/gm,'<h2 class="text-2xl font-bold mt-6 mb-3">$1</h2>'),e=e.replace(/^#\s+(.+)$/gm,'<h1 class="text-3xl font-bold mt-6 mb-4">$1</h1>'),e=e.replace(/^---+$/gm,'<hr class="my-6 border-gray-300 dark:border-gray-600" />'),e=e.replace(/^>\s+(.+)$/gm,'<blockquote class="border-l-4 border-gray-300 dark:border-gray-600 pl-4 my-4 italic text-gray-600 dark:text-gray-400">$1</blockquote>'),e=e.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),e=e.replace(/\*(.+?)\*/g,"<em>$1</em>"),e=e.replace(/~~(.+?)~~/g,'<del class="text-gray-500">$1</del>'),e=e.replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" class="text-cyan-600 hover:text-cyan-700 dark:text-cyan-400 dark:hover:text-cyan-300 underline" target="_blank" rel="noopener noreferrer">$1</a>'),e=e.replace(/^[-*]\s+(.+)$/gm,'<li class="ml-4">$1</li>'),e=e.replace(/(<li[^>]*>.*<\/li>\n?)+/g,t=>`<ul class="list-disc list-inside my-4 space-y-1">${t}</ul>`),e=e.replace(/\n(?!<)/g,`<br />
|
|
7
|
+
`),e=e.replace(/(<br \/>[\n\s]*){3,}/g,`<br /><br />
|
|
8
|
+
`),e}function At(r){return r?r.replace(/```[\s\S]*?```/g,"").replace(/`[^`]+`/g,"").replace(/^#{1,6}\s+/gm,"").replace(/\*\*(.+?)\*\*/g,"$1").replace(/\*(.+?)\*/g,"$1").replace(/~~(.+?)~~/g,"$1").replace(/\[([^\]]+)\]\([^)]+\)/g,"$1").replace(/^[-*]\s+/gm,"").replace(/^>\s+/gm,"").replace(/^---+$/gm,"").replace(/\n{3,}/g,`
|
|
9
|
+
|
|
10
|
+
`).trim():""}function Gr(r,e=150){let t=At(r);return t.length<=e?t:t.slice(0,e).trim()+"..."}function qe(r,e,t,o,a){let i=r.slice(e,t),p=r.slice(0,e),v=r.slice(t),g=p+o+i+a+v,s=e+o.length+i.length+a.length;return {text:g,cursorPosition:s}}var Kr=[{icon:"bold",label:"bold",markdown:{before:"**",after:"**"},shortcut:"Ctrl+B"},{icon:"italic",label:"italic",markdown:{before:"*",after:"*"},shortcut:"Ctrl+I"},{icon:"strikethrough",label:"strikethrough",markdown:{before:"~~",after:"~~"}},{icon:"heading",label:"heading",markdown:{before:"## ",after:""}},{icon:"link",label:"link",markdown:{before:"[",after:"](url)"},shortcut:"Ctrl+K"},{icon:"image",label:"image",markdown:{before:""}},{icon:"code",label:"code",markdown:{before:"`",after:"`"}},{icon:"fileCode",label:"codeBlock",markdown:{before:"```\n",after:"\n```"}},{icon:"quote",label:"quote",markdown:{before:"> ",after:""}},{icon:"list",label:"list",markdown:{before:"- ",after:""}},{icon:"listOrdered",label:"orderedList",markdown:{before:"1. ",after:""}},{icon:"minus",label:"horizontalRule",markdown:{before:`
|
|
11
|
+
---
|
|
12
|
+
`,after:""}}],ge=X.forwardRef(({textareaRef:r,className:e},t)=>{let{labels:o,activeLanguage:a,updateMultilingualField:i,formData:p,features:v}=H(),g=useCallback(s=>{let h=r.current;if(!h)return;let{selectionStart:m,selectionEnd:f}=h,c=p.content[a]||"",{text:l,cursorPosition:n}=qe(c,m,f,s.markdown.before,s.markdown.after);i("content",a,l),requestAnimationFrame(()=>{h.focus(),h.setSelectionRange(n,n);});},[r,p,a,i]);return v.enableMarkdownToolbar?jsx("div",{ref:t,className:b("flex flex-wrap gap-1 px-4 py-2 border-b border-border bg-muted",e),role:"toolbar","aria-label":"\uB9C8\uD06C\uB2E4\uC6B4 \uC11C\uC2DD",children:Kr.map(s=>jsx("button",{type:"button",onClick:()=>g(s),className:"p-2 text-muted-foreground hover:text-foreground hover:bg-muted rounded transition-colors",title:`${o[s.label]||s.label}${s.shortcut?` (${s.shortcut})`:""}`,"aria-label":o[s.label]||s.label,children:jsx(l,{name:s.icon,size:16})},s.icon))}):null});ge.displayName="BlogEditorToolbar";var pe=X.forwardRef(({renderMarkdown:r,className:e},t)=>{var m,f;let{formData:o,activeLanguage:a,languages:i,labels:p}=H(),v=((m=i.find(c=>c.isPrimary))==null?void 0:m.key)||((f=i[0])==null?void 0:f.key),g=o.title[a]||o.title[v]||p.noTitle,s=o.content[a]||o.content[v]||"",h=X.useMemo(()=>r?r(s):jsx("div",{dangerouslySetInnerHTML:{__html:Ve(s)}}),[s,r]);return jsxs("div",{ref:t,className:b("p-6",e),children:[jsx("h3",{className:"text-xl font-bold text-foreground mb-4",children:g}),jsx("div",{className:"prose dark:prose-invert max-w-none",children:h})]})});pe.displayName="BlogEditorPreview";var me=X.forwardRef(({cancelLink:r,className:e},t)=>{let{labels:o,submitting:a,handleSave:i,handleCancel:p,isEditMode:v,autoSaveStatus:g,features:s}=H();return jsxs("div",{ref:t,className:b("flex items-center justify-end gap-3",e),children:[s.enableAutoSave&&g!=="idle"&&jsxs("span",{className:"text-sm text-muted-foreground flex items-center gap-1",children:[g==="saving"&&jsxs(Fragment,{children:[jsx(l,{name:"loader",size:14,spin:true}),"\uC800\uC7A5 \uC911..."]}),g==="saved"&&jsxs(Fragment,{children:[jsx(l,{name:"check",size:14}),"\uC790\uB3D9\uC800\uC7A5\uB428"]})]}),r||jsx("button",{type:"button",onClick:p,className:"px-4 py-2 text-foreground hover:text-foreground transition-colors",children:o.cancel}),jsx("button",{type:"button",onClick:()=>i(false),disabled:a,className:"px-4 py-2 border border-border rounded-lg hover:bg-muted disabled:opacity-50 disabled:cursor-not-allowed transition-colors",children:o.saveDraft}),jsx("button",{type:"button",onClick:()=>i(true),disabled:a,className:"px-6 py-2 bg-primary text-white rounded-lg hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed inline-flex items-center gap-2 transition-colors",children:a?jsxs(Fragment,{children:[jsx(l,{name:"loader",size:16,spin:true}),o.saving]}):jsxs(Fragment,{children:[jsx(l,{name:"check",size:16}),v?o.update:o.publish]})})]})});me.displayName="BlogEditorActions";var be=X.forwardRef(({hint:r,className:e},t)=>{var l$1,n;let{labels:o,translating:a,translateSuccess:i,handleTranslate:p,formData:v,languages:g,features:s}=H();if(!s.enableTranslation)return null;let h=((l$1=g.find(b=>b.isPrimary))==null?void 0:l$1.key)||((n=g[0])==null?void 0:n.key),m=v.title[h]||"",f=v.content[h]||"",c=m&&f;return jsxs("div",{ref:t,className:b("px-6 py-3 bg-muted border-b border-border flex items-center justify-between",e),children:[jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[jsx(l,{name:"sparkles",size:16}),jsx("span",{children:r||o.translateHint})]}),jsx("button",{type:"button",onClick:p,disabled:a||!c,className:b("inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg transition-colors",i?"bg-green-100 text-green-700 dark:bg-green-900/30 dark:text-green-400":"bg-primary text-white hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed"),children:a?jsxs(Fragment,{children:[jsx(l,{name:"loader",size:16,spin:true}),o.translating]}):i?jsxs(Fragment,{children:[jsx(l,{name:"check",size:16}),o.translateSuccess]}):jsxs(Fragment,{children:[jsx(l,{name:"sparkles",size:16}),o.translateButton]})})]})});be.displayName="BlogEditorTranslate";function ro({onBack:r,backLink:e,cancelLink:t,renderMarkdown:o,translateHint:a,maxWidth:i="max-w-4xl",className:p,children:v}){let{showPreview:g,error:s,variant:h,features:m}=H(),f=useRef(null),c=b(h==="glass"?"bg-gradient-to-br from-gray-100 to-gray-200 dark:from-gray-900 dark:to-gray-800":h==="minimal"?"":"bg-muted"),l=b("rounded-xl overflow-hidden",h==="glass"?"bg-white/10 backdrop-blur-sm border border-white/20 dark:bg-slate-800/20 dark:border-slate-700/50":h==="minimal"?"bg-transparent border border-border":"bg-background");return v?jsx("div",{className:b(c,p),children:jsx("div",{className:b(i,"mx-auto px-4 py-8"),children:v})}):jsx("div",{className:b(c,p),children:jsxs("div",{className:b(i,"mx-auto px-4 py-8"),children:[jsx(se,{onBack:r,backLink:e}),s&&jsx("div",{className:"mb-6 p-4 bg-red-50 dark:bg-red-900/30 border border-red-200 dark:border-red-800 rounded-lg text-red-600 dark:text-red-400",children:s}),jsxs("div",{className:"space-y-6",children:[jsx(ie,{}),jsxs("div",{className:l,children:[m.enableTranslation&&jsx(be,{hint:a}),jsx(le,{}),g?jsx(pe,{renderMarkdown:o}):jsxs(Fragment,{children:[m.enableMarkdownToolbar&&jsx(ge,{textareaRef:f}),jsx(ue,{textareaRef:f})]})]}),jsx(me,{cancelLink:t})]})]})})}var It=X.forwardRef(({initialData:r,isEditMode:e,languages:t,defaultLanguage:o,labels:a,callbacks:i,features:p,variant:v,onBack:g,backLink:s,cancelLink:h,renderMarkdown:m,translateHint:f,maxWidth:c,className:l,children:n,autoSaveKey:b,autoSaveInterval:T},E)=>jsx(Ie,{initialData:r,isEditMode:e,languages:t,defaultLanguage:o,labels:a,callbacks:i,features:p,variant:v,autoSaveKey:b,autoSaveInterval:T,children:jsx("div",{ref:E,children:jsx(ro,{onBack:g,backLink:s,cancelLink:h,renderMarkdown:m,translateHint:f,maxWidth:c,className:l,children:n})})}));It.displayName="BlogEditor";var _=It;_.Header=se;_.Metadata=ie;_.LanguageTabs=le;_.Content=ue;_.Toolbar=ge;_.Preview=pe;_.Actions=me;_.Translate=be;export{Ve as A,At as B,Gr as C,qe as D,ge as E,pe as F,me as G,be as H,_ as I,G as a,zt as b,Dt as c,Vt as d,qt as e,Ot as f,_t as g,Ut as h,Gt as i,Kt as j,pt as k,bt as l,yt as m,Tt as n,Pt as o,Mt as p,Nt as q,Se as r,Sr as s,He as t,H as u,Ie as v,se as w,ie as x,le as y,ue as z};//# sourceMappingURL=chunk-OFYITQXI.mjs.map
|
|
13
|
+
//# sourceMappingURL=chunk-OFYITQXI.mjs.map
|