ConversationHeader.tsx 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. "use client";
  2. import { Separator } from "@/components/ui/separator";
  3. export type ConversationFilter = "all" | "mine" | "others";
  4. interface ConversationHeaderProps {
  5. filter: ConversationFilter;
  6. onFilterChange: (filter: ConversationFilter) => void;
  7. }
  8. export function ConversationHeader({
  9. filter,
  10. onFilterChange,
  11. }: ConversationHeaderProps) {
  12. const getFilterLabel = (f: ConversationFilter) => {
  13. switch (f) {
  14. case "all":
  15. return "全部";
  16. case "mine":
  17. return "自己的";
  18. case "others":
  19. return "其他的";
  20. default:
  21. return "全部";
  22. }
  23. };
  24. return (
  25. <div className="h-16 flex items-center justify-between px-4 bg-background flex-shrink-0 relative">
  26. <div className="flex items-center gap-1 relative">
  27. <select
  28. value={filter}
  29. onChange={(e) => onFilterChange(e.target.value as ConversationFilter)}
  30. className="font-semibold text-foreground bg-transparent border-none outline-none cursor-pointer appearance-none pr-6 min-w-fit"
  31. >
  32. <option value="all">All chats</option>
  33. <option value="mine">My chats</option>
  34. <option value="others">Others chats</option>
  35. </select>
  36. <svg
  37. className="w-4 h-4 text-muted-foreground pointer-events-none flex-shrink-0"
  38. fill="none"
  39. stroke="currentColor"
  40. viewBox="0 0 24 24"
  41. >
  42. <path
  43. strokeLinecap="round"
  44. strokeLinejoin="round"
  45. strokeWidth={2}
  46. d="M19 9l-7 7-7-7"
  47. />
  48. </svg>
  49. </div>
  50. <Separator className="absolute bottom-0 left-0 right-0" />
  51. </div>
  52. );
  53. }