Livrare Lot 3 (Frontend): aplicație web, aplicație mobilă Android, extensie browser
- Surse complete web (React/Vite) + mobil (React Native/Expo) + extensie (MV3) - Documentație de livrare: ghid utilizare, matrice trasabilitate cerințe, raport testare furnizor - Artefacte binare: imagine Docker didi-frontend:lot3-1.0, APK, extensie v3.2.6 + SHA256SUMS - Configurare adresă platformă externalizată (build args / .env / config.js) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
commit
cec967f953
321 changed files with 80506 additions and 0 deletions
162
extension/popup.html
Normal file
162
extension/popup.html
Normal file
|
|
@ -0,0 +1,162 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>DIDI Analysis Tool</title>
|
||||
<link rel="stylesheet" href="popup.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="container">
|
||||
<!-- Header -->
|
||||
<div class="header">
|
||||
<div class="logo">
|
||||
<h1>didi</h1>
|
||||
</div>
|
||||
<div id="authStatus" class="auth-status">
|
||||
<span class="auth-dot"></span>
|
||||
<span class="auth-text">Checking...</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Login Section (shown when not authenticated) -->
|
||||
<div id="loginSection" class="login-section" style="display: none;">
|
||||
<div class="login-icon">
|
||||
<svg width="40" height="40" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
||||
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2v1.93zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39z" fill="#1fb6bd"/>
|
||||
</svg>
|
||||
</div>
|
||||
<h3 class="login-title">Conectare la DiDi</h3>
|
||||
<p class="login-desc">Autentifică-te cu contul tău DiDi pentru a analiza conținut</p>
|
||||
<button id="loginBtn" class="btn-connect" aria-label="Autentificare cu contul DiDi">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
||||
<path d="M11 7L9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5-5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8v14z" fill="currentColor"/>
|
||||
</svg>
|
||||
Autentificare
|
||||
</button>
|
||||
<div id="loginStatus" class="login-status" role="status" aria-live="polite"></div>
|
||||
</div>
|
||||
|
||||
<!-- Main Screen (shown when API key is set) -->
|
||||
<div id="mainSection" class="main-screen" style="display: none;">
|
||||
<div class="hero-section">
|
||||
<div class="hero-icon">
|
||||
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<rect x="8" y="8" width="32" height="32" rx="4" stroke="url(#gradient)" stroke-width="2.5" stroke-dasharray="4 4"/>
|
||||
<circle cx="24" cy="24" r="6" fill="url(#gradient)"/>
|
||||
<defs>
|
||||
<linearGradient id="gradient" x1="8" y1="8" x2="40" y2="40">
|
||||
<stop offset="0%" stop-color="#009198"/>
|
||||
<stop offset="100%" stop-color="#1fb6bd"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
</div>
|
||||
<h2>Analizează conținut</h2>
|
||||
<p class="hero-description">Captură de ecran, pagină, URL sau text — verificate anti-dezinformare</p>
|
||||
|
||||
<div class="button-group">
|
||||
<button id="activateSnipping" class="btn-capture" aria-label="Pornește captura de ecran cu selecție de regiune">
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none">
|
||||
<path d="M3.33 5.83V3.33C3.33 2.87 3.71 2.5 4.17 2.5H6.67M13.33 2.5H15.83C16.29 2.5 16.67 2.87 16.67 3.33V5.83M16.67 14.17V16.67C16.67 17.13 16.29 17.5 15.83 17.5H13.33M6.67 17.5H4.17C3.71 17.5 3.33 17.13 3.33 16.67V14.17" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||||
<circle cx="10" cy="10" r="3" stroke="currentColor" stroke-width="1.5"/>
|
||||
</svg>
|
||||
Screenshot
|
||||
</button>
|
||||
<button id="selectSocialPost" class="btn-capture" style="display: none;"
|
||||
aria-label="Selectează o postare din pagină pentru analiză">
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" aria-hidden="true">
|
||||
<rect x="3" y="4" width="14" height="12" rx="2" stroke="currentColor" stroke-width="1.5"/>
|
||||
<path d="M6 8h8M6 11h5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
Selectează postare
|
||||
</button>
|
||||
<button id="activateVideoSnipping" class="btn-capture" aria-label="Pornește înregistrarea video a unei regiuni">
|
||||
<svg width="20" height="20" viewBox="0 0 20 20" fill="none">
|
||||
<rect x="2.5" y="5" width="11" height="10" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
|
||||
<path d="M13.5 8.5L17 6V14L13.5 11.5V8.5Z" fill="currentColor"/>
|
||||
<circle cx="6" cy="10" r="1.5" fill="#EF4444"/>
|
||||
</svg>
|
||||
Record Video
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- URL Analysis Section -->
|
||||
<div class="text-analysis-section">
|
||||
<div class="section-title" id="urlSectionTitle">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<path d="M6.5 9.5a3 3 0 004.24 0l2.83-2.83a3 3 0 00-4.24-4.24L8 3.76M9.5 6.5a3 3 0 00-4.24 0L2.43 9.33a3 3 0 004.24 4.24L8 12.24" stroke="#1fb6bd" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
Analizează URL
|
||||
</div>
|
||||
<div class="url-input-group">
|
||||
<input type="url" id="urlInput" class="url-input" placeholder="https://exemplu.ro/articol"
|
||||
aria-labelledby="urlSectionTitle" autocomplete="off">
|
||||
</div>
|
||||
<div class="button-group">
|
||||
<button id="analyzeCurrentTab" class="btn-secondary" aria-label="Analizează adresa paginii curente">
|
||||
Pagina curentă
|
||||
</button>
|
||||
<button id="analyzeUrlBtn" class="btn-analyze" disabled aria-label="Analizează URL-ul introdus">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<path d="M8 2L10 6L14 7L10 8L8 14L6 8L2 7L6 6L8 2Z" fill="currentColor"/>
|
||||
</svg>
|
||||
Analizează URL
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- Text Analysis Section -->
|
||||
<div class="text-analysis-section">
|
||||
<div class="section-title" id="textSectionTitle">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<path d="M2 4h12M2 8h12M2 12h8" stroke="#1fb6bd" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
Analizează text
|
||||
</div>
|
||||
<textarea id="textInput" placeholder="Lipește sau selectează în pagină textul de analizat..."
|
||||
maxlength="5000" aria-labelledby="textSectionTitle"></textarea>
|
||||
<div class="text-info">
|
||||
<span id="charCount">0</span> / 5000 caractere
|
||||
</div>
|
||||
<button id="analyzeText" class="btn-analyze" disabled aria-label="Analizează textul introdus">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<path d="M8 2L10 6L14 7L10 8L8 14L6 8L2 7L6 6L8 2Z" fill="currentColor"/>
|
||||
</svg>
|
||||
Analizează text
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<div class="divider"></div>
|
||||
|
||||
<!-- Privacy note -->
|
||||
<p class="privacy-note">
|
||||
Conținutul trimis (text, URL, capturi) este folosit exclusiv pentru analiza anti-dezinformare.
|
||||
Capturile de ecran necesită consimțământul tău explicit la prima utilizare.
|
||||
</p>
|
||||
|
||||
<!-- History + Disconnect -->
|
||||
<div class="footer-section">
|
||||
<button id="viewHistory" class="btn-secondary" aria-label="Deschide istoricul analizelor">
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
||||
<path d="M8 2V8L11 11M14 8C14 11.31 11.31 14 8 14C4.69 14 2 11.31 2 8C2 4.69 4.69 2 8 2C11.31 2 14 4.69 14 8Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
|
||||
</svg>
|
||||
Istoric
|
||||
</button>
|
||||
<button id="disconnectBtn" class="btn-disconnect" aria-label="Deconectare din contul DiDi">Deconectare</button>
|
||||
</div>
|
||||
|
||||
<!-- Status Messages -->
|
||||
<div id="status" class="status" role="status" aria-live="polite"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="render.js"></script>
|
||||
<script src="popup.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue