@keepkit/ui 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/index.d.ts +61 -8
- package/dist/index.js +1549 -221
- package/dist/index.js.map +1 -1
- package/dist/theme.css +134 -0
- package/package.json +6 -3
package/dist/index.js
CHANGED
|
@@ -12,8 +12,82 @@ import { useRef, useState } from "react";
|
|
|
12
12
|
|
|
13
13
|
// src/ui-context.tsx
|
|
14
14
|
import { createContext, useContext, useMemo } from "react";
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
|
|
16
|
+
// src/locales/de.ts
|
|
17
|
+
var DE_LABELS = {
|
|
18
|
+
save: "Speichern",
|
|
19
|
+
saved: "Gespeichert",
|
|
20
|
+
remove: "Entfernen",
|
|
21
|
+
loading: "Wird geladen\u2026",
|
|
22
|
+
saving: "Wird gespeichert\u2026",
|
|
23
|
+
syncing: "Wird synchronisiert\u2026",
|
|
24
|
+
error: "Ein Fehler ist aufgetreten.",
|
|
25
|
+
allTags: "Alle",
|
|
26
|
+
tags: "Tags",
|
|
27
|
+
filterTags: "Gespeicherte Elemente nach Tag filtern",
|
|
28
|
+
note: "Notiz",
|
|
29
|
+
saveNote: "Notiz speichern",
|
|
30
|
+
noItems: "Keine gespeicherten Elemente.",
|
|
31
|
+
loadingItems: "Gespeicherte Elemente werden geladen\u2026",
|
|
32
|
+
errorItems: "Gespeicherte Elemente konnten nicht geladen werden.",
|
|
33
|
+
search: "Gespeicherte Elemente durchsuchen",
|
|
34
|
+
sort: "Gespeicherte Elemente sortieren",
|
|
35
|
+
newest: "Neueste zuerst",
|
|
36
|
+
oldest: "\xC4lteste zuerst",
|
|
37
|
+
savedNewest: "Zuletzt gespeichert zuerst",
|
|
38
|
+
savedOldest: "Am l\xE4ngsten gespeichert zuerst",
|
|
39
|
+
updatedNewest: "Zuletzt aktualisiert zuerst",
|
|
40
|
+
updatedOldest: "Am l\xE4ngsten nicht aktualisiert zuerst",
|
|
41
|
+
previousPage: "Vorherige Seite",
|
|
42
|
+
nextPage: "N\xE4chste Seite",
|
|
43
|
+
pagination: "Seitennavigation",
|
|
44
|
+
page: "Seite",
|
|
45
|
+
selectItems: "Gespeicherte Elemente ausw\xE4hlen",
|
|
46
|
+
selectedCount: "ausgew\xE4hlt",
|
|
47
|
+
deleteSelected: "Auswahl l\xF6schen",
|
|
48
|
+
tagsToApply: "Anzuwendende Tags",
|
|
49
|
+
applyTags: "Tags anwenden",
|
|
50
|
+
savedMessage: "Element gespeichert.",
|
|
51
|
+
removedMessage: "Element entfernt.",
|
|
52
|
+
undo: "R\xFCckg\xE4ngig",
|
|
53
|
+
undoAvailable: "Element entfernt. R\xFCckg\xE4ngig machen?",
|
|
54
|
+
selectionScope: "Auswahlbereich",
|
|
55
|
+
currentPage: "Aktuelle Seite",
|
|
56
|
+
searchResults: "Aktuelle Suchergebnisse",
|
|
57
|
+
allItems: "Alle gespeicherten Elemente",
|
|
58
|
+
statusAvailable: "Verf\xFCgbar",
|
|
59
|
+
noteSavedMessage: "Notiz gespeichert.",
|
|
60
|
+
exportData: "JSON exportieren",
|
|
61
|
+
importData: "JSON importieren",
|
|
62
|
+
importMode: "Importmodus",
|
|
63
|
+
merge: "Zusammenf\xFChren",
|
|
64
|
+
replace: "Ersetzen",
|
|
65
|
+
importedCount: "Elemente importiert",
|
|
66
|
+
failedCount: "Elemente fehlgeschlagen",
|
|
67
|
+
storageQuotaError: "Der Speicher ist voll. Schaffen Sie Speicherplatz und versuchen Sie es erneut.",
|
|
68
|
+
statusExpired: "Abgelaufen",
|
|
69
|
+
statusRemoved: "Entfernt",
|
|
70
|
+
statusDeleted: "Gel\xF6scht",
|
|
71
|
+
statusPrivate: "Privat",
|
|
72
|
+
statusUnknown: "Nicht verf\xFCgbar",
|
|
73
|
+
retry: "Erneut versuchen",
|
|
74
|
+
removeFromList: "Aus Liste entfernen",
|
|
75
|
+
pruneStale: "Nicht verf\xFCgbare Elemente entfernen",
|
|
76
|
+
retrySync: "Synchronisierung erneut versuchen",
|
|
77
|
+
resolveSync: "Konflikte l\xF6sen",
|
|
78
|
+
keepLocal: "Lokale Version behalten",
|
|
79
|
+
useServer: "Serverversion verwenden",
|
|
80
|
+
manualMerge: "Manuell zusammenf\xFChren",
|
|
81
|
+
close: "Schlie\xDFen",
|
|
82
|
+
backupRecovery: "Aus Backup wiederherstellen",
|
|
83
|
+
backupRecoveryDescription: "Wenn lokale Synchronisierungsdaten besch\xE4digt sind, stellen Sie ein g\xFCltiges JSON-Backup wieder her.",
|
|
84
|
+
syncPending: "\xC4nderungen warten auf die Synchronisierung.",
|
|
85
|
+
syncSynced: "Alle \xC4nderungen sind synchronisiert.",
|
|
86
|
+
syncConflict: "Einige \xC4nderungen ben\xF6tigen eine Konfliktl\xF6sung."
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
// src/locales/en.ts
|
|
90
|
+
var EN_LABELS = {
|
|
17
91
|
save: "Save",
|
|
18
92
|
saved: "Saved",
|
|
19
93
|
remove: "Remove",
|
|
@@ -68,122 +142,1114 @@ var DEFAULT_LABELS = {
|
|
|
68
142
|
statusRemoved: "Removed",
|
|
69
143
|
statusDeleted: "Deleted",
|
|
70
144
|
statusPrivate: "Private",
|
|
71
|
-
statusUnknown: "Unavailable"
|
|
145
|
+
statusUnknown: "Unavailable",
|
|
146
|
+
retry: "Retry",
|
|
147
|
+
removeFromList: "Remove from list",
|
|
148
|
+
pruneStale: "Remove unavailable items",
|
|
149
|
+
retrySync: "Retry sync",
|
|
150
|
+
resolveSync: "Resolve conflicts",
|
|
151
|
+
keepLocal: "Keep local",
|
|
152
|
+
useServer: "Use server",
|
|
153
|
+
manualMerge: "Manual merge",
|
|
154
|
+
close: "Close",
|
|
155
|
+
backupRecovery: "Restore from backup",
|
|
156
|
+
backupRecoveryDescription: "If local sync data is damaged, restore a known-good JSON backup.",
|
|
157
|
+
syncPending: "Changes are waiting to sync.",
|
|
158
|
+
syncSynced: "All changes are synced.",
|
|
159
|
+
syncConflict: "Some changes need conflict resolution."
|
|
160
|
+
};
|
|
161
|
+
|
|
162
|
+
// src/locales/es.ts
|
|
163
|
+
var ES_LABELS = {
|
|
164
|
+
save: "Guardar",
|
|
165
|
+
saved: "Guardado",
|
|
166
|
+
remove: "Eliminar",
|
|
167
|
+
loading: "Cargando\u2026",
|
|
168
|
+
saving: "Guardando\u2026",
|
|
169
|
+
syncing: "Sincronizando\u2026",
|
|
170
|
+
error: "Se produjo un error.",
|
|
171
|
+
allTags: "Todos",
|
|
172
|
+
tags: "Etiquetas",
|
|
173
|
+
filterTags: "Filtrar elementos guardados por etiqueta",
|
|
174
|
+
note: "Nota",
|
|
175
|
+
saveNote: "Guardar nota",
|
|
176
|
+
noItems: "No hay elementos guardados.",
|
|
177
|
+
loadingItems: "Cargando elementos guardados\u2026",
|
|
178
|
+
errorItems: "No se pudieron cargar los elementos guardados.",
|
|
179
|
+
search: "Buscar elementos guardados",
|
|
180
|
+
sort: "Ordenar elementos guardados",
|
|
181
|
+
newest: "M\xE1s recientes primero",
|
|
182
|
+
oldest: "M\xE1s antiguos primero",
|
|
183
|
+
savedNewest: "Guardados m\xE1s recientemente primero",
|
|
184
|
+
savedOldest: "Guardados m\xE1s antiguos primero",
|
|
185
|
+
updatedNewest: "Actualizados m\xE1s recientemente primero",
|
|
186
|
+
updatedOldest: "Actualizados m\xE1s antiguos primero",
|
|
187
|
+
previousPage: "P\xE1gina anterior",
|
|
188
|
+
nextPage: "P\xE1gina siguiente",
|
|
189
|
+
pagination: "Paginaci\xF3n",
|
|
190
|
+
page: "P\xE1gina",
|
|
191
|
+
selectItems: "Seleccionar elementos guardados",
|
|
192
|
+
selectedCount: "seleccionados",
|
|
193
|
+
deleteSelected: "Eliminar seleccionados",
|
|
194
|
+
tagsToApply: "Etiquetas que aplicar",
|
|
195
|
+
applyTags: "Aplicar etiquetas",
|
|
196
|
+
savedMessage: "Elemento guardado.",
|
|
197
|
+
removedMessage: "Elemento eliminado.",
|
|
198
|
+
undo: "Deshacer",
|
|
199
|
+
undoAvailable: "Elemento eliminado. \xBFDeshacer?",
|
|
200
|
+
selectionScope: "\xC1mbito de selecci\xF3n",
|
|
201
|
+
currentPage: "P\xE1gina actual",
|
|
202
|
+
searchResults: "Resultados de b\xFAsqueda actuales",
|
|
203
|
+
allItems: "Todos los elementos guardados",
|
|
204
|
+
statusAvailable: "Disponible",
|
|
205
|
+
noteSavedMessage: "Nota guardada.",
|
|
206
|
+
exportData: "Exportar JSON",
|
|
207
|
+
importData: "Importar JSON",
|
|
208
|
+
importMode: "Modo de importaci\xF3n",
|
|
209
|
+
merge: "Combinar",
|
|
210
|
+
replace: "Reemplazar",
|
|
211
|
+
importedCount: "elementos importados",
|
|
212
|
+
failedCount: "elementos fallidos",
|
|
213
|
+
storageQuotaError: "El almacenamiento est\xE1 lleno. Libere espacio y vuelva a intentarlo.",
|
|
214
|
+
statusExpired: "Caducado",
|
|
215
|
+
statusRemoved: "Eliminado",
|
|
216
|
+
statusDeleted: "Borrado",
|
|
217
|
+
statusPrivate: "Privado",
|
|
218
|
+
statusUnknown: "No disponible",
|
|
219
|
+
retry: "Reintentar",
|
|
220
|
+
removeFromList: "Quitar de la lista",
|
|
221
|
+
pruneStale: "Quitar elementos no disponibles",
|
|
222
|
+
retrySync: "Reintentar sincronizaci\xF3n",
|
|
223
|
+
resolveSync: "Resolver conflictos",
|
|
224
|
+
keepLocal: "Conservar versi\xF3n local",
|
|
225
|
+
useServer: "Usar versi\xF3n del servidor",
|
|
226
|
+
manualMerge: "Combinar manualmente",
|
|
227
|
+
close: "Cerrar",
|
|
228
|
+
backupRecovery: "Restaurar desde copia de seguridad",
|
|
229
|
+
backupRecoveryDescription: "Si los datos locales est\xE1n da\xF1ados, restaura una copia JSON v\xE1lida.",
|
|
230
|
+
syncPending: "Hay cambios pendientes de sincronizaci\xF3n.",
|
|
231
|
+
syncSynced: "Todos los cambios est\xE1n sincronizados.",
|
|
232
|
+
syncConflict: "Algunos cambios necesitan resolver un conflicto."
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
// src/locales/fil.ts
|
|
236
|
+
var FIL_LABELS = {
|
|
237
|
+
save: "I-save",
|
|
238
|
+
saved: "Nai-save",
|
|
239
|
+
remove: "Alisin",
|
|
240
|
+
loading: "Naglo-load\u2026",
|
|
241
|
+
saving: "Sini-save\u2026",
|
|
242
|
+
syncing: "Sini-sync\u2026",
|
|
243
|
+
error: "May naganap na error.",
|
|
244
|
+
allTags: "Lahat",
|
|
245
|
+
tags: "Mga tag",
|
|
246
|
+
filterTags: "I-filter ang mga naka-save na item ayon sa tag",
|
|
247
|
+
note: "Tala",
|
|
248
|
+
saveNote: "I-save ang tala",
|
|
249
|
+
noItems: "Walang naka-save na item.",
|
|
250
|
+
loadingItems: "Nilo-load ang mga naka-save na item\u2026",
|
|
251
|
+
errorItems: "Hindi ma-load ang mga naka-save na item.",
|
|
252
|
+
search: "Maghanap ng naka-save na item",
|
|
253
|
+
sort: "Ayusin ang mga naka-save na item",
|
|
254
|
+
newest: "Pinakabago muna",
|
|
255
|
+
oldest: "Pinakaluma muna",
|
|
256
|
+
savedNewest: "Pinakabagong na-save muna",
|
|
257
|
+
savedOldest: "Pinakamatagal na naka-save muna",
|
|
258
|
+
updatedNewest: "Pinakabagong na-update muna",
|
|
259
|
+
updatedOldest: "Pinakamatagal na hindi na-update muna",
|
|
260
|
+
previousPage: "Nakaraang pahina",
|
|
261
|
+
nextPage: "Susunod na pahina",
|
|
262
|
+
pagination: "Pagpapa-pahina",
|
|
263
|
+
page: "Pahina",
|
|
264
|
+
selectItems: "Pumili ng naka-save na item",
|
|
265
|
+
selectedCount: "napili",
|
|
266
|
+
deleteSelected: "Tanggalin ang napili",
|
|
267
|
+
tagsToApply: "Mga tag na ilalapat",
|
|
268
|
+
applyTags: "Ilapat ang mga tag",
|
|
269
|
+
savedMessage: "Na-save ang item.",
|
|
270
|
+
removedMessage: "Inalis ang item.",
|
|
271
|
+
undo: "I-undo",
|
|
272
|
+
undoAvailable: "Inalis ang item. I-undo?",
|
|
273
|
+
selectionScope: "Saklaw ng pagpili",
|
|
274
|
+
currentPage: "Kasalukuyang pahina",
|
|
275
|
+
searchResults: "Kasalukuyang resulta ng paghahanap",
|
|
276
|
+
allItems: "Lahat ng naka-save na item",
|
|
277
|
+
statusAvailable: "Available",
|
|
278
|
+
noteSavedMessage: "Na-save ang tala.",
|
|
279
|
+
exportData: "I-export ang JSON",
|
|
280
|
+
importData: "I-import ang JSON",
|
|
281
|
+
importMode: "Mode ng pag-import",
|
|
282
|
+
merge: "Pagsamahin",
|
|
283
|
+
replace: "Palitan",
|
|
284
|
+
importedCount: "item ang na-import",
|
|
285
|
+
failedCount: "item ang nabigo",
|
|
286
|
+
storageQuotaError: "Puno na ang storage. Magbakante ng espasyo at subukan muli.",
|
|
287
|
+
statusExpired: "Nag-expire",
|
|
288
|
+
statusRemoved: "Inalis",
|
|
289
|
+
statusDeleted: "Tinanggal",
|
|
290
|
+
statusPrivate: "Pribado",
|
|
291
|
+
statusUnknown: "Hindi available",
|
|
292
|
+
retry: "Subukan muli",
|
|
293
|
+
removeFromList: "Alisin sa listahan",
|
|
294
|
+
pruneStale: "Alisin ang hindi available na item",
|
|
295
|
+
retrySync: "Subukan muli ang sync",
|
|
296
|
+
resolveSync: "Ayusin ang mga conflict",
|
|
297
|
+
keepLocal: "Panatilihin ang lokal",
|
|
298
|
+
useServer: "Gamitin ang server",
|
|
299
|
+
manualMerge: "Manwal na pagsamahin",
|
|
300
|
+
close: "Isara",
|
|
301
|
+
backupRecovery: "I-restore mula sa backup",
|
|
302
|
+
backupRecoveryDescription: "Kung sira ang lokal na sync data, mag-restore ng gumaganang JSON backup.",
|
|
303
|
+
syncPending: "May mga pagbabagong naghihintay ng sync.",
|
|
304
|
+
syncSynced: "Naka-sync na ang lahat ng pagbabago.",
|
|
305
|
+
syncConflict: "May mga pagbabagong kailangang ayusin ang conflict."
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
// src/locales/fr.ts
|
|
309
|
+
var FR_LABELS = {
|
|
310
|
+
save: "Enregistrer",
|
|
311
|
+
saved: "Enregistr\xE9",
|
|
312
|
+
remove: "Supprimer",
|
|
313
|
+
loading: "Chargement\u2026",
|
|
314
|
+
saving: "Enregistrement\u2026",
|
|
315
|
+
syncing: "Synchronisation\u2026",
|
|
316
|
+
error: "Une erreur s\u2019est produite.",
|
|
317
|
+
allTags: "Tous",
|
|
318
|
+
tags: "\xC9tiquettes",
|
|
319
|
+
filterTags: "Filtrer les \xE9l\xE9ments enregistr\xE9s par \xE9tiquette",
|
|
320
|
+
note: "Note",
|
|
321
|
+
saveNote: "Enregistrer la note",
|
|
322
|
+
noItems: "Aucun \xE9l\xE9ment enregistr\xE9.",
|
|
323
|
+
loadingItems: "Chargement des \xE9l\xE9ments enregistr\xE9s\u2026",
|
|
324
|
+
errorItems: "Impossible de charger les \xE9l\xE9ments enregistr\xE9s.",
|
|
325
|
+
search: "Rechercher des \xE9l\xE9ments enregistr\xE9s",
|
|
326
|
+
sort: "Trier les \xE9l\xE9ments enregistr\xE9s",
|
|
327
|
+
newest: "Plus r\xE9cent d\u2019abord",
|
|
328
|
+
oldest: "Plus ancien d\u2019abord",
|
|
329
|
+
savedNewest: "Enregistrement le plus r\xE9cent d\u2019abord",
|
|
330
|
+
savedOldest: "Enregistrement le plus ancien d\u2019abord",
|
|
331
|
+
updatedNewest: "Mise \xE0 jour la plus r\xE9cente d\u2019abord",
|
|
332
|
+
updatedOldest: "Mise \xE0 jour la plus ancienne d\u2019abord",
|
|
333
|
+
previousPage: "Page pr\xE9c\xE9dente",
|
|
334
|
+
nextPage: "Page suivante",
|
|
335
|
+
pagination: "Pagination",
|
|
336
|
+
page: "Page",
|
|
337
|
+
selectItems: "S\xE9lectionner les \xE9l\xE9ments enregistr\xE9s",
|
|
338
|
+
selectedCount: "s\xE9lectionn\xE9s",
|
|
339
|
+
deleteSelected: "Supprimer la s\xE9lection",
|
|
340
|
+
tagsToApply: "\xC9tiquettes \xE0 appliquer",
|
|
341
|
+
applyTags: "Appliquer les \xE9tiquettes",
|
|
342
|
+
savedMessage: "\xC9l\xE9ment enregistr\xE9.",
|
|
343
|
+
removedMessage: "\xC9l\xE9ment supprim\xE9.",
|
|
344
|
+
undo: "Annuler",
|
|
345
|
+
undoAvailable: "\xC9l\xE9ment supprim\xE9. Annuler ?",
|
|
346
|
+
selectionScope: "Port\xE9e de la s\xE9lection",
|
|
347
|
+
currentPage: "Page actuelle",
|
|
348
|
+
searchResults: "R\xE9sultats de recherche actuels",
|
|
349
|
+
allItems: "Tous les \xE9l\xE9ments enregistr\xE9s",
|
|
350
|
+
statusAvailable: "Disponible",
|
|
351
|
+
noteSavedMessage: "Note enregistr\xE9e.",
|
|
352
|
+
exportData: "Exporter JSON",
|
|
353
|
+
importData: "Importer JSON",
|
|
354
|
+
importMode: "Mode d\u2019importation",
|
|
355
|
+
merge: "Fusionner",
|
|
356
|
+
replace: "Remplacer",
|
|
357
|
+
importedCount: "\xE9l\xE9ments import\xE9s",
|
|
358
|
+
failedCount: "\xE9l\xE9ments en \xE9chec",
|
|
359
|
+
storageQuotaError: "Le stockage est plein. Lib\xE9rez de l\u2019espace et r\xE9essayez.",
|
|
360
|
+
statusExpired: "Expir\xE9",
|
|
361
|
+
statusRemoved: "Supprim\xE9",
|
|
362
|
+
statusDeleted: "Effac\xE9",
|
|
363
|
+
statusPrivate: "Priv\xE9",
|
|
364
|
+
statusUnknown: "Indisponible",
|
|
365
|
+
retry: "R\xE9essayer",
|
|
366
|
+
removeFromList: "Retirer de la liste",
|
|
367
|
+
pruneStale: "Retirer les \xE9l\xE9ments indisponibles",
|
|
368
|
+
retrySync: "R\xE9essayer la synchronisation",
|
|
369
|
+
resolveSync: "R\xE9soudre les conflits",
|
|
370
|
+
keepLocal: "Garder la version locale",
|
|
371
|
+
useServer: "Utiliser la version serveur",
|
|
372
|
+
manualMerge: "Fusion manuelle",
|
|
373
|
+
close: "Fermer",
|
|
374
|
+
backupRecovery: "Restaurer depuis une sauvegarde",
|
|
375
|
+
backupRecoveryDescription: "Si les donn\xE9es locales sont endommag\xE9es, restaurez une sauvegarde JSON valide.",
|
|
376
|
+
syncPending: "Des modifications attendent la synchronisation.",
|
|
377
|
+
syncSynced: "Toutes les modifications sont synchronis\xE9es.",
|
|
378
|
+
syncConflict: "Certaines modifications n\xE9cessitent une r\xE9solution de conflit."
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
// src/locales/id.ts
|
|
382
|
+
var ID_LABELS = {
|
|
383
|
+
save: "Simpan",
|
|
384
|
+
saved: "Tersimpan",
|
|
385
|
+
remove: "Hapus",
|
|
386
|
+
loading: "Memuat\u2026",
|
|
387
|
+
saving: "Menyimpan\u2026",
|
|
388
|
+
syncing: "Menyinkronkan\u2026",
|
|
389
|
+
error: "Terjadi kesalahan.",
|
|
390
|
+
allTags: "Semua",
|
|
391
|
+
tags: "Tag",
|
|
392
|
+
filterTags: "Filter item tersimpan berdasarkan tag",
|
|
393
|
+
note: "Catatan",
|
|
394
|
+
saveNote: "Simpan catatan",
|
|
395
|
+
noItems: "Belum ada item tersimpan.",
|
|
396
|
+
loadingItems: "Memuat item tersimpan\u2026",
|
|
397
|
+
errorItems: "Tidak dapat memuat item tersimpan.",
|
|
398
|
+
search: "Cari item tersimpan",
|
|
399
|
+
sort: "Urutkan item tersimpan",
|
|
400
|
+
newest: "Terbaru dahulu",
|
|
401
|
+
oldest: "Terlama dahulu",
|
|
402
|
+
savedNewest: "Paling baru disimpan dahulu",
|
|
403
|
+
savedOldest: "Paling lama disimpan dahulu",
|
|
404
|
+
updatedNewest: "Paling baru diperbarui dahulu",
|
|
405
|
+
updatedOldest: "Paling lama diperbarui dahulu",
|
|
406
|
+
previousPage: "Halaman sebelumnya",
|
|
407
|
+
nextPage: "Halaman berikutnya",
|
|
408
|
+
pagination: "Paginasi",
|
|
409
|
+
page: "Halaman",
|
|
410
|
+
selectItems: "Pilih item tersimpan",
|
|
411
|
+
selectedCount: "dipilih",
|
|
412
|
+
deleteSelected: "Hapus yang dipilih",
|
|
413
|
+
tagsToApply: "Tag yang akan diterapkan",
|
|
414
|
+
applyTags: "Terapkan tag",
|
|
415
|
+
savedMessage: "Item tersimpan.",
|
|
416
|
+
removedMessage: "Item dihapus.",
|
|
417
|
+
undo: "Urungkan",
|
|
418
|
+
undoAvailable: "Item dihapus. Urungkan?",
|
|
419
|
+
selectionScope: "Cakupan pilihan",
|
|
420
|
+
currentPage: "Halaman saat ini",
|
|
421
|
+
searchResults: "Hasil pencarian saat ini",
|
|
422
|
+
allItems: "Semua item tersimpan",
|
|
423
|
+
statusAvailable: "Tersedia",
|
|
424
|
+
noteSavedMessage: "Catatan tersimpan.",
|
|
425
|
+
exportData: "Ekspor JSON",
|
|
426
|
+
importData: "Impor JSON",
|
|
427
|
+
importMode: "Mode impor",
|
|
428
|
+
merge: "Gabungkan",
|
|
429
|
+
replace: "Ganti",
|
|
430
|
+
importedCount: "item diimpor",
|
|
431
|
+
failedCount: "item gagal",
|
|
432
|
+
storageQuotaError: "Penyimpanan penuh. Kosongkan ruang lalu coba lagi.",
|
|
433
|
+
statusExpired: "Kedaluwarsa",
|
|
434
|
+
statusRemoved: "Dihapus",
|
|
435
|
+
statusDeleted: "Terhapus",
|
|
436
|
+
statusPrivate: "Pribadi",
|
|
437
|
+
statusUnknown: "Tidak tersedia",
|
|
438
|
+
retry: "Coba lagi",
|
|
439
|
+
removeFromList: "Hapus dari daftar",
|
|
440
|
+
pruneStale: "Hapus item yang tidak tersedia",
|
|
441
|
+
retrySync: "Coba sinkronisasi lagi",
|
|
442
|
+
resolveSync: "Selesaikan konflik",
|
|
443
|
+
keepLocal: "Pertahankan versi lokal",
|
|
444
|
+
useServer: "Gunakan versi server",
|
|
445
|
+
manualMerge: "Gabungkan manual",
|
|
446
|
+
close: "Tutup",
|
|
447
|
+
backupRecovery: "Pulihkan dari cadangan",
|
|
448
|
+
backupRecoveryDescription: "Jika data sinkronisasi lokal rusak, pulihkan cadangan JSON yang valid.",
|
|
449
|
+
syncPending: "Ada perubahan yang menunggu sinkronisasi.",
|
|
450
|
+
syncSynced: "Semua perubahan telah disinkronkan.",
|
|
451
|
+
syncConflict: "Beberapa perubahan memerlukan penyelesaian konflik."
|
|
452
|
+
};
|
|
453
|
+
|
|
454
|
+
// src/locales/it.ts
|
|
455
|
+
var IT_LABELS = {
|
|
456
|
+
save: "Salva",
|
|
457
|
+
saved: "Salvato",
|
|
458
|
+
remove: "Rimuovi",
|
|
459
|
+
loading: "Caricamento\u2026",
|
|
460
|
+
saving: "Salvataggio\u2026",
|
|
461
|
+
syncing: "Sincronizzazione\u2026",
|
|
462
|
+
error: "Si \xE8 verificato un errore.",
|
|
463
|
+
allTags: "Tutti",
|
|
464
|
+
tags: "Tag",
|
|
465
|
+
filterTags: "Filtra gli elementi salvati per tag",
|
|
466
|
+
note: "Nota",
|
|
467
|
+
saveNote: "Salva nota",
|
|
468
|
+
noItems: "Nessun elemento salvato.",
|
|
469
|
+
loadingItems: "Caricamento degli elementi salvati\u2026",
|
|
470
|
+
errorItems: "Impossibile caricare gli elementi salvati.",
|
|
471
|
+
search: "Cerca elementi salvati",
|
|
472
|
+
sort: "Ordina elementi salvati",
|
|
473
|
+
newest: "Pi\xF9 recenti prima",
|
|
474
|
+
oldest: "Pi\xF9 vecchi prima",
|
|
475
|
+
savedNewest: "Salvati pi\xF9 di recente prima",
|
|
476
|
+
savedOldest: "Salvati meno di recente prima",
|
|
477
|
+
updatedNewest: "Aggiornati pi\xF9 di recente prima",
|
|
478
|
+
updatedOldest: "Aggiornati meno di recente prima",
|
|
479
|
+
previousPage: "Pagina precedente",
|
|
480
|
+
nextPage: "Pagina successiva",
|
|
481
|
+
pagination: "Paginazione",
|
|
482
|
+
page: "Pagina",
|
|
483
|
+
selectItems: "Seleziona elementi salvati",
|
|
484
|
+
selectedCount: "selezionati",
|
|
485
|
+
deleteSelected: "Elimina selezionati",
|
|
486
|
+
tagsToApply: "Tag da applicare",
|
|
487
|
+
applyTags: "Applica tag",
|
|
488
|
+
savedMessage: "Elemento salvato.",
|
|
489
|
+
removedMessage: "Elemento rimosso.",
|
|
490
|
+
undo: "Annulla",
|
|
491
|
+
undoAvailable: "Elemento rimosso. Annullare?",
|
|
492
|
+
selectionScope: "Ambito della selezione",
|
|
493
|
+
currentPage: "Pagina corrente",
|
|
494
|
+
searchResults: "Risultati di ricerca correnti",
|
|
495
|
+
allItems: "Tutti gli elementi salvati",
|
|
496
|
+
statusAvailable: "Disponibile",
|
|
497
|
+
noteSavedMessage: "Nota salvata.",
|
|
498
|
+
exportData: "Esporta JSON",
|
|
499
|
+
importData: "Importa JSON",
|
|
500
|
+
importMode: "Modalit\xE0 di importazione",
|
|
501
|
+
merge: "Unisci",
|
|
502
|
+
replace: "Sostituisci",
|
|
503
|
+
importedCount: "elementi importati",
|
|
504
|
+
failedCount: "elementi non riusciti",
|
|
505
|
+
storageQuotaError: "Lo spazio di archiviazione \xE8 pieno. Libera spazio e riprova.",
|
|
506
|
+
statusExpired: "Scaduto",
|
|
507
|
+
statusRemoved: "Rimosso",
|
|
508
|
+
statusDeleted: "Eliminato",
|
|
509
|
+
statusPrivate: "Privato",
|
|
510
|
+
statusUnknown: "Non disponibile",
|
|
511
|
+
retry: "Riprova",
|
|
512
|
+
removeFromList: "Rimuovi dall'elenco",
|
|
513
|
+
pruneStale: "Rimuovi elementi non disponibili",
|
|
514
|
+
retrySync: "Riprova sincronizzazione",
|
|
515
|
+
resolveSync: "Risolvi conflitti",
|
|
516
|
+
keepLocal: "Mantieni versione locale",
|
|
517
|
+
useServer: "Usa versione del server",
|
|
518
|
+
manualMerge: "Unione manuale",
|
|
519
|
+
close: "Chiudi",
|
|
520
|
+
backupRecovery: "Ripristina dal backup",
|
|
521
|
+
backupRecoveryDescription: "Se i dati locali sono danneggiati, ripristina un backup JSON valido.",
|
|
522
|
+
syncPending: "Ci sono modifiche in attesa di sincronizzazione.",
|
|
523
|
+
syncSynced: "Tutte le modifiche sono sincronizzate.",
|
|
524
|
+
syncConflict: "Alcune modifiche richiedono la risoluzione di un conflitto."
|
|
525
|
+
};
|
|
526
|
+
|
|
527
|
+
// src/locales/ja.ts
|
|
528
|
+
var JA_LABELS = {
|
|
529
|
+
save: "\u4FDD\u5B58",
|
|
530
|
+
saved: "\u4FDD\u5B58\u6E08\u307F",
|
|
531
|
+
remove: "\u524A\u9664",
|
|
532
|
+
loading: "\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",
|
|
533
|
+
saving: "\u4FDD\u5B58\u4E2D\u2026",
|
|
534
|
+
syncing: "\u540C\u671F\u4E2D\u2026",
|
|
535
|
+
error: "\u554F\u984C\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002",
|
|
536
|
+
allTags: "\u3059\u3079\u3066",
|
|
537
|
+
tags: "\u30BF\u30B0",
|
|
538
|
+
filterTags: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u30BF\u30B0\u3067\u7D5E\u308A\u8FBC\u3080",
|
|
539
|
+
note: "\u30E1\u30E2",
|
|
540
|
+
saveNote: "\u30E1\u30E2\u3092\u4FDD\u5B58",
|
|
541
|
+
noItems: "\u4FDD\u5B58\u3055\u308C\u305F\u30A2\u30A4\u30C6\u30E0\u306F\u3042\u308A\u307E\u305B\u3093\u3002",
|
|
542
|
+
loadingItems: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u8AAD\u307F\u8FBC\u307F\u4E2D\u2026",
|
|
543
|
+
errorItems: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\u3067\u3057\u305F\u3002",
|
|
544
|
+
search: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u691C\u7D22",
|
|
545
|
+
sort: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u4E26\u3079\u66FF\u3048",
|
|
546
|
+
newest: "\u65B0\u3057\u3044\u9806",
|
|
547
|
+
oldest: "\u53E4\u3044\u9806",
|
|
548
|
+
savedNewest: "\u4FDD\u5B58\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806",
|
|
549
|
+
savedOldest: "\u4FDD\u5B58\u65E5\u6642\u306E\u53E4\u3044\u9806",
|
|
550
|
+
updatedNewest: "\u66F4\u65B0\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806",
|
|
551
|
+
updatedOldest: "\u66F4\u65B0\u65E5\u6642\u306E\u53E4\u3044\u9806",
|
|
552
|
+
previousPage: "\u524D\u306E\u30DA\u30FC\u30B8",
|
|
553
|
+
nextPage: "\u6B21\u306E\u30DA\u30FC\u30B8",
|
|
554
|
+
pagination: "\u30DA\u30FC\u30B8\u30CD\u30FC\u30B7\u30E7\u30F3",
|
|
555
|
+
page: "\u30DA\u30FC\u30B8",
|
|
556
|
+
selectItems: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u9078\u629E",
|
|
557
|
+
selectedCount: "\u4EF6\u3092\u9078\u629E\u4E2D",
|
|
558
|
+
deleteSelected: "\u9078\u629E\u9805\u76EE\u3092\u524A\u9664",
|
|
559
|
+
tagsToApply: "\u9069\u7528\u3059\u308B\u30BF\u30B0",
|
|
560
|
+
applyTags: "\u30BF\u30B0\u3092\u9069\u7528",
|
|
561
|
+
savedMessage: "\u30A2\u30A4\u30C6\u30E0\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F\u3002",
|
|
562
|
+
removedMessage: "\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3057\u307E\u3057\u305F\u3002",
|
|
563
|
+
undo: "\u5143\u306B\u623B\u3059",
|
|
564
|
+
undoAvailable: "\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3057\u307E\u3057\u305F\u3002\u5143\u306B\u623B\u3057\u307E\u3059\u304B\uFF1F",
|
|
565
|
+
selectionScope: "\u9078\u629E\u7BC4\u56F2",
|
|
566
|
+
currentPage: "\u8868\u793A\u4E2D\u306E\u30DA\u30FC\u30B8",
|
|
567
|
+
searchResults: "\u73FE\u5728\u306E\u691C\u7D22\u7D50\u679C\u5168\u4F53",
|
|
568
|
+
allItems: "\u3059\u3079\u3066\u306E\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0",
|
|
569
|
+
statusAvailable: "\u5229\u7528\u53EF\u80FD",
|
|
570
|
+
noteSavedMessage: "\u30E1\u30E2\u3092\u4FDD\u5B58\u3057\u307E\u3057\u305F\u3002",
|
|
571
|
+
exportData: "JSON\u3092\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8",
|
|
572
|
+
importData: "JSON\u3092\u30A4\u30F3\u30DD\u30FC\u30C8",
|
|
573
|
+
importMode: "\u30A4\u30F3\u30DD\u30FC\u30C8\u65B9\u6CD5",
|
|
574
|
+
merge: "\u7D71\u5408",
|
|
575
|
+
replace: "\u7F6E\u304D\u63DB\u3048",
|
|
576
|
+
importedCount: "\u4EF6\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u307E\u3057\u305F",
|
|
577
|
+
failedCount: "\u4EF6\u306B\u5931\u6557\u3057\u307E\u3057\u305F",
|
|
578
|
+
storageQuotaError: "\u4FDD\u5B58\u5BB9\u91CF\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\u7A7A\u304D\u5BB9\u91CF\u3092\u78BA\u4FDD\u3057\u3066\u518D\u8A66\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
579
|
+
statusExpired: "\u671F\u9650\u5207\u308C",
|
|
580
|
+
statusRemoved: "\u524A\u9664\u6E08\u307F",
|
|
581
|
+
statusDeleted: "\u524A\u9664\u6E08\u307F",
|
|
582
|
+
statusPrivate: "\u975E\u516C\u958B",
|
|
583
|
+
statusUnknown: "\u5229\u7528\u4E0D\u53EF",
|
|
584
|
+
retry: "\u518D\u53D6\u5F97",
|
|
585
|
+
removeFromList: "\u4E00\u89A7\u304B\u3089\u524A\u9664",
|
|
586
|
+
pruneStale: "\u5229\u7528\u3067\u304D\u306A\u3044\u9805\u76EE\u3092\u524A\u9664",
|
|
587
|
+
retrySync: "\u540C\u671F\u3092\u518D\u8A66\u884C",
|
|
588
|
+
resolveSync: "\u7AF6\u5408\u3092\u89E3\u6C7A",
|
|
589
|
+
keepLocal: "\u30ED\u30FC\u30AB\u30EB\u3092\u512A\u5148",
|
|
590
|
+
useServer: "\u30B5\u30FC\u30D0\u30FC\u3092\u512A\u5148",
|
|
591
|
+
manualMerge: "\u624B\u52D5\u3067\u7D71\u5408",
|
|
592
|
+
close: "\u9589\u3058\u308B",
|
|
593
|
+
backupRecovery: "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u304B\u3089\u5FA9\u5143",
|
|
594
|
+
backupRecoveryDescription: "\u30ED\u30FC\u30AB\u30EB\u306E\u540C\u671F\u30C7\u30FC\u30BF\u304C\u7834\u640D\u3057\u305F\u5834\u5408\u306F\u3001\u6B63\u5E38\u306AJSON\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u304B\u3089\u5FA9\u5143\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
595
|
+
syncPending: "\u540C\u671F\u5F85\u3061\u306E\u5909\u66F4\u304C\u3042\u308A\u307E\u3059\u3002",
|
|
596
|
+
syncSynced: "\u3059\u3079\u3066\u306E\u5909\u66F4\u3092\u540C\u671F\u3057\u307E\u3057\u305F\u3002",
|
|
597
|
+
syncConflict: "\u7AF6\u5408\u3057\u3066\u3044\u308B\u5909\u66F4\u304C\u3042\u308A\u307E\u3059\u3002\u89E3\u6C7A\u3057\u3066\u304F\u3060\u3055\u3044\u3002"
|
|
72
598
|
};
|
|
599
|
+
|
|
600
|
+
// src/locales/ko.ts
|
|
601
|
+
var KO_LABELS = {
|
|
602
|
+
save: "\uC800\uC7A5",
|
|
603
|
+
saved: "\uC800\uC7A5\uB428",
|
|
604
|
+
remove: "\uC0AD\uC81C",
|
|
605
|
+
loading: "\uB85C\uB4DC \uC911\u2026",
|
|
606
|
+
saving: "\uC800\uC7A5 \uC911\u2026",
|
|
607
|
+
syncing: "\uB3D9\uAE30\uD654 \uC911\u2026",
|
|
608
|
+
error: "\uBB38\uC81C\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4.",
|
|
609
|
+
allTags: "\uBAA8\uB450",
|
|
610
|
+
tags: "\uD0DC\uADF8",
|
|
611
|
+
filterTags: "\uD0DC\uADF8\uB85C \uC800\uC7A5 \uD56D\uBAA9 \uD544\uD130\uB9C1",
|
|
612
|
+
note: "\uBA54\uBAA8",
|
|
613
|
+
saveNote: "\uBA54\uBAA8 \uC800\uC7A5",
|
|
614
|
+
noItems: "\uC800\uC7A5\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
615
|
+
loadingItems: "\uC800\uC7A5 \uD56D\uBAA9\uC744 \uBD88\uB7EC\uC624\uB294 \uC911\u2026",
|
|
616
|
+
errorItems: "\uC800\uC7A5 \uD56D\uBAA9\uC744 \uBD88\uB7EC\uC624\uC9C0 \uBABB\uD588\uC2B5\uB2C8\uB2E4.",
|
|
617
|
+
search: "\uC800\uC7A5 \uD56D\uBAA9 \uAC80\uC0C9",
|
|
618
|
+
sort: "\uC800\uC7A5 \uD56D\uBAA9 \uC815\uB82C",
|
|
619
|
+
newest: "\uCD5C\uC2E0\uC21C",
|
|
620
|
+
oldest: "\uC624\uB798\uB41C\uC21C",
|
|
621
|
+
savedNewest: "\uC800\uC7A5\uC77C \uCD5C\uC2E0\uC21C",
|
|
622
|
+
savedOldest: "\uC800\uC7A5\uC77C \uC624\uB798\uB41C\uC21C",
|
|
623
|
+
updatedNewest: "\uC218\uC815\uC77C \uCD5C\uC2E0\uC21C",
|
|
624
|
+
updatedOldest: "\uC218\uC815\uC77C \uC624\uB798\uB41C\uC21C",
|
|
625
|
+
previousPage: "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
626
|
+
nextPage: "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
627
|
+
pagination: "\uD398\uC774\uC9C0 \uB9E4\uAE40",
|
|
628
|
+
page: "\uD398\uC774\uC9C0",
|
|
629
|
+
selectItems: "\uC800\uC7A5 \uD56D\uBAA9 \uC120\uD0DD",
|
|
630
|
+
selectedCount: "\uAC1C \uC120\uD0DD\uB428",
|
|
631
|
+
deleteSelected: "\uC120\uD0DD \uD56D\uBAA9 \uC0AD\uC81C",
|
|
632
|
+
tagsToApply: "\uC801\uC6A9\uD560 \uD0DC\uADF8",
|
|
633
|
+
applyTags: "\uD0DC\uADF8 \uC801\uC6A9",
|
|
634
|
+
savedMessage: "\uD56D\uBAA9\uC744 \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.",
|
|
635
|
+
removedMessage: "\uD56D\uBAA9\uC744 \uC0AD\uC81C\uD588\uC2B5\uB2C8\uB2E4.",
|
|
636
|
+
undo: "\uC2E4\uD589 \uCDE8\uC18C",
|
|
637
|
+
undoAvailable: "\uD56D\uBAA9\uC744 \uC0AD\uC81C\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uCDE8\uC18C\uD560\uAE4C\uC694?",
|
|
638
|
+
selectionScope: "\uC120\uD0DD \uBC94\uC704",
|
|
639
|
+
currentPage: "\uD604\uC7AC \uD398\uC774\uC9C0",
|
|
640
|
+
searchResults: "\uD604\uC7AC \uAC80\uC0C9 \uACB0\uACFC \uC804\uCCB4",
|
|
641
|
+
allItems: "\uBAA8\uB4E0 \uC800\uC7A5 \uD56D\uBAA9",
|
|
642
|
+
statusAvailable: "\uC0AC\uC6A9 \uAC00\uB2A5",
|
|
643
|
+
noteSavedMessage: "\uBA54\uBAA8\uB97C \uC800\uC7A5\uD588\uC2B5\uB2C8\uB2E4.",
|
|
644
|
+
exportData: "JSON \uB0B4\uBCF4\uB0B4\uAE30",
|
|
645
|
+
importData: "JSON \uAC00\uC838\uC624\uAE30",
|
|
646
|
+
importMode: "\uAC00\uC838\uC624\uAE30 \uBC29\uC2DD",
|
|
647
|
+
merge: "\uBCD1\uD569",
|
|
648
|
+
replace: "\uAD50\uCCB4",
|
|
649
|
+
importedCount: "\uAC1C \uAC00\uC838\uC634",
|
|
650
|
+
failedCount: "\uAC1C \uC2E4\uD328",
|
|
651
|
+
storageQuotaError: "\uC800\uC7A5 \uACF5\uAC04\uC774 \uBD80\uC871\uD569\uB2C8\uB2E4. \uACF5\uAC04\uC744 \uD655\uBCF4\uD55C \uD6C4 \uB2E4\uC2DC \uC2DC\uB3C4\uD558\uC138\uC694.",
|
|
652
|
+
statusExpired: "\uB9CC\uB8CC\uB428",
|
|
653
|
+
statusRemoved: "\uC81C\uAC70\uB428",
|
|
654
|
+
statusDeleted: "\uC0AD\uC81C\uB428",
|
|
655
|
+
statusPrivate: "\uBE44\uACF5\uAC1C",
|
|
656
|
+
statusUnknown: "\uC0AC\uC6A9\uD560 \uC218 \uC5C6\uC74C",
|
|
657
|
+
retry: "\uB2E4\uC2DC \uC2DC\uB3C4",
|
|
658
|
+
removeFromList: "\uBAA9\uB85D\uC5D0\uC11C \uC0AD\uC81C",
|
|
659
|
+
pruneStale: "\uC0AC\uC6A9\uD560 \uC218 \uC5C6\uB294 \uD56D\uBAA9 \uC0AD\uC81C",
|
|
660
|
+
retrySync: "\uB3D9\uAE30\uD654 \uB2E4\uC2DC \uC2DC\uB3C4",
|
|
661
|
+
resolveSync: "\uCDA9\uB3CC \uD574\uACB0",
|
|
662
|
+
keepLocal: "\uB85C\uCEEC \uBC84\uC804 \uC720\uC9C0",
|
|
663
|
+
useServer: "\uC11C\uBC84 \uBC84\uC804 \uC0AC\uC6A9",
|
|
664
|
+
manualMerge: "\uC218\uB3D9 \uBCD1\uD569",
|
|
665
|
+
close: "\uB2EB\uAE30",
|
|
666
|
+
backupRecovery: "\uBC31\uC5C5\uC5D0\uC11C \uBCF5\uC6D0",
|
|
667
|
+
backupRecoveryDescription: "\uB85C\uCEEC \uB3D9\uAE30\uD654 \uB370\uC774\uD130\uAC00 \uC190\uC0C1\uB41C \uACBD\uC6B0 \uC815\uC0C1\uC801\uC778 JSON \uBC31\uC5C5\uC744 \uBCF5\uC6D0\uD558\uC138\uC694.",
|
|
668
|
+
syncPending: "\uB3D9\uAE30\uD654 \uB300\uAE30 \uC911\uC778 \uBCC0\uACBD \uC0AC\uD56D\uC774 \uC788\uC2B5\uB2C8\uB2E4.",
|
|
669
|
+
syncSynced: "\uBAA8\uB4E0 \uBCC0\uACBD \uC0AC\uD56D\uC774 \uB3D9\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4.",
|
|
670
|
+
syncConflict: "\uCDA9\uB3CC\uC744 \uD574\uACB0\uD574\uC57C \uD558\uB294 \uBCC0\uACBD \uC0AC\uD56D\uC774 \uC788\uC2B5\uB2C8\uB2E4."
|
|
671
|
+
};
|
|
672
|
+
|
|
673
|
+
// src/locales/ms.ts
|
|
674
|
+
var MS_LABELS = {
|
|
675
|
+
save: "Simpan",
|
|
676
|
+
saved: "Disimpan",
|
|
677
|
+
remove: "Buang",
|
|
678
|
+
loading: "Memuatkan\u2026",
|
|
679
|
+
saving: "Menyimpan\u2026",
|
|
680
|
+
syncing: "Menyegerakkan\u2026",
|
|
681
|
+
error: "Ralat telah berlaku.",
|
|
682
|
+
allTags: "Semua",
|
|
683
|
+
tags: "Tag",
|
|
684
|
+
filterTags: "Tapis item yang disimpan mengikut tag",
|
|
685
|
+
note: "Nota",
|
|
686
|
+
saveNote: "Simpan nota",
|
|
687
|
+
noItems: "Tiada item disimpan.",
|
|
688
|
+
loadingItems: "Memuatkan item yang disimpan\u2026",
|
|
689
|
+
errorItems: "Tidak dapat memuatkan item yang disimpan.",
|
|
690
|
+
search: "Cari item yang disimpan",
|
|
691
|
+
sort: "Isih item yang disimpan",
|
|
692
|
+
newest: "Terbaharu dahulu",
|
|
693
|
+
oldest: "Terlama dahulu",
|
|
694
|
+
savedNewest: "Disimpan paling baharu dahulu",
|
|
695
|
+
savedOldest: "Disimpan paling lama dahulu",
|
|
696
|
+
updatedNewest: "Dikemas kini paling baharu dahulu",
|
|
697
|
+
updatedOldest: "Dikemas kini paling lama dahulu",
|
|
698
|
+
previousPage: "Halaman sebelumnya",
|
|
699
|
+
nextPage: "Halaman seterusnya",
|
|
700
|
+
pagination: "Penomboran halaman",
|
|
701
|
+
page: "Halaman",
|
|
702
|
+
selectItems: "Pilih item yang disimpan",
|
|
703
|
+
selectedCount: "dipilih",
|
|
704
|
+
deleteSelected: "Padam pilihan",
|
|
705
|
+
tagsToApply: "Tag untuk digunakan",
|
|
706
|
+
applyTags: "Gunakan tag",
|
|
707
|
+
savedMessage: "Item disimpan.",
|
|
708
|
+
removedMessage: "Item dibuang.",
|
|
709
|
+
undo: "Buat asal",
|
|
710
|
+
undoAvailable: "Item dibuang. Buat asal?",
|
|
711
|
+
selectionScope: "Skop pilihan",
|
|
712
|
+
currentPage: "Halaman semasa",
|
|
713
|
+
searchResults: "Hasil carian semasa",
|
|
714
|
+
allItems: "Semua item yang disimpan",
|
|
715
|
+
statusAvailable: "Tersedia",
|
|
716
|
+
noteSavedMessage: "Nota disimpan.",
|
|
717
|
+
exportData: "Eksport JSON",
|
|
718
|
+
importData: "Import JSON",
|
|
719
|
+
importMode: "Mod import",
|
|
720
|
+
merge: "Gabung",
|
|
721
|
+
replace: "Ganti",
|
|
722
|
+
importedCount: "item diimport",
|
|
723
|
+
failedCount: "item gagal",
|
|
724
|
+
storageQuotaError: "Storan penuh. Kosongkan ruang dan cuba lagi.",
|
|
725
|
+
statusExpired: "Tamat tempoh",
|
|
726
|
+
statusRemoved: "Dibuang",
|
|
727
|
+
statusDeleted: "Dipadam",
|
|
728
|
+
statusPrivate: "Peribadi",
|
|
729
|
+
statusUnknown: "Tidak tersedia",
|
|
730
|
+
retry: "Cuba lagi",
|
|
731
|
+
removeFromList: "Buang daripada senarai",
|
|
732
|
+
pruneStale: "Buang item yang tidak tersedia",
|
|
733
|
+
retrySync: "Cuba penyegerakan lagi",
|
|
734
|
+
resolveSync: "Selesaikan konflik",
|
|
735
|
+
keepLocal: "Kekalkan versi setempat",
|
|
736
|
+
useServer: "Gunakan versi pelayan",
|
|
737
|
+
manualMerge: "Gabung secara manual",
|
|
738
|
+
close: "Tutup",
|
|
739
|
+
backupRecovery: "Pulihkan daripada sandaran",
|
|
740
|
+
backupRecoveryDescription: "Jika data penyegerakan setempat rosak, pulihkan sandaran JSON yang sah.",
|
|
741
|
+
syncPending: "Terdapat perubahan yang menunggu penyegerakan.",
|
|
742
|
+
syncSynced: "Semua perubahan telah disegerakkan.",
|
|
743
|
+
syncConflict: "Sesetengah perubahan memerlukan penyelesaian konflik."
|
|
744
|
+
};
|
|
745
|
+
|
|
746
|
+
// src/locales/pt-BR.ts
|
|
747
|
+
var PT_BR_LABELS = {
|
|
748
|
+
save: "Salvar",
|
|
749
|
+
saved: "Salvo",
|
|
750
|
+
remove: "Remover",
|
|
751
|
+
loading: "Carregando\u2026",
|
|
752
|
+
saving: "Salvando\u2026",
|
|
753
|
+
syncing: "Sincronizando\u2026",
|
|
754
|
+
error: "Ocorreu um erro.",
|
|
755
|
+
allTags: "Todos",
|
|
756
|
+
tags: "Tags",
|
|
757
|
+
filterTags: "Filtrar itens salvos por tag",
|
|
758
|
+
note: "Nota",
|
|
759
|
+
saveNote: "Salvar nota",
|
|
760
|
+
noItems: "Nenhum item salvo.",
|
|
761
|
+
loadingItems: "Carregando itens salvos\u2026",
|
|
762
|
+
errorItems: "N\xE3o foi poss\xEDvel carregar os itens salvos.",
|
|
763
|
+
search: "Pesquisar itens salvos",
|
|
764
|
+
sort: "Ordenar itens salvos",
|
|
765
|
+
newest: "Mais recentes primeiro",
|
|
766
|
+
oldest: "Mais antigos primeiro",
|
|
767
|
+
savedNewest: "Salvos mais recentemente primeiro",
|
|
768
|
+
savedOldest: "Salvos h\xE1 mais tempo primeiro",
|
|
769
|
+
updatedNewest: "Atualizados mais recentemente primeiro",
|
|
770
|
+
updatedOldest: "Atualizados h\xE1 mais tempo primeiro",
|
|
771
|
+
previousPage: "P\xE1gina anterior",
|
|
772
|
+
nextPage: "Pr\xF3xima p\xE1gina",
|
|
773
|
+
pagination: "Pagina\xE7\xE3o",
|
|
774
|
+
page: "P\xE1gina",
|
|
775
|
+
selectItems: "Selecionar itens salvos",
|
|
776
|
+
selectedCount: "selecionados",
|
|
777
|
+
deleteSelected: "Excluir selecionados",
|
|
778
|
+
tagsToApply: "Tags a aplicar",
|
|
779
|
+
applyTags: "Aplicar tags",
|
|
780
|
+
savedMessage: "Item salvo.",
|
|
781
|
+
removedMessage: "Item removido.",
|
|
782
|
+
undo: "Desfazer",
|
|
783
|
+
undoAvailable: "Item removido. Desfazer?",
|
|
784
|
+
selectionScope: "Escopo da sele\xE7\xE3o",
|
|
785
|
+
currentPage: "P\xE1gina atual",
|
|
786
|
+
searchResults: "Resultados da pesquisa atual",
|
|
787
|
+
allItems: "Todos os itens salvos",
|
|
788
|
+
statusAvailable: "Dispon\xEDvel",
|
|
789
|
+
noteSavedMessage: "Nota salva.",
|
|
790
|
+
exportData: "Exportar JSON",
|
|
791
|
+
importData: "Importar JSON",
|
|
792
|
+
importMode: "Modo de importa\xE7\xE3o",
|
|
793
|
+
merge: "Mesclar",
|
|
794
|
+
replace: "Substituir",
|
|
795
|
+
importedCount: "itens importados",
|
|
796
|
+
failedCount: "itens com falha",
|
|
797
|
+
storageQuotaError: "O armazenamento est\xE1 cheio. Libere espa\xE7o e tente novamente.",
|
|
798
|
+
statusExpired: "Expirado",
|
|
799
|
+
statusRemoved: "Removido",
|
|
800
|
+
statusDeleted: "Exclu\xEDdo",
|
|
801
|
+
statusPrivate: "Privado",
|
|
802
|
+
statusUnknown: "Indispon\xEDvel",
|
|
803
|
+
retry: "Tentar novamente",
|
|
804
|
+
removeFromList: "Remover da lista",
|
|
805
|
+
pruneStale: "Remover itens indispon\xEDveis",
|
|
806
|
+
retrySync: "Tentar sincronizar novamente",
|
|
807
|
+
resolveSync: "Resolver conflitos",
|
|
808
|
+
keepLocal: "Manter vers\xE3o local",
|
|
809
|
+
useServer: "Usar vers\xE3o do servidor",
|
|
810
|
+
manualMerge: "Mesclagem manual",
|
|
811
|
+
close: "Fechar",
|
|
812
|
+
backupRecovery: "Restaurar do backup",
|
|
813
|
+
backupRecoveryDescription: "Se os dados locais estiverem corrompidos, restaure um backup JSON v\xE1lido.",
|
|
814
|
+
syncPending: "H\xE1 altera\xE7\xF5es aguardando sincroniza\xE7\xE3o.",
|
|
815
|
+
syncSynced: "Todas as altera\xE7\xF5es foram sincronizadas.",
|
|
816
|
+
syncConflict: "Algumas altera\xE7\xF5es precisam de resolu\xE7\xE3o de conflito."
|
|
817
|
+
};
|
|
818
|
+
|
|
819
|
+
// src/locales/ru.ts
|
|
820
|
+
var RU_LABELS = {
|
|
821
|
+
save: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C",
|
|
822
|
+
saved: "\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u043E",
|
|
823
|
+
remove: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C",
|
|
824
|
+
loading: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430\u2026",
|
|
825
|
+
saving: "\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435\u2026",
|
|
826
|
+
syncing: "\u0421\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u044F\u2026",
|
|
827
|
+
error: "\u041F\u0440\u043E\u0438\u0437\u043E\u0448\u043B\u0430 \u043E\u0448\u0438\u0431\u043A\u0430.",
|
|
828
|
+
allTags: "\u0412\u0441\u0435",
|
|
829
|
+
tags: "\u0422\u0435\u0433\u0438",
|
|
830
|
+
filterTags: "\u0424\u0438\u043B\u044C\u0442\u0440\u043E\u0432\u0430\u0442\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u043F\u043E \u0442\u0435\u0433\u0443",
|
|
831
|
+
note: "\u0417\u0430\u043C\u0435\u0442\u043A\u0430",
|
|
832
|
+
saveNote: "\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0437\u0430\u043C\u0435\u0442\u043A\u0443",
|
|
833
|
+
noItems: "\u041D\u0435\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432.",
|
|
834
|
+
loadingItems: "\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\u2026",
|
|
835
|
+
errorItems: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B.",
|
|
836
|
+
search: "\u041F\u043E\u0438\u0441\u043A \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432",
|
|
837
|
+
sort: "\u0421\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0445 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432",
|
|
838
|
+
newest: "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043D\u043E\u0432\u044B\u0435",
|
|
839
|
+
oldest: "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u0442\u0430\u0440\u044B\u0435",
|
|
840
|
+
savedNewest: "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435",
|
|
841
|
+
savedOldest: "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0434\u0430\u0432\u043D\u043E \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435",
|
|
842
|
+
updatedNewest: "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u043D\u0435\u0434\u0430\u0432\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D\u043D\u044B\u0435",
|
|
843
|
+
updatedOldest: "\u0421\u043D\u0430\u0447\u0430\u043B\u0430 \u0434\u0430\u0432\u043D\u043E \u043E\u0431\u043D\u043E\u0432\u043B\u0451\u043D\u043D\u044B\u0435",
|
|
844
|
+
previousPage: "\u041F\u0440\u0435\u0434\u044B\u0434\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",
|
|
845
|
+
nextPage: "\u0421\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",
|
|
846
|
+
pagination: "\u041F\u0430\u0433\u0438\u043D\u0430\u0446\u0438\u044F",
|
|
847
|
+
page: "\u0421\u0442\u0440\u0430\u043D\u0438\u0446\u0430",
|
|
848
|
+
selectItems: "\u0412\u044B\u0431\u0440\u0430\u0442\u044C \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",
|
|
849
|
+
selectedCount: "\u0432\u044B\u0431\u0440\u0430\u043D\u043E",
|
|
850
|
+
deleteSelected: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0435",
|
|
851
|
+
tagsToApply: "\u0422\u0435\u0433\u0438 \u0434\u043B\u044F \u043F\u0440\u0438\u043C\u0435\u043D\u0435\u043D\u0438\u044F",
|
|
852
|
+
applyTags: "\u041F\u0440\u0438\u043C\u0435\u043D\u0438\u0442\u044C \u0442\u0435\u0433\u0438",
|
|
853
|
+
savedMessage: "\u042D\u043B\u0435\u043C\u0435\u043D\u0442 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D.",
|
|
854
|
+
removedMessage: "\u042D\u043B\u0435\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0451\u043D.",
|
|
855
|
+
undo: "\u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C",
|
|
856
|
+
undoAvailable: "\u042D\u043B\u0435\u043C\u0435\u043D\u0442 \u0443\u0434\u0430\u043B\u0451\u043D. \u041E\u0442\u043C\u0435\u043D\u0438\u0442\u044C?",
|
|
857
|
+
selectionScope: "\u041E\u0431\u043B\u0430\u0441\u0442\u044C \u0432\u044B\u0431\u043E\u0440\u0430",
|
|
858
|
+
currentPage: "\u0422\u0435\u043A\u0443\u0449\u0430\u044F \u0441\u0442\u0440\u0430\u043D\u0438\u0446\u0430",
|
|
859
|
+
searchResults: "\u0422\u0435\u043A\u0443\u0449\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u044B \u043F\u043E\u0438\u0441\u043A\u0430",
|
|
860
|
+
allItems: "\u0412\u0441\u0435 \u0441\u043E\u0445\u0440\u0430\u043D\u0451\u043D\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",
|
|
861
|
+
statusAvailable: "\u0414\u043E\u0441\u0442\u0443\u043F\u0435\u043D",
|
|
862
|
+
noteSavedMessage: "\u0417\u0430\u043C\u0435\u0442\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0430.",
|
|
863
|
+
exportData: "\u042D\u043A\u0441\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C JSON",
|
|
864
|
+
importData: "\u0418\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C JSON",
|
|
865
|
+
importMode: "\u0420\u0435\u0436\u0438\u043C \u0438\u043C\u043F\u043E\u0440\u0442\u0430",
|
|
866
|
+
merge: "\u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0438\u0442\u044C",
|
|
867
|
+
replace: "\u0417\u0430\u043C\u0435\u043D\u0438\u0442\u044C",
|
|
868
|
+
importedCount: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u043D\u043E",
|
|
869
|
+
failedCount: "\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0438\u043C\u043F\u043E\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C",
|
|
870
|
+
storageQuotaError: "\u0425\u0440\u0430\u043D\u0438\u043B\u0438\u0449\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u043E. \u041E\u0441\u0432\u043E\u0431\u043E\u0434\u0438\u0442\u0435 \u043C\u0435\u0441\u0442\u043E \u0438 \u043F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u043E\u043F\u044B\u0442\u043A\u0443.",
|
|
871
|
+
statusExpired: "\u0418\u0441\u0442\u0451\u043A \u0441\u0440\u043E\u043A",
|
|
872
|
+
statusRemoved: "\u0423\u0434\u0430\u043B\u0451\u043D",
|
|
873
|
+
statusDeleted: "\u0423\u0434\u0430\u043B\u0451\u043D \u043D\u0430\u0432\u0441\u0435\u0433\u0434\u0430",
|
|
874
|
+
statusPrivate: "\u041F\u0440\u0438\u0432\u0430\u0442\u043D\u044B\u0439",
|
|
875
|
+
statusUnknown: "\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u0435\u043D",
|
|
876
|
+
retry: "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C",
|
|
877
|
+
removeFromList: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430",
|
|
878
|
+
pruneStale: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0435 \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B",
|
|
879
|
+
retrySync: "\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u044E",
|
|
880
|
+
resolveSync: "\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u044B",
|
|
881
|
+
keepLocal: "\u041E\u0441\u0442\u0430\u0432\u0438\u0442\u044C \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u0443\u044E \u0432\u0435\u0440\u0441\u0438\u044E",
|
|
882
|
+
useServer: "\u0418\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u0432\u0435\u0440\u0441\u0438\u044E \u0441\u0435\u0440\u0432\u0435\u0440\u0430",
|
|
883
|
+
manualMerge: "\u041E\u0431\u044A\u0435\u0434\u0438\u043D\u0438\u0442\u044C \u0432\u0440\u0443\u0447\u043D\u0443\u044E",
|
|
884
|
+
close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
|
|
885
|
+
backupRecovery: "\u0412\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0438\u0437 \u0440\u0435\u0437\u0435\u0440\u0432\u043D\u043E\u0439 \u043A\u043E\u043F\u0438\u0438",
|
|
886
|
+
backupRecoveryDescription: "\u0415\u0441\u043B\u0438 \u043B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u043F\u043E\u0432\u0440\u0435\u0436\u0434\u0435\u043D\u044B, \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u0435 \u0440\u0430\u0431\u043E\u0447\u0443\u044E JSON-\u043A\u043E\u043F\u0438\u044E.",
|
|
887
|
+
syncPending: "\u0415\u0441\u0442\u044C \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F, \u043E\u0436\u0438\u0434\u0430\u044E\u0449\u0438\u0435 \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0430\u0446\u0438\u0438.",
|
|
888
|
+
syncSynced: "\u0412\u0441\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0441\u0438\u043D\u0445\u0440\u043E\u043D\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u043D\u044B.",
|
|
889
|
+
syncConflict: "\u041D\u0435\u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u0438\u044F \u0442\u0440\u0435\u0431\u0443\u044E\u0442 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F \u043A\u043E\u043D\u0444\u043B\u0438\u043A\u0442\u0430."
|
|
890
|
+
};
|
|
891
|
+
|
|
892
|
+
// src/locales/th.ts
|
|
893
|
+
var TH_LABELS = {
|
|
894
|
+
save: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01",
|
|
895
|
+
saved: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E41\u0E25\u0E49\u0E27",
|
|
896
|
+
remove: "\u0E25\u0E1A",
|
|
897
|
+
loading: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14\u2026",
|
|
898
|
+
saving: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u2026",
|
|
899
|
+
syncing: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E0B\u0E34\u0E07\u0E04\u0E4C\u2026",
|
|
900
|
+
error: "\u0E40\u0E01\u0E34\u0E14\u0E02\u0E49\u0E2D\u0E1C\u0E34\u0E14\u0E1E\u0E25\u0E32\u0E14",
|
|
901
|
+
allTags: "\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",
|
|
902
|
+
tags: "\u0E41\u0E17\u0E47\u0E01",
|
|
903
|
+
filterTags: "\u0E01\u0E23\u0E2D\u0E07\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E14\u0E49\u0E27\u0E22\u0E41\u0E17\u0E47\u0E01",
|
|
904
|
+
note: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E22\u0E48\u0E2D",
|
|
905
|
+
saveNote: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E22\u0E48\u0E2D",
|
|
906
|
+
noItems: "\u0E44\u0E21\u0E48\u0E21\u0E35\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E44\u0E27\u0E49",
|
|
907
|
+
loadingItems: "\u0E01\u0E33\u0E25\u0E31\u0E07\u0E42\u0E2B\u0E25\u0E14\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u2026",
|
|
908
|
+
errorItems: "\u0E42\u0E2B\u0E25\u0E14\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49",
|
|
909
|
+
search: "\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01",
|
|
910
|
+
sort: "\u0E40\u0E23\u0E35\u0E22\u0E07\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01",
|
|
911
|
+
newest: "\u0E43\u0E2B\u0E21\u0E48\u0E2A\u0E38\u0E14\u0E01\u0E48\u0E2D\u0E19",
|
|
912
|
+
oldest: "\u0E40\u0E01\u0E48\u0E32\u0E2A\u0E38\u0E14\u0E01\u0E48\u0E2D\u0E19",
|
|
913
|
+
savedNewest: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E43\u0E2B\u0E21\u0E48\u0E2A\u0E38\u0E14\u0E01\u0E48\u0E2D\u0E19",
|
|
914
|
+
savedOldest: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E40\u0E01\u0E48\u0E32\u0E2A\u0E38\u0E14\u0E01\u0E48\u0E2D\u0E19",
|
|
915
|
+
updatedNewest: "\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E43\u0E2B\u0E21\u0E48\u0E2A\u0E38\u0E14\u0E01\u0E48\u0E2D\u0E19",
|
|
916
|
+
updatedOldest: "\u0E2D\u0E31\u0E1B\u0E40\u0E14\u0E15\u0E40\u0E01\u0E48\u0E32\u0E2A\u0E38\u0E14\u0E01\u0E48\u0E2D\u0E19",
|
|
917
|
+
previousPage: "\u0E2B\u0E19\u0E49\u0E32\u0E01\u0E48\u0E2D\u0E19\u0E2B\u0E19\u0E49\u0E32",
|
|
918
|
+
nextPage: "\u0E2B\u0E19\u0E49\u0E32\u0E16\u0E31\u0E14\u0E44\u0E1B",
|
|
919
|
+
pagination: "\u0E01\u0E32\u0E23\u0E41\u0E1A\u0E48\u0E07\u0E2B\u0E19\u0E49\u0E32",
|
|
920
|
+
page: "\u0E2B\u0E19\u0E49\u0E32",
|
|
921
|
+
selectItems: "\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01",
|
|
922
|
+
selectedCount: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",
|
|
923
|
+
deleteSelected: "\u0E25\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E40\u0E25\u0E37\u0E2D\u0E01",
|
|
924
|
+
tagsToApply: "\u0E41\u0E17\u0E47\u0E01\u0E17\u0E35\u0E48\u0E08\u0E30\u0E43\u0E0A\u0E49",
|
|
925
|
+
applyTags: "\u0E43\u0E0A\u0E49\u0E41\u0E17\u0E47\u0E01",
|
|
926
|
+
savedMessage: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E41\u0E25\u0E49\u0E27",
|
|
927
|
+
removedMessage: "\u0E25\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E41\u0E25\u0E49\u0E27",
|
|
928
|
+
undo: "\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33",
|
|
929
|
+
undoAvailable: "\u0E25\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E41\u0E25\u0E49\u0E27 \u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E40\u0E25\u0E34\u0E01\u0E17\u0E33\u0E2B\u0E23\u0E37\u0E2D\u0E44\u0E21\u0E48",
|
|
930
|
+
selectionScope: "\u0E02\u0E2D\u0E1A\u0E40\u0E02\u0E15\u0E01\u0E32\u0E23\u0E40\u0E25\u0E37\u0E2D\u0E01",
|
|
931
|
+
currentPage: "\u0E2B\u0E19\u0E49\u0E32\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19",
|
|
932
|
+
searchResults: "\u0E1C\u0E25\u0E01\u0E32\u0E23\u0E04\u0E49\u0E19\u0E2B\u0E32\u0E1B\u0E31\u0E08\u0E08\u0E38\u0E1A\u0E31\u0E19",
|
|
933
|
+
allItems: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14",
|
|
934
|
+
statusAvailable: "\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19",
|
|
935
|
+
noteSavedMessage: "\u0E1A\u0E31\u0E19\u0E17\u0E36\u0E01\u0E22\u0E48\u0E2D\u0E41\u0E25\u0E49\u0E27",
|
|
936
|
+
exportData: "\u0E2A\u0E48\u0E07\u0E2D\u0E2D\u0E01 JSON",
|
|
937
|
+
importData: "\u0E19\u0E33\u0E40\u0E02\u0E49\u0E32 JSON",
|
|
938
|
+
importMode: "\u0E42\u0E2B\u0E21\u0E14\u0E19\u0E33\u0E40\u0E02\u0E49\u0E32",
|
|
939
|
+
merge: "\u0E23\u0E27\u0E21",
|
|
940
|
+
replace: "\u0E41\u0E17\u0E19\u0E17\u0E35\u0E48",
|
|
941
|
+
importedCount: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E19\u0E33\u0E40\u0E02\u0E49\u0E32\u0E41\u0E25\u0E49\u0E27",
|
|
942
|
+
failedCount: "\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E25\u0E49\u0E21\u0E40\u0E2B\u0E25\u0E27",
|
|
943
|
+
storageQuotaError: "\u0E1E\u0E37\u0E49\u0E19\u0E17\u0E35\u0E48\u0E08\u0E31\u0E14\u0E40\u0E01\u0E47\u0E1A\u0E40\u0E15\u0E47\u0E21 \u0E42\u0E1B\u0E23\u0E14\u0E40\u0E1E\u0E34\u0E48\u0E21\u0E1E\u0E37\u0E49\u0E19\u0E17\u0E35\u0E48\u0E41\u0E25\u0E49\u0E27\u0E25\u0E2D\u0E07\u0E2D\u0E35\u0E01\u0E04\u0E23\u0E31\u0E49\u0E07",
|
|
944
|
+
statusExpired: "\u0E2B\u0E21\u0E14\u0E2D\u0E32\u0E22\u0E38",
|
|
945
|
+
statusRemoved: "\u0E19\u0E33\u0E2D\u0E2D\u0E01\u0E41\u0E25\u0E49\u0E27",
|
|
946
|
+
statusDeleted: "\u0E25\u0E1A\u0E41\u0E25\u0E49\u0E27",
|
|
947
|
+
statusPrivate: "\u0E40\u0E1B\u0E47\u0E19\u0E2A\u0E48\u0E27\u0E19\u0E15\u0E31\u0E27",
|
|
948
|
+
statusUnknown: "\u0E44\u0E21\u0E48\u0E1E\u0E23\u0E49\u0E2D\u0E21\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19",
|
|
949
|
+
retry: "\u0E25\u0E2D\u0E07\u0E43\u0E2B\u0E21\u0E48",
|
|
950
|
+
removeFromList: "\u0E25\u0E1A\u0E2D\u0E2D\u0E01\u0E08\u0E32\u0E01\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23",
|
|
951
|
+
pruneStale: "\u0E25\u0E1A\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\u0E17\u0E35\u0E48\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19\u0E44\u0E21\u0E48\u0E44\u0E14\u0E49",
|
|
952
|
+
retrySync: "\u0E25\u0E2D\u0E07\u0E0B\u0E34\u0E07\u0E04\u0E4C\u0E43\u0E2B\u0E21\u0E48",
|
|
953
|
+
resolveSync: "\u0E41\u0E01\u0E49\u0E44\u0E02\u0E02\u0E49\u0E2D\u0E02\u0E31\u0E14\u0E41\u0E22\u0E49\u0E07",
|
|
954
|
+
keepLocal: "\u0E43\u0E0A\u0E49\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E19\u0E43\u0E19\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07",
|
|
955
|
+
useServer: "\u0E43\u0E0A\u0E49\u0E40\u0E27\u0E2D\u0E23\u0E4C\u0E0A\u0E31\u0E19\u0E40\u0E0B\u0E34\u0E23\u0E4C\u0E1F\u0E40\u0E27\u0E2D\u0E23\u0E4C",
|
|
956
|
+
manualMerge: "\u0E23\u0E27\u0E21\u0E14\u0E49\u0E27\u0E22\u0E15\u0E19\u0E40\u0E2D\u0E07",
|
|
957
|
+
close: "\u0E1B\u0E34\u0E14",
|
|
958
|
+
backupRecovery: "\u0E01\u0E39\u0E49\u0E04\u0E37\u0E19\u0E08\u0E32\u0E01\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E2A\u0E33\u0E23\u0E2D\u0E07",
|
|
959
|
+
backupRecoveryDescription: "\u0E2B\u0E32\u0E01\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E0B\u0E34\u0E07\u0E04\u0E4C\u0E43\u0E19\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E40\u0E2A\u0E35\u0E22\u0E2B\u0E32\u0E22 \u0E43\u0E2B\u0E49\u0E01\u0E39\u0E49\u0E04\u0E37\u0E19\u0E08\u0E32\u0E01\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E2A\u0E33\u0E23\u0E2D\u0E07 JSON \u0E17\u0E35\u0E48\u0E43\u0E0A\u0E49\u0E07\u0E32\u0E19\u0E44\u0E14\u0E49",
|
|
960
|
+
syncPending: "\u0E21\u0E35\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E35\u0E48\u0E23\u0E2D\u0E01\u0E32\u0E23\u0E0B\u0E34\u0E07\u0E04\u0E4C",
|
|
961
|
+
syncSynced: "\u0E0B\u0E34\u0E07\u0E04\u0E4C\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14\u0E41\u0E25\u0E49\u0E27",
|
|
962
|
+
syncConflict: "\u0E21\u0E35\u0E01\u0E32\u0E23\u0E40\u0E1B\u0E25\u0E35\u0E48\u0E22\u0E19\u0E41\u0E1B\u0E25\u0E07\u0E17\u0E35\u0E48\u0E15\u0E49\u0E2D\u0E07\u0E41\u0E01\u0E49\u0E44\u0E02\u0E02\u0E49\u0E2D\u0E02\u0E31\u0E14\u0E41\u0E22\u0E49\u0E07"
|
|
963
|
+
};
|
|
964
|
+
|
|
965
|
+
// src/locales/vi.ts
|
|
966
|
+
var VI_LABELS = {
|
|
967
|
+
save: "L\u01B0u",
|
|
968
|
+
saved: "\u0110\xE3 l\u01B0u",
|
|
969
|
+
remove: "X\xF3a",
|
|
970
|
+
loading: "\u0110ang t\u1EA3i\u2026",
|
|
971
|
+
saving: "\u0110ang l\u01B0u\u2026",
|
|
972
|
+
syncing: "\u0110ang \u0111\u1ED3ng b\u1ED9\u2026",
|
|
973
|
+
error: "\u0110\xE3 x\u1EA3y ra l\u1ED7i.",
|
|
974
|
+
allTags: "T\u1EA5t c\u1EA3",
|
|
975
|
+
tags: "Th\u1EBB",
|
|
976
|
+
filterTags: "L\u1ECDc m\u1EE5c \u0111\xE3 l\u01B0u theo th\u1EBB",
|
|
977
|
+
note: "Ghi ch\xFA",
|
|
978
|
+
saveNote: "L\u01B0u ghi ch\xFA",
|
|
979
|
+
noItems: "Ch\u01B0a c\xF3 m\u1EE5c n\xE0o \u0111\u01B0\u1EE3c l\u01B0u.",
|
|
980
|
+
loadingItems: "\u0110ang t\u1EA3i c\xE1c m\u1EE5c \u0111\xE3 l\u01B0u\u2026",
|
|
981
|
+
errorItems: "Kh\xF4ng th\u1EC3 t\u1EA3i c\xE1c m\u1EE5c \u0111\xE3 l\u01B0u.",
|
|
982
|
+
search: "T\xECm ki\u1EBFm m\u1EE5c \u0111\xE3 l\u01B0u",
|
|
983
|
+
sort: "S\u1EAFp x\u1EBFp m\u1EE5c \u0111\xE3 l\u01B0u",
|
|
984
|
+
newest: "M\u1EDBi nh\u1EA5t tr\u01B0\u1EDBc",
|
|
985
|
+
oldest: "C\u0169 nh\u1EA5t tr\u01B0\u1EDBc",
|
|
986
|
+
savedNewest: "L\u01B0u g\u1EA7n \u0111\xE2y nh\u1EA5t tr\u01B0\u1EDBc",
|
|
987
|
+
savedOldest: "L\u01B0u l\xE2u nh\u1EA5t tr\u01B0\u1EDBc",
|
|
988
|
+
updatedNewest: "C\u1EADp nh\u1EADt g\u1EA7n \u0111\xE2y nh\u1EA5t tr\u01B0\u1EDBc",
|
|
989
|
+
updatedOldest: "C\u1EADp nh\u1EADt l\xE2u nh\u1EA5t tr\u01B0\u1EDBc",
|
|
990
|
+
previousPage: "Trang tr\u01B0\u1EDBc",
|
|
991
|
+
nextPage: "Trang sau",
|
|
992
|
+
pagination: "Ph\xE2n trang",
|
|
993
|
+
page: "Trang",
|
|
994
|
+
selectItems: "Ch\u1ECDn m\u1EE5c \u0111\xE3 l\u01B0u",
|
|
995
|
+
selectedCount: "\u0111\xE3 ch\u1ECDn",
|
|
996
|
+
deleteSelected: "X\xF3a m\u1EE5c \u0111\xE3 ch\u1ECDn",
|
|
997
|
+
tagsToApply: "Th\u1EBB c\u1EA7n \xE1p d\u1EE5ng",
|
|
998
|
+
applyTags: "\xC1p d\u1EE5ng th\u1EBB",
|
|
999
|
+
savedMessage: "\u0110\xE3 l\u01B0u m\u1EE5c.",
|
|
1000
|
+
removedMessage: "\u0110\xE3 x\xF3a m\u1EE5c.",
|
|
1001
|
+
undo: "Ho\xE0n t\xE1c",
|
|
1002
|
+
undoAvailable: "\u0110\xE3 x\xF3a m\u1EE5c. Ho\xE0n t\xE1c?",
|
|
1003
|
+
selectionScope: "Ph\u1EA1m vi l\u1EF1a ch\u1ECDn",
|
|
1004
|
+
currentPage: "Trang hi\u1EC7n t\u1EA1i",
|
|
1005
|
+
searchResults: "K\u1EBFt qu\u1EA3 t\xECm ki\u1EBFm hi\u1EC7n t\u1EA1i",
|
|
1006
|
+
allItems: "T\u1EA5t c\u1EA3 m\u1EE5c \u0111\xE3 l\u01B0u",
|
|
1007
|
+
statusAvailable: "Kh\u1EA3 d\u1EE5ng",
|
|
1008
|
+
noteSavedMessage: "\u0110\xE3 l\u01B0u ghi ch\xFA.",
|
|
1009
|
+
exportData: "Xu\u1EA5t JSON",
|
|
1010
|
+
importData: "Nh\u1EADp JSON",
|
|
1011
|
+
importMode: "Ch\u1EBF \u0111\u1ED9 nh\u1EADp",
|
|
1012
|
+
merge: "H\u1EE3p nh\u1EA5t",
|
|
1013
|
+
replace: "Thay th\u1EBF",
|
|
1014
|
+
importedCount: "m\u1EE5c \u0111\xE3 nh\u1EADp",
|
|
1015
|
+
failedCount: "m\u1EE5c b\u1ECB l\u1ED7i",
|
|
1016
|
+
storageQuotaError: "B\u1ED9 nh\u1EDB \u0111\xE3 \u0111\u1EA7y. H\xE3y gi\u1EA3i ph\xF3ng dung l\u01B0\u1EE3ng r\u1ED3i th\u1EED l\u1EA1i.",
|
|
1017
|
+
statusExpired: "\u0110\xE3 h\u1EBFt h\u1EA1n",
|
|
1018
|
+
statusRemoved: "\u0110\xE3 g\u1EE1",
|
|
1019
|
+
statusDeleted: "\u0110\xE3 x\xF3a",
|
|
1020
|
+
statusPrivate: "Ri\xEAng t\u01B0",
|
|
1021
|
+
statusUnknown: "Kh\xF4ng kh\u1EA3 d\u1EE5ng",
|
|
1022
|
+
retry: "Th\u1EED l\u1EA1i",
|
|
1023
|
+
removeFromList: "X\xF3a kh\u1ECFi danh s\xE1ch",
|
|
1024
|
+
pruneStale: "X\xF3a c\xE1c m\u1EE5c kh\xF4ng kh\u1EA3 d\u1EE5ng",
|
|
1025
|
+
retrySync: "Th\u1EED \u0111\u1ED3ng b\u1ED9 l\u1EA1i",
|
|
1026
|
+
resolveSync: "Gi\u1EA3i quy\u1EBFt xung \u0111\u1ED9t",
|
|
1027
|
+
keepLocal: "Gi\u1EEF b\u1EA3n c\u1EE5c b\u1ED9",
|
|
1028
|
+
useServer: "D\xF9ng b\u1EA3n m\xE1y ch\u1EE7",
|
|
1029
|
+
manualMerge: "G\u1ED9p th\u1EE7 c\xF4ng",
|
|
1030
|
+
close: "\u0110\xF3ng",
|
|
1031
|
+
backupRecovery: "Kh\xF4i ph\u1EE5c t\u1EEB b\u1EA3n sao l\u01B0u",
|
|
1032
|
+
backupRecoveryDescription: "N\u1EBFu d\u1EEF li\u1EC7u \u0111\u1ED3ng b\u1ED9 c\u1EE5c b\u1ED9 b\u1ECB h\u1ECFng, h\xE3y kh\xF4i ph\u1EE5c b\u1EA3n sao l\u01B0u JSON h\u1EE3p l\u1EC7.",
|
|
1033
|
+
syncPending: "C\xF3 thay \u0111\u1ED5i \u0111ang ch\u1EDD \u0111\u1ED3ng b\u1ED9.",
|
|
1034
|
+
syncSynced: "T\u1EA5t c\u1EA3 thay \u0111\u1ED5i \u0111\xE3 \u0111\u01B0\u1EE3c \u0111\u1ED3ng b\u1ED9.",
|
|
1035
|
+
syncConflict: "M\u1ED9t s\u1ED1 thay \u0111\u1ED5i c\u1EA7n gi\u1EA3i quy\u1EBFt xung \u0111\u1ED9t."
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
// src/locales/zh-Hans.ts
|
|
1039
|
+
var ZH_HANS_LABELS = {
|
|
1040
|
+
save: "\u4FDD\u5B58",
|
|
1041
|
+
saved: "\u5DF2\u4FDD\u5B58",
|
|
1042
|
+
remove: "\u5220\u9664",
|
|
1043
|
+
loading: "\u52A0\u8F7D\u4E2D\u2026",
|
|
1044
|
+
saving: "\u4FDD\u5B58\u4E2D\u2026",
|
|
1045
|
+
syncing: "\u540C\u6B65\u4E2D\u2026",
|
|
1046
|
+
error: "\u53D1\u751F\u9519\u8BEF\u3002",
|
|
1047
|
+
allTags: "\u5168\u90E8",
|
|
1048
|
+
tags: "\u6807\u7B7E",
|
|
1049
|
+
filterTags: "\u6309\u6807\u7B7E\u7B5B\u9009\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
1050
|
+
note: "\u5907\u6CE8",
|
|
1051
|
+
saveNote: "\u4FDD\u5B58\u5907\u6CE8",
|
|
1052
|
+
noItems: "\u6CA1\u6709\u5DF2\u4FDD\u5B58\u7684\u9879\u76EE\u3002",
|
|
1053
|
+
loadingItems: "\u6B63\u5728\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u9879\u76EE\u2026",
|
|
1054
|
+
errorItems: "\u65E0\u6CD5\u52A0\u8F7D\u5DF2\u4FDD\u5B58\u9879\u76EE\u3002",
|
|
1055
|
+
search: "\u641C\u7D22\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
1056
|
+
sort: "\u6392\u5E8F\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
1057
|
+
newest: "\u6700\u65B0\u4F18\u5148",
|
|
1058
|
+
oldest: "\u6700\u65E9\u4F18\u5148",
|
|
1059
|
+
savedNewest: "\u4FDD\u5B58\u65F6\u95F4\u6700\u65B0\u4F18\u5148",
|
|
1060
|
+
savedOldest: "\u4FDD\u5B58\u65F6\u95F4\u6700\u65E9\u4F18\u5148",
|
|
1061
|
+
updatedNewest: "\u66F4\u65B0\u65F6\u95F4\u6700\u65B0\u4F18\u5148",
|
|
1062
|
+
updatedOldest: "\u66F4\u65B0\u65F6\u95F4\u6700\u65E9\u4F18\u5148",
|
|
1063
|
+
previousPage: "\u4E0A\u4E00\u9875",
|
|
1064
|
+
nextPage: "\u4E0B\u4E00\u9875",
|
|
1065
|
+
pagination: "\u5206\u9875",
|
|
1066
|
+
page: "\u9875",
|
|
1067
|
+
selectItems: "\u9009\u62E9\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
1068
|
+
selectedCount: "\u9879\u5DF2\u9009\u62E9",
|
|
1069
|
+
deleteSelected: "\u5220\u9664\u6240\u9009\u9879\u76EE",
|
|
1070
|
+
tagsToApply: "\u8981\u5E94\u7528\u7684\u6807\u7B7E",
|
|
1071
|
+
applyTags: "\u5E94\u7528\u6807\u7B7E",
|
|
1072
|
+
savedMessage: "\u9879\u76EE\u5DF2\u4FDD\u5B58\u3002",
|
|
1073
|
+
removedMessage: "\u9879\u76EE\u5DF2\u5220\u9664\u3002",
|
|
1074
|
+
undo: "\u64A4\u9500",
|
|
1075
|
+
undoAvailable: "\u9879\u76EE\u5DF2\u5220\u9664\u3002\u8981\u64A4\u9500\u5417\uFF1F",
|
|
1076
|
+
selectionScope: "\u9009\u62E9\u8303\u56F4",
|
|
1077
|
+
currentPage: "\u5F53\u524D\u9875",
|
|
1078
|
+
searchResults: "\u5F53\u524D\u5168\u90E8\u641C\u7D22\u7ED3\u679C",
|
|
1079
|
+
allItems: "\u5168\u90E8\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
1080
|
+
statusAvailable: "\u53EF\u7528",
|
|
1081
|
+
noteSavedMessage: "\u5907\u6CE8\u5DF2\u4FDD\u5B58\u3002",
|
|
1082
|
+
exportData: "\u5BFC\u51FAJSON",
|
|
1083
|
+
importData: "\u5BFC\u5165JSON",
|
|
1084
|
+
importMode: "\u5BFC\u5165\u65B9\u5F0F",
|
|
1085
|
+
merge: "\u5408\u5E76",
|
|
1086
|
+
replace: "\u66FF\u6362",
|
|
1087
|
+
importedCount: "\u9879\u5DF2\u5BFC\u5165",
|
|
1088
|
+
failedCount: "\u9879\u5931\u8D25",
|
|
1089
|
+
storageQuotaError: "\u5B58\u50A8\u7A7A\u95F4\u5DF2\u6EE1\u3002\u8BF7\u91CA\u653E\u7A7A\u95F4\u540E\u91CD\u8BD5\u3002",
|
|
1090
|
+
statusExpired: "\u5DF2\u8FC7\u671F",
|
|
1091
|
+
statusRemoved: "\u5DF2\u79FB\u9664",
|
|
1092
|
+
statusDeleted: "\u5DF2\u5220\u9664",
|
|
1093
|
+
statusPrivate: "\u4E0D\u516C\u5F00",
|
|
1094
|
+
statusUnknown: "\u4E0D\u53EF\u7528",
|
|
1095
|
+
retry: "\u91CD\u8BD5",
|
|
1096
|
+
removeFromList: "\u4ECE\u5217\u8868\u4E2D\u5220\u9664",
|
|
1097
|
+
pruneStale: "\u5220\u9664\u4E0D\u53EF\u7528\u9879\u76EE",
|
|
1098
|
+
retrySync: "\u91CD\u8BD5\u540C\u6B65",
|
|
1099
|
+
resolveSync: "\u89E3\u51B3\u51B2\u7A81",
|
|
1100
|
+
keepLocal: "\u4FDD\u7559\u672C\u5730\u7248\u672C",
|
|
1101
|
+
useServer: "\u4F7F\u7528\u670D\u52A1\u5668\u7248\u672C",
|
|
1102
|
+
manualMerge: "\u624B\u52A8\u5408\u5E76",
|
|
1103
|
+
close: "\u5173\u95ED",
|
|
1104
|
+
backupRecovery: "\u4ECE\u5907\u4EFD\u6062\u590D",
|
|
1105
|
+
backupRecoveryDescription: "\u5982\u679C\u672C\u5730\u540C\u6B65\u6570\u636E\u635F\u574F\uFF0C\u8BF7\u6062\u590D\u53EF\u7528\u7684 JSON \u5907\u4EFD\u3002",
|
|
1106
|
+
syncPending: "\u6709\u66F4\u6539\u7B49\u5F85\u540C\u6B65\u3002",
|
|
1107
|
+
syncSynced: "\u6240\u6709\u66F4\u6539\u5747\u5DF2\u540C\u6B65\u3002",
|
|
1108
|
+
syncConflict: "\u6709\u4E9B\u66F4\u6539\u9700\u8981\u89E3\u51B3\u51B2\u7A81\u3002"
|
|
1109
|
+
};
|
|
1110
|
+
|
|
1111
|
+
// src/locales/zh-Hant.ts
|
|
1112
|
+
var ZH_HANT_LABELS = {
|
|
1113
|
+
save: "\u5132\u5B58",
|
|
1114
|
+
saved: "\u5DF2\u5132\u5B58",
|
|
1115
|
+
remove: "\u522A\u9664",
|
|
1116
|
+
loading: "\u8F09\u5165\u4E2D\u2026",
|
|
1117
|
+
saving: "\u5132\u5B58\u4E2D\u2026",
|
|
1118
|
+
syncing: "\u540C\u6B65\u4E2D\u2026",
|
|
1119
|
+
error: "\u767C\u751F\u932F\u8AA4\u3002",
|
|
1120
|
+
allTags: "\u5168\u90E8",
|
|
1121
|
+
tags: "\u6A19\u7C64",
|
|
1122
|
+
filterTags: "\u4F9D\u6A19\u7C64\u7BE9\u9078\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
1123
|
+
note: "\u5099\u8A3B",
|
|
1124
|
+
saveNote: "\u5132\u5B58\u5099\u8A3B",
|
|
1125
|
+
noItems: "\u6C92\u6709\u5DF2\u5132\u5B58\u7684\u9805\u76EE\u3002",
|
|
1126
|
+
loadingItems: "\u6B63\u5728\u8F09\u5165\u5DF2\u5132\u5B58\u9805\u76EE\u2026",
|
|
1127
|
+
errorItems: "\u7121\u6CD5\u8F09\u5165\u5DF2\u5132\u5B58\u9805\u76EE\u3002",
|
|
1128
|
+
search: "\u641C\u5C0B\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
1129
|
+
sort: "\u6392\u5E8F\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
1130
|
+
newest: "\u6700\u65B0\u512A\u5148",
|
|
1131
|
+
oldest: "\u6700\u65E9\u512A\u5148",
|
|
1132
|
+
savedNewest: "\u5132\u5B58\u6642\u9593\u6700\u65B0\u512A\u5148",
|
|
1133
|
+
savedOldest: "\u5132\u5B58\u6642\u9593\u6700\u65E9\u512A\u5148",
|
|
1134
|
+
updatedNewest: "\u66F4\u65B0\u6642\u9593\u6700\u65B0\u512A\u5148",
|
|
1135
|
+
updatedOldest: "\u66F4\u65B0\u6642\u9593\u6700\u65E9\u512A\u5148",
|
|
1136
|
+
previousPage: "\u4E0A\u4E00\u9801",
|
|
1137
|
+
nextPage: "\u4E0B\u4E00\u9801",
|
|
1138
|
+
pagination: "\u5206\u9801",
|
|
1139
|
+
page: "\u9801",
|
|
1140
|
+
selectItems: "\u9078\u53D6\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
1141
|
+
selectedCount: "\u9805\u5DF2\u9078\u53D6",
|
|
1142
|
+
deleteSelected: "\u522A\u9664\u6240\u9078\u9805\u76EE",
|
|
1143
|
+
tagsToApply: "\u8981\u5957\u7528\u7684\u6A19\u7C64",
|
|
1144
|
+
applyTags: "\u5957\u7528\u6A19\u7C64",
|
|
1145
|
+
savedMessage: "\u9805\u76EE\u5DF2\u5132\u5B58\u3002",
|
|
1146
|
+
removedMessage: "\u9805\u76EE\u5DF2\u522A\u9664\u3002",
|
|
1147
|
+
undo: "\u5FA9\u539F",
|
|
1148
|
+
undoAvailable: "\u9805\u76EE\u5DF2\u522A\u9664\u3002\u8981\u5FA9\u539F\u55CE\uFF1F",
|
|
1149
|
+
selectionScope: "\u9078\u53D6\u7BC4\u570D",
|
|
1150
|
+
currentPage: "\u76EE\u524D\u9801\u9762",
|
|
1151
|
+
searchResults: "\u76EE\u524D\u5168\u90E8\u641C\u5C0B\u7D50\u679C",
|
|
1152
|
+
allItems: "\u6240\u6709\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
1153
|
+
statusAvailable: "\u53EF\u7528",
|
|
1154
|
+
noteSavedMessage: "\u5099\u8A3B\u5DF2\u5132\u5B58\u3002",
|
|
1155
|
+
exportData: "\u532F\u51FAJSON",
|
|
1156
|
+
importData: "\u532F\u5165JSON",
|
|
1157
|
+
importMode: "\u532F\u5165\u65B9\u5F0F",
|
|
1158
|
+
merge: "\u5408\u4F75",
|
|
1159
|
+
replace: "\u53D6\u4EE3",
|
|
1160
|
+
importedCount: "\u9805\u5DF2\u532F\u5165",
|
|
1161
|
+
failedCount: "\u9805\u5931\u6557",
|
|
1162
|
+
storageQuotaError: "\u5132\u5B58\u7A7A\u9593\u5DF2\u6EFF\u3002\u8ACB\u91CB\u653E\u7A7A\u9593\u5F8C\u91CD\u8A66\u3002",
|
|
1163
|
+
statusExpired: "\u5DF2\u904E\u671F",
|
|
1164
|
+
statusRemoved: "\u5DF2\u79FB\u9664",
|
|
1165
|
+
statusDeleted: "\u5DF2\u522A\u9664",
|
|
1166
|
+
statusPrivate: "\u4E0D\u516C\u958B",
|
|
1167
|
+
statusUnknown: "\u7121\u6CD5\u4F7F\u7528",
|
|
1168
|
+
retry: "\u91CD\u8A66",
|
|
1169
|
+
removeFromList: "\u5F9E\u6E05\u55AE\u4E2D\u522A\u9664",
|
|
1170
|
+
pruneStale: "\u522A\u9664\u7121\u6CD5\u4F7F\u7528\u7684\u9805\u76EE",
|
|
1171
|
+
retrySync: "\u91CD\u8A66\u540C\u6B65",
|
|
1172
|
+
resolveSync: "\u89E3\u6C7A\u885D\u7A81",
|
|
1173
|
+
keepLocal: "\u4FDD\u7559\u672C\u6A5F\u7248\u672C",
|
|
1174
|
+
useServer: "\u4F7F\u7528\u4F3A\u670D\u5668\u7248\u672C",
|
|
1175
|
+
manualMerge: "\u624B\u52D5\u5408\u4F75",
|
|
1176
|
+
close: "\u95DC\u9589",
|
|
1177
|
+
backupRecovery: "\u5F9E\u5099\u4EFD\u9084\u539F",
|
|
1178
|
+
backupRecoveryDescription: "\u5982\u679C\u672C\u6A5F\u540C\u6B65\u8CC7\u6599\u640D\u6BC0\uFF0C\u8ACB\u9084\u539F\u53EF\u7528\u7684 JSON \u5099\u4EFD\u3002",
|
|
1179
|
+
syncPending: "\u6709\u8B8A\u66F4\u7B49\u5F85\u540C\u6B65\u3002",
|
|
1180
|
+
syncSynced: "\u6240\u6709\u8B8A\u66F4\u90FD\u5DF2\u540C\u6B65\u3002",
|
|
1181
|
+
syncConflict: "\u6709\u4E9B\u8B8A\u66F4\u9700\u8981\u89E3\u6C7A\u885D\u7A81\u3002"
|
|
1182
|
+
};
|
|
1183
|
+
|
|
1184
|
+
// src/locales/index.ts
|
|
1185
|
+
var KEEP_BUILT_IN_LOCALES = [
|
|
1186
|
+
"en",
|
|
1187
|
+
"ja",
|
|
1188
|
+
"ko",
|
|
1189
|
+
"zh-Hans",
|
|
1190
|
+
"zh-Hant",
|
|
1191
|
+
"th",
|
|
1192
|
+
"fr",
|
|
1193
|
+
"es",
|
|
1194
|
+
"pt-BR",
|
|
1195
|
+
"it",
|
|
1196
|
+
"de",
|
|
1197
|
+
"ru",
|
|
1198
|
+
"fil",
|
|
1199
|
+
"vi",
|
|
1200
|
+
"id",
|
|
1201
|
+
"ms"
|
|
1202
|
+
];
|
|
73
1203
|
var KEEP_LOCALE_LABELS = {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
newest: "\u65B0\u3057\u3044\u9806",
|
|
91
|
-
oldest: "\u53E4\u3044\u9806",
|
|
92
|
-
savedNewest: "\u4FDD\u5B58\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806",
|
|
93
|
-
savedOldest: "\u4FDD\u5B58\u65E5\u6642\u306E\u53E4\u3044\u9806",
|
|
94
|
-
updatedNewest: "\u66F4\u65B0\u65E5\u6642\u306E\u65B0\u3057\u3044\u9806",
|
|
95
|
-
updatedOldest: "\u66F4\u65B0\u65E5\u6642\u306E\u53E4\u3044\u9806",
|
|
96
|
-
previousPage: "\u524D\u306E\u30DA\u30FC\u30B8",
|
|
97
|
-
nextPage: "\u6B21\u306E\u30DA\u30FC\u30B8",
|
|
98
|
-
pagination: "\u30DA\u30FC\u30B8\u30CD\u30FC\u30B7\u30E7\u30F3",
|
|
99
|
-
page: "\u30DA\u30FC\u30B8",
|
|
100
|
-
selectItems: "\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0\u3092\u9078\u629E",
|
|
101
|
-
selectedCount: "\u4EF6\u3092\u9078\u629E\u4E2D",
|
|
102
|
-
deleteSelected: "\u9078\u629E\u9805\u76EE\u3092\u524A\u9664",
|
|
103
|
-
undo: "\u5143\u306B\u623B\u3059",
|
|
104
|
-
undoAvailable: "\u30A2\u30A4\u30C6\u30E0\u3092\u524A\u9664\u3057\u307E\u3057\u305F\u3002\u5143\u306B\u623B\u3057\u307E\u3059\u304B\uFF1F",
|
|
105
|
-
selectionScope: "\u9078\u629E\u7BC4\u56F2",
|
|
106
|
-
currentPage: "\u8868\u793A\u4E2D\u306E\u30DA\u30FC\u30B8",
|
|
107
|
-
searchResults: "\u73FE\u5728\u306E\u691C\u7D22\u7D50\u679C\u5168\u4F53",
|
|
108
|
-
allItems: "\u3059\u3079\u3066\u306E\u4FDD\u5B58\u30A2\u30A4\u30C6\u30E0",
|
|
109
|
-
tags: "\u30BF\u30B0",
|
|
110
|
-
statusAvailable: "\u5229\u7528\u53EF\u80FD",
|
|
111
|
-
tagsToApply: "\u9069\u7528\u3059\u308B\u30BF\u30B0",
|
|
112
|
-
applyTags: "\u30BF\u30B0\u3092\u9069\u7528"
|
|
113
|
-
},
|
|
114
|
-
ko: {
|
|
115
|
-
save: "\uC800\uC7A5",
|
|
116
|
-
saved: "\uC800\uC7A5\uB428",
|
|
117
|
-
remove: "\uC0AD\uC81C",
|
|
118
|
-
loading: "\uB85C\uB4DC \uC911\u2026",
|
|
119
|
-
saving: "\uC800\uC7A5 \uC911\u2026",
|
|
120
|
-
syncing: "\uB3D9\uAE30\uD654 \uC911\u2026",
|
|
121
|
-
noItems: "\uC800\uC7A5\uB41C \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.",
|
|
122
|
-
search: "\uC800\uC7A5\uB41C \uD56D\uBAA9 \uAC80\uC0C9",
|
|
123
|
-
sort: "\uC800\uC7A5\uB41C \uD56D\uBAA9 \uC815\uB82C",
|
|
124
|
-
previousPage: "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
125
|
-
nextPage: "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
126
|
-
pagination: "\uD398\uC774\uC9C0 \uB9E4\uAE40",
|
|
127
|
-
page: "\uD398\uC774\uC9C0",
|
|
128
|
-
undo: "\uC2E4\uD589 \uCDE8\uC18C",
|
|
129
|
-
undoAvailable: "\uD56D\uBAA9\uC744 \uC0AD\uC81C\uD588\uC2B5\uB2C8\uB2E4. \uC2E4\uD589 \uCDE8\uC18C\uD560\uAE4C\uC694?",
|
|
130
|
-
selectionScope: "\uC120\uD0DD \uBC94\uC704",
|
|
131
|
-
currentPage: "\uD604\uC7AC \uD398\uC774\uC9C0",
|
|
132
|
-
searchResults: "\uD604\uC7AC \uAC80\uC0C9 \uACB0\uACFC \uC804\uCCB4",
|
|
133
|
-
allItems: "\uBAA8\uB4E0 \uC800\uC7A5 \uD56D\uBAA9",
|
|
134
|
-
tags: "\uD0DC\uADF8"
|
|
135
|
-
},
|
|
136
|
-
"zh-CN": {
|
|
137
|
-
save: "\u4FDD\u5B58",
|
|
138
|
-
saved: "\u5DF2\u4FDD\u5B58",
|
|
139
|
-
remove: "\u5220\u9664",
|
|
140
|
-
loading: "\u52A0\u8F7D\u4E2D\u2026",
|
|
141
|
-
saving: "\u4FDD\u5B58\u4E2D\u2026",
|
|
142
|
-
syncing: "\u540C\u6B65\u4E2D\u2026",
|
|
143
|
-
noItems: "\u6CA1\u6709\u5DF2\u4FDD\u5B58\u7684\u9879\u76EE\u3002",
|
|
144
|
-
search: "\u641C\u7D22\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
145
|
-
sort: "\u6392\u5E8F\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
146
|
-
previousPage: "\u4E0A\u4E00\u9875",
|
|
147
|
-
nextPage: "\u4E0B\u4E00\u9875",
|
|
148
|
-
pagination: "\u5206\u9875",
|
|
149
|
-
page: "\u9875",
|
|
150
|
-
undo: "\u64A4\u9500",
|
|
151
|
-
undoAvailable: "\u9879\u76EE\u5DF2\u5220\u9664\u3002\u8981\u64A4\u9500\u5417\uFF1F",
|
|
152
|
-
selectionScope: "\u9009\u62E9\u8303\u56F4",
|
|
153
|
-
currentPage: "\u5F53\u524D\u9875",
|
|
154
|
-
searchResults: "\u5F53\u524D\u641C\u7D22\u7ED3\u679C",
|
|
155
|
-
allItems: "\u5168\u90E8\u5DF2\u4FDD\u5B58\u9879\u76EE",
|
|
156
|
-
tags: "\u6807\u7B7E"
|
|
157
|
-
},
|
|
158
|
-
"zh-TW": {
|
|
159
|
-
save: "\u5132\u5B58",
|
|
160
|
-
saved: "\u5DF2\u5132\u5B58",
|
|
161
|
-
remove: "\u522A\u9664",
|
|
162
|
-
loading: "\u8F09\u5165\u4E2D\u2026",
|
|
163
|
-
saving: "\u5132\u5B58\u4E2D\u2026",
|
|
164
|
-
syncing: "\u540C\u6B65\u4E2D\u2026",
|
|
165
|
-
noItems: "\u6C92\u6709\u5DF2\u5132\u5B58\u7684\u9805\u76EE\u3002",
|
|
166
|
-
search: "\u641C\u5C0B\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
167
|
-
sort: "\u6392\u5E8F\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
168
|
-
previousPage: "\u4E0A\u4E00\u9801",
|
|
169
|
-
nextPage: "\u4E0B\u4E00\u9801",
|
|
170
|
-
undo: "\u5FA9\u539F",
|
|
171
|
-
undoAvailable: "\u9805\u76EE\u5DF2\u522A\u9664\u3002\u8981\u5FA9\u539F\u55CE\uFF1F",
|
|
172
|
-
selectionScope: "\u9078\u53D6\u7BC4\u570D",
|
|
173
|
-
currentPage: "\u76EE\u524D\u9801\u9762",
|
|
174
|
-
searchResults: "\u76EE\u524D\u641C\u5C0B\u7D50\u679C",
|
|
175
|
-
allItems: "\u6240\u6709\u5DF2\u5132\u5B58\u9805\u76EE",
|
|
176
|
-
tags: "\u6A19\u7C64"
|
|
177
|
-
}
|
|
1204
|
+
en: EN_LABELS,
|
|
1205
|
+
ja: JA_LABELS,
|
|
1206
|
+
ko: KO_LABELS,
|
|
1207
|
+
"zh-Hans": ZH_HANS_LABELS,
|
|
1208
|
+
"zh-Hant": ZH_HANT_LABELS,
|
|
1209
|
+
th: TH_LABELS,
|
|
1210
|
+
fr: FR_LABELS,
|
|
1211
|
+
es: ES_LABELS,
|
|
1212
|
+
"pt-BR": PT_BR_LABELS,
|
|
1213
|
+
it: IT_LABELS,
|
|
1214
|
+
de: DE_LABELS,
|
|
1215
|
+
ru: RU_LABELS,
|
|
1216
|
+
fil: FIL_LABELS,
|
|
1217
|
+
vi: VI_LABELS,
|
|
1218
|
+
id: ID_LABELS,
|
|
1219
|
+
ms: MS_LABELS
|
|
178
1220
|
};
|
|
179
|
-
|
|
1221
|
+
var LOCALE_ALIASES = {
|
|
1222
|
+
"zh-cn": "zh-Hans",
|
|
1223
|
+
"zh-sg": "zh-Hans",
|
|
1224
|
+
zh: "zh-Hans",
|
|
1225
|
+
"zh-tw": "zh-Hant",
|
|
1226
|
+
"zh-hk": "zh-Hant",
|
|
1227
|
+
"zh-mo": "zh-Hant",
|
|
1228
|
+
"pt-pt": "pt-BR"
|
|
1229
|
+
};
|
|
1230
|
+
function normalizeKeepLocale(locale) {
|
|
1231
|
+
const normalized = locale?.trim().replace(/_/g, "-").toLowerCase() ?? "en";
|
|
1232
|
+
const exact = KEEP_BUILT_IN_LOCALES.find((candidate) => candidate.toLowerCase() === normalized);
|
|
1233
|
+
if (exact) return exact;
|
|
1234
|
+
if (LOCALE_ALIASES[normalized]) return LOCALE_ALIASES[normalized];
|
|
1235
|
+
const language = normalized.split("-")[0];
|
|
1236
|
+
const languageMatch = KEEP_BUILT_IN_LOCALES.find((candidate) => candidate.toLowerCase() === language);
|
|
1237
|
+
return languageMatch ?? "en";
|
|
1238
|
+
}
|
|
1239
|
+
function getKeepLocaleLabels(locale) {
|
|
1240
|
+
return { ...KEEP_LOCALE_LABELS[normalizeKeepLocale(locale)] };
|
|
1241
|
+
}
|
|
1242
|
+
|
|
1243
|
+
// src/ui-context.tsx
|
|
1244
|
+
import { jsx } from "react/jsx-runtime";
|
|
1245
|
+
var DEFAULT_LABELS = KEEP_LOCALE_LABELS.en;
|
|
180
1246
|
var KeepUiLabelsContext = createContext({ labels: DEFAULT_LABELS });
|
|
181
1247
|
function KeepUiProvider({ labels, locale, labelResolver, children }) {
|
|
182
1248
|
const value = useMemo(() => {
|
|
183
|
-
const
|
|
184
|
-
const dictionary =
|
|
1249
|
+
const resolvedLocale = normalizeKeepLocale(locale);
|
|
1250
|
+
const dictionary = getKeepLocaleLabels(resolvedLocale);
|
|
185
1251
|
const resolved = { ...DEFAULT_LABELS, ...dictionary, ...labels };
|
|
186
|
-
return { locale, labels: resolved, customLabels: labels, labelResolver };
|
|
1252
|
+
return { locale: locale ?? resolvedLocale, labels: resolved, customLabels: labels, labelResolver };
|
|
187
1253
|
}, [labelResolver, labels, locale]);
|
|
188
1254
|
return /* @__PURE__ */ jsx(KeepUiLabelsContext.Provider, { value, children });
|
|
189
1255
|
}
|
|
@@ -194,10 +1260,6 @@ function useUiLabel(key, override) {
|
|
|
194
1260
|
const context = useKeepUiLabels();
|
|
195
1261
|
return override ?? context.customLabels?.[key] ?? context.labelResolver?.(key, { locale: context.locale }) ?? context.labels[key];
|
|
196
1262
|
}
|
|
197
|
-
function getKeepLocaleLabels(locale) {
|
|
198
|
-
const key = locale?.toLowerCase() ?? "en";
|
|
199
|
-
return { ...KEEP_LOCALE_LABELS[key] ?? KEEP_LOCALE_LABELS[key.split("-")[0]] ?? {} };
|
|
200
|
-
}
|
|
201
1263
|
|
|
202
1264
|
// src/KeepBackup.tsx
|
|
203
1265
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
@@ -548,7 +1610,7 @@ function KeepButton({ labels, ...props }) {
|
|
|
548
1610
|
|
|
549
1611
|
// src/KeepCollection.tsx
|
|
550
1612
|
import { KeepErrorBoundary as KeepErrorBoundary2, useKeepList as useKeepList4 } from "@keepkit/core/react";
|
|
551
|
-
import { useMemo as useMemo3, useState as
|
|
1613
|
+
import { useMemo as useMemo3, useState as useState6 } from "react";
|
|
552
1614
|
|
|
553
1615
|
// src/KeepList.tsx
|
|
554
1616
|
import {
|
|
@@ -562,7 +1624,116 @@ import { useKeepItem as useKeepItem2 } from "@keepkit/core/react";
|
|
|
562
1624
|
import {
|
|
563
1625
|
isValidElement as isValidElement2
|
|
564
1626
|
} from "react";
|
|
565
|
-
|
|
1627
|
+
|
|
1628
|
+
// src/KeepStaleNotice.tsx
|
|
1629
|
+
import { useKeepContext as useKeepContext2 } from "@keepkit/core/react";
|
|
1630
|
+
import { useState as useState3 } from "react";
|
|
1631
|
+
|
|
1632
|
+
// src/KeepItemStatusBadge.tsx
|
|
1633
|
+
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
1634
|
+
function KeepItemStatusBadge({ status = "available", label, className, ...props }) {
|
|
1635
|
+
const resolvedStatus = status === "available" ? "available" : status;
|
|
1636
|
+
const statusLabel = useUiLabel(getStatusLabelKey(resolvedStatus));
|
|
1637
|
+
return /* @__PURE__ */ jsx7("span", { ...props, className, "data-keepkit": "status-badge", "data-status": resolvedStatus, children: label ?? statusLabel });
|
|
1638
|
+
}
|
|
1639
|
+
function getStatusLabelKey(status) {
|
|
1640
|
+
switch (status) {
|
|
1641
|
+
case "available":
|
|
1642
|
+
return "statusAvailable";
|
|
1643
|
+
case "expired":
|
|
1644
|
+
return "statusExpired";
|
|
1645
|
+
case "removed":
|
|
1646
|
+
return "statusRemoved";
|
|
1647
|
+
case "deleted":
|
|
1648
|
+
return "statusDeleted";
|
|
1649
|
+
case "private":
|
|
1650
|
+
case "unknown":
|
|
1651
|
+
return status === "private" ? "statusPrivate" : "statusUnknown";
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
|
|
1655
|
+
// src/KeepStaleNotice.tsx
|
|
1656
|
+
import { jsx as jsx8, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
1657
|
+
function KeepStaleNotice({
|
|
1658
|
+
item,
|
|
1659
|
+
onRetry,
|
|
1660
|
+
onRemoved,
|
|
1661
|
+
retryLabel,
|
|
1662
|
+
removeLabel,
|
|
1663
|
+
children,
|
|
1664
|
+
className,
|
|
1665
|
+
...props
|
|
1666
|
+
}) {
|
|
1667
|
+
const context = useKeepContext2();
|
|
1668
|
+
const retryText = useUiLabel("retry");
|
|
1669
|
+
const removeText = useUiLabel("removeFromList");
|
|
1670
|
+
const errorText = useUiLabel("error");
|
|
1671
|
+
const [isRetrying, setIsRetrying] = useState3(false);
|
|
1672
|
+
const [error, setError] = useState3(null);
|
|
1673
|
+
const status = item.status && item.status !== "available" ? item.status : "unknown";
|
|
1674
|
+
async function handleRetry() {
|
|
1675
|
+
setError(null);
|
|
1676
|
+
setIsRetrying(true);
|
|
1677
|
+
try {
|
|
1678
|
+
if (onRetry) await onRetry(item);
|
|
1679
|
+
else await context.revalidateItems();
|
|
1680
|
+
} catch (cause) {
|
|
1681
|
+
setError(cause);
|
|
1682
|
+
} finally {
|
|
1683
|
+
setIsRetrying(false);
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
async function handleRemove() {
|
|
1687
|
+
try {
|
|
1688
|
+
await context.removeItemWithUndo(item.id);
|
|
1689
|
+
onRemoved?.(item);
|
|
1690
|
+
} catch (cause) {
|
|
1691
|
+
setError(cause);
|
|
1692
|
+
}
|
|
1693
|
+
}
|
|
1694
|
+
return /* @__PURE__ */ jsxs3("aside", { ...props, className, "data-keepkit": "stale-notice", "data-state": error ? "error" : "stale", children: [
|
|
1695
|
+
/* @__PURE__ */ jsx8(KeepItemStatusBadge, { status }),
|
|
1696
|
+
children ?? (item.statusReason ? /* @__PURE__ */ jsx8("p", { children: item.statusReason }) : null),
|
|
1697
|
+
/* @__PURE__ */ jsxs3("div", { children: [
|
|
1698
|
+
/* @__PURE__ */ jsx8("button", { type: "button", onClick: () => void handleRetry(), disabled: isRetrying || context.isMutating, children: retryLabel ?? retryText }),
|
|
1699
|
+
/* @__PURE__ */ jsx8("button", { type: "button", onClick: () => void handleRemove(), disabled: context.isMutating, children: removeLabel ?? removeText })
|
|
1700
|
+
] }),
|
|
1701
|
+
error ? /* @__PURE__ */ jsx8("p", { role: "alert", children: error instanceof Error ? error.message : errorText }) : null
|
|
1702
|
+
] });
|
|
1703
|
+
}
|
|
1704
|
+
function KeepPruneStaleButton({
|
|
1705
|
+
statuses = ["expired", "removed", "deleted", "private", "unknown"],
|
|
1706
|
+
label,
|
|
1707
|
+
onPruned,
|
|
1708
|
+
children,
|
|
1709
|
+
disabled,
|
|
1710
|
+
...props
|
|
1711
|
+
}) {
|
|
1712
|
+
const context = useKeepContext2();
|
|
1713
|
+
const defaultLabel = useUiLabel("pruneStale");
|
|
1714
|
+
const staleIds = context.items.filter((item) => item.status && statuses.includes(item.status)).map((item) => item.id);
|
|
1715
|
+
async function handlePrune() {
|
|
1716
|
+
const ids = [...staleIds];
|
|
1717
|
+
await context.removeItemsWithUndo(ids);
|
|
1718
|
+
onPruned?.(ids);
|
|
1719
|
+
}
|
|
1720
|
+
return /* @__PURE__ */ jsx8(
|
|
1721
|
+
"button",
|
|
1722
|
+
{
|
|
1723
|
+
...props,
|
|
1724
|
+
type: "button",
|
|
1725
|
+
className: props.className,
|
|
1726
|
+
"data-keepkit": "prune-stale",
|
|
1727
|
+
"data-state": staleIds.length > 0 ? "available" : "empty",
|
|
1728
|
+
disabled: staleIds.length === 0 || context.isMutating || disabled,
|
|
1729
|
+
onClick: () => void handlePrune(),
|
|
1730
|
+
children: children ?? label ?? `${defaultLabel} (${staleIds.length})`
|
|
1731
|
+
}
|
|
1732
|
+
);
|
|
1733
|
+
}
|
|
1734
|
+
|
|
1735
|
+
// src/KeepItemCard.tsx
|
|
1736
|
+
import { Fragment as Fragment3, jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
566
1737
|
function KeepItemCard({
|
|
567
1738
|
item,
|
|
568
1739
|
title,
|
|
@@ -578,6 +1749,7 @@ function KeepItemCard({
|
|
|
578
1749
|
removeLabel,
|
|
579
1750
|
onRemoveError,
|
|
580
1751
|
onRemoved,
|
|
1752
|
+
onRetry,
|
|
581
1753
|
showSaveButton = true,
|
|
582
1754
|
saveButtonLabels,
|
|
583
1755
|
asChild = false,
|
|
@@ -606,7 +1778,7 @@ function KeepItemCard({
|
|
|
606
1778
|
const imageProps = getImageProps?.(item, resolvedTitle);
|
|
607
1779
|
const href = typeof hrefOption === "function" ? hrefOption(item) : hrefOption;
|
|
608
1780
|
const isAvailable = item.status === void 0 || item.status === "available";
|
|
609
|
-
const statusLabelKey = item.status && item.status !== "available" ?
|
|
1781
|
+
const statusLabelKey = item.status && item.status !== "available" ? getStatusLabelKey2(item.status) : "statusUnknown";
|
|
610
1782
|
const unavailableLabel = useUiLabel(statusLabelKey);
|
|
611
1783
|
const tagsLabel = useUiLabel("tags");
|
|
612
1784
|
const statusLabel = item.status && item.status !== "available" ? unavailableLabel : void 0;
|
|
@@ -619,7 +1791,7 @@ function KeepItemCard({
|
|
|
619
1791
|
onClick: (event) => onOpen?.(item, event),
|
|
620
1792
|
children: content
|
|
621
1793
|
};
|
|
622
|
-
return LinkComponent ? /* @__PURE__ */
|
|
1794
|
+
return LinkComponent ? /* @__PURE__ */ jsx9(LinkComponent, { ...linkProps }) : /* @__PURE__ */ jsx9("a", { ...linkProps });
|
|
623
1795
|
}
|
|
624
1796
|
async function handleRemove() {
|
|
625
1797
|
try {
|
|
@@ -629,12 +1801,12 @@ function KeepItemCard({
|
|
|
629
1801
|
onRemoveError?.(error);
|
|
630
1802
|
}
|
|
631
1803
|
}
|
|
632
|
-
const body = render ? render(state) : typeof contentChildren === "function" ? contentChildren(state) : contentChildren ?? /* @__PURE__ */
|
|
633
|
-
imageProps ? renderImage?.({ ...imageProps, alt: imageAlt ?? imageProps.alt }, item) ?? (ImageComponent ? /* @__PURE__ */
|
|
634
|
-
/* @__PURE__ */
|
|
635
|
-
showTags && (item.tags?.length ?? 0) > 0 ? renderTags ? renderTags(item.tags ?? [], item) : /* @__PURE__ */
|
|
636
|
-
statusLabel ? /* @__PURE__ */
|
|
637
|
-
showSaveButton ? /* @__PURE__ */
|
|
1804
|
+
const body = render ? render(state) : typeof contentChildren === "function" ? contentChildren(state) : contentChildren ?? /* @__PURE__ */ jsxs4(Fragment3, { children: [
|
|
1805
|
+
imageProps ? renderImage?.({ ...imageProps, alt: imageAlt ?? imageProps.alt }, item) ?? (ImageComponent ? /* @__PURE__ */ jsx9(ImageComponent, { ...imageProps, alt: imageAlt ?? imageProps.alt }) : /* @__PURE__ */ jsx9("img", { ...imageProps, alt: imageAlt ?? imageProps.alt })) : null,
|
|
1806
|
+
/* @__PURE__ */ jsx9("h3", { children: linkTarget === "title" ? renderLink(resolvedTitle) : resolvedTitle }),
|
|
1807
|
+
showTags && (item.tags?.length ?? 0) > 0 ? renderTags ? renderTags(item.tags ?? [], item) : /* @__PURE__ */ jsx9("ul", { "aria-label": tagsLabel, children: item.tags?.map((tag) => /* @__PURE__ */ jsx9("li", { children: tag }, tag)) }) : null,
|
|
1808
|
+
statusLabel ? /* @__PURE__ */ jsx9(KeepStaleNotice, { item, onRetry, onRemoved }) : null,
|
|
1809
|
+
showSaveButton && !statusLabel ? /* @__PURE__ */ jsx9(
|
|
638
1810
|
KeepButton,
|
|
639
1811
|
{
|
|
640
1812
|
item: toKeepButtonItem(item),
|
|
@@ -642,7 +1814,7 @@ function KeepItemCard({
|
|
|
642
1814
|
getAriaLabel: (buttonState) => `${buttonState.isSaved ? removeActionLabel : saveActionLabel} ${String(resolvedTitle)}`
|
|
643
1815
|
}
|
|
644
1816
|
) : null,
|
|
645
|
-
/* @__PURE__ */
|
|
1817
|
+
!statusLabel ? /* @__PURE__ */ jsx9("button", { type: "button", onClick: () => void handleRemove(), disabled: itemState.isMutating, children: removeLabel ?? removeActionLabel }) : null
|
|
646
1818
|
] });
|
|
647
1819
|
const linkedBody = linkTarget === "card" ? renderLink(body) : body;
|
|
648
1820
|
return renderRoot(
|
|
@@ -660,7 +1832,7 @@ function KeepItemCard({
|
|
|
660
1832
|
"KeepItemCard"
|
|
661
1833
|
);
|
|
662
1834
|
}
|
|
663
|
-
function
|
|
1835
|
+
function getStatusLabelKey2(status) {
|
|
664
1836
|
switch (status) {
|
|
665
1837
|
case "expired":
|
|
666
1838
|
return "statusExpired";
|
|
@@ -676,12 +1848,12 @@ function getStatusLabelKey(status) {
|
|
|
676
1848
|
}
|
|
677
1849
|
|
|
678
1850
|
// src/KeepList.tsx
|
|
679
|
-
import { jsx as
|
|
1851
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
680
1852
|
function KeepList(props) {
|
|
681
1853
|
const { fallback, onBoundaryError, boundaryResetKey, ...listProps } = props;
|
|
682
|
-
const content = /* @__PURE__ */
|
|
1854
|
+
const content = /* @__PURE__ */ jsx10(KeepListContent, { ...listProps });
|
|
683
1855
|
if (fallback === void 0 && onBoundaryError === void 0) return content;
|
|
684
|
-
return /* @__PURE__ */
|
|
1856
|
+
return /* @__PURE__ */ jsx10(KeepErrorBoundary, { fallback, onError: onBoundaryError, resetKey: boundaryResetKey, children: content });
|
|
685
1857
|
}
|
|
686
1858
|
function KeepListContent({
|
|
687
1859
|
query,
|
|
@@ -735,13 +1907,13 @@ function getListBody(state, options) {
|
|
|
735
1907
|
if (state.isHydrated && state.items.length === 0) return resolveContent(options.empty, state);
|
|
736
1908
|
if (typeof options.children === "function") return options.children(state);
|
|
737
1909
|
if (options.children !== void 0 && !isValidElement3(options.children)) return options.children;
|
|
738
|
-
return /* @__PURE__ */
|
|
1910
|
+
return /* @__PURE__ */ jsx10(
|
|
739
1911
|
"ul",
|
|
740
1912
|
{
|
|
741
1913
|
"data-layout": options.layout,
|
|
742
1914
|
style: options.layout === "grid" ? { display: "grid", gap: "1rem", gridTemplateColumns: "repeat(auto-fit, minmax(16rem, 1fr))" } : options.layout === "compact" ? { display: "grid", gap: "0.5rem", gridTemplateColumns: "repeat(auto-fit, minmax(12rem, 1fr))" } : { display: "flex", flexDirection: "column", gap: "1rem" },
|
|
743
1915
|
children: state.items.map(
|
|
744
|
-
(item) => options.renderItem ? options.renderItem(item, state) : /* @__PURE__ */
|
|
1916
|
+
(item) => options.renderItem ? options.renderItem(item, state) : /* @__PURE__ */ jsx10("li", { children: /* @__PURE__ */ jsx10(KeepItemCard, { item, ...options.itemCardProps }) }, item.id)
|
|
745
1917
|
)
|
|
746
1918
|
}
|
|
747
1919
|
);
|
|
@@ -749,8 +1921,8 @@ function getListBody(state, options) {
|
|
|
749
1921
|
|
|
750
1922
|
// src/KeepTagFilter.tsx
|
|
751
1923
|
import { useKeepList as useKeepList3 } from "@keepkit/core/react";
|
|
752
|
-
import { isValidElement as isValidElement4, useCallback, useMemo as useMemo2, useState as
|
|
753
|
-
import { jsx as
|
|
1924
|
+
import { isValidElement as isValidElement4, useCallback, useMemo as useMemo2, useState as useState4 } from "react";
|
|
1925
|
+
import { jsx as jsx11, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
754
1926
|
function KeepTagFilter({
|
|
755
1927
|
query,
|
|
756
1928
|
value: controlledValue,
|
|
@@ -768,7 +1940,7 @@ function KeepTagFilter({
|
|
|
768
1940
|
}) {
|
|
769
1941
|
const uiAllLabel = useUiLabel("allTags");
|
|
770
1942
|
const uiAriaLabel = useUiLabel("filterTags");
|
|
771
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
1943
|
+
const [uncontrolledValue, setUncontrolledValue] = useState4(defaultValue);
|
|
772
1944
|
const resolvedValue = controlledValue ?? uncontrolledValue;
|
|
773
1945
|
const list = useKeepList3({
|
|
774
1946
|
...query,
|
|
@@ -787,12 +1959,12 @@ function KeepTagFilter({
|
|
|
787
1959
|
[list.tagCounts, list.tags, resolvedValue, select]
|
|
788
1960
|
);
|
|
789
1961
|
const contentChildren = asChild && isValidElement4(children) ? void 0 : children;
|
|
790
|
-
const body = render ? render(state) : typeof contentChildren === "function" ? contentChildren(state) : contentChildren ?? /* @__PURE__ */
|
|
791
|
-
/* @__PURE__ */
|
|
792
|
-
/* @__PURE__ */
|
|
793
|
-
list.tags.map((tag) => /* @__PURE__ */
|
|
1962
|
+
const body = render ? render(state) : typeof contentChildren === "function" ? contentChildren(state) : contentChildren ?? /* @__PURE__ */ jsxs5("fieldset", { children: [
|
|
1963
|
+
/* @__PURE__ */ jsx11("legend", { children: ariaLabel ?? uiAriaLabel }),
|
|
1964
|
+
/* @__PURE__ */ jsx11("button", { type: "button", "aria-pressed": resolvedValue === void 0, onClick: () => select(), children: allLabel ?? uiAllLabel }),
|
|
1965
|
+
list.tags.map((tag) => /* @__PURE__ */ jsxs5("button", { type: "button", "aria-pressed": resolvedValue === tag, onClick: () => select(tag), children: [
|
|
794
1966
|
renderTag ? renderTag(tag, list.tagCounts[tag] ?? 0, resolvedValue === tag) : tag,
|
|
795
|
-
/* @__PURE__ */
|
|
1967
|
+
/* @__PURE__ */ jsxs5("span", { children: [
|
|
796
1968
|
" (",
|
|
797
1969
|
list.tagCounts[tag] ?? 0,
|
|
798
1970
|
")"
|
|
@@ -814,8 +1986,8 @@ function KeepTagFilter({
|
|
|
814
1986
|
}
|
|
815
1987
|
|
|
816
1988
|
// src/query-controls.tsx
|
|
817
|
-
import { useEffect, useState as
|
|
818
|
-
import { Fragment as Fragment4, jsx as
|
|
1989
|
+
import { useEffect, useState as useState5 } from "react";
|
|
1990
|
+
import { Fragment as Fragment4, jsx as jsx12, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
819
1991
|
function KeepSearchInput({
|
|
820
1992
|
value: controlledValue,
|
|
821
1993
|
defaultValue = "",
|
|
@@ -826,7 +1998,7 @@ function KeepSearchInput({
|
|
|
826
1998
|
...props
|
|
827
1999
|
}) {
|
|
828
2000
|
const label = useUiLabel("search");
|
|
829
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
2001
|
+
const [uncontrolledValue, setUncontrolledValue] = useState5(defaultValue);
|
|
830
2002
|
const value = controlledValue ?? uncontrolledValue;
|
|
831
2003
|
useEffect(() => {
|
|
832
2004
|
if (!onValueChange) return;
|
|
@@ -837,7 +2009,7 @@ function KeepSearchInput({
|
|
|
837
2009
|
const timer = window.setTimeout(() => onValueChange(value), debounceMs);
|
|
838
2010
|
return () => window.clearTimeout(timer);
|
|
839
2011
|
}, [debounceMs, onValueChange, value]);
|
|
840
|
-
return /* @__PURE__ */
|
|
2012
|
+
return /* @__PURE__ */ jsx12(
|
|
841
2013
|
"input",
|
|
842
2014
|
{
|
|
843
2015
|
...props,
|
|
@@ -867,15 +2039,15 @@ function KeepSortSelect({
|
|
|
867
2039
|
const updatedOldestLabel = useUiLabel("updatedOldest");
|
|
868
2040
|
const savedNewestLabel = useUiLabel("savedNewest");
|
|
869
2041
|
const savedOldestLabel = useUiLabel("savedOldest");
|
|
870
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
2042
|
+
const [uncontrolledValue, setUncontrolledValue] = useState5(defaultValue);
|
|
871
2043
|
const value = controlledValue ?? uncontrolledValue;
|
|
872
|
-
const options = children ?? /* @__PURE__ */
|
|
873
|
-
/* @__PURE__ */
|
|
874
|
-
/* @__PURE__ */
|
|
875
|
-
/* @__PURE__ */
|
|
876
|
-
/* @__PURE__ */
|
|
2044
|
+
const options = children ?? /* @__PURE__ */ jsxs6(Fragment4, { children: [
|
|
2045
|
+
/* @__PURE__ */ jsx12("option", { value: "updatedAt:desc", children: updatedNewestLabel }),
|
|
2046
|
+
/* @__PURE__ */ jsx12("option", { value: "updatedAt:asc", children: updatedOldestLabel }),
|
|
2047
|
+
/* @__PURE__ */ jsx12("option", { value: "savedAt:desc", children: savedNewestLabel }),
|
|
2048
|
+
/* @__PURE__ */ jsx12("option", { value: "savedAt:asc", children: savedOldestLabel })
|
|
877
2049
|
] });
|
|
878
|
-
return /* @__PURE__ */
|
|
2050
|
+
return /* @__PURE__ */ jsx12(
|
|
879
2051
|
"select",
|
|
880
2052
|
{
|
|
881
2053
|
...props,
|
|
@@ -917,11 +2089,11 @@ function KeepPagination({
|
|
|
917
2089
|
"aria-label": props["aria-label"] ?? paginationLabel,
|
|
918
2090
|
"data-state": pageCount > 1 ? "active" : "idle"
|
|
919
2091
|
};
|
|
920
|
-
if (render) return /* @__PURE__ */
|
|
2092
|
+
if (render) return /* @__PURE__ */ jsx12("nav", { ...navProps, children: render({ page: currentPage, pageCount, goToPage }) });
|
|
921
2093
|
const visiblePages = getVisiblePages(currentPage, pageCount, Math.max(1, maxPageButtons));
|
|
922
|
-
return /* @__PURE__ */
|
|
923
|
-
/* @__PURE__ */
|
|
924
|
-
visiblePages.map((nextPage) => /* @__PURE__ */
|
|
2094
|
+
return /* @__PURE__ */ jsxs6("nav", { ...navProps, children: [
|
|
2095
|
+
/* @__PURE__ */ jsx12("button", { type: "button", onClick: () => goToPage(currentPage - 1), disabled: currentPage <= 1, children: previousPageLabel }),
|
|
2096
|
+
visiblePages.map((nextPage) => /* @__PURE__ */ jsx12(
|
|
925
2097
|
"button",
|
|
926
2098
|
{
|
|
927
2099
|
type: "button",
|
|
@@ -932,7 +2104,7 @@ function KeepPagination({
|
|
|
932
2104
|
},
|
|
933
2105
|
nextPage
|
|
934
2106
|
)),
|
|
935
|
-
/* @__PURE__ */
|
|
2107
|
+
/* @__PURE__ */ jsx12("button", { type: "button", onClick: () => goToPage(currentPage + 1), disabled: currentPage >= pageCount, children: nextPageLabel })
|
|
936
2108
|
] });
|
|
937
2109
|
}
|
|
938
2110
|
function getVisiblePages(currentPage, pageCount, maxPageButtons) {
|
|
@@ -1025,12 +2197,12 @@ function getBrowserAdapter() {
|
|
|
1025
2197
|
}
|
|
1026
2198
|
|
|
1027
2199
|
// src/KeepCollection.tsx
|
|
1028
|
-
import { jsx as
|
|
2200
|
+
import { jsx as jsx13, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
1029
2201
|
function KeepCollection(props) {
|
|
1030
2202
|
const { fallback, onBoundaryError, boundaryResetKey, ...collectionProps } = props;
|
|
1031
|
-
const content = /* @__PURE__ */
|
|
2203
|
+
const content = /* @__PURE__ */ jsx13(KeepCollectionContent, { ...collectionProps });
|
|
1032
2204
|
if (fallback === void 0 && onBoundaryError === void 0) return content;
|
|
1033
|
-
return /* @__PURE__ */
|
|
2205
|
+
return /* @__PURE__ */ jsx13(KeepErrorBoundary2, { fallback, onError: onBoundaryError, resetKey: boundaryResetKey, children: content });
|
|
1034
2206
|
}
|
|
1035
2207
|
function KeepCollectionContent({
|
|
1036
2208
|
query = {},
|
|
@@ -1055,10 +2227,10 @@ function KeepCollectionContent({
|
|
|
1055
2227
|
bulkActions: false,
|
|
1056
2228
|
...features
|
|
1057
2229
|
};
|
|
1058
|
-
const [searchValue, setSearchValue] =
|
|
1059
|
-
const [sort, setSort] =
|
|
1060
|
-
const [tag, setTag] =
|
|
1061
|
-
const [page, setPage] =
|
|
2230
|
+
const [searchValue, setSearchValue] = useState6(query.search?.query ?? "");
|
|
2231
|
+
const [sort, setSort] = useState6(query.sort ?? { by: "updatedAt", direction: "desc" });
|
|
2232
|
+
const [tag, setTag] = useState6(query.tags?.[0]);
|
|
2233
|
+
const [page, setPage] = useState6(query.pagination?.page ?? 1);
|
|
1062
2234
|
const resolvedPageSize = query.pagination?.pageSize ?? pageSize;
|
|
1063
2235
|
const resolvedQuery = useMemo3(
|
|
1064
2236
|
() => ({
|
|
@@ -1084,7 +2256,7 @@ function KeepCollectionContent({
|
|
|
1084
2256
|
adapter: urlAdapter
|
|
1085
2257
|
});
|
|
1086
2258
|
const list = useKeepList4(resolvedQuery);
|
|
1087
|
-
return /* @__PURE__ */
|
|
2259
|
+
return /* @__PURE__ */ jsxs7(
|
|
1088
2260
|
"section",
|
|
1089
2261
|
{
|
|
1090
2262
|
...rootProps,
|
|
@@ -1093,8 +2265,8 @@ function KeepCollectionContent({
|
|
|
1093
2265
|
"data-state": getCollectionState(list),
|
|
1094
2266
|
"data-loading": list.isLoading || list.isMutating ? "true" : void 0,
|
|
1095
2267
|
children: [
|
|
1096
|
-
/* @__PURE__ */
|
|
1097
|
-
enabled.search ? /* @__PURE__ */
|
|
2268
|
+
/* @__PURE__ */ jsxs7("div", { children: [
|
|
2269
|
+
enabled.search ? /* @__PURE__ */ jsx13(
|
|
1098
2270
|
KeepSearchInput,
|
|
1099
2271
|
{
|
|
1100
2272
|
value: searchValue,
|
|
@@ -1104,7 +2276,7 @@ function KeepCollectionContent({
|
|
|
1104
2276
|
}
|
|
1105
2277
|
}
|
|
1106
2278
|
) : null,
|
|
1107
|
-
enabled.sort ? /* @__PURE__ */
|
|
2279
|
+
enabled.sort ? /* @__PURE__ */ jsx13(
|
|
1108
2280
|
KeepSortSelect,
|
|
1109
2281
|
{
|
|
1110
2282
|
value: sortToValue(sort),
|
|
@@ -1114,7 +2286,7 @@ function KeepCollectionContent({
|
|
|
1114
2286
|
}
|
|
1115
2287
|
}
|
|
1116
2288
|
) : null,
|
|
1117
|
-
enabled.tagFilter ? /* @__PURE__ */
|
|
2289
|
+
enabled.tagFilter ? /* @__PURE__ */ jsx13(
|
|
1118
2290
|
KeepTagFilter,
|
|
1119
2291
|
{
|
|
1120
2292
|
query,
|
|
@@ -1126,7 +2298,7 @@ function KeepCollectionContent({
|
|
|
1126
2298
|
}
|
|
1127
2299
|
) : null
|
|
1128
2300
|
] }),
|
|
1129
|
-
/* @__PURE__ */
|
|
2301
|
+
/* @__PURE__ */ jsx13(
|
|
1130
2302
|
KeepList,
|
|
1131
2303
|
{
|
|
1132
2304
|
query: resolvedQuery,
|
|
@@ -1138,7 +2310,7 @@ function KeepCollectionContent({
|
|
|
1138
2310
|
error
|
|
1139
2311
|
}
|
|
1140
2312
|
),
|
|
1141
|
-
enabled.pagination ? /* @__PURE__ */
|
|
2313
|
+
enabled.pagination ? /* @__PURE__ */ jsx13(
|
|
1142
2314
|
KeepPagination,
|
|
1143
2315
|
{
|
|
1144
2316
|
totalCount: list.totalCount,
|
|
@@ -1147,7 +2319,7 @@ function KeepCollectionContent({
|
|
|
1147
2319
|
onPageChange: (nextPage) => setPage(nextPage)
|
|
1148
2320
|
}
|
|
1149
2321
|
) : null,
|
|
1150
|
-
enabled.bulkActions ? /* @__PURE__ */
|
|
2322
|
+
enabled.bulkActions ? /* @__PURE__ */ jsx13(KeepBulkActions, { query: resolvedQuery }) : null
|
|
1151
2323
|
]
|
|
1152
2324
|
}
|
|
1153
2325
|
);
|
|
@@ -1160,10 +2332,10 @@ function getCollectionState(list) {
|
|
|
1160
2332
|
}
|
|
1161
2333
|
|
|
1162
2334
|
// src/KeepLayout.tsx
|
|
1163
|
-
import { jsx as
|
|
2335
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
1164
2336
|
function KeepLayout({ layout = "list", children, style, ...props }) {
|
|
1165
2337
|
const layoutStyle = layout === "grid" ? { display: "grid", gap: "1rem", gridTemplateColumns: "repeat(auto-fit, minmax(16rem, 1fr))" } : layout === "compact" ? { display: "grid", gap: "0.5rem", gridTemplateColumns: "repeat(auto-fit, minmax(12rem, 1fr))" } : { display: "flex", flexDirection: "column", gap: "1rem" };
|
|
1166
|
-
return /* @__PURE__ */
|
|
2338
|
+
return /* @__PURE__ */ jsx14("div", { ...props, style: { ...layoutStyle, ...style }, "data-layout": layout, children });
|
|
1167
2339
|
}
|
|
1168
2340
|
|
|
1169
2341
|
// src/KeepNoteEditor.tsx
|
|
@@ -1173,9 +2345,9 @@ import {
|
|
|
1173
2345
|
useCallback as useCallback2,
|
|
1174
2346
|
useEffect as useEffect3,
|
|
1175
2347
|
useRef as useRef3,
|
|
1176
|
-
useState as
|
|
2348
|
+
useState as useState7
|
|
1177
2349
|
} from "react";
|
|
1178
|
-
import { Fragment as Fragment5, jsx as
|
|
2350
|
+
import { Fragment as Fragment5, jsx as jsx15, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
1179
2351
|
function KeepNoteEditor({
|
|
1180
2352
|
item,
|
|
1181
2353
|
label,
|
|
@@ -1195,7 +2367,7 @@ function KeepNoteEditor({
|
|
|
1195
2367
|
const itemState = useKeepItem3(item);
|
|
1196
2368
|
const { error, isMutating, item: savedItem, updateNote } = itemState;
|
|
1197
2369
|
const contentChildren = asChild && isValidElement5(children) ? void 0 : children;
|
|
1198
|
-
const [note, setNote] =
|
|
2370
|
+
const [note, setNote] = useState7(item.note ?? "");
|
|
1199
2371
|
const baselineNote = savedItem?.note ?? item.note ?? "";
|
|
1200
2372
|
const isDirty = note !== baselineNote;
|
|
1201
2373
|
const lastSavedNoteRef = useRef3(void 0);
|
|
@@ -1225,10 +2397,10 @@ function KeepNoteEditor({
|
|
|
1225
2397
|
error,
|
|
1226
2398
|
save
|
|
1227
2399
|
};
|
|
1228
|
-
const body = render ? render(state) : typeof contentChildren === "function" ? contentChildren(state) : contentChildren ?? /* @__PURE__ */
|
|
1229
|
-
/* @__PURE__ */
|
|
2400
|
+
const body = render ? render(state) : typeof contentChildren === "function" ? contentChildren(state) : contentChildren ?? /* @__PURE__ */ jsxs8(Fragment5, { children: [
|
|
2401
|
+
/* @__PURE__ */ jsxs8("label", { children: [
|
|
1230
2402
|
label ?? defaultLabel,
|
|
1231
|
-
/* @__PURE__ */
|
|
2403
|
+
/* @__PURE__ */ jsx15(
|
|
1232
2404
|
"textarea",
|
|
1233
2405
|
{
|
|
1234
2406
|
value: note,
|
|
@@ -1244,14 +2416,14 @@ function KeepNoteEditor({
|
|
|
1244
2416
|
}
|
|
1245
2417
|
)
|
|
1246
2418
|
] }),
|
|
1247
|
-
/* @__PURE__ */
|
|
2419
|
+
/* @__PURE__ */ jsx15("button", { type: "submit", disabled: isMutating, "aria-busy": isMutating, children: saveLabel ?? defaultSaveLabel })
|
|
1248
2420
|
] });
|
|
1249
2421
|
const handleSubmit = (event) => {
|
|
1250
2422
|
event.preventDefault();
|
|
1251
2423
|
void save().catch(() => void 0);
|
|
1252
2424
|
};
|
|
1253
2425
|
if (!asChild) {
|
|
1254
|
-
return /* @__PURE__ */
|
|
2426
|
+
return /* @__PURE__ */ jsx15(
|
|
1255
2427
|
"form",
|
|
1256
2428
|
{
|
|
1257
2429
|
...formProps,
|
|
@@ -1282,10 +2454,159 @@ function KeepNoteEditor({
|
|
|
1282
2454
|
);
|
|
1283
2455
|
}
|
|
1284
2456
|
|
|
2457
|
+
// src/KeepSyncRecoveryDialog.tsx
|
|
2458
|
+
import { useKeepContext as useKeepContext3 } from "@keepkit/core/react";
|
|
2459
|
+
import { useEffect as useEffect4, useState as useState8 } from "react";
|
|
2460
|
+
import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
2461
|
+
function KeepSyncRecoveryDialog({
|
|
2462
|
+
open,
|
|
2463
|
+
onOpenChange,
|
|
2464
|
+
conflicts,
|
|
2465
|
+
onManualMerge,
|
|
2466
|
+
backup,
|
|
2467
|
+
showBackupControls = true,
|
|
2468
|
+
title,
|
|
2469
|
+
children,
|
|
2470
|
+
className,
|
|
2471
|
+
...props
|
|
2472
|
+
}) {
|
|
2473
|
+
const context = useKeepContext3();
|
|
2474
|
+
const closeLabel = useUiLabel("close");
|
|
2475
|
+
const defaultDialogTitle = useUiLabel("resolveSync");
|
|
2476
|
+
const dialogTitle = title ?? defaultDialogTitle;
|
|
2477
|
+
const conflictLabel = useUiLabel("syncConflict");
|
|
2478
|
+
const keepLocalLabel = useUiLabel("keepLocal");
|
|
2479
|
+
const useServerLabel = useUiLabel("useServer");
|
|
2480
|
+
const manualMergeLabel = useUiLabel("manualMerge");
|
|
2481
|
+
const backupRecoveryLabel = useUiLabel("backupRecovery");
|
|
2482
|
+
const backupRecoveryDescription = useUiLabel("backupRecoveryDescription");
|
|
2483
|
+
const errorLabel = useUiLabel("error");
|
|
2484
|
+
const conflictList = conflicts ?? context.syncState.conflicts ?? [];
|
|
2485
|
+
const hasRecovery = conflictList.length > 0 || context.syncState.status === "error" || Boolean(context.error);
|
|
2486
|
+
const [dismissed, setDismissed] = useState8(false);
|
|
2487
|
+
const [busyId, setBusyId] = useState8();
|
|
2488
|
+
const [error, setError] = useState8();
|
|
2489
|
+
useEffect4(() => {
|
|
2490
|
+
if (hasRecovery) setDismissed(false);
|
|
2491
|
+
}, [hasRecovery]);
|
|
2492
|
+
const isOpen = open ?? (hasRecovery && !dismissed);
|
|
2493
|
+
if (!isOpen) return null;
|
|
2494
|
+
const close = () => {
|
|
2495
|
+
setDismissed(true);
|
|
2496
|
+
onOpenChange?.(false);
|
|
2497
|
+
};
|
|
2498
|
+
async function resolve(conflict, resolution) {
|
|
2499
|
+
setError(void 0);
|
|
2500
|
+
setBusyId(conflict.id);
|
|
2501
|
+
try {
|
|
2502
|
+
const merged = resolution === "manual" ? await onManualMerge?.(conflict) : void 0;
|
|
2503
|
+
if (resolution === "manual" && !merged) throw new Error("A manual merge result is required.");
|
|
2504
|
+
await context.resolveSyncConflict(conflict.id, resolution, merged);
|
|
2505
|
+
} catch (cause) {
|
|
2506
|
+
setError(cause);
|
|
2507
|
+
} finally {
|
|
2508
|
+
setBusyId(void 0);
|
|
2509
|
+
}
|
|
2510
|
+
}
|
|
2511
|
+
return /* @__PURE__ */ jsxs9(
|
|
2512
|
+
"section",
|
|
2513
|
+
{
|
|
2514
|
+
...props,
|
|
2515
|
+
className,
|
|
2516
|
+
role: "dialog",
|
|
2517
|
+
"aria-modal": "true",
|
|
2518
|
+
"aria-labelledby": "keepkit-sync-recovery-title",
|
|
2519
|
+
"data-keepkit": "sync-recovery",
|
|
2520
|
+
"data-state": conflictList.length > 0 ? "conflict" : "error",
|
|
2521
|
+
children: [
|
|
2522
|
+
/* @__PURE__ */ jsxs9("header", { children: [
|
|
2523
|
+
/* @__PURE__ */ jsx16("h2", { id: "keepkit-sync-recovery-title", children: dialogTitle }),
|
|
2524
|
+
/* @__PURE__ */ jsx16("button", { type: "button", onClick: close, "aria-label": closeLabel, children: closeLabel })
|
|
2525
|
+
] }),
|
|
2526
|
+
children,
|
|
2527
|
+
conflictList.length > 0 ? /* @__PURE__ */ jsxs9("div", { children: [
|
|
2528
|
+
/* @__PURE__ */ jsx16("p", { children: conflictLabel }),
|
|
2529
|
+
conflictList.map((conflict) => /* @__PURE__ */ jsxs9("article", { "data-conflict-id": conflict.id, children: [
|
|
2530
|
+
/* @__PURE__ */ jsx16("h3", { children: getMetaTitle(conflict.operation.item?.meta) ?? conflict.id }),
|
|
2531
|
+
/* @__PURE__ */ jsxs9("div", { children: [
|
|
2532
|
+
/* @__PURE__ */ jsx16("button", { type: "button", onClick: () => void resolve(conflict, "local"), disabled: busyId !== void 0, children: keepLocalLabel }),
|
|
2533
|
+
/* @__PURE__ */ jsx16("button", { type: "button", onClick: () => void resolve(conflict, "remote"), disabled: busyId !== void 0, children: useServerLabel }),
|
|
2534
|
+
/* @__PURE__ */ jsx16(
|
|
2535
|
+
"button",
|
|
2536
|
+
{
|
|
2537
|
+
type: "button",
|
|
2538
|
+
onClick: () => void resolve(conflict, "manual"),
|
|
2539
|
+
disabled: busyId !== void 0 || !onManualMerge,
|
|
2540
|
+
children: manualMergeLabel
|
|
2541
|
+
}
|
|
2542
|
+
)
|
|
2543
|
+
] })
|
|
2544
|
+
] }, conflict.id))
|
|
2545
|
+
] }) : null,
|
|
2546
|
+
context.syncState.status === "error" || context.error ? /* @__PURE__ */ jsxs9("section", { "data-recovery": "backup", children: [
|
|
2547
|
+
/* @__PURE__ */ jsx16("h3", { children: backupRecoveryLabel }),
|
|
2548
|
+
/* @__PURE__ */ jsx16("p", { children: backupRecoveryDescription }),
|
|
2549
|
+
backup ?? (showBackupControls ? /* @__PURE__ */ jsx16(KeepBackup, {}) : null)
|
|
2550
|
+
] }) : null,
|
|
2551
|
+
error ? /* @__PURE__ */ jsx16("p", { role: "alert", children: error instanceof Error ? error.message : errorLabel }) : null
|
|
2552
|
+
]
|
|
2553
|
+
}
|
|
2554
|
+
);
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2557
|
+
// src/KeepSyncStatusBanner.tsx
|
|
2558
|
+
import { useKeepContext as useKeepContext4 } from "@keepkit/core/react";
|
|
2559
|
+
import { jsx as jsx17, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
2560
|
+
function KeepSyncStatusBanner({
|
|
2561
|
+
onRetry,
|
|
2562
|
+
onResolveConflicts,
|
|
2563
|
+
children,
|
|
2564
|
+
className,
|
|
2565
|
+
...props
|
|
2566
|
+
}) {
|
|
2567
|
+
const context = useKeepContext4();
|
|
2568
|
+
const retryLabel = useUiLabel("retrySync");
|
|
2569
|
+
const resolveLabel = useUiLabel("resolveSync");
|
|
2570
|
+
const conflictLabel = useUiLabel("syncConflict");
|
|
2571
|
+
const pendingLabel = useUiLabel("syncPending");
|
|
2572
|
+
const syncedLabel = useUiLabel("syncSynced");
|
|
2573
|
+
const status = context.syncState.status;
|
|
2574
|
+
const hasConflicts = (context.syncState.conflicts?.length ?? 0) > 0 || context.syncState.conflictIds.length > 0;
|
|
2575
|
+
if (status === "idle" && !hasConflicts) return null;
|
|
2576
|
+
const message = children ?? (status === "error" ? getErrorMessage2(context.syncState.error) : status === "conflict" || hasConflicts ? conflictLabel : status === "pending" || status === "syncing" ? pendingLabel : syncedLabel);
|
|
2577
|
+
const role = status === "error" || status === "conflict" || hasConflicts ? "alert" : "status";
|
|
2578
|
+
const retry = async () => {
|
|
2579
|
+
if (onRetry) {
|
|
2580
|
+
await onRetry();
|
|
2581
|
+
return;
|
|
2582
|
+
}
|
|
2583
|
+
await context.flushSync();
|
|
2584
|
+
};
|
|
2585
|
+
return /* @__PURE__ */ jsxs10(
|
|
2586
|
+
"aside",
|
|
2587
|
+
{
|
|
2588
|
+
...props,
|
|
2589
|
+
className,
|
|
2590
|
+
role: props.role ?? role,
|
|
2591
|
+
"aria-live": props["aria-live"] ?? "polite",
|
|
2592
|
+
"data-keepkit": "sync-status",
|
|
2593
|
+
"data-state": status,
|
|
2594
|
+
children: [
|
|
2595
|
+
/* @__PURE__ */ jsx17("p", { children: message }),
|
|
2596
|
+
status === "error" || status === "pending" || status === "syncing" ? /* @__PURE__ */ jsx17("button", { type: "button", onClick: () => void retry(), disabled: context.isMutating, children: retryLabel }) : null,
|
|
2597
|
+
hasConflicts ? /* @__PURE__ */ jsx17("button", { type: "button", onClick: onResolveConflicts, disabled: !onResolveConflicts, children: resolveLabel }) : null
|
|
2598
|
+
]
|
|
2599
|
+
}
|
|
2600
|
+
);
|
|
2601
|
+
}
|
|
2602
|
+
function getErrorMessage2(error) {
|
|
2603
|
+
return error instanceof Error ? error.message : "Sync failed.";
|
|
2604
|
+
}
|
|
2605
|
+
|
|
1285
2606
|
// src/KeepTagEditor.tsx
|
|
1286
2607
|
import { useKeepItem as useKeepItem4 } from "@keepkit/core/react";
|
|
1287
|
-
import { useCallback as useCallback3, useEffect as
|
|
1288
|
-
import { Fragment as Fragment6, jsx as
|
|
2608
|
+
import { useCallback as useCallback3, useEffect as useEffect5, useState as useState9 } from "react";
|
|
2609
|
+
import { Fragment as Fragment6, jsx as jsx18, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
1289
2610
|
function KeepTagEditor({
|
|
1290
2611
|
item,
|
|
1291
2612
|
availableTags = [],
|
|
@@ -1298,9 +2619,9 @@ function KeepTagEditor({
|
|
|
1298
2619
|
const removeLabel = useUiLabel("remove");
|
|
1299
2620
|
const applyTagsLabel = useUiLabel("applyTags");
|
|
1300
2621
|
const itemState = useKeepItem4(item);
|
|
1301
|
-
const [tags, setTags] =
|
|
1302
|
-
const [input, setInput] =
|
|
1303
|
-
|
|
2622
|
+
const [tags, setTags] = useState9(item.tags ?? []);
|
|
2623
|
+
const [input, setInput] = useState9("");
|
|
2624
|
+
useEffect5(() => setTags(itemState.item?.tags ?? item.tags ?? []), [item.tags, itemState.item?.tags]);
|
|
1304
2625
|
const save = useCallback3(async () => {
|
|
1305
2626
|
const nextTags = normalizeUiTags(tags);
|
|
1306
2627
|
try {
|
|
@@ -1316,10 +2637,10 @@ function KeepTagEditor({
|
|
|
1316
2637
|
setTags(normalizeUiTags([...tags, tag]));
|
|
1317
2638
|
setInput("");
|
|
1318
2639
|
};
|
|
1319
|
-
const body = render ? render({ tags, setTags, save, isSaving: itemState.isMutating }) : /* @__PURE__ */
|
|
1320
|
-
/* @__PURE__ */
|
|
2640
|
+
const body = render ? render({ tags, setTags, save, isSaving: itemState.isMutating }) : /* @__PURE__ */ jsxs11(Fragment6, { children: [
|
|
2641
|
+
/* @__PURE__ */ jsxs11("label", { children: [
|
|
1321
2642
|
tagsLabel,
|
|
1322
|
-
/* @__PURE__ */
|
|
2643
|
+
/* @__PURE__ */ jsx18(
|
|
1323
2644
|
"input",
|
|
1324
2645
|
{
|
|
1325
2646
|
value: input,
|
|
@@ -1338,14 +2659,14 @@ function KeepTagEditor({
|
|
|
1338
2659
|
}
|
|
1339
2660
|
)
|
|
1340
2661
|
] }),
|
|
1341
|
-
availableTags.length > 0 ? /* @__PURE__ */
|
|
1342
|
-
/* @__PURE__ */
|
|
2662
|
+
availableTags.length > 0 ? /* @__PURE__ */ jsx18("datalist", { id: `keep-tags-${item.id}`, children: availableTags.map((tag) => /* @__PURE__ */ jsx18("option", { value: tag }, tag)) }) : null,
|
|
2663
|
+
/* @__PURE__ */ jsx18("ul", { "aria-label": tagsLabel, children: tags.map((tag) => /* @__PURE__ */ jsxs11("li", { children: [
|
|
1343
2664
|
tag,
|
|
1344
|
-
/* @__PURE__ */
|
|
2665
|
+
/* @__PURE__ */ jsx18("button", { type: "button", onClick: () => setTags(tags.filter((current) => current !== tag)), children: removeLabel })
|
|
1345
2666
|
] }, tag)) }),
|
|
1346
|
-
/* @__PURE__ */
|
|
2667
|
+
/* @__PURE__ */ jsx18("button", { type: "submit", disabled: itemState.isMutating, "aria-busy": itemState.isMutating, children: applyTagsLabel })
|
|
1347
2668
|
] });
|
|
1348
|
-
return /* @__PURE__ */
|
|
2669
|
+
return /* @__PURE__ */ jsx18(
|
|
1349
2670
|
"form",
|
|
1350
2671
|
{
|
|
1351
2672
|
...props,
|
|
@@ -1363,23 +2684,23 @@ function KeepTagEditor({
|
|
|
1363
2684
|
}
|
|
1364
2685
|
|
|
1365
2686
|
// src/KeepUndo.tsx
|
|
1366
|
-
import { useKeepContext as
|
|
1367
|
-
import { jsx as
|
|
2687
|
+
import { useKeepContext as useKeepContext5 } from "@keepkit/core/react";
|
|
2688
|
+
import { jsx as jsx19, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1368
2689
|
function KeepUndo({ children, label, ...props }) {
|
|
1369
|
-
const context =
|
|
2690
|
+
const context = useKeepContext5();
|
|
1370
2691
|
const message = useUiLabel("undoAvailable");
|
|
1371
2692
|
const undoLabel = useUiLabel("undo");
|
|
1372
2693
|
if (!context.undo.canUndo) return null;
|
|
1373
|
-
return /* @__PURE__ */
|
|
2694
|
+
return /* @__PURE__ */ jsxs12("div", { ...props, role: "status", "aria-live": "polite", "data-state": "available", children: [
|
|
1374
2695
|
children ?? message,
|
|
1375
|
-
/* @__PURE__ */
|
|
2696
|
+
/* @__PURE__ */ jsx19("button", { type: "button", onClick: () => void context.undoLastRemoval(), children: label ?? undoLabel })
|
|
1376
2697
|
] });
|
|
1377
2698
|
}
|
|
1378
2699
|
|
|
1379
2700
|
// src/status.tsx
|
|
1380
|
-
import { useKeepContext as
|
|
1381
|
-
import { isValidElement as isValidElement6, useEffect as
|
|
1382
|
-
import { Fragment as Fragment7, jsx as
|
|
2701
|
+
import { useKeepContext as useKeepContext6 } from "@keepkit/core/react";
|
|
2702
|
+
import { isValidElement as isValidElement6, useEffect as useEffect6, useRef as useRef4, useState as useState10 } from "react";
|
|
2703
|
+
import { Fragment as Fragment7, jsx as jsx20, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1383
2704
|
function KeepEmptyState({
|
|
1384
2705
|
title,
|
|
1385
2706
|
description,
|
|
@@ -1391,9 +2712,9 @@ function KeepEmptyState({
|
|
|
1391
2712
|
}) {
|
|
1392
2713
|
const defaultTitle = useUiLabel("noItems").replace(/\.$/, "");
|
|
1393
2714
|
const contentChildren = asChild && isValidElement6(children) ? void 0 : children;
|
|
1394
|
-
const body = contentChildren ?? /* @__PURE__ */
|
|
1395
|
-
/* @__PURE__ */
|
|
1396
|
-
description ? /* @__PURE__ */
|
|
2715
|
+
const body = contentChildren ?? /* @__PURE__ */ jsxs13(Fragment7, { children: [
|
|
2716
|
+
/* @__PURE__ */ jsx20("h2", { children: title ?? defaultTitle }),
|
|
2717
|
+
description ? /* @__PURE__ */ jsx20("p", { children: description }) : null,
|
|
1397
2718
|
action
|
|
1398
2719
|
] });
|
|
1399
2720
|
return renderRoot(asChild, children, { ...rootProps, className, "data-state": "empty" }, body, "KeepEmptyState");
|
|
@@ -1407,10 +2728,10 @@ function KeepStatus({
|
|
|
1407
2728
|
className,
|
|
1408
2729
|
...rootProps
|
|
1409
2730
|
}) {
|
|
1410
|
-
const context =
|
|
2731
|
+
const context = useKeepContext6();
|
|
1411
2732
|
const contentChildren = asChild && isValidElement6(children) ? void 0 : children;
|
|
1412
2733
|
const resolvedStatus = status ?? getDerivedStatus(context);
|
|
1413
|
-
const defaultLabel = useUiLabel(
|
|
2734
|
+
const defaultLabel = useUiLabel(getStatusLabelKey3(resolvedStatus));
|
|
1414
2735
|
const state = {
|
|
1415
2736
|
status: resolvedStatus,
|
|
1416
2737
|
error: context.error,
|
|
@@ -1435,13 +2756,13 @@ function KeepStatus({
|
|
|
1435
2756
|
);
|
|
1436
2757
|
}
|
|
1437
2758
|
function KeepAnnouncements({ messages, ...props }) {
|
|
1438
|
-
const context =
|
|
2759
|
+
const context = useKeepContext6();
|
|
1439
2760
|
const savedMessage = useUiLabel("savedMessage", messages?.save);
|
|
1440
2761
|
const removedMessage = useUiLabel("removedMessage", messages?.remove);
|
|
1441
2762
|
const noteSavedMessage = useUiLabel("noteSavedMessage", messages?.note);
|
|
1442
|
-
const [message, setMessage] =
|
|
2763
|
+
const [message, setMessage] = useState10("");
|
|
1443
2764
|
const lastChangeRef = useRef4(void 0);
|
|
1444
|
-
|
|
2765
|
+
useEffect6(() => {
|
|
1445
2766
|
const change = context.lastChange;
|
|
1446
2767
|
if (!change || change === lastChangeRef.current) return;
|
|
1447
2768
|
lastChangeRef.current = change;
|
|
@@ -1449,7 +2770,7 @@ function KeepAnnouncements({ messages, ...props }) {
|
|
|
1449
2770
|
else if (change.action === "remove" || change.action === "removeBatch") setMessage(removedMessage);
|
|
1450
2771
|
else if (change.action === "updateNote") setMessage(noteSavedMessage);
|
|
1451
2772
|
}, [context.lastChange, noteSavedMessage, removedMessage, savedMessage]);
|
|
1452
|
-
return /* @__PURE__ */
|
|
2773
|
+
return /* @__PURE__ */ jsx20(
|
|
1453
2774
|
"div",
|
|
1454
2775
|
{
|
|
1455
2776
|
...props,
|
|
@@ -1470,7 +2791,7 @@ function getDerivedStatus(context) {
|
|
|
1470
2791
|
if (context.isHydrated && context.items.length === 0) return "empty";
|
|
1471
2792
|
return "idle";
|
|
1472
2793
|
}
|
|
1473
|
-
function
|
|
2794
|
+
function getStatusLabelKey3(status) {
|
|
1474
2795
|
if (status === "empty") return "noItems";
|
|
1475
2796
|
if (status === "loading") return "loadingItems";
|
|
1476
2797
|
if (status === "error") return "error";
|
|
@@ -1480,10 +2801,11 @@ function getStatusLabelKey2(status) {
|
|
|
1480
2801
|
}
|
|
1481
2802
|
|
|
1482
2803
|
// src/index.tsx
|
|
2804
|
+
import { createAuthenticatedSyncKit } from "@keepkit/core/core";
|
|
1483
2805
|
import {
|
|
1484
2806
|
KeepErrorBoundary as KeepErrorBoundary3,
|
|
1485
2807
|
KeepProvider,
|
|
1486
|
-
useKeepContext as
|
|
2808
|
+
useKeepContext as useKeepContext7,
|
|
1487
2809
|
useKeepItem as useKeepItem5,
|
|
1488
2810
|
useKeepList as useKeepList5,
|
|
1489
2811
|
useKeepShortcut
|
|
@@ -1498,7 +2820,7 @@ import {
|
|
|
1498
2820
|
LocalStorageSyncQueueAdapter,
|
|
1499
2821
|
SyncStorageAdapter
|
|
1500
2822
|
} from "@keepkit/core/storage";
|
|
1501
|
-
import { jsx as
|
|
2823
|
+
import { jsx as jsx21, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1502
2824
|
function KeepKitProvider({
|
|
1503
2825
|
labels,
|
|
1504
2826
|
locale,
|
|
@@ -1506,16 +2828,16 @@ function KeepKitProvider({
|
|
|
1506
2828
|
children,
|
|
1507
2829
|
...providerProps
|
|
1508
2830
|
}) {
|
|
1509
|
-
return /* @__PURE__ */
|
|
2831
|
+
return /* @__PURE__ */ jsx21(KeepUiProvider, { labels, locale, labelResolver, children: /* @__PURE__ */ jsxs14(CoreKeepProvider, { ...providerProps, children: [
|
|
1510
2832
|
children,
|
|
1511
|
-
/* @__PURE__ */
|
|
2833
|
+
/* @__PURE__ */ jsx21(KeepAnnouncements, {})
|
|
1512
2834
|
] }) });
|
|
1513
2835
|
}
|
|
1514
2836
|
function createKeepKit(options = {}) {
|
|
1515
2837
|
const { labels, locale, labelResolver, getTitle, getImageProps, ...coreOptions } = options;
|
|
1516
2838
|
const coreKit = createCoreKeepKit(coreOptions);
|
|
1517
2839
|
return {
|
|
1518
|
-
Provider: (props) => /* @__PURE__ */
|
|
2840
|
+
Provider: (props) => /* @__PURE__ */ jsx21(
|
|
1519
2841
|
KeepKitProvider,
|
|
1520
2842
|
{
|
|
1521
2843
|
...coreOptions,
|
|
@@ -1525,9 +2847,9 @@ function createKeepKit(options = {}) {
|
|
|
1525
2847
|
...props
|
|
1526
2848
|
}
|
|
1527
2849
|
),
|
|
1528
|
-
Button: (props) => /* @__PURE__ */
|
|
1529
|
-
Backup: (props) => /* @__PURE__ */
|
|
1530
|
-
Collection: (props) => /* @__PURE__ */
|
|
2850
|
+
Button: (props) => /* @__PURE__ */ jsx21(KeepButton, { ...props }),
|
|
2851
|
+
Backup: (props) => /* @__PURE__ */ jsx21(KeepBackup, { ...props }),
|
|
2852
|
+
Collection: (props) => /* @__PURE__ */ jsx21(
|
|
1531
2853
|
KeepCollection,
|
|
1532
2854
|
{
|
|
1533
2855
|
...props,
|
|
@@ -1558,15 +2880,20 @@ export {
|
|
|
1558
2880
|
KeepErrorBoundary3 as KeepErrorBoundary,
|
|
1559
2881
|
KeepItemCard,
|
|
1560
2882
|
KeepItemCheckbox,
|
|
2883
|
+
KeepItemStatusBadge,
|
|
1561
2884
|
KeepKitProvider,
|
|
1562
2885
|
KeepLayout,
|
|
1563
2886
|
KeepList,
|
|
1564
2887
|
KeepNoteEditor,
|
|
1565
2888
|
KeepPagination,
|
|
1566
2889
|
KeepProvider,
|
|
2890
|
+
KeepPruneStaleButton,
|
|
1567
2891
|
KeepSearchInput,
|
|
1568
2892
|
KeepSortSelect,
|
|
2893
|
+
KeepStaleNotice,
|
|
1569
2894
|
KeepStatus,
|
|
2895
|
+
KeepSyncRecoveryDialog,
|
|
2896
|
+
KeepSyncStatusBanner,
|
|
1570
2897
|
KeepTagEditor,
|
|
1571
2898
|
KeepTagFilter,
|
|
1572
2899
|
KeepUiProvider,
|
|
@@ -1574,6 +2901,7 @@ export {
|
|
|
1574
2901
|
LocalStorageAdapter,
|
|
1575
2902
|
LocalStorageSyncQueueAdapter,
|
|
1576
2903
|
SyncStorageAdapter,
|
|
2904
|
+
createAuthenticatedSyncKit,
|
|
1577
2905
|
createBrowserStorageAdapter,
|
|
1578
2906
|
createKeepKit,
|
|
1579
2907
|
createNextPagesRouterAdapter,
|
|
@@ -1581,7 +2909,7 @@ export {
|
|
|
1581
2909
|
getKeepLocaleLabels,
|
|
1582
2910
|
isAllSelected,
|
|
1583
2911
|
toggleSelectAll,
|
|
1584
|
-
|
|
2912
|
+
useKeepContext7 as useKeepContext,
|
|
1585
2913
|
useKeepItem5 as useKeepItem,
|
|
1586
2914
|
useKeepList5 as useKeepList,
|
|
1587
2915
|
useKeepShortcut,
|