Benjamin Sutter
da50f3b5ea
feat: premium redesign — DM Serif, refined palette, flat score badges
...
- Design tokens (ds.ts, theme.ts, scoreTheme.ts): new warm palette
(#152642 navy, #f9f8f6 warm white, #e8e7e4 borders, #b8975a gold accent),
flat score tier badges replacing CSS gradients, Inter + DM Serif Display typography
- Card components: white-background cards, DM Serif score numbers, max-2 badge
chips with +N overflow tooltip, editorial score badge positioning
- Layout shell: gold left-accent nav active state, 64px top bar, outlined
workspace chip, DM Serif page titles
- Shared atoms: GenericBadge (outlined/solid variants), ResultFilterBar
(simplified chip styles), DecisionContextPanel (dot metrics, no left accent)
- Global replacement (118 files): #1e3a5f→#152642, #e2e8f0→#e8e7e4,
#f4f6f9→#f9f8f6 — all handled via Node.js for proper UTF-8 safety
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-06-09 22:26:30 +02:00
Benjamin Sutter
e95490eb72
feat: Grundriss-Feature, Listenansicht mit Bildern, Gewerbe-Label, Image-Pool
...
- Grundriss (FloorPlanSection): PropertyUnit.floorPlanUrl?, Property.floorPlanUrl?;
FloorPlanSection in MatchDetail + PropertyDetail; FloorPlanUrlSection in NewListing-Formular
- Listenansicht (MatchCardCompact): horizontales Layout mit 120px Bildstreifen,
Score-Badge, Asset-Label-Overlay, alle 3 grünen Punkte, Anfrage-Button
- Light Industrial → "Gewerbe" überall (NeedInput, NeedCardPreview, CriteriaReviewPanel,
newListingConstants, MyListings, propertyHelpers)
- "Zum Originalinserat"-Button nur bei Maison-Work-Objekten
- Image-Pool: propertyImageResolver mit sequentiellem Pool-Index (keine doppelten Bilder),
nur Innenaufnahmen, rotate()-Trick für Sub-Pools
- Overlay-Labels (Objekttyp + Stadtteil) in LocationPreview + IntelligenceMatchCard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-24 22:12:43 +02:00
Benjamin Sutter
128d28af8d
feat: in-memory inquiry flow — send from card, pipeline, and detail
...
New inquiryStore (Zustand) holds sent inquiries for the session.
InquiryQuickDialog reads from the store (no props), renders wherever needed.
Sent inquiries appear immediately at the top of the Anfragen page.
Entry points:
- Match cards: "Anfrage" button on every card in the results feed
- MatchDetail: primary action in NextActionsPanel
- Pipeline: chat icon on every DraggableCard
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-05-24 18:00:46 +02:00