@hua-labs/ui 2.0.2 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -161
- package/dist/{ComponentLayout-btJq4TjA.d.mts → ComponentLayout-DrZpz0yv.d.mts} +1 -1
- package/dist/Section-BWzyshgX.d.mts +67 -0
- package/dist/advanced/dashboard.d.ts.map +1 -1
- package/dist/advanced-dashboard.d.mts +1 -1
- package/dist/advanced-dashboard.js +4 -4
- package/dist/advanced-dashboard.js.map +1 -1
- package/dist/advanced-dashboard.mjs +3 -3
- package/dist/advanced-dashboard.mjs.map +1 -1
- package/dist/advanced-emotion.mjs +1 -1
- package/dist/advanced-motion.d.mts +65 -1
- package/dist/advanced-motion.js +14 -14
- package/dist/advanced-motion.js.map +1 -1
- package/dist/advanced-motion.mjs +1 -1
- package/dist/advanced.d.mts +4 -4
- package/dist/advanced.js +16 -16
- package/dist/advanced.js.map +1 -1
- package/dist/advanced.mjs +3 -3
- package/dist/advanced.mjs.map +1 -1
- package/dist/chunk-3CCF7U3P.mjs +3 -0
- package/dist/{chunk-IFSEJVOR.mjs.map → chunk-3CCF7U3P.mjs.map} +1 -1
- package/dist/chunk-3GAUTZXQ.mjs +3 -0
- package/dist/{chunk-X7ZIWYRC.mjs.map → chunk-3GAUTZXQ.mjs.map} +1 -1
- package/dist/chunk-42RGFEL2.mjs +3 -0
- package/dist/chunk-42RGFEL2.mjs.map +1 -0
- package/dist/chunk-4NJE7D6X.mjs +3 -0
- package/dist/chunk-4NJE7D6X.mjs.map +1 -0
- package/dist/chunk-6HVJFEDA.mjs +3 -0
- package/dist/{chunk-FSL373O6.mjs.map → chunk-6HVJFEDA.mjs.map} +1 -1
- package/dist/chunk-7OYT3QSY.mjs +3 -0
- package/dist/chunk-7OYT3QSY.mjs.map +1 -0
- package/dist/chunk-ANYZ56VB.mjs +3 -0
- package/dist/{chunk-QQCELXFD.mjs.map → chunk-ANYZ56VB.mjs.map} +1 -1
- package/dist/chunk-AOSXB5JJ.mjs +4 -0
- package/dist/{chunk-GLZKT7JN.mjs.map → chunk-AOSXB5JJ.mjs.map} +1 -1
- package/dist/chunk-B544MRF7.mjs +3 -0
- package/dist/{chunk-SDFHJ4GB.mjs.map → chunk-B544MRF7.mjs.map} +1 -1
- package/dist/chunk-CVWWS25A.mjs +3 -0
- package/dist/chunk-CVWWS25A.mjs.map +1 -0
- package/dist/chunk-DYNBM24D.mjs +3 -0
- package/dist/{chunk-OSCMSA2Q.mjs.map → chunk-DYNBM24D.mjs.map} +1 -1
- package/dist/{chunk-NBJUE7NR.mjs → chunk-FX57OSYG.mjs} +2 -2
- package/dist/{chunk-NBJUE7NR.mjs.map → chunk-FX57OSYG.mjs.map} +1 -1
- package/dist/chunk-IJSYSNM5.mjs +3 -0
- package/dist/{chunk-IN7RWQCJ.mjs.map → chunk-IJSYSNM5.mjs.map} +1 -1
- package/dist/chunk-KJZGOL2Z.mjs +3 -0
- package/dist/{chunk-LOYAJIWO.mjs.map → chunk-KJZGOL2Z.mjs.map} +1 -1
- package/dist/chunk-KYRIUUQP.mjs +3 -0
- package/dist/{chunk-PAEKNQWW.mjs.map → chunk-KYRIUUQP.mjs.map} +1 -1
- package/dist/chunk-LSA7DU3N.mjs +73 -0
- package/dist/chunk-LSA7DU3N.mjs.map +1 -0
- package/dist/chunk-MDLCJASB.mjs +3 -0
- package/dist/{chunk-LH77I6HO.mjs.map → chunk-MDLCJASB.mjs.map} +1 -1
- package/dist/chunk-N56BUOCD.mjs +3 -0
- package/dist/{chunk-XV3Y7QVU.mjs.map → chunk-N56BUOCD.mjs.map} +1 -1
- package/dist/chunk-OFYITQXI.mjs +13 -0
- package/dist/chunk-OFYITQXI.mjs.map +1 -0
- package/dist/chunk-OZNST3EZ.mjs +3 -0
- package/dist/{chunk-SGEP3CQE.mjs.map → chunk-OZNST3EZ.mjs.map} +1 -1
- package/dist/chunk-RS6RKW5U.mjs +13 -0
- package/dist/{chunk-6KTHJ3EL.mjs.map → chunk-RS6RKW5U.mjs.map} +1 -1
- package/dist/{chunk-C4OACMTB.mjs → chunk-TXBZZJNR.mjs} +2 -2
- package/dist/{chunk-C4OACMTB.mjs.map → chunk-TXBZZJNR.mjs.map} +1 -1
- package/dist/chunk-TZ4YSHMC.mjs +3 -0
- package/dist/{chunk-UWHCM3S6.mjs.map → chunk-TZ4YSHMC.mjs.map} +1 -1
- package/dist/chunk-U6CTBZ2U.mjs +3 -0
- package/dist/chunk-U6CTBZ2U.mjs.map +1 -0
- package/dist/{chunk-5BMH7223.mjs → chunk-WP7VFE77.mjs} +2 -2
- package/dist/{chunk-5BMH7223.mjs.map → chunk-WP7VFE77.mjs.map} +1 -1
- package/dist/{chunk-FFH4ZFKS.mjs → chunk-XCZMLKPK.mjs} +2 -2
- package/dist/{chunk-FFH4ZFKS.mjs.map → chunk-XCZMLKPK.mjs.map} +1 -1
- package/dist/chunk-XGHT7WMO.mjs +3 -0
- package/dist/chunk-XGHT7WMO.mjs.map +1 -0
- package/dist/chunk-XL4KTJ4L.mjs +3 -0
- package/dist/{chunk-VWSBJUNI.mjs.map → chunk-XL4KTJ4L.mjs.map} +1 -1
- package/dist/chunk-Z74YUUVT.mjs +3 -0
- package/dist/chunk-Z74YUUVT.mjs.map +1 -0
- package/dist/chunk-ZXZIHU7J.mjs +8 -0
- package/dist/{chunk-N7M6RIN4.mjs.map → chunk-ZXZIHU7J.mjs.map} +1 -1
- package/dist/components/DatePicker.d.ts.map +1 -1
- package/dist/components/Modal.d.ts.map +1 -1
- package/dist/components/Popover.d.ts +2 -0
- package/dist/components/Popover.d.ts.map +1 -1
- package/dist/components/Progress.d.ts +1 -0
- package/dist/components/Progress.d.ts.map +1 -1
- package/dist/components/Section.d.ts +44 -0
- package/dist/components/Section.d.ts.map +1 -0
- package/dist/components/advanced/AnimatedGradient.d.ts.map +1 -1
- package/dist/components/advanced/DotNav.d.ts +26 -0
- package/dist/components/advanced/DotNav.d.ts.map +1 -0
- package/dist/components/advanced/HorizontalScroll.d.ts +20 -0
- package/dist/components/advanced/HorizontalScroll.d.ts.map +1 -0
- package/dist/components/advanced/ImageReveal.d.ts +24 -0
- package/dist/components/advanced/ImageReveal.d.ts.map +1 -0
- package/dist/components/advanced/index.d.ts +6 -0
- package/dist/components/advanced/index.d.ts.map +1 -1
- package/dist/data.mjs +2 -2
- package/dist/data.mjs.map +1 -1
- package/dist/feedback.mjs +1 -1
- package/dist/form.js +3 -3
- package/dist/form.js.map +1 -1
- package/dist/form.mjs +4 -4
- package/dist/form.mjs.map +1 -1
- package/dist/{icons-Bj_nr8Ba.d.mts → icons-DmhQEH_E.d.mts} +6 -1
- package/dist/index.d.mts +9 -27
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/interactive.js +1 -1
- package/dist/interactive.js.map +1 -1
- package/dist/interactive.mjs +1 -1
- package/dist/interactive.mjs.map +1 -1
- package/dist/landing/LandingAbout.d.ts +3 -0
- package/dist/landing/LandingAbout.d.ts.map +1 -0
- package/dist/landing/LandingCTA.d.ts +3 -0
- package/dist/landing/LandingCTA.d.ts.map +1 -0
- package/dist/landing/LandingContact.d.ts +3 -0
- package/dist/landing/LandingContact.d.ts.map +1 -0
- package/dist/landing/LandingExperience.d.ts +3 -0
- package/dist/landing/LandingExperience.d.ts.map +1 -0
- package/dist/landing/LandingFeatures.d.ts +3 -0
- package/dist/landing/LandingFeatures.d.ts.map +1 -0
- package/dist/landing/LandingHero.d.ts +3 -0
- package/dist/landing/LandingHero.d.ts.map +1 -0
- package/dist/landing/LandingLogoCloud.d.ts +3 -0
- package/dist/landing/LandingLogoCloud.d.ts.map +1 -0
- package/dist/landing/LandingMetrics.d.ts +3 -0
- package/dist/landing/LandingMetrics.d.ts.map +1 -0
- package/dist/landing/LandingProjects.d.ts +3 -0
- package/dist/landing/LandingProjects.d.ts.map +1 -0
- package/dist/landing/LandingProvider.d.ts +4 -0
- package/dist/landing/LandingProvider.d.ts.map +1 -0
- package/dist/landing/LandingShowcase.d.ts +3 -0
- package/dist/landing/LandingShowcase.d.ts.map +1 -0
- package/dist/landing/LandingSkills.d.ts +3 -0
- package/dist/landing/LandingSkills.d.ts.map +1 -0
- package/dist/landing/LandingStats.d.ts +3 -0
- package/dist/landing/LandingStats.d.ts.map +1 -0
- package/dist/landing/LandingTestimonials.d.ts +3 -0
- package/dist/landing/LandingTestimonials.d.ts.map +1 -0
- package/dist/landing/index.d.ts +47 -0
- package/dist/landing/index.d.ts.map +1 -0
- package/dist/landing/themes/app.d.ts +3 -0
- package/dist/landing/themes/app.d.ts.map +1 -0
- package/dist/landing/themes/corporate.d.ts +3 -0
- package/dist/landing/themes/corporate.d.ts.map +1 -0
- package/dist/landing/themes/dashboard.d.ts +3 -0
- package/dist/landing/themes/dashboard.d.ts.map +1 -0
- package/dist/landing/themes/immersive.d.ts +3 -0
- package/dist/landing/themes/immersive.d.ts.map +1 -0
- package/dist/landing/themes/index.d.ts +15 -0
- package/dist/landing/themes/index.d.ts.map +1 -0
- package/dist/landing/themes/marketing.d.ts +3 -0
- package/dist/landing/themes/marketing.d.ts.map +1 -0
- package/dist/landing/themes/portfolio.d.ts +3 -0
- package/dist/landing/themes/portfolio.d.ts.map +1 -0
- package/dist/landing/themes/product.d.ts +3 -0
- package/dist/landing/themes/product.d.ts.map +1 -0
- package/dist/landing/types.d.ts +346 -0
- package/dist/landing/types.d.ts.map +1 -0
- package/dist/landing.d.mts +417 -0
- package/dist/landing.js +100 -0
- package/dist/landing.js.map +1 -0
- package/dist/landing.mjs +31 -0
- package/dist/landing.mjs.map +1 -0
- package/dist/lib/icons.d.ts +6 -1
- package/dist/lib/icons.d.ts.map +1 -1
- package/dist/navigation.d.mts +1 -1
- package/dist/navigation.js +2 -2
- package/dist/navigation.js.map +1 -1
- package/dist/navigation.mjs +1 -1
- package/dist/navigation.mjs.map +1 -1
- package/dist/overlay.d.mts +2 -0
- package/dist/overlay.js +1 -1
- package/dist/overlay.js.map +1 -1
- package/dist/overlay.mjs +1 -1
- package/dist/overlay.mjs.map +1 -1
- package/dist/sdui.js +4 -4
- package/dist/sdui.js.map +1 -1
- package/dist/sdui.mjs +1 -1
- package/dist/sdui.mjs.map +1 -1
- package/package.json +18 -7
- package/src/styles/landing.css +107 -0
- package/src/styles/utilities.css +58 -0
- package/dist/chunk-6KTHJ3EL.mjs +0 -13
- package/dist/chunk-COR6CDMA.mjs +0 -83
- package/dist/chunk-COR6CDMA.mjs.map +0 -1
- package/dist/chunk-FSL373O6.mjs +0 -3
- package/dist/chunk-GLZKT7JN.mjs +0 -4
- package/dist/chunk-HN5LSP6L.mjs +0 -3
- package/dist/chunk-HN5LSP6L.mjs.map +0 -1
- package/dist/chunk-IFSEJVOR.mjs +0 -3
- package/dist/chunk-IN7RWQCJ.mjs +0 -3
- package/dist/chunk-LH77I6HO.mjs +0 -3
- package/dist/chunk-LOYAJIWO.mjs +0 -3
- package/dist/chunk-LPAG7DCA.mjs +0 -3
- package/dist/chunk-LPAG7DCA.mjs.map +0 -1
- package/dist/chunk-N7M6RIN4.mjs +0 -8
- package/dist/chunk-OSCMSA2Q.mjs +0 -3
- package/dist/chunk-PAEKNQWW.mjs +0 -3
- package/dist/chunk-QQCELXFD.mjs +0 -3
- package/dist/chunk-RPUS7G7Q.mjs +0 -3
- package/dist/chunk-RPUS7G7Q.mjs.map +0 -1
- package/dist/chunk-SDFHJ4GB.mjs +0 -3
- package/dist/chunk-SGEP3CQE.mjs +0 -3
- package/dist/chunk-UUHAXGMO.mjs +0 -3
- package/dist/chunk-UUHAXGMO.mjs.map +0 -1
- package/dist/chunk-UWHCM3S6.mjs +0 -3
- package/dist/chunk-VWSBJUNI.mjs +0 -3
- package/dist/chunk-X7ZIWYRC.mjs +0 -3
- package/dist/chunk-XV3Y7QVU.mjs +0 -3
|
@@ -0,0 +1,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 };
|