Skip to content

Refactor from react to tailwindcss + basecoat#7

Merged
pokle merged 6 commits into
masterfrom
claude/refactor-maps-tailwind-ExuXs
Jan 20, 2026
Merged

Refactor from react to tailwindcss + basecoat#7
pokle merged 6 commits into
masterfrom
claude/refactor-maps-tailwind-ExuXs

Conversation

@pokle
Copy link
Copy Markdown
Owner

@pokle pokle commented Jan 20, 2026

Summary

  • Simplify map providers: Remove Leaflet, Google Maps, and MapLibre - now using MapBox GL JS exclusively
  • Migrate UI framework: Replace Shoelace web components with Tailwind CSS and Basecoat UI
  • Restructure analysis page layout: New responsive design with header, collapsible sidebar, and full-screen map
  • Remove theme switching: Simplified to single theme using Basecoat defaults

Changes

Map Providers

  • Delete leaflet-provider.ts, google-provider.ts, maplibre-provider.ts, and map-styles.ts
  • Simplify map-provider.ts to only support MapBox
  • Remove maplibre-gl dependency

UI Framework

  • Add tailwindcss, @tailwindcss/vite, and basecoat-css packages
  • Configure Vite with Tailwind CSS plugin
  • Create styles.css with Tailwind, Basecoat, and MapBox GL CSS imports
  • Replace all Shoelace components with Basecoat equivalents (btn, input, alert, etc.)

Layout Restructure

  • Header: App name with hamburger menu (mobile only) and gear icon opening a command menu
  • Waypoint Panel: Left sidebar with file upload, task input, and event list
    • Desktop: Always visible, relative positioning
    • Mobile: Hidden by default, slides in from left, overlays map
  • Map: MapBox GL JS filling remaining viewport space
  • Command Menu: Basecoat command component for display options (Altitude Colors, 3D Track) and sample flights

Bug Fixes

  • Fix MapBox line-gradient interpolation error by ensuring strictly ascending progress values
  • Fix map container visibility with explicit CSS dimensions
  • Fix gap between sidebar and map
  • Fix "Choose IGC" button contrast

Test plan

  • Verify map displays correctly on desktop and mobile
  • Test sidebar toggle on mobile (hamburger menu)
  • Test command menu opens with gear icon and Cmd/Ctrl+K
  • Load sample flights from command menu
  • Upload IGC file via button and drag-and-drop
  • Toggle Altitude Colors and 3D Track options
  • Verify event panel filters events by visible map bounds

- Remove Leaflet, Google Maps, and MapLibre map providers
- Install and configure Tailwind CSS with @tailwindcss/vite plugin
- Add Basecoat UI component library for buttons, inputs, etc.
- Restructure analysis.html with new layout:
  - Header with hamburger menu (mobile) and gear icon command menu
  - Left sidebar (Waypoint Panel) that slides in on mobile
  - MapBox GL JS map filling remaining space
- Replace Shoelace components with Basecoat equivalents
- Remove theme switching functionality
- Update event-panel.ts to use Tailwind utility classes
- Create central styles.css with Tailwind and Basecoat imports
- Update index.html landing page with Tailwind styling
Ensure altitude gradient stops have strictly ascending progress values
by filtering out duplicates and enforcing a minimum increment between
consecutive stops. This fixes the error:
"Input/output pairs for 'interpolate' expressions must be arranged with
input values in strictly ascending order."
- Add min-h-0 to main element to allow flex shrinking
- Add min-h-0 min-w-0 to map container parent for proper flex behavior
- Use explicit CSS positioning and dimensions for #map element
- Add rules for mapboxgl canvas to ensure it fills the container
@pokle pokle changed the title Claude/refactor maps tailwind exu xs Refactor from react to tailwindcss + basecoat Jan 20, 2026
@claude
Copy link
Copy Markdown

claude Bot commented Jan 20, 2026

Code review

This PR removes Shoelace web components and replaces them with Tailwind CSS and Basecoat UI, which violates the project's CLAUDE.md guidelines.

The CLAUDE.md file explicitly requires:

Shoelace Web Components:

  • All UI components use Shoelace web components
  • Load via CDN in HTML files
  • Use Shoelace design tokens for styling (--sl-color-*, --sl-spacing-*, --sl-font-*)
  • Use Shoelace components for all UI elements - avoid custom CSS when Shoelace provides equivalent functionality

This PR:

  • Removes Shoelace CDN links from HTML files
  • Removes class="sl-theme-dark" from <html> elements
  • Replaces all Shoelace components (<sl-button>, <sl-input>, <sl-drawer>, etc.) with Tailwind/Basecoat alternatives
  • Removes all Shoelace design tokens (--sl-color-*, --sl-spacing-*, --sl-font-*)
  • Adds Tailwind CSS and Basecoat UI as replacements

If this migration is intentional, the CLAUDE.md file should be updated as part of this PR to reflect the new UI framework standards.

- CLAUDE.md: Replace Shoelace section with Tailwind CSS + Basecoat docs
  - Document setup, common components, and layout patterns
  - Update coding preferences to reference Basecoat/Tailwind
- specs/igc-analysis-tool-spec.md: Update for MapBox-only architecture
  - Update map display section for MapBox GL JS
  - Update technical architecture file structure
  - Update dependencies list
- specs/optimized-task-line-spec.md: Remove multi-provider references
  - Update map provider integration section for MapBox only
  - Add changelog entry for provider simplification
@pokle pokle merged commit 37dbe49 into master Jan 20, 2026
5 checks passed
@pokle pokle deleted the claude/refactor-maps-tailwind-ExuXs branch January 20, 2026 21:33
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.

2 participants