feat: Улучшение компонентов Dashboard, EmptyState, ErrorAlert и Pagination. Добавлены новые функции, такие как индикаторы тренда, возможность перехода на страницу и улучшенные действия с ошибками. Обновлены стили для повышения удобства использования и доступности.
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m54s
Publish Fast Tabler Docker image / build-and-push-fast (push) Successful in 1m54s
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
# 🚀 Quick Start - UX Improvements
|
||||
|
||||
## Быстрый старт с новыми компонентами
|
||||
|
||||
### 1. Tooltip - добавьте подсказки везде
|
||||
|
||||
```jsx
|
||||
import Tooltip from './components/Tooltip.jsx'
|
||||
|
||||
// На кнопках
|
||||
<Tooltip content="Сохранить изменения" shortcut="Ctrl+S">
|
||||
<button className="btn btn-primary">Сохранить</button>
|
||||
</Tooltip>
|
||||
|
||||
// На иконках
|
||||
<Tooltip content="Редактировать">
|
||||
<IconEdit className="cursor-pointer" onClick={handleEdit} />
|
||||
</Tooltip>
|
||||
```
|
||||
|
||||
### 2. ValidatedInput - формы с валидацией
|
||||
|
||||
```jsx
|
||||
import ValidatedInput from './components/ValidatedInput.jsx'
|
||||
|
||||
<ValidatedInput
|
||||
value={email}
|
||||
onChange={(e) => setEmail(e.target.value)}
|
||||
validate={(val) => ({
|
||||
valid: /\S+@\S+\.\S+/.test(val),
|
||||
message: 'Введите корректный email'
|
||||
})}
|
||||
label="Email"
|
||||
required
|
||||
/>
|
||||
```
|
||||
|
||||
### 3. ErrorAlert - улучшенные ошибки
|
||||
|
||||
```jsx
|
||||
import ErrorAlert from './components/ErrorAlert.jsx'
|
||||
|
||||
<ErrorAlert
|
||||
message="Не удалось загрузить данные"
|
||||
error={error}
|
||||
onRetry={fetchData}
|
||||
onClose={() => setError(null)}
|
||||
/>
|
||||
```
|
||||
|
||||
### 4. LastSaved - покажите когда сохранено
|
||||
|
||||
```jsx
|
||||
import LastSaved from './components/LastSaved.jsx'
|
||||
|
||||
<LastSaved timestamp={lastSavedTime} variant="compact" />
|
||||
```
|
||||
|
||||
### 5. ContextMenu - действия в таблицах
|
||||
|
||||
```jsx
|
||||
import ContextMenu from './components/ContextMenu.jsx'
|
||||
|
||||
<ContextMenu
|
||||
items={[
|
||||
{ label: 'Редактировать', icon: IconEdit, onClick: () => edit(item) },
|
||||
{ label: 'Удалить', icon: IconTrash, onClick: () => remove(item), variant: 'danger' }
|
||||
]}
|
||||
/>
|
||||
```
|
||||
|
||||
### 6. MobileCardView - мобильные таблицы
|
||||
|
||||
```jsx
|
||||
import MobileCardView from './components/MobileCardView.jsx'
|
||||
|
||||
<MobileCardView
|
||||
items={data}
|
||||
renderContent={(item) => (
|
||||
<div>
|
||||
<div className="fw-bold">{item.name}</div>
|
||||
<div className="text-muted small">{item.description}</div>
|
||||
</div>
|
||||
)}
|
||||
actions={[
|
||||
{ label: 'Редактировать', icon: IconEdit, onClick: handleEdit },
|
||||
{ label: 'Удалить', icon: IconTrash, onClick: handleDelete, variant: 'danger' }
|
||||
]}
|
||||
/>
|
||||
```
|
||||
|
||||
### 7. ProgressBar - покажите прогресс
|
||||
|
||||
```jsx
|
||||
import ProgressBar from './components/ProgressBar.jsx'
|
||||
|
||||
<ProgressBar
|
||||
progress={uploadProgress}
|
||||
status="Загрузка файла..."
|
||||
estimatedTime={30}
|
||||
striped
|
||||
animated
|
||||
/>
|
||||
```
|
||||
|
||||
## CSS Классы
|
||||
|
||||
Новые утилитарные классы:
|
||||
|
||||
```jsx
|
||||
// Hover effect на карточках
|
||||
<div className="card card-hover">...</div>
|
||||
|
||||
// Semantic colors
|
||||
<span className="text-status-online">Онлайн</span>
|
||||
<span className="text-status-offline">Оффлайн</span>
|
||||
|
||||
// Touch targets (автоматически на мобильных)
|
||||
<button className="btn btn-icon">...</button>
|
||||
```
|
||||
|
||||
## Полная документация
|
||||
|
||||
📖 **Детали:** `frontend/UX_IMPROVEMENTS.md`
|
||||
📊 **Summary:** `UX_IMPROVEMENTS_SUMMARY.md`
|
||||
|
||||
## Поддержка
|
||||
|
||||
Вопросы? Проблемы? Смотрите примеры в:
|
||||
- `Dashboard.jsx` - использование TrendIndicator, LastSaved, Tooltip
|
||||
- Документацию выше
|
||||
|
||||
Reference in New Issue
Block a user