# π¨ Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ ΡΠ΅ΠΊΡΡΠ° WitLab Funnel
## ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ΄Π΅Π»ΡΡΡ ΡΠ°ΡΡΠΈ ΡΠ΅ΠΊΡΡΠ° **ΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ** Π² Π»ΡΠ±ΡΡ
ΡΠ΅ΠΊΡΡΠΎΠ²ΡΡ
ΠΏΠΎΠ»ΡΡ
Π²ΠΎΡΠΎΠ½ΠΊΠΈ. Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈ.
## Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ
### **ΠΠΈΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ**
```
**ΡΠ΅ΠΊΡΡ** - Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΠ΅ΠΊΡΡ ΠΆΠΈΡΠ½ΡΠΌ ΡΡΠΈΡΡΠΎΠΌ
```
### ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
#### π **Π Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ
:**
```
"ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² **WitLab**!"
```
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "ΠΠΎΠ±ΡΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°ΡΡ Π² **WitLab**!"
#### π° **Π ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΡΠΊΠΈΠ΄ΠΎΠΊ:**
```
"**50%** ΡΠΊΠΈΠ΄ΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ!"
```
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "**50%** ΡΠΊΠΈΠ΄ΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ!"
#### π **Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ
Π°Π½Π°Π»ΠΈΠ·Π°:**
```
"ΠΠ°Ρ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ½Π΅Ρ** Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π²Π°ΡΠΈΡ
ΠΎΡΠ²Π΅ΡΠΎΠ²"
```
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "ΠΠ°Ρ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ½Π΅Ρ** Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π°Π½Π°Π»ΠΈΠ·Π° Π²Π°ΡΠΈΡ
ΠΎΡΠ²Π΅ΡΠΎΠ²"
#### π€ **Π‘ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ:**
```
"ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΠ΅ΠΌ, **ΠΠ½Π½Π°**! ΠΠ°Ρ ΠΏΠΎΡΡΡΠ΅Ρ Π³ΠΎΡΠΎΠ²."
```
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ: "ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΠ΅ΠΌ, **ΠΠ½Π½Π°**! ΠΠ°Ρ ΠΏΠΎΡΡΡΠ΅Ρ Π³ΠΎΡΠΎΠ²."
## ΠΠ΄Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
### β
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ:
- **ΠΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ** Π² ΡΠΊΡΠ°Π½Π°Ρ
Π²ΠΎΡΠΎΠ½ΠΊΠΈ (title, subtitle, description)
- **Info ΡΠΊΡΠ°Π½Ρ** - ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
- **Soulmate Portrait** - ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΡΡΡΠ΅ΡΠ°
- **Date ΡΠΊΡΠ°Π½Ρ** - info ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ
- **Form ΡΠΊΡΠ°Π½Ρ** - Π»Π΅ΠΉΠ±Π»Ρ ΠΈ placeholder
- **Coupon ΡΠΊΡΠ°Π½Ρ** - Π²ΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»Ρ ΠΊΡΠΏΠΎΠ½Π°
### π§ ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ:
#### 1. **ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠ΅:**
```typescript
// Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΠΊΡΡ Π½Π° Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ
import { hasTextMarkup } from "@/lib/text-markup";
if (hasTextMarkup("ΠΠ°Ρ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ** ΠΏΠ°ΡΡΠ½Π΅Ρ")) {
// ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ
}
```
#### 2. **Π£Π½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°:**
```typescript
// ΠΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Typography Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΡ
{text}
```
#### 3. **ΠΡΠ΅Π²ΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅:**
```typescript
// Π Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΆΠΈΠ²ΠΎΠ΅ ΠΏΡΠ΅Π²ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ
```
## ΠΡΠΈΠΌΠ΅ΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ
ΡΠΈΠΏΠΎΠ² ΡΠΊΡΠ°Π½ΠΎΠ²
### π **Info ΡΠΊΡΠ°Π½Ρ:**
```json
{
"template": "info",
"description": {
"text": "ΠΡ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ **12 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ²** Π°Π½ΠΊΠ΅Ρ ΠΈ Π½Π°ΡΠ»ΠΈ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΡ** Π΄Π»Ρ Π²Π°Ρ!"
}
}
```
### π **Soulmate Portrait:**
```json
{
"template": "soulmate",
"description": {
"text": "ΠΠ°Ρ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ½Π΅Ρ** Π½Π°ΠΉΠ΄Π΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ **Π³Π»ΡΠ±ΠΎΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°** Π²Π°ΡΠΈΡ
ΠΎΡΠ²Π΅ΡΠΎΠ²"
}
}
```
### π
**Date ΡΠΊΡΠ°Π½Ρ:**
```json
{
"template": "date",
"infoMessage": {
"text": "ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄Π°ΡΡ ΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ **Π·Π½Π°ΠΊΠ° Π·ΠΎΠ΄ΠΈΠ°ΠΊΠ°** ΠΈ **ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ**"
}
}
```
### ποΈ **Coupon ΡΠΊΡΠ°Π½Ρ:**
```json
{
"template": "coupon",
"coupon": {
"title": { "text": "**94% ΡΠΊΠΈΠ΄ΠΊΠ°** ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ!" },
"description": { "text": "ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΠΌΠΎΠΊΠΎΠ΄ **HAIR50** ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΊΠΈΠ΄ΠΊΡ" }
}
}
```
## Π’Π΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄Π΅ΡΠ°Π»ΠΈ
### π§ **ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ:**
#### 1. **Π£ΡΠΈΠ»ΠΈΡΡ (`/lib/text-markup.ts`):**
- `parseTextMarkup()` - ΠΏΠ°ΡΡΠΈΠ½Π³ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π² ΡΠ΅Π³ΠΌΠ΅Π½ΡΡ
- `hasTextMarkup()` - ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ
- `stripTextMarkup()` - ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ
#### 2. **React ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ (`/components/ui/MarkupText/`):**
- `` - ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³ ΡΠ΅ΠΊΡΡΠ° Ρ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΎΠΉ
- `` - ΠΏΡΠ΅Π²ΡΡ Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅
- `useHasMarkup()` - React Ρ
ΡΠΊ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ
#### 3. **ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ (`Typography.tsx`):**
- ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΡ ΠΏΡΠΈ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ `enableMarkup` Π΄Π»Ρ ΡΡΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
- Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ
### π **ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:**
```tsx
// ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΠ°Ρ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ** ΠΏΠ°ΡΡΠ½Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½!
// Π ΡΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅
ΠΠ±ΡΡΠ½ΡΠΉ ΡΠ΅ΠΊΡΡ Ρ **Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ**
// ΠΡΡΠΌΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ MarkupText
**WitLab** - Π½Π°ΠΉΠ΄ΠΈ ΡΠ²ΠΎΡ Π»ΡΠ±ΠΎΠ²Ρ!
```
## ΠΡΡΡΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ
### β
**Π₯ΠΎΡΠΎΡΠΎ:**
- `"ΠΠ°Ρ **ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ** ΠΏΠ°ΡΡΠ½Π΅Ρ Π½Π°ΠΉΠ΄Π΅Π½!"` - Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΠ»ΠΎΠ²
- `"**50%** ΡΠΊΠΈΠ΄ΠΊΠ° ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π³ΠΎΠ΄Π½Ρ"` - Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠΈΡΡ ΠΈ Π°ΠΊΡΠΈΠΉ
- `"ΠΠΎΠ·Π΄ΡΠ°Π²Π»ΡΠ΅ΠΌ, **ΠΠ½Π½Π°**!"` - Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½
### β **ΠΠ·Π±Π΅Π³Π°ΠΉΡΠ΅:**
- `"**ΠΠ΅ΡΡ ΡΠ΅ΠΊΡΡ ΠΆΠΈΡΠ½ΡΠΉ**"` - ΠΏΠΎΡΠ΅ΡΡ ΠΊΠΎΠ½ΡΡΠ°ΡΡΠ°
- `"**Π‘Π»**ΠΎΠ²**ΠΎΠΌ** **ΡΠ°Π·Π±**ΠΈΡ**ΡΠ΅**"` - Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ
- `"****"` - ΠΏΡΡΡΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ
### π‘ **Π‘ΠΎΠ²Π΅ΡΡ:**
1. **ΠΡΠ΄Π΅Π»ΡΠΉΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΡΠ»ΠΎΠ²Π°** - ΠΈΠΌΠ΅Π½Π°, ΠΏΡΠΎΡΠ΅Π½ΡΡ, Π²Π°ΠΆΠ½ΡΠ΅ ΠΏΠΎΠ½ΡΡΠΈΡ
2. **Π‘ΠΎΠ±Π»ΡΠ΄Π°ΠΉΡΠ΅ Π±Π°Π»Π°Π½Ρ** - Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 20% ΡΠ΅ΠΊΡΡΠ° Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΆΠΈΡΠ½ΡΠΌ
3. **Π’Π΅ΡΡΠΈΡΡΠΉΡΠ΅ Π² ΠΏΡΠ΅Π²ΡΡ** - ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ MarkupPreview Π² Π°Π΄ΠΌΠΈΠ½ΠΊΠ΅
4. **Π£ΡΠΈΡΡΠ²Π°ΠΉΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ** - Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Ρ
Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ
## Π‘ΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ
- β
**React 18+**
- β
**TypeScript 5+**
- β
**Next.js 14+**
- β
**Tailwind CSS**
- β
**ΠΠ±ΡΠ°ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ** - ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ ΡΠ΅ΠΊΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ