Экран справочника и корзины

This commit is contained in:
2025-11-24 15:42:20 +03:00
parent 7cbe8d29e5
commit dc5f1f9f50
11 changed files with 816 additions and 0 deletions

View File

@@ -0,0 +1,239 @@
/* Специфичные стили для экрана корзины */
/* Карточка статистики */
.stats-card {
background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
border-radius: var(--radius-md);
padding: var(--spacing-xl);
margin-bottom: var(--spacing-xxl);
display: flex;
justify-content: space-around;
align-items: center;
box-shadow: var(--shadow-lg);
}
.stat-item {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--spacing-xs);
}
.stat-value {
font-size: 32px;
font-weight: var(--font-weight-bold);
color: var(--color-bg-card);
line-height: 1;
}
.stat-label {
font-size: var(--font-size-small);
color: rgba(255, 255, 255, 0.9);
}
.stat-divider {
width: 1px;
height: 40px;
background: rgba(255, 255, 255, 0.3);
}
/* Секция вклада участников */
.contributors-section {
margin-bottom: var(--spacing-xxl);
}
.section-subtitle {
font-size: var(--font-size-large);
font-weight: var(--font-weight-semibold);
color: var(--color-text-dark);
margin-bottom: var(--spacing-md);
}
.contributors {
display: flex;
gap: var(--spacing-md);
}
.contributor {
flex: 1;
background: var(--color-bg-card);
border-radius: var(--radius-md);
padding: var(--spacing-lg);
display: flex;
flex-direction: column;
align-items: center;
gap: var(--spacing-sm);
box-shadow: var(--shadow-sm);
}
.contributor-avatar {
font-size: 36px;
width: 56px;
height: 56px;
display: flex;
align-items: center;
justify-content: center;
background: var(--color-bg-secondary);
border-radius: 50%;
}
.contributor-name {
font-size: var(--font-size-small);
color: var(--color-text-medium);
}
.contributor-count {
font-size: var(--font-size-xlarge);
font-weight: var(--font-weight-bold);
color: var(--color-primary);
}
/* Секция находок */
.findings-section {
margin-bottom: var(--spacing-xl);
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: var(--spacing-md);
}
.filter-btn {
display: flex;
align-items: center;
gap: var(--spacing-xs);
padding: var(--spacing-xs) var(--spacing-md);
background: var(--color-bg-secondary);
border: none;
border-radius: var(--radius-sm);
font-size: var(--font-size-small);
font-weight: var(--font-weight-medium);
color: var(--color-text-dark);
cursor: pointer;
transition: background var(--transition-fast) ease;
}
.filter-btn:active {
background: #D5DBDB;
}
.filter-icon {
font-size: 10px;
color: var(--color-text-medium);
}
/* Карточка находки */
.finding-card {
background: var(--color-bg-card);
border-radius: var(--radius-md);
padding: var(--spacing-md);
margin-bottom: var(--spacing-md);
display: flex;
gap: var(--spacing-md);
align-items: center;
box-shadow: var(--shadow-sm);
cursor: pointer;
transition: transform var(--transition-fast) ease, box-shadow var(--transition-fast) ease;
}
.finding-card:active {
transform: scale(0.98);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
}
.finding-image {
width: 80px;
height: 80px;
border-radius: var(--radius-sm);
object-fit: cover;
flex-shrink: 0;
}
.finding-content {
flex: 1;
display: flex;
flex-direction: column;
gap: var(--spacing-xs);
}
.finding-header {
display: flex;
justify-content: space-between;
align-items: center;
}
.finding-name {
font-size: var(--font-size-base);
font-weight: var(--font-weight-semibold);
color: var(--color-text-dark);
}
.finding-count {
font-size: var(--font-size-base);
font-weight: var(--font-weight-bold);
color: var(--color-primary);
}
.finding-badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 2px var(--spacing-sm);
border-radius: 12px;
font-size: var(--font-size-tiny);
font-weight: var(--font-weight-semibold);
}
.badge-warning {
background: #FEF5E7;
color: #D68910;
}
.finding-author {
display: flex;
align-items: center;
gap: var(--spacing-xs);
font-size: var(--font-size-small);
}
.author-avatar {
font-size: 16px;
}
.author-name {
color: var(--color-text-dark);
font-weight: var(--font-weight-medium);
}
.finding-time {
color: var(--color-text-medium);
margin-left: auto;
}
.finding-location {
font-size: var(--font-size-small);
color: var(--color-text-medium);
}
.finding-note {
font-size: var(--font-size-small);
color: var(--color-text-dark);
font-style: italic;
padding: var(--spacing-xs) var(--spacing-sm);
background: #FEF5E7;
border-radius: var(--radius-sm);
border-left: 3px solid var(--color-warning);
}
.finding-action {
font-size: 24px;
color: var(--color-text-medium);
background: none;
border: none;
padding: var(--spacing-sm);
cursor: pointer;
flex-shrink: 0;
}

View File

@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>По грибы! - Корзина</title>
<link rel="stylesheet" href="common.css">
<link rel="stylesheet" href="basket-screen.css">
</head>
<body>
<div class="app-container">
<!-- Шапка приложения -->
<header class="app-header">
<div class="header-content">
<img src="../logo/logo.png" alt="Логотип" class="app-logo">
<h1 class="app-title">По грибы!</h1>
</div>
</header>
<!-- Основное содержимое экрана -->
<main class="app-main">
<div class="content-container">
<h2 class="screen-title">Семейная корзина</h2>
<!-- Статистика -->
<div class="stats-card">
<div class="stat-item">
<div class="stat-value">37</div>
<div class="stat-label">грибов</div>
</div>
<div class="stat-divider"></div>
<div class="stat-item">
<div class="stat-value">6</div>
<div class="stat-label">видов</div>
</div>
<div class="stat-divider"></div>
<div class="stat-item">
<div class="stat-value">2:15</div>
<div class="stat-label">в пути</div>
</div>
</div>
<!-- Вклад участников -->
<div class="contributors-section">
<h3 class="section-subtitle">Вклад участников</h3>
<div class="contributors">
<div class="contributor">
<div class="contributor-avatar">👴</div>
<div class="contributor-name">Иван</div>
<div class="contributor-count">18</div>
</div>
<div class="contributor">
<div class="contributor-avatar">👩</div>
<div class="contributor-name">Мария</div>
<div class="contributor-count">10</div>
</div>
<div class="contributor">
<div class="contributor-avatar">👧</div>
<div class="contributor-name">Алиса</div>
<div class="contributor-count">9</div>
</div>
</div>
</div>
<!-- Список находок -->
<div class="findings-section">
<div class="section-header">
<h3 class="section-subtitle">Находки</h3>
<button class="filter-btn">
<span>Все виды</span>
<span class="filter-icon"></span>
</button>
</div>
<!-- Карточка находки -->
<div class="finding-card">
<img src="img/mushrooms/белый.jpg" alt="Белый гриб" class="finding-image">
<div class="finding-content">
<div class="finding-header">
<h4 class="finding-name">Белый гриб</h4>
<span class="finding-count">×12</span>
</div>
<div class="finding-author">
<span class="author-avatar">👴</span>
<span class="author-name">Иван</span>
<span class="finding-time">14:35</span>
</div>
<div class="finding-location">
📍 1.2 км от точки №2
</div>
</div>
<button class="finding-action"></button>
</div>
<div class="finding-card">
<img src="img/mushrooms/лисички.jpg" alt="Лисички" class="finding-image">
<div class="finding-content">
<div class="finding-header">
<h4 class="finding-name">Лисички</h4>
<span class="finding-count">×15</span>
</div>
<div class="finding-author">
<span class="author-avatar">👩</span>
<span class="author-name">Мария</span>
<span class="finding-time">14:20</span>
</div>
<div class="finding-location">
📍 0.8 км от точки №1
</div>
</div>
<button class="finding-action"></button>
</div>
<div class="finding-card">
<img src="img/mushrooms/бледная_поганка.jpg" alt="Бледная поганка" class="finding-image">
<div class="finding-content">
<div class="finding-header">
<h4 class="finding-name">Бледная поганка</h4>
<span class="finding-badge badge-warning">⚠️ Ядовит</span>
</div>
<div class="finding-author">
<span class="author-avatar">👧</span>
<span class="author-name">Алиса</span>
<span class="finding-time">13:45</span>
</div>
<div class="finding-note">
Иван: "Это ядовитый гриб, не брать!"
</div>
</div>
<button class="finding-action"></button>
</div>
</div>
<div class="bottom-spacer"></div>
</div>
</main>
<!-- Нижняя навигационная панель -->
<nav class="app-navigation">
<button class="nav-button">
<span class="nav-icon">🗺️</span>
<span class="nav-label">Маршрут</span>
</button>
<button class="nav-button nav-button-active">
<span class="nav-icon">🧺</span>
<span class="nav-label">Корзина</span>
</button>
<button class="nav-button">
<span class="nav-icon">🏠</span>
<span class="nav-label">Главная</span>
</button>
<button class="nav-button">
<span class="nav-icon">💬</span>
<span class="nav-label">Чат</span>
</button>
<button class="nav-button">
<span class="nav-icon">👥</span>
<span class="nav-label">Группа</span>
</button>
</nav>
<!-- Плавающая кнопка SOS -->
<button class="sos-button">
<span class="sos-icon">🆘</span>
</button>
</div>
</body>
</html>

View File

@@ -0,0 +1,195 @@
/* Специфичные стили для экрана справочника */
/* Поисковая строка */
.search-bar {
display: flex;
align-items: center;
gap: var(--spacing-md);
background: var(--color-bg-card);
border-radius: var(--radius-md);
padding: var(--spacing-md) var(--spacing-lg);
margin-bottom: var(--spacing-lg);
box-shadow: var(--shadow-sm);
}
.search-icon {
font-size: 20px;
color: var(--color-text-medium);
}
.search-input {
flex: 1;
border: none;
outline: none;
font-size: var(--font-size-base);
font-family: var(--font-family);
color: var(--color-text-dark);
background: transparent;
}
.search-input::placeholder {
color: var(--color-text-medium);
}
/* Фильтры-чипсы */
.filter-chips {
display: flex;
gap: var(--spacing-sm);
overflow-x: auto;
margin-bottom: var(--spacing-xxl);
padding-bottom: var(--spacing-xs);
-webkit-overflow-scrolling: touch;
}
.filter-chips::-webkit-scrollbar {
display: none;
}
.chip {
padding: var(--spacing-xs) var(--spacing-lg);
border: 2px solid var(--color-border);
border-radius: 20px;
background: var(--color-bg-card);
font-size: var(--font-size-small);
font-weight: var(--font-weight-medium);
color: var(--color-text-dark);
white-space: nowrap;
cursor: pointer;
transition: all var(--transition-fast) ease;
}
.chip:active {
transform: scale(0.95);
}
.chip-active {
background: var(--color-primary);
border-color: var(--color-primary);
color: var(--color-bg-card);
}
/* Список грибов */
.mushrooms-list {
display: flex;
flex-direction: column;
gap: var(--spacing-lg);
}
/* Карточка гриба */
.mushroom-card {
background: var(--color-bg-card);
border-radius: var(--radius-md);
overflow: hidden;
box-shadow: var(--shadow-md);
cursor: pointer;
transition: transform var(--transition-fast) ease, box-shadow var(--transition-fast) ease;
}
.mushroom-card:active {
transform: scale(0.99);
box-shadow: var(--shadow-sm);
}
.card-danger {
border: 2px solid var(--color-danger);
}
.mushroom-image {
width: 100%;
height: 180px;
object-fit: cover;
}
.mushroom-info {
padding: var(--spacing-lg);
}
.mushroom-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: var(--spacing-sm);
margin-bottom: var(--spacing-xs);
}
.mushroom-name {
font-size: var(--font-size-large);
font-weight: var(--font-weight-semibold);
color: var(--color-text-dark);
flex: 1;
}
.mushroom-badge {
display: inline-flex;
align-items: center;
gap: 4px;
padding: 4px var(--spacing-md);
border-radius: 16px;
font-size: var(--font-size-tiny);
font-weight: var(--font-weight-semibold);
white-space: nowrap;
}
.badge-safe {
background: #D5F4E6;
color: var(--color-success);
}
.badge-danger {
background: #FADBD8;
color: var(--color-danger);
}
.mushroom-latin {
font-size: var(--font-size-small);
font-style: italic;
color: var(--color-text-medium);
margin-bottom: var(--spacing-md);
}
.mushroom-season {
display: flex;
align-items: center;
gap: var(--spacing-xs);
font-size: var(--font-size-small);
color: var(--color-text-dark);
margin-bottom: var(--spacing-md);
}
.season-icon {
font-size: 16px;
}
.mushroom-description {
font-size: var(--font-size-base);
line-height: var(--line-height-relaxed);
color: var(--color-text-dark);
margin-bottom: var(--spacing-md);
}
.mushroom-tags {
display: flex;
flex-wrap: wrap;
gap: var(--spacing-xs);
}
.tag {
padding: 4px var(--spacing-md);
background: var(--color-bg-secondary);
border-radius: 12px;
font-size: var(--font-size-tiny);
font-weight: var(--font-weight-medium);
color: var(--color-text-dark);
}
.warning-block {
margin-top: var(--spacing-md);
padding: var(--spacing-md);
background: #FEF5E7;
border-left: 4px solid var(--color-danger);
border-radius: var(--radius-sm);
font-size: var(--font-size-small);
font-weight: var(--font-weight-semibold);
color: var(--color-danger);
}

View File

@@ -0,0 +1,155 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>По грибы! - Справочник</title>
<link rel="stylesheet" href="common.css">
<link rel="stylesheet" href="guide-screen.css">
</head>
<body>
<div class="app-container">
<!-- Шапка приложения -->
<header class="app-header">
<div class="header-content">
<img src="../logo/logo.png" alt="Логотип" class="app-logo">
<h1 class="app-title">По грибы!</h1>
</div>
</header>
<!-- Основное содержимое экрана -->
<main class="app-main">
<div class="content-container">
<h2 class="screen-title">Справочник грибов</h2>
<!-- Поиск -->
<div class="search-bar">
<span class="search-icon">🔍</span>
<input type="text" class="search-input" placeholder="Поиск гриба...">
</div>
<!-- Фильтры -->
<div class="filter-chips">
<button class="chip chip-active">Все</button>
<button class="chip">Съедобные</button>
<button class="chip">Ядовитые</button>
<button class="chip">Условно-съедобные</button>
</div>
<!-- Список грибов -->
<div class="mushrooms-list">
<!-- Карточка гриба - Белый -->
<div class="mushroom-card">
<img src="img/mushrooms/белый.jpg" alt="Белый гриб" class="mushroom-image">
<div class="mushroom-info">
<div class="mushroom-header">
<h3 class="mushroom-name">Белый гриб</h3>
<span class="mushroom-badge badge-safe">✓ Съедобный</span>
</div>
<div class="mushroom-latin">Boletus edulis</div>
<div class="mushroom-season">
<span class="season-icon">📅</span>
<span>Июнь — октябрь</span>
</div>
<div class="mushroom-description">
Ценный съедобный гриб. Шляпка коричневая, ножка толстая, белая.
Мякоть не темнеет на срезе.
</div>
<div class="mushroom-tags">
<span class="tag">Лиственный лес</span>
<span class="tag">Хвойный лес</span>
</div>
</div>
</div>
<!-- Карточка гриба - Лисички -->
<div class="mushroom-card">
<img src="img/mushrooms/лисички.jpg" alt="Лисички" class="mushroom-image">
<div class="mushroom-info">
<div class="mushroom-header">
<h3 class="mushroom-name">Лисичка обыкновенная</h3>
<span class="mushroom-badge badge-safe">✓ Съедобный</span>
</div>
<div class="mushroom-latin">Cantharellus cibarius</div>
<div class="mushroom-season">
<span class="season-icon">📅</span>
<span>Июнь — сентябрь</span>
</div>
<div class="mushroom-description">
Яркий оранжево-желтый гриб. Шляпка воронковидная с волнистым краем.
Не червивеет.
</div>
<div class="mushroom-tags">
<span class="tag">Хвойный лес</span>
<span class="tag">Смешанный лес</span>
</div>
</div>
</div>
<!-- Карточка гриба - Бледная поганка -->
<div class="mushroom-card card-danger">
<img src="img/mushrooms/бледная_поганка.jpg" alt="Бледная поганка" class="mushroom-image">
<div class="mushroom-info">
<div class="mushroom-header">
<h3 class="mushroom-name">Бледная поганка</h3>
<span class="mushroom-badge badge-danger">⚠️ Ядовитый</span>
</div>
<div class="mushroom-latin">Amanita phalloides</div>
<div class="mushroom-season">
<span class="season-icon">📅</span>
<span>Июль — октябрь</span>
</div>
<div class="mushroom-description">
<strong>СМЕРТЕЛЬНО ЯДОВИТ!</strong> Шляпка зеленоватая или белая,
ножка с кольцом и мешковидным влагалищем у основания.
</div>
<div class="warning-block">
⚠️ Можно спутать с шампиньонами или сыроежками
</div>
</div>
</div>
</div>
<div class="bottom-spacer"></div>
</div>
</main>
<!-- Нижняя навигационная панель -->
<nav class="app-navigation">
<button class="nav-button">
<span class="nav-icon">🗺️</span>
<span class="nav-label">Маршрут</span>
</button>
<button class="nav-button">
<span class="nav-icon">🧺</span>
<span class="nav-label">Корзина</span>
</button>
<button class="nav-button nav-button-active">
<span class="nav-icon">🏠</span>
<span class="nav-label">Главная</span>
</button>
<button class="nav-button">
<span class="nav-icon">💬</span>
<span class="nav-label">Чат</span>
</button>
<button class="nav-button">
<span class="nav-icon">👥</span>
<span class="nav-label">Группа</span>
</button>
</nav>
<!-- Плавающая кнопка SOS -->
<button class="sos-button">
<span class="sos-icon">🆘</span>
</button>
</div>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB