From 1d7dbe1eaa911df6eaf198482b535d0a627043c7 Mon Sep 17 00:00:00 2001 From: Xor290 Date: Sun, 28 Jun 2026 12:24:32 +0200 Subject: [PATCH] chore: build --- .../src/pages/User/ConsultationHistorique.css | 580 ++++++++++++++++++ 1 file changed, 580 insertions(+) diff --git a/frontend-prep/src/pages/User/ConsultationHistorique.css b/frontend-prep/src/pages/User/ConsultationHistorique.css index 141fc8c7..d09ff297 100644 --- a/frontend-prep/src/pages/User/ConsultationHistorique.css +++ b/frontend-prep/src/pages/User/ConsultationHistorique.css @@ -1,3 +1,565 @@ +/* ============================================ + ConsultationHistorique.css — style mobile + ============================================ */ + +.history-container { + width: 100%; + min-height: 100vh; + padding: clamp(1rem, 3vw, 2rem); + padding-top: calc(60px + clamp(1rem, 3vw, 1.5rem)); + max-width: 900px; + margin: 0 auto; +} + +/* ============================================ + TITRE PAGE + ============================================ */ + +.history-title { + font-size: 1.5rem; + font-weight: 700; + color: var(--text); + margin: 0 0 1.25rem 0; + margin-top: -70px; +} + +/* ============================================ + STATS GRID — cartes centrées (style mobile) + ============================================ */ + +.stats-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.875rem; + margin-bottom: 1rem; +} + +.stat-card2:last-child:nth-child(odd) { + grid-column: 1 / -1; +} + +.stat-card2 { + background: var(--surface); + border: 1px solid var(--border); + border-radius: 12px; + padding: 1.25rem 1rem; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + gap: 0.35rem; + transition: + transform 0.2s, + border-color 0.2s, + box-shadow 0.2s; + cursor: default; +} + +.stat-card2:hover { + transform: translateY(-2px); + border-color: #7c3aed; + box-shadow: 0 6px 20px rgba(124, 58, 237, 0.25); +} + +.stat-card2.stat-card-danger { + border-color: rgba(239, 68, 68, 0.4); + background: rgba(239, 68, 68, 0.06); +} + +.stat-card2.stat-card-warning { + border-color: rgba(245, 158, 11, 0.4); + background: rgba(245, 158, 11, 0.06); +} + +.stat-icon { + width: 44px; + height: 44px; + border-radius: 10px; + display: flex; + align-items: center; + justify-content: center; + font-size: 1.1rem; + color: #fff; + margin-bottom: 0.25rem; +} + +.stat-icon.icon-total-orders { + background: linear-gradient(135deg, #7c3aed, #6d28d9); +} +.stat-icon.icon-total { + background: linear-gradient(135deg, #f59e0b, #d97706); +} +.stat-icon.icon-penalty-ok { + background: rgba(100, 116, 139, 0.3); + color: var(--text-muted); +} +.stat-icon.icon-penalty-warning { + background: linear-gradient(135deg, #f59e0b, #d97706); +} +.stat-icon.icon-penalty-critical { + background: linear-gradient(135deg, #ef4444, #dc2626); + animation: pulse-danger 2s ease-in-out infinite; +} + +@keyframes pulse-danger { + 0%, + 100% { + box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.5); + } + 50% { + box-shadow: 0 0 0 8px rgba(239, 68, 68, 0); + } +} + +.stat-value { + color: var(--text); + font-size: 1.75rem; + font-weight: 700; + margin: 0; + line-height: 1; +} + +.stat-value.value-danger { + color: #ef4444; +} +.stat-value.value-warning { + color: #f59e0b; +} + +.stat-label { + color: var(--text-muted); + font-size: 0.78rem; + margin: 0; + font-weight: 500; +} + +/* ============================================ + BOUTON PARRAINAGE + ============================================ */ + +.referral-btn-row { + display: flex; + align-items: center; + gap: 0.75rem; + background: var(--surface); + border: 1px solid rgba(124, 58, 237, 0.3); + border-radius: 10px; + padding: 0.875rem 1rem; + margin-bottom: 1.25rem; + cursor: pointer; + transition: + background 0.2s, + border-color 0.2s; +} + +.referral-btn-row:hover { + background: rgba(124, 58, 237, 0.08); + border-color: rgba(124, 58, 237, 0.6); +} + +.referral-btn-icon { + color: #7c3aed; + font-size: 1rem; + flex-shrink: 0; +} + +.referral-btn-text { + flex: 1; + color: #a78bfa; + font-size: 0.95rem; + font-weight: 600; +} + +.referral-btn-chevron { + color: var(--text-muted); + font-size: 0.85rem; +} + +/* ============================================ + RÉCOMPENSES PAR PALIER + ============================================ */ + +.rewards-section { + background: var(--surface); + border: 1px solid rgba(245, 158, 11, 0.3); + border-radius: 12px; + padding: 1rem; + margin-bottom: 1.25rem; +} + +.rewards-section-title { + display: flex; + align-items: center; + gap: 0.5rem; + color: #f59e0b; + font-size: 0.78rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.8px; + margin: 0 0 0.4rem 0; +} + +.rewards-section-icon { + font-size: 0.85rem; +} + +.rewards-section-desc { + color: var(--text-muted); + font-size: 0.85rem; + font-style: italic; + margin: 0 0 0.875rem 0; +} + +.rewards-pools { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.reward-pool-card { + background: rgba(245, 158, 11, 0.07); + border: 1px solid rgba(245, 158, 11, 0.2); + border-radius: 8px; + padding: 0.75rem; +} + +.reward-pool-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.5rem; +} + +.reward-pool-name { + font-size: 0.9rem; + font-weight: 600; + color: var(--text-primary); +} + +.reward-pool-pts { + font-size: 0.85rem; + font-weight: 700; + color: #f59e0b; +} + +.reward-eligible-cats { + display: flex; + flex-wrap: wrap; + gap: 0.35rem; + margin-bottom: 0.5rem; +} + +.reward-eligible-cat { + font-size: 0.78rem; + font-weight: 600; + color: #10b981; + background: rgba(16, 185, 129, 0.12); + border-radius: 4px; + padding: 2px 7px; +} + +.reward-progress-bar { + height: 6px; + background: rgba(245, 158, 11, 0.15); + border-radius: 3px; + overflow: hidden; + margin-bottom: 0.4rem; +} + +.reward-progress-fill { + height: 100%; + background: linear-gradient(90deg, #f59e0b, #fbbf24); + border-radius: 3px; + transition: width 0.4s ease; +} + +.reward-pool-info { + font-size: 0.8rem; + margin-bottom: 0.5rem; +} + +.reward-available { + color: #10b981; + font-weight: 600; +} + +.reward-remaining { + color: var(--text-muted); +} + +.reward-feedback { + font-size: 0.82rem; + font-style: italic; + margin: 0.25rem 0 0.4rem; +} + +.reward-feedback-success { + color: #10b981; +} + +.reward-feedback-error { + color: #ef4444; +} + +.reward-claim-btn { + width: 100%; + background: linear-gradient(135deg, #f59e0b, #d97706); + color: #fff; + border: none; + border-radius: 6px; + padding: 0.55rem 1rem; + font-size: 0.88rem; + font-weight: 700; + cursor: pointer; + transition: opacity 0.2s; +} + +.reward-claim-btn:hover:not(:disabled) { + opacity: 0.88; +} + +.reward-claim-btn:disabled { + opacity: 0.5; + cursor: default; +} + +/* ============================================ + SECTION TITLE + ============================================ */ + +.section-title { + color: var(--text-muted); + font-size: 0.78rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 1px; + margin: 0 0 0.875rem 0; +} + +/* ============================================ + ORDER CARDS + ============================================ */ + +.orders-list { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.order-card { + background: var(--surface); + border: 1px solid var(--border); + border-radius: 12px; + padding: 1rem 1.125rem; + cursor: pointer; + transition: + transform 0.15s, + border-color 0.15s, + box-shadow 0.15s; +} + +.order-card:hover { + transform: translateY(-1px); + border-color: #7c3aed; + box-shadow: 0 4px 16px rgba(124, 58, 237, 0.2); +} + +.order-card:active { + transform: translateY(0); +} + +.order-card-header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 0.75rem; +} + +.order-card-number { + color: var(--text); + font-size: 1rem; + font-weight: 600; +} + +.order-card-badge { + display: inline-flex; + align-items: center; + padding: 0.3rem 0.75rem; + border-radius: 20px; + font-size: 0.78rem; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.5px; + color: #a78bfa; + border: 1.5px solid #7c3aed; + background: transparent; +} + +.order-card-row { + display: flex; + align-items: flex-start; + gap: 0.5rem; + margin-bottom: 0.4rem; +} + +.order-card-row:last-of-type { + margin-bottom: 0; +} + +.order-card-row-icon { + color: var(--text-muted); + font-size: 0.8rem; + margin-top: 0.2rem; + flex-shrink: 0; + width: 14px; +} + +.order-card-row-text { + color: var(--text-muted); + font-size: 0.88rem; + line-height: 1.4; + flex: 1; +} + +.order-card-footer { + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 0.875rem; + padding-top: 0.875rem; + border-top: 1px solid var(--border); +} + +.order-card-total { + color: #10b981; + font-size: 1.1rem; + font-weight: 700; +} + +.order-card-referral { + font-size: 0.72rem; + font-weight: 500; + color: #10b981; + opacity: 0.75; +} + +.order-card-chevron { + color: var(--text-muted); + font-size: 0.9rem; +} + +/* ============================================ + LOADING + ============================================ */ + +.loading-container { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + min-height: 60vh; + gap: 1rem; +} + +.loading-spinner { + width: 50px; + height: 50px; +} + +.spinner { + width: 100%; + height: 100%; + border: 3px solid var(--border); + border-top-color: #7c3aed; + border-radius: 50%; + animation: spin 0.9s linear infinite; +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +.loading-text { + color: var(--text-muted); + font-size: 1rem; + margin: 0; +} + +/* ============================================ + ERROR + ============================================ */ + +.error-banner { + display: flex; + align-items: center; + gap: 1rem; + background: rgba(109, 40, 217, 0.08); + border: 1px solid rgba(124, 58, 237, 0.4); + border-radius: 10px; + padding: 1rem 1.25rem; + margin-bottom: 1.5rem; + color: #c4b5fd; +} + +.error-banner p { + margin: 0; + font-weight: 500; +} + +/* ============================================ + EMPTY STATE + ============================================ */ + +.empty-history { + text-align: center; + padding: 4rem 2rem; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 12px; + margin-top: 1rem; +} + +.empty-icon { + font-size: 4rem; + color: var(--text-muted); + opacity: 0.4; + margin-bottom: 1.25rem; +} + +.empty-history h2 { + color: var(--text); + font-size: 1.4rem; + margin: 0 0 0.5rem 0; + font-weight: 600; +} + +.empty-history p { + color: var(--text-muted); + font-size: 0.95rem; + margin: 0 0 1.75rem 0; +} + +.browse-button { + background: linear-gradient(to right, #7c3aed, #6d28d9); + color: white; + border: none; + padding: 0.7rem 1.75rem; + border-radius: 8px; + font-size: 0.95rem; + font-weight: 600; + cursor: pointer; + transition: + opacity 0.2s, + transform 0.2s; +} + +.browse-button:hover { + opacity: 0.9; + transform: translateY(-1px); +} + /* ============================================ MODAL — CHOIX DU PRODUIT RÉCOMPENSE ============================================ */ @@ -210,3 +772,21 @@ border-radius: 14px; } } + +/* ============================================ + RESPONSIVE + ============================================ */ + +@media (max-width: 600px) { + .stats-grid { + gap: 0.625rem; + } + + .stat-value { + font-size: 1.5rem; + } + + .order-card-number { + font-size: 0.9rem; + } +}