+ {/* Header */}
+
+
+ My Events
+
+
+
+ {/* Tabs */}
+
+ {(['All', 'Saved', 'Created'] as Tab[]).map((tab) => (
+
+ ))}
+
+
+ {/* Search + Filters */}
+
+ {/* Search */}
+
+
+ setSearch(e.target.value)}
+ style={{
+ width: '100%',
+ padding: '8px 10px 8px 32px',
+ border: `1px solid ${themeColors.gray300}`,
+ borderRadius: 6,
+ fontSize: 13,
+ background: colors.white,
+ color: themeColors.gray800,
+ outline: 'none',
+ boxSizing: 'border-box',
+ }}
+ />
+
+
+ {/* Sort Dropdown */}
+
+
+ {sortOpen && (
+
+ {SORT_OPTIONS.map((opt) => (
+ {
+ setSort(opt);
+ setSortOpen(false);
+ }}
+ />
+ ))}
+
+ )}
+
+
+ {/* Category Dropdown */}
+
+
+ {categoryOpen && (
+
+ {selectedCategories.length > 0 && (
+ setSelectedCategories([])}
+ style={{
+ padding: '8px 12px',
+ fontSize: 12,
+ cursor: 'pointer',
+ color: TEAL,
+ fontWeight: 600,
+ borderBottom: `1px solid #f0f0f0`,
+ }}
+ >
+ Clear all
+
+ )}
+ {ALL_CATEGORIES.map((cat) => {
+ const isSelected = selectedCategories.includes(cat);
+ const style = CATEGORY_COLORS[cat];
+ return (
+ toggleCategory(cat)}
+ style={{
+ padding: '8px 12px',
+ cursor: 'pointer',
+ display: 'flex',
+ alignItems: 'center',
+ gap: 8,
+ background: isSelected ? '#f9f9f9' : 'transparent',
+ }}
+ >
+
+
+ {cat}
+
+ {isSelected && (
+
+ )}
+
+ );
+ })}
+
+ )}
+
+
+
+ {/* Active category chips */}
+ {selectedCategories.length > 0 && (
+
+ {selectedCategories.map((cat) => {
+ const s = CATEGORY_COLORS[cat];
+ return (
+ toggleCategory(cat)}
+ style={{
+ display: 'inline-flex',
+ alignItems: 'center',
+ gap: 4,
+ fontSize: 11,
+ fontWeight: 600,
+ background: s.bg,
+ color: s.text,
+ padding: '3px 8px',
+ borderRadius: 20,
+ cursor: 'pointer',
+ letterSpacing: '0.03em',
+ }}
+ >
+ {cat}
+
+
+ );
+ })}
+
+ )}
+
+ {/* Grid */}
+ {filtered.length === 0 ? (
+
+ No events match your filters.
+
+ ) : (
+
+ {filtered.map((event) => (
+
+ ))}
+
+ )}
+
+ );
+}
+
+// ── Dropdown helpers ──────────────────────────────────────────
+
+function dropdownButtonStyle(
+ themeColors: any,
+ colors: any,
+ isOpen: boolean,
+ teal: string,
+ hasActive = false
+) {
+ return {
+ padding: '7px 12px',
+ border: `1px solid ${hasActive || isOpen ? teal : themeColors.gray300}`,
+ borderRadius: 6,
+ background: hasActive ? `${teal}10` : colors.white,
+ cursor: 'pointer',
+ color: hasActive ? teal : themeColors.gray700,
+ fontSize: 13,
+ fontWeight: hasActive ? 600 : 400,
+ display: 'flex',
+ alignItems: 'center',
+ whiteSpace: 'nowrap' as const,
+ transition: 'border-color 0.15s, background 0.15s',
+ };
+}
+
+function DropdownMenu({
+ children,
+ minWidth = 160,
+}: {
+ children: React.ReactNode;
+ minWidth?: number;
+}) {
+ return (
+ {
+ (e.currentTarget as HTMLDivElement).style.boxShadow = '0 4px 16px rgba(0,0,0,0.09)';
+ (e.currentTarget as HTMLDivElement).style.borderColor = themeColors.gray300;
+ }}
+ onMouseLeave={(e) => {
+ (e.currentTarget as HTMLDivElement).style.boxShadow = 'none';
+ (e.currentTarget as HTMLDivElement).style.borderColor = themeColors.gray200;
+ }}
+ >
+
+ {/* Date + Category + Star */}
+
+
+
+ {event.displayDate}
+
+
+ {event.category}
+
+
+ {event.isStarred && (
+
+ )}
+
+
+ {/* Title */}
+
+ {event.title}
+
+
+ {/* Time + Location */}
+ {(event.timeRange || event.location) && (
+
+ {event.timeRange && (
+ <>
+
+
{event.timeRange}
+ >
+ )}
+ {event.location && (
+ <>
+
•
+
+
{event.location}
+ >
+ )}
+
+ )}
+
+ {/* Description */}
+ {event.description && (
+
+ {event.description}
+
+ )}
+
+
+ {/* Footer */}
+
+ {event.interested > 0 ? (
+
+ {event.interested} interested
+
+ ) : (
+
+ )}
+ {event.isOwned && (
+
+ )}
+
+
+ );
+}
diff --git a/frontend/lib/hoagie-ui/ProfileCard/index.tsx b/frontend/lib/hoagie-ui/ProfileCard/index.tsx
index e2db00b..28087cf 100644
--- a/frontend/lib/hoagie-ui/ProfileCard/index.tsx
+++ b/frontend/lib/hoagie-ui/ProfileCard/index.tsx
@@ -40,8 +40,15 @@ export function ProfileCard({ user }: { user: User }) {