From a69c08482f4161136d0be4185a6b7fc203206f5e Mon Sep 17 00:00:00 2001 From: "diana.dolgolyova" Date: Fri, 27 Mar 2026 19:13:43 +0300 Subject: [PATCH] feat: schedule filters overhaul, local fonts, configurable statuses/levels MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Schedule filters: - Airbnb-style filter modal with sections: directions, trainer, status, level, days, time - Multi-select trainer filter with search input - Custom time range (from-to) with preset shortcuts - Gold tag design for class types, statuses, and levels - Hover tooltips on level/status options with descriptions from config - Filter icon button inline with view toggle (По дням / По группам) Admin schedule: - Configurable experience levels and statuses (add/edit/reorder/delete) - New scheduleConfig DB section with auto-save - Status/level dropdowns in class editor read from config - Status select built dynamically from config - New status field on ScheduleClass for custom statuses Other: - Local fonts (Inter + Oswald) bundled in public/fonts — no Google Fonts dependency - SelectField combobox: search in main input field, no separate search inside dropdown - Fix carousel trainer label flash on drag release --- public/fonts/inter-cyrillic.woff2 | Bin 0 -> 18748 bytes public/fonts/inter-latin.woff2 | Bin 0 -> 48256 bytes public/fonts/oswald-cyrillic.woff2 | Bin 0 -> 15688 bytes public/fonts/oswald-latin.woff2 | Bin 0 -> 28488 bytes src/app/admin/_components/FormField.tsx | 71 ++- src/app/admin/schedule/page.tsx | 177 +++++- src/app/layout.tsx | 18 +- src/app/page.tsx | 2 +- src/components/sections/Schedule.tsx | 141 ++--- src/components/sections/schedule/DayCard.tsx | 20 +- .../sections/schedule/GroupView.tsx | 12 +- .../sections/schedule/MobileSchedule.tsx | 30 +- .../sections/schedule/ScheduleFilters.tsx | 502 ++++++++++++++---- src/components/sections/schedule/constants.ts | 22 +- src/data/content.ts | 10 + src/lib/db.ts | 11 + src/types/content.ts | 5 + 17 files changed, 755 insertions(+), 266 deletions(-) create mode 100644 public/fonts/inter-cyrillic.woff2 create mode 100644 public/fonts/inter-latin.woff2 create mode 100644 public/fonts/oswald-cyrillic.woff2 create mode 100644 public/fonts/oswald-latin.woff2 diff --git a/public/fonts/inter-cyrillic.woff2 b/public/fonts/inter-cyrillic.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..d750914763177b95070fba3dc83c3d4466919c01 GIT binary patch literal 18748 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∾Na#*TBTU(!jF?9zmR-!C*+RdvGrd0&{`| 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 literal 0 HcmV?d00001 diff --git a/public/fonts/oswald-latin.woff2 b/public/fonts/oswald-latin.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7b2a5509842e9d98138139553b4080adc1ab5b0d GIT binary patch literal 28488 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,uRJU>yf?U$3|H54HBFaIs-f zyWg+a>l^BD%j}e*WL&d(mbsUNu6J<|*pB}?6ZTl4CCsyaRija2$d6lM6p`s-`d%*B zo9$gy&@@9QzGsXIba@Fk5yrH|wDnP3ZW#%CdF6#W;O6Oj35t1QogrKbM;N%z>o%31 zsD-q6x-B6pMuT48Qf&gLk}Z=!)L`!mP=9k|{gOH}#tWwtyvbufeAF|gv$CHT!t7ac z9bI_5GaVLHJg7~Yt5R0$MPZYX1;T`Lo@mmIx=*Zm_vdmnX!+tHeh&rDH3nSY_nr8# zHRb5XV7d6eupBDZ7^sNK@X#6;s(=s020dF%`^C^>|3zg;8x!D1lr+o6pqvt1I_zqj zMC+v;o>o#>CNYCl=NU6*_7&^d~-4TVP=aODTu7 zxwLFce#CcW*L9c;Iq1vPy zKoyaunX18dMVoYH_e}$T%$cm&8*kl_7lv`H^BfTawwtt)F3!1ze(!wGB{$6E-nPVH zw}k~*$^^y~=5TV9$*mg+J!cdhGpJ@pX@1;JUc;0jjC2c88S7+!-@U=*S_Es zF{T_E2GS%&5ZYTFpz7E(&-BOlze(Tu!zG$%W@egCR8*;p-f3!d=P@Bt)yTs1<#?G& zBBYBZ4`s$pIEX|zM>S(e^`af0Y0OxxyxIHWvJL!+=0&|2l2v;T9VJXp0 z2@%N365?>=*QXMRX26e2Cd13~lA8B>5tm6V5ow*vCMBiR43;ViZAS@pTvTU;L%7UI zO>D~D(>n-hK&NM)C2WtRyBNZ{Xuz6~GLM6(;Hiu0|zRAx=sj{P8e&{wJRAqbXenNbM&RTl`}b!DIbj zWWmc=b$jUWf0JMU;BTmLfXD#a)kdO1j5+mhQS1FHS7059E(TxyCIi8ov7~E&h5^`$ ztycPwC@so_JpSUrgKbW9PQQO1qEI+Hz7IYk&5<1zMy83XP0mt;S2!+58GTp3l6F`r z6~s;avh22tsAWeLI`puc^5WV>+I;OV&QqA5{yANCk22ilu%+p4sBR4)aoXR!EVZVEWk{< zhHCqKatS(s%q=W21lky^2Z!5kpbi1w;nL8!h)!J*X31)UWMLF}lKU zby~le=#J}vF~BHt8jGT}s!OYX=k9~`e@LLOkXdLX6biC+p3_6p=k&svBI=~FT)je# zdt4yHWBDiOUErdW7uH?uS#kR77Rq3KdKVHhNCTPxd@hcHnL!^!vtv{t3mpp+T2=J~ zAAHSB2?7e=KN-8Q7&8iroOCSLF2{_Ny@SO7P1#D6nonR}h@><+#2Wx&8jgjr25S^oRMOGa52>+_GR=5ek1pmXe}>y)MI()QA~G=b(}k=tRa$-FS+|W5U+Fa`u*6FGc(iETotcMGE-7z2?}Px|2y-He1&JE zI<^;{eTHbfi;*nWZl9y3M6T~bO?Is{`w+*MzT?7%v-J*domWz`GO|sZ#|R=Jd7T8c ziR}d6*c7iBn_)i)Cz&JH=~#&d6qH4Gv`q{V*N4l|>w53S^u+PifP(kWsr(5TV$%uy z2%Nc|vvjLTbImWx@zKY(Zaq2gIUWipYmAb%#{hxpsr-46j(c;Xdy}La0Y#*L-Ysl} z%P%c7nT&o;eQ`IRbLEHSQM#Q}KT$H#pn98t7MUL==(CDe)%<$D>&WLnPo=vgT}J4| z_1sRY8!|=kXZ-=a{0J-_D#Ie*1qkhE@-s zqBT;%c!j%_|E%hv0*c=1z5W`~gvKAY{lPwhrOfjbEk$N*GAa)}As%7AZHfID%QA*3 ziN^jOnbykk3>6@Hn?CCs%({&15)PH0s!i)w8?dVOdvb=TePr(KHs2}tJtLZzd`&g$ z{@L5J#7oUGW+cQx?Q;1*o34&ZF7{bnP5ys6%!X;42$>&nXPLdzG-K0GYHy_meSc-1 zb0`XH@;y*bV!@)yHBj?>D1KiUI)#L4#fq__h%CL_dR9O=dT!72@qCCGz@@8Ermfmv~h=ydcP{o9JBC&IO zw;T5|cXDoao2j8rG=TvrH&K9bOb@GC`w9jcGB7mYemtZOmLMHuzY=`IJXuzFEGx(| z)}(de%fVw5LK*f39Luy&<#L>{Y1K0dPm{1yNvRiujc$4K8#ctWX>DK?t>(>c_SbDd zh5*!3jk}-(QFJ|t$>w9lENh?hb&XPT)lRc;AHNoNJ=fK~?=^suI($xc|C5Ih{^>Xi z-W598W8Cgm$TBU*vOtcxtS=isT?%Vn%!1m;+UW97#kl}1JkAGwk%*1pygnjzsjL@^ zmrlYHpCJYnutIyTrGF(BR z!QY|#cd7^(fV-hn;kXlgK}h``Y_ONmX|SY(+kOVG?y&@af;3=!G+|HCm?l_NZMOlz zcd?1w-qU`YRPDO+gX6Q1nV!NJGjPD+`<2r)&$R_f&GKI#H^@Y0wb3B;xu~hvmtj3X zVvnSY9HBGnCdT;Q4iW1_f-AE`+LkVZlOa)`7MuE{M3D!6y;<7k-(Xou`uz2lF>(B4 zi@Z#KNo91t#HF__9?k84+;#W+VowI*9YiM((G?bM<+Q-}q=iy0{o+D=-Ed0h=iobB zINpsC`jNL7=@baDoVO#bJEemZ1Wq$Oy_yineJFyJgZkCBHituh8z>CU@cVMA;!^u;WA z4^W^f^;Ng}E`Pr!K)E8{n z`sDGwTURfhJ$mxVCNFDHY_}Onj4jf1iJ%!y;65H589zt&KYcMad3x~0)0b22uDpUB z`-&ayD0juG`t2fbKm|QL`ur|Uych@nCk`dH>di+=zcIwMx{oMrZeNlxh#h3RD%T2q z38X~|j2&Rfgj%kN(T#_jvLN+rF%bu^MhTZ#3c6QHUPS}3C}eV#iS{8Y{4)_hW~2=2 ziEfAEQzxQtmz$%ij&)v=8nG=(n(mtZz-$OPzP)NErLV~v@^g}4O?R-y?Op_SS?3A1 zEyVO`2DSYU7aq^UHjJqz?KYWHc#`JZ+&2{j()OhBPE z%ZJzUi~Y6}vWO=ZrBF-TxXAldPZuBWG(^}c#p4;Ld(>0(1Qv{m_glB`QMfT4At}~~ z$dv7-9{7c_le#B+H4OT<->2xQP&@5tc%pEI#E}uxPvJAsd;FKN}0l z*5+Y4bT<4=8T4@6LkdU!U7;A`7^nWSJhR*ETT;*Bol=BOvVofru+O7anheF0crqM* zyQg~Mc2M==QB4XqzbnI`F`JY}HR*h8&zTdjoE1JyEARv^0=p)Kg#!hCtV zd9d*3gTn@(YQJQxZw@RL^L6RIpG~~$wi^*<7`axHWp}`)hqH#ecVz3m(*YECim@Eq zi$~@^ZH%&(*YyuC=5;x84q{s7Bp(MpHZ|TFJl(wjR2Z)$I2l46g``we!*YTcGTEP2 zX^ffcWVtX_L@9+auBBKSCQC$0d^H>&Wfmq3k~Px~cpGV2RYVCpZtFv*@r(;vE9qKV zaoVL^Cm^w{$|`k`TJlg8G|nuOVB!Slm22bhBXc=Lz6B1a36$U(6BEvjs! zuTL~gpfhHANfV> zL3^I3&T|vQlw_Qr6x_-XMrvnUoR({pG?nfo3wOs*zR_iM#|gL@3Q$te@{<6$! zoAq<6=5LEL0GHT9gGwCeJJgHUKGjX1gP26_wzZgEQXZA=bN66 z$`Wp?za7a$92?}0p+&G8p(Ahg zBLpooTnKa(>%FKL{p9WzWL)vUP!0Z%YF0TWGF63Yl5lgu+$a%A3FXb>=Qt++{X@9= zdaPMDmxG zwGrZP&sqqvROf(4ewWVHL$*b;f-(@!iYkIKywPhRPQlbdU@gz&Ca7G7+7@W?LjnFR z(acJ;pJPS89o@`Q*dooYQDjj#)DwCt)iTYFVd!)o_Ea|dGd0v9nU~IwPvIYeI$f)K z!Tx9zbOy>taAJY5=9> zQL5-Mr_9q*q`R68Z=eW7!Aeq^G)*9o_KyD^(-~73~FI86G#9sk5RS<2A+5FJ@n=k$4H(D|}T$taiP9I3kX1(OWbhY0zH*K_R zb#?x=wRd~5TkY{U@%>vMf5rF85}(jZNW3aJwvSS$((3;x)n05rO9VUgWrVn>;K29e zEs6&v^Mbc|sFCFwSv%S(^{)MO=`Ft|0! z^~e2w`=>qbo{$>;9k=Svj~3P<>^-5A00|c-wy{%qu=eP1r_Rw1wEs)&&cCQ{@fHuQ z#cmKOZXT&t72$H{@2xNQV(E;@;ht+y9=yK79c}uwaU6)yBhNKBn7W~$REj-~fDO&2 zweh-I`XrpYY?x9$91;B6;MH0*_XWq9&GxhT%9?vNLk_RJ=+2G-N7O%}zj(PkJTyMi z1GB{n_J?mCJ>S{1ebwe@ttKwxh84tB;mKlbYl=t`&GuJ?X##w&{EAy)>+;bDvkF5A z<0)|cd6u{bZJ(=hQKD#lHqjl~vJKr((kxFPHnRfgJXJJxefAnmTOO7b-H~ejMS}1a zKi7RT54xWpygc%_rj_qtG;EW9IQX0UM#}?yby&;K<&p93Fm4S+w|3_v4f8&(@pgjrduYrOrxIKbk4DSHs4BI@nn> zGnSAuJx)5UozPA}`ozBY5$zh7*H`&jzmkdUt82pT5l){zEQWZzf7>x$0?YCzj$4V3 zPtJ1&CJb8Fj|U1I%|EF#KZ7;f7qJiO^{lTwU`$<{x{bnx!4Pj3`#)?q6-A!LtAaG` zWpPhM;z#$|^X*x;+kwWtZkIoV$6W%(-S0C7-F;+FHY+J{xi$^-0jJ74bPS0-ezBt5 zVP>y4@FcdVeSz&@+avFrT({0u$5|U6a)TuQ6<;{RhakyuXMWMttb0JfwXn9U(rR-L`waEjJRF$KsuTxALQ;E=f7+{#;$i4hGeWS4ut*3 z?}hqM8}^1RVMPLeBT_C8`aH;+otNOMgtzwsF>(_R9T zVM?!-HSI|(d}J>$ghuNn@=9)utYaFMnTGZCNGDXH%9i!hjxh~hJYx|U{$>LCJd~W$ zD{biLpO`aF*!sTZxJX*pvHXK&aLI5`E~`yL85mSroLWncj<7l4Al)PxiWX;fKBTLsb<&4*5g41Sp zuzVH(6ly8LQ!xOW#zVNlO^sE?I<7qo8Ya}0%BYtk+m;!cdggdx^Qsv=1PSj=o=)_w zd*JXR{>b&gXNTZxKm(eX^pp!c_y_+PFFoHW`;-G;&I9PNQSg1OQnl7M#ihkMa2F17 z*iH{&yEEBnX$vRdcmG(%qCWJgZAsz(6cJ3liYyk+dXjM?*z+gI|Gk`R$0v0GmMdbH zNvX`RMA4lwI;1R5K(i5BG7y(V!|MGQ?HFysUY+WxQU2Xk<2)VMdw$KzG8U0G&I<I@Dz3qv950^vLIF|!31C`i7ap~yDo;-V^|WieM4c& zv_T;_l@koOc$7g8%|_vLn}h zn}ARwa{ThG{ZrX1dLK~3<(|sc36aM^u?o@}?c}k@xsC@wOYUgr!1@@!`9Nz+Fs&q- z!{vu8uH~D!9nCIy=z6SrS-Y?=xA{5zmDcw(uKj#IVX~bx%4{4rYu%r;&l9{YAmt;( z;0bjT{a}6W=T!@#~|6#`W~X5-Mr!);Iy;WevZRN(_X!=cL|+?;xb!|4HNT?)zc^&W37o=&PNQi zJK-FC)HAPK_}tz*pc-5;!TLBH4Chr~Zj)>p z#9oj-FS z(XLi5C!X^@;A|h^6;J;vV{zs<>@sKjvFDBLGanN?*2wJe@%Ns|zP8FXFi#=qTkj7# zYhu1y){929vi*uVmn=)%=s8APL9kKWonmuU;sH$sj$;|Vz#^=|cFe?XJlrz=C(3rN zV{jUsTOi(20#BT$fT6maX}4?7UVY}o;k zvvvoHc$5w_mc4fyiR@Fjc&S+ZNDl2k8kE>xQ3T4!F8LJ^`c>Br~E#bL{WH7hn;lF*{J z$kRGsB!<;E>coQEI8UA4Uc!;tt_`u6rx|yetB+H992~b2o@=~xzw$16x+C1u!n=DZ z*>Z&_jm#lt#hN{i@GegC(1^E|7P`KXu$-F*4{Adje&C>=_%;Gw%ObF>u7geq65N`)TPjtKKfxTPYjv`nNLb>2w4 zqccD3gAsAVq|eZK7wpu9+MycS9hv`HdRR{T;itvmGn%oCgUa|!phbf|wtdk0aP_*R z1ql{~$H+7dIZ8quQM^R%JdL^RnBz`3X^*|mItPQmh?-W-R$FC_71PLM3EpUQ1};-* z(lH9M&%PMOVaUKnN&0z>3ZJP%4qu>7?1iYCWrDeg;HBK&^fTCq&o9MQ50olHvLRiG$}VLWLg#MfXGVGXyfmX zF?)Y@4mtT|6p63>%{Ga(KU~Hr|7FZ1g^WV3UP$VUQl{IzuD0_3z^Q$bAMB~@?wyAN zDmE3nvgSFE%87ijPs*XfZyX-RegO>#ay5O!6F+?Bh)GJJ< void; options: { value: string; label: string }[]; placeholder?: string; + hint?: string; } export function SelectField({ @@ -167,6 +168,7 @@ export function SelectField({ onChange, options, placeholder, + hint, }: SelectFieldProps) { const [open, setOpen] = useState(false); const [search, setSearch] = useState(""); @@ -181,6 +183,8 @@ export function SelectField({ }) : options; + const showSearch = options.length > 3; + useEffect(() => { if (!open) return; function handle(e: MouseEvent) { @@ -195,43 +199,54 @@ export function SelectField({ return (
- {label && } - + {label && ( + + )} + {showSearch ? ( + { setSearch(e.target.value); if (!open) setOpen(true); }} + onFocus={() => { setOpen(true); setSearch(""); }} + placeholder={placeholder || "Выберите..."} + className={`w-full rounded-lg border bg-neutral-800 outline-none transition-colors ${ + label ? "px-4 py-2.5" : "px-2 py-1 text-xs" + } ${open ? "border-gold" : "border-white/10"} ${!open && value ? "text-white" : "text-white"} placeholder-neutral-500`} + /> + ) : ( + + )} {open && (
- {options.length > 3 && ( -
- setSearch(e.target.value)} - placeholder="Поиск..." - className="w-full rounded-md border border-white/10 bg-neutral-900 px-3 py-1.5 text-sm text-white outline-none focus:border-gold/50 placeholder:text-neutral-600" - /> -
- )}
{filtered.length === 0 && (
Ничего не найдено
)} - {filtered.map((opt) => ( + {filtered.map((opt, idx) => (
@@ -559,12 +589,20 @@ function CalendarGrid({ addresses, classTypes, onChange, + levelOptions, + levelHint, + statusOptions, + statusHint, }: { location: ScheduleLocation; trainers: string[]; addresses: string[]; classTypes: string[]; onChange: (loc: ScheduleLocation) => void; + levelOptions: { value: string; label: string }[]; + levelHint: string; + statusOptions: { value: string; label: string }[]; + statusHint: string; }) { const [editingClass, setEditingClass] = useState<{ dayIndex: number; @@ -1084,6 +1122,10 @@ function CalendarGrid({ onChange({ ...location, days: updatedDays }); }} onClose={() => setEditingClass(null)} + levelOptions={levelOptions} + levelHint={levelHint} + statusOptions={statusOptions} + statusHint={statusHint} /> )} @@ -1105,6 +1147,10 @@ function CalendarGrid({ onChange({ ...location, days: updatedDays }); }} onClose={() => setNewClass(null)} + levelOptions={levelOptions} + levelHint={levelHint} + statusOptions={statusOptions} + statusHint={statusHint} /> )}
@@ -1112,11 +1158,85 @@ function CalendarGrid({ } // ---------- Main Page ---------- +function ConfigEditor({ cfg, updateCfg, onSync }: { cfg: ScheduleConfig; updateCfg: (c: ScheduleConfig) => void; onSync: (c: ScheduleConfig) => void }) { + const normalized = useMemo(() => ({ + levels: cfg.levels ?? DEFAULT_CONFIG.levels, + statuses: cfg.statuses ?? DEFAULT_CONFIG.statuses, + }), [cfg]); + + useEffect(() => { onSync(normalized); }, [normalized, onSync]); + + return ( +
+ {/* Levels — collapsible + drag-and-drop via ArrayEditor */} + updateCfg({ ...normalized, levels })} + createItem={() => ({ value: "", description: "" })} + label="Уровни опыта" + addLabel="Добавить уровень" + collapsible + getItemTitle={(item) => item.value || "Новый уровень"} + renderItem={(item, _i, update) => ( +
+ update({ ...item, value: v })} + placeholder="Название уровня" + /> + update({ ...item, description: v })} + placeholder="Описание (для подсказки)" + /> +
+ )} + /> + + {/* Statuses — collapsible + drag-and-drop */} + updateCfg({ ...normalized, statuses })} + createItem={() => ({ key: `status_${Date.now()}`, label: "", description: "" })} + label="Статусы групп" + addLabel="Добавить статус" + collapsible + getItemTitle={(item) => item.label || "Новый статус"} + renderItem={(item, _i, update) => ( +
+ update({ ...item, key: v.replace(/[^a-zA-Z0-9_]/g, "") })} + placeholder="например: intensive" + /> + update({ ...item, label: v })} + placeholder="Название статуса" + /> + update({ ...item, description: v })} + placeholder="Описание (для подсказки)" + /> +
+ )} + /> +
+ ); +} + export default function ScheduleEditorPage() { const [activeLocation, setActiveLocation] = useState(0); const [trainers, setTrainers] = useState([]); const [addresses, setAddresses] = useState([]); const [classTypes, setClassTypes] = useState([]); + const [config, setConfig] = useState(DEFAULT_CONFIG); useEffect(() => { adminFetch("/api/admin/team") @@ -1139,9 +1259,19 @@ export default function ScheduleEditorPage() { setClassTypes((classes.items ?? []).map((c) => c.name)); }) .catch(() => {}); + + adminFetch("/api/admin/sections/scheduleConfig") + .then((r) => r.json()) + .then((c: ScheduleConfig) => { if (c?.levels) setConfig(c); }) + .catch(() => {}); }, []); + const levelOptions = buildLevelOptions(config); + const levelHint = config.levels.map((l) => `${l.value} — ${l.description}`).join(". ") + "."; + const statusOptions = useMemo(() => buildStatusOptions(config), [config]); + return ( + <> sectionKey="schedule" title="Расписание"> {(data, update) => { const location = data.locations[activeLocation]; @@ -1222,11 +1352,24 @@ export default function ScheduleEditorPage() { addresses={addresses} classTypes={classTypes} onChange={updateLocation} + levelOptions={levelOptions} + levelHint={levelHint} + statusOptions={statusOptions} + statusHint={(config.statuses ?? DEFAULT_CONFIG.statuses).map((s) => `${s.label} — ${s.description.toLowerCase()}`).join(". ") + "."} /> )} ); }} + +
+ sectionKey="scheduleConfig" title="Настройки фильтров"> + {(cfg, updateCfg) => ( + + )} + +
+ ); } diff --git a/src/app/layout.tsx b/src/app/layout.tsx index e69c1bf..00f7903 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,16 +1,24 @@ import type { Metadata } from "next"; -import { Inter, Oswald } from "next/font/google"; +import localFont from "next/font/local"; import { getContent } from "@/lib/content"; import "./globals.css"; -const inter = Inter({ +const inter = localFont({ + src: [ + { path: "../../public/fonts/inter-latin.woff2", weight: "100 900" }, + { path: "../../public/fonts/inter-cyrillic.woff2", weight: "100 900" }, + ], variable: "--font-inter", - subsets: ["latin", "cyrillic"], + display: "swap", }); -const oswald = Oswald({ +const oswald = localFont({ + src: [ + { path: "../../public/fonts/oswald-latin.woff2", weight: "200 700" }, + { path: "../../public/fonts/oswald-cyrillic.woff2", weight: "200 700" }, + ], variable: "--font-oswald", - subsets: ["latin", "cyrillic"], + display: "swap", }); export function generateMetadata(): Metadata { diff --git a/src/app/page.tsx b/src/app/page.tsx index 680d88b..fea595c 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -45,7 +45,7 @@ export default function HomePage() { {openDayData && } - + diff --git a/src/components/sections/Schedule.tsx b/src/components/sections/Schedule.tsx index b3ea41f..68476e7 100644 --- a/src/components/sections/Schedule.tsx +++ b/src/components/sections/Schedule.tsx @@ -9,7 +9,7 @@ import { DayCard } from "./schedule/DayCard"; import { ScheduleFilters } from "./schedule/ScheduleFilters"; import { MobileSchedule } from "./schedule/MobileSchedule"; import { GroupView } from "./schedule/GroupView"; -import { buildTypeDots, shortAddress, startTimeMinutes, TIME_PRESETS } from "./schedule/constants"; +import { buildTypeDots, shortAddress, startTimeMinutes, TIME_FILTER_EMPTY, isTimeFilterActive } from "./schedule/constants"; import type { StatusTag, TimeFilter, ScheduleDayMerged, ScheduleClassWithLocation } from "./schedule/constants"; import type { SiteContent } from "@/types/content"; @@ -19,7 +19,7 @@ type LocationMode = "all" | number; interface ScheduleState { locationMode: LocationMode; viewMode: ViewMode; - filterTrainer: string | null; + filterTrainerSet: Set; filterTypes: Set; filterStatusSet: Set; filterLevel: string | null; @@ -31,7 +31,7 @@ interface ScheduleState { type ScheduleAction = | { type: "SET_LOCATION"; mode: LocationMode } | { type: "SET_VIEW"; mode: ViewMode } - | { type: "SET_TRAINER"; value: string | null } + | { type: "TOGGLE_TRAINER"; value: string } | { type: "TOGGLE_TYPE"; value: string } | { type: "TOGGLE_STATUS"; value: StatusTag } | { type: "SET_LEVEL"; value: string | null } @@ -43,11 +43,11 @@ type ScheduleAction = const initialState: ScheduleState = { locationMode: "all", viewMode: "groups", - filterTrainer: null, + filterTrainerSet: new Set(), filterTypes: new Set(), filterStatusSet: new Set(), filterLevel: null, - filterTime: "all", + filterTime: TIME_FILTER_EMPTY, filterDaySet: new Set(), bookingGroup: null, }; @@ -58,8 +58,12 @@ function scheduleReducer(state: ScheduleState, action: ScheduleAction): Schedule return { ...initialState, viewMode: state.viewMode, locationMode: action.mode }; case "SET_VIEW": return { ...state, viewMode: action.mode }; - case "SET_TRAINER": - return { ...state, filterTrainer: action.value }; + case "TOGGLE_TRAINER": { + const next = new Set(state.filterTrainerSet); + if (next.has(action.value)) next.delete(action.value); + else next.add(action.value); + return { ...state, filterTrainerSet: next }; + } case "TOGGLE_TYPE": { const next = new Set(state.filterTypes); if (next.has(action.value)) next.delete(action.value); @@ -85,19 +89,20 @@ function scheduleReducer(state: ScheduleState, action: ScheduleAction): Schedule case "SET_BOOKING": return { ...state, bookingGroup: action.value }; case "CLEAR_FILTERS": - return { ...state, filterTrainer: null, filterTypes: new Set(), filterStatusSet: new Set(), filterLevel: null, filterTime: "all", filterDaySet: new Set() }; + return { ...state, filterTrainerSet: new Set(), filterTypes: new Set(), filterStatusSet: new Set(), filterLevel: null, filterTime: TIME_FILTER_EMPTY, filterDaySet: new Set() }; } } interface ScheduleProps { data: SiteContent["schedule"]; + scheduleConfig?: SiteContent["scheduleConfig"]; classItems?: { name: string; color?: string }[]; teamMembers?: { name: string; image: string }[]; } -export function Schedule({ data: schedule, classItems, teamMembers }: ScheduleProps) { +export function Schedule({ data: schedule, scheduleConfig, classItems, teamMembers }: ScheduleProps) { const [state, dispatch] = useReducer(scheduleReducer, initialState); - const { locationMode, viewMode, filterTrainer, filterTypes, filterStatusSet, filterLevel, filterTime, filterDaySet, bookingGroup } = state; + const { locationMode, viewMode, filterTrainerSet, filterTypes, filterStatusSet, filterLevel, filterTime, filterDaySet, bookingGroup } = state; const isAllMode = locationMode === "all"; @@ -106,15 +111,17 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr if (el) el.scrollIntoView({ behavior: "smooth", block: "start" }); }, []); - const setFilterTrainer = useCallback((value: string | null) => dispatch({ type: "SET_TRAINER", value }), []); + const toggleFilterTrainer = useCallback((value: string) => dispatch({ type: "TOGGLE_TRAINER", value }), []); const toggleFilterType = useCallback((value: string) => dispatch({ type: "TOGGLE_TYPE", value }), []); const toggleFilterStatus = useCallback((value: StatusTag) => dispatch({ type: "TOGGLE_STATUS", value }), []); const setFilterLevel = useCallback((value: string | null) => dispatch({ type: "SET_LEVEL", value }), []); const setFilterTime = useCallback((value: TimeFilter) => dispatch({ type: "SET_TIME", value }), []); - const setFilterTrainerFromCard = useCallback((trainer: string | null) => { - dispatch({ type: "SET_TRAINER", value: trainer }); - if (trainer) scrollToSchedule(); + const toggleFilterTrainerFromCard = useCallback((trainer: string | null) => { + if (trainer) { + dispatch({ type: "TOGGLE_TRAINER", value: trainer }); + scrollToSchedule(); + } }, [scrollToSchedule]); const toggleFilterTypeFromCard = useCallback((type: string) => { @@ -176,34 +183,39 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr .map((d) => dayMap.get(d)!); }, [locationMode, schedule.locations]); - const { types, hasAnySlots, hasAnyRecruiting, levels } = useMemo(() => { + const { types, availableStatuses, levels, trainerNames } = useMemo(() => { const typeSet = new Set(); const levelSet = new Set(); - let slots = false; - let recruiting = false; + const trainerSet = new Set(); + const statusSet = new Set(); for (const day of activeDays) { for (const cls of day.classes) { typeSet.add(cls.type); - if (cls.hasSlots) slots = true; - if (cls.recruiting) recruiting = true; + trainerSet.add(cls.trainer); + if (cls.status) statusSet.add(cls.status); + if (cls.hasSlots) statusSet.add("hasSlots"); + if (cls.recruiting) statusSet.add("recruiting"); if (cls.level) levelSet.add(cls.level); } } return { types: Array.from(typeSet).sort(), - hasAnySlots: slots, - hasAnyRecruiting: recruiting, + availableStatuses: Array.from(statusSet), levels: Array.from(levelSet).sort(), + trainerNames: Array.from(trainerSet).sort(), }; }, [activeDays]); - // Get the time range for the active time filter - const activeTimeRange = filterTime !== "all" - ? TIME_PRESETS.find((p) => p.value === filterTime)?.range + // Parse time range for filtering + const activeTimeRange = isTimeFilterActive(filterTime) + ? [ + filterTime.from ? startTimeMinutes(filterTime.from) : 0, + filterTime.to ? startTimeMinutes(filterTime.to) : 24 * 60, + ] as const : null; const filteredDays: ScheduleDayMerged[] = useMemo(() => { - const noFilter = !filterTrainer && filterTypes.size === 0 && filterStatusSet.size === 0 && !filterLevel && filterTime === "all" && filterDaySet.size === 0; + const noFilter = filterTrainerSet.size === 0 && filterTypes.size === 0 && filterStatusSet.size === 0 && !filterLevel && !isTimeFilterActive(filterTime) && filterDaySet.size === 0; if (noFilter) return activeDays; // First filter by day names if any selected @@ -216,11 +228,12 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr ...day, classes: day.classes.filter( (cls) => - (!filterTrainer || cls.trainer === filterTrainer) && + (filterTrainerSet.size === 0 || filterTrainerSet.has(cls.trainer)) && (filterTypes.size === 0 || filterTypes.has(cls.type)) && (filterStatusSet.size === 0 || - (filterStatusSet.has("hasSlots") && cls.hasSlots) || - (filterStatusSet.has("recruiting") && cls.recruiting)) && + (cls.status && filterStatusSet.has(cls.status as StatusTag)) || + (filterStatusSet.has("hasSlots" as StatusTag) && cls.hasSlots) || + (filterStatusSet.has("recruiting" as StatusTag) && cls.recruiting)) && (!filterLevel || cls.level === filterLevel) && (!activeTimeRange || (() => { const m = startTimeMinutes(cls.time); @@ -229,9 +242,9 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr ), })) .filter((day) => day.classes.length > 0); - }, [activeDays, filterTrainer, filterTypes, filterStatusSet, filterLevel, filterTime, activeTimeRange, filterDaySet]); + }, [activeDays, filterTrainerSet, filterTypes, filterStatusSet, filterLevel, filterTime, activeTimeRange, filterDaySet]); - const hasActiveFilter = !!(filterTrainer || filterTypes.size > 0 || filterStatusSet.size > 0 || filterLevel || filterTime !== "all" || filterDaySet.size > 0); + const hasActiveFilter = !!(filterTrainerSet.size > 0 || filterTypes.size > 0 || filterStatusSet.size > 0 || filterLevel || isTimeFilterActive(filterTime) || filterDaySet.size > 0); function clearFilters() { dispatch({ type: "CLEAR_FILTERS" }); @@ -319,10 +332,10 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr
- {/* View mode toggle */} + {/* View mode toggle + filter button */} -
-
+
+
+ + {/* Divider */} + + +
- - {/* Compact filters — desktop only */} - - -
{viewMode === "days" ? ( @@ -384,8 +399,8 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr filteredDays={filteredDays} filterTypes={filterTypes} toggleFilterType={toggleFilterTypeFromCard} - filterTrainer={filterTrainer} - setFilterTrainer={setFilterTrainerFromCard} + filterTrainerSet={filterTrainerSet} + toggleFilterTrainer={toggleFilterTrainerFromCard} hasActiveFilter={hasActiveFilter} clearFilters={clearFilters} showLocation={isAllMode} @@ -403,7 +418,7 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr key={day.day} className={filteredDays.length === 1 ? "w-full max-w-[340px]" : ""} > - +
))} @@ -423,8 +438,8 @@ export function Schedule({ data: schedule, classItems, teamMembers }: SchedulePr filteredDays={filteredDays} filterTypes={filterTypes} toggleFilterType={toggleFilterTypeFromCard} - filterTrainer={filterTrainer} - setFilterTrainer={setFilterTrainerFromCard} + filterTrainerSet={filterTrainerSet} + toggleFilterTrainer={toggleFilterTrainerFromCard} showLocation={isAllMode} onBook={(v) => dispatch({ type: "SET_BOOKING", value: v })} trainerPhotos={trainerPhotos} diff --git a/src/components/sections/schedule/DayCard.tsx b/src/components/sections/schedule/DayCard.tsx index d228bbb..b1155c9 100644 --- a/src/components/sections/schedule/DayCard.tsx +++ b/src/components/sections/schedule/DayCard.tsx @@ -6,8 +6,8 @@ interface DayCardProps { day: ScheduleDayMerged; typeDots: Record; showLocation?: boolean; - filterTrainer: string | null; - setFilterTrainer: (trainer: string | null) => void; + filterTrainerSet: Set; + toggleFilterTrainer: (trainer: string | null) => void; filterTypes: Set; toggleFilterType: (type: string) => void; } @@ -15,15 +15,15 @@ interface DayCardProps { function ClassRow({ cls, typeDots, - filterTrainer, - setFilterTrainer, + filterTrainerSet, + toggleFilterTrainer, filterTypes, toggleFilterType, }: { cls: ScheduleClassWithLocation; typeDots: Record; - filterTrainer: string | null; - setFilterTrainer: (trainer: string | null) => void; + filterTrainerSet: Set; + toggleFilterTrainer: (trainer: string | null) => void; filterTypes: Set; toggleFilterType: (type: string) => void; }) { @@ -46,7 +46,7 @@ function ClassRow({ )} {/* Name — clicks to filter */} - ))} - - {/* Divider */} - - - {/* Status filters */} - {hasAnySlots && ( - - )} - {hasAnyRecruiting && ( - - )} - - {/* Level filters */} - {levels.length > 0 && ( - <> - - {levels.map((level) => ( - - ))} - - )} - - {/* Divider */} - - - {/* When dropdown toggle */} - - - {/* Active trainer indicator (set by clicking trainer in cards) */} - {filterTrainer && ( - - - {filterTrainer} + {/* Filter button — same style as По дням / По группам buttons */} + - {/* Clear */} - {hasActiveFilter && ( - - )} - + {/* Header */} +
+

Фильтры

+ +
- {/* When panel — expandable: days + time presets */} - {showWhen && ( -
- - {availableDays.map(({ day, dayShort }) => ( - - ))} + {/* Scrollable content */} +
+ {/* Class types — gold border, white text; gold bg when active */} + +
+ {types.map((type) => ( + + ))} +
+
- + {/* Trainer — search multi-select */} + + + - {TIME_PRESETS.map((preset) => ( - - ))} -
+ {/* Status — gold tags */} + {availableStatuses.length > 0 && ( + +
+ {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} + + )} + + ); + })} +
+
+ )} + + {/* Level — gold tags with hover hints */} + {levels.length > 0 && ( + +
+ {levels.map((level) => { + const desc = scheduleConfig?.levels?.find((l) => l.value === level)?.description; + const active = filterLevel === level; + return ( + + + {desc && ( + + {desc} + + )} + + ); + })} +
+
+ )} + + {/* Days — calendar grid */} + +
+ {availableDays.map(({ day, dayShort }) => ( + + ))} +
+
+ + {/* 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]" + /> +
+
+
+ {TIME_PRESETS.map((preset) => { + const isActive = filterTime.from === preset.from && filterTime.to === preset.to; + return ( + + ); + })} +
+
+
+ + {/* Footer */} +
+ + +
+ + , + document.body )} ); } + +function FilterSection({ title, hint, children }: { title: string; hint?: string; children: React.ReactNode }) { + const [showHint, setShowHint] = useState(false); + const hintRef = useRef(null); + + useEffect(() => { + if (!showHint) return; + function handle(e: MouseEvent) { + if (hintRef.current && !hintRef.current.contains(e.target as Node)) setShowHint(false); + } + document.addEventListener("mousedown", handle); + return () => document.removeEventListener("mousedown", handle); + }, [showHint]); + + return ( +
+
+

{title}

+ {hint && ( +
+ + {showHint && ( +
+ {hint} +
+ )} +
+ )} +
+ {children} +
+ ); +} + +function HintBubble({ text }: { text: string }) { + return ( + + + ? + + + {text} + + + ); +} + +function TrainerMultiSelect({ + trainers, + selected, + onToggle, +}: { + trainers: string[]; + selected: Set; + onToggle: (trainer: string) => void; +}) { + const [open, setOpen] = useState(false); + const [search, setSearch] = useState(""); + const containerRef = useRef(null); + const inputRef = useRef(null); + + const filtered = search + ? trainers.filter((t) => !selected.has(t) && t.toLowerCase().includes(search.toLowerCase())) + : trainers.filter((t) => !selected.has(t)); + + useEffect(() => { + if (!open) return; + function handle(e: MouseEvent) { + if (containerRef.current && !containerRef.current.contains(e.target as Node)) { + setOpen(false); + setSearch(""); + } + } + document.addEventListener("mousedown", handle); + return () => document.removeEventListener("mousedown", handle); + }, [open]); + + return ( +
+
{ setOpen(true); inputRef.current?.focus(); }} + className={`flex flex-wrap items-center gap-1.5 rounded-lg border px-3 py-2 min-h-[42px] cursor-text transition-colors ${ + open ? "border-gold bg-white/[0.06]" : "border-white/[0.08] bg-white/[0.04]" + }`} + > + {Array.from(selected).map((t) => ( + + {t} + + + ))} + { setSearch(e.target.value); setOpen(true); }} + onFocus={() => setOpen(true)} + onKeyDown={(e) => { + if (e.key === "Backspace" && !search && selected.size > 0) { + onToggle(Array.from(selected).pop()!); + } + if (e.key === "Escape") { setOpen(false); setSearch(""); } + }} + placeholder={selected.size === 0 ? "Все тренеры" : ""} + className="flex-1 min-w-[80px] bg-transparent text-sm text-white placeholder-neutral-500 outline-none" + /> +
+ + {open && filtered.length > 0 && ( +
+
+ {filtered.map((trainer) => ( + + ))} +
+
+ )} +
+ ); +} diff --git a/src/components/sections/schedule/constants.ts b/src/components/sections/schedule/constants.ts index 67cb260..5a88718 100644 --- a/src/components/sections/schedule/constants.ts +++ b/src/components/sections/schedule/constants.ts @@ -62,15 +62,24 @@ export function buildTypeDots( return map; } -export type StatusTag = "hasSlots" | "recruiting"; +export type StatusTag = string; /** @deprecated Use Set instead */ export type StatusFilter = "all" | "hasSlots" | "recruiting"; -export type TimeFilter = "all" | "morning" | "afternoon" | "evening"; +export interface TimeFilter { + from: string; // "HH:MM" or "" + to: string; // "HH:MM" or "" +} -export const TIME_PRESETS: { value: TimeFilter; label: string; range: [number, number] }[] = [ - { value: "morning", label: "Утро", range: [0, 12 * 60] }, - { value: "afternoon", label: "День", range: [12 * 60, 18 * 60] }, - { value: "evening", label: "Вечер", range: [18 * 60, 24 * 60] }, +export const TIME_FILTER_EMPTY: TimeFilter = { from: "", to: "" }; + +export function isTimeFilterActive(t: TimeFilter): boolean { + return t.from !== "" || t.to !== ""; +} + +export const TIME_PRESETS: { label: string; from: string; to: string }[] = [ + { label: "Утро", from: "06:00", to: "12:00" }, + { label: "День", from: "12:00", to: "18:00" }, + { label: "Вечер", from: "18:00", to: "23:00" }, ]; /** Parse start time from "HH:MM–HH:MM" to minutes since midnight */ @@ -89,6 +98,7 @@ export interface ScheduleClassWithLocation { level?: string; hasSlots?: boolean; recruiting?: boolean; + status?: string; groupId?: string; locationName?: string; locationAddress?: string; diff --git a/src/data/content.ts b/src/data/content.ts index 39e1f32..ed07cc5 100644 --- a/src/data/content.ts +++ b/src/data/content.ts @@ -449,6 +449,16 @@ export const siteContent: SiteContent = { }, ], }, + scheduleConfig: { + levels: [ + { value: "Начинающий/Без опыта", description: "Для тех, кто только начинает заниматься" }, + { value: "Продвинутый", description: "Для учеников с опытом от 6 месяцев" }, + ], + statuses: [ + { key: "hasSlots", label: "Есть места", description: "В группе есть свободные места" }, + { key: "recruiting", label: "Набор открыт", description: "Идёт набор в новую группу" }, + ], + }, news: { title: "Новости", items: [], diff --git a/src/lib/db.ts b/src/lib/db.ts index 7feb0a6..a130c07 100644 --- a/src/lib/db.ts +++ b/src/lib/db.ts @@ -520,6 +520,7 @@ const SECTION_KEYS = [ "news", "contact", "popups", + "scheduleConfig", ] as const; export function getSiteContent(): SiteContent | null { @@ -557,6 +558,16 @@ export function getSiteContent(): SiteContent | null { instagramHint: "По вопросам пишите в Instagram", }, contact: sections.contact, + scheduleConfig: sections.scheduleConfig ?? { + levels: [ + { value: "Начинающий/Без опыта", description: "Для тех, кто только начинает" }, + { value: "Продвинутый", description: "Для учеников с опытом от 6 месяцев" }, + ], + statuses: [ + { key: "hasSlots", label: "Есть места", description: "В группе есть свободные места" }, + { key: "recruiting", label: "Набор открыт", description: "Идёт набор в новую группу" }, + ], + }, team: { title: teamSection.title || "", members: members.map(({ id, ...rest }) => rest), diff --git a/src/types/content.ts b/src/types/content.ts index 5129b8a..073df5a 100644 --- a/src/types/content.ts +++ b/src/types/content.ts @@ -44,6 +44,7 @@ export interface ScheduleClass { level?: string; hasSlots?: boolean; recruiting?: boolean; + status?: string; groupId?: string; } @@ -150,6 +151,10 @@ export interface SiteContent { title: string; locations: ScheduleLocation[]; }; + scheduleConfig: { + levels: { value: string; description: string }[]; + statuses: { key: string; label: string; description: string }[]; + }; news: { title: string; items: NewsItem[];