@schandlergarcia/sf-web-components 2.3.2 → 2.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -222,7 +222,7 @@ export default function PartnerHubDashboard() {
222
222
  .sort((a, b) => a.key.localeCompare(b.key));
223
223
 
224
224
  const months = sortedMonths.map(m => m.label);
225
- const colors = ["#7DCBD9", "#1E9D6D", "#FF6B6B", "#FFA726"];
225
+ const colors = ["var(--color-dash-accent)", "var(--color-dash-success)", "var(--color-dash-chart-3)", "var(--color-dash-chart-4)"];
226
226
 
227
227
  // Distribute monthly revenue across properties (weighted)
228
228
  const properties = (liveData.properties || []).map((prop: any, idx: number) => {
@@ -342,11 +342,11 @@ export default function PartnerHubDashboard() {
342
342
 
343
343
  gradient.append("stop")
344
344
  .attr("offset", "0%")
345
- .attr("stop-color", "#7DCBD9");
345
+ .attr("stop-color", "var(--color-dash-accent)");
346
346
 
347
347
  gradient.append("stop")
348
348
  .attr("offset", "100%")
349
- .attr("stop-color", "#1E9D6D");
349
+ .attr("stop-color", "var(--color-dash-success)");
350
350
 
351
351
  g.selectAll(".bar")
352
352
  .data(data)
@@ -411,7 +411,7 @@ export default function PartnerHubDashboard() {
411
411
  .attr("text-anchor", "middle")
412
412
  .attr("font-size", "14px")
413
413
  .attr("font-weight", "600")
414
- .attr("fill", "#ffffff")
414
+ .attr("fill", "var(--color-dash-surface)")
415
415
  .attr("paint-order", "stroke")
416
416
  .attr("stroke", "rgba(0,0,0,0.3)")
417
417
  .attr("stroke-width", "2px")
@@ -425,7 +425,7 @@ export default function PartnerHubDashboard() {
425
425
  })
426
426
  .attr("text-anchor", "middle")
427
427
  .attr("font-size", "12px")
428
- .attr("fill", "#ffffff")
428
+ .attr("fill", "var(--color-dash-surface)")
429
429
  .attr("paint-order", "stroke")
430
430
  .attr("stroke", "rgba(0,0,0,0.3)")
431
431
  .attr("stroke-width", "2px")
@@ -473,14 +473,14 @@ export default function PartnerHubDashboard() {
473
473
  // Total area
474
474
  g.append("path")
475
475
  .datum(data)
476
- .attr("fill", "#7DCBD9")
476
+ .attr("fill", "var(--color-dash-accent)")
477
477
  .attr("fill-opacity", 0.3)
478
478
  .attr("d", areaTotal);
479
479
 
480
480
  // Commission area
481
481
  g.append("path")
482
482
  .datum(data)
483
- .attr("fill", "#1E9D6D")
483
+ .attr("fill", "var(--color-dash-success)")
484
484
  .attr("fill-opacity", 0.5)
485
485
  .attr("d", areaCommission);
486
486
 
@@ -488,7 +488,7 @@ export default function PartnerHubDashboard() {
488
488
  g.append("path")
489
489
  .datum(data)
490
490
  .attr("fill", "none")
491
- .attr("stroke", "#7DCBD9")
491
+ .attr("stroke", "var(--color-dash-accent)")
492
492
  .attr("stroke-width", 2)
493
493
  .attr("d", d3.line()
494
494
  .x((d) => (x(d.month) || 0) + x.bandwidth() / 2)
@@ -499,7 +499,7 @@ export default function PartnerHubDashboard() {
499
499
  g.append("path")
500
500
  .datum(data)
501
501
  .attr("fill", "none")
502
- .attr("stroke", "#1E9D6D")
502
+ .attr("stroke", "var(--color-dash-success)")
503
503
  .attr("stroke-width", 2)
504
504
  .attr("d", d3.line()
505
505
  .x((d) => (x(d.month) || 0) + x.bandwidth() / 2)
@@ -530,7 +530,7 @@ export default function PartnerHubDashboard() {
530
530
  .append("rect")
531
531
  .attr("width", 12)
532
532
  .attr("height", 12)
533
- .attr("fill", "#7DCBD9");
533
+ .attr("fill", "var(--color-dash-accent)");
534
534
 
535
535
  legend
536
536
  .append("text")
@@ -545,7 +545,7 @@ export default function PartnerHubDashboard() {
545
545
  .attr("y", 20)
546
546
  .attr("width", 12)
547
547
  .attr("height", 12)
548
- .attr("fill", "#1E9D6D");
548
+ .attr("fill", "var(--color-dash-success)");
549
549
 
550
550
  legend
551
551
  .append("text")
@@ -663,9 +663,9 @@ export default function PartnerHubDashboard() {
663
663
  }, []);
664
664
 
665
665
  return (
666
- <div className="heroui-scope min-h-screen bg-[#F3F3F4] dark:bg-[#0D1117] transition-colors duration-300">
666
+ <div className="heroui-scope min-h-screen bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-text)] transition-colors duration-300">
667
667
  {/* Header - Refined Engine Brand */}
668
- <header className="bg-white/95 dark:bg-[#0D1117]/95 backdrop-blur-xl border-b border-[#B0B1B3]/20 dark:border-[#616368]/30 sticky top-0 z-50 shadow-sm">
668
+ <header className="bg-white/95 dark:bg-[var(--color-dash-text)]/95 backdrop-blur-xl border-b border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 sticky top-0 z-50 shadow-sm">
669
669
  <div className="max-w-[1600px] mx-auto px-8 py-5">
670
670
  <div className="flex items-center justify-between">
671
671
  <div className="flex items-center gap-8">
@@ -675,17 +675,17 @@ export default function PartnerHubDashboard() {
675
675
  className="h-11 w-auto dark:invert dark:brightness-0 dark:contrast-100 transition-all duration-300"
676
676
  />
677
677
  <div className="flex items-center gap-4">
678
- <div className="h-10 w-px bg-gradient-to-b from-transparent via-[#B0B1B3]/40 to-transparent" />
678
+ <div className="h-10 w-px bg-gradient-to-b from-transparent via-[var(--color-dash-label)]/40 to-transparent" />
679
679
  <div className="space-y-0.5">
680
- <p className="text-sm font-semibold text-[#0D1117] dark:text-white transition-colors">
680
+ <p className="text-sm font-semibold text-[var(--color-dash-text)] dark:text-white transition-colors">
681
681
  {currentPartner.name}
682
682
  </p>
683
683
  <div className="flex items-center gap-2">
684
684
  <span className="relative flex h-2 w-2">
685
- <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-[#1E9D6D] opacity-75"></span>
686
- <span className="relative inline-flex rounded-full h-2 w-2 bg-[#1E9D6D]"></span>
685
+ <span className="animate-ping absolute inline-flex h-full w-full rounded-full bg-[var(--color-dash-success)] opacity-75"></span>
686
+ <span className="relative inline-flex rounded-full h-2 w-2 bg-[var(--color-dash-success)]"></span>
687
687
  </span>
688
- <p className="text-xs font-medium text-[#B0B1B3] uppercase tracking-wide">
688
+ <p className="text-xs font-medium text-[var(--color-dash-label)] uppercase tracking-wide">
689
689
  {currentPartner.tier} Partner
690
690
  </p>
691
691
  </div>
@@ -695,19 +695,19 @@ export default function PartnerHubDashboard() {
695
695
  <div className="flex items-center gap-3">
696
696
  <button
697
697
  onClick={toggle}
698
- className="group p-3 rounded-xl hover:bg-[#F3F3F4] dark:hover:bg-[#616368]/20 transition-colors duration-200"
698
+ className="group p-3 rounded-xl hover:bg-[var(--color-dash-surface)] dark:hover:bg-[var(--color-dash-muted)]/20 transition-colors duration-200"
699
699
  aria-label="Toggle theme"
700
700
  >
701
701
  {mode === "dark" ? (
702
- <SunIcon className="h-5 w-5 text-[#7DCBD9] transition-transform group-hover:rotate-45 duration-300" />
702
+ <SunIcon className="h-5 w-5 text-[var(--color-dash-accent)] transition-transform group-hover:rotate-45 duration-300" />
703
703
  ) : (
704
- <MoonIcon className="h-5 w-5 text-[#616368] transition-transform group-hover:-rotate-12 duration-300" />
704
+ <MoonIcon className="h-5 w-5 text-[var(--color-dash-muted)] transition-transform group-hover:-rotate-12 duration-300" />
705
705
  )}
706
706
  </button>
707
707
 
708
708
  <Dropdown>
709
709
  <Button variant="ghost" size="sm" className="p-2">
710
- <UserCircleIcon className="h-6 w-6 text-[#616368] dark:text-[#B0B1B3]" />
710
+ <UserCircleIcon className="h-6 w-6 text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]" />
711
711
  </Button>
712
712
  <Dropdown.Popover className="min-w-[200px]">
713
713
  <Dropdown.Menu
@@ -723,22 +723,22 @@ export default function PartnerHubDashboard() {
723
723
  <Dropdown.Item
724
724
  id="settings"
725
725
  textValue="Settings"
726
- className="px-3 py-2 rounded-lg hover:bg-[#F3F3F4] dark:hover:bg-[#616368]/20 cursor-pointer"
726
+ className="px-3 py-2 rounded-lg hover:bg-[var(--color-dash-surface)] dark:hover:bg-[var(--color-dash-muted)]/20 cursor-pointer"
727
727
  >
728
728
  <div className="flex items-center gap-3">
729
- <Cog6ToothIcon className="h-5 w-5 text-[#616368] dark:text-[#B0B1B3]" />
730
- <span className="text-sm font-medium text-[#0D1117] dark:text-white">Settings</span>
729
+ <Cog6ToothIcon className="h-5 w-5 text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]" />
730
+ <span className="text-sm font-medium text-[var(--color-dash-text)] dark:text-white">Settings</span>
731
731
  </div>
732
732
  </Dropdown.Item>
733
733
  <Dropdown.Item
734
734
  id="logout"
735
735
  textValue="Logout"
736
736
  variant="danger"
737
- className="px-3 py-2 rounded-lg hover:bg-[#FD4B23]/10 cursor-pointer"
737
+ className="px-3 py-2 rounded-lg hover:bg-[var(--color-dash-danger)]/10 cursor-pointer"
738
738
  >
739
739
  <div className="flex items-center gap-3">
740
- <ArrowRightOnRectangleIcon className="h-5 w-5 text-[#FD4B23]" />
741
- <span className="text-sm font-medium text-[#FD4B23]">Logout</span>
740
+ <ArrowRightOnRectangleIcon className="h-5 w-5 text-[var(--color-dash-danger)]" />
741
+ <span className="text-sm font-medium text-[var(--color-dash-danger)]">Logout</span>
742
742
  </div>
743
743
  </Dropdown.Item>
744
744
  </Dropdown.Menu>
@@ -750,7 +750,7 @@ export default function PartnerHubDashboard() {
750
750
  </header>
751
751
 
752
752
  {/* Hero Section - Partnership Overview */}
753
- <div className="relative bg-gradient-to-br from-[#0D1117] via-[#1a1f2e] to-[#0D1117] dark:from-[#0D1117] dark:via-[#0D1117] dark:to-[#0a0d12] overflow-hidden">
753
+ <div className="relative bg-gradient-to-br from-[var(--color-dash-text)] via-[var(--color-dash-dark)] to-[var(--color-dash-text)] dark:from-[var(--color-dash-text)] dark:via-[var(--color-dash-text)] dark:to-[var(--color-dash-darker)] overflow-hidden">
754
754
  {/* Subtle background pattern */}
755
755
  <div className="absolute inset-0 opacity-5">
756
756
  <div className="absolute inset-0" style={{
@@ -760,8 +760,8 @@ export default function PartnerHubDashboard() {
760
760
  </div>
761
761
 
762
762
  {/* Gradient orbs for depth */}
763
- <div className="absolute top-0 right-0 w-96 h-96 bg-[#7DCBD9]/10 rounded-full blur-3xl" />
764
- <div className="absolute bottom-0 left-0 w-96 h-96 bg-[#1E9D6D]/10 rounded-full blur-3xl" />
763
+ <div className="absolute top-0 right-0 w-96 h-96 bg-[var(--color-dash-accent)]/10 rounded-full blur-3xl" />
764
+ <div className="absolute bottom-0 left-0 w-96 h-96 bg-[var(--color-dash-success)]/10 rounded-full blur-3xl" />
765
765
 
766
766
  <div className="relative max-w-[1600px] mx-auto px-8 py-12 pb-20">
767
767
  <div className="max-w-3xl space-y-3 animate-fade-in">
@@ -784,30 +784,30 @@ export default function PartnerHubDashboard() {
784
784
  onClick={() => !isLoading && setIsRevenueModalOpen(true)}
785
785
  className={isLoading ? "" : "cursor-pointer"}
786
786
  >
787
- <div className="bg-white dark:bg-[#0D1117] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[#B0B1B3]/20 dark:border-[#616368]/30 h-full">
787
+ <div className="bg-white dark:bg-[var(--color-dash-text)] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 h-full">
788
788
  {isLoading ? (
789
789
  <div className="space-y-3">
790
790
  <div className="flex items-center justify-between">
791
- <div className="bg-[#B0B1B3]/20 rounded-lg h-9 w-9 animate-pulse"></div>
792
- <div className="bg-[#B0B1B3]/20 rounded-full h-5 w-16 animate-pulse"></div>
791
+ <div className="bg-[var(--color-dash-label)]/20 rounded-lg h-9 w-9 animate-pulse"></div>
792
+ <div className="bg-[var(--color-dash-label)]/20 rounded-full h-5 w-16 animate-pulse"></div>
793
793
  </div>
794
- <div className="h-3 w-24 bg-[#B0B1B3]/20 rounded animate-pulse"></div>
795
- <div className="h-10 w-32 bg-[#B0B1B3]/20 rounded animate-pulse"></div>
796
- <div className="h-3 w-28 bg-[#B0B1B3]/20 rounded animate-pulse"></div>
794
+ <div className="h-3 w-24 bg-[var(--color-dash-label)]/20 rounded animate-pulse"></div>
795
+ <div className="h-10 w-32 bg-[var(--color-dash-label)]/20 rounded animate-pulse"></div>
796
+ <div className="h-3 w-28 bg-[var(--color-dash-label)]/20 rounded animate-pulse"></div>
797
797
  </div>
798
798
  ) : (
799
799
  <>
800
800
  <div className="flex items-center justify-between mb-3">
801
- <div className="bg-[#1E9D6D]/10 rounded-lg p-2">
802
- <BanknotesIcon className="h-5 w-5 text-[#1E9D6D]" />
801
+ <div className="bg-[var(--color-dash-success)]/10 rounded-lg p-2">
802
+ <BanknotesIcon className="h-5 w-5 text-[var(--color-dash-success)]" />
803
803
  </div>
804
- <span className="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-bold bg-[#1E9D6D]/10 text-[#1E9D6D]">
804
+ <span className="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-bold bg-[var(--color-dash-success)]/10 text-[var(--color-dash-success)]">
805
805
  +45%
806
806
  </span>
807
807
  </div>
808
- <p className="text-[#616368] dark:text-[#B0B1B3] text-xs font-semibold mb-2 uppercase tracking-wider">Total Revenue</p>
809
- <p className="text-4xl font-black text-[#0D1117] dark:text-white mb-1">${(myRevenue / 1000).toFixed(0)}K</p>
810
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">earned with Engine</p>
808
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] text-xs font-semibold mb-2 uppercase tracking-wider">Total Revenue</p>
809
+ <p className="text-4xl font-black text-[var(--color-dash-text)] dark:text-white mb-1">${(myRevenue / 1000).toFixed(0)}K</p>
810
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">earned with Engine</p>
811
811
  </>
812
812
  )}
813
813
  </div>
@@ -818,22 +818,22 @@ export default function PartnerHubDashboard() {
818
818
  onClick={() => !isLoading && setIsDisputesModalOpen(true)}
819
819
  className={isLoading ? "" : "cursor-pointer"}
820
820
  >
821
- <div className="bg-white dark:bg-[#0D1117] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[#FFB200]/50 dark:border-[#FFB200]/30 h-full">
821
+ <div className="bg-white dark:bg-[var(--color-dash-text)] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[var(--color-dash-warning)]/50 dark:border-[var(--color-dash-warning)]/30 h-full">
822
822
  {isLoading ? (
823
823
  <CardSkeleton lines={4} />
824
824
  ) : (
825
825
  <>
826
826
  <div className="flex items-center justify-between mb-3">
827
- <div className="bg-[#FFB200]/10 rounded-lg p-2">
828
- <ExclamationTriangleIcon className="h-5 w-5 text-[#FFB200]" />
827
+ <div className="bg-[var(--color-dash-warning)]/10 rounded-lg p-2">
828
+ <ExclamationTriangleIcon className="h-5 w-5 text-[var(--color-dash-warning)]" />
829
829
  </div>
830
- <span className="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-bold bg-[#FFB200] text-white">
830
+ <span className="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-bold bg-[var(--color-dash-warning)] text-white">
831
831
  REVIEW
832
832
  </span>
833
833
  </div>
834
- <p className="text-[#616368] dark:text-[#B0B1B3] text-xs font-semibold mb-2 uppercase tracking-wider">Things to Review</p>
835
- <p className="text-4xl font-black text-[#0D1117] dark:text-white mb-1">{myOpenDisputes}</p>
836
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">items need attention</p>
834
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] text-xs font-semibold mb-2 uppercase tracking-wider">Things to Review</p>
835
+ <p className="text-4xl font-black text-[var(--color-dash-text)] dark:text-white mb-1">{myOpenDisputes}</p>
836
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">items need attention</p>
837
837
  </>
838
838
  )}
839
839
  </div>
@@ -844,19 +844,19 @@ export default function PartnerHubDashboard() {
844
844
  onClick={() => !isLoading && setIsPropertiesModalOpen(true)}
845
845
  className={isLoading ? "" : "cursor-pointer"}
846
846
  >
847
- <div className="bg-white dark:bg-[#0D1117] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[#B0B1B3]/20 dark:border-[#616368]/30 h-full">
847
+ <div className="bg-white dark:bg-[var(--color-dash-text)] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 h-full">
848
848
  {isLoading ? (
849
849
  <CardSkeleton lines={4} />
850
850
  ) : (
851
851
  <>
852
852
  <div className="flex items-center justify-between mb-3">
853
- <div className="bg-[#7DCBD9]/10 rounded-lg p-2">
854
- <BuildingOfficeIcon className="h-5 w-5 text-[#7DCBD9]" />
853
+ <div className="bg-[var(--color-dash-accent)]/10 rounded-lg p-2">
854
+ <BuildingOfficeIcon className="h-5 w-5 text-[var(--color-dash-accent)]" />
855
855
  </div>
856
856
  </div>
857
- <p className="text-[#616368] dark:text-[#B0B1B3] text-xs font-semibold mb-2 uppercase tracking-wider">Properties</p>
858
- <p className="text-4xl font-black text-[#0D1117] dark:text-white mb-1">{myProperties}</p>
859
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">active locations</p>
857
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] text-xs font-semibold mb-2 uppercase tracking-wider">Properties</p>
858
+ <p className="text-4xl font-black text-[var(--color-dash-text)] dark:text-white mb-1">{myProperties}</p>
859
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">active locations</p>
860
860
  </>
861
861
  )}
862
862
  </div>
@@ -867,19 +867,19 @@ export default function PartnerHubDashboard() {
867
867
  onClick={() => !isLoading && setIsReservationsModalOpen(true)}
868
868
  className={isLoading ? "" : "cursor-pointer"}
869
869
  >
870
- <div className="bg-white dark:bg-[#0D1117] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[#B0B1B3]/20 dark:border-[#616368]/30 h-full">
870
+ <div className="bg-white dark:bg-[var(--color-dash-text)] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 h-full">
871
871
  {isLoading ? (
872
872
  <CardSkeleton lines={4} />
873
873
  ) : (
874
874
  <>
875
875
  <div className="flex items-center justify-between mb-3">
876
- <div className="bg-[#157DE5]/10 rounded-lg p-2">
877
- <ClockIcon className="h-5 w-5 text-[#157DE5]" />
876
+ <div className="bg-[var(--color-dash-info)]/10 rounded-lg p-2">
877
+ <ClockIcon className="h-5 w-5 text-[var(--color-dash-info)]" />
878
878
  </div>
879
879
  </div>
880
- <p className="text-[#616368] dark:text-[#B0B1B3] text-xs font-semibold mb-2 uppercase tracking-wider">Reservations</p>
881
- <p className="text-4xl font-black text-[#0D1117] dark:text-white mb-1">{myReservations}</p>
882
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">through Engine</p>
880
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] text-xs font-semibold mb-2 uppercase tracking-wider">Reservations</p>
881
+ <p className="text-4xl font-black text-[var(--color-dash-text)] dark:text-white mb-1">{myReservations}</p>
882
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">through Engine</p>
883
883
  </>
884
884
  )}
885
885
  </div>
@@ -890,19 +890,19 @@ export default function PartnerHubDashboard() {
890
890
  onClick={() => !isLoading && setIsInvoicesModalOpen(true)}
891
891
  className={isLoading ? "" : "cursor-pointer"}
892
892
  >
893
- <div className="bg-white dark:bg-[#0D1117] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[#B0B1B3]/20 dark:border-[#616368]/30 h-full">
893
+ <div className="bg-white dark:bg-[var(--color-dash-text)] rounded-xl p-6 shadow-sm hover:shadow-lg transition-all duration-300 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 h-full">
894
894
  {isLoading ? (
895
895
  <CardSkeleton lines={4} />
896
896
  ) : (
897
897
  <>
898
898
  <div className="flex items-center justify-between mb-3">
899
- <div className="bg-[#FD4B23]/10 rounded-lg p-2">
900
- <ShieldCheckIcon className="h-5 w-5 text-[#FD4B23]" />
899
+ <div className="bg-[var(--color-dash-danger)]/10 rounded-lg p-2">
900
+ <ShieldCheckIcon className="h-5 w-5 text-[var(--color-dash-danger)]" />
901
901
  </div>
902
902
  </div>
903
- <p className="text-[#616368] dark:text-[#B0B1B3] text-xs font-semibold mb-2 uppercase tracking-wider">Invoices</p>
904
- <p className="text-4xl font-black text-[#0D1117] dark:text-white mb-1">{myPendingInvoices}</p>
905
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">ready to pay</p>
903
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] text-xs font-semibold mb-2 uppercase tracking-wider">Invoices</p>
904
+ <p className="text-4xl font-black text-[var(--color-dash-text)] dark:text-white mb-1">{myPendingInvoices}</p>
905
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">ready to pay</p>
906
906
  </>
907
907
  )}
908
908
  </div>
@@ -911,10 +911,10 @@ export default function PartnerHubDashboard() {
911
911
 
912
912
  {/* Property Leaderboard - NEW SECTION */}
913
913
  {isLoading ? (
914
- <div className="bg-gradient-to-br from-white via-[#F3F3F4] to-white dark:from-[#0D1117] dark:via-[#1a1f2e] dark:to-[#0D1117] rounded-2xl p-8 shadow-xl border border-[#B0B1B3]/20 dark:border-[#616368]/30">
914
+ <div className="bg-gradient-to-br from-white via-[var(--color-dash-surface)] to-white dark:from-[var(--color-dash-text)] dark:via-[var(--color-dash-dark)] dark:to-[var(--color-dash-text)] rounded-2xl p-8 shadow-xl border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
915
915
  <div className="mb-6">
916
- <div className="h-9 w-96 bg-[#B0B1B3]/20 rounded animate-pulse mb-2"></div>
917
- <div className="h-6 w-72 bg-[#B0B1B3]/20 rounded animate-pulse"></div>
916
+ <div className="h-9 w-96 bg-[var(--color-dash-label)]/20 rounded animate-pulse mb-2"></div>
917
+ <div className="h-6 w-72 bg-[var(--color-dash-label)]/20 rounded animate-pulse"></div>
918
918
  </div>
919
919
  <div className="space-y-4">
920
920
  <CardSkeleton lines={4} />
@@ -924,12 +924,12 @@ export default function PartnerHubDashboard() {
924
924
  </div>
925
925
  </div>
926
926
  ) : (
927
- <div className="bg-gradient-to-br from-white via-[#F3F3F4] to-white dark:from-[#0D1117] dark:via-[#1a1f2e] dark:to-[#0D1117] rounded-2xl p-8 shadow-xl border border-[#B0B1B3]/20 dark:border-[#616368]/30">
927
+ <div className="bg-gradient-to-br from-white via-[var(--color-dash-surface)] to-white dark:from-[var(--color-dash-text)] dark:via-[var(--color-dash-dark)] dark:to-[var(--color-dash-text)] rounded-2xl p-8 shadow-xl border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
928
928
  <div className="mb-6">
929
- <h2 className="text-3xl font-black text-[#0D1117] dark:text-white tracking-tight mb-2">
929
+ <h2 className="text-3xl font-black text-[var(--color-dash-text)] dark:text-white tracking-tight mb-2">
930
930
  Property Performance Leaderboard
931
931
  </h2>
932
- <p className="text-lg text-[#616368] dark:text-[#B0B1B3]">
932
+ <p className="text-lg text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
933
933
  Your 4 properties ranked by total revenue (last 6 months)
934
934
  </p>
935
935
  </div>
@@ -938,31 +938,31 @@ export default function PartnerHubDashboard() {
938
938
  {propertyLeaderboard.map((property, idx) => {
939
939
  // Determine icon and color based on rank
940
940
  let RankIcon = StarIcon;
941
- let iconColor = "text-[#B0B1B3]";
942
- let bgColor = "bg-[#B0B1B3]/10";
941
+ let iconColor = "text-[var(--color-dash-label)]";
942
+ let bgColor = "bg-[var(--color-dash-label)]/10";
943
943
 
944
944
  if (idx === 0) {
945
945
  RankIcon = TrophyIcon;
946
- iconColor = "text-[#FFB200]";
947
- bgColor = "bg-[#FFB200]/10";
946
+ iconColor = "text-[var(--color-dash-warning)]";
947
+ bgColor = "bg-[var(--color-dash-warning)]/10";
948
948
  } else if (idx === 1) {
949
949
  RankIcon = StarIcon;
950
- iconColor = "text-[#90A4AE]";
951
- bgColor = "bg-[#90A4AE]/10";
950
+ iconColor = "text-[var(--color-dash-label)]";
951
+ bgColor = "bg-[var(--color-dash-label)]/10";
952
952
  } else if (idx === 2) {
953
953
  RankIcon = StarIcon;
954
- iconColor = "text-[#CD7F32]";
955
- bgColor = "bg-[#CD7F32]/10";
954
+ iconColor = "text-[var(--color-dash-warning)]";
955
+ bgColor = "bg-[var(--color-dash-warning)]/10";
956
956
  } else {
957
957
  RankIcon = RocketLaunchIcon;
958
- iconColor = "text-[#7DCBD9]";
959
- bgColor = "bg-[#7DCBD9]/10";
958
+ iconColor = "text-[var(--color-dash-accent)]";
959
+ bgColor = "bg-[var(--color-dash-accent)]/10";
960
960
  }
961
961
 
962
962
  return (
963
963
  <div
964
964
  key={idx}
965
- className="group bg-white dark:bg-[#0D1117] rounded-xl p-6 border-2 border-[#B0B1B3]/20 dark:border-[#616368]/30 hover:border-[#1E9D6D] hover:shadow-lg transition-all duration-300"
965
+ className="group bg-white dark:bg-[var(--color-dash-text)] rounded-xl p-6 border-2 border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 hover:border-[var(--color-dash-success)] hover:shadow-lg transition-all duration-300"
966
966
  >
967
967
  <div className="flex items-center justify-between gap-6">
968
968
  <div className="flex items-center gap-4 flex-1">
@@ -974,32 +974,32 @@ export default function PartnerHubDashboard() {
974
974
  {/* Property info */}
975
975
  <div className="flex-1">
976
976
  <div className="flex items-center gap-3 mb-2">
977
- <h3 className="text-xl font-bold text-[#0D1117] dark:text-white">
977
+ <h3 className="text-xl font-bold text-[var(--color-dash-text)] dark:text-white">
978
978
  {property.name}
979
979
  </h3>
980
- <span className="inline-flex items-center rounded-full px-3 py-1 text-xs font-bold bg-[#1E9D6D]/20 text-[#1E9D6D] border border-[#1E9D6D]/30">
980
+ <span className="inline-flex items-center rounded-full px-3 py-1 text-xs font-bold bg-[var(--color-dash-success)]/20 text-[var(--color-dash-success)] border border-[var(--color-dash-success)]/30">
981
981
  +{property.growth}% growth
982
982
  </span>
983
983
  </div>
984
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-1">
984
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1">
985
985
  {property.insight}
986
986
  </p>
987
987
  <div className="flex items-center gap-6 text-sm">
988
- <span className="text-[#616368] dark:text-[#B0B1B3]">
989
- Total: <strong className="text-[#0D1117] dark:text-white">${property.revenue.toLocaleString()}</strong>
988
+ <span className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
989
+ Total: <strong className="text-[var(--color-dash-text)] dark:text-white">${property.revenue.toLocaleString()}</strong>
990
990
  </span>
991
- <span className="text-[#616368] dark:text-[#B0B1B3]">
992
- Latest: <strong className="text-[#0D1117] dark:text-white">${property.latestRevenue.toLocaleString()}</strong>
991
+ <span className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
992
+ Latest: <strong className="text-[var(--color-dash-text)] dark:text-white">${property.latestRevenue.toLocaleString()}</strong>
993
993
  </span>
994
994
  </div>
995
995
  </div>
996
996
 
997
997
  {/* Growth indicator */}
998
998
  <div className="text-right flex-shrink-0">
999
- <p className="text-4xl font-black text-[#1E9D6D] mb-1">
999
+ <p className="text-4xl font-black text-[var(--color-dash-success)] mb-1">
1000
1000
  {property.growth}%
1001
1001
  </p>
1002
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1002
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1003
1003
  Growth
1004
1004
  </p>
1005
1005
  </div>
@@ -1011,12 +1011,12 @@ export default function PartnerHubDashboard() {
1011
1011
  </div>
1012
1012
 
1013
1013
  {/* Summary insight */}
1014
- <div className="mt-6 bg-[#157DE5]/10 border-l-4 border-[#157DE5] rounded-r-lg p-5">
1014
+ <div className="mt-6 bg-[var(--color-dash-info)]/10 border-l-4 border-[var(--color-dash-info)] rounded-r-lg p-5">
1015
1015
  <div className="flex items-start gap-3">
1016
1016
  <div className="flex-shrink-0">
1017
- <LightBulbIcon className="h-5 w-5 text-[#157DE5]" />
1017
+ <LightBulbIcon className="h-5 w-5 text-[var(--color-dash-info)]" />
1018
1018
  </div>
1019
- <p className="text-base text-[#0D1117] dark:text-white font-medium">
1019
+ <p className="text-base text-[var(--color-dash-text)] dark:text-white font-medium">
1020
1020
  <strong>Key Insight:</strong> Austin is driving 41% of bookings through Engine and growing 60%.
1021
1021
  SF Bay doubled in 6 months (100% growth) — strong performance across your portfolio.
1022
1022
  </p>
@@ -1027,24 +1027,24 @@ export default function PartnerHubDashboard() {
1027
1027
 
1028
1028
  {/* Penalty Calculation Issue Card */}
1029
1029
  {!isLoading && myPenalties.filter((p: any) => p.isHero).length > 0 && (
1030
- <div className="bg-white dark:bg-[#0D1117] border-2 border-[#FFB200]/50 rounded-2xl p-8 shadow-lg hover:shadow-xl transition-shadow duration-300">
1030
+ <div className="bg-white dark:bg-[var(--color-dash-text)] border-2 border-[var(--color-dash-warning)]/50 rounded-2xl p-8 shadow-lg hover:shadow-xl transition-shadow duration-300">
1031
1031
  <div className="flex items-start gap-4 mb-6">
1032
1032
  <div className="flex-shrink-0">
1033
- <div className="bg-[#FFB200]/10 rounded-xl p-3">
1034
- <ExclamationTriangleIcon className="h-8 w-8 text-[#FFB200]" />
1033
+ <div className="bg-[var(--color-dash-warning)]/10 rounded-xl p-3">
1034
+ <ExclamationTriangleIcon className="h-8 w-8 text-[var(--color-dash-warning)]" />
1035
1035
  </div>
1036
1036
  </div>
1037
1037
  <div className="flex-1">
1038
1038
  <div className="flex items-start justify-between gap-4 mb-2">
1039
1039
  <div>
1040
- <h3 className="text-2xl font-bold text-[#0D1117] dark:text-white mb-1">
1040
+ <h3 className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white mb-1">
1041
1041
  Penalty Calculation Issue
1042
1042
  </h3>
1043
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3]">
1043
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1044
1044
  ATR-00001 · Summit Austin Convention Center · TechCorp Inc. booking
1045
1045
  </p>
1046
1046
  </div>
1047
- <span className="inline-flex items-center rounded-full px-3 py-1 text-xs font-bold bg-[#FFB200] text-white flex-shrink-0">
1047
+ <span className="inline-flex items-center rounded-full px-3 py-1 text-xs font-bold bg-[var(--color-dash-warning)] text-white flex-shrink-0">
1048
1048
  NEEDS REVIEW
1049
1049
  </span>
1050
1050
  </div>
@@ -1052,27 +1052,27 @@ export default function PartnerHubDashboard() {
1052
1052
  </div>
1053
1053
 
1054
1054
  <div className="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
1055
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-5 border border-[#B0B1B3]/20 dark:border-[#616368]/30">
1056
- <p className="text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Current Penalty</p>
1057
- <p className="text-3xl font-black text-[#0D1117] dark:text-white mb-1">$9,000</p>
1058
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">You owe Engine</p>
1055
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-5 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1056
+ <p className="text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Current Penalty</p>
1057
+ <p className="text-3xl font-black text-[var(--color-dash-text)] dark:text-white mb-1">$9,000</p>
1058
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">You owe Engine</p>
1059
1059
  </div>
1060
- <div className="bg-[#1E9D6D]/5 dark:bg-[#1E9D6D]/10 rounded-xl p-5 border border-[#1E9D6D]/30">
1061
- <p className="text-xs font-semibold text-[#1E9D6D] mb-2 uppercase tracking-wider">Resale Credit Missing</p>
1062
- <p className="text-3xl font-black text-[#1E9D6D] mb-1">-$2,400</p>
1063
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">Should reduce penalty</p>
1060
+ <div className="bg-[var(--color-dash-success)]/5 dark:bg-[var(--color-dash-success)]/10 rounded-xl p-5 border border-[var(--color-dash-success)]/30">
1061
+ <p className="text-xs font-semibold text-[var(--color-dash-success)] mb-2 uppercase tracking-wider">Resale Credit Missing</p>
1062
+ <p className="text-3xl font-black text-[var(--color-dash-success)] mb-1">-$2,400</p>
1063
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">Should reduce penalty</p>
1064
1064
  </div>
1065
- <div className="bg-[#7DCBD9]/5 dark:bg-[#7DCBD9]/10 rounded-xl p-5 border border-[#7DCBD9]/30">
1066
- <p className="text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Corrected Amount</p>
1067
- <p className="text-3xl font-black text-[#7DCBD9] mb-1">$6,600</p>
1068
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3]">What you should owe</p>
1065
+ <div className="bg-[var(--color-dash-accent)]/5 dark:bg-[var(--color-dash-accent)]/10 rounded-xl p-5 border border-[var(--color-dash-accent)]/30">
1066
+ <p className="text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Corrected Amount</p>
1067
+ <p className="text-3xl font-black text-[var(--color-dash-accent)] mb-1">$6,600</p>
1068
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">What you should owe</p>
1069
1069
  </div>
1070
1070
  </div>
1071
1071
 
1072
- <div className="bg-[#FFB200]/10 border-l-4 border-[#FFB200] rounded-r-lg p-4 mb-6">
1073
- <p className="text-sm text-[#0D1117] dark:text-white leading-relaxed">
1072
+ <div className="bg-[var(--color-dash-warning)]/10 border-l-4 border-[var(--color-dash-warning)] rounded-r-lg p-4 mb-6">
1073
+ <p className="text-sm text-[var(--color-dash-text)] dark:text-white leading-relaxed">
1074
1074
  Your contract specifies a <strong>50% resale credit</strong> for rooms that were resold. Based on <strong>8 rooms at $200/night for 3 nights</strong>,
1075
- you should receive a <strong className="text-[#1E9D6D]">$2,400 credit</strong> that wasn't applied. This should reduce your penalty from $9,000 to <strong>$6,600</strong>.
1075
+ you should receive a <strong className="text-[var(--color-dash-success)]">$2,400 credit</strong> that wasn't applied. This should reduce your penalty from $9,000 to <strong>$6,600</strong>.
1076
1076
  </p>
1077
1077
  </div>
1078
1078
 
@@ -1081,7 +1081,7 @@ export default function PartnerHubDashboard() {
1081
1081
  setSelectedPenalty(myPenalties.find((p: any) => p.isHero));
1082
1082
  setIsPenaltyModalOpen(true);
1083
1083
  }}
1084
- className="inline-flex items-center gap-2 px-6 py-3 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-xl transition-all duration-200 hover:shadow-lg group"
1084
+ className="inline-flex items-center gap-2 px-6 py-3 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-xl transition-all duration-200 hover:shadow-lg group"
1085
1085
  >
1086
1086
  <ExclamationTriangleIcon className="h-5 w-5" />
1087
1087
  Review This Calculation
@@ -1094,10 +1094,10 @@ export default function PartnerHubDashboard() {
1094
1094
 
1095
1095
  {/* Section - Conversational with Better Spacing */}
1096
1096
  <div className="pt-8 space-y-2">
1097
- <h2 className="text-3xl font-bold text-[#0D1117] dark:text-white tracking-tight">
1097
+ <h2 className="text-3xl font-bold text-[var(--color-dash-text)] dark:text-white tracking-tight">
1098
1098
  Recent activity
1099
1099
  </h2>
1100
- <p className="text-lg text-[#616368] dark:text-[#B0B1B3]">
1100
+ <p className="text-lg text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1101
1101
  Here's what's been happening with your properties
1102
1102
  </p>
1103
1103
  </div>
@@ -1112,7 +1112,7 @@ export default function PartnerHubDashboard() {
1112
1112
  </div>
1113
1113
  ) : myDisputes.length > 0 ? (
1114
1114
  <div className="space-y-5">
1115
- <h3 className="text-xl font-bold text-[#0D1117] dark:text-white">
1115
+ <h3 className="text-xl font-bold text-[var(--color-dash-text)] dark:text-white">
1116
1116
  Items that need your attention
1117
1117
  </h3>
1118
1118
  <div className="grid grid-cols-1 md:grid-cols-2 gap-5">
@@ -1123,33 +1123,33 @@ export default function PartnerHubDashboard() {
1123
1123
  toast.info(`Opening ${d.title}`);
1124
1124
  setSelectedDispute(d);
1125
1125
  }}
1126
- className="group bg-white dark:bg-[#0D1117] border border-[#B0B1B3]/20 dark:border-[#616368]/30 rounded-xl p-6 hover:border-[#7DCBD9] dark:hover:border-[#7DCBD9] transition-all duration-300 hover:shadow-lg cursor-pointer"
1126
+ className="group bg-white dark:bg-[var(--color-dash-text)] border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 rounded-xl p-6 hover:border-[var(--color-dash-accent)] dark:hover:border-[var(--color-dash-accent)] transition-all duration-300 hover:shadow-lg cursor-pointer"
1127
1127
  >
1128
1128
  <div className="flex items-start justify-between gap-3 mb-3">
1129
- <h4 className="font-semibold text-[#0D1117] dark:text-white flex-1">
1129
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white flex-1">
1130
1130
  {d.title}
1131
1131
  </h4>
1132
1132
  <span
1133
1133
  className={`inline-flex items-center rounded-full px-2 py-1 text-xs font-medium flex-shrink-0 ${
1134
1134
  d.status === "critical"
1135
- ? "bg-[#FD4B23]/10 text-[#FD4B23] border border-[#FD4B23]/30"
1135
+ ? "bg-[var(--color-dash-danger)]/10 text-[var(--color-dash-danger)] border border-[var(--color-dash-danger)]/30"
1136
1136
  : d.status === "warning"
1137
- ? "bg-[#FFB200]/10 text-[#FFB200] border border-[#FFB200]/30"
1138
- : "bg-[#157DE5]/10 text-[#157DE5] border border-[#157DE5]/30"
1137
+ ? "bg-[var(--color-dash-warning)]/10 text-[var(--color-dash-warning)] border border-[var(--color-dash-warning)]/30"
1138
+ : "bg-[var(--color-dash-info)]/10 text-[var(--color-dash-info)] border border-[var(--color-dash-info)]/30"
1139
1139
  }`}
1140
1140
  >
1141
1141
  {d.badge}
1142
1142
  </span>
1143
1143
  </div>
1144
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-4">
1144
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-4">
1145
1145
  {d.description}
1146
1146
  </p>
1147
1147
  <div className="flex items-center justify-between">
1148
- <span className="text-lg font-bold text-[#0D1117] dark:text-white">
1148
+ <span className="text-lg font-bold text-[var(--color-dash-text)] dark:text-white">
1149
1149
  ${d.amount.toLocaleString()}
1150
1150
  </span>
1151
1151
  {d.agentHandled && (
1152
- <span className="text-xs text-[#7DCBD9] flex items-center gap-1">
1152
+ <span className="text-xs text-[var(--color-dash-accent)] flex items-center gap-1">
1153
1153
  <svg className="h-3 w-3" fill="currentColor" viewBox="0 0 20 20">
1154
1154
  <path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
1155
1155
  </svg>
@@ -1167,43 +1167,43 @@ export default function PartnerHubDashboard() {
1167
1167
  {isLoading ? (
1168
1168
  <CardSkeleton lines={8} />
1169
1169
  ) : (
1170
- <div className="bg-white dark:bg-[#0D1117] border border-[#B0B1B3]/20 dark:border-[#616368]/30 rounded-xl overflow-hidden shadow-sm hover:shadow-lg transition-shadow duration-300">
1171
- <div className="p-8 border-b border-[#B0B1B3]/20 dark:border-[#616368]/30">
1172
- <h3 className="text-2xl font-bold text-[#0D1117] dark:text-white mb-2">
1170
+ <div className="bg-white dark:bg-[var(--color-dash-text)] border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 rounded-xl overflow-hidden shadow-sm hover:shadow-lg transition-shadow duration-300">
1171
+ <div className="p-8 border-b border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1172
+ <h3 className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white mb-2">
1173
1173
  All attrition penalties
1174
1174
  </h3>
1175
- <p className="text-base text-[#616368] dark:text-[#B0B1B3]">
1175
+ <p className="text-base text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1176
1176
  {myPenalties.length} {myPenalties.length === 1 ? 'penalty' : 'penalties'} · Showing recent calculations and adjustments
1177
1177
  </p>
1178
1178
  </div>
1179
1179
  <div className="overflow-x-auto">
1180
1180
  <table className="w-full">
1181
- <thead className="bg-[#F3F3F4] dark:bg-[#616368]/10 border-b border-[#B0B1B3]/20 dark:border-[#616368]/30">
1181
+ <thead className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 border-b border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1182
1182
  <tr>
1183
- <th className="px-6 py-3 text-left text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1183
+ <th className="px-6 py-3 text-left text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1184
1184
  Penalty ID
1185
1185
  </th>
1186
- <th className="px-6 py-3 text-left text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1186
+ <th className="px-6 py-3 text-left text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1187
1187
  Property
1188
1188
  </th>
1189
- <th className="px-6 py-3 text-left text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1189
+ <th className="px-6 py-3 text-left text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1190
1190
  Customer
1191
1191
  </th>
1192
- <th className="px-6 py-3 text-left text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1192
+ <th className="px-6 py-3 text-left text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1193
1193
  Method
1194
1194
  </th>
1195
- <th className="px-6 py-3 text-right text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1195
+ <th className="px-6 py-3 text-right text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1196
1196
  Penalty
1197
1197
  </th>
1198
- <th className="px-6 py-3 text-right text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1198
+ <th className="px-6 py-3 text-right text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1199
1199
  Credit
1200
1200
  </th>
1201
- <th className="px-6 py-3 text-center text-xs font-semibold text-[#616368] dark:text-[#B0B1B3] uppercase tracking-wider">
1201
+ <th className="px-6 py-3 text-center text-xs font-semibold text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] uppercase tracking-wider">
1202
1202
  Status
1203
1203
  </th>
1204
1204
  </tr>
1205
1205
  </thead>
1206
- <tbody className="divide-y divide-[#B0B1B3]/20 dark:divide-[#616368]/30">
1206
+ <tbody className="divide-y divide-[var(--color-dash-label)]/20 dark:divide-[var(--color-dash-muted)]/30">
1207
1207
  {myPenalties.map((penalty) => (
1208
1208
  <tr
1209
1209
  key={penalty.id}
@@ -1211,47 +1211,47 @@ export default function PartnerHubDashboard() {
1211
1211
  setSelectedPenalty(penalty);
1212
1212
  setIsPenaltyModalOpen(true);
1213
1213
  }}
1214
- className={`hover:bg-[#F3F3F4]/50 dark:hover:bg-[#616368]/5 transition-colors cursor-pointer ${
1215
- penalty.isHero ? "bg-[#FFB200]/5" : ""
1214
+ className={`hover:bg-[var(--color-dash-surface)]/50 dark:hover:bg-[var(--color-dash-muted)]/5 transition-colors cursor-pointer ${
1215
+ penalty.isHero ? "bg-[var(--color-dash-warning)]/5" : ""
1216
1216
  }`}
1217
1217
  >
1218
1218
  <td className="px-6 py-4 whitespace-nowrap">
1219
1219
  <div className="flex items-center gap-2">
1220
- <span className="text-sm font-medium text-[#0D1117] dark:text-white">
1220
+ <span className="text-sm font-medium text-[var(--color-dash-text)] dark:text-white">
1221
1221
  {penalty.name}
1222
1222
  </span>
1223
1223
  {penalty.isHero && (
1224
- <span className="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium bg-[#FFB200]/20 text-[#FFB200] border border-[#FFB200]/30">
1224
+ <span className="inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium bg-[var(--color-dash-warning)]/20 text-[var(--color-dash-warning)] border border-[var(--color-dash-warning)]/30">
1225
1225
  Review
1226
1226
  </span>
1227
1227
  )}
1228
1228
  </div>
1229
1229
  </td>
1230
- <td className="px-6 py-4 text-sm text-[#616368] dark:text-[#B0B1B3]">
1230
+ <td className="px-6 py-4 text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1231
1231
  {penalty.property}
1232
1232
  </td>
1233
- <td className="px-6 py-4 text-sm text-[#616368] dark:text-[#B0B1B3]">
1233
+ <td className="px-6 py-4 text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1234
1234
  {penalty.customer}
1235
1235
  </td>
1236
- <td className="px-6 py-4 text-sm text-[#616368] dark:text-[#B0B1B3]">
1236
+ <td className="px-6 py-4 text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1237
1237
  {penalty.method}
1238
1238
  </td>
1239
- <td className="px-6 py-4 text-sm font-semibold text-right text-[#0D1117] dark:text-white">
1239
+ <td className="px-6 py-4 text-sm font-semibold text-right text-[var(--color-dash-text)] dark:text-white">
1240
1240
  ${penalty.penalty.toLocaleString()}
1241
1241
  </td>
1242
- <td className="px-6 py-4 text-sm font-semibold text-right text-[#1E9D6D]">
1242
+ <td className="px-6 py-4 text-sm font-semibold text-right text-[var(--color-dash-success)]">
1243
1243
  ${penalty.credit.toLocaleString()}
1244
1244
  </td>
1245
1245
  <td className="px-6 py-4 text-center">
1246
1246
  <span
1247
1247
  className={`inline-flex items-center rounded-full px-2.5 py-1 text-xs font-medium ${
1248
1248
  penalty.status === "Approved"
1249
- ? "bg-[#1E9D6D]/10 text-[#1E9D6D] border border-[#1E9D6D]/30"
1249
+ ? "bg-[var(--color-dash-success)]/10 text-[var(--color-dash-success)] border border-[var(--color-dash-success)]/30"
1250
1250
  : penalty.status === "Reviewed"
1251
- ? "bg-[#157DE5]/10 text-[#157DE5] border border-[#157DE5]/30"
1251
+ ? "bg-[var(--color-dash-info)]/10 text-[var(--color-dash-info)] border border-[var(--color-dash-info)]/30"
1252
1252
  : penalty.status === "Calculated"
1253
- ? "bg-[#B0B1B3]/10 text-[#616368] border border-[#B0B1B3]/30"
1254
- : "bg-[#FD4B23]/10 text-[#FD4B23] border border-[#FD4B23]/30"
1253
+ ? "bg-[var(--color-dash-label)]/10 text-[var(--color-dash-muted)] border border-[var(--color-dash-label)]/30"
1254
+ : "bg-[var(--color-dash-danger)]/10 text-[var(--color-dash-danger)] border border-[var(--color-dash-danger)]/30"
1255
1255
  }`}
1256
1256
  >
1257
1257
  {penalty.status}
@@ -1267,10 +1267,10 @@ export default function PartnerHubDashboard() {
1267
1267
 
1268
1268
  {/* Section */}
1269
1269
  <div className="pt-8 space-y-2">
1270
- <h2 className="text-3xl font-bold text-[#0D1117] dark:text-white tracking-tight">
1270
+ <h2 className="text-3xl font-bold text-[var(--color-dash-text)] dark:text-white tracking-tight">
1271
1271
  Billing & contract details
1272
1272
  </h2>
1273
- <p className="text-lg text-[#616368] dark:text-[#B0B1B3]">
1273
+ <p className="text-lg text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1274
1274
  Keep track of invoices and your partnership terms
1275
1275
  </p>
1276
1276
  </div>
@@ -1279,14 +1279,14 @@ export default function PartnerHubDashboard() {
1279
1279
  {isLoading ? (
1280
1280
  <CardSkeleton lines={6} />
1281
1281
  ) : (
1282
- <div className="bg-white dark:bg-[#0D1117] border border-[#B0B1B3]/20 dark:border-[#616368]/30 rounded-xl shadow-sm hover:shadow-lg transition-shadow duration-300 overflow-hidden">
1283
- <div className="p-8 border-b border-[#B0B1B3]/20 dark:border-[#616368]/30">
1282
+ <div className="bg-white dark:bg-[var(--color-dash-text)] border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 rounded-xl shadow-sm hover:shadow-lg transition-shadow duration-300 overflow-hidden">
1283
+ <div className="p-8 border-b border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1284
1284
  <div className="flex items-start justify-between gap-4">
1285
1285
  <div>
1286
- <h3 className="text-2xl font-bold text-[#0D1117] dark:text-white mb-1">
1286
+ <h3 className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white mb-1">
1287
1287
  Revenue trend by property
1288
1288
  </h3>
1289
- <p className="text-base text-[#616368] dark:text-[#B0B1B3]">
1289
+ <p className="text-base text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1290
1290
  Monthly revenue earned through Engine across your {revenueTrendByProperty.properties?.length || 4} properties
1291
1291
  </p>
1292
1292
  </div>
@@ -1299,7 +1299,7 @@ export default function PartnerHubDashboard() {
1299
1299
  className="inline-block h-2.5 w-2.5 rounded-full flex-shrink-0"
1300
1300
  style={{ backgroundColor: prop.color }}
1301
1301
  />
1302
- <span className="text-xs font-medium text-[#616368] dark:text-[#B0B1B3]">
1302
+ <span className="text-xs font-medium text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1303
1303
  {prop.name}
1304
1304
  </span>
1305
1305
  </div>
@@ -1318,7 +1318,7 @@ export default function PartnerHubDashboard() {
1318
1318
  />
1319
1319
  </div>
1320
1320
  ) : (
1321
- <div className="h-[260px] flex items-center justify-center text-[#616368] dark:text-[#B0B1B3]">
1321
+ <div className="h-[260px] flex items-center justify-center text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1322
1322
  Loading chart data...
1323
1323
  </div>
1324
1324
  )}
@@ -1357,52 +1357,52 @@ export default function PartnerHubDashboard() {
1357
1357
  loading={isLoading}
1358
1358
  />
1359
1359
 
1360
- <div className="bg-white dark:bg-[#0D1117] border border-[#B0B1B3]/20 dark:border-[#616368]/30 rounded-xl shadow-sm hover:shadow-lg transition-shadow duration-300 overflow-hidden">
1361
- <div className="p-6 border-b border-[#B0B1B3]/20 dark:border-[#616368]/30">
1362
- <h3 className="text-xl font-bold text-[#0D1117] dark:text-white mb-1">
1360
+ <div className="bg-white dark:bg-[var(--color-dash-text)] border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 rounded-xl shadow-sm hover:shadow-lg transition-shadow duration-300 overflow-hidden">
1361
+ <div className="p-6 border-b border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1362
+ <h3 className="text-xl font-bold text-[var(--color-dash-text)] dark:text-white mb-1">
1363
1363
  Your Contract
1364
1364
  </h3>
1365
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3]">
1365
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1366
1366
  Partnership terms
1367
1367
  </p>
1368
1368
  </div>
1369
1369
  <div className="p-6 space-y-4">
1370
- <div className="flex items-center justify-between pb-4 border-b border-[#B0B1B3]/20 dark:border-[#616368]/30">
1370
+ <div className="flex items-center justify-between pb-4 border-b border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1371
1371
  <div>
1372
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-1 uppercase tracking-wider">Contract ID</p>
1373
- <p className="text-lg font-bold text-[#0D1117] dark:text-white">CNTR-00002</p>
1372
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1 uppercase tracking-wider">Contract ID</p>
1373
+ <p className="text-lg font-bold text-[var(--color-dash-text)] dark:text-white">CNTR-00002</p>
1374
1374
  </div>
1375
- <span className="inline-flex items-center rounded-full px-3 py-1 text-xs font-medium bg-[#1E9D6D]/10 text-[#1E9D6D] border border-[#1E9D6D]/30">
1375
+ <span className="inline-flex items-center rounded-full px-3 py-1 text-xs font-medium bg-[var(--color-dash-success)]/10 text-[var(--color-dash-success)] border border-[var(--color-dash-success)]/30">
1376
1376
  Active
1377
1377
  </span>
1378
1378
  </div>
1379
1379
 
1380
1380
  <div className="grid grid-cols-2 gap-4">
1381
1381
  <div>
1382
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-1 uppercase tracking-wider">Commission Rate</p>
1383
- <p className="text-2xl font-bold text-[#1E9D6D]">17%</p>
1382
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1 uppercase tracking-wider">Commission Rate</p>
1383
+ <p className="text-2xl font-bold text-[var(--color-dash-success)]">17%</p>
1384
1384
  </div>
1385
1385
  <div>
1386
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-1 uppercase tracking-wider">Contract Term</p>
1387
- <p className="text-sm font-semibold text-[#0D1117] dark:text-white">Mar 2025 - Feb 2027</p>
1386
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1 uppercase tracking-wider">Contract Term</p>
1387
+ <p className="text-sm font-semibold text-[var(--color-dash-text)] dark:text-white">Mar 2025 - Feb 2027</p>
1388
1388
  </div>
1389
1389
  </div>
1390
1390
 
1391
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-lg p-4 space-y-3">
1391
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-lg p-4 space-y-3">
1392
1392
  <div>
1393
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-1 uppercase tracking-wider">Attrition Method</p>
1394
- <p className="text-sm font-semibold text-[#0D1117] dark:text-white">Per Night (80% threshold)</p>
1393
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1 uppercase tracking-wider">Attrition Method</p>
1394
+ <p className="text-sm font-semibold text-[var(--color-dash-text)] dark:text-white">Per Night (80% threshold)</p>
1395
1395
  </div>
1396
1396
  <div>
1397
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-1 uppercase tracking-wider">Resale Credit Policy</p>
1398
- <p className="text-sm font-semibold text-[#0D1117] dark:text-white">Partial Credit (50%)</p>
1397
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1 uppercase tracking-wider">Resale Credit Policy</p>
1398
+ <p className="text-sm font-semibold text-[var(--color-dash-text)] dark:text-white">Partial Credit (50%)</p>
1399
1399
  </div>
1400
1400
  </div>
1401
1401
 
1402
1402
  <div className="pt-2">
1403
1403
  <button
1404
1404
  onClick={() => toast.info("Opening full contract PDF...")}
1405
- className="w-full inline-flex items-center justify-center gap-2 px-4 py-3 bg-[#F3F3F4] dark:bg-[#616368]/20 hover:bg-[#7DCBD9]/10 dark:hover:bg-[#7DCBD9]/10 text-[#0D1117] dark:text-white font-semibold rounded-lg border border-[#B0B1B3]/30 dark:border-[#616368]/50 hover:border-[#7DCBD9] transition-colors text-sm"
1405
+ className="w-full inline-flex items-center justify-center gap-2 px-4 py-3 bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/20 hover:bg-[var(--color-dash-accent)]/10 dark:hover:bg-[var(--color-dash-accent)]/10 text-[var(--color-dash-text)] dark:text-white font-semibold rounded-lg border border-[var(--color-dash-label)]/30 dark:border-[var(--color-dash-muted)]/50 hover:border-[var(--color-dash-accent)] transition-colors text-sm"
1406
1406
  >
1407
1407
  <DocumentArrowDownIcon className="h-4 w-4" />
1408
1408
  Download Full Contract
@@ -1415,10 +1415,10 @@ export default function PartnerHubDashboard() {
1415
1415
 
1416
1416
  {/* Section */}
1417
1417
  <div className="pt-8 space-y-2">
1418
- <h2 className="text-3xl font-bold text-[#0D1117] dark:text-white tracking-tight">
1418
+ <h2 className="text-3xl font-bold text-[var(--color-dash-text)] dark:text-white tracking-tight">
1419
1419
  What's been happening
1420
1420
  </h2>
1421
- <p className="text-lg text-[#616368] dark:text-[#B0B1B3]">
1421
+ <p className="text-lg text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1422
1422
  A quick timeline of recent updates
1423
1423
  </p>
1424
1424
  </div>
@@ -1447,17 +1447,17 @@ export default function PartnerHubDashboard() {
1447
1447
  )}
1448
1448
 
1449
1449
  {/* Help Section - Enhanced */}
1450
- <div className="bg-gradient-to-br from-white to-[#F3F3F4] dark:from-[#0D1117] dark:to-[#1a1f2e] rounded-2xl p-12 border border-[#B0B1B3]/20 dark:border-[#616368]/30 shadow-lg">
1450
+ <div className="bg-gradient-to-br from-white to-[var(--color-dash-surface)] dark:from-[var(--color-dash-text)] dark:to-[var(--color-dash-dark)] rounded-2xl p-12 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 shadow-lg">
1451
1451
  <div className="text-center max-w-2xl mx-auto space-y-6">
1452
- <h3 className="text-3xl font-bold text-[#0D1117] dark:text-white tracking-tight">
1452
+ <h3 className="text-3xl font-bold text-[var(--color-dash-text)] dark:text-white tracking-tight">
1453
1453
  Questions? We're here to help
1454
1454
  </h3>
1455
- <p className="text-[#616368] dark:text-[#B0B1B3] text-xl leading-relaxed">
1455
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] text-xl leading-relaxed">
1456
1456
  Our partner team is standing by if you need anything — from billing questions to contract details.
1457
1457
  </p>
1458
1458
  <div className="flex gap-4 justify-center flex-wrap pt-2">
1459
1459
  <Modal>
1460
- <button className="group px-8 py-4 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-xl transition-colors duration-200 hover:shadow-xl">
1460
+ <button className="group px-8 py-4 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-xl transition-colors duration-200 hover:shadow-xl">
1461
1461
  Get in touch
1462
1462
  </button>
1463
1463
  <Modal.Backdrop>
@@ -1465,52 +1465,52 @@ export default function PartnerHubDashboard() {
1465
1465
  <Modal.Dialog className="max-w-2xl">
1466
1466
  <Modal.CloseTrigger />
1467
1467
  <Modal.Header>
1468
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white">
1468
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">
1469
1469
  Contact Support
1470
1470
  </Modal.Heading>
1471
1471
  </Modal.Header>
1472
1472
  <Modal.Body className="space-y-6">
1473
- <p className="text-[#616368] dark:text-[#B0B1B3]">
1473
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1474
1474
  Our partner support team is here to help with billing questions, contract details, or any other issues you may have.
1475
1475
  </p>
1476
1476
 
1477
1477
  {/* Contact Options */}
1478
1478
  <div className="space-y-4">
1479
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-6 hover:border hover:border-[#7DCBD9] transition-colors cursor-pointer">
1479
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-6 hover:border hover:border-[var(--color-dash-accent)] transition-colors cursor-pointer">
1480
1480
  <div className="flex items-start gap-4">
1481
- <div className="bg-[#7DCBD9]/20 rounded-lg p-3">
1482
- <svg className="h-6 w-6 text-[#7DCBD9]" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1481
+ <div className="bg-[var(--color-dash-accent)]/20 rounded-lg p-3">
1482
+ <svg className="h-6 w-6 text-[var(--color-dash-accent)]" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1483
1483
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" />
1484
1484
  </svg>
1485
1485
  </div>
1486
1486
  <div>
1487
- <h4 className="font-semibold text-[#0D1117] dark:text-white mb-1">Email Support</h4>
1488
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-2">
1487
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-1">Email Support</h4>
1488
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2">
1489
1489
  Get help via email - we typically respond within 2-4 hours
1490
1490
  </p>
1491
- <a href="mailto:partners@engine.com" className="text-sm font-medium text-[#7DCBD9] hover:underline">
1491
+ <a href="mailto:partners@engine.com" className="text-sm font-medium text-[var(--color-dash-accent)] hover:underline">
1492
1492
  partners@engine.com
1493
1493
  </a>
1494
1494
  </div>
1495
1495
  </div>
1496
1496
  </div>
1497
1497
 
1498
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-6 hover:border hover:border-[#7DCBD9] transition-colors cursor-pointer">
1498
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-6 hover:border hover:border-[var(--color-dash-accent)] transition-colors cursor-pointer">
1499
1499
  <div className="flex items-start gap-4">
1500
- <div className="bg-[#1E9D6D]/20 rounded-lg p-3">
1501
- <svg className="h-6 w-6 text-[#1E9D6D]" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1500
+ <div className="bg-[var(--color-dash-success)]/20 rounded-lg p-3">
1501
+ <svg className="h-6 w-6 text-[var(--color-dash-success)]" fill="none" viewBox="0 0 24 24" stroke="currentColor">
1502
1502
  <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M3 5a2 2 0 012-2h3.28a1 1 0 01.948.684l1.498 4.493a1 1 0 01-.502 1.21l-2.257 1.13a11.042 11.042 0 005.516 5.516l1.13-2.257a1 1 0 011.21-.502l4.493 1.498a1 1 0 01.684.949V19a2 2 0 01-2 2h-1C9.716 21 3 14.284 3 6V5z" />
1503
1503
  </svg>
1504
1504
  </div>
1505
1505
  <div>
1506
- <h4 className="font-semibold text-[#0D1117] dark:text-white mb-1">Phone Support</h4>
1507
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-2">
1506
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-1">Phone Support</h4>
1507
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2">
1508
1508
  Speak with a partner specialist directly
1509
1509
  </p>
1510
- <a href="tel:+18005551234" className="text-sm font-medium text-[#1E9D6D] hover:underline">
1510
+ <a href="tel:+18005551234" className="text-sm font-medium text-[var(--color-dash-success)] hover:underline">
1511
1511
  1-800-555-1234
1512
1512
  </a>
1513
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mt-1">
1513
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mt-1">
1514
1514
  Mon-Fri, 8am-6pm EST
1515
1515
  </p>
1516
1516
  </div>
@@ -1520,7 +1520,7 @@ export default function PartnerHubDashboard() {
1520
1520
  </Modal.Body>
1521
1521
  <Modal.Footer>
1522
1522
  <div className="flex gap-3 justify-end">
1523
- <Modal.CloseTrigger className="px-6 py-2 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors">
1523
+ <Modal.CloseTrigger className="px-6 py-2 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors">
1524
1524
  Close
1525
1525
  </Modal.CloseTrigger>
1526
1526
  </div>
@@ -1532,7 +1532,7 @@ export default function PartnerHubDashboard() {
1532
1532
 
1533
1533
  <button
1534
1534
  onClick={() => toast.info("Opening help documentation...")}
1535
- className="group px-8 py-4 bg-transparent hover:bg-[#F3F3F4] dark:hover:bg-[#616368]/20 text-[#0D1117] dark:text-white font-semibold rounded-xl border-2 border-[#B0B1B3]/30 dark:border-[#616368]/50 hover:border-[#7DCBD9] transition-colors duration-200"
1535
+ className="group px-8 py-4 bg-transparent hover:bg-[var(--color-dash-surface)] dark:hover:bg-[var(--color-dash-muted)]/20 text-[var(--color-dash-text)] dark:text-white font-semibold rounded-xl border-2 border-[var(--color-dash-label)]/30 dark:border-[var(--color-dash-muted)]/50 hover:border-[var(--color-dash-accent)] transition-colors duration-200"
1536
1536
  >
1537
1537
  Browse help docs
1538
1538
  </button>
@@ -1541,7 +1541,7 @@ export default function PartnerHubDashboard() {
1541
1541
  </div>
1542
1542
 
1543
1543
  {/* Footer */}
1544
- <div className="text-center py-8 text-sm text-[#B0B1B3]">
1544
+ <div className="text-center py-8 text-sm text-[var(--color-dash-label)]">
1545
1545
  <p>© 2026 Engine · Welcome to modern travel management</p>
1546
1546
  </div>
1547
1547
  </div>
@@ -1553,30 +1553,30 @@ export default function PartnerHubDashboard() {
1553
1553
  <Modal.Dialog className="max-w-4xl">
1554
1554
  <Modal.CloseTrigger />
1555
1555
  <Modal.Header>
1556
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white">
1556
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">
1557
1557
  Your Properties
1558
1558
  </Modal.Heading>
1559
1559
  </Modal.Header>
1560
1560
  <Modal.Body className="space-y-4">
1561
- <p className="text-[#616368] dark:text-[#B0B1B3] mb-4">
1561
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-4">
1562
1562
  {myProperties} active properties in your portfolio
1563
1563
  </p>
1564
1564
  <div className="space-y-3">
1565
1565
  {revenueTrendByProperty.properties?.map((prop, idx) => (
1566
1566
  <div
1567
1567
  key={idx}
1568
- className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-5 border border-[#B0B1B3]/20 dark:border-[#616368]/30 hover:border-[#7DCBD9] transition-colors"
1568
+ className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-5 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 hover:border-[var(--color-dash-accent)] transition-colors"
1569
1569
  >
1570
1570
  <div className="flex items-start justify-between gap-4">
1571
1571
  <div className="flex items-start gap-3 flex-1">
1572
1572
  <div className="mt-1">
1573
- <BuildingOfficeIcon className="h-5 w-5 text-[#7DCBD9]" />
1573
+ <BuildingOfficeIcon className="h-5 w-5 text-[var(--color-dash-accent)]" />
1574
1574
  </div>
1575
1575
  <div>
1576
- <h4 className="font-semibold text-[#0D1117] dark:text-white mb-1">
1576
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-1">
1577
1577
  {prop.name}
1578
1578
  </h4>
1579
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3]">
1579
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1580
1580
  Latest revenue: ${prop.values[prop.values.length - 1].toLocaleString()}
1581
1581
  </p>
1582
1582
  </div>
@@ -1592,7 +1592,7 @@ export default function PartnerHubDashboard() {
1592
1592
  </Modal.Body>
1593
1593
  <Modal.Footer>
1594
1594
  <Modal.CloseTrigger asChild>
1595
- <button className="px-6 py-2 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors">
1595
+ <button className="px-6 py-2 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors">
1596
1596
  Close
1597
1597
  </button>
1598
1598
  </Modal.CloseTrigger>
@@ -1609,18 +1609,18 @@ export default function PartnerHubDashboard() {
1609
1609
  <Modal.Dialog className="max-w-4xl">
1610
1610
  <Modal.CloseTrigger />
1611
1611
  <Modal.Header>
1612
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white">
1612
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">
1613
1613
  Revenue Breakdown
1614
1614
  </Modal.Heading>
1615
1615
  </Modal.Header>
1616
1616
  <Modal.Body className="space-y-4">
1617
- <div className="bg-gradient-to-br from-[#1E9D6D]/10 to-[#7DCBD9]/10 rounded-xl p-6 mb-4">
1618
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-2">Total Revenue</p>
1619
- <p className="text-4xl font-bold text-[#0D1117] dark:text-white">
1617
+ <div className="bg-gradient-to-br from-[var(--color-dash-success)]/10 to-[var(--color-dash-accent)]/10 rounded-xl p-6 mb-4">
1618
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2">Total Revenue</p>
1619
+ <p className="text-4xl font-bold text-[var(--color-dash-text)] dark:text-white">
1620
1620
  ${myRevenue.toLocaleString()}
1621
1621
  </p>
1622
1622
  </div>
1623
- <h3 className="font-semibold text-[#0D1117] dark:text-white mb-3">By Property</h3>
1623
+ <h3 className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-3">By Property</h3>
1624
1624
  <div className="space-y-3">
1625
1625
  {revenueTrendByProperty.properties?.map((prop, idx) => {
1626
1626
  const totalRevenue = prop.values.reduce((sum, val) => sum + val, 0);
@@ -1628,7 +1628,7 @@ export default function PartnerHubDashboard() {
1628
1628
  return (
1629
1629
  <div
1630
1630
  key={idx}
1631
- className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-5 border border-[#B0B1B3]/20 dark:border-[#616368]/30"
1631
+ className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-5 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30"
1632
1632
  >
1633
1633
  <div className="flex items-center justify-between mb-3">
1634
1634
  <div className="flex items-center gap-3">
@@ -1636,16 +1636,16 @@ export default function PartnerHubDashboard() {
1636
1636
  className="inline-block h-3 w-3 rounded-full"
1637
1637
  style={{ backgroundColor: prop.color }}
1638
1638
  />
1639
- <span className="font-semibold text-[#0D1117] dark:text-white">
1639
+ <span className="font-semibold text-[var(--color-dash-text)] dark:text-white">
1640
1640
  {prop.name}
1641
1641
  </span>
1642
1642
  </div>
1643
- <span className="text-lg font-bold text-[#0D1117] dark:text-white">
1643
+ <span className="text-lg font-bold text-[var(--color-dash-text)] dark:text-white">
1644
1644
  ${totalRevenue.toLocaleString()}
1645
1645
  </span>
1646
1646
  </div>
1647
1647
  <div className="flex items-center gap-3">
1648
- <div className="flex-1 bg-[#B0B1B3]/20 rounded-full h-2">
1648
+ <div className="flex-1 bg-[var(--color-dash-label)]/20 rounded-full h-2">
1649
1649
  <div
1650
1650
  className="h-2 rounded-full"
1651
1651
  style={{
@@ -1654,7 +1654,7 @@ export default function PartnerHubDashboard() {
1654
1654
  }}
1655
1655
  />
1656
1656
  </div>
1657
- <span className="text-sm text-[#616368] dark:text-[#B0B1B3] w-12 text-right">
1657
+ <span className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] w-12 text-right">
1658
1658
  {percentage}%
1659
1659
  </span>
1660
1660
  </div>
@@ -1666,7 +1666,7 @@ export default function PartnerHubDashboard() {
1666
1666
  <Modal.Footer>
1667
1667
  <button
1668
1668
  onClick={() => setIsRevenueModalOpen(false)}
1669
- className="px-6 py-2 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors"
1669
+ className="px-6 py-2 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors"
1670
1670
  >
1671
1671
  Close
1672
1672
  </button>
@@ -1683,17 +1683,17 @@ export default function PartnerHubDashboard() {
1683
1683
  <Modal.Dialog className="max-w-4xl">
1684
1684
  <Modal.CloseTrigger />
1685
1685
  <Modal.Header>
1686
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white">
1686
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">
1687
1687
  Reservations
1688
1688
  </Modal.Heading>
1689
1689
  </Modal.Header>
1690
1690
  <Modal.Body>
1691
- <p className="text-[#616368] dark:text-[#B0B1B3] mb-4">
1691
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-4">
1692
1692
  {myReservations} total reservations through Engine
1693
1693
  </p>
1694
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-8 text-center">
1695
- <ClockIcon className="h-12 w-12 text-[#157DE5] mx-auto mb-3" />
1696
- <p className="text-[#616368] dark:text-[#B0B1B3]">
1694
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-8 text-center">
1695
+ <ClockIcon className="h-12 w-12 text-[var(--color-dash-info)] mx-auto mb-3" />
1696
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1697
1697
  Detailed reservation data is available in your full property management dashboard
1698
1698
  </p>
1699
1699
  </div>
@@ -1701,7 +1701,7 @@ export default function PartnerHubDashboard() {
1701
1701
  <Modal.Footer>
1702
1702
  <button
1703
1703
  onClick={() => setIsReservationsModalOpen(false)}
1704
- className="px-6 py-2 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors"
1704
+ className="px-6 py-2 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors"
1705
1705
  >
1706
1706
  Close
1707
1707
  </button>
@@ -1718,12 +1718,12 @@ export default function PartnerHubDashboard() {
1718
1718
  <Modal.Dialog className="max-w-4xl">
1719
1719
  <Modal.CloseTrigger />
1720
1720
  <Modal.Header>
1721
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white">
1721
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">
1722
1722
  Items to Review
1723
1723
  </Modal.Heading>
1724
1724
  </Modal.Header>
1725
1725
  <Modal.Body className="space-y-4">
1726
- <p className="text-[#616368] dark:text-[#B0B1B3] mb-4">
1726
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-4">
1727
1727
  {myOpenDisputes} {myOpenDisputes === 1 ? 'item needs' : 'items need'} your attention
1728
1728
  </p>
1729
1729
  {myDisputes.length > 0 ? (
@@ -1731,33 +1731,33 @@ export default function PartnerHubDashboard() {
1731
1731
  {myDisputes.map((d) => (
1732
1732
  <div
1733
1733
  key={d.id}
1734
- className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-5 border border-[#B0B1B3]/20 dark:border-[#616368]/30 hover:border-[#FFB200] transition-colors"
1734
+ className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-5 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 hover:border-[var(--color-dash-warning)] transition-colors"
1735
1735
  >
1736
1736
  <div className="flex items-start justify-between gap-3 mb-2">
1737
- <h4 className="font-semibold text-[#0D1117] dark:text-white flex-1">
1737
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white flex-1">
1738
1738
  {d.title}
1739
1739
  </h4>
1740
1740
  <span
1741
1741
  className={`inline-flex items-center rounded-full px-2 py-1 text-xs font-medium flex-shrink-0 ${
1742
1742
  d.status === "critical"
1743
- ? "bg-[#FD4B23]/10 text-[#FD4B23] border border-[#FD4B23]/30"
1743
+ ? "bg-[var(--color-dash-danger)]/10 text-[var(--color-dash-danger)] border border-[var(--color-dash-danger)]/30"
1744
1744
  : d.status === "warning"
1745
- ? "bg-[#FFB200]/10 text-[#FFB200] border border-[#FFB200]/30"
1746
- : "bg-[#157DE5]/10 text-[#157DE5] border border-[#157DE5]/30"
1745
+ ? "bg-[var(--color-dash-warning)]/10 text-[var(--color-dash-warning)] border border-[var(--color-dash-warning)]/30"
1746
+ : "bg-[var(--color-dash-info)]/10 text-[var(--color-dash-info)] border border-[var(--color-dash-info)]/30"
1747
1747
  }`}
1748
1748
  >
1749
1749
  {d.badge}
1750
1750
  </span>
1751
1751
  </div>
1752
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-3">
1752
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-3">
1753
1753
  {d.description}
1754
1754
  </p>
1755
1755
  <div className="flex items-center justify-between">
1756
- <span className="text-lg font-bold text-[#0D1117] dark:text-white">
1756
+ <span className="text-lg font-bold text-[var(--color-dash-text)] dark:text-white">
1757
1757
  ${d.amount.toLocaleString()}
1758
1758
  </span>
1759
1759
  {d.agentHandled && (
1760
- <span className="text-xs text-[#7DCBD9] flex items-center gap-1">
1760
+ <span className="text-xs text-[var(--color-dash-accent)] flex items-center gap-1">
1761
1761
  <svg className="h-3 w-3" fill="currentColor" viewBox="0 0 20 20">
1762
1762
  <path fillRule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clipRule="evenodd" />
1763
1763
  </svg>
@@ -1769,15 +1769,15 @@ export default function PartnerHubDashboard() {
1769
1769
  ))}
1770
1770
  </div>
1771
1771
  ) : (
1772
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-8 text-center">
1773
- <p className="text-[#616368] dark:text-[#B0B1B3]">No items need attention</p>
1772
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-8 text-center">
1773
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">No items need attention</p>
1774
1774
  </div>
1775
1775
  )}
1776
1776
  </Modal.Body>
1777
1777
  <Modal.Footer>
1778
1778
  <button
1779
1779
  onClick={() => setIsDisputesModalOpen(false)}
1780
- className="px-6 py-2 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors"
1780
+ className="px-6 py-2 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors"
1781
1781
  >
1782
1782
  Close
1783
1783
  </button>
@@ -1794,7 +1794,7 @@ export default function PartnerHubDashboard() {
1794
1794
  <Modal.Dialog className="w-[95vw] max-w-4xl max-h-[90vh] overflow-y-auto">
1795
1795
  <Modal.CloseTrigger />
1796
1796
  <Modal.Header className="p-8 pb-4">
1797
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white pr-8">
1797
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white pr-8">
1798
1798
  Penalty Review: {selectedPenalty?.name}
1799
1799
  </Modal.Heading>
1800
1800
  </Modal.Header>
@@ -1804,44 +1804,44 @@ export default function PartnerHubDashboard() {
1804
1804
  {/* Property & Customer Info */}
1805
1805
  <div className="grid grid-cols-2 gap-4">
1806
1806
  <div>
1807
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-1">Property</p>
1808
- <p className="font-semibold text-[#0D1117] dark:text-white">{selectedPenalty.property}</p>
1807
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1">Property</p>
1808
+ <p className="font-semibold text-[var(--color-dash-text)] dark:text-white">{selectedPenalty.property}</p>
1809
1809
  </div>
1810
1810
  <div>
1811
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-1">Customer</p>
1812
- <p className="font-semibold text-[#0D1117] dark:text-white">{selectedPenalty.customer}</p>
1811
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-1">Customer</p>
1812
+ <p className="font-semibold text-[var(--color-dash-text)] dark:text-white">{selectedPenalty.customer}</p>
1813
1813
  </div>
1814
1814
  </div>
1815
1815
 
1816
1816
  {/* Booking Details */}
1817
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-6">
1818
- <h4 className="font-semibold text-[#0D1117] dark:text-white mb-4">Booking Details</h4>
1817
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-6">
1818
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-4">Booking Details</h4>
1819
1819
  <div className="grid grid-cols-3 gap-6">
1820
1820
  <div>
1821
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Original Block</p>
1822
- <p className="text-xl font-bold text-[#0D1117] dark:text-white">{selectedPenalty.originalRoomBlock} rooms</p>
1821
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Original Block</p>
1822
+ <p className="text-xl font-bold text-[var(--color-dash-text)] dark:text-white">{selectedPenalty.originalRoomBlock} rooms</p>
1823
1823
  </div>
1824
1824
  <div>
1825
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Rooms Used</p>
1826
- <p className="text-xl font-bold text-[#1E9D6D]">{selectedPenalty.actualRoomsUsed} rooms</p>
1825
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Rooms Used</p>
1826
+ <p className="text-xl font-bold text-[var(--color-dash-success)]">{selectedPenalty.actualRoomsUsed} rooms</p>
1827
1827
  </div>
1828
1828
  <div>
1829
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Unused</p>
1830
- <p className="text-xl font-bold text-[#FD4B23]">{selectedPenalty.unusedRooms} rooms</p>
1829
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Unused</p>
1830
+ <p className="text-xl font-bold text-[var(--color-dash-danger)]">{selectedPenalty.unusedRooms} rooms</p>
1831
1831
  </div>
1832
1832
  </div>
1833
- <div className="grid grid-cols-3 gap-6 mt-6 pt-6 border-t border-[#B0B1B3]/20 dark:border-[#616368]/30">
1833
+ <div className="grid grid-cols-3 gap-6 mt-6 pt-6 border-t border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30">
1834
1834
  <div>
1835
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Room Rate</p>
1836
- <p className="text-xl font-bold text-[#0D1117] dark:text-white">${selectedPenalty.roomRate}/night</p>
1835
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Room Rate</p>
1836
+ <p className="text-xl font-bold text-[var(--color-dash-text)] dark:text-white">${selectedPenalty.roomRate}/night</p>
1837
1837
  </div>
1838
1838
  <div>
1839
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Number of Nights</p>
1840
- <p className="text-xl font-bold text-[#0D1117] dark:text-white">{selectedPenalty.numberOfNights}</p>
1839
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Number of Nights</p>
1840
+ <p className="text-xl font-bold text-[var(--color-dash-text)] dark:text-white">{selectedPenalty.numberOfNights}</p>
1841
1841
  </div>
1842
1842
  <div>
1843
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Rooms Resold</p>
1844
- <p className="text-xl font-bold text-[#7DCBD9]">{selectedPenalty.roomsResold} rooms</p>
1843
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Rooms Resold</p>
1844
+ <p className="text-xl font-bold text-[var(--color-dash-accent)]">{selectedPenalty.roomsResold} rooms</p>
1845
1845
  </div>
1846
1846
  </div>
1847
1847
  </div>
@@ -1849,42 +1849,42 @@ export default function PartnerHubDashboard() {
1849
1849
  {/* Calculation Method & Policy */}
1850
1850
  <div className="grid grid-cols-2 gap-6">
1851
1851
  <div>
1852
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-2">Calculation Method</p>
1853
- <p className="text-lg font-semibold text-[#0D1117] dark:text-white">{selectedPenalty.method}</p>
1852
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2">Calculation Method</p>
1853
+ <p className="text-lg font-semibold text-[var(--color-dash-text)] dark:text-white">{selectedPenalty.method}</p>
1854
1854
  </div>
1855
1855
  <div>
1856
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-2">Resale Policy</p>
1857
- <p className="text-lg font-semibold text-[#0D1117] dark:text-white">{selectedPenalty.resalePolicy}</p>
1856
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2">Resale Policy</p>
1857
+ <p className="text-lg font-semibold text-[var(--color-dash-text)] dark:text-white">{selectedPenalty.resalePolicy}</p>
1858
1858
  </div>
1859
1859
  </div>
1860
1860
 
1861
1861
  {/* Financial Details */}
1862
1862
  <div>
1863
- <h4 className="font-semibold text-[#0D1117] dark:text-white mb-4">Financial Summary</h4>
1863
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-4">Financial Summary</h4>
1864
1864
  <div className="grid grid-cols-3 gap-6">
1865
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-lg p-5">
1866
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Calculated Penalty</p>
1867
- <p className="text-2xl font-bold text-[#0D1117] dark:text-white">${selectedPenalty.penaltyCalculated.toLocaleString()}</p>
1865
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-lg p-5">
1866
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Calculated Penalty</p>
1867
+ <p className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">${selectedPenalty.penaltyCalculated.toLocaleString()}</p>
1868
1868
  </div>
1869
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-lg p-5">
1870
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Credit Applied</p>
1871
- <p className="text-2xl font-bold text-[#1E9D6D]">${selectedPenalty.credit.toLocaleString()}</p>
1869
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-lg p-5">
1870
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Credit Applied</p>
1871
+ <p className="text-2xl font-bold text-[var(--color-dash-success)]">${selectedPenalty.credit.toLocaleString()}</p>
1872
1872
  </div>
1873
- <div className={`rounded-lg p-5 border ${selectedPenalty.isHero ? 'bg-[#FFB200]/10 border-[#FFB200]/30' : 'bg-[#F3F3F4] dark:bg-[#616368]/10 border-transparent'}`}>
1874
- <p className="text-xs text-[#616368] dark:text-[#B0B1B3] mb-2 uppercase tracking-wider">Final Penalty</p>
1875
- <p className={`text-2xl font-bold ${selectedPenalty.isHero ? 'text-[#FFB200]' : 'text-[#0D1117] dark:text-white'}`}>${selectedPenalty.penalty.toLocaleString()}</p>
1873
+ <div className={`rounded-lg p-5 border ${selectedPenalty.isHero ? 'bg-[var(--color-dash-warning)]/10 border-[var(--color-dash-warning)]/30' : 'bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 border-transparent'}`}>
1874
+ <p className="text-xs text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2 uppercase tracking-wider">Final Penalty</p>
1875
+ <p className={`text-2xl font-bold ${selectedPenalty.isHero ? 'text-[var(--color-dash-warning)]' : 'text-[var(--color-dash-text)] dark:text-white'}`}>${selectedPenalty.penalty.toLocaleString()}</p>
1876
1876
  </div>
1877
1877
  </div>
1878
1878
  </div>
1879
1879
 
1880
1880
  {/* Issue Description */}
1881
1881
  {selectedPenalty.isHero && (
1882
- <div className="bg-[#FFB200]/10 border-l-4 border-[#FFB200] rounded-lg p-5">
1883
- <p className="font-semibold text-[#0D1117] dark:text-white mb-3 flex items-center gap-2">
1884
- <ExclamationTriangleIcon className="h-5 w-5 text-[#FFB200]" />
1882
+ <div className="bg-[var(--color-dash-warning)]/10 border-l-4 border-[var(--color-dash-warning)] rounded-lg p-5">
1883
+ <p className="font-semibold text-[var(--color-dash-text)] dark:text-white mb-3 flex items-center gap-2">
1884
+ <ExclamationTriangleIcon className="h-5 w-5 text-[var(--color-dash-warning)]" />
1885
1885
  Why this needs review:
1886
1886
  </p>
1887
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] leading-relaxed">
1887
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] leading-relaxed">
1888
1888
  Your contract specifies a {selectedPenalty.resalePolicy.toLowerCase()}. Based on {selectedPenalty.roomsResold} rooms resold at ${selectedPenalty.roomRate}/night for {selectedPenalty.numberOfNights} {selectedPenalty.numberOfNights === 1 ? 'night' : 'nights'},
1889
1889
  we'd expect to see a ${(selectedPenalty.roomsResold * selectedPenalty.roomRate * selectedPenalty.numberOfNights * 0.5).toLocaleString()} credit that doesn't appear to be fully applied.
1890
1890
  </p>
@@ -1893,16 +1893,16 @@ export default function PartnerHubDashboard() {
1893
1893
 
1894
1894
  {/* Status */}
1895
1895
  <div>
1896
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mb-2">Status</p>
1896
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-2">Status</p>
1897
1897
  <span
1898
1898
  className={`inline-flex items-center rounded-full px-3 py-1 text-sm font-medium ${
1899
1899
  selectedPenalty.status === "Approved"
1900
- ? "bg-[#1E9D6D]/10 text-[#1E9D6D] border border-[#1E9D6D]/30"
1900
+ ? "bg-[var(--color-dash-success)]/10 text-[var(--color-dash-success)] border border-[var(--color-dash-success)]/30"
1901
1901
  : selectedPenalty.status === "Reviewed"
1902
- ? "bg-[#157DE5]/10 text-[#157DE5] border border-[#157DE5]/30"
1902
+ ? "bg-[var(--color-dash-info)]/10 text-[var(--color-dash-info)] border border-[var(--color-dash-info)]/30"
1903
1903
  : selectedPenalty.status === "Calculated"
1904
- ? "bg-[#B0B1B3]/10 text-[#616368] border border-[#B0B1B3]/30"
1905
- : "bg-[#FFB200]/10 text-[#FFB200] border border-[#FFB200]/30"
1904
+ ? "bg-[var(--color-dash-label)]/10 text-[var(--color-dash-muted)] border border-[var(--color-dash-label)]/30"
1905
+ : "bg-[var(--color-dash-warning)]/10 text-[var(--color-dash-warning)] border border-[var(--color-dash-warning)]/30"
1906
1906
  }`}
1907
1907
  >
1908
1908
  {selectedPenalty.status}
@@ -1915,7 +1915,7 @@ export default function PartnerHubDashboard() {
1915
1915
  <div className="flex gap-4 justify-end flex-wrap">
1916
1916
  <button
1917
1917
  onClick={() => setIsPenaltyModalOpen(false)}
1918
- className="px-6 py-2.5 bg-transparent hover:bg-[#F3F3F4] dark:hover:bg-[#616368]/20 text-[#0D1117] dark:text-white font-semibold rounded-lg border border-[#B0B1B3]/30 dark:border-[#616368]/50 transition-colors"
1918
+ className="px-6 py-2.5 bg-transparent hover:bg-[var(--color-dash-surface)] dark:hover:bg-[var(--color-dash-muted)]/20 text-[var(--color-dash-text)] dark:text-white font-semibold rounded-lg border border-[var(--color-dash-label)]/30 dark:border-[var(--color-dash-muted)]/50 transition-colors"
1919
1919
  >
1920
1920
  Close
1921
1921
  </button>
@@ -1924,7 +1924,7 @@ export default function PartnerHubDashboard() {
1924
1924
  toast.success("Dispute has been filed. Support team will follow up.");
1925
1925
  setIsPenaltyModalOpen(false);
1926
1926
  }}
1927
- className="px-6 py-2.5 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors whitespace-nowrap"
1927
+ className="px-6 py-2.5 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors whitespace-nowrap"
1928
1928
  >
1929
1929
  File Dispute
1930
1930
  </button>
@@ -1942,12 +1942,12 @@ export default function PartnerHubDashboard() {
1942
1942
  <Modal.Dialog className="max-w-4xl">
1943
1943
  <Modal.CloseTrigger />
1944
1944
  <Modal.Header>
1945
- <Modal.Heading className="text-2xl font-bold text-[#0D1117] dark:text-white">
1945
+ <Modal.Heading className="text-2xl font-bold text-[var(--color-dash-text)] dark:text-white">
1946
1946
  Your Invoices
1947
1947
  </Modal.Heading>
1948
1948
  </Modal.Header>
1949
1949
  <Modal.Body className="space-y-4">
1950
- <p className="text-[#616368] dark:text-[#B0B1B3] mb-4">
1950
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mb-4">
1951
1951
  {myPendingInvoices} {myPendingInvoices === 1 ? 'invoice' : 'invoices'} ready to pay
1952
1952
  </p>
1953
1953
  {myInvoices.length > 0 ? (
@@ -1955,32 +1955,32 @@ export default function PartnerHubDashboard() {
1955
1955
  {myInvoices.map((inv) => (
1956
1956
  <div
1957
1957
  key={inv.id}
1958
- className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-5 border border-[#B0B1B3]/20 dark:border-[#616368]/30 hover:border-[#1E9D6D] transition-colors"
1958
+ className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-5 border border-[var(--color-dash-label)]/20 dark:border-[var(--color-dash-muted)]/30 hover:border-[var(--color-dash-success)] transition-colors"
1959
1959
  >
1960
1960
  <div className="flex items-start justify-between gap-3 mb-2">
1961
1961
  <div>
1962
- <h4 className="font-semibold text-[#0D1117] dark:text-white">
1962
+ <h4 className="font-semibold text-[var(--color-dash-text)] dark:text-white">
1963
1963
  {inv.title}
1964
1964
  </h4>
1965
- <p className="text-sm text-[#616368] dark:text-[#B0B1B3] mt-1">
1965
+ <p className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)] mt-1">
1966
1966
  {inv.description}
1967
1967
  </p>
1968
1968
  </div>
1969
1969
  <span
1970
1970
  className={`inline-flex items-center rounded-full px-2 py-1 text-xs font-medium flex-shrink-0 ${
1971
1971
  inv.status === "critical"
1972
- ? "bg-[#FD4B23]/10 text-[#FD4B23] border border-[#FD4B23]/30"
1973
- : "bg-[#157DE5]/10 text-[#157DE5] border border-[#157DE5]/30"
1972
+ ? "bg-[var(--color-dash-danger)]/10 text-[var(--color-dash-danger)] border border-[var(--color-dash-danger)]/30"
1973
+ : "bg-[var(--color-dash-info)]/10 text-[var(--color-dash-info)] border border-[var(--color-dash-info)]/30"
1974
1974
  }`}
1975
1975
  >
1976
1976
  {inv.badge}
1977
1977
  </span>
1978
1978
  </div>
1979
1979
  <div className="flex items-center justify-between mt-3">
1980
- <span className="text-lg font-bold text-[#0D1117] dark:text-white">
1980
+ <span className="text-lg font-bold text-[var(--color-dash-text)] dark:text-white">
1981
1981
  ${inv.amount.toLocaleString()}
1982
1982
  </span>
1983
- <span className="text-sm text-[#616368] dark:text-[#B0B1B3]">
1983
+ <span className="text-sm text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">
1984
1984
  Due {inv.due}
1985
1985
  </span>
1986
1986
  </div>
@@ -1988,15 +1988,15 @@ export default function PartnerHubDashboard() {
1988
1988
  ))}
1989
1989
  </div>
1990
1990
  ) : (
1991
- <div className="bg-[#F3F3F4] dark:bg-[#616368]/10 rounded-xl p-8 text-center">
1992
- <p className="text-[#616368] dark:text-[#B0B1B3]">No pending invoices</p>
1991
+ <div className="bg-[var(--color-dash-surface)] dark:bg-[var(--color-dash-muted)]/10 rounded-xl p-8 text-center">
1992
+ <p className="text-[var(--color-dash-muted)] dark:text-[var(--color-dash-label)]">No pending invoices</p>
1993
1993
  </div>
1994
1994
  )}
1995
1995
  </Modal.Body>
1996
1996
  <Modal.Footer>
1997
1997
  <button
1998
1998
  onClick={() => setIsInvoicesModalOpen(false)}
1999
- className="px-6 py-2 bg-[#0D1117] dark:bg-white hover:bg-[#616368] dark:hover:bg-[#F3F3F4] text-white dark:text-[#0D1117] font-semibold rounded-lg transition-colors"
1999
+ className="px-6 py-2 bg-[var(--color-dash-text)] dark:bg-white hover:bg-[var(--color-dash-muted)] dark:hover:bg-[var(--color-dash-surface)] text-white dark:text-[var(--color-dash-text)] font-semibold rounded-lg transition-colors"
2000
2000
  >
2001
2001
  Close
2002
2002
  </button>