feat: add city avatar upload functionality and enhance city management features

This commit is contained in:
2026-09-17 19:54:09 +03:00
parent d13cc92d82
commit acec6b4fc0
11 changed files with 292 additions and 26 deletions

View File

@@ -31,7 +31,9 @@
.sidebar-account { @apply flex items-center justify-between gap-3 rounded-xl bg-white px-3 py-2 text-sm; min-height: 56px; }
.city-selector { position: relative; margin-top: 12px; }
.sidebar-city-card { @apply flex w-full items-center justify-between gap-3 rounded-xl bg-white px-3 py-2 text-sm transition-colors hover:bg-gray-50; min-height: 64px; }
.city-emblem { @apply flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary-50 text-lg; overflow: hidden; }
.city-emblem { @apply relative flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-primary-50 text-lg; overflow: hidden; }
.city-emblem > img { position: absolute; inset: 0; z-index: 1; width: 100%; height: 100%; object-fit: cover; }
.city-emblem-fallback { @apply flex h-full w-full items-center justify-center; }
.city-emblem.is-small { @apply h-8 w-8 text-base; }
.city-emblem.is-large { @apply h-14 w-14 rounded-xl text-3xl; }
.city-switcher { position: absolute; z-index: 50; top: calc(100% + 8px); left: 0; right: 0; min-width: 232px; padding: 8px; border-radius: 12px; background: #fff; box-shadow: 0 12px 32px #00000026, 0 2px 8px #0000000d; }
@@ -69,8 +71,18 @@
.city-form-grid { @apply grid gap-4 sm:grid-cols-2; }
.city-form-hint { @apply mt-1 block text-xs text-gray-500; }
.city-form-error { @apply rounded-lg bg-red-50 px-3 py-2 text-sm text-red-700; }
.city-form-notice { @apply rounded-lg bg-amber-50 px-3 py-2 text-sm text-amber-800; }
.city-avatar-field { @apply flex flex-col gap-3; }
.city-avatar-preview { @apply h-20 w-20 rounded-xl border border-gray-200 bg-gray-50 object-cover; }
.city-center-picker { @apply space-y-2 sm:col-span-2; }
.city-center-map { height: 320px; overflow: hidden; border: 1px solid #e5e7eb; border-radius: 12px; }
.city-center-coordinates { @apply text-sm text-gray-600; }
.city-center-coordinates strong { @apply text-gray-900; }
.city-avatar-editor { @apply ml-auto flex shrink-0 flex-col items-end gap-2; }
.city-avatar-editor .btn-secondary { @apply inline-flex items-center gap-2; }
.city-avatar-editor-error { @apply max-w-[200px] text-right text-xs text-red-700; }
.cities-grid { @apply grid gap-4 md:grid-cols-2; }
.city-network-card { @apply flex items-center gap-4; min-height: 104px; }
.city-network-card { @apply flex flex-wrap items-center gap-4; min-height: 104px; }
.city-network-card.is-active { border-color: #0958d9; box-shadow: inset 0 0 0 1px #0958d9; }
.city-network-card h2 { @apply text-lg font-semibold; }
.city-network-card p { @apply mt-1 text-sm text-gray-500; }