gpt-engineer-app[bot] commited on
Commit
50f641f
·
1 Parent(s): 1a97096

Refine calendar filters

Browse files

Improve the aesthetics of the filters on the calendar view and add a "deselect all" option.

src/components/FilterBar.tsx CHANGED
@@ -1,6 +1,7 @@
1
 
2
  import { useMemo } from "react";
3
  import conferencesData from "@/data/conferences.yml";
 
4
 
5
  interface FilterBarProps {
6
  selectedTag: string;
@@ -27,23 +28,38 @@ const FilterBar = ({ selectedTag, onTagSelect }: FilterBarProps) => {
27
  }, []);
28
 
29
  return (
30
- <div className="w-full py-4 overflow-x-auto bg-white border-b border-neutral-light animate-fade-in">
31
  <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
32
- <div className="flex space-x-4">
33
  {uniqueTags.map((filter) => (
34
  <button
35
  key={filter.id}
36
  title={filter.description}
37
  onClick={() => onTagSelect(filter.id)}
38
- className={`px-4 py-2 text-sm font-medium rounded-lg transition-colors ${
39
- selectedTag === filter.id
40
- ? "bg-primary text-white"
41
- : "hover:bg-primary/10 hover:text-primary"
42
- }`}
 
 
 
43
  >
44
  {filter.label}
45
  </button>
46
  ))}
 
 
 
 
 
 
 
 
 
 
 
 
47
  </div>
48
  </div>
49
  </div>
 
1
 
2
  import { useMemo } from "react";
3
  import conferencesData from "@/data/conferences.yml";
4
+ import { X } from "lucide-react";
5
 
6
  interface FilterBarProps {
7
  selectedTag: string;
 
28
  }, []);
29
 
30
  return (
31
+ <div className="w-full py-6 bg-white border-b border-neutral-200 animate-fade-in shadow-sm">
32
  <div className="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
33
+ <div className="flex flex-wrap gap-3">
34
  {uniqueTags.map((filter) => (
35
  <button
36
  key={filter.id}
37
  title={filter.description}
38
  onClick={() => onTagSelect(filter.id)}
39
+ className={`
40
+ px-4 py-2 text-sm font-medium rounded-lg transition-all duration-200
41
+ filter-tag
42
+ ${selectedTag === filter.id
43
+ ? "bg-primary text-white shadow-sm filter-tag-active"
44
+ : "bg-neutral-50 text-neutral-600 hover:bg-neutral-100 hover:text-neutral-900"
45
+ }
46
+ `}
47
  >
48
  {filter.label}
49
  </button>
50
  ))}
51
+
52
+ {selectedTag !== "All" && (
53
+ <button
54
+ onClick={() => onTagSelect("All")}
55
+ className="px-4 py-2 text-sm font-medium rounded-lg transition-all duration-200
56
+ bg-red-50 text-red-600 hover:bg-red-100 hover:text-red-700
57
+ flex items-center gap-2"
58
+ >
59
+ <X className="h-4 w-4" />
60
+ Deselect All
61
+ </button>
62
+ )}
63
  </div>
64
  </div>
65
  </div>
src/styles/globals.css CHANGED
@@ -1,3 +1,4 @@
 
1
  /* Add these styles to make the filter tags more interactive */
2
  .filter-tag {
3
  @apply transition-all duration-200;
@@ -16,4 +17,4 @@
16
 
17
  .filter-tag-active {
18
  animation: subtle-pulse 2s infinite;
19
- }
 
1
+
2
  /* Add these styles to make the filter tags more interactive */
3
  .filter-tag {
4
  @apply transition-all duration-200;
 
17
 
18
  .filter-tag-active {
19
  animation: subtle-pulse 2s infinite;
20
+ }