Sidebar.tsx 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. import React, { useState } from 'react';
  2. import { Phone, ArrowUp, Send, Settings } from 'lucide-react';
  3. import ThemeSettings from './ThemeSettings.tsx';
  4. import MiniProgramQRCode from '@/src/assets/QRPicture/wechat-QR.png';
  5. import TiktokQRCode from '@/src/assets/QRPicture/Tiktok-QR.png';
  6. import RedBookQRCode from '@/src/assets/QRPicture/redbook-QR.png';
  7. import WeChatIcon from '@/src/assets/logo/wechat.png';
  8. import TiktokIcon from '@/src/assets/logo/tiktok.png';
  9. import RedBook from '@/src/assets/logo/redbook.png';
  10. const Sidebar: React.FC = () => {
  11. const [settingsOpen, setSettingsOpen] = useState(false);
  12. const scrollToTop = () => {
  13. window.scrollTo({ top: 0, behavior: 'smooth' });
  14. };
  15. return (
  16. <>
  17. <div className="fixed right-0 top-1/2 -translate-y-1/2 z-50 flex flex-col items-end space-y-4 pr-4">
  18. {/* Customer Service */}
  19. <div className="group relative flex items-center">
  20. <div className="absolute right-12 bg-vista-darkblue text-white text-xs px-3 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none">
  21. 24*7 预定电话:400-696-0666
  22. </div>
  23. <button className="w-12 h-12 bg-white rounded-full shadow-lg flex items-center justify-center text-vista-darkblue hover:bg-vista-gold hover:text-white transition-colors border border-vista-darkblue/10">
  24. <Phone size={20} />
  25. </button>
  26. </div>
  27. {/* WeChat */}
  28. <div className="group relative flex items-center">
  29. <div className="absolute right-12 bg-white p-2 shadow-lg rounded opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-300 z-40">
  30. {/* Placeholder for QR Code */}
  31. <div
  32. className="w-24 h-24 bg-vista-darkblue/5 flex items-center justify-center text-xs text-vista-darkblue/60">
  33. <img
  34. src={MiniProgramQRCode as string} // 替换为你的图片路径
  35. alt="公众号二维码"
  36. className="w-24 h-24 object-cover rounded"
  37. />
  38. </div>
  39. </div>
  40. <button
  41. className="w-12 h-12 bg-white rounded-full shadow-lg flex items-center justify-center text-vista-darkblue hover:bg-vista-gold hover:text-white transition-colors border border-vista-darkblue/10">
  42. <img
  43. src={WeChatIcon as string}
  44. alt="微信"
  45. className="w-5 h-5 object-contain"
  46. />
  47. </button>
  48. </div>
  49. {/* RedBook */}
  50. <div className="group relative flex items-center">
  51. <div className="absolute right-12 bg-white p-2 shadow-lg rounded opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-300 z-40">
  52. {/* Placeholder for QR Code */}
  53. <div
  54. className="w-24 h-24 bg-vista-darkblue/5 flex items-center justify-center text-xs text-vista-darkblue/60">
  55. <img
  56. src={RedBookQRCode as string} // 替换为你的图片路径
  57. alt="公众号二维码"
  58. className="w-24 h-24 object-cover rounded"
  59. />
  60. </div>
  61. </div>
  62. <button
  63. className="w-12 h-12 bg-white rounded-full shadow-lg flex items-center justify-center text-vista-darkblue hover:bg-vista-gold hover:text-white transition-colors border border-vista-darkblue/10">
  64. <img
  65. src={RedBook as string}
  66. alt="小红书"
  67. className="w-8 h-8 object-contain"
  68. />
  69. </button>
  70. </div>
  71. {/* tiktok */}
  72. <div className="group relative flex items-center">
  73. <div className="absolute right-12 bg-white p-2 shadow-lg rounded opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-300 z-40">
  74. {/* Placeholder for QR Code */}
  75. <div
  76. className="w-24 h-24 bg-vista-darkblue/5 flex items-center justify-center text-xs text-vista-darkblue/60">
  77. <img
  78. src={TiktokQRCode as string} // 替换为你的图片路径
  79. alt="公众号二维码"
  80. className="w-24 h-24 object-cover rounded"
  81. />
  82. </div>
  83. </div>
  84. <button
  85. className="w-12 h-12 bg-white rounded-full shadow-lg flex items-center justify-center text-vista-darkblue hover:bg-vista-gold hover:text-white transition-colors border border-vista-darkblue/10">
  86. <img
  87. src={TiktokIcon as string}
  88. alt="抖音"
  89. className="w-8 h-8 object-contain"
  90. />
  91. </button>
  92. </div>
  93. {/* Customization Settings Trigger (New) */}
  94. <div className="group relative flex items-center">
  95. <div className="absolute right-12 bg-vista-darkblue text-white text-xs px-3 py-1 rounded opacity-0 group-hover:opacity-100 transition-opacity whitespace-nowrap pointer-events-none">
  96. 自定义设置
  97. </div>
  98. <button
  99. onClick={() => setSettingsOpen(true)}
  100. className="w-12 h-12 bg-white rounded-full shadow-lg flex items-center justify-center text-vista-darkblue hover:bg-vista-gold hover:text-white transition-colors border border-vista-darkblue/10"
  101. >
  102. <Settings size={20} />
  103. </button>
  104. </div>
  105. {/* Back to Top */}
  106. <button
  107. onClick={scrollToTop}
  108. className="w-12 h-12 bg-vista-darkblue text-white rounded-full shadow-lg flex items-center justify-center hover:bg-vista-gold transition-colors"
  109. >
  110. <ArrowUp size={20} />
  111. </button>
  112. </div>
  113. {/* Settings Modal */}
  114. <ThemeSettings isOpen={settingsOpen} onClose={() => setSettingsOpen(false)} />
  115. </>
  116. );
  117. };
  118. export default Sidebar;