index.tsx 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. import React, { useState } from "react";
  2. import Assistant from "./Assistant";
  3. import data from "@emoji-mart/data";
  4. import { init } from "emoji-mart";
  5. import styles from "./index.less";
  6. import "./index.less";
  7. import logo from "@/assets/shalu-new1.png";
  8. import { assistantList } from "./data";
  9. init({ data });
  10. export default () => {
  11. const [active, setActive] = useState(assistantList[0].key);
  12. return (
  13. <div className="flex h-full bg-gray-100 border-t border-gray-200 overflow-hidden">
  14. <div className="w-fit sm:w-[216px] shrink-0 pt-6 px-4 border-gray-200 cursor-pointer">
  15. <div className="w-full">
  16. <img src={logo} className="h-40px" />
  17. </div>
  18. <div className="mt-10">
  19. <p className="pl-2 mobile:px-0 text-xs text-gray-500 break-all font-medium uppercase">
  20. 助手类型
  21. </p>
  22. <div
  23. className="mt-3 space-y-2 overflow-y-auto overflow-x-hidden"
  24. style={{ height: "calc(-140px + 100vh)" }}
  25. >
  26. {assistantList.map((item, index) => (
  27. <div
  28. key={index}
  29. className={
  30. `flex h-8 items-center justify-between mobile:justify-center px-2 mobile:px-1 rounded-lg text-sm font-normal ${active === item.key ? styles.active : " hover:bg-gray-200"}`
  31. }
  32. onClick={() => setActive(item.key)}
  33. >
  34. <div className="flex items-center space-x-2 w-0 grow">
  35. <span
  36. className="flex items-center justify-center relative rounded-lg grow-0 shrink-0 overflow-hidden w-6 h-6 text-base"
  37. style={{ background: "rgb(213, 245, 246)" }}
  38. >
  39. <img className="w-full h-full" src={item.icon}/>
  40. </span>
  41. <div
  42. className="overflow-hidden text-ellipsis whitespace-nowrap"
  43. title={item.name}
  44. >
  45. {item.name}
  46. </div>
  47. </div>
  48. <div className="shrink-0 h-6">
  49. <div className="inline-block" data-state="closed">
  50. <div className="style_btn__bbesM h-6 w-6 rounded-md border-none py-1"></div>
  51. </div>
  52. </div>
  53. </div>
  54. ))}
  55. </div>
  56. </div>
  57. </div>
  58. <div className="grow w-0">
  59. <div className="h-full py-2 pl-0 pr-2 sm:p-2">
  60. <div className="h-full flex bg-white rounded-2xl shadow-md overflow-hidden false">
  61. <Assistant key={active} agent={assistantList.find(item => item.key === active)}/>
  62. </div>
  63. </div>
  64. </div>
  65. </div>
  66. );
  67. };