gzdaniel commited on
Commit
5650b5f
·
1 Parent(s): 183ee5a

Replaced Text components with standard labels associated via htmlFor/id to fix accessibility warnings.

Browse files
lightrag_webui/src/components/retrieval/QuerySettings.tsx CHANGED
@@ -1,6 +1,6 @@
1
  import { useCallback } from 'react'
2
  import { QueryMode, QueryRequest } from '@/api/lightrag'
3
- import Text from '@/components/ui/Text'
4
  import Input from '@/components/ui/Input'
5
  import Checkbox from '@/components/ui/Checkbox'
6
  import NumberInput from '@/components/ui/NumberInput'
@@ -13,6 +13,7 @@ import {
13
  SelectTrigger,
14
  SelectValue
15
  } from '@/components/ui/Select'
 
16
  import { useSettingsStore } from '@/stores/settings'
17
  import { useTranslation } from 'react-i18next'
18
 
@@ -35,17 +36,26 @@ export default function QuerySettings() {
35
  <div className="absolute inset-0 flex flex-col gap-2 overflow-auto px-2">
36
  {/* Query Mode */}
37
  <>
38
- <Text
39
- className="ml-1"
40
- text={t('retrievePanel.querySettings.queryMode')}
41
- tooltip={t('retrievePanel.querySettings.queryModeTooltip')}
42
- side="left"
43
- />
 
 
 
 
 
 
44
  <Select
45
  value={querySettings.mode}
46
  onValueChange={(v) => handleChange('mode', v as QueryMode)}
47
  >
48
- <SelectTrigger className="hover:bg-primary/5 h-9 cursor-pointer focus:ring-0 focus:ring-offset-0 focus:outline-0 active:right-0">
 
 
 
49
  <SelectValue />
50
  </SelectTrigger>
51
  <SelectContent>
@@ -63,17 +73,26 @@ export default function QuerySettings() {
63
 
64
  {/* Response Format */}
65
  <>
66
- <Text
67
- className="ml-1"
68
- text={t('retrievePanel.querySettings.responseFormat')}
69
- tooltip={t('retrievePanel.querySettings.responseFormatTooltip')}
70
- side="left"
71
- />
 
 
 
 
 
 
72
  <Select
73
  value={querySettings.response_type}
74
  onValueChange={(v) => handleChange('response_type', v)}
75
  >
76
- <SelectTrigger className="hover:bg-primary/5 h-9 cursor-pointer focus:ring-0 focus:ring-offset-0 focus:outline-0 active:right-0">
 
 
 
77
  <SelectValue />
78
  </SelectTrigger>
79
  <SelectContent>
@@ -88,16 +107,20 @@ export default function QuerySettings() {
88
 
89
  {/* Top K */}
90
  <>
91
- <Text
92
- className="ml-1"
93
- text={t('retrievePanel.querySettings.topK')}
94
- tooltip={t('retrievePanel.querySettings.topKTooltip')}
95
- side="left"
96
- />
 
 
 
 
 
 
97
  <div>
98
- <label htmlFor="top_k" className="sr-only">
99
- {t('retrievePanel.querySettings.topK')}
100
- </label>
101
  <NumberInput
102
  id="top_k"
103
  stepper={1}
@@ -112,16 +135,20 @@ export default function QuerySettings() {
112
  {/* Max Tokens */}
113
  <>
114
  <>
115
- <Text
116
- className="ml-1"
117
- text={t('retrievePanel.querySettings.maxTokensTextUnit')}
118
- tooltip={t('retrievePanel.querySettings.maxTokensTextUnitTooltip')}
119
- side="left"
120
- />
 
 
 
 
 
 
121
  <div>
122
- <label htmlFor="max_token_for_text_unit" className="sr-only">
123
- {t('retrievePanel.querySettings.maxTokensTextUnit')}
124
- </label>
125
  <NumberInput
126
  id="max_token_for_text_unit"
127
  stepper={500}
@@ -134,15 +161,20 @@ export default function QuerySettings() {
134
  </>
135
 
136
  <>
137
- <Text
138
- text={t('retrievePanel.querySettings.maxTokensGlobalContext')}
139
- tooltip={t('retrievePanel.querySettings.maxTokensGlobalContextTooltip')}
140
- side="left"
141
- />
 
 
 
 
 
 
 
142
  <div>
143
- <label htmlFor="max_token_for_global_context" className="sr-only">
144
- {t('retrievePanel.querySettings.maxTokensGlobalContext')}
145
- </label>
146
  <NumberInput
147
  id="max_token_for_global_context"
148
  stepper={500}
@@ -155,16 +187,20 @@ export default function QuerySettings() {
155
  </>
156
 
157
  <>
158
- <Text
159
- className="ml-1"
160
- text={t('retrievePanel.querySettings.maxTokensLocalContext')}
161
- tooltip={t('retrievePanel.querySettings.maxTokensLocalContextTooltip')}
162
- side="left"
163
- />
 
 
 
 
 
 
164
  <div>
165
- <label htmlFor="max_token_for_local_context" className="sr-only">
166
- {t('retrievePanel.querySettings.maxTokensLocalContext')}
167
- </label>
168
  <NumberInput
169
  id="max_token_for_local_context"
170
  stepper={500}
@@ -179,16 +215,20 @@ export default function QuerySettings() {
179
 
180
  {/* History Turns */}
181
  <>
182
- <Text
183
- className="ml-1"
184
- text={t('retrievePanel.querySettings.historyTurns')}
185
- tooltip={t('retrievePanel.querySettings.historyTurnsTooltip')}
186
- side="left"
187
- />
 
 
 
 
 
 
188
  <div>
189
- <label htmlFor="history_turns" className="sr-only">
190
- {t('retrievePanel.querySettings.historyTurns')}
191
- </label>
192
  <NumberInput
193
  className="!border-input"
194
  id="history_turns"
@@ -205,16 +245,20 @@ export default function QuerySettings() {
205
  {/* Keywords */}
206
  <>
207
  <>
208
- <Text
209
- className="ml-1"
210
- text={t('retrievePanel.querySettings.hlKeywords')}
211
- tooltip={t('retrievePanel.querySettings.hlKeywordsTooltip')}
212
- side="left"
213
- />
 
 
 
 
 
 
214
  <div>
215
- <label htmlFor="hl_keywords" className="sr-only">
216
- {t('retrievePanel.querySettings.hlKeywords')}
217
- </label>
218
  <Input
219
  id="hl_keywords"
220
  type="text"
@@ -232,16 +276,20 @@ export default function QuerySettings() {
232
  </>
233
 
234
  <>
235
- <Text
236
- className="ml-1"
237
- text={t('retrievePanel.querySettings.llKeywords')}
238
- tooltip={t('retrievePanel.querySettings.llKeywordsTooltip')}
239
- side="left"
240
- />
 
 
 
 
 
 
241
  <div>
242
- <label htmlFor="ll_keywords" className="sr-only">
243
- {t('retrievePanel.querySettings.llKeywords')}
244
- </label>
245
  <Input
246
  id="ll_keywords"
247
  type="text"
@@ -262,14 +310,18 @@ export default function QuerySettings() {
262
  {/* Toggle Options */}
263
  <>
264
  <div className="flex items-center gap-2">
265
- <label htmlFor="only_need_context" className="flex-1">
266
- <Text
267
- className="ml-1"
268
- text={t('retrievePanel.querySettings.onlyNeedContext')}
269
- tooltip={t('retrievePanel.querySettings.onlyNeedContextTooltip')}
270
- side="left"
271
- />
272
- </label>
 
 
 
 
273
  <Checkbox
274
  className="mr-1 cursor-pointer"
275
  id="only_need_context"
@@ -279,14 +331,18 @@ export default function QuerySettings() {
279
  </div>
280
 
281
  <div className="flex items-center gap-2">
282
- <label htmlFor="only_need_prompt" className="flex-1">
283
- <Text
284
- className="ml-1"
285
- text={t('retrievePanel.querySettings.onlyNeedPrompt')}
286
- tooltip={t('retrievePanel.querySettings.onlyNeedPromptTooltip')}
287
- side="left"
288
- />
289
- </label>
 
 
 
 
290
  <Checkbox
291
  className="mr-1 cursor-pointer"
292
  id="only_need_prompt"
@@ -296,14 +352,18 @@ export default function QuerySettings() {
296
  </div>
297
 
298
  <div className="flex items-center gap-2">
299
- <label htmlFor="stream" className="flex-1">
300
- <Text
301
- className="ml-1"
302
- text={t('retrievePanel.querySettings.streamResponse')}
303
- tooltip={t('retrievePanel.querySettings.streamResponseTooltip')}
304
- side="left"
305
- />
306
- </label>
 
 
 
 
307
  <Checkbox
308
  className="mr-1 cursor-pointer"
309
  id="stream"
 
1
  import { useCallback } from 'react'
2
  import { QueryMode, QueryRequest } from '@/api/lightrag'
3
+ // Removed unused import for Text component
4
  import Input from '@/components/ui/Input'
5
  import Checkbox from '@/components/ui/Checkbox'
6
  import NumberInput from '@/components/ui/NumberInput'
 
13
  SelectTrigger,
14
  SelectValue
15
  } from '@/components/ui/Select'
16
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '@/components/ui/Tooltip'
17
  import { useSettingsStore } from '@/stores/settings'
18
  import { useTranslation } from 'react-i18next'
19
 
 
36
  <div className="absolute inset-0 flex flex-col gap-2 overflow-auto px-2">
37
  {/* Query Mode */}
38
  <>
39
+ <TooltipProvider>
40
+ <Tooltip>
41
+ <TooltipTrigger asChild>
42
+ <label htmlFor="query_mode_select" className="ml-1 cursor-help">
43
+ {t('retrievePanel.querySettings.queryMode')}
44
+ </label>
45
+ </TooltipTrigger>
46
+ <TooltipContent side="left">
47
+ <p>{t('retrievePanel.querySettings.queryModeTooltip')}</p>
48
+ </TooltipContent>
49
+ </Tooltip>
50
+ </TooltipProvider>
51
  <Select
52
  value={querySettings.mode}
53
  onValueChange={(v) => handleChange('mode', v as QueryMode)}
54
  >
55
+ <SelectTrigger
56
+ id="query_mode_select"
57
+ className="hover:bg-primary/5 h-9 cursor-pointer focus:ring-0 focus:ring-offset-0 focus:outline-0 active:right-0"
58
+ >
59
  <SelectValue />
60
  </SelectTrigger>
61
  <SelectContent>
 
73
 
74
  {/* Response Format */}
75
  <>
76
+ <TooltipProvider>
77
+ <Tooltip>
78
+ <TooltipTrigger asChild>
79
+ <label htmlFor="response_format_select" className="ml-1 cursor-help">
80
+ {t('retrievePanel.querySettings.responseFormat')}
81
+ </label>
82
+ </TooltipTrigger>
83
+ <TooltipContent side="left">
84
+ <p>{t('retrievePanel.querySettings.responseFormatTooltip')}</p>
85
+ </TooltipContent>
86
+ </Tooltip>
87
+ </TooltipProvider>
88
  <Select
89
  value={querySettings.response_type}
90
  onValueChange={(v) => handleChange('response_type', v)}
91
  >
92
+ <SelectTrigger
93
+ id="response_format_select"
94
+ className="hover:bg-primary/5 h-9 cursor-pointer focus:ring-0 focus:ring-offset-0 focus:outline-0 active:right-0"
95
+ >
96
  <SelectValue />
97
  </SelectTrigger>
98
  <SelectContent>
 
107
 
108
  {/* Top K */}
109
  <>
110
+ <TooltipProvider>
111
+ <Tooltip>
112
+ <TooltipTrigger asChild>
113
+ <label htmlFor="top_k" className="ml-1 cursor-help">
114
+ {t('retrievePanel.querySettings.topK')}
115
+ </label>
116
+ </TooltipTrigger>
117
+ <TooltipContent side="left">
118
+ <p>{t('retrievePanel.querySettings.topKTooltip')}</p>
119
+ </TooltipContent>
120
+ </Tooltip>
121
+ </TooltipProvider>
122
  <div>
123
+ {/* Removed sr-only label */}
 
 
124
  <NumberInput
125
  id="top_k"
126
  stepper={1}
 
135
  {/* Max Tokens */}
136
  <>
137
  <>
138
+ <TooltipProvider>
139
+ <Tooltip>
140
+ <TooltipTrigger asChild>
141
+ <label htmlFor="max_token_for_text_unit" className="ml-1 cursor-help">
142
+ {t('retrievePanel.querySettings.maxTokensTextUnit')}
143
+ </label>
144
+ </TooltipTrigger>
145
+ <TooltipContent side="left">
146
+ <p>{t('retrievePanel.querySettings.maxTokensTextUnitTooltip')}</p>
147
+ </TooltipContent>
148
+ </Tooltip>
149
+ </TooltipProvider>
150
  <div>
151
+ {/* Removed sr-only label */}
 
 
152
  <NumberInput
153
  id="max_token_for_text_unit"
154
  stepper={500}
 
161
  </>
162
 
163
  <>
164
+ <TooltipProvider>
165
+ <Tooltip>
166
+ <TooltipTrigger asChild>
167
+ <label htmlFor="max_token_for_global_context" className="ml-1 cursor-help">
168
+ {t('retrievePanel.querySettings.maxTokensGlobalContext')}
169
+ </label>
170
+ </TooltipTrigger>
171
+ <TooltipContent side="left">
172
+ <p>{t('retrievePanel.querySettings.maxTokensGlobalContextTooltip')}</p>
173
+ </TooltipContent>
174
+ </Tooltip>
175
+ </TooltipProvider>
176
  <div>
177
+ {/* Removed sr-only label */}
 
 
178
  <NumberInput
179
  id="max_token_for_global_context"
180
  stepper={500}
 
187
  </>
188
 
189
  <>
190
+ <TooltipProvider>
191
+ <Tooltip>
192
+ <TooltipTrigger asChild>
193
+ <label htmlFor="max_token_for_local_context" className="ml-1 cursor-help">
194
+ {t('retrievePanel.querySettings.maxTokensLocalContext')}
195
+ </label>
196
+ </TooltipTrigger>
197
+ <TooltipContent side="left">
198
+ <p>{t('retrievePanel.querySettings.maxTokensLocalContextTooltip')}</p>
199
+ </TooltipContent>
200
+ </Tooltip>
201
+ </TooltipProvider>
202
  <div>
203
+ {/* Removed sr-only label */}
 
 
204
  <NumberInput
205
  id="max_token_for_local_context"
206
  stepper={500}
 
215
 
216
  {/* History Turns */}
217
  <>
218
+ <TooltipProvider>
219
+ <Tooltip>
220
+ <TooltipTrigger asChild>
221
+ <label htmlFor="history_turns" className="ml-1 cursor-help">
222
+ {t('retrievePanel.querySettings.historyTurns')}
223
+ </label>
224
+ </TooltipTrigger>
225
+ <TooltipContent side="left">
226
+ <p>{t('retrievePanel.querySettings.historyTurnsTooltip')}</p>
227
+ </TooltipContent>
228
+ </Tooltip>
229
+ </TooltipProvider>
230
  <div>
231
+ {/* Removed sr-only label */}
 
 
232
  <NumberInput
233
  className="!border-input"
234
  id="history_turns"
 
245
  {/* Keywords */}
246
  <>
247
  <>
248
+ <TooltipProvider>
249
+ <Tooltip>
250
+ <TooltipTrigger asChild>
251
+ <label htmlFor="hl_keywords" className="ml-1 cursor-help">
252
+ {t('retrievePanel.querySettings.hlKeywords')}
253
+ </label>
254
+ </TooltipTrigger>
255
+ <TooltipContent side="left">
256
+ <p>{t('retrievePanel.querySettings.hlKeywordsTooltip')}</p>
257
+ </TooltipContent>
258
+ </Tooltip>
259
+ </TooltipProvider>
260
  <div>
261
+ {/* Removed sr-only label */}
 
 
262
  <Input
263
  id="hl_keywords"
264
  type="text"
 
276
  </>
277
 
278
  <>
279
+ <TooltipProvider>
280
+ <Tooltip>
281
+ <TooltipTrigger asChild>
282
+ <label htmlFor="ll_keywords" className="ml-1 cursor-help">
283
+ {t('retrievePanel.querySettings.llKeywords')}
284
+ </label>
285
+ </TooltipTrigger>
286
+ <TooltipContent side="left">
287
+ <p>{t('retrievePanel.querySettings.llKeywordsTooltip')}</p>
288
+ </TooltipContent>
289
+ </Tooltip>
290
+ </TooltipProvider>
291
  <div>
292
+ {/* Removed sr-only label */}
 
 
293
  <Input
294
  id="ll_keywords"
295
  type="text"
 
310
  {/* Toggle Options */}
311
  <>
312
  <div className="flex items-center gap-2">
313
+ <TooltipProvider>
314
+ <Tooltip>
315
+ <TooltipTrigger asChild>
316
+ <label htmlFor="only_need_context" className="flex-1 ml-1 cursor-help">
317
+ {t('retrievePanel.querySettings.onlyNeedContext')}
318
+ </label>
319
+ </TooltipTrigger>
320
+ <TooltipContent side="left">
321
+ <p>{t('retrievePanel.querySettings.onlyNeedContextTooltip')}</p>
322
+ </TooltipContent>
323
+ </Tooltip>
324
+ </TooltipProvider>
325
  <Checkbox
326
  className="mr-1 cursor-pointer"
327
  id="only_need_context"
 
331
  </div>
332
 
333
  <div className="flex items-center gap-2">
334
+ <TooltipProvider>
335
+ <Tooltip>
336
+ <TooltipTrigger asChild>
337
+ <label htmlFor="only_need_prompt" className="flex-1 ml-1 cursor-help">
338
+ {t('retrievePanel.querySettings.onlyNeedPrompt')}
339
+ </label>
340
+ </TooltipTrigger>
341
+ <TooltipContent side="left">
342
+ <p>{t('retrievePanel.querySettings.onlyNeedPromptTooltip')}</p>
343
+ </TooltipContent>
344
+ </Tooltip>
345
+ </TooltipProvider>
346
  <Checkbox
347
  className="mr-1 cursor-pointer"
348
  id="only_need_prompt"
 
352
  </div>
353
 
354
  <div className="flex items-center gap-2">
355
+ <TooltipProvider>
356
+ <Tooltip>
357
+ <TooltipTrigger asChild>
358
+ <label htmlFor="stream" className="flex-1 ml-1 cursor-help">
359
+ {t('retrievePanel.querySettings.streamResponse')}
360
+ </label>
361
+ </TooltipTrigger>
362
+ <TooltipContent side="left">
363
+ <p>{t('retrievePanel.querySettings.streamResponseTooltip')}</p>
364
+ </TooltipContent>
365
+ </Tooltip>
366
+ </TooltipProvider>
367
  <Checkbox
368
  className="mr-1 cursor-pointer"
369
  id="stream"