@jbpark/ui-kit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +267 -0
- package/dist/Menu.cjs +10 -0
- package/dist/Menu.d.cts +2 -0
- package/dist/Menu.d.mts +2 -0
- package/dist/Menu.mjs +8 -0
- package/dist/Reveals-BIKKnQpn.cjs +119 -0
- package/dist/Reveals-BpnYZJUk.mjs +89 -0
- package/dist/Reveals.cjs +9 -0
- package/dist/Reveals.d.cts +2 -0
- package/dist/Reveals.d.mts +2 -0
- package/dist/Reveals.mjs +4 -0
- package/dist/Typography-B3MWBAA6.cjs +102 -0
- package/dist/Typography-LYvEW-c8.mjs +72 -0
- package/dist/Typography.cjs +9 -0
- package/dist/Typography.d.cts +2 -0
- package/dist/Typography.d.mts +2 -0
- package/dist/Typography.mjs +4 -0
- package/dist/enums-CP_LwqBM.cjs +18 -0
- package/dist/enums-HFC1lmIX.mjs +12 -0
- package/dist/enums.cjs +3 -0
- package/dist/enums.d.cts +4 -0
- package/dist/enums.d.mts +4 -0
- package/dist/enums.mjs +3 -0
- package/dist/globals.css +125 -0
- package/dist/index-BO7hcWjo.d.mts +59 -0
- package/dist/index-BqaluEQ4.d.mts +83 -0
- package/dist/index-CdyEmwZC.d.cts +97 -0
- package/dist/index-Cu2qFRc3.d.cts +83 -0
- package/dist/index-D1Bkn0Xy.d.cts +59 -0
- package/dist/index-DS-PGSIg.d.mts +97 -0
- package/dist/index.cjs +24 -0
- package/dist/index.d.cts +528 -0
- package/dist/index.d.mts +533 -0
- package/dist/index.mjs +6 -0
- package/dist/src-CkhEsWv5.css +124 -0
- package/dist/src-DfLPlkqV.css +124 -0
- package/dist/src-DlEgA3c9.mjs +5118 -0
- package/dist/src-Dvkx0I-F.cjs +5262 -0
- package/dist/utils-8r5MlYq5.cjs +16 -0
- package/dist/utils-DEenfsJ-.mjs +10 -0
- package/dist/utils.cjs +3 -0
- package/dist/utils.d.cts +6 -0
- package/dist/utils.d.mts +6 -0
- package/dist/utils.mjs +3 -0
- package/package.json +99 -0
package/README.md
ADDED
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
# @jbpark/ui-kit
|
|
2
|
+
|
|
3
|
+
현대적이고 재사용 가능한 React UI 컴포넌트 라이브러리입니다. Atomic Design 패턴을 따라 체계적으로 구성되어 있으며, TypeScript와 Tailwind CSS를 기반으로 구축되었습니다.
|
|
4
|
+
|
|
5
|
+
## 📦 패키지 정보
|
|
6
|
+
|
|
7
|
+
- **패키지명**: `@jbpark/ui-kit`
|
|
8
|
+
- **라이선스**: MIT
|
|
9
|
+
- **패키지 매니저**: npm
|
|
10
|
+
- **Node.js 요구사항**: >= 18
|
|
11
|
+
- **React 요구사항**: ^18.0.0 || ^19.0.0
|
|
12
|
+
|
|
13
|
+
## 🏗 아키텍처
|
|
14
|
+
|
|
15
|
+
### Atomic Design 패턴
|
|
16
|
+
|
|
17
|
+
이 라이브러리는 Atomic Design 방법론을 따라 컴포넌트를 계층적으로 구성합니다:
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
src/
|
|
21
|
+
├── components/
|
|
22
|
+
│ ├── atoms/ # 🧬 원자 - 기본 UI 구성 요소
|
|
23
|
+
│ ├── molecules/ # 🔬 분자 - 원자들의 조합
|
|
24
|
+
│ ├── organisms/ # 🦠 유기체 - 복잡한 UI 블록
|
|
25
|
+
│ └── templates/ # 📄 템플릿 - 페이지 레이아웃
|
|
26
|
+
├── core/ # ⚙️ 핵심 UI 로직 (Radix UI 기반)
|
|
27
|
+
├── lib/
|
|
28
|
+
│ ├── enums/ # 📋 열거형 타입
|
|
29
|
+
│ ├── hooks/ # 🎣 커스텀 훅
|
|
30
|
+
│ └── utils/ # 🛠 유틸리티 함수
|
|
31
|
+
├── globals.css # 🎨 전역 스타일
|
|
32
|
+
└── index.ts # 📥 패키지 진입점
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## 🧬 Atoms (원자)
|
|
36
|
+
|
|
37
|
+
기본적인 UI 구성 요소들
|
|
38
|
+
|
|
39
|
+
| 컴포넌트 | 설명 | 하위 컴포넌트 |
|
|
40
|
+
| --------------- | ------------------------- | ------------------------------------ |
|
|
41
|
+
| **Button** | 다양한 스타일의 버튼 | - |
|
|
42
|
+
| **Checkbox** | 체크박스 및 그룹 체크박스 | `Group` |
|
|
43
|
+
| **FloatButton** | 플로팅 버튼 | `BackTop` |
|
|
44
|
+
| **Input** | 입력 필드 컴포넌트 | `Search`, `TextArea` |
|
|
45
|
+
| **Progress** | 진행률 표시 컴포넌트 | - |
|
|
46
|
+
| **Skeleton** | 로딩 스켈레톤 | `Button`, `Node` |
|
|
47
|
+
| **Spin** | 로딩 스피너 | - |
|
|
48
|
+
| **Switch** | 토글 스위치 | - |
|
|
49
|
+
| **Typography** | 텍스트 컴포넌트 | `Link`, `Paragraph`, `Text`, `Title` |
|
|
50
|
+
|
|
51
|
+
## 🔬 Molecules (분자)
|
|
52
|
+
|
|
53
|
+
여러 원자들이 결합된 복합 컴포넌트들
|
|
54
|
+
|
|
55
|
+
| 컴포넌트 | 설명 | 하위 컴포넌트 |
|
|
56
|
+
| ------------ | ------------------------ | ------------- |
|
|
57
|
+
| **Collapse** | 접을 수 있는 컨텐츠 영역 | - |
|
|
58
|
+
| **Dropdown** | 드롭다운 메뉴 | - |
|
|
59
|
+
| **Marquees** | 무한 스크롤 마키 | `Item` |
|
|
60
|
+
| **Menu** | 네비게이션 메뉴 | - |
|
|
61
|
+
| **Reveals** | 애니메이션 리빌 | `Item` |
|
|
62
|
+
| **Space** | 간격 조정 컴포넌트 | - |
|
|
63
|
+
|
|
64
|
+
## 🦠 Organisms (유기체)
|
|
65
|
+
|
|
66
|
+
복잡한 UI 섹션들
|
|
67
|
+
|
|
68
|
+
| 컴포넌트 | 설명 | 하위 컴포넌트 |
|
|
69
|
+
| ---------- | ----------------------- | ------------- |
|
|
70
|
+
| **Drawer** | 사이드 드로어 | - |
|
|
71
|
+
| **List** | 리스트 및 리스트 아이템 | `Item` |
|
|
72
|
+
| **Modal** | 모달 다이얼로그 | - |
|
|
73
|
+
| **Swiper** | 슬라이더 컴포넌트 | `Slide` |
|
|
74
|
+
|
|
75
|
+
## 📄 Templates (템플릿)
|
|
76
|
+
|
|
77
|
+
페이지 레이아웃 템플릿
|
|
78
|
+
|
|
79
|
+
| 컴포넌트 | 설명 | 하위 컴포넌트 |
|
|
80
|
+
| ---------- | -------------------- | -------------------------------------- |
|
|
81
|
+
| **Layout** | 전체 페이지 레이아웃 | `Header`, `Sider`, `Content`, `Footer` |
|
|
82
|
+
|
|
83
|
+
## 🛠 핵심 기능
|
|
84
|
+
|
|
85
|
+
### Core 모듈
|
|
86
|
+
|
|
87
|
+
Radix UI 기반의 접근성 우선 핵심 컴포넌트들:
|
|
88
|
+
|
|
89
|
+
- `accordion.tsx` - 아코디언 컴포넌트 (Radix UI 기반)
|
|
90
|
+
- `button.tsx` - 버튼 컴포넌트 (class-variance-authority로 variants 관리)
|
|
91
|
+
- `dialog.tsx` - 다이얼로그 컴포넌트 (Radix UI 기반)
|
|
92
|
+
- `drawer.tsx` - 드로어 컴포넌트 (Vaul 기반)
|
|
93
|
+
- `progress.tsx` - 진행률 컴포넌트 (Radix UI 기반)
|
|
94
|
+
- `skeleton.tsx` - 스켈레톤 컴포넌트
|
|
95
|
+
- `switch.tsx` - 스위치 컴포넌트 (Radix UI 기반)
|
|
96
|
+
|
|
97
|
+
### 유틸리티
|
|
98
|
+
|
|
99
|
+
- **`cn()`** - 클래스명 병합 유틸리티 (clsx + tailwind-merge)
|
|
100
|
+
- **`TEXT_LEVELS`** - 타이포그래피 레벨 상수
|
|
101
|
+
|
|
102
|
+
## 🚀 설치 및 사용법
|
|
103
|
+
|
|
104
|
+
### 설치
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# npm
|
|
108
|
+
npm install @jbpark/ui-kit
|
|
109
|
+
|
|
110
|
+
# yarn
|
|
111
|
+
yarn add @jbpark/ui-kit
|
|
112
|
+
|
|
113
|
+
# pnpm
|
|
114
|
+
pnpm add @jbpark/ui-kit
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 기본 사용법
|
|
118
|
+
|
|
119
|
+
```tsx
|
|
120
|
+
import { Button, Layout, Typography } from '@jbpark/ui-kit';
|
|
121
|
+
|
|
122
|
+
import '@jbpark/ui-kit/style.css';
|
|
123
|
+
|
|
124
|
+
function App() {
|
|
125
|
+
return (
|
|
126
|
+
<Layout>
|
|
127
|
+
<Typography.Title>안녕하세요!</Typography.Title>
|
|
128
|
+
<Button variant="primary">클릭하세요</Button>
|
|
129
|
+
</Layout>
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 개별 컴포넌트 import
|
|
135
|
+
|
|
136
|
+
```tsx
|
|
137
|
+
// Typography 컴포넌트
|
|
138
|
+
// Menu 컴포넌트
|
|
139
|
+
import { Menu } from '@jbpark/ui-kit/Menu';
|
|
140
|
+
// Reveals 컴포넌트
|
|
141
|
+
import { Reveals } from '@jbpark/ui-kit/Reveals';
|
|
142
|
+
import { Typography } from '@jbpark/ui-kit/Typography';
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### 유틸리티 및 열거형 import
|
|
146
|
+
|
|
147
|
+
```tsx
|
|
148
|
+
// 유틸리티 함수
|
|
149
|
+
// 열거형 상수
|
|
150
|
+
import { TEXT_LEVELS } from '@jbpark/ui-kit/enums';
|
|
151
|
+
import { cn } from '@jbpark/ui-kit/utils';
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 스타일 import
|
|
155
|
+
|
|
156
|
+
```tsx
|
|
157
|
+
// 전역 스타일 (필수)
|
|
158
|
+
import '@jbpark/ui-kit/style.css';
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## 🎨 스타일링
|
|
162
|
+
|
|
163
|
+
### Tailwind CSS
|
|
164
|
+
|
|
165
|
+
- **Tailwind CSS 4** 기반
|
|
166
|
+
- **PostCSS** 처리
|
|
167
|
+
- **class-variance-authority**로 컴포넌트 variants 관리
|
|
168
|
+
- **tailwind-merge**로 클래스 충돌 해결
|
|
169
|
+
|
|
170
|
+
### 커스터마이징
|
|
171
|
+
|
|
172
|
+
```tsx
|
|
173
|
+
// 전역 스타일 import (필수)
|
|
174
|
+
import '@jbpark/ui-kit/style.css';
|
|
175
|
+
|
|
176
|
+
// tailwind.config.js에서 테마 커스터마이징
|
|
177
|
+
// Tailwind CSS 4를 사용하는 경우 PostCSS 설정 필요
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## 📚 주요 의존성
|
|
181
|
+
|
|
182
|
+
### 핵심 라이브러리
|
|
183
|
+
|
|
184
|
+
- **React 19.1.0** - UI 라이브러리
|
|
185
|
+
- **TypeScript 5.9.2** - 정적 타입 체크
|
|
186
|
+
- **Tailwind CSS 4.1.12** - 유틸리티 CSS 프레임워크
|
|
187
|
+
|
|
188
|
+
### UI 라이브러리
|
|
189
|
+
|
|
190
|
+
- **Radix UI** - 접근성 우선 헤드리스 UI 컴포넌트
|
|
191
|
+
- `@radix-ui/react-accordion` (1.2.12)
|
|
192
|
+
- `@radix-ui/react-dialog` (1.1.15)
|
|
193
|
+
- `@radix-ui/react-progress` (1.1.7)
|
|
194
|
+
- `@radix-ui/react-slot` (1.2.3)
|
|
195
|
+
- `@radix-ui/react-switch` (1.2.6)
|
|
196
|
+
- **Lucide React 0.542.0** - 아이콘 라이브러리
|
|
197
|
+
- **Motion 12.23.12** - 애니메이션 라이브러리
|
|
198
|
+
- **Swiper 11.2.10** - 터치 슬라이더
|
|
199
|
+
- **Vaul 1.1.2** - 드로어 컴포넌트
|
|
200
|
+
|
|
201
|
+
### 유틸리티
|
|
202
|
+
|
|
203
|
+
- **class-variance-authority 0.7.1** - 컴포넌트 variants 관리
|
|
204
|
+
- **clsx 2.1.1** - 조건부 클래스명
|
|
205
|
+
- **tailwind-merge 3.3.1** - Tailwind 클래스 병합
|
|
206
|
+
- **react-use 17.6.0** - React 훅 모음
|
|
207
|
+
- **@uidotdev/usehooks 2.4.1** - 추가 React 훅
|
|
208
|
+
- **uuid 11.1.0** - 고유 ID 생성
|
|
209
|
+
- **@gsap/react 2.1.2** - GSAP 애니메이션
|
|
210
|
+
- **tw-animate-css 1.3.7** - Tailwind 애니메이션
|
|
211
|
+
|
|
212
|
+
## 🔧 개발
|
|
213
|
+
|
|
214
|
+
이 패키지는 모노레포(Turborepo) 환경에서 개발됩니다.
|
|
215
|
+
|
|
216
|
+
### 타입 체크
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
npm run check-types
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### 린팅
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
npm run lint
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### 빌드
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
npm run build
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### 컴포넌트 생성
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
npm run generate:component
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## 📦 패키지 Exports
|
|
241
|
+
|
|
242
|
+
이 패키지는 다음과 같은 모듈들을 export합니다:
|
|
243
|
+
|
|
244
|
+
- `@jbpark/ui-kit` - 메인 패키지 (모든 컴포넌트)
|
|
245
|
+
- `@jbpark/ui-kit/Typography` - Typography 컴포넌트
|
|
246
|
+
- `@jbpark/ui-kit/Menu` - Menu 컴포넌트
|
|
247
|
+
- `@jbpark/ui-kit/Reveals` - Reveals 컴포넌트
|
|
248
|
+
- `@jbpark/ui-kit/utils` - 유틸리티 함수 (`cn` 등)
|
|
249
|
+
- `@jbpark/ui-kit/enums` - 열거형 상수 (`TEXT_LEVELS` 등)
|
|
250
|
+
- `@jbpark/ui-kit/style.css` - 전역 스타일 (필수)
|
|
251
|
+
|
|
252
|
+
## 🤝 기여하기
|
|
253
|
+
|
|
254
|
+
1. 이 저장소를 포크합니다
|
|
255
|
+
2. 새로운 기능 브랜치를 생성합니다 (`git checkout -b feature/amazing-component`)
|
|
256
|
+
3. 컴포넌트를 Atomic Design 패턴에 따라 적절한 폴더에 배치합니다
|
|
257
|
+
4. TypeScript 타입을 정의합니다
|
|
258
|
+
5. Storybook 스토리를 작성합니다
|
|
259
|
+
6. 변경사항을 커밋합니다 (`git commit -m 'Add amazing component'`)
|
|
260
|
+
7. 브랜치에 푸시합니다 (`git push origin feature/amazing-component`)
|
|
261
|
+
8. Pull Request를 생성합니다
|
|
262
|
+
|
|
263
|
+
## 📄 라이선스
|
|
264
|
+
|
|
265
|
+
MIT 라이선스 하에 있습니다.
|
|
266
|
+
|
|
267
|
+
---
|
package/dist/Menu.cjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
const require_src = require('./src-Dvkx0I-F.cjs');
|
|
5
|
+
require('./utils-8r5MlYq5.cjs');
|
|
6
|
+
require('./Typography-B3MWBAA6.cjs');
|
|
7
|
+
require('./Reveals-BIKKnQpn.cjs');
|
|
8
|
+
|
|
9
|
+
exports.default = require_src.Menu_default;
|
|
10
|
+
exports.findKey = require_src.findKey;
|
package/dist/Menu.d.cts
ADDED
package/dist/Menu.d.mts
ADDED
package/dist/Menu.mjs
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
const require_src = require('./src-Dvkx0I-F.cjs');
|
|
2
|
+
const require_utils = require('./utils-8r5MlYq5.cjs');
|
|
3
|
+
let react = require("react");
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
let motion_react = require("motion/react");
|
|
6
|
+
|
|
7
|
+
//#region src/components/molecules/Reveals/Item/index.tsx
|
|
8
|
+
const effectVariants = {
|
|
9
|
+
fadeIn: {
|
|
10
|
+
offscreen: { opacity: 0 },
|
|
11
|
+
onscreen: { opacity: 1 }
|
|
12
|
+
},
|
|
13
|
+
fadeInUp: {
|
|
14
|
+
offscreen: {
|
|
15
|
+
opacity: 0,
|
|
16
|
+
y: 50
|
|
17
|
+
},
|
|
18
|
+
onscreen: {
|
|
19
|
+
opacity: 1,
|
|
20
|
+
y: 0
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
slideInUp: {
|
|
24
|
+
offscreen: {
|
|
25
|
+
opacity: 1,
|
|
26
|
+
y: 50
|
|
27
|
+
},
|
|
28
|
+
onscreen: {
|
|
29
|
+
opacity: 1,
|
|
30
|
+
y: 0
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const Item = ({ effect = "fadeInUp", children, once, viewport, variants, duration, delay, transition, className, ...props }) => {
|
|
35
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(motion_react.motion.div, {
|
|
36
|
+
initial: "offscreen",
|
|
37
|
+
whileInView: "onscreen",
|
|
38
|
+
viewport: {
|
|
39
|
+
once,
|
|
40
|
+
...viewport
|
|
41
|
+
},
|
|
42
|
+
variants: {
|
|
43
|
+
offscreen: {
|
|
44
|
+
...effectVariants[effect].offscreen,
|
|
45
|
+
...variants?.offscreen,
|
|
46
|
+
transition: { duration: 0 }
|
|
47
|
+
},
|
|
48
|
+
onscreen: {
|
|
49
|
+
...effectVariants[effect].onscreen,
|
|
50
|
+
...variants?.onscreen,
|
|
51
|
+
transition: {
|
|
52
|
+
duration,
|
|
53
|
+
ease: "easeOut",
|
|
54
|
+
delay,
|
|
55
|
+
...transition
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
className: require_utils.cn("flex h-full items-center justify-center", className),
|
|
60
|
+
...props,
|
|
61
|
+
children
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
var Item_default = Item;
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
//#region src/components/molecules/Reveals/index.tsx
|
|
68
|
+
const DURATION = .6;
|
|
69
|
+
const DELAY = 0;
|
|
70
|
+
const CASCADE = .1;
|
|
71
|
+
const Reveals = ({ children, className, classNames, items = [], cascade = CASCADE, duration = DURATION, delay = DELAY, ...props }) => {
|
|
72
|
+
const renderItems = (items$1) => items$1.map((item, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Item_default, {
|
|
73
|
+
duration,
|
|
74
|
+
delay: delay + cascade * index,
|
|
75
|
+
className: require_utils.cn(item.className, classNames?.item),
|
|
76
|
+
...props,
|
|
77
|
+
...item,
|
|
78
|
+
children: item.children
|
|
79
|
+
}, index));
|
|
80
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
81
|
+
className: require_utils.cn("flex gap-5", className, classNames?.root),
|
|
82
|
+
...props,
|
|
83
|
+
children: renderItems(children ? react.Children.toArray(children).map((child) => ({ children: child })) : items)
|
|
84
|
+
});
|
|
85
|
+
};
|
|
86
|
+
Reveals.Item = Item_default;
|
|
87
|
+
var Reveals_default = Reveals;
|
|
88
|
+
|
|
89
|
+
//#endregion
|
|
90
|
+
Object.defineProperty(exports, 'CASCADE', {
|
|
91
|
+
enumerable: true,
|
|
92
|
+
get: function () {
|
|
93
|
+
return CASCADE;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
Object.defineProperty(exports, 'DELAY', {
|
|
97
|
+
enumerable: true,
|
|
98
|
+
get: function () {
|
|
99
|
+
return DELAY;
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
Object.defineProperty(exports, 'DURATION', {
|
|
103
|
+
enumerable: true,
|
|
104
|
+
get: function () {
|
|
105
|
+
return DURATION;
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
Object.defineProperty(exports, 'Item_default', {
|
|
109
|
+
enumerable: true,
|
|
110
|
+
get: function () {
|
|
111
|
+
return Item_default;
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
Object.defineProperty(exports, 'Reveals_default', {
|
|
115
|
+
enumerable: true,
|
|
116
|
+
get: function () {
|
|
117
|
+
return Reveals_default;
|
|
118
|
+
}
|
|
119
|
+
});
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { t as cn } from "./utils-DEenfsJ-.mjs";
|
|
2
|
+
import { Children } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import { motion } from "motion/react";
|
|
5
|
+
|
|
6
|
+
//#region src/components/molecules/Reveals/Item/index.tsx
|
|
7
|
+
const effectVariants = {
|
|
8
|
+
fadeIn: {
|
|
9
|
+
offscreen: { opacity: 0 },
|
|
10
|
+
onscreen: { opacity: 1 }
|
|
11
|
+
},
|
|
12
|
+
fadeInUp: {
|
|
13
|
+
offscreen: {
|
|
14
|
+
opacity: 0,
|
|
15
|
+
y: 50
|
|
16
|
+
},
|
|
17
|
+
onscreen: {
|
|
18
|
+
opacity: 1,
|
|
19
|
+
y: 0
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
slideInUp: {
|
|
23
|
+
offscreen: {
|
|
24
|
+
opacity: 1,
|
|
25
|
+
y: 50
|
|
26
|
+
},
|
|
27
|
+
onscreen: {
|
|
28
|
+
opacity: 1,
|
|
29
|
+
y: 0
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const Item = ({ effect = "fadeInUp", children, once, viewport, variants, duration, delay, transition, className, ...props }) => {
|
|
34
|
+
return /* @__PURE__ */ jsx(motion.div, {
|
|
35
|
+
initial: "offscreen",
|
|
36
|
+
whileInView: "onscreen",
|
|
37
|
+
viewport: {
|
|
38
|
+
once,
|
|
39
|
+
...viewport
|
|
40
|
+
},
|
|
41
|
+
variants: {
|
|
42
|
+
offscreen: {
|
|
43
|
+
...effectVariants[effect].offscreen,
|
|
44
|
+
...variants?.offscreen,
|
|
45
|
+
transition: { duration: 0 }
|
|
46
|
+
},
|
|
47
|
+
onscreen: {
|
|
48
|
+
...effectVariants[effect].onscreen,
|
|
49
|
+
...variants?.onscreen,
|
|
50
|
+
transition: {
|
|
51
|
+
duration,
|
|
52
|
+
ease: "easeOut",
|
|
53
|
+
delay,
|
|
54
|
+
...transition
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
className: cn("flex h-full items-center justify-center", className),
|
|
59
|
+
...props,
|
|
60
|
+
children
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
var Item_default = Item;
|
|
64
|
+
|
|
65
|
+
//#endregion
|
|
66
|
+
//#region src/components/molecules/Reveals/index.tsx
|
|
67
|
+
const DURATION = .6;
|
|
68
|
+
const DELAY = 0;
|
|
69
|
+
const CASCADE = .1;
|
|
70
|
+
const Reveals = ({ children, className, classNames, items = [], cascade = CASCADE, duration = DURATION, delay = DELAY, ...props }) => {
|
|
71
|
+
const renderItems = (items$1) => items$1.map((item, index) => /* @__PURE__ */ jsx(Item_default, {
|
|
72
|
+
duration,
|
|
73
|
+
delay: delay + cascade * index,
|
|
74
|
+
className: cn(item.className, classNames?.item),
|
|
75
|
+
...props,
|
|
76
|
+
...item,
|
|
77
|
+
children: item.children
|
|
78
|
+
}, index));
|
|
79
|
+
return /* @__PURE__ */ jsx("div", {
|
|
80
|
+
className: cn("flex gap-5", className, classNames?.root),
|
|
81
|
+
...props,
|
|
82
|
+
children: renderItems(children ? Children.toArray(children).map((child) => ({ children: child })) : items)
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
Reveals.Item = Item_default;
|
|
86
|
+
var Reveals_default = Reveals;
|
|
87
|
+
|
|
88
|
+
//#endregion
|
|
89
|
+
export { Item_default as a, Reveals_default as i, DELAY as n, DURATION as r, CASCADE as t };
|
package/dist/Reveals.cjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2
|
+
require('./utils-8r5MlYq5.cjs');
|
|
3
|
+
const require_Reveals = require('./Reveals-BIKKnQpn.cjs');
|
|
4
|
+
|
|
5
|
+
exports.CASCADE = require_Reveals.CASCADE;
|
|
6
|
+
exports.DELAY = require_Reveals.DELAY;
|
|
7
|
+
exports.DURATION = require_Reveals.DURATION;
|
|
8
|
+
exports.Item = require_Reveals.Item_default;
|
|
9
|
+
exports.default = require_Reveals.Reveals_default;
|
package/dist/Reveals.mjs
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
const require_src = require('./src-Dvkx0I-F.cjs');
|
|
2
|
+
const require_utils = require('./utils-8r5MlYq5.cjs');
|
|
3
|
+
const require_enums = require('./enums-CP_LwqBM.cjs');
|
|
4
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
5
|
+
|
|
6
|
+
//#region src/components/atoms/Typography/Link/index.tsx
|
|
7
|
+
const Link = ({ children, className, level, ...props }) => {
|
|
8
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
9
|
+
className: require_utils.cn("underline-offset-1 hover:underline", level ? require_enums.TEXT_LEVELS[level] : "", className),
|
|
10
|
+
...props,
|
|
11
|
+
children
|
|
12
|
+
});
|
|
13
|
+
};
|
|
14
|
+
var Link_default = Link;
|
|
15
|
+
|
|
16
|
+
//#endregion
|
|
17
|
+
//#region src/components/atoms/Typography/Paragraph/index.tsx
|
|
18
|
+
const Paragraph = ({ children, className, level, ...props }) => {
|
|
19
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
20
|
+
...props,
|
|
21
|
+
className: require_utils.cn(level ? require_enums.TEXT_LEVELS[level] : "", className),
|
|
22
|
+
children
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var Paragraph_default = Paragraph;
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/components/atoms/Typography/Text/index.tsx
|
|
29
|
+
const Text = ({ children, underline, strong, className, level, ...props }) => {
|
|
30
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
31
|
+
className: require_utils.cn("text-nowrap", level ? require_enums.TEXT_LEVELS[level] : "", underline && "underline", strong && "font-bold", className),
|
|
32
|
+
...props,
|
|
33
|
+
children
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
var Text_default = Text;
|
|
37
|
+
|
|
38
|
+
//#endregion
|
|
39
|
+
//#region src/components/atoms/Typography/Title/index.tsx
|
|
40
|
+
const styles = {
|
|
41
|
+
h1: "text-6xl",
|
|
42
|
+
h2: "text-5xl",
|
|
43
|
+
h3: "text-4xl",
|
|
44
|
+
h4: "text-3xl",
|
|
45
|
+
h5: "text-2xl",
|
|
46
|
+
h6: "text-xl"
|
|
47
|
+
};
|
|
48
|
+
const Title = ({ children, level = 1, className, ...props }) => {
|
|
49
|
+
const Element = level < 1 || level > 6 ? "h1" : `h${level}`;
|
|
50
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Element, {
|
|
51
|
+
className: require_utils.cn("leading-snug font-bold", styles[Element], className),
|
|
52
|
+
...props,
|
|
53
|
+
children
|
|
54
|
+
});
|
|
55
|
+
};
|
|
56
|
+
var Title_default = Title;
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
//#region src/components/atoms/Typography/index.tsx
|
|
60
|
+
const Typography = ({ children, ...props }) => {
|
|
61
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("article", {
|
|
62
|
+
...props,
|
|
63
|
+
children
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
Typography.Link = Link_default;
|
|
67
|
+
Typography.Paragraph = Paragraph_default;
|
|
68
|
+
Typography.Text = Text_default;
|
|
69
|
+
Typography.Title = Title_default;
|
|
70
|
+
var Typography_default = Typography;
|
|
71
|
+
|
|
72
|
+
//#endregion
|
|
73
|
+
Object.defineProperty(exports, 'Link_default', {
|
|
74
|
+
enumerable: true,
|
|
75
|
+
get: function () {
|
|
76
|
+
return Link_default;
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
Object.defineProperty(exports, 'Paragraph_default', {
|
|
80
|
+
enumerable: true,
|
|
81
|
+
get: function () {
|
|
82
|
+
return Paragraph_default;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
Object.defineProperty(exports, 'Text_default', {
|
|
86
|
+
enumerable: true,
|
|
87
|
+
get: function () {
|
|
88
|
+
return Text_default;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
Object.defineProperty(exports, 'Title_default', {
|
|
92
|
+
enumerable: true,
|
|
93
|
+
get: function () {
|
|
94
|
+
return Title_default;
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(exports, 'Typography_default', {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
get: function () {
|
|
100
|
+
return Typography_default;
|
|
101
|
+
}
|
|
102
|
+
});
|