SearchQueryBox.jsx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use client";
  2. import React from "react";
  3. import { Search } from "lucide-react";
  4. import { Button } from "@/components/ui/button";
  5. import { Input } from "@/components/ui/input";
  6. import { Label } from "@/components/ui/label";
  7. export default function SearchQueryBox({
  8. qDraft,
  9. onQDraftChange,
  10. onSubmit,
  11. currentQuery,
  12. isSubmitting,
  13. canSearch,
  14. }) {
  15. return (
  16. <div className="grid gap-2">
  17. <Label htmlFor="q">Suchbegriff</Label>
  18. <div className="flex flex-col gap-2 sm:flex-row sm:items-center">
  19. <Input
  20. id="q"
  21. name="q"
  22. value={qDraft}
  23. onChange={(e) => onQDraftChange(e.target.value)}
  24. placeholder="z. B. Bridgestone, Rechnung, Kundennummer…"
  25. disabled={isSubmitting}
  26. className="flex-1"
  27. />
  28. <Button type="submit" disabled={!canSearch || isSubmitting}>
  29. <Search className="h-4 w-4" />
  30. Suchen
  31. </Button>
  32. </div>
  33. {currentQuery ? (
  34. <div className="text-xs text-muted-foreground">
  35. Aktuelle Suche:{" "}
  36. <span className="ml-1 rounded-md bg-muted px-2 py-1 text-xs text-muted-foreground">
  37. {currentQuery}
  38. </span>
  39. </div>
  40. ) : (
  41. <div className="text-xs text-muted-foreground">
  42. Tipp: Die Suche ist URL-basiert und kann als Link geteilt werden.
  43. </div>
  44. )}
  45. </div>
  46. );
  47. }