@hua-labs/ui 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +1 -1
  2. package/dist/{ComponentLayout-DrZpz0yv.d.mts → ComponentLayout-BhM4VSoq.d.mts} +1 -1
  3. package/dist/advanced-dashboard.d.mts +1 -1
  4. package/dist/advanced-dashboard.mjs +3 -3
  5. package/dist/advanced-dashboard.mjs.map +1 -1
  6. package/dist/advanced-emotion.mjs +1 -1
  7. package/dist/advanced-motion.d.mts +9 -6
  8. package/dist/advanced-motion.mjs +1 -1
  9. package/dist/advanced.d.mts +3 -3
  10. package/dist/advanced.mjs +2 -2
  11. package/dist/advanced.mjs.map +1 -1
  12. package/dist/chunk-5DPW7SVD.mjs +4 -0
  13. package/dist/{chunk-AOSXB5JJ.mjs.map → chunk-5DPW7SVD.mjs.map} +1 -1
  14. package/dist/chunk-5L5HIPKA.mjs +3 -0
  15. package/dist/{chunk-3GAUTZXQ.mjs.map → chunk-5L5HIPKA.mjs.map} +1 -1
  16. package/dist/chunk-A5YOVVM5.mjs +3 -0
  17. package/dist/chunk-A5YOVVM5.mjs.map +1 -0
  18. package/dist/chunk-CNW22G24.mjs +13 -0
  19. package/dist/chunk-CNW22G24.mjs.map +1 -0
  20. package/dist/chunk-CW66UBQG.mjs +3 -0
  21. package/dist/{chunk-6HVJFEDA.mjs.map → chunk-CW66UBQG.mjs.map} +1 -1
  22. package/dist/chunk-EAZEI74V.mjs +3 -0
  23. package/dist/chunk-EAZEI74V.mjs.map +1 -0
  24. package/dist/chunk-EPY3432E.mjs +3 -0
  25. package/dist/{chunk-MDLCJASB.mjs.map → chunk-EPY3432E.mjs.map} +1 -1
  26. package/dist/chunk-F2M4YDDQ.mjs +3 -0
  27. package/dist/{chunk-OZNST3EZ.mjs.map → chunk-F2M4YDDQ.mjs.map} +1 -1
  28. package/dist/chunk-FHMFDCX2.mjs +3 -0
  29. package/dist/{chunk-4NJE7D6X.mjs.map → chunk-FHMFDCX2.mjs.map} +1 -1
  30. package/dist/chunk-HBIUCLFL.mjs +3 -0
  31. package/dist/chunk-HBIUCLFL.mjs.map +1 -0
  32. package/dist/chunk-HEBXAFRY.mjs +3 -0
  33. package/dist/{chunk-KJZGOL2Z.mjs.map → chunk-HEBXAFRY.mjs.map} +1 -1
  34. package/dist/chunk-IG47LMOD.mjs +3 -0
  35. package/dist/{chunk-42RGFEL2.mjs.map → chunk-IG47LMOD.mjs.map} +1 -1
  36. package/dist/chunk-J47ZEXEL.mjs +3 -0
  37. package/dist/{chunk-3CCF7U3P.mjs.map → chunk-J47ZEXEL.mjs.map} +1 -1
  38. package/dist/chunk-K2FOFIST.mjs +3 -0
  39. package/dist/{chunk-IJSYSNM5.mjs.map → chunk-K2FOFIST.mjs.map} +1 -1
  40. package/dist/chunk-LL6QPRD7.mjs +3 -0
  41. package/dist/{chunk-TZ4YSHMC.mjs.map → chunk-LL6QPRD7.mjs.map} +1 -1
  42. package/dist/chunk-NMJLOK6M.mjs +3 -0
  43. package/dist/{chunk-KYRIUUQP.mjs.map → chunk-NMJLOK6M.mjs.map} +1 -1
  44. package/dist/chunk-O24K56OS.mjs +3 -0
  45. package/dist/chunk-O24K56OS.mjs.map +1 -0
  46. package/dist/chunk-OIWG3IJ7.mjs +3 -0
  47. package/dist/chunk-OIWG3IJ7.mjs.map +1 -0
  48. package/dist/chunk-OLLU7ZFH.mjs +3 -0
  49. package/dist/{chunk-XL4KTJ4L.mjs.map → chunk-OLLU7ZFH.mjs.map} +1 -1
  50. package/dist/chunk-Q76JW7X5.mjs +73 -0
  51. package/dist/chunk-Q76JW7X5.mjs.map +1 -0
  52. package/dist/chunk-QEMPERUK.mjs +3 -0
  53. package/dist/chunk-QEMPERUK.mjs.map +1 -0
  54. package/dist/chunk-QRM66RQG.mjs +3 -0
  55. package/dist/{chunk-N56BUOCD.mjs.map → chunk-QRM66RQG.mjs.map} +1 -1
  56. package/dist/chunk-QRRP7TGF.mjs +13 -0
  57. package/dist/{chunk-RS6RKW5U.mjs.map → chunk-QRRP7TGF.mjs.map} +1 -1
  58. package/dist/chunk-SD6XGDAC.mjs +3 -0
  59. package/dist/chunk-SD6XGDAC.mjs.map +1 -0
  60. package/dist/chunk-SDFVGFXT.mjs +3 -0
  61. package/dist/{chunk-CVWWS25A.mjs.map → chunk-SDFVGFXT.mjs.map} +1 -1
  62. package/dist/chunk-SMLDNOV3.mjs +8 -0
  63. package/dist/{chunk-ZXZIHU7J.mjs.map → chunk-SMLDNOV3.mjs.map} +1 -1
  64. package/dist/{chunk-FX57OSYG.mjs → chunk-TAP6MYDW.mjs} +2 -2
  65. package/dist/{chunk-FX57OSYG.mjs.map → chunk-TAP6MYDW.mjs.map} +1 -1
  66. package/dist/{chunk-WP7VFE77.mjs → chunk-TBZ645BI.mjs} +2 -2
  67. package/dist/{chunk-WP7VFE77.mjs.map → chunk-TBZ645BI.mjs.map} +1 -1
  68. package/dist/{chunk-TXBZZJNR.mjs → chunk-V2DNYJR6.mjs} +2 -2
  69. package/dist/{chunk-TXBZZJNR.mjs.map → chunk-V2DNYJR6.mjs.map} +1 -1
  70. package/dist/{chunk-Z74YUUVT.mjs → chunk-VBABZXL7.mjs} +2 -2
  71. package/dist/{chunk-Z74YUUVT.mjs.map → chunk-VBABZXL7.mjs.map} +1 -1
  72. package/dist/chunk-WYBSHTGY.mjs +3 -0
  73. package/dist/{chunk-DYNBM24D.mjs.map → chunk-WYBSHTGY.mjs.map} +1 -1
  74. package/dist/chunk-ZQUMJQYV.mjs +3 -0
  75. package/dist/chunk-ZQUMJQYV.mjs.map +1 -0
  76. package/dist/chunk-ZY23NOT4.mjs +3 -0
  77. package/dist/chunk-ZY23NOT4.mjs.map +1 -0
  78. package/dist/components/Action.d.ts.map +1 -1
  79. package/dist/components/Badge.d.ts +1 -1
  80. package/dist/components/Button.d.ts.map +1 -1
  81. package/dist/components/DatePicker.d.ts.map +1 -1
  82. package/dist/components/Dropdown.d.ts +0 -50
  83. package/dist/components/Dropdown.d.ts.map +1 -1
  84. package/dist/components/Icon/Icon.d.ts.map +1 -1
  85. package/dist/components/Modal.d.ts.map +1 -1
  86. package/dist/components/Popover.d.ts.map +1 -1
  87. package/dist/components/Progress.d.ts +2 -2
  88. package/dist/components/advanced/AnimatedGradient.d.ts.map +1 -1
  89. package/dist/components/advanced/Carousel.d.ts.map +1 -1
  90. package/dist/components/advanced/ImageReveal.d.ts.map +1 -1
  91. package/dist/components/advanced/Parallax.d.ts +9 -6
  92. package/dist/components/advanced/Parallax.d.ts.map +1 -1
  93. package/dist/components/advanced/TextReveal.d.ts.map +1 -1
  94. package/dist/data.mjs +2 -2
  95. package/dist/data.mjs.map +1 -1
  96. package/dist/feedback.mjs +1 -1
  97. package/dist/form.mjs +4 -4
  98. package/dist/form.mjs.map +1 -1
  99. package/dist/{icons-DmhQEH_E.d.mts → icons-DcOBy9Hf.d.mts} +4 -0
  100. package/dist/iconsax-extended.mjs +2 -2
  101. package/dist/iconsax-extended.mjs.map +1 -1
  102. package/dist/index.d.mts +6 -87
  103. package/dist/index.mjs +14 -14
  104. package/dist/index.mjs.map +1 -1
  105. package/dist/interactive.mjs +1 -1
  106. package/dist/interactive.mjs.map +1 -1
  107. package/dist/landing.mjs +7 -7
  108. package/dist/landing.mjs.map +1 -1
  109. package/dist/lib/icon-providers.d.ts +9 -25
  110. package/dist/lib/icon-providers.d.ts.map +1 -1
  111. package/dist/lib/icons.d.ts +4 -0
  112. package/dist/lib/icons.d.ts.map +1 -1
  113. package/dist/lib/utils.d.ts.map +1 -1
  114. package/dist/navigation.d.mts +1 -1
  115. package/dist/navigation.mjs +1 -1
  116. package/dist/navigation.mjs.map +1 -1
  117. package/dist/overlay.d.mts +0 -50
  118. package/dist/overlay.mjs +1 -1
  119. package/dist/overlay.mjs.map +1 -1
  120. package/dist/sdui.mjs +1 -1
  121. package/dist/sdui.mjs.map +1 -1
  122. package/dist/theme.d.mts +85 -0
  123. package/dist/theme.d.ts +14 -0
  124. package/dist/theme.d.ts.map +1 -0
  125. package/dist/theme.mjs +3 -0
  126. package/dist/theme.mjs.map +1 -0
  127. package/package.json +18 -14
  128. package/dist/advanced-dashboard.js +0 -39
  129. package/dist/advanced-dashboard.js.map +0 -1
  130. package/dist/advanced-emotion.js +0 -2
  131. package/dist/advanced-emotion.js.map +0 -1
  132. package/dist/advanced-motion.js +0 -82
  133. package/dist/advanced-motion.js.map +0 -1
  134. package/dist/advanced.js +0 -112
  135. package/dist/advanced.js.map +0 -1
  136. package/dist/chunk-3CCF7U3P.mjs +0 -3
  137. package/dist/chunk-3GAUTZXQ.mjs +0 -3
  138. package/dist/chunk-42RGFEL2.mjs +0 -3
  139. package/dist/chunk-4NJE7D6X.mjs +0 -3
  140. package/dist/chunk-6HVJFEDA.mjs +0 -3
  141. package/dist/chunk-7OYT3QSY.mjs +0 -3
  142. package/dist/chunk-7OYT3QSY.mjs.map +0 -1
  143. package/dist/chunk-ANYZ56VB.mjs +0 -3
  144. package/dist/chunk-ANYZ56VB.mjs.map +0 -1
  145. package/dist/chunk-AOSXB5JJ.mjs +0 -4
  146. package/dist/chunk-B544MRF7.mjs +0 -3
  147. package/dist/chunk-B544MRF7.mjs.map +0 -1
  148. package/dist/chunk-CVWWS25A.mjs +0 -3
  149. package/dist/chunk-DYNBM24D.mjs +0 -3
  150. package/dist/chunk-IJSYSNM5.mjs +0 -3
  151. package/dist/chunk-KJZGOL2Z.mjs +0 -3
  152. package/dist/chunk-KYRIUUQP.mjs +0 -3
  153. package/dist/chunk-LSA7DU3N.mjs +0 -73
  154. package/dist/chunk-LSA7DU3N.mjs.map +0 -1
  155. package/dist/chunk-MDLCJASB.mjs +0 -3
  156. package/dist/chunk-N56BUOCD.mjs +0 -3
  157. package/dist/chunk-OFYITQXI.mjs +0 -13
  158. package/dist/chunk-OFYITQXI.mjs.map +0 -1
  159. package/dist/chunk-OZNST3EZ.mjs +0 -3
  160. package/dist/chunk-RS6RKW5U.mjs +0 -13
  161. package/dist/chunk-TZ4YSHMC.mjs +0 -3
  162. package/dist/chunk-U6CTBZ2U.mjs +0 -3
  163. package/dist/chunk-U6CTBZ2U.mjs.map +0 -1
  164. package/dist/chunk-XCZMLKPK.mjs +0 -3
  165. package/dist/chunk-XCZMLKPK.mjs.map +0 -1
  166. package/dist/chunk-XGHT7WMO.mjs +0 -3
  167. package/dist/chunk-XGHT7WMO.mjs.map +0 -1
  168. package/dist/chunk-XL4KTJ4L.mjs +0 -3
  169. package/dist/chunk-ZXZIHU7J.mjs +0 -8
  170. package/dist/data.js +0 -3
  171. package/dist/data.js.map +0 -1
  172. package/dist/feedback.js +0 -12
  173. package/dist/feedback.js.map +0 -1
  174. package/dist/form.js +0 -8
  175. package/dist/form.js.map +0 -1
  176. package/dist/iconsax-extended.js +0 -3
  177. package/dist/iconsax-extended.js.map +0 -1
  178. package/dist/iconsax.js +0 -3
  179. package/dist/iconsax.js.map +0 -1
  180. package/dist/index.js +0 -51
  181. package/dist/index.js.map +0 -1
  182. package/dist/interactive.js +0 -2
  183. package/dist/interactive.js.map +0 -1
  184. package/dist/landing.js +0 -100
  185. package/dist/landing.js.map +0 -1
  186. package/dist/lib/phosphor-icons.d.ts +0 -6
  187. package/dist/lib/phosphor-icons.d.ts.map +0 -1
  188. package/dist/navigation.js +0 -12
  189. package/dist/navigation.js.map +0 -1
  190. package/dist/overlay.js +0 -3
  191. package/dist/overlay.js.map +0 -1
  192. package/dist/sdui.js +0 -9
  193. package/dist/sdui.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/landing/themes/corporate.ts","../src/landing/themes/marketing.ts","../src/landing/themes/product.ts","../src/landing/themes/dashboard.ts","../src/landing/themes/app.ts","../src/landing/themes/immersive.ts","../src/landing/themes/portfolio.ts","../src/landing/themes/index.ts","../src/landing/LandingProvider.tsx","../src/lib/utils.ts","../src/components/Container.tsx","../src/components/advanced/AnimatedGradient.tsx","../src/landing/LandingHero.tsx","../src/components/Section.tsx","../src/components/advanced/GlowCard.tsx","../src/components/advanced/SpotlightCard.tsx","../src/lib/icons.ts","../src/lib/case-utils.ts","../src/lib/icon-providers.ts","../src/lib/icon-aliases.ts","../src/lib/normalize-icon-name.ts","../src/components/Icon/icon-store.ts","../src/components/Icon/IconProvider.tsx","../src/components/Icon/Icon.tsx","../src/components/FeatureCard.tsx","../src/landing/LandingFeatures.tsx","../src/landing/LandingStats.tsx","../src/landing/LandingCTA.tsx","../src/components/advanced/Carousel.tsx","../src/components/advanced/Marquee.tsx","../src/components/Avatar.tsx","../src/landing/LandingTestimonials.tsx","../src/landing/LandingLogoCloud.tsx","../src/landing/LandingShowcase.tsx","../src/landing/LandingAbout.tsx","../src/components/Card.tsx","../src/landing/LandingProjects.tsx","../src/landing/LandingSkills.tsx","../src/landing/LandingExperience.tsx","../src/landing/LandingMetrics.tsx","../src/landing/LandingContact.tsx","../src/landing/index.ts"],"names":["corporate","marketing","product","dashboard","app","immersive","portfolio","themeRegistry","resolveTheme","theme","createLandingTheme","base","overrides","baseTheme","LandingContext","createContext","useLandingTheme","ctx","useContext","buildCssVars","c","LandingProvider","children","resolved","useMemo","style","jsx","merge","inputs","twMerge","clsx","mergeMap","classMap","classes","condition","className","containerVariants","cva","Container","React","size","padding","centered","fluid","props","ref","defaultColors","AnimatedGradient","colors","speed","blur","blurAmount","type","animate","mounted","setMounted","useState","prefersReducedMotion","useReducedMotion","shouldAnimate","useEffect","renderGradient","Fragment","color","index","angle","delay","jsxs","setPrefersReducedMotion","mediaQuery","handleChange","e","resolveMotion","themeMotion","override","getInitialTransform","LandingHero","title","subtitle","description","primaryAction","secondaryAction","sizeProp","bgProp","gradientColors","scrollIndicator","motionOverride","rest","bg","motion","contentStyle","sectionVariants","sectionLineStyle","SectionHeader","config","isCenter","Section","spacing","background","container","containerPadding","header","fullWidth","content","GlowCard","glowColor","glowSize","glowOpacity","border","borderColor","cardRef","useRef","mousePosition","setMousePosition","isHovered","setIsHovered","handleMouseMove","useCallback","rect","glowStyle","borderStyle","mergeRefs","refs","value","SpotlightCard","spotlightColor","spotlightSize","gradient","gradientFrom","gradientTo","spotlightStyle","gradientOverlayStyle","icons","House","ArrowLeft","ArrowRight","ArrowUp","ArrowDown","ListIcon","X","MagnifyingGlass","Gear","ArrowSquareOut","CaretLeft","CaretRight","CaretDown","CaretUp","Pencil","Trash","Plus","Minus","Download","Upload","ArrowClockwise","FloppyDisk","Copy","SpinnerGap","CheckCircle","XCircle","WarningCircle","Info","Check","Circle","Question","User","Users","UserPlus","SignIn","SignOut","Eye","EyeSlash","ChartBar","TrendUp","Pulse","Database","Lightning","FileText","File","Folder","Book","BookOpen","Envelope","ChatCircle","Phone","Image","Video","Camera","Smiley","SmileySad","SmileyMeh","Lock","LockOpen","Shield","Wallet","Key","Clock","Calendar","CalendarPlus","Bell","Heart","Star","Bookmark","Share","Monitor","Sun","Moon","Lightbulb","Brain","Flag","Square","Sparkle","Globe","DeviceMobile","Ticket","Clipboard","WifiHigh","WifiSlash","Cpu","MaskHappy","Rocket","Layout","Megaphone","Stack","Prohibit","TextB","TextItalic","TextStrikethrough","TextHOne","Link","Code","FileCode","Quotes","List","ListNumbers","emotionIcons","statusIcons","toCamelCase","str","word","PhosphorIcons","LucideIcons","PROJECT_ICONS","initPhosphorIcons","initLucideIcons","getIconFromProvider","iconName","provider","iconMapping","getIconDirect","mappedName","phosphorName1","phosphorName2","lucideName","camelCaseName","match","getIconNameForProvider","ICON_ALIASES","normalizeIconName","camelCased","aliasTarget","defaultIconConfig","IconContext","useIconContext","IconComponent","name","emotion","status","weight","animated","pulse","spin","bounce","variant","ariaLabel","ariaHidden","_a","_b","iconSet","iconSize","iconWeight","iconColor","iconStrokeWidth","iconsaxVariant","isClient","setIsClient","providerReady","setProviderReady","resolvedIcon","baseName","normalized","providerName","iconsaxIcon","variantClasses","ResolvedIcon","iconProps","animationClasses","accessibilityProps","MemoizedIcon","prevProps","nextProps","Icon","EmotionIcon","StatusIcon","LoadingIcon","SuccessIcon","ErrorIcon","FeatureCard","icon","hover","customGradient","sizeClasses","getGradientClass","hoverClasses","gradients","useStagger","gridColsMap","renderCard","item","cardType","LandingFeatures","items","columnsProp","cardProp","sectionProps","staggerDelayProp","decoratorProp","staggerDelay","decorator","columns","stagger","i","parseStatValue","useCountUp","target","isVisible","duration","current","setCurrent","rafRef","start","step","now","elapsed","progress","eased","StatItemDisplay","numberSize","countUp","numeric","parsedPrefix","parsedSuffix","counted","displayPrefix","displaySuffix","displayValue","LandingStats","countUpProp","numberSizeProp","gridCols","useScrollReveal","LandingCTA","scrollReveal","fallbackStyle","Carousel","autoPlay","interval","loop","pauseOnHover","indicators","indicatorPosition","showArrows","arrowPosition","transition","transitionDuration","onSlideChange","showPlayPause","playPausePosition","getInitialIndex","currentIndex","setCurrentIndex","isPaused","setIsPaused","isManuallyPaused","setIsManuallyPaused","isTransitioning","setIsTransitioning","noTransition","setNoTransition","touchStart","setTouchStart","touchEnd","setTouchEnd","containerRef","slideCount","getActualIndex","goToSlide","newIndex","actualIndex","nextSlide","prevSlide","togglePlayPause","prev","timer","handleTouchStart","handleTouchMove","handleTouchEnd","distance","handleKeyDown","renderSlides","child","childArray","renderIndicators","isInside","isTop","indicatorContainerClass","handleIndicatorClick","_","isActive","renderPlayPause","isPlaying","PauseIcon","PlayIcon","renderArrows","canGoPrev","canGoNext","arrowBaseClass","prevPosition","nextPosition","ChevronLeft","ChevronRight","Marquee","direction","pauseOnClick","gap","gradientColor","gradientWidth","contentWidth","setContentWidth","contentHeight","setContentHeight","isHorizontal","isReverse","firstChild","updateSize","resizeObserver","animationStyle","gradientStyle","avatarVariants","Avatar","src","alt","fallbackText","imgError","setImgError","getFallbackContent","showImage","AvatarImage","AvatarFallback","TestimonialCard","LandingTestimonials","variantProp","colsProp","staggerProp","cols","LandingLogoCloud","logos","speedProp","logoHeight","logoElements","logo","img","LandingShowcase","isEven","LandingAbout","role","bio","avatar","socialLinks","link","cardVariants","Card","shadow","hoverable","CardHeader","CardTitle","CardDescription","CardContent","CardFooter","TiltCard","mc","ProjectCard","tag","LandingProjects","filter","selectedTag","setSelectedTag","allTags","tagSet","filteredItems","getBarColor","level","LandingSkills","ExperienceItem","LandingExperience","getMetricColor","MetricBar","animatedValue","setAnimatedValue","LandingMetrics","tabs","activeTab","setActiveTab","displayItems","tab","LandingContact","email","Landing"],"mappings":"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","file":"landing.js","sourcesContent":["import type { LandingTheme } from '../types'\n\nexport const corporate: LandingTheme = {\n name: 'corporate',\n colors: {\n background: '0 0% 100%',\n foreground: '222 47% 11%',\n muted: '210 40% 96%',\n mutedForeground: '215 16% 47%',\n primary: '217 91% 53%',\n primaryForeground: '0 0% 100%',\n secondary: '215 16% 93%',\n secondaryForeground: '222 47% 11%',\n card: '0 0% 100%',\n cardForeground: '222 47% 11%',\n border: '214 32% 91%',\n sectionAlt: '210 40% 98%',\n },\n hero: {\n background: 'gradient',\n size: 'xl',\n motion: { type: 'fadeIn', duration: 900, easing: 'ease-out', delay: 0 },\n },\n features: {\n card: 'spotlight',\n staggerDelay: 150,\n motion: { type: 'fadeIn', duration: 900, easing: 'ease-out', delay: 0 },\n decorator: true,\n },\n stats: {\n numberSize: 'text-4xl',\n countUp: false,\n staggerDelay: 150,\n motion: { type: 'fadeIn', duration: 900, easing: 'ease-out', delay: 0 },\n },\n cta: {\n background: 'gradient-soft',\n motion: { type: 'fadeIn', duration: 900, easing: 'ease-out', delay: 0 },\n },\n testimonials: {\n variant: 'grid',\n staggerDelay: 150,\n motion: { type: 'fadeIn', duration: 900, easing: 'ease-out', delay: 0 },\n },\n logoCloud: {\n variant: 'grid',\n speed: 40,\n },\n showcase: {\n staggerDelay: 150,\n motion: { type: 'fadeIn', duration: 900, easing: 'ease-out', delay: 0 },\n },\n}\n","import type { LandingTheme } from '../types'\n\nexport const marketing: LandingTheme = {\n name: 'marketing',\n colors: {\n background: '260 100% 4%',\n foreground: '0 0% 100%',\n muted: '270 30% 10%',\n mutedForeground: '240 4% 65%',\n primary: '258 90% 66%',\n primaryForeground: '0 0% 100%',\n secondary: '258 30% 15%',\n secondaryForeground: '0 0% 95%',\n card: '260 40% 10%',\n cardForeground: '0 0% 100%',\n border: '258 40% 20%',\n sectionAlt: '270 50% 6%',\n },\n hero: {\n background: 'animated-gradient',\n size: 'full',\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n },\n features: {\n card: 'glow',\n staggerDelay: 80,\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n decorator: false,\n },\n stats: {\n numberSize: 'text-5xl',\n countUp: true,\n staggerDelay: 80,\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n },\n cta: {\n background: 'animated-gradient',\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n },\n testimonials: {\n variant: 'carousel',\n staggerDelay: 80,\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n },\n logoCloud: {\n variant: 'marquee',\n speed: 60,\n },\n showcase: {\n staggerDelay: 80,\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n },\n}\n","import type { LandingTheme } from '../types'\n\nexport const product: LandingTheme = {\n name: 'product',\n colors: {\n background: '240 6% 4%',\n foreground: '0 0% 98%',\n muted: '240 5% 11%',\n mutedForeground: '240 4% 64%',\n primary: '188 96% 42%',\n primaryForeground: '0 0% 100%',\n secondary: '188 20% 12%',\n secondaryForeground: '0 0% 98%',\n card: '240 5% 10%',\n cardForeground: '0 0% 98%',\n border: '240 4% 16%',\n sectionAlt: '240 6% 7%',\n },\n hero: {\n background: 'dark',\n size: 'full',\n motion: { type: 'slideUp', duration: 700, easing: 'ease-in-out', delay: 0 },\n },\n features: {\n card: 'feature-glass',\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 700, easing: 'ease-in-out', delay: 0 },\n decorator: false,\n },\n stats: {\n numberSize: 'text-6xl',\n countUp: true,\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 700, easing: 'ease-in-out', delay: 0 },\n },\n cta: {\n background: 'dark',\n motion: { type: 'slideUp', duration: 700, easing: 'ease-in-out', delay: 0 },\n },\n testimonials: {\n variant: 'carousel',\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 700, easing: 'ease-in-out', delay: 0 },\n },\n logoCloud: {\n variant: 'marquee',\n speed: 40,\n },\n showcase: {\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 700, easing: 'ease-in-out', delay: 0 },\n },\n}\n","import type { LandingTheme } from '../types'\n\nexport const dashboard: LandingTheme = {\n name: 'dashboard',\n colors: {\n background: '222 47% 11%',\n foreground: '214 32% 91%',\n muted: '222 42% 16%',\n mutedForeground: '215 20% 65%',\n primary: '217 91% 60%',\n primaryForeground: '0 0% 100%',\n secondary: '217 30% 18%',\n secondaryForeground: '214 32% 91%',\n card: '222 47% 14%',\n cardForeground: '214 32% 91%',\n border: '217 30% 22%',\n sectionAlt: '222 42% 14%',\n },\n hero: {\n background: 'gradient',\n size: 'xl',\n motion: { type: 'fadeIn', duration: 650, easing: 'ease-out', delay: 0 },\n },\n features: {\n card: 'feature-glass',\n staggerDelay: 100,\n motion: { type: 'scaleIn', duration: 650, easing: 'ease-out', delay: 0 },\n decorator: false,\n },\n stats: {\n numberSize: 'text-4xl',\n countUp: true,\n staggerDelay: 100,\n motion: { type: 'fadeIn', duration: 650, easing: 'ease-out', delay: 0 },\n },\n cta: {\n background: 'gradient-soft',\n motion: { type: 'fadeIn', duration: 650, easing: 'ease-out', delay: 0 },\n },\n testimonials: {\n variant: 'grid',\n staggerDelay: 100,\n motion: { type: 'scaleIn', duration: 650, easing: 'ease-out', delay: 0 },\n },\n logoCloud: {\n variant: 'marquee',\n speed: 45,\n },\n showcase: {\n staggerDelay: 100,\n motion: { type: 'scaleIn', duration: 650, easing: 'ease-out', delay: 0 },\n },\n}\n","import type { LandingTheme } from '../types'\n\nexport const app: LandingTheme = {\n name: 'app',\n colors: {\n background: '0 0% 100%',\n foreground: '215 28% 17%',\n muted: '270 100% 96%',\n mutedForeground: '220 9% 46%',\n primary: '258 90% 66%',\n primaryForeground: '0 0% 100%',\n secondary: '258 20% 93%',\n secondaryForeground: '215 28% 17%',\n card: '0 0% 100%',\n cardForeground: '215 28% 17%',\n border: '220 13% 91%',\n sectionAlt: '270 100% 98%',\n },\n hero: {\n background: 'gradient',\n size: 'full',\n motion: { type: 'slideUp', duration: 600, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n features: {\n card: 'feature-glass',\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 600, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n decorator: false,\n },\n stats: {\n numberSize: 'text-5xl',\n countUp: true,\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 600, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n cta: {\n background: 'gradient-soft',\n motion: { type: 'bounceIn', duration: 500, easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)', delay: 0 },\n },\n testimonials: {\n variant: 'carousel',\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 600, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n logoCloud: {\n variant: 'marquee',\n speed: 50,\n },\n showcase: {\n staggerDelay: 120,\n motion: { type: 'slideUp', duration: 600, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n}\n","import type { LandingTheme } from '../types'\n\nexport const immersive: LandingTheme = {\n name: 'immersive',\n colors: {\n background: '0 0% 0%',\n foreground: '0 0% 100%',\n muted: '0 0% 7%',\n mutedForeground: '0 0% 45%',\n primary: '252 92% 76%',\n primaryForeground: '0 0% 100%',\n secondary: '252 15% 12%',\n secondaryForeground: '0 0% 95%',\n card: '0 0% 5%',\n cardForeground: '0 0% 100%',\n border: '0 0% 10%',\n sectionAlt: '0 0% 4%',\n },\n hero: {\n background: 'dark',\n size: 'full',\n motion: { type: 'fadeIn', duration: 1200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', delay: 0 },\n },\n features: {\n card: 'glow',\n staggerDelay: 200,\n motion: { type: 'slideUp', duration: 900, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', delay: 0 },\n decorator: false,\n },\n stats: {\n numberSize: 'text-6xl',\n countUp: true,\n staggerDelay: 200,\n motion: { type: 'fadeIn', duration: 1200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', delay: 0 },\n },\n cta: {\n background: 'dark',\n motion: { type: 'fadeIn', duration: 1200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', delay: 0 },\n },\n testimonials: {\n variant: 'marquee',\n staggerDelay: 200,\n motion: { type: 'fadeIn', duration: 1200, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', delay: 0 },\n },\n logoCloud: {\n variant: 'marquee',\n speed: 30,\n },\n showcase: {\n staggerDelay: 200,\n motion: { type: 'slideUp', duration: 900, easing: 'cubic-bezier(0.16, 1, 0.3, 1)', delay: 0 },\n },\n}\n","import type { LandingTheme } from '../types'\n\nexport const portfolio: LandingTheme = {\n name: 'portfolio',\n colors: {\n background: '0 0% 4%',\n foreground: '0 0% 98%',\n muted: '0 0% 10%',\n mutedForeground: '0 0% 64%',\n primary: '25 95% 53%',\n primaryForeground: '0 0% 100%',\n secondary: '25 20% 12%',\n secondaryForeground: '0 0% 98%',\n card: '0 0% 8%',\n cardForeground: '0 0% 98%',\n border: '25 30% 15%',\n sectionAlt: '0 0% 6%',\n },\n hero: {\n background: 'dark',\n size: 'full',\n motion: { type: 'slideUp', duration: 800, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n features: {\n card: 'feature-glass',\n staggerDelay: 100,\n motion: { type: 'slideUp', duration: 700, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n decorator: false,\n },\n stats: {\n numberSize: 'text-5xl',\n countUp: true,\n staggerDelay: 100,\n motion: { type: 'slideUp', duration: 700, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n cta: {\n background: 'dark',\n motion: { type: 'slideUp', duration: 700, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n testimonials: {\n variant: 'grid',\n staggerDelay: 100,\n motion: { type: 'slideUp', duration: 700, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n logoCloud: {\n variant: 'grid',\n speed: 40,\n },\n showcase: {\n staggerDelay: 100,\n motion: { type: 'slideUp', duration: 700, easing: 'cubic-bezier(0.22, 1, 0.36, 1)', delay: 0 },\n },\n}\n","import type { LandingTheme, LandingThemeName, DeepPartial } from '../types'\nimport { corporate } from './corporate'\nimport { marketing } from './marketing'\nimport { product } from './product'\nimport { dashboard } from './dashboard'\nimport { app } from './app'\nimport { immersive } from './immersive'\nimport { portfolio } from './portfolio'\n\nconst themeRegistry: Record<LandingThemeName, LandingTheme> = {\n corporate,\n marketing,\n product,\n dashboard,\n app,\n immersive,\n portfolio,\n}\n\nexport function resolveTheme(theme: LandingThemeName | LandingTheme): LandingTheme {\n if (typeof theme === 'string') {\n return themeRegistry[theme]\n }\n return theme\n}\n\n/** 기존 테마를 기반으로 커스텀 테마 생성 */\nexport function createLandingTheme(\n base: LandingThemeName,\n overrides: DeepPartial<Omit<LandingTheme, 'name'>> & { name: string }\n): LandingTheme {\n const baseTheme = themeRegistry[base]\n return {\n ...baseTheme,\n name: overrides.name as LandingThemeName,\n colors: { ...baseTheme.colors, ...overrides.colors },\n hero: { ...baseTheme.hero, ...overrides.hero },\n features: { ...baseTheme.features, ...overrides.features },\n stats: { ...baseTheme.stats, ...overrides.stats },\n cta: { ...baseTheme.cta, ...overrides.cta },\n testimonials: { ...baseTheme.testimonials, ...overrides.testimonials },\n logoCloud: { ...baseTheme.logoCloud, ...overrides.logoCloud },\n showcase: { ...baseTheme.showcase, ...overrides.showcase },\n } as LandingTheme\n}\n\nexport { corporate, marketing, product, dashboard, app, immersive, portfolio }\n","\"use client\"\n\nimport React, { createContext, useContext, useMemo } from 'react'\nimport { resolveTheme } from './themes'\nimport type { LandingProviderProps, LandingTheme, LandingColorTokens } from './types'\n\nconst LandingContext = createContext<LandingTheme | null>(null)\n\nexport function useLandingTheme(): LandingTheme {\n const ctx = useContext(LandingContext)\n if (!ctx) {\n throw new Error('useLandingTheme must be used within <Landing.Provider>')\n }\n return ctx\n}\n\nfunction buildCssVars(c: LandingColorTokens): React.CSSProperties {\n return {\n // Tailwind v4 @theme vars (--color-*)\n '--color-primary': `hsl(${c.primary})`,\n '--color-primary-foreground': `hsl(${c.primaryForeground})`,\n '--color-background': `hsl(${c.background})`,\n '--color-foreground': `hsl(${c.foreground})`,\n '--color-muted': `hsl(${c.muted})`,\n '--color-muted-foreground': `hsl(${c.mutedForeground})`,\n '--color-secondary': `hsl(${c.secondary})`,\n '--color-secondary-foreground': `hsl(${c.secondaryForeground})`,\n '--color-card': `hsl(${c.card})`,\n '--color-card-foreground': `hsl(${c.cardForeground})`,\n '--color-border': `hsl(${c.border})`,\n '--color-input': `hsl(${c.border})`,\n '--color-ring': `hsl(${c.primary})`,\n // Legacy hsl(var(--*)) pattern vars\n '--primary': c.primary,\n '--primary-foreground': c.primaryForeground,\n '--background': c.background,\n '--foreground': c.foreground,\n '--muted': c.muted,\n '--muted-foreground': c.mutedForeground,\n '--secondary': c.secondary,\n '--secondary-foreground': c.secondaryForeground,\n '--card': c.card,\n '--card-foreground': c.cardForeground,\n '--border': c.border,\n '--input': c.border,\n '--ring': c.primary,\n // Landing-specific\n '--landing-section-alt': `hsl(${c.sectionAlt})`,\n } as React.CSSProperties\n}\n\nexport function LandingProvider({ theme, children }: LandingProviderProps) {\n const resolved = useMemo(() => resolveTheme(theme), [theme])\n\n const style = useMemo<React.CSSProperties>(() => ({\n backgroundColor: `hsl(${resolved.colors.background})`,\n color: `hsl(${resolved.colors.foreground})`,\n ...buildCssVars(resolved.colors),\n }), [resolved.colors])\n\n return (\n <LandingContext.Provider value={resolved}>\n <div style={style}>\n {children}\n </div>\n </LandingContext.Provider>\n )\n}\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\n/**\n * HUA UI의 스마트 클래스 병합 유틸리티\n * clsx와 tailwind-merge를 결합하여 중복 클래스를 자동으로 해결합니다.\n * \n * @param inputs - 병합할 클래스 값들\n * @returns 병합된 클래스 문자열\n * \n * @example\n * ```tsx\n * merge(\"px-2 py-1\", \"px-4\") // \"py-1 px-4\"\n * merge(\"text-red-500\", \"text-blue-500\") // \"text-blue-500\"\n * merge(\"bg-white\", \"dark:bg-slate-900\") // \"bg-white dark:bg-slate-900\"\n * ```\n */\nexport function merge(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n\n/**\n * 조건부 클래스 병합 유틸리티\n * 조건에 따라 클래스를 선택적으로 병합합니다.\n * \n * @param condition - 클래스를 적용할 조건\n * @param trueClass - 조건이 true일 때 적용할 클래스\n * @param falseClass - 조건이 false일 때 적용할 클래스 (선택사항)\n * @returns 병합된 클래스 문자열\n * \n * @example\n * ```tsx\n * mergeIf(isActive, \"bg-blue-500\", \"bg-gray-200\")\n * mergeIf(isLoading, \"opacity-50 cursor-not-allowed\")\n * ```\n */\nexport function mergeIf(\n condition: boolean,\n trueClass: ClassValue,\n falseClass?: ClassValue\n) {\n return merge(condition ? trueClass : falseClass || \"\")\n}\n\n/**\n * 상대 시간 포맷팅 유틸리티\n * \n * 날짜를 상대 시간 형식으로 포맷팅합니다 (예: \"방금 전\", \"5분 전\", \"2시간 전\", \"3일 전\").\n * 7일 이상 경과한 경우 절대 날짜를 반환합니다.\n * \n * Formats a date as relative time (e.g., \"방금 전\", \"5분 전\", \"2시간 전\", \"3일 전\").\n * Returns absolute date for dates older than 7 days.\n * \n * @param timestamp - 포맷팅할 날짜 (Date 객체 또는 ISO 문자열) / Date to format (Date object or ISO string)\n * @param locale - 로케일 (기본값: \"ko-KR\") / Locale (default: \"ko-KR\")\n * @returns 포맷팅된 상대 시간 문자열 / Formatted relative time string\n * \n * @example\n * ```tsx\n * formatRelativeTime(new Date()) // \"방금 전\"\n * formatRelativeTime(new Date(Date.now() - 5 * 60000)) // \"5분 전\"\n * formatRelativeTime(new Date(Date.now() - 2 * 3600000)) // \"2시간 전\"\n * formatRelativeTime(new Date(Date.now() - 3 * 86400000)) // \"3일 전\"\n * formatRelativeTime(new Date(\"2024-01-01\")) // \"2024. 1. 1.\" (7일 이상 경과)\n * ```\n */\nexport function formatRelativeTime(timestamp: Date | string, locale = \"ko-KR\"): string {\n const date = typeof timestamp === \"string\" ? new Date(timestamp) : timestamp;\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(diff / 3600000);\n const days = Math.floor(diff / 86400000);\n\n if (minutes < 1) return locale === \"ko-KR\" ? \"방금 전\" : \"just now\";\n if (minutes < 60) return locale === \"ko-KR\" ? `${minutes}분 전` : `${minutes}m ago`;\n if (hours < 24) return locale === \"ko-KR\" ? `${hours}시간 전` : `${hours}h ago`;\n if (days < 7) return locale === \"ko-KR\" ? `${days}일 전` : `${days}d ago`;\n return date.toLocaleDateString(locale);\n}\n\n/**\n * 객체 기반 클래스 병합 유틸리티\n * 객체의 키-값 쌍을 기반으로 조건부 클래스를 병합합니다.\n * \n * @param classMap - 클래스 맵 객체\n * @returns 병합된 클래스 문자열\n * \n * @example\n * ```tsx\n * mergeMap({\n * \"bg-blue-500\": isPrimary,\n * \"bg-gray-500\": !isPrimary,\n * \"text-white\": true,\n * \"opacity-50\": isDisabled\n * })\n * ```\n */\nexport function mergeMap(classMap: Record<string, boolean | undefined | null>) {\n const classes = Object.entries(classMap)\n .filter(([, condition]) => condition)\n .map(([className]) => className)\n \n return merge(...classes)\n}\n\n// 하위 호환성을 위해 cn도 export (점진적 마이그레이션 지원)\nexport const cn = merge ","\"use client\"\n\nimport React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\n\nexport const containerVariants = cva(\n \"w-full\",\n {\n variants: {\n size: {\n sm: \"max-w-2xl\",\n md: \"max-w-4xl\",\n lg: \"max-w-6xl\",\n xl: \"max-w-7xl\",\n full: \"max-w-full\",\n },\n padding: {\n none: \"\",\n sm: \"px-3 sm:px-4 py-6 sm:py-8\",\n md: \"px-4 sm:px-6 py-8 sm:py-12\",\n lg: \"px-4 sm:px-6 lg:px-8 py-10 sm:py-16\",\n xl: \"px-6 sm:px-8 lg:px-12 py-12 sm:py-20\",\n },\n },\n defaultVariants: {\n size: \"lg\",\n padding: \"md\",\n },\n }\n)\n\n/**\n * Container 컴포넌트의 props\n */\nexport interface ContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\"\n centered?: boolean\n fluid?: boolean\n}\n\n/**\n * Container 컴포넌트\n *\n * 콘텐츠를 감싸는 컨테이너 컴포넌트입니다.\n * 반응형 최대 너비와 패딩을 제공하여 일관된 레이아웃을 구성합니다.\n *\n * @example\n * <Container><h1>제목</h1></Container>\n * <Container size=\"sm\" padding=\"none\"><div>콘텐츠</div></Container>\n * <Container fluid padding=\"xl\"><div>전체 너비</div></Container>\n */\nconst Container = React.forwardRef<HTMLDivElement, ContainerProps>(\n ({\n className,\n size = \"lg\",\n padding = \"md\",\n centered = true,\n fluid = false,\n ...props\n }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(\n containerVariants({ size: fluid ? undefined : size, padding }),\n fluid && \"max-w-full\",\n centered && \"mx-auto\",\n className\n )}\n {...props}\n />\n )\n }\n)\nContainer.displayName = \"Container\"\n\nexport { Container } ","\"use client\";\n\nimport React, { useEffect, useState } from \"react\";\nimport { merge } from \"../../lib/utils\";\n\n/**\n * AnimatedGradient 컴포넌트의 props / AnimatedGradient component props\n * @property {string[]} [colors] - 그라디언트 색상 배열 / Array of gradient colors\n * @property {number} [speed=3] - 애니메이션 속도 (초) / Animation speed in seconds\n * @property {boolean} [blur=true] - 블러 효과 / Blur effect\n * @property {number} [blurAmount=100] - 블러 양 (px) / Blur amount in pixels\n * @property {\"linear\" | \"radial\" | \"conic\" | \"mesh\"} [type=\"mesh\"] - 그라디언트 타입 / Gradient type\n * @property {boolean} [animate=true] - 애니메이션 활성화 / Enable animation\n */\nexport interface AnimatedGradientProps extends React.HTMLAttributes<HTMLDivElement> {\n colors?: string[];\n speed?: number;\n blur?: boolean;\n blurAmount?: number;\n type?: \"linear\" | \"radial\" | \"conic\" | \"mesh\";\n animate?: boolean;\n}\n\nconst defaultColors = [\n \"#ff0080\",\n \"#7928ca\",\n \"#0070f3\",\n \"#00dfd8\",\n];\n\n/**\n * AnimatedGradient 컴포넌트 / AnimatedGradient component\n *\n * 아름다운 애니메이션 그라디언트 배경을 제공합니다.\n * 히어로 섹션, 배경, 오버레이에 적합합니다.\n *\n * Provides beautiful animated gradient backgrounds.\n * Perfect for hero sections, backgrounds, and overlays.\n *\n * @component\n * @example\n * // 메쉬 그라디언트 / Mesh gradient\n * <AnimatedGradient type=\"mesh\" className=\"absolute inset-0 -z-10\" />\n *\n * @example\n * // 커스텀 색상 / Custom colors\n * <AnimatedGradient\n * colors={[\"#667eea\", \"#764ba2\", \"#f093fb\"]}\n * speed={5}\n * type=\"conic\"\n * />\n */\nconst AnimatedGradient = React.forwardRef<HTMLDivElement, AnimatedGradientProps>(\n (\n {\n children,\n className,\n colors = defaultColors,\n speed = 3,\n blur = true,\n blurAmount = 100,\n type = \"mesh\",\n animate = true,\n style,\n ...props\n },\n ref\n ) => {\n const [mounted, setMounted] = useState(false);\n const prefersReducedMotion = useReducedMotion();\n const shouldAnimate = animate && !prefersReducedMotion;\n\n useEffect(() => {\n setMounted(true);\n }, []);\n\n const renderGradient = () => {\n switch (type) {\n case \"linear\":\n return (\n <div\n className=\"absolute inset-0\"\n style={{\n background: `linear-gradient(\n ${shouldAnimate ? \"var(--gradient-angle, 0deg)\" : \"135deg\"},\n ${colors.join(\", \")}\n )`,\n animation: shouldAnimate ? `gradient-rotate ${speed}s linear infinite` : undefined,\n }}\n />\n );\n\n case \"radial\":\n return (\n <div\n className=\"absolute inset-0\"\n style={{\n background: `radial-gradient(\n circle at ${shouldAnimate ? \"var(--gradient-x, 50%) var(--gradient-y, 50%)\" : \"50% 50%\"},\n ${colors.join(\", \")}\n )`,\n animation: shouldAnimate ? `gradient-move ${speed}s ease-in-out infinite` : undefined,\n }}\n />\n );\n\n case \"conic\":\n return (\n <div\n className=\"absolute inset-0\"\n style={{\n background: `conic-gradient(\n from ${shouldAnimate ? \"var(--gradient-angle, 0deg)\" : \"0deg\"} at 50% 50%,\n ${colors.join(\", \")},\n ${colors[0]}\n )`,\n animation: shouldAnimate ? `gradient-spin ${speed}s linear infinite` : undefined,\n }}\n />\n );\n\n case \"mesh\":\n default:\n // Render blobs only after mount to prevent SSR hydration mismatch\n // (Math.sin/cos produce floating-point values that differ between server and client)\n if (!mounted) return null;\n return (\n <>\n {colors.map((color, index) => {\n const angle = (360 / colors.length) * index;\n const delay = (speed / colors.length) * index;\n return (\n <div\n key={index}\n className=\"absolute rounded-full mix-blend-screen\"\n style={{\n width: \"60%\",\n height: \"60%\",\n background: `radial-gradient(circle at center, ${color} 0%, transparent 70%)`,\n top: `${30 + Math.sin((angle * Math.PI) / 180) * 20}%`,\n left: `${30 + Math.cos((angle * Math.PI) / 180) * 20}%`,\n animation: shouldAnimate\n ? `gradient-blob ${speed}s ease-in-out infinite`\n : undefined,\n animationDelay: shouldAnimate ? `${-delay}s` : undefined,\n }}\n />\n );\n })}\n </>\n );\n }\n };\n\n return (\n <div\n ref={ref}\n className={merge(\n \"relative overflow-hidden\",\n className\n )}\n style={style}\n {...props}\n >\n {/* Gradient layer */}\n <div\n className=\"absolute inset-0\"\n style={{\n filter: blur ? `blur(${blurAmount}px)` : undefined,\n }}\n >\n {renderGradient()}\n </div>\n\n {/* Content */}\n {children && <div className=\"relative z-10\">{children}</div>}\n\n {/* Animation keyframes - injected as style element */}\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes gradient-rotate {\n 0% { --gradient-angle: 0deg; }\n 100% { --gradient-angle: 360deg; }\n }\n @keyframes gradient-spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n @keyframes gradient-move {\n 0%, 100% { --gradient-x: 0%; --gradient-y: 0%; }\n 25% { --gradient-x: 100%; --gradient-y: 0%; }\n 50% { --gradient-x: 100%; --gradient-y: 100%; }\n 75% { --gradient-x: 0%; --gradient-y: 100%; }\n }\n @keyframes gradient-blob {\n 0%, 100% { transform: translate(0, 0) scale(1); }\n 25% { transform: translate(20%, -20%) scale(1.1); }\n 50% { transform: translate(0, 20%) scale(0.9); }\n 75% { transform: translate(-20%, -10%) scale(1.05); }\n }\n `}} />\n </div>\n );\n }\n);\n\nAnimatedGradient.displayName = \"AnimatedGradient\";\n\n// Hook to check for reduced motion preference\nfunction useReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n setPrefersReducedMotion(mediaQuery.matches);\n\n const handleChange = (e: MediaQueryListEvent) => {\n setPrefersReducedMotion(e.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, []);\n\n return prefersReducedMotion;\n}\n\nexport { AnimatedGradient };\n","\"use client\"\n\nimport React, { useMemo } from 'react'\nimport { merge } from '../lib/utils'\nimport { Container } from '../components/Container'\nimport { AnimatedGradient } from '../components/advanced/AnimatedGradient'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingHeroProps, LandingMotionOverride } from './types'\n\nfunction resolveMotion(\n themeMotion: Required<LandingMotionOverride>,\n override?: LandingMotionOverride\n): Required<LandingMotionOverride> {\n if (!override) return themeMotion\n return { ...themeMotion, ...override }\n}\n\nfunction getInitialTransform(type: string): string {\n switch (type) {\n case 'slideUp': return 'translateY(32px)'\n case 'slideLeft': return 'translateX(-32px)'\n case 'slideRight': return 'translateX(32px)'\n case 'scaleIn': return 'scale(0.95)'\n case 'bounceIn': return 'scale(0.75)'\n default: return 'none'\n }\n}\n\nexport function LandingHero({\n title,\n subtitle,\n description,\n primaryAction,\n secondaryAction,\n size: sizeProp,\n background: bgProp,\n gradientColors,\n scrollIndicator = false,\n motion: motionOverride,\n className,\n ...rest\n}: LandingHeroProps) {\n const theme = useLandingTheme()\n const size = sizeProp ?? theme.hero.size\n const bg = bgProp ?? theme.hero.background\n const motion = resolveMotion(theme.hero.motion, motionOverride)\n\n const contentStyle = useMemo<React.CSSProperties>(() => ({\n opacity: 0,\n transform: getInitialTransform(motion.type),\n animation: `landing-hero-enter ${motion.duration}ms ${motion.easing} ${motion.delay}ms forwards`,\n }), [motion])\n\n return (\n <section\n className={merge(\n \"relative overflow-hidden flex items-center justify-center\",\n size === 'full' ? 'min-h-screen' : 'py-28 sm:py-36',\n bg === 'dark' && 'bg-gray-950 text-white',\n className\n )}\n {...rest}\n >\n {/* Background layer */}\n {bg === 'gradient' && (\n <div className=\"absolute inset-0 gradient-bg-soft\" aria-hidden=\"true\" />\n )}\n {bg === 'animated-gradient' && (\n <AnimatedGradient\n colors={gradientColors}\n type=\"mesh\"\n className=\"absolute inset-0 -z-0\"\n aria-hidden=\"true\"\n />\n )}\n {bg === 'dark' && (\n <div\n className=\"absolute inset-0\"\n style={{\n background: 'radial-gradient(ellipse 80% 60% at 50% 40%, rgba(120, 119, 198, 0.08), transparent)',\n }}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Content */}\n <Container size=\"lg\" padding=\"none\" centered className=\"relative z-10 px-6\">\n <div style={contentStyle} className=\"text-center max-w-4xl mx-auto\">\n <h1 className=\"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight mb-6\">\n {title}\n </h1>\n\n {subtitle && (\n <p className=\"text-xl sm:text-2xl text-muted-foreground mb-4\">\n {subtitle}\n </p>\n )}\n\n {description && (\n <p className=\"text-base sm:text-lg text-muted-foreground/80 max-w-2xl mx-auto mb-8\">\n {description}\n </p>\n )}\n\n {(primaryAction || secondaryAction) && (\n <div className=\"flex flex-col sm:flex-row items-center justify-center gap-4\">\n {primaryAction}\n {secondaryAction}\n </div>\n )}\n </div>\n </Container>\n\n {/* Scroll indicator */}\n {scrollIndicator && (\n <div className=\"absolute bottom-8 left-1/2 -translate-x-1/2 animate-bounce\" aria-hidden=\"true\">\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\" className=\"text-muted-foreground\">\n <path d=\"M12 5v14M5 12l7 7 7-7\" />\n </svg>\n </div>\n )}\n\n {/* Keyframe injection */}\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes landing-hero-enter {\n to { opacity: 1; transform: none; }\n }\n `}} />\n </section>\n )\n}\n","\"use client\"\n\nimport React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\nimport { Container, type ContainerProps } from \"./Container\"\n\nexport const sectionVariants = cva(\"relative w-full\", {\n variants: {\n spacing: {\n none: \"\",\n sm: \"py-12 sm:py-16\",\n md: \"py-16 sm:py-20 lg:py-24\",\n lg: \"py-20 sm:py-28\",\n xl: \"py-28 sm:py-36\",\n },\n background: {\n none: \"\",\n muted: \"bg-muted/30\",\n accent: \"bg-accent/5\",\n primary: \"bg-primary/5\",\n },\n },\n defaultVariants: { spacing: \"lg\", background: \"none\" },\n})\n\nexport interface SectionHeaderConfig {\n title: string\n subtitle?: string\n action?: React.ReactNode\n /** section-line 데코레이터 표시 @default true */\n decorator?: boolean\n /** 텍스트 정렬 @default 'center' */\n align?: 'left' | 'center'\n}\n\nexport interface SectionProps\n extends React.HTMLAttributes<HTMLElement>,\n VariantProps<typeof sectionVariants> {\n /** Container 사이즈 @default 'lg' */\n container?: ContainerProps['size']\n /** Container 패딩 @default 'none' */\n containerPadding?: ContainerProps['padding']\n /** 섹션 헤더 설정 */\n header?: SectionHeaderConfig\n /** 풀위드 모드 (Container 없이 직접) */\n fullWidth?: boolean\n}\n\nconst sectionLineStyle: React.CSSProperties = {\n width: '80px',\n height: '3px',\n borderRadius: '9999px',\n background: 'linear-gradient(90deg, var(--color-primary, hsl(var(--primary))), var(--color-accent, hsl(var(--accent-foreground))))',\n marginBottom: '1.5rem',\n}\n\nfunction SectionHeader({ config }: { config: SectionHeaderConfig }) {\n const isCenter = config.align !== 'left'\n\n return (\n <div className={merge(\"mb-16\", isCenter && \"text-center\")}>\n {config.decorator !== false && (\n <div\n style={sectionLineStyle}\n className={merge(isCenter && \"mx-auto\")}\n aria-hidden=\"true\"\n />\n )}\n <h2 className=\"text-3xl md:text-5xl font-extrabold mb-4\">\n {config.title}\n </h2>\n {config.subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto\">\n {config.subtitle}\n </p>\n )}\n {config.action && (\n <div className=\"mt-6\">{config.action}</div>\n )}\n </div>\n )\n}\n\n/**\n * Section 컴포넌트\n *\n * 랜딩 페이지 섹션의 보일러플레이트를 줄이는 시맨틱 래퍼.\n * 내부적으로 Container를 사용하며, header prop으로 제목/부제/데코레이터를 자동 생성합니다.\n *\n * @example\n * <Section header={{ title: \"제목\", subtitle: \"부제\" }}>\n * {children}\n * </Section>\n *\n * <Section spacing=\"xl\" background=\"muted\" fullWidth>\n * {fullWidthContent}\n * </Section>\n */\nconst Section = React.forwardRef<HTMLElement, SectionProps>(\n ({\n className,\n spacing,\n background,\n container = \"lg\",\n containerPadding = \"none\",\n header,\n fullWidth = false,\n children,\n ...props\n }, ref) => {\n const content = (\n <>\n {header && <SectionHeader config={header} />}\n {children}\n </>\n )\n\n return (\n <section\n ref={ref}\n className={merge(\n sectionVariants({ spacing, background }),\n \"px-6\",\n className\n )}\n {...props}\n >\n {fullWidth ? content : (\n <Container size={container} padding={containerPadding} centered>\n {content}\n </Container>\n )}\n </section>\n )\n }\n)\nSection.displayName = \"Section\"\n\nexport { Section }\n","\"use client\";\n\nimport React, { useRef, useState, useCallback } from \"react\";\nimport { merge } from \"../../lib/utils\";\n\n/**\n * GlowCard 컴포넌트의 props / GlowCard component props\n * @property {string} [glowColor=\"rgba(120, 119, 198, 0.3)\"] - 글로우 색상 / Glow color\n * @property {number} [glowSize=400] - 글로우 크기 (px) / Glow size in pixels\n * @property {number} [glowOpacity=0.6] - 글로우 투명도 / Glow opacity\n * @property {boolean} [border=true] - 글로우 보더 표시 / Show glow border\n * @property {string} [borderColor] - 보더 색상 (기본: glowColor) / Border color (default: glowColor)\n */\nexport interface GlowCardProps extends React.HTMLAttributes<HTMLDivElement> {\n glowColor?: string;\n glowSize?: number;\n glowOpacity?: number;\n border?: boolean;\n borderColor?: string;\n}\n\n/**\n * GlowCard 컴포넌트 / GlowCard component\n *\n * 마우스를 따라다니는 글로우 효과가 있는 카드 컴포넌트입니다.\n * SaaS 랜딩 페이지, 프리미엄 UI에 적합합니다.\n *\n * Card component with mouse-following glow effect.\n * Perfect for SaaS landing pages and premium UI.\n *\n * @component\n * @example\n * <GlowCard glowColor=\"rgba(59, 130, 246, 0.4)\">\n * <h3>Premium Feature</h3>\n * <p>This is a premium feature card</p>\n * </GlowCard>\n */\nconst GlowCard = React.forwardRef<HTMLDivElement, GlowCardProps>(\n (\n {\n children,\n className,\n glowColor = \"rgba(120, 119, 198, 0.3)\",\n glowSize = 400,\n glowOpacity = 0.6,\n border = true,\n borderColor,\n style,\n ...props\n },\n ref\n ) => {\n const cardRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!cardRef.current) return;\n const rect = cardRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n },\n []\n );\n\n const glowStyle: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: \"inherit\",\n opacity: isHovered ? glowOpacity : 0,\n background: `radial-gradient(${glowSize}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${glowColor}, transparent 40%)`,\n transition: \"opacity 0.3s ease\",\n pointerEvents: \"none\",\n };\n\n const borderStyle: React.CSSProperties = border\n ? {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: \"inherit\",\n opacity: isHovered ? 1 : 0,\n background: `radial-gradient(${glowSize / 2}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${borderColor || glowColor}, transparent 40%)`,\n transition: \"opacity 0.3s ease\",\n pointerEvents: \"none\",\n mask: \"linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0)\",\n maskComposite: \"exclude\",\n WebkitMaskComposite: \"xor\",\n padding: \"1px\",\n }\n : {};\n\n return (\n <div\n ref={mergeRefs(ref, cardRef)}\n className={merge(\n \"relative overflow-hidden rounded-xl bg-card border border-border p-6\",\n \"transition-all duration-300\",\n isHovered && \"border-transparent\",\n className\n )}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n {/* Glow effect */}\n <div style={glowStyle} aria-hidden=\"true\" />\n\n {/* Border glow */}\n {border && <div style={borderStyle as React.CSSProperties} aria-hidden=\"true\" />}\n\n {/* Content */}\n <div className=\"relative z-10\">{children}</div>\n </div>\n );\n }\n);\n\nGlowCard.displayName = \"GlowCard\";\n\n// Utility to merge refs\nfunction mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref && typeof ref === \"object\") {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n };\n}\n\nexport { GlowCard };\n","\"use client\";\n\nimport React, { useRef, useState, useCallback } from \"react\";\nimport { merge } from \"../../lib/utils\";\n\n/**\n * SpotlightCard 컴포넌트의 props / SpotlightCard component props\n * @property {string} [spotlightColor=\"rgba(255, 255, 255, 0.1)\"] - 스포트라이트 색상 / Spotlight color\n * @property {number} [spotlightSize=300] - 스포트라이트 크기 (px) / Spotlight size in pixels\n * @property {boolean} [gradient=true] - 그라디언트 배경 효과 / Gradient background effect\n * @property {string} [gradientFrom=\"rgba(255, 255, 255, 0.05)\"] - 그라디언트 시작 색상 / Gradient start color\n * @property {string} [gradientTo=\"transparent\"] - 그라디언트 끝 색상 / Gradient end color\n */\nexport interface SpotlightCardProps extends React.HTMLAttributes<HTMLDivElement> {\n spotlightColor?: string;\n spotlightSize?: number;\n gradient?: boolean;\n gradientFrom?: string;\n gradientTo?: string;\n}\n\n/**\n * SpotlightCard 컴포넌트 / SpotlightCard component\n *\n * 마우스 위치에 스포트라이트 효과를 표시하는 프리미엄 카드 컴포넌트입니다.\n * 다크 테마 랜딩 페이지, 프리미엄 UI에 적합합니다.\n *\n * Premium card component that displays a spotlight effect at mouse position.\n * Perfect for dark theme landing pages and premium UI.\n *\n * @component\n * @example\n * <SpotlightCard className=\"bg-gray-900 text-white p-8\">\n * <h3>Premium Feature</h3>\n * <p>Discover our exclusive features</p>\n * </SpotlightCard>\n */\nconst SpotlightCard = React.forwardRef<HTMLDivElement, SpotlightCardProps>(\n (\n {\n children,\n className,\n spotlightColor = \"rgba(255, 255, 255, 0.1)\",\n spotlightSize = 300,\n gradient = true,\n gradientFrom = \"rgba(255, 255, 255, 0.05)\",\n gradientTo = \"transparent\",\n style,\n ...props\n },\n ref\n ) => {\n const cardRef = useRef<HTMLDivElement>(null);\n const [mousePosition, setMousePosition] = useState({ x: 0, y: 0 });\n const [isHovered, setIsHovered] = useState(false);\n\n const handleMouseMove = useCallback(\n (e: React.MouseEvent<HTMLDivElement>) => {\n if (!cardRef.current) return;\n const rect = cardRef.current.getBoundingClientRect();\n setMousePosition({\n x: e.clientX - rect.left,\n y: e.clientY - rect.top,\n });\n },\n []\n );\n\n const spotlightStyle: React.CSSProperties = {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: \"inherit\",\n opacity: isHovered ? 1 : 0,\n background: `radial-gradient(${spotlightSize}px circle at ${mousePosition.x}px ${mousePosition.y}px, ${spotlightColor}, transparent 60%)`,\n transition: \"opacity 0.4s ease\",\n pointerEvents: \"none\",\n };\n\n const gradientOverlayStyle: React.CSSProperties = gradient\n ? {\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n borderRadius: \"inherit\",\n background: `linear-gradient(135deg, ${gradientFrom} 0%, ${gradientTo} 100%)`,\n pointerEvents: \"none\",\n }\n : {};\n\n return (\n <div\n ref={mergeRefs(ref, cardRef)}\n className={merge(\n \"relative overflow-hidden rounded-xl\",\n \"bg-gray-900 border border-gray-800\",\n \"transition-all duration-300\",\n isHovered && \"border-gray-700 shadow-2xl shadow-black/20\",\n className\n )}\n style={style}\n onMouseMove={handleMouseMove}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n {...props}\n >\n {/* Gradient overlay */}\n {gradient && <div style={gradientOverlayStyle} aria-hidden=\"true\" />}\n\n {/* Spotlight effect */}\n <div style={spotlightStyle} aria-hidden=\"true\" />\n\n {/* Content */}\n <div className=\"relative z-10\">{children}</div>\n </div>\n );\n }\n);\n\nSpotlightCard.displayName = \"SpotlightCard\";\n\n// Utility to merge refs\nfunction mergeRefs<T>(...refs: (React.Ref<T> | undefined)[]): React.RefCallback<T> {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref && typeof ref === \"object\") {\n (ref as React.MutableRefObject<T | null>).current = value;\n }\n });\n };\n}\n\nexport { SpotlightCard };\n","/**\n * Core Icons (Phosphor Icons)\n *\n * 핵심 아이콘만 포함하여 번들 크기를 최적화합니다.\n * 나머지 아이콘은 동적 fallback으로 처리됩니다.\n *\n * 포함 기준:\n * 1. my-app에서 실제 사용 중인 아이콘\n * 2. UI 컴포넌트에서 자주 사용되는 아이콘\n * 3. 각 카테고리의 대표 아이콘\n *\n * 새로운 아이콘이 필요하면 동적 fallback이 자동으로 처리합니다.\n */\n\nimport {\n // Navigation\n House,\n ArrowLeft,\n ArrowRight,\n ArrowUp,\n ArrowDown,\n List as ListIcon,\n X,\n MagnifyingGlass,\n Gear,\n ArrowSquareOut,\n CaretLeft,\n CaretRight,\n CaretDown,\n CaretUp,\n\n // Actions\n Pencil,\n Trash,\n Plus,\n Minus,\n Download,\n Upload,\n ArrowClockwise,\n FloppyDisk,\n Copy,\n\n // Text Formatting (Markdown Toolbar)\n TextB,\n TextItalic,\n TextStrikethrough,\n TextHOne,\n Link,\n Code,\n FileCode,\n Quotes,\n List,\n ListNumbers,\n\n // Status & Feedback\n SpinnerGap,\n CheckCircle,\n XCircle,\n WarningCircle,\n Info,\n Check,\n Circle,\n Question,\n\n // User & Auth\n User,\n Users,\n UserPlus,\n SignIn,\n SignOut,\n Eye,\n EyeSlash,\n\n // Data & Analytics\n ChartBar,\n TrendUp,\n Pulse,\n Database,\n Lightning,\n\n // Files & Content\n FileText,\n File,\n Folder,\n Book,\n BookOpen,\n\n // Communication\n Envelope,\n ChatCircle,\n Phone,\n\n // Media\n Image,\n Video,\n Camera,\n\n // Emotions\n Smiley,\n SmileySad,\n SmileyMeh,\n\n // Security\n Lock,\n LockOpen,\n Shield,\n Wallet,\n Key,\n\n // Time & Date\n Clock,\n Calendar,\n CalendarPlus,\n\n // UI Elements\n Bell,\n Heart,\n Star,\n Bookmark,\n Share,\n\n // Theme\n Monitor,\n Sun,\n Moon,\n\n // Additional\n Lightbulb,\n Brain,\n Flag,\n Square,\n Sparkle,\n Globe,\n DeviceMobile,\n Ticket,\n Clipboard,\n WifiHigh,\n WifiSlash,\n Cpu,\n MaskHappy,\n Rocket,\n\n // Admin\n Layout,\n Megaphone,\n Stack,\n Prohibit,\n} from '@phosphor-icons/react/dist/ssr'\n\n// 핵심 아이콘 객체 (키는 기존과 동일, 값만 Phosphor로 교체)\nexport const icons = {\n // Navigation\n home: House,\n arrowLeft: ArrowLeft,\n arrowRight: ArrowRight,\n arrowUp: ArrowUp,\n arrowDown: ArrowDown,\n menu: ListIcon,\n close: X,\n search: MagnifyingGlass,\n settings: Gear,\n externalLink: ArrowSquareOut,\n chevronLeft: CaretLeft,\n chevronRight: CaretRight,\n chevronDown: CaretDown,\n chevronUp: CaretUp,\n\n // Actions\n edit: Pencil,\n delete: Trash,\n add: Plus,\n remove: Minus,\n download: Download,\n upload: Upload,\n refresh: ArrowClockwise,\n save: FloppyDisk,\n copy: Copy,\n\n // Status & Feedback\n loader: SpinnerGap,\n success: CheckCircle,\n error: XCircle,\n alertCircle: WarningCircle,\n warning: WarningCircle,\n info: Info,\n check: Check,\n circle: Circle,\n helpCircle: Question,\n\n // User & Auth\n user: User,\n users: Users,\n userPlus: UserPlus,\n logIn: SignIn,\n logOut: SignOut,\n eye: Eye,\n eyeOff: EyeSlash,\n\n // Data & Analytics\n chart: ChartBar,\n barChart: ChartBar,\n trendingUp: TrendUp,\n activity: Pulse,\n database: Database,\n zap: Lightning,\n\n // Files & Content\n fileText: FileText,\n file: File,\n folder: Folder,\n book: Book,\n bookOpen: BookOpen,\n\n // Communication\n mail: Envelope,\n message: ChatCircle,\n phone: Phone,\n\n // Media\n image: Image,\n video: Video,\n camera: Camera,\n\n // Emotions\n smile: Smiley,\n frown: SmileySad,\n meh: SmileyMeh,\n\n // Security\n lock: Lock,\n unlock: LockOpen,\n shield: Shield,\n wallet: Wallet,\n key: Key,\n\n // Time & Date\n clock: Clock,\n calendar: Calendar,\n calendarPlus: CalendarPlus,\n\n // UI Elements\n bell: Bell,\n heart: Heart,\n star: Star,\n bookmark: Bookmark,\n share: Share,\n\n // Theme\n monitor: Monitor,\n sun: Sun,\n moon: Moon,\n\n // Additional\n lightbulb: Lightbulb,\n brain: Brain,\n flag: Flag,\n square: Square,\n sparkle: Sparkle,\n sparkles: Sparkle,\n globe: Globe,\n smartphone: DeviceMobile,\n deviceMobile: DeviceMobile,\n floppyDisk: FloppyDisk,\n\n // Connectivity\n ticket: Ticket,\n clipboard: Clipboard,\n wifi: WifiHigh,\n wifiOff: WifiSlash,\n cpu: Cpu,\n mask: MaskHappy,\n rocket: Rocket,\n\n // Admin\n layout: Layout,\n megaphone: Megaphone,\n layers: Stack,\n ban: Prohibit,\n\n // Text Formatting (Markdown Toolbar)\n bold: TextB,\n italic: TextItalic,\n strikethrough: TextStrikethrough,\n heading: TextHOne,\n link: Link,\n code: Code,\n fileCode: FileCode,\n quote: Quotes,\n list: List,\n listOrdered: ListNumbers,\n minus: Minus,\n} as const\n\n// 아이콘 이름 타입\nexport type IconName = keyof typeof icons\n\n// 감정별 아이콘 매핑\nexport const emotionIcons = {\n happy: 'smile',\n sad: 'frown',\n neutral: 'meh',\n excited: 'smile',\n angry: 'frown',\n love: 'heart',\n like: 'heart',\n dislike: 'frown',\n} as const\n\n// 상태별 아이콘 매핑\nexport const statusIcons = {\n loading: 'loader',\n success: 'success',\n error: 'error',\n warning: 'warning',\n info: 'info',\n locked: 'lock',\n unlocked: 'unlock',\n visible: 'eye',\n hidden: 'eyeOff',\n} as const\n\n// 아이콘 카테고리별 그룹화 (참고용)\nexport const iconCategories = {\n navigation: ['home', 'arrowLeft', 'arrowRight', 'arrowUp', 'arrowDown', 'menu', 'close', 'search', 'settings', 'externalLink', 'chevronLeft', 'chevronRight', 'chevronDown', 'chevronUp'],\n actions: ['edit', 'delete', 'add', 'remove', 'download', 'upload', 'refresh', 'save', 'copy'],\n status: ['loader', 'success', 'error', 'alertCircle', 'warning', 'info', 'check', 'circle'],\n user: ['user', 'users', 'userPlus', 'logIn', 'logOut', 'eye', 'eyeOff'],\n data: ['chart', 'barChart', 'trendingUp', 'activity', 'database', 'zap'],\n files: ['fileText', 'file', 'folder', 'book'],\n communication: ['mail', 'message', 'phone'],\n media: ['image', 'video', 'camera'],\n emotions: ['smile', 'frown', 'meh'],\n security: ['lock', 'unlock', 'shield'],\n time: ['clock', 'calendar'],\n ui: ['bell', 'heart', 'star', 'bookmark', 'share'],\n theme: ['monitor', 'sun', 'moon'],\n} as const\n","/**\n * Case Conversion Utilities\n *\n * 문자열 케이스 변환 유틸리티 함수들입니다.\n * Utility functions for string case conversion.\n */\n\n/**\n * 문자열을 camelCase로 변환합니다.\n * Converts a string to camelCase.\n *\n * @param str - 변환할 문자열 / String to convert\n * @returns camelCase 문자열 / camelCase string\n *\n * @example\n * toCamelCase('arrow-left') // 'arrowLeft'\n * toCamelCase('arrow_left') // 'arrowLeft'\n * toCamelCase('ArrowLeft') // 'arrowLeft'\n * toCamelCase('arrowLeft') // 'arrowLeft'\n * toCamelCase('HEART') // 'heart'\n */\nexport function toCamelCase(str: string): string {\n if (!str) return str\n\n // 이미 camelCase인지 확인 (kebab/snake가 아니고 첫 글자가 소문자)\n if (!/[-_]/.test(str) && /^[a-z]/.test(str)) {\n return str\n }\n\n // 전체가 대문자인 경우 (HEART, USER 등) → 전체 소문자로\n if (/^[A-Z]+$/.test(str)) {\n return str.toLowerCase()\n }\n\n // PascalCase를 camelCase로 변환 (ArrowLeft → arrowLeft)\n if (/^[A-Z]/.test(str) && !/[-_]/.test(str)) {\n return str.charAt(0).toLowerCase() + str.slice(1)\n }\n\n // kebab-case 또는 snake_case를 camelCase로 변환\n return str\n .split(/[-_]/)\n .map((word, index) => {\n if (index === 0) {\n return word.toLowerCase()\n }\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()\n })\n .join('')\n}\n\n/**\n * 문자열을 PascalCase로 변환합니다.\n * Converts a string to PascalCase.\n *\n * @param str - 변환할 문자열 / String to convert\n * @returns PascalCase 문자열 / PascalCase string\n *\n * @example\n * toPascalCase('arrow-left') // 'ArrowLeft'\n * toPascalCase('arrow_left') // 'ArrowLeft'\n * toPascalCase('arrowLeft') // 'ArrowLeft'\n * toPascalCase('ArrowLeft') // 'ArrowLeft'\n */\nexport function toPascalCase(str: string): string {\n if (!str) return str\n\n // 이미 PascalCase인지 확인\n if (/^[A-Z]/.test(str) && !/[-_]/.test(str)) {\n return str\n }\n\n // kebab-case 또는 snake_case가 포함된 경우\n if (/[-_]/.test(str)) {\n return str\n .split(/[-_]/)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())\n .join('')\n }\n\n // camelCase를 PascalCase로 변환\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n","/**\n * Icon Provider System\n *\n * 각 프로바이더별 로딩 전략 / Loading strategies per provider:\n *\n * 1. Phosphor Icons (https://phosphoricons.com) - default\n * - Official package: @phosphor-icons/react (MIT License)\n * - icons.ts에서 정적 import (SSR-safe /dist/ssr)\n * - PROJECT_ICONS 매핑으로 통합 이름 지원\n * - 폴백: initPhosphorIcons()로 동적 namespace 조회\n *\n * 2. Lucide Icons (https://lucide.dev) - deprecated, backward compat\n * - initLucideIcons() 호출 시에만 로드 / Lazy loaded on demand\n * - 향후 제거 예정 / Will be removed in future\n *\n * 3. Iconsax Icons (https://iconsax.io) - separate entry\n * - '@hua-labs/ui/iconsax'에서 import 시 자동 등록\n * - 코어 번들에 포함되지 않음 / Not in core bundle\n * - registerIconsaxResolver()로 lazy 연결\n */\n\nimport { toPascalCase } from './case-utils'\n\n// Phosphor Icons - lazy loaded (전체 namespace import 방지, createContext SSR 이슈)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet PhosphorIcons: any = null\n\n// Lucide Icons - lazy loaded (하위호환, deprecated)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet LucideIcons: any = null\n\n// Iconsax resolver - registered lazily when iconsax entry is loaded\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet iconsaxResolver: ((name: string, variant?: string) => any) | null = null\n\n/**\n * Register iconsax resolver (called from iconsax entry point).\n * Allows the core Icon component to resolve iconsax icons\n * without statically importing the iconsax bundle.\n */\nexport function registerIconsaxResolver(resolver: typeof iconsaxResolver) {\n iconsaxResolver = resolver\n}\n\n/**\n * Get registered iconsax resolver\n */\nexport function getIconsaxResolver() {\n return iconsaxResolver\n}\n\n// Icon Provider Type\nexport type IconProvider = 'lucide' | 'phosphor' | 'iconsax'\n\n// Icon Provider Configuration\nexport interface IconProviderConfig {\n provider: IconProvider\n prefix?: string\n}\n\n/**\n * Project-specific icon list\n * These are the icons actually used in SumUp project\n * Only these icons will be loaded for optimal bundle size\n */\nexport const PROJECT_ICONS = {\n // Navigation & Layout\n 'home': { lucide: 'Home', phosphor: 'House', iconsax: 'Home2' },\n 'layout-dashboard': { lucide: 'LayoutDashboard', phosphor: 'SquaresFour' },\n 'folder': { lucide: 'Folder', phosphor: 'Folder', iconsax: 'Folder' },\n 'alert-circle': { lucide: 'AlertCircle', phosphor: 'WarningCircle', iconsax: 'Danger' },\n 'alertCircle': { lucide: 'AlertCircle', phosphor: 'WarningCircle', iconsax: 'Danger' },\n 'columns': { lucide: 'Columns', phosphor: 'Columns' },\n 'users': { lucide: 'Users', phosphor: 'Users', iconsax: 'People' },\n 'settings': { lucide: 'Settings', phosphor: 'Gear' },\n 'menu': { lucide: 'Menu', phosphor: 'List', iconsax: 'Menu' },\n 'close': { lucide: 'X', phosphor: 'X', iconsax: 'CloseCircle' },\n 'chevronLeft': { lucide: 'ChevronLeft', phosphor: 'CaretLeft', iconsax: 'ArrowLeft2' },\n 'chevronRight': { lucide: 'ChevronRight', phosphor: 'CaretRight', iconsax: 'ArrowRight2' },\n 'chevronDown': { lucide: 'ChevronDown', phosphor: 'CaretDown', iconsax: 'ArrowDown2' },\n 'chevronUp': { lucide: 'ChevronUp', phosphor: 'CaretUp', iconsax: 'ArrowUp2' },\n 'arrowLeft': { lucide: 'ArrowLeft', phosphor: 'ArrowLeft', iconsax: 'ArrowLeft' },\n 'arrowRight': { lucide: 'ArrowRight', phosphor: 'ArrowRight', iconsax: 'ArrowRight' },\n 'arrowUp': { lucide: 'ArrowUp', phosphor: 'ArrowUp', iconsax: 'ArrowUp' },\n 'arrowDown': { lucide: 'ArrowDown', phosphor: 'ArrowDown', iconsax: 'ArrowDown' },\n\n // Actions\n 'add': { lucide: 'Plus', phosphor: 'Plus', iconsax: 'Add' },\n 'edit': { lucide: 'Edit', phosphor: 'Pencil' },\n 'pencil': { lucide: 'Pencil', phosphor: 'Pencil' },\n 'delete': { lucide: 'Trash2', phosphor: 'Trash', iconsax: 'Trash' },\n 'trash': { lucide: 'Trash2', phosphor: 'Trash', iconsax: 'Trash' },\n 'upload': { lucide: 'Upload', phosphor: 'Upload', iconsax: 'Upload' },\n 'download': { lucide: 'Download', phosphor: 'Download', iconsax: 'Download' },\n 'x': { lucide: 'X', phosphor: 'X' },\n 'check': { lucide: 'Check', phosphor: 'Check', iconsax: 'Check' },\n 'search': { lucide: 'Search', phosphor: 'MagnifyingGlass', iconsax: 'SearchNormal' },\n 'share': { lucide: 'Share', phosphor: 'Share' },\n 'copy': { lucide: 'Copy', phosphor: 'Copy' },\n 'save': { lucide: 'Save', phosphor: 'FloppyDisk' },\n\n // Status & Feedback\n 'loader': { lucide: 'Loader2', phosphor: 'Spinner' },\n 'loader2': { lucide: 'Loader2', phosphor: 'Spinner' },\n 'check-circle': { lucide: 'CheckCircle', phosphor: 'CheckCircle', iconsax: 'TickCircle' },\n 'checkCircle': { lucide: 'CheckCircle', phosphor: 'CheckCircle', iconsax: 'TickCircle' },\n 'success': { lucide: 'CheckCircle', phosphor: 'CheckCircle', iconsax: 'TickCircle' },\n 'error': { lucide: 'XCircle', phosphor: 'XCircle', iconsax: 'CloseCircle' },\n 'warning': { lucide: 'AlertCircle', phosphor: 'WarningCircle', iconsax: 'Warning2' },\n 'info': { lucide: 'Info', phosphor: 'Info', iconsax: 'InfoCircle' },\n 'refresh': { lucide: 'RefreshCw', phosphor: 'ArrowClockwise', iconsax: 'Refresh' },\n 'refreshCw': { lucide: 'RefreshCw', phosphor: 'ArrowClockwise', iconsax: 'Refresh' },\n 'bell': { lucide: 'Bell', phosphor: 'Bell', iconsax: 'Bell' },\n 'heart': { lucide: 'Heart', phosphor: 'Heart', iconsax: 'Heart' },\n 'star': { lucide: 'Star', phosphor: 'Star', iconsax: 'Star' },\n 'bookmark': { lucide: 'Bookmark', phosphor: 'Bookmark' },\n\n // User & Auth\n 'user': { lucide: 'User', phosphor: 'User', iconsax: 'User' },\n 'userPlus': { lucide: 'UserPlus', phosphor: 'UserPlus', iconsax: 'UserAdd' },\n 'logIn': { lucide: 'LogIn', phosphor: 'SignIn', iconsax: 'Login' },\n 'logOut': { lucide: 'LogOut', phosphor: 'SignOut', iconsax: 'Logout' },\n 'chrome': { lucide: 'Chrome', phosphor: 'ChromeLogo', iconsax: 'Chrome' },\n 'github': { lucide: 'Github', phosphor: 'GithubLogo' },\n 'message': { lucide: 'MessageCircle', phosphor: 'ChatCircle' },\n\n // Content\n 'messageSquare': { lucide: 'MessageSquare', phosphor: 'ChatSquare' },\n 'message-square': { lucide: 'MessageSquare', phosphor: 'ChatSquare' },\n 'inbox': { lucide: 'Inbox', phosphor: 'Inbox' },\n 'calendar': { lucide: 'Calendar', phosphor: 'Calendar' },\n 'calendarPlus': { lucide: 'CalendarPlus', phosphor: 'CalendarPlus' },\n 'checkSquare': { lucide: 'CheckSquare', phosphor: 'CheckSquare', iconsax: 'TickSquare' },\n 'clock': { lucide: 'Clock', phosphor: 'Clock' },\n 'book': { lucide: 'Book', phosphor: 'Book', iconsax: 'Book' },\n 'bookOpen': { lucide: 'BookOpen', phosphor: 'BookOpen', iconsax: 'Book' },\n\n // Theme & UI\n 'monitor': { lucide: 'Monitor', phosphor: 'Monitor', iconsax: 'Monitor' },\n 'sun': { lucide: 'Sun', phosphor: 'Sun', iconsax: 'Sun' },\n 'moon': { lucide: 'Moon', phosphor: 'Moon', iconsax: 'Moon' },\n\n // AI & Features\n 'sparkle': { lucide: 'Sparkle', phosphor: 'Sparkle' },\n 'sparkles': { lucide: 'Sparkles', phosphor: 'Sparkle' },\n 'lightbulb': { lucide: 'Lightbulb', phosphor: 'Lightbulb' },\n 'brain': { lucide: 'Brain', phosphor: 'Brain' },\n 'zap': { lucide: 'Zap', phosphor: 'Lightning' },\n\n // Device & Platform\n 'globe': { lucide: 'Globe', phosphor: 'Globe', iconsax: 'Global' },\n 'deviceMobile': { lucide: 'Smartphone', phosphor: 'DeviceMobile' },\n 'smartphone': { lucide: 'Smartphone', phosphor: 'DeviceMobile' },\n 'floppyDisk': { lucide: 'Save', phosphor: 'FloppyDisk' },\n\n // Data & Analytics\n 'chart': { lucide: 'BarChart3', phosphor: 'ChartBar' },\n 'barChart': { lucide: 'BarChart', phosphor: 'ChartBar' },\n 'trendingUp': { lucide: 'TrendingUp', phosphor: 'TrendUp' },\n 'trendingDown': { lucide: 'TrendingDown', phosphor: 'TrendDown' },\n 'activity': { lucide: 'Activity', phosphor: 'Pulse' },\n 'database': { lucide: 'Database', phosphor: 'Database' },\n 'dollarSign': { lucide: 'DollarSign', phosphor: 'CurrencyDollar' },\n 'dollar': { lucide: 'DollarSign', phosphor: 'CurrencyDollar' },\n 'currency': { lucide: 'DollarSign', phosphor: 'CurrencyDollar' },\n\n 'layers': { lucide: 'Layers', phosphor: 'Stack' },\n 'ban': { lucide: 'Ban', phosphor: 'Prohibit' },\n\n // Security\n 'lock': { lucide: 'Lock', phosphor: 'Lock', iconsax: 'Lock' },\n 'unlock': { lucide: 'Unlock', phosphor: 'LockOpen', iconsax: 'Unlock' },\n 'shield': { lucide: 'Shield', phosphor: 'Shield', iconsax: 'Shield' },\n 'key': { lucide: 'Key', phosphor: 'Key' },\n\n // Media\n 'play': { lucide: 'Play', phosphor: 'Play', iconsax: 'Play' },\n 'pause': { lucide: 'Pause', phosphor: 'Pause', iconsax: 'Pause' },\n 'image': { lucide: 'Image', phosphor: 'Image', iconsax: 'Image' },\n 'video': { lucide: 'Video', phosphor: 'Video', iconsax: 'Video' },\n 'camera': { lucide: 'Camera', phosphor: 'Camera', iconsax: 'Camera' },\n\n // Files\n 'fileText': { lucide: 'FileText', phosphor: 'FileText' },\n 'file': { lucide: 'File', phosphor: 'File' },\n\n // Navigation\n 'externalLink': { lucide: 'ExternalLink', phosphor: 'ArrowSquareOut' },\n 'link': { lucide: 'Link', phosphor: 'Link', iconsax: 'Link' },\n 'moreHorizontal': { lucide: 'MoreHorizontal', phosphor: 'DotsThreeOutline' },\n 'moreVertical': { lucide: 'MoreVertical', phosphor: 'DotsThreeVertical' },\n\n // Priority\n 'remove': { lucide: 'Minus', phosphor: 'Minus', iconsax: 'Minus' },\n\n // Eye (password)\n 'eye': { lucide: 'Eye', phosphor: 'Eye', iconsax: 'Eye' },\n 'eyeOff': { lucide: 'EyeOff', phosphor: 'EyeSlash', iconsax: 'EyeSlash' },\n\n // Emotions\n 'smile': { lucide: 'Smile', phosphor: 'Smiley', iconsax: 'EmojiHappy' },\n 'frown': { lucide: 'Frown', phosphor: 'SmileySad', iconsax: 'EmojiSad' },\n 'meh': { lucide: 'Meh', phosphor: 'SmileyMeh', iconsax: 'EmojiNormal' },\n\n // Social\n 'mail': { lucide: 'Mail', phosphor: 'Envelope' },\n 'phone': { lucide: 'Phone', phosphor: 'Phone' },\n\n // Additional\n 'flag': { lucide: 'Flag', phosphor: 'Flag', iconsax: 'Flag' },\n 'rocket': { lucide: 'Rocket', phosphor: 'Rocket', iconsax: 'Rocket' },\n\n // Connectivity & Misc\n 'ticket': { lucide: 'Ticket', phosphor: 'Ticket', iconsax: 'Ticket' },\n 'clipboard': { lucide: 'ClipboardList', phosphor: 'Clipboard', iconsax: 'Sticker' },\n 'wifi': { lucide: 'Wifi', phosphor: 'WifiHigh', iconsax: 'Wifi' },\n 'wifiOff': { lucide: 'WifiOff', phosphor: 'WifiSlash' },\n 'cpu': { lucide: 'Cpu', phosphor: 'Cpu', iconsax: 'Computing' },\n 'mask': { lucide: 'Drama', phosphor: 'MaskHappy', iconsax: 'EmojiHappy' },\n\n // Text Formatting (Markdown Toolbar)\n 'bold': { lucide: 'Bold', phosphor: 'TextB' },\n 'italic': { lucide: 'Italic', phosphor: 'TextItalic' },\n 'strikethrough': { lucide: 'Strikethrough', phosphor: 'TextStrikethrough' },\n 'heading': { lucide: 'Heading', phosphor: 'TextHOne' },\n 'code': { lucide: 'Code', phosphor: 'Code', iconsax: 'Code' },\n 'fileCode': { lucide: 'FileCode', phosphor: 'FileCode' },\n 'quote': { lucide: 'Quote', phosphor: 'Quotes', iconsax: 'QuoteUp' },\n 'list': { lucide: 'List', phosphor: 'List' },\n 'listOrdered': { lucide: 'ListOrdered', phosphor: 'ListNumbers' },\n 'minus': { lucide: 'Minus', phosphor: 'Minus', iconsax: 'Minus' },\n} as const\n\n/**\n * Initialize Phosphor Icons (lazy load for fallback/dynamic lookup)\n * icons.ts의 개별 import와 별개로, PROJECT_ICONS fallback용\n */\nexport async function initPhosphorIcons() {\n if (typeof window === 'undefined') return null\n\n if (!PhosphorIcons) {\n try {\n const phosphorModule = await import('@phosphor-icons/react')\n PhosphorIcons = phosphorModule\n } catch {\n console.warn('Phosphor Icons not available. Install @phosphor-icons/react to use.')\n return null\n }\n }\n return PhosphorIcons\n}\n\n/**\n * Initialize Lucide Icons (lazy load)\n */\nexport async function initLucideIcons() {\n if (typeof window === 'undefined') return null\n\n if (!LucideIcons) {\n try {\n const lucideModule = await import('lucide-react')\n LucideIcons = lucideModule\n } catch {\n console.warn('Lucide Icons not available. Install lucide-react to use lucide provider.')\n return null\n }\n }\n return LucideIcons\n}\n\n/**\n * Get icon from provider\n * Only resolves icons that are in PROJECT_ICONS for optimal bundle size\n *\n * @param iconName - 아이콘 이름 / Icon name\n * @param provider - 아이콘 프로바이더 / Icon provider\n * @returns 아이콘 컴포넌트 또는 null / Icon component or null\n */\nexport function getIconFromProvider(\n iconName: string,\n provider: IconProvider = 'phosphor'\n): React.ComponentType<Record<string, unknown>> | null {\n // Check if icon is in project icon list\n const iconMapping = PROJECT_ICONS[iconName as keyof typeof PROJECT_ICONS]\n\n if (!iconMapping) {\n // Fallback to direct lookup for backward compatibility\n return getIconDirect(iconName, provider)\n }\n\n const mappedName = (iconMapping as Record<string, string | undefined>)[provider]\n\n switch (provider) {\n case 'phosphor':\n if (!mappedName || !PhosphorIcons) return null\n return PhosphorIcons?.[mappedName] || null\n\n case 'lucide':\n if (!mappedName || !LucideIcons) {\n return null\n }\n return LucideIcons?.[mappedName] || null\n\n case 'iconsax': {\n if (!iconsaxResolver) return null\n const iconsaxName = mappedName || toPascalCase(iconName)\n return iconsaxResolver(iconsaxName) || null\n }\n\n default:\n return null\n }\n}\n\n/**\n * Direct icon lookup (fallback for icons not in PROJECT_ICONS)\n *\n * @param iconName - 아이콘 이름 / Icon name\n * @param provider - 아이콘 프로바이더 / Icon provider\n * @returns 아이콘 컴포넌트 또는 null / Icon component or null\n */\nfunction getIconDirect(\n iconName: string,\n provider: IconProvider\n): React.ComponentType<Record<string, unknown>> | null {\n switch (provider) {\n case 'phosphor': {\n if (!PhosphorIcons) return null\n const phosphorName1 = iconName.charAt(0).toUpperCase() + iconName.slice(1)\n const phosphorName2 = iconName\n .split(/(?=[A-Z])/)\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n return PhosphorIcons?.[phosphorName1] ||\n PhosphorIcons?.[phosphorName2] ||\n PhosphorIcons?.[iconName] ||\n null\n }\n\n case 'lucide': {\n if (!LucideIcons) {\n return null\n }\n const lucideName = iconName.charAt(0).toUpperCase() + iconName.slice(1)\n const camelCaseName = iconName.replace(/([A-Z])/g, (match) =>\n match === iconName[0] ? match.toLowerCase() : match\n )\n return LucideIcons?.[lucideName] ||\n LucideIcons?.[iconName] ||\n LucideIcons?.[camelCaseName] ||\n null\n }\n\n case 'iconsax': {\n if (!iconsaxResolver) return null\n const iconsaxName = toPascalCase(iconName)\n return iconsaxResolver(iconsaxName) || null\n }\n\n default:\n return null\n }\n}\n\n/**\n * Get icon name for provider\n *\n * @param iconName - 아이콘 이름 / Icon name\n * @param provider - 아이콘 프로바이더 / Icon provider\n * @returns 프로바이더별 아이콘 이름 / Icon name for provider\n */\nexport function getIconNameForProvider(\n iconName: string,\n provider: IconProvider\n): string {\n const iconMapping = PROJECT_ICONS[iconName as keyof typeof PROJECT_ICONS]\n if (iconMapping) {\n const mappedName = (iconMapping as Record<string, string | undefined>)[provider]\n if (mappedName) {\n return mappedName\n }\n }\n return iconName\n}\n\n/**\n * Get all project icon names\n */\nexport function getProjectIconNames(): string[] {\n return Object.keys(PROJECT_ICONS)\n}\n","/**\n * Icon Aliases\n * \n * 여러 이름이 같은 아이콘을 가리키도록 하는 alias 시스템\n * DX 향상을 위해 직관적인 이름들을 지원합니다.\n */\n\nexport const ICON_ALIASES: Record<string, string> = {\n // kebab-case → camelCase mappings (자동 변환 지원)\n 'arrow-left': 'arrowLeft',\n 'arrow-right': 'arrowRight',\n 'arrow-up': 'arrowUp',\n 'arrow-down': 'arrowDown',\n 'chevron-left': 'chevronLeft',\n 'chevron-right': 'chevronRight',\n 'chevron-up': 'chevronUp',\n 'chevron-down': 'chevronDown',\n 'external-link': 'externalLink',\n 'more-horizontal': 'moreHorizontal',\n 'more-vertical': 'moreVertical',\n 'user-plus': 'userPlus',\n 'log-in': 'logIn',\n 'log-out': 'logOut',\n 'check-circle': 'checkCircle',\n 'check-square': 'checkSquare',\n 'alert-circle': 'alertCircle',\n 'eye-off': 'eyeOff',\n 'file-text': 'fileText',\n 'book-open': 'bookOpen',\n 'bar-chart': 'barChart',\n 'trending-up': 'trendingUp',\n 'trending-down': 'trendingDown',\n 'message-square': 'messageSquare',\n 'calendar-plus': 'calendarPlus',\n 'refresh-cw': 'refreshCw',\n 'dollar-sign': 'dollarSign',\n 'layout-dashboard': 'layoutDashboard',\n 'device-mobile': 'deviceMobile',\n 'floppy-disk': 'floppyDisk',\n\n // Navigation aliases\n 'back': 'arrowLeft',\n 'prev': 'arrowLeft',\n 'previous': 'arrowLeft',\n 'forward': 'arrowRight',\n 'next': 'arrowRight',\n \n // Close aliases\n 'close': 'x',\n 'cancel': 'x',\n \n // Delete aliases\n 'remove': 'delete',\n 'trash': 'delete',\n \n // Add aliases\n 'plus': 'add',\n 'new': 'add',\n \n // Edit aliases\n 'pencil': 'edit',\n 'modify': 'edit',\n \n // Save aliases\n 'store': 'save',\n 'floppy': 'save',\n \n // Search aliases\n 'magnify': 'search',\n \n // User aliases\n 'person': 'user',\n 'account': 'user',\n 'profile': 'user',\n \n // Settings aliases\n 'gear': 'settings',\n 'config': 'settings',\n 'preferences': 'settings',\n \n // Home aliases\n 'house': 'home',\n 'main': 'home',\n \n // Check aliases\n 'done': 'check',\n 'complete': 'check',\n 'tick': 'check',\n \n // Info aliases\n 'information': 'info',\n 'help': 'info',\n \n // Warning aliases\n 'alert': 'warning',\n 'caution': 'warning',\n \n // Success aliases\n 'checkmark': 'success',\n 'checkCircle': 'success',\n \n // Error aliases\n 'fail': 'error',\n 'cross': 'error',\n 'xCircle': 'error',\n \n // Loading aliases\n 'spinner': 'loader',\n 'loading': 'loader',\n 'wait': 'loader',\n \n // Refresh aliases\n 'reload': 'refresh',\n 'update': 'refresh',\n 'sync': 'refresh',\n \n // Eye aliases\n 'show': 'eye',\n 'view': 'eye',\n 'hide': 'eyeOff',\n 'hidden': 'eyeOff',\n \n // Lock aliases\n 'secure': 'lock',\n 'locked': 'lock',\n 'unsecure': 'unlock',\n 'unlocked': 'unlock',\n \n // Download aliases\n 'get': 'download',\n 'fetch': 'download',\n \n // Upload aliases\n 'post': 'upload',\n \n // Share aliases\n 'send': 'share',\n 'export': 'share',\n \n // Copy aliases\n 'duplicate': 'copy',\n 'clone': 'copy',\n \n // Mail aliases\n 'email': 'mail',\n 'envelope': 'mail',\n \n // Message aliases\n 'chat': 'message',\n 'comment': 'message',\n 'talk': 'message',\n \n // Calendar aliases\n 'date': 'calendar',\n 'schedule': 'calendar',\n \n // Clock aliases\n 'time': 'clock',\n 'watch': 'clock',\n \n // File aliases\n 'document': 'fileText',\n 'doc': 'fileText',\n 'text': 'fileText',\n \n // Folder aliases\n 'directory': 'folder',\n 'dir': 'folder',\n \n // Image aliases\n 'picture': 'image',\n 'img': 'image',\n \n // Video aliases\n 'movie': 'video',\n 'film': 'video',\n \n // Camera aliases\n 'photo': 'camera',\n 'capture': 'camera',\n \n // Play aliases\n 'start': 'play',\n 'run': 'play',\n \n // Pause aliases\n 'stop': 'pause',\n 'halt': 'pause',\n \n // Heart aliases\n 'like': 'heart',\n 'love': 'heart',\n \n // Star aliases\n 'favorite': 'star',\n \n // Bookmark aliases\n 'saveBookmark': 'bookmark',\n \n // Bell aliases\n 'notification': 'bell',\n 'notify': 'bell',\n 'alarm': 'bell',\n \n // Settings aliases\n 'prefs': 'settings',\n \n // Search aliases (duplicate removed - see line 37)\n 'lookup': 'search',\n \n // More aliases\n 'dots': 'moreHorizontal',\n 'moreMenu': 'moreHorizontal',\n 'moreOptions': 'moreVertical',\n \n // External link aliases\n 'external': 'externalLink',\n 'outbound': 'externalLink',\n 'open': 'externalLink',\n \n // Link aliases\n 'url': 'link',\n 'hyperlink': 'link',\n \n // Chart aliases\n 'graph': 'barChart',\n 'stats': 'barChart',\n 'analytics': 'barChart',\n \n // Database aliases\n 'db': 'database',\n 'storage': 'database',\n \n // Activity aliases\n 'pulse': 'activity',\n 'monitor': 'activity',\n \n // Trending aliases\n 'up': 'trendingUp',\n 'down': 'trendingDown',\n \n // Zap aliases\n 'lightning': 'zap',\n 'bolt': 'zap',\n 'flash': 'zap',\n \n // Shield aliases\n 'security': 'shield',\n 'protect': 'shield',\n \n // Key aliases\n 'password': 'key',\n 'secret': 'key',\n \n // Log in aliases\n 'signin': 'logIn',\n 'login': 'logIn',\n 'enter': 'logIn',\n \n // Log out aliases\n 'signout': 'logOut',\n 'logout': 'logOut',\n 'exit': 'logOut',\n \n // Users aliases\n 'people': 'users',\n 'group': 'users',\n 'team': 'users',\n \n // User plus aliases\n 'addUser': 'userPlus',\n 'invite': 'userPlus',\n \n // Book aliases\n 'read': 'book',\n 'library': 'book',\n \n // Book open aliases\n 'reading': 'bookOpen',\n 'openBook': 'bookOpen',\n \n // Sun aliases\n 'light': 'sun',\n 'day': 'sun',\n \n // Moon aliases\n 'dark': 'moon',\n 'night': 'moon',\n \n // Monitor aliases\n 'screen': 'monitor',\n 'display': 'monitor',\n \n // Brain aliases\n 'ai': 'brain',\n 'intelligence': 'brain',\n 'think': 'brain',\n \n // Lightbulb aliases\n 'idea': 'lightbulb',\n 'bulb': 'lightbulb',\n 'inspiration': 'lightbulb',\n \n // Sparkles aliases\n 'magic': 'sparkles',\n 'stars': 'sparkles',\n 'glitter': 'sparkles',\n} as const\n\n/**\n * Resolve icon alias to actual icon name\n * \n * @param iconName - 아이콘 이름 또는 별칭 / Icon name or alias\n * @returns 실제 아이콘 이름 / Actual icon name\n * @throws {TypeError} iconName이 문자열이 아닌 경우\n */\nexport function resolveIconAlias(iconName: string): string {\n if (typeof iconName !== 'string') {\n throw new TypeError('iconName must be a string');\n }\n return ICON_ALIASES[iconName] || iconName;\n}\n\n/**\n * Get all aliases for an icon name\n * \n * @param iconName - 아이콘 이름 / Icon name\n * @returns 해당 아이콘의 모든 별칭 배열 / Array of all aliases for the icon\n * @throws {TypeError} iconName이 문자열이 아닌 경우\n */\nexport function getIconAliases(iconName: string): string[] {\n if (typeof iconName !== 'string') {\n throw new TypeError('iconName must be a string');\n }\n return Object.entries(ICON_ALIASES)\n .filter(([_, target]) => target === iconName)\n .map(([alias]) => alias);\n}\n\n\n","/**\n * Icon Name Normalization System\n *\n * 아이콘 이름 정규화를 위한 통합 시스템입니다.\n *\n * Features:\n * - kebab-case → camelCase conversion\n * - snake_case → camelCase conversion\n * - PascalCase → camelCase conversion\n * - Alias resolution\n * - Provider-specific name mapping\n */\n\nimport { ICON_ALIASES } from './icon-aliases'\nimport { toCamelCase, toPascalCase } from './case-utils'\n\n// Re-export case utils for backward compatibility\nexport { toCamelCase, toPascalCase } from './case-utils'\n\n// IconProvider type (avoid circular dependency with icon-providers.ts)\nexport type IconProviderType = 'lucide' | 'phosphor' | 'iconsax'\n\n/**\n * 정규화 결과 인터페이스\n */\nexport interface NormalizeResult {\n /** 정규화된 아이콘 이름 (camelCase) */\n normalized: string\n /** 원본 이름이 alias였는지 여부 */\n wasAlias: boolean\n /** 원본 alias 이름 (alias였던 경우) */\n originalAlias?: string\n}\n\n/**\n * 아이콘 이름을 정규화합니다.\n *\n * @example\n * normalizeIconName('arrow-left') // { normalized: 'arrowLeft', wasAlias: false }\n * normalizeIconName('back') // { normalized: 'arrowLeft', wasAlias: true, originalAlias: 'back' }\n * normalizeIconName('ArrowLeft') // { normalized: 'arrowLeft', wasAlias: false }\n */\nexport function normalizeIconName(iconName: string): NormalizeResult {\n if (!iconName || typeof iconName !== 'string') {\n return { normalized: iconName || '', wasAlias: false }\n }\n\n const camelCased = toCamelCase(iconName)\n const aliasTarget = ICON_ALIASES[iconName] || ICON_ALIASES[camelCased]\n\n if (aliasTarget) {\n return {\n normalized: aliasTarget,\n wasAlias: true,\n originalAlias: iconName\n }\n }\n\n return {\n normalized: camelCased,\n wasAlias: false\n }\n}\n\n/**\n * 프로바이더별 아이콘 이름을 반환합니다.\n *\n * @example\n * getProviderIconName('arrowLeft', 'lucide') // 'ArrowLeft'\n * getProviderIconName('heart', 'iconsax') // 'Heart'\n */\nexport function getProviderIconName(\n normalizedName: string,\n provider: IconProviderType\n): string {\n switch (provider) {\n case 'lucide':\n case 'phosphor':\n case 'iconsax':\n return toPascalCase(normalizedName)\n default:\n return normalizedName\n }\n}\n","/**\n * Icon Config Types\n *\n * Icon 시스템의 설정 타입 정의\n * 상태관리는 서비스 레벨에서 관리 (Zustand 등)\n */\n\nexport type IconSet = 'lucide' | 'phosphor' | 'iconsax'\n\nexport type PhosphorWeight = 'thin' | 'light' | 'regular' | 'bold' | 'duotone' | 'fill'\n\nexport type IconsaxVariant = 'line' | 'bold'\n\nexport interface IconConfig {\n set: IconSet\n weight: PhosphorWeight\n size: number\n color: string\n strokeWidth?: number // Lucide용\n iconsaxVariant?: IconsaxVariant // Iconsax용 (line | bold)\n}\n\nexport const defaultIconConfig: IconConfig = {\n set: 'phosphor',\n weight: 'regular',\n size: 20,\n color: 'currentColor',\n strokeWidth: 1.25,\n iconsaxVariant: 'line',\n}\n\n/**\n * 세트별 기본 strokeWidth\n */\nexport const getDefaultStrokeWidth = (set: IconSet): number => {\n switch (set) {\n case 'lucide':\n return 1.25\n case 'phosphor':\n return 1.25 // Phosphor는 weight 사용\n case 'iconsax':\n return 1.5\n default:\n return 1.25\n }\n}\n","'use client'\n\n/**\n * IconProvider - Icon 시스템 전역 설정 Provider\n *\n * React Context를 사용하여 전역 아이콘 설정을 제공합니다.\n *\n * @example\n * ```tsx\n * <IconProvider set=\"phosphor\" weight=\"regular\" size={20}>\n * <App />\n * </IconProvider>\n * ```\n */\n\nimport React, { createContext, useContext } from 'react'\nimport { type IconConfig, type IconSet, type PhosphorWeight, type IconsaxVariant, defaultIconConfig } from './icon-store'\n\n/**\n * IconProvider 컴포넌트 Props\n */\nexport interface IconProviderProps {\n /** 아이콘 세트 (lucide, phosphor, iconsax) */\n set?: IconSet\n /** Phosphor 아이콘 weight */\n weight?: PhosphorWeight\n /** Iconsax 아이콘 변형 (line, bold) */\n iconsaxVariant?: IconsaxVariant\n /** 기본 아이콘 크기 */\n size?: number\n /** 기본 아이콘 색상 */\n color?: string\n /** Lucide/Iconsax 아이콘 stroke width */\n strokeWidth?: number\n /** 자식 컴포넌트 */\n children: React.ReactNode\n}\n\ninterface IconContextValue extends IconConfig {}\n\nconst IconContext = createContext<IconContextValue>(defaultIconConfig)\n\nexport function IconProvider({\n set = defaultIconConfig.set,\n weight = defaultIconConfig.weight,\n iconsaxVariant = defaultIconConfig.iconsaxVariant,\n size = defaultIconConfig.size,\n color = defaultIconConfig.color,\n strokeWidth = defaultIconConfig.strokeWidth,\n children,\n}: IconProviderProps) {\n const value: IconContextValue = {\n set,\n weight,\n iconsaxVariant,\n size,\n color,\n strokeWidth,\n }\n\n return (\n <IconContext.Provider value={value}>\n {children}\n </IconContext.Provider>\n )\n}\n\nexport function useIconContext(): IconContextValue {\n return useContext(IconContext)\n}\n\n// Re-export types for convenience\nexport type { IconSet, PhosphorWeight, IconsaxVariant, IconConfig } from './icon-store'\nexport { defaultIconConfig, getDefaultStrokeWidth } from './icon-store'\n","import React from 'react'\nimport type { IconProps as PhosphorIconProps } from '@phosphor-icons/react'\nimport { merge, mergeMap } from '../../lib/utils'\nimport { icons, IconName, emotionIcons, statusIcons } from '../../lib/icons'\nimport { getIconFromProvider, getIconsaxResolver, initPhosphorIcons, initLucideIcons, getIconNameForProvider } from '../../lib/icon-providers'\nimport { normalizeIconName } from '../../lib/normalize-icon-name'\nimport { useIconContext, type IconSet } from './IconProvider'\nimport { type PhosphorWeight } from './icon-store'\nimport type { AllIconName } from '../../lib/icon-names'\n\n/**\n * Icon 컴포넌트 Props\n */\nexport interface IconProps {\n /** 아이콘 이름 / Icon name */\n name: AllIconName\n /** 아이콘 크기 (숫자 또는 문자열) / Icon size (number or string) */\n size?: number | string\n /** 추가 CSS 클래스 / Additional CSS classes */\n className?: string\n /** 감정 아이콘 타입 / Emotion icon type */\n emotion?: keyof typeof emotionIcons\n /** 상태 아이콘 타입 / Status icon type */\n status?: keyof typeof statusIcons\n /** 아이콘 프로바이더 오버라이드 / Icon provider override */\n provider?: IconSet\n /** 부드러운 애니메이션 효과 / Smooth animation effect */\n animated?: boolean\n /** 펄스 애니메이션 / Pulse animation */\n pulse?: boolean\n /** 회전 애니메이션 / Spin animation */\n spin?: boolean\n /** 바운스 애니메이션 / Bounce animation */\n bounce?: boolean\n /** 색상 변형 / Color variant */\n variant?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'muted' | 'inherit'\n /** Phosphor 아이콘 weight 오버라이드 / Phosphor icon weight override */\n weight?: PhosphorWeight\n /** 스크린 리더용 라벨 / Screen reader label */\n 'aria-label'?: string\n /** 장식용 아이콘 / Decorative icon (hidden from screen readers) */\n 'aria-hidden'?: boolean\n}\n\n/**\n * Icon 컴포넌트\n *\n * 다중 아이콘 라이브러리(Phosphor, Lucide, Iconsax)를 지원하는 통합 아이콘 컴포넌트.\n * IconProvider를 통해 전역 설정을 관리하며, 개별 아이콘에서도 오버라이드 가능.\n *\n * Iconsax는 별도 entry('@hua-labs/ui/iconsax')를 import해야 동작합니다.\n *\n * @example\n * ```tsx\n * <Icon name=\"heart\" />\n * <Icon name=\"user\" size={24} />\n * <Icon name=\"check\" variant=\"success\" />\n * <Icon name=\"loader\" spin />\n * ```\n */\nconst IconComponent = React.forwardRef<HTMLSpanElement, IconProps>(({\n name,\n size,\n className,\n emotion,\n status,\n provider,\n weight,\n animated = false,\n pulse = false,\n spin = false,\n bounce = false,\n variant = 'default',\n 'aria-label': ariaLabel,\n 'aria-hidden': ariaHidden\n}, ref) => {\n const config = useIconContext()\n\n const iconSet = provider || config.set\n const iconSize = size ?? config.size\n const iconWeight = weight || config.weight\n const iconColor = config.color\n const iconStrokeWidth = config.strokeWidth ?? 1.25\n const iconsaxVariant = config.iconsaxVariant ?? 'line'\n\n const [isClient, setIsClient] = React.useState(false)\n const [providerReady, setProviderReady] = React.useState(false)\n\n React.useEffect(() => {\n setIsClient(true)\n\n // Provider별 lazy load 초기화\n if (iconSet === 'lucide') {\n initLucideIcons().then(() => setProviderReady(true))\n } else if (iconSet === 'phosphor') {\n initPhosphorIcons().then(() => setProviderReady(true))\n } else {\n setProviderReady(true)\n }\n }, [iconSet])\n\n // 통합 정규화\n const resolvedIcon = React.useMemo(() => {\n const baseName = emotion ? emotionIcons[emotion] :\n status ? statusIcons[status] : name\n const { normalized } = normalizeIconName(baseName)\n const providerName = getIconNameForProvider(normalized, iconSet)\n return { normalized, providerName }\n }, [name, emotion, status, iconSet])\n\n const iconName = resolvedIcon.normalized as AllIconName\n\n // Iconsax: resolver를 통해 가져오기 (iconsax entry import 시 자동 등록됨)\n const iconsaxIcon = React.useMemo(() => {\n if (iconSet === 'iconsax' && isClient) {\n const resolver = getIconsaxResolver()\n if (resolver) {\n return resolver(resolvedIcon.providerName, iconsaxVariant)\n }\n }\n return null\n }, [iconSet, resolvedIcon.providerName, isClient, iconsaxVariant])\n\n // 색상 변형 클래스\n const variantClasses = mergeMap({\n 'text-current': variant === 'default',\n 'text-primary': variant === 'primary',\n 'text-muted-foreground': variant === 'secondary' || variant === 'muted',\n 'text-green-600 dark:text-green-400': variant === 'success',\n 'text-yellow-600 dark:text-yellow-400': variant === 'warning',\n 'text-destructive': variant === 'error',\n })\n\n // 서버사이드에서는 빈 span 반환\n if (!isClient) {\n return (\n <span\n style={{ width: iconSize, height: iconSize }}\n className={merge(variantClasses, className)}\n aria-hidden={ariaHidden !== undefined ? ariaHidden : true}\n aria-label={ariaLabel}\n />\n )\n }\n\n // Provider에 따라 아이콘 가져오기\n type IconComponentType = React.ComponentType<PhosphorIconProps | React.SVGProps<SVGSVGElement> | Record<string, unknown>>\n let ResolvedIcon: IconComponentType | null = null\n\n if (iconSet === 'phosphor') {\n // 1. icons.ts에서 먼저 찾기 (Phosphor 아이콘이 기본, 정적 import)\n ResolvedIcon = (icons[iconName as IconName] || null) as IconComponentType | null\n // 2. 없으면 동적으로 Phosphor namespace에서 가져오기 (fallback, providerReady 필요)\n if (!ResolvedIcon && providerReady) {\n ResolvedIcon = getIconFromProvider(iconName, iconSet) as IconComponentType | null\n }\n } else if (iconSet === 'iconsax') {\n ResolvedIcon = iconsaxIcon as IconComponentType | null\n if (!ResolvedIcon) {\n ResolvedIcon = getIconFromProvider(iconName, iconSet) as IconComponentType | null\n }\n } else {\n // Lucide나 다른 provider\n ResolvedIcon = getIconFromProvider(iconName, iconSet) as IconComponentType | null\n }\n\n if (!ResolvedIcon) {\n if (iconSet === 'iconsax' && !getIconsaxResolver()) {\n if (process.env.NODE_ENV === 'development') {\n console.warn(\n `Icon \"${iconName}\" — iconsax resolver not registered. ` +\n `Use HuaProvider with icons.set='iconsax', or add: import '@hua-labs/ui/iconsax'`\n )\n }\n } else {\n console.warn(`Icon \"${iconName}\" not found for provider \"${iconSet}\"`)\n }\n return (\n <span\n ref={ref}\n className={merge(\n 'inline-flex items-center justify-center rounded-full border-2 border-dashed border-border',\n variantClasses,\n className\n )}\n style={{ width: iconSize, height: iconSize }}\n aria-label={ariaLabel || `아이콘을 찾을 수 없음: ${iconName}`}\n title={`Icon not found: ${iconName}`}\n >\n <span className=\"text-xs text-muted-foreground\" aria-hidden=\"true\">\n ?\n </span>\n </span>\n )\n }\n\n // 세트별 props 준비\n type IconPropsType = PhosphorIconProps & {\n size?: number\n width?: number | string\n height?: number | string\n color?: string\n weight?: PhosphorWeight\n strokeWidth?: number\n }\n\n const iconProps: IconPropsType = {\n size: typeof iconSize === 'number' ? iconSize : undefined,\n width: typeof iconSize === 'string' ? iconSize : iconSize,\n height: typeof iconSize === 'string' ? iconSize : iconSize,\n color: iconColor,\n } as IconPropsType\n\n if (iconSet === 'phosphor') {\n iconProps.weight = iconWeight\n } else {\n iconProps.strokeWidth = iconStrokeWidth\n }\n\n const animationClasses = mergeMap({\n 'animate-pulse': pulse,\n 'animate-spin': spin,\n 'animate-bounce': bounce,\n 'transition-all duration-200 ease-in-out': animated,\n })\n\n const accessibilityProps: React.AriaAttributes = {}\n\n if (ariaLabel) {\n accessibilityProps['aria-label'] = ariaLabel\n accessibilityProps['aria-hidden'] = false\n } else if (ariaHidden !== undefined) {\n accessibilityProps['aria-hidden'] = ariaHidden\n } else {\n accessibilityProps['aria-hidden'] = true\n }\n\n return (\n <span\n ref={ref}\n className={merge(\n 'inline-flex items-center justify-center',\n animationClasses,\n variantClasses,\n className\n )}\n style={{ width: iconSize, height: iconSize }}\n {...accessibilityProps}\n >\n {ResolvedIcon && React.createElement(ResolvedIcon, {\n ...iconProps,\n className: variantClasses,\n 'aria-hidden': true\n } as React.ComponentProps<typeof ResolvedIcon>)}\n </span>\n )\n})\n\nIconComponent.displayName = 'Icon'\n\nconst MemoizedIcon = React.memo(IconComponent, (prevProps, nextProps) => {\n return (\n prevProps.name === nextProps.name &&\n prevProps.size === nextProps.size &&\n prevProps.className === nextProps.className &&\n prevProps.emotion === nextProps.emotion &&\n prevProps.status === nextProps.status &&\n prevProps.provider === nextProps.provider &&\n prevProps.animated === nextProps.animated &&\n prevProps.pulse === nextProps.pulse &&\n prevProps.spin === nextProps.spin &&\n prevProps.bounce === nextProps.bounce &&\n prevProps.variant === nextProps.variant &&\n prevProps.weight === nextProps.weight &&\n prevProps['aria-label'] === nextProps['aria-label'] &&\n prevProps['aria-hidden'] === nextProps['aria-hidden']\n )\n})\n\nexport const Icon = MemoizedIcon as typeof IconComponent\nIcon.displayName = 'Icon'\n\nexport const EmotionIcon = React.forwardRef<HTMLSpanElement, Omit<IconProps, 'name'> & { emotion: keyof typeof emotionIcons }>(\n (props, ref) => <Icon ref={ref} name=\"smile\" {...props} />\n)\nEmotionIcon.displayName = 'EmotionIcon'\n\nexport const StatusIcon = React.forwardRef<HTMLSpanElement, Omit<IconProps, 'name'> & { status: keyof typeof statusIcons }>(\n (props, ref) => <Icon ref={ref} name=\"info\" {...props} />\n)\nStatusIcon.displayName = 'StatusIcon'\n\nexport const LoadingIcon = React.forwardRef<HTMLDivElement, Omit<IconProps, 'name' | 'status'>>(\n (props, ref) => (\n <Icon ref={ref} name=\"loader\" status=\"loading\" spin aria-label=\"로딩 중\" {...props} />\n )\n)\nLoadingIcon.displayName = 'LoadingIcon'\n\nexport const SuccessIcon = React.forwardRef<HTMLDivElement, Omit<IconProps, 'name' | 'status'>>(\n (props, ref) => (\n <Icon ref={ref} name=\"check\" status=\"success\" variant=\"success\" aria-label=\"성공\" {...props} />\n )\n)\nSuccessIcon.displayName = 'SuccessIcon'\n\nexport const ErrorIcon = React.forwardRef<HTMLDivElement, Omit<IconProps, 'name' | 'status'>>(\n (props, ref) => (\n <Icon ref={ref} name=\"alertCircle\" status=\"error\" variant=\"error\" aria-label=\"오류\" {...props} />\n )\n)\nErrorIcon.displayName = 'ErrorIcon'\n","\"use client\"\n\nimport React from \"react\"\nimport { merge } from \"../lib/utils\"\nimport { Icon } from \"./Icon\"\nimport type { AllIconName } from \"../lib/icon-names\"\n\n/**\n * FeatureCard 아이콘 타입 / FeatureCard icon type\n * - AllIconName: icons.ts + PROJECT_ICONS의 모든 아이콘 / All icons from icons.ts + PROJECT_ICONS\n * - `http${string}`: 이미지 URL / Image URL\n */\ntype FeatureCardIconType = AllIconName | `http${string}`\n\n/**\n * FeatureCard 컴포넌트의 props / FeatureCard component props\n * @typedef {Object} FeatureCardProps\n * @property {FeatureCardIconType} [icon] - 아이콘 (IconName, ProjectIconName 또는 이미지 URL) / Icon (IconName, ProjectIconName or image URL)\n * @property {string} title - 카드 제목 / Card title\n * @property {string} description - 카드 설명 / Card description\n * @property {\"default\" | \"gradient\" | \"glass\" | \"neon\"} [variant=\"default\"] - FeatureCard 스타일 변형 / FeatureCard style variant\n * @property {\"sm\" | \"md\" | \"lg\"} [size=\"md\"] - FeatureCard 크기 / FeatureCard size\n * @property {\"scale\" | \"glow\" | \"slide\" | \"none\"} [hover=\"scale\"] - 호버 효과 / Hover effect\n * @property {\"blue\" | \"purple\" | \"green\" | \"orange\" | \"pink\" | \"custom\"} [gradient=\"blue\"] - 그라디언트 색상 / Gradient color\n * @property {string} [customGradient] - 커스텀 그라디언트 클래스 / Custom gradient class\n * @extends {React.HTMLAttributes<HTMLDivElement>}\n */\nexport interface FeatureCardProps extends React.HTMLAttributes<HTMLDivElement> {\n icon?: FeatureCardIconType\n title: string\n description: string\n variant?: \"default\" | \"gradient\" | \"glass\" | \"neon\"\n size?: \"sm\" | \"md\" | \"lg\"\n hover?: \"scale\" | \"glow\" | \"slide\" | \"none\"\n gradient?: \"blue\" | \"purple\" | \"green\" | \"orange\" | \"pink\" | \"custom\"\n customGradient?: string\n}\n\n/**\n * FeatureCard 컴포넌트 / FeatureCard component\n * \n * 기능을 소개하는 카드 컴포넌트입니다.\n * 아이콘, 제목, 설명을 포함하며, 다양한 스타일과 호버 효과를 지원합니다.\n * \n * Card component that introduces features.\n * Includes icon, title, and description, supports various styles and hover effects.\n * \n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <FeatureCard\n * icon=\"star\"\n * title=\"고급 기능\"\n * description=\"강력한 기능을 제공합니다\"\n * />\n * \n * @example\n * // Gradient 스타일 / Gradient style\n * <FeatureCard\n * icon=\"zap\"\n * title=\"빠른 성능\"\n * description=\"최적화된 성능\"\n * variant=\"gradient\"\n * gradient=\"purple\"\n * hover=\"glow\"\n * />\n * \n * @param {FeatureCardProps} props - FeatureCard 컴포넌트의 props / FeatureCard component props\n * @param {React.Ref<HTMLDivElement>} ref - div 요소 ref / div element ref\n * @returns {JSX.Element} FeatureCard 컴포넌트 / FeatureCard component\n */\nconst FeatureCard = React.forwardRef<HTMLDivElement, FeatureCardProps>(\n ({ \n className, \n icon, \n title, \n description, \n variant = \"default\", \n size = \"md\",\n hover = \"scale\",\n gradient = \"blue\",\n customGradient,\n ...props \n }, ref) => {\n const sizeClasses = {\n sm: \"p-4\",\n md: \"p-6\",\n lg: \"p-8\"\n }\n\n const variantClasses = {\n default: \"bg-background/90 backdrop-blur-sm border border-border/50\",\n gradient: `bg-gradient-to-br ${customGradient || getGradientClass(gradient)}`,\n glass: \"bg-white/10 dark:bg-gray-800/10 backdrop-blur-md border border-white/20 dark:border-gray-700/20\",\n 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 }\n\n const hoverClasses = {\n scale: \"hover:scale-105 transition-transform duration-300\",\n glow: \"hover:shadow-2xl hover:shadow-cyan-500/25 dark:hover:shadow-cyan-400/25 transition-shadow duration-300\",\n slide: \"hover:-translate-y-2 transition-transform duration-300\",\n none: \"\"\n }\n\n const iconSize = size === \"lg\" ? \"text-5xl\" : size === \"md\" ? \"text-4xl\" : \"text-3xl\"\n\n return (\n <div\n ref={ref}\n className={merge(\n \"rounded-2xl shadow-lg transition-all duration-300 flex flex-col items-center text-center\",\n sizeClasses[size],\n variantClasses[variant],\n hoverClasses[hover],\n className\n )}\n {...props}\n >\n {icon && (\n <div className={`mb-4 ${iconSize} ${variant === \"neon\" ? \"text-cyan-400\" : \"\"}`}>\n {typeof icon === \"string\" && icon.startsWith(\"http\") ? (\n <img src={icon} alt={title} className=\"w-full h-full object-contain\" />\n ) : (\n <Icon name={icon as AllIconName} className=\"w-full h-full\" />\n )}\n </div>\n )}\n \n <h3 className={merge(\n \"font-bold mb-2\",\n size === \"lg\" ? \"text-2xl\" : size === \"md\" ? \"text-xl\" : \"text-lg\",\n variant === \"gradient\" ? \"text-white\" : \"text-foreground\"\n )}>\n {title}\n </h3>\n \n <p className={merge(\n size === \"lg\" ? \"text-base\" : \"text-sm\",\n variant === \"gradient\" ? \"text-white/90\" : \"text-muted-foreground\"\n )}>\n {description}\n </p>\n </div>\n )\n }\n)\n\nFeatureCard.displayName = \"FeatureCard\"\n\nfunction getGradientClass(gradient: string): string {\n const gradients = {\n blue: \"from-indigo-500 via-cyan-500 to-cyan-600\",\n purple: \"from-purple-500 via-pink-500 to-purple-600\",\n green: \"from-green-500 via-emerald-500 to-green-600\",\n orange: \"from-orange-500 via-red-500 to-orange-600\",\n pink: \"from-pink-500 via-rose-500 to-pink-600\"\n }\n return gradients[gradient as keyof typeof gradients] || gradients.blue\n}\n\nexport { FeatureCard } ","\"use client\"\n\nimport React from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { GlowCard } from '../components/advanced/GlowCard'\nimport { SpotlightCard } from '../components/advanced/SpotlightCard'\nimport { FeatureCard } from '../components/FeatureCard'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingFeaturesProps, LandingFeatureItem, LandingTheme } from './types'\n\n// motion-core optional peer — inline types to avoid DTS resolution\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\n\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useStagger = require('@hua-labs/motion-core').useStagger\n} catch {\n // motion-core 없으면 stagger 없이 정적 렌더링\n}\n\nconst gridColsMap = {\n 2: 'grid-cols-1 md:grid-cols-2',\n 3: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-3',\n 4: 'grid-cols-1 md:grid-cols-2 lg:grid-cols-4',\n} as const\n\nfunction renderCard(\n item: LandingFeatureItem,\n cardType: LandingTheme['features']['card'],\n style?: React.CSSProperties\n) {\n switch (cardType) {\n case 'glow':\n return (\n <GlowCard style={style} className=\"p-6\">\n {item.icon && <div className=\"text-4xl mb-4\">{item.icon}</div>}\n <h3 className=\"text-xl font-bold mb-2\">{item.title}</h3>\n <p className=\"text-muted-foreground text-sm\">{item.description}</p>\n </GlowCard>\n )\n case 'spotlight':\n return (\n <SpotlightCard style={style} className=\"p-6\">\n {item.icon && <div className=\"text-4xl mb-4\">{item.icon}</div>}\n <h3 className=\"text-xl font-bold mb-2\">{item.title}</h3>\n <p className=\"text-muted-foreground text-sm\">{item.description}</p>\n </SpotlightCard>\n )\n case 'feature-glass':\n default:\n return (\n <FeatureCard\n style={style}\n icon={undefined}\n title={item.title}\n description={item.description}\n variant=\"glass\"\n hover=\"slide\"\n >\n {item.icon && <div className=\"text-4xl mb-4\">{item.icon}</div>}\n </FeatureCard>\n )\n }\n}\n\nexport function LandingFeatures({\n items,\n title,\n subtitle,\n columns: columnsProp,\n card: cardProp,\n sectionProps,\n motion: motionOverride,\n staggerDelay: staggerDelayProp,\n decorator: decoratorProp,\n className,\n ...rest\n}: LandingFeaturesProps) {\n const theme = useLandingTheme()\n const cardType = cardProp ?? theme.features.card\n const staggerDelay = staggerDelayProp ?? theme.features.staggerDelay\n const decorator = decoratorProp ?? theme.features.decorator\n const motion = motionOverride\n ? { ...theme.features.motion, ...motionOverride }\n : theme.features.motion\n\n const columns = columnsProp ?? (items.length <= 2 ? 2 : items.length <= 3 ? 3 : 4) as 2 | 3 | 4\n\n const header = (title || subtitle) ? { title: title ?? '', subtitle, decorator } : undefined\n\n // useStagger if available\n const stagger = useStagger?.({\n count: items.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type as 'fadeIn' | 'slideUp' | 'bounceIn',\n easing: motion.easing,\n })\n\n return (\n <Section\n header={header}\n spacing=\"lg\"\n {...sectionProps}\n className={merge(className)}\n {...rest}\n >\n <div\n ref={stagger?.containerRef}\n className={merge(\"grid gap-6 lg:gap-8\", gridColsMap[columns])}\n >\n {items.map((item, i) => (\n <div key={i}>\n {renderCard(item, cardType, stagger?.styles[i])}\n </div>\n ))}\n </div>\n </Section>\n )\n}\n","\"use client\"\n\nimport React, { useState, useEffect, useRef, useCallback } from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingStatsProps, LandingStatItem } from './types'\n\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\n\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useStagger = require('@hua-labs/motion-core').useStagger\n} catch {\n // motion-core unavailable\n}\n\n// ── Count-up hook ───────────────────────────────\n\nfunction parseStatValue(value: string): { numeric: number; prefix: string; suffix: string } {\n const match = value.match(/^([^0-9]*)([0-9]+(?:\\.[0-9]+)?)(.*)$/)\n if (!match) return { numeric: 0, prefix: '', suffix: value }\n return {\n prefix: match[1],\n numeric: parseFloat(match[2]),\n suffix: match[3],\n }\n}\n\nfunction useCountUp(target: number, isVisible: boolean, duration = 1500): number {\n const [current, setCurrent] = useState(0)\n const rafRef = useRef<number>(0)\n\n const animate = useCallback(() => {\n const start = performance.now()\n const step = (now: number) => {\n const elapsed = now - start\n const progress = Math.min(elapsed / duration, 1)\n // easeOutQuart\n const eased = 1 - Math.pow(1 - progress, 4)\n setCurrent(eased * target)\n if (progress < 1) {\n rafRef.current = requestAnimationFrame(step)\n }\n }\n rafRef.current = requestAnimationFrame(step)\n }, [target, duration])\n\n useEffect(() => {\n if (!isVisible) return\n animate()\n return () => {\n if (rafRef.current) cancelAnimationFrame(rafRef.current)\n }\n }, [isVisible, animate])\n\n return current\n}\n\n// ── StatItem component ──────────────────────────\n\nfunction StatItemDisplay({\n item,\n numberSize,\n countUp,\n isVisible,\n style,\n}: {\n item: LandingStatItem\n numberSize: string\n countUp: boolean\n isVisible: boolean\n style?: React.CSSProperties\n}) {\n const { numeric, prefix: parsedPrefix, suffix: parsedSuffix } = parseStatValue(item.value)\n const counted = useCountUp(numeric, countUp && isVisible)\n\n const displayPrefix = item.prefix ?? parsedPrefix\n const displaySuffix = item.suffix ?? parsedSuffix\n const displayValue = countUp\n ? `${displayPrefix}${Number.isInteger(numeric) ? Math.round(counted) : counted.toFixed(1)}${displaySuffix}`\n : item.value\n\n return (\n <div className=\"text-center\" style={style}>\n <div className={merge(\"font-extrabold stat-number\", numberSize)}>\n {displayValue}\n </div>\n <div className=\"text-muted-foreground mt-2 text-sm sm:text-base\">\n {item.label}\n </div>\n </div>\n )\n}\n\n// ── LandingStats ────────────────────────────────\n\nexport function LandingStats({\n items,\n title,\n subtitle,\n countUp: countUpProp,\n numberSize: numberSizeProp,\n sectionProps,\n motion: motionOverride,\n staggerDelay: staggerDelayProp,\n className,\n ...rest\n}: LandingStatsProps) {\n const theme = useLandingTheme()\n const countUp = countUpProp ?? theme.stats.countUp\n const numberSize = numberSizeProp ?? theme.stats.numberSize\n const staggerDelay = staggerDelayProp ?? theme.stats.staggerDelay\n const motion = motionOverride\n ? { ...theme.stats.motion, ...motionOverride }\n : theme.stats.motion\n\n const header = (title || subtitle) ? { title: title ?? '', subtitle, decorator: false } : undefined\n\n const stagger = useStagger?.({\n count: items.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type as 'fadeIn' | 'slideUp' | 'bounceIn',\n easing: motion.easing,\n })\n\n const gridCols = items.length <= 2\n ? 'grid-cols-1 sm:grid-cols-2'\n : items.length <= 3\n ? 'grid-cols-1 sm:grid-cols-3'\n : 'grid-cols-2 sm:grid-cols-4'\n\n return (\n <Section\n header={header}\n spacing=\"lg\"\n {...sectionProps}\n className={merge(className)}\n {...rest}\n >\n <div\n ref={stagger?.containerRef}\n className={merge(\"grid gap-8 lg:gap-12\", gridCols)}\n >\n {items.map((item, i) => (\n <StatItemDisplay\n key={i}\n item={item}\n numberSize={numberSize}\n countUp={countUp}\n isVisible={stagger?.isVisible ?? true}\n style={stagger?.styles[i]}\n />\n ))}\n </div>\n </Section>\n )\n}\n","\"use client\"\n\nimport React, { useMemo } from 'react'\nimport { merge } from '../lib/utils'\nimport { Container } from '../components/Container'\nimport { AnimatedGradient } from '../components/advanced/AnimatedGradient'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingCTAProps, LandingMotionOverride } from './types'\n\nfunction getInitialTransform(type: string): string {\n switch (type) {\n case 'slideUp': return 'translateY(32px)'\n case 'slideLeft': return 'translateX(-32px)'\n case 'slideRight': return 'translateX(32px)'\n case 'scaleIn': return 'scale(0.95)'\n case 'bounceIn': return 'scale(0.75)'\n default: return 'none'\n }\n}\n\ninterface ScrollRevealResult {\n ref: React.RefObject<HTMLElement | null>\n style: React.CSSProperties\n isVisible: boolean\n}\n\ninterface ScrollRevealOptions {\n motionType?: string\n duration?: number\n delay?: number\n}\n\nlet useScrollReveal: ((opts: ScrollRevealOptions) => ScrollRevealResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useScrollReveal = require('@hua-labs/motion-core').useScrollReveal\n} catch {\n // motion-core unavailable\n}\n\nexport function LandingCTA({\n title,\n subtitle,\n primaryAction,\n secondaryAction,\n background: bgProp,\n gradientColors,\n motion: motionOverride,\n className,\n ...rest\n}: LandingCTAProps) {\n const theme = useLandingTheme()\n const bg = bgProp ?? theme.cta.background\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.cta.motion, ...motionOverride }\n : theme.cta.motion\n\n const scrollReveal = useScrollReveal?.({\n motionType: motion.type as 'fadeIn' | 'slideUp' | 'bounceIn',\n duration: motion.duration,\n delay: motion.delay,\n })\n\n const fallbackStyle = useMemo<React.CSSProperties>(() => {\n if (scrollReveal) return {}\n return {\n opacity: 0,\n transform: getInitialTransform(motion.type),\n animation: `landing-cta-enter ${motion.duration}ms ${motion.easing} ${motion.delay}ms forwards`,\n }\n }, [scrollReveal, motion])\n\n return (\n <section\n className={merge(\n \"relative overflow-hidden py-20 sm:py-28\",\n bg === 'dark' && 'bg-gray-950 text-white',\n className\n )}\n {...rest}\n >\n {/* Background */}\n {bg === 'gradient-soft' && (\n <div className=\"absolute inset-0 gradient-bg-soft\" aria-hidden=\"true\" />\n )}\n {bg === 'animated-gradient' && (\n <AnimatedGradient\n colors={gradientColors}\n type=\"mesh\"\n className=\"absolute inset-0 -z-0\"\n aria-hidden=\"true\"\n />\n )}\n {bg === 'dark' && (\n <div\n className=\"absolute inset-0\"\n style={{\n background: 'radial-gradient(ellipse 80% 60% at 50% 40%, rgba(120, 119, 198, 0.08), transparent)',\n }}\n aria-hidden=\"true\"\n />\n )}\n\n <Container size=\"md\" padding=\"none\" centered className=\"relative z-10 px-6\">\n <div\n ref={scrollReveal?.ref as React.Ref<HTMLDivElement>}\n style={scrollReveal?.style ?? fallbackStyle}\n className=\"text-center\"\n >\n <h2 className=\"text-3xl sm:text-4xl md:text-5xl font-extrabold mb-4\">\n {title}\n </h2>\n\n {subtitle && (\n <p className=\"text-lg text-muted-foreground max-w-2xl mx-auto mb-8\">\n {subtitle}\n </p>\n )}\n\n {(primaryAction || secondaryAction) && (\n <div className=\"flex flex-col sm:flex-row items-center justify-center gap-4\">\n {primaryAction}\n {secondaryAction}\n </div>\n )}\n </div>\n </Container>\n\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes landing-cta-enter {\n to { opacity: 1; transform: none; }\n }\n `}} />\n </section>\n )\n}\n","\"use client\";\n\nimport React, { useRef, useState, useCallback, useEffect } from \"react\";\nimport { merge } from \"../../lib/utils\";\n\n/**\n * Carousel 컴포넌트의 props / Carousel component props\n * @property {boolean} [autoPlay=false] - 자동 재생 / Auto play\n * @property {number} [interval=5000] - 자동 재생 간격 (ms) / Auto play interval\n * @property {boolean} [loop=true] - 무한 루프 / Infinite loop\n * @property {boolean} [pauseOnHover=true] - 호버시 일시정지 / Pause on hover\n * @property {\"dots\" | \"bars\" | \"numbers\" | \"none\"} [indicators=\"dots\"] - 인디케이터 타입 / Indicator type\n * @property {\"bottom\" | \"top\" | \"inside-bottom\" | \"inside-top\"} [indicatorPosition=\"bottom\"] - 인디케이터 위치 / Indicator position\n * @property {boolean} [showArrows=true] - 화살표 버튼 표시 / Show arrow buttons\n * @property {\"inside\" | \"outside\" | \"hidden\"} [arrowPosition=\"inside\"] - 화살표 위치 / Arrow position\n * @property {\"slide\" | \"fade\" | \"scale\"} [transition=\"slide\"] - 전환 효과 / Transition effect\n * @property {number} [transitionDuration=500] - 전환 시간 (ms) / Transition duration\n * @property {(index: number) => void} [onSlideChange] - 슬라이드 변경 콜백 / Slide change callback\n * @property {boolean} [showPlayPause=false] - 재생/일시정지 버튼 표시 / Show play/pause button\n * @property {\"left\" | \"right\" | \"center\"} [playPausePosition=\"right\"] - 재생/일시정지 버튼 위치 / Play/pause button position\n */\nexport interface CarouselProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n children: React.ReactNode[];\n autoPlay?: boolean;\n interval?: number;\n loop?: boolean;\n pauseOnHover?: boolean;\n indicators?: \"dots\" | \"bars\" | \"numbers\" | \"none\";\n indicatorPosition?: \"bottom\" | \"top\" | \"inside-bottom\" | \"inside-top\";\n showArrows?: boolean;\n arrowPosition?: \"inside\" | \"outside\" | \"hidden\";\n transition?: \"slide\" | \"fade\" | \"scale\";\n transitionDuration?: number;\n onSlideChange?: (index: number) => void;\n showPlayPause?: boolean;\n playPausePosition?: \"left\" | \"right\" | \"center\";\n}\n\n/**\n * Carousel 컴포넌트 / Carousel component\n *\n * 슬라이드 캐러셀 컴포넌트입니다.\n * 다양한 인디케이터, 화살표, 전환 효과를 지원합니다.\n *\n * Slide carousel component.\n * Supports various indicators, arrows, and transition effects.\n *\n * @component\n * @example\n * <Carousel autoPlay interval={3000} indicators=\"bars\">\n * <img src=\"/slide1.jpg\" alt=\"Slide 1\" />\n * <img src=\"/slide2.jpg\" alt=\"Slide 2\" />\n * <img src=\"/slide3.jpg\" alt=\"Slide 3\" />\n * </Carousel>\n */\nconst Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n children,\n autoPlay = false,\n interval = 5000,\n loop = true,\n pauseOnHover = true,\n indicators = \"dots\",\n indicatorPosition = \"bottom\",\n showArrows = true,\n arrowPosition = \"inside\",\n transition = \"slide\",\n transitionDuration = 500,\n onSlideChange,\n showPlayPause = false,\n playPausePosition = \"right\",\n className,\n style,\n ...props\n },\n ref\n ) => {\n // For slide transition with loop: start at 1 (account for cloned first slide)\n // For fade/scale: always start at 0 (no cloned slides)\n const getInitialIndex = () => {\n if (transition === \"slide\" && loop) return 1;\n return 0;\n };\n const [currentIndex, setCurrentIndex] = useState(getInitialIndex);\n const [isPaused, setIsPaused] = useState(!autoPlay);\n const [isManuallyPaused, setIsManuallyPaused] = useState(false);\n const [isTransitioning, setIsTransitioning] = useState(false);\n const [noTransition, setNoTransition] = useState(false);\n const [touchStart, setTouchStart] = useState<number | null>(null);\n const [touchEnd, setTouchEnd] = useState<number | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n const slideCount = React.Children.count(children);\n\n // Check for reduced motion preference\n const prefersReducedMotion = useReducedMotion();\n\n // Get actual slide index for display (accounting for cloned slides in loop mode for slide transition)\n const getActualIndex = useCallback((index: number) => {\n // For fade/scale transitions, currentIndex is the actual index\n if (transition !== \"slide\") return index;\n // For slide transition without loop, index is actual\n if (!loop) return index;\n // For slide transition with loop, account for cloned slides\n if (index === 0) return slideCount - 1;\n if (index === slideCount + 1) return 0;\n return index - 1;\n }, [loop, slideCount, transition]);\n\n // Go to specific slide\n const goToSlide = useCallback(\n (index: number) => {\n if (isTransitioning) return;\n\n let newIndex = index;\n if (!loop) {\n newIndex = Math.max(0, Math.min(index, slideCount - 1));\n } else if (transition !== \"slide\") {\n // For fade/scale with loop, wrap around without cloned slides\n if (index < 0) {\n newIndex = slideCount - 1;\n } else if (index >= slideCount) {\n newIndex = 0;\n }\n }\n\n if (newIndex !== currentIndex) {\n setIsTransitioning(true);\n setCurrentIndex(newIndex);\n const actualIndex = loop && transition === \"slide\"\n ? (newIndex === 0 ? slideCount - 1 : newIndex === slideCount + 1 ? 0 : newIndex - 1)\n : newIndex;\n onSlideChange?.(actualIndex);\n setTimeout(() => setIsTransitioning(false), transitionDuration);\n }\n },\n [currentIndex, slideCount, loop, isTransitioning, transitionDuration, transition, onSlideChange]\n );\n\n // Handle infinite loop jump (when reaching cloned slides)\n useEffect(() => {\n if (!loop || isTransitioning || transition !== \"slide\") return;\n\n // Jump to real slide without animation when on cloned slides\n if (currentIndex === 0) {\n // At cloned last slide -> jump to real last slide\n setTimeout(() => {\n setNoTransition(true);\n setCurrentIndex(slideCount);\n setTimeout(() => setNoTransition(false), 50);\n }, transitionDuration);\n } else if (currentIndex === slideCount + 1) {\n // At cloned first slide -> jump to real first slide\n setTimeout(() => {\n setNoTransition(true);\n setCurrentIndex(1);\n setTimeout(() => setNoTransition(false), 50);\n }, transitionDuration);\n }\n }, [currentIndex, slideCount, loop, isTransitioning, transitionDuration, transition]);\n\n // Next slide\n const nextSlide = useCallback(() => {\n goToSlide(currentIndex + 1);\n }, [currentIndex, goToSlide]);\n\n // Previous slide\n const prevSlide = useCallback(() => {\n goToSlide(currentIndex - 1);\n }, [currentIndex, goToSlide]);\n\n // Toggle play/pause manually\n const togglePlayPause = useCallback(() => {\n setIsManuallyPaused(prev => !prev);\n }, []);\n\n // Play function\n const play = useCallback(() => {\n setIsManuallyPaused(false);\n }, []);\n\n // Pause function\n const pause = useCallback(() => {\n setIsManuallyPaused(true);\n }, []);\n\n // Auto play\n useEffect(() => {\n if (!autoPlay || isPaused || isManuallyPaused || prefersReducedMotion) return;\n\n const timer = setInterval(nextSlide, interval);\n return () => clearInterval(timer);\n }, [autoPlay, interval, isPaused, isManuallyPaused, nextSlide, prefersReducedMotion]);\n\n // Touch handlers for swipe\n const handleTouchStart = (e: React.TouchEvent) => {\n setTouchStart(e.targetTouches[0].clientX);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n setTouchEnd(e.targetTouches[0].clientX);\n };\n\n const handleTouchEnd = () => {\n if (!touchStart || !touchEnd) return;\n\n const distance = touchStart - touchEnd;\n const minSwipeDistance = 50;\n\n if (Math.abs(distance) >= minSwipeDistance) {\n if (distance > 0) {\n nextSlide();\n } else {\n prevSlide();\n }\n }\n\n setTouchStart(null);\n setTouchEnd(null);\n };\n\n // Keyboard navigation\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"ArrowLeft\") {\n prevSlide();\n } else if (e.key === \"ArrowRight\") {\n nextSlide();\n }\n };\n\n const container = containerRef.current;\n container?.addEventListener(\"keydown\", handleKeyDown);\n return () => container?.removeEventListener(\"keydown\", handleKeyDown);\n }, [nextSlide, prevSlide]);\n\n // Render slides with transition\n const renderSlides = () => {\n const duration = prefersReducedMotion || noTransition ? 0 : transitionDuration;\n const actualIndex = getActualIndex(currentIndex);\n\n switch (transition) {\n case \"fade\":\n return React.Children.map(children, (child, index) => (\n <div\n key={index}\n className={merge(\n \"absolute inset-0 w-full h-full\",\n index === actualIndex ? \"z-10\" : \"z-0\"\n )}\n style={{\n opacity: index === actualIndex ? 1 : 0,\n transition: `opacity ${duration}ms ease-in-out`,\n }}\n >\n {child}\n </div>\n ));\n\n case \"scale\":\n return React.Children.map(children, (child, index) => (\n <div\n key={index}\n className={merge(\n \"absolute inset-0 w-full h-full\",\n index === actualIndex ? \"z-10\" : \"z-0\"\n )}\n style={{\n opacity: index === actualIndex ? 1 : 0,\n transform: `scale(${index === actualIndex ? 1 : 0.9})`,\n transition: `opacity ${duration}ms ease-in-out, transform ${duration}ms ease-in-out`,\n }}\n >\n {child}\n </div>\n ));\n\n case \"slide\":\n default: {\n const childArray = React.Children.toArray(children);\n // For infinite loop: clone last slide at beginning and first slide at end\n const slides = loop\n ? [childArray[childArray.length - 1], ...childArray, childArray[0]]\n : childArray;\n\n // 각 슬라이드를 fade/scale처럼 absolute로 배치하고 translateX로 위치 조정\n return slides.map((child, index) => (\n <div\n key={index}\n className=\"absolute inset-0 w-full h-full\"\n style={{\n transform: `translateX(${(index - currentIndex) * 100}%)`,\n transition: noTransition ? 'none' : `transform ${duration}ms ease-in-out`,\n }}\n >\n {child}\n </div>\n ));\n }\n }\n };\n\n // Render indicators\n const renderIndicators = () => {\n if (indicators === \"none\") return null;\n\n const isInside = indicatorPosition.includes(\"inside\");\n const isTop = indicatorPosition.includes(\"top\");\n const actualIndex = getActualIndex(currentIndex);\n\n const indicatorContainerClass = merge(\n \"flex items-center justify-center gap-2\",\n isInside\n ? merge(\n \"absolute left-1/2 -translate-x-1/2 z-20\",\n isTop ? \"top-4\" : \"bottom-4\"\n )\n : merge(\n \"mt-4\",\n isTop && \"order-first mb-4 mt-0\"\n )\n );\n\n // Handle indicator click - go to the correct index accounting for loop mode\n const handleIndicatorClick = (index: number) => {\n if (loop && transition === \"slide\") {\n goToSlide(index + 1); // +1 because of cloned first slide (only for slide transition)\n } else {\n goToSlide(index);\n }\n };\n\n return (\n <div className={indicatorContainerClass} role=\"tablist\">\n {Array.from({ length: slideCount }, (_, index) => {\n const isActive = index === actualIndex;\n\n switch (indicators) {\n case \"bars\":\n return (\n <button\n key={index}\n onClick={() => handleIndicatorClick(index)}\n className={merge(\n \"h-1 rounded-full transition-all duration-300\",\n isActive\n ? \"w-8 bg-white\"\n : \"w-4 bg-white/50 hover:bg-white/70\"\n )}\n role=\"tab\"\n aria-selected={isActive}\n aria-label={`슬라이드 ${index + 1}`}\n />\n );\n\n case \"numbers\":\n return (\n <button\n key={index}\n onClick={() => handleIndicatorClick(index)}\n className={merge(\n \"w-8 h-8 rounded-full text-sm font-medium transition-all duration-300\",\n isActive\n ? \"bg-white text-gray-900\"\n : \"bg-white/30 text-white hover:bg-white/50\"\n )}\n role=\"tab\"\n aria-selected={isActive}\n aria-label={`슬라이드 ${index + 1}`}\n >\n {index + 1}\n </button>\n );\n\n case \"dots\":\n default:\n return (\n <button\n key={index}\n onClick={() => handleIndicatorClick(index)}\n className={merge(\n \"w-2.5 h-2.5 rounded-full transition-all duration-300\",\n isActive\n ? \"bg-white scale-125\"\n : \"bg-white/50 hover:bg-white/70\"\n )}\n role=\"tab\"\n aria-selected={isActive}\n aria-label={`슬라이드 ${index + 1}`}\n />\n );\n }\n })}\n </div>\n );\n };\n\n // Render play/pause button\n const renderPlayPause = () => {\n if (!showPlayPause || !autoPlay) return null;\n\n const isPlaying = !isManuallyPaused;\n const positionClasses = {\n left: \"left-4\",\n center: \"left-1/2 -translate-x-1/2\",\n right: \"right-4\"\n };\n\n return (\n <button\n onClick={togglePlayPause}\n className={merge(\n \"absolute bottom-4 z-20\",\n \"w-8 h-8 rounded-full flex items-center justify-center\",\n \"bg-white/80 hover:bg-white text-gray-800\",\n \"transition-all duration-200\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-white\",\n positionClasses[playPausePosition]\n )}\n aria-label={isPlaying ? \"일시정지\" : \"재생\"}\n >\n {isPlaying ? <PauseIcon className=\"w-4 h-4\" /> : <PlayIcon className=\"w-4 h-4\" />}\n </button>\n );\n };\n\n // Render arrows\n const renderArrows = () => {\n if (!showArrows || arrowPosition === \"hidden\") return null;\n\n const canGoPrev = loop || currentIndex > 0;\n const canGoNext = loop || currentIndex < slideCount - 1;\n\n const arrowBaseClass = merge(\n \"absolute top-1/2 -translate-y-1/2 z-20\",\n \"w-10 h-10 rounded-full flex items-center justify-center\",\n \"bg-white/80 hover:bg-white text-gray-800\",\n \"transition-all duration-200\",\n \"disabled:opacity-30 disabled:cursor-not-allowed\",\n \"focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-white\"\n );\n\n const prevPosition = arrowPosition === \"outside\" ? \"-left-14\" : \"left-4\";\n const nextPosition = arrowPosition === \"outside\" ? \"-right-14\" : \"right-4\";\n\n return (\n <>\n <button\n onClick={prevSlide}\n disabled={!canGoPrev}\n className={merge(arrowBaseClass, prevPosition)}\n aria-label=\"이전 슬라이드\"\n >\n <ChevronLeft className=\"w-5 h-5\" />\n </button>\n <button\n onClick={nextSlide}\n disabled={!canGoNext}\n className={merge(arrowBaseClass, nextPosition)}\n aria-label=\"다음 슬라이드\"\n >\n <ChevronRight className=\"w-5 h-5\" />\n </button>\n </>\n );\n };\n\n return (\n <div\n ref={ref}\n className={merge(\n \"flex flex-col w-full h-full\",\n arrowPosition === \"outside\" && \"px-16\",\n className\n )}\n style={style}\n {...props}\n >\n <div\n ref={containerRef}\n className=\"relative overflow-hidden w-full flex-1\"\n onMouseEnter={() => pauseOnHover && setIsPaused(true)}\n onMouseLeave={() => pauseOnHover && setIsPaused(false)}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n tabIndex={0}\n role=\"region\"\n aria-roledescription=\"carousel\"\n aria-label=\"이미지 슬라이더\"\n >\n {renderSlides()}\n {renderArrows()}\n {renderPlayPause()}\n {indicatorPosition.includes(\"inside\") && renderIndicators()}\n </div>\n {!indicatorPosition.includes(\"inside\") && renderIndicators()}\n </div>\n );\n }\n);\n\nCarousel.displayName = \"Carousel\";\n\n// Hook to check for reduced motion preference\nfunction useReducedMotion(): boolean {\n const [prefersReducedMotion, setPrefersReducedMotion] = useState(false);\n\n useEffect(() => {\n const mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n setPrefersReducedMotion(mediaQuery.matches);\n\n const handleChange = (e: MediaQueryListEvent) => {\n setPrefersReducedMotion(e.matches);\n };\n\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }, []);\n\n return prefersReducedMotion;\n}\n\n// Simple icon components\nfunction ChevronLeft({ className }: { className?: string }) {\n return (\n <svg className={className} 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 );\n}\n\nfunction ChevronRight({ className }: { className?: string }) {\n return (\n <svg className={className} 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 );\n}\n\nfunction PlayIcon({ className }: { className?: string }) {\n return (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M8 5v14l11-7z\" />\n </svg>\n );\n}\n\nfunction PauseIcon({ className }: { className?: string }) {\n return (\n <svg className={className} fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M6 4h4v16H6V4zm8 0h4v16h-4V4z\" />\n </svg>\n );\n}\n\nexport { Carousel };\n","\"use client\";\n\nimport React, { useRef, useEffect, useState } from \"react\";\nimport { merge } from \"../../lib/utils\";\n\n/**\n * Marquee 컴포넌트의 props / Marquee component props\n * @property {\"left\" | \"right\" | \"up\" | \"down\"} [direction=\"left\"] - 이동 방향 / Movement direction\n * @property {number} [speed=50] - 속도 (px/s) / Speed in pixels per second\n * @property {boolean} [pauseOnHover=true] - 호버시 일시정지 / Pause on hover\n * @property {boolean} [pauseOnClick=false] - 클릭시 일시정지 / Pause on click\n * @property {number} [gap=16] - 아이템 간격 (px) / Gap between items in pixels\n * @property {boolean} [gradient=true] - 양쪽 페이드 그라디언트 / Fade gradient on edges\n * @property {string} [gradientColor=\"hsl(var(--background))\"] - 그라디언트 색상 / Gradient color\n * @property {number} [gradientWidth=100] - 그라디언트 너비 (px) / Gradient width in pixels\n */\nexport interface MarqueeProps extends React.HTMLAttributes<HTMLDivElement> {\n direction?: \"left\" | \"right\" | \"up\" | \"down\";\n speed?: number;\n pauseOnHover?: boolean;\n pauseOnClick?: boolean;\n gap?: number;\n gradient?: boolean;\n gradientColor?: string;\n gradientWidth?: number;\n}\n\n/**\n * Marquee 컴포넌트 / Marquee component\n *\n * 무한 스크롤 애니메이션을 제공하는 컴포넌트입니다.\n * 로고, 텍스트, 이미지 등을 자동으로 흐르게 표시합니다.\n *\n * Component that provides infinite scroll animation.\n * Displays logos, text, images, etc. with automatic scrolling.\n *\n * @component\n * @example\n * // 기본 사용 / Basic usage\n * <Marquee>\n * <span>Item 1</span>\n * <span>Item 2</span>\n * <span>Item 3</span>\n * </Marquee>\n *\n * @example\n * // 로고 캐러셀 / Logo carousel\n * <Marquee speed={30} pauseOnHover gradient>\n * {logos.map(logo => <img key={logo.id} src={logo.src} />)}\n * </Marquee>\n */\nconst Marquee = React.forwardRef<HTMLDivElement, MarqueeProps>(\n (\n {\n children,\n className,\n direction = \"left\",\n speed = 50,\n pauseOnHover = true,\n pauseOnClick = false,\n gap = 16,\n gradient = true,\n gradientColor = \"hsl(var(--background))\",\n gradientWidth = 100,\n style,\n ...props\n },\n ref\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [contentWidth, setContentWidth] = useState(0);\n const [contentHeight, setContentHeight] = useState(0);\n const [isPaused, setIsPaused] = useState(false);\n\n const isHorizontal = direction === \"left\" || direction === \"right\";\n const isReverse = direction === \"right\" || direction === \"down\";\n\n // Measure content size\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const firstChild = container.firstElementChild as HTMLElement;\n if (!firstChild) return;\n\n const updateSize = () => {\n if (isHorizontal) {\n setContentWidth(firstChild.offsetWidth);\n } else {\n setContentHeight(firstChild.offsetHeight);\n }\n };\n\n updateSize();\n\n const resizeObserver = new ResizeObserver(updateSize);\n resizeObserver.observe(firstChild);\n\n return () => resizeObserver.disconnect();\n }, [isHorizontal, children]);\n\n // Calculate animation duration\n const duration = isHorizontal\n ? contentWidth / speed\n : contentHeight / speed;\n\n const animationStyle: React.CSSProperties = {\n [\"--marquee-duration\" as string]: `${duration}s`,\n [\"--marquee-gap\" as string]: `${gap}px`,\n };\n\n // Gradient styles\n const gradientStyle = gradient\n ? {\n [\"--gradient-color\" as string]: gradientColor,\n [\"--gradient-width\" as string]: `${gradientWidth}px`,\n }\n : {};\n\n return (\n <div\n ref={ref}\n className={merge(\n \"relative overflow-hidden\",\n gradient && \"marquee-gradient\",\n className\n )}\n style={{ ...style, ...gradientStyle }}\n onMouseEnter={() => pauseOnHover && setIsPaused(true)}\n onMouseLeave={() => pauseOnHover && setIsPaused(false)}\n onClick={() => pauseOnClick && setIsPaused(!isPaused)}\n {...props}\n >\n <div\n ref={containerRef}\n className={merge(\n \"flex\",\n isHorizontal ? \"flex-row\" : \"flex-col\",\n isPaused ? \"animate-pause\" : \"\",\n isHorizontal\n ? isReverse\n ? \"animate-marquee-right\"\n : \"animate-marquee-left\"\n : isReverse\n ? \"animate-marquee-down\"\n : \"animate-marquee-up\"\n )}\n style={animationStyle}\n >\n {/* Original content */}\n <div\n className={merge(\n \"flex shrink-0\",\n isHorizontal ? \"flex-row\" : \"flex-col\"\n )}\n style={{ gap }}\n >\n {children}\n </div>\n {/* Duplicated content for seamless loop */}\n <div\n className={merge(\n \"flex shrink-0\",\n isHorizontal ? \"flex-row\" : \"flex-col\"\n )}\n style={{ gap, [isHorizontal ? \"marginLeft\" : \"marginTop\"]: gap }}\n aria-hidden=\"true\"\n >\n {children}\n </div>\n </div>\n\n {/* CSS for animations - injected as style element */}\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes marquee-left {\n from { transform: translateX(0); }\n to { transform: translateX(calc(-50% - var(--marquee-gap) / 2)); }\n }\n @keyframes marquee-right {\n from { transform: translateX(calc(-50% - var(--marquee-gap) / 2)); }\n to { transform: translateX(0); }\n }\n @keyframes marquee-up {\n from { transform: translateY(0); }\n to { transform: translateY(calc(-50% - var(--marquee-gap) / 2)); }\n }\n @keyframes marquee-down {\n from { transform: translateY(calc(-50% - var(--marquee-gap) / 2)); }\n to { transform: translateY(0); }\n }\n .animate-marquee-left { animation: marquee-left var(--marquee-duration) linear infinite; }\n .animate-marquee-right { animation: marquee-right var(--marquee-duration) linear infinite; }\n .animate-marquee-up { animation: marquee-up var(--marquee-duration) linear infinite; }\n .animate-marquee-down { animation: marquee-down var(--marquee-duration) linear infinite; }\n .animate-pause { animation-play-state: paused !important; }\n .marquee-gradient::before, .marquee-gradient::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n width: var(--gradient-width);\n z-index: 10;\n pointer-events: none;\n }\n .marquee-gradient::before {\n left: 0;\n background: linear-gradient(to right, var(--gradient-color), transparent);\n }\n .marquee-gradient::after {\n right: 0;\n background: linear-gradient(to left, var(--gradient-color), transparent);\n }\n `}} />\n </div>\n );\n }\n);\n\nMarquee.displayName = \"Marquee\";\n\nexport { Marquee };\n","\"use client\"\n\nimport React, { useState } from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\n\nexport const avatarVariants = cva(\n \"relative flex shrink-0 overflow-hidden rounded-full\",\n {\n variants: {\n size: {\n sm: \"w-8 h-8 text-xs\",\n md: \"w-10 h-10 text-sm\",\n lg: \"w-12 h-12 text-base\",\n },\n variant: {\n default: \"\",\n glass: \"ring-1 ring-white/30 backdrop-blur-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n variant: \"default\",\n },\n }\n)\n\n/**\n * Avatar 컴포넌트의 props / Avatar component props\n */\nexport interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: \"sm\" | \"md\" | \"lg\"\n variant?: \"default\" | \"glass\"\n src?: string\n alt?: string\n fallbackText?: string\n}\n\nexport interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {}\nexport interface AvatarFallbackProps extends React.HTMLAttributes<HTMLDivElement> {}\n\n/**\n * Avatar 컴포넌트 / Avatar component\n *\n * 사용자 프로필 이미지를 표시하는 컴포넌트입니다.\n *\n * @example\n * <Avatar src=\"/user.jpg\" alt=\"사용자\" />\n * <Avatar alt=\"홍길동\">홍</Avatar>\n * <Avatar variant=\"glass\" size=\"lg\" src=\"/user.jpg\" alt=\"사용자\" />\n */\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n ({ className, size = \"md\", variant = \"default\", src, alt, fallbackText, children, ...props }, ref) => {\n const [imgError, setImgError] = useState(false)\n\n const getFallbackContent = () => {\n if (fallbackText) return fallbackText\n if (children) return children\n if (alt) return alt.charAt(0).toUpperCase()\n return \"U\"\n }\n\n const showImage = src && !imgError\n\n return (\n <div\n ref={ref}\n className={merge(avatarVariants({ size, variant }), className)}\n {...props}\n >\n {showImage ? (\n <AvatarImage\n src={src}\n alt={alt || \"avatar\"}\n onError={() => setImgError(true)}\n />\n ) : (\n <AvatarFallback>\n {getFallbackContent()}\n </AvatarFallback>\n )}\n </div>\n )\n }\n)\nAvatar.displayName = \"Avatar\"\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\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-primary text-primary-foreground font-semibold\",\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'\nimport { Section } from '../components/Section'\nimport { Carousel } from '../components/advanced/Carousel'\nimport { Marquee } from '../components/advanced/Marquee'\nimport { Avatar } from '../components/Avatar'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingTestimonialsProps, LandingTestimonialItem, LandingMotionOverride } from './types'\n\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useStagger = require('@hua-labs/motion-core').useStagger\n} catch {\n // motion-core unavailable\n}\n\nfunction TestimonialCard({ item, style }: { item: LandingTestimonialItem; style?: React.CSSProperties }) {\n return (\n <div\n className=\"bg-card/50 backdrop-blur-sm border border-border/30 rounded-xl p-6 flex flex-col gap-4\"\n style={style}\n >\n <blockquote className=\"text-foreground/90 leading-relaxed flex-1\">\n &ldquo;{item.quote}&rdquo;\n </blockquote>\n <div className=\"flex items-center gap-3\">\n {item.avatar && (\n <Avatar size=\"sm\" src={item.avatar} alt={item.author} />\n )}\n <div>\n <p className=\"font-semibold text-sm\">{item.author}</p>\n {(item.role || item.company) && (\n <p className=\"text-xs text-muted-foreground\">\n {item.role}{item.role && item.company && ', '}{item.company}\n </p>\n )}\n </div>\n </div>\n </div>\n )\n}\n\nconst gridColsMap = {\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-2 lg:grid-cols-3',\n} as const\n\nexport function LandingTestimonials({\n items,\n title,\n subtitle,\n variant: variantProp,\n columns: colsProp,\n autoPlay = true,\n interval = 5000,\n motion: motionOverride,\n staggerDelay: staggerProp,\n className,\n ...rest\n}: LandingTestimonialsProps) {\n const theme = useLandingTheme()\n const variant = variantProp ?? theme.testimonials.variant\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.testimonials.motion, ...motionOverride }\n : theme.testimonials.motion\n const staggerDelay = staggerProp ?? theme.testimonials.staggerDelay\n\n const stagger = useStagger?.({\n count: items.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type,\n easing: motion.easing,\n })\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n if (variant === 'marquee') {\n return (\n <Section header={header} className={className} {...rest}>\n <Marquee speed={50} pauseOnHover gradient>\n {items.map((item, i) => (\n <div key={i} className=\"w-80 shrink-0\">\n <TestimonialCard item={item} />\n </div>\n ))}\n </Marquee>\n </Section>\n )\n }\n\n if (variant === 'carousel') {\n return (\n <Section header={header} className={className} {...rest}>\n <Carousel\n autoPlay={autoPlay}\n interval={interval}\n loop\n transition=\"fade\"\n indicators=\"dots\"\n >\n {items.map((item, i) => (\n <div key={i} className=\"flex justify-center px-4\">\n <div className=\"max-w-2xl w-full\">\n <TestimonialCard item={item} />\n </div>\n </div>\n ))}\n </Carousel>\n </Section>\n )\n }\n\n // grid variant\n const cols = colsProp ?? (items.length <= 2 ? 2 : 3) as 2 | 3\n return (\n <Section header={header} className={className} {...rest}>\n <div\n ref={stagger?.containerRef}\n className={merge(\"grid gap-6\", gridColsMap[cols])}\n >\n {items.map((item, i) => (\n <TestimonialCard\n key={i}\n item={item}\n style={stagger?.styles[i]}\n />\n ))}\n </div>\n </Section>\n )\n}\n","\"use client\"\n\nimport React, { useMemo } from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { Marquee } from '../components/advanced/Marquee'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingLogoCloudProps, LandingMotionOverride } from './types'\n\nfunction getInitialTransform(type: string): string {\n switch (type) {\n case 'slideUp': return 'translateY(32px)'\n case 'slideLeft': return 'translateX(-32px)'\n case 'slideRight': return 'translateX(32px)'\n case 'scaleIn': return 'scale(0.95)'\n case 'bounceIn': return 'scale(0.75)'\n default: return 'none'\n }\n}\n\ninterface ScrollRevealResult {\n ref: React.RefObject<HTMLElement | null>\n style: React.CSSProperties\n isVisible: boolean\n}\ninterface ScrollRevealOptions {\n motionType?: string\n duration?: number\n delay?: number\n}\n\nlet useScrollReveal: ((opts: ScrollRevealOptions) => ScrollRevealResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useScrollReveal = require('@hua-labs/motion-core').useScrollReveal\n} catch {\n // motion-core unavailable\n}\n\nexport function LandingLogoCloud({\n logos,\n title,\n variant: variantProp,\n speed: speedProp,\n logoHeight = 40,\n motion: motionOverride,\n className,\n ...rest\n}: LandingLogoCloudProps) {\n const theme = useLandingTheme()\n const variant = variantProp ?? theme.logoCloud.variant\n const speed = speedProp ?? theme.logoCloud.speed\n\n // fadeIn motion for the section entrance\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.features.motion, ...motionOverride }\n : { type: 'fadeIn', duration: 800, easing: 'ease-out', delay: 0 }\n\n const scrollReveal = useScrollReveal?.({\n motionType: motion.type,\n duration: motion.duration,\n delay: motion.delay,\n })\n\n const fallbackStyle = useMemo<React.CSSProperties>(() => {\n if (scrollReveal) return {}\n return {\n opacity: 0,\n transform: getInitialTransform(motion.type),\n animation: `landing-logocloud-enter ${motion.duration}ms ${motion.easing} ${motion.delay}ms forwards`,\n }\n }, [scrollReveal, motion])\n\n const logoElements = logos.map((logo, i) => {\n const img = (\n <img\n key={i}\n src={logo.src}\n alt={logo.alt}\n className=\"object-contain opacity-60 hover:opacity-100 transition-opacity grayscale hover:grayscale-0\"\n style={{ height: logoHeight, width: 'auto' }}\n />\n )\n if (logo.href) {\n return (\n <a key={i} href={logo.href} target=\"_blank\" rel=\"noopener noreferrer\" className=\"inline-flex\">\n {img}\n </a>\n )\n }\n return img\n })\n\n const header = title ? { title, subtitle: undefined } : undefined\n\n return (\n <Section header={header} spacing=\"sm\" className={merge(\"py-12 sm:py-16\", className)} {...rest}>\n <div\n ref={scrollReveal?.ref as React.Ref<HTMLDivElement>}\n style={scrollReveal?.style ?? fallbackStyle}\n >\n {variant === 'marquee' ? (\n <Marquee speed={speed} pauseOnHover gradient gap={48}>\n {logoElements}\n </Marquee>\n ) : (\n <div className=\"flex flex-wrap items-center justify-center gap-8 sm:gap-12\">\n {logoElements}\n </div>\n )}\n </div>\n\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes landing-logocloud-enter {\n to { opacity: 1; transform: none; }\n }\n `}} />\n </Section>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { Container } from '../components/Container'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingShowcaseProps, LandingMotionOverride } from './types'\n\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useStagger = require('@hua-labs/motion-core').useStagger\n} catch {\n // motion-core unavailable\n}\n\nexport function LandingShowcase({\n items,\n title,\n subtitle,\n motion: motionOverride,\n staggerDelay: staggerProp,\n className,\n ...rest\n}: LandingShowcaseProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.showcase.motion, ...motionOverride }\n : theme.showcase.motion\n const staggerDelay = staggerProp ?? theme.showcase.staggerDelay\n\n const stagger = useStagger?.({\n count: items.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type,\n easing: motion.easing,\n })\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n return (\n <Section header={header} className={className} {...rest}>\n <div ref={stagger?.containerRef} className=\"space-y-16 sm:space-y-24\">\n {items.map((item, i) => {\n const isEven = i % 2 === 0\n return (\n <Container key={i} size=\"lg\" padding=\"none\" className=\"px-4\">\n <div\n className={merge(\n \"flex flex-col gap-8 items-center\",\n isEven ? \"md:flex-row\" : \"md:flex-row-reverse\"\n )}\n style={stagger?.styles[i]}\n >\n {/* Image */}\n <div className=\"flex-1 w-full\">\n <div className=\"relative overflow-hidden rounded-xl border border-border/30 shadow-lg\">\n <img\n src={item.image}\n alt={item.title}\n className=\"w-full h-auto object-cover\"\n />\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent pointer-events-none\" />\n </div>\n </div>\n\n {/* Text */}\n <div className=\"flex-1 w-full space-y-4\">\n <h3 className=\"text-2xl sm:text-3xl font-bold\">\n {item.title}\n </h3>\n <p className=\"text-muted-foreground leading-relaxed\">\n {item.description}\n </p>\n </div>\n </div>\n </Container>\n )\n })}\n </div>\n </Section>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Section } from '../components/Section'\nimport { Container } from '../components/Container'\nimport { Avatar } from '../components/Avatar'\nimport { Icon } from '../components/Icon/Icon'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingAboutProps, LandingMotionOverride } from './types'\n\ninterface ScrollRevealResult {\n ref: React.RefObject<HTMLElement | null>\n style: React.CSSProperties\n isVisible: boolean\n}\ninterface ScrollRevealOptions {\n motionType?: string\n duration?: number\n delay?: number\n}\n\nlet useScrollReveal: ((opts: ScrollRevealOptions) => ScrollRevealResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useScrollReveal = require('@hua-labs/motion-core').useScrollReveal\n} catch {\n // motion-core unavailable\n}\n\nexport function LandingAbout({\n name,\n role,\n bio,\n avatar,\n socialLinks,\n motion: motionOverride,\n className,\n ...rest\n}: LandingAboutProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.hero.motion, ...motionOverride }\n : theme.hero.motion\n\n const scrollReveal = useScrollReveal?.({\n motionType: motion.type as 'fadeIn' | 'slideUp',\n duration: motion.duration,\n delay: motion.delay,\n })\n\n const fallbackStyle: React.CSSProperties = scrollReveal ? {} : {\n opacity: 0,\n transform: motion.type === 'slideUp' ? 'translateY(32px)' : 'none',\n animation: `landing-about-enter ${motion.duration}ms ${motion.easing} ${motion.delay}ms forwards`,\n }\n\n return (\n <Section className={className} {...rest}>\n <Container size=\"lg\" padding=\"none\" centered>\n <div\n ref={scrollReveal?.ref as React.Ref<HTMLDivElement>}\n style={scrollReveal?.style ?? fallbackStyle}\n className=\"flex flex-col md:flex-row items-center gap-8 md:gap-12\"\n >\n {/* Avatar */}\n {avatar && (\n <div className=\"flex-shrink-0\">\n <Avatar\n size=\"lg\"\n src={avatar}\n alt={name}\n className=\"w-32 h-32 md:w-40 md:h-40\"\n />\n </div>\n )}\n\n {/* Text Content */}\n <div className=\"flex-1 text-center md:text-left\">\n <h2 className=\"text-3xl sm:text-4xl font-bold mb-2\">{name}</h2>\n <p className=\"text-xl text-muted-foreground mb-4\">{role}</p>\n <div className=\"text-foreground/90 leading-relaxed mb-6\">\n {typeof bio === 'string' ? <p>{bio}</p> : bio}\n </div>\n\n {/* Social Links */}\n {socialLinks && socialLinks.length > 0 && (\n <div className=\"flex gap-4 justify-center md:justify-start\">\n {socialLinks.map((link, i) => (\n <a\n key={i}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-muted-foreground hover:text-foreground transition-colors\"\n aria-label={link.label}\n >\n <Icon name={link.icon as any} size={24} />\n </a>\n ))}\n </div>\n )}\n </div>\n </div>\n </Container>\n\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes landing-about-enter {\n to { opacity: 1; transform: none; }\n }\n `}} />\n </Section>\n )\n}\n","\"use client\"\n\nimport React from \"react\"\nimport { cva } from \"class-variance-authority\"\nimport { merge } from \"../lib/utils\"\n\nexport const cardVariants = cva(\n \"rounded-lg\",\n {\n variants: {\n variant: {\n default: \"bg-card text-card-foreground border border-border\",\n outline: \"bg-transparent border-2 border-border\",\n elevated: \"bg-card text-card-foreground shadow-lg border border-border\",\n },\n shadow: {\n none: \"shadow-none\",\n sm: \"shadow-sm\",\n md: \"shadow-md\",\n lg: \"shadow-lg\",\n },\n padding: {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n padding: \"none\",\n },\n }\n)\n\n/**\n * Card 컴포넌트의 props / Card component props\n */\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"outline\" | \"elevated\"\n shadow?: \"none\" | \"sm\" | \"md\" | \"lg\"\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\"\n hoverable?: boolean\n}\n\n/**\n * Card 컴포넌트 / Card component\n *\n * 콘텐츠를 카드 형태로 표시하는 컴포넌트입니다.\n *\n * @example\n * <Card>\n * <CardHeader><CardTitle>제목</CardTitle></CardHeader>\n * <CardContent><p>내용</p></CardContent>\n * </Card>\n */\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n ({ className, variant = \"default\", shadow, padding = \"none\", hoverable, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={merge(\n cardVariants({ variant, shadow, padding }),\n hoverable && \"transition-shadow hover:shadow-lg cursor-pointer\",\n className\n )}\n {...props}\n />\n )\n }\n)\n\nCard.displayName = \"Card\"\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex flex-col space-y-1 p-3\", className)}\n {...props}\n />\n )\n)\n\nCardHeader.displayName = \"CardHeader\"\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\n\nconst CardTitle = React.forwardRef<HTMLParagraphElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={merge(\n \"text-base md:text-lg font-semibold leading-tight tracking-tight\",\n className\n )}\n {...props}\n />\n )\n)\n\nCardTitle.displayName = \"CardTitle\"\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\n\nconst CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={merge(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n)\n\nCardDescription.displayName = \"CardDescription\"\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={merge(\"px-3 pb-3\", className)} {...props} />\n )\n)\n\nCardContent.displayName = \"CardContent\"\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={merge(\"flex items-center px-3 pb-3\", className)}\n {...props}\n />\n )\n)\n\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","\"use client\"\n\nimport React, { useState, useMemo } from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { Card } from '../components/Card'\nimport { Icon } from '../components/Icon/Icon'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingProjectsProps, LandingProjectItem, LandingMotionOverride } from './types'\n\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\nlet TiltCard: React.ComponentType<any> | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const mc = require('@hua-labs/motion-core')\n useStagger = mc.useStagger\n TiltCard = mc.TiltCard\n} catch {\n // motion-core unavailable\n}\n\nconst gridColsMap = {\n 2: 'md:grid-cols-2',\n 3: 'md:grid-cols-2 lg:grid-cols-3',\n} as const\n\nfunction ProjectCard({ item, style }: { item: LandingProjectItem; style?: React.CSSProperties }) {\n const CardComponent = TiltCard || Card\n\n return (\n <CardComponent\n className=\"bg-card/50 backdrop-blur-sm border border-border/30 rounded-xl overflow-hidden group hover:shadow-lg transition-shadow\"\n style={style}\n >\n {item.image && (\n <div className=\"relative overflow-hidden aspect-video\">\n <img\n src={item.image}\n alt={item.title}\n className=\"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300\"\n />\n </div>\n )}\n <div className=\"p-6\">\n <h3 className=\"text-xl font-bold mb-2\">{item.title}</h3>\n <p className=\"text-muted-foreground mb-4 leading-relaxed\">\n {item.description}\n </p>\n\n {/* Tags */}\n {item.tags && item.tags.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mb-4\">\n {item.tags.map((tag, i) => (\n <span\n key={i}\n className=\"px-2 py-1 text-xs rounded-full bg-primary/10 text-primary\"\n >\n {tag}\n </span>\n ))}\n </div>\n )}\n\n {/* Links */}\n <div className=\"flex gap-3\">\n {item.href && (\n <a\n href={item.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-sm text-primary hover:underline flex items-center gap-1\"\n >\n View Project <Icon name=\"arrowRight\" size={16} />\n </a>\n )}\n {item.github && (\n <a\n href={item.github}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-sm text-muted-foreground hover:text-foreground flex items-center gap-1\"\n >\n <Icon name=\"github\" size={16} /> GitHub\n </a>\n )}\n </div>\n </div>\n </CardComponent>\n )\n}\n\nexport function LandingProjects({\n items,\n title,\n subtitle,\n columns = 3,\n filter = false,\n motion: motionOverride,\n staggerDelay: staggerProp,\n className,\n ...rest\n}: LandingProjectsProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.features.motion, ...motionOverride }\n : theme.features.motion\n const staggerDelay = staggerProp ?? theme.features.staggerDelay\n\n const [selectedTag, setSelectedTag] = useState<string | null>(null)\n\n const allTags = useMemo(() => {\n const tagSet = new Set<string>()\n items.forEach(item => {\n item.tags?.forEach(tag => tagSet.add(tag))\n })\n return Array.from(tagSet)\n }, [items])\n\n const filteredItems = useMemo(() => {\n if (!selectedTag) return items\n return items.filter(item => item.tags?.includes(selectedTag))\n }, [items, selectedTag])\n\n const stagger = useStagger?.({\n count: filteredItems.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type,\n easing: motion.easing,\n })\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n return (\n <Section header={header} className={className} {...rest}>\n {/* Tag Filter */}\n {filter && allTags.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mb-8 justify-center\">\n <button\n onClick={() => setSelectedTag(null)}\n className={merge(\n \"px-4 py-2 rounded-full text-sm font-medium transition-colors\",\n !selectedTag\n ? \"bg-primary text-primary-foreground\"\n : \"bg-secondary text-secondary-foreground hover:bg-secondary/80\"\n )}\n >\n All\n </button>\n {allTags.map(tag => (\n <button\n key={tag}\n onClick={() => setSelectedTag(tag)}\n className={merge(\n \"px-4 py-2 rounded-full text-sm font-medium transition-colors\",\n selectedTag === tag\n ? \"bg-primary text-primary-foreground\"\n : \"bg-secondary text-secondary-foreground hover:bg-secondary/80\"\n )}\n >\n {tag}\n </button>\n ))}\n </div>\n )}\n\n {/* Projects Grid */}\n <div\n ref={stagger?.containerRef}\n className={merge(\"grid gap-6\", gridColsMap[columns])}\n >\n {filteredItems.map((item, i) => (\n <ProjectCard\n key={i}\n item={item}\n style={stagger?.styles[i]}\n />\n ))}\n </div>\n </Section>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { Icon } from '../components/Icon/Icon'\nimport { Marquee } from '../components/advanced/Marquee'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingSkillsProps, LandingSkillItem, LandingMotionOverride } from './types'\n\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useStagger = require('@hua-labs/motion-core').useStagger\n} catch {\n // motion-core unavailable\n}\n\nfunction getBarColor(level: number): string {\n if (level >= 90) return 'bg-green-500'\n if (level >= 70) return 'bg-blue-500'\n if (level >= 50) return 'bg-yellow-500'\n return 'bg-gray-500'\n}\n\nexport function LandingSkills({\n items,\n title,\n subtitle,\n variant = 'grid',\n motion: motionOverride,\n staggerDelay: staggerProp,\n className,\n ...rest\n}: LandingSkillsProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.features.motion, ...motionOverride }\n : theme.features.motion\n const staggerDelay = staggerProp ?? theme.features.staggerDelay\n\n const stagger = useStagger?.({\n count: items.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type,\n easing: motion.easing,\n })\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n // Marquee variant\n if (variant === 'marquee') {\n return (\n <Section header={header} className={className} {...rest}>\n <Marquee speed={50} pauseOnHover gradient>\n {items.map((item, i) => (\n <div key={i} className=\"w-40 shrink-0 flex items-center gap-3 px-4 py-2\">\n {item.icon && <Icon name={item.icon as any} size={24} />}\n <span className=\"font-medium\">{item.name}</span>\n </div>\n ))}\n </Marquee>\n </Section>\n )\n }\n\n // Grid variant\n if (variant === 'grid') {\n return (\n <Section header={header} className={className} {...rest}>\n <div\n ref={stagger?.containerRef}\n className=\"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6\"\n >\n {items.map((item, i) => (\n <div\n key={i}\n className=\"flex flex-col items-center gap-3 p-6 bg-card/50 backdrop-blur-sm border border-border/30 rounded-xl hover:shadow-lg transition-shadow\"\n style={stagger?.styles[i]}\n >\n {item.icon && (\n <Icon name={item.icon as any} size={32} variant=\"primary\" />\n )}\n <span className=\"font-semibold text-center\">{item.name}</span>\n {item.category && (\n <span className=\"text-xs text-muted-foreground\">{item.category}</span>\n )}\n </div>\n ))}\n </div>\n </Section>\n )\n }\n\n // Bars variant\n return (\n <Section header={header} className={className} {...rest}>\n <div ref={stagger?.containerRef} className=\"space-y-6 max-w-3xl mx-auto\">\n {items.map((item, i) => {\n const level = item.level ?? 100\n return (\n <div key={i} className=\"space-y-2\" style={stagger?.styles[i]}>\n <div className=\"flex justify-between items-center\">\n <div className=\"flex items-center gap-2\">\n {item.icon && <Icon name={item.icon as any} size={20} />}\n <span className=\"font-semibold\">{item.name}</span>\n </div>\n <span className=\"text-sm text-muted-foreground\">{level}%</span>\n </div>\n <div className=\"h-2 bg-secondary rounded-full overflow-hidden\">\n <div\n className={merge(\n \"h-full rounded-full transition-all duration-1000\",\n getBarColor(level)\n )}\n style={{\n width: `${level}%`,\n animation: 'skill-bar-fill 1s ease-out forwards',\n }}\n />\n </div>\n </div>\n )\n })}\n </div>\n\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes skill-bar-fill {\n from { width: 0; }\n }\n `}} />\n </Section>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingExperienceProps, LandingExperienceItem, LandingMotionOverride } from './types'\n\ninterface StaggerResult {\n containerRef: React.RefObject<HTMLDivElement | null>\n styles: React.CSSProperties[]\n isVisible: boolean\n}\ninterface StaggerOptions {\n count: number\n staggerDelay?: number\n duration?: number\n motionType?: string\n easing?: string\n}\n\nlet useStagger: ((opts: StaggerOptions) => StaggerResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useStagger = require('@hua-labs/motion-core').useStagger\n} catch {\n // motion-core unavailable\n}\n\nfunction ExperienceItem({ item, style }: { item: LandingExperienceItem; style?: React.CSSProperties }) {\n return (\n <div className=\"relative pl-8 pb-8 last:pb-0\" style={style}>\n {/* Timeline dot */}\n <div\n className={merge(\n \"absolute left-0 top-1.5 w-3 h-3 rounded-full border-2\",\n item.current\n ? \"bg-primary border-primary animate-pulse\"\n : \"bg-background border-border\"\n )}\n />\n {/* Timeline line */}\n <div className=\"absolute left-[5px] top-4 bottom-0 w-0.5 bg-border\" />\n\n {/* Content */}\n <div className=\"space-y-1\">\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-1\">\n <h3 className=\"text-lg font-bold\">{item.title}</h3>\n <span className=\"text-sm text-muted-foreground\">{item.period}</span>\n </div>\n <p className=\"text-base text-foreground/80 font-medium\">{item.company}</p>\n {item.description && (\n <p className=\"text-sm text-muted-foreground leading-relaxed pt-2\">\n {item.description}\n </p>\n )}\n {item.current && (\n <span className=\"inline-block mt-2 px-2 py-1 text-xs rounded-full bg-primary/10 text-primary\">\n Current\n </span>\n )}\n </div>\n </div>\n )\n}\n\nexport function LandingExperience({\n items,\n title,\n subtitle,\n motion: motionOverride,\n staggerDelay: staggerProp,\n className,\n ...rest\n}: LandingExperienceProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.features.motion, ...motionOverride }\n : theme.features.motion\n const staggerDelay = staggerProp ?? theme.features.staggerDelay\n\n const stagger = useStagger?.({\n count: items.length,\n staggerDelay,\n duration: motion.duration,\n motionType: motion.type,\n easing: motion.easing,\n })\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n return (\n <Section header={header} className={className} {...rest}>\n <div ref={stagger?.containerRef} className=\"max-w-3xl mx-auto\">\n {items.map((item, i) => (\n <ExperienceItem\n key={i}\n item={item}\n style={stagger?.styles[i]}\n />\n ))}\n </div>\n </Section>\n )\n}\n","\"use client\"\n\nimport React, { useState, useEffect } from 'react'\nimport { merge } from '../lib/utils'\nimport { Section } from '../components/Section'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingMetricsProps, LandingMetricItem, LandingMotionOverride } from './types'\n\ninterface ScrollRevealResult {\n ref: React.RefObject<HTMLElement | null>\n style: React.CSSProperties\n isVisible: boolean\n}\ninterface ScrollRevealOptions {\n motionType?: string\n duration?: number\n delay?: number\n}\n\nlet useScrollReveal: ((opts: ScrollRevealOptions) => ScrollRevealResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useScrollReveal = require('@hua-labs/motion-core').useScrollReveal\n} catch {\n // motion-core unavailable\n}\n\nfunction getMetricColor(value: number): { bar: string; text: string } {\n if (value >= 90) return { bar: 'bg-green-500', text: 'text-green-600 dark:text-green-400' }\n if (value >= 50) return { bar: 'bg-orange-500', text: 'text-orange-600 dark:text-orange-400' }\n return { bar: 'bg-red-500', text: 'text-red-600 dark:text-red-400' }\n}\n\nfunction MetricBar({ item, delay = 0 }: { item: LandingMetricItem; delay?: number }) {\n const [animatedValue, setAnimatedValue] = useState(0)\n const color = getMetricColor(item.value)\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setAnimatedValue(item.value)\n }, delay)\n return () => clearTimeout(timer)\n }, [item.value, delay])\n\n return (\n <div className=\"space-y-2\">\n <div className=\"flex justify-between items-center\">\n <span className=\"text-sm font-medium\">{item.label}</span>\n <span className={merge(\"text-2xl font-bold\", color.text)}>\n {Math.round(animatedValue)}\n </span>\n </div>\n <div className=\"h-2 bg-secondary rounded-full overflow-hidden\">\n <div\n className={merge(\"h-full rounded-full transition-all duration-1000 ease-out\", color.bar)}\n style={{ width: `${animatedValue}%` }}\n />\n </div>\n {item.description && (\n <p className=\"text-xs text-muted-foreground\">{item.description}</p>\n )}\n </div>\n )\n}\n\nexport function LandingMetrics({\n items,\n title,\n subtitle,\n tabs,\n motion: motionOverride,\n className,\n ...rest\n}: LandingMetricsProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.stats.motion, ...motionOverride }\n : theme.stats.motion\n\n const [activeTab, setActiveTab] = useState(0)\n\n const scrollReveal = useScrollReveal?.({\n motionType: motion.type as 'fadeIn' | 'slideUp',\n duration: motion.duration,\n delay: motion.delay,\n })\n\n const fallbackStyle: React.CSSProperties = scrollReveal ? {} : {\n opacity: 0,\n transform: motion.type === 'slideUp' ? 'translateY(32px)' : 'none',\n animation: `landing-metrics-enter ${motion.duration}ms ${motion.easing} ${motion.delay}ms forwards`,\n }\n\n const displayItems = tabs ? tabs[activeTab].items : items\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n return (\n <Section header={header} className={className} {...rest}>\n <div\n ref={scrollReveal?.ref as React.Ref<HTMLDivElement>}\n style={scrollReveal?.style ?? fallbackStyle}\n className=\"max-w-3xl mx-auto\"\n >\n {/* Tabs */}\n {tabs && tabs.length > 1 && (\n <div className=\"flex gap-2 mb-8 justify-center\">\n {tabs.map((tab, i) => (\n <button\n key={i}\n onClick={() => setActiveTab(i)}\n className={merge(\n \"px-4 py-2 rounded-lg text-sm font-medium transition-colors\",\n activeTab === i\n ? \"bg-primary text-primary-foreground\"\n : \"bg-secondary text-secondary-foreground hover:bg-secondary/80\"\n )}\n >\n {tab.label}\n </button>\n ))}\n </div>\n )}\n\n {/* Metrics */}\n <div className=\"space-y-6\">\n {displayItems.map((item, i) => (\n <MetricBar key={i} item={item} delay={i * 100} />\n ))}\n </div>\n </div>\n\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes landing-metrics-enter {\n to { opacity: 1; transform: none; }\n }\n `}} />\n </Section>\n )\n}\n","\"use client\"\n\nimport React from 'react'\nimport { Section } from '../components/Section'\nimport { Container } from '../components/Container'\nimport { Icon } from '../components/Icon/Icon'\nimport { useLandingTheme } from './LandingProvider'\nimport type { LandingContactProps, LandingMotionOverride } from './types'\n\ninterface ScrollRevealResult {\n ref: React.RefObject<HTMLElement | null>\n style: React.CSSProperties\n isVisible: boolean\n}\ninterface ScrollRevealOptions {\n motionType?: string\n duration?: number\n delay?: number\n}\n\nlet useScrollReveal: ((opts: ScrollRevealOptions) => ScrollRevealResult) | undefined\ntry {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n useScrollReveal = require('@hua-labs/motion-core').useScrollReveal\n} catch {\n // motion-core unavailable\n}\n\nexport function LandingContact({\n title = 'Get in Touch',\n subtitle,\n email,\n socialLinks,\n motion: motionOverride,\n className,\n ...rest\n}: LandingContactProps) {\n const theme = useLandingTheme()\n const motion: Required<LandingMotionOverride> = motionOverride\n ? { ...theme.cta.motion, ...motionOverride }\n : theme.cta.motion\n\n const scrollReveal = useScrollReveal?.({\n motionType: motion.type as 'fadeIn' | 'slideUp',\n duration: motion.duration,\n delay: motion.delay,\n })\n\n const fallbackStyle: React.CSSProperties = scrollReveal ? {} : {\n opacity: 0,\n transform: motion.type === 'slideUp' ? 'translateY(32px)' : 'none',\n animation: `landing-contact-enter ${motion.duration}ms ${motion.easing} ${motion.delay}ms forwards`,\n }\n\n const header = (title || subtitle)\n ? { title: title ?? '', subtitle }\n : undefined\n\n return (\n <Section header={header} className={className} {...rest}>\n <Container size=\"md\" padding=\"none\" centered>\n <div\n ref={scrollReveal?.ref as React.Ref<HTMLDivElement>}\n style={scrollReveal?.style ?? fallbackStyle}\n className=\"text-center space-y-6\"\n >\n {/* Email */}\n {email && (\n <a\n href={`mailto:${email}`}\n className=\"inline-block text-2xl sm:text-3xl font-bold text-primary hover:underline\"\n >\n {email}\n </a>\n )}\n\n {/* Social Links */}\n {socialLinks && socialLinks.length > 0 && (\n <div className=\"flex gap-4 justify-center\">\n {socialLinks.map((link, i) => (\n <a\n key={i}\n href={link.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center justify-center w-12 h-12 rounded-full bg-secondary hover:bg-secondary/80 text-foreground transition-colors\"\n aria-label={link.label}\n >\n <Icon name={link.icon as any} size={24} />\n </a>\n ))}\n </div>\n )}\n </div>\n </Container>\n\n <style dangerouslySetInnerHTML={{ __html: `\n @keyframes landing-contact-enter {\n to { opacity: 1; transform: none; }\n }\n `}} />\n </Section>\n )\n}\n","export { LandingProvider, useLandingTheme } from './LandingProvider'\nexport { LandingHero } from './LandingHero'\nexport { LandingFeatures } from './LandingFeatures'\nexport { LandingStats } from './LandingStats'\nexport { LandingCTA } from './LandingCTA'\nexport { LandingTestimonials } from './LandingTestimonials'\nexport { LandingLogoCloud } from './LandingLogoCloud'\nexport { LandingShowcase } from './LandingShowcase'\nexport { LandingAbout } from './LandingAbout'\nexport { LandingProjects } from './LandingProjects'\nexport { LandingSkills } from './LandingSkills'\nexport { LandingExperience } from './LandingExperience'\nexport { LandingMetrics } from './LandingMetrics'\nexport { LandingContact } from './LandingContact'\nexport { createLandingTheme, resolveTheme, corporate, marketing, product, dashboard, app, immersive, portfolio } from './themes'\n\nexport type {\n LandingThemeName,\n LandingTheme,\n LandingColorTokens,\n LandingMotionOverride,\n LandingProviderProps,\n LandingHeroProps,\n LandingFeaturesProps,\n LandingFeatureItem,\n LandingStatsProps,\n LandingStatItem,\n LandingCTAProps,\n LandingTestimonialsProps,\n LandingTestimonialItem,\n LandingLogoCloudProps,\n LandingLogoItem,\n LandingShowcaseProps,\n LandingShowcaseItem,\n LandingAboutProps,\n LandingSocialLink,\n LandingProjectsProps,\n LandingProjectItem,\n LandingSkillsProps,\n LandingSkillItem,\n LandingExperienceProps,\n LandingExperienceItem,\n LandingMetricsProps,\n LandingMetricItem,\n LandingMetricsTab,\n LandingContactProps,\n DeepPartial,\n} from './types'\n\n// ── Landing namespace (convenience) ─────────────\n\nimport { LandingProvider } from './LandingProvider'\nimport { LandingHero } from './LandingHero'\nimport { LandingFeatures } from './LandingFeatures'\nimport { LandingStats } from './LandingStats'\nimport { LandingCTA } from './LandingCTA'\nimport { LandingTestimonials } from './LandingTestimonials'\nimport { LandingLogoCloud } from './LandingLogoCloud'\nimport { LandingShowcase } from './LandingShowcase'\nimport { LandingAbout } from './LandingAbout'\nimport { LandingProjects } from './LandingProjects'\nimport { LandingSkills } from './LandingSkills'\nimport { LandingExperience } from './LandingExperience'\nimport { LandingMetrics } from './LandingMetrics'\nimport { LandingContact } from './LandingContact'\n\nexport const Landing = {\n Provider: LandingProvider,\n Hero: LandingHero,\n Features: LandingFeatures,\n Stats: LandingStats,\n CTA: LandingCTA,\n Testimonials: LandingTestimonials,\n LogoCloud: LandingLogoCloud,\n Showcase: LandingShowcase,\n About: LandingAbout,\n Projects: LandingProjects,\n Skills: LandingSkills,\n Experience: LandingExperience,\n Metrics: LandingMetrics,\n Contact: LandingContact,\n} as const\n"]}