hey-pharmacist-ecommerce 1.1.41 → 1.1.42

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.
Files changed (47) hide show
  1. package/dist/index.js +370 -370
  2. package/dist/index.js.map +1 -1
  3. package/dist/index.mjs +370 -370
  4. package/dist/index.mjs.map +1 -1
  5. package/package.json +1 -1
  6. package/src/components/AccountAddressesTab.tsx +9 -9
  7. package/src/components/AccountOrdersTab.tsx +11 -11
  8. package/src/components/AccountOverviewTab.tsx +21 -21
  9. package/src/components/AccountPaymentTab.tsx +2 -2
  10. package/src/components/AccountReviewsTab.tsx +1 -1
  11. package/src/components/AccountSettingsTab.tsx +6 -6
  12. package/src/components/AddressFormModal.tsx +2 -2
  13. package/src/components/CartItem.tsx +2 -2
  14. package/src/components/FilterChips.tsx +7 -7
  15. package/src/components/Footer.tsx +9 -9
  16. package/src/components/Header.tsx +7 -7
  17. package/src/components/NotificationBell.tsx +3 -3
  18. package/src/components/NotificationDrawer.tsx +1 -1
  19. package/src/components/NotificationModal.tsx +1 -1
  20. package/src/components/OrderCard.tsx +2 -2
  21. package/src/components/ProductCard.tsx +6 -6
  22. package/src/components/QuickViewModal.tsx +23 -23
  23. package/src/components/ReviewCard.tsx +4 -4
  24. package/src/components/TabNavigation.tsx +2 -2
  25. package/src/components/ui/Badge.tsx +2 -2
  26. package/src/components/ui/Button.tsx +3 -3
  27. package/src/components/ui/ConfirmModal.tsx +3 -3
  28. package/src/components/ui/Input.tsx +1 -1
  29. package/src/providers/ThemeProvider.tsx +2 -2
  30. package/src/screens/AddressesScreen.tsx +6 -6
  31. package/src/screens/CartScreen.tsx +19 -19
  32. package/src/screens/ChangePasswordScreen.tsx +2 -2
  33. package/src/screens/CheckoutScreen.tsx +21 -21
  34. package/src/screens/CurrentOrdersScreen.tsx +4 -4
  35. package/src/screens/EditProfileScreen.tsx +1 -1
  36. package/src/screens/ForgotPasswordScreen.tsx +11 -11
  37. package/src/screens/LoginScreen.tsx +12 -12
  38. package/src/screens/OrderDetailScreen.tsx +30 -30
  39. package/src/screens/OrdersScreen.tsx +3 -3
  40. package/src/screens/ProductDetailScreen.tsx +48 -48
  41. package/src/screens/ProfileScreen.tsx +2 -2
  42. package/src/screens/RegisterScreen.tsx +15 -15
  43. package/src/screens/ResetPasswordScreen.tsx +14 -14
  44. package/src/screens/SearchResultsScreen.tsx +7 -7
  45. package/src/screens/ShopScreen.tsx +50 -50
  46. package/src/screens/WishlistScreen.tsx +22 -22
  47. package/src/styles/globals.css +43 -43
@@ -334,7 +334,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
334
334
  <div className="min-h-screen bg-slate-50">
335
335
  <div className="container mx-auto px-4 py-16">
336
336
  <div className="rounded-3xl bg-white p-10 text-center shadow-xs">
337
- <Sparkles className="mx-auto h-10 w-10 text-primary-500" />
337
+ <Sparkles className="mx-auto h-10 w-10 text-hprimary-500" />
338
338
  <h1 className="mt-6 text-2xl font-semibold text-gray-900">Product not found</h1>
339
339
  <p className="mt-2 text-gray-600">
340
340
  It may have been removed or is temporarily unavailable. Discover other pharmacy
@@ -361,7 +361,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
361
361
  <div className="max-w-[1400px] mx-auto px-8 md:px-12">
362
362
  <button
363
363
  onClick={() => router.push(buildPath('/shop'))}
364
- className="flex items-center gap-2 font-['Poppins',sans-serif] text-[13px] text-muted hover:text-primary transition-colors"
364
+ className="flex items-center gap-2 font-['Poppins',sans-serif] text-[13px] text-hmuted hover:text-hprimary transition-colors"
365
365
  >
366
366
  <ChevronLeft className="size-4" />
367
367
  Back to Shop
@@ -412,14 +412,14 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
412
412
  </div>
413
413
  )}
414
414
  {/* {product.bestseller && (
415
- <div className="bg-secondary text-white rounded-full px-4 py-2">
415
+ <div className="bg-hsecondary text-white rounded-full px-4 py-2">
416
416
  <span className="font-['Poppins',sans-serif] font-semibold text-[11px] uppercase tracking-wide">
417
417
  Bestseller
418
418
  </span>
419
419
  </div>
420
420
  )}
421
421
  {product.newArrival && (
422
- <div className="bg-primary text-white rounded-full px-4 py-2">
422
+ <div className="bg-hprimary text-white rounded-full px-4 py-2">
423
423
  <span className="font-['Poppins',sans-serif] font-semibold text-[11px] uppercase tracking-wide">
424
424
  New Arrival
425
425
  </span>
@@ -437,8 +437,8 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
437
437
  type="button"
438
438
  onClick={() => setActiveImageIndex(index)}
439
439
  className={`relative aspect-square overflow-hidden rounded-lg border-2 transition-all ${activeImageIndex === index
440
- ? 'border-primary-50 ring-2 ring-primary-80 ring-offset-2 shadow-md'
441
- : 'border-slate-200 hover:border-primary-50'
440
+ ? 'border-hprimary-50 ring-2 ring-hprimary-80 ring-offset-2 shadow-md'
441
+ : 'border-slate-200 hover:border-hprimary-50'
442
442
  }`}
443
443
  >
444
444
  <Image
@@ -461,10 +461,10 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
461
461
  <aside className="space-y-6 lg:sticky lg:top-24">
462
462
  {/* Category Path */}
463
463
  <div className="mb-4">
464
- <p className="font-['Poppins',sans-serif] text-[12px] text-primary uppercase tracking-wide font-medium mb-2">
464
+ <p className="font-['Poppins',sans-serif] text-[12px] text-hprimary uppercase tracking-wide font-medium mb-2">
465
465
  {product.brand} • {product.categoryIds?.[0]?.name || 'Uncategorized'}
466
466
  </p>
467
- <h1 className="text-3xl font-['Poppins',sans-serif] font-semibold text-secondary tracking-[-1.5px] mb-3">
467
+ <h1 className="text-3xl font-['Poppins',sans-serif] font-semibold text-hsecondary tracking-[-1.5px] mb-3">
468
468
  {selectedVariant?.name || product.name}
469
469
  </h1>
470
470
  {/* Rating */}
@@ -480,7 +480,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
480
480
  />
481
481
  ))}
482
482
  </div>
483
- <span className="font-['Poppins',sans-serif] text-[14px] text-muted">
483
+ <span className="font-['Poppins',sans-serif] text-[14px] text-hmuted">
484
484
  {reviewStats.averageRating} ({reviewStats.reviewCount} {reviewStats.reviewCount === 1 ? 'review' : 'reviews'})
485
485
  </span>
486
486
  </div>
@@ -491,7 +491,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
491
491
  </span>
492
492
  {variantComparePrice && variantComparePrice > variantPrice && (
493
493
  <>
494
- <span className="font-['Poppins',sans-serif] text-[24px] text-muted line-through">
494
+ <span className="font-['Poppins',sans-serif] text-[24px] text-hmuted line-through">
495
495
  ${variantComparePrice.toFixed(2)}
496
496
  </span>
497
497
  <div className="px-3 py-1 rounded-full bg-[#E67E50]/10">
@@ -516,8 +516,8 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
516
516
  </>
517
517
  ) : selectedVariant.inventoryStatus === ProductVariantInventoryStatusEnum.LOWSTOCK || selectedVariant.inventoryCount <= 10 ? (
518
518
  <>
519
- <div className="size-3 rounded-full bg-primary animate-pulse" />
520
- <span className="font-['Poppins',sans-serif] text-[13px] text-primary font-medium">
519
+ <div className="size-3 rounded-full bg-hprimary animate-pulse" />
520
+ <span className="font-['Poppins',sans-serif] text-[13px] text-hprimary font-medium">
521
521
  Only {selectedVariant.inventoryCount} left in stock - Order soon!
522
522
  </span>
523
523
  </>
@@ -531,7 +531,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
531
531
  )}
532
532
 
533
533
  </div>
534
- <p className="font-['Poppins',sans-serif] text-[12px] text-muted">
534
+ <p className="font-['Poppins',sans-serif] text-[12px] text-hmuted">
535
535
  SKU: {selectedVariant?.sku || product?.sku}
536
536
  </p>
537
537
  </div>
@@ -540,7 +540,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
540
540
  {/* Description */}
541
541
  {product.description && (
542
542
  <div
543
- className="font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.7] mb-8 max-w-full overflow-hidden break-words"
543
+ className="font-['Poppins',sans-serif] text-[14px] text-hmuted leading-[1.7] mb-8 max-w-full overflow-hidden break-words"
544
544
  dangerouslySetInnerHTML={{ __html: product.description }}
545
545
  />
546
546
  )}
@@ -548,7 +548,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
548
548
  {/* Variant Selector with Images */}
549
549
  {product?.variants && product.variants.length > 0 && (
550
550
  <div className="mb-6">
551
- <h3 className="font-['Poppins',sans-serif] font-semibold text-[14px] text-secondary mb-3">
551
+ <h3 className="font-['Poppins',sans-serif] font-semibold text-[14px] text-hsecondary mb-3">
552
552
  Select Variant
553
553
  </h3>
554
554
  <div className="flex flex-wrap gap-3">
@@ -564,11 +564,11 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
564
564
  type="button"
565
565
  onClick={() => handleVariantSelect(variant)}
566
566
  className={`flex items-start gap-3 px-4 py-2.5 rounded-xl border-2 transition-all ${isSelected
567
- ? 'border-primary bg-primary-5'
568
- : 'border-gray-200 hover:border-primary-50'
567
+ ? 'border-hprimary bg-hprimary-5'
568
+ : 'border-gray-200 hover:border-hprimary-50'
569
569
  }`}
570
570
  >
571
- <div className={`relative h-12 w-12 shrink-0 overflow-hidden rounded-full border-2 ${isSelected ? 'border-primary' : 'border-slate-200'}`}>
571
+ <div className={`relative h-12 w-12 shrink-0 overflow-hidden rounded-full border-2 ${isSelected ? 'border-hprimary' : 'border-slate-200'}`}>
572
572
  <Image
573
573
  src={variantImage}
574
574
  alt={variant.name || 'Variant image'}
@@ -578,7 +578,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
578
578
  />
579
579
  </div>
580
580
  <div className="flex-1">
581
- <p className={`text-start text-sm font-medium ${isSelected ? 'text-secondary' : 'text-slate-900'}`}>
581
+ <p className={`text-start text-sm font-medium ${isSelected ? 'text-hsecondary' : 'text-slate-900'}`}>
582
582
  {variant.name}
583
583
  </p>
584
584
  {variant.sku && (
@@ -586,7 +586,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
586
586
  )}
587
587
  </div>
588
588
  {isSelected && (
589
- <Check className="h-5 w-5 text-secondary shrink-0" />
589
+ <Check className="h-5 w-5 text-hsecondary shrink-0" />
590
590
  )}
591
591
  </button>
592
592
  );
@@ -598,7 +598,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
598
598
 
599
599
  {/* Quantity Selector */}
600
600
  <div className="mb-8">
601
- <h3 className="font-['Poppins',sans-serif] font-semibold text-[14px] text-secondary mb-3">
601
+ <h3 className="font-['Poppins',sans-serif] font-semibold text-[14px] text-hsecondary mb-3">
602
602
  Quantity
603
603
  </h3>
604
604
  <div className="flex items-center gap-3">
@@ -608,18 +608,18 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
608
608
  type="button"
609
609
  onClick={() => setQuantity((current) => Math.max(1, current - 1))}
610
610
 
611
- className="font-['Poppins',sans-serif] font-bold text-[18px] text-secondary hover:text-primary transition-colors"
611
+ className="font-['Poppins',sans-serif] font-bold text-[18px] text-hsecondary hover:text-hprimary transition-colors"
612
612
  aria-label="Increase quantity"
613
613
  >
614
614
  -
615
615
  </button>
616
- <span className="font-['Poppins',sans-serif] font-semibold text-[16px] text-secondary min-w-[30px] text-center">
616
+ <span className="font-['Poppins',sans-serif] font-semibold text-[16px] text-hsecondary min-w-[30px] text-center">
617
617
  {quantity}
618
618
  </span>
619
619
  <button
620
620
  onClick={() => setQuantity(Math.min(selectedVariant?.inventoryCount || product.inventoryCount || 999, quantity + 1))}
621
621
  disabled={quantity >= (selectedVariant?.inventoryCount || product.inventoryCount || 0)}
622
- className="font-['Poppins',sans-serif] font-bold text-[18px] text-secondary hover:text-primary transition-colors disabled:opacity-50"
622
+ className="font-['Poppins',sans-serif] font-bold text-[18px] text-hsecondary hover:text-hprimary transition-colors disabled:opacity-50"
623
623
  >
624
624
  +
625
625
  </button>
@@ -660,64 +660,64 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
660
660
  )
661
661
  }
662
662
  </button>
663
- <button className="sm:w-auto px-6 py-4 rounded-full border-2 border-primary hover:bg-primary-5 transition-all flex items-center justify-center"
663
+ <button className="sm:w-auto px-6 py-4 rounded-full border-2 border-hprimary hover:bg-hprimary-5 transition-all flex items-center justify-center"
664
664
  onClick={handleToggleFavorite}>
665
- <Heart className={`h-4 w-4 ${isFavorited ? 'fill-red-500 text-red-500' : 'text-primary'}`} />
665
+ <Heart className={`h-4 w-4 ${isFavorited ? 'fill-red-500 text-red-500' : 'text-hprimary'}`} />
666
666
  </button>
667
667
  </div>
668
668
 
669
669
  </div>
670
670
 
671
671
  {/* Benefits */}
672
- <div className="grid grid-cols-1 sm:grid-cols-2 gap-4 p-6 bg-linear-to-br from-secondary/5 to-secondary/5 rounded-[24px]">
672
+ <div className="grid grid-cols-1 sm:grid-cols-2 gap-4 p-6 bg-linear-to-br from-hsecondary/5 to-hsecondary/5 rounded-[24px]">
673
673
  <div className="flex items-start gap-3">
674
674
  <div className="size-10 rounded-full bg-white flex items-center justify-center shrink-0">
675
- <Truck className="size-5 text-primary" />
675
+ <Truck className="size-5 text-hprimary" />
676
676
  </div>
677
677
  <div>
678
- <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-secondary mb-1">
678
+ <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-hsecondary mb-1">
679
679
  Free Shipping
680
680
  </p>
681
- <p className="font-['Poppins',sans-serif] text-[11px] text-muted">
681
+ <p className="font-['Poppins',sans-serif] text-[11px] text-hmuted">
682
682
  On all orders
683
683
  </p>
684
684
  </div>
685
685
  </div>
686
686
  <div className="flex items-start gap-3">
687
687
  <div className="size-10 rounded-full bg-white flex items-center justify-center shrink-0">
688
- <RotateCcw className="size-5 text-primary" />
688
+ <RotateCcw className="size-5 text-hprimary" />
689
689
  </div>
690
690
  <div>
691
- <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-secondary mb-1">
691
+ <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-hsecondary mb-1">
692
692
  Easy Returns
693
693
  </p>
694
- <p className="font-['Poppins',sans-serif] text-[11px] text-muted">
694
+ <p className="font-['Poppins',sans-serif] text-[11px] text-hmuted">
695
695
  30-day return policy
696
696
  </p>
697
697
  </div>
698
698
  </div>
699
699
  <div className="flex items-start gap-3">
700
700
  <div className="size-10 rounded-full bg-white flex items-center justify-center shrink-0">
701
- <Shield className="size-5 text-primary" />
701
+ <Shield className="size-5 text-hprimary" />
702
702
  </div>
703
703
  <div>
704
- <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-secondary mb-1">
704
+ <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-hsecondary mb-1">
705
705
  Secure Checkout
706
706
  </p>
707
- <p className="font-['Poppins',sans-serif] text-[11px] text-muted">
707
+ <p className="font-['Poppins',sans-serif] text-[11px] text-hmuted">
708
708
  Safe & protected
709
709
  </p>
710
710
  </div>
711
711
  </div>
712
712
  <div className="flex items-start gap-3">
713
713
  <div className="size-10 rounded-full bg-white flex items-center justify-center shrink-0">
714
- <Package className="size-5 text-primary" />
714
+ <Package className="size-5 text-hprimary" />
715
715
  </div>
716
716
  <div>
717
- <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-secondary mb-1">
717
+ <p className="font-['Poppins',sans-serif] font-semibold text-[12px] text-hsecondary mb-1">
718
718
  Quality Guaranteed
719
719
  </p>
720
- <p className="font-['Poppins',sans-serif] text-[11px] text-muted">
720
+ <p className="font-['Poppins',sans-serif] text-[11px] text-hmuted">
721
721
  Premium materials
722
722
  </p>
723
723
  </div>
@@ -735,8 +735,8 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
735
735
  key={tab}
736
736
  onClick={() => setActiveTab(tab)}
737
737
  className={`font-['Poppins',sans-serif] font-medium text-[14px] px-6 py-4 transition-all ${activeTab === tab
738
- ? 'text-primary border-b-2 border-primary -mb-0.5'
739
- : 'text-muted hover:text-primary'
738
+ ? 'text-hprimary border-b-2 border-hprimary -mb-0.5'
739
+ : 'text-hmuted hover:text-hprimary'
740
740
  }`}
741
741
  >
742
742
  {tab.charAt(0).toUpperCase() + tab.slice(1)}
@@ -747,29 +747,29 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
747
747
  <div className="bg-white rounded-[24px] p-8 border-2 border-gray-100">
748
748
  {activeTab === 'description' && (
749
749
  <div>
750
- <h3 className="font-['Poppins',sans-serif] font-semibold text-secondary mb-4">
750
+ <h3 className="font-['Poppins',sans-serif] font-semibold text-hsecondary mb-4">
751
751
  Product Description
752
752
  </h3>
753
753
  <div
754
- className="font-['Poppins',sans-serif] text-[14px] text-muted leading-[1.8] mb-4 max-w-full overflow-hidden break-words"
754
+ className="font-['Poppins',sans-serif] text-[14px] text-hmuted leading-[1.8] mb-4 max-w-full overflow-hidden break-words"
755
755
  dangerouslySetInnerHTML={{ __html: product.description }}
756
756
  />
757
757
 
758
758
  <div className="mt-6">
759
- <h4 className="font-['Poppins',sans-serif] font-semibold text-[13px] text-secondary mb-3">
759
+ <h4 className="font-['Poppins',sans-serif] font-semibold text-[13px] text-hsecondary mb-3">
760
760
  Last updated:
761
761
  </h4>
762
- <p className="font-['Poppins',sans-serif] text-[14px] text-muted">
762
+ <p className="font-['Poppins',sans-serif] text-[14px] text-hmuted">
763
763
  {lastUpdatedLabel}
764
764
  </p>
765
765
  </div>
766
766
 
767
767
  {/* shipped from */}
768
768
  <div className="mt-6">
769
- <h4 className="font-['Poppins',sans-serif] font-semibold text-[13px] text-secondary mb-3">
769
+ <h4 className="font-['Poppins',sans-serif] font-semibold text-[13px] text-hsecondary mb-3">
770
770
  Shipped from:
771
771
  </h4>
772
- <p className="font-['Poppins',sans-serif] text-[14px] text-muted">
772
+ <p className="font-['Poppins',sans-serif] text-[14px] text-hmuted">
773
773
  Local pharmacy distribution center
774
774
  </p>
775
775
  </div>
@@ -786,7 +786,7 @@ export function ProductDetailScreen({ productId }: ProductDetailScreenProps) {
786
786
  {/* Related Products */}
787
787
  {relatedProducts.length > 0 && (
788
788
  <div>
789
- <h2 className="font-['Poppins',sans-serif] font-semibold text-secondary mb-8 text-2xl">
789
+ <h2 className="font-['Poppins',sans-serif] font-semibold text-hsecondary mb-8 text-2xl">
790
790
  You May Also Like
791
791
  </h2>
792
792
  <div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6">
@@ -98,8 +98,8 @@ export default function AccountPage() {
98
98
  <div className="container mx-auto px-4 py-4">
99
99
  <div className="flex items-center justify-between">
100
100
  <div>
101
- <h1 className="text-2xl font-semibold text-secondary">My Account</h1>
102
- <p className="text-sm text-muted">
101
+ <h1 className="text-2xl font-semibold text-hsecondary">My Account</h1>
102
+ <p className="text-sm text-hmuted">
103
103
  Manage your profile, orders, and preferences
104
104
  </p>
105
105
  </div>
@@ -98,9 +98,9 @@ export function RegisterScreen() {
98
98
  >
99
99
  <div className="w-full max-w-xl space-y-10 text-center">
100
100
  <div className="space-y-2">
101
- <UserPlus strokeWidth={2} className='h-16 w-16 mx-auto text-white rounded-full bg-primary m-2 mb-4 px-4' />
102
- <h2 className="text-4xl text-secondary">Create Your Account</h2>
103
- <p className="text-sm text-muted">Join Holmdel Pharmacy Care for convenient healthcare access
101
+ <UserPlus strokeWidth={2} className='h-16 w-16 mx-auto text-white rounded-full bg-hprimary m-2 mb-4 px-4' />
102
+ <h2 className="text-4xl text-hsecondary">Create Your Account</h2>
103
+ <p className="text-sm text-hmuted">Join Holmdel Pharmacy Care for convenient healthcare access
104
104
  </p>
105
105
  </div>
106
106
 
@@ -113,7 +113,7 @@ export function RegisterScreen() {
113
113
  >
114
114
  <div className="grid gap-4 md:grid-cols-2 text-start">
115
115
  <div>
116
- <h2 className="text-sm text-secondary mb-3">First name <span className='text-primary-500'>*</span></h2>
116
+ <h2 className="text-sm text-hsecondary mb-3">First name <span className='text-hprimary-500'>*</span></h2>
117
117
  <Input
118
118
  placeholder="Alex"
119
119
  {...register('firstname')}
@@ -121,7 +121,7 @@ export function RegisterScreen() {
121
121
  />
122
122
  </div>
123
123
  <div>
124
- <h2 className="text-sm text-secondary mb-3">Last name <span className='text-primary-500'>*</span></h2>
124
+ <h2 className="text-sm text-hsecondary mb-3">Last name <span className='text-hprimary-500'>*</span></h2>
125
125
  <Input
126
126
  placeholder="Morgan"
127
127
  {...register('lastname')}
@@ -130,7 +130,7 @@ export function RegisterScreen() {
130
130
  </div>
131
131
  </div>
132
132
  <div>
133
- <h2 className="text-sm text-secondary mb-3">Email Address <span className='text-primary-500'>*</span></h2>
133
+ <h2 className="text-sm text-hsecondary mb-3">Email Address <span className='text-hprimary-500'>*</span></h2>
134
134
  <Input
135
135
  type="email"
136
136
  placeholder="you@example.com"
@@ -139,7 +139,7 @@ export function RegisterScreen() {
139
139
  />
140
140
  </div>
141
141
  <div>
142
- <h2 className="text-sm text-secondary mb-3">Phone Number</h2>
142
+ <h2 className="text-sm text-hsecondary mb-3">Phone Number</h2>
143
143
  <Input
144
144
  type="tel"
145
145
  placeholder="+1 (555) 123-4567"
@@ -149,7 +149,7 @@ export function RegisterScreen() {
149
149
  </div>
150
150
  <div className="relative">
151
151
 
152
- <h2 className="text-sm text-secondary mb-3">Password <span className='text-primary-500'>*</span></h2>
152
+ <h2 className="text-sm text-hsecondary mb-3">Password <span className='text-hprimary-500'>*</span></h2>
153
153
  <Input
154
154
  type={showPassword ? 'text' : 'password'}
155
155
  placeholder="••••••••"
@@ -165,7 +165,7 @@ export function RegisterScreen() {
165
165
  </button>
166
166
  </div>
167
167
  <div className="relative">
168
- <h2 className="text-sm text-secondary mb-3">Confirm Password <span className='text-primary-500'>*</span></h2>
168
+ <h2 className="text-sm text-hsecondary mb-3">Confirm Password <span className='text-hprimary-500'>*</span></h2>
169
169
  <Input
170
170
  type={showConfirmPassword ? 'text' : 'password'}
171
171
  placeholder="••••••••"
@@ -182,16 +182,16 @@ export function RegisterScreen() {
182
182
  </div>
183
183
 
184
184
  <div className="flex items-start gap-3 rounded-2xl bg-slate-50 p-4 text-sm text-slate-600">
185
- <Shield strokeWidth={2} className="mt-0.5 h-8 w-8 text-primary" />
185
+ <Shield strokeWidth={2} className="mt-0.5 h-8 w-8 text-hprimary" />
186
186
  <span>
187
187
  By creating an account, you agree to our{' '}
188
- <Link href={buildPath('/terms')} className="font-semibold text-primary hover:opacity-70">
188
+ <Link href={buildPath('/terms')} className="font-semibold text-hprimary hover:opacity-70">
189
189
  Terms of Service
190
190
  </Link>{' '}
191
191
  and{' '}
192
192
  <Link
193
193
  href={buildPath('/privacy')}
194
- className="font-semibold text-primary hover:opacity-70"
194
+ className="font-semibold text-hprimary hover:opacity-70"
195
195
  >
196
196
  Privacy Policy
197
197
  </Link>
@@ -202,7 +202,7 @@ export function RegisterScreen() {
202
202
  <button
203
203
  type="submit"
204
204
  disabled={isSubmitting}
205
- className="w-full bg-secondary hover:opacity-80 text-white font-medium py-3 px-4 rounded-lg transition-colors disabled:opacity-70 disabled:cursor-not-allowed"
205
+ className="w-full bg-hsecondary hover:opacity-80 text-white font-medium py-3 px-4 rounded-lg transition-colors disabled:opacity-70 disabled:cursor-not-allowed"
206
206
  >
207
207
  {isSubmitting ? 'Creating account...' : 'Create my account'}
208
208
  </button>
@@ -210,7 +210,7 @@ export function RegisterScreen() {
210
210
 
211
211
  {/* <div className="rounded-3xl border border-slate-100 bg-slate-50 p-6 text-sm text-slate-600">
212
212
  <div className="flex items-start gap-3">
213
- <Heart className="mt-0.5 h-5 w-5 text-primary-500" />
213
+ <Heart className="mt-0.5 h-5 w-5 text-hprimary-500" />
214
214
  <div>
215
215
  <p className="font-semibold text-slate-800">Members love us</p>
216
216
  <p>
@@ -222,7 +222,7 @@ export function RegisterScreen() {
222
222
  </div> */}
223
223
 
224
224
  <div className="mt-4">
225
- <p className="text-muted">Already have an account? <Link href={buildPath('/login')} className="font-medium text-primary transition hover:opacity-90">Sign in</Link></p>
225
+ <p className="text-hmuted">Already have an account? <Link href={buildPath('/login')} className="font-medium text-hprimary transition hover:opacity-90">Sign in</Link></p>
226
226
  </div>
227
227
  </div>
228
228
  </motion.section>
@@ -107,10 +107,10 @@ export function ResetPasswordScreen() {
107
107
  <div className="space-y-2">
108
108
  <Lock
109
109
  strokeWidth={2}
110
- className="h-16 w-16 mx-auto text-white rounded-full bg-secondary m-2 mb-4 px-4"
110
+ className="h-16 w-16 mx-auto text-white rounded-full bg-hsecondary m-2 mb-4 px-4"
111
111
  />
112
- <h2 className="text-4xl text-secondary">Reset Password</h2>
113
- <p className="text-sm text-muted">
112
+ <h2 className="text-4xl text-hsecondary">Reset Password</h2>
113
+ <p className="text-sm text-hmuted">
114
114
  Enter your new password below to reset your account password.
115
115
  </p>
116
116
  </div>
@@ -134,16 +134,16 @@ export function ResetPasswordScreen() {
134
134
  </div>
135
135
  )}
136
136
 
137
- <div className="relative text-start text-secondary">
138
- <h2 className="text-sm text-secondary mb-3">
139
- New Password <span className="text-primary-500">*</span>
137
+ <div className="relative text-start text-hsecondary">
138
+ <h2 className="text-sm text-hsecondary mb-3">
139
+ New Password <span className="text-hprimary-500">*</span>
140
140
  </h2>
141
141
  <Input
142
142
  type={showPassword ? 'text' : 'password'}
143
143
  placeholder="Enter new password (min. 8 characters)"
144
144
  {...register('newPassword')}
145
145
  error={errors.newPassword?.message}
146
- className="text-secondary"
146
+ className="text-hsecondary"
147
147
  />
148
148
  <button
149
149
  type="button"
@@ -154,16 +154,16 @@ export function ResetPasswordScreen() {
154
154
  </button>
155
155
  </div>
156
156
 
157
- <div className="relative text-start text-secondary">
158
- <h2 className="text-sm text-secondary mb-3">
159
- Confirm Password <span className="text-primary-500">*</span>
157
+ <div className="relative text-start text-hsecondary">
158
+ <h2 className="text-sm text-hsecondary mb-3">
159
+ Confirm Password <span className="text-hprimary-500">*</span>
160
160
  </h2>
161
161
  <Input
162
162
  type={showConfirmPassword ? 'text' : 'password'}
163
163
  placeholder="Re-enter new password"
164
164
  {...register('confirmPassword')}
165
165
  error={errors.confirmPassword?.message}
166
- className="text-secondary"
166
+ className="text-hsecondary"
167
167
  />
168
168
  <button
169
169
  type="button"
@@ -181,20 +181,20 @@ export function ResetPasswordScreen() {
181
181
  <button
182
182
  type="submit"
183
183
  disabled={isSubmitting || !token}
184
- className="w-full bg-secondary hover:opacity-80 text-white font-medium py-3 px-4 rounded-lg transition-colors disabled:opacity-70 disabled:cursor-not-allowed"
184
+ className="w-full bg-hsecondary hover:opacity-80 text-white font-medium py-3 px-4 rounded-lg transition-colors disabled:opacity-70 disabled:cursor-not-allowed"
185
185
  >
186
186
  {isSubmitting ? 'Resetting Password...' : 'Reset Password'}
187
187
  </button>
188
188
 
189
189
  <div className="flex items-center gap-2 rounded-2xl border border-slate-200 bg-slate-50 px-4 py-3 text-sm text-slate-600">
190
- <ShieldCheck className="h-4 w-4 text-primary-600" />
190
+ <ShieldCheck className="h-4 w-4 text-hprimary-600" />
191
191
  Use a strong password that you haven't used elsewhere.
192
192
  </div>
193
193
 
194
194
  <div className="pt-4 border-t border-slate-200">
195
195
  <Link
196
196
  href={buildPath('/login')}
197
- className="text-sm font-medium text-primary transition hover:opacity-80"
197
+ className="text-sm font-medium text-hprimary transition hover:opacity-80"
198
198
  >
199
199
  Back to login
200
200
  </Link>
@@ -214,7 +214,7 @@ export default function SearchPage() {
214
214
  onFocus={handleInputFocus}
215
215
  onBlur={() => setTimeout(() => setShowSuggestions(false), 200)}
216
216
  placeholder="Search for products..."
217
- className="pl-10 pr-10 py-6 text-base rounded-lg border-gray-300 focus:ring-2 focus:ring-primary-500 focus:border-primary-500"
217
+ className="pl-10 pr-10 py-6 text-base rounded-lg border-gray-300 focus:ring-2 focus:ring-hprimary-500 focus:border-hprimary-500"
218
218
  autoComplete="off"
219
219
  />
220
220
  {searchInput && (
@@ -251,7 +251,7 @@ export default function SearchPage() {
251
251
  onClick={() => handleSuggestionClick(suggestion)}
252
252
  className="w-full text-left px-3 py-2.5 hover:bg-gray-50 rounded-md transition-colors flex items-center gap-2 group"
253
253
  >
254
- <Search className="h-4 w-4 text-gray-400 group-hover:text-primary-500" />
254
+ <Search className="h-4 w-4 text-gray-400 group-hover:text-hprimary-500" />
255
255
  <span className="text-sm text-gray-700 group-hover:text-gray-900">
256
256
  {suggestion}
257
257
  </span>
@@ -274,7 +274,7 @@ export default function SearchPage() {
274
274
  onClick={() => handleSuggestionClick(search)}
275
275
  className="w-full text-left px-3 py-2.5 hover:bg-gray-50 rounded-md transition-colors flex items-center gap-2 group"
276
276
  >
277
- <Clock className="h-4 w-4 text-gray-400 group-hover:text-primary-500" />
277
+ <Clock className="h-4 w-4 text-gray-400 group-hover:text-hprimary-500" />
278
278
  <span className="text-sm text-gray-700 group-hover:text-gray-900">
279
279
  {search}
280
280
  </span>
@@ -288,7 +288,7 @@ export default function SearchPage() {
288
288
  </div>
289
289
  <button
290
290
  type="submit"
291
- className="mt-4 w-full bg-primary-600 hover:bg-primary-700 text-white font-medium py-2 px-4 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
291
+ className="mt-4 w-full bg-hprimary-600 hover:bg-hprimary-700 text-white font-medium py-2 px-4 rounded-lg transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
292
292
  disabled={!searchInput.trim()}
293
293
  >
294
294
  Search
@@ -346,7 +346,7 @@ export default function SearchPage() {
346
346
 
347
347
  <Link
348
348
  href={buildPath('/shop')}
349
- className="px-6 py-2.5 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors font-medium"
349
+ className="px-6 py-2.5 bg-hprimary-600 text-white rounded-lg hover:bg-hprimary-700 transition-colors font-medium"
350
350
  >
351
351
  Browse All Products
352
352
  </Link>
@@ -371,8 +371,8 @@ export default function SearchPage() {
371
371
  </div>
372
372
  ) : (
373
373
  <div className="text-center py-12">
374
- <div className="w-16 h-16 bg-primary-50 rounded-full flex items-center justify-center mx-auto mb-4">
375
- <Search className="h-8 w-8 text-primary-500" />
374
+ <div className="w-16 h-16 bg-hprimary-50 rounded-full flex items-center justify-center mx-auto mb-4">
375
+ <Search className="h-8 w-8 text-hprimary-500" />
376
376
  </div>
377
377
  <h3 className="text-xl font-semibold text-gray-900 mb-2">
378
378
  Start Searching