From b27b915b637d02f632a2a70c04af1be97f11e547 Mon Sep 17 00:00:00 2001 From: mrleo1nid <43583385+mrleo1nid@users.noreply.github.com> Date: Wed, 21 Oct 2026 08:26:48 +0300 Subject: [PATCH] feat(web): settings to keep the search open and hide home pickers; collapsible menu sections - appearance settings get "collapse search" (off keeps the field always open) and separate switches for the activity and mood pickers on the home page; stored in ui_prefs (search_collapse, home_activities, home_moods) - Collection and Admin headers in the sidebar fold their items; the state is remembered in the browser, a folded Admin shows the review queue badge; icon-only and phone layouts always show every item Co-Authored-By: Claude Opus 5.5 --- api/openapi.yaml | 9 + apps/web/src/pages/HomePage.tsx | 36 +- apps/web/src/pages/SettingsPage.tsx | 36 ++ apps/web/src/widgets/AppShell.module.css | 56 ++- apps/web/src/widgets/AppShell.tsx | 66 ++- apps/web/src/widgets/SearchBox.tsx | 12 +- packages/api-client/src/generated/schema.ts | 6 + packages/i18n/locales/en/common.json | 5 +- packages/i18n/locales/ru/common.json | 5 +- services/api/internal/api/gen/api.gen.go | 505 ++++++++++---------- services/api/internal/auth/handler.go | 6 + services/api/internal/auth/model.go | 3 + services/api/internal/auth/validate.go | 9 + 13 files changed, 470 insertions(+), 284 deletions(-) diff --git a/api/openapi.yaml b/api/openapi.yaml index 20c11ad..49e2302 100644 --- a/api/openapi.yaml +++ b/api/openapi.yaml @@ -2018,6 +2018,15 @@ components: type: string enum: [center, left, right] description: Где в топбаре веба поиск (по умолчанию center) + search_collapse: + type: boolean + description: Сворачивать поиск в кнопку с лупой без фокуса (по умолчанию true) + home_activities: + type: boolean + description: Показывать на главной веба выбор занятия (по умолчанию true) + home_moods: + type: boolean + description: Показывать на главной веба выбор настроения (по умолчанию true) mobile_player: type: string enum: [cover, wave] diff --git a/apps/web/src/pages/HomePage.tsx b/apps/web/src/pages/HomePage.tsx index 8f1f3c4..af28a26 100644 --- a/apps/web/src/pages/HomePage.tsx +++ b/apps/web/src/pages/HomePage.tsx @@ -84,6 +84,8 @@ function WaveHome() { staleTime: Infinity, }); + const showActivities = user.ui_prefs.home_activities !== false; + const showMoods = user.ui_prefs.home_moods !== false; const waveOn = st.wave !== null; const playing = waveOn && st.playing; const track = waveOn ? st.track : null; @@ -133,22 +135,26 @@ function WaveHome() { {st.error === 'wave.empty' &&

{t('wave.empty')}

} {error ? errorText(error) : null} - {options.data && ( + {options.data && (showActivities || showMoods) && (
- tr(`wave.activities.${k}`)} - onPick={(k) => choose('activity', k)} - /> - tr(`wave.moods.${k}`)} - onPick={(k) => choose('mood', k)} - /> + {showActivities && ( + tr(`wave.activities.${k}`)} + onPick={(k) => choose('activity', k)} + /> + )} + {showMoods && ( + tr(`wave.moods.${k}`)} + onPick={(k) => choose('mood', k)} + /> + )}
)} diff --git a/apps/web/src/pages/SettingsPage.tsx b/apps/web/src/pages/SettingsPage.tsx index 96e6bfc..e3102f1 100644 --- a/apps/web/src/pages/SettingsPage.tsx +++ b/apps/web/src/pages/SettingsPage.tsx @@ -139,6 +139,42 @@ function AppearanceSection() { ]} /> +
+ {t('settings.search_collapse')} + + label={t('settings.search_collapse')} + value={user.ui_prefs.search_collapse === false ? 'off' : 'on'} + onChange={(v) => void setPrefs({ search_collapse: v === 'on' })} + options={[ + { value: 'on', label: t('settings.on') }, + { value: 'off', label: t('settings.off') }, + ]} + /> +
+
+ {t('settings.home_activities')} + + label={t('settings.home_activities')} + value={user.ui_prefs.home_activities === false ? 'off' : 'on'} + onChange={(v) => void setPrefs({ home_activities: v === 'on' })} + options={[ + { value: 'on', label: t('settings.on') }, + { value: 'off', label: t('settings.off') }, + ]} + /> +
+
+ {t('settings.home_moods')} + + label={t('settings.home_moods')} + value={user.ui_prefs.home_moods === false ? 'off' : 'on'} + onChange={(v) => void setPrefs({ home_moods: v === 'on' })} + options={[ + { value: 'on', label: t('settings.on') }, + { value: 'off', label: t('settings.off') }, + ]} + /> +
{t('settings.ambient')} diff --git a/apps/web/src/widgets/AppShell.module.css b/apps/web/src/widgets/AppShell.module.css index fe304d9..40dfc29 100644 --- a/apps/web/src/widgets/AppShell.module.css +++ b/apps/web/src/widgets/AppShell.module.css @@ -118,12 +118,52 @@ } .navSection { - margin: 18px 12px 6px; + display: flex; + align-items: center; + gap: 8px; + margin: 12px 0 2px; + padding: 6px 12px; + border: 0; + border-radius: 8px; + background: none; + font: inherit; font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text3); + text-align: left; + cursor: pointer; +} + +.navSection:hover { + color: var(--text2); +} + +.navSection:focus-visible { + outline: 2px solid var(--accent); + outline-offset: -2px; +} + +.navSectionTitle { + flex: 1; +} + +.navChevron { + transition: transform 0.2s; +} + +.navChevronOpen { + transform: rotate(90deg); +} + +/* Обёртка не мешает раскладке: пункты остаются детьми .side (на телефоне это нижняя панель). */ +.navGroup { + display: contents; +} + +.navGroupFolded { + display: none; } .navItem { @@ -209,9 +249,19 @@ .navSection { margin: 14px 0 6px; - text-align: center; - font-size: 0; + padding: 0; + border-radius: 0; border-top: 1px solid var(--line); + pointer-events: none; + } + + .navSection > * { + display: none; + } + + /* Без подписей свернуть раздел нельзя — пункты видны всегда. */ + .navGroupFolded { + display: contents; } } diff --git a/apps/web/src/widgets/AppShell.tsx b/apps/web/src/widgets/AppShell.tsx index b26966a..9f632cf 100644 --- a/apps/web/src/widgets/AppShell.tsx +++ b/apps/web/src/widgets/AppShell.tsx @@ -1,6 +1,7 @@ import { unwrap } from '@pipu/core'; import { useQuery } from '@tanstack/react-query'; import { Link, Outlet, useNavigate } from '@tanstack/react-router'; +import { useState, type ReactNode } from 'react'; import { useTranslation } from 'react-i18next'; import { useAuthState, useSession, useUser } from '../app/session'; @@ -23,6 +24,7 @@ import { dislikeIcon, settingsIcon, androidIcon, + chevronRightIcon, storageFillIcon, storageIcon, inboxFillIcon, inboxIcon, myUploadsFillIcon, myUploadsIcon, uploadFillIcon, uploadIcon, tuneFillIcon, tuneIcon} from '../shared/ui/icons'; import { Avatar, cx, Icon, Logo, Menu } from '../shared/ui/ui'; @@ -76,6 +78,42 @@ function NavLink({ ); } +const FOLDED_KEY = 'pipu.nav.folded'; + +function readFolded(): string[] { + try { + const v: unknown = JSON.parse(localStorage.getItem(FOLDED_KEY) ?? '[]'); + return Array.isArray(v) ? v.filter((x): x is string => typeof x === 'string') : []; + } catch { + return []; + } +} + +/** Раздел меню: заголовок сворачивает пункты; состояние помнит браузер. Свёрнутый раздел показывает сумму бейджей. */ +function NavSection({ id, title, badge, children }: { id: string; title: string; badge?: number; children: ReactNode }) { + const [folded, setFolded] = useState(() => readFolded().includes(id)); + const toggle = () => { + const next = !folded; + setFolded(next); + try { + const rest = readFolded().filter((x) => x !== id); + localStorage.setItem(FOLDED_KEY, JSON.stringify(next ? [...rest, id] : rest)); + } catch { + // Без хранилища раздел просто не запомнит состояние. + } + }; + return ( + <> + +
{children}
+ + ); +} + /** Между выходом и редиректом на /login каркас не рисуется: пользователя уже нет. */ export function AppShell() { return useAuthState().status === 'signed_in' ? ( @@ -94,7 +132,7 @@ function Shell() { const staff = user.role !== 'user'; const island = user.ui_prefs.web_player === 'island'; const searchAt = user.ui_prefs.search_position ?? 'center'; - const search = ; + const search = ; const counts = useCollectionCounts(); const pending = usePendingUploads(user.role === 'admin'); @@ -138,19 +176,19 @@ function Shell() { diff --git a/apps/web/src/widgets/SearchBox.tsx b/apps/web/src/widgets/SearchBox.tsx index 5ed94dc..a9bfa9b 100644 --- a/apps/web/src/widgets/SearchBox.tsx +++ b/apps/web/src/widgets/SearchBox.tsx @@ -25,9 +25,15 @@ type Item = { /** * Поиск в топбаре: подсказки по мере ввода, Enter — страница поиска или выбранный элемент. - * Без фокуса и текста свёрнут в кнопку с лупой; поле раскрывается влево с анимацией. + * Без фокуса и текста свёрнут в кнопку с лупой (если collapsible); поле раскрывается с анимацией. */ -export function SearchBox({ align = 'center' }: { align?: 'left' | 'center' | 'right' }) { +export function SearchBox({ + align = 'center', + collapsible = true, +}: { + align?: 'left' | 'center' | 'right'; + collapsible?: boolean; +}) { const { t } = useTranslation(); const session = useSession(); const navigate = useNavigate(); @@ -40,7 +46,7 @@ export function SearchBox({ align = 'center' }: { align?: 'left' | 'center' | 'r const [focused, setFocused] = useState(false); const blurTimer = useRef>(undefined); // Свёрнут в круглую кнопку, пока не нужен: раскрывается по клику, «/» или Ctrl+K. - const expanded = focused || q !== ''; + const expanded = !collapsible || focused || q !== ''; useEffect(() => { const id = setTimeout(() => setDebounced(q.trim()), DEBOUNCE_MS); diff --git a/packages/api-client/src/generated/schema.ts b/packages/api-client/src/generated/schema.ts index 33404a4..7265dba 100644 --- a/packages/api-client/src/generated/schema.ts +++ b/packages/api-client/src/generated/schema.ts @@ -1514,6 +1514,12 @@ export interface components { * @enum {string} */ search_position?: "center" | "left" | "right"; + /** @description Сворачивать поиск в кнопку с лупой без фокуса (по умолчанию true) */ + search_collapse?: boolean; + /** @description Показывать на главной веба выбор занятия (по умолчанию true) */ + home_activities?: boolean; + /** @description Показывать на главной веба выбор настроения (по умолчанию true) */ + home_moods?: boolean; /** @enum {string} */ mobile_player?: "cover" | "wave"; ambient?: boolean; diff --git a/packages/i18n/locales/en/common.json b/packages/i18n/locales/en/common.json index 41c7c0a..78f7a3e 100644 --- a/packages/i18n/locales/en/common.json +++ b/packages/i18n/locales/en/common.json @@ -119,7 +119,10 @@ "search_position": "Search position", "search_left": "Left", "search_center": "Center", - "search_right": "Right" + "search_right": "Right", + "search_collapse": "Collapse search", + "home_activities": "Activity picker on home", + "home_moods": "Mood picker on home" }, "form": { "show_password": "Show password", diff --git a/packages/i18n/locales/ru/common.json b/packages/i18n/locales/ru/common.json index 269d8c7..6d78283 100644 --- a/packages/i18n/locales/ru/common.json +++ b/packages/i18n/locales/ru/common.json @@ -119,7 +119,10 @@ "search_position": "Расположение поиска", "search_left": "Слева", "search_center": "По центру", - "search_right": "Справа" + "search_right": "Справа", + "search_collapse": "Сворачивать поиск", + "home_activities": "Выбор занятия на главной", + "home_moods": "Выбор настроения на главной" }, "form": { "show_password": "Показать пароль", diff --git a/services/api/internal/api/gen/api.gen.go b/services/api/internal/api/gen/api.gen.go index 0a3e6b3..888444d 100644 --- a/services/api/internal/api/gen/api.gen.go +++ b/services/api/internal/api/gen/api.gen.go @@ -913,11 +913,20 @@ type TrackMeta struct { // UiPrefs defines model for UiPrefs. type UiPrefs struct { - Ambient *bool `json:"ambient,omitempty"` - CrossfadeS *int `json:"crossfade_s,omitempty"` + Ambient *bool `json:"ambient,omitempty"` + CrossfadeS *int `json:"crossfade_s,omitempty"` + + // HomeActivities Показывать на главной веба выбор занятия (по умолчанию true) + HomeActivities *bool `json:"home_activities,omitempty"` + + // HomeMoods Показывать на главной веба выбор настроения (по умолчанию true) + HomeMoods *bool `json:"home_moods,omitempty"` MobilePlayer *UiPrefsMobilePlayer `json:"mobile_player,omitempty"` Normalize *bool `json:"normalize,omitempty"` + // SearchCollapse Сворачивать поиск в кнопку с лупой без фокуса (по умолчанию true) + SearchCollapse *bool `json:"search_collapse,omitempty"` + // SearchPosition Где в топбаре веба поиск (по умолчанию center) SearchPosition *UiPrefsSearchPosition `json:"search_position,omitempty"` Theme *UiPrefsTheme `json:"theme,omitempty"` @@ -9223,251 +9232,253 @@ func (sh *strictHandler) GetReadyz(w http.ResponseWriter, r *http.Request) { // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/services/api/internal/auth/handler.go b/services/api/internal/auth/handler.go index 17b3d3b..80a5fa4 100644 --- a/services/api/internal/auth/handler.go +++ b/services/api/internal/auth/handler.go @@ -245,6 +245,9 @@ func uiPrefsDTO(p UIPrefs) gen.UiPrefs { WaveVariant: (*gen.UiPrefsWaveVariant)(p.WaveVariant), WebPlayer: (*gen.UiPrefsWebPlayer)(p.WebPlayer), SearchPosition: (*gen.UiPrefsSearchPosition)(p.SearchPos), + SearchCollapse: p.SearchFold, + HomeActivities: p.HomeActs, + HomeMoods: p.HomeMoods, MobilePlayer: (*gen.UiPrefsMobilePlayer)(p.MobilePlayer), Ambient: p.Ambient, CrossfadeS: p.CrossfadeS, @@ -258,6 +261,9 @@ func uiPrefsFromDTO(p gen.UiPrefs) UIPrefs { WaveVariant: (*string)(p.WaveVariant), WebPlayer: (*string)(p.WebPlayer), SearchPos: (*string)(p.SearchPosition), + SearchFold: p.SearchCollapse, + HomeActs: p.HomeActivities, + HomeMoods: p.HomeMoods, MobilePlayer: (*string)(p.MobilePlayer), Ambient: p.Ambient, CrossfadeS: p.CrossfadeS, diff --git a/services/api/internal/auth/model.go b/services/api/internal/auth/model.go index 4b73d17..c0d663c 100644 --- a/services/api/internal/auth/model.go +++ b/services/api/internal/auth/model.go @@ -38,6 +38,9 @@ type UIPrefs struct { WaveVariant *string `json:"wave_variant,omitempty"` WebPlayer *string `json:"web_player,omitempty"` SearchPos *string `json:"search_position,omitempty"` + SearchFold *bool `json:"search_collapse,omitempty"` + HomeActs *bool `json:"home_activities,omitempty"` + HomeMoods *bool `json:"home_moods,omitempty"` MobilePlayer *string `json:"mobile_player,omitempty"` Ambient *bool `json:"ambient,omitempty"` CrossfadeS *int `json:"crossfade_s,omitempty"` diff --git a/services/api/internal/auth/validate.go b/services/api/internal/auth/validate.go index 6916451..bbdc013 100644 --- a/services/api/internal/auth/validate.go +++ b/services/api/internal/auth/validate.go @@ -135,6 +135,15 @@ func MergeUIPrefs(base, patch UIPrefs) UIPrefs { if patch.SearchPos != nil { base.SearchPos = patch.SearchPos } + if patch.SearchFold != nil { + base.SearchFold = patch.SearchFold + } + if patch.HomeActs != nil { + base.HomeActs = patch.HomeActs + } + if patch.HomeMoods != nil { + base.HomeMoods = patch.HomeMoods + } if patch.MobilePlayer != nil { base.MobilePlayer = patch.MobilePlayer }