mirror of
https://github.com/docmost/docmost.git
synced 2026-06-11 02:36:56 +08:00
Compare commits
24 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 76858a040b | |||
| 16c2ff145c | |||
| a75ac2b2bb | |||
| c5fdebd837 | |||
| a63559cace | |||
| 57366b2356 | |||
| 8bd7f5e305 | |||
| aa372a6bc5 | |||
| 13f8027592 | |||
| 2e3e14dca4 | |||
| 0fd9505df2 | |||
| 57a2ff5afb | |||
| 743eaddc21 | |||
| 042c3e2bac | |||
| 7ca9156481 | |||
| 75ae997b3d | |||
| df960f659e | |||
| d41e454e10 | |||
| a31009ae91 | |||
| 12c18be6d0 | |||
| bb15e9c5eb | |||
| 2f9cb9aced | |||
| b489ce41ea | |||
| c924fe0a2d |
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Namen stimmen nicht überein",
|
"Names do not match": "Namen stimmen nicht überein",
|
||||||
"Today, {{time}}": "Heute, {{time}}",
|
"Today, {{time}}": "Heute, {{time}}",
|
||||||
"Yesterday, {{time}}": "Gestern, {{time}}",
|
"Yesterday, {{time}}": "Gestern, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Bereich erfolgreich erstellt",
|
"Space created successfully": "Bereich erfolgreich erstellt",
|
||||||
"Space updated successfully": "Bereich erfolgreich aktualisiert",
|
"Space updated successfully": "Bereich erfolgreich aktualisiert",
|
||||||
"Space deleted successfully": "Bereich erfolgreich gelöscht",
|
"Space deleted successfully": "Bereich erfolgreich gelöscht",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Seiten und Bereiche suchen...",
|
"Search pages and spaces...": "Seiten und Bereiche suchen...",
|
||||||
"No results found": "Keine Ergebnisse gefunden",
|
"No results found": "Keine Ergebnisse gefunden",
|
||||||
"You don't have permission to create pages here": "Sie haben hier keine Berechtigung, Seiten zu erstellen",
|
"You don't have permission to create pages here": "Sie haben hier keine Berechtigung, Seiten zu erstellen",
|
||||||
"Chat menu": "Chatmenü",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "API-Schlüssel-Menü",
|
"API key menu": "API-Schlüssel-Menü",
|
||||||
"Jump to comment selection": "Zur Kommentarauswahl springen",
|
"Jump to comment selection": "Zur Kommentarauswahl springen",
|
||||||
"Slash commands": "Slash-Befehle",
|
"Slash commands": "Slash-Befehle",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Filter",
|
"Filter": "Filter",
|
||||||
"Page title": "Seitentitel",
|
"Page title": "Seitentitel",
|
||||||
"Page content": "Seiteninhalt",
|
"Page content": "Seiteninhalt",
|
||||||
"Member actions": "Mitgliederaktionen",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Passwortsichtbarkeit umschalten",
|
"Toggle password visibility": "Passwortsichtbarkeit umschalten",
|
||||||
"Send comment": "Kommentar senden",
|
"Send comment": "Kommentar senden",
|
||||||
"Token actions": "Token-Aktionen",
|
"Token actions": "Token-Aktionen",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Los nombres no coinciden",
|
"Names do not match": "Los nombres no coinciden",
|
||||||
"Today, {{time}}": "Hoy, {{time}}",
|
"Today, {{time}}": "Hoy, {{time}}",
|
||||||
"Yesterday, {{time}}": "Ayer, {{time}}",
|
"Yesterday, {{time}}": "Ayer, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Espacio creado correctamente",
|
"Space created successfully": "Espacio creado correctamente",
|
||||||
"Space updated successfully": "Espacio actualizado correctamente",
|
"Space updated successfully": "Espacio actualizado correctamente",
|
||||||
"Space deleted successfully": "Espacio eliminado correctamente",
|
"Space deleted successfully": "Espacio eliminado correctamente",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Buscar páginas y espacios...",
|
"Search pages and spaces...": "Buscar páginas y espacios...",
|
||||||
"No results found": "No se encontraron resultados",
|
"No results found": "No se encontraron resultados",
|
||||||
"You don't have permission to create pages here": "No tienes permiso para crear páginas aquí",
|
"You don't have permission to create pages here": "No tienes permiso para crear páginas aquí",
|
||||||
"Chat menu": "Menú del chat",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "Menú de la clave API",
|
"API key menu": "Menú de la clave API",
|
||||||
"Jump to comment selection": "Ir a la selección de comentarios",
|
"Jump to comment selection": "Ir a la selección de comentarios",
|
||||||
"Slash commands": "Comandos de barra",
|
"Slash commands": "Comandos de barra",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Filtrar",
|
"Filter": "Filtrar",
|
||||||
"Page title": "Título de la página",
|
"Page title": "Título de la página",
|
||||||
"Page content": "Contenido de la página",
|
"Page content": "Contenido de la página",
|
||||||
"Member actions": "Acciones de miembro",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Alternar visibilidad de la contraseña",
|
"Toggle password visibility": "Alternar visibilidad de la contraseña",
|
||||||
"Send comment": "Enviar comentario",
|
"Send comment": "Enviar comentario",
|
||||||
"Token actions": "Acciones de token",
|
"Token actions": "Acciones de token",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Les noms ne correspondent pas",
|
"Names do not match": "Les noms ne correspondent pas",
|
||||||
"Today, {{time}}": "Aujourd’hui, {{time}}",
|
"Today, {{time}}": "Aujourd’hui, {{time}}",
|
||||||
"Yesterday, {{time}}": "Hier, {{time}}",
|
"Yesterday, {{time}}": "Hier, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Espace créé avec succès",
|
"Space created successfully": "Espace créé avec succès",
|
||||||
"Space updated successfully": "Espace mis à jour avec succès",
|
"Space updated successfully": "Espace mis à jour avec succès",
|
||||||
"Space deleted successfully": "Espace supprimé avec succès",
|
"Space deleted successfully": "Espace supprimé avec succès",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Rechercher des pages et des espaces...",
|
"Search pages and spaces...": "Rechercher des pages et des espaces...",
|
||||||
"No results found": "Aucun résultat trouvé",
|
"No results found": "Aucun résultat trouvé",
|
||||||
"You don't have permission to create pages here": "Vous n’avez pas l’autorisation de créer des pages ici",
|
"You don't have permission to create pages here": "Vous n’avez pas l’autorisation de créer des pages ici",
|
||||||
"Chat menu": "Menu du chat",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "Menu de la clé API",
|
"API key menu": "Menu de la clé API",
|
||||||
"Jump to comment selection": "Aller à la sélection de commentaires",
|
"Jump to comment selection": "Aller à la sélection de commentaires",
|
||||||
"Slash commands": "Commandes slash",
|
"Slash commands": "Commandes slash",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Filtrer",
|
"Filter": "Filtrer",
|
||||||
"Page title": "Titre de la page",
|
"Page title": "Titre de la page",
|
||||||
"Page content": "Contenu de la page",
|
"Page content": "Contenu de la page",
|
||||||
"Member actions": "Actions des membres",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Afficher/masquer le mot de passe",
|
"Toggle password visibility": "Afficher/masquer le mot de passe",
|
||||||
"Send comment": "Envoyer le commentaire",
|
"Send comment": "Envoyer le commentaire",
|
||||||
"Token actions": "Actions du jeton",
|
"Token actions": "Actions du jeton",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "I nomi non corrispondono",
|
"Names do not match": "I nomi non corrispondono",
|
||||||
"Today, {{time}}": "Oggi, {{time}}",
|
"Today, {{time}}": "Oggi, {{time}}",
|
||||||
"Yesterday, {{time}}": "Ieri, {{time}}",
|
"Yesterday, {{time}}": "Ieri, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Spazio creato con successo",
|
"Space created successfully": "Spazio creato con successo",
|
||||||
"Space updated successfully": "Spazio aggiornato con successo",
|
"Space updated successfully": "Spazio aggiornato con successo",
|
||||||
"Space deleted successfully": "Spazio eliminato con successo",
|
"Space deleted successfully": "Spazio eliminato con successo",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Cerca pagine e spazi...",
|
"Search pages and spaces...": "Cerca pagine e spazi...",
|
||||||
"No results found": "Nessun risultato trovato",
|
"No results found": "Nessun risultato trovato",
|
||||||
"You don't have permission to create pages here": "Non hai l'autorizzazione per creare pagine qui",
|
"You don't have permission to create pages here": "Non hai l'autorizzazione per creare pagine qui",
|
||||||
"Chat menu": "Menu della chat",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "Menu della chiave API",
|
"API key menu": "Menu della chiave API",
|
||||||
"Jump to comment selection": "Vai alla selezione dei commenti",
|
"Jump to comment selection": "Vai alla selezione dei commenti",
|
||||||
"Slash commands": "Comandi slash",
|
"Slash commands": "Comandi slash",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Filtro",
|
"Filter": "Filtro",
|
||||||
"Page title": "Titolo pagina",
|
"Page title": "Titolo pagina",
|
||||||
"Page content": "Contenuto della pagina",
|
"Page content": "Contenuto della pagina",
|
||||||
"Member actions": "Azioni membro",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Attiva/disattiva visibilità password",
|
"Toggle password visibility": "Attiva/disattiva visibilità password",
|
||||||
"Send comment": "Invia commento",
|
"Send comment": "Invia commento",
|
||||||
"Token actions": "Azioni token",
|
"Token actions": "Azioni token",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "名前が一致しません",
|
"Names do not match": "名前が一致しません",
|
||||||
"Today, {{time}}": "今日 {{time}}",
|
"Today, {{time}}": "今日 {{time}}",
|
||||||
"Yesterday, {{time}}": "昨日 {{time}}",
|
"Yesterday, {{time}}": "昨日 {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "スペースが正常に作成されました",
|
"Space created successfully": "スペースが正常に作成されました",
|
||||||
"Space updated successfully": "スペースが正常に更新されました",
|
"Space updated successfully": "スペースが正常に更新されました",
|
||||||
"Space deleted successfully": "スペースが正常に削除されました",
|
"Space deleted successfully": "スペースが正常に削除されました",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "ページとスペースを検索…",
|
"Search pages and spaces...": "ページとスペースを検索…",
|
||||||
"No results found": "結果が見つかりません",
|
"No results found": "結果が見つかりません",
|
||||||
"You don't have permission to create pages here": "ここにページを作成する権限がありません",
|
"You don't have permission to create pages here": "ここにページを作成する権限がありません",
|
||||||
"Chat menu": "チャットメニュー",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "API キーメニュー",
|
"API key menu": "API キーメニュー",
|
||||||
"Jump to comment selection": "コメント選択に移動",
|
"Jump to comment selection": "コメント選択に移動",
|
||||||
"Slash commands": "スラッシュコマンド",
|
"Slash commands": "スラッシュコマンド",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "フィルター",
|
"Filter": "フィルター",
|
||||||
"Page title": "ページタイトル",
|
"Page title": "ページタイトル",
|
||||||
"Page content": "ページ内容",
|
"Page content": "ページ内容",
|
||||||
"Member actions": "メンバーの操作",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "パスワードの表示を切り替え",
|
"Toggle password visibility": "パスワードの表示を切り替え",
|
||||||
"Send comment": "コメントを送信",
|
"Send comment": "コメントを送信",
|
||||||
"Token actions": "トークンの操作",
|
"Token actions": "トークンの操作",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "이름이 일치하지 않습니다",
|
"Names do not match": "이름이 일치하지 않습니다",
|
||||||
"Today, {{time}}": "오늘, {{time}}",
|
"Today, {{time}}": "오늘, {{time}}",
|
||||||
"Yesterday, {{time}}": "어제, {{time}}",
|
"Yesterday, {{time}}": "어제, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "스페이스가 성공적으로 생성되었습니다",
|
"Space created successfully": "스페이스가 성공적으로 생성되었습니다",
|
||||||
"Space updated successfully": "스페이스가 성공적으로 업데이트되었습니다",
|
"Space updated successfully": "스페이스가 성공적으로 업데이트되었습니다",
|
||||||
"Space deleted successfully": "스페이스가 성공적으로 삭제되었습니다",
|
"Space deleted successfully": "스페이스가 성공적으로 삭제되었습니다",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "페이지와 스페이스 검색...",
|
"Search pages and spaces...": "페이지와 스페이스 검색...",
|
||||||
"No results found": "결과를 찾을 수 없습니다",
|
"No results found": "결과를 찾을 수 없습니다",
|
||||||
"You don't have permission to create pages here": "여기에서 페이지를 만들 권한이 없습니다",
|
"You don't have permission to create pages here": "여기에서 페이지를 만들 권한이 없습니다",
|
||||||
"Chat menu": "채팅 메뉴",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "API 키 메뉴",
|
"API key menu": "API 키 메뉴",
|
||||||
"Jump to comment selection": "댓글 선택으로 이동",
|
"Jump to comment selection": "댓글 선택으로 이동",
|
||||||
"Slash commands": "슬래시 명령어",
|
"Slash commands": "슬래시 명령어",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "필터",
|
"Filter": "필터",
|
||||||
"Page title": "페이지 제목",
|
"Page title": "페이지 제목",
|
||||||
"Page content": "페이지 내용",
|
"Page content": "페이지 내용",
|
||||||
"Member actions": "멤버 작업",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "비밀번호 표시 전환",
|
"Toggle password visibility": "비밀번호 표시 전환",
|
||||||
"Send comment": "댓글 보내기",
|
"Send comment": "댓글 보내기",
|
||||||
"Token actions": "토큰 작업",
|
"Token actions": "토큰 작업",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Namen komen niet overeen",
|
"Names do not match": "Namen komen niet overeen",
|
||||||
"Today, {{time}}": "Vandaag, {{time}}",
|
"Today, {{time}}": "Vandaag, {{time}}",
|
||||||
"Yesterday, {{time}}": "Gisteren, {{time}}",
|
"Yesterday, {{time}}": "Gisteren, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Ruimte succesvol aangemaakt",
|
"Space created successfully": "Ruimte succesvol aangemaakt",
|
||||||
"Space updated successfully": "Ruimte succesvol bijgewerkt",
|
"Space updated successfully": "Ruimte succesvol bijgewerkt",
|
||||||
"Space deleted successfully": "Ruimte succesvol verwijderd",
|
"Space deleted successfully": "Ruimte succesvol verwijderd",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Pagina's en werkruimtes zoeken...",
|
"Search pages and spaces...": "Pagina's en werkruimtes zoeken...",
|
||||||
"No results found": "Geen resultaten gevonden",
|
"No results found": "Geen resultaten gevonden",
|
||||||
"You don't have permission to create pages here": "Je hebt geen toestemming om hier pagina's te maken",
|
"You don't have permission to create pages here": "Je hebt geen toestemming om hier pagina's te maken",
|
||||||
"Chat menu": "Chatmenu",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "API-sleutelmenu",
|
"API key menu": "API-sleutelmenu",
|
||||||
"Jump to comment selection": "Naar reactieselectie springen",
|
"Jump to comment selection": "Naar reactieselectie springen",
|
||||||
"Slash commands": "Slash-opdrachten",
|
"Slash commands": "Slash-opdrachten",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Filter",
|
"Filter": "Filter",
|
||||||
"Page title": "Paginatitel",
|
"Page title": "Paginatitel",
|
||||||
"Page content": "Pagina-inhoud",
|
"Page content": "Pagina-inhoud",
|
||||||
"Member actions": "Lidacties",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Wachtwoordzichtbaarheid in-/uitschakelen",
|
"Toggle password visibility": "Wachtwoordzichtbaarheid in-/uitschakelen",
|
||||||
"Send comment": "Reactie verzenden",
|
"Send comment": "Reactie verzenden",
|
||||||
"Token actions": "Tokenacties",
|
"Token actions": "Tokenacties",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Os nomes não correspondem",
|
"Names do not match": "Os nomes não correspondem",
|
||||||
"Today, {{time}}": "Hoje, {{time}}",
|
"Today, {{time}}": "Hoje, {{time}}",
|
||||||
"Yesterday, {{time}}": "Ontem, {{time}}",
|
"Yesterday, {{time}}": "Ontem, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Espaço criado com sucesso",
|
"Space created successfully": "Espaço criado com sucesso",
|
||||||
"Space updated successfully": "Espaço atualizado com sucesso",
|
"Space updated successfully": "Espaço atualizado com sucesso",
|
||||||
"Space deleted successfully": "Espaço excluído com sucesso",
|
"Space deleted successfully": "Espaço excluído com sucesso",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Pesquisar páginas e espaços...",
|
"Search pages and spaces...": "Pesquisar páginas e espaços...",
|
||||||
"No results found": "Nenhum resultado encontrado",
|
"No results found": "Nenhum resultado encontrado",
|
||||||
"You don't have permission to create pages here": "Você não tem permissão para criar páginas aqui",
|
"You don't have permission to create pages here": "Você não tem permissão para criar páginas aqui",
|
||||||
"Chat menu": "Menu do chat",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "Menu da chave de API",
|
"API key menu": "Menu da chave de API",
|
||||||
"Jump to comment selection": "Ir para a seleção de comentários",
|
"Jump to comment selection": "Ir para a seleção de comentários",
|
||||||
"Slash commands": "Comandos de barra",
|
"Slash commands": "Comandos de barra",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Filtrar",
|
"Filter": "Filtrar",
|
||||||
"Page title": "Título da página",
|
"Page title": "Título da página",
|
||||||
"Page content": "Conteúdo da página",
|
"Page content": "Conteúdo da página",
|
||||||
"Member actions": "Ações do membro",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Alternar visibilidade da senha",
|
"Toggle password visibility": "Alternar visibilidade da senha",
|
||||||
"Send comment": "Enviar comentário",
|
"Send comment": "Enviar comentário",
|
||||||
"Token actions": "Ações do token",
|
"Token actions": "Ações do token",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Названия не совпадают",
|
"Names do not match": "Названия не совпадают",
|
||||||
"Today, {{time}}": "Сегодня, {{time}}",
|
"Today, {{time}}": "Сегодня, {{time}}",
|
||||||
"Yesterday, {{time}}": "Вчера, {{time}}",
|
"Yesterday, {{time}}": "Вчера, {{time}}",
|
||||||
|
"now": "сейчас",
|
||||||
"Space created successfully": "Пространство успешно создано",
|
"Space created successfully": "Пространство успешно создано",
|
||||||
"Space updated successfully": "Пространство успешно обновлено",
|
"Space updated successfully": "Пространство успешно обновлено",
|
||||||
"Space deleted successfully": "Пространство успешно удалено",
|
"Space deleted successfully": "Пространство успешно удалено",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Поиск страниц и пространств...",
|
"Search pages and spaces...": "Поиск страниц и пространств...",
|
||||||
"No results found": "Результаты не найдены",
|
"No results found": "Результаты не найдены",
|
||||||
"You don't have permission to create pages here": "У вас нет прав на создание страниц здесь",
|
"You don't have permission to create pages here": "У вас нет прав на создание страниц здесь",
|
||||||
"Chat menu": "Меню чата",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "Меню API-ключа",
|
"API key menu": "Меню API-ключа",
|
||||||
"Jump to comment selection": "Перейти к выбору комментария",
|
"Jump to comment selection": "Перейти к выбору комментария",
|
||||||
"Slash commands": "Команды со слешем",
|
"Slash commands": "Команды со слешем",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Фильтр",
|
"Filter": "Фильтр",
|
||||||
"Page title": "Заголовок страницы",
|
"Page title": "Заголовок страницы",
|
||||||
"Page content": "Содержимое страницы",
|
"Page content": "Содержимое страницы",
|
||||||
"Member actions": "Действия с участником",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Переключить видимость пароля",
|
"Toggle password visibility": "Переключить видимость пароля",
|
||||||
"Send comment": "Отправить комментарий",
|
"Send comment": "Отправить комментарий",
|
||||||
"Token actions": "Действия с токеном",
|
"Token actions": "Действия с токеном",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "Назви не збігаються",
|
"Names do not match": "Назви не збігаються",
|
||||||
"Today, {{time}}": "Сьогодні, {{time}}",
|
"Today, {{time}}": "Сьогодні, {{time}}",
|
||||||
"Yesterday, {{time}}": "Вчора, {{time}}",
|
"Yesterday, {{time}}": "Вчора, {{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "Простір успішно створено",
|
"Space created successfully": "Простір успішно створено",
|
||||||
"Space updated successfully": "Простір успішно оновлено",
|
"Space updated successfully": "Простір успішно оновлено",
|
||||||
"Space deleted successfully": "Простір успішно видалено",
|
"Space deleted successfully": "Простір успішно видалено",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "Шукати сторінки та простори...",
|
"Search pages and spaces...": "Шукати сторінки та простори...",
|
||||||
"No results found": "Результати не знайдено",
|
"No results found": "Результати не знайдено",
|
||||||
"You don't have permission to create pages here": "У вас немає дозволу на створення сторінок тут",
|
"You don't have permission to create pages here": "У вас немає дозволу на створення сторінок тут",
|
||||||
"Chat menu": "Меню чату",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "Меню ключа API",
|
"API key menu": "Меню ключа API",
|
||||||
"Jump to comment selection": "Перейти до вибору коментаря",
|
"Jump to comment selection": "Перейти до вибору коментаря",
|
||||||
"Slash commands": "Слеш-команди",
|
"Slash commands": "Слеш-команди",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "Фільтр",
|
"Filter": "Фільтр",
|
||||||
"Page title": "Назва сторінки",
|
"Page title": "Назва сторінки",
|
||||||
"Page content": "Вміст сторінки",
|
"Page content": "Вміст сторінки",
|
||||||
"Member actions": "Дії з учасником",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "Перемкнути видимість пароля",
|
"Toggle password visibility": "Перемкнути видимість пароля",
|
||||||
"Send comment": "Надіслати коментар",
|
"Send comment": "Надіслати коментар",
|
||||||
"Token actions": "Дії з токеном",
|
"Token actions": "Дії з токеном",
|
||||||
|
|||||||
@@ -424,6 +424,7 @@
|
|||||||
"Names do not match": "名称不匹配",
|
"Names do not match": "名称不匹配",
|
||||||
"Today, {{time}}": "今天,{{time}}",
|
"Today, {{time}}": "今天,{{time}}",
|
||||||
"Yesterday, {{time}}": "昨天,{{time}}",
|
"Yesterday, {{time}}": "昨天,{{time}}",
|
||||||
|
"now": "now",
|
||||||
"Space created successfully": "空间创建成功",
|
"Space created successfully": "空间创建成功",
|
||||||
"Space updated successfully": "空间更新成功",
|
"Space updated successfully": "空间更新成功",
|
||||||
"Space deleted successfully": "空间删除成功",
|
"Space deleted successfully": "空间删除成功",
|
||||||
@@ -977,7 +978,7 @@
|
|||||||
"Search pages and spaces...": "搜索页面和空间……",
|
"Search pages and spaces...": "搜索页面和空间……",
|
||||||
"No results found": "未找到结果",
|
"No results found": "未找到结果",
|
||||||
"You don't have permission to create pages here": "你无权在此处创建页面",
|
"You don't have permission to create pages here": "你无权在此处创建页面",
|
||||||
"Chat menu": "聊天菜单",
|
"Chat menu for {{title}}": "Chat menu for {{title}}",
|
||||||
"API key menu": "API 密钥菜单",
|
"API key menu": "API 密钥菜单",
|
||||||
"Jump to comment selection": "跳转到评论选择",
|
"Jump to comment selection": "跳转到评论选择",
|
||||||
"Slash commands": "斜杠命令",
|
"Slash commands": "斜杠命令",
|
||||||
@@ -1063,7 +1064,7 @@
|
|||||||
"Filter": "筛选",
|
"Filter": "筛选",
|
||||||
"Page title": "页面标题",
|
"Page title": "页面标题",
|
||||||
"Page content": "页面内容",
|
"Page content": "页面内容",
|
||||||
"Member actions": "成员操作",
|
"Member actions for {{name}}": "Member actions for {{name}}",
|
||||||
"Toggle password visibility": "切换密码可见性",
|
"Toggle password visibility": "切换密码可见性",
|
||||||
"Send comment": "发送评论",
|
"Send comment": "发送评论",
|
||||||
"Token actions": "令牌操作",
|
"Token actions": "令牌操作",
|
||||||
|
|||||||
@@ -105,7 +105,7 @@ export default function GlobalSidebar() {
|
|||||||
|
|
||||||
<Divider my="xs" />
|
<Divider my="xs" />
|
||||||
<div className={classes.section}>
|
<div className={classes.section}>
|
||||||
<Text component="h2" className={classes.sectionHeader}>{t("Favorite spaces")}</Text>
|
<Text className={classes.sectionHeader}>{t("Favorite spaces")}</Text>
|
||||||
{!isFavoritesPending && sortedFavoriteSpaces.length === 0 ? (
|
{!isFavoritesPending && sortedFavoriteSpaces.length === 0 ? (
|
||||||
<Text size="xs" c="dimmed" pl="xs" py={4}>
|
<Text size="xs" c="dimmed" pl="xs" py={4}>
|
||||||
{t("Favorite spaces appear here")}
|
{t("Favorite spaces appear here")}
|
||||||
|
|||||||
@@ -16,10 +16,13 @@ interface CustomAvatarProps {
|
|||||||
mt?: string | number;
|
mt?: string | number;
|
||||||
}
|
}
|
||||||
|
|
||||||
// color.shade picks whose FILLED variant (white text on the shade) meets WCAG AA 4.5:1.
|
// `color.shade` pairs whose contrast meets WCAG AA (4.5:1) in BOTH variants:
|
||||||
// Avoids lime/yellow/green/orange, too light even at dark shades.
|
// - filled: white text on the shade as bg
|
||||||
// For non-filled variants, initials text is forced to the .9 shade at render time:
|
// - light: shade as text on the color's light-bg (10% color.6 over white)
|
||||||
// Mantine otherwise caps light-variant placeholder text at .6, dropping contrast to ~3:1.
|
// Avoids lime/yellow/green/orange — even their dark shades have weak
|
||||||
|
// contrast. grape and indigo were bumped from .7 to darker shades because
|
||||||
|
// the original picks failed: grape.7 was 4.02/3.61 (both fail) and
|
||||||
|
// indigo.7 was 4.98/4.39 (light fails by a hair).
|
||||||
const SAFE_INITIALS_COLORS: MantineColor[] = [
|
const SAFE_INITIALS_COLORS: MantineColor[] = [
|
||||||
"blue.8",
|
"blue.8",
|
||||||
"cyan.9",
|
"cyan.9",
|
||||||
@@ -51,21 +54,12 @@ function sanitizeInitialsSource(name: string) {
|
|||||||
export const CustomAvatar = React.forwardRef<
|
export const CustomAvatar = React.forwardRef<
|
||||||
HTMLInputElement,
|
HTMLInputElement,
|
||||||
CustomAvatarProps
|
CustomAvatarProps
|
||||||
>(({ avatarUrl, name, type, color, variant, ...props }: CustomAvatarProps, ref) => {
|
>(({ avatarUrl, name, type, color, ...props }: CustomAvatarProps, ref) => {
|
||||||
const avatarLink = getAvatarUrl(avatarUrl, type);
|
const avatarLink = getAvatarUrl(avatarUrl, type);
|
||||||
const isInitials = !color || color === "initials";
|
const resolvedColor =
|
||||||
const resolvedColor = isInitials ? pickInitialsColor(name ?? "") : color;
|
!color || color === "initials" ? pickInitialsColor(name ?? "") : color;
|
||||||
const initialsSource = sanitizeInitialsSource(name ?? "");
|
const initialsSource = sanitizeInitialsSource(name ?? "");
|
||||||
|
|
||||||
const placeholderStyles =
|
|
||||||
isInitials && variant !== "filled"
|
|
||||||
? {
|
|
||||||
placeholder: {
|
|
||||||
color: `var(--mantine-color-${resolvedColor.split(".")[0]}-9)`,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
: undefined;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Avatar
|
<Avatar
|
||||||
ref={ref}
|
ref={ref}
|
||||||
@@ -73,8 +67,6 @@ export const CustomAvatar = React.forwardRef<
|
|||||||
name={initialsSource}
|
name={initialsSource}
|
||||||
alt={name}
|
alt={name}
|
||||||
color={resolvedColor}
|
color={resolvedColor}
|
||||||
variant={variant}
|
|
||||||
styles={placeholderStyles}
|
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
import { UnstyledButton } from "@mantine/core";
|
|
||||||
import { type ComponentPropsWithoutRef, forwardRef } from "react";
|
|
||||||
|
|
||||||
// Menu.Item hard-codes role="menuitem"; use as its `component` to restore role="menuitemradio" so aria-checked works.
|
|
||||||
export const RadioMenuItem = forwardRef<
|
|
||||||
HTMLButtonElement,
|
|
||||||
ComponentPropsWithoutRef<"button">
|
|
||||||
>((props, ref) => (
|
|
||||||
<UnstyledButton ref={ref} {...props} role="menuitemradio" />
|
|
||||||
));
|
|
||||||
|
|
||||||
RadioMenuItem.displayName = "RadioMenuItem";
|
|
||||||
@@ -66,8 +66,6 @@ export default function AiChatSidebarItem({
|
|||||||
[chat.updatedAt, i18n.language],
|
[chat.updatedAt, i18n.language],
|
||||||
);
|
);
|
||||||
|
|
||||||
const chatTitle = chat.title || t("Untitled chat");
|
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (renaming) {
|
if (renaming) {
|
||||||
// Wait for the input to be mounted before selecting.
|
// Wait for the input to be mounted before selecting.
|
||||||
@@ -122,7 +120,9 @@ export default function AiChatSidebarItem({
|
|||||||
className={classes.chatItem}
|
className={classes.chatItem}
|
||||||
data-active={isActive || undefined}
|
data-active={isActive || undefined}
|
||||||
>
|
>
|
||||||
<span className={classes.chatItemTitle}>{chatTitle}</span>
|
<span className={classes.chatItemTitle}>
|
||||||
|
{chat.title || t("Untitled chat")}
|
||||||
|
</span>
|
||||||
<span className={classes.chatItemDate}>{formattedDate}</span>
|
<span className={classes.chatItemDate}>{formattedDate}</span>
|
||||||
<div className={classes.chatItemActions}>
|
<div className={classes.chatItemActions}>
|
||||||
<Menu position="bottom-end" withinPortal>
|
<Menu position="bottom-end" withinPortal>
|
||||||
@@ -132,7 +132,7 @@ export default function AiChatSidebarItem({
|
|||||||
size="xs"
|
size="xs"
|
||||||
color="gray"
|
color="gray"
|
||||||
onClick={(e) => e.preventDefault()}
|
onClick={(e) => e.preventDefault()}
|
||||||
aria-label={t("Chat menu for {{title}}", { title: chatTitle })}
|
aria-label={t("Chat menu")}
|
||||||
>
|
>
|
||||||
<IconDots size={14} />
|
<IconDots size={14} />
|
||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useCallback, useId, useRef, useEffect, useState } from "react";
|
import { useCallback, useRef, useEffect, useState } from "react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { IconArrowUp, IconPaperclip, IconPlayerStopFilled, IconX, IconFile, IconPhoto, IconPlus, IconAt, IconFileText } from "@tabler/icons-react";
|
import { IconArrowUp, IconPaperclip, IconPlayerStopFilled, IconX, IconFile, IconPhoto, IconPlus, IconAt, IconFileText } from "@tabler/icons-react";
|
||||||
import { Popover } from "@mantine/core";
|
import { Popover } from "@mantine/core";
|
||||||
@@ -107,7 +107,6 @@ export default function ChatInput({
|
|||||||
const [isEmpty, setIsEmpty] = useState(true);
|
const [isEmpty, setIsEmpty] = useState(true);
|
||||||
const [pendingAttachments, setPendingAttachments] = useState<PendingAttachment[]>([]);
|
const [pendingAttachments, setPendingAttachments] = useState<PendingAttachment[]>([]);
|
||||||
const [plusMenuOpen, setPlusMenuOpen] = useState(false);
|
const [plusMenuOpen, setPlusMenuOpen] = useState(false);
|
||||||
const plusMenuId = useId();
|
|
||||||
const fileInputRef = useRef<HTMLInputElement>(null);
|
const fileInputRef = useRef<HTMLInputElement>(null);
|
||||||
const onSendRef = useRef(onSend);
|
const onSendRef = useRef(onSend);
|
||||||
onSendRef.current = onSend;
|
onSendRef.current = onSend;
|
||||||
@@ -343,7 +342,6 @@ export default function ChatInput({
|
|||||||
position="top-start"
|
position="top-start"
|
||||||
width={220}
|
width={220}
|
||||||
shadow="md"
|
shadow="md"
|
||||||
withRoles={false}
|
|
||||||
trapFocus
|
trapFocus
|
||||||
returnFocus
|
returnFocus
|
||||||
>
|
>
|
||||||
@@ -353,17 +351,13 @@ export default function ChatInput({
|
|||||||
className={classes.plusButton}
|
className={classes.plusButton}
|
||||||
onClick={() => setPlusMenuOpen((o) => !o)}
|
onClick={() => setPlusMenuOpen((o) => !o)}
|
||||||
aria-label="Add content"
|
aria-label="Add content"
|
||||||
aria-haspopup="menu"
|
|
||||||
aria-expanded={plusMenuOpen}
|
|
||||||
aria-controls={plusMenuOpen ? plusMenuId : undefined}
|
|
||||||
>
|
>
|
||||||
<IconPlus size={14} />
|
<IconPlus size={14} />
|
||||||
</button>
|
</button>
|
||||||
</Popover.Target>
|
</Popover.Target>
|
||||||
<Popover.Dropdown id={plusMenuId} role="menu" p={4}>
|
<Popover.Dropdown p={4}>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
role="menuitem"
|
|
||||||
className={classes.plusMenuItem}
|
className={classes.plusMenuItem}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
fileInputRef.current?.click();
|
fileInputRef.current?.click();
|
||||||
@@ -383,7 +377,6 @@ export default function ChatInput({
|
|||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
role="menuitem"
|
|
||||||
className={classes.plusMenuItem}
|
className={classes.plusMenuItem}
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
editor?.commands.insertContent("@");
|
editor?.commands.insertContent("@");
|
||||||
@@ -392,7 +385,7 @@ export default function ChatInput({
|
|||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<IconAt size={16} className={classes.plusMenuIcon} />
|
<IconAt size={16} className={classes.plusMenuIcon} />
|
||||||
{t("Mention a page")}
|
Mention a page
|
||||||
</button>
|
</button>
|
||||||
</Popover.Dropdown>
|
</Popover.Dropdown>
|
||||||
</Popover>
|
</Popover>
|
||||||
|
|||||||
@@ -76,6 +76,7 @@
|
|||||||
padding: var(--mantine-spacing-xs) var(--mantine-spacing-lg) var(--mantine-spacing-lg);
|
padding: var(--mantine-spacing-xs) var(--mantine-spacing-lg) var(--mantine-spacing-lg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Empty state - Notion AI style centered layout */
|
||||||
.emptyState {
|
.emptyState {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|||||||
@@ -204,6 +204,10 @@
|
|||||||
opacity: 1;
|
opacity: 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.ProseMirror table th:has(.tableReadonlySortChevron) {
|
||||||
|
padding-right: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
.tableReadonlySortChevron:hover {
|
.tableReadonlySortChevron:hover {
|
||||||
background: light-dark(
|
background: light-dark(
|
||||||
rgba(55, 53, 47, 0.16),
|
rgba(55, 53, 47, 0.16),
|
||||||
|
|||||||
@@ -91,9 +91,7 @@ export default function GroupMembersList() {
|
|||||||
<ActionIcon
|
<ActionIcon
|
||||||
variant="subtle"
|
variant="subtle"
|
||||||
c="gray"
|
c="gray"
|
||||||
aria-label={t("Member actions for {{name}}", {
|
aria-label={t("Member actions")}
|
||||||
name: user.name,
|
|
||||||
})}
|
|
||||||
>
|
>
|
||||||
<IconDots size={20} stroke={2} />
|
<IconDots size={20} stroke={2} />
|
||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { useId, useState } from "react";
|
import { useState } from "react";
|
||||||
import {
|
import {
|
||||||
ActionIcon,
|
ActionIcon,
|
||||||
Group,
|
Group,
|
||||||
@@ -31,7 +31,6 @@ import classes from "../notification.module.css";
|
|||||||
|
|
||||||
export function NotificationPopover() {
|
export function NotificationPopover() {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const titleId = useId();
|
|
||||||
const [opened, setOpened] = useState(false);
|
const [opened, setOpened] = useState(false);
|
||||||
const [tab, setTab] = useState<NotificationTab>("direct");
|
const [tab, setTab] = useState<NotificationTab>("direct");
|
||||||
const [filter, setFilter] = useState<NotificationFilter>("all");
|
const [filter, setFilter] = useState<NotificationFilter>("all");
|
||||||
@@ -84,11 +83,10 @@ export function NotificationPopover() {
|
|||||||
|
|
||||||
<Popover.Dropdown
|
<Popover.Dropdown
|
||||||
p={0}
|
p={0}
|
||||||
aria-labelledby={titleId}
|
|
||||||
style={{ width: "min(420px, calc(100vw - 24px))" }}
|
style={{ width: "min(420px, calc(100vw - 24px))" }}
|
||||||
>
|
>
|
||||||
<Group justify="space-between" px="md" py="sm">
|
<Group justify="space-between" px="md" py="sm">
|
||||||
<Title id={titleId} order={2} fz="sm" fw={600}>
|
<Title order={2} fz="sm" fw={600}>
|
||||||
{t("Notifications")}
|
{t("Notifications")}
|
||||||
</Title>
|
</Title>
|
||||||
<Group gap={4}>
|
<Group gap={4}>
|
||||||
|
|||||||
@@ -34,7 +34,6 @@ import { treeDataAtom } from "@/features/page/tree/atoms/tree-data-atom.ts";
|
|||||||
import { treeModel } from "@/features/page/tree/model/tree-model";
|
import { treeModel } from "@/features/page/tree/model/tree-model";
|
||||||
import { useTreeMutation } from "@/features/page/tree/hooks/use-tree-mutation.ts";
|
import { useTreeMutation } from "@/features/page/tree/hooks/use-tree-mutation.ts";
|
||||||
import type { SpaceTreeNode } from "@/features/page/tree/types.ts";
|
import type { SpaceTreeNode } from "@/features/page/tree/types.ts";
|
||||||
import classes from "@/features/page/tree/styles/tree.module.css";
|
|
||||||
|
|
||||||
export interface NodeMenuProps {
|
export interface NodeMenuProps {
|
||||||
node: SpaceTreeNode;
|
node: SpaceTreeNode;
|
||||||
@@ -124,9 +123,8 @@ export function NodeMenu({ node, canEdit }: NodeMenuProps) {
|
|||||||
<Menu shadow="md" width={200}>
|
<Menu shadow="md" width={200}>
|
||||||
<Menu.Target>
|
<Menu.Target>
|
||||||
<ActionIcon
|
<ActionIcon
|
||||||
variant="subtle"
|
variant="transparent"
|
||||||
color="gray"
|
c="gray"
|
||||||
className={classes.actionIcon}
|
|
||||||
aria-label={t("Page menu for {{name}}", { name: node.name || t("untitled") })}
|
aria-label={t("Page menu for {{name}}", { name: node.name || t("untitled") })}
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
|
|||||||
@@ -201,13 +201,13 @@ function PageArrow({ isOpen, hasChildren, onToggle }: PageArrowProps) {
|
|||||||
return (
|
return (
|
||||||
<span
|
<span
|
||||||
aria-hidden
|
aria-hidden
|
||||||
className={classes.actionIcon}
|
|
||||||
style={{
|
style={{
|
||||||
width: 20,
|
width: 20,
|
||||||
height: 20,
|
height: 20,
|
||||||
display: "inline-flex",
|
display: "inline-flex",
|
||||||
alignItems: "center",
|
alignItems: "center",
|
||||||
justifyContent: "center",
|
justifyContent: "center",
|
||||||
|
color: "var(--mantine-color-gray-6)",
|
||||||
flexShrink: 0,
|
flexShrink: 0,
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@@ -220,8 +220,7 @@ function PageArrow({ isOpen, hasChildren, onToggle }: PageArrowProps) {
|
|||||||
<ActionIcon
|
<ActionIcon
|
||||||
size={20}
|
size={20}
|
||||||
variant="subtle"
|
variant="subtle"
|
||||||
color="gray"
|
c="gray"
|
||||||
className={classes.actionIcon}
|
|
||||||
aria-label={isOpen ? t("Collapse") : t("Expand")}
|
aria-label={isOpen ? t("Collapse") : t("Expand")}
|
||||||
aria-expanded={isOpen}
|
aria-expanded={isOpen}
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
@@ -273,9 +272,8 @@ function CreateNode({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<ActionIcon
|
<ActionIcon
|
||||||
variant="subtle"
|
variant="transparent"
|
||||||
color="gray"
|
c="gray"
|
||||||
className={classes.actionIcon}
|
|
||||||
aria-label={t("Create subpage of {{name}}", { name: node.name || t("untitled") })}
|
aria-label={t("Create subpage of {{name}}", { name: node.name || t("untitled") })}
|
||||||
tabIndex={-1}
|
tabIndex={-1}
|
||||||
onClick={(e) => {
|
onClick={(e) => {
|
||||||
|
|||||||
@@ -57,10 +57,6 @@
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.actionIcon {
|
|
||||||
color: light-dark(var(--mantine-color-dark-3), var(--mantine-color-gray-4));
|
|
||||||
}
|
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
/* min-width: 0 lets a flex child shrink below its content size — required
|
/* min-width: 0 lets a flex child shrink below its content size — required
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import {
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useGetSpacesQuery } from "@/features/space/queries/space-query";
|
import { useGetSpacesQuery } from "@/features/space/queries/space-query";
|
||||||
import { SpaceFilterMenu } from "@/features/space/components/space-filter-menu";
|
import { SpaceFilterMenu } from "@/features/space/components/space-filter-menu";
|
||||||
import { RadioMenuItem } from "@/components/ui/radio-menu-item";
|
|
||||||
import { useHasFeature } from "@/ee/hooks/use-feature";
|
import { useHasFeature } from "@/ee/hooks/use-feature";
|
||||||
import { Feature } from "@/ee/features";
|
import { Feature } from "@/ee/features";
|
||||||
import classes from "./search-spotlight-filters.module.css";
|
import classes from "./search-spotlight-filters.module.css";
|
||||||
@@ -176,7 +175,7 @@ export function SearchSpotlightFilters({
|
|||||||
{contentTypeOptions.map((option) => (
|
{contentTypeOptions.map((option) => (
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
key={option.value}
|
key={option.value}
|
||||||
component={RadioMenuItem}
|
role="menuitemradio"
|
||||||
aria-checked={contentType === option.value}
|
aria-checked={contentType === option.value}
|
||||||
onClick={() =>
|
onClick={() =>
|
||||||
!option.disabled &&
|
!option.disabled &&
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import { useDebouncedValue } from "@mantine/hooks";
|
|||||||
import { IconCheck, IconSearch } from "@tabler/icons-react";
|
import { IconCheck, IconSearch } from "@tabler/icons-react";
|
||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import { useGetSpacesQuery } from "@/features/space/queries/space-query";
|
import { useGetSpacesQuery } from "@/features/space/queries/space-query";
|
||||||
import { RadioMenuItem } from "@/components/ui/radio-menu-item";
|
|
||||||
|
|
||||||
type SpaceFilterMenuProps = {
|
type SpaceFilterMenuProps = {
|
||||||
value: string | null;
|
value: string | null;
|
||||||
@@ -76,7 +75,7 @@ export function SpaceFilterMenu({
|
|||||||
|
|
||||||
<ScrollArea.Autosize mah={280}>
|
<ScrollArea.Autosize mah={280}>
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
component={RadioMenuItem}
|
role="menuitemradio"
|
||||||
aria-checked={!value}
|
aria-checked={!value}
|
||||||
onClick={() => onChange(null)}
|
onClick={() => onChange(null)}
|
||||||
>
|
>
|
||||||
@@ -104,7 +103,7 @@ export function SpaceFilterMenu({
|
|||||||
{orderedSpaces.map((space) => (
|
{orderedSpaces.map((space) => (
|
||||||
<Menu.Item
|
<Menu.Item
|
||||||
key={space.id}
|
key={space.id}
|
||||||
component={RadioMenuItem}
|
role="menuitemradio"
|
||||||
aria-checked={value === space.id}
|
aria-checked={value === space.id}
|
||||||
onClick={() => onChange(space.id)}
|
onClick={() => onChange(space.id)}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -210,9 +210,7 @@ export default function SpaceMembersList({
|
|||||||
<ActionIcon
|
<ActionIcon
|
||||||
variant="subtle"
|
variant="subtle"
|
||||||
c="gray"
|
c="gray"
|
||||||
aria-label={t("Member actions for {{name}}", {
|
aria-label={t("Member actions")}
|
||||||
name: member.name,
|
|
||||||
})}
|
|
||||||
>
|
>
|
||||||
<IconDots size={20} stroke={2} />
|
<IconDots size={20} stroke={2} />
|
||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
|
|||||||
+2
-7
@@ -12,14 +12,9 @@ import useUserRole from "@/hooks/use-user-role.tsx";
|
|||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
userId: string;
|
userId: string;
|
||||||
name: string;
|
|
||||||
deactivatedAt: Date | null;
|
deactivatedAt: Date | null;
|
||||||
}
|
}
|
||||||
export default function MemberActionMenu({
|
export default function MemberActionMenu({ userId, deactivatedAt }: Props) {
|
||||||
userId,
|
|
||||||
name,
|
|
||||||
deactivatedAt,
|
|
||||||
}: Props) {
|
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const deleteWorkspaceMemberMutation = useDeleteWorkspaceMemberMutation();
|
const deleteWorkspaceMemberMutation = useDeleteWorkspaceMemberMutation();
|
||||||
const deactivateMutation = useDeactivateWorkspaceMemberMutation();
|
const deactivateMutation = useDeactivateWorkspaceMemberMutation();
|
||||||
@@ -91,7 +86,7 @@ export default function MemberActionMenu({
|
|||||||
<ActionIcon
|
<ActionIcon
|
||||||
variant="subtle"
|
variant="subtle"
|
||||||
c="gray"
|
c="gray"
|
||||||
aria-label={t("Member actions for {{name}}", { name })}
|
aria-label={t("Member actions")}
|
||||||
>
|
>
|
||||||
<IconDots size={20} stroke={2} />
|
<IconDots size={20} stroke={2} />
|
||||||
</ActionIcon>
|
</ActionIcon>
|
||||||
|
|||||||
-1
@@ -111,7 +111,6 @@ export default function WorkspaceMembersTable() {
|
|||||||
{isAdmin && (
|
{isAdmin && (
|
||||||
<MemberActionMenu
|
<MemberActionMenu
|
||||||
userId={user.id}
|
userId={user.id}
|
||||||
name={user.name}
|
|
||||||
deactivatedAt={user.deactivatedAt}
|
deactivatedAt={user.deactivatedAt}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
|||||||
Reference in New Issue
Block a user