+
+ {mode === 'dm' ? 'Найдите человека или выберите из контактов' : 'Соберите группу и добавьте участников'}
+
+
{(['dm', 'group'] as const).map((value) => (
@@ -189,8 +178,8 @@ export default function NewChatDialog({
{mode === 'group' && (
-
-
+
+
@@ -201,13 +190,13 @@ export default function NewChatDialog({
onChange={(event) => setGroupName(event.target.value)}
placeholder="Название группы"
maxLength={80}
- className="w-full rounded-xl border border-line bg-surface/70 py-2.5 pr-3 pl-9 text-sm text-fg placeholder:text-faint focus:border-accent/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent/20"
+ className="retro-input w-full py-1.5 pr-2 pl-7 text-xs"
/>
)}
-
+
@@ -218,28 +207,28 @@ export default function NewChatDialog({
value={query}
onChange={(event) => setQuery(event.target.value)}
placeholder="Имя или @username"
- className="w-full rounded-xl border border-line bg-surface/70 py-2.5 pr-3 pl-9 text-sm text-fg placeholder:text-faint focus:border-accent/50 focus:outline-none focus-visible:ring-2 focus-visible:ring-accent/20"
+ className="retro-input w-full py-1.5 pr-2 pl-7 text-xs"
/>
- {error &&
{error}
}
+ {error &&
{error}
}
-
+
{(loadingContacts && trimmed.length === 0) || (searching && list.length === 0) ? (
-
+
{[0, 1, 2].map((row) => (
-
) : list.length === 0 ? (
-
+
{trimmed.length > 0 ? 'Пользователи не найдены' : 'Список контактов пуст'}
) : (
-
+
{list.map((user) => {
const isContact = contactIds.has(user.id)
const busy = busyId === user.id
@@ -247,8 +236,8 @@ export default function NewChatDialog({
return (
-
{mode === 'group' && (
@@ -257,19 +246,25 @@ export default function NewChatDialog({
onClick={() => toggleMember(user.id)}
aria-pressed={selected}
aria-label={selected ? 'Убрать из группы' : 'Добавить в группу'}
- className={`inline-flex h-5 w-5 shrink-0 items-center justify-center rounded-md border transition ${
- selected ? 'border-accent bg-accent text-white' : 'border-line bg-surface text-transparent'
+ className={`inline-flex h-4 w-4 shrink-0 items-center justify-center ${
+ selected ? 'bevel-in bg-accent text-white' : 'bevel-in bg-surface text-transparent'
}`}
>
-
{mode === 'group' && (
-
-
- Выбрано: {selectedIds.size}
+
+
+ Выбрано: {selectedIds.size}
diff --git a/web/src/components/SearchDialog.tsx b/web/src/components/SearchDialog.tsx
index 9176f36..a33b5c1 100644
--- a/web/src/components/SearchDialog.tsx
+++ b/web/src/components/SearchDialog.tsx
@@ -1,6 +1,6 @@
import { useEffect, useRef, useState } from 'react'
import Avatar, { GroupAvatar } from './Avatar'
-import { IconClose, IconSearch } from './icons'
+import { IconSearch } from './icons'
import { api } from '../lib/api'
import { formatListTime, peerForConversation, userTitle } from '../lib/format'
import type { Conversation, SearchHit, User } from '../lib/types'
@@ -102,34 +102,25 @@ export default function SearchDialog({
}
return (
-
+
-
-
-
- Поиск по сообщениям
-
-
Найдите текст в любом разговоре
-
-