Commit Graph

76 Commits

Author SHA1 Message Date
Satyam 4648561e7a feat(dispatch): Phase 1 — LynkDispatch AI skeleton, mock data, routes, sidebar
- mockStore: add DISPATCH_LEADS (12), DISPATCH_REPS (5), DISPATCH_RECOMMENDATIONS
  (pre-baked AI scores + route paths for all 12 leads), dispatchLeads state,
  assignDispatchLead() action
- LynkDispatchPage: 3-panel command center shell with storm banner, live badge,
  Storm Mode toggle, KPI bar with real unassigned count
- App.jsx: routes /admin/dispatch and /owner/dispatch wired
- Layout.jsx: LynkDispatch (Zap icon) added to ADMIN and OWNER sidebar nav
2026-03-21 21:46:09 +05:30
Satyam cd3b6c8cfe fix(leaderboard): fix counter animation and number formatting
- AnimatedNumber: add ScrollTrigger so counters animate on scroll-into-view
  instead of firing immediately on mount (fixes table rows animating before
  the user scrolls to them)
- AnimatedNumber: lock locale to 'en-US' for consistent comma formatting
- LeaderboardPage: lock formatValue locale to 'en-US'
- mockStore: update MOCK_SALES_HISTORY dates from Jan/Feb to March 2026 so
  the default "This Month" filter returns data; previous dates caused all
  agents to show $0 revenue, making the animation appear broken
- mockStore: replace unrealistic amounts ($250K–$520K) with realistic
  residential roofing job values ($12K–$42K per deal)
2026-03-20 17:56:41 +05:30
Satyam 546c202b9f docs: update README for Lead Creation all 8 phases complete
Author: Satyam Rastogi
2026-03-14 23:59:06 +05:30
Satyam 7a73c7bc38 chore: add .claude/ to gitignore
Author: Satyam Rastogi
2026-03-14 23:58:36 +05:30
Satyam c393ae676a feat(leads): Phase 8 — Save action, lead list page, and nav update
Save action (CreateLeadPage):
- Validate required fields: first/last name, 10-digit phone, address, city, lead source
- On failure: Sonner error toast + auto-opens first incomplete section
- On success: Sonner success toast with name + address, redirects to /emp/fa/leads
- Desktop save bar with progress % indicator and validation error message
- Back button navigates to /emp/fa/leads instead of browser history

Leads List page (LeadsListPage.jsx):
- Route: /emp/fa/leads (FIELD_AGENT, ADMIN, OWNER)
- Lead cards: name, urgency + status badges, address, phone, lead source, time ago, creator
- Search bar: filters by name, address, city, source, status
- Empty state with CTA when no leads saved yet
- Animated card entrance with staggered spring transitions

mockStore:
- Add leads[] state and addLead() action — prepends new lead with id, createdAt, status: New

Navigation:
- Sidebar "New Lead" replaced with "Leads" (ClipboardList icon) for all roles
- New Lead button lives on the list page header

Author: Satyam Rastogi
2026-03-14 23:51:31 +05:30
Satyam d801f54600 feat(leads): Phase 5 & 6 — Insurance and Assignment sections
Phase 5 — Insurance (purple #8B5CF6):
- Insurance Company custom select, Claim Number + Claim Status (2-col grid)
- Adjuster Name + Adjuster Phone (2-col grid, flex-wrapper with Phone icon + mask)
- Policy Number full-width input, all focus rings use purple accent

Phase 6 — Assignment (cyan #06B6D4):
- Role-aware rep selector: Field Agents see self-assign toggle, Admins/Owners
  see scrollable list of all field agents with Unassigned option
- Priority pill selector (Low/Medium/High) with Framer Motion layoutId slide
- Follow-up Date: flex-wrapper with Calendar icon + color-scheme fix
- sectionCompletion wired for both sections

Fix: replace Framer Motion variant inheritance with explicit initial/animate on
each section motion.div — inherited variants from already-animated parent caused
Insurance and Assignment to render stuck at opacity:0 when added dynamically

Author: Satyam Rastogi
2026-03-14 23:43:08 +05:30
Satyam d3e2944fa3 fix(leads): portaled dropdowns, flex-wrapper icons, responsive layout, and UI polish
- Replace all native <select> with LeadCustomSelect (ReactDOM.createPortal into body,
  getBoundingClientRect positioning, e.composedPath() scroll detection)
- Add LeadCombobox: fuzzy-search state picker (searches abbr + full name, portal, onMouseDown)
- Convert Phone/MapPin icons from absolute-positioned to flex-wrapper siblings of bg-transparent input
- Fix dark mode invisible text: all inputs converted from isDark JS conditionals to dark: variants
- Fix urgency Standard pill visibility: container bg-zinc-900, selected bg-zinc-700 ring-1 shadow-lg
- Fix City/State/ZIP mobile overlap: flex -> grid-cols-2 (mobile) / grid-cols-[1fr_5.5rem_6rem] (sm+)
- Fix urgency section hidden behind mobile sticky footer: pb-28 -> pb-44 md:pb-10
- Replace all compact type pickers (phone/email) with LeadCustomSelect compact mode
- Update README.md with full lead creation architecture docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-13 17:22:58 +05:30
Satyam 205ada99e9 feat(leads): Lead Creation Phase 4 — Property section with address, state select, and photo upload
- LeadPropertySection: Street Address (with pin icon), City/State/ZIP row (flex layout, ZIP auto-strips non-digits to 5 chars, state defaults to TX), Property Type dropdown and Site Photos (Full Form only, animate in/out)
- Photo upload: dashed zone with Camera + Image icons, hover highlight in emerald, hidden file input with capture=environment (opens camera on mobile), multiple selection allowed
- Thumbnails: 4-col grid, spring scale-in animation, hover overlay with X to remove individual photos
- Focus ring accent changed to emerald to match section color identity (blue=contact, emerald=property)
- CreateLeadPage: propertyPhotos added to INITIAL_FORM, sectionCompletion.property live (address + city required), LeadPropertySection wired into renderSectionContent
2026-03-13 16:22:54 +05:30
Satyam d8868f67f1 feat(leads): Lead Creation Phase 3 — Contact section with dynamic phone and email rows
- LeadContactSection: First/Last name grid, dynamic phone list, dynamic email list (Full Form only), all with spring height animations and LayoutGroup for coordinated layout shifts
- PhoneEntryRow: phone input with (555) 000-0000 mask, type selector (Mobile/Home/Work/Other), amber star primary toggle, red X remove — type+star hidden in Quick Capture mode
- EmailEntryRow: email input, type selector, star primary toggle, remove button
- Add Phone / Add Email buttons animate in when switching to Full Form; rows slide in/out with spring height collapse
- CreateLeadPage: sectionCompletion.contact now live (firstName + lastName + 10-digit phone), progress bar switched to section-completion-based percentage (completed sections / visible sections)
2026-03-13 16:18:51 +05:30
Satyam a2e4fc9039 feat(leads): Lead Creation Phase 2 — Job Details section with live fields
- UrgencyPillSelector: 3-pill selector (Standard/High/Emergency) with Framer Motion layoutId sliding background, spring physics, color transition on text
- LeadJobSection: full Job Details fields — Lead Source (always), Lead Type / Work Type / Trade Type (Full Form only, each row animates in/out with spring height collapse), Urgency pill (always), Notes textarea (Full Form only)
- Full Form fields use overflow-hidden + height:auto spring animation — no phantom gaps since spacing is managed via pt-4 inside each animated block
- CreateLeadPage: formData state tracking all sections (scaffold for Phase 3-6 fields), updateField handler, sectionCompletion map, GSAP progress bar now driven by real field completion percentage, Job Details section wired up with live data
2026-03-13 16:13:45 +05:30
Satyam 8bb321e1f7 feat(leads): Lead Creation Phase 1 — page shell, section framework, mock data
- CreateLeadPage.jsx: full page shell with Quick Capture / Full Form toggle, Barlow Condensed header, breadcrumb nav, GSAP progress bar stub, mobile sticky save footer
- LeadSectionWrapper.jsx: collapsible section component with Framer Motion height animation, spring chevron rotation, completion dot, dual light/dark header design matching GlassPanel language
- 5 sections wired up: Contact (blue), Property (emerald), Job Details (amber), Insurance (violet), Assignment (cyan) — Quick Capture shows first 3, Full Form shows all 5
- Section indicator pills in header dim gracefully when hidden in Quick Capture mode
- LEAD_FORM_OPTIONS added to mockStore: lead types, sources, work types, trade types, urgency/priority levels, insurance companies, claim statuses, phone/email types, US states
- Route /emp/fa/leads/new added (FIELD_AGENT, ADMIN, OWNER)
- New Lead nav item added to sidebar for all 3 roles
2026-03-13 16:07:29 +05:30
Satyam dc117e8180 chore: exclude reference workflow folder from repo, refresh README
- Add Estimate_Section_Screens_and_Workflows/ to .gitignore (local reference images only)
- Rewrite README to reflect revamp branch: React 19, ProCanvas dual-mode design, EstimateBuilder redesign, Lead Creation and LynkDispatch AI upcoming features
2026-03-13 01:06:06 +05:30
Satyam d3d6af33cc feat(procanvas): full light/dark mode redesign with distinct visual identities
Light mode — Energetic & Clean (Duolingo/fitness app aesthetic):
- GlassPanel rebuilt as function component using useTheme; light mode gets
  solid colored header banners per panel (gold=Showdown, fire=Hot Streak,
  cyan=Weekly, blue=Stats/Leaderboard, purple=Rewards/Badges) with white
  text on color; dark mode keeps existing glass panel + accent glow line
- Page background: zinc-100/80 so white cards float visually
- Event cards (Showdown, Hot Streak, 12 Appointments) promoted to use
  GlassPanel title+icon props — each gets its own colored identity banner
- OperatorCard: soft shadow + amber ring in light mode; stays dark (sports
  card aesthetic intentional); harsh rgba(0,0,0,0.6) shadow removed
- Live Event Banner: vibrant emerald-600→green-700 gradient in light mode
  replacing the always-dark green-900; softer shadow and border
- Log Action buttons: clean bg-white with shadow-sm, removed dark inset
  shadow that made them look dirty in light mode
- Neon/cyan on white fixed: #AAFF00→green-600, #00E5FF→sky-500/sky-600
- EnergyBar tracks: bg-zinc-200 in light, bg-black/60 in dark
- Leaderboard, badge cards, reward nodes: all adapted with dark: variants
- XP badge in header: bg-zinc-100/border-zinc-200 in light mode
- Import useTheme added to support GlassPanel and OperatorCard hooks

Dark mode — unchanged; all existing glass panel aesthetics preserved.
2026-03-13 00:29:32 +05:30
Satyam a0af994614 feat(estimate): redesign estimate builder UI and fix theme conflicts
- Restructure section/group/item hierarchy to match reference designs:
  collapse chevron, cost + green price box, ellipsis menu per section;
  trash on hover + cost/price per group; inline trash, orange qty=0
  border, read-only cost/unit, SRS warning rows per item
- Add compact horizontal margin slider with orange accent
- Add section total banner with white/30 bordered price box
- Rewrite MaterialDetailsModal to match reference (3-row formula layout:
  Measurement @ Waste = Qty, Cost/Unit with conversion note, Total formula)
- Fix MaterialDetailsModal always rendering in light mode: add dark: variants
- Fix MeasurementsModal always rendering in light mode: add dark: variants
- Fix Financial Summary sidebar always rendering in dark mode: base bg-white
  with dark: gradient, all inner elements get proper dark: variants
- Add new estimate component files: MaterialDetailsModal, MeasurementsModal,
  ImageUploadModal, InitialChoiceModal, TemplateSelectionModal
2026-03-13 00:29:13 +05:30
Satyam d5c7c17cd8 fix(sidebar): remove title attribute from NavLink to fix [object Object] tooltip
The collapsed sidebar was showing '[object Object]' on hover because the
HTML title attribute received a JSX element (ProCanvas uses a JSX label
with styled spans). Removed the native title attribute — the custom
tooltip div already handles collapsed-state label display correctly.
2026-03-13 00:28:56 +05:30
Satyam b7c9ebb0d0 feat(estimate): refine layout, add full view modal, update table columns, and remove reference images 2026-03-04 22:47:56 +05:30
Satyam 628e945ea7 feat: complete ProCanvas UI revamp with Gamified interactions and Modals 2026-03-02 20:27:22 +05:30
Satyam 7694788387 feat(ProCanvas): retro game overhaul with log actions, challenges & achievements modals
- Complete ProCanvas redesign with retro sports game aesthetic
- Card-game style photo frame with tilt, shimmer, corner star accents
- Daily Missions card with weekly challenge + individual quest progress bars
- Log Action card (Door Knocked, Lead Gained, Appointment Set, Client Meeting)
- Each log action opens themed modal with relevant input fields
- Challenges modal with 6 active challenges and progress tracking
- Achievements modal with all badges, unlock status, descriptions
- Nav bar tabs (Leaderboard, Challenges, Achievements) wired to modals
- Rewards & Checkpoints with named stages (Daily Grind to Legend Run)
- Smoother Hot Streak pulse animation (2.5s float + 3s pulse rings)
- Hit The Map button with smooth pulsing glow animation
- Grid pattern overlay in Leaderboard card
- Light mode support via dark: Tailwind variants throughout
- Top 3 badges displayed on profile card
- Fixed dropdown option visibility in dark mode
2026-02-26 01:36:36 +05:30
Satyam 3d215f6db3 feat: ProCanvas refinements, gamification hooks, a11y updates, index.css polish, gitignore cleanup, and profile asset addition 2026-02-25 19:10:48 +05:30
Satyam 5fef584d7d feat(a11y): Implement ARIA accessibility sweep and keyboard navigation
- Added visually hidden labels, IDs, and names to form inputs across all key components and pages (modals, directories, chatbots)
- Added tabIndex and onKeyDown handlers to clickable table rows in OwnerProjectDetail for keyboard accessibility
- Validated existing ARIA roles and Escape key bindings on modal components
2026-02-22 03:15:21 +05:30
Satyam b6f899afd2 feat(owner-dash): Expand project command center with mock data, modals, and recharts fixes 2026-02-22 03:00:38 +05:30
Satyam b8a20144d3 feat(ui): refactor gamification UI for role awareness and remove floaters 2026-02-22 01:24:26 +05:30
Satyam 058b5bb217 feat(ui): complete ProCanvas role-based overhaul and fix Recharts crash
- Implement unified Neomorphic tactical layout for ProCanvas across Agent, Admin, and Owner roles.

- Add Quick Operations Log widget for immediate action logging.

- Integrate discrete Checkpoint/Stages progression system to replace static prize tracks.

- Build custom AnimatedCounter for GSAP-style numerical state changes.

- Fix Recharts ResponsiveContainer loading crash in OwnerSnapshot.jsx.
2026-02-21 21:23:37 +05:30
Satyam 7e166726da feat: UI/UX updates - Sidebar, ProCanvas, Dashboard, Schedule, Map 2026-02-20 13:32:44 +05:30
Satyam 36e74e9fbc UI enhancements and performance optimizations 2026-02-18 12:52:17 +05:30
Satyam ffbbc61726 fix(landing): optimize comparison slider text for mobile and add fade transitions
- Added whitespace-nowrap to all text labels on both Old Way and Our Way sides to prevent inconsistent text wrapping on mobile
- Added opacity fade to Our Way labels based on slider position (fades out as slider moves right)
- Matched symmetric fade behavior: both sides now smoothly fade in/out based on slider position
- Added transition-opacity duration-150 for smooth fade animation
2026-02-18 12:41:59 +05:30
Satyam bc4e25f132 feat: comprehensive mobile optimization, role-based AI chatbot, and multi-role dashboard enhancements
- Rewrote AI chatbot context system with deep role-aware data injection for all 7 roles (Owner, Admin, Field Agent, Contractor, Subcontractor, Vendor, Customer) plus guest fallback
- Added mobile-responsive bottom-sheet modals across all roles (ChangeOrderDrawer, InvoiceDetailModal, FinancialSummaryModal, VendorFinancialSummaryModal, FinancialDetailsModal)
- Converted Owner Project List and Vendor Orders tables to mobile card views with touch-friendly layouts
- Optimized Vendor Management and People Directory with mobile list/detail toggle and back navigation
- Fixed Document Control mobile view: horizontally scrollable filter tabs, proper overflow chain for document visibility
- Added responsive padding, text scaling, and flex-wrap across StatCard, TaskDetailsModal, OwnerSnapshot, OwnerProjectDetail, VendorDashboard, and DocumentManagement
- Expanded mock data store with richer vendor invoices, orders, documents, and compliance records
- Enhanced Owner Snapshot with financial KPI cards, urgent items panel, and Action Center modal
- Built Contractor Dashboard with task management, financial summary, and performance metrics
- Built Subcontractor Dashboard with clock-in tracking, task assignments, and invoice management
- Enhanced Vendor Dashboard with earnings summary, active orders, compliance status, and performance rating
- Added icon-only tab navigation on mobile for OwnerProjectDetail
- Extended attribution signatures across all platform pages
2026-02-18 12:34:55 +05:30
Satyam fe68947f1c feat(owner): enhance project list and detail views
- Implemented enhanced Owner Project List with search, filtering (status/phase), and sorting.
- Added ambient background and responsive card/table layout to Project List.
- Implemented comprehensive Owner Project Detail view with tabs for Overview, Budget, Change Orders, RFIs, Milestones, Invoices, Risks, and Activity.
- Added budget visualization using Recharts and milestone timeline.
- Added SPA rewrite rules in vercel.json.
2026-02-18 12:17:00 +05:30
Satyam 12332360c9 feat(hero): improve mobile responsiveness for hero section
- Add responsive font scaling for heading (3xl to 9xl)
- Add responsive font scaling for subtitle (sm to 2xl)
- Limit CTA button width on mobile (max-w-[260px])
- Limit discount banner width on mobile (max-w-[280px])
- Adjust padding and spacing for all screen sizes
- Fix text overflow issue on 'REVOLUTIONIZED' heading
2026-02-17 02:07:15 +05:30
Satyam 2eaac6b84a feat: Multi-role platform expansion, mobile nav redesign, and UI polish
- Add Owner, Contractor, Vendor, Subcontractor dashboards and role-based routing
- Owner now has superuser access to all Admin pages (dashboard, schedule, leaderboard)
- Redesign landing page mobile menu as slide-in sidebar (replaces broken Framer Motion overlay)
- Add body scroll lock to app sidebar for mobile consistency
- Fix Team Schedule to match Admin Dashboard design language (ambient glows, gradient header, SpotlightCard, zinc palette)
- Fix login page tab overflow — use abbreviated labels and grid layout for 6 role tabs
- Fix Recharts ResponsiveContainer warnings — replace height="100%" with fixed pixel heights
- Fix lightbox image viewer — unified nav bar, touch swipe support, no more overlapping text
- Add AI Assistant page, People/Vendor/Document management for Owner role
- Expand mock data store with contractor, vendor, and subcontractor data
2026-02-17 01:23:06 +05:30
Satyam 35cbdeb33c Optimize mobile layout, add animated counters, improve crane swing 2026-02-16 19:30:10 +05:30
Satyam ed79b266af feat: Add GSAP animated counters and fix Team Schedule theme issues
- Created reusable AnimatedNumber component with GSAP
- Integrated animated counters in Dashboard (metrics, weather)
- Integrated animated counters in Leaderboard (podium, table)
- Fixed AdminSchedule dark mode styling with theme-aware classes
- Added responsive columns and functional dropdown to Team Schedule
- Implemented date range and status filters for Team Schedule
- Improved animation smoothness with expo.out easing
2026-02-16 13:48:04 +05:30
Satyam e0da94aa0c feat: Revamped design - improved dark mode visibility, mobile UX fixes, updated trust signals 2026-02-16 01:49:50 +05:30
Satyam e88e1e4da5 feat: implement Lenis smooth scroll and animated stat counters
- Add Lenis smooth scroll library (Landing page only)
- Create SmoothScroll wrapper component with GSAP integration
- Implement animated stat counters with scroll-triggered count-up
- Add GSAP animations for stats section (40%, 5yrs, 15m)
- Update package.json with lenis dependency
2026-02-14 22:54:57 +05:30
Satyam 6d3b1c231a UI refinements and layout polish 2026-02-13 18:29:39 +05:30
Satyam 1dde06811e chore: UI refinements and metadata updates 2026-02-13 14:30:09 +05:30
Satyam 94d104972e style(mobile): adjust map legend bottom spacing to bottom-5 2026-02-13 14:18:13 +05:30
Satyam 33384d8b7f feat(mobile): implement property photo swipe and refine lightbox UI 2026-02-13 14:14:21 +05:30
Satyam fae968a541 Fix PropertyDetailDrawer close button interactivity and corner transparency leak 2026-02-13 05:58:46 +05:30
Satyam cc58b148e4 Implement Lightbox, fix photo gallery accessibility, update local assets and OG tags for Vercel deployment 2026-02-13 05:49:55 +05:30
Satyam c602b3b152 feat: Add redirect to login for Services explore solution 2026-02-11 20:57:13 +05:30
Satyam b4b608dd27 feat: Add redirect to login for reschedule button 2026-02-11 20:50:47 +05:30
Satyam 66ae963079 feat: Enhance Map Intelligence with rich data and login redirects 2026-02-11 20:48:16 +05:30
Satyam 3b40ab18f4 feat: Leaderboard access for Admins 2026-02-11 19:01:42 +05:30
Satyam be828b205d feat(crm): Complete Admin Action Center & Reliability Overhaul
- Added ActionCenterWidget, DetailDrawer, AgentSelectionModal
- Implemented global ErrorBoundary and Chatbot resilience
- Updated documentation (README, Structure, Status, Overview)
- Refined responsive design and modal portals
2026-02-11 18:33:04 +05:30
Satyam bfc90b668b chore: Update pnpm-lock.yaml and remove package-lock.json 2026-02-11 17:09:43 +05:30
Satyam 3e0fc5b764 feat: Latest updates 2026-02-11 16:53:31 +05:30
Satyam 0da0d6797f Refactor landing page sections and map per user feedback 2026-02-11 02:03:17 +05:30
Satyam 83250d687e mobile: Optimizations for Maps Drawer, Legend, and Customer Profile Tabs 2026-02-10 20:36:44 +05:30
Satyam 91b47e83c3 chore: cleanup dependencies and add OG banner source file 2026-02-01 20:55:26 +05:30