@hua-labs/ui 2.1.0 → 2.2.0
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 +55 -67
- package/dist/{ComponentLayout-btJq4TjA.d.mts → ComponentLayout-BhM4VSoq.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.mjs +3 -3
- package/dist/advanced-dashboard.mjs.map +1 -1
- package/dist/advanced-emotion.mjs +1 -1
- package/dist/advanced-motion.d.mts +74 -7
- package/dist/advanced-motion.mjs +1 -1
- package/dist/advanced.d.mts +4 -4
- package/dist/advanced.mjs +3 -3
- package/dist/advanced.mjs.map +1 -1
- package/dist/{chunk-GLZKT7JN.mjs → chunk-5DPW7SVD.mjs} +3 -3
- package/dist/{chunk-GLZKT7JN.mjs.map → chunk-5DPW7SVD.mjs.map} +1 -1
- package/dist/{chunk-X7ZIWYRC.mjs → chunk-5L5HIPKA.mjs} +2 -2
- package/dist/{chunk-X7ZIWYRC.mjs.map → chunk-5L5HIPKA.mjs.map} +1 -1
- package/dist/chunk-A5YOVVM5.mjs +3 -0
- package/dist/chunk-A5YOVVM5.mjs.map +1 -0
- package/dist/chunk-CNW22G24.mjs +13 -0
- package/dist/chunk-CNW22G24.mjs.map +1 -0
- package/dist/chunk-CW66UBQG.mjs +3 -0
- package/dist/chunk-CW66UBQG.mjs.map +1 -0
- package/dist/chunk-EAZEI74V.mjs +3 -0
- package/dist/chunk-EAZEI74V.mjs.map +1 -0
- package/dist/{chunk-LH77I6HO.mjs → chunk-EPY3432E.mjs} +2 -2
- package/dist/{chunk-LH77I6HO.mjs.map → chunk-EPY3432E.mjs.map} +1 -1
- package/dist/{chunk-SGEP3CQE.mjs → chunk-F2M4YDDQ.mjs} +2 -2
- package/dist/{chunk-SGEP3CQE.mjs.map → chunk-F2M4YDDQ.mjs.map} +1 -1
- package/dist/chunk-FHMFDCX2.mjs +3 -0
- package/dist/chunk-FHMFDCX2.mjs.map +1 -0
- package/dist/chunk-HBIUCLFL.mjs +3 -0
- package/dist/chunk-HBIUCLFL.mjs.map +1 -0
- package/dist/{chunk-LOYAJIWO.mjs → chunk-HEBXAFRY.mjs} +2 -2
- package/dist/{chunk-LOYAJIWO.mjs.map → chunk-HEBXAFRY.mjs.map} +1 -1
- package/dist/chunk-IG47LMOD.mjs +3 -0
- package/dist/chunk-IG47LMOD.mjs.map +1 -0
- package/dist/{chunk-IFSEJVOR.mjs → chunk-J47ZEXEL.mjs} +2 -2
- package/dist/{chunk-IFSEJVOR.mjs.map → chunk-J47ZEXEL.mjs.map} +1 -1
- package/dist/{chunk-IN7RWQCJ.mjs → chunk-K2FOFIST.mjs} +2 -2
- package/dist/{chunk-IN7RWQCJ.mjs.map → chunk-K2FOFIST.mjs.map} +1 -1
- package/dist/{chunk-UWHCM3S6.mjs → chunk-LL6QPRD7.mjs} +2 -2
- package/dist/{chunk-UWHCM3S6.mjs.map → chunk-LL6QPRD7.mjs.map} +1 -1
- package/dist/{chunk-PAEKNQWW.mjs → chunk-NMJLOK6M.mjs} +2 -2
- package/dist/{chunk-PAEKNQWW.mjs.map → chunk-NMJLOK6M.mjs.map} +1 -1
- package/dist/chunk-O24K56OS.mjs +3 -0
- package/dist/chunk-O24K56OS.mjs.map +1 -0
- package/dist/chunk-OIWG3IJ7.mjs +3 -0
- package/dist/chunk-OIWG3IJ7.mjs.map +1 -0
- package/dist/{chunk-VWSBJUNI.mjs → chunk-OLLU7ZFH.mjs} +2 -2
- package/dist/{chunk-VWSBJUNI.mjs.map → chunk-OLLU7ZFH.mjs.map} +1 -1
- package/dist/chunk-Q76JW7X5.mjs +73 -0
- package/dist/chunk-Q76JW7X5.mjs.map +1 -0
- package/dist/chunk-QEMPERUK.mjs +3 -0
- package/dist/chunk-QEMPERUK.mjs.map +1 -0
- package/dist/{chunk-XV3Y7QVU.mjs → chunk-QRM66RQG.mjs} +2 -2
- package/dist/{chunk-XV3Y7QVU.mjs.map → chunk-QRM66RQG.mjs.map} +1 -1
- package/dist/{chunk-6KTHJ3EL.mjs → chunk-QRRP7TGF.mjs} +3 -3
- package/dist/{chunk-6KTHJ3EL.mjs.map → chunk-QRRP7TGF.mjs.map} +1 -1
- package/dist/chunk-SD6XGDAC.mjs +3 -0
- package/dist/chunk-SD6XGDAC.mjs.map +1 -0
- package/dist/chunk-SDFVGFXT.mjs +3 -0
- package/dist/chunk-SDFVGFXT.mjs.map +1 -0
- package/dist/{chunk-N7M6RIN4.mjs → chunk-SMLDNOV3.mjs} +3 -3
- package/dist/{chunk-N7M6RIN4.mjs.map → chunk-SMLDNOV3.mjs.map} +1 -1
- package/dist/{chunk-NBJUE7NR.mjs → chunk-TAP6MYDW.mjs} +2 -2
- package/dist/{chunk-NBJUE7NR.mjs.map → chunk-TAP6MYDW.mjs.map} +1 -1
- package/dist/{chunk-PYBYZVSL.mjs → chunk-TBZ645BI.mjs} +2 -2
- package/dist/{chunk-PYBYZVSL.mjs.map → chunk-TBZ645BI.mjs.map} +1 -1
- package/dist/{chunk-C4OACMTB.mjs → chunk-V2DNYJR6.mjs} +2 -2
- package/dist/{chunk-C4OACMTB.mjs.map → chunk-V2DNYJR6.mjs.map} +1 -1
- package/dist/chunk-VBABZXL7.mjs +3 -0
- package/dist/chunk-VBABZXL7.mjs.map +1 -0
- package/dist/{chunk-OSCMSA2Q.mjs → chunk-WYBSHTGY.mjs} +2 -2
- package/dist/{chunk-OSCMSA2Q.mjs.map → chunk-WYBSHTGY.mjs.map} +1 -1
- package/dist/chunk-ZQUMJQYV.mjs +3 -0
- package/dist/chunk-ZQUMJQYV.mjs.map +1 -0
- package/dist/chunk-ZY23NOT4.mjs +3 -0
- package/dist/chunk-ZY23NOT4.mjs.map +1 -0
- package/dist/components/Action.d.ts.map +1 -1
- package/dist/components/Badge.d.ts +1 -1
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/Dropdown.d.ts +0 -50
- package/dist/components/Dropdown.d.ts.map +1 -1
- package/dist/components/Icon/Icon.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 +3 -2
- 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/Carousel.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/Parallax.d.ts +9 -6
- package/dist/components/advanced/Parallax.d.ts.map +1 -1
- package/dist/components/advanced/TextReveal.d.ts.map +1 -1
- package/dist/components/advanced/index.d.ts +6 -0
- package/dist/components/advanced/index.d.ts.map +1 -1
- package/dist/data.mjs +1 -1
- package/dist/data.mjs.map +1 -1
- package/dist/feedback.mjs +1 -1
- package/dist/form.mjs +3 -3
- package/dist/form.mjs.map +1 -1
- package/dist/{icons-Bj_nr8Ba.d.mts → icons-DcOBy9Hf.d.mts} +10 -1
- package/dist/iconsax-extended.mjs +2 -2
- package/dist/iconsax-extended.mjs.map +1 -1
- package/dist/index.d.mts +10 -109
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +14 -14
- package/dist/index.mjs.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.mjs +31 -0
- package/dist/landing.mjs.map +1 -0
- package/dist/lib/icon-providers.d.ts +9 -25
- package/dist/lib/icon-providers.d.ts.map +1 -1
- package/dist/lib/icons.d.ts +10 -1
- package/dist/lib/icons.d.ts.map +1 -1
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/navigation.d.mts +1 -1
- package/dist/navigation.mjs +1 -1
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlay.d.mts +2 -50
- package/dist/overlay.mjs +1 -1
- package/dist/overlay.mjs.map +1 -1
- package/dist/sdui.mjs +1 -1
- package/dist/sdui.mjs.map +1 -1
- package/dist/theme.d.mts +85 -0
- package/dist/theme.d.ts +14 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.mjs +3 -0
- package/dist/theme.mjs.map +1 -0
- package/package.json +30 -20
- package/src/styles/landing.css +107 -0
- package/src/styles/utilities.css +58 -0
- package/dist/advanced-dashboard.js +0 -39
- package/dist/advanced-dashboard.js.map +0 -1
- package/dist/advanced-emotion.js +0 -2
- package/dist/advanced-emotion.js.map +0 -1
- package/dist/advanced-motion.js +0 -82
- package/dist/advanced-motion.js.map +0 -1
- package/dist/advanced.js +0 -112
- package/dist/advanced.js.map +0 -1
- package/dist/chunk-BXX2TZUB.mjs +0 -3
- package/dist/chunk-BXX2TZUB.mjs.map +0 -1
- package/dist/chunk-COR6CDMA.mjs +0 -83
- package/dist/chunk-COR6CDMA.mjs.map +0 -1
- package/dist/chunk-FFH4ZFKS.mjs +0 -3
- package/dist/chunk-FFH4ZFKS.mjs.map +0 -1
- package/dist/chunk-HN5LSP6L.mjs +0 -3
- package/dist/chunk-HN5LSP6L.mjs.map +0 -1
- package/dist/chunk-LPAG7DCA.mjs +0 -3
- package/dist/chunk-LPAG7DCA.mjs.map +0 -1
- package/dist/chunk-QQCELXFD.mjs +0 -3
- package/dist/chunk-QQCELXFD.mjs.map +0 -1
- 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-SDFHJ4GB.mjs.map +0 -1
- package/dist/chunk-UUHAXGMO.mjs +0 -3
- package/dist/chunk-UUHAXGMO.mjs.map +0 -1
- package/dist/data.js +0 -3
- package/dist/data.js.map +0 -1
- package/dist/feedback.js +0 -12
- package/dist/feedback.js.map +0 -1
- package/dist/form.js +0 -8
- package/dist/form.js.map +0 -1
- package/dist/iconsax-extended.js +0 -3
- package/dist/iconsax-extended.js.map +0 -1
- package/dist/iconsax.js +0 -3
- package/dist/iconsax.js.map +0 -1
- package/dist/index.js +0 -51
- package/dist/index.js.map +0 -1
- package/dist/interactive.js +0 -2
- package/dist/interactive.js.map +0 -1
- package/dist/lib/phosphor-icons.d.ts +0 -6
- package/dist/lib/phosphor-icons.d.ts.map +0 -1
- package/dist/navigation.js +0 -12
- package/dist/navigation.js.map +0 -1
- package/dist/overlay.js +0 -3
- package/dist/overlay.js.map +0 -1
- package/dist/sdui.js +0 -9
- package/dist/sdui.js.map +0 -1
package/dist/advanced-emotion.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var y=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var y__default=/*#__PURE__*/_interopDefault(y);function n(...s){return tailwindMerge.twMerge(clsx.clsx(s))}var g=y__default.default.forwardRef(({className:s,value:a,max:o=100,size:l="md",color:c="blue",...d},u)=>{let v={sm:"h-2",md:"h-3",lg:"h-4"},N={blue:"bg-indigo-500",green:"bg-green-500",yellow:"bg-yellow-500",red:"bg-red-500",purple:"bg-purple-500",orange:"bg-orange-500",indigo:"bg-indigo-500",pink:"bg-pink-500",gray:"bg-gray-500"},p=Math.min(Math.max(a/o*100,0),100);return jsxRuntime.jsx("div",{ref:u,className:n("w-full bg-muted rounded-full",v[l],s),...d,children:jsxRuntime.jsx("div",{className:n("h-full rounded-full transition-all duration-300",N[c]||N.blue),style:{width:`${p}%`}})})});g.displayName="EmotionMeter";var H=y__default.default.forwardRef(({className:s,emotion:a,isSelected:o=false,size:l="md",...c},d)=>jsxRuntime.jsx("button",{ref:d,className:n("rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring",{sm:"w-8 h-8 text-sm",md:"w-12 h-12 text-lg",lg:"w-16 h-16 text-xl"}[l],o?"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20":"border-border bg-background",s),...c,children:a}));H.displayName="EmotionButton";var G=[{key:"joy",label:"\uAE30\uC068",icon:"smile",color:"yellow"},{key:"sadness",label:"\uC2AC\uD514",icon:"frown",color:"blue"},{key:"anger",label:"\uD654\uB0A8",icon:"angry",color:"red"},{key:"calm",label:"\uD3C9\uC628",icon:"heart",color:"green"},{key:"excitement",label:"\uC124\uB818",icon:"star",color:"pink"},{key:"worry",label:"\uAC71\uC815",icon:"meh",color:"gray"},{key:"gratitude",label:"\uAC10\uC0AC",icon:"heart",color:"purple"},{key:"loneliness",label:"\uC678\uB85C\uC6C0",icon:"user",color:"indigo"}],B=y__default.default.forwardRef(({className:s,selectedEmotion:a,onEmotionSelect:o,layout:l="grid",showIntensity:c=false,intensity:d=50,onIntensityChange:u,emotions:v=G,size:N="md",variant:p="button",...w},T)=>{let b=r=>{o==null||o(r);},C=r=>{let f=a===r.key;return p==="button"?jsxRuntime.jsx(H,{emotion:r.key,isSelected:f,size:N,onClick:()=>b(r.key),className:n("transition-all duration-200",f&&"ring-1 ring-offset-2 ring-primary"),children:r.label},r.key):p==="card"?jsxRuntime.jsx("div",{className:n("p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md",f?"border-primary bg-primary/5":"border-border hover:border-primary/50"),onClick:()=>b(r.key),children:jsxRuntime.jsxs("div",{className:"flex items-center space-x-3",children:[jsxRuntime.jsx("div",{className:n("w-8 h-8 rounded-full flex items-center justify-center",f?"bg-primary text-primary-foreground":"bg-muted"),children:r.icon&&jsxRuntime.jsxs("span",{className:"text-lg",children:[r.icon==="smile"&&"\u{1F60A}",r.icon==="frown"&&"\u{1F622}",r.icon==="angry"&&"\u{1F620}",r.icon==="heart"&&"\u2764\uFE0F",r.icon==="star"&&"\u2B50",r.icon==="meh"&&"\u{1F610}",r.icon==="user"&&"\u{1F464}"]})}),jsxRuntime.jsx("span",{className:"font-medium truncate max-w-[120px]",children:r.label})]})},r.key):p==="chip"?jsxRuntime.jsx("div",{className:n("px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium",f?"bg-primary text-primary-foreground":"bg-muted hover:bg-muted/80"),onClick:()=>b(r.key),children:jsxRuntime.jsx("span",{className:"truncate max-w-[100px]",children:r.label})},r.key):null},M={grid:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3",list:"space-y-2",compact:"flex flex-wrap gap-1"};return jsxRuntime.jsxs("div",{ref:T,className:n("space-y-4",s),...w,children:[jsxRuntime.jsx("div",{className:M[l],children:v.map(C)}),c&&a&&jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground",children:[d,"%"]})]}),jsxRuntime.jsx("input",{type:"range",min:"0",max:"100",value:d,onChange:r=>u==null?void 0:u(Number(r.target.value)),className:"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"}),jsxRuntime.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{children:"\uC57D\uD568"}),jsxRuntime.jsx("span",{children:"\uBCF4\uD1B5"}),jsxRuntime.jsx("span",{children:"\uAC15\uD568"})]})]}),a&&c&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(g,{value:d,size:"md",color:"blue"})})]})});B.displayName="EmotionSelector";var Q=classVarianceAuthority.cva("rounded-lg",{variants:{variant:{default:"bg-card text-card-foreground border border-border",outline:"bg-transparent border-2 border-border",elevated:"bg-card text-card-foreground shadow-lg border border-border"},shadow:{none:"shadow-none",sm:"shadow-sm",md:"shadow-md",lg:"shadow-lg"},padding:{none:"",sm:"p-3",md:"p-4",lg:"p-6"}},defaultVariants:{variant:"default",padding:"none"}}),L=y__default.default.forwardRef(({className:s,variant:a="default",shadow:o,padding:l="none",hoverable:c,...d},u)=>jsxRuntime.jsx("div",{ref:u,className:n(Q({variant:a,shadow:o,padding:l}),"transition-[transform,box-shadow,border-color] duration-200 ease-out",c&&"hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/30 cursor-pointer active:translate-y-0 active:shadow-md",s),...d}));L.displayName="Card";var R=y__default.default.forwardRef(({className:s,...a},o)=>jsxRuntime.jsx("div",{ref:o,className:n("flex flex-col space-y-1 p-3",s),...a}));R.displayName="CardHeader";var k=y__default.default.forwardRef(({className:s,...a},o)=>jsxRuntime.jsx("h3",{ref:o,className:n("text-base md:text-lg font-semibold leading-tight tracking-tight",s),...a}));k.displayName="CardTitle";var P=y__default.default.forwardRef(({className:s,...a},o)=>jsxRuntime.jsx("p",{ref:o,className:n("text-sm text-muted-foreground",s),...a}));P.displayName="CardDescription";var D=y__default.default.forwardRef(({className:s,...a},o)=>jsxRuntime.jsx("div",{ref:o,className:n("px-3 pb-3",s),...a}));D.displayName="CardContent";var U=y__default.default.forwardRef(({className:s,...a},o)=>jsxRuntime.jsx("div",{ref:o,className:n("flex items-center px-3 pb-3",s),...a}));U.displayName="CardFooter";var X=classVarianceAuthority.cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors duration-200 ease-in-out focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2",{variants:{variant:{default:"bg-[var(--badge-default-bg)] text-[var(--badge-default-text)] hover:opacity-80",secondary:"bg-[var(--badge-secondary-bg)] text-[var(--badge-secondary-text)] hover:opacity-80",destructive:"bg-[var(--badge-destructive-bg)] text-slate-50 hover:opacity-80",error:"bg-[var(--badge-destructive-bg)] text-slate-50 hover:opacity-80",outline:"bg-transparent text-[var(--badge-outline-text)] border border-[var(--badge-outline-border)] hover:bg-[var(--badge-outline-hover-bg)]",glass:"bg-[var(--badge-glass-bg)] backdrop-blur-sm border border-[var(--badge-glass-border)] text-[var(--badge-glass-text)] hover:opacity-80"}},defaultVariants:{variant:"default"}}),E=y__default.default.memo(y__default.default.forwardRef(({className:s,variant:a="default",...o},l)=>jsxRuntime.jsx("div",{ref:l,className:n(X({variant:a}),s),...o})));E.displayName="Badge";var S=y__default.default.forwardRef(({className:s,primaryEmotion:a,emotionDistribution:o=[],keywords:l=[],intensity:c=50,positivity:d=70,energy:u=60,showMeter:v=true,showDistribution:N=true,showKeywords:p=true,showMetrics:w=true,layout:T="detailed",...b},C)=>{let M=i=>i<30?"\uC57D\uD568":i<70?"\uBCF4\uD1B5":"\uAC15\uD568",r=i=>i<30?"\uBD80\uC815\uC801":i<70?"\uC911\uB9BD\uC801":"\uAE0D\uC815\uC801",f=i=>i<30?"\uB0AE\uC74C":i<70?"\uBCF4\uD1B5":"\uB192\uC74C";return T==="compact"?jsxRuntime.jsxs("div",{ref:C,className:n("space-y-3",s),...b,children:[a&&jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxRuntime.jsxs("div",{className:"flex items-center space-x-2",children:[jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground",children:[a.name," (",a.intensity,"%)"]}),v&&jsxRuntime.jsx(g,{value:a.intensity,size:"sm",color:"blue"})]})]}),w&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:M(c)})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131:"}),jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:r(d)})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:f(u)})]})]}),p&&l.length>0&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:l.map(i=>jsxRuntime.jsx(E,{variant:"secondary",className:"text-xs",children:i},i))})]})]}):T==="card"?jsxRuntime.jsxs(L,{ref:C,className:n("",s),...b,children:[jsxRuntime.jsxs(R,{children:[jsxRuntime.jsxs(k,{className:"flex items-center",children:[jsxRuntime.jsx("span",{className:"text-2xl mr-2",children:"\u2728"}),"AI \uBD84\uC11D"]}),jsxRuntime.jsx(P,{children:"\uAC10\uC815 \uBD84\uC11D \uACB0\uACFC"})]}),jsxRuntime.jsxs(D,{className:"space-y-4",children:[a&&jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxRuntime.jsxs("span",{className:"ml-2 text-muted-foreground",children:[a.name," (",a.intensity,"%)"]})]}),v&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(g,{value:a.intensity,size:"md",color:"blue"})})]}),w&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsxRuntime.jsx("span",{className:"ml-2 text-muted-foreground",children:M(c)})]}),jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uAE0D\uC815\uC131:"}),jsxRuntime.jsx("span",{className:"ml-2 text-muted-foreground",children:r(d)})]}),jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsxRuntime.jsx("span",{className:"ml-2 text-muted-foreground",children:f(u)})]})]}),p&&l.length>0&&jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:l.map(i=>jsxRuntime.jsx(E,{variant:"secondary",className:"text-xs",children:i},i))})]})]})]}):jsxRuntime.jsxs("div",{ref:C,className:n("space-y-6",s),...b,children:[a&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uC8FC\uC694 \uAC10\uC815"}),jsxRuntime.jsxs("div",{className:"flex items-center space-x-4",children:[jsxRuntime.jsxs("div",{className:"text-center",children:[jsxRuntime.jsx("div",{className:"text-2xl font-bold text-primary",children:a.name}),jsxRuntime.jsxs("div",{className:"text-sm text-muted-foreground",children:[a.intensity,"% \uAC15\uB3C4"]})]}),v&&jsxRuntime.jsx(g,{value:a.intensity,size:"lg",color:"blue"})]})]}),N&&o.length>0&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uBD84\uD3EC"}),jsxRuntime.jsx("div",{className:"space-y-3",children:o.map((i,V)=>jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:i.emotion}),jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground",children:[i.percentage,"%"]})]}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:`${i.color} h-2 rounded-full transition-all duration-300`,style:{width:`${i.percentage}%`}})})]},V))})]}),w&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uBD84\uC11D \uC9C0\uD45C"}),jsxRuntime.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxRuntime.jsx("div",{className:"text-2xl font-bold text-primary",children:M(c)}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:"bg-primary h-2 rounded-full transition-all duration-300",style:{width:`${c}%`}})})]}),jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131"}),jsxRuntime.jsx("div",{className:"text-2xl font-bold text-green-600",children:r(d)}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:"bg-green-500 h-2 rounded-full transition-all duration-300",style:{width:`${d}%`}})})]}),jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0"}),jsxRuntime.jsx("div",{className:"text-2xl font-bold text-orange-600",children:f(u)}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:"bg-orange-500 h-2 rounded-full transition-all duration-300",style:{width:`${u}%`}})})]})]})]}),p&&l.length>0&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uD0A4\uC6CC\uB4DC"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-2",children:l.map(i=>jsxRuntime.jsx(E,{variant:"outline",className:"text-sm",children:i},i))})]})]})});S.displayName="EmotionAnalysis";exports.EmotionAnalysis=S;exports.EmotionButton=H;exports.EmotionMeter=g;exports.EmotionSelector=B;//# sourceMappingURL=advanced-emotion.js.map
|
|
2
|
-
//# sourceMappingURL=advanced-emotion.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/utils.ts","../src/components/advanced/emotion/EmotionMeter.tsx","../src/components/advanced/emotion/EmotionButton.tsx","../src/components/advanced/emotion/EmotionSelector.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/advanced/emotion/EmotionAnalysis.tsx"],"names":["merge","inputs","twMerge","clsx","EmotionMeter","React","className","value","max","size","color","props","ref","sizeClasses","emotionColors","percentage","jsx","EmotionButton","emotion","isSelected","defaultEmotions","EmotionSelector","selectedEmotion","onEmotionSelect","layout","showIntensity","intensity","onIntensityChange","emotions","variant","handleEmotionClick","emotionKey","renderEmotionItem","jsxs","layoutClasses","e","cardVariants","cva","Card","shadow","padding","hoverable","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","badgeVariants","Badge","EmotionAnalysis","primaryEmotion","emotionDistribution","keywords","positivity","energy","showMeter","showDistribution","showKeywords","showMetrics","getIntensityLabel","getPositivityLabel","getEnergyLabel","Fragment","keyword","item","index"],"mappings":"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","file":"advanced-emotion.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * HUA UI의 스마트 클래스 병합 유틸리티\n * clsx와 tailwind-merge를 결합하여 중복 클래스를 자동으로 해결합니다.\n * \n * @param inputs - 병합할 클래스 값들\n * @returns 병합된 클래스 문자열\n * \n * @example\n * ```tsx\n * merge(\"px-2 py-1\", \"px-4\") // \"py-1 px-4\"\n * merge(\"text-red-500\", \"text-blue-500\") // \"text-blue-500\"\n * merge(\"bg-white\", \"dark:bg-slate-900\") // \"bg-white dark:bg-slate-900\"\n * ```\n */\nexport function merge(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n/**\n * 조건부 클래스 병합 유틸리티\n * 조건에 따라 클래스를 선택적으로 병합합니다.\n * \n * @param condition - 클래스를 적용할 조건\n * @param trueClass - 조건이 true일 때 적용할 클래스\n * @param falseClass - 조건이 false일 때 적용할 클래스 (선택사항)\n * @returns 병합된 클래스 문자열\n * \n * @example\n * ```tsx\n * mergeIf(isActive, \"bg-blue-500\", \"bg-gray-200\")\n * mergeIf(isLoading, \"opacity-50 cursor-not-allowed\")\n * ```\n */\nexport function mergeIf(\n condition: boolean,\n trueClass: ClassValue,\n falseClass?: ClassValue\n) {\n return merge(condition ? trueClass : falseClass || \"\")\n}\n\n/**\n * 상대 시간 포맷팅 유틸리티\n * \n * 날짜를 상대 시간 형식으로 포맷팅합니다 (예: \"방금 전\", \"5분 전\", \"2시간 전\", \"3일 전\").\n * 7일 이상 경과한 경우 절대 날짜를 반환합니다.\n * \n * Formats a date as relative time (e.g., \"방금 전\", \"5분 전\", \"2시간 전\", \"3일 전\").\n * Returns absolute date for dates older than 7 days.\n * \n * @param timestamp - 포맷팅할 날짜 (Date 객체 또는 ISO 문자열) / Date to format (Date object or ISO string)\n * @param locale - 로케일 (기본값: \"ko-KR\") / Locale (default: \"ko-KR\")\n * @returns 포맷팅된 상대 시간 문자열 / Formatted relative time string\n * \n * @example\n * ```tsx\n * formatRelativeTime(new Date()) // \"방금 전\"\n * formatRelativeTime(new Date(Date.now() - 5 * 60000)) // \"5분 전\"\n * formatRelativeTime(new Date(Date.now() - 2 * 3600000)) // \"2시간 전\"\n * formatRelativeTime(new Date(Date.now() - 3 * 86400000)) // \"3일 전\"\n * formatRelativeTime(new Date(\"2024-01-01\")) // \"2024. 1. 1.\" (7일 이상 경과)\n * ```\n */\nexport function formatRelativeTime(timestamp: Date | string, locale = \"ko-KR\"): string {\n const date = typeof timestamp === \"string\" ? new Date(timestamp) : timestamp;\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n\n if (minutes < 1) return locale === \"ko-KR\" ? \"방금 전\" : \"just now\";\n if (minutes < 60) return locale === \"ko-KR\" ? `${minutes}분 전` : `${minutes}m ago`;\n if (hours < 24) return locale === \"ko-KR\" ? `${hours}시간 전` : `${hours}h ago`;\n if (days < 7) return locale === \"ko-KR\" ? `${days}일 전` : `${days}d ago`;\n return date.toLocaleDateString(locale);\n}\n\n/**\n * 객체 기반 클래스 병합 유틸리티\n * 객체의 키-값 쌍을 기반으로 조건부 클래스를 병합합니다.\n * \n * @param classMap - 클래스 맵 객체\n * @returns 병합된 클래스 문자열\n * \n * @example\n * ```tsx\n * mergeMap({\n * \"bg-blue-500\": isPrimary,\n * \"bg-gray-500\": !isPrimary,\n * \"text-white\": true,\n * \"opacity-50\": isDisabled\n * })\n * ```\n */\nexport function mergeMap(classMap: Record<string, boolean | undefined | null>) {\n const classes = Object.entries(classMap)\n .filter(([, condition]) => condition)\n .map(([className]) => className)\n \n return merge(...classes)\n}\n\n// 하위 호환성을 위해 cn도 export (점진적 마이그레이션 지원)\nexport const cn = merge ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from '../../../lib/utils';\nimport type { Color } from '../../../lib/types/common';\n\n/**\n * EmotionMeter 컴포넌트의 props / EmotionMeter component props\n * @typedef {Object} EmotionMeterProps\n * @property {number} value - 감정 강도 값 (0-max) / Emotion intensity value (0-max)\n * @property {number} [max=100] - 최대값 / Maximum value\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 미터 크기 / Meter size\n * @property {\"blue\" | \"green\" | \"yellow\" | \"red\"} [color=\"blue\"] - 미터 색상 / Meter color\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface EmotionMeterProps extends React.HTMLAttributes<HTMLDivElement> {\n value: number\n max?: number\n size?: \"sm\" | \"md\" | \"lg\"\n color?: \"blue\" | \"green\" | \"yellow\" | \"red\" | Color\n}\n\n/**\n * EmotionMeter 컴포넌트 / EmotionMeter component\n *\n * 감정 강도를 표시하는 미터 컴포넌트입니다.\n * Progress 컴포넌트와 유사하지만 감정 분석에 특화되어 있습니다.\n *\n * Meter component that displays emotion intensity.\n * Similar to Progress component but specialized for emotion analysis.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionMeter value={75} />\n *\n * @example\n * // 다양한 색상 / Various colors\n * <EmotionMeter\n * value={80}\n * color=\"green\"\n * size=\"lg\"\n * />\n *\n * @param {EmotionMeterProps} props - EmotionMeter 컴포넌트의 props / EmotionMeter component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionMeter 컴포넌트 / EmotionMeter component\n */\nconst EmotionMeter = React.forwardRef<HTMLDivElement, EmotionMeterProps>(\n ({ className, value, max = 100, size = \"md\", color = \"blue\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"h-2\",\n md: \"h-3\",\n lg: \"h-4\"\n }\n\n // EmotionMeter는 특정 색상만 사용 (감정 분석 특화)\n const emotionColors: Record<string, string> = {\n blue: \"bg-indigo-500\",\n green: \"bg-green-500\",\n yellow: \"bg-yellow-500\",\n red: \"bg-red-500\",\n // 추가 색상 지원\n purple: \"bg-purple-500\",\n orange: \"bg-orange-500\",\n indigo: \"bg-indigo-500\",\n pink: \"bg-pink-500\",\n gray: \"bg-gray-500\",\n }\n\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100)\n\n return (\n <div\n ref={ref}\n className={merge(\n \"w-full bg-muted rounded-full\",\n sizeClasses[size],\n className\n )}\n {...props}\n >\n <div\n className={merge(\n \"h-full rounded-full transition-all duration-300\",\n emotionColors[color] || emotionColors.blue\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n )\n }\n)\nEmotionMeter.displayName = \"EmotionMeter\"\n\nexport { EmotionMeter }\n","\"use client\"\n\nimport React from \"react\"\nimport { merge } from '../../../lib/utils';\n\n/**\n * EmotionButton 컴포넌트의 props / EmotionButton component props\n * @typedef {Object} EmotionButtonProps\n * @property {string} emotion - 감정 이모지 또는 텍스트 / Emotion emoji or text\n * @property {boolean} [isSelected=false] - 선택 상태 / Selected state\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 버튼 크기 / Button size\n * @extends {React.ButtonHTMLAttributes<HTMLButtonElement>}\n */\nexport interface EmotionButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n emotion: string\n isSelected?: boolean\n size?: \"sm\" | \"md\" | \"lg\"\n}\n\n/**\n * EmotionButton 컴포넌트 / EmotionButton component\n *\n * 감정을 선택하는 버튼 컴포넌트입니다.\n * 이모지나 텍스트로 감정을 표시하며, 선택 상태를 지원합니다.\n *\n * Button component for selecting emotions.\n * Displays emotion as emoji or text and supports selected state.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionButton emotion=\"😊\" />\n *\n * @example\n * // 선택 상태 / Selected state\n * <EmotionButton\n * emotion=\"😊\"\n * isSelected\n * size=\"lg\"\n * />\n *\n * @param {EmotionButtonProps} props - EmotionButton 컴포넌트의 props / EmotionButton component props\n * @param {React.Ref<HTMLButtonElement>} ref - button 요소 ref / button element ref\n * @returns {JSX.Element} EmotionButton 컴포넌트 / EmotionButton component\n */\nconst EmotionButton = React.forwardRef<HTMLButtonElement, EmotionButtonProps>(\n ({ className, emotion, isSelected = false, size = \"md\", ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-8 h-8 text-sm\",\n md: \"w-12 h-12 text-lg\",\n lg: \"w-16 h-16 text-xl\"\n }\n\n return (\n <button\n ref={ref}\n className={merge(\n \"rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring\",\n sizeClasses[size],\n isSelected\n ? \"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20\"\n : \"border-border bg-background\",\n className\n )}\n {...props}\n >\n {emotion}\n </button>\n )\n }\n)\nEmotionButton.displayName = \"EmotionButton\"\n\nexport { EmotionButton }\n","'use client'\n\nimport React from \"react\"\nimport { EmotionButton } from \"./EmotionButton\"\nimport { EmotionMeter } from \"./EmotionMeter\"\nimport { merge } from '../../../lib/utils';\n\n/**\n * EmotionSelector 컴포넌트의 props / EmotionSelector component props\n * @typedef {Object} EmotionSelectorProps\n * @property {string} [selectedEmotion] - 선택된 감정 키 / Selected emotion key\n * @property {(emotion: string) => void} [onEmotionSelect] - 감정 선택 콜백 / Emotion selection callback\n * @property {\"grid\" | \"list\" | \"compact\"} [layout=\"grid\"] - 레이아웃 타입 / Layout type\n * @property {boolean} [showIntensity=false] - 강도 조절 표시 여부 / Show intensity control\n * @property {number} [intensity=50] - 감정 강도 (0-100) / Emotion intensity (0-100)\n * @property {(intensity: number) => void} [onIntensityChange] - 강도 변경 콜백 / Intensity change callback\n * @property {Array<Object>} [emotions] - 감정 목록 / Emotions list\n * @property {string} emotions[].key - 감정 키 / Emotion key\n * @property {string} emotions[].label - 감정 라벨 / Emotion label\n * @property {string} [emotions[].icon] - 감정 아이콘 / Emotion icon\n * @property {string} [emotions[].color] - 감정 색상 / Emotion color\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 감정 버튼 크기 / Emotion button size\n * @property {\"button\" | \"card\" | \"chip\"} [variant=\"button\"] - 감정 표시 스타일 / Emotion display style\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\ninterface EmotionSelectorProps extends React.HTMLAttributes<HTMLDivElement> {\n selectedEmotion?: string\n onEmotionSelect?: (emotion: string) => void\n layout?: \"grid\" | \"list\" | \"compact\"\n showIntensity?: boolean\n intensity?: number\n onIntensityChange?: (intensity: number) => void\n emotions?: Array<{\n key: string\n label: string\n icon?: string\n color?: string\n }>\n size?: \"sm\" | \"md\" | \"lg\"\n variant?: \"button\" | \"card\" | \"chip\"\n}\n\nconst defaultEmotions = [\n { key: \"joy\", label: \"기쁨\", icon: \"smile\", color: \"yellow\" },\n { key: \"sadness\", label: \"슬픔\", icon: \"frown\", color: \"blue\" },\n { key: \"anger\", label: \"화남\", icon: \"angry\", color: \"red\" },\n { key: \"calm\", label: \"평온\", icon: \"heart\", color: \"green\" },\n { key: \"excitement\", label: \"설렘\", icon: \"star\", color: \"pink\" },\n { key: \"worry\", label: \"걱정\", icon: \"meh\", color: \"gray\" },\n { key: \"gratitude\", label: \"감사\", icon: \"heart\", color: \"purple\" },\n { key: \"loneliness\", label: \"외로움\", icon: \"user\", color: \"indigo\" }\n]\n\n/**\n * EmotionSelector 컴포넌트 / EmotionSelector component\n *\n * 감정을 선택하는 컴포넌트입니다.\n * 여러 감정 옵션을 제공하며, 강도 조절 기능을 포함할 수 있습니다.\n *\n * Component for selecting emotions.\n * Provides multiple emotion options and can include intensity control.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionSelector\n * selectedEmotion=\"joy\"\n * onEmotionSelect={(emotion) => console.log(emotion)}\n * />\n *\n * @example\n * // 강도 조절 포함 / With intensity control\n * <EmotionSelector\n * selectedEmotion=\"calm\"\n * onEmotionSelect={handleEmotionSelect}\n * showIntensity\n * intensity={intensity}\n * onIntensityChange={setIntensity}\n * variant=\"card\"\n * />\n *\n * @param {EmotionSelectorProps} props - EmotionSelector 컴포넌트의 props / EmotionSelector component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionSelector 컴포넌트 / EmotionSelector component\n */\nconst EmotionSelector = React.forwardRef<HTMLDivElement, EmotionSelectorProps>(\n ({\n className,\n selectedEmotion,\n onEmotionSelect,\n layout = \"grid\",\n showIntensity = false,\n intensity = 50,\n onIntensityChange,\n emotions = defaultEmotions,\n size = \"md\",\n variant = \"button\",\n ...props\n }, ref) => {\n const handleEmotionClick = (emotionKey: string) => {\n onEmotionSelect?.(emotionKey)\n }\n\n const renderEmotionItem = (emotion: typeof emotions[0]) => {\n const isSelected = selectedEmotion === emotion.key\n\n if (variant === \"button\") {\n return (\n <EmotionButton\n key={emotion.key}\n emotion={emotion.key}\n isSelected={isSelected}\n size={size}\n onClick={() => handleEmotionClick(emotion.key)}\n className={merge(\n \"transition-all duration-200\",\n isSelected && \"ring-1 ring-offset-2 ring-primary\"\n )}\n >\n {emotion.label}\n </EmotionButton>\n )\n }\n\n if (variant === \"card\") {\n return (\n <div\n key={emotion.key}\n className={merge(\n \"p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md\",\n isSelected\n ? \"border-primary bg-primary/5\"\n : \"border-border hover:border-primary/50\"\n )}\n onClick={() => handleEmotionClick(emotion.key)}\n >\n <div className=\"flex items-center space-x-3\">\n <div className={merge(\n \"w-8 h-8 rounded-full flex items-center justify-center\",\n isSelected ? \"bg-primary text-primary-foreground\" : \"bg-muted\"\n )}>\n {emotion.icon && (\n <span className=\"text-lg\">\n {emotion.icon === \"smile\" && \"😊\"}\n {emotion.icon === \"frown\" && \"😢\"}\n {emotion.icon === \"angry\" && \"😠\"}\n {emotion.icon === \"heart\" && \"❤️\"}\n {emotion.icon === \"star\" && \"⭐\"}\n {emotion.icon === \"meh\" && \"😐\"}\n {emotion.icon === \"user\" && \"👤\"}\n </span>\n )}\n </div>\n <span className=\"font-medium truncate max-w-[120px]\">{emotion.label}</span>\n </div>\n </div>\n )\n }\n\n if (variant === \"chip\") {\n return (\n <div\n key={emotion.key}\n className={merge(\n \"px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"bg-muted hover:bg-muted/80\"\n )}\n onClick={() => handleEmotionClick(emotion.key)}\n >\n <span className=\"truncate max-w-[100px]\">{emotion.label}</span>\n </div>\n )\n }\n\n return null\n }\n\n const layoutClasses = {\n grid: \"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3\",\n list: \"space-y-2\",\n compact: \"flex flex-wrap gap-1\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\"space-y-4\", className)}\n {...props}\n >\n <div className={layoutClasses[layout]}>\n {emotions.map(renderEmotionItem)}\n </div>\n\n {showIntensity && selectedEmotion && (\n <div className=\"space-y-3\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">감정 강도</span>\n <span className=\"text-sm text-muted-foreground\">{intensity}%</span>\n </div>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={intensity}\n onChange={(e) => onIntensityChange?.(Number(e.target.value))}\n className=\"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider\"\n />\n <div className=\"flex justify-between text-xs text-muted-foreground\">\n <span>약함</span>\n <span>보통</span>\n <span>강함</span>\n </div>\n </div>\n )}\n\n {selectedEmotion && showIntensity && (\n <div className=\"flex justify-center\">\n <EmotionMeter\n value={intensity}\n size=\"md\"\n color=\"blue\"\n />\n </div>\n )}\n </div>\n )\n }\n)\n\nEmotionSelector.displayName = \"EmotionSelector\"\n\nexport { EmotionSelector }\nexport type { EmotionSelectorProps }\n","\"use client\"\n\nimport React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\n\nexport const cardVariants = cva(\n \"rounded-lg\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground border border-border\",\n outline: \"bg-transparent border-2 border-border\",\n elevated: \"bg-card text-card-foreground shadow-lg border border-border\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n },\n padding: {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n padding: \"none\",\n },\n }\n)\n\n/**\n * Card 컴포넌트의 props / Card component props\n */\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"outline\" | \"elevated\"\n shadow?: \"none\" | \"sm\" | \"md\" | \"lg\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\"\n hoverable?: boolean\n}\n\n/**\n * Card 컴포넌트 / Card component\n *\n * 콘텐츠를 카드 형태로 표시하는 컴포넌트입니다.\n *\n * @example\n * <Card>\n * <CardHeader><CardTitle>제목</CardTitle></CardHeader>\n * <CardContent><p>내용</p></CardContent>\n * </Card>\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"default\", shadow, padding = \"none\", hoverable, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(\n cardVariants({ variant, shadow, padding }),\n \"transition-[transform,box-shadow,border-color] duration-200 ease-out\",\n hoverable && \"hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/30 cursor-pointer active:translate-y-0 active:shadow-md\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nCard.displayName = \"Card\"\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex flex-col space-y-1 p-3\", className)}\n {...props}\n />\n )\n)\n\nCardHeader.displayName = \"CardHeader\"\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={merge(\n \"text-base md:text-lg font-semibold leading-tight tracking-tight\",\n className\n )}\n {...props}\n />\n )\n)\n\nCardTitle.displayName = \"CardTitle\"\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={merge(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n)\n\nCardDescription.displayName = \"CardDescription\"\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={merge(\"px-3 pb-3\", className)} {...props} />\n )\n)\n\nCardContent.displayName = \"CardContent\"\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex items-center px-3 pb-3\", className)}\n {...props}\n />\n )\n)\n\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","\"use client\"\n\nimport React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\n\nexport const badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors duration-200 ease-in-out focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"bg-[var(--badge-default-bg)] text-[var(--badge-default-text)] hover:opacity-80\",\n secondary: \"bg-[var(--badge-secondary-bg)] text-[var(--badge-secondary-text)] hover:opacity-80\",\n destructive: \"bg-[var(--badge-destructive-bg)] text-slate-50 hover:opacity-80\",\n error: \"bg-[var(--badge-destructive-bg)] text-slate-50 hover:opacity-80\",\n outline: \"bg-transparent text-[var(--badge-outline-text)] border border-[var(--badge-outline-border)] hover:bg-[var(--badge-outline-hover-bg)]\",\n glass: \"bg-[var(--badge-glass-bg)] backdrop-blur-sm border border-[var(--badge-glass-border)] text-[var(--badge-glass-text)] hover:opacity-80\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n/**\n * Badge 컴포넌트의 props / Badge component props\n */\nexport interface BadgeProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"error\" | \"outline\" | \"glass\"\n}\n\n/**\n * Badge 컴포넌트 / Badge component\n *\n * 상태나 카테고리를 표시하는 작은 배지 컴포넌트입니다.\n *\n * @example\n * <Badge>New</Badge>\n * <Badge variant=\"destructive\">완료</Badge>\n * <Badge variant=\"outline\">대기</Badge>\n */\nconst Badge = React.memo(React.forwardRef<HTMLDivElement, BadgeProps>(\n ({ className, variant = \"default\", ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(badgeVariants({ variant }), className)}\n {...props}\n />\n )\n }\n))\nBadge.displayName = \"Badge\"\n\nexport { Badge }\n","'use client'\n\nimport React from \"react\"\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../../Card';\nimport { Badge } from '../../Badge';\nimport { merge } from '../../../lib/utils';\nimport { EmotionMeter } from \"./EmotionMeter\"\n\n/**\n * EmotionAnalysis 컴포넌트의 props / EmotionAnalysis component props\n * @typedef {Object} EmotionAnalysisProps\n * @property {Object} [primaryEmotion] - 주요 감정 정보 / Primary emotion information\n * @property {string} primaryEmotion.name - 감정 이름 / Emotion name\n * @property {number} primaryEmotion.intensity - 감정 강도 (0-100) / Emotion intensity (0-100)\n * @property {string} [primaryEmotion.color] - 감정 색상 / Emotion color\n * @property {Array<Object>} [emotionDistribution] - 감정 분포 배열 / Emotion distribution array\n * @property {string} emotionDistribution[].emotion - 감정 이름 / Emotion name\n * @property {number} emotionDistribution[].percentage - 감정 비율 (0-100) / Emotion percentage (0-100)\n * @property {string} emotionDistribution[].color - 감정 색상 / Emotion color\n * @property {string[]} [keywords] - 키워드 배열 / Keywords array\n * @property {number} [intensity=50] - 전체 강도 (0-100) / Overall intensity (0-100)\n * @property {number} [positivity=70] - 긍정성 (0-100) / Positivity (0-100)\n * @property {number} [energy=60] - 에너지 (0-100) / Energy (0-100)\n * @property {boolean} [showMeter=true] - 강도 미터 표시 여부 / Show intensity meter\n * @property {boolean} [showDistribution=true] - 분포 표시 여부 / Show distribution\n * @property {boolean} [showKeywords=true] - 키워드 표시 여부 / Show keywords\n * @property {boolean} [showMetrics=true] - 메트릭 표시 여부 / Show metrics\n * @property {\"compact\" | \"detailed\" | \"card\"} [layout=\"detailed\"] - 레이아웃 타입 / Layout type\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\ninterface EmotionAnalysisProps extends React.HTMLAttributes<HTMLDivElement> {\n primaryEmotion?: {\n name: string\n intensity: number\n color?: string\n }\n emotionDistribution?: Array<{\n emotion: string\n percentage: number\n color: string\n }>\n keywords?: string[]\n intensity?: number\n positivity?: number\n energy?: number\n showMeter?: boolean\n showDistribution?: boolean\n showKeywords?: boolean\n showMetrics?: boolean\n layout?: \"compact\" | \"detailed\" | \"card\"\n}\n\n/**\n * EmotionAnalysis 컴포넌트 / EmotionAnalysis component\n *\n * 감정 분석 결과를 표시하는 컴포넌트입니다.\n * 주요 감정, 감정 분포, 키워드, 메트릭(강도, 긍정성, 에너지)을 표시할 수 있습니다.\n *\n * Component that displays emotion analysis results.\n * Can display primary emotion, emotion distribution, keywords, and metrics (intensity, positivity, energy).\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <EmotionAnalysis\n * primaryEmotion={{ name: \"기쁨\", intensity: 80 }}\n * keywords={[\"행복\", \"만족\"]}\n * />\n *\n * @example\n * // 상세 레이아웃 / Detailed layout\n * <EmotionAnalysis\n * primaryEmotion={{ name: \"평온\", intensity: 65, color: \"green\" }}\n * emotionDistribution={[\n * { emotion: \"기쁨\", percentage: 40, color: \"yellow\" },\n * { emotion: \"평온\", percentage: 60, color: \"green\" }\n * ]}\n * keywords={[\"안정\", \"편안\"]}\n * intensity={65}\n * positivity={75}\n * energy={50}\n * layout=\"detailed\"\n * />\n *\n * @param {EmotionAnalysisProps} props - EmotionAnalysis 컴포넌트의 props / EmotionAnalysis component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} EmotionAnalysis 컴포넌트 / EmotionAnalysis component\n */\nconst EmotionAnalysis = React.forwardRef<HTMLDivElement, EmotionAnalysisProps>(\n ({\n className,\n primaryEmotion,\n emotionDistribution = [],\n keywords = [],\n intensity = 50,\n positivity = 70,\n energy = 60,\n showMeter = true,\n showDistribution = true,\n showKeywords = true,\n showMetrics = true,\n layout = \"detailed\",\n ...props\n }, ref) => {\n const getIntensityLabel = (value: number) => {\n if (value < 30) return \"약함\"\n if (value < 70) return \"보통\"\n return \"강함\"\n }\n\n const getPositivityLabel = (value: number) => {\n if (value < 30) return \"부정적\"\n if (value < 70) return \"중립적\"\n return \"긍정적\"\n }\n\n const getEnergyLabel = (value: number) => {\n if (value < 30) return \"낮음\"\n if (value < 70) return \"보통\"\n return \"높음\"\n }\n\n if (layout === \"compact\") {\n return (\n <div\n ref={ref}\n className={merge(\"space-y-3\", className)}\n {...props}\n >\n {primaryEmotion && (\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">주요 감정:</span>\n <div className=\"flex items-center space-x-2\">\n <span className=\"text-sm text-muted-foreground\">\n {primaryEmotion.name} ({primaryEmotion.intensity}%)\n </span>\n {showMeter && (\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"sm\"\n color=\"blue\"\n />\n )}\n </div>\n </div>\n )}\n\n {showMetrics && (\n <>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">감정 강도:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getIntensityLabel(intensity)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">긍정성:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getPositivityLabel(positivity)}\n </span>\n </div>\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">에너지:</span>\n <span className=\"text-sm text-muted-foreground\">\n {getEnergyLabel(energy)}\n </span>\n </div>\n </>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div>\n <span className=\"text-sm font-medium\">키워드:</span>\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"secondary\" className=\"text-xs\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n\n if (layout === \"card\") {\n return (\n <Card\n ref={ref}\n className={merge(\"\", className)}\n {...props}\n >\n <CardHeader>\n <CardTitle className=\"flex items-center\">\n <span className=\"text-2xl mr-2\">✨</span>\n AI 분석\n </CardTitle>\n <CardDescription>\n 감정 분석 결과\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n {primaryEmotion && (\n <div className=\"space-y-3\">\n <div className=\"text-sm\">\n <span className=\"font-medium\">주요 감정:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {primaryEmotion.name} ({primaryEmotion.intensity}%)\n </span>\n </div>\n {showMeter && (\n <div className=\"flex justify-center\">\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"md\"\n color=\"blue\"\n />\n </div>\n )}\n </div>\n )}\n\n {showMetrics && (\n <>\n <div className=\"text-sm\">\n <span className=\"font-medium\">감정 강도:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getIntensityLabel(intensity)}\n </span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-medium\">긍정성:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getPositivityLabel(positivity)}\n </span>\n </div>\n <div className=\"text-sm\">\n <span className=\"font-medium\">에너지:</span>\n <span className=\"ml-2 text-muted-foreground\">\n {getEnergyLabel(energy)}\n </span>\n </div>\n </>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div className=\"text-sm\">\n <span className=\"font-medium\">키워드:</span>\n <div className=\"flex flex-wrap gap-1 mt-1\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"secondary\" className=\"text-xs\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </CardContent>\n </Card>\n )\n }\n\n // detailed layout (default)\n return (\n <div\n ref={ref}\n className={merge(\"space-y-6\", className)}\n {...props}\n >\n {primaryEmotion && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">주요 감정</h3>\n <div className=\"flex items-center space-x-4\">\n <div className=\"text-center\">\n <div className=\"text-2xl font-bold text-primary\">\n {primaryEmotion.name}\n </div>\n <div className=\"text-sm text-muted-foreground\">\n {primaryEmotion.intensity}% 강도\n </div>\n </div>\n {showMeter && (\n <EmotionMeter\n value={primaryEmotion.intensity}\n size=\"lg\"\n color=\"blue\"\n />\n )}\n </div>\n </div>\n )}\n\n {showDistribution && emotionDistribution.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">감정 분포</h3>\n <div className=\"space-y-3\">\n {emotionDistribution.map((item, index) => (\n <div key={index} className=\"space-y-2\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">{item.emotion}</span>\n <span className=\"text-sm text-muted-foreground\">\n {item.percentage}%\n </span>\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className={`${item.color} h-2 rounded-full transition-all duration-300`}\n style={{ width: `${item.percentage}%` }}\n />\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n\n {showMetrics && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">분석 지표</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">감정 강도</div>\n <div className=\"text-2xl font-bold text-primary\">\n {getIntensityLabel(intensity)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-primary h-2 rounded-full transition-all duration-300\"\n style={{ width: `${intensity}%` }}\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">긍정성</div>\n <div className=\"text-2xl font-bold text-green-600\">\n {getPositivityLabel(positivity)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-green-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${positivity}%` }}\n />\n </div>\n </div>\n <div className=\"space-y-2\">\n <div className=\"text-sm font-medium\">에너지</div>\n <div className=\"text-2xl font-bold text-orange-600\">\n {getEnergyLabel(energy)}\n </div>\n <div className=\"w-full bg-muted rounded-full h-2\">\n <div\n className=\"bg-orange-500 h-2 rounded-full transition-all duration-300\"\n style={{ width: `${energy}%` }}\n />\n </div>\n </div>\n </div>\n </div>\n )}\n\n {showKeywords && keywords.length > 0 && (\n <div className=\"space-y-4\">\n <h3 className=\"text-lg font-semibold\">감정 키워드</h3>\n <div className=\"flex flex-wrap gap-2\">\n {keywords.map((keyword) => (\n <Badge key={keyword} variant=\"outline\" className=\"text-sm\">\n {keyword}\n </Badge>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n }\n)\n\nEmotionAnalysis.displayName = \"EmotionAnalysis\"\n\nexport { EmotionAnalysis }\nexport type { EmotionAnalysisProps }\n"]}
|
package/dist/advanced-motion.js
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
'use strict';var ee=require('react'),clsx=require('clsx'),tailwindMerge=require('tailwind-merge'),jsxRuntime=require('react/jsx-runtime'),classVarianceAuthority=require('class-variance-authority'),ssr=require('@phosphor-icons/react/dist/ssr');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var ee__default=/*#__PURE__*/_interopDefault(ee);function l(...t){return tailwindMerge.twMerge(clsx.clsx(t))}function ct(t){let e=Object.entries(t).filter(([,r])=>r).map(([r])=>r);return l(...e)}var pe=ee__default.default.forwardRef(({children:t,className:e,type:r="fade",duration:o=500,easing:a="smooth",delay:s=0,autoStart:d=true,onStart:v,onComplete:h,showProgress:i=false,progressClassName:y},m)=>{let[x,f]=ee.useState(false),[c,n]=ee.useState(0),[g,u]=ee.useState(false),C=ee.useRef(null),p=ee.useRef(null),b=M=>({linear:T=>T,"ease-in":T=>T*T,"ease-out":T=>1-Math.pow(1-T,2),"ease-in-out":T=>T<.5?2*T*T:1-Math.pow(-2*T+2,2)/2,bounce:T=>T<.36363636363636365?7.5625*T*T:T<.7272727272727273?7.5625*(T-=.5454545454545454)*T+.75:T<.9090909090909091?7.5625*(T-=.8181818181818182)*T+.9375:7.5625*(T-=.9545454545454546)*T+.984375,elastic:T=>Math.pow(2,-10*T)*Math.sin((T-.075)*(2*Math.PI)/.3)+1,smooth:T=>T*T*(3-2*T)})[M],k=ee.useCallback(M=>{p.current||(p.current=M);let R=M-p.current,T=b(a),I=Math.min(R/o,1);I=T(I),n(I),f(I>.1),I<1?C.current=requestAnimationFrame(V=>k(V)):(u(false),n(1),h==null||h());},[o,a,h]),w=ee.useCallback(()=>{u(true),n(0),v==null||v(),p.current=null,C.current=requestAnimationFrame(k);},[k,v]);ee.useEffect(()=>{if(d){let M=setTimeout(()=>{w();},s);return ()=>clearTimeout(M)}},[d,s,w]),ee.useEffect(()=>()=>{C.current&&cancelAnimationFrame(C.current);},[]);let B=(()=>{switch(r){case "fade":return {opacity:x?1:0,transform:"none"};case "slide":return {opacity:x?1:0,transform:`translateX(${(1-c)*100}%)`};case "slide-up":return {opacity:x?1:0,transform:`translateY(${(1-c)*100}%)`};case "slide-down":return {opacity:x?1:0,transform:`translateY(-${(1-c)*100}%)`};case "slide-left":return {opacity:x?1:0,transform:`translateX(-${(1-c)*100}%)`};case "slide-right":return {opacity:x?1:0,transform:`translateX(${(1-c)*100}%)`};case "scale":return {opacity:x?1:0,transform:`scale(${.8+c*.2})`};case "flip":return {opacity:x?1:0,transform:`perspective(1000px) rotateY(${(1-c)*90}deg)`};case "morph":return {opacity:x?1:0,transform:`scale(${.9+c*.1}) rotate(${(1-c)*5}deg)`};case "cube":return {opacity:x?1:0,transform:`perspective(1000px) rotateX(${(1-c)*90}deg) rotateY(${(1-c)*45}deg)`};case "zoom":return {opacity:x?1:0,transform:`scale(${.5+c*.5})`};default:return {opacity:x?1:0,transform:"none"}}})();return jsxRuntime.jsxs("div",{className:"relative",children:[i&&jsxRuntime.jsxs("div",{className:l("fixed top-4 right-4 z-50 bg-background rounded-lg px-3 py-2 shadow-lg border",y),children:[jsxRuntime.jsxs("div",{className:"text-sm font-medium text-foreground",children:["Progress: ",Math.round(c*100),"%"]}),jsxRuntime.jsx("div",{className:"w-24 h-2 bg-muted rounded-full mt-2",children:jsxRuntime.jsx("div",{className:"h-full bg-primary rounded-full transition-all duration-100",style:{width:`${c*100}%`}})})]}),jsxRuntime.jsx("div",{ref:m,className:l("transition-all duration-500 ease-out",e),style:{...B,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:t})]})});pe.displayName="AdvancedPageTransition";var _r=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"fade",...t})),jr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"slide",...t})),Xr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"scale",...t})),Yr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"flip",...t})),Kr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"morph",...t})),Qr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"cube",...t})),Zr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(pe,{ref:e,type:"zoom",...t}));_r.displayName="FadePageTransition";jr.displayName="SlidePageTransition";Xr.displayName="ScalePageTransition";Yr.displayName="FlipPageTransition";Kr.displayName="MorphPageTransition";Qr.displayName="CubePageTransition";Zr.displayName="ZoomPageTransition";var to=(t={})=>{let[e,r]=ee.useState({isTransitioning:false,isVisible:false,currentStep:0,progress:0}),o=ee.useRef(null),a=ee.useRef(null),s=ee.useRef({type:"fade",duration:500,easing:"smooth",delay:0,stagger:0,direction:"forward",...t}),d=ee.useCallback(f=>({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)})[f],[]),v=ee.useCallback(f=>{var C;a.current||(a.current=f);let c=f-a.current,n=s.current,g=d(n.easing),u=Math.min(c/n.duration,1);u=g(u),r(p=>({...p,progress:u,isVisible:n.direction==="forward"?u>.1:u<.9,currentStep:Math.floor(u*10)})),u<1?o.current=requestAnimationFrame(v):(r(p=>({...p,isTransitioning:false,progress:n.direction==="forward"?1:0})),(C=n.onComplete)==null||C.call(n));},[d]),h=ee.useCallback(async f=>new Promise(c=>{var g;f&&(s.current={...s.current,...f});let n=s.current;n.onComplete=()=>c(),r(u=>({...u,isTransitioning:true,progress:n.direction==="forward"?0:1})),a.current=null,(g=n.onStart)==null||g.call(n),n.delay?setTimeout(()=>{o.current=requestAnimationFrame(v);},n.delay):o.current=requestAnimationFrame(v);}),[v]),i=ee.useCallback(async()=>new Promise(f=>{let c=s.current;c.direction="backward",c.onComplete=()=>f(),h();}),[h]),y=ee.useCallback(()=>{o.current&&cancelAnimationFrame(o.current);},[]),m=ee.useCallback(()=>{e.isTransitioning&&(o.current=requestAnimationFrame(v));},[e.isTransitioning,v]),x=ee.useCallback(()=>{o.current&&cancelAnimationFrame(o.current),r({isTransitioning:false,isVisible:false,currentStep:0,progress:0});},[]);return ee.useEffect(()=>()=>{o.current&&cancelAnimationFrame(o.current);},[]),[e,{start:h,reverse:i,pause:y,resume:m,reset:x}]};var no=(t={})=>{let{defaultType:e="fade",defaultDuration:r=500,defaultEasing:o="smooth",enableHistory:a=true,enableProgress:s=true,enableDebug:d=false}=t,[v,h]=ee.useState({isTransitioning:false,currentTransition:null,transitionHistory:[],totalTransitions:0,averageDuration:0}),i=ee.useRef(new Map),y=ee.useRef(0),m=ee.useCallback((p,b)=>{d&&console.log(`[PageTransitionManager] ${p}`,b);},[d]),x=ee.useCallback(p=>{h(b=>{let k=a?[...b.transitionHistory,p]:b.transitionHistory,w=k.length,N=k.reduce((B,M)=>B+M.duration,0)/w;return {...b,totalTransitions:w,averageDuration:N,transitionHistory:k}});},[a]),f=ee.useCallback(async p=>{let b=`transition_${++y.current}`,k={type:e,duration:r,easing:o,...p},w={id:b,type:k.type,duration:k.duration,easing:k.easing,timestamp:Date.now(),status:"pending"};m("Starting transition",{id:b,config:k}),h(B=>({...B,isTransitioning:true,currentTransition:w}));let N=setTimeout(()=>{var M;let B={...w,status:"completed"};h(R=>({...R,isTransitioning:false,currentTransition:null})),x(B),i.current.delete(b),m("Transition completed",{id:b}),(M=k.onComplete)==null||M.call(k);},k.duration);return i.current.set(b,{timer:N,config:k}),setTimeout(()=>{h(B=>({...B,currentTransition:{...B.currentTransition,status:"active"}}));},50),b},[e,r,o,m,x]),c=ee.useCallback(p=>{let b=i.current.get(p);b&&(clearTimeout(b.timer),i.current.delete(p),h(k=>{var w;return {...k,isTransitioning:i.current.size>0,currentTransition:((w=k.currentTransition)==null?void 0:w.id)===p?null:k.currentTransition}}),m("Transition cancelled",{id:p}));},[m]),n=ee.useCallback(()=>{i.current.forEach(({timer:p},b)=>{clearTimeout(p),m("Transition paused",{id:b});});},[m]),g=ee.useCallback(()=>{i.current.forEach(({config:p},b)=>{f(p);});},[f]),u=ee.useCallback(()=>{h(p=>({...p,transitionHistory:[],totalTransitions:0,averageDuration:0})),m("History cleared");},[m]),C=ee.useCallback(()=>{let{transitionHistory:p}=v,b=p.reduce((w,N)=>(w[N.type]=(w[N.type]||0)+1,w),{}),k=p.reduce((w,N)=>(w[N.status]=(w[N.status]||0)+1,w),{});return {total:p.length,average:v.averageDuration,byType:b,byStatus:k}},[v]);return ee.useEffect(()=>{let p=i.current;return ()=>{p.forEach(({timer:b})=>{clearTimeout(b);}),p.clear();}},[]),[v,{startTransition:f,cancelTransition:c,pauseAll:n,resumeAll:g,clearHistory:u,getTransitionStats:C}]};var _t=ee__default.default.forwardRef(({children:t,className:e,speed:r=.5,direction:o="up",offset:a=0,disabled:s=false,scale:d=false,opacity:v=false,rotate:h=false,rotateDirection:i="cw",style:y,...m},x)=>{let f=ee.useRef(null),[c,n]=ee.useState({x:0,y:0,scale:1,opacity:1,rotate:0}),g=lo(),u=ee.useCallback(()=>{if(s||g)return;let p=f.current;if(!p)return;let b=p.getBoundingClientRect(),k=window.innerHeight,N=b.top+b.height/2,M=(k/2-N)/k,R=M*r*100+a,T=0,I=0;switch(o){case "up":I=-R;break;case "down":I=R;break;case "left":T=-R;break;case "right":T=R;break}let V=d?1+Math.abs(M)*.1:1,z=v?Math.max(.3,1-Math.abs(M)*.5):1,$=h?M*10*(i==="cw"?1:-1):0;n({x:T,y:I,scale:V,opacity:z,rotate:$});},[s,g,r,o,a,d,v,h,i]);ee.useEffect(()=>{if(s||g)return;u();let p=()=>{requestAnimationFrame(u);};return window.addEventListener("scroll",p,{passive:true}),window.addEventListener("resize",p,{passive:true}),()=>{window.removeEventListener("scroll",p),window.removeEventListener("resize",p);}},[u,s,g]);let C={...y,transform:s||g?void 0:`translate3d(${c.x}px, ${c.y}px, 0) scale(${c.scale}) rotate(${c.rotate}deg)`,opacity:s||g?1:c.opacity,willChange:s||g?void 0:"transform, opacity"};return jsxRuntime.jsx("div",{ref:co(x,f),className:l("transition-none",e),style:C,...m,children:t})});_t.displayName="Parallax";function lo(){let[t,e]=ee.useState(false);return ee.useEffect(()=>{let r=window.matchMedia("(prefers-reduced-motion: reduce)");e(r.matches);let o=a=>{e(a.matches);};return r.addEventListener("change",o),()=>r.removeEventListener("change",o)},[]),t}function co(...t){return e=>{t.forEach(r=>{typeof r=="function"?r(e):r&&typeof r=="object"&&(r.current=e);});}}var Xt=ee__default.default.forwardRef(({children:t,className:e,direction:r="left",speed:o=50,pauseOnHover:a=true,pauseOnClick:s=false,gap:d=16,gradient:v=true,gradientColor:h="hsl(var(--background))",gradientWidth:i=100,style:y,...m},x)=>{let f=ee.useRef(null),[c,n]=ee.useState(0),[g,u]=ee.useState(0),[C,p]=ee.useState(false),b=r==="left"||r==="right",k=r==="right"||r==="down";ee.useEffect(()=>{let M=f.current;if(!M)return;let R=M.firstElementChild;if(!R)return;let T=()=>{b?n(R.offsetWidth):u(R.offsetHeight);};T();let I=new ResizeObserver(T);return I.observe(R),()=>I.disconnect()},[b,t]);let N={"--marquee-duration":`${b?c/o:g/o}s`,"--marquee-gap":`${d}px`},B=v?{"--gradient-color":h,"--gradient-width":`${i}px`}:{};return jsxRuntime.jsxs("div",{ref:x,className:l("relative overflow-hidden",v&&"marquee-gradient",e),style:{...y,...B},onMouseEnter:()=>a&&p(true),onMouseLeave:()=>a&&p(false),onClick:()=>s&&p(!C),...m,children:[jsxRuntime.jsxs("div",{ref:f,className:l("flex",b?"flex-row":"flex-col",C?"animate-pause":"",b?k?"animate-marquee-right":"animate-marquee-left":k?"animate-marquee-down":"animate-marquee-up"),style:N,children:[jsxRuntime.jsx("div",{className:l("flex shrink-0",b?"flex-row":"flex-col"),style:{gap:d},children:t}),jsxRuntime.jsx("div",{className:l("flex shrink-0",b?"flex-row":"flex-col"),style:{gap:d,[b?"marginLeft":"marginTop"]:d},"aria-hidden":"true",children:t})]}),jsxRuntime.jsx("style",{dangerouslySetInnerHTML:{__html:`
|
|
2
|
-
@keyframes marquee-left {
|
|
3
|
-
from { transform: translateX(0); }
|
|
4
|
-
to { transform: translateX(calc(-50% - var(--marquee-gap) / 2)); }
|
|
5
|
-
}
|
|
6
|
-
@keyframes marquee-right {
|
|
7
|
-
from { transform: translateX(calc(-50% - var(--marquee-gap) / 2)); }
|
|
8
|
-
to { transform: translateX(0); }
|
|
9
|
-
}
|
|
10
|
-
@keyframes marquee-up {
|
|
11
|
-
from { transform: translateY(0); }
|
|
12
|
-
to { transform: translateY(calc(-50% - var(--marquee-gap) / 2)); }
|
|
13
|
-
}
|
|
14
|
-
@keyframes marquee-down {
|
|
15
|
-
from { transform: translateY(calc(-50% - var(--marquee-gap) / 2)); }
|
|
16
|
-
to { transform: translateY(0); }
|
|
17
|
-
}
|
|
18
|
-
.animate-marquee-left { animation: marquee-left var(--marquee-duration) linear infinite; }
|
|
19
|
-
.animate-marquee-right { animation: marquee-right var(--marquee-duration) linear infinite; }
|
|
20
|
-
.animate-marquee-up { animation: marquee-up var(--marquee-duration) linear infinite; }
|
|
21
|
-
.animate-marquee-down { animation: marquee-down var(--marquee-duration) linear infinite; }
|
|
22
|
-
.animate-pause { animation-play-state: paused !important; }
|
|
23
|
-
.marquee-gradient::before, .marquee-gradient::after {
|
|
24
|
-
content: "";
|
|
25
|
-
position: absolute;
|
|
26
|
-
top: 0;
|
|
27
|
-
bottom: 0;
|
|
28
|
-
width: var(--gradient-width);
|
|
29
|
-
z-index: 10;
|
|
30
|
-
pointer-events: none;
|
|
31
|
-
}
|
|
32
|
-
.marquee-gradient::before {
|
|
33
|
-
left: 0;
|
|
34
|
-
background: linear-gradient(to right, var(--gradient-color), transparent);
|
|
35
|
-
}
|
|
36
|
-
.marquee-gradient::after {
|
|
37
|
-
right: 0;
|
|
38
|
-
background: linear-gradient(to left, var(--gradient-color), transparent);
|
|
39
|
-
}
|
|
40
|
-
`}})]})});Xt.displayName="Marquee";var Kt=ee__default.default.forwardRef(({children:t,className:e,glowColor:r="rgba(120, 119, 198, 0.3)",glowSize:o=400,glowOpacity:a=.6,border:s=true,borderColor:d,style:v,...h},i)=>{let y=ee.useRef(null),[m,x]=ee.useState({x:0,y:0}),[f,c]=ee.useState(false),n=ee.useCallback(C=>{if(!y.current)return;let p=y.current.getBoundingClientRect();x({x:C.clientX-p.left,y:C.clientY-p.top});},[]),g={position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",opacity:f?a:0,background:`radial-gradient(${o}px circle at ${m.x}px ${m.y}px, ${r}, transparent 40%)`,transition:"opacity 0.3s ease",pointerEvents:"none"},u=s?{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",opacity:f?1:0,background:`radial-gradient(${o/2}px circle at ${m.x}px ${m.y}px, ${d||r}, transparent 40%)`,transition:"opacity 0.3s ease",pointerEvents:"none",mask:"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)",maskComposite:"exclude",WebkitMaskComposite:"xor",padding:"1px"}:{};return jsxRuntime.jsxs("div",{ref:vo(i,y),className:l("relative overflow-hidden rounded-xl bg-card border border-border p-6","transition-all duration-300",f&&"border-transparent",e),style:v,onMouseMove:n,onMouseEnter:()=>c(true),onMouseLeave:()=>c(false),...h,children:[jsxRuntime.jsx("div",{style:g,"aria-hidden":"true"}),s&&jsxRuntime.jsx("div",{style:u,"aria-hidden":"true"}),jsxRuntime.jsx("div",{className:"relative z-10",children:t})]})});Kt.displayName="GlowCard";function vo(...t){return e=>{t.forEach(r=>{typeof r=="function"?r(e):r&&typeof r=="object"&&(r.current=e);});}}var Zt=ee__default.default.forwardRef(({children:t,className:e,spotlightColor:r="rgba(255, 255, 255, 0.1)",spotlightSize:o=300,gradient:a=true,gradientFrom:s="rgba(255, 255, 255, 0.05)",gradientTo:d="transparent",style:v,...h},i)=>{let y=ee.useRef(null),[m,x]=ee.useState({x:0,y:0}),[f,c]=ee.useState(false),n=ee.useCallback(C=>{if(!y.current)return;let p=y.current.getBoundingClientRect();x({x:C.clientX-p.left,y:C.clientY-p.top});},[]),g={position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",opacity:f?1:0,background:`radial-gradient(${o}px circle at ${m.x}px ${m.y}px, ${r}, transparent 60%)`,transition:"opacity 0.4s ease",pointerEvents:"none"},u=a?{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",background:`linear-gradient(135deg, ${s} 0%, ${d} 100%)`,pointerEvents:"none"}:{};return jsxRuntime.jsxs("div",{ref:Co(i,y),className:l("relative overflow-hidden rounded-xl","bg-gray-900 border border-gray-800","transition-all duration-300",f&&"border-gray-700 shadow-2xl shadow-black/20",e),style:v,onMouseMove:n,onMouseEnter:()=>c(true),onMouseLeave:()=>c(false),...h,children:[a&&jsxRuntime.jsx("div",{style:u,"aria-hidden":"true"}),jsxRuntime.jsx("div",{style:g,"aria-hidden":"true"}),jsxRuntime.jsx("div",{className:"relative z-10",children:t})]})});Zt.displayName="SpotlightCard";function Co(...t){return e=>{t.forEach(r=>{typeof r=="function"?r(e):r&&typeof r=="object"&&(r.current=e);});}}var tr=ee__default.default.forwardRef(({text:t,className:e,revealColor:r="currentColor",hiddenColor:o="rgba(128, 128, 128, 0.3)",threshold:a=.5,byWord:s=false,byChar:d=false,style:v,...h},i)=>{let y=ee.useRef(null),[m,x]=ee.useState(0),f=No(),c=ee.useCallback(()=>{if(!y.current)return;let g=y.current.getBoundingClientRect(),u=window.innerHeight,C=u*(1-a),p=u*a,b=g.top+g.height/2,k=0;b<=C&&b>=p?k=(C-b)/(C-p):b<p&&(k=1),x(Math.max(0,Math.min(1,k)));},[a]);ee.useEffect(()=>{if(f){x(1);return}c();let g=()=>{requestAnimationFrame(c);};return window.addEventListener("scroll",g,{passive:true}),window.addEventListener("resize",g,{passive:true}),()=>{window.removeEventListener("scroll",g),window.removeEventListener("resize",g);}},[c,f]);let n=()=>{if(d){let g=t.split("");return g.map((u,C)=>{let p=m*g.length,b=C<p;return jsxRuntime.jsx("span",{style:{color:b?r:o,transition:"color 0.1s ease-out"},children:u},C)})}if(s){let g=t.split(" ");return g.map((u,C)=>{let p=m*g.length,b=C<p;return jsxRuntime.jsxs("span",{children:[jsxRuntime.jsx("span",{style:{color:b?r:o,transition:"color 0.15s ease-out"},children:u}),C<g.length-1&&" "]},C)})}return jsxRuntime.jsx("span",{style:{background:`linear-gradient(90deg, ${r} ${m*100}%, ${o} ${m*100}%)`,WebkitBackgroundClip:"text",WebkitTextFillColor:"transparent",backgroundClip:"text",transition:"background 0.1s ease-out"},children:t})};return jsxRuntime.jsx("div",{ref:Ro(i,y),className:l("font-medium",e),style:v,...h,children:n()})});tr.displayName="TextReveal";function No(){let[t,e]=ee.useState(false);return ee.useEffect(()=>{let r=window.matchMedia("(prefers-reduced-motion: reduce)");e(r.matches);let o=a=>{e(a.matches);};return r.addEventListener("change",o),()=>r.removeEventListener("change",o)},[]),t}function Ro(...t){return e=>{t.forEach(r=>{typeof r=="function"?r(e):r&&typeof r=="object"&&(r.current=e);});}}var Io=["#ff0080","#7928ca","#0070f3","#00dfd8"],nr=ee__default.default.forwardRef(({children:t,className:e,colors:r=Io,speed:o=3,blur:a=true,blurAmount:s=100,type:d="mesh",animate:v=true,style:h,...i},y)=>{let[m,x]=ee.useState(false),f=Bo(),c=v&&!f;ee.useEffect(()=>{x(true);},[]);let n=()=>{switch(d){case "linear":return jsxRuntime.jsx("div",{className:"absolute inset-0",style:{background:`linear-gradient(
|
|
41
|
-
${c?"var(--gradient-angle, 0deg)":"135deg"},
|
|
42
|
-
${r.join(", ")}
|
|
43
|
-
)`,animation:c?`gradient-rotate ${o}s linear infinite`:void 0}});case "radial":return jsxRuntime.jsx("div",{className:"absolute inset-0",style:{background:`radial-gradient(
|
|
44
|
-
circle at ${c?"var(--gradient-x, 50%) var(--gradient-y, 50%)":"50% 50%"},
|
|
45
|
-
${r.join(", ")}
|
|
46
|
-
)`,animation:c?`gradient-move ${o}s ease-in-out infinite`:void 0}});case "conic":return jsxRuntime.jsx("div",{className:"absolute inset-0",style:{background:`conic-gradient(
|
|
47
|
-
from ${c?"var(--gradient-angle, 0deg)":"0deg"} at 50% 50%,
|
|
48
|
-
${r.join(", ")},
|
|
49
|
-
${r[0]}
|
|
50
|
-
)`,animation:c?`gradient-spin ${o}s linear infinite`:void 0}});default:return jsxRuntime.jsx(jsxRuntime.Fragment,{children:r.map((g,u)=>{let C=360/r.length*u,p=o/r.length*u;return jsxRuntime.jsx("div",{className:"absolute rounded-full mix-blend-screen",style:{width:"60%",height:"60%",background:`radial-gradient(circle at center, ${g} 0%, transparent 70%)`,top:`${30+Math.sin(C*Math.PI/180)*20}%`,left:`${30+Math.cos(C*Math.PI/180)*20}%`,animation:c?`gradient-blob ${o}s ease-in-out infinite`:void 0,animationDelay:c?`${-p}s`:void 0,opacity:m?1:0,transition:"opacity 0.5s ease-out"}},u)})})}};return jsxRuntime.jsxs("div",{ref:y,className:l("relative overflow-hidden",e),style:h,...i,children:[jsxRuntime.jsx("div",{className:"absolute inset-0",style:{filter:a?`blur(${s}px)`:void 0},children:n()}),t&&jsxRuntime.jsx("div",{className:"relative z-10",children:t}),jsxRuntime.jsx("style",{dangerouslySetInnerHTML:{__html:`
|
|
51
|
-
@keyframes gradient-rotate {
|
|
52
|
-
0% { --gradient-angle: 0deg; }
|
|
53
|
-
100% { --gradient-angle: 360deg; }
|
|
54
|
-
}
|
|
55
|
-
@keyframes gradient-spin {
|
|
56
|
-
0% { transform: rotate(0deg); }
|
|
57
|
-
100% { transform: rotate(360deg); }
|
|
58
|
-
}
|
|
59
|
-
@keyframes gradient-move {
|
|
60
|
-
0%, 100% { --gradient-x: 0%; --gradient-y: 0%; }
|
|
61
|
-
25% { --gradient-x: 100%; --gradient-y: 0%; }
|
|
62
|
-
50% { --gradient-x: 100%; --gradient-y: 100%; }
|
|
63
|
-
75% { --gradient-x: 0%; --gradient-y: 100%; }
|
|
64
|
-
}
|
|
65
|
-
@keyframes gradient-blob {
|
|
66
|
-
0%, 100% { transform: translate(0, 0) scale(1); }
|
|
67
|
-
25% { transform: translate(20%, -20%) scale(1.1); }
|
|
68
|
-
50% { transform: translate(0, 20%) scale(0.9); }
|
|
69
|
-
75% { transform: translate(-20%, -10%) scale(1.05); }
|
|
70
|
-
}
|
|
71
|
-
`}})]})});nr.displayName="AnimatedGradient";function Bo(){let[t,e]=ee.useState(false);return ee.useEffect(()=>{let r=window.matchMedia("(prefers-reduced-motion: reduce)");e(r.matches);let o=a=>{e(a.matches);};return r.addEventListener("change",o),()=>r.removeEventListener("change",o)},[]),t}var sr=ee__default.default.forwardRef(({children:t,className:e,maxTilt:r=15,perspective:o=1e3,scale:a=1.02,speed:s=400,glare:d=true,maxGlare:v=.3,reset:h=true,style:i,...y},m)=>{let x=ee.useRef(null),[f,c]=ee.useState({rotateX:0,rotateY:0,scale:1}),[n,g]=ee.useState({x:50,y:50}),[u,C]=ee.useState(false),p=ee.useCallback(M=>{if(!x.current)return;let R=x.current.getBoundingClientRect(),T=R.left+R.width/2,I=R.top+R.height/2,V=M.clientX-T,z=M.clientY-I,$=V/(R.width/2)*r,Z=-(z/(R.height/2))*r;c({rotateX:Z,rotateY:$,scale:a});let J=(M.clientX-R.left)/R.width*100,D=(M.clientY-R.top)/R.height*100;g({x:J,y:D});},[r,a]),b=()=>{C(true);},k=()=>{C(false),h&&c({rotateX:0,rotateY:0,scale:1});},w={...i,perspective:`${o}px`},N={transform:`rotateX(${f.rotateX}deg) rotateY(${f.rotateY}deg) scale(${f.scale})`,transition:u?"none":`transform ${s}ms ease-out`,transformStyle:"preserve-3d"},B={position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:"inherit",background:`linear-gradient(
|
|
72
|
-
${Math.atan2(n.y-50,n.x-50)*(180/Math.PI)+90}deg,
|
|
73
|
-
rgba(255, 255, 255, ${u?v:0}) 0%,
|
|
74
|
-
transparent 80%
|
|
75
|
-
)`,transition:u?"opacity 0.1s ease-out":`opacity ${s}ms ease-out`,pointerEvents:"none",opacity:u?1:0};return jsxRuntime.jsx("div",{ref:Fo(m,x),className:l("relative",e),style:w,onMouseMove:p,onMouseEnter:b,onMouseLeave:k,...y,children:jsxRuntime.jsxs("div",{style:N,className:"relative",children:[t,d&&jsxRuntime.jsx("div",{style:B,"aria-hidden":"true"})]})})});sr.displayName="TiltCard";function Fo(...t){return e=>{t.forEach(r=>{typeof r=="function"?r(e):r&&typeof r=="object"&&(r.current=e);});}}var lr=ee__default.default.forwardRef(({src:t,type:e="native",poster:r,autoPlay:o=true,loop:a=true,muted:s=true,controls:d=false,objectFit:v="cover",overlay:h=true,overlayColor:i="rgba(0, 0, 0, 0.4)",gradient:y=false,gradientDirection:m="bottom",playbackRate:x=1,fadeIn:f=true,children:c,className:n,style:g,...u},C)=>{let p=ee.useRef(null),[b,k]=ee.useState(false),[w,N]=ee.useState(false);ee.useEffect(()=>{e==="native"&&p.current&&(p.current.playbackRate=x);},[x,e]);let B=()=>{k(true);},M=()=>{N(true);},R=$=>{let Z=new URLSearchParams({autoplay:o?"1":"0",mute:s?"1":"0",loop:a?"1":"0",controls:d?"1":"0",playlist:$,modestbranding:"1",rel:"0",showinfo:"0",iv_load_policy:"3",disablekb:"1",enablejsapi:"1",playsinline:"1"});return `https://www.youtube.com/embed/${$}?${Z.toString()}`},T=$=>{let Z=new URLSearchParams({autoplay:o?"1":"0",muted:s?"1":"0",loop:a?"1":"0",controls:d?"1":"0",background:"1",quality:"auto",dnt:"1"});return `https://player.vimeo.com/video/${$}?${Z.toString()}`},I=()=>{let $={cover:"object-cover",contain:"object-contain",fill:"object-fill"}[v];switch(e){case "youtube":return jsxRuntime.jsx("iframe",{src:R(t),className:l("absolute inset-0 w-full h-full pointer-events-none","scale-[1.2]"),style:{opacity:b||!f?1:0,transition:f?"opacity 0.8s ease-out":void 0},allow:"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:true,onLoad:()=>k(true),title:"YouTube video background"});case "vimeo":return jsxRuntime.jsx("iframe",{src:T(t),className:"absolute inset-0 w-full h-full pointer-events-none",style:{opacity:b||!f?1:0,transition:f?"opacity 0.8s ease-out":void 0},allow:"autoplay; fullscreen; picture-in-picture",allowFullScreen:true,onLoad:()=>k(true),title:"Vimeo video background"});default:return jsxRuntime.jsx("video",{ref:p,src:t,poster:r,autoPlay:o,loop:a,muted:s,controls:d,playsInline:true,className:l("absolute inset-0 w-full h-full",$),style:{opacity:w||!f?1:0,transition:f?"opacity 0.8s ease-out":void 0},onLoadedData:B,onPlaying:M})}},V=()=>{if(!y)return null;let $=[];return (m==="top"||m==="both")&&$.push(jsxRuntime.jsx("div",{className:"absolute top-0 left-0 right-0 h-1/3",style:{background:`linear-gradient(to bottom, ${i}, transparent)`},"aria-hidden":"true"},"top")),(m==="bottom"||m==="both")&&$.push(jsxRuntime.jsx("div",{className:"absolute bottom-0 left-0 right-0 h-1/3",style:{background:`linear-gradient(to top, ${i}, transparent)`},"aria-hidden":"true"},"bottom")),jsxRuntime.jsx(jsxRuntime.Fragment,{children:$})},z=n&&/\b(fixed|absolute|sticky)\b/.test(n);return jsxRuntime.jsxs("div",{ref:C,className:l("overflow-hidden",!z&&"relative",n),style:g,...u,children:[r&&f&&!b&&!w&&jsxRuntime.jsx("div",{className:"absolute inset-0 bg-cover bg-center",style:{backgroundImage:`url(${r})`},"aria-hidden":"true"}),I(),h&&!y&&jsxRuntime.jsx("div",{className:"absolute inset-0",style:{backgroundColor:i},"aria-hidden":"true"}),V(),c&&jsxRuntime.jsx("div",{className:"relative z-10 h-full",children:c})]})});lr.displayName="VideoBackground";var cr=ee__default.default.forwardRef(({children:t,autoPlay:e=false,interval:r=5e3,loop:o=true,pauseOnHover:a=true,indicators:s="dots",indicatorPosition:d="bottom",showArrows:v=true,arrowPosition:h="inside",transition:i="slide",transitionDuration:y=500,onSlideChange:m,showPlayPause:x=false,playPausePosition:f="right",className:c,style:n,...g},u)=>{let C=()=>i==="slide"&&o?1:0,[p,b]=ee.useState(C),[k,w]=ee.useState(!e),[N,B]=ee.useState(false),[M,R]=ee.useState(false),[T,I]=ee.useState(false),[V,z]=ee.useState(null),[$,Z]=ee.useState(null),J=ee.useRef(null),D=ee__default.default.Children.count(t),te=jo(),ne=ee.useCallback(L=>i!=="slide"||!o?L:L===0?D-1:L===D+1?0:L-1,[o,D,i]),W=ee.useCallback(L=>{if(M)return;let E=L;if(o?i!=="slide"&&(L<0?E=D-1:L>=D&&(E=0)):E=Math.max(0,Math.min(L,D-1)),E!==p){R(true),b(E);let A=o&&i==="slide"?E===0?D-1:E===D+1?0:E-1:E;m==null||m(A),setTimeout(()=>R(false),y);}},[p,D,o,M,y,i,m]);ee.useEffect(()=>{!o||M||i!=="slide"||(p===0?setTimeout(()=>{I(true),b(D),setTimeout(()=>I(false),50);},y):p===D+1&&setTimeout(()=>{I(true),b(1),setTimeout(()=>I(false),50);},y));},[p,D,o,M,y,i]);let re=ee.useCallback(()=>{W(p+1);},[p,W]),ve=ee.useCallback(()=>{W(p-1);},[p,W]),We=ee.useCallback(()=>{B(L=>!L);},[]);ee.useCallback(()=>{B(false);},[]);ee.useCallback(()=>{B(true);},[]);ee.useEffect(()=>{if(!e||k||N||te)return;let L=setInterval(re,r);return ()=>clearInterval(L)},[e,r,k,N,re,te]);let Ge=L=>{z(L.targetTouches[0].clientX);},_e=L=>{Z(L.targetTouches[0].clientX);},je=()=>{if(!V||!$)return;let L=V-$;Math.abs(L)>=50&&(L>0?re():ve()),z(null),Z(null);};ee.useEffect(()=>{let L=A=>{A.key==="ArrowLeft"?ve():A.key==="ArrowRight"&&re();},E=J.current;return E==null||E.addEventListener("keydown",L),()=>E==null?void 0:E.removeEventListener("keydown",L)},[re,ve]);let it=()=>{let L=te||T?0:y,E=ne(p);switch(i){case "fade":return ee__default.default.Children.map(t,(A,q)=>jsxRuntime.jsx("div",{className:l("absolute inset-0 w-full h-full",q===E?"z-10":"z-0"),style:{opacity:q===E?1:0,transition:`opacity ${L}ms ease-in-out`},children:A},q));case "scale":return ee__default.default.Children.map(t,(A,q)=>jsxRuntime.jsx("div",{className:l("absolute inset-0 w-full h-full",q===E?"z-10":"z-0"),style:{opacity:q===E?1:0,transform:`scale(${q===E?1:.9})`,transition:`opacity ${L}ms ease-in-out, transform ${L}ms ease-in-out`},children:A},q));default:{let A=ee__default.default.Children.toArray(t);return (o?[A[A.length-1],...A,A[0]]:A).map((j,oe)=>jsxRuntime.jsx("div",{className:"absolute inset-0 w-full h-full",style:{transform:`translateX(${(oe-p)*100}%)`,transition:T?"none":`transform ${L}ms ease-in-out`},children:j},oe))}}},Ne=()=>{if(s==="none")return null;let L=d.includes("inside"),E=d.includes("top"),A=ne(p),q=l("flex items-center justify-center gap-2",L?l("absolute left-1/2 -translate-x-1/2 z-20",E?"top-4":"bottom-4"):l("mt-4",E&&"order-first mb-4 mt-0")),j=oe=>{W(o&&i==="slide"?oe+1:oe);};return jsxRuntime.jsx("div",{className:q,role:"tablist",children:Array.from({length:D},(oe,K)=>{let ie=K===A;switch(s){case "bars":return jsxRuntime.jsx("button",{onClick:()=>j(K),className:l("h-1 rounded-full transition-all duration-300",ie?"w-8 bg-white":"w-4 bg-white/50 hover:bg-white/70"),role:"tab","aria-selected":ie,"aria-label":`\uC2AC\uB77C\uC774\uB4DC ${K+1}`},K);case "numbers":return jsxRuntime.jsx("button",{onClick:()=>j(K),className:l("w-8 h-8 rounded-full text-sm font-medium transition-all duration-300",ie?"bg-white text-gray-900":"bg-white/30 text-white hover:bg-white/50"),role:"tab","aria-selected":ie,"aria-label":`\uC2AC\uB77C\uC774\uB4DC ${K+1}`,children:K+1},K);default:return jsxRuntime.jsx("button",{onClick:()=>j(K),className:l("w-2.5 h-2.5 rounded-full transition-all duration-300",ie?"bg-white scale-125":"bg-white/50 hover:bg-white/70"),role:"tab","aria-selected":ie,"aria-label":`\uC2AC\uB77C\uC774\uB4DC ${K+1}`},K)}})})},Xe=()=>{if(!x||!e)return null;let L=!N;return jsxRuntime.jsx("button",{onClick:We,className:l("absolute bottom-4 z-20","w-8 h-8 rounded-full flex items-center justify-center","bg-white/80 hover:bg-white text-gray-800","transition-all duration-200","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-white",{left:"left-4",center:"left-1/2 -translate-x-1/2",right:"right-4"}[f]),"aria-label":L?"\uC77C\uC2DC\uC815\uC9C0":"\uC7AC\uC0DD",children:L?jsxRuntime.jsx(Qo,{className:"w-4 h-4"}):jsxRuntime.jsx(Ko,{className:"w-4 h-4"})})},Ye=()=>{if(!v||h==="hidden")return null;let L=o||p>0,E=o||p<D-1,A=l("absolute top-1/2 -translate-y-1/2 z-20","w-10 h-10 rounded-full flex items-center justify-center","bg-white/80 hover:bg-white text-gray-800","transition-all duration-200","disabled:opacity-30 disabled:cursor-not-allowed","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-white"),q=h==="outside"?"-left-14":"left-4",j=h==="outside"?"-right-14":"right-4";return jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("button",{onClick:ve,disabled:!L,className:l(A,q),"aria-label":"\uC774\uC804 \uC2AC\uB77C\uC774\uB4DC",children:jsxRuntime.jsx(Xo,{className:"w-5 h-5"})}),jsxRuntime.jsx("button",{onClick:re,disabled:!E,className:l(A,j),"aria-label":"\uB2E4\uC74C \uC2AC\uB77C\uC774\uB4DC",children:jsxRuntime.jsx(Yo,{className:"w-5 h-5"})})]})};return jsxRuntime.jsxs("div",{ref:u,className:l("flex flex-col w-full h-full",h==="outside"&&"px-16",c),style:n,...g,children:[jsxRuntime.jsxs("div",{ref:J,className:"relative overflow-hidden w-full flex-1",onMouseEnter:()=>a&&w(true),onMouseLeave:()=>a&&w(false),onTouchStart:Ge,onTouchMove:_e,onTouchEnd:je,tabIndex:0,role:"region","aria-roledescription":"carousel","aria-label":"\uC774\uBBF8\uC9C0 \uC2AC\uB77C\uC774\uB354",children:[it(),Ye(),Xe(),d.includes("inside")&&Ne()]}),!d.includes("inside")&&Ne()]})});cr.displayName="Carousel";function jo(){let[t,e]=ee.useState(false);return ee.useEffect(()=>{let r=window.matchMedia("(prefers-reduced-motion: reduce)");e(r.matches);let o=a=>{e(a.matches);};return r.addEventListener("change",o),()=>r.removeEventListener("change",o)},[]),t}function Xo({className:t}){return jsxRuntime.jsx("svg",{className:t,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})})}function Yo({className:t}){return jsxRuntime.jsx("svg",{className:t,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})}function Ko({className:t}){return jsxRuntime.jsx("svg",{className:t,fill:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{d:"M8 5v14l11-7z"})})}function Qo({className:t}){return jsxRuntime.jsx("svg",{className:t,fill:"currentColor",viewBox:"0 0 24 24",children:jsxRuntime.jsx("path",{d:"M6 4h4v16H6V4zm8 0h4v16h-4V4z"})})}var he=ee__default.default.forwardRef(({className:t,value:e,max:r=100,size:o="md",color:a="blue",...s},d)=>{let v={sm:"h-2",md:"h-3",lg:"h-4"},h={blue:"bg-indigo-500",green:"bg-green-500",yellow:"bg-yellow-500",red:"bg-red-500",purple:"bg-purple-500",orange:"bg-orange-500",indigo:"bg-indigo-500",pink:"bg-pink-500",gray:"bg-gray-500"},i=Math.min(Math.max(e/r*100,0),100);return jsxRuntime.jsx("div",{ref:d,className:l("w-full bg-muted rounded-full",v[o],t),...s,children:jsxRuntime.jsx("div",{className:l("h-full rounded-full transition-all duration-300",h[a]||h.blue),style:{width:`${i}%`}})})});he.displayName="EmotionMeter";var Ze=ee__default.default.forwardRef(({className:t,emotion:e,isSelected:r=false,size:o="md",...a},s)=>jsxRuntime.jsx("button",{ref:s,className:l("rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-1 focus:ring-ring",{sm:"w-8 h-8 text-sm",md:"w-12 h-12 text-lg",lg:"w-16 h-16 text-xl"}[o],r?"border-indigo-500 bg-indigo-50 dark:bg-indigo-900/20":"border-border bg-background",t),...a,children:e}));Ze.displayName="EmotionButton";var on=[{key:"joy",label:"\uAE30\uC068",icon:"smile",color:"yellow"},{key:"sadness",label:"\uC2AC\uD514",icon:"frown",color:"blue"},{key:"anger",label:"\uD654\uB0A8",icon:"angry",color:"red"},{key:"calm",label:"\uD3C9\uC628",icon:"heart",color:"green"},{key:"excitement",label:"\uC124\uB818",icon:"star",color:"pink"},{key:"worry",label:"\uAC71\uC815",icon:"meh",color:"gray"},{key:"gratitude",label:"\uAC10\uC0AC",icon:"heart",color:"purple"},{key:"loneliness",label:"\uC678\uB85C\uC6C0",icon:"user",color:"indigo"}],ur=ee__default.default.forwardRef(({className:t,selectedEmotion:e,onEmotionSelect:r,layout:o="grid",showIntensity:a=false,intensity:s=50,onIntensityChange:d,emotions:v=on,size:h="md",variant:i="button",...y},m)=>{let x=n=>{r==null||r(n);},f=n=>{let g=e===n.key;return i==="button"?jsxRuntime.jsx(Ze,{emotion:n.key,isSelected:g,size:h,onClick:()=>x(n.key),className:l("transition-all duration-200",g&&"ring-1 ring-offset-2 ring-primary"),children:n.label},n.key):i==="card"?jsxRuntime.jsx("div",{className:l("p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md",g?"border-primary bg-primary/5":"border-border hover:border-primary/50"),onClick:()=>x(n.key),children:jsxRuntime.jsxs("div",{className:"flex items-center space-x-3",children:[jsxRuntime.jsx("div",{className:l("w-8 h-8 rounded-full flex items-center justify-center",g?"bg-primary text-primary-foreground":"bg-muted"),children:n.icon&&jsxRuntime.jsxs("span",{className:"text-lg",children:[n.icon==="smile"&&"\u{1F60A}",n.icon==="frown"&&"\u{1F622}",n.icon==="angry"&&"\u{1F620}",n.icon==="heart"&&"\u2764\uFE0F",n.icon==="star"&&"\u2B50",n.icon==="meh"&&"\u{1F610}",n.icon==="user"&&"\u{1F464}"]})}),jsxRuntime.jsx("span",{className:"font-medium truncate max-w-[120px]",children:n.label})]})},n.key):i==="chip"?jsxRuntime.jsx("div",{className:l("px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium",g?"bg-primary text-primary-foreground":"bg-muted hover:bg-muted/80"),onClick:()=>x(n.key),children:jsxRuntime.jsx("span",{className:"truncate max-w-[100px]",children:n.label})},n.key):null},c={grid:"grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 gap-2 md:gap-3",list:"space-y-2",compact:"flex flex-wrap gap-1"};return jsxRuntime.jsxs("div",{ref:m,className:l("space-y-4",t),...y,children:[jsxRuntime.jsx("div",{className:c[o],children:v.map(f)}),a&&e&&jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground",children:[s,"%"]})]}),jsxRuntime.jsx("input",{type:"range",min:"0",max:"100",value:s,onChange:n=>d==null?void 0:d(Number(n.target.value)),className:"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"}),jsxRuntime.jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[jsxRuntime.jsx("span",{children:"\uC57D\uD568"}),jsxRuntime.jsx("span",{children:"\uBCF4\uD1B5"}),jsxRuntime.jsx("span",{children:"\uAC15\uD568"})]})]}),e&&a&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(he,{value:s,size:"md",color:"blue"})})]})});ur.displayName="EmotionSelector";var an=classVarianceAuthority.cva("rounded-lg",{variants:{variant:{default:"bg-card text-card-foreground border border-border",outline:"bg-transparent border-2 border-border",elevated:"bg-card text-card-foreground shadow-lg border border-border"},shadow:{none:"shadow-none",sm:"shadow-sm",md:"shadow-md",lg:"shadow-lg"},padding:{none:"",sm:"p-3",md:"p-4",lg:"p-6"}},defaultVariants:{variant:"default",padding:"none"}}),yt=ee__default.default.forwardRef(({className:t,variant:e="default",shadow:r,padding:o="none",hoverable:a,...s},d)=>jsxRuntime.jsx("div",{ref:d,className:l(an({variant:e,shadow:r,padding:o}),"transition-[transform,box-shadow,border-color] duration-200 ease-out",a&&"hover:-translate-y-0.5 hover:shadow-lg hover:border-primary/30 cursor-pointer active:translate-y-0 active:shadow-md",t),...s}));yt.displayName="Card";var xt=ee__default.default.forwardRef(({className:t,...e},r)=>jsxRuntime.jsx("div",{ref:r,className:l("flex flex-col space-y-1 p-3",t),...e}));xt.displayName="CardHeader";var wt=ee__default.default.forwardRef(({className:t,...e},r)=>jsxRuntime.jsx("h3",{ref:r,className:l("text-base md:text-lg font-semibold leading-tight tracking-tight",t),...e}));wt.displayName="CardTitle";var Tt=ee__default.default.forwardRef(({className:t,...e},r)=>jsxRuntime.jsx("p",{ref:r,className:l("text-sm text-muted-foreground",t),...e}));Tt.displayName="CardDescription";var Ct=ee__default.default.forwardRef(({className:t,...e},r)=>jsxRuntime.jsx("div",{ref:r,className:l("px-3 pb-3",t),...e}));Ct.displayName="CardContent";var sn=ee__default.default.forwardRef(({className:t,...e},r)=>jsxRuntime.jsx("div",{ref:r,className:l("flex items-center px-3 pb-3",t),...e}));sn.displayName="CardFooter";var cn=classVarianceAuthority.cva("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors duration-200 ease-in-out focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-2",{variants:{variant:{default:"bg-[var(--badge-default-bg)] text-[var(--badge-default-text)] hover:opacity-80",secondary:"bg-[var(--badge-secondary-bg)] text-[var(--badge-secondary-text)] hover:opacity-80",destructive:"bg-[var(--badge-destructive-bg)] text-slate-50 hover:opacity-80",error:"bg-[var(--badge-destructive-bg)] text-slate-50 hover:opacity-80",outline:"bg-transparent text-[var(--badge-outline-text)] border border-[var(--badge-outline-border)] hover:bg-[var(--badge-outline-hover-bg)]",glass:"bg-[var(--badge-glass-bg)] backdrop-blur-sm border border-[var(--badge-glass-border)] text-[var(--badge-glass-text)] hover:opacity-80"}},defaultVariants:{variant:"default"}}),Se=ee__default.default.memo(ee__default.default.forwardRef(({className:t,variant:e="default",...r},o)=>jsxRuntime.jsx("div",{ref:o,className:l(cn({variant:e}),t),...r})));Se.displayName="Badge";var gr=ee__default.default.forwardRef(({className:t,primaryEmotion:e,emotionDistribution:r=[],keywords:o=[],intensity:a=50,positivity:s=70,energy:d=60,showMeter:v=true,showDistribution:h=true,showKeywords:i=true,showMetrics:y=true,layout:m="detailed",...x},f)=>{let c=u=>u<30?"\uC57D\uD568":u<70?"\uBCF4\uD1B5":"\uAC15\uD568",n=u=>u<30?"\uBD80\uC815\uC801":u<70?"\uC911\uB9BD\uC801":"\uAE0D\uC815\uC801",g=u=>u<30?"\uB0AE\uC74C":u<70?"\uBCF4\uD1B5":"\uB192\uC74C";return m==="compact"?jsxRuntime.jsxs("div",{ref:f,className:l("space-y-3",t),...x,children:[e&&jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxRuntime.jsxs("div",{className:"flex items-center space-x-2",children:[jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground",children:[e.name," (",e.intensity,"%)"]}),v&&jsxRuntime.jsx(he,{value:e.intensity,size:"sm",color:"blue"})]})]}),y&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:c(a)})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131:"}),jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:n(s)})]}),jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsxRuntime.jsx("span",{className:"text-sm text-muted-foreground",children:g(d)})]})]}),i&&o.length>0&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:o.map(u=>jsxRuntime.jsx(Se,{variant:"secondary",className:"text-xs",children:u},u))})]})]}):m==="card"?jsxRuntime.jsxs(yt,{ref:f,className:l("",t),...x,children:[jsxRuntime.jsxs(xt,{children:[jsxRuntime.jsxs(wt,{className:"flex items-center",children:[jsxRuntime.jsx("span",{className:"text-2xl mr-2",children:"\u2728"}),"AI \uBD84\uC11D"]}),jsxRuntime.jsx(Tt,{children:"\uAC10\uC815 \uBD84\uC11D \uACB0\uACFC"})]}),jsxRuntime.jsxs(Ct,{className:"space-y-4",children:[e&&jsxRuntime.jsxs("div",{className:"space-y-3",children:[jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxRuntime.jsxs("span",{className:"ml-2 text-muted-foreground",children:[e.name," (",e.intensity,"%)"]})]}),v&&jsxRuntime.jsx("div",{className:"flex justify-center",children:jsxRuntime.jsx(he,{value:e.intensity,size:"md",color:"blue"})})]}),y&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsxRuntime.jsx("span",{className:"ml-2 text-muted-foreground",children:c(a)})]}),jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uAE0D\uC815\uC131:"}),jsxRuntime.jsx("span",{className:"ml-2 text-muted-foreground",children:n(s)})]}),jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsxRuntime.jsx("span",{className:"ml-2 text-muted-foreground",children:g(d)})]})]}),i&&o.length>0&&jsxRuntime.jsxs("div",{className:"text-sm",children:[jsxRuntime.jsx("span",{className:"font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:o.map(u=>jsxRuntime.jsx(Se,{variant:"secondary",className:"text-xs",children:u},u))})]})]})]}):jsxRuntime.jsxs("div",{ref:f,className:l("space-y-6",t),...x,children:[e&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uC8FC\uC694 \uAC10\uC815"}),jsxRuntime.jsxs("div",{className:"flex items-center space-x-4",children:[jsxRuntime.jsxs("div",{className:"text-center",children:[jsxRuntime.jsx("div",{className:"text-2xl font-bold text-primary",children:e.name}),jsxRuntime.jsxs("div",{className:"text-sm text-muted-foreground",children:[e.intensity,"% \uAC15\uB3C4"]})]}),v&&jsxRuntime.jsx(he,{value:e.intensity,size:"lg",color:"blue"})]})]}),h&&r.length>0&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uBD84\uD3EC"}),jsxRuntime.jsx("div",{className:"space-y-3",children:r.map((u,C)=>jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between",children:[jsxRuntime.jsx("span",{className:"text-sm font-medium",children:u.emotion}),jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground",children:[u.percentage,"%"]})]}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:`${u.color} h-2 rounded-full transition-all duration-300`,style:{width:`${u.percentage}%`}})})]},C))})]}),y&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uBD84\uC11D \uC9C0\uD45C"}),jsxRuntime.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxRuntime.jsx("div",{className:"text-2xl font-bold text-primary",children:c(a)}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:"bg-primary h-2 rounded-full transition-all duration-300",style:{width:`${a}%`}})})]}),jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131"}),jsxRuntime.jsx("div",{className:"text-2xl font-bold text-green-600",children:n(s)}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:"bg-green-500 h-2 rounded-full transition-all duration-300",style:{width:`${s}%`}})})]}),jsxRuntime.jsxs("div",{className:"space-y-2",children:[jsxRuntime.jsx("div",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0"}),jsxRuntime.jsx("div",{className:"text-2xl font-bold text-orange-600",children:g(d)}),jsxRuntime.jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsxRuntime.jsx("div",{className:"bg-orange-500 h-2 rounded-full transition-all duration-300",style:{width:`${d}%`}})})]})]})]}),i&&o.length>0&&jsxRuntime.jsxs("div",{className:"space-y-4",children:[jsxRuntime.jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uD0A4\uC6CC\uB4DC"}),jsxRuntime.jsx("div",{className:"flex flex-wrap gap-2",children:o.map(u=>jsxRuntime.jsx(Se,{variant:"outline",className:"text-sm",children:u},u))})]})]})});gr.displayName="EmotionAnalysis";function kt(t){return t.toLowerCase().replace(/[^a-z0-9가-힣ぁ-んァ-ン一-龯_.~\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-+|-+$/g,"").trim()}function pn(t){return !t||t.length===0||t.length>200?false:/^[a-z0-9가-힣ぁ-んァ-ン一-龯_.~-]+$/.test(t)}function Et(t){return t.toLowerCase().replace(/\s+/g,"-").replace(/[^a-z0-9가-힣ぁ-んァ-ン一-龯_.~-]/g,"").replace(/-+/g,"-").replace(/^-+|-+$/g,"")}var fn={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"},hn={enableSlug:true,enableTags:true,enableCoverImage:true,enablePublishDate:true,enableExcerpt:true,enableTranslation:true,enablePreview:true,enableMarkdownToolbar:true,enableAutoSave:true,enableExpiresAt:false},bn=[{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 Mt(t){let e={};return t.forEach(r=>{e[r.key]="";}),e}function vn(t,e){var r,o,a,s,d,v,h,i;return {slug:(r=e==null?void 0:e.slug)!=null?r:"",title:(o=e==null?void 0:e.title)!=null?o:Mt(t),excerpt:(a=e==null?void 0:e.excerpt)!=null?a:Mt(t),content:(s=e==null?void 0:e.content)!=null?s:Mt(t),tags:(d=e==null?void 0:e.tags)!=null?d:[],coverImage:(v=e==null?void 0:e.coverImage)!=null?v:"",publishedAt:(h=e==null?void 0:e.publishedAt)!=null?h:null,expiresAt:(i=e==null?void 0:e.expiresAt)!=null?i:null}}var br=ee.createContext(null);function U(){let t=ee.useContext(br);if(!t)throw new Error("useBlogEditor must be used within a BlogEditorProvider");return t}function Nt({children:t,initialData:e,isEditMode:r=false,languages:o=bn,defaultLanguage:a,labels:s,callbacks:d,features:v,variant:h="default",autoSaveKey:i,autoSaveInterval:y=3e3}){var Ne,Xe,Ye,L;let m=(L=(Ye=(Ne=o.find(E=>E.isPrimary))==null?void 0:Ne.key)!=null?Ye:(Xe=o[0])==null?void 0:Xe.key)!=null?L:"ko",x=a!=null?a:m,f=ee.useMemo(()=>({...fn,...s}),[s]),c=ee.useMemo(()=>({...hn,...v}),[v]),[n,g]=ee.useState(()=>vn(o,e)),[u,C]=ee.useState(x),[p,b]=ee.useState(false),[k,w]=ee.useState(false),[N,B]=ee.useState(false),[M,R]=ee.useState(false),[T,I]=ee.useState(null),[V,z]=ee.useState(false),[$,Z]=ee.useState(r||!!(e!=null&&e.slug)),[J,D]=ee.useState("idle"),te=ee.useRef(null),ne=ee.useRef(true),W=i||(r?null:"blog-editor-draft");ee.useEffect(()=>{if(!(!c.enableAutoSave||!W||r))try{let E=localStorage.getItem(W);if(E){let A=JSON.parse(E);g(A);}}catch{}},[]),ee.useEffect(()=>{if(!(!c.enableAutoSave||!W)){if(ne.current){ne.current=false;return}return te.current&&clearTimeout(te.current),D("saving"),te.current=setTimeout(()=>{try{localStorage.setItem(W,JSON.stringify(n)),D("saved"),setTimeout(()=>D("idle"),2e3);}catch{D("idle");}},y),()=>{te.current&&clearTimeout(te.current);}}},[n,c.enableAutoSave,W,y]);let re=ee.useCallback(()=>{if(W)try{localStorage.removeItem(W);}catch{}},[W]),ve=ee.useCallback((E,A)=>{g(q=>({...q,[E]:A}));},[]),We=ee.useCallback((E,A,q)=>{g(j=>({...j,[E]:{...j[E],[A]:q}}));},[]),at=ee.useCallback(E=>kt(E),[]),st=ee.useCallback(async E=>{let A=n.title[m],q=n.content[m];if(!A||!q){I(f.requiredFields);return}if(c.enableSlug&&!n.slug){I(f.requiredFields);return}w(true),I(null);try{await d.onSave(n,E),re();}catch{I(f.saveError);}finally{w(false);}},[n,m,f,c,d,re]),Ge=ee.useCallback(async()=>{if(!d.onTranslate)return;let E=n.title[m],A=n.content[m],q=n.excerpt[m];if(!E||!A){I(f.requiredFields);return}B(true),I(null),z(false);try{let j=await d.onTranslate({sourceLanguage:m,title:E,content:A,excerpt:q||void 0});g(oe=>{let K={...oe.title},ie={...oe.content},Ft={...oe.excerpt};return Object.keys(j).forEach(Re=>{if(Re!==m){let lt=j[Re];if(typeof lt=="object"&<!==null){let Ce=lt;Ce.title&&(K[Re]=Ce.title),Ce.content&&(ie[Re]=Ce.content),Ce.excerpt&&(Ft[Re]=Ce.excerpt);}}}),{...oe,title:K,content:ie,excerpt:Ft}}),z(!0),setTimeout(()=>z(!1),3e3);}catch{I(f.translateError);}finally{B(false);}},[n,m,f,d]),_e=ee.useCallback(async E=>{if(!d.onUploadImage)return null;R(true),I(null);try{return await d.onUploadImage(E)}catch{return I("\uC774\uBBF8\uC9C0 \uC5C5\uB85C\uB4DC \uC2E4\uD328"),null}finally{R(false);}},[d]),je=ee.useCallback(()=>{var E;(E=d.onCancel)==null||E.call(d);},[d]),it=ee.useMemo(()=>({formData:n,activeLanguage:u,showPreview:p,submitting:k,translating:N,uploading:M,error:T,translateSuccess:V,autoSaveStatus:J,languages:o,features:c,labels:f,variant:h,isEditMode:r,setActiveLanguage:C,setShowPreview:b,updateField:ve,updateMultilingualField:We,handleSave:st,handleTranslate:Ge,handleUploadImage:_e,handleCancel:je,setError:I,generateSlug:at,slugManuallyEdited:$,setSlugManuallyEdited:Z}),[n,u,p,k,N,M,T,V,J,o,c,f,h,r,ve,We,st,Ge,_e,je,at,$,Z]);return jsxRuntime.jsx(br.Provider,{value:it,children:t})}var kr={home:ssr.House,arrowLeft:ssr.ArrowLeft,arrowRight:ssr.ArrowRight,arrowUp:ssr.ArrowUp,arrowDown:ssr.ArrowDown,menu:ssr.List,close:ssr.X,search:ssr.MagnifyingGlass,settings:ssr.Gear,externalLink:ssr.ArrowSquareOut,chevronLeft:ssr.CaretLeft,chevronRight:ssr.CaretRight,chevronDown:ssr.CaretDown,chevronUp:ssr.CaretUp,edit:ssr.Pencil,delete:ssr.Trash,add:ssr.Plus,remove:ssr.Minus,download:ssr.Download,upload:ssr.Upload,refresh:ssr.ArrowClockwise,save:ssr.FloppyDisk,copy:ssr.Copy,loader:ssr.SpinnerGap,success:ssr.CheckCircle,error:ssr.XCircle,alertCircle:ssr.WarningCircle,warning:ssr.WarningCircle,info:ssr.Info,check:ssr.Check,circle:ssr.Circle,helpCircle:ssr.Question,user:ssr.User,users:ssr.Users,userPlus:ssr.UserPlus,logIn:ssr.SignIn,logOut:ssr.SignOut,eye:ssr.Eye,eyeOff:ssr.EyeSlash,chart:ssr.ChartBar,barChart:ssr.ChartBar,trendingUp:ssr.TrendUp,activity:ssr.Pulse,database:ssr.Database,zap:ssr.Lightning,fileText:ssr.FileText,file:ssr.File,folder:ssr.Folder,book:ssr.Book,bookOpen:ssr.BookOpen,mail:ssr.Envelope,message:ssr.ChatCircle,phone:ssr.Phone,image:ssr.Image,video:ssr.Video,camera:ssr.Camera,smile:ssr.Smiley,frown:ssr.SmileySad,meh:ssr.SmileyMeh,lock:ssr.Lock,unlock:ssr.LockOpen,shield:ssr.Shield,wallet:ssr.Wallet,key:ssr.Key,clock:ssr.Clock,calendar:ssr.Calendar,calendarPlus:ssr.CalendarPlus,bell:ssr.Bell,heart:ssr.Heart,star:ssr.Star,bookmark:ssr.Bookmark,share:ssr.Share,monitor:ssr.Monitor,sun:ssr.Sun,moon:ssr.Moon,lightbulb:ssr.Lightbulb,brain:ssr.Brain,flag:ssr.Flag,square:ssr.Square,sparkle:ssr.Sparkle,sparkles:ssr.Sparkle,globe:ssr.Globe,smartphone:ssr.DeviceMobile,deviceMobile:ssr.DeviceMobile,floppyDisk:ssr.FloppyDisk,ticket:ssr.Ticket,clipboard:ssr.Clipboard,wifi:ssr.WifiHigh,wifiOff:ssr.WifiSlash,cpu:ssr.Cpu,mask:ssr.MaskHappy,bold:ssr.TextB,italic:ssr.TextItalic,strikethrough:ssr.TextStrikethrough,heading:ssr.TextHOne,link:ssr.Link,code:ssr.Code,fileCode:ssr.FileCode,quote:ssr.Quotes,list:ssr.List,listOrdered:ssr.ListNumbers,minus:ssr.Minus},Er={happy:"smile",sad:"frown",neutral:"meh",excited:"smile",angry:"frown",love:"heart",like:"heart",dislike:"frown"},Pr={loading:"loader",success:"success",error:"error",warning:"warning",info:"info",locked:"lock",unlocked:"unlock",visible:"eye",hidden:"eyeOff"};function Mr(t){return !t||!/[-_]/.test(t)&&/^[a-z]/.test(t)?t:/^[A-Z]+$/.test(t)?t.toLowerCase():/^[A-Z]/.test(t)&&!/[-_]/.test(t)?t.charAt(0).toLowerCase()+t.slice(1):t.split(/[-_]/).map((e,r)=>r===0?e.toLowerCase():e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()).join("")}var G=null,_=null;var Nr={home:{lucide:"Home",phosphor:"House",iconsax:"Home2"},"layout-dashboard":{lucide:"LayoutDashboard",phosphor:"SquaresFour"},folder:{lucide:"Folder",phosphor:"Folder",iconsax:"Folder"},"alert-circle":{lucide:"AlertCircle",phosphor:"WarningCircle",iconsax:"Danger"},alertCircle:{lucide:"AlertCircle",phosphor:"WarningCircle",iconsax:"Danger"},columns:{lucide:"Columns",phosphor:"Columns"},users:{lucide:"Users",phosphor:"Users",iconsax:"People"},settings:{lucide:"Settings",phosphor:"Gear"},menu:{lucide:"Menu",phosphor:"List",iconsax:"Menu"},close:{lucide:"X",phosphor:"X",iconsax:"CloseCircle"},chevronLeft:{lucide:"ChevronLeft",phosphor:"CaretLeft",iconsax:"ArrowLeft2"},chevronRight:{lucide:"ChevronRight",phosphor:"CaretRight",iconsax:"ArrowRight2"},chevronDown:{lucide:"ChevronDown",phosphor:"CaretDown",iconsax:"ArrowDown2"},chevronUp:{lucide:"ChevronUp",phosphor:"CaretUp",iconsax:"ArrowUp2"},arrowLeft:{lucide:"ArrowLeft",phosphor:"ArrowLeft",iconsax:"ArrowLeft"},arrowRight:{lucide:"ArrowRight",phosphor:"ArrowRight",iconsax:"ArrowRight"},arrowUp:{lucide:"ArrowUp",phosphor:"ArrowUp",iconsax:"ArrowUp"},arrowDown:{lucide:"ArrowDown",phosphor:"ArrowDown",iconsax:"ArrowDown"},add:{lucide:"Plus",phosphor:"Plus",iconsax:"Add"},edit:{lucide:"Edit",phosphor:"Pencil"},pencil:{lucide:"Pencil",phosphor:"Pencil"},delete:{lucide:"Trash2",phosphor:"Trash",iconsax:"Trash"},trash:{lucide:"Trash2",phosphor:"Trash",iconsax:"Trash"},upload:{lucide:"Upload",phosphor:"Upload",iconsax:"Upload"},download:{lucide:"Download",phosphor:"Download",iconsax:"Download"},x:{lucide:"X",phosphor:"X"},check:{lucide:"Check",phosphor:"Check",iconsax:"Check"},search:{lucide:"Search",phosphor:"MagnifyingGlass",iconsax:"SearchNormal"},share:{lucide:"Share",phosphor:"Share"},copy:{lucide:"Copy",phosphor:"Copy"},save:{lucide:"Save",phosphor:"FloppyDisk"},loader:{lucide:"Loader2",phosphor:"Spinner"},loader2:{lucide:"Loader2",phosphor:"Spinner"},"check-circle":{lucide:"CheckCircle",phosphor:"CheckCircle",iconsax:"TickCircle"},checkCircle:{lucide:"CheckCircle",phosphor:"CheckCircle",iconsax:"TickCircle"},success:{lucide:"CheckCircle",phosphor:"CheckCircle",iconsax:"TickCircle"},error:{lucide:"XCircle",phosphor:"XCircle",iconsax:"CloseCircle"},warning:{lucide:"AlertCircle",phosphor:"WarningCircle",iconsax:"Warning2"},info:{lucide:"Info",phosphor:"Info",iconsax:"InfoCircle"},refresh:{lucide:"RefreshCw",phosphor:"ArrowClockwise",iconsax:"Refresh"},refreshCw:{lucide:"RefreshCw",phosphor:"ArrowClockwise",iconsax:"Refresh"},bell:{lucide:"Bell",phosphor:"Bell",iconsax:"Bell"},heart:{lucide:"Heart",phosphor:"Heart",iconsax:"Heart"},star:{lucide:"Star",phosphor:"Star",iconsax:"Star"},bookmark:{lucide:"Bookmark",phosphor:"Bookmark"},user:{lucide:"User",phosphor:"User",iconsax:"User"},userPlus:{lucide:"UserPlus",phosphor:"UserPlus",iconsax:"UserAdd"},logIn:{lucide:"LogIn",phosphor:"SignIn",iconsax:"Login"},logOut:{lucide:"LogOut",phosphor:"SignOut",iconsax:"Logout"},chrome:{lucide:"Chrome",phosphor:"ChromeLogo",iconsax:"Chrome"},github:{lucide:"Github",phosphor:"GithubLogo"},message:{lucide:"MessageCircle",phosphor:"ChatCircle"},messageSquare:{lucide:"MessageSquare",phosphor:"ChatSquare"},"message-square":{lucide:"MessageSquare",phosphor:"ChatSquare"},inbox:{lucide:"Inbox",phosphor:"Inbox"},calendar:{lucide:"Calendar",phosphor:"Calendar"},calendarPlus:{lucide:"CalendarPlus",phosphor:"CalendarPlus"},checkSquare:{lucide:"CheckSquare",phosphor:"CheckSquare",iconsax:"TickSquare"},clock:{lucide:"Clock",phosphor:"Clock"},book:{lucide:"Book",phosphor:"Book",iconsax:"Book"},bookOpen:{lucide:"BookOpen",phosphor:"BookOpen",iconsax:"Book"},monitor:{lucide:"Monitor",phosphor:"Monitor",iconsax:"Monitor"},sun:{lucide:"Sun",phosphor:"Sun",iconsax:"Sun"},moon:{lucide:"Moon",phosphor:"Moon",iconsax:"Moon"},sparkle:{lucide:"Sparkle",phosphor:"Sparkle"},sparkles:{lucide:"Sparkles",phosphor:"Sparkle"},lightbulb:{lucide:"Lightbulb",phosphor:"Lightbulb"},brain:{lucide:"Brain",phosphor:"Brain"},zap:{lucide:"Zap",phosphor:"Lightning"},globe:{lucide:"Globe",phosphor:"Globe",iconsax:"Global"},deviceMobile:{lucide:"Smartphone",phosphor:"DeviceMobile"},smartphone:{lucide:"Smartphone",phosphor:"DeviceMobile"},floppyDisk:{lucide:"Save",phosphor:"FloppyDisk"},chart:{lucide:"BarChart3",phosphor:"ChartBar"},barChart:{lucide:"BarChart",phosphor:"ChartBar"},trendingUp:{lucide:"TrendingUp",phosphor:"TrendUp"},trendingDown:{lucide:"TrendingDown",phosphor:"TrendDown"},activity:{lucide:"Activity",phosphor:"Pulse"},database:{lucide:"Database",phosphor:"Database"},dollarSign:{lucide:"DollarSign",phosphor:"CurrencyDollar"},dollar:{lucide:"DollarSign",phosphor:"CurrencyDollar"},currency:{lucide:"DollarSign",phosphor:"CurrencyDollar"},layers:{lucide:"Layers",phosphor:"Stack"},ban:{lucide:"Ban",phosphor:"Prohibit"},lock:{lucide:"Lock",phosphor:"Lock",iconsax:"Lock"},unlock:{lucide:"Unlock",phosphor:"LockOpen",iconsax:"Unlock"},shield:{lucide:"Shield",phosphor:"Shield",iconsax:"Shield"},key:{lucide:"Key",phosphor:"Key"},play:{lucide:"Play",phosphor:"Play",iconsax:"Play"},pause:{lucide:"Pause",phosphor:"Pause",iconsax:"Pause"},image:{lucide:"Image",phosphor:"Image",iconsax:"Image"},video:{lucide:"Video",phosphor:"Video",iconsax:"Video"},camera:{lucide:"Camera",phosphor:"Camera",iconsax:"Camera"},fileText:{lucide:"FileText",phosphor:"FileText"},file:{lucide:"File",phosphor:"File"},externalLink:{lucide:"ExternalLink",phosphor:"ArrowSquareOut"},link:{lucide:"Link",phosphor:"Link",iconsax:"Link"},moreHorizontal:{lucide:"MoreHorizontal",phosphor:"DotsThreeOutline"},moreVertical:{lucide:"MoreVertical",phosphor:"DotsThreeVertical"},remove:{lucide:"Minus",phosphor:"Minus",iconsax:"Minus"},eye:{lucide:"Eye",phosphor:"Eye",iconsax:"Eye"},eyeOff:{lucide:"EyeOff",phosphor:"EyeSlash",iconsax:"EyeSlash"},smile:{lucide:"Smile",phosphor:"Smiley",iconsax:"EmojiHappy"},frown:{lucide:"Frown",phosphor:"SmileySad",iconsax:"EmojiSad"},meh:{lucide:"Meh",phosphor:"SmileyMeh",iconsax:"EmojiNormal"},mail:{lucide:"Mail",phosphor:"Envelope"},phone:{lucide:"Phone",phosphor:"Phone"},flag:{lucide:"Flag",phosphor:"Flag",iconsax:"Flag"},rocket:{lucide:"Rocket",phosphor:"Rocket",iconsax:"Rocket"},ticket:{lucide:"Ticket",phosphor:"Ticket",iconsax:"Ticket"},clipboard:{lucide:"ClipboardList",phosphor:"Clipboard",iconsax:"Sticker"},wifi:{lucide:"Wifi",phosphor:"WifiHigh",iconsax:"Wifi"},wifiOff:{lucide:"WifiOff",phosphor:"WifiSlash"},cpu:{lucide:"Cpu",phosphor:"Cpu",iconsax:"Computing"},mask:{lucide:"Drama",phosphor:"MaskHappy",iconsax:"EmojiHappy"},bold:{lucide:"Bold",phosphor:"TextB"},italic:{lucide:"Italic",phosphor:"TextItalic"},strikethrough:{lucide:"Strikethrough",phosphor:"TextStrikethrough"},heading:{lucide:"Heading",phosphor:"TextHOne"},code:{lucide:"Code",phosphor:"Code",iconsax:"Code"},fileCode:{lucide:"FileCode",phosphor:"FileCode"},quote:{lucide:"Quote",phosphor:"Quotes",iconsax:"QuoteUp"},list:{lucide:"List",phosphor:"List"},listOrdered:{lucide:"ListOrdered",phosphor:"ListNumbers"},minus:{lucide:"Minus",phosphor:"Minus",iconsax:"Minus"}};async function Rr(){if(typeof window=="undefined")return null;if(!G)try{G=await import('@phosphor-icons/react');}catch{return console.warn("Phosphor Icons not available. Install @phosphor-icons/react to use."),null}return G}async function Lr(){if(typeof window=="undefined")return null;if(!_)try{_=await import('lucide-react');}catch{return console.warn("Lucide Icons not available. Install lucide-react to use lucide provider."),null}return _}function et(t,e="phosphor"){let r=Nr[t];if(!r)return rs(t,e);let o=r[e];switch(e){case "phosphor":return !o||!G?null:(G==null?void 0:G[o])||null;case "lucide":return !o||!_?null:(_==null?void 0:_[o])||null;case "iconsax":{return null;}default:return null}}function rs(t,e){switch(e){case "phosphor":{if(!G)return null;let r=t.charAt(0).toUpperCase()+t.slice(1),o=t.split(/(?=[A-Z])/).map(a=>a.charAt(0).toUpperCase()+a.slice(1)).join("");return (G==null?void 0:G[r])||(G==null?void 0:G[o])||(G==null?void 0:G[t])||null}case "lucide":{if(!_)return null;let r=t.charAt(0).toUpperCase()+t.slice(1),o=t.replace(/([A-Z])/g,a=>a===t[0]?a.toLowerCase():a);return (_==null?void 0:_[r])||(_==null?void 0:_[t])||(_==null?void 0:_[o])||null}case "iconsax":{return null;}default:return null}}function Sr(t,e){let r=Nr[t];if(r){let o=r[e];if(o)return o}return t}var Lt={"arrow-left":"arrowLeft","arrow-right":"arrowRight","arrow-up":"arrowUp","arrow-down":"arrowDown","chevron-left":"chevronLeft","chevron-right":"chevronRight","chevron-up":"chevronUp","chevron-down":"chevronDown","external-link":"externalLink","more-horizontal":"moreHorizontal","more-vertical":"moreVertical","user-plus":"userPlus","log-in":"logIn","log-out":"logOut","check-circle":"checkCircle","check-square":"checkSquare","alert-circle":"alertCircle","eye-off":"eyeOff","file-text":"fileText","book-open":"bookOpen","bar-chart":"barChart","trending-up":"trendingUp","trending-down":"trendingDown","message-square":"messageSquare","calendar-plus":"calendarPlus","refresh-cw":"refreshCw","dollar-sign":"dollarSign","layout-dashboard":"layoutDashboard","device-mobile":"deviceMobile","floppy-disk":"floppyDisk",back:"arrowLeft",prev:"arrowLeft",previous:"arrowLeft",forward:"arrowRight",next:"arrowRight",close:"x",cancel:"x",remove:"delete",trash:"delete",plus:"add",new:"add",pencil:"edit",modify:"edit",store:"save",floppy:"save",magnify:"search",person:"user",account:"user",profile:"user",gear:"settings",config:"settings",preferences:"settings",house:"home",main:"home",done:"check",complete:"check",tick:"check",information:"info",help:"info",alert:"warning",caution:"warning",checkmark:"success",checkCircle:"success",fail:"error",cross:"error",xCircle:"error",spinner:"loader",loading:"loader",wait:"loader",reload:"refresh",update:"refresh",sync:"refresh",show:"eye",view:"eye",hide:"eyeOff",hidden:"eyeOff",secure:"lock",locked:"lock",unsecure:"unlock",unlocked:"unlock",get:"download",fetch:"download",post:"upload",send:"share",export:"share",duplicate:"copy",clone:"copy",email:"mail",envelope:"mail",chat:"message",comment:"message",talk:"message",date:"calendar",schedule:"calendar",time:"clock",watch:"clock",document:"fileText",doc:"fileText",text:"fileText",directory:"folder",dir:"folder",picture:"image",img:"image",movie:"video",film:"video",photo:"camera",capture:"camera",start:"play",run:"play",stop:"pause",halt:"pause",like:"heart",love:"heart",favorite:"star",saveBookmark:"bookmark",notification:"bell",notify:"bell",alarm:"bell",prefs:"settings",lookup:"search",dots:"moreHorizontal",moreMenu:"moreHorizontal",moreOptions:"moreVertical",external:"externalLink",outbound:"externalLink",open:"externalLink",url:"link",hyperlink:"link",graph:"barChart",stats:"barChart",analytics:"barChart",db:"database",storage:"database",pulse:"activity",monitor:"activity",up:"trendingUp",down:"trendingDown",lightning:"zap",bolt:"zap",flash:"zap",security:"shield",protect:"shield",password:"key",secret:"key",signin:"logIn",login:"logIn",enter:"logIn",signout:"logOut",logout:"logOut",exit:"logOut",people:"users",group:"users",team:"users",addUser:"userPlus",invite:"userPlus",read:"book",library:"book",reading:"bookOpen",openBook:"bookOpen",light:"sun",day:"sun",dark:"moon",night:"moon",screen:"monitor",display:"monitor",ai:"brain",intelligence:"brain",think:"brain",idea:"lightbulb",bulb:"lightbulb",inspiration:"lightbulb",magic:"sparkles",stars:"sparkles",glitter:"sparkles"};function Ir(t){if(!t||typeof t!="string")return {normalized:t||"",wasAlias:false};let e=Mr(t),r=Lt[t]||Lt[e];return r?{normalized:r,wasAlias:true,originalAlias:t}:{normalized:e,wasAlias:false}}var Br={set:"lucide",weight:"regular",size:20,color:"currentColor",strokeWidth:1.25,iconsaxVariant:"line"};var as=ee.createContext(Br);function Ar(){return ee.useContext(as)}var Hr=ee__default.default.forwardRef(({name:t,size:e,className:r,emotion:o,status:a,provider:s,weight:d,animated:v=false,pulse:h=false,spin:i=false,bounce:y=false,variant:m="default","aria-label":x,"aria-hidden":f},c)=>{var D,te;let n=Ar(),g=s||n.set,u=e!=null?e:n.size,C=d||n.weight,p=n.color,b=(D=n.strokeWidth)!=null?D:1.25,k=(te=n.iconsaxVariant)!=null?te:"line",[w,N]=ee__default.default.useState(false),[B,M]=ee__default.default.useState(false);ee__default.default.useEffect(()=>{N(true),g==="lucide"?Lr().then(()=>M(true)):g==="phosphor"?Rr().then(()=>M(true)):M(true);},[g]);let R=ee__default.default.useMemo(()=>{let ne=o?Er[o]:a?Pr[a]:t,{normalized:W}=Ir(ne),re=Sr(W,g);return {normalized:W,providerName:re}},[t,o,a,g]),T=R.normalized,I=ee__default.default.useMemo(()=>{return null},[g,R.providerName,w,k]),V=ct({"text-current":m==="default","text-primary":m==="primary","text-muted-foreground":m==="secondary"||m==="muted","text-green-600 dark:text-green-400":m==="success","text-yellow-600 dark:text-yellow-400":m==="warning","text-destructive":m==="error"});if(!w)return jsxRuntime.jsx("span",{style:{width:u,height:u},className:l(V,r),"aria-hidden":f!==void 0?f:true,"aria-label":x});let z=null;if(g==="phosphor"?(z=kr[T]||null,!z&&B&&(z=et(T,g))):g==="iconsax"?(z=I,z||(z=et(T,g))):z=et(T,g),!z)return g==="iconsax"&&true?process.env.NODE_ENV==="development"&&console.warn(`Icon "${T}" \u2014 iconsax resolver not registered. Use HuaProvider with icons.set='iconsax', or add: import '@hua-labs/ui/iconsax'`):console.warn(`Icon "${T}" not found for provider "${g}"`),jsxRuntime.jsx("span",{ref:c,className:l("inline-flex items-center justify-center rounded-full border-2 border-dashed border-border",V,r),style:{width:u,height:u},"aria-label":x||`\uC544\uC774\uCF58\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC74C: ${T}`,title:`Icon not found: ${T}`,children:jsxRuntime.jsx("span",{className:"text-xs text-muted-foreground","aria-hidden":"true",children:"?"})});let $={size:typeof u=="number"?u:void 0,width:u,height:u,color:p};g==="phosphor"?$.weight=C:$.strokeWidth=b;let Z=ct({"animate-pulse":h,"animate-spin":i,"animate-bounce":y,"transition-all duration-200 ease-in-out":v}),J={};return x?(J["aria-label"]=x,J["aria-hidden"]=false):f!==void 0?J["aria-hidden"]=f:J["aria-hidden"]=true,jsxRuntime.jsx("span",{ref:c,className:l("inline-flex items-center justify-center",Z,V,r),style:{width:u,height:u},...J,children:z&&ee__default.default.createElement(z,{...$,className:V,"aria-hidden":true})})});Hr.displayName="Icon";var ss=ee__default.default.memo(Hr,(t,e)=>t.name===e.name&&t.size===e.size&&t.className===e.className&&t.emotion===e.emotion&&t.status===e.status&&t.provider===e.provider&&t.animated===e.animated&&t.pulse===e.pulse&&t.spin===e.spin&&t.bounce===e.bounce&&t.variant===e.variant&&t.weight===e.weight&&t["aria-label"]===e["aria-label"]&&t["aria-hidden"]===e["aria-hidden"]),H=ss;H.displayName="Icon";var $r=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(H,{ref:e,name:"smile",...t}));$r.displayName="EmotionIcon";var Dr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(H,{ref:e,name:"info",...t}));Dr.displayName="StatusIcon";var zr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(H,{ref:e,name:"loader",status:"loading",spin:true,"aria-label":"\uB85C\uB529 \uC911",...t}));zr.displayName="LoadingIcon";var Fr=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(H,{ref:e,name:"check",status:"success",variant:"success","aria-label":"\uC131\uACF5",...t}));Fr.displayName="SuccessIcon";var Or=ee__default.default.forwardRef((t,e)=>jsxRuntime.jsx(H,{ref:e,name:"alertCircle",status:"error",variant:"error","aria-label":"\uC624\uB958",...t}));Or.displayName="ErrorIcon";var Be=ee__default.default.forwardRef(({onBack:t,backLink:e,className:r},o)=>{let{labels:a,isEditMode:s,formData:d}=U();return jsxRuntime.jsx("header",{ref:o,className:l("flex items-center justify-between mb-8",r),children:jsxRuntime.jsxs("div",{className:"flex items-center gap-4",children:[e||t&&jsxRuntime.jsx("button",{type:"button",onClick:t,className:"p-2 text-muted-foreground hover:text-foreground transition-colors","aria-label":"\uB4A4\uB85C\uAC00\uAE30",children:jsxRuntime.jsx(H,{name:"chevronLeft",size:24})}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h1",{className:"text-2xl font-bold text-foreground",children:s?a.editTitle:a.pageTitle}),s&&d.slug&&jsxRuntime.jsxs("p",{className:"text-sm text-muted-foreground",children:[a.slugPrefix,d.slug]})]})]})})});Be.displayName="BlogEditorHeader";var Ae=ee__default.default.forwardRef(({className:t},e)=>{var b,k;let{formData:r,updateField:o,features:a,labels:s,variant:d,handleUploadImage:v,uploading:h,setSlugManuallyEdited:i}=U(),[y,m]=ee.useState(""),x=ee.useRef(null),f=l("rounded-xl p-6 space-y-4",d==="glass"?"bg-white/10 backdrop-blur-sm border border-white/20 dark:bg-background/20 dark:border-border/50":d==="minimal"?"bg-transparent":"bg-background",t),c="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",g=ee.useCallback(w=>{let N=w.trim();N&&!r.tags.includes(N)&&o("tags",[...r.tags,N]),m("");},[r.tags,o]),u=ee.useCallback(w=>{o("tags",r.tags.filter(N=>N!==w));},[r.tags,o]),C=ee.useCallback(w=>{let N=w.target.value;if(N.includes(",")){let B=N.split(",");B.forEach((M,R)=>{R<B.length-1?g(M):m(M);});}else m(N);},[g]),p=ee.useCallback(w=>{w.key==="Enter"?(w.preventDefault(),g(y)):w.key==="Backspace"&&!y&&r.tags.length>0&&u(r.tags[r.tags.length-1]);},[y,r.tags,g,u]);return jsxRuntime.jsxs("div",{ref:e,className:f,children:[jsxRuntime.jsx("h2",{className:"font-semibold text-foreground",children:s.basicInfo}),jsxRuntime.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[a.enableSlug&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{className:n,children:[s.slug," *"]}),jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx("span",{className:"text-muted-foreground mr-1 text-sm",children:s.slugPrefix}),jsxRuntime.jsx("input",{type:"text",value:r.slug,onChange:w=>{o("slug",Et(w.target.value)),i(true);},className:l(c,"flex-1"),placeholder:"my-post-slug"})]})]}),a.enableTags&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{className:n,children:s.tags}),jsxRuntime.jsxs("div",{className:l("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:[r.tags.map(w=>jsxRuntime.jsxs("span",{className:"inline-flex items-center gap-1 px-2 py-0.5 bg-primary/10 text-primary text-sm rounded-md",children:[w,jsxRuntime.jsx("button",{type:"button",onClick:()=>u(w),className:"hover:text-primary transition-colors","aria-label":`${w} \uD0DC\uADF8 \uC0AD\uC81C`,children:jsxRuntime.jsx(H,{name:"x",size:14})})]},w)),jsxRuntime.jsx("input",{type:"text",value:y,onChange:C,onKeyDown:p,className:"flex-1 min-w-[100px] bg-transparent outline-none text-foreground text-sm",placeholder:r.tags.length===0?s.tagsPlaceholder:"\uD0DC\uADF8 \uCD94\uAC00..."})]}),jsxRuntime.jsx("p",{className:"mt-1 text-xs text-muted-foreground",children:"\uC27C\uD45C(,) \uB610\uB294 Enter\uB85C \uD0DC\uADF8 \uCD94\uAC00"})]})]}),a.enableCoverImage&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{className:n,children:s.coverImage}),jsxRuntime.jsxs("div",{className:"space-y-3",children:[r.coverImage&&jsxRuntime.jsxs("div",{className:"relative w-full h-40 rounded-lg overflow-hidden bg-muted",children:[jsxRuntime.jsx("img",{src:r.coverImage,alt:"\uCEE4\uBC84 \uC774\uBBF8\uC9C0 \uBBF8\uB9AC\uBCF4\uAE30",className:"w-full h-full object-cover"}),jsxRuntime.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:jsxRuntime.jsx(H,{name:"x",size:14})})]}),jsxRuntime.jsxs("div",{className:"flex gap-2",children:[jsxRuntime.jsx("input",{type:"text",value:r.coverImage,onChange:w=>o("coverImage",w.target.value),className:l(c,"flex-1"),placeholder:s.coverImagePlaceholder}),jsxRuntime.jsx("input",{ref:x,type:"file",accept:"image/*",className:"hidden",onChange:async w=>{var B;let N=(B=w.target.files)==null?void 0:B[0];if(N){let M=await v(N);M&&o("coverImage",M);}w.target.value="";}}),jsxRuntime.jsx("button",{type:"button",onClick:()=>{var w;return (w=x.current)==null?void 0:w.click()},disabled:h,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:h?jsxRuntime.jsx(H,{name:"loader",size:20,spin:true}):jsxRuntime.jsx(H,{name:"upload",size:20})})]})]})]}),jsxRuntime.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[a.enablePublishDate&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{className:n,children:s.publishDate}),jsxRuntime.jsx("input",{type:"datetime-local",value:(b=r.publishedAt)!=null?b:"",onChange:w=>o("publishedAt",w.target.value||null),className:c}),jsxRuntime.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:s.publishDateHint})]}),a.enableExpiresAt&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{className:n,children:s.expiresAt}),jsxRuntime.jsx("input",{type:"datetime-local",value:(k=r.expiresAt)!=null?k:"",onChange:w=>o("expiresAt",w.target.value||null),className:c}),jsxRuntime.jsx("p",{className:"mt-1 text-sm text-muted-foreground",children:s.expiresAtHint})]})]})]})});Ae.displayName="BlogEditorMetadata";var He=ee__default.default.forwardRef(({className:t},e)=>{let{languages:r,activeLanguage:o,setActiveLanguage:a,showPreview:s,setShowPreview:d,features:v,labels:h}=U();return jsxRuntime.jsxs("div",{ref:e,className:l("flex items-center border-b border-border sticky top-0 z-10 bg-background",t),role:"tablist","aria-label":"\uC5B8\uC5B4 \uC120\uD0DD",children:[jsxRuntime.jsx("div",{className:"flex flex-1",children:r.map(i=>{let y=o===i.key,m=i.isPrimary;return jsxRuntime.jsxs("button",{type:"button",role:"tab","aria-selected":y,"aria-controls":`tabpanel-${i.key}`,id:`tab-${i.key}`,onClick:()=>a(i.key),className:l("flex-1 px-4 py-3 text-sm font-medium transition-colors",y?"bg-primary/10 text-primary border-b-2 border-primary":"text-muted-foreground hover:bg-muted"),children:[i.flag&&jsxRuntime.jsx("span",{className:"mr-1.5",children:i.flag}),i.label,m&&" *"]},i.key)})}),v.enablePreview&&jsxRuntime.jsxs("button",{type:"button",onClick:()=>d(!s),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:[jsxRuntime.jsx(H,{name:s?"pencil":"eye",size:14}),s?h.editMode:h.preview]})]})});He.displayName="BlogEditorLanguageTabs";var ze=ee__default.default.forwardRef(({className:t,textareaRef:e},r)=>{var p;let{formData:o,activeLanguage:a,updateMultilingualField:s,updateField:d,features:v,labels:h,languages:i,generateSlug:y,isEditMode:m,slugManuallyEdited:x}=U(),f=((p=i.find(b=>b.isPrimary))==null?void 0:p.key)===a,c=i.find(b=>b.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",g="block text-sm font-medium text-foreground mb-1",u=b=>{s("title",a,b),a==="en"&&!m&&!x&&d("slug",y(b));},C=b=>f?`${b} *`:`${b} (${(c==null?void 0:c.label)||a})`;return jsxRuntime.jsxs("div",{ref:r,className:l("p-6 space-y-4",t),children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{className:g,children:C(h.titleLabel)}),jsxRuntime.jsx("input",{type:"text",value:o.title[a]||"",onChange:b=>u(b.target.value),className:n,placeholder:h.titlePlaceholder})]}),v.enableExcerpt&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{className:g,children:C(h.excerpt)}),jsxRuntime.jsx("textarea",{value:o.excerpt[a]||"",onChange:b=>s("excerpt",a,b.target.value),rows:2,className:l(n,"resize-none"),placeholder:h.excerptPlaceholder})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{className:g,children:[C(h.contentLabel)," (\uB9C8\uD06C\uB2E4\uC6B4)"]}),jsxRuntime.jsx("textarea",{ref:e,value:o.content[a]||"",onChange:b=>s("content",a,b.target.value),rows:15,className:l(n,"font-mono text-sm resize-y min-h-[300px]"),placeholder:h.contentPlaceholder})]})]})});ze.displayName="BlogEditorContent";function ms(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function At(t){if(!t)return "";let e=t;return e=e.replace(/```(\w*)\n?([\s\S]*?)```/g,(r,o,a)=>`<pre class="bg-gray-100 dark:bg-gray-800 rounded-lg p-4 overflow-x-auto my-4"><code class="text-sm">${ms(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,r=>`<ul class="list-disc list-inside my-4 space-y-1">${r}</ul>`),e=e.replace(/\n(?!<)/g,`<br />
|
|
76
|
-
`),e=e.replace(/(<br \/>[\n\s]*){3,}/g,`<br /><br />
|
|
77
|
-
`),e}function qr(t){return t?t.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,`
|
|
78
|
-
|
|
79
|
-
`).trim():""}function gs(t,e=150){let r=qr(t);return r.length<=e?r:r.slice(0,e).trim()+"..."}function Ht(t,e,r,o,a){let s=t.slice(e,r),d=t.slice(0,e),v=t.slice(r),h=d+o+s+a+v,i=e+o.length+s.length+a.length;return {text:h,cursorPosition:i}}var bs=[{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:`
|
|
80
|
-
---
|
|
81
|
-
`,after:""}}],Fe=ee__default.default.forwardRef(({textareaRef:t,className:e},r)=>{let{labels:o,activeLanguage:a,updateMultilingualField:s,formData:d,features:v}=U(),h=ee.useCallback(i=>{let y=t.current;if(!y)return;let{selectionStart:m,selectionEnd:x}=y,f=d.content[a]||"",{text:c,cursorPosition:n}=Ht(f,m,x,i.markdown.before,i.markdown.after);s("content",a,c),requestAnimationFrame(()=>{y.focus(),y.setSelectionRange(n,n);});},[t,d,a,s]);return v.enableMarkdownToolbar?jsxRuntime.jsx("div",{ref:r,className:l("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:bs.map(i=>jsxRuntime.jsx("button",{type:"button",onClick:()=>h(i),className:"p-2 text-muted-foreground hover:text-foreground hover:bg-muted rounded transition-colors",title:`${o[i.label]||i.label}${i.shortcut?` (${i.shortcut})`:""}`,"aria-label":o[i.label]||i.label,children:jsxRuntime.jsx(H,{name:i.icon,size:16})},i.icon))}):null});Fe.displayName="BlogEditorToolbar";var Oe=ee__default.default.forwardRef(({renderMarkdown:t,className:e},r)=>{var m,x;let{formData:o,activeLanguage:a,languages:s,labels:d}=U(),v=((m=s.find(f=>f.isPrimary))==null?void 0:m.key)||((x=s[0])==null?void 0:x.key),h=o.title[a]||o.title[v]||d.noTitle,i=o.content[a]||o.content[v]||"",y=ee__default.default.useMemo(()=>t?t(i):jsxRuntime.jsx("div",{dangerouslySetInnerHTML:{__html:At(i)}}),[i,t]);return jsxRuntime.jsxs("div",{ref:r,className:l("p-6",e),children:[jsxRuntime.jsx("h3",{className:"text-xl font-bold text-foreground mb-4",children:h}),jsxRuntime.jsx("div",{className:"prose dark:prose-invert max-w-none",children:y})]})});Oe.displayName="BlogEditorPreview";var qe=ee__default.default.forwardRef(({cancelLink:t,className:e},r)=>{let{labels:o,submitting:a,handleSave:s,handleCancel:d,isEditMode:v,autoSaveStatus:h,features:i}=U();return jsxRuntime.jsxs("div",{ref:r,className:l("flex items-center justify-end gap-3",e),children:[i.enableAutoSave&&h!=="idle"&&jsxRuntime.jsxs("span",{className:"text-sm text-muted-foreground flex items-center gap-1",children:[h==="saving"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"loader",size:14,spin:true}),"\uC800\uC7A5 \uC911..."]}),h==="saved"&&jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"check",size:14}),"\uC790\uB3D9\uC800\uC7A5\uB428"]})]}),t||jsxRuntime.jsx("button",{type:"button",onClick:d,className:"px-4 py-2 text-foreground hover:text-foreground transition-colors",children:o.cancel}),jsxRuntime.jsx("button",{type:"button",onClick:()=>s(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}),jsxRuntime.jsx("button",{type:"button",onClick:()=>s(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?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"loader",size:16,spin:true}),o.saving]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"check",size:16}),v?o.update:o.publish]})})]})});qe.displayName="BlogEditorActions";var Ve=ee__default.default.forwardRef(({hint:t,className:e},r)=>{var c,n;let{labels:o,translating:a,translateSuccess:s,handleTranslate:d,formData:v,languages:h,features:i}=U();if(!i.enableTranslation)return null;let y=((c=h.find(g=>g.isPrimary))==null?void 0:c.key)||((n=h[0])==null?void 0:n.key),m=v.title[y]||"",x=v.content[y]||"",f=m&&x;return jsxRuntime.jsxs("div",{ref:r,className:l("px-6 py-3 bg-muted border-b border-border flex items-center justify-between",e),children:[jsxRuntime.jsxs("div",{className:"flex items-center gap-2 text-sm text-muted-foreground",children:[jsxRuntime.jsx(H,{name:"sparkles",size:16}),jsxRuntime.jsx("span",{children:t||o.translateHint})]}),jsxRuntime.jsx("button",{type:"button",onClick:d,disabled:a||!f,className:l("inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-lg transition-colors",s?"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?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"loader",size:16,spin:true}),o.translating]}):s?jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"check",size:16}),o.translateSuccess]}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(H,{name:"sparkles",size:16}),o.translateButton]})})]})});Ve.displayName="BlogEditorTranslate";function Cs({onBack:t,backLink:e,cancelLink:r,renderMarkdown:o,translateHint:a,maxWidth:s="max-w-4xl",className:d,children:v}){let{showPreview:h,error:i,variant:y,features:m}=U(),x=ee.useRef(null),f=l(y==="glass"?"bg-gradient-to-br from-gray-100 to-gray-200 dark:from-gray-900 dark:to-gray-800":y==="minimal"?"":"bg-muted"),c=l("rounded-xl overflow-hidden",y==="glass"?"bg-white/10 backdrop-blur-sm border border-white/20 dark:bg-slate-800/20 dark:border-slate-700/50":y==="minimal"?"bg-transparent border border-border":"bg-background");return v?jsxRuntime.jsx("div",{className:l(f,d),children:jsxRuntime.jsx("div",{className:l(s,"mx-auto px-4 py-8"),children:v})}):jsxRuntime.jsx("div",{className:l(f,d),children:jsxRuntime.jsxs("div",{className:l(s,"mx-auto px-4 py-8"),children:[jsxRuntime.jsx(Be,{onBack:t,backLink:e}),i&&jsxRuntime.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:i}),jsxRuntime.jsxs("div",{className:"space-y-6",children:[jsxRuntime.jsx(Ae,{}),jsxRuntime.jsxs("div",{className:c,children:[m.enableTranslation&&jsxRuntime.jsx(Ve,{hint:a}),jsxRuntime.jsx(He,{}),h?jsxRuntime.jsx(Oe,{renderMarkdown:o}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[m.enableMarkdownToolbar&&jsxRuntime.jsx(Fe,{textareaRef:x}),jsxRuntime.jsx(ze,{textareaRef:x})]})]}),jsxRuntime.jsx(qe,{cancelLink:r})]})]})})}var Vr=ee__default.default.forwardRef(({initialData:t,isEditMode:e,languages:r,defaultLanguage:o,labels:a,callbacks:s,features:d,variant:v,onBack:h,backLink:i,cancelLink:y,renderMarkdown:m,translateHint:x,maxWidth:f,className:c,children:n,autoSaveKey:g,autoSaveInterval:u},C)=>jsxRuntime.jsx(Nt,{initialData:t,isEditMode:e,languages:r,defaultLanguage:o,labels:a,callbacks:s,features:d,variant:v,autoSaveKey:g,autoSaveInterval:u,children:jsxRuntime.jsx("div",{ref:C,children:jsxRuntime.jsx(Cs,{onBack:h,backLink:i,cancelLink:y,renderMarkdown:m,translateHint:x,maxWidth:f,className:c,children:n})})}));Vr.displayName="BlogEditor";var de=Vr;de.Header=Be;de.Metadata=Ae;de.LanguageTabs=He;de.Content=ze;de.Toolbar=Fe;de.Preview=Oe;de.Actions=qe;de.Translate=Ve;exports.AdvancedPageTransition=pe;exports.AnimatedGradient=nr;exports.BlogEditor=de;exports.BlogEditorActions=qe;exports.BlogEditorContent=ze;exports.BlogEditorHeader=Be;exports.BlogEditorLanguageTabs=He;exports.BlogEditorMetadata=Ae;exports.BlogEditorPreview=Oe;exports.BlogEditorProvider=Nt;exports.BlogEditorToolbar=Fe;exports.BlogEditorTranslate=Ve;exports.Carousel=cr;exports.CubePageTransition=Qr;exports.EmotionAnalysis=gr;exports.EmotionButton=Ze;exports.EmotionMeter=he;exports.EmotionSelector=ur;exports.FadePageTransition=_r;exports.FlipPageTransition=Yr;exports.GlowCard=Kt;exports.Marquee=Xt;exports.MorphPageTransition=Kr;exports.Parallax=_t;exports.ScalePageTransition=Xr;exports.SlidePageTransition=jr;exports.SpotlightCard=Zt;exports.TextReveal=tr;exports.TiltCard=sr;exports.VideoBackground=lr;exports.ZoomPageTransition=Zr;exports.generateSlug=kt;exports.getMarkdownPreview=gs;exports.insertMarkdown=Ht;exports.isValidSlug=pn;exports.normalizeSlug=Et;exports.parseMarkdown=At;exports.stripMarkdown=qr;exports.useBlogEditor=U;exports.usePageTransition=to;exports.usePageTransitionManager=no;//# sourceMappingURL=advanced-motion.js.map
|
|
82
|
-
//# sourceMappingURL=advanced-motion.js.map
|