@hua-labs/ui 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (242) hide show
  1. package/README.md +55 -67
  2. package/dist/{ComponentLayout-btJq4TjA.d.mts → ComponentLayout-BhM4VSoq.d.mts} +1 -1
  3. package/dist/Section-BWzyshgX.d.mts +67 -0
  4. package/dist/advanced/dashboard.d.ts.map +1 -1
  5. package/dist/advanced-dashboard.d.mts +1 -1
  6. package/dist/advanced-dashboard.mjs +3 -3
  7. package/dist/advanced-dashboard.mjs.map +1 -1
  8. package/dist/advanced-emotion.mjs +1 -1
  9. package/dist/advanced-motion.d.mts +74 -7
  10. package/dist/advanced-motion.mjs +1 -1
  11. package/dist/advanced.d.mts +4 -4
  12. package/dist/advanced.mjs +3 -3
  13. package/dist/advanced.mjs.map +1 -1
  14. package/dist/{chunk-GLZKT7JN.mjs → chunk-5DPW7SVD.mjs} +3 -3
  15. package/dist/{chunk-GLZKT7JN.mjs.map → chunk-5DPW7SVD.mjs.map} +1 -1
  16. package/dist/{chunk-X7ZIWYRC.mjs → chunk-5L5HIPKA.mjs} +2 -2
  17. package/dist/{chunk-X7ZIWYRC.mjs.map → chunk-5L5HIPKA.mjs.map} +1 -1
  18. package/dist/chunk-A5YOVVM5.mjs +3 -0
  19. package/dist/chunk-A5YOVVM5.mjs.map +1 -0
  20. package/dist/chunk-CNW22G24.mjs +13 -0
  21. package/dist/chunk-CNW22G24.mjs.map +1 -0
  22. package/dist/chunk-CW66UBQG.mjs +3 -0
  23. package/dist/chunk-CW66UBQG.mjs.map +1 -0
  24. package/dist/chunk-EAZEI74V.mjs +3 -0
  25. package/dist/chunk-EAZEI74V.mjs.map +1 -0
  26. package/dist/{chunk-LH77I6HO.mjs → chunk-EPY3432E.mjs} +2 -2
  27. package/dist/{chunk-LH77I6HO.mjs.map → chunk-EPY3432E.mjs.map} +1 -1
  28. package/dist/{chunk-SGEP3CQE.mjs → chunk-F2M4YDDQ.mjs} +2 -2
  29. package/dist/{chunk-SGEP3CQE.mjs.map → chunk-F2M4YDDQ.mjs.map} +1 -1
  30. package/dist/chunk-FHMFDCX2.mjs +3 -0
  31. package/dist/chunk-FHMFDCX2.mjs.map +1 -0
  32. package/dist/chunk-HBIUCLFL.mjs +3 -0
  33. package/dist/chunk-HBIUCLFL.mjs.map +1 -0
  34. package/dist/{chunk-LOYAJIWO.mjs → chunk-HEBXAFRY.mjs} +2 -2
  35. package/dist/{chunk-LOYAJIWO.mjs.map → chunk-HEBXAFRY.mjs.map} +1 -1
  36. package/dist/chunk-IG47LMOD.mjs +3 -0
  37. package/dist/chunk-IG47LMOD.mjs.map +1 -0
  38. package/dist/{chunk-IFSEJVOR.mjs → chunk-J47ZEXEL.mjs} +2 -2
  39. package/dist/{chunk-IFSEJVOR.mjs.map → chunk-J47ZEXEL.mjs.map} +1 -1
  40. package/dist/{chunk-IN7RWQCJ.mjs → chunk-K2FOFIST.mjs} +2 -2
  41. package/dist/{chunk-IN7RWQCJ.mjs.map → chunk-K2FOFIST.mjs.map} +1 -1
  42. package/dist/{chunk-UWHCM3S6.mjs → chunk-LL6QPRD7.mjs} +2 -2
  43. package/dist/{chunk-UWHCM3S6.mjs.map → chunk-LL6QPRD7.mjs.map} +1 -1
  44. package/dist/{chunk-PAEKNQWW.mjs → chunk-NMJLOK6M.mjs} +2 -2
  45. package/dist/{chunk-PAEKNQWW.mjs.map → chunk-NMJLOK6M.mjs.map} +1 -1
  46. package/dist/chunk-O24K56OS.mjs +3 -0
  47. package/dist/chunk-O24K56OS.mjs.map +1 -0
  48. package/dist/chunk-OIWG3IJ7.mjs +3 -0
  49. package/dist/chunk-OIWG3IJ7.mjs.map +1 -0
  50. package/dist/{chunk-VWSBJUNI.mjs → chunk-OLLU7ZFH.mjs} +2 -2
  51. package/dist/{chunk-VWSBJUNI.mjs.map → chunk-OLLU7ZFH.mjs.map} +1 -1
  52. package/dist/chunk-Q76JW7X5.mjs +73 -0
  53. package/dist/chunk-Q76JW7X5.mjs.map +1 -0
  54. package/dist/chunk-QEMPERUK.mjs +3 -0
  55. package/dist/chunk-QEMPERUK.mjs.map +1 -0
  56. package/dist/{chunk-XV3Y7QVU.mjs → chunk-QRM66RQG.mjs} +2 -2
  57. package/dist/{chunk-XV3Y7QVU.mjs.map → chunk-QRM66RQG.mjs.map} +1 -1
  58. package/dist/{chunk-6KTHJ3EL.mjs → chunk-QRRP7TGF.mjs} +3 -3
  59. package/dist/{chunk-6KTHJ3EL.mjs.map → chunk-QRRP7TGF.mjs.map} +1 -1
  60. package/dist/chunk-SD6XGDAC.mjs +3 -0
  61. package/dist/chunk-SD6XGDAC.mjs.map +1 -0
  62. package/dist/chunk-SDFVGFXT.mjs +3 -0
  63. package/dist/chunk-SDFVGFXT.mjs.map +1 -0
  64. package/dist/{chunk-N7M6RIN4.mjs → chunk-SMLDNOV3.mjs} +3 -3
  65. package/dist/{chunk-N7M6RIN4.mjs.map → chunk-SMLDNOV3.mjs.map} +1 -1
  66. package/dist/{chunk-NBJUE7NR.mjs → chunk-TAP6MYDW.mjs} +2 -2
  67. package/dist/{chunk-NBJUE7NR.mjs.map → chunk-TAP6MYDW.mjs.map} +1 -1
  68. package/dist/{chunk-PYBYZVSL.mjs → chunk-TBZ645BI.mjs} +2 -2
  69. package/dist/{chunk-PYBYZVSL.mjs.map → chunk-TBZ645BI.mjs.map} +1 -1
  70. package/dist/{chunk-C4OACMTB.mjs → chunk-V2DNYJR6.mjs} +2 -2
  71. package/dist/{chunk-C4OACMTB.mjs.map → chunk-V2DNYJR6.mjs.map} +1 -1
  72. package/dist/chunk-VBABZXL7.mjs +3 -0
  73. package/dist/chunk-VBABZXL7.mjs.map +1 -0
  74. package/dist/{chunk-OSCMSA2Q.mjs → chunk-WYBSHTGY.mjs} +2 -2
  75. package/dist/{chunk-OSCMSA2Q.mjs.map → chunk-WYBSHTGY.mjs.map} +1 -1
  76. package/dist/chunk-ZQUMJQYV.mjs +3 -0
  77. package/dist/chunk-ZQUMJQYV.mjs.map +1 -0
  78. package/dist/chunk-ZY23NOT4.mjs +3 -0
  79. package/dist/chunk-ZY23NOT4.mjs.map +1 -0
  80. package/dist/components/Action.d.ts.map +1 -1
  81. package/dist/components/Badge.d.ts +1 -1
  82. package/dist/components/Button.d.ts.map +1 -1
  83. package/dist/components/Card.d.ts.map +1 -1
  84. package/dist/components/DatePicker.d.ts.map +1 -1
  85. package/dist/components/Dropdown.d.ts +0 -50
  86. package/dist/components/Dropdown.d.ts.map +1 -1
  87. package/dist/components/Icon/Icon.d.ts.map +1 -1
  88. package/dist/components/Modal.d.ts.map +1 -1
  89. package/dist/components/Popover.d.ts +2 -0
  90. package/dist/components/Popover.d.ts.map +1 -1
  91. package/dist/components/Progress.d.ts +3 -2
  92. package/dist/components/Progress.d.ts.map +1 -1
  93. package/dist/components/Section.d.ts +44 -0
  94. package/dist/components/Section.d.ts.map +1 -0
  95. package/dist/components/advanced/AnimatedGradient.d.ts.map +1 -1
  96. package/dist/components/advanced/Carousel.d.ts.map +1 -1
  97. package/dist/components/advanced/DotNav.d.ts +26 -0
  98. package/dist/components/advanced/DotNav.d.ts.map +1 -0
  99. package/dist/components/advanced/HorizontalScroll.d.ts +20 -0
  100. package/dist/components/advanced/HorizontalScroll.d.ts.map +1 -0
  101. package/dist/components/advanced/ImageReveal.d.ts +24 -0
  102. package/dist/components/advanced/ImageReveal.d.ts.map +1 -0
  103. package/dist/components/advanced/Parallax.d.ts +9 -6
  104. package/dist/components/advanced/Parallax.d.ts.map +1 -1
  105. package/dist/components/advanced/TextReveal.d.ts.map +1 -1
  106. package/dist/components/advanced/index.d.ts +6 -0
  107. package/dist/components/advanced/index.d.ts.map +1 -1
  108. package/dist/data.mjs +1 -1
  109. package/dist/data.mjs.map +1 -1
  110. package/dist/feedback.mjs +1 -1
  111. package/dist/form.mjs +3 -3
  112. package/dist/form.mjs.map +1 -1
  113. package/dist/{icons-Bj_nr8Ba.d.mts → icons-DcOBy9Hf.d.mts} +10 -1
  114. package/dist/iconsax-extended.mjs +2 -2
  115. package/dist/iconsax-extended.mjs.map +1 -1
  116. package/dist/index.d.mts +10 -109
  117. package/dist/index.d.ts +4 -0
  118. package/dist/index.d.ts.map +1 -1
  119. package/dist/index.mjs +14 -14
  120. package/dist/index.mjs.map +1 -1
  121. package/dist/interactive.mjs +1 -1
  122. package/dist/interactive.mjs.map +1 -1
  123. package/dist/landing/LandingAbout.d.ts +3 -0
  124. package/dist/landing/LandingAbout.d.ts.map +1 -0
  125. package/dist/landing/LandingCTA.d.ts +3 -0
  126. package/dist/landing/LandingCTA.d.ts.map +1 -0
  127. package/dist/landing/LandingContact.d.ts +3 -0
  128. package/dist/landing/LandingContact.d.ts.map +1 -0
  129. package/dist/landing/LandingExperience.d.ts +3 -0
  130. package/dist/landing/LandingExperience.d.ts.map +1 -0
  131. package/dist/landing/LandingFeatures.d.ts +3 -0
  132. package/dist/landing/LandingFeatures.d.ts.map +1 -0
  133. package/dist/landing/LandingHero.d.ts +3 -0
  134. package/dist/landing/LandingHero.d.ts.map +1 -0
  135. package/dist/landing/LandingLogoCloud.d.ts +3 -0
  136. package/dist/landing/LandingLogoCloud.d.ts.map +1 -0
  137. package/dist/landing/LandingMetrics.d.ts +3 -0
  138. package/dist/landing/LandingMetrics.d.ts.map +1 -0
  139. package/dist/landing/LandingProjects.d.ts +3 -0
  140. package/dist/landing/LandingProjects.d.ts.map +1 -0
  141. package/dist/landing/LandingProvider.d.ts +4 -0
  142. package/dist/landing/LandingProvider.d.ts.map +1 -0
  143. package/dist/landing/LandingShowcase.d.ts +3 -0
  144. package/dist/landing/LandingShowcase.d.ts.map +1 -0
  145. package/dist/landing/LandingSkills.d.ts +3 -0
  146. package/dist/landing/LandingSkills.d.ts.map +1 -0
  147. package/dist/landing/LandingStats.d.ts +3 -0
  148. package/dist/landing/LandingStats.d.ts.map +1 -0
  149. package/dist/landing/LandingTestimonials.d.ts +3 -0
  150. package/dist/landing/LandingTestimonials.d.ts.map +1 -0
  151. package/dist/landing/index.d.ts +47 -0
  152. package/dist/landing/index.d.ts.map +1 -0
  153. package/dist/landing/themes/app.d.ts +3 -0
  154. package/dist/landing/themes/app.d.ts.map +1 -0
  155. package/dist/landing/themes/corporate.d.ts +3 -0
  156. package/dist/landing/themes/corporate.d.ts.map +1 -0
  157. package/dist/landing/themes/dashboard.d.ts +3 -0
  158. package/dist/landing/themes/dashboard.d.ts.map +1 -0
  159. package/dist/landing/themes/immersive.d.ts +3 -0
  160. package/dist/landing/themes/immersive.d.ts.map +1 -0
  161. package/dist/landing/themes/index.d.ts +15 -0
  162. package/dist/landing/themes/index.d.ts.map +1 -0
  163. package/dist/landing/themes/marketing.d.ts +3 -0
  164. package/dist/landing/themes/marketing.d.ts.map +1 -0
  165. package/dist/landing/themes/portfolio.d.ts +3 -0
  166. package/dist/landing/themes/portfolio.d.ts.map +1 -0
  167. package/dist/landing/themes/product.d.ts +3 -0
  168. package/dist/landing/themes/product.d.ts.map +1 -0
  169. package/dist/landing/types.d.ts +346 -0
  170. package/dist/landing/types.d.ts.map +1 -0
  171. package/dist/landing.d.mts +417 -0
  172. package/dist/landing.mjs +31 -0
  173. package/dist/landing.mjs.map +1 -0
  174. package/dist/lib/icon-providers.d.ts +9 -25
  175. package/dist/lib/icon-providers.d.ts.map +1 -1
  176. package/dist/lib/icons.d.ts +10 -1
  177. package/dist/lib/icons.d.ts.map +1 -1
  178. package/dist/lib/utils.d.ts.map +1 -1
  179. package/dist/navigation.d.mts +1 -1
  180. package/dist/navigation.mjs +1 -1
  181. package/dist/navigation.mjs.map +1 -1
  182. package/dist/overlay.d.mts +2 -50
  183. package/dist/overlay.mjs +1 -1
  184. package/dist/overlay.mjs.map +1 -1
  185. package/dist/sdui.mjs +1 -1
  186. package/dist/sdui.mjs.map +1 -1
  187. package/dist/theme.d.mts +85 -0
  188. package/dist/theme.d.ts +14 -0
  189. package/dist/theme.d.ts.map +1 -0
  190. package/dist/theme.mjs +3 -0
  191. package/dist/theme.mjs.map +1 -0
  192. package/package.json +30 -20
  193. package/src/styles/landing.css +107 -0
  194. package/src/styles/utilities.css +58 -0
  195. package/dist/advanced-dashboard.js +0 -39
  196. package/dist/advanced-dashboard.js.map +0 -1
  197. package/dist/advanced-emotion.js +0 -2
  198. package/dist/advanced-emotion.js.map +0 -1
  199. package/dist/advanced-motion.js +0 -82
  200. package/dist/advanced-motion.js.map +0 -1
  201. package/dist/advanced.js +0 -112
  202. package/dist/advanced.js.map +0 -1
  203. package/dist/chunk-BXX2TZUB.mjs +0 -3
  204. package/dist/chunk-BXX2TZUB.mjs.map +0 -1
  205. package/dist/chunk-COR6CDMA.mjs +0 -83
  206. package/dist/chunk-COR6CDMA.mjs.map +0 -1
  207. package/dist/chunk-FFH4ZFKS.mjs +0 -3
  208. package/dist/chunk-FFH4ZFKS.mjs.map +0 -1
  209. package/dist/chunk-HN5LSP6L.mjs +0 -3
  210. package/dist/chunk-HN5LSP6L.mjs.map +0 -1
  211. package/dist/chunk-LPAG7DCA.mjs +0 -3
  212. package/dist/chunk-LPAG7DCA.mjs.map +0 -1
  213. package/dist/chunk-QQCELXFD.mjs +0 -3
  214. package/dist/chunk-QQCELXFD.mjs.map +0 -1
  215. package/dist/chunk-RPUS7G7Q.mjs +0 -3
  216. package/dist/chunk-RPUS7G7Q.mjs.map +0 -1
  217. package/dist/chunk-SDFHJ4GB.mjs +0 -3
  218. package/dist/chunk-SDFHJ4GB.mjs.map +0 -1
  219. package/dist/chunk-UUHAXGMO.mjs +0 -3
  220. package/dist/chunk-UUHAXGMO.mjs.map +0 -1
  221. package/dist/data.js +0 -3
  222. package/dist/data.js.map +0 -1
  223. package/dist/feedback.js +0 -12
  224. package/dist/feedback.js.map +0 -1
  225. package/dist/form.js +0 -8
  226. package/dist/form.js.map +0 -1
  227. package/dist/iconsax-extended.js +0 -3
  228. package/dist/iconsax-extended.js.map +0 -1
  229. package/dist/iconsax.js +0 -3
  230. package/dist/iconsax.js.map +0 -1
  231. package/dist/index.js +0 -51
  232. package/dist/index.js.map +0 -1
  233. package/dist/interactive.js +0 -2
  234. package/dist/interactive.js.map +0 -1
  235. package/dist/lib/phosphor-icons.d.ts +0 -6
  236. package/dist/lib/phosphor-icons.d.ts.map +0 -1
  237. package/dist/navigation.js +0 -12
  238. package/dist/navigation.js.map +0 -1
  239. package/dist/overlay.js +0 -3
  240. package/dist/overlay.js.map +0 -1
  241. package/dist/sdui.js +0 -9
  242. package/dist/sdui.js.map +0 -1
@@ -0,0 +1,417 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+ import { S as SectionProps } from './Section-BWzyshgX.mjs';
4
+ import 'class-variance-authority/types';
5
+ import 'class-variance-authority';
6
+
7
+ type LandingThemeName = 'corporate' | 'marketing' | 'product' | 'dashboard' | 'app' | 'immersive' | 'portfolio';
8
+ interface LandingMotionOverride {
9
+ type?: 'fadeIn' | 'slideUp' | 'slideLeft' | 'slideRight' | 'scaleIn' | 'bounceIn';
10
+ duration?: number;
11
+ easing?: string;
12
+ delay?: number;
13
+ }
14
+ interface LandingColorTokens {
15
+ /** HSL triple — 페이지 배경 (e.g. "0 0% 100%") */
16
+ background: string;
17
+ /** HSL triple — 기본 텍스트 */
18
+ foreground: string;
19
+ /** HSL triple — 뮤트 배경 */
20
+ muted: string;
21
+ /** HSL triple — 보조 텍스트 */
22
+ mutedForeground: string;
23
+ /** HSL triple — 브랜드/강조색 */
24
+ primary: string;
25
+ /** HSL triple — 강조색 위 텍스트 */
26
+ primaryForeground: string;
27
+ /** HSL triple — 보조 색상 */
28
+ secondary: string;
29
+ /** HSL triple — 보조 색상 위 텍스트 */
30
+ secondaryForeground: string;
31
+ /** HSL triple — 카드 배경 */
32
+ card: string;
33
+ /** HSL triple — 카드 텍스트 */
34
+ cardForeground: string;
35
+ /** HSL triple — 테두리 */
36
+ border: string;
37
+ /** HSL triple — 교차 섹션 배경 */
38
+ sectionAlt: string;
39
+ }
40
+ interface LandingTheme {
41
+ name: LandingThemeName;
42
+ /** 테마 색상 팔레트 */
43
+ colors: LandingColorTokens;
44
+ hero: {
45
+ /** 배경 스타일 */
46
+ background: 'gradient' | 'animated-gradient' | 'dark';
47
+ /** 히어로 사이즈 */
48
+ size: 'xl' | 'full';
49
+ /** 입장 모션 */
50
+ motion: Required<LandingMotionOverride>;
51
+ };
52
+ features: {
53
+ /** 카드 타입 */
54
+ card: 'spotlight' | 'glow' | 'feature-glass';
55
+ /** stagger 딜레이 (ms) */
56
+ staggerDelay: number;
57
+ /** 모션 타입 */
58
+ motion: Required<LandingMotionOverride>;
59
+ /** 섹션 데코레이터 */
60
+ decorator: boolean;
61
+ };
62
+ stats: {
63
+ /** 숫자 사이즈 Tailwind class */
64
+ numberSize: string;
65
+ /** count-up 활성화 */
66
+ countUp: boolean;
67
+ /** stagger 딜레이 (ms) */
68
+ staggerDelay: number;
69
+ /** 모션 타입 */
70
+ motion: Required<LandingMotionOverride>;
71
+ };
72
+ cta: {
73
+ /** 배경 스타일 */
74
+ background: 'gradient-soft' | 'animated-gradient' | 'dark';
75
+ /** 입장 모션 */
76
+ motion: Required<LandingMotionOverride>;
77
+ };
78
+ testimonials: {
79
+ /** 기본 표시 방식 */
80
+ variant: 'carousel' | 'grid' | 'marquee';
81
+ /** stagger 딜레이 (ms) */
82
+ staggerDelay: number;
83
+ /** 모션 타입 */
84
+ motion: Required<LandingMotionOverride>;
85
+ };
86
+ logoCloud: {
87
+ /** 기본 표시 방식 */
88
+ variant: 'marquee' | 'grid';
89
+ /** Marquee 속도 (px/s) */
90
+ speed: number;
91
+ };
92
+ showcase: {
93
+ /** stagger 딜레이 (ms) */
94
+ staggerDelay: number;
95
+ /** 모션 타입 */
96
+ motion: Required<LandingMotionOverride>;
97
+ };
98
+ }
99
+ interface LandingProviderProps {
100
+ theme: LandingThemeName | LandingTheme;
101
+ children: ReactNode;
102
+ }
103
+ interface LandingHeroProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
104
+ title: ReactNode;
105
+ subtitle?: ReactNode;
106
+ description?: ReactNode;
107
+ primaryAction?: ReactNode;
108
+ secondaryAction?: ReactNode;
109
+ /** 히어로 사이즈 오버라이드 */
110
+ size?: 'xl' | 'full';
111
+ /** 배경 오버라이드 */
112
+ background?: 'gradient' | 'animated-gradient' | 'dark';
113
+ /** AnimatedGradient 색상 */
114
+ gradientColors?: string[];
115
+ /** 스크롤 표시기 */
116
+ scrollIndicator?: boolean;
117
+ /** 모션 오버라이드 */
118
+ motion?: LandingMotionOverride;
119
+ }
120
+ interface LandingFeatureItem {
121
+ icon?: string;
122
+ title: string;
123
+ description: string;
124
+ }
125
+ interface LandingFeaturesProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
126
+ items: LandingFeatureItem[];
127
+ /** 섹션 제목 */
128
+ title?: string;
129
+ /** 섹션 부제목 */
130
+ subtitle?: string;
131
+ /** 그리드 열 수 @default items.length에 따라 자동 */
132
+ columns?: 2 | 3 | 4;
133
+ /** 카드 타입 오버라이드 */
134
+ card?: 'spotlight' | 'glow' | 'feature-glass';
135
+ /** 섹션 props 오버라이드 */
136
+ sectionProps?: Partial<SectionProps>;
137
+ /** 모션 오버라이드 */
138
+ motion?: LandingMotionOverride;
139
+ /** stagger 딜레이 오버라이드 */
140
+ staggerDelay?: number;
141
+ /** 데코레이터 오버라이드 */
142
+ decorator?: boolean;
143
+ }
144
+ interface LandingStatItem {
145
+ value: string;
146
+ label: string;
147
+ /** 접두사 (예: "$") */
148
+ prefix?: string;
149
+ /** 접미사 (예: "+", "M") */
150
+ suffix?: string;
151
+ }
152
+ interface LandingStatsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
153
+ items: LandingStatItem[];
154
+ /** 섹션 제목 */
155
+ title?: string;
156
+ /** 섹션 부제목 */
157
+ subtitle?: string;
158
+ /** count-up 오버라이드 */
159
+ countUp?: boolean;
160
+ /** 숫자 사이즈 오버라이드 */
161
+ numberSize?: string;
162
+ /** 섹션 props 오버라이드 */
163
+ sectionProps?: Partial<SectionProps>;
164
+ /** 모션 오버라이드 */
165
+ motion?: LandingMotionOverride;
166
+ /** stagger 딜레이 오버라이드 */
167
+ staggerDelay?: number;
168
+ }
169
+ interface LandingCTAProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
170
+ title: ReactNode;
171
+ subtitle?: ReactNode;
172
+ primaryAction?: ReactNode;
173
+ secondaryAction?: ReactNode;
174
+ /** 배경 오버라이드 */
175
+ background?: 'gradient-soft' | 'animated-gradient' | 'dark';
176
+ /** AnimatedGradient 색상 */
177
+ gradientColors?: string[];
178
+ /** 모션 오버라이드 */
179
+ motion?: LandingMotionOverride;
180
+ }
181
+ interface LandingTestimonialItem {
182
+ quote: string;
183
+ author: string;
184
+ role?: string;
185
+ company?: string;
186
+ avatar?: string;
187
+ }
188
+ interface LandingTestimonialsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
189
+ items: LandingTestimonialItem[];
190
+ /** 섹션 제목 */
191
+ title?: string;
192
+ /** 섹션 부제목 */
193
+ subtitle?: string;
194
+ /** 표시 방식 @default 'carousel' */
195
+ variant?: 'carousel' | 'grid' | 'marquee';
196
+ /** 그리드 열 수 @default 자동 */
197
+ columns?: 2 | 3;
198
+ /** Carousel 자동 재생 @default true */
199
+ autoPlay?: boolean;
200
+ /** Carousel 재생 간격 (ms) @default 5000 */
201
+ interval?: number;
202
+ /** 모션 오버라이드 */
203
+ motion?: LandingMotionOverride;
204
+ /** stagger 딜레이 오버라이드 */
205
+ staggerDelay?: number;
206
+ }
207
+ interface LandingLogoItem {
208
+ src: string;
209
+ alt: string;
210
+ href?: string;
211
+ }
212
+ interface LandingLogoCloudProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
213
+ logos: LandingLogoItem[];
214
+ /** 섹션 제목 */
215
+ title?: string;
216
+ /** 표시 방식 @default 'marquee' */
217
+ variant?: 'marquee' | 'grid';
218
+ /** Marquee 속도 (px/s) @default 50 */
219
+ speed?: number;
220
+ /** 로고 최대 높이 (px) @default 40 */
221
+ logoHeight?: number;
222
+ /** 모션 오버라이드 */
223
+ motion?: LandingMotionOverride;
224
+ }
225
+ interface LandingShowcaseItem {
226
+ image: string;
227
+ title: string;
228
+ description: string;
229
+ }
230
+ interface LandingShowcaseProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
231
+ items: LandingShowcaseItem[];
232
+ /** 섹션 제목 */
233
+ title?: string;
234
+ /** 섹션 부제목 */
235
+ subtitle?: string;
236
+ /** 모션 오버라이드 */
237
+ motion?: LandingMotionOverride;
238
+ /** stagger 딜레이 오버라이드 */
239
+ staggerDelay?: number;
240
+ }
241
+ interface LandingSocialLink {
242
+ icon: string;
243
+ href: string;
244
+ label: string;
245
+ }
246
+ interface LandingAboutProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
247
+ name: string;
248
+ role: string;
249
+ bio: string | ReactNode;
250
+ avatar?: string;
251
+ socialLinks?: LandingSocialLink[];
252
+ /** 모션 오버라이드 */
253
+ motion?: LandingMotionOverride;
254
+ }
255
+ interface LandingProjectItem {
256
+ title: string;
257
+ description: string;
258
+ image?: string;
259
+ tags?: string[];
260
+ href?: string;
261
+ github?: string;
262
+ }
263
+ interface LandingProjectsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
264
+ items: LandingProjectItem[];
265
+ /** 섹션 제목 */
266
+ title?: string;
267
+ /** 섹션 부제목 */
268
+ subtitle?: string;
269
+ /** 그리드 열 수 @default 3 */
270
+ columns?: 2 | 3;
271
+ /** 태그 필터 활성화 @default false */
272
+ filter?: boolean;
273
+ /** 모션 오버라이드 */
274
+ motion?: LandingMotionOverride;
275
+ /** stagger 딜레이 오버라이드 */
276
+ staggerDelay?: number;
277
+ }
278
+ interface LandingSkillItem {
279
+ name: string;
280
+ level?: number;
281
+ icon?: string;
282
+ category?: string;
283
+ }
284
+ interface LandingSkillsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
285
+ items: LandingSkillItem[];
286
+ /** 섹션 제목 */
287
+ title?: string;
288
+ /** 섹션 부제목 */
289
+ subtitle?: string;
290
+ /** 표시 방식 @default 'grid' */
291
+ variant?: 'bars' | 'grid' | 'marquee';
292
+ /** 모션 오버라이드 */
293
+ motion?: LandingMotionOverride;
294
+ /** stagger 딜레이 오버라이드 */
295
+ staggerDelay?: number;
296
+ }
297
+ interface LandingExperienceItem {
298
+ title: string;
299
+ company: string;
300
+ period: string;
301
+ description?: string;
302
+ current?: boolean;
303
+ }
304
+ interface LandingExperienceProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
305
+ items: LandingExperienceItem[];
306
+ /** 섹션 제목 */
307
+ title?: string;
308
+ /** 섹션 부제목 */
309
+ subtitle?: string;
310
+ /** 모션 오버라이드 */
311
+ motion?: LandingMotionOverride;
312
+ /** stagger 딜레이 오버라이드 */
313
+ staggerDelay?: number;
314
+ }
315
+ interface LandingMetricItem {
316
+ label: string;
317
+ value: number;
318
+ description?: string;
319
+ }
320
+ interface LandingMetricsTab {
321
+ label: string;
322
+ items: LandingMetricItem[];
323
+ }
324
+ interface LandingMetricsProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
325
+ items: LandingMetricItem[];
326
+ /** 섹션 제목 */
327
+ title?: string;
328
+ /** 섹션 부제목 */
329
+ subtitle?: string;
330
+ /** 탭 그룹 (옵션) */
331
+ tabs?: LandingMetricsTab[];
332
+ /** 모션 오버라이드 */
333
+ motion?: LandingMotionOverride;
334
+ }
335
+ interface LandingContactProps extends Omit<React.HTMLAttributes<HTMLElement>, 'title'> {
336
+ /** 섹션 제목 */
337
+ title?: string;
338
+ /** 섹션 부제목 */
339
+ subtitle?: string;
340
+ /** 이메일 주소 */
341
+ email?: string;
342
+ /** 소셜 링크 목록 */
343
+ socialLinks?: LandingSocialLink[];
344
+ /** 모션 오버라이드 */
345
+ motion?: LandingMotionOverride;
346
+ }
347
+ type DeepPartial<T> = {
348
+ [K in keyof T]?: T[K] extends object ? DeepPartial<T[K]> : T[K];
349
+ };
350
+
351
+ declare function useLandingTheme(): LandingTheme;
352
+ declare function LandingProvider({ theme, children }: LandingProviderProps): react_jsx_runtime.JSX.Element;
353
+
354
+ declare function LandingHero({ title, subtitle, description, primaryAction, secondaryAction, size: sizeProp, background: bgProp, gradientColors, scrollIndicator, motion: motionOverride, className, ...rest }: LandingHeroProps): react_jsx_runtime.JSX.Element;
355
+
356
+ declare function LandingFeatures({ items, title, subtitle, columns: columnsProp, card: cardProp, sectionProps, motion: motionOverride, staggerDelay: staggerDelayProp, decorator: decoratorProp, className, ...rest }: LandingFeaturesProps): react_jsx_runtime.JSX.Element;
357
+
358
+ declare function LandingStats({ items, title, subtitle, countUp: countUpProp, numberSize: numberSizeProp, sectionProps, motion: motionOverride, staggerDelay: staggerDelayProp, className, ...rest }: LandingStatsProps): react_jsx_runtime.JSX.Element;
359
+
360
+ declare function LandingCTA({ title, subtitle, primaryAction, secondaryAction, background: bgProp, gradientColors, motion: motionOverride, className, ...rest }: LandingCTAProps): react_jsx_runtime.JSX.Element;
361
+
362
+ declare function LandingTestimonials({ items, title, subtitle, variant: variantProp, columns: colsProp, autoPlay, interval, motion: motionOverride, staggerDelay: staggerProp, className, ...rest }: LandingTestimonialsProps): react_jsx_runtime.JSX.Element;
363
+
364
+ declare function LandingLogoCloud({ logos, title, variant: variantProp, speed: speedProp, logoHeight, motion: motionOverride, className, ...rest }: LandingLogoCloudProps): react_jsx_runtime.JSX.Element;
365
+
366
+ declare function LandingShowcase({ items, title, subtitle, motion: motionOverride, staggerDelay: staggerProp, className, ...rest }: LandingShowcaseProps): react_jsx_runtime.JSX.Element;
367
+
368
+ declare function LandingAbout({ name, role, bio, avatar, socialLinks, motion: motionOverride, className, ...rest }: LandingAboutProps): react_jsx_runtime.JSX.Element;
369
+
370
+ declare function LandingProjects({ items, title, subtitle, columns, filter, motion: motionOverride, staggerDelay: staggerProp, className, ...rest }: LandingProjectsProps): react_jsx_runtime.JSX.Element;
371
+
372
+ declare function LandingSkills({ items, title, subtitle, variant, motion: motionOverride, staggerDelay: staggerProp, className, ...rest }: LandingSkillsProps): react_jsx_runtime.JSX.Element;
373
+
374
+ declare function LandingExperience({ items, title, subtitle, motion: motionOverride, staggerDelay: staggerProp, className, ...rest }: LandingExperienceProps): react_jsx_runtime.JSX.Element;
375
+
376
+ declare function LandingMetrics({ items, title, subtitle, tabs, motion: motionOverride, className, ...rest }: LandingMetricsProps): react_jsx_runtime.JSX.Element;
377
+
378
+ declare function LandingContact({ title, subtitle, email, socialLinks, motion: motionOverride, className, ...rest }: LandingContactProps): react_jsx_runtime.JSX.Element;
379
+
380
+ declare const corporate: LandingTheme;
381
+
382
+ declare const marketing: LandingTheme;
383
+
384
+ declare const product: LandingTheme;
385
+
386
+ declare const dashboard: LandingTheme;
387
+
388
+ declare const app: LandingTheme;
389
+
390
+ declare const immersive: LandingTheme;
391
+
392
+ declare const portfolio: LandingTheme;
393
+
394
+ declare function resolveTheme(theme: LandingThemeName | LandingTheme): LandingTheme;
395
+ /** 기존 테마를 기반으로 커스텀 테마 생성 */
396
+ declare function createLandingTheme(base: LandingThemeName, overrides: DeepPartial<Omit<LandingTheme, 'name'>> & {
397
+ name: string;
398
+ }): LandingTheme;
399
+
400
+ declare const Landing: {
401
+ readonly Provider: typeof LandingProvider;
402
+ readonly Hero: typeof LandingHero;
403
+ readonly Features: typeof LandingFeatures;
404
+ readonly Stats: typeof LandingStats;
405
+ readonly CTA: typeof LandingCTA;
406
+ readonly Testimonials: typeof LandingTestimonials;
407
+ readonly LogoCloud: typeof LandingLogoCloud;
408
+ readonly Showcase: typeof LandingShowcase;
409
+ readonly About: typeof LandingAbout;
410
+ readonly Projects: typeof LandingProjects;
411
+ readonly Skills: typeof LandingSkills;
412
+ readonly Experience: typeof LandingExperience;
413
+ readonly Metrics: typeof LandingMetrics;
414
+ readonly Contact: typeof LandingContact;
415
+ };
416
+
417
+ export { type DeepPartial, Landing, LandingAbout, type LandingAboutProps, LandingCTA, type LandingCTAProps, type LandingColorTokens, LandingContact, type LandingContactProps, LandingExperience, type LandingExperienceItem, type LandingExperienceProps, type LandingFeatureItem, LandingFeatures, type LandingFeaturesProps, LandingHero, type LandingHeroProps, LandingLogoCloud, type LandingLogoCloudProps, type LandingLogoItem, type LandingMetricItem, LandingMetrics, type LandingMetricsProps, type LandingMetricsTab, type LandingMotionOverride, type LandingProjectItem, LandingProjects, type LandingProjectsProps, LandingProvider, type LandingProviderProps, LandingShowcase, type LandingShowcaseItem, type LandingShowcaseProps, type LandingSkillItem, LandingSkills, type LandingSkillsProps, type LandingSocialLink, type LandingStatItem, LandingStats, type LandingStatsProps, type LandingTestimonialItem, LandingTestimonials, type LandingTestimonialsProps, type LandingTheme, type LandingThemeName, app, corporate, createLandingTheme, dashboard, immersive, marketing, portfolio, product, resolveTheme, useLandingTheme };
@@ -0,0 +1,31 @@
1
+ "use client";
2
+ import {b}from'./chunk-VBABZXL7.mjs';import {a as a$1}from'./chunk-SDFVGFXT.mjs';import {a as a$5}from'./chunk-FHMFDCX2.mjs';import {a as a$4}from'./chunk-K2FOFIST.mjs';import {d,a as a$3,e,c,b as b$1}from'./chunk-Q76JW7X5.mjs';import {a as a$6}from'./chunk-CW66UBQG.mjs';import'./chunk-SD6XGDAC.mjs';import {l}from'./chunk-ZQUMJQYV.mjs';import {a as a$2}from'./chunk-QEMPERUK.mjs';import {a}from'./chunk-EAZEI74V.mjs';import {createContext,useContext,useMemo,useState,useEffect,useRef,useCallback}from'react';import {jsx,jsxs}from'react/jsx-runtime';var oe={name:"corporate",colors:{background:"0 0% 100%",foreground:"222 47% 11%",muted:"210 40% 96%",mutedForeground:"215 16% 47%",primary:"217 91% 53%",primaryForeground:"0 0% 100%",secondary:"215 16% 93%",secondaryForeground:"222 47% 11%",card:"0 0% 100%",cardForeground:"222 47% 11%",border:"214 32% 91%",sectionAlt:"210 40% 98%"},hero:{background:"gradient",size:"xl",motion:{type:"fadeIn",duration:900,easing:"ease-out",delay:0}},features:{card:"spotlight",staggerDelay:150,motion:{type:"fadeIn",duration:900,easing:"ease-out",delay:0},decorator:true},stats:{numberSize:"text-4xl",countUp:false,staggerDelay:150,motion:{type:"fadeIn",duration:900,easing:"ease-out",delay:0}},cta:{background:"gradient-soft",motion:{type:"fadeIn",duration:900,easing:"ease-out",delay:0}},testimonials:{variant:"grid",staggerDelay:150,motion:{type:"fadeIn",duration:900,easing:"ease-out",delay:0}},logoCloud:{variant:"grid",speed:40},showcase:{staggerDelay:150,motion:{type:"fadeIn",duration:900,easing:"ease-out",delay:0}}};var ie={name:"marketing",colors:{background:"260 100% 4%",foreground:"0 0% 100%",muted:"270 30% 10%",mutedForeground:"240 4% 65%",primary:"258 90% 66%",primaryForeground:"0 0% 100%",secondary:"258 30% 15%",secondaryForeground:"0 0% 95%",card:"260 40% 10%",cardForeground:"0 0% 100%",border:"258 40% 20%",sectionAlt:"270 50% 6%"},hero:{background:"animated-gradient",size:"full",motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0}},features:{card:"glow",staggerDelay:80,motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0},decorator:false},stats:{numberSize:"text-5xl",countUp:true,staggerDelay:80,motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0}},cta:{background:"animated-gradient",motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0}},testimonials:{variant:"carousel",staggerDelay:80,motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0}},logoCloud:{variant:"marquee",speed:60},showcase:{staggerDelay:80,motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0}}};var se={name:"product",colors:{background:"240 6% 4%",foreground:"0 0% 98%",muted:"240 5% 11%",mutedForeground:"240 4% 64%",primary:"188 96% 42%",primaryForeground:"0 0% 100%",secondary:"188 20% 12%",secondaryForeground:"0 0% 98%",card:"240 5% 10%",cardForeground:"0 0% 98%",border:"240 4% 16%",sectionAlt:"240 6% 7%"},hero:{background:"dark",size:"full",motion:{type:"slideUp",duration:700,easing:"ease-in-out",delay:0}},features:{card:"feature-glass",staggerDelay:120,motion:{type:"slideUp",duration:700,easing:"ease-in-out",delay:0},decorator:false},stats:{numberSize:"text-6xl",countUp:true,staggerDelay:120,motion:{type:"slideUp",duration:700,easing:"ease-in-out",delay:0}},cta:{background:"dark",motion:{type:"slideUp",duration:700,easing:"ease-in-out",delay:0}},testimonials:{variant:"carousel",staggerDelay:120,motion:{type:"slideUp",duration:700,easing:"ease-in-out",delay:0}},logoCloud:{variant:"marquee",speed:40},showcase:{staggerDelay:120,motion:{type:"slideUp",duration:700,easing:"ease-in-out",delay:0}}};var de={name:"dashboard",colors:{background:"222 47% 11%",foreground:"214 32% 91%",muted:"222 42% 16%",mutedForeground:"215 20% 65%",primary:"217 91% 60%",primaryForeground:"0 0% 100%",secondary:"217 30% 18%",secondaryForeground:"214 32% 91%",card:"222 47% 14%",cardForeground:"214 32% 91%",border:"217 30% 22%",sectionAlt:"222 42% 14%"},hero:{background:"gradient",size:"xl",motion:{type:"fadeIn",duration:650,easing:"ease-out",delay:0}},features:{card:"feature-glass",staggerDelay:100,motion:{type:"scaleIn",duration:650,easing:"ease-out",delay:0},decorator:false},stats:{numberSize:"text-4xl",countUp:true,staggerDelay:100,motion:{type:"fadeIn",duration:650,easing:"ease-out",delay:0}},cta:{background:"gradient-soft",motion:{type:"fadeIn",duration:650,easing:"ease-out",delay:0}},testimonials:{variant:"grid",staggerDelay:100,motion:{type:"scaleIn",duration:650,easing:"ease-out",delay:0}},logoCloud:{variant:"marquee",speed:45},showcase:{staggerDelay:100,motion:{type:"scaleIn",duration:650,easing:"ease-out",delay:0}}};var le={name:"app",colors:{background:"0 0% 100%",foreground:"215 28% 17%",muted:"270 100% 96%",mutedForeground:"220 9% 46%",primary:"258 90% 66%",primaryForeground:"0 0% 100%",secondary:"258 20% 93%",secondaryForeground:"215 28% 17%",card:"0 0% 100%",cardForeground:"215 28% 17%",border:"220 13% 91%",sectionAlt:"270 100% 98%"},hero:{background:"gradient",size:"full",motion:{type:"slideUp",duration:600,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},features:{card:"feature-glass",staggerDelay:120,motion:{type:"slideUp",duration:600,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0},decorator:false},stats:{numberSize:"text-5xl",countUp:true,staggerDelay:120,motion:{type:"slideUp",duration:600,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},cta:{background:"gradient-soft",motion:{type:"bounceIn",duration:500,easing:"cubic-bezier(0.34, 1.56, 0.64, 1)",delay:0}},testimonials:{variant:"carousel",staggerDelay:120,motion:{type:"slideUp",duration:600,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},logoCloud:{variant:"marquee",speed:50},showcase:{staggerDelay:120,motion:{type:"slideUp",duration:600,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}}};var ce={name:"immersive",colors:{background:"0 0% 0%",foreground:"0 0% 100%",muted:"0 0% 7%",mutedForeground:"0 0% 45%",primary:"252 92% 76%",primaryForeground:"0 0% 100%",secondary:"252 15% 12%",secondaryForeground:"0 0% 95%",card:"0 0% 5%",cardForeground:"0 0% 100%",border:"0 0% 10%",sectionAlt:"0 0% 4%"},hero:{background:"dark",size:"full",motion:{type:"fadeIn",duration:1200,easing:"cubic-bezier(0.16, 1, 0.3, 1)",delay:0}},features:{card:"glow",staggerDelay:200,motion:{type:"slideUp",duration:900,easing:"cubic-bezier(0.16, 1, 0.3, 1)",delay:0},decorator:false},stats:{numberSize:"text-6xl",countUp:true,staggerDelay:200,motion:{type:"fadeIn",duration:1200,easing:"cubic-bezier(0.16, 1, 0.3, 1)",delay:0}},cta:{background:"dark",motion:{type:"fadeIn",duration:1200,easing:"cubic-bezier(0.16, 1, 0.3, 1)",delay:0}},testimonials:{variant:"marquee",staggerDelay:200,motion:{type:"fadeIn",duration:1200,easing:"cubic-bezier(0.16, 1, 0.3, 1)",delay:0}},logoCloud:{variant:"marquee",speed:30},showcase:{staggerDelay:200,motion:{type:"slideUp",duration:900,easing:"cubic-bezier(0.16, 1, 0.3, 1)",delay:0}}};var me={name:"portfolio",colors:{background:"0 0% 4%",foreground:"0 0% 98%",muted:"0 0% 10%",mutedForeground:"0 0% 64%",primary:"25 95% 53%",primaryForeground:"0 0% 100%",secondary:"25 20% 12%",secondaryForeground:"0 0% 98%",card:"0 0% 8%",cardForeground:"0 0% 98%",border:"25 30% 15%",sectionAlt:"0 0% 6%"},hero:{background:"dark",size:"full",motion:{type:"slideUp",duration:800,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},features:{card:"feature-glass",staggerDelay:100,motion:{type:"slideUp",duration:700,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0},decorator:false},stats:{numberSize:"text-5xl",countUp:true,staggerDelay:100,motion:{type:"slideUp",duration:700,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},cta:{background:"dark",motion:{type:"slideUp",duration:700,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},testimonials:{variant:"grid",staggerDelay:100,motion:{type:"slideUp",duration:700,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}},logoCloud:{variant:"grid",speed:40},showcase:{staggerDelay:100,motion:{type:"slideUp",duration:700,easing:"cubic-bezier(0.22, 1, 0.36, 1)",delay:0}}};var Ee={corporate:oe,marketing:ie,product:se,dashboard:de,app:le,immersive:ce,portfolio:me};function ue(e){return typeof e=="string"?Ee[e]:e}function Be(e,t){let n=Ee[e];return {...n,name:t.name,colors:{...n.colors,...t.colors},hero:{...n.hero,...t.hero},features:{...n.features,...t.features},stats:{...n.stats,...t.stats},cta:{...n.cta,...t.cta},testimonials:{...n.testimonials,...t.testimonials},logoCloud:{...n.logoCloud,...t.logoCloud},showcase:{...n.showcase,...t.showcase}}}var je=createContext(null);function h(){let e=useContext(je);if(!e)throw new Error("useLandingTheme must be used within <Landing.Provider>");return e}function Ke(e){return {"--color-primary":`hsl(${e.primary})`,"--color-primary-foreground":`hsl(${e.primaryForeground})`,"--color-background":`hsl(${e.background})`,"--color-foreground":`hsl(${e.foreground})`,"--color-muted":`hsl(${e.muted})`,"--color-muted-foreground":`hsl(${e.mutedForeground})`,"--color-secondary":`hsl(${e.secondary})`,"--color-secondary-foreground":`hsl(${e.secondaryForeground})`,"--color-card":`hsl(${e.card})`,"--color-card-foreground":`hsl(${e.cardForeground})`,"--color-border":`hsl(${e.border})`,"--color-input":`hsl(${e.border})`,"--color-ring":`hsl(${e.primary})`,"--primary":e.primary,"--primary-foreground":e.primaryForeground,"--background":e.background,"--foreground":e.foreground,"--muted":e.muted,"--muted-foreground":e.mutedForeground,"--secondary":e.secondary,"--secondary-foreground":e.secondaryForeground,"--card":e.card,"--card-foreground":e.cardForeground,"--border":e.border,"--input":e.border,"--ring":e.primary,"--landing-section-alt":`hsl(${e.sectionAlt})`}}function ge({theme:e,children:t}){let n=useMemo(()=>ue(e),[e]),s=useMemo(()=>({backgroundColor:`hsl(${n.colors.background})`,color:`hsl(${n.colors.foreground})`,...Ke(n.colors)}),[n.colors]);return jsx(je.Provider,{value:n,children:jsx("div",{style:s,children:t})})}function Ze(e,t){return t?{...e,...t}:e}function et(e){switch(e){case "slideUp":return "translateY(32px)";case "slideLeft":return "translateX(-32px)";case "slideRight":return "translateX(32px)";case "scaleIn":return "scale(0.95)";case "bounceIn":return "scale(0.75)";default:return "none"}}function fe({title:e,subtitle:t,description:n,primaryAction:s,secondaryAction:d$1,size:m,background:g,gradientColors:u,scrollIndicator:o=false,motion:c,className:i,...r}){let a=h(),l=m!=null?m:a.hero.size,p=g!=null?g:a.hero.background,y=Ze(a.hero.motion,c),f=useMemo(()=>({opacity:0,transform:et(y.type),animation:`landing-hero-enter ${y.duration}ms ${y.easing} ${y.delay}ms forwards`}),[y]);return jsxs("section",{className:a$2("relative overflow-hidden flex items-center justify-center",l==="full"?"min-h-screen":"py-28 sm:py-36",p==="dark"&&"bg-gray-950 text-white",i),...r,children:[p==="gradient"&&jsx("div",{className:"absolute inset-0 gradient-bg-soft","aria-hidden":"true"}),p==="animated-gradient"&&jsx(d,{colors:u,type:"mesh",className:"absolute inset-0 -z-0","aria-hidden":"true"}),p==="dark"&&jsx("div",{className:"absolute inset-0",style:{background:"radial-gradient(ellipse 80% 60% at 50% 40%, rgba(120, 119, 198, 0.08), transparent)"},"aria-hidden":"true"}),jsx(a$1,{size:"lg",padding:"none",centered:true,className:"relative z-10 px-6",children:jsxs("div",{style:f,className:"text-center max-w-4xl mx-auto",children:[jsx("h1",{className:"text-4xl sm:text-5xl md:text-6xl lg:text-7xl font-extrabold tracking-tight mb-6",children:e}),t&&jsx("p",{className:"text-xl sm:text-2xl text-muted-foreground mb-4",children:t}),n&&jsx("p",{className:"text-base sm:text-lg text-muted-foreground/80 max-w-2xl mx-auto mb-8",children:n}),(s||d$1)&&jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[s,d$1]})]})}),o&&jsx("div",{className:"absolute bottom-8 left-1/2 -translate-x-1/2 animate-bounce","aria-hidden":"true",children:jsx("svg",{width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-muted-foreground",children:jsx("path",{d:"M12 5v14M5 12l7 7 7-7"})})}),jsx("style",{dangerouslySetInnerHTML:{__html:`
3
+ @keyframes landing-hero-enter {
4
+ to { opacity: 1; transform: none; }
5
+ }
6
+ `}})]})}var X;try{X=a("@hua-labs/motion-core").useStagger;}catch{}var tt={2:"grid-cols-1 md:grid-cols-2",3:"grid-cols-1 md:grid-cols-2 lg:grid-cols-3",4:"grid-cols-1 md:grid-cols-2 lg:grid-cols-4"};function nt(e,t,n){switch(t){case "glow":return jsxs(b$1,{style:n,className:"p-6",children:[e.icon&&jsx("div",{className:"text-4xl mb-4",children:e.icon}),jsx("h3",{className:"text-xl font-bold mb-2",children:e.title}),jsx("p",{className:"text-muted-foreground text-sm",children:e.description})]});case "spotlight":return jsxs(c,{style:n,className:"p-6",children:[e.icon&&jsx("div",{className:"text-4xl mb-4",children:e.icon}),jsx("h3",{className:"text-xl font-bold mb-2",children:e.title}),jsx("p",{className:"text-muted-foreground text-sm",children:e.description})]});default:return jsx(a$5,{style:n,icon:void 0,title:e.title,description:e.description,variant:"glass",hover:"slide",children:e.icon&&jsx("div",{className:"text-4xl mb-4",children:e.icon})})}}function ye({items:e,title:t,subtitle:n,columns:s,card:d,sectionProps:m,motion:g,staggerDelay:u,decorator:o,className:c,...i}){let r=h(),a=d!=null?d:r.features.card,l=u!=null?u:r.features.staggerDelay,p=o!=null?o:r.features.decorator,y=g?{...r.features.motion,...g}:r.features.motion,f=s!=null?s:e.length<=2?2:e.length<=3?3:4,S=t||n?{title:t!=null?t:"",subtitle:n,decorator:p}:void 0,b$1=X==null?void 0:X({count:e.length,staggerDelay:l,duration:y.duration,motionType:y.type,easing:y.easing});return jsx(b,{header:S,spacing:"lg",...m,className:a$2(c),...i,children:jsx("div",{ref:b$1==null?void 0:b$1.containerRef,className:a$2("grid gap-6 lg:gap-8",tt[f]),children:e.map((L,O)=>jsx("div",{children:nt(L,a,b$1==null?void 0:b$1.styles[O])},O))})})}var Y;try{Y=a("@hua-labs/motion-core").useStagger;}catch{}function st(e){let t=e.match(/^([^0-9]*)([0-9]+(?:\.[0-9]+)?)(.*)$/);return t?{prefix:t[1],numeric:parseFloat(t[2]),suffix:t[3]}:{numeric:0,prefix:"",suffix:e}}function dt(e,t,n=1500){let[s,d]=useState(0),m=useRef(0),g=useCallback(()=>{let u=performance.now(),o=c=>{let i=c-u,r=Math.min(i/n,1),a=1-Math.pow(1-r,4);d(a*e),r<1&&(m.current=requestAnimationFrame(o));};m.current=requestAnimationFrame(o);},[e,n]);return useEffect(()=>{if(t)return g(),()=>{m.current&&cancelAnimationFrame(m.current);}},[t,g]),s}function lt({item:e,numberSize:t,countUp:n,isVisible:s,style:d}){var a,l;let{numeric:m,prefix:g,suffix:u}=st(e.value),o=dt(m,n&&s),c=(a=e.prefix)!=null?a:g,i=(l=e.suffix)!=null?l:u,r=n?`${c}${Number.isInteger(m)?Math.round(o):o.toFixed(1)}${i}`:e.value;return jsxs("div",{className:"text-center",style:d,children:[jsx("div",{className:a$2("font-extrabold stat-number",t),children:r}),jsx("div",{className:"text-muted-foreground mt-2 text-sm sm:text-base",children:e.label})]})}function be({items:e,title:t,subtitle:n,countUp:s,numberSize:d,sectionProps:m,motion:g,staggerDelay:u,className:o,...c}){let i=h(),r=s!=null?s:i.stats.countUp,a=d!=null?d:i.stats.numberSize,l=u!=null?u:i.stats.staggerDelay,p=g?{...i.stats.motion,...g}:i.stats.motion,y=t||n?{title:t!=null?t:"",subtitle:n,decorator:false}:void 0,f=Y==null?void 0:Y({count:e.length,staggerDelay:l,duration:p.duration,motionType:p.type,easing:p.easing}),S=e.length<=2?"grid-cols-1 sm:grid-cols-2":e.length<=3?"grid-cols-1 sm:grid-cols-3":"grid-cols-2 sm:grid-cols-4";return jsx(b,{header:y,spacing:"lg",...m,className:a$2(o),...c,children:jsx("div",{ref:f==null?void 0:f.containerRef,className:a$2("grid gap-8 lg:gap-12",S),children:e.map((b,L)=>{var O;return jsx(lt,{item:b,numberSize:a,countUp:r,isVisible:(O=f==null?void 0:f.isVisible)!=null?O:true,style:f==null?void 0:f.styles[L]},L)})})})}function ut(e){switch(e){case "slideUp":return "translateY(32px)";case "slideLeft":return "translateX(-32px)";case "slideRight":return "translateX(32px)";case "scaleIn":return "scale(0.95)";case "bounceIn":return "scale(0.75)";default:return "none"}}var B;try{B=a("@hua-labs/motion-core").useScrollReveal;}catch{}function he({title:e,subtitle:t,primaryAction:n,secondaryAction:s,background:d$1,gradientColors:m,motion:g,className:u,...o}){var p;let c=h(),i=d$1!=null?d$1:c.cta.background,r=g?{...c.cta.motion,...g}:c.cta.motion,a=B==null?void 0:B({motionType:r.type,duration:r.duration,delay:r.delay}),l=useMemo(()=>a?{}:{opacity:0,transform:ut(r.type),animation:`landing-cta-enter ${r.duration}ms ${r.easing} ${r.delay}ms forwards`},[a,r]);return jsxs("section",{className:a$2("relative overflow-hidden py-20 sm:py-28",i==="dark"&&"bg-gray-950 text-white",u),...o,children:[i==="gradient-soft"&&jsx("div",{className:"absolute inset-0 gradient-bg-soft","aria-hidden":"true"}),i==="animated-gradient"&&jsx(d,{colors:m,type:"mesh",className:"absolute inset-0 -z-0","aria-hidden":"true"}),i==="dark"&&jsx("div",{className:"absolute inset-0",style:{background:"radial-gradient(ellipse 80% 60% at 50% 40%, rgba(120, 119, 198, 0.08), transparent)"},"aria-hidden":"true"}),jsx(a$1,{size:"md",padding:"none",centered:true,className:"relative z-10 px-6",children:jsxs("div",{ref:a==null?void 0:a.ref,style:(p=a==null?void 0:a.style)!=null?p:l,className:"text-center",children:[jsx("h2",{className:"text-3xl sm:text-4xl md:text-5xl font-extrabold mb-4",children:e}),t&&jsx("p",{className:"text-lg text-muted-foreground max-w-2xl mx-auto mb-8",children:t}),(n||s)&&jsxs("div",{className:"flex flex-col sm:flex-row items-center justify-center gap-4",children:[n,s]})]})}),jsx("style",{dangerouslySetInnerHTML:{__html:`
7
+ @keyframes landing-cta-enter {
8
+ to { opacity: 1; transform: none; }
9
+ }
10
+ `}})]})}var W;try{W=a("@hua-labs/motion-core").useStagger;}catch{}function ve({item:e,style:t}){return jsxs("div",{className:"bg-card/50 backdrop-blur-sm border border-border/30 rounded-xl p-6 flex flex-col gap-4",style:t,children:[jsxs("blockquote",{className:"text-foreground/90 leading-relaxed flex-1",children:["\u201C",e.quote,"\u201D"]}),jsxs("div",{className:"flex items-center gap-3",children:[e.avatar&&jsx(a$4,{size:"sm",src:e.avatar,alt:e.author}),jsxs("div",{children:[jsx("p",{className:"font-semibold text-sm",children:e.author}),(e.role||e.company)&&jsxs("p",{className:"text-xs text-muted-foreground",children:[e.role,e.role&&e.company&&", ",e.company]})]})]})]})}var gt={2:"md:grid-cols-2",3:"md:grid-cols-2 lg:grid-cols-3"};function Le({items:e$1,title:t,subtitle:n,variant:s,columns:d,autoPlay:m=true,interval:g=5e3,motion:u,staggerDelay:o,className:c,...i}){let r=h(),a=s!=null?s:r.testimonials.variant,l=u?{...r.testimonials.motion,...u}:r.testimonials.motion,p=o!=null?o:r.testimonials.staggerDelay,y=W==null?void 0:W({count:e$1.length,staggerDelay:p,duration:l.duration,motionType:l.type,easing:l.easing}),f=t||n?{title:t!=null?t:"",subtitle:n}:void 0;if(a==="marquee")return jsx(b,{header:f,className:c,...i,children:jsx(a$3,{speed:50,pauseOnHover:true,gradient:true,children:e$1.map((b,L)=>jsx("div",{className:"w-80 shrink-0",children:jsx(ve,{item:b})},L))})});if(a==="carousel")return jsx(b,{header:f,className:c,...i,children:jsx(e,{autoPlay:m,interval:g,loop:true,transition:"fade",indicators:"dots",children:e$1.map((b,L)=>jsx("div",{className:"flex justify-center px-4",children:jsx("div",{className:"max-w-2xl w-full",children:jsx(ve,{item:b})})},L))})});let S=d!=null?d:e$1.length<=2?2:3;return jsx(b,{header:f,className:c,...i,children:jsx("div",{ref:y==null?void 0:y.containerRef,className:a$2("grid gap-6",gt[S]),children:e$1.map((b,L)=>jsx(ve,{item:b,style:y==null?void 0:y.styles[L]},L))})})}function ft(e){switch(e){case "slideUp":return "translateY(32px)";case "slideLeft":return "translateX(-32px)";case "slideRight":return "translateX(32px)";case "scaleIn":return "scale(0.95)";case "bounceIn":return "scale(0.75)";default:return "none"}}var J;try{J=a("@hua-labs/motion-core").useScrollReveal;}catch{}function Se({logos:e,title:t,variant:n,speed:s,logoHeight:d=40,motion:m,className:g,...u}){var f;let o=h(),c=n!=null?n:o.logoCloud.variant,i=s!=null?s:o.logoCloud.speed,r=m?{...o.features.motion,...m}:{type:"fadeIn",duration:800,easing:"ease-out",delay:0},a=J==null?void 0:J({motionType:r.type,duration:r.duration,delay:r.delay}),l=useMemo(()=>a?{}:{opacity:0,transform:ft(r.type),animation:`landing-logocloud-enter ${r.duration}ms ${r.easing} ${r.delay}ms forwards`},[a,r]),p=e.map((S,b)=>{let L=jsx("img",{src:S.src,alt:S.alt,className:"object-contain opacity-60 hover:opacity-100 transition-opacity grayscale hover:grayscale-0",style:{height:d,width:"auto"}},b);return S.href?jsx("a",{href:S.href,target:"_blank",rel:"noopener noreferrer",className:"inline-flex",children:L},b):L});return jsxs(b,{header:t?{title:t,subtitle:void 0}:void 0,spacing:"sm",className:a$2("py-12 sm:py-16",g),...u,children:[jsx("div",{ref:a==null?void 0:a.ref,style:(f=a==null?void 0:a.style)!=null?f:l,children:c==="marquee"?jsx(a$3,{speed:i,pauseOnHover:true,gradient:true,gap:48,children:p}):jsx("div",{className:"flex flex-wrap items-center justify-center gap-8 sm:gap-12",children:p})}),jsx("style",{dangerouslySetInnerHTML:{__html:`
11
+ @keyframes landing-logocloud-enter {
12
+ to { opacity: 1; transform: none; }
13
+ }
14
+ `}})]})}var K;try{K=a("@hua-labs/motion-core").useStagger;}catch{}function Ne({items:e,title:t,subtitle:n,motion:s,staggerDelay:d,className:m,...g}){let u=h(),o=s?{...u.showcase.motion,...s}:u.showcase.motion,c=d!=null?d:u.showcase.staggerDelay,i=K==null?void 0:K({count:e.length,staggerDelay:c,duration:o.duration,motionType:o.type,easing:o.easing}),r=t||n?{title:t!=null?t:"",subtitle:n}:void 0;return jsx(b,{header:r,className:m,...g,children:jsx("div",{ref:i==null?void 0:i.containerRef,className:"space-y-16 sm:space-y-24",children:e.map((a,l)=>{let p=l%2===0;return jsx(a$1,{size:"lg",padding:"none",className:"px-4",children:jsxs("div",{className:a$2("flex flex-col gap-8 items-center",p?"md:flex-row":"md:flex-row-reverse"),style:i==null?void 0:i.styles[l],children:[jsx("div",{className:"flex-1 w-full",children:jsxs("div",{className:"relative overflow-hidden rounded-xl border border-border/30 shadow-lg",children:[jsx("img",{src:a.image,alt:a.title,className:"w-full h-auto object-cover"}),jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/20 to-transparent pointer-events-none"})]})}),jsxs("div",{className:"flex-1 w-full space-y-4",children:[jsx("h3",{className:"text-2xl sm:text-3xl font-bold",children:a.title}),jsx("p",{className:"text-muted-foreground leading-relaxed",children:a.description})]})]})},l)})})})}var Q;try{Q=a("@hua-labs/motion-core").useScrollReveal;}catch{}function ke({name:e,role:t,bio:n,avatar:s,socialLinks:d,motion:m,className:g,...u}){var a;let o=h(),c=m?{...o.hero.motion,...m}:o.hero.motion,i=Q==null?void 0:Q({motionType:c.type,duration:c.duration,delay:c.delay}),r=i?{}:{opacity:0,transform:c.type==="slideUp"?"translateY(32px)":"none",animation:`landing-about-enter ${c.duration}ms ${c.easing} ${c.delay}ms forwards`};return jsxs(b,{className:g,...u,children:[jsx(a$1,{size:"lg",padding:"none",centered:true,children:jsxs("div",{ref:i==null?void 0:i.ref,style:(a=i==null?void 0:i.style)!=null?a:r,className:"flex flex-col md:flex-row items-center gap-8 md:gap-12",children:[s&&jsx("div",{className:"flex-shrink-0",children:jsx(a$4,{size:"lg",src:s,alt:e,className:"w-32 h-32 md:w-40 md:h-40"})}),jsxs("div",{className:"flex-1 text-center md:text-left",children:[jsx("h2",{className:"text-3xl sm:text-4xl font-bold mb-2",children:e}),jsx("p",{className:"text-xl text-muted-foreground mb-4",children:t}),jsx("div",{className:"text-foreground/90 leading-relaxed mb-6",children:typeof n=="string"?jsx("p",{children:n}):n}),d&&d.length>0&&jsx("div",{className:"flex gap-4 justify-center md:justify-start",children:d.map((l$1,p)=>jsx("a",{href:l$1.href,target:"_blank",rel:"noopener noreferrer",className:"text-muted-foreground hover:text-foreground transition-colors","aria-label":l$1.label,children:jsx(l,{name:l$1.icon,size:24})},p))})]})]})}),jsx("style",{dangerouslySetInnerHTML:{__html:`
15
+ @keyframes landing-about-enter {
16
+ to { opacity: 1; transform: none; }
17
+ }
18
+ `}})]})}var Z,_e;try{let e=a("@hua-labs/motion-core");Z=e.useStagger,_e=e.TiltCard;}catch{}var xt={2:"md:grid-cols-2",3:"md:grid-cols-2 lg:grid-cols-3"};function ht({item:e,style:t}){return jsxs(_e||a$6,{className:"bg-card/50 backdrop-blur-sm border border-border/30 rounded-xl overflow-hidden group hover:shadow-lg transition-shadow",style:t,children:[e.image&&jsx("div",{className:"relative overflow-hidden aspect-video",children:jsx("img",{src:e.image,alt:e.title,className:"w-full h-full object-cover group-hover:scale-105 transition-transform duration-300"})}),jsxs("div",{className:"p-6",children:[jsx("h3",{className:"text-xl font-bold mb-2",children:e.title}),jsx("p",{className:"text-muted-foreground mb-4 leading-relaxed",children:e.description}),e.tags&&e.tags.length>0&&jsx("div",{className:"flex flex-wrap gap-2 mb-4",children:e.tags.map((s,d)=>jsx("span",{className:"px-2 py-1 text-xs rounded-full bg-primary/10 text-primary",children:s},d))}),jsxs("div",{className:"flex gap-3",children:[e.href&&jsxs("a",{href:e.href,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-primary hover:underline flex items-center gap-1",children:["View Project ",jsx(l,{name:"arrowRight",size:16})]}),e.github&&jsxs("a",{href:e.github,target:"_blank",rel:"noopener noreferrer",className:"text-sm text-muted-foreground hover:text-foreground flex items-center gap-1",children:[jsx(l,{name:"github",size:16})," GitHub"]})]})]})]})}function Ce({items:e,title:t,subtitle:n,columns:s=3,filter:d=false,motion:m,staggerDelay:g,className:u,...o}){let c=h(),i=m?{...c.features.motion,...m}:c.features.motion,r=g!=null?g:c.features.staggerDelay,[a,l]=useState(null),p=useMemo(()=>{let b=new Set;return e.forEach(L=>{var O;(O=L.tags)==null||O.forEach(Ye=>b.add(Ye));}),Array.from(b)},[e]),y=useMemo(()=>a?e.filter(b=>{var L;return (L=b.tags)==null?void 0:L.includes(a)}):e,[e,a]),f=Z==null?void 0:Z({count:y.length,staggerDelay:r,duration:i.duration,motionType:i.type,easing:i.easing}),S=t||n?{title:t!=null?t:"",subtitle:n}:void 0;return jsxs(b,{header:S,className:u,...o,children:[d&&p.length>0&&jsxs("div",{className:"flex flex-wrap gap-2 mb-8 justify-center",children:[jsx("button",{onClick:()=>l(null),className:a$2("px-4 py-2 rounded-full text-sm font-medium transition-colors",a?"bg-secondary text-secondary-foreground hover:bg-secondary/80":"bg-primary text-primary-foreground"),children:"All"}),p.map(b=>jsx("button",{onClick:()=>l(b),className:a$2("px-4 py-2 rounded-full text-sm font-medium transition-colors",a===b?"bg-primary text-primary-foreground":"bg-secondary text-secondary-foreground hover:bg-secondary/80"),children:b},b))]}),jsx("div",{ref:f==null?void 0:f.containerRef,className:a$2("grid gap-6",xt[s]),children:y.map((b,L)=>jsx(ht,{item:b,style:f==null?void 0:f.styles[L]},L))})]})}var ee;try{ee=a("@hua-labs/motion-core").useStagger;}catch{}function vt(e){return e>=90?"bg-green-500":e>=70?"bg-blue-500":e>=50?"bg-yellow-500":"bg-gray-500"}function we({items:e,title:t,subtitle:n,variant:s="grid",motion:d,staggerDelay:m,className:g,...u}){let o=h(),c=d?{...o.features.motion,...d}:o.features.motion,i=m!=null?m:o.features.staggerDelay,r=ee==null?void 0:ee({count:e.length,staggerDelay:i,duration:c.duration,motionType:c.type,easing:c.easing}),a=t||n?{title:t!=null?t:"",subtitle:n}:void 0;return s==="marquee"?jsx(b,{header:a,className:g,...u,children:jsx(a$3,{speed:50,pauseOnHover:true,gradient:true,children:e.map((l$1,p)=>jsxs("div",{className:"w-40 shrink-0 flex items-center gap-3 px-4 py-2",children:[l$1.icon&&jsx(l,{name:l$1.icon,size:24}),jsx("span",{className:"font-medium",children:l$1.name})]},p))})}):s==="grid"?jsx(b,{header:a,className:g,...u,children:jsx("div",{ref:r==null?void 0:r.containerRef,className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6",children:e.map((l$1,p)=>jsxs("div",{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",style:r==null?void 0:r.styles[p],children:[l$1.icon&&jsx(l,{name:l$1.icon,size:32,variant:"primary"}),jsx("span",{className:"font-semibold text-center",children:l$1.name}),l$1.category&&jsx("span",{className:"text-xs text-muted-foreground",children:l$1.category})]},p))})}):jsxs(b,{header:a,className:g,...u,children:[jsx("div",{ref:r==null?void 0:r.containerRef,className:"space-y-6 max-w-3xl mx-auto",children:e.map((l$1,p)=>{var f;let y=(f=l$1.level)!=null?f:100;return jsxs("div",{className:"space-y-2",style:r==null?void 0:r.styles[p],children:[jsxs("div",{className:"flex justify-between items-center",children:[jsxs("div",{className:"flex items-center gap-2",children:[l$1.icon&&jsx(l,{name:l$1.icon,size:20}),jsx("span",{className:"font-semibold",children:l$1.name})]}),jsxs("span",{className:"text-sm text-muted-foreground",children:[y,"%"]})]}),jsx("div",{className:"h-2 bg-secondary rounded-full overflow-hidden",children:jsx("div",{className:a$2("h-full rounded-full transition-all duration-1000",vt(y)),style:{width:`${y}%`,animation:"skill-bar-fill 1s ease-out forwards"}})})]},p)})}),jsx("style",{dangerouslySetInnerHTML:{__html:`
19
+ @keyframes skill-bar-fill {
20
+ from { width: 0; }
21
+ }
22
+ `}})]})}var te;try{te=a("@hua-labs/motion-core").useStagger;}catch{}function Lt({item:e,style:t}){return jsxs("div",{className:"relative pl-8 pb-8 last:pb-0",style:t,children:[jsx("div",{className:a$2("absolute left-0 top-1.5 w-3 h-3 rounded-full border-2",e.current?"bg-primary border-primary animate-pulse":"bg-background border-border")}),jsx("div",{className:"absolute left-[5px] top-4 bottom-0 w-0.5 bg-border"}),jsxs("div",{className:"space-y-1",children:[jsxs("div",{className:"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-1",children:[jsx("h3",{className:"text-lg font-bold",children:e.title}),jsx("span",{className:"text-sm text-muted-foreground",children:e.period})]}),jsx("p",{className:"text-base text-foreground/80 font-medium",children:e.company}),e.description&&jsx("p",{className:"text-sm text-muted-foreground leading-relaxed pt-2",children:e.description}),e.current&&jsx("span",{className:"inline-block mt-2 px-2 py-1 text-xs rounded-full bg-primary/10 text-primary",children:"Current"})]})]})}function Ie({items:e,title:t,subtitle:n,motion:s,staggerDelay:d,className:m,...g}){let u=h(),o=s?{...u.features.motion,...s}:u.features.motion,c=d!=null?d:u.features.staggerDelay,i=te==null?void 0:te({count:e.length,staggerDelay:c,duration:o.duration,motionType:o.type,easing:o.easing}),r=t||n?{title:t!=null?t:"",subtitle:n}:void 0;return jsx(b,{header:r,className:m,...g,children:jsx("div",{ref:i==null?void 0:i.containerRef,className:"max-w-3xl mx-auto",children:e.map((a,l)=>jsx(Lt,{item:a,style:i==null?void 0:i.styles[l]},l))})})}var ne;try{ne=a("@hua-labs/motion-core").useScrollReveal;}catch{}function Tt(e){return e>=90?{bar:"bg-green-500",text:"text-green-600 dark:text-green-400"}:e>=50?{bar:"bg-orange-500",text:"text-orange-600 dark:text-orange-400"}:{bar:"bg-red-500",text:"text-red-600 dark:text-red-400"}}function Nt({item:e,delay:t=0}){let[n,s]=useState(0),d=Tt(e.value);return useEffect(()=>{let m=setTimeout(()=>{s(e.value);},t);return ()=>clearTimeout(m)},[e.value,t]),jsxs("div",{className:"space-y-2",children:[jsxs("div",{className:"flex justify-between items-center",children:[jsx("span",{className:"text-sm font-medium",children:e.label}),jsx("span",{className:a$2("text-2xl font-bold",d.text),children:Math.round(n)})]}),jsx("div",{className:"h-2 bg-secondary rounded-full overflow-hidden",children:jsx("div",{className:a$2("h-full rounded-full transition-all duration-1000 ease-out",d.bar),style:{width:`${n}%`}})}),e.description&&jsx("p",{className:"text-xs text-muted-foreground",children:e.description})]})}function De({items:e,title:t,subtitle:n,tabs:s,motion:d,className:m,...g}){var y;let u=h(),o=d?{...u.stats.motion,...d}:u.stats.motion,[c,i]=useState(0),r=ne==null?void 0:ne({motionType:o.type,duration:o.duration,delay:o.delay}),a=r?{}:{opacity:0,transform:o.type==="slideUp"?"translateY(32px)":"none",animation:`landing-metrics-enter ${o.duration}ms ${o.easing} ${o.delay}ms forwards`},l=s?s[c].items:e,p=t||n?{title:t!=null?t:"",subtitle:n}:void 0;return jsxs(b,{header:p,className:m,...g,children:[jsxs("div",{ref:r==null?void 0:r.ref,style:(y=r==null?void 0:r.style)!=null?y:a,className:"max-w-3xl mx-auto",children:[s&&s.length>1&&jsx("div",{className:"flex gap-2 mb-8 justify-center",children:s.map((f,S)=>jsx("button",{onClick:()=>i(S),className:a$2("px-4 py-2 rounded-lg text-sm font-medium transition-colors",c===S?"bg-primary text-primary-foreground":"bg-secondary text-secondary-foreground hover:bg-secondary/80"),children:f.label},S))}),jsx("div",{className:"space-y-6",children:l.map((f,S)=>jsx(Nt,{item:f,delay:S*100},S))})]}),jsx("style",{dangerouslySetInnerHTML:{__html:`
23
+ @keyframes landing-metrics-enter {
24
+ to { opacity: 1; transform: none; }
25
+ }
26
+ `}})]})}var ae;try{ae=a("@hua-labs/motion-core").useScrollReveal;}catch{}function ze({title:e="Get in Touch",subtitle:t,email:n,socialLinks:s,motion:d,className:m,...g}){var a;let u=h(),o=d?{...u.cta.motion,...d}:u.cta.motion,c=ae==null?void 0:ae({motionType:o.type,duration:o.duration,delay:o.delay}),i=c?{}:{opacity:0,transform:o.type==="slideUp"?"translateY(32px)":"none",animation:`landing-contact-enter ${o.duration}ms ${o.easing} ${o.delay}ms forwards`},r=e||t?{title:e!=null?e:"",subtitle:t}:void 0;return jsxs(b,{header:r,className:m,...g,children:[jsx(a$1,{size:"md",padding:"none",centered:true,children:jsxs("div",{ref:c==null?void 0:c.ref,style:(a=c==null?void 0:c.style)!=null?a:i,className:"text-center space-y-6",children:[n&&jsx("a",{href:`mailto:${n}`,className:"inline-block text-2xl sm:text-3xl font-bold text-primary hover:underline",children:n}),s&&s.length>0&&jsx("div",{className:"flex gap-4 justify-center",children:s.map((l$1,p)=>jsx("a",{href:l$1.href,target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-center w-12 h-12 rounded-full bg-secondary hover:bg-secondary/80 text-foreground transition-colors","aria-label":l$1.label,children:jsx(l,{name:l$1.icon,size:24})},p))})]})}),jsx("style",{dangerouslySetInnerHTML:{__html:`
27
+ @keyframes landing-contact-enter {
28
+ to { opacity: 1; transform: none; }
29
+ }
30
+ `}})]})}var Xr={Provider:ge,Hero:fe,Features:ye,Stats:be,CTA:he,Testimonials:Le,LogoCloud:Se,Showcase:Ne,About:ke,Projects:Ce,Skills:we,Experience:Ie,Metrics:De,Contact:ze};export{Xr as Landing,ke as LandingAbout,he as LandingCTA,ze as LandingContact,Ie as LandingExperience,ye as LandingFeatures,fe as LandingHero,Se as LandingLogoCloud,De as LandingMetrics,Ce as LandingProjects,ge as LandingProvider,Ne as LandingShowcase,we as LandingSkills,be as LandingStats,Le as LandingTestimonials,le as app,oe as corporate,Be as createLandingTheme,de as dashboard,ce as immersive,ie as marketing,me as portfolio,se as product,ue as resolveTheme,h as useLandingTheme};//# sourceMappingURL=landing.mjs.map
31
+ //# sourceMappingURL=landing.mjs.map