Addresses the journey-level review (the app felt like 12 tools sharing a stylesheet, not one guided product). File-partitioned changes: Navigation (shell.js): rename Home -> "Start here" with front-door emphasis (.dt-nav-start); reorder Data Cleaners into pipeline order (Clean Text -> Standardize -> Fix Missing -> Find Duplicates); new "Finance" group (Reconcile, PDF to CSV); all stubs moved to a bottom "Coming soon" group, no longer interleaved with working tools. Front door (home.html): a prominent primary "Clean these files for me" that runs the recommended pipeline in order, above the existing per-finding cards (reframed as "fix one thing at a time"). Shared tokens (app.css): .dt-next-step suggestion strip + .dt-nav-start. Teach the order: a slim .dt-next-step strip at the end of each linear cleaner page points to the next pipeline step (Map Columns -> Start here; orchestrator/Finance pages correctly omit it). Local-first: the green "Runs 100% locally" pill now sits in every working tool page's header (home + 8 tools), where client data is entered. Plain English: jargon relabeled on input controls (coerce, E.164, NFC/NFKC, sentinels, survivor rule), technical terms kept in tooltips and audit/output cells only. Stubs (06/08/07): rebuilt to one identical skeleton — info line + plain feature list + a real "Notify me when this ships" button; every disabled control and uploader removed (a dimmed dropzone reads as broken). Intake: full dropzone+chip replaced with the compact "Using <file>" banner on Clean Text, Fix Missing, Find Duplicates, and both Reconcile sides. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
207 lines
10 KiB
HTML
207 lines
10 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>Layout review — File Analysis (Home)</title>
|
|
<link rel="stylesheet" href="app.css">
|
|
</head>
|
|
<body data-page="home">
|
|
<div class="dt-app">
|
|
<aside class="dt-sidebar" id="dt-sidebar"></aside>
|
|
<main class="dt-main">
|
|
<div class="dt-review-banner">
|
|
<span class="dt-mi">visibility</span>
|
|
<span>Static layout preview of the <strong>Home / File Analysis</strong> page, shown with three imported files in the post-analysis state. <a href="index.html">All pages →</a></span>
|
|
</div>
|
|
<div class="dt-main-inner">
|
|
|
|
<!-- Page header: brand block + privacy pill -->
|
|
<header class="dt-page-header">
|
|
<div class="dt-page-brand">
|
|
<div class="dt-page-brand-row">
|
|
<div class="dt-page-brand-mark">D</div>
|
|
<div class="dt-page-brand-words">
|
|
<span class="dt-page-eyebrow">UNALOGIX</span>
|
|
<h1 class="dt-page-wordmark">DataTools</h1>
|
|
</div>
|
|
</div>
|
|
<p class="dt-page-subtitle">Clean. Normalize. Transform.</p>
|
|
</div>
|
|
<span class="dt-privacy-pill">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor">
|
|
<rect x="4" y="11" width="16" height="10" rx="2"/>
|
|
<path d="M8 11V7a4 4 0 018 0v4"/>
|
|
</svg>
|
|
Runs 100% locally
|
|
</span>
|
|
</header>
|
|
|
|
<!-- Files section head -->
|
|
<div class="dt-files-section-head">
|
|
<h2>Files</h2>
|
|
<span class="dt-section-meta">3 files · 4.7 MB total</span>
|
|
</div>
|
|
|
|
<!-- Files card -->
|
|
<div class="dt-card" style="padding-bottom:0">
|
|
<div class="dt-file-row" style="padding:6px 0">
|
|
<button class="dt-btn dt-btn-tertiary" title="Remove">✕</button>
|
|
<span class="dt-file-icon-chip"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6"/></svg></span>
|
|
<span class="dt-file-name">customers_export.csv</span>
|
|
<span class="dt-file-size" style="margin-left:auto">2.1 MB</span>
|
|
</div>
|
|
<div class="dt-file-row" style="padding:6px 0">
|
|
<button class="dt-btn dt-btn-tertiary" title="Remove">✕</button>
|
|
<span class="dt-file-icon-chip"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6"/></svg></span>
|
|
<span class="dt-file-name">q3_transactions.xlsx</span>
|
|
<span class="dt-file-size" style="margin-left:auto">1.8 MB</span>
|
|
</div>
|
|
<div class="dt-file-row" style="padding:6px 0">
|
|
<button class="dt-btn dt-btn-tertiary" title="Remove">✕</button>
|
|
<span class="dt-file-icon-chip"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M14 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V8z"/><path d="M14 2v6h6"/></svg></span>
|
|
<span class="dt-file-name">vendor_list.csv</span>
|
|
<span class="dt-file-size" style="margin-left:auto">0.8 MB</span>
|
|
</div>
|
|
<button class="dt-file-add" style="margin-left:-16px;margin-right:-16px;width:calc(100% + 32px)">
|
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor"><path d="M12 5v14M5 12h14"/></svg> Add more files
|
|
</button>
|
|
</div>
|
|
|
|
<!-- Action bar -->
|
|
<div class="dt-btn-row" style="margin-top:16px">
|
|
<button class="dt-btn dt-btn-primary" style="flex:0 0 auto">Run analysis</button>
|
|
<button class="dt-btn" style="flex:0 0 auto">Clear results</button>
|
|
</div>
|
|
|
|
<hr class="dt-divider">
|
|
|
|
<!-- Stats overview -->
|
|
<div class="dt-stats">
|
|
<div class="dt-stat">
|
|
<div class="dt-stat-label">Rows scanned</div>
|
|
<div class="dt-stat-value">48,210 <span class="dt-stat-unit">rows</span></div>
|
|
</div>
|
|
<div class="dt-stat">
|
|
<div class="dt-stat-label">Total findings</div>
|
|
<div class="dt-stat-value">14</div>
|
|
</div>
|
|
<div class="dt-stat is-warn">
|
|
<div class="dt-stat-label">Warnings</div>
|
|
<div class="dt-stat-value">9 <span class="dt-stat-unit">to review</span></div>
|
|
</div>
|
|
<div class="dt-stat is-info">
|
|
<div class="dt-stat-label">Info</div>
|
|
<div class="dt-stat-value">5 <span class="dt-stat-unit">suggestions</span></div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ======================================================================
|
|
FRONT DOOR — primary path. The orchestrator (09_pipeline_runner)
|
|
wearing a friendly face: maps the analyzer's findings to the
|
|
recommended pipeline (Clean Text → Standardize → Fix Missing →
|
|
Find Duplicates) and runs them in order, returning a downloadable
|
|
result. This is the hero of the page; the per-file findings below
|
|
remain as the manual "fix one thing at a time" path.
|
|
====================================================================== -->
|
|
<div class="dt-card" style="border-color:var(--accent);background:var(--accent-fill);box-shadow:0 1px 2px rgba(28,25,23,0.03),0 0 0 1px var(--accent)">
|
|
<div style="display:flex;align-items:flex-start;gap:14px;flex-wrap:wrap">
|
|
<span class="dt-file-icon-chip" style="width:36px;height:36px;border-radius:var(--r-md)">
|
|
<span class="dt-mi" style="font-family:'Material Symbols Outlined';font-size:20px">auto_awesome</span>
|
|
</span>
|
|
<div style="flex:1;min-width:240px">
|
|
<h3 style="margin:0 0 4px;color:var(--ink)">Recommended</h3>
|
|
<p style="margin:0;color:var(--ink-secondary)">Runs the recommended clean — fix text, standardize formats, fill blanks, remove duplicates — in the right order, then hands you the cleaned file.</p>
|
|
</div>
|
|
<button class="dt-btn dt-btn-primary" style="flex:0 0 auto;align-self:center">
|
|
<span class="dt-mi">auto_fix_high</span> Clean these files for me
|
|
</button>
|
|
</div>
|
|
<!-- Pipeline-step affordance: the order the findings will be resolved in -->
|
|
<div style="display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--accent-fill-strong)">
|
|
<span class="dt-count-pill" style="background:var(--surface);color:var(--ink-secondary)">1 · Clean Text</span>
|
|
<span class="dt-mi" style="font-family:'Material Symbols Outlined';font-size:16px;color:var(--accent)">arrow_forward</span>
|
|
<span class="dt-count-pill" style="background:var(--surface);color:var(--ink-secondary)">2 · Standardize</span>
|
|
<span class="dt-mi" style="font-family:'Material Symbols Outlined';font-size:16px;color:var(--accent)">arrow_forward</span>
|
|
<span class="dt-count-pill" style="background:var(--surface);color:var(--ink-secondary)">3 · Fix Missing</span>
|
|
<span class="dt-mi" style="font-family:'Material Symbols Outlined';font-size:16px;color:var(--accent)">arrow_forward</span>
|
|
<span class="dt-count-pill" style="background:var(--surface);color:var(--ink-secondary)">4 · Find Duplicates</span>
|
|
<span class="dt-caption" style="margin-left:auto">Result downloads when finished</span>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Secondary / manual path — keep full control over each fix -->
|
|
<h3 style="margin-top:24px">Or fix issues one at a time</h3>
|
|
<p class="dt-caption" style="margin:-2px 0 4px">Prefer to handle things yourself? Open any finding to jump straight to the right tool.</p>
|
|
|
|
<!-- Per-file findings panel #1 -->
|
|
<div class="dt-card">
|
|
<div class="dt-finding-group-head">
|
|
<span class="dt-finding-group-chevron" style="transform:rotate(90deg)">chevron_right</span>
|
|
<span class="dt-severity-dot warn"></span>
|
|
<span class="dt-group-filename">customers_export.csv</span>
|
|
<div class="dt-group-counts">
|
|
<span class="dt-count-pill warn">6 warnings</span>
|
|
<span class="dt-count-pill info">2 info</span>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="dt-finding-row">
|
|
<span class="dt-finding-icon warn"><span class="dt-mi">priority_high</span></span>
|
|
<div class="dt-finding-body">
|
|
<p class="dt-finding-title"><strong>312 duplicate rows</strong> across exact + near matches</p>
|
|
<p class="dt-finding-meta">column: email · Find Duplicates →</p>
|
|
</div>
|
|
</div>
|
|
<div class="dt-finding-row">
|
|
<span class="dt-finding-icon warn"><span class="dt-mi">format_color_text</span></span>
|
|
<div class="dt-finding-body">
|
|
<p class="dt-finding-title"><strong>1,204 cells</strong> with leading / trailing whitespace</p>
|
|
<p class="dt-finding-meta">columns: name, city · Clean Text →</p>
|
|
</div>
|
|
</div>
|
|
<div class="dt-finding-row">
|
|
<span class="dt-finding-icon info"><span class="dt-mi">event</span></span>
|
|
<div class="dt-finding-body">
|
|
<p class="dt-finding-title">Mixed date formats in <strong>signup_date</strong></p>
|
|
<p class="dt-finding-meta">3 formats detected · Standardize Formats →</p>
|
|
</div>
|
|
</div>
|
|
|
|
<button class="dt-finding-more">
|
|
<span class="dt-mi">expand_more</span> Show all 8 findings · 5 more
|
|
</button>
|
|
</div>
|
|
|
|
<!-- Per-file findings panel #2 (collapsed) -->
|
|
<div class="dt-card is-collapsed">
|
|
<div class="dt-finding-group-head is-collapsed">
|
|
<span class="dt-finding-group-chevron">chevron_right</span>
|
|
<span class="dt-severity-dot warn"></span>
|
|
<span class="dt-group-filename">q3_transactions.xlsx</span>
|
|
<div class="dt-group-counts">
|
|
<span class="dt-count-pill warn">3 warnings</span>
|
|
<span class="dt-count-pill info">3 info</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Per-file findings panel #3 (clean) -->
|
|
<div class="dt-card is-collapsed">
|
|
<div class="dt-finding-group-head is-collapsed">
|
|
<span class="dt-severity-dot success"></span>
|
|
<span class="dt-group-filename">vendor_list.csv</span>
|
|
<div class="dt-group-counts">
|
|
<span class="dt-count-pill success">no issues</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
</main>
|
|
</div>
|
|
<footer class="dt-footer" id="dt-footer"></footer>
|
|
<script src="shell.js"></script>
|
|
</body>
|
|
</html>
|