Skip to content

Custom areas concept#57

Draft
rawcomposition wants to merge 21 commits into
mainfrom
custom-areas
Draft

Custom areas concept#57
rawcomposition wants to merge 21 commits into
mainfrom
custom-areas

Conversation

@rawcomposition

Copy link
Copy Markdown
Owner

No description provided.

rawcomposition and others added 21 commits July 2, 2026 16:21
- Single blue: replace all sky-* accents with primary/primary-hover
- Global link color now uses the link token (blue-600 for AA contrast)
- Add destructive-hover token; button danger variant uses destructive tokens
- ui/button, ui/input, ui/tabs no longer use raw palette classes
- Default border compat color reads var(--border) instead of gray-200

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Map, targets, species detail, and itinerary now render as children of
a TripLayout that owns Header, TripNav, the 404 guard, and a flex main,
replacing per-page chrome and h-[calc(100%-60px-55px)] layout math.
TripNav derives its active tab and border from the route instead of props.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- New PATCH /v1/trips/:tripId/privacy endpoint (editor-gated) exposing
  the previously unreachable isPublic field
- Share modal: public/private toggle with optimistic update, copy
  view-only link, participant summary with invite/manage entry points
- New ui/switch primitive (Base UI)
- Header Share button now visible at all screen sizes and opens the
  modal instead of navigating to /participants

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…leton, spinner, checkbox)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Card/Alert/Badge/Tooltip/Input consumers now use components/ui equivalents;
ui/input gains a compact sm size; SlideOver rewritten without @headlessui.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Days render as ui/card with dnd-kit drag reorder (new reorder-locations
endpoint replacing up/down moves), trip dates can be set inline via new
PATCH /trips/:id/dates, and the page prints as a clean day sheet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
New /:tripId/overview with cover hero, stats, top-targets teaser,
participants, and an editable trip description (new Trip.description +
PATCH /trips/:id/description). Viewers land on Overview; editors keep
landing on the map. Overview added to trip nav.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…grid

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…sses

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… API

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tokenize targets/overview/toolbar

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…okens, tall inputs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ntact; retire .input class

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- /:tripId now renders Overview for everyone; map moves to /:tripId/map
  (old /overview URLs redirect, map bounces non-editors to the index)
- Every card is an entry point into trip data: hotspot/marker rows open
  their detail sheets, itinerary day rows and target rows deep-link,
  counts live in card headers (Stat cards removed)
- Notes edit via modal instead of edit-in-place
- Documents: per-doc visibility (private/trip/public) and category with
  type icons, edit modal, server-side visibility filtering, public docs
  shown to trip viewers, cascade delete with the trip
- Fix modal-close bug: page click-to-close handler dismissed modals
  opened from portaled dropdown menus (zustand flushes synchronously
  mid-event); ignore clicks whose DOM target is outside the container

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Fix modal flicker: close() left a 500ms timer that nulled modalId
  even after a newer open(); cancel it on open and reschedule on close
- Modal footers follow app convention (right-aligned, Cancel before
  primary); prevent textarea focus ring clipping in Trip notes
- Share: round copy button (shrink-0), participants as avatar stack
  with dashed invite circle instead of a button competing with Done,
  semantic tokens
- Hero avatars: ring hugs the avatar, per-avatar name tooltips, stack
  links to participants
- Itinerary rows: date replaces "Day N" heading (tile keeps the number)
- Target thumbnails keep their 4:3 aspect ratio
- TripNav kebab gains a "More" label on sm+
- Trip cover images now render at 1280x640@2x (was 300x185@2x);
  add backfill-trip-images script (dry-run by default, --apply to run)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Editors can draw a polygon on the map with a live res-6 hex preview
via lazy-loaded h3-js. The area saves to Trip.customArea (new PATCH
/trips/:id/custom-area) and targets across the app fetch from
OpenBirding's POST /targets/h3 instead of the region. The targets
page shows the active area with a one-click revert; the overview
targets widget follows it too.

Requires OpenBirding's h3-targets branch to be deployed first.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@rawcomposition rawcomposition self-assigned this Jul 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant