trips/mock/index.html
Greg Pomerantz 146c7e168c mock: redesign around the planning workflow
- one unified canvas: discovery is a drawer over the map (chips: lunch /
  dinner / afternoon / hotel), the plan rail stays visible — no more
  modal focus-mode / dimmed rail
- smoother discovery: 'you might like' suggestion block in the rail
  (unfilled slots / more-like-this-day), region placeholders open the
  drawer, chat still filters an open drawer
- frictionless replacement: every planned stop card expands to inline
  alternatives with one-click swap (incumbent demotes to backup, new
  stop takes its sequence position); candidate cards are draggable and
  drop onto a same-slot stop (swap) or the plan (hold as idea)
- multi-scale comparison: persistent bottom dock lines up 2-4
  candidates/stops side by side (walk from anchor, walk to hotel,
  duration, price, tags) at both hotel and stop scale, with choose /
  idea actions
- gentler load: states read as in plan / idea / backup, issues panel
  becomes 'nudges' (one-tap fixes, 'this day looks good' when clear),
  budget phrasing ('comfortably paced' / 'running a bit full')
- new day strip: horizontal L1 overview of the whole day (stops, legs,
  buffer, return-to-hotel) with hour axis; click a block to fly
- mobile: drawer becomes a bottom sheet, dock sits above the tab bar
2026-09-08 22:54:33 -04:00

114 lines
3.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Trip</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div id="map"></div>
<!-- ======================= LANDING ======================= -->
<section id="landing">
<div class="land-card">
<h1>Where would you like to go?</h1>
<div class="land-row">
<input id="dest" type="text" placeholder="A city, a region, a country… e.g. Florence" />
<button id="dest-go" class="btn primary">Plan it</button>
</div>
<div class="land-div"><span>or</span></div>
<div id="dropzone">
<div class="dz-icon">🎫</div>
<div class="dz-text"><b>Drop a travel booking to start</b><br>ticket, flight or hotel confirmation</div>
<button id="dz-sample" class="btn ghost small">or start from an example booking</button>
</div>
</div>
</section>
<!-- booking parse modal -->
<div id="parse-modal" class="modal hidden">
<div class="modal-card">
<h2>Parsed booking</h2>
<table id="parse-table"></table>
<div class="modal-actions">
<button class="btn ghost" id="parse-cancel">Cancel</button>
<button class="btn primary" id="parse-confirm">Build plan around it</button>
</div>
</div>
</div>
<!-- ======================= APP ======================= -->
<header id="topbar" class="hidden">
<div class="tb-left">
<span class="crumb" id="crumb">Florence · 1215 Sep</span>
<div class="daytabs" id="daytabs"></div>
</div>
<div class="tb-right">
<span class="badge" id="nudge-badge" title="Plan nudges">✓ looking good</span>
</div>
</header>
<div id="app" class="hidden">
<aside id="rail">
<div id="daystrip"></div>
<div class="rail-block" id="transit-block"></div>
<div class="rail-block" id="sugg-block"></div>
<div id="rail-body"></div>
<div class="rail-foot">
<div class="budget">
<div class="budget-label"><span id="budget-text"></span></div>
<div class="budget-bar"><div id="budget-fill"></div></div>
</div>
<div id="nudges"></div>
<div class="legend">
<span class="tc t-user">·</span> you
<span class="tc t-sched">·</span> booked
<span class="tc t-computed">·</span> computed
<span class="tc t-search">~</span> web
<span class="tc t-llm">·</span> est.
</div>
</div>
</aside>
<div id="mapwrap">
<!-- discovery: a drawer over the map, the plan stays visible behind it -->
<div id="discover" class="hidden">
<div class="disc-head">
<div class="disc-chips" id="disc-chips"></div>
<div id="disc-title"></div>
<button id="disc-x" class="disc-x" title="Close (Esc)"></button>
</div>
<div class="disc-list" id="disc-list"></div>
</div>
<div id="l3-editor" class="hidden">
<div class="l3-title" id="l3-title">Route</div>
<div class="l3-hint">Drag the ● waypoint (or the endpoints) — the duration updates live.</div>
<div class="l3-time">leg time: <span id="l3-time" class="tc t-computed"></span></div>
<button class="btn ghost small" id="l3-close">Done</button>
</div>
</div>
<aside id="chat">
<div id="chat-body"></div>
<div id="chat-input-row">
<input id="chat-input" type="text" placeholder="Ask, direct — or “find a lunch spot”…" />
<button class="btn primary small" id="chat-send"></button>
</div>
</aside>
</div>
<!-- comparison dock: side-by-side alternatives at any scale -->
<div id="dock" class="hidden"></div>
<nav id="mobiletabs" aria-label="Views">
<button data-t="plan" class="on">🗓️ Plan</button>
<button data-t="map">🗺️ Map</button>
<button data-t="chat">💬 Chat</button>
</nav>
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script src="data.js"></script>
<script src="app.js"></script>
</body>
</html>