@hua-labs/ui 1.1.0-alpha.0.1 → 1.1.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/dist/advanced-dashboard.js.map +1 -1
- package/dist/advanced-dashboard.mjs +1 -1
- package/dist/advanced.js.map +1 -1
- package/dist/advanced.mjs +1 -1
- package/dist/{chunk-VPOFRDYL.mjs → chunk-627HOIRV.mjs} +2 -2
- package/dist/{chunk-VPOFRDYL.mjs.map → chunk-627HOIRV.mjs.map} +1 -1
- package/dist/{chunk-SGCVGEDR.mjs → chunk-E5PN4LUS.mjs} +2 -2
- package/dist/{chunk-SGCVGEDR.mjs.map → chunk-E5PN4LUS.mjs.map} +1 -1
- package/dist/{chunk-ZQAAB3P4.mjs → chunk-MXGXBG63.mjs} +2 -2
- package/dist/{chunk-ZQAAB3P4.mjs.map → chunk-MXGXBG63.mjs.map} +1 -1
- package/dist/{chunk-YY6ZBUVJ.mjs → chunk-R5KCFRYV.mjs} +2 -2
- package/dist/{chunk-YY6ZBUVJ.mjs.map → chunk-R5KCFRYV.mjs.map} +1 -1
- package/dist/{chunk-DMYT7RZ4.mjs → chunk-UGSYQDR4.mjs} +2 -2
- package/dist/{chunk-DMYT7RZ4.mjs.map → chunk-UGSYQDR4.mjs.map} +1 -1
- package/dist/{chunk-6NXF6ATP.mjs → chunk-ZFS4B5QT.mjs} +2 -2
- package/dist/{chunk-6NXF6ATP.mjs.map → chunk-ZFS4B5QT.mjs.map} +1 -1
- package/dist/form.js.map +1 -1
- package/dist/form.mjs +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/lib/icon-providers.d.ts +2 -3
- package/dist/lib/icon-providers.d.ts.map +1 -1
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +1 -1
- package/package.json +1 -1
package/dist/advanced.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1,b,c,d,h,e,f,g}from'./chunk-VPOFRDYL.mjs';export{l as ComponentLayout}from'./chunk-VPOFRDYL.mjs';export{d as ActivityFeed,l as DashboardEmptyState,c as DashboardGrid,m as DashboardSidebar,o as DashboardToolbar,f as MembershipBadge,t as MerchantList,j as MetricCard,g as MiniBarChart,i as NotificationCard,e as ProfileCard,k as ProgressCard,b as QuickActionCard,s as RoutingBreakdownCard,v as SectionHeader,r as SettlementTimeline,a as StatCard,u as StatsPanel,h as SummaryCard,q as TransactionDetailDrawer,n as TransactionsTable,p as TrendChart}from'./chunk-YY6ZBUVJ.mjs';import {i}from'./chunk-SGCVGEDR.mjs';export{a as AdvancedPageTransition,g as CubePageTransition,b as FadePageTransition,e as FlipPageTransition,f as MorphPageTransition,d as ScalePageTransition,c as SlidePageTransition,h as ZoomPageTransition,i as usePageTransition,j as usePageTransitionManager}from'./chunk-KHEJZ3U4.mjs';import {a as a$2}from'./chunk-ACEKLG37.mjs';import {l}from'./chunk-DMYT7RZ4.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import V,{useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Q=V.forwardRef(({className:p,id:e,storageKey:o="bookmarks",defaultBookmarked:i=false,onBookmarkChange:s,size:l$1="md",variant:u="default",...b},v)=>{let[m,x]=useState(i);useEffect(()=>{let y=localStorage.getItem(o);if(y){let n=JSON.parse(y);x(n.includes(e));}},[e,o]);let d=()=>{let y=!m;x(y);let n=localStorage.getItem(o),h=n?JSON.parse(n):[];if(y)h.includes(e)||h.push(e);else {let r=h.indexOf(e);r>-1&&h.splice(r,1);}localStorage.setItem(o,JSON.stringify(h)),s==null||s(y);},g={sm:"w-6 h-6",md:"w-8 h-8",lg:"w-10 h-10"},N={default:"text-slate-400 hover:text-yellow-500 transition-colors",filled:"text-yellow-500 hover:text-yellow-600 transition-colors",outline:"border border-slate-300 dark:border-slate-600 text-slate-400 hover:text-yellow-500 hover:border-yellow-500 transition-colors rounded"};return jsx("button",{ref:v,onClick:d,className:a("flex items-center justify-center focus:outline-none focus:ring-2 focus:ring-yellow-500 focus:ring-offset-2",g[l$1],N[u],p),...b,children:jsx(l,{name:"star",className:a("transition-all duration-200",m&&"fill-current")})})});Q.displayName="Bookmark";var X=V.forwardRef(({className:p,message:e,user:o={name:"\uC0AC\uC6A9\uC790",color:"#3b82f6"},assistant:i$1={name:"AI",color:"#10b981"},showAvatar:s=true,showTimestamp:l=true,showEmotion:u=true,variant:b$1="default",theme:v={userBubbleBg:"#3b82f6",userBubbleText:"#ffffff",aiBubbleBg:"#f3f4f6",aiBubbleText:"#1f2937"},...m},x)=>{var h$1,r,B;let d$1=e.role==="user";e.role==="assistant";e.role==="system";let y=k=>k?{joy:"bg-yellow-100 text-yellow-800",sadness:"bg-blue-100 text-blue-800",anger:"bg-red-100 text-red-800",calm:"bg-green-100 text-green-800",excitement:"bg-pink-100 text-pink-800",worry:"bg-gray-100 text-gray-800",gratitude:"bg-purple-100 text-purple-800",loneliness:"bg-indigo-100 text-indigo-800"}[k]||"bg-gray-100 text-gray-800":"bg-gray-100",n=k=>k.toLocaleTimeString("ko-KR",{hour:"2-digit",minute:"2-digit"});return b$1==="bubble"?jsx("div",{ref:x,className:a("flex w-full",d$1?"justify-end":"justify-start",p),...m,children:jsxs("div",{className:a("flex max-w-[80%] space-x-2",d$1?"flex-row-reverse space-x-reverse":"flex-row"),children:[s&&jsxs(a$1,{className:"w-8 h-8 flex-shrink-0",children:[jsx(b,{src:d$1?o.avatar:i$1.avatar,alt:d$1?o.name:i$1.name}),jsx(c,{style:{backgroundColor:d$1?o.color:i$1.color},children:(h$1=d$1?o.name:i$1.name)==null?void 0:h$1.charAt(0)})]}),jsxs("div",{className:"space-y-1",children:[jsx("div",{className:a("px-4 py-2 rounded-2xl max-w-full break-words",d$1?"rounded-br-md":"rounded-bl-md"),style:{backgroundColor:d$1?v.userBubbleBg:v.aiBubbleBg,color:d$1?v.userBubbleText:v.aiBubbleText},children:e.isTyping?jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-200"})]}):jsx("div",{className:"whitespace-pre-wrap",children:e.content})}),jsxs("div",{className:a("flex items-center space-x-2 text-xs text-muted-foreground",d$1?"justify-end":"justify-start"),children:[l&&jsx("span",{children:n(e.timestamp)}),u&&e.emotion&&jsx(i,{variant:"secondary",className:a("text-xs",y(e.emotion)),children:e.emotion})]})]})]})}):b$1==="compact"?jsxs("div",{ref:x,className:a("flex items-start space-x-3 py-2",p),...m,children:[s&&jsxs(a$1,{className:"w-6 h-6 flex-shrink-0",children:[jsx(b,{src:d$1?o.avatar:i$1.avatar,alt:d$1?o.name:i$1.name}),jsx(c,{style:{backgroundColor:d$1?o.color:i$1.color},children:(r=d$1?o.name:i$1.name)==null?void 0:r.charAt(0)})]}),jsxs("div",{className:"flex-1 min-w-0",children:[jsxs("div",{className:"flex items-center space-x-2 mb-1",children:[jsx("span",{className:"text-sm font-medium",children:d$1?o.name:i$1.name}),l&&jsx("span",{className:"text-xs text-muted-foreground",children:n(e.timestamp)}),u&&e.emotion&&jsx(i,{variant:"secondary",className:a("text-xs",y(e.emotion)),children:e.emotion})]}),jsx("div",{className:"text-sm",children:e.isTyping?jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-1.5 h-1.5 bg-muted-foreground rounded-full animate-bounce"}),jsx("div",{className:"w-1.5 h-1.5 bg-muted-foreground rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-1.5 h-1.5 bg-muted-foreground rounded-full animate-bounce delay-200"})]}):jsx("div",{className:"whitespace-pre-wrap",children:e.content})})]})]}):jsxs("div",{ref:x,className:a("flex items-start space-x-3 py-4",p),...m,children:[s&&jsxs(a$1,{className:"w-10 h-10 flex-shrink-0",children:[jsx(b,{src:d$1?o.avatar:i$1.avatar,alt:d$1?o.name:i$1.name}),jsx(c,{style:{backgroundColor:d$1?o.color:i$1.color},children:(B=d$1?o.name:i$1.name)==null?void 0:B.charAt(0)})]}),jsxs("div",{className:"flex-1 min-w-0",children:[jsxs("div",{className:"flex items-center space-x-2 mb-2",children:[jsx("span",{className:"font-medium",children:d$1?o.name:i$1.name}),l&&jsx("span",{className:"text-sm text-muted-foreground",children:n(e.timestamp)}),u&&e.emotion&&jsx(i,{variant:"secondary",className:a("text-xs",y(e.emotion)),children:e.emotion})]}),jsx(d,{className:a("inline-block",d$1?"bg-primary text-primary-foreground":"bg-muted"),children:jsx(h,{className:"p-3",children:e.isTyping?jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-200"})]}):jsx("div",{className:"whitespace-pre-wrap",children:e.content})})})]})]})});X.displayName="ChatMessage";var L=V.forwardRef(({className:p,value:e,max:o=100,size:i="md",color:s="blue",...l},u)=>{let b={sm:"h-2",md:"h-3",lg:"h-4"},v={blue:"bg-blue-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"},m=Math.min(Math.max(e/o*100,0),100);return jsx("div",{ref:u,className:a("w-full bg-gray-200 rounded-full dark:bg-gray-700",b[i],p),...l,children:jsx("div",{className:a("h-full rounded-full transition-all duration-300",v[s]||v.blue),style:{width:`${m}%`}})})});L.displayName="EmotionMeter";var ee=V.forwardRef(({className:p,primaryEmotion:e$1,emotionDistribution:o=[],keywords:i$1=[],intensity:s=50,positivity:l=70,energy:u=60,showMeter:b=true,showDistribution:v=true,showKeywords:m=true,showMetrics:x=true,layout:d$1="detailed",...g$1},N)=>{let y=r=>r<30?"\uC57D\uD568":r<70?"\uBCF4\uD1B5":"\uAC15\uD568",n=r=>r<30?"\uBD80\uC815\uC801":r<70?"\uC911\uB9BD\uC801":"\uAE0D\uC815\uC801",h$1=r=>r<30?"\uB0AE\uC74C":r<70?"\uBCF4\uD1B5":"\uB192\uC74C";return d$1==="compact"?jsxs("div",{ref:N,className:a("space-y-3",p),...g$1,children:[e$1&&jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("div",{className:"flex items-center space-x-2",children:[jsxs("span",{className:"text-sm text-muted-foreground",children:[e$1.name," (",e$1.intensity,"%)"]}),b&&jsx(L,{value:e$1.intensity,size:"sm",color:"blue"})]})]}),x&&jsxs(Fragment,{children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"text-sm text-muted-foreground",children:y(s)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"text-sm text-muted-foreground",children:n(l)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"text-sm text-muted-foreground",children:h$1(u)})]})]}),m&&i$1.length>0&&jsxs("div",{children:[jsx("span",{className:"text-sm font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:i$1.map(r=>jsx(i,{variant:"secondary",className:"text-xs",children:r},r))})]})]}):d$1==="card"?jsxs(d,{ref:N,className:a("",p),...g$1,children:[jsxs(e,{children:[jsxs(f,{className:"flex items-center",children:[jsx("span",{className:"text-2xl mr-2",children:"\u2728"}),"AI \uBD84\uC11D"]}),jsx(g,{children:"\uAC10\uC815 \uBD84\uC11D \uACB0\uACFC"})]}),jsxs(h,{className:"space-y-4",children:[e$1&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("span",{className:"ml-2 text-muted-foreground",children:[e$1.name," (",e$1.intensity,"%)"]})]}),b&&jsx("div",{className:"flex justify-center",children:jsx(L,{value:e$1.intensity,size:"md",color:"blue"})})]}),x&&jsxs(Fragment,{children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:y(s)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:n(l)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:h$1(u)})]})]}),m&&i$1.length>0&&jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:i$1.map(r=>jsx(i,{variant:"secondary",className:"text-xs",children:r},r))})]})]})]}):jsxs("div",{ref:N,className:a("space-y-6",p),...g$1,children:[e$1&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uC8FC\uC694 \uAC10\uC815"}),jsxs("div",{className:"flex items-center space-x-4",children:[jsxs("div",{className:"text-center",children:[jsx("div",{className:"text-2xl font-bold text-primary",children:e$1.name}),jsxs("div",{className:"text-sm text-muted-foreground",children:[e$1.intensity,"% \uAC15\uB3C4"]})]}),b&&jsx(L,{value:e$1.intensity,size:"lg",color:"blue"})]})]}),v&&o.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uBD84\uD3EC"}),jsx("div",{className:"space-y-3",children:o.map((r,B)=>jsxs("div",{className:"space-y-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:r.emotion}),jsxs("span",{className:"text-sm text-muted-foreground",children:[r.percentage,"%"]})]}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:`${r.color} h-2 rounded-full transition-all duration-300`,style:{width:`${r.percentage}%`}})})]},B))})]}),x&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uBD84\uC11D \uC9C0\uD45C"}),jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsx("div",{className:"text-2xl font-bold text-primary",children:y(s)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-primary h-2 rounded-full transition-all duration-300",style:{width:`${s}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131"}),jsx("div",{className:"text-2xl font-bold text-green-600",children:n(l)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-green-500 h-2 rounded-full transition-all duration-300",style:{width:`${l}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0"}),jsx("div",{className:"text-2xl font-bold text-orange-600",children:h$1(u)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-orange-500 h-2 rounded-full transition-all duration-300",style:{width:`${u}%`}})})]})]})]}),m&&i$1.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uD0A4\uC6CC\uB4DC"}),jsx("div",{className:"flex flex-wrap gap-2",children:i$1.map(r=>jsx(i,{variant:"outline",className:"text-sm",children:r},r))})]})]})});ee.displayName="EmotionAnalysis";var F=V.forwardRef(({className:p,emotion:e,isSelected:o=false,size:i="md",...s},l)=>jsx("button",{ref:l,className:a("rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-500",{sm:"w-8 h-8 text-sm",md:"w-12 h-12 text-lg",lg:"w-16 h-16 text-xl"}[i],o?"border-blue-500 bg-blue-50 dark:bg-blue-900/20":"border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800",p),...s,children:e}));F.displayName="EmotionButton";var ke=[{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"}],te=V.forwardRef(({className:p,selectedEmotion:e,onEmotionSelect:o,layout:i="grid",showIntensity:s=false,intensity:l=50,onIntensityChange:u,emotions:b=ke,size:v="md",variant:m="button",...x},d)=>{let g=n=>{o==null||o(n);},N=n=>{let h=e===n.key;return m==="button"?jsx(F,{emotion:n.key,isSelected:h,size:v,onClick:()=>g(n.key),className:a("transition-all duration-200",h&&"ring-2 ring-offset-2 ring-primary"),children:n.label},n.key):m==="card"?jsx("div",{className:a("p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md",h?"border-primary bg-primary/5":"border-border hover:border-primary/50"),onClick:()=>g(n.key),children:jsxs("div",{className:"flex items-center space-x-3",children:[jsx("div",{className:a("w-8 h-8 rounded-full flex items-center justify-center",h?"bg-primary text-primary-foreground":"bg-muted"),children:n.icon&&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}"]})}),jsx("span",{className:"font-medium truncate max-w-[120px]",children:n.label})]})},n.key):m==="chip"?jsx("div",{className:a("px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium",h?"bg-primary text-primary-foreground":"bg-muted hover:bg-muted/80"),onClick:()=>g(n.key),children:jsx("span",{className:"truncate max-w-[100px]",children:n.label})},n.key):null},y={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 jsxs("div",{ref:d,className:a("space-y-4",p),...x,children:[jsx("div",{className:y[i],children:b.map(N)}),s&&e&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxs("span",{className:"text-sm text-muted-foreground",children:[l,"%"]})]}),jsx("input",{type:"range",min:"0",max:"100",value:l,onChange:n=>u==null?void 0:u(Number(n.target.value)),className:"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"}),jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[jsx("span",{children:"\uC57D\uD568"}),jsx("span",{children:"\uBCF4\uD1B5"}),jsx("span",{children:"\uAC15\uD568"})]})]}),e&&s&&jsx("div",{className:"flex justify-center",children:jsx(L,{value:l,size:"md",color:"blue"})})]})});te.displayName="EmotionSelector";var re=V.forwardRef(({className:p,size:e="md",variant:o="button",showLabel:i=false,languages:s=[{code:"ko",name:"\uD55C\uAD6D\uC5B4",flag:"\u{1F1F0}\u{1F1F7}"},{code:"en",name:"English",flag:"\u{1F1FA}\u{1F1F8}"},{code:"ja",name:"\u65E5\u672C\u8A9E",flag:"\u{1F1EF}\u{1F1F5}"},{code:"zh",name:"\u4E2D\u6587",flag:"\u{1F1E8}\u{1F1F3}"}],currentLanguage:l="ko",onLanguageChange:u,...b},v)=>{let [m,x]=V.useState(false),d=V.useRef(null),g=s.find(r=>r.code===l)||s[0],N={sm:"h-10 w-10",md:"h-12 w-12",lg:"h-14 w-14"};V.useEffect(()=>{let r=B=>{d.current&&!d.current.contains(B.target)&&x(false);};return m&&document.addEventListener("mousedown",r),()=>{document.removeEventListener("mousedown",r);}},[m]);let n=r=>{u==null||u(r),x(false);},h=()=>jsx("div",{className:"flex items-center justify-center",children:jsx("span",{className:"text-lg",children:g.flag})});return o==="icon"?jsxs("div",{ref:d,className:"relative",children:[jsx("button",{onClick:()=>x(!m),className:a("inline-flex items-center justify-center rounded-lg transition-all duration-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2",N[e],p),...b,children:h()}),m&&jsx("div",{className:"absolute top-full right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 py-2 z-50",children:s.map(r=>jsxs("button",{onClick:()=>n(r.code),className:a("w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors duration-200 flex items-center gap-3",l===r.code&&"bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400"),children:[jsx("span",{className:"text-lg",children:r.flag}),jsx("span",{className:"text-sm font-medium",children:r.name})]},r.code))})]}):o==="dropdown"?jsxs("div",{ref:d,className:"relative",children:[jsxs("button",{onClick:()=>x(!m),className:a("inline-flex items-center gap-3 rounded-lg px-4 py-3 text-sm font-medium transition-all duration-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2",p),...b,children:[jsx("span",{className:"text-lg",children:g.flag}),i&&jsx("span",{children:g.name}),jsx("svg",{className:a("w-4 h-4 transition-transform duration-200",m&&"rotate-180"),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),m&&jsx("div",{className:"absolute top-full right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 py-2 z-50",children:s.map(r=>jsxs("button",{onClick:()=>n(r.code),className:a("w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors duration-200 flex items-center gap-3",l===r.code&&"bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400"),children:[jsx("span",{className:"text-lg",children:r.flag}),jsx("span",{className:"text-sm font-medium",children:r.name})]},r.code))})]}):jsxs("button",{onClick:()=>{let B=(s.findIndex(k=>k.code===l)+1)%s.length;u==null||u(s[B].code);},className:a("inline-flex items-center gap-3 rounded-lg px-4 py-3 text-sm font-medium transition-all duration-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2",p),...b,children:[jsx("span",{className:"text-lg",children:g.flag}),i&&jsx("span",{children:g.name})]})});re.displayName="LanguageToggle";var ae=V.forwardRef(({className:p,targetId:e,text:o="Scroll down",iconName:i="arrowDown",iconSize:s=20,position:l$1="bottom-center",variant:u="default",size:b="md",animated:v=true,autoHide:m=true,hideThreshold:x=100,...d},g)=>{let[N,y]=useState(true);useEffect(()=>{if(!m)return;let k=()=>{let z=window.scrollY;y(z<x);};return k(),window.addEventListener("scroll",k,{passive:true}),()=>window.removeEventListener("scroll",k)},[m,x]);let n=()=>{if(e){let k=document.getElementById(e);k&&k.scrollIntoView({behavior:"smooth"});}else {let k=g;if(k.current){let z=k.current.nextElementSibling;z&&z.scrollIntoView({behavior:"smooth"});}}},h={"bottom-center":"bottom-8 left-1/2 transform -translate-x-1/2","bottom-left":"bottom-8 left-8","bottom-right":"bottom-8 right-8"},r={sm:"text-sm",md:"text-base",lg:"text-lg"},B={default:"text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white",primary:"text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200",secondary:"text-purple-600 dark:text-purple-400 hover:text-purple-800 dark:hover:text-purple-200",outline:"text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white"};return N?jsx("div",{ref:g,className:a("absolute z-10",h[l$1],p),...d,children:jsxs(a$2,{onClick:n,variant:"ghost",size:"sm",className:a("flex flex-col items-center space-y-2 transition-all duration-300",r[b],B[u],v&&"animate-in fade-in-0 slide-in-from-bottom-2 duration-500"),"aria-label":o,children:[jsx("span",{className:"text-xs opacity-80",children:o}),jsx(l,{name:i,size:s,className:a(v&&"animate-bounce")})]})}):null});ae.displayName="ScrollIndicator";var le=V.forwardRef(({className:p,height:e=2,color:o="gradient",position:i="top",animated:s=true,showPercentage:l=false,...u},b)=>{let[v,m]=useState(0);useEffect(()=>{let g=()=>{let N=window.scrollY,y=document.documentElement.scrollHeight-window.innerHeight,n=y>0?N/y*100:0;m(n);};return g(),window.addEventListener("scroll",g,{passive:true}),window.addEventListener("resize",g,{passive:true}),()=>{window.removeEventListener("scroll",g),window.removeEventListener("resize",g);}},[]);let x={default:"bg-blue-600",primary:"bg-purple-600",secondary:"bg-gray-600",gradient:"bg-gradient-to-r from-purple-600 via-blue-600 to-purple-600"};return jsxs("div",{ref:b,className:a("fixed z-50",{top:"top-0 left-0 right-0",bottom:"bottom-0 left-0 right-0"}[i],p),style:{height:`${e}px`},...u,children:[jsx("div",{className:"w-full h-full bg-gray-200 dark:bg-gray-700"}),jsx("div",{className:a("h-full origin-left transition-all duration-100 ease-out",x[o]||x.gradient),style:{width:`${v}%`,transformOrigin:"left"}}),l&&jsxs("div",{className:"absolute top-2 right-2 text-xs text-gray-600 dark:text-gray-400 bg-white dark:bg-gray-800 px-2 py-1 rounded",children:[Math.round(v),"%"]})]})});le.displayName="ScrollProgress";var ne=V.forwardRef(({className:p,variant:e="default",size:o="md",orientation:i="both",autoHide:s=true,smooth:l=true,children:u,...b},v)=>{let m=()=>{switch(e){case "glass":return "scrollbar-thumb-white/20 hover:scrollbar-thumb-white/30 backdrop-blur-sm";case "colorful":return "scrollbar-thumb-gradient-to-b scrollbar-thumb-from-blue-500 scrollbar-thumb-to-purple-500 hover:scrollbar-thumb-from-blue-600 hover:scrollbar-thumb-to-purple-600";case "minimal":return "scrollbar-thumb-slate-200/50 hover:scrollbar-thumb-slate-300/70 dark:scrollbar-thumb-slate-700/50 dark:hover:scrollbar-thumb-slate-600/70";case "neon":return "scrollbar-thumb-cyan-400/60 hover:scrollbar-thumb-cyan-300/80 scrollbar-thumb-shadow-lg scrollbar-thumb-shadow-cyan-500/25";default:return "scrollbar-thumb-slate-300 hover:scrollbar-thumb-slate-400 dark:scrollbar-thumb-slate-600 dark:hover:scrollbar-thumb-slate-500"}},x=()=>{switch(o){case "sm":return "scrollbar-w-1";case "lg":return "scrollbar-w-3";case "xl":return "scrollbar-w-4";default:return "scrollbar-w-2"}},d=()=>{switch(i){case "vertical":return "overflow-y-auto overflow-x-hidden";case "horizontal":return "overflow-x-auto overflow-y-hidden";default:return "overflow-auto"}},g=a("scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-full transition-all duration-200",m(),x(),d(),s&&"scrollbar-hide",l&&"scroll-smooth",p);return jsx("div",{className:g,ref:v,...b,children:u})});ne.displayName="Scrollbar";var ie=V.forwardRef(({className:p,icon:e,title:o,description:i,variant:s="default",size:l$1="md",hover:u="scale",gradient:b="blue",customGradient:v,...m},x)=>{let d={sm:"p-4",md:"p-6",lg:"p-8"},g={default:"bg-white/90 dark:bg-gray-800/80 backdrop-blur-sm border border-gray-200/50 dark:border-gray-700/50",gradient:`bg-gradient-to-br ${v||Ie(b)}`,glass:"bg-white/10 dark:bg-gray-800/10 backdrop-blur-md border border-white/20 dark:border-gray-700/20",neon:"bg-gray-900/90 dark:bg-gray-900/90 border border-cyan-400/30 dark:border-cyan-400/30 shadow-lg shadow-cyan-400/20"},N={scale:"hover:scale-105 transition-transform duration-300",glow:"hover:shadow-2xl hover:shadow-blue-500/25 dark:hover:shadow-cyan-400/25 transition-shadow duration-300",slide:"hover:-translate-y-2 transition-transform duration-300",none:""},y=l$1==="lg"?"text-5xl":l$1==="md"?"text-4xl":"text-3xl";return jsxs("div",{ref:x,className:a("rounded-2xl shadow-lg transition-all duration-300 flex flex-col items-center text-center",d[l$1],g[s],N[u],p),...m,children:[e&&jsx("div",{className:`mb-4 ${y} ${s==="neon"?"text-cyan-400":""}`,children:typeof e=="string"&&e.startsWith("http")?jsx("img",{src:e,alt:o,className:"w-full h-full object-contain"}):typeof e=="string"?jsx("span",{children:e}):jsx(l,{name:e,className:"w-full h-full"})}),jsx("h3",{className:a("font-bold mb-2",l$1==="lg"?"text-2xl":l$1==="md"?"text-xl":"text-lg",s==="gradient"?"text-white":"text-gray-900 dark:text-white"),children:o}),jsx("p",{className:a(l$1==="lg"?"text-base":"text-sm",s==="gradient"?"text-white/90":"text-gray-600 dark:text-gray-300"),children:i})]})});ie.displayName="FeatureCard";function Ie(p){let e={blue:"from-blue-500 via-cyan-500 to-blue-600",purple:"from-purple-500 via-pink-500 to-purple-600",green:"from-green-500 via-emerald-500 to-green-600",orange:"from-orange-500 via-red-500 to-orange-600",pink:"from-pink-500 via-rose-500 to-pink-600"};return e[p]||e.blue}var de=V.forwardRef(({className:p,title:e,subtitle:o,description:i,primaryAction:s,secondaryAction:l,variant:u="default",background:b="gradient",customBackground:v,size:m="lg",...x},d)=>{let g={sm:"py-16",md:"py-20",lg:"py-24",xl:"py-32"},N={sm:"text-3xl md:text-4xl",md:"text-4xl md:text-5xl",lg:"text-5xl md:text-6xl",xl:"text-6xl md:text-7xl"},y={sm:"text-lg md:text-xl",md:"text-xl md:text-2xl",lg:"text-2xl md:text-3xl",xl:"text-3xl md:text-4xl"},n={sm:"text-base md:text-lg",md:"text-lg md:text-xl",lg:"text-lg md:text-2xl",xl:"text-xl md:text-3xl"},h={none:"",gradient:"relative overflow-hidden",particles:"relative overflow-hidden",video:"relative overflow-hidden"},r={none:null,gradient:jsxs("div",{className:"absolute inset-0 z-0 pointer-events-none",children:[jsx("div",{className:"absolute -top-32 -left-32 w-[600px] h-[600px] bg-gradient-to-br from-cyan-400 via-blue-500 to-purple-600 opacity-60 rounded-full blur-3xl animate-pulse"}),jsx("div",{className:"absolute bottom-0 right-0 w-[400px] h-[400px] bg-gradient-to-tr from-orange-400 via-pink-500 to-red-600 opacity-40 rounded-full blur-2xl animate-pulse"})]}),particles:jsxs("div",{className:"absolute inset-0 z-0 pointer-events-none",children:[jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50 dark:from-gray-900 dark:via-blue-900 dark:to-purple-900"}),jsx("div",{className:"absolute inset-0 opacity-30",children:[...Array(20)].map((B,k)=>jsx("div",{className:"absolute w-2 h-2 bg-blue-500 rounded-full animate-pulse",style:{left:`${Math.random()*100}%`,top:`${Math.random()*100}%`,animationDelay:`${Math.random()*2}s`,animationDuration:`${2+Math.random()*2}s`}},k))})]}),video:jsx("div",{className:"absolute inset-0 z-0 pointer-events-none",children:jsx("video",{autoPlay:true,loop:true,muted:true,playsInline:true,className:"absolute inset-0 w-full h-full object-cover opacity-20",children:jsx("source",{src:v,type:"video/mp4"})})})};return jsxs("section",{ref:d,className:a("flex-1 flex flex-col justify-center items-center text-center px-4 sm:px-6 lg:px-8",g[m],h[b],p),...x,children:[r[b],jsxs("div",{className:"relative z-10 max-w-4xl mx-auto",children:[jsxs("h1",{className:a("font-extrabold mb-6 text-gray-900 dark:text-white drop-shadow-[0_4px_24px_rgba(0,0,0,0.1)] dark:drop-shadow-[0_4px_24px_rgba(0,0,0,0.25)]",N[m]),children:[jsx("span",{className:"block text-transparent bg-clip-text bg-gradient-to-r from-blue-600 via-purple-600 to-cyan-600 dark:from-cyan-300 dark:via-blue-400 dark:to-purple-400 drop-shadow-[0_2px_8px_rgba(39,94,254,0.3)]",children:e}),o&&jsx("span",{className:a("block font-semibold mt-4 text-gray-700 dark:text-white/90",y[m]),children:o})]}),jsx("p",{className:a("text-gray-600 dark:text-white/80 mb-10 max-w-2xl mx-auto drop-shadow-[0_2px_8px_rgba(0,0,0,0.05)] dark:drop-shadow-[0_2px_8px_rgba(0,0,0,0.15)]",n[m]),children:i}),(s||l)&&jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center mb-8",children:[s&&jsxs(a$2,{href:s.href,variant:"gradient",size:m==="xl"?"lg":"md",className:"inline-flex items-center",children:[s.icon&&jsx("span",{className:"mr-2",children:s.icon}),s.label]}),l&&jsxs(a$2,{href:l.href,variant:"outline",size:m==="xl"?"lg":"md",className:"inline-flex items-center",children:[l.icon&&jsx("span",{className:"mr-2",children:l.icon}),l.label]})]})]})]})});de.displayName="HeroSection";var Ae={blue:{container:"bg-gradient-to-r from-blue-50 to-indigo-50 dark:from-blue-900/20 dark:to-indigo-900/20 rounded-lg p-4 border border-blue-200 dark:border-blue-700",icon:"h-5 w-5 text-blue-600 dark:text-blue-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-blue-900 dark:text-blue-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"},purple:{container:"bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 rounded-lg p-4 border border-purple-200 dark:border-purple-700",icon:"h-5 w-5 text-purple-600 dark:text-purple-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-purple-900 dark:text-purple-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"},green:{container:"bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 rounded-lg p-4 border border-green-200 dark:border-green-700",icon:"h-5 w-5 text-green-600 dark:text-green-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-green-900 dark:text-green-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"},orange:{container:"bg-gradient-to-r from-orange-50 to-rose-50 dark:from-orange-900/20 dark:to-rose-900/20 rounded-lg p-4 border border-orange-200 dark:border-orange-700",icon:"h-5 w-5 text-orange-600 dark:text-orange-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-orange-900 dark:text-orange-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"}},ce=V.forwardRef(({className:p,title:e,icon:o,tone:i="blue",children:s,...l$1},u)=>{let b=Ae[i];return jsx("div",{ref:u,className:a(b.container,p),...l$1,children:jsxs("div",{className:"flex items-start mb-2",children:[jsx(l,{name:o,className:b.icon}),jsxs("div",{className:"flex-1",children:[jsx("span",{className:b.title,children:e}),jsx("div",{className:b.body,children:s})]})]})})});ce.displayName="InfoCard";export{Q as Bookmark,X as ChatMessage,ee as EmotionAnalysis,F as EmotionButton,L as EmotionMeter,te as EmotionSelector,ie as FeatureCard,de as HeroSection,ce as InfoCard,re as LanguageToggle,ae as ScrollIndicator,le as ScrollProgress,ne as Scrollbar};//# sourceMappingURL=advanced.mjs.map
|
|
1
|
+
import {a as a$1,b,c,d,h,e,f,g}from'./chunk-627HOIRV.mjs';export{l as ComponentLayout}from'./chunk-627HOIRV.mjs';export{d as ActivityFeed,l as DashboardEmptyState,c as DashboardGrid,m as DashboardSidebar,o as DashboardToolbar,f as MembershipBadge,t as MerchantList,j as MetricCard,g as MiniBarChart,i as NotificationCard,e as ProfileCard,k as ProgressCard,b as QuickActionCard,s as RoutingBreakdownCard,v as SectionHeader,r as SettlementTimeline,a as StatCard,u as StatsPanel,h as SummaryCard,q as TransactionDetailDrawer,n as TransactionsTable,p as TrendChart}from'./chunk-R5KCFRYV.mjs';import {i}from'./chunk-E5PN4LUS.mjs';export{a as AdvancedPageTransition,g as CubePageTransition,b as FadePageTransition,e as FlipPageTransition,f as MorphPageTransition,d as ScalePageTransition,c as SlidePageTransition,h as ZoomPageTransition,i as usePageTransition,j as usePageTransitionManager}from'./chunk-KHEJZ3U4.mjs';import {a as a$2}from'./chunk-ACEKLG37.mjs';import {l}from'./chunk-UGSYQDR4.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import V,{useState,useEffect}from'react';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var Q=V.forwardRef(({className:p,id:e,storageKey:o="bookmarks",defaultBookmarked:i=false,onBookmarkChange:s,size:l$1="md",variant:u="default",...b},v)=>{let[m,x]=useState(i);useEffect(()=>{let y=localStorage.getItem(o);if(y){let n=JSON.parse(y);x(n.includes(e));}},[e,o]);let d=()=>{let y=!m;x(y);let n=localStorage.getItem(o),h=n?JSON.parse(n):[];if(y)h.includes(e)||h.push(e);else {let r=h.indexOf(e);r>-1&&h.splice(r,1);}localStorage.setItem(o,JSON.stringify(h)),s==null||s(y);},g={sm:"w-6 h-6",md:"w-8 h-8",lg:"w-10 h-10"},N={default:"text-slate-400 hover:text-yellow-500 transition-colors",filled:"text-yellow-500 hover:text-yellow-600 transition-colors",outline:"border border-slate-300 dark:border-slate-600 text-slate-400 hover:text-yellow-500 hover:border-yellow-500 transition-colors rounded"};return jsx("button",{ref:v,onClick:d,className:a("flex items-center justify-center focus:outline-none focus:ring-2 focus:ring-yellow-500 focus:ring-offset-2",g[l$1],N[u],p),...b,children:jsx(l,{name:"star",className:a("transition-all duration-200",m&&"fill-current")})})});Q.displayName="Bookmark";var X=V.forwardRef(({className:p,message:e,user:o={name:"\uC0AC\uC6A9\uC790",color:"#3b82f6"},assistant:i$1={name:"AI",color:"#10b981"},showAvatar:s=true,showTimestamp:l=true,showEmotion:u=true,variant:b$1="default",theme:v={userBubbleBg:"#3b82f6",userBubbleText:"#ffffff",aiBubbleBg:"#f3f4f6",aiBubbleText:"#1f2937"},...m},x)=>{var h$1,r,B;let d$1=e.role==="user";e.role==="assistant";e.role==="system";let y=k=>k?{joy:"bg-yellow-100 text-yellow-800",sadness:"bg-blue-100 text-blue-800",anger:"bg-red-100 text-red-800",calm:"bg-green-100 text-green-800",excitement:"bg-pink-100 text-pink-800",worry:"bg-gray-100 text-gray-800",gratitude:"bg-purple-100 text-purple-800",loneliness:"bg-indigo-100 text-indigo-800"}[k]||"bg-gray-100 text-gray-800":"bg-gray-100",n=k=>k.toLocaleTimeString("ko-KR",{hour:"2-digit",minute:"2-digit"});return b$1==="bubble"?jsx("div",{ref:x,className:a("flex w-full",d$1?"justify-end":"justify-start",p),...m,children:jsxs("div",{className:a("flex max-w-[80%] space-x-2",d$1?"flex-row-reverse space-x-reverse":"flex-row"),children:[s&&jsxs(a$1,{className:"w-8 h-8 flex-shrink-0",children:[jsx(b,{src:d$1?o.avatar:i$1.avatar,alt:d$1?o.name:i$1.name}),jsx(c,{style:{backgroundColor:d$1?o.color:i$1.color},children:(h$1=d$1?o.name:i$1.name)==null?void 0:h$1.charAt(0)})]}),jsxs("div",{className:"space-y-1",children:[jsx("div",{className:a("px-4 py-2 rounded-2xl max-w-full break-words",d$1?"rounded-br-md":"rounded-bl-md"),style:{backgroundColor:d$1?v.userBubbleBg:v.aiBubbleBg,color:d$1?v.userBubbleText:v.aiBubbleText},children:e.isTyping?jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-200"})]}):jsx("div",{className:"whitespace-pre-wrap",children:e.content})}),jsxs("div",{className:a("flex items-center space-x-2 text-xs text-muted-foreground",d$1?"justify-end":"justify-start"),children:[l&&jsx("span",{children:n(e.timestamp)}),u&&e.emotion&&jsx(i,{variant:"secondary",className:a("text-xs",y(e.emotion)),children:e.emotion})]})]})]})}):b$1==="compact"?jsxs("div",{ref:x,className:a("flex items-start space-x-3 py-2",p),...m,children:[s&&jsxs(a$1,{className:"w-6 h-6 flex-shrink-0",children:[jsx(b,{src:d$1?o.avatar:i$1.avatar,alt:d$1?o.name:i$1.name}),jsx(c,{style:{backgroundColor:d$1?o.color:i$1.color},children:(r=d$1?o.name:i$1.name)==null?void 0:r.charAt(0)})]}),jsxs("div",{className:"flex-1 min-w-0",children:[jsxs("div",{className:"flex items-center space-x-2 mb-1",children:[jsx("span",{className:"text-sm font-medium",children:d$1?o.name:i$1.name}),l&&jsx("span",{className:"text-xs text-muted-foreground",children:n(e.timestamp)}),u&&e.emotion&&jsx(i,{variant:"secondary",className:a("text-xs",y(e.emotion)),children:e.emotion})]}),jsx("div",{className:"text-sm",children:e.isTyping?jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-1.5 h-1.5 bg-muted-foreground rounded-full animate-bounce"}),jsx("div",{className:"w-1.5 h-1.5 bg-muted-foreground rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-1.5 h-1.5 bg-muted-foreground rounded-full animate-bounce delay-200"})]}):jsx("div",{className:"whitespace-pre-wrap",children:e.content})})]})]}):jsxs("div",{ref:x,className:a("flex items-start space-x-3 py-4",p),...m,children:[s&&jsxs(a$1,{className:"w-10 h-10 flex-shrink-0",children:[jsx(b,{src:d$1?o.avatar:i$1.avatar,alt:d$1?o.name:i$1.name}),jsx(c,{style:{backgroundColor:d$1?o.color:i$1.color},children:(B=d$1?o.name:i$1.name)==null?void 0:B.charAt(0)})]}),jsxs("div",{className:"flex-1 min-w-0",children:[jsxs("div",{className:"flex items-center space-x-2 mb-2",children:[jsx("span",{className:"font-medium",children:d$1?o.name:i$1.name}),l&&jsx("span",{className:"text-sm text-muted-foreground",children:n(e.timestamp)}),u&&e.emotion&&jsx(i,{variant:"secondary",className:a("text-xs",y(e.emotion)),children:e.emotion})]}),jsx(d,{className:a("inline-block",d$1?"bg-primary text-primary-foreground":"bg-muted"),children:jsx(h,{className:"p-3",children:e.isTyping?jsxs("div",{className:"flex space-x-1",children:[jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-100"}),jsx("div",{className:"w-2 h-2 bg-current rounded-full animate-bounce delay-200"})]}):jsx("div",{className:"whitespace-pre-wrap",children:e.content})})})]})]})});X.displayName="ChatMessage";var L=V.forwardRef(({className:p,value:e,max:o=100,size:i="md",color:s="blue",...l},u)=>{let b={sm:"h-2",md:"h-3",lg:"h-4"},v={blue:"bg-blue-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"},m=Math.min(Math.max(e/o*100,0),100);return jsx("div",{ref:u,className:a("w-full bg-gray-200 rounded-full dark:bg-gray-700",b[i],p),...l,children:jsx("div",{className:a("h-full rounded-full transition-all duration-300",v[s]||v.blue),style:{width:`${m}%`}})})});L.displayName="EmotionMeter";var ee=V.forwardRef(({className:p,primaryEmotion:e$1,emotionDistribution:o=[],keywords:i$1=[],intensity:s=50,positivity:l=70,energy:u=60,showMeter:b=true,showDistribution:v=true,showKeywords:m=true,showMetrics:x=true,layout:d$1="detailed",...g$1},N)=>{let y=r=>r<30?"\uC57D\uD568":r<70?"\uBCF4\uD1B5":"\uAC15\uD568",n=r=>r<30?"\uBD80\uC815\uC801":r<70?"\uC911\uB9BD\uC801":"\uAE0D\uC815\uC801",h$1=r=>r<30?"\uB0AE\uC74C":r<70?"\uBCF4\uD1B5":"\uB192\uC74C";return d$1==="compact"?jsxs("div",{ref:N,className:a("space-y-3",p),...g$1,children:[e$1&&jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("div",{className:"flex items-center space-x-2",children:[jsxs("span",{className:"text-sm text-muted-foreground",children:[e$1.name," (",e$1.intensity,"%)"]}),b&&jsx(L,{value:e$1.intensity,size:"sm",color:"blue"})]})]}),x&&jsxs(Fragment,{children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"text-sm text-muted-foreground",children:y(s)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"text-sm text-muted-foreground",children:n(l)})]}),jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"text-sm text-muted-foreground",children:h$1(u)})]})]}),m&&i$1.length>0&&jsxs("div",{children:[jsx("span",{className:"text-sm font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:i$1.map(r=>jsx(i,{variant:"secondary",className:"text-xs",children:r},r))})]})]}):d$1==="card"?jsxs(d,{ref:N,className:a("",p),...g$1,children:[jsxs(e,{children:[jsxs(f,{className:"flex items-center",children:[jsx("span",{className:"text-2xl mr-2",children:"\u2728"}),"AI \uBD84\uC11D"]}),jsx(g,{children:"\uAC10\uC815 \uBD84\uC11D \uACB0\uACFC"})]}),jsxs(h,{className:"space-y-4",children:[e$1&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC8FC\uC694 \uAC10\uC815:"}),jsxs("span",{className:"ml-2 text-muted-foreground",children:[e$1.name," (",e$1.intensity,"%)"]})]}),b&&jsx("div",{className:"flex justify-center",children:jsx(L,{value:e$1.intensity,size:"md",color:"blue"})})]}),x&&jsxs(Fragment,{children:[jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAC10\uC815 \uAC15\uB3C4:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:y(s)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uAE0D\uC815\uC131:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:n(l)})]}),jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uC5D0\uB108\uC9C0:"}),jsx("span",{className:"ml-2 text-muted-foreground",children:h$1(u)})]})]}),m&&i$1.length>0&&jsxs("div",{className:"text-sm",children:[jsx("span",{className:"font-medium",children:"\uD0A4\uC6CC\uB4DC:"}),jsx("div",{className:"flex flex-wrap gap-1 mt-1",children:i$1.map(r=>jsx(i,{variant:"secondary",className:"text-xs",children:r},r))})]})]})]}):jsxs("div",{ref:N,className:a("space-y-6",p),...g$1,children:[e$1&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uC8FC\uC694 \uAC10\uC815"}),jsxs("div",{className:"flex items-center space-x-4",children:[jsxs("div",{className:"text-center",children:[jsx("div",{className:"text-2xl font-bold text-primary",children:e$1.name}),jsxs("div",{className:"text-sm text-muted-foreground",children:[e$1.intensity,"% \uAC15\uB3C4"]})]}),b&&jsx(L,{value:e$1.intensity,size:"lg",color:"blue"})]})]}),v&&o.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uBD84\uD3EC"}),jsx("div",{className:"space-y-3",children:o.map((r,B)=>jsxs("div",{className:"space-y-2",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:r.emotion}),jsxs("span",{className:"text-sm text-muted-foreground",children:[r.percentage,"%"]})]}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:`${r.color} h-2 rounded-full transition-all duration-300`,style:{width:`${r.percentage}%`}})})]},B))})]}),x&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uBD84\uC11D \uC9C0\uD45C"}),jsxs("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-4",children:[jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsx("div",{className:"text-2xl font-bold text-primary",children:y(s)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-primary h-2 rounded-full transition-all duration-300",style:{width:`${s}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uAE0D\uC815\uC131"}),jsx("div",{className:"text-2xl font-bold text-green-600",children:n(l)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-green-500 h-2 rounded-full transition-all duration-300",style:{width:`${l}%`}})})]}),jsxs("div",{className:"space-y-2",children:[jsx("div",{className:"text-sm font-medium",children:"\uC5D0\uB108\uC9C0"}),jsx("div",{className:"text-2xl font-bold text-orange-600",children:h$1(u)}),jsx("div",{className:"w-full bg-muted rounded-full h-2",children:jsx("div",{className:"bg-orange-500 h-2 rounded-full transition-all duration-300",style:{width:`${u}%`}})})]})]})]}),m&&i$1.length>0&&jsxs("div",{className:"space-y-4",children:[jsx("h3",{className:"text-lg font-semibold",children:"\uAC10\uC815 \uD0A4\uC6CC\uB4DC"}),jsx("div",{className:"flex flex-wrap gap-2",children:i$1.map(r=>jsx(i,{variant:"outline",className:"text-sm",children:r},r))})]})]})});ee.displayName="EmotionAnalysis";var F=V.forwardRef(({className:p,emotion:e,isSelected:o=false,size:i="md",...s},l)=>jsx("button",{ref:l,className:a("rounded-full border-2 transition-all duration-200 hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-500",{sm:"w-8 h-8 text-sm",md:"w-12 h-12 text-lg",lg:"w-16 h-16 text-xl"}[i],o?"border-blue-500 bg-blue-50 dark:bg-blue-900/20":"border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800",p),...s,children:e}));F.displayName="EmotionButton";var ke=[{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"}],te=V.forwardRef(({className:p,selectedEmotion:e,onEmotionSelect:o,layout:i="grid",showIntensity:s=false,intensity:l=50,onIntensityChange:u,emotions:b=ke,size:v="md",variant:m="button",...x},d)=>{let g=n=>{o==null||o(n);},N=n=>{let h=e===n.key;return m==="button"?jsx(F,{emotion:n.key,isSelected:h,size:v,onClick:()=>g(n.key),className:a("transition-all duration-200",h&&"ring-2 ring-offset-2 ring-primary"),children:n.label},n.key):m==="card"?jsx("div",{className:a("p-4 rounded-lg border-2 cursor-pointer transition-all duration-200 hover:shadow-md",h?"border-primary bg-primary/5":"border-border hover:border-primary/50"),onClick:()=>g(n.key),children:jsxs("div",{className:"flex items-center space-x-3",children:[jsx("div",{className:a("w-8 h-8 rounded-full flex items-center justify-center",h?"bg-primary text-primary-foreground":"bg-muted"),children:n.icon&&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}"]})}),jsx("span",{className:"font-medium truncate max-w-[120px]",children:n.label})]})},n.key):m==="chip"?jsx("div",{className:a("px-3 py-1 rounded-full cursor-pointer transition-all duration-200 text-sm font-medium",h?"bg-primary text-primary-foreground":"bg-muted hover:bg-muted/80"),onClick:()=>g(n.key),children:jsx("span",{className:"truncate max-w-[100px]",children:n.label})},n.key):null},y={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 jsxs("div",{ref:d,className:a("space-y-4",p),...x,children:[jsx("div",{className:y[i],children:b.map(N)}),s&&e&&jsxs("div",{className:"space-y-3",children:[jsxs("div",{className:"flex items-center justify-between",children:[jsx("span",{className:"text-sm font-medium",children:"\uAC10\uC815 \uAC15\uB3C4"}),jsxs("span",{className:"text-sm text-muted-foreground",children:[l,"%"]})]}),jsx("input",{type:"range",min:"0",max:"100",value:l,onChange:n=>u==null?void 0:u(Number(n.target.value)),className:"w-full h-2 bg-muted rounded-lg appearance-none cursor-pointer slider"}),jsxs("div",{className:"flex justify-between text-xs text-muted-foreground",children:[jsx("span",{children:"\uC57D\uD568"}),jsx("span",{children:"\uBCF4\uD1B5"}),jsx("span",{children:"\uAC15\uD568"})]})]}),e&&s&&jsx("div",{className:"flex justify-center",children:jsx(L,{value:l,size:"md",color:"blue"})})]})});te.displayName="EmotionSelector";var re=V.forwardRef(({className:p,size:e="md",variant:o="button",showLabel:i=false,languages:s=[{code:"ko",name:"\uD55C\uAD6D\uC5B4",flag:"\u{1F1F0}\u{1F1F7}"},{code:"en",name:"English",flag:"\u{1F1FA}\u{1F1F8}"},{code:"ja",name:"\u65E5\u672C\u8A9E",flag:"\u{1F1EF}\u{1F1F5}"},{code:"zh",name:"\u4E2D\u6587",flag:"\u{1F1E8}\u{1F1F3}"}],currentLanguage:l="ko",onLanguageChange:u,...b},v)=>{let [m,x]=V.useState(false),d=V.useRef(null),g=s.find(r=>r.code===l)||s[0],N={sm:"h-10 w-10",md:"h-12 w-12",lg:"h-14 w-14"};V.useEffect(()=>{let r=B=>{d.current&&!d.current.contains(B.target)&&x(false);};return m&&document.addEventListener("mousedown",r),()=>{document.removeEventListener("mousedown",r);}},[m]);let n=r=>{u==null||u(r),x(false);},h=()=>jsx("div",{className:"flex items-center justify-center",children:jsx("span",{className:"text-lg",children:g.flag})});return o==="icon"?jsxs("div",{ref:d,className:"relative",children:[jsx("button",{onClick:()=>x(!m),className:a("inline-flex items-center justify-center rounded-lg transition-all duration-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2",N[e],p),...b,children:h()}),m&&jsx("div",{className:"absolute top-full right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 py-2 z-50",children:s.map(r=>jsxs("button",{onClick:()=>n(r.code),className:a("w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors duration-200 flex items-center gap-3",l===r.code&&"bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400"),children:[jsx("span",{className:"text-lg",children:r.flag}),jsx("span",{className:"text-sm font-medium",children:r.name})]},r.code))})]}):o==="dropdown"?jsxs("div",{ref:d,className:"relative",children:[jsxs("button",{onClick:()=>x(!m),className:a("inline-flex items-center gap-3 rounded-lg px-4 py-3 text-sm font-medium transition-all duration-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2",p),...b,children:[jsx("span",{className:"text-lg",children:g.flag}),i&&jsx("span",{children:g.name}),jsx("svg",{className:a("w-4 h-4 transition-transform duration-200",m&&"rotate-180"),fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),m&&jsx("div",{className:"absolute top-full right-0 mt-2 w-48 bg-white dark:bg-gray-800 rounded-lg shadow-lg border border-gray-200 dark:border-gray-700 py-2 z-50",children:s.map(r=>jsxs("button",{onClick:()=>n(r.code),className:a("w-full px-4 py-3 text-left hover:bg-gray-50 dark:hover:bg-gray-700 transition-colors duration-200 flex items-center gap-3",l===r.code&&"bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400"),children:[jsx("span",{className:"text-lg",children:r.flag}),jsx("span",{className:"text-sm font-medium",children:r.name})]},r.code))})]}):jsxs("button",{onClick:()=>{let B=(s.findIndex(k=>k.code===l)+1)%s.length;u==null||u(s[B].code);},className:a("inline-flex items-center gap-3 rounded-lg px-4 py-3 text-sm font-medium transition-all duration-300 hover:bg-gray-100 dark:hover:bg-gray-800 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/50 focus-visible:ring-offset-2",p),...b,children:[jsx("span",{className:"text-lg",children:g.flag}),i&&jsx("span",{children:g.name})]})});re.displayName="LanguageToggle";var ae=V.forwardRef(({className:p,targetId:e,text:o="Scroll down",iconName:i="arrowDown",iconSize:s=20,position:l$1="bottom-center",variant:u="default",size:b="md",animated:v=true,autoHide:m=true,hideThreshold:x=100,...d},g)=>{let[N,y]=useState(true);useEffect(()=>{if(!m)return;let k=()=>{let z=window.scrollY;y(z<x);};return k(),window.addEventListener("scroll",k,{passive:true}),()=>window.removeEventListener("scroll",k)},[m,x]);let n=()=>{if(e){let k=document.getElementById(e);k&&k.scrollIntoView({behavior:"smooth"});}else {let k=g;if(k.current){let z=k.current.nextElementSibling;z&&z.scrollIntoView({behavior:"smooth"});}}},h={"bottom-center":"bottom-8 left-1/2 transform -translate-x-1/2","bottom-left":"bottom-8 left-8","bottom-right":"bottom-8 right-8"},r={sm:"text-sm",md:"text-base",lg:"text-lg"},B={default:"text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white",primary:"text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-200",secondary:"text-purple-600 dark:text-purple-400 hover:text-purple-800 dark:hover:text-purple-200",outline:"text-gray-700 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white"};return N?jsx("div",{ref:g,className:a("absolute z-10",h[l$1],p),...d,children:jsxs(a$2,{onClick:n,variant:"ghost",size:"sm",className:a("flex flex-col items-center space-y-2 transition-all duration-300",r[b],B[u],v&&"animate-in fade-in-0 slide-in-from-bottom-2 duration-500"),"aria-label":o,children:[jsx("span",{className:"text-xs opacity-80",children:o}),jsx(l,{name:i,size:s,className:a(v&&"animate-bounce")})]})}):null});ae.displayName="ScrollIndicator";var le=V.forwardRef(({className:p,height:e=2,color:o="gradient",position:i="top",animated:s=true,showPercentage:l=false,...u},b)=>{let[v,m]=useState(0);useEffect(()=>{let g=()=>{let N=window.scrollY,y=document.documentElement.scrollHeight-window.innerHeight,n=y>0?N/y*100:0;m(n);};return g(),window.addEventListener("scroll",g,{passive:true}),window.addEventListener("resize",g,{passive:true}),()=>{window.removeEventListener("scroll",g),window.removeEventListener("resize",g);}},[]);let x={default:"bg-blue-600",primary:"bg-purple-600",secondary:"bg-gray-600",gradient:"bg-gradient-to-r from-purple-600 via-blue-600 to-purple-600"};return jsxs("div",{ref:b,className:a("fixed z-50",{top:"top-0 left-0 right-0",bottom:"bottom-0 left-0 right-0"}[i],p),style:{height:`${e}px`},...u,children:[jsx("div",{className:"w-full h-full bg-gray-200 dark:bg-gray-700"}),jsx("div",{className:a("h-full origin-left transition-all duration-100 ease-out",x[o]||x.gradient),style:{width:`${v}%`,transformOrigin:"left"}}),l&&jsxs("div",{className:"absolute top-2 right-2 text-xs text-gray-600 dark:text-gray-400 bg-white dark:bg-gray-800 px-2 py-1 rounded",children:[Math.round(v),"%"]})]})});le.displayName="ScrollProgress";var ne=V.forwardRef(({className:p,variant:e="default",size:o="md",orientation:i="both",autoHide:s=true,smooth:l=true,children:u,...b},v)=>{let m=()=>{switch(e){case "glass":return "scrollbar-thumb-white/20 hover:scrollbar-thumb-white/30 backdrop-blur-sm";case "colorful":return "scrollbar-thumb-gradient-to-b scrollbar-thumb-from-blue-500 scrollbar-thumb-to-purple-500 hover:scrollbar-thumb-from-blue-600 hover:scrollbar-thumb-to-purple-600";case "minimal":return "scrollbar-thumb-slate-200/50 hover:scrollbar-thumb-slate-300/70 dark:scrollbar-thumb-slate-700/50 dark:hover:scrollbar-thumb-slate-600/70";case "neon":return "scrollbar-thumb-cyan-400/60 hover:scrollbar-thumb-cyan-300/80 scrollbar-thumb-shadow-lg scrollbar-thumb-shadow-cyan-500/25";default:return "scrollbar-thumb-slate-300 hover:scrollbar-thumb-slate-400 dark:scrollbar-thumb-slate-600 dark:hover:scrollbar-thumb-slate-500"}},x=()=>{switch(o){case "sm":return "scrollbar-w-1";case "lg":return "scrollbar-w-3";case "xl":return "scrollbar-w-4";default:return "scrollbar-w-2"}},d=()=>{switch(i){case "vertical":return "overflow-y-auto overflow-x-hidden";case "horizontal":return "overflow-x-auto overflow-y-hidden";default:return "overflow-auto"}},g=a("scrollbar-thin scrollbar-track-transparent scrollbar-thumb-rounded-full transition-all duration-200",m(),x(),d(),s&&"scrollbar-hide",l&&"scroll-smooth",p);return jsx("div",{className:g,ref:v,...b,children:u})});ne.displayName="Scrollbar";var ie=V.forwardRef(({className:p,icon:e,title:o,description:i,variant:s="default",size:l$1="md",hover:u="scale",gradient:b="blue",customGradient:v,...m},x)=>{let d={sm:"p-4",md:"p-6",lg:"p-8"},g={default:"bg-white/90 dark:bg-gray-800/80 backdrop-blur-sm border border-gray-200/50 dark:border-gray-700/50",gradient:`bg-gradient-to-br ${v||Ie(b)}`,glass:"bg-white/10 dark:bg-gray-800/10 backdrop-blur-md border border-white/20 dark:border-gray-700/20",neon:"bg-gray-900/90 dark:bg-gray-900/90 border border-cyan-400/30 dark:border-cyan-400/30 shadow-lg shadow-cyan-400/20"},N={scale:"hover:scale-105 transition-transform duration-300",glow:"hover:shadow-2xl hover:shadow-blue-500/25 dark:hover:shadow-cyan-400/25 transition-shadow duration-300",slide:"hover:-translate-y-2 transition-transform duration-300",none:""},y=l$1==="lg"?"text-5xl":l$1==="md"?"text-4xl":"text-3xl";return jsxs("div",{ref:x,className:a("rounded-2xl shadow-lg transition-all duration-300 flex flex-col items-center text-center",d[l$1],g[s],N[u],p),...m,children:[e&&jsx("div",{className:`mb-4 ${y} ${s==="neon"?"text-cyan-400":""}`,children:typeof e=="string"&&e.startsWith("http")?jsx("img",{src:e,alt:o,className:"w-full h-full object-contain"}):typeof e=="string"?jsx("span",{children:e}):jsx(l,{name:e,className:"w-full h-full"})}),jsx("h3",{className:a("font-bold mb-2",l$1==="lg"?"text-2xl":l$1==="md"?"text-xl":"text-lg",s==="gradient"?"text-white":"text-gray-900 dark:text-white"),children:o}),jsx("p",{className:a(l$1==="lg"?"text-base":"text-sm",s==="gradient"?"text-white/90":"text-gray-600 dark:text-gray-300"),children:i})]})});ie.displayName="FeatureCard";function Ie(p){let e={blue:"from-blue-500 via-cyan-500 to-blue-600",purple:"from-purple-500 via-pink-500 to-purple-600",green:"from-green-500 via-emerald-500 to-green-600",orange:"from-orange-500 via-red-500 to-orange-600",pink:"from-pink-500 via-rose-500 to-pink-600"};return e[p]||e.blue}var de=V.forwardRef(({className:p,title:e,subtitle:o,description:i,primaryAction:s,secondaryAction:l,variant:u="default",background:b="gradient",customBackground:v,size:m="lg",...x},d)=>{let g={sm:"py-16",md:"py-20",lg:"py-24",xl:"py-32"},N={sm:"text-3xl md:text-4xl",md:"text-4xl md:text-5xl",lg:"text-5xl md:text-6xl",xl:"text-6xl md:text-7xl"},y={sm:"text-lg md:text-xl",md:"text-xl md:text-2xl",lg:"text-2xl md:text-3xl",xl:"text-3xl md:text-4xl"},n={sm:"text-base md:text-lg",md:"text-lg md:text-xl",lg:"text-lg md:text-2xl",xl:"text-xl md:text-3xl"},h={none:"",gradient:"relative overflow-hidden",particles:"relative overflow-hidden",video:"relative overflow-hidden"},r={none:null,gradient:jsxs("div",{className:"absolute inset-0 z-0 pointer-events-none",children:[jsx("div",{className:"absolute -top-32 -left-32 w-[600px] h-[600px] bg-gradient-to-br from-cyan-400 via-blue-500 to-purple-600 opacity-60 rounded-full blur-3xl animate-pulse"}),jsx("div",{className:"absolute bottom-0 right-0 w-[400px] h-[400px] bg-gradient-to-tr from-orange-400 via-pink-500 to-red-600 opacity-40 rounded-full blur-2xl animate-pulse"})]}),particles:jsxs("div",{className:"absolute inset-0 z-0 pointer-events-none",children:[jsx("div",{className:"absolute inset-0 bg-gradient-to-br from-blue-50 via-indigo-50 to-purple-50 dark:from-gray-900 dark:via-blue-900 dark:to-purple-900"}),jsx("div",{className:"absolute inset-0 opacity-30",children:[...Array(20)].map((B,k)=>jsx("div",{className:"absolute w-2 h-2 bg-blue-500 rounded-full animate-pulse",style:{left:`${Math.random()*100}%`,top:`${Math.random()*100}%`,animationDelay:`${Math.random()*2}s`,animationDuration:`${2+Math.random()*2}s`}},k))})]}),video:jsx("div",{className:"absolute inset-0 z-0 pointer-events-none",children:jsx("video",{autoPlay:true,loop:true,muted:true,playsInline:true,className:"absolute inset-0 w-full h-full object-cover opacity-20",children:jsx("source",{src:v,type:"video/mp4"})})})};return jsxs("section",{ref:d,className:a("flex-1 flex flex-col justify-center items-center text-center px-4 sm:px-6 lg:px-8",g[m],h[b],p),...x,children:[r[b],jsxs("div",{className:"relative z-10 max-w-4xl mx-auto",children:[jsxs("h1",{className:a("font-extrabold mb-6 text-gray-900 dark:text-white drop-shadow-[0_4px_24px_rgba(0,0,0,0.1)] dark:drop-shadow-[0_4px_24px_rgba(0,0,0,0.25)]",N[m]),children:[jsx("span",{className:"block text-transparent bg-clip-text bg-gradient-to-r from-blue-600 via-purple-600 to-cyan-600 dark:from-cyan-300 dark:via-blue-400 dark:to-purple-400 drop-shadow-[0_2px_8px_rgba(39,94,254,0.3)]",children:e}),o&&jsx("span",{className:a("block font-semibold mt-4 text-gray-700 dark:text-white/90",y[m]),children:o})]}),jsx("p",{className:a("text-gray-600 dark:text-white/80 mb-10 max-w-2xl mx-auto drop-shadow-[0_2px_8px_rgba(0,0,0,0.05)] dark:drop-shadow-[0_2px_8px_rgba(0,0,0,0.15)]",n[m]),children:i}),(s||l)&&jsxs("div",{className:"flex flex-col sm:flex-row gap-4 justify-center mb-8",children:[s&&jsxs(a$2,{href:s.href,variant:"gradient",size:m==="xl"?"lg":"md",className:"inline-flex items-center",children:[s.icon&&jsx("span",{className:"mr-2",children:s.icon}),s.label]}),l&&jsxs(a$2,{href:l.href,variant:"outline",size:m==="xl"?"lg":"md",className:"inline-flex items-center",children:[l.icon&&jsx("span",{className:"mr-2",children:l.icon}),l.label]})]})]})]})});de.displayName="HeroSection";var Ae={blue:{container:"bg-gradient-to-r from-blue-50 to-indigo-50 dark:from-blue-900/20 dark:to-indigo-900/20 rounded-lg p-4 border border-blue-200 dark:border-blue-700",icon:"h-5 w-5 text-blue-600 dark:text-blue-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-blue-900 dark:text-blue-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"},purple:{container:"bg-gradient-to-r from-purple-50 to-pink-50 dark:from-purple-900/20 dark:to-pink-900/20 rounded-lg p-4 border border-purple-200 dark:border-purple-700",icon:"h-5 w-5 text-purple-600 dark:text-purple-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-purple-900 dark:text-purple-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"},green:{container:"bg-gradient-to-r from-green-50 to-emerald-50 dark:from-green-900/20 dark:to-emerald-900/20 rounded-lg p-4 border border-green-200 dark:border-green-700",icon:"h-5 w-5 text-green-600 dark:text-green-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-green-900 dark:text-green-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"},orange:{container:"bg-gradient-to-r from-orange-50 to-rose-50 dark:from-orange-900/20 dark:to-rose-900/20 rounded-lg p-4 border border-orange-200 dark:border-orange-700",icon:"h-5 w-5 text-orange-600 dark:text-orange-400 mr-3 mt-0.5 flex-shrink-0",title:"text-sm font-medium text-orange-900 dark:text-orange-100 mb-2 block",body:"text-gray-800 dark:text-gray-200 text-sm leading-relaxed"}},ce=V.forwardRef(({className:p,title:e,icon:o,tone:i="blue",children:s,...l$1},u)=>{let b=Ae[i];return jsx("div",{ref:u,className:a(b.container,p),...l$1,children:jsxs("div",{className:"flex items-start mb-2",children:[jsx(l,{name:o,className:b.icon}),jsxs("div",{className:"flex-1",children:[jsx("span",{className:b.title,children:e}),jsx("div",{className:b.body,children:s})]})]})})});ce.displayName="InfoCard";export{Q as Bookmark,X as ChatMessage,ee as EmotionAnalysis,F as EmotionButton,L as EmotionMeter,te as EmotionSelector,ie as FeatureCard,de as HeroSection,ce as InfoCard,re as LanguageToggle,ae as ScrollIndicator,le as ScrollProgress,ne as Scrollbar};//# sourceMappingURL=advanced.mjs.map
|
|
2
2
|
//# sourceMappingURL=advanced.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {l}from'./chunk-
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {l}from'./chunk-UGSYQDR4.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import u from'react';import {jsx,jsxs}from'react/jsx-runtime';var D=u.forwardRef(({className:r,size:e="md",variant:t="default",src:o,alt:l,children:n,...m},g)=>{let k={sm:"w-8 h-8",md:"w-10 h-10",lg:"w-12 h-12"},p={default:"",glass:"ring-2 ring-white/30 backdrop-blur-sm"};return jsx("div",{ref:g,className:a("relative flex shrink-0 overflow-hidden rounded-full",k[e],p[t],r),...m,children:o?jsx(T,{src:o,alt:l||"avatar"}):jsx(R,{children:n||(l?l.charAt(0).toUpperCase():"U")})})});D.displayName="Avatar";var T=u.forwardRef(({className:r,...e},t)=>jsx("img",{ref:t,className:a("aspect-square h-full w-full object-cover object-center",r),...e}));T.displayName="AvatarImage";var R=u.forwardRef(({className:r,...e},t)=>jsx("div",{ref:t,className:a("flex h-full w-full items-center justify-center rounded-full bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 font-medium",r),...e}));R.displayName="AvatarFallback";var B=u.forwardRef(({className:r,variant:e="default",...t},o)=>jsx("div",{ref:o,className:a("rounded-lg p-6",{default:"bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700",outline:"bg-transparent border-2 border-slate-300 dark:border-slate-600",elevated:"bg-white dark:bg-slate-800 shadow-lg border border-slate-200 dark:border-slate-700"}[e],r),...t}));B.displayName="Card";var I=u.forwardRef(({className:r,...e},t)=>jsx("div",{ref:t,className:a("flex flex-col space-y-1.5 p-6",r),...e}));I.displayName="CardHeader";var P=u.forwardRef(({className:r,...e},t)=>jsx("h3",{ref:t,className:a("text-2xl font-semibold leading-none tracking-tight",r),...e}));P.displayName="CardTitle";var F=u.forwardRef(({className:r,...e},t)=>jsx("p",{ref:t,className:a("text-sm text-slate-500 dark:text-slate-400",r),...e}));F.displayName="CardDescription";var j=u.forwardRef(({className:r,...e},t)=>jsx("div",{ref:t,className:a("p-6 pt-0",r),...e}));j.displayName="CardContent";var z=u.forwardRef(({className:r,...e},t)=>jsx("div",{ref:t,className:a("flex items-center p-6 pt-0",r),...e}));z.displayName="CardFooter";var M=u.forwardRef(({className:r,children:e,items:t,maxItems:o,showHomeIcon:l$1,homeLabel:n="Home",separator:m=jsx(l,{name:"chevronRight",className:"w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0"}),variant:g="default",...k},p)=>{let C={default:"inline-flex items-center text-sm w-fit",subtle:"inline-flex items-center text-xs bg-white/40 dark:bg-slate-800/40 backdrop-blur-md rounded-md px-3 py-2 border border-slate-200/30 dark:border-white/20 w-fit shadow-sm",transparent:"inline-flex items-center text-xs w-fit",glass:"inline-flex items-center text-xs bg-white/30 dark:bg-slate-800/30 backdrop-blur-lg rounded-lg px-4 py-2 border border-slate-200/25 dark:border-white/15 w-fit shadow-lg"},f=(()=>{if(t){let d=[...t];if(o&&d.length>o){let i=d[0],L=d.slice(-(o-1));d=[i,{label:"...",href:void 0},...L];}return d.map((i,L)=>{let E=L===d.length-1&&!i.href;return jsxs(w,{href:i.href,isCurrent:E,children:[i.icon&&jsx(l,{name:i.icon,className:"w-4 h-4 mr-1"}),i.label]},L)})}return e?u.Children.map(e,(d,i)=>u.isValidElement(d)?jsxs("li",{className:"flex items-center",children:[d,i<u.Children.count(e)-1&&jsx("span",{className:"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center","aria-hidden":"true",children:m})]},i):d):null})(),A=t?t.length:e?u.Children.count(e):0;return jsx("nav",{ref:p,"aria-label":"Breadcrumb",className:a(C[g],r),...k,children:jsxs("ol",{className:"inline-flex items-center",children:[l$1&&jsxs("li",{className:"flex items-center",children:[jsxs(w,{href:"/",children:[jsx(l,{name:"home",className:"w-4 h-4 mr-1"}),n]}),A>0&&jsx("span",{className:"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center","aria-hidden":"true",children:m})]}),t?f==null?void 0:f.map((d,i)=>jsxs("li",{className:"flex items-center",children:[d,i<((f==null?void 0:f.length)||0)-1&&jsx("span",{className:"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center","aria-hidden":"true",children:m})]},i)):f]})})});M.displayName="Breadcrumb";var w=u.forwardRef(({className:r,href:e,isCurrent:t=false,children:o,...l},n)=>t?jsx("span",{ref:n,"aria-current":"page",className:a("text-slate-500 dark:text-slate-400 font-medium",r),...l,children:o}):e?jsx("a",{href:e,className:a("text-slate-400 hover:text-slate-600 dark:text-slate-500 dark:hover:text-slate-300 transition-colors",r),...l,children:o}):jsx("span",{ref:n,className:a("text-slate-400 dark:text-slate-500",r),...l,children:o}));w.displayName="BreadcrumbItem";var U=u.forwardRef(({className:r,title:e,description:t,children:o,prevPage:l,nextPage:n,breadcrumbItems:m=[{label:"Components",href:"/components"}],...g},k)=>jsxs("div",{className:"relative min-h-screen",children:[jsx("div",{className:"fixed right-4 top-4 z-50 hidden lg:block",children:jsx("div",{className:"flex flex-col space-y-4",children:l&&jsx("a",{href:l.href,className:"group p-3 bg-white/80 backdrop-blur-sm border border-slate-200 rounded-full shadow-lg hover:shadow-2xl hover:bg-white/90 active:scale-95 transition-all duration-200",title:`\uC774\uC804: ${l.title}`,children:jsx("svg",{className:"w-5 h-5 text-slate-600 group-hover:text-blue-600 group-active:text-blue-800 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M5 15l7-7 7 7"})})})})}),jsx("div",{className:"fixed right-4 bottom-4 z-50 hidden lg:block",children:jsx("div",{className:"flex flex-col space-y-4",children:n&&jsx("a",{href:n.href,className:"group p-3 bg-white/80 backdrop-blur-sm border border-slate-200 rounded-full shadow-lg hover:shadow-2xl hover:bg-white/90 active:scale-95 transition-all duration-200",title:`\uB2E4\uC74C: ${n.title}`,children:jsx("svg",{className:"w-5 h-5 text-slate-600 group-hover:text-blue-600 group-active:text-blue-800 transition-colors",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})})})}),jsx("div",{ref:k,className:a("container mx-auto px-4 py-8",r),...g,children:jsxs("div",{className:"max-w-4xl mx-auto",children:[jsx(M,{className:"mb-6",children:m.map((p,C)=>jsx(w,{href:p.href,isCurrent:C===m.length-1,children:p.label},C))}),jsxs("div",{className:"mb-8",children:[jsx("h1",{className:"text-4xl font-bold mb-4",children:e}),jsx("p",{className:"text-lg text-slate-600 dark:text-slate-400",children:t})]}),jsx("div",{className:"space-y-8",children:o}),jsx("div",{className:"mt-12 lg:hidden",children:jsxs("div",{className:"flex items-center justify-between py-4 border-t border-slate-200 dark:border-slate-700",children:[l&&jsxs("a",{href:l.href,className:"flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors",children:[jsx("svg",{className:"w-4 h-4 mr-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})}),l.title]}),n&&jsxs("a",{href:n.href,className:"flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors",children:[n.title,jsx("svg",{className:"w-4 h-4 ml-2",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]})]})})]})})]}));U.displayName="ComponentLayout";export{D as a,T as b,R as c,B as d,I as e,P as f,F as g,j as h,z as i,M as j,w as k,U as l};//# sourceMappingURL=chunk-627HOIRV.mjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-627HOIRV.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/Avatar.tsx","../src/components/Card.tsx","../src/components/Breadcrumb.tsx","../src/components/ComponentLayout.tsx"],"names":["Avatar","React","className","size","variant","src","alt","children","props","ref","sizeClasses","variantClasses","jsx","merge","AvatarImage","AvatarFallback","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Breadcrumb","items","maxItems","showHomeIcon","homeLabel","separator","Icon","variantStyles","renderedItems","displayItems","firstItem","lastItems","item","index","isCurrent","jsxs","BreadcrumbItem","child","itemsCount","href","ComponentLayout","title","description","prevPage","nextPage","breadcrumbItems"],"mappings":"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","file":"chunk-VPOFRDYL.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\n\n/**\n * Avatar 컴포넌트의 props / Avatar component props\n * @typedef {Object} AvatarProps\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 아바타 크기 / Avatar size\n * @property {\"default\" | \"glass\"} [variant=\"default\"] - 아바타 스타일 변형 / Avatar style variant\n * @property {string} [src] - 이미지 URL / Image URL\n * @property {string} [alt] - 이미지 대체 텍스트 / Image alt text\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\"\n variant?: \"default\" | \"glass\"\n src?: string\n alt?: string\n}\n\n/**\n * AvatarImage 컴포넌트의 props\n * @typedef {Object} AvatarImageProps\n * @extends {React.ImgHTMLAttributes<HTMLImageElement>}\n */\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\n/**\n * AvatarFallback 컴포넌트의 props\n * @typedef {Object} AvatarFallbackProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Avatar 컴포넌트 / Avatar component\n * \n * 사용자 프로필 이미지를 표시하는 컴포넌트입니다.\n * 이미지가 없을 경우 대체 텍스트나 초기 문자를 표시합니다.\n * \n * Component for displaying user profile images.\n * Shows fallback text or initials when image is not available.\n * \n * @component\n * @example\n * // 기본 사용 (이미지) / Basic usage (with image)\n * <Avatar src=\"/user.jpg\" alt=\"사용자\" />\n * \n * @example\n * // 대체 텍스트 / Fallback text\n * <Avatar alt=\"홍길동\">홍</Avatar>\n * \n * @example\n * // Glass 스타일 / Glass style\n * <Avatar variant=\"glass\" size=\"lg\" src=\"/user.jpg\" alt=\"사용자\" />\n * \n * @param {AvatarProps} props - Avatar 컴포넌트의 props / Avatar component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} Avatar 컴포넌트 / Avatar component\n */\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size = \"md\", variant = \"default\", src, alt, children, ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\", \n lg: \"w-12 h-12\"\n }\n\n const variantClasses = {\n default: \"\",\n glass: \"ring-2 ring-white/30 backdrop-blur-sm\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\n \"relative flex shrink-0 overflow-hidden rounded-full\",\n sizeClasses[size],\n variantClasses[variant],\n className\n )}\n {...props}\n >\n {src ? (\n <AvatarImage src={src} alt={alt || \"avatar\"} />\n ) : (\n <AvatarFallback>\n {children || (alt ? alt.charAt(0).toUpperCase() : \"U\")}\n </AvatarFallback>\n )}\n </div>\n )\n }\n)\nAvatar.displayName = \"Avatar\"\n\n/**\n * AvatarImage 컴포넌트 / AvatarImage component\n * \n * 아바타 이미지를 표시하는 컴포넌트입니다.\n * Displays the avatar image.\n * \n * @component\n * @param {AvatarImageProps} props - AvatarImage 컴포넌트의 props / AvatarImage component props\n * @param {React.Ref<HTMLImageElement>} ref - img 요소 ref / img element ref\n * @returns {JSX.Element} AvatarImage 컴포넌트 / AvatarImage component\n */\nconst AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n ({ className, ...props }, ref) => (\n <img\n ref={ref}\n className={merge(\"aspect-square h-full w-full object-cover object-center\", className)}\n {...props}\n />\n )\n)\nAvatarImage.displayName = \"AvatarImage\"\n\n/**\n * AvatarFallback 컴포넌트 / AvatarFallback component\n * \n * 아바타 이미지가 없을 때 표시되는 대체 컴포넌트입니다.\n * Fallback component displayed when avatar image is not available.\n * \n * @component\n * @param {AvatarFallbackProps} props - AvatarFallback 컴포넌트의 props / AvatarFallback component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} AvatarFallback 컴포넌트 / AvatarFallback component\n */\nconst AvatarFallback = React.forwardRef<HTMLDivElement, AvatarFallbackProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\n \"flex h-full w-full items-center justify-center rounded-full bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 font-medium\",\n className\n )}\n {...props}\n />\n )\n)\nAvatarFallback.displayName = \"AvatarFallback\"\n\nexport { Avatar, AvatarImage, AvatarFallback } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\n\n/**\n * Card 컴포넌트의 props / Card component props\n * @typedef {Object} CardProps\n * @property {\"default\" | \"outline\" | \"elevated\"} [variant=\"default\"] - 카드 스타일 변형 / Card style variant\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"outline\" | \"elevated\"\n}\n\n/**\n * Card 컴포넌트 / Card component\n * \n * 콘텐츠를 카드 형태로 표시하는 컴포넌트입니다.\n * CardHeader, CardTitle, CardDescription, CardContent, CardFooter와 함께 사용합니다.\n * \n * Component that displays content in card format.\n * Used with CardHeader, CardTitle, CardDescription, CardContent, and CardFooter.\n * \n * @component\n * @example\n * // 기본 카드 / Basic card\n * <Card>\n * <CardHeader>\n * <CardTitle>카드 제목</CardTitle>\n * <CardDescription>카드 설명</CardDescription>\n * </CardHeader>\n * <CardContent>\n * <p>카드 내용</p>\n * </CardContent>\n * <CardFooter>\n * <Button>액션</Button>\n * </CardFooter>\n * </Card>\n * \n * @example\n * // Elevated 스타일 / Elevated style\n * <Card variant=\"elevated\">\n * <CardContent>강조된 카드</CardContent>\n * </Card>\n * \n * @param {CardProps} props - Card 컴포넌트의 props / Card component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} Card 컴포넌트 / Card component\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"default\", ...props }, ref) => {\n const variantClasses = {\n default: \"bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700\",\n outline: \"bg-transparent border-2 border-slate-300 dark:border-slate-600\",\n elevated: \"bg-white dark:bg-slate-800 shadow-lg border border-slate-200 dark:border-slate-700\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\n \"rounded-lg p-6\",\n variantClasses[variant],\n className\n )}\n {...props}\n />\n )\n }\n)\n\nCard.displayName = \"Card\"\n\n/**\n * CardHeader 컴포넌트의 props / CardHeader component props\n * @typedef {Object} CardHeaderProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * CardHeader 컴포넌트 / CardHeader component\n * 카드의 헤더 영역을 표시합니다. CardTitle과 CardDescription을 포함합니다.\n * Displays the header area of a card. Contains CardTitle and CardDescription.\n * \n * @component\n * @param {CardHeaderProps} props - CardHeader 컴포넌트의 props / CardHeader component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} CardHeader 컴포넌트 / CardHeader component\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.5 p-6\", className)}\n {...props}\n />\n )\n)\n\nCardHeader.displayName = \"CardHeader\"\n\n/**\n * CardTitle 컴포넌트의 props / CardTitle component props\n * @typedef {Object} CardTitleProps\n * @extends {React.HTMLAttributes<HTMLHeadingElement>}\n */\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\n/**\n * CardTitle 컴포넌트 / CardTitle component\n * 카드의 제목을 표시합니다. h3 태그로 렌더링됩니다.\n * Displays the card title. Renders as h3 tag.\n * \n * @component\n * @param {CardTitleProps} props - CardTitle 컴포넌트의 props / CardTitle component props\n * @param {React.Ref<HTMLParagraphElement>} ref - h3 요소 ref / h3 element ref\n * @returns {JSX.Element} CardTitle 컴포넌트 / CardTitle component\n */\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={merge(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n)\n\nCardTitle.displayName = \"CardTitle\"\n\n/**\n * CardDescription 컴포넌트의 props / CardDescription component props\n * @typedef {Object} CardDescriptionProps\n * @extends {React.HTMLAttributes<HTMLParagraphElement>}\n */\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\n/**\n * CardDescription 컴포넌트 / CardDescription component\n * 카드의 설명 텍스트를 표시합니다.\n * Displays the card description text.\n * \n * @component\n * @param {CardDescriptionProps} props - CardDescription 컴포넌트의 props / CardDescription component props\n * @param {React.Ref<HTMLParagraphElement>} ref - p 요소 ref / p element ref\n * @returns {JSX.Element} CardDescription 컴포넌트 / CardDescription component\n */\nconst CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={merge(\"text-sm text-slate-500 dark:text-slate-400\", className)}\n {...props}\n />\n )\n)\n\nCardDescription.displayName = \"CardDescription\"\n\n/**\n * CardContent 컴포넌트의 props / CardContent component props\n * @typedef {Object} CardContentProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * CardContent 컴포넌트 / CardContent component\n * 카드의 메인 콘텐츠 영역을 표시합니다.\n * Displays the main content area of a card.\n * \n * @component\n * @param {CardContentProps} props - CardContent 컴포넌트의 props / CardContent component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} CardContent 컴포넌트 / CardContent component\n */\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={merge(\"p-6 pt-0\", className)} {...props} />\n )\n)\n\nCardContent.displayName = \"CardContent\"\n\n/**\n * CardFooter 컴포넌트의 props / CardFooter component props\n * @typedef {Object} CardFooterProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * CardFooter 컴포넌트 / CardFooter component\n * 카드의 푸터 영역을 표시합니다. 주로 액션 버튼을 배치합니다.\n * Displays the footer area of a card. Typically used for action buttons.\n * \n * @component\n * @param {CardFooterProps} props - CardFooter 컴포넌트의 props / CardFooter component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} CardFooter 컴포넌트 / CardFooter component\n */\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n )\n)\n\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Icon } from \"./Icon\"\n\n/**\n * Breadcrumb 항목 타입 / Breadcrumb item type\n */\nexport interface BreadcrumbItemData {\n label: string\n href?: string\n icon?: string\n}\n\n/**\n * Breadcrumb 컴포넌트의 props / Breadcrumb component props\n * @typedef {Object} BreadcrumbProps\n * @property {React.ReactNode} [children] - BreadcrumbItem 컴포넌트들 / BreadcrumbItem components\n * @property {BreadcrumbItemData[]} [items] - Breadcrumb 항목 배열 (children 대신 사용 가능) / Breadcrumb items array (alternative to children)\n * @property {number} [maxItems] - 최대 표시할 항목 수 (긴 경로 처리) / Maximum number of items to display (for long paths)\n * @property {boolean} [showHomeIcon] - 홈 아이콘 표시 여부 / Show home icon\n * @property {string} [homeLabel] - 홈 라벨 (기본: \"Home\") / Home label (default: \"Home\")\n * @property {React.ReactNode} [separator] - 항목 사이 구분자 (기본: chevronRight 아이콘) / Separator between items (default: chevronRight icon)\n * @property {'default' | 'subtle' | 'transparent' | 'glass'} [variant='default'] - Breadcrumb 스타일 변형 / Breadcrumb style variant\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode\n items?: BreadcrumbItemData[]\n maxItems?: number\n showHomeIcon?: boolean\n homeLabel?: string\n separator?: React.ReactNode\n variant?: 'default' | 'subtle' | 'transparent' | 'glass'\n}\n\n/**\n * BreadcrumbItem 컴포넌트의 props / BreadcrumbItem component props\n * @typedef {Object} BreadcrumbItemProps\n * @property {string} [href] - 링크 URL (없으면 일반 텍스트) / Link URL (plain text if not provided)\n * @property {boolean} [isCurrent=false] - 현재 페이지 여부 / Current page indicator\n * @property {React.ReactNode} children - 항목 텍스트 / Item text\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n */\nexport interface BreadcrumbItemProps {\n href?: string\n isCurrent?: boolean\n children: React.ReactNode\n className?: string\n}\n\n/**\n * Breadcrumb 컴포넌트 / Breadcrumb component\n * \n * 네비게이션 경로를 표시하는 breadcrumb 컴포넌트입니다.\n * 현재 위치와 경로를 시각적으로 표현합니다.\n * \n * Breadcrumb component for displaying navigation paths.\n * Visually represents current location and path.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <Breadcrumb>\n * <BreadcrumbItem href=\"/\">홈</BreadcrumbItem>\n * <BreadcrumbItem href=\"/products\">상품</BreadcrumbItem>\n * <BreadcrumbItem isCurrent>상세</BreadcrumbItem>\n * </Breadcrumb>\n * \n * @example\n * // 커스텀 구분자 / Custom separator\n * <Breadcrumb separator={<span>/</span>}>\n * <BreadcrumbItem href=\"/\">홈</BreadcrumbItem>\n * <BreadcrumbItem isCurrent>현재</BreadcrumbItem>\n * </Breadcrumb>\n * \n * @param {BreadcrumbProps} props - Breadcrumb 컴포넌트의 props / Breadcrumb component props\n * @param {React.Ref<HTMLDivElement>} ref - nav 요소 ref / nav element ref\n * @returns {JSX.Element} Breadcrumb 컴포넌트 / Breadcrumb component\n */\nconst Breadcrumb = React.forwardRef<HTMLDivElement, BreadcrumbProps>(\n ({ \n className, \n children, \n items,\n maxItems,\n showHomeIcon,\n homeLabel = \"Home\",\n separator = <Icon name=\"chevronRight\" className=\"w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0\" />, \n variant = 'default', \n ...props \n }, ref) => {\n const variantStyles = {\n default: \"inline-flex items-center text-sm w-fit\",\n subtle: \"inline-flex items-center text-xs bg-white/40 dark:bg-slate-800/40 backdrop-blur-md rounded-md px-3 py-2 border border-slate-200/30 dark:border-white/20 w-fit shadow-sm\",\n transparent: \"inline-flex items-center text-xs w-fit\",\n glass: \"inline-flex items-center text-xs bg-white/30 dark:bg-slate-800/30 backdrop-blur-lg rounded-lg px-4 py-2 border border-slate-200/25 dark:border-white/15 w-fit shadow-lg\"\n }\n \n // items prop이 있으면 BreadcrumbItem으로 변환\n const renderItems = () => {\n if (items) {\n let displayItems = [...items]\n \n // maxItems 처리\n if (maxItems && displayItems.length > maxItems) {\n const firstItem = displayItems[0]\n const lastItems = displayItems.slice(-(maxItems - 1))\n displayItems = [firstItem, { label: '...', href: undefined }, ...lastItems]\n }\n \n // 마지막 항목은 isCurrent로 표시\n return displayItems.map((item, index) => {\n const isLast = index === displayItems.length - 1\n const isCurrent = isLast && !item.href\n \n return (\n <BreadcrumbItem\n key={index}\n href={item.href}\n isCurrent={isCurrent}\n >\n {item.icon && (\n <Icon name={item.icon as any} className=\"w-4 h-4 mr-1\" />\n )}\n {item.label}\n </BreadcrumbItem>\n )\n })\n }\n \n // children이 있으면 그대로 사용\n if (children) {\n return React.Children.map(children, (child, index) => {\n if (React.isValidElement(child)) {\n return (\n <li key={index} className=\"flex items-center\">\n {child}\n {index < React.Children.count(children) - 1 && (\n <span className=\"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n )\n }\n return child\n })\n }\n \n return null\n }\n \n const renderedItems = renderItems()\n const itemsCount = items ? items.length : (children ? React.Children.count(children) : 0)\n \n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={merge(variantStyles[variant], className)}\n {...props}\n >\n <ol className=\"inline-flex items-center\">\n {showHomeIcon && (\n <li className=\"flex items-center\">\n <BreadcrumbItem href=\"/\">\n <Icon name=\"home\" className=\"w-4 h-4 mr-1\" />\n {homeLabel}\n </BreadcrumbItem>\n {itemsCount > 0 && (\n <span className=\"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n )}\n {items ? (\n renderedItems?.map((item, index) => (\n <li key={index} className=\"flex items-center\">\n {item}\n {index < (renderedItems?.length || 0) - 1 && (\n <span className=\"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n ))\n ) : (\n renderedItems\n )}\n </ol>\n </nav>\n )\n }\n)\nBreadcrumb.displayName = \"Breadcrumb\"\n\n/**\n * BreadcrumbItem 컴포넌트\n * Breadcrumb의 개별 항목을 표시합니다.\n * \n * @component\n * @param {BreadcrumbItemProps} props - BreadcrumbItem 컴포넌트의 props\n * @param {React.Ref<HTMLLIElement>} ref - li 요소 ref\n * @returns {JSX.Element} BreadcrumbItem 컴포넌트\n */\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, href, isCurrent = false, children, ...props }, ref) => {\n if (isCurrent) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n className={merge(\n \"text-slate-500 dark:text-slate-400 font-medium\",\n className\n )}\n {...props}\n >\n {children}\n </span>\n )\n }\n\n if (href) {\n return (\n <a\n href={href}\n className={merge(\n \"text-slate-400 hover:text-slate-600 dark:text-slate-500 dark:hover:text-slate-300 transition-colors\",\n className\n )}\n {...props}\n >\n {children}\n </a>\n )\n }\n\n return (\n <span\n ref={ref}\n className={merge(\n \"text-slate-400 dark:text-slate-500\",\n className\n )}\n {...props}\n >\n {children}\n </span>\n )\n }\n)\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nexport { Breadcrumb, BreadcrumbItem } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Breadcrumb, BreadcrumbItem } from \"./Breadcrumb\"\n\n/**\n * ComponentLayout 컴포넌트의 props / ComponentLayout component props\n * @typedef {Object} ComponentLayoutProps\n * @property {string} title - 페이지 제목 / Page title\n * @property {string} description - 페이지 설명 / Page description\n * @property {React.ReactNode} children - 페이지 내용 / Page content\n * @property {Object} [prevPage] - 이전 페이지 정보 / Previous page information\n * @property {string} prevPage.title - 이전 페이지 제목 / Previous page title\n * @property {string} prevPage.href - 이전 페이지 링크 / Previous page link\n * @property {Object} [nextPage] - 다음 페이지 정보 / Next page information\n * @property {string} nextPage.title - 다음 페이지 제목 / Next page title\n * @property {string} nextPage.href - 다음 페이지 링크 / Next page link\n * @property {Array<Object>} [breadcrumbItems] - Breadcrumb 항목들 / Breadcrumb items\n * @property {string} breadcrumbItems[].label - Breadcrumb 라벨 / Breadcrumb label\n * @property {string} [breadcrumbItems[].href] - Breadcrumb 링크 / Breadcrumb link\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface ComponentLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description: string\n children: React.ReactNode\n prevPage?: {\n title: string\n href: string\n }\n nextPage?: {\n title: string\n href: string\n }\n breadcrumbItems?: Array<{\n label: string\n href?: string\n }>\n}\n\n/**\n * ComponentLayout 컴포넌트 / ComponentLayout component\n * \n * 컴포넌트 문서 페이지 레이아웃을 제공하는 컴포넌트입니다.\n * 제목, 설명, Breadcrumb, 이전/다음 페이지 네비게이션을 포함합니다.\n * \n * Component that provides layout for component documentation pages.\n * Includes title, description, Breadcrumb, and previous/next page navigation.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <ComponentLayout\n * title=\"Button 컴포넌트\"\n * description=\"버튼 컴포넌트 사용법\"\n * >\n * <Button>예제</Button>\n * </ComponentLayout>\n * \n * @example\n * // 이전/다음 페이지 네비게이션 포함 / With previous/next page navigation\n * <ComponentLayout\n * title=\"Input 컴포넌트\"\n * description=\"입력 컴포넌트 사용법\"\n * prevPage={{ title: \"Button\", href: \"/components/button\" }}\n * nextPage={{ title: \"Select\", href: \"/components/select\" }}\n * >\n * <Input placeholder=\"입력하세요\" />\n * </ComponentLayout>\n * \n * @param {ComponentLayoutProps} props - ComponentLayout 컴포넌트의 props / ComponentLayout component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} ComponentLayout 컴포넌트 / ComponentLayout component\n */\nconst ComponentLayout = React.forwardRef<HTMLDivElement, ComponentLayoutProps>(\n ({ \n className, \n title, \n description, \n children, \n prevPage, \n nextPage,\n breadcrumbItems = [\n { label: \"Components\", href: \"/components\" }\n ],\n ...props \n }, ref) => {\n return (\n <div className=\"relative min-h-screen\">\n {/* 고정된 페이지 네비게이션 - 위쪽 */}\n <div className=\"fixed right-4 top-4 z-50 hidden lg:block\">\n <div className=\"flex flex-col space-y-4\">\n {prevPage && (\n <a\n href={prevPage.href}\n className=\"group p-3 bg-white/80 backdrop-blur-sm border border-slate-200 rounded-full shadow-lg hover:shadow-2xl hover:bg-white/90 active:scale-95 transition-all duration-200\"\n title={`이전: ${prevPage.title}`}\n >\n <svg \n className=\"w-5 h-5 text-slate-600 group-hover:text-blue-600 group-active:text-blue-800 transition-colors\" \n fill=\"none\" \n stroke=\"currentColor\" \n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 15l7-7 7 7\" />\n </svg>\n </a>\n )}\n </div>\n </div>\n\n {/* 고정된 페이지 네비게이션 - 아래쪽 */}\n <div className=\"fixed right-4 bottom-4 z-50 hidden lg:block\">\n <div className=\"flex flex-col space-y-4\">\n {nextPage && (\n <a\n href={nextPage.href}\n className=\"group p-3 bg-white/80 backdrop-blur-sm border border-slate-200 rounded-full shadow-lg hover:shadow-2xl hover:bg-white/90 active:scale-95 transition-all duration-200\"\n title={`다음: ${nextPage.title}`}\n >\n <svg \n className=\"w-5 h-5 text-slate-600 group-hover:text-blue-600 group-active:text-blue-800 transition-colors\" \n fill=\"none\" \n stroke=\"currentColor\" \n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </a>\n )}\n </div>\n </div>\n\n {/* 메인 콘텐츠 */}\n <div\n ref={ref}\n className={merge(\"container mx-auto px-4 py-8\", className)}\n {...props}\n >\n <div className=\"max-w-4xl mx-auto\">\n {/* 브레드크럼 */}\n <Breadcrumb className=\"mb-6\">\n {breadcrumbItems.map((item, index) => (\n <BreadcrumbItem \n key={index}\n href={item.href}\n isCurrent={index === breadcrumbItems.length - 1}\n >\n {item.label}\n </BreadcrumbItem>\n ))}\n </Breadcrumb>\n\n {/* 페이지 헤더 */}\n <div className=\"mb-8\">\n <h1 className=\"text-4xl font-bold mb-4\">{title}</h1>\n <p className=\"text-lg text-slate-600 dark:text-slate-400\">\n {description}\n </p>\n </div>\n\n {/* 페이지 콘텐츠 */}\n <div className=\"space-y-8\">\n {children}\n </div>\n\n {/* 모바일 페이지 네비게이션 */}\n <div className=\"mt-12 lg:hidden\">\n <div className=\"flex items-center justify-between py-4 border-t border-slate-200 dark:border-slate-700\">\n {prevPage && (\n <a\n href={prevPage.href}\n className=\"flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors\"\n >\n <svg className=\"w-4 h-4 mr-2\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n {prevPage.title}\n </a>\n )}\n {nextPage && (\n <a\n href={nextPage.href}\n className=\"flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors\"\n >\n {nextPage.title}\n <svg className=\"w-4 h-4 ml-2\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n </a>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n }\n)\nComponentLayout.displayName = \"ComponentLayout\"\n\nexport { ComponentLayout } "]}
|
|
1
|
+
{"version":3,"sources":["../src/components/Avatar.tsx","../src/components/Card.tsx","../src/components/Breadcrumb.tsx","../src/components/ComponentLayout.tsx"],"names":["Avatar","React","className","size","variant","src","alt","children","props","ref","sizeClasses","variantClasses","jsx","merge","AvatarImage","AvatarFallback","Card","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","Breadcrumb","items","maxItems","showHomeIcon","homeLabel","separator","Icon","variantStyles","renderedItems","displayItems","firstItem","lastItems","item","index","isCurrent","jsxs","BreadcrumbItem","child","itemsCount","href","ComponentLayout","title","description","prevPage","nextPage","breadcrumbItems"],"mappings":"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","file":"chunk-627HOIRV.mjs","sourcesContent":["\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\n\n/**\n * Avatar 컴포넌트의 props / Avatar component props\n * @typedef {Object} AvatarProps\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - 아바타 크기 / Avatar size\n * @property {\"default\" | \"glass\"} [variant=\"default\"] - 아바타 스타일 변형 / Avatar style variant\n * @property {string} [src] - 이미지 URL / Image URL\n * @property {string} [alt] - 이미지 대체 텍스트 / Image alt text\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\"\n variant?: \"default\" | \"glass\"\n src?: string\n alt?: string\n}\n\n/**\n * AvatarImage 컴포넌트의 props\n * @typedef {Object} AvatarImageProps\n * @extends {React.ImgHTMLAttributes<HTMLImageElement>}\n */\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\n\n/**\n * AvatarFallback 컴포넌트의 props\n * @typedef {Object} AvatarFallbackProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Avatar 컴포넌트 / Avatar component\n * \n * 사용자 프로필 이미지를 표시하는 컴포넌트입니다.\n * 이미지가 없을 경우 대체 텍스트나 초기 문자를 표시합니다.\n * \n * Component for displaying user profile images.\n * Shows fallback text or initials when image is not available.\n * \n * @component\n * @example\n * // 기본 사용 (이미지) / Basic usage (with image)\n * <Avatar src=\"/user.jpg\" alt=\"사용자\" />\n * \n * @example\n * // 대체 텍스트 / Fallback text\n * <Avatar alt=\"홍길동\">홍</Avatar>\n * \n * @example\n * // Glass 스타일 / Glass style\n * <Avatar variant=\"glass\" size=\"lg\" src=\"/user.jpg\" alt=\"사용자\" />\n * \n * @param {AvatarProps} props - Avatar 컴포넌트의 props / Avatar component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} Avatar 컴포넌트 / Avatar component\n */\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size = \"md\", variant = \"default\", src, alt, children, ...props }, ref) => {\n const sizeClasses = {\n sm: \"w-8 h-8\",\n md: \"w-10 h-10\", \n lg: \"w-12 h-12\"\n }\n\n const variantClasses = {\n default: \"\",\n glass: \"ring-2 ring-white/30 backdrop-blur-sm\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\n \"relative flex shrink-0 overflow-hidden rounded-full\",\n sizeClasses[size],\n variantClasses[variant],\n className\n )}\n {...props}\n >\n {src ? (\n <AvatarImage src={src} alt={alt || \"avatar\"} />\n ) : (\n <AvatarFallback>\n {children || (alt ? alt.charAt(0).toUpperCase() : \"U\")}\n </AvatarFallback>\n )}\n </div>\n )\n }\n)\nAvatar.displayName = \"Avatar\"\n\n/**\n * AvatarImage 컴포넌트 / AvatarImage component\n * \n * 아바타 이미지를 표시하는 컴포넌트입니다.\n * Displays the avatar image.\n * \n * @component\n * @param {AvatarImageProps} props - AvatarImage 컴포넌트의 props / AvatarImage component props\n * @param {React.Ref<HTMLImageElement>} ref - img 요소 ref / img element ref\n * @returns {JSX.Element} AvatarImage 컴포넌트 / AvatarImage component\n */\nconst AvatarImage = React.forwardRef<HTMLImageElement, AvatarImageProps>(\n ({ className, ...props }, ref) => (\n <img\n ref={ref}\n className={merge(\"aspect-square h-full w-full object-cover object-center\", className)}\n {...props}\n />\n )\n)\nAvatarImage.displayName = \"AvatarImage\"\n\n/**\n * AvatarFallback 컴포넌트 / AvatarFallback component\n * \n * 아바타 이미지가 없을 때 표시되는 대체 컴포넌트입니다.\n * Fallback component displayed when avatar image is not available.\n * \n * @component\n * @param {AvatarFallbackProps} props - AvatarFallback 컴포넌트의 props / AvatarFallback component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} AvatarFallback 컴포넌트 / AvatarFallback component\n */\nconst AvatarFallback = React.forwardRef<HTMLDivElement, AvatarFallbackProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\n \"flex h-full w-full items-center justify-center rounded-full bg-gray-100 dark:bg-gray-800 text-gray-600 dark:text-gray-400 font-medium\",\n className\n )}\n {...props}\n />\n )\n)\nAvatarFallback.displayName = \"AvatarFallback\"\n\nexport { Avatar, AvatarImage, AvatarFallback } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\n\n/**\n * Card 컴포넌트의 props / Card component props\n * @typedef {Object} CardProps\n * @property {\"default\" | \"outline\" | \"elevated\"} [variant=\"default\"] - 카드 스타일 변형 / Card style variant\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"outline\" | \"elevated\"\n}\n\n/**\n * Card 컴포넌트 / Card component\n * \n * 콘텐츠를 카드 형태로 표시하는 컴포넌트입니다.\n * CardHeader, CardTitle, CardDescription, CardContent, CardFooter와 함께 사용합니다.\n * \n * Component that displays content in card format.\n * Used with CardHeader, CardTitle, CardDescription, CardContent, and CardFooter.\n * \n * @component\n * @example\n * // 기본 카드 / Basic card\n * <Card>\n * <CardHeader>\n * <CardTitle>카드 제목</CardTitle>\n * <CardDescription>카드 설명</CardDescription>\n * </CardHeader>\n * <CardContent>\n * <p>카드 내용</p>\n * </CardContent>\n * <CardFooter>\n * <Button>액션</Button>\n * </CardFooter>\n * </Card>\n * \n * @example\n * // Elevated 스타일 / Elevated style\n * <Card variant=\"elevated\">\n * <CardContent>강조된 카드</CardContent>\n * </Card>\n * \n * @param {CardProps} props - Card 컴포넌트의 props / Card component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} Card 컴포넌트 / Card component\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"default\", ...props }, ref) => {\n const variantClasses = {\n default: \"bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700\",\n outline: \"bg-transparent border-2 border-slate-300 dark:border-slate-600\",\n elevated: \"bg-white dark:bg-slate-800 shadow-lg border border-slate-200 dark:border-slate-700\"\n }\n\n return (\n <div\n ref={ref}\n className={merge(\n \"rounded-lg p-6\",\n variantClasses[variant],\n className\n )}\n {...props}\n />\n )\n }\n)\n\nCard.displayName = \"Card\"\n\n/**\n * CardHeader 컴포넌트의 props / CardHeader component props\n * @typedef {Object} CardHeaderProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * CardHeader 컴포넌트 / CardHeader component\n * 카드의 헤더 영역을 표시합니다. CardTitle과 CardDescription을 포함합니다.\n * Displays the header area of a card. Contains CardTitle and CardDescription.\n * \n * @component\n * @param {CardHeaderProps} props - CardHeader 컴포넌트의 props / CardHeader component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} CardHeader 컴포넌트 / CardHeader component\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.5 p-6\", className)}\n {...props}\n />\n )\n)\n\nCardHeader.displayName = \"CardHeader\"\n\n/**\n * CardTitle 컴포넌트의 props / CardTitle component props\n * @typedef {Object} CardTitleProps\n * @extends {React.HTMLAttributes<HTMLHeadingElement>}\n */\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\n/**\n * CardTitle 컴포넌트 / CardTitle component\n * 카드의 제목을 표시합니다. h3 태그로 렌더링됩니다.\n * Displays the card title. Renders as h3 tag.\n * \n * @component\n * @param {CardTitleProps} props - CardTitle 컴포넌트의 props / CardTitle component props\n * @param {React.Ref<HTMLParagraphElement>} ref - h3 요소 ref / h3 element ref\n * @returns {JSX.Element} CardTitle 컴포넌트 / CardTitle component\n */\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={merge(\n \"text-2xl font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n )\n)\n\nCardTitle.displayName = \"CardTitle\"\n\n/**\n * CardDescription 컴포넌트의 props / CardDescription component props\n * @typedef {Object} CardDescriptionProps\n * @extends {React.HTMLAttributes<HTMLParagraphElement>}\n */\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\n/**\n * CardDescription 컴포넌트 / CardDescription component\n * 카드의 설명 텍스트를 표시합니다.\n * Displays the card description text.\n * \n * @component\n * @param {CardDescriptionProps} props - CardDescription 컴포넌트의 props / CardDescription component props\n * @param {React.Ref<HTMLParagraphElement>} ref - p 요소 ref / p element ref\n * @returns {JSX.Element} CardDescription 컴포넌트 / CardDescription component\n */\nconst CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={merge(\"text-sm text-slate-500 dark:text-slate-400\", className)}\n {...props}\n />\n )\n)\n\nCardDescription.displayName = \"CardDescription\"\n\n/**\n * CardContent 컴포넌트의 props / CardContent component props\n * @typedef {Object} CardContentProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * CardContent 컴포넌트 / CardContent component\n * 카드의 메인 콘텐츠 영역을 표시합니다.\n * Displays the main content area of a card.\n * \n * @component\n * @param {CardContentProps} props - CardContent 컴포넌트의 props / CardContent component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} CardContent 컴포넌트 / CardContent component\n */\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={merge(\"p-6 pt-0\", className)} {...props} />\n )\n)\n\nCardContent.displayName = \"CardContent\"\n\n/**\n * CardFooter 컴포넌트의 props / CardFooter component props\n * @typedef {Object} CardFooterProps\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * CardFooter 컴포넌트 / CardFooter component\n * 카드의 푸터 영역을 표시합니다. 주로 액션 버튼을 배치합니다.\n * Displays the footer area of a card. Typically used for action buttons.\n * \n * @component\n * @param {CardFooterProps} props - CardFooter 컴포넌트의 props / CardFooter component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} CardFooter 컴포넌트 / CardFooter component\n */\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n )\n)\n\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Icon } from \"./Icon\"\n\n/**\n * Breadcrumb 항목 타입 / Breadcrumb item type\n */\nexport interface BreadcrumbItemData {\n label: string\n href?: string\n icon?: string\n}\n\n/**\n * Breadcrumb 컴포넌트의 props / Breadcrumb component props\n * @typedef {Object} BreadcrumbProps\n * @property {React.ReactNode} [children] - BreadcrumbItem 컴포넌트들 / BreadcrumbItem components\n * @property {BreadcrumbItemData[]} [items] - Breadcrumb 항목 배열 (children 대신 사용 가능) / Breadcrumb items array (alternative to children)\n * @property {number} [maxItems] - 최대 표시할 항목 수 (긴 경로 처리) / Maximum number of items to display (for long paths)\n * @property {boolean} [showHomeIcon] - 홈 아이콘 표시 여부 / Show home icon\n * @property {string} [homeLabel] - 홈 라벨 (기본: \"Home\") / Home label (default: \"Home\")\n * @property {React.ReactNode} [separator] - 항목 사이 구분자 (기본: chevronRight 아이콘) / Separator between items (default: chevronRight icon)\n * @property {'default' | 'subtle' | 'transparent' | 'glass'} [variant='default'] - Breadcrumb 스타일 변형 / Breadcrumb style variant\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface BreadcrumbProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode\n items?: BreadcrumbItemData[]\n maxItems?: number\n showHomeIcon?: boolean\n homeLabel?: string\n separator?: React.ReactNode\n variant?: 'default' | 'subtle' | 'transparent' | 'glass'\n}\n\n/**\n * BreadcrumbItem 컴포넌트의 props / BreadcrumbItem component props\n * @typedef {Object} BreadcrumbItemProps\n * @property {string} [href] - 링크 URL (없으면 일반 텍스트) / Link URL (plain text if not provided)\n * @property {boolean} [isCurrent=false] - 현재 페이지 여부 / Current page indicator\n * @property {React.ReactNode} children - 항목 텍스트 / Item text\n * @property {string} [className] - 추가 CSS 클래스 / Additional CSS class\n */\nexport interface BreadcrumbItemProps {\n href?: string\n isCurrent?: boolean\n children: React.ReactNode\n className?: string\n}\n\n/**\n * Breadcrumb 컴포넌트 / Breadcrumb component\n * \n * 네비게이션 경로를 표시하는 breadcrumb 컴포넌트입니다.\n * 현재 위치와 경로를 시각적으로 표현합니다.\n * \n * Breadcrumb component for displaying navigation paths.\n * Visually represents current location and path.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <Breadcrumb>\n * <BreadcrumbItem href=\"/\">홈</BreadcrumbItem>\n * <BreadcrumbItem href=\"/products\">상품</BreadcrumbItem>\n * <BreadcrumbItem isCurrent>상세</BreadcrumbItem>\n * </Breadcrumb>\n * \n * @example\n * // 커스텀 구분자 / Custom separator\n * <Breadcrumb separator={<span>/</span>}>\n * <BreadcrumbItem href=\"/\">홈</BreadcrumbItem>\n * <BreadcrumbItem isCurrent>현재</BreadcrumbItem>\n * </Breadcrumb>\n * \n * @param {BreadcrumbProps} props - Breadcrumb 컴포넌트의 props / Breadcrumb component props\n * @param {React.Ref<HTMLDivElement>} ref - nav 요소 ref / nav element ref\n * @returns {JSX.Element} Breadcrumb 컴포넌트 / Breadcrumb component\n */\nconst Breadcrumb = React.forwardRef<HTMLDivElement, BreadcrumbProps>(\n ({ \n className, \n children, \n items,\n maxItems,\n showHomeIcon,\n homeLabel = \"Home\",\n separator = <Icon name=\"chevronRight\" className=\"w-3 h-3 text-slate-400 dark:text-slate-500 flex-shrink-0\" />, \n variant = 'default', \n ...props \n }, ref) => {\n const variantStyles = {\n default: \"inline-flex items-center text-sm w-fit\",\n subtle: \"inline-flex items-center text-xs bg-white/40 dark:bg-slate-800/40 backdrop-blur-md rounded-md px-3 py-2 border border-slate-200/30 dark:border-white/20 w-fit shadow-sm\",\n transparent: \"inline-flex items-center text-xs w-fit\",\n glass: \"inline-flex items-center text-xs bg-white/30 dark:bg-slate-800/30 backdrop-blur-lg rounded-lg px-4 py-2 border border-slate-200/25 dark:border-white/15 w-fit shadow-lg\"\n }\n \n // items prop이 있으면 BreadcrumbItem으로 변환\n const renderItems = () => {\n if (items) {\n let displayItems = [...items]\n \n // maxItems 처리\n if (maxItems && displayItems.length > maxItems) {\n const firstItem = displayItems[0]\n const lastItems = displayItems.slice(-(maxItems - 1))\n displayItems = [firstItem, { label: '...', href: undefined }, ...lastItems]\n }\n \n // 마지막 항목은 isCurrent로 표시\n return displayItems.map((item, index) => {\n const isLast = index === displayItems.length - 1\n const isCurrent = isLast && !item.href\n \n return (\n <BreadcrumbItem\n key={index}\n href={item.href}\n isCurrent={isCurrent}\n >\n {item.icon && (\n <Icon name={item.icon as any} className=\"w-4 h-4 mr-1\" />\n )}\n {item.label}\n </BreadcrumbItem>\n )\n })\n }\n \n // children이 있으면 그대로 사용\n if (children) {\n return React.Children.map(children, (child, index) => {\n if (React.isValidElement(child)) {\n return (\n <li key={index} className=\"flex items-center\">\n {child}\n {index < React.Children.count(children) - 1 && (\n <span className=\"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n )\n }\n return child\n })\n }\n \n return null\n }\n \n const renderedItems = renderItems()\n const itemsCount = items ? items.length : (children ? React.Children.count(children) : 0)\n \n return (\n <nav\n ref={ref}\n aria-label=\"Breadcrumb\"\n className={merge(variantStyles[variant], className)}\n {...props}\n >\n <ol className=\"inline-flex items-center\">\n {showHomeIcon && (\n <li className=\"flex items-center\">\n <BreadcrumbItem href=\"/\">\n <Icon name=\"home\" className=\"w-4 h-4 mr-1\" />\n {homeLabel}\n </BreadcrumbItem>\n {itemsCount > 0 && (\n <span className=\"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n )}\n {items ? (\n renderedItems?.map((item, index) => (\n <li key={index} className=\"flex items-center\">\n {item}\n {index < (renderedItems?.length || 0) - 1 && (\n <span className=\"mx-3 text-slate-400 dark:text-slate-500 flex items-center justify-center\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n ))\n ) : (\n renderedItems\n )}\n </ol>\n </nav>\n )\n }\n)\nBreadcrumb.displayName = \"Breadcrumb\"\n\n/**\n * BreadcrumbItem 컴포넌트\n * Breadcrumb의 개별 항목을 표시합니다.\n * \n * @component\n * @param {BreadcrumbItemProps} props - BreadcrumbItem 컴포넌트의 props\n * @param {React.Ref<HTMLLIElement>} ref - li 요소 ref\n * @returns {JSX.Element} BreadcrumbItem 컴포넌트\n */\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ className, href, isCurrent = false, children, ...props }, ref) => {\n if (isCurrent) {\n return (\n <span\n ref={ref}\n aria-current=\"page\"\n className={merge(\n \"text-slate-500 dark:text-slate-400 font-medium\",\n className\n )}\n {...props}\n >\n {children}\n </span>\n )\n }\n\n if (href) {\n return (\n <a\n href={href}\n className={merge(\n \"text-slate-400 hover:text-slate-600 dark:text-slate-500 dark:hover:text-slate-300 transition-colors\",\n className\n )}\n {...props}\n >\n {children}\n </a>\n )\n }\n\n return (\n <span\n ref={ref}\n className={merge(\n \"text-slate-400 dark:text-slate-500\",\n className\n )}\n {...props}\n >\n {children}\n </span>\n )\n }\n)\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nexport { Breadcrumb, BreadcrumbItem } ","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Breadcrumb, BreadcrumbItem } from \"./Breadcrumb\"\n\n/**\n * ComponentLayout 컴포넌트의 props / ComponentLayout component props\n * @typedef {Object} ComponentLayoutProps\n * @property {string} title - 페이지 제목 / Page title\n * @property {string} description - 페이지 설명 / Page description\n * @property {React.ReactNode} children - 페이지 내용 / Page content\n * @property {Object} [prevPage] - 이전 페이지 정보 / Previous page information\n * @property {string} prevPage.title - 이전 페이지 제목 / Previous page title\n * @property {string} prevPage.href - 이전 페이지 링크 / Previous page link\n * @property {Object} [nextPage] - 다음 페이지 정보 / Next page information\n * @property {string} nextPage.title - 다음 페이지 제목 / Next page title\n * @property {string} nextPage.href - 다음 페이지 링크 / Next page link\n * @property {Array<Object>} [breadcrumbItems] - Breadcrumb 항목들 / Breadcrumb items\n * @property {string} breadcrumbItems[].label - Breadcrumb 라벨 / Breadcrumb label\n * @property {string} [breadcrumbItems[].href] - Breadcrumb 링크 / Breadcrumb link\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface ComponentLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n title: string\n description: string\n children: React.ReactNode\n prevPage?: {\n title: string\n href: string\n }\n nextPage?: {\n title: string\n href: string\n }\n breadcrumbItems?: Array<{\n label: string\n href?: string\n }>\n}\n\n/**\n * ComponentLayout 컴포넌트 / ComponentLayout component\n * \n * 컴포넌트 문서 페이지 레이아웃을 제공하는 컴포넌트입니다.\n * 제목, 설명, Breadcrumb, 이전/다음 페이지 네비게이션을 포함합니다.\n * \n * Component that provides layout for component documentation pages.\n * Includes title, description, Breadcrumb, and previous/next page navigation.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <ComponentLayout\n * title=\"Button 컴포넌트\"\n * description=\"버튼 컴포넌트 사용법\"\n * >\n * <Button>예제</Button>\n * </ComponentLayout>\n * \n * @example\n * // 이전/다음 페이지 네비게이션 포함 / With previous/next page navigation\n * <ComponentLayout\n * title=\"Input 컴포넌트\"\n * description=\"입력 컴포넌트 사용법\"\n * prevPage={{ title: \"Button\", href: \"/components/button\" }}\n * nextPage={{ title: \"Select\", href: \"/components/select\" }}\n * >\n * <Input placeholder=\"입력하세요\" />\n * </ComponentLayout>\n * \n * @param {ComponentLayoutProps} props - ComponentLayout 컴포넌트의 props / ComponentLayout component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} ComponentLayout 컴포넌트 / ComponentLayout component\n */\nconst ComponentLayout = React.forwardRef<HTMLDivElement, ComponentLayoutProps>(\n ({ \n className, \n title, \n description, \n children, \n prevPage, \n nextPage,\n breadcrumbItems = [\n { label: \"Components\", href: \"/components\" }\n ],\n ...props \n }, ref) => {\n return (\n <div className=\"relative min-h-screen\">\n {/* 고정된 페이지 네비게이션 - 위쪽 */}\n <div className=\"fixed right-4 top-4 z-50 hidden lg:block\">\n <div className=\"flex flex-col space-y-4\">\n {prevPage && (\n <a\n href={prevPage.href}\n className=\"group p-3 bg-white/80 backdrop-blur-sm border border-slate-200 rounded-full shadow-lg hover:shadow-2xl hover:bg-white/90 active:scale-95 transition-all duration-200\"\n title={`이전: ${prevPage.title}`}\n >\n <svg \n className=\"w-5 h-5 text-slate-600 group-hover:text-blue-600 group-active:text-blue-800 transition-colors\" \n fill=\"none\" \n stroke=\"currentColor\" \n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M5 15l7-7 7 7\" />\n </svg>\n </a>\n )}\n </div>\n </div>\n\n {/* 고정된 페이지 네비게이션 - 아래쪽 */}\n <div className=\"fixed right-4 bottom-4 z-50 hidden lg:block\">\n <div className=\"flex flex-col space-y-4\">\n {nextPage && (\n <a\n href={nextPage.href}\n className=\"group p-3 bg-white/80 backdrop-blur-sm border border-slate-200 rounded-full shadow-lg hover:shadow-2xl hover:bg-white/90 active:scale-95 transition-all duration-200\"\n title={`다음: ${nextPage.title}`}\n >\n <svg \n className=\"w-5 h-5 text-slate-600 group-hover:text-blue-600 group-active:text-blue-800 transition-colors\" \n fill=\"none\" \n stroke=\"currentColor\" \n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </a>\n )}\n </div>\n </div>\n\n {/* 메인 콘텐츠 */}\n <div\n ref={ref}\n className={merge(\"container mx-auto px-4 py-8\", className)}\n {...props}\n >\n <div className=\"max-w-4xl mx-auto\">\n {/* 브레드크럼 */}\n <Breadcrumb className=\"mb-6\">\n {breadcrumbItems.map((item, index) => (\n <BreadcrumbItem \n key={index}\n href={item.href}\n isCurrent={index === breadcrumbItems.length - 1}\n >\n {item.label}\n </BreadcrumbItem>\n ))}\n </Breadcrumb>\n\n {/* 페이지 헤더 */}\n <div className=\"mb-8\">\n <h1 className=\"text-4xl font-bold mb-4\">{title}</h1>\n <p className=\"text-lg text-slate-600 dark:text-slate-400\">\n {description}\n </p>\n </div>\n\n {/* 페이지 콘텐츠 */}\n <div className=\"space-y-8\">\n {children}\n </div>\n\n {/* 모바일 페이지 네비게이션 */}\n <div className=\"mt-12 lg:hidden\">\n <div className=\"flex items-center justify-between py-4 border-t border-slate-200 dark:border-slate-700\">\n {prevPage && (\n <a\n href={prevPage.href}\n className=\"flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors\"\n >\n <svg className=\"w-4 h-4 mr-2\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M15 19l-7-7 7-7\" />\n </svg>\n {prevPage.title}\n </a>\n )}\n {nextPage && (\n <a\n href={nextPage.href}\n className=\"flex items-center text-sm text-slate-600 hover:text-slate-900 dark:text-slate-400 dark:hover:text-slate-100 transition-colors\"\n >\n {nextPage.title}\n <svg className=\"w-4 h-4 ml-2\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M9 5l7 7-7 7\" />\n </svg>\n </a>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n )\n }\n)\nComponentLayout.displayName = \"ComponentLayout\"\n\nexport { ComponentLayout } "]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {l}from'./chunk-DMYT7RZ4.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import u from'react';import {jsx,jsxs}from'react/jsx-runtime';var j=u.forwardRef(({className:e,variant:t="default",size:r="md",...l},o)=>{let d=()=>{switch(t){case "bordered":return "border border-slate-200 dark:border-slate-700 divide-x divide-slate-200 dark:divide-slate-700";case "striped":return "divide-y divide-slate-200 dark:divide-slate-700";default:return ""}},p=()=>{switch(r){case "sm":return "text-sm";case "lg":return "text-base";default:return "text-sm"}};return jsx("div",{className:"w-full overflow-auto",children:jsx("table",{ref:o,className:a("w-full caption-bottom",d(),p(),e),...l})})});j.displayName="Table";var ee=u.forwardRef(({className:e,...t},r)=>jsx("thead",{ref:r,className:a("[&_tr]:border-b",e),...t}));ee.displayName="TableHeader";var te=u.forwardRef(({className:e,...t},r)=>jsx("tbody",{ref:r,className:a("[&_tr:last-child]:border-0",e),...t}));te.displayName="TableBody";var re=u.forwardRef(({className:e,...t},r)=>jsx("tfoot",{ref:r,className:a("border-t bg-slate-50 dark:bg-slate-800/50 font-medium [&>tr]:last:border-b-0",e),...t}));re.displayName="TableFooter";var ae=u.forwardRef(({className:e,variant:t="default",...r},l)=>jsx("tr",{ref:l,className:a("border-b transition-colors data-[state=selected]:bg-slate-50 dark:data-[state=selected]:bg-slate-800/50",t==="hover"?"hover:bg-slate-50 dark:hover:bg-slate-800/50":"",e),...r}));ae.displayName="TableRow";var se=u.forwardRef(({className:e,...t},r)=>jsx("th",{ref:r,className:a("h-12 px-4 text-left align-middle font-medium text-slate-500 dark:text-slate-400 [&:has([role=checkbox])]:pr-0",e),...t}));se.displayName="TableHead";var oe=u.forwardRef(({className:e,...t},r)=>jsx("td",{ref:r,className:a("p-4 align-middle [&:has([role=checkbox])]:pr-0",e),...t}));oe.displayName="TableCell";var le=u.forwardRef(({className:e,...t},r)=>jsx("caption",{ref:r,className:a("mt-4 text-sm text-slate-500 dark:text-slate-400",e),...t}));le.displayName="TableCaption";var ne=u.memo(u.forwardRef(({className:e,variant:t="default",...r},l)=>{let o=u.useMemo(()=>({default:"bg-slate-900 text-slate-50 hover:bg-slate-900/80 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50/80",secondary:"bg-slate-100 text-slate-900 hover:bg-slate-100/80 dark:bg-slate-800 dark:text-slate-50 dark:hover:bg-slate-800/80",destructive:"bg-red-500 text-slate-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/80",error:"bg-red-500 text-slate-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/80",outline:"text-slate-950 border border-slate-200 hover:bg-slate-100 hover:text-slate-900 dark:border-slate-800 dark:text-slate-50 dark:hover:bg-slate-800 dark:hover:text-slate-50",glass:"bg-white/20 backdrop-blur-sm border border-white/30 text-white hover:bg-white/30 dark:bg-slate-800/20 dark:border-slate-700/50 dark:text-slate-200 dark:hover:bg-slate-700/30"}),[]);return jsx("div",{ref:l,className:a("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2",o[t],e),...r})}));ne.displayName="Badge";var _=u.forwardRef(({className:e,variant:t="text",width:r,height:l,animation:o="pulse",...d},p)=>{let b=()=>{switch(t){case "circular":return "rounded-full";case "rounded":return "rounded-lg";case "rectangular":return "rounded-none";default:return "rounded"}},S=()=>{switch(o){case "wave":return "animate-pulse bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] animate-shimmer";case "shimmer":return "bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] animate-shimmer";default:return "animate-pulse bg-gray-200 dark:bg-gray-700"}},N=(()=>{switch(t){case "circular":return {width:"40px",height:"40px"};case "text":return {width:"100%",height:"1em"};case "rounded":return {width:"100%",height:"200px"};case "rectangular":return {width:"100%",height:"200px"};default:return {width:"100%",height:"1em"}}})(),y=r||N.width,k=l||N.height;return jsx("div",{ref:p,className:a("block",b(),S(),e),style:{width:typeof y=="number"?`${y}px`:y,height:typeof k=="number"?`${k}px`:k},...d})});_.displayName="Skeleton";var i=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"text",className:e,...t}));i.displayName="SkeletonText";var $=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"circular",className:e,...t}));$.displayName="SkeletonCircle";var de=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"rectangular",className:e,...t}));de.displayName="SkeletonRectangle";var G=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"rounded",className:e,...t}));G.displayName="SkeletonRounded";var ce=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-4 p-6",e),...t,children:[jsxs("div",{className:"flex items-center space-x-4",children:[" ",jsx($,{className:"w-12 h-12"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-4 w-3/4"})," ",jsx(i,{className:"h-3 w-1/2"})," "]})]}),jsx(G,{className:"w-full h-32"})," ",jsxs("div",{className:"space-y-2",children:[" ",jsx(i,{className:"h-4 w-full"}),jsx(i,{className:"h-4 w-5/6"}),jsx(i,{className:"h-4 w-4/6"})]})]}));ce.displayName="SkeletonCard";var me=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("flex items-center space-x-4",e),...t,children:[jsx($,{className:"w-12 h-12"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-4 w-3/4"}),jsx(i,{className:"h-3 w-1/2"})]})]}));me.displayName="SkeletonAvatar";var fe=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-2",e),...t,children:[jsx(G,{className:"w-full h-48"})," ",jsx(i,{className:"h-4 w-1/2"})]}));fe.displayName="SkeletonImage";var ue=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-4",e),...t,children:[jsxs("div",{className:"flex items-center space-x-4",children:[" ",jsx($,{className:"w-16 h-16"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-5 w-1/2"}),jsx(i,{className:"h-3 w-1/3"})]})]}),jsxs("div",{className:"space-y-2",children:[" ",jsx(i,{className:"h-4 w-full"}),jsx(i,{className:"h-4 w-5/6"})]})]}));ue.displayName="SkeletonUserProfile";var pe=u.forwardRef(({className:e,...t},r)=>jsx("div",{ref:r,className:a("space-y-4",e),...t,children:Array.from({length:3}).map((l,o)=>jsxs("div",{className:"flex items-center space-x-4",children:[" ",jsx($,{className:"w-10 h-10"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-4 w-3/4"}),jsx(i,{className:"h-3 w-1/2"})]})]},o))}));pe.displayName="SkeletonList";var be=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-4",e),...t,children:[jsxs("div",{className:"flex space-x-4",children:[" ",jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"})]}),Array.from({length:5}).map((l,o)=>jsxs("div",{className:"flex space-x-4",children:[" ",jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"})]},o))]}));be.displayName="SkeletonTable";var U=u.forwardRef(({className:e,content:t,children:r,position:l="top",variant:o="default",delay:d=300,disabled:p=false,...b},S)=>{let[A,N]=u.useState(false),[y,k]=u.useState({x:0,y:0}),T=u.useRef(void 0),g=u.useRef(null),D=F=>{var n;if(p)return;let f=F.currentTarget.getBoundingClientRect();(n=g.current)==null?void 0:n.getBoundingClientRect();let z=0,I=0;switch(l){case "top":z=f.left+f.width/2,I=f.top-8;break;case "bottom":z=f.left+f.width/2,I=f.bottom+8;break;case "left":z=f.left-8,I=f.top+f.height/2;break;case "right":z=f.right+8,I=f.top+f.height/2;break}k({x:z,y:I}),T.current=window.setTimeout(()=>{N(true);},d);},R=()=>{T.current&&clearTimeout(T.current),N(false);};u.useEffect(()=>()=>{T.current&&clearTimeout(T.current);},[]);let L=()=>{switch(o){case "light":return "bg-white text-gray-900 border border-gray-200 shadow-lg";case "dark":return "bg-gray-900 text-white shadow-lg";default:return "bg-gray-800 text-white shadow-lg"}},m=()=>{switch(l){case "top":return "top-full left-1/2 -translate-x-1/2 border-t-gray-800 dark:border-t-gray-800";case "bottom":return "bottom-full left-1/2 -translate-x-1/2 border-b-gray-800 dark:border-b-gray-800";case "left":return "left-full top-1/2 -translate-y-1/2 border-l-gray-800 dark:border-l-gray-800";case "right":return "right-full top-1/2 -translate-y-1/2 border-r-gray-800 dark:border-r-gray-800";default:return "top-full left-1/2 -translate-x-1/2 border-t-gray-800 dark:border-t-gray-800"}};return jsxs("div",{ref:S,className:a("relative inline-block",e),onMouseEnter:D,onMouseLeave:R,...b,children:[r,A&&jsxs("div",{ref:g,className:a("fixed z-50 px-3 py-2 text-sm rounded-lg whitespace-nowrap pointer-events-none",L()),style:{left:`${y.x}px`,top:`${y.y}px`,transform:"translate(-50%, -50%)"},children:[t,jsx("div",{className:a("absolute w-0 h-0 border-4 border-transparent",m())})]})]})});U.displayName="Tooltip";var ge=u.forwardRef(({className:e,...t},r)=>jsx(U,{ref:r,variant:"light",className:e,...t}));ge.displayName="TooltipLight";var he=u.forwardRef(({className:e,...t},r)=>jsx(U,{ref:r,variant:"dark",className:e,...t}));he.displayName="TooltipDark";var we=u.forwardRef(({className:e,trigger:t,children:r,open:l,onOpenChange:o,placement:d="bottom",align:p="start",offset:b=8,disabled:S=false,showArrow:A=true,...N},y)=>{let[k,T]=u.useState(false),[g,D]=u.useState({x:0,y:0}),R=u.useRef(null),L=u.useRef(null),O=l!==void 0,m=O?l:k,F=n=>{S||(O||T(n),o==null||o(n));},f=()=>{F(!m);},B=u.useCallback(()=>{if(!R.current||!L.current)return;let n=R.current.getBoundingClientRect(),h=L.current.getBoundingClientRect(),J=window.innerWidth,Q=window.innerHeight,w=0,v=0;switch(d){case "top":w=n.left,v=n.top-b;break;case "bottom":w=n.left,v=n.bottom+b;break;case "left":w=n.left-b,v=n.top;break;case "right":w=n.right+b,v=n.top;break}switch(p){case "center":d==="top"||d==="bottom"?w=n.left+n.width/2-h.width/2:v=n.top+n.height/2-h.height/2;break;case "end":d==="top"||d==="bottom"?w=n.right-h.width:v=n.bottom-h.height;break;}w<8&&(w=8),w+h.width>J-8&&(w=J-h.width-8),v<8&&(v=8),v+h.height>Q-8&&(v=Q-h.height-8),D({x:w,y:v});},[d,p,b]);u.useEffect(()=>{if(m)return B(),window.addEventListener("resize",B),window.addEventListener("scroll",B),()=>{window.removeEventListener("resize",B),window.removeEventListener("scroll",B);}},[m,B]),u.useEffect(()=>{let n=h=>{R.current&&L.current&&!R.current.contains(h.target)&&!L.current.contains(h.target)&&F(false);};if(m)return document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n);}},[m]);let z=()=>{switch(d){case "top":return "bottom-full left-0 mb-2";case "bottom":return "top-full left-0 mt-2";case "left":return "right-full top-0 mr-2";case "right":return "left-full top-0 ml-2";default:return "top-full left-0 mt-2"}},I=()=>{switch(d){case "top":return "top-full left-4 -translate-x-1/2 border-t-gray-100 dark:border-t-gray-800";case "bottom":return "bottom-full left-4 -translate-x-1/2 border-b-gray-100 dark:border-b-gray-800";case "left":return "left-full top-4 -translate-y-1/2 border-l-gray-100 dark:border-l-gray-800";case "right":return "right-full top-4 -translate-y-1/2 border-r-gray-100 dark:border-r-gray-800";default:return "bottom-full left-4 -translate-x-1/2 border-b-gray-100 dark:border-b-gray-800"}};return jsxs("div",{ref:y,className:a("relative",e),...N,children:[jsx("div",{ref:R,onClick:f,className:"inline-block cursor-pointer",children:t}),m&&jsxs("div",{ref:L,className:a("absolute z-50 bg-white dark:bg-gray-800 rounded-lg shadow-xl backdrop-blur-sm","min-w-[200px] py-2",z()),style:{transform:`translate(${g.x}px, ${g.y}px)`,boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"},children:[A&&jsx("div",{className:a("absolute w-0 h-0 border-4 border-transparent",I())}),jsx("div",{className:"relative z-10",children:r})]})]})});we.displayName="Dropdown";var ve=u.forwardRef(({className:e,icon:t,variant:r="default",children:l,disabled:o,...d},p)=>jsxs("button",{ref:p,className:a("w-full flex items-center gap-3 px-4 py-3 text-sm font-medium transition-colors focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-700",(()=>{switch(r){case "destructive":return "text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20";case "disabled":return "text-gray-400 dark:text-gray-500 cursor-not-allowed";default:return "text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"}})(),e),disabled:o||r==="disabled",...d,children:[t&&jsx("div",{className:"flex-shrink-0 w-4 h-4",children:t}),jsx("span",{className:"flex-1 text-left",children:l})]}));ve.displayName="DropdownItem";var xe=u.forwardRef(({className:e,...t},r)=>jsx("div",{ref:r,className:a("h-px bg-gray-200 dark:bg-gray-700 my-2",e),...t}));xe.displayName="DropdownSeparator";var ye=u.forwardRef(({className:e,children:t,...r},l)=>jsx("div",{ref:l,className:a("px-4 py-2 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide",e),...r,children:t}));ye.displayName="DropdownLabel";var Te=u.forwardRef(({className:e,children:t,...r},l)=>jsx("div",{ref:l,className:a("py-1",e),...r,children:t}));Te.displayName="DropdownMenu";var Ne=u.forwardRef(({className:e,children:t,...r},l)=>jsx("div",{ref:l,className:a("space-y-1",e),...r,children:t}));Ne.displayName="DropdownGroup";var ke=u.forwardRef(({open:e,onOpenChange:t,children:r,className:l,side:o="right",size:d="md",showBackdrop:p=true,backdropClassName:b,closeOnBackdropClick:S=true,closeOnEscape:A=true,...N},y)=>{let[k,T]=u.useState(false),[g,D]=u.useState(false);if(u.useEffect(()=>{if(e){T(true),D(true);let m=setTimeout(()=>D(false),50);return ()=>clearTimeout(m)}else {D(true);let m=setTimeout(()=>{T(false),D(false);},300);return ()=>clearTimeout(m)}},[e]),u.useEffect(()=>{if(!A)return;let m=F=>{F.key==="Escape"&&e&&t(false);};return e&&(document.addEventListener("keydown",m),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",m),document.body.style.overflow="";}},[e,A,t]),!k)return null;let R={sm:o==="left"||o==="right"?"w-80":"h-64",md:o==="left"||o==="right"?"w-96":"h-96",lg:o==="left"||o==="right"?"w-[28rem]":"h-[32rem]",xl:o==="left"||o==="right"?"w-[32rem]":"h-[40rem]",full:o==="left"||o==="right"?"w-full":"h-full"},L={left:"left-0 top-0 h-full translate-x-0",right:"right-0 top-0 h-full translate-x-0",top:"top-0 left-0 w-full translate-y-0",bottom:"bottom-0 left-0 w-full translate-y-0"},O={left:g?e?"translate-x-0":"-translate-x-full":"",right:g?e?"translate-x-0":"translate-x-full":"",top:g?e?"translate-y-0":"-translate-y-full":"",bottom:g?e?"translate-y-0":"translate-y-full":""};return jsxs("div",{className:"fixed inset-0 z-50",children:[p&&jsx("div",{className:a("absolute inset-0 bg-black/60 backdrop-blur-md transition-opacity duration-300",g?e?"opacity-100":"opacity-0":"",b),onClick:S?()=>t(false):void 0}),jsx("div",{ref:y,className:a("absolute bg-white/95 dark:!bg-gray-800/95 backdrop-blur-xl border border-gray-200/50 dark:!border-gray-600/50 shadow-2xl transition-transform duration-300 ease-out",R[d],L[o],O[o],l),...N,children:r})]})});ke.displayName="Drawer";var Re=u.forwardRef(({children:e,className:t,showCloseButton:r=true,onClose:l$1,...o},d)=>jsxs("div",{ref:d,className:a("flex items-center justify-between p-6 border-b border-gray-200/50 dark:border-gray-700/50",t),...o,children:[jsx("div",{className:"flex-1",children:e}),r&&jsx("button",{onClick:l$1,className:"p-2 rounded-lg hover:bg-gray-100/80 dark:hover:bg-gray-800/80 transition-colors",children:jsx(l,{name:"close",size:20})})]}));Re.displayName="DrawerHeader";var Le=u.forwardRef(({children:e,className:t,...r},l)=>jsx("div",{ref:l,className:a("flex-1 p-6 overflow-y-auto",t),...r,children:e}));Le.displayName="DrawerContent";var He=u.forwardRef(({children:e,className:t,...r},l)=>jsx("div",{ref:l,className:a("flex items-center justify-end gap-3 p-6 border-t border-gray-200/50 dark:border-gray-700/50",t),...r,children:e}));He.displayName="DrawerFooter";export{ye as A,Te as B,Ne as C,ke as D,Re as E,Le as F,He as G,j as a,ee as b,te as c,re as d,ae as e,se as f,oe as g,le as h,ne as i,_ as j,i as k,$ as l,de as m,G as n,ce as o,me as p,fe as q,ue as r,pe as s,be as t,U as u,ge as v,he as w,we as x,ve as y,xe as z};//# sourceMappingURL=chunk-SGCVGEDR.mjs.map
|
|
2
|
-
//# sourceMappingURL=chunk-
|
|
1
|
+
import {l}from'./chunk-UGSYQDR4.mjs';import {a}from'./chunk-UUHAXGMO.mjs';import u from'react';import {jsx,jsxs}from'react/jsx-runtime';var j=u.forwardRef(({className:e,variant:t="default",size:r="md",...l},o)=>{let d=()=>{switch(t){case "bordered":return "border border-slate-200 dark:border-slate-700 divide-x divide-slate-200 dark:divide-slate-700";case "striped":return "divide-y divide-slate-200 dark:divide-slate-700";default:return ""}},p=()=>{switch(r){case "sm":return "text-sm";case "lg":return "text-base";default:return "text-sm"}};return jsx("div",{className:"w-full overflow-auto",children:jsx("table",{ref:o,className:a("w-full caption-bottom",d(),p(),e),...l})})});j.displayName="Table";var ee=u.forwardRef(({className:e,...t},r)=>jsx("thead",{ref:r,className:a("[&_tr]:border-b",e),...t}));ee.displayName="TableHeader";var te=u.forwardRef(({className:e,...t},r)=>jsx("tbody",{ref:r,className:a("[&_tr:last-child]:border-0",e),...t}));te.displayName="TableBody";var re=u.forwardRef(({className:e,...t},r)=>jsx("tfoot",{ref:r,className:a("border-t bg-slate-50 dark:bg-slate-800/50 font-medium [&>tr]:last:border-b-0",e),...t}));re.displayName="TableFooter";var ae=u.forwardRef(({className:e,variant:t="default",...r},l)=>jsx("tr",{ref:l,className:a("border-b transition-colors data-[state=selected]:bg-slate-50 dark:data-[state=selected]:bg-slate-800/50",t==="hover"?"hover:bg-slate-50 dark:hover:bg-slate-800/50":"",e),...r}));ae.displayName="TableRow";var se=u.forwardRef(({className:e,...t},r)=>jsx("th",{ref:r,className:a("h-12 px-4 text-left align-middle font-medium text-slate-500 dark:text-slate-400 [&:has([role=checkbox])]:pr-0",e),...t}));se.displayName="TableHead";var oe=u.forwardRef(({className:e,...t},r)=>jsx("td",{ref:r,className:a("p-4 align-middle [&:has([role=checkbox])]:pr-0",e),...t}));oe.displayName="TableCell";var le=u.forwardRef(({className:e,...t},r)=>jsx("caption",{ref:r,className:a("mt-4 text-sm text-slate-500 dark:text-slate-400",e),...t}));le.displayName="TableCaption";var ne=u.memo(u.forwardRef(({className:e,variant:t="default",...r},l)=>{let o=u.useMemo(()=>({default:"bg-slate-900 text-slate-50 hover:bg-slate-900/80 dark:bg-slate-50 dark:text-slate-900 dark:hover:bg-slate-50/80",secondary:"bg-slate-100 text-slate-900 hover:bg-slate-100/80 dark:bg-slate-800 dark:text-slate-50 dark:hover:bg-slate-800/80",destructive:"bg-red-500 text-slate-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/80",error:"bg-red-500 text-slate-50 hover:bg-red-500/80 dark:bg-red-900 dark:text-slate-50 dark:hover:bg-red-900/80",outline:"text-slate-950 border border-slate-200 hover:bg-slate-100 hover:text-slate-900 dark:border-slate-800 dark:text-slate-50 dark:hover:bg-slate-800 dark:hover:text-slate-50",glass:"bg-white/20 backdrop-blur-sm border border-white/30 text-white hover:bg-white/30 dark:bg-slate-800/20 dark:border-slate-700/50 dark:text-slate-200 dark:hover:bg-slate-700/30"}),[]);return jsx("div",{ref:l,className:a("inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2",o[t],e),...r})}));ne.displayName="Badge";var _=u.forwardRef(({className:e,variant:t="text",width:r,height:l,animation:o="pulse",...d},p)=>{let b=()=>{switch(t){case "circular":return "rounded-full";case "rounded":return "rounded-lg";case "rectangular":return "rounded-none";default:return "rounded"}},S=()=>{switch(o){case "wave":return "animate-pulse bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] animate-shimmer";case "shimmer":return "bg-gradient-to-r from-gray-200 via-gray-300 to-gray-200 bg-[length:200%_100%] animate-shimmer";default:return "animate-pulse bg-gray-200 dark:bg-gray-700"}},N=(()=>{switch(t){case "circular":return {width:"40px",height:"40px"};case "text":return {width:"100%",height:"1em"};case "rounded":return {width:"100%",height:"200px"};case "rectangular":return {width:"100%",height:"200px"};default:return {width:"100%",height:"1em"}}})(),y=r||N.width,k=l||N.height;return jsx("div",{ref:p,className:a("block",b(),S(),e),style:{width:typeof y=="number"?`${y}px`:y,height:typeof k=="number"?`${k}px`:k},...d})});_.displayName="Skeleton";var i=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"text",className:e,...t}));i.displayName="SkeletonText";var $=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"circular",className:e,...t}));$.displayName="SkeletonCircle";var de=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"rectangular",className:e,...t}));de.displayName="SkeletonRectangle";var G=u.forwardRef(({className:e,...t},r)=>jsx(_,{ref:r,variant:"rounded",className:e,...t}));G.displayName="SkeletonRounded";var ce=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-4 p-6",e),...t,children:[jsxs("div",{className:"flex items-center space-x-4",children:[" ",jsx($,{className:"w-12 h-12"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-4 w-3/4"})," ",jsx(i,{className:"h-3 w-1/2"})," "]})]}),jsx(G,{className:"w-full h-32"})," ",jsxs("div",{className:"space-y-2",children:[" ",jsx(i,{className:"h-4 w-full"}),jsx(i,{className:"h-4 w-5/6"}),jsx(i,{className:"h-4 w-4/6"})]})]}));ce.displayName="SkeletonCard";var me=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("flex items-center space-x-4",e),...t,children:[jsx($,{className:"w-12 h-12"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-4 w-3/4"}),jsx(i,{className:"h-3 w-1/2"})]})]}));me.displayName="SkeletonAvatar";var fe=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-2",e),...t,children:[jsx(G,{className:"w-full h-48"})," ",jsx(i,{className:"h-4 w-1/2"})]}));fe.displayName="SkeletonImage";var ue=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-4",e),...t,children:[jsxs("div",{className:"flex items-center space-x-4",children:[" ",jsx($,{className:"w-16 h-16"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-5 w-1/2"}),jsx(i,{className:"h-3 w-1/3"})]})]}),jsxs("div",{className:"space-y-2",children:[" ",jsx(i,{className:"h-4 w-full"}),jsx(i,{className:"h-4 w-5/6"})]})]}));ue.displayName="SkeletonUserProfile";var pe=u.forwardRef(({className:e,...t},r)=>jsx("div",{ref:r,className:a("space-y-4",e),...t,children:Array.from({length:3}).map((l,o)=>jsxs("div",{className:"flex items-center space-x-4",children:[" ",jsx($,{className:"w-10 h-10"})," ",jsxs("div",{className:"space-y-2 flex-1",children:[" ",jsx(i,{className:"h-4 w-3/4"}),jsx(i,{className:"h-3 w-1/2"})]})]},o))}));pe.displayName="SkeletonList";var be=u.forwardRef(({className:e,...t},r)=>jsxs("div",{ref:r,className:a("space-y-4",e),...t,children:[jsxs("div",{className:"flex space-x-4",children:[" ",jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"})]}),Array.from({length:5}).map((l,o)=>jsxs("div",{className:"flex space-x-4",children:[" ",jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"}),jsx(i,{className:"h-4 w-1/4"})]},o))]}));be.displayName="SkeletonTable";var U=u.forwardRef(({className:e,content:t,children:r,position:l="top",variant:o="default",delay:d=300,disabled:p=false,...b},S)=>{let[A,N]=u.useState(false),[y,k]=u.useState({x:0,y:0}),T=u.useRef(void 0),g=u.useRef(null),D=F=>{var n;if(p)return;let f=F.currentTarget.getBoundingClientRect();(n=g.current)==null?void 0:n.getBoundingClientRect();let z=0,I=0;switch(l){case "top":z=f.left+f.width/2,I=f.top-8;break;case "bottom":z=f.left+f.width/2,I=f.bottom+8;break;case "left":z=f.left-8,I=f.top+f.height/2;break;case "right":z=f.right+8,I=f.top+f.height/2;break}k({x:z,y:I}),T.current=window.setTimeout(()=>{N(true);},d);},R=()=>{T.current&&clearTimeout(T.current),N(false);};u.useEffect(()=>()=>{T.current&&clearTimeout(T.current);},[]);let L=()=>{switch(o){case "light":return "bg-white text-gray-900 border border-gray-200 shadow-lg";case "dark":return "bg-gray-900 text-white shadow-lg";default:return "bg-gray-800 text-white shadow-lg"}},m=()=>{switch(l){case "top":return "top-full left-1/2 -translate-x-1/2 border-t-gray-800 dark:border-t-gray-800";case "bottom":return "bottom-full left-1/2 -translate-x-1/2 border-b-gray-800 dark:border-b-gray-800";case "left":return "left-full top-1/2 -translate-y-1/2 border-l-gray-800 dark:border-l-gray-800";case "right":return "right-full top-1/2 -translate-y-1/2 border-r-gray-800 dark:border-r-gray-800";default:return "top-full left-1/2 -translate-x-1/2 border-t-gray-800 dark:border-t-gray-800"}};return jsxs("div",{ref:S,className:a("relative inline-block",e),onMouseEnter:D,onMouseLeave:R,...b,children:[r,A&&jsxs("div",{ref:g,className:a("fixed z-50 px-3 py-2 text-sm rounded-lg whitespace-nowrap pointer-events-none",L()),style:{left:`${y.x}px`,top:`${y.y}px`,transform:"translate(-50%, -50%)"},children:[t,jsx("div",{className:a("absolute w-0 h-0 border-4 border-transparent",m())})]})]})});U.displayName="Tooltip";var ge=u.forwardRef(({className:e,...t},r)=>jsx(U,{ref:r,variant:"light",className:e,...t}));ge.displayName="TooltipLight";var he=u.forwardRef(({className:e,...t},r)=>jsx(U,{ref:r,variant:"dark",className:e,...t}));he.displayName="TooltipDark";var we=u.forwardRef(({className:e,trigger:t,children:r,open:l,onOpenChange:o,placement:d="bottom",align:p="start",offset:b=8,disabled:S=false,showArrow:A=true,...N},y)=>{let[k,T]=u.useState(false),[g,D]=u.useState({x:0,y:0}),R=u.useRef(null),L=u.useRef(null),O=l!==void 0,m=O?l:k,F=n=>{S||(O||T(n),o==null||o(n));},f=()=>{F(!m);},B=u.useCallback(()=>{if(!R.current||!L.current)return;let n=R.current.getBoundingClientRect(),h=L.current.getBoundingClientRect(),J=window.innerWidth,Q=window.innerHeight,w=0,v=0;switch(d){case "top":w=n.left,v=n.top-b;break;case "bottom":w=n.left,v=n.bottom+b;break;case "left":w=n.left-b,v=n.top;break;case "right":w=n.right+b,v=n.top;break}switch(p){case "center":d==="top"||d==="bottom"?w=n.left+n.width/2-h.width/2:v=n.top+n.height/2-h.height/2;break;case "end":d==="top"||d==="bottom"?w=n.right-h.width:v=n.bottom-h.height;break;}w<8&&(w=8),w+h.width>J-8&&(w=J-h.width-8),v<8&&(v=8),v+h.height>Q-8&&(v=Q-h.height-8),D({x:w,y:v});},[d,p,b]);u.useEffect(()=>{if(m)return B(),window.addEventListener("resize",B),window.addEventListener("scroll",B),()=>{window.removeEventListener("resize",B),window.removeEventListener("scroll",B);}},[m,B]),u.useEffect(()=>{let n=h=>{R.current&&L.current&&!R.current.contains(h.target)&&!L.current.contains(h.target)&&F(false);};if(m)return document.addEventListener("mousedown",n),()=>{document.removeEventListener("mousedown",n);}},[m]);let z=()=>{switch(d){case "top":return "bottom-full left-0 mb-2";case "bottom":return "top-full left-0 mt-2";case "left":return "right-full top-0 mr-2";case "right":return "left-full top-0 ml-2";default:return "top-full left-0 mt-2"}},I=()=>{switch(d){case "top":return "top-full left-4 -translate-x-1/2 border-t-gray-100 dark:border-t-gray-800";case "bottom":return "bottom-full left-4 -translate-x-1/2 border-b-gray-100 dark:border-b-gray-800";case "left":return "left-full top-4 -translate-y-1/2 border-l-gray-100 dark:border-l-gray-800";case "right":return "right-full top-4 -translate-y-1/2 border-r-gray-100 dark:border-r-gray-800";default:return "bottom-full left-4 -translate-x-1/2 border-b-gray-100 dark:border-b-gray-800"}};return jsxs("div",{ref:y,className:a("relative",e),...N,children:[jsx("div",{ref:R,onClick:f,className:"inline-block cursor-pointer",children:t}),m&&jsxs("div",{ref:L,className:a("absolute z-50 bg-white dark:bg-gray-800 rounded-lg shadow-xl backdrop-blur-sm","min-w-[200px] py-2",z()),style:{transform:`translate(${g.x}px, ${g.y}px)`,boxShadow:"0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)"},children:[A&&jsx("div",{className:a("absolute w-0 h-0 border-4 border-transparent",I())}),jsx("div",{className:"relative z-10",children:r})]})]})});we.displayName="Dropdown";var ve=u.forwardRef(({className:e,icon:t,variant:r="default",children:l,disabled:o,...d},p)=>jsxs("button",{ref:p,className:a("w-full flex items-center gap-3 px-4 py-3 text-sm font-medium transition-colors focus:outline-none focus:bg-gray-100 dark:focus:bg-gray-700",(()=>{switch(r){case "destructive":return "text-red-600 dark:text-red-400 hover:bg-red-50 dark:hover:bg-red-900/20";case "disabled":return "text-gray-400 dark:text-gray-500 cursor-not-allowed";default:return "text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700"}})(),e),disabled:o||r==="disabled",...d,children:[t&&jsx("div",{className:"flex-shrink-0 w-4 h-4",children:t}),jsx("span",{className:"flex-1 text-left",children:l})]}));ve.displayName="DropdownItem";var xe=u.forwardRef(({className:e,...t},r)=>jsx("div",{ref:r,className:a("h-px bg-gray-200 dark:bg-gray-700 my-2",e),...t}));xe.displayName="DropdownSeparator";var ye=u.forwardRef(({className:e,children:t,...r},l)=>jsx("div",{ref:l,className:a("px-4 py-2 text-xs font-semibold text-gray-500 dark:text-gray-400 uppercase tracking-wide",e),...r,children:t}));ye.displayName="DropdownLabel";var Te=u.forwardRef(({className:e,children:t,...r},l)=>jsx("div",{ref:l,className:a("py-1",e),...r,children:t}));Te.displayName="DropdownMenu";var Ne=u.forwardRef(({className:e,children:t,...r},l)=>jsx("div",{ref:l,className:a("space-y-1",e),...r,children:t}));Ne.displayName="DropdownGroup";var ke=u.forwardRef(({open:e,onOpenChange:t,children:r,className:l,side:o="right",size:d="md",showBackdrop:p=true,backdropClassName:b,closeOnBackdropClick:S=true,closeOnEscape:A=true,...N},y)=>{let[k,T]=u.useState(false),[g,D]=u.useState(false);if(u.useEffect(()=>{if(e){T(true),D(true);let m=setTimeout(()=>D(false),50);return ()=>clearTimeout(m)}else {D(true);let m=setTimeout(()=>{T(false),D(false);},300);return ()=>clearTimeout(m)}},[e]),u.useEffect(()=>{if(!A)return;let m=F=>{F.key==="Escape"&&e&&t(false);};return e&&(document.addEventListener("keydown",m),document.body.style.overflow="hidden"),()=>{document.removeEventListener("keydown",m),document.body.style.overflow="";}},[e,A,t]),!k)return null;let R={sm:o==="left"||o==="right"?"w-80":"h-64",md:o==="left"||o==="right"?"w-96":"h-96",lg:o==="left"||o==="right"?"w-[28rem]":"h-[32rem]",xl:o==="left"||o==="right"?"w-[32rem]":"h-[40rem]",full:o==="left"||o==="right"?"w-full":"h-full"},L={left:"left-0 top-0 h-full translate-x-0",right:"right-0 top-0 h-full translate-x-0",top:"top-0 left-0 w-full translate-y-0",bottom:"bottom-0 left-0 w-full translate-y-0"},O={left:g?e?"translate-x-0":"-translate-x-full":"",right:g?e?"translate-x-0":"translate-x-full":"",top:g?e?"translate-y-0":"-translate-y-full":"",bottom:g?e?"translate-y-0":"translate-y-full":""};return jsxs("div",{className:"fixed inset-0 z-50",children:[p&&jsx("div",{className:a("absolute inset-0 bg-black/60 backdrop-blur-md transition-opacity duration-300",g?e?"opacity-100":"opacity-0":"",b),onClick:S?()=>t(false):void 0}),jsx("div",{ref:y,className:a("absolute bg-white/95 dark:!bg-gray-800/95 backdrop-blur-xl border border-gray-200/50 dark:!border-gray-600/50 shadow-2xl transition-transform duration-300 ease-out",R[d],L[o],O[o],l),...N,children:r})]})});ke.displayName="Drawer";var Re=u.forwardRef(({children:e,className:t,showCloseButton:r=true,onClose:l$1,...o},d)=>jsxs("div",{ref:d,className:a("flex items-center justify-between p-6 border-b border-gray-200/50 dark:border-gray-700/50",t),...o,children:[jsx("div",{className:"flex-1",children:e}),r&&jsx("button",{onClick:l$1,className:"p-2 rounded-lg hover:bg-gray-100/80 dark:hover:bg-gray-800/80 transition-colors",children:jsx(l,{name:"close",size:20})})]}));Re.displayName="DrawerHeader";var Le=u.forwardRef(({children:e,className:t,...r},l)=>jsx("div",{ref:l,className:a("flex-1 p-6 overflow-y-auto",t),...r,children:e}));Le.displayName="DrawerContent";var He=u.forwardRef(({children:e,className:t,...r},l)=>jsx("div",{ref:l,className:a("flex items-center justify-end gap-3 p-6 border-t border-gray-200/50 dark:border-gray-700/50",t),...r,children:e}));He.displayName="DrawerFooter";export{ye as A,Te as B,Ne as C,ke as D,Re as E,Le as F,He as G,j as a,ee as b,te as c,re as d,ae as e,se as f,oe as g,le as h,ne as i,_ as j,i as k,$ as l,de as m,G as n,ce as o,me as p,fe as q,ue as r,pe as s,be as t,U as u,ge as v,he as w,we as x,ve as y,xe as z};//# sourceMappingURL=chunk-E5PN4LUS.mjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-E5PN4LUS.mjs.map
|