diff --git a/src/components/sections/schedule/ScheduleFilters.tsx b/src/components/sections/schedule/ScheduleFilters.tsx
index 7fec375..9559762 100644
--- a/src/components/sections/schedule/ScheduleFilters.tsx
+++ b/src/components/sections/schedule/ScheduleFilters.tsx
@@ -2,14 +2,10 @@
import { useState, useEffect, useRef } from "react";
import { createPortal } from "react-dom";
-import { User, X, Clock, SlidersHorizontal } from "lucide-react";
+import { X, SlidersHorizontal } from "lucide-react";
import {
pillBase,
- pillActive,
- pillInactive,
- TIME_PRESETS,
isTimeFilterActive,
- TIME_FILTER_EMPTY,
type StatusTag,
type TimeFilter,
} from "./constants";
@@ -38,7 +34,6 @@ interface ScheduleFiltersProps {
clearFilters: () => void;
}
-const divider = ;
export function ScheduleFilters({
typeDots,
@@ -60,7 +55,6 @@ export function ScheduleFilters({
toggleDay,
trainerNames,
scheduleConfig,
- hasActiveFilter,
clearFilters,
}: ScheduleFiltersProps) {
const [modalOpen, setModalOpen] = useState(false);
@@ -130,7 +124,7 @@ export function ScheduleFilters({
{/* Scrollable content */}
-
+
{/* Class types — gold border, white text; gold bg when active */}
@@ -163,37 +157,70 @@ export function ScheduleFilters({
{/* Status — gold tags */}
{availableStatuses.length > 0 && (
-
+ {/* Desktop — card layout */}
+
{availableStatuses.map((statusKey) => {
const cfg = scheduleConfig?.statuses?.find((s) => s.key === statusKey);
const label = cfg?.label || statusKey;
const desc = cfg?.description;
const active = filterStatusSet.has(statusKey);
return (
-
-
{desc && (
-
- {desc}
+ e.stopPropagation()}>
+ ?
+
+ {desc}
+
)}
-
+
+ );
+ })}
+
+ {/* Mobile — compact pills */}
+
+ {availableStatuses.map((statusKey) => {
+ const cfg = scheduleConfig?.statuses?.find((s) => s.key === statusKey);
+ const label = cfg?.label || statusKey;
+ const active = filterStatusSet.has(statusKey);
+ return (
+ toggleFilterStatus(statusKey)}
+ className={`rounded-xl px-4 py-2 text-xs font-semibold transition-all cursor-pointer border ${
+ active
+ ? "border-gold bg-gold/10 text-white"
+ : "border-white/[0.06] bg-white/[0.02] text-neutral-400 hover:border-white/[0.15]"
+ }`}
+ >
+ {label}
+
);
})}
)}
- {/* Level — gold tags with hover hints */}
+ {/* Level — radio cards */}
{levels.length > 0 && (
@@ -201,20 +228,23 @@ export function ScheduleFilters({
const desc = scheduleConfig?.levels?.find((l) => l.value === level)?.description;
const active = filterLevel === level;
return (
-
+
setFilterLevel(active ? null : level)}
- className={`${pillBase} ${
+ className={`rounded-xl px-4 py-2 text-xs font-semibold transition-all cursor-pointer border ${
active
- ? "bg-gold text-black border border-gold"
- : "border border-gold/30 text-white hover:border-gold/60 hover:bg-gold/10"
+ ? "border-gold bg-gold/10 text-white"
+ : "border-white/[0.06] bg-white/[0.02] text-neutral-400 hover:border-white/[0.15] hover:bg-white/[0.04]"
}`}
>
{level}
{desc && (
-
- {desc}
+
+ ?
+
+ {desc}
+
)}
@@ -224,14 +254,14 @@ export function ScheduleFilters({
)}
- {/* Days — calendar grid */}
-
-
+ {/* When — days + time combined */}
+
+
{availableDays.map(({ day, dayShort }) => (
toggleDay(day)}
- className={`flex items-center justify-center rounded-lg py-2.5 text-xs font-semibold transition-all cursor-pointer ${
+ className={`flex items-center justify-center rounded-lg w-9 h-9 text-[11px] font-semibold transition-all cursor-pointer ${
filterDaySet.has(day)
? "bg-gold text-black"
: "bg-white/[0.04] text-neutral-400 hover:bg-white/[0.08] hover:text-white"
@@ -241,46 +271,22 @@ export function ScheduleFilters({
))}
-
-
- {/* Time — from/to inputs + preset shortcuts */}
-
-
-
-
- setFilterTime({ ...filterTime, from: e.target.value })}
- className="w-full rounded-lg border border-white/[0.08] bg-white/[0.04] px-3 py-2 text-sm text-white outline-none focus:border-gold/40 transition-colors [color-scheme:dark]"
- />
-
-
—
-
-
- setFilterTime({ ...filterTime, to: e.target.value })}
- className="w-full rounded-lg border border-white/[0.08] bg-white/[0.04] px-3 py-2 text-sm text-white outline-none focus:border-gold/40 transition-colors [color-scheme:dark]"
- />
-
-
-
@@ -347,18 +353,6 @@ function FilterSection({ title, hint, children }: { title: string; hint?: string
);
}
-function HintBubble({ text }: { text: string }) {
- return (
-
-
- ?
-
-
- {text}
-
-
- );
-}
function TrainerMultiSelect({
trainers,