Skip to content

Commit 85356f9

Browse files
authored
feat: open sidebar popup for new users (danny-avila#1308)
1 parent c16312f commit 85356f9

File tree

14 files changed

+40
-47
lines changed

14 files changed

+40
-47
lines changed

client/src/components/Nav/Nav.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@ import {
66
} from 'librechat-data-provider';
77
import { useRecoilValue, useSetRecoilState } from 'recoil';
88
import { useCallback, useEffect, useRef, useState } from 'react';
9-
import { useAuthContext, useMediaQuery, useConversation, useConversations } from '~/hooks';
9+
import {
10+
useAuthContext,
11+
useMediaQuery,
12+
useConversation,
13+
useConversations,
14+
useLocalStorage,
15+
} from '~/hooks';
1016
import { TooltipProvider, Tooltip } from '~/components/ui';
1117
import { Conversations, Pages } from '../Conversations';
1218
import { Spinner } from '~/components';
@@ -25,6 +31,7 @@ export default function Nav({ navVisible, setNavVisible }) {
2531
const containerRef = useRef<HTMLDivElement | null>(null);
2632
const scrollPositionRef = useRef<number | null>(null);
2733
const isSmallScreen = useMediaQuery('(max-width: 768px)');
34+
const [newUser, setNewUser] = useLocalStorage('newUser', true);
2835

2936
useEffect(() => {
3037
if (isSmallScreen) {
@@ -142,6 +149,9 @@ export default function Nav({ navVisible, setNavVisible }) {
142149

143150
const toggleNavVisible = () => {
144151
setNavVisible((prev: boolean) => !prev);
152+
if (newUser) {
153+
setNewUser(false);
154+
}
145155
};
146156

147157
const itemToggleNav = () => {

client/src/components/Nav/NavToggle.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
import { TooltipTrigger, TooltipContent } from '~/components/ui';
2-
import { useLocalize } from '~/hooks';
2+
import { useLocalize, useLocalStorage } from '~/hooks';
33
import { cn } from '~/utils';
44

55
export default function NavToggle({ onToggle, navVisible, isHovering, setIsHovering }) {
66
const localize = useLocalize();
77
const transition = {
88
transition: 'transform 0.3s ease, opacity 0.2s ease',
99
};
10+
const [newUser, setNewUser] = useLocalStorage('newUser', true);
11+
1012
return (
1113
<div
1214
className={cn(
@@ -44,8 +46,8 @@ export default function NavToggle({ onToggle, navVisible, isHovering, setIsHover
4446
/>
4547
</div>
4648
</div>
47-
<TooltipContent side="right" sideOffset={4}>
48-
{navVisible ? localize('com_nav_close_menu') : localize('com_nav_open_menu')}
49+
<TooltipContent forceMount={newUser ? true : undefined} side="right" sideOffset={4}>
50+
{navVisible ? localize('com_nav_close_sidebar') : localize('com_nav_open_sidebar')}
4951
</TooltipContent>
5052
</span>
5153
</button>

client/src/localization/languages/Ar.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,6 @@ export default {
234234
com_nav_plugin_search: 'ابحث عن الإضافات',
235235
com_nav_plugin_auth_error:
236236
'حدث خطأ أثناء محاولة المصادقة على هذا البرنامج المساعد. يرجى المحاولة مرة أخرى.',
237-
com_nav_close_menu: 'إغلاق القائمة الجانبية',
238-
com_nav_open_menu: 'افتح القائمة الجانبية',
239237
com_nav_export_filename: 'اسم الملف',
240238
com_nav_export_filename_placeholder: 'قم بتعيين اسم الملف',
241239
com_nav_export_type: 'النوع',

client/src/localization/languages/Br.tsx

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ export default {
44
com_ui_examples: 'Exemplos',
55
com_ui_new_chat: 'Novo Chat',
66
com_ui_example_quantum_computing: 'Explique a computação quântica em termos simples',
7-
com_ui_example_10_year_old_b_day: 'Tem alguma ideia criativa para o aniversário de uma criança de 10 anos?',
7+
com_ui_example_10_year_old_b_day:
8+
'Tem alguma ideia criativa para o aniversário de uma criança de 10 anos?',
89
com_ui_example_http_in_js: 'Como fazer uma requisição HTTP em Javascript?',
910
com_ui_capabilities: 'Capacidades',
1011
com_ui_capability_remember: 'Lembra do que o usuário disse anteriormente na conversa',
@@ -54,8 +55,7 @@ export default {
5455
'Não foi possível fazer login com as informações fornecidas. Por favor, verifique suas credenciais e tente novamente.',
5556
com_auth_error_login_rl:
5657
'Muitas tentativas de login em um curto espaço de tempo. Por favor, tente novamente mais tarde.',
57-
com_auth_error_login_ban:
58-
'Sua conta foi temporariamente banida por violações do nosso serviço.',
58+
com_auth_error_login_ban: 'Sua conta foi temporariamente banida por violações do nosso serviço.',
5959
com_auth_error_login_server:
6060
'Houve um erro interno do servidor. Por favor, espere alguns momentos e tente novamente.',
6161
com_auth_no_account: 'Não tem uma conta?',
@@ -80,8 +80,7 @@ export default {
8080
com_auth_password_not_match: 'Senhas não coincidem',
8181
com_auth_continue: 'Continuar',
8282
com_auth_create_account: 'Crie sua conta',
83-
com_auth_error_create:
84-
'Houve um erro ao tentar registrar sua conta. Por favor, tente novamente.',
83+
com_auth_error_create: 'Houve um erro ao tentar registrar sua conta. Por favor, tente novamente.',
8584
com_auth_full_name: 'Nome completo',
8685
com_auth_name_required: 'Nome é obrigatório',
8786
com_auth_name_min_length: 'Nome deve ter pelo menos 3 caracteres',
@@ -135,7 +134,8 @@ export default {
135134
com_endpoint_google_maxoutputtokens:
136135
'Número máximo de tokens que podem ser gerados na resposta. Especifique um valor menor para respostas mais curtas e um valor maior para respostas mais longas.',
137136
com_endpoint_google_custom_name_placeholder: 'Defina um nome personalizado para o PaLM2',
138-
com_endpoint_prompt_prefix_placeholder: 'Defina instruções ou contexto personalizados. Ignorado se vazio.',
137+
com_endpoint_prompt_prefix_placeholder:
138+
'Defina instruções ou contexto personalizados. Ignorado se vazio.',
139139
com_endpoint_custom_name: 'Nome Personalizado',
140140
com_endpoint_prompt_prefix: 'Prefixo do Prompt',
141141
com_endpoint_temperature: 'Temperatura',
@@ -174,7 +174,8 @@ export default {
174174
com_endpoint_plug_set_custom_instructions_for_gpt_placeholder:
175175
'Defina instruções personalizadas para incluir na Mensagem do Sistema. Padrão: nenhum',
176176
com_endpoint_import: 'Importar',
177-
com_endpoint_set_custom_name: 'Defina um nome personalizado, caso você possa encontrar este preset',
177+
com_endpoint_set_custom_name:
178+
'Defina um nome personalizado, caso você possa encontrar este preset',
178179
com_endpoint_preset: 'preset',
179180
com_endpoint_presets: 'presets',
180181
com_endpoint_preset_name: 'Nome do Preset',
@@ -210,15 +211,17 @@ export default {
210211
com_endpoint_config_key_encryption: 'Sua chave será criptografada e excluída em',
211212
com_endpoint_config_key_expiry: 'o tempo de expiração',
212213
com_endpoint_config_key_import_json_key: 'Importar Chave JSON da Conta de Serviço.',
213-
com_endpoint_config_key_import_json_key_success: 'Chave JSON da Conta de Serviço Importada com Sucesso',
214+
com_endpoint_config_key_import_json_key_success:
215+
'Chave JSON da Conta de Serviço Importada com Sucesso',
214216
com_endpoint_config_key_import_json_key_invalid:
215217
'Chave JSON da Conta de Serviço Inválida, Você importou o arquivo correto?',
216218
com_endpoint_config_key_get_edge_key: 'Para obter seu token de acesso para o Bing, faça login em',
217219
com_endpoint_config_key_get_edge_key_dev_tool:
218220
'Use as ferramentas de desenvolvimento ou uma extensão enquanto estiver logado no site para copiar o conteúdo do cookie _U. Se isso falhar, siga estas',
219221
com_endpoint_config_key_edge_instructions: 'instruções',
220222
com_endpoint_config_key_edge_full_key_string: 'para fornecer as strings completas dos cookies.',
221-
com_endpoint_config_key_chatgpt: 'Para obter seu token de acesso para o ChatGPT "Versão Gratuita", faça login em',
223+
com_endpoint_config_key_chatgpt:
224+
'Para obter seu token de acesso para o ChatGPT "Versão Gratuita", faça login em',
222225
com_endpoint_config_key_chatgpt_then_visit: 'depois visite',
223226
com_endpoint_config_key_chatgpt_copy_token: 'Copie o token de acesso.',
224227
com_endpoint_config_key_google_need_to: 'Você precisa',
@@ -232,8 +235,6 @@ export default {
232235
com_nav_plugin_search: 'Pesquisar plugins',
233236
com_nav_plugin_auth_error:
234237
'Houve um erro ao tentar autenticar este plugin. Por favor, tente novamente.',
235-
com_nav_close_menu: 'Fechar barra lateral',
236-
com_nav_open_menu: 'Abrir barra lateral',
237238
com_nav_export_filename: 'Nome do arquivo',
238239
com_nav_export_filename_placeholder: 'Defina o nome do arquivo',
239240
com_nav_export_type: 'Tipo',

client/src/localization/languages/Eng.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -251,8 +251,6 @@ export default {
251251
com_nav_plugin_search: 'Search plugins',
252252
com_nav_plugin_auth_error:
253253
'There was an error attempting to authenticate this plugin. Please try again.',
254-
com_nav_close_menu: 'Close sidebar',
255-
com_nav_open_menu: 'Open sidebar',
256254
com_nav_export_filename: 'Filename',
257255
com_nav_export_filename_placeholder: 'Set the filename',
258256
com_nav_export_type: 'Type',

client/src/localization/languages/Es.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,6 @@ export default {
243243
com_nav_plugin_search: 'Buscar plugins',
244244
com_nav_plugin_auth_error:
245245
'Hubo un error al intentar autenticar este plugin. Por favor, inténtalo de nuevo.',
246-
com_nav_close_menu: 'Cerrar barra lateral',
247-
com_nav_open_menu: 'Abrir barra lateral',
248246
com_nav_export_filename: 'Nombre de archivo',
249247
com_nav_export_filename_placeholder: 'Establece el nombre de archivo',
250248
com_nav_export_type: 'Tipo',

client/src/localization/languages/Fr.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,6 @@ export default {
243243
com_nav_plugin_search: 'Rechercher des plugins',
244244
com_nav_plugin_auth_error:
245245
'Une erreur s\'est produite lors de la tentative d\'authentification de ce plugin. Veuillez réessayer.',
246-
com_nav_close_menu: 'Fermer la barre latérale',
247-
com_nav_open_menu: 'Ouvrir la barre latérale',
248246
com_nav_export_filename: 'Nom du fichier',
249247
com_nav_export_filename_placeholder: 'Définir le nom du fichier',
250248
com_nav_export_type: 'Type',

client/src/localization/languages/It.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,6 @@ export default {
240240
com_nav_plugin_search: 'Cerca plugin',
241241
com_nav_plugin_auth_error:
242242
'Si è verificato un errore durante il tentativo di autenticare questo plugin. Per favore, riprova.',
243-
com_nav_close_menu: 'Apri la barra laterale',
244-
com_nav_open_menu: 'Chiudi la barra laterale',
245243
com_nav_export_filename: 'Nome del file',
246244
com_nav_export_filename_placeholder: 'Imposta il nome del file',
247245
com_nav_export_type: 'Tipo',

client/src/localization/languages/Jp.tsx

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,9 @@ export default {
5454
'入力された情報ではログインできませんでした。認証情報を確認した上で再度お試しください。',
5555
com_auth_error_login_rl:
5656
'お使いのIPアドレスから短時間に多数のログイン試行がありました。しばらくしてから再度お試しください。',
57-
com_auth_error_login_ban:
58-
'本サービスの利用規約違反のため、一時的にアカウントを停止しました。',
57+
com_auth_error_login_ban: '本サービスの利用規約違反のため、一時的にアカウントを停止しました。',
5958
com_auth_error_login_server:
60-
'サーバーエラーが発生しています。。しばらくしてから再度お試しください。',
59+
'サーバーエラーが発生しています。。しばらくしてから再度お試しください。',
6160
com_auth_no_account: 'アカウントをお持ちでない場合はこちら',
6261
com_auth_sign_up: '新規登録',
6362
com_auth_sign_in: 'ログイン',
@@ -135,7 +134,8 @@ export default {
135134
com_endpoint_google_maxoutputtokens:
136135
' 生成されるレスポンスの最大トークン数。短いレスポンスには低い値を、長いレスポンスには高い値を指定します。',
137136
com_endpoint_google_custom_name_placeholder: 'PaLM2のカスタム名を設定する',
138-
com_endpoint_prompt_prefix_placeholder: 'custom instructions か context を設定する。空の場合は無視されます。',
137+
com_endpoint_prompt_prefix_placeholder:
138+
'custom instructions か context を設定する。空の場合は無視されます。',
139139
com_endpoint_custom_name: 'プリセット名',
140140
com_endpoint_prompt_prefix: 'プロンプトの先頭',
141141
com_endpoint_temperature: 'Temperature',
@@ -144,7 +144,7 @@ export default {
144144
com_endpoint_top_k: 'Top K',
145145
com_endpoint_max_output_tokens: '最大出力トークン数',
146146
com_endpoint_openai_temp:
147-
'大きい値 = ランダム性が増します。低い値 = より決定論的になります。この値を変更するか、Top P の変更をおすすめしますが、両方を変更はおすすめしません。',
147+
'大きい値 = ランダム性が増します。低い値 = より決定論的になります。この値を変更するか、Top P の変更をおすすめしますが、両方を変更はおすすめしません。',
148148
com_endpoint_openai_max:
149149
'生成されるトークンの最大値。入力トークンと出力トークンの長さの合計は、モデルのコンテキスト長によって制限されます。',
150150
com_endpoint_openai_topp:
@@ -225,15 +225,18 @@ export default {
225225
com_endpoint_config_key_encryption: '鍵は暗号化されます。削除予定日:',
226226
com_endpoint_config_key_expiry: 'すでに有効期限切れです',
227227
com_endpoint_config_key_import_json_key: 'Service Account JSON Key をインポートする。',
228-
com_endpoint_config_key_import_json_key_success: 'Service Account JSON Keyのインポートに成功しました。',
228+
com_endpoint_config_key_import_json_key_success:
229+
'Service Account JSON Keyのインポートに成功しました。',
229230
com_endpoint_config_key_import_json_key_invalid:
230231
'無効なService Account JSON Keyです。正しいファイルかどうか確認してください。',
231-
com_endpoint_config_key_get_edge_key: 'Bing用のアクセストークンを取得するためにログインをしてください: ',
232+
com_endpoint_config_key_get_edge_key:
233+
'Bing用のアクセストークンを取得するためにログインをしてください: ',
232234
com_endpoint_config_key_get_edge_key_dev_tool:
233235
'サイトにログインした状態で、開発ツールまたは拡張機能を使用して、_U クッキーの内容をコピーします。もし失敗する場合は次の手順に従ってください。',
234236
com_endpoint_config_key_edge_instructions: '手順',
235237
com_endpoint_config_key_edge_full_key_string: 'to provide the full cookie strings.',
236-
com_endpoint_config_key_chatgpt: 'ChatGPTの「無料版」のアクセストークンを入手するためにへログインをしてください:',
238+
com_endpoint_config_key_chatgpt:
239+
'ChatGPTの「無料版」のアクセストークンを入手するためにへログインをしてください:',
237240
com_endpoint_config_key_chatgpt_then_visit: 'つぎに、ここへアクセスしてください:',
238241
com_endpoint_config_key_chatgpt_copy_token: 'トークンをコピーしてください。',
239242
com_endpoint_config_key_google_need_to: 'こちらを有効化する必要があります:',
@@ -248,8 +251,6 @@ export default {
248251
com_nav_plugin_search: 'プラグイン検索',
249252
com_nav_plugin_auth_error:
250253
'このプラグインの認証中にエラーが発生しました。もう一度お試しください。',
251-
com_nav_close_menu: 'サイドバーを閉じる',
252-
com_nav_open_menu: 'サイドバーを開く',
253254
com_nav_export_filename: 'ファイル名',
254255
com_nav_export_filename_placeholder: 'ファイル名を入力してください',
255256
com_nav_export_type: '形式',

client/src/localization/languages/Nl.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,8 +239,6 @@ export default {
239239
com_nav_plugin_search: 'Plugins zoeken',
240240
com_nav_plugin_auth_error:
241241
'Er trad een fout op bij het authenticeren van deze plugin. Probeer het opnieuw.',
242-
com_nav_close_menu: 'Zijbalk sluiten',
243-
com_nav_open_menu: 'Zijbalk openen',
244242
com_nav_export_filename: 'Bestandsnaam',
245243
com_nav_export_filename_placeholder: 'Stel de bestandsnaam in',
246244
com_nav_export_type: 'Type',

0 commit comments

Comments
 (0)