This commit is contained in:
Dev
2026-01-20 23:19:18 +05:00
parent 29f568cc95
commit 63dbd64911
2 changed files with 104 additions and 16 deletions

View File

@@ -129,6 +129,7 @@ interface BentoCardProps {
Этап 5: ██████████ 100%
Этап 6: ██████████ 100%
Этап 7: ██████████ 100%
Этап 8: ██████████ 100%
─────────────────────
Общий: ██████████ 100%
```
@@ -195,12 +196,12 @@ interface BentoCardProps {
### Этап 8: Полировка
> Финальные штрихи
| # | Задача |
|---|--------|
| 8.1 | Анимации появления карточек (stagger) |
| 8.2 | Микро-взаимодействия (hover glow) |
| 8.3 | Тестирование на разных устройствах |
| 8.4 | Performance check (особенно blur на mobile) |
| # | Задача | Статус | Заметки |
|---|--------|--------|---------|
| 8.1 | Stagger animation для карточек | `[x]` | `bentoFadeIn` keyframe + `--stagger` CSS var (50ms delay каждая) |
| 8.2 | Micro-interactions | `[x]` | hover: `translateY(-4px)`, active: `scale(0.98)` |
| 8.3 | Кастомный scrollbar | `[x]` | 6px thin, dark-700 thumb, transparent track |
| 8.4 | prefers-reduced-motion | `[x]` | Анимации отключаются для accessibility |
---
@@ -234,6 +235,23 @@ interface BentoCardProps {
- **Profile.tsx**: 3 карточки `bento-card`
- **Info.tsx**: FAQ items, rules, privacy, offer `bento-card`
### 2026-01-20 — Phase 8 Complete (Полировка)
- **Stagger Animation:** `@keyframes bentoFadeIn` (fade-in + translateY(16px0))
- **CSS Variable `--stagger`:** Для delay между карточками (50ms increments)
- **Micro-interactions:**
- Hover: `translateY(-4px)` + enhanced shadow
- Active: `scale(0.98)` + faster transition (150ms)
- **Custom Scrollbar:** 6px thin, dark-700 thumb, transparent track
- **Accessibility:** `prefers-reduced-motion` disables animations
- **Light Theme:** Matching hover/active states for `.light` mode
**Использование stagger в JSX:**
```jsx
<div className="bento-card" style={{ '--stagger': 0 }}>Card 1</div>
<div className="bento-card" style={{ '--stagger': 1 }}>Card 2</div>
<div className="bento-card" style={{ '--stagger': 2 }}>Card 3</div>
```
### 2026-01-20 — Phase 7 Complete (Header + Font)
- **Шрифт:** Urbanist Manrope (Google Fonts, tailwind.config.js, globals.css)
- **Header Container:** `glass` + `shadow-lg shadow-black/10` (убран border-b)

View File

@@ -110,6 +110,34 @@
html {
overflow-x: hidden;
scrollbar-width: thin;
scrollbar-color: rgb(var(--color-dark-700)) transparent;
}
::-webkit-scrollbar {
width: 6px;
height: 6px;
}
::-webkit-scrollbar-track {
background: transparent;
}
::-webkit-scrollbar-thumb {
background: rgb(var(--color-dark-700));
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: rgb(var(--color-dark-600));
}
.light ::-webkit-scrollbar-thumb {
background: rgb(var(--color-champagne-400));
}
.light ::-webkit-scrollbar-thumb:hover {
background: rgb(var(--color-champagne-500));
}
/* Smooth scroll only on desktop - mobile uses native */
@@ -338,11 +366,13 @@
/* ========== BENTO DESIGN SYSTEM ========== */
.bento-card {
@apply bg-dark-900/70 border border-dark-700/40
transition-all duration-300 ease-smooth;
@apply bg-dark-900/70 border border-dark-700/40;
border-radius: var(--bento-radius);
padding: var(--bento-padding);
transform: translateZ(0);
/* Stagger animation support */
animation: bentoFadeIn 0.5s cubic-bezier(0.16, 1, 0.3, 1) both;
animation-delay: calc(var(--stagger, 0) * 50ms);
}
@media (min-width: 1024px) {
@@ -351,14 +381,41 @@
}
}
/* Disable animation if user prefers reduced motion */
@media (prefers-reduced-motion: reduce) {
.bento-card {
animation: none;
}
}
.bento-card-hover {
@apply bento-card cursor-pointer
hover:bg-dark-800/60 hover:border-dark-600/50
hover:shadow-lg hover:scale-[1.01] active:scale-[0.99];
@apply bento-card cursor-pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.bento-card-hover:hover {
@apply bg-dark-800/60 border-dark-600/50 shadow-lg;
transform: translateY(-4px);
}
.bento-card-hover:active {
transform: scale(0.98);
transition-duration: 0.15s;
}
.bento-card-glow {
@apply bento-card hover:shadow-glow hover:border-accent-500/30 hover:scale-[1.01];
@apply bento-card cursor-pointer;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.bento-card-glow:hover {
@apply shadow-glow border-accent-500/30;
transform: translateY(-4px);
}
.bento-card-glow:active {
transform: scale(0.98);
transition-duration: 0.15s;
}
.bento-grid {
@@ -390,12 +447,14 @@
}
}
.light .bento-card-hover {
@apply hover:bg-white hover:border-champagne-400/50 hover:shadow-md;
.light .bento-card-hover:hover {
@apply bg-white border-champagne-400/50 shadow-md;
transform: translateY(-4px);
}
.light .bento-card-glow {
@apply hover:shadow-lg hover:border-accent-400/40;
.light .bento-card-glow:hover {
@apply shadow-lg border-accent-400/40;
transform: translateY(-4px);
}
/* ========== DARK THEME COMPONENTS (default) ========== */
@@ -1016,6 +1075,17 @@
}
/* Animations */
@keyframes bentoFadeIn {
0% {
opacity: 0;
transform: translateY(16px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
@keyframes shimmer {
0% { background-position: -200% 0; }
100% { background-position: 200% 0; }