@mdguggenbichler/slugbase-core 0.0.4 → 0.0.6

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.
Files changed (120) hide show
  1. package/frontend/index.tsx +3 -3
  2. package/frontend/public/favicon.svg +1 -0
  3. package/frontend/public/slugbase_icon_blue.svg +1 -0
  4. package/frontend/public/slugbase_icon_white.png +0 -0
  5. package/frontend/public/slugbase_icon_white.svg +1 -0
  6. package/frontend/src/App.tsx +179 -0
  7. package/frontend/src/api/client.ts +134 -0
  8. package/frontend/src/components/AppSidebar.tsx +214 -0
  9. package/frontend/src/components/EmptyState.tsx +33 -0
  10. package/frontend/src/components/Favicon.tsx +76 -0
  11. package/frontend/src/components/FilterChips.tsx +60 -0
  12. package/frontend/src/components/FolderIcon.tsx +207 -0
  13. package/frontend/src/components/GlobalSearch.tsx +275 -0
  14. package/frontend/src/components/Layout.tsx +60 -0
  15. package/frontend/src/components/PageHeader.tsx +31 -0
  16. package/frontend/src/components/ScopeSegmentedControl.tsx +42 -0
  17. package/frontend/src/components/SentryDebug.tsx +32 -0
  18. package/frontend/src/components/StatCard.tsx +66 -0
  19. package/frontend/src/components/TopBar.tsx +63 -0
  20. package/frontend/src/components/UserDropdown.tsx +86 -0
  21. package/frontend/src/components/admin/AdminAI.tsx +207 -0
  22. package/frontend/src/components/admin/AdminOIDCProviders.tsx +183 -0
  23. package/frontend/src/components/admin/AdminSettings.tsx +413 -0
  24. package/frontend/src/components/admin/AdminTeams.tsx +177 -0
  25. package/frontend/src/components/admin/AdminUsers.tsx +225 -0
  26. package/frontend/src/components/bookmarks/BookmarkCard.tsx +312 -0
  27. package/frontend/src/components/bookmarks/BookmarkListItem.tsx +159 -0
  28. package/frontend/src/components/bookmarks/BookmarkTableView.tsx +419 -0
  29. package/frontend/src/components/bookmarks/BulkActionModals.tsx +162 -0
  30. package/frontend/src/components/bookmarks/FilterChips.tsx +5 -0
  31. package/frontend/src/components/modals/BookmarkModal.tsx +493 -0
  32. package/frontend/src/components/modals/FolderModal.tsx +306 -0
  33. package/frontend/src/components/modals/ImportModal.tsx +232 -0
  34. package/frontend/src/components/modals/OIDCProviderModal.tsx +284 -0
  35. package/frontend/src/components/modals/SharingModal.tsx +96 -0
  36. package/frontend/src/components/modals/TagModal.tsx +101 -0
  37. package/frontend/src/components/modals/TeamAssignmentModal.tsx +354 -0
  38. package/frontend/src/components/modals/TeamModal.tsx +117 -0
  39. package/frontend/src/components/modals/UserModal.tsx +225 -0
  40. package/frontend/src/components/profile/CreateTokenModal.tsx +172 -0
  41. package/frontend/src/components/sharing/ShareResourceDialog.tsx +422 -0
  42. package/frontend/src/components/ui/Autocomplete.tsx +155 -0
  43. package/frontend/src/components/ui/Button.tsx +68 -0
  44. package/frontend/src/components/ui/ConfirmDialog.tsx +79 -0
  45. package/frontend/src/components/ui/FormFieldWrapper.tsx +36 -0
  46. package/frontend/src/components/ui/ModalFooterActions.tsx +49 -0
  47. package/frontend/src/components/ui/ModalSection.tsx +34 -0
  48. package/frontend/src/components/ui/PageLoadingSkeleton.tsx +24 -0
  49. package/frontend/src/components/ui/Select.tsx +61 -0
  50. package/frontend/src/components/ui/SharingField.tsx +298 -0
  51. package/frontend/src/components/ui/Toast.tsx +47 -0
  52. package/frontend/src/components/ui/Tooltip.tsx +21 -0
  53. package/frontend/src/components/ui/alert-dialog.tsx +139 -0
  54. package/frontend/src/components/ui/badge.tsx +36 -0
  55. package/frontend/src/components/ui/button-base.tsx +57 -0
  56. package/frontend/src/components/ui/card.tsx +76 -0
  57. package/frontend/src/components/ui/command.tsx +161 -0
  58. package/frontend/src/components/ui/dialog.tsx +120 -0
  59. package/frontend/src/components/ui/dropdown-menu.tsx +199 -0
  60. package/frontend/src/components/ui/input.tsx +22 -0
  61. package/frontend/src/components/ui/label.tsx +24 -0
  62. package/frontend/src/components/ui/popover.tsx +33 -0
  63. package/frontend/src/components/ui/progress.tsx +26 -0
  64. package/frontend/src/components/ui/scroll-area.tsx +48 -0
  65. package/frontend/src/components/ui/select-base.tsx +159 -0
  66. package/frontend/src/components/ui/separator.tsx +29 -0
  67. package/frontend/src/components/ui/sheet.tsx +140 -0
  68. package/frontend/src/components/ui/sidebar.tsx +783 -0
  69. package/frontend/src/components/ui/skeleton.tsx +15 -0
  70. package/frontend/src/components/ui/sonner.tsx +46 -0
  71. package/frontend/src/components/ui/switch.tsx +28 -0
  72. package/frontend/src/components/ui/table.tsx +120 -0
  73. package/frontend/src/components/ui/tooltip-base.tsx +30 -0
  74. package/frontend/src/config/api.ts +16 -0
  75. package/frontend/src/config/mode.ts +6 -0
  76. package/frontend/src/contexts/AppConfigContext.tsx +39 -0
  77. package/frontend/src/contexts/AuthContext.tsx +137 -0
  78. package/frontend/src/contexts/SearchCommandContext.tsx +28 -0
  79. package/frontend/src/hooks/use-mobile.tsx +19 -0
  80. package/frontend/src/hooks/useConfirmDialog.ts +63 -0
  81. package/frontend/src/hooks/useMarketingTheme.ts +47 -0
  82. package/frontend/src/i18n.ts +39 -0
  83. package/frontend/src/index.css +117 -0
  84. package/frontend/src/instrument.ts +20 -0
  85. package/frontend/src/lib/utils.ts +6 -0
  86. package/frontend/src/locales/de.json +899 -0
  87. package/frontend/src/locales/en.json +937 -0
  88. package/frontend/src/locales/es.json +884 -0
  89. package/frontend/src/locales/fr.json +550 -0
  90. package/frontend/src/locales/it.json +535 -0
  91. package/frontend/src/locales/ja.json +535 -0
  92. package/frontend/src/locales/nl.json +550 -0
  93. package/frontend/src/locales/pl.json +535 -0
  94. package/frontend/src/locales/pt.json +535 -0
  95. package/frontend/src/locales/ru.json +535 -0
  96. package/frontend/src/locales/zh.json +535 -0
  97. package/frontend/src/main.tsx +44 -0
  98. package/frontend/src/pages/Bookmarks.tsx +1004 -0
  99. package/frontend/src/pages/Dashboard.tsx +427 -0
  100. package/frontend/src/pages/Folders.tsx +578 -0
  101. package/frontend/src/pages/GoPreferences.tsx +134 -0
  102. package/frontend/src/pages/Login.tsx +196 -0
  103. package/frontend/src/pages/PasswordReset.tsx +242 -0
  104. package/frontend/src/pages/Profile.tsx +593 -0
  105. package/frontend/src/pages/SearchEngineGuide.tsx +135 -0
  106. package/frontend/src/pages/Setup.tsx +210 -0
  107. package/frontend/src/pages/Signup.tsx +199 -0
  108. package/frontend/src/pages/Tags.tsx +421 -0
  109. package/frontend/src/pages/VerifyEmail.tsx +254 -0
  110. package/frontend/src/pages/admin/AdminAIPage.tsx +5 -0
  111. package/frontend/src/pages/admin/AdminLayout.tsx +40 -0
  112. package/frontend/src/pages/admin/AdminMembersPage.tsx +5 -0
  113. package/frontend/src/pages/admin/AdminOIDCPage.tsx +5 -0
  114. package/frontend/src/pages/admin/AdminSettingsPage.tsx +5 -0
  115. package/frontend/src/pages/admin/AdminTeamsPage.tsx +5 -0
  116. package/frontend/src/utils/favicon.ts +36 -0
  117. package/frontend/src/utils/formatRelativeTime.ts +37 -0
  118. package/frontend/src/utils/safeHref.ts +31 -0
  119. package/frontend/src/vite-env.d.ts +10 -0
  120. package/package.json +9 -1
@@ -0,0 +1,535 @@
1
+ {
2
+ "app": {
3
+ "name": "SlugBase",
4
+ "tagline": "I tuoi link. La tua struttura. La tua lingua. Le tue regole."
5
+ },
6
+ "auth": {
7
+ "login": "Accedi",
8
+ "logout": "Esci",
9
+ "loginWith": "Accedi con {{provider}}",
10
+ "notAuthenticated": "Non autenticato",
11
+ "authFailed": "Autenticazione fallita",
12
+ "loginFailed": "Accesso fallito",
13
+ "oidcAuthFailed": "Autenticazione OIDC fallita. Riprova.",
14
+ "oidcAutoCreateDisabled": "La creazione automatica degli utenti è disabilitata per questo provider OIDC. Contatta un amministratore.",
15
+ "noProviders": "Nessun provider OIDC configurato",
16
+ "noProvidersDescription": "Configura un provider OIDC nelle impostazioni di amministrazione per abilitare l'accesso OIDC.",
17
+ "email": "Email",
18
+ "emailPlaceholder": "tua@email.com",
19
+ "password": "Password",
20
+ "passwordPlaceholder": "Inserisci la tua password",
21
+ "forgotPassword": "Password dimenticata?",
22
+ "or": "Oppure continua con"
23
+ },
24
+ "setup": {
25
+ "title": "Configurazione iniziale",
26
+ "description": "Benvenuto in SlugBase! Crea il tuo primo utente amministratore per iniziare.",
27
+ "email": "Email",
28
+ "emailPlaceholder": "admin@example.com",
29
+ "name": "Nome",
30
+ "namePlaceholder": "Utente amministratore",
31
+ "password": "Password",
32
+ "passwordPlaceholder": "Minimo 8 caratteri",
33
+ "confirmPassword": "Conferma password",
34
+ "confirmPasswordPlaceholder": "Reinserisci la tua password",
35
+ "passwordMismatch": "Le password non corrispondono",
36
+ "passwordTooShort": "La password deve contenere almeno 8 caratteri",
37
+ "adminNote": "Questo utente verrà creato come amministratore. Puoi configurare i provider OIDC in seguito nelle impostazioni di amministrazione.",
38
+ "submit": "Crea utente amministratore",
39
+ "alreadyInitialized": "Sistema già inizializzato",
40
+ "success": "Configurazione completata con successo!",
41
+ "redirecting": "Reindirizzamento al login...",
42
+ "redirectingToDashboard": "Reindirizzamento alla dashboard..."
43
+ },
44
+ "bookmarks": {
45
+ "title": "Segnalibri",
46
+ "create": "Crea segnalibro",
47
+ "edit": "Modifica segnalibro",
48
+ "delete": "Elimina segnalibro",
49
+ "deleteBookmark": "Elimina segnalibro",
50
+ "sharingSummary": "{{teamCount}} {{teams}}, {{userCount}} {{users}}",
51
+ "name": "Titolo",
52
+ "url": "URL",
53
+ "slug": "Slug",
54
+ "slugOptionalHint": "Lascia vuoto se non hai bisogno di uno slug personalizzato",
55
+ "forwardingEnabled": "Abilita reindirizzamento",
56
+ "forwardingUrl": "URL di reindirizzamento",
57
+ "copyUrl": "Copia URL",
58
+ "copied": "Copiato!",
59
+ "folder": "Cartella",
60
+ "folders": "Cartelle",
61
+ "tags": "Tag",
62
+ "noFolder": "Nessuna cartella",
63
+ "noFoldersAvailable": "Nessuna cartella disponibile. Crea cartelle per organizzare i tuoi segnalibri.",
64
+ "foldersDescription": "Seleziona una o più cartelle per organizzare questo segnalibro",
65
+ "noTags": "Nessun tag",
66
+ "save": "Salva",
67
+ "cancel": "Annulla",
68
+ "deleteConfirm": "Sei sicuro di voler eliminare questo segnalibro?",
69
+ "deleteConfirmWithName": "Sei sicuro di voler eliminare \"{{name}}\"?",
70
+ "empty": "Ancora nessun segnalibro. Crea il tuo primo segnalibro!",
71
+ "emptyDescription": "Inizia creando il tuo primo segnalibro o importando segnalibri esistenti.",
72
+ "emptyCreateFirst": "Crea il tuo primo segnalibro",
73
+ "emptyImport": "Importa segnalibri",
74
+ "emptyLearnForwarding": "Scopri come funziona il reindirizzamento",
75
+ "filterByFolder": "Filtra per cartella",
76
+ "filterByTag": "Filtra per tag",
77
+ "allFolders": "Tutte le cartelle",
78
+ "allTags": "Tutti i tag",
79
+ "open": "Apri",
80
+ "shareWithTeams": "Condividi con i team",
81
+ "shareWithTeamsDescription": "Seleziona i team con cui condividere questo segnalibro. Tutti i membri dei team selezionati potranno visualizzare questo segnalibro.",
82
+ "shareAllTeams": "Condividi con tutti i miei team",
83
+ "shareAllTeamsDescription": "Condividi con tutti i team di cui sei membro",
84
+ "shareWithUsers": "Condividi con utenti",
85
+ "shareWithUsersDescription": "Seleziona utenti specifici con cui condividere",
86
+ "sharedWith": "Condiviso con:",
87
+ "users": "utenti",
88
+ "shared": "Condiviso",
89
+ "sharedWithTeam": "Condiviso con team",
90
+ "sharedWithTeams": "Condiviso · {{count}} {{teams}}",
91
+ "teams": "team",
92
+ "optional": "Opzionale",
93
+ "slugRequired": "Lo slug è obbligatorio quando il reindirizzamento è abilitato",
94
+ "slugAlreadyExists": "Lo slug esiste già. Gli slug devono essere univoci tra tutti i segnalibri.",
95
+ "searchEngineNote": "Vuoi accedere rapidamente ai tuoi segnalibri dalla barra degli indirizzi del browser?",
96
+ "searchEngineGuideLink": "Scopri come configurare un motore di ricerca personalizzato",
97
+ "viewMode": "Modalità visualizzazione",
98
+ "viewCard": "Vista schede",
99
+ "viewList": "Vista elenco",
100
+ "compactMode": "Modalità compatta",
101
+ "sortBy": "Ordina per",
102
+ "sortRecentlyAdded": "Aggiunti di recente",
103
+ "sortAlphabetical": "Alfabetico",
104
+ "sortMostUsed": "Più usati",
105
+ "sortRecentlyAccessed": "Visitati di recente",
106
+ "resetFilters": "Reimposta filtri",
107
+ "forwardingPreview": "URL di reindirizzamento",
108
+ "forwardingPreviewDescription": "Questo è l'URL che reindirizzerà al tuo segnalibro",
109
+ "bulkSelect": "Seleziona multipli",
110
+ "bulkActions": "Azioni di gruppo",
111
+ "bulkMoveToFolder": "Sposta in cartella",
112
+ "bulkAddTags": "Aggiungi tag",
113
+ "bulkShare": "Condividi con team",
114
+ "bulkDelete": "Elimina selezionati",
115
+ "selectedCount": "{{count}} selezionati",
116
+ "selectAll": "Seleziona tutto",
117
+ "deselectAll": "Deseleziona tutto",
118
+ "paginationShowing": "Mostrando {{from}}-{{to}} di {{total}}",
119
+ "paginationPrevious": "Precedente",
120
+ "paginationNext": "Successivo",
121
+ "pinned": "Appuntato",
122
+ "favorites": "Preferiti",
123
+ "import": "Importa",
124
+ "export": "Esporta",
125
+ "importBrowser": "Importa segnalibri del browser",
126
+ "importJson": "Importa JSON",
127
+ "importHtml": "Importa HTML",
128
+ "exportJson": "Esporta come JSON",
129
+ "exportHtml": "Esporta come HTML",
130
+ "importDescription": "Importa segnalibri da un file JSON o HTML. I file JSON devono contenere un array di oggetti segnalibro con campi title e url.",
131
+ "selectFile": "Seleziona file",
132
+ "supportedFormats": "Formati supportati: JSON, HTML (formato segnalibri Netscape)",
133
+ "importSuccess": "Importati {{success}} segnalibro(i), {{failed}} falliti"
134
+ },
135
+ "folders": {
136
+ "title": "Cartelle",
137
+ "create": "Crea cartella",
138
+ "edit": "Modifica cartella",
139
+ "delete": "Elimina cartella",
140
+ "deleteFolder": "Elimina cartella",
141
+ "name": "Nome cartella",
142
+ "icon": "Icona",
143
+ "searchIcons": "Cerca icona per nome...",
144
+ "noIcon": "Nessuna icona",
145
+ "selectedIcon": "Icona selezionata",
146
+ "clearIcon": "Rimuovi icona",
147
+ "showingPopular": "Mostrando {{count}} icone popolari",
148
+ "showingAllIcons": "Mostrando tutte le {{count}} icone",
149
+ "showAllIcons": "Mostra tutte le icone",
150
+ "showPopularOnly": "Mostra solo popolari",
151
+ "noIconsFound": "Nessuna icona corrispondente alla ricerca",
152
+ "useIcon": "Usa icona",
153
+ "typeIconName": "Digita un nome di icona per usare qualsiasi icona Lucide",
154
+ "empty": "Ancora nessuna cartella",
155
+ "deleteConfirm": "Sei sicuro di voler eliminare questa cartella?",
156
+ "deleteConfirmWithName": "Sei sicuro di voler eliminare \"{{name}}\"?",
157
+ "sharedWith": "Condiviso con:",
158
+ "shareWithTeams": "Condividi con i team",
159
+ "shareWithTeamsDescription": "Seleziona i team con cui condividere questa cartella. Tutti i segnalibri di questa cartella saranno condivisi con i team selezionati.",
160
+ "shared": "Condiviso"
161
+ },
162
+ "tags": {
163
+ "title": "Tag",
164
+ "create": "Crea tag",
165
+ "edit": "Modifica tag",
166
+ "delete": "Elimina tag",
167
+ "deleteTag": "Elimina tag",
168
+ "name": "Nome tag",
169
+ "empty": "Ancora nessun tag",
170
+ "deleteConfirm": "Sei sicuro di voler eliminare questo tag?",
171
+ "deleteConfirmWithName": "Sei sicuro di voler eliminare \"{{name}}\"?"
172
+ },
173
+ "profile": {
174
+ "title": "Profilo",
175
+ "description": "Gestisci le impostazioni e preferenze del tuo account",
176
+ "accountInformation": "Informazioni account",
177
+ "preferences": "Preferenze",
178
+ "userKey": "Chiave utente",
179
+ "userKeyDescription": "Il tuo identificatore univoco per il reindirizzamento dei segnalibri. Condividilo con altri per permettere loro di accedere ai tuoi segnalibri condivisi.",
180
+ "email": "Email",
181
+ "emailPlaceholder": "tua@email.com",
182
+ "name": "Nome",
183
+ "namePlaceholder": "Il tuo nome",
184
+ "language": "Lingua",
185
+ "theme": "Tema",
186
+ "themeAuto": "Automatico",
187
+ "themeLight": "Chiaro",
188
+ "themeDark": "Scuro",
189
+ "save": "Salva impostazioni",
190
+ "languageEnglish": "Inglese",
191
+ "languageGerman": "Tedesco",
192
+ "languageFrench": "Francese",
193
+ "languageSpanish": "Spagnolo",
194
+ "languageItalian": "Italiano",
195
+ "languagePortuguese": "Portoghese",
196
+ "languageDutch": "Olandese",
197
+ "languageRussian": "Russo",
198
+ "languageJapanese": "Giapponese",
199
+ "languageChinese": "Cinese",
200
+ "languagePolish": "Polacco",
201
+ "emailManagedByOIDC": "L'email è gestita dal tuo provider di identità e non può essere modificata qui.",
202
+ "apiAccess": "Accesso API",
203
+ "apiAccessDescription": "Crea e gestisci token API personali per l'autenticazione REST API.",
204
+ "apiTokenWarning": "I token API concedono accesso completo al tuo account. Conservali in modo sicuro e non condividerli mai.",
205
+ "createToken": "Crea token",
206
+ "tokenName": "Nome token",
207
+ "tokenNamePlaceholder": "es. CLI, CI/CD",
208
+ "tokenCreated": "Token creato",
209
+ "tokenRevealWarning": "Questo token non verrà più mostrato. Copialo ora.",
210
+ "copyToken": "Copia token",
211
+ "revokeToken": "Revoca",
212
+ "revokeTokenConfirm": "Sei sicuro di voler revocare questo token? Cesserà di funzionare immediatamente.",
213
+ "lastUsed": "Ultimo utilizzo",
214
+ "neverUsed": "Mai usato",
215
+ "createdAt": "Creato",
216
+ "viewApiDocs": "Visualizza documentazione API",
217
+ "noTokens": "Nessun token API",
218
+ "noTokensDescription": "Crea un token per autenticarti con l'API REST da script, CLI o CI/CD.",
219
+ "yourTokens": "I tuoi token"
220
+ },
221
+ "common": {
222
+ "loading": "Caricamento...",
223
+ "error": "Si è verificato un errore",
224
+ "success": "Successo",
225
+ "close": "Chiudi",
226
+ "delete": "Elimina",
227
+ "edit": "Modifica",
228
+ "create": "Crea",
229
+ "save": "Salva",
230
+ "cancel": "Annulla",
231
+ "clearFilter": "Pulisci filtro",
232
+ "yes": "Sì",
233
+ "no": "No",
234
+ "view": "Visualizza",
235
+ "confirm": "Conferma",
236
+ "back": "Indietro",
237
+ "bookmark": "segnalibro",
238
+ "bookmarks": "segnalibri",
239
+ "tag": "tag",
240
+ "tags": "tag",
241
+ "folder": "cartella",
242
+ "folders": "cartelle",
243
+ "user": "utente",
244
+ "users": "utenti",
245
+ "team": "team",
246
+ "teams": "team",
247
+ "setting": "impostazione",
248
+ "settings": "impostazioni",
249
+ "provider": "provider",
250
+ "providers": "provider",
251
+ "search": "Cerca",
252
+ "searchPlaceholder": "Cerca segnalibri, cartelle, tag...",
253
+ "searchShortcut": "Ctrl+K",
254
+ "searchShortcutHint": "Cerca (Ctrl+K)",
255
+ "noResults": "Nessun risultato trovato",
256
+ "copy": "Copia",
257
+ "copied": "Copiato!",
258
+ "goTo": "Vai a",
259
+ "actions": "Azioni",
260
+ "navigation": "Navigazione",
261
+ "quickActions": "Azioni rapide",
262
+ "collapseSidebar": "Comprimi barra laterale",
263
+ "expandSidebar": "Espandi barra laterale"
264
+ },
265
+ "dashboard": {
266
+ "searchPlaceholder": "Cerca un segnalibro o naviga in SlugBase",
267
+ "bookmarksDescription": "Gestisci i tuoi segnalibri",
268
+ "foldersDescription": "Organizza con cartelle",
269
+ "tagsDescription": "Etichetta i tuoi segnalibri",
270
+ "overview": "Panoramica",
271
+ "totalBookmarks": "Totale segnalibri",
272
+ "totalFolders": "Totale cartelle",
273
+ "totalTags": "Totale tag",
274
+ "sharedBookmarks": "Segnalibri condivisi",
275
+ "sharedFolders": "Cartelle condivise",
276
+ "recentBookmarks": "Segnalibri recenti",
277
+ "topTags": "Tag più utilizzati",
278
+ "noRecentBookmarks": "Ancora nessun segnalibro",
279
+ "noTags": "Ancora nessun tag",
280
+ "quickAccess": "Accesso rapido",
281
+ "viewAll": "Vedi tutto",
282
+ "noQuickAccessBookmarks": "Nessun segnalibro con scorciatoia",
283
+ "noQuickAccessBookmarksHint": "Aggiungi uno slug a un segnalibro per vederlo qui e usare go/slug nel browser.",
284
+ "statsBookmarks": "segnalibri",
285
+ "statsFolders": "cartelle",
286
+ "statsTags": "tag",
287
+ "proTipBody": "Suggerimento: Configura SlugBase come motore di ricerca nel browser e digita go github nella barra degli indirizzi per aprire i segnalibri.",
288
+ "proTipLink": "Configura motore di ricerca",
289
+ "dismiss": "Chiudi",
290
+ "onboardingTitle": "Per iniziare",
291
+ "onboardingImport": "Importa segnalibri del browser",
292
+ "onboardingSearchEngine": "Configura scorciatoia di ricerca",
293
+ "onboardingFolder": "Crea la tua prima cartella",
294
+ "onboardingTag": "Etichetta un segnalibro",
295
+ "onboardingDismiss": "Nascondi lista"
296
+ },
297
+ "apiDocs": {
298
+ "title": "Documentazione API",
299
+ "description": "Riferimento API completo per SlugBase. Tutti gli endpoint richiedono autenticazione tramite token JWT tranne dove indicato."
300
+ },
301
+ "admin": {
302
+ "title": "Amministratore",
303
+ "description": "Gestisci utenti, gruppi, provider OIDC e impostazioni di sistema",
304
+ "users": "Utenti",
305
+ "teams": "Team",
306
+ "userGroups": "Team",
307
+ "oidcProviders": "Provider OIDC",
308
+ "settings": "Impostazioni",
309
+ "addUser": "Aggiungi utente",
310
+ "editUser": "Modifica utente",
311
+ "addTeam": "Aggiungi team",
312
+ "editTeam": "Modifica team",
313
+ "addGroup": "Aggiungi team",
314
+ "editGroup": "Modifica team",
315
+ "addProvider": "Aggiungi provider",
316
+ "editProvider": "Modifica provider",
317
+ "addSetting": "Aggiungi impostazione",
318
+ "admin": "Amministratore",
319
+ "user": "Utente",
320
+ "oidcUser": "Utente OIDC",
321
+ "teamName": "Nome team",
322
+ "groupName": "Nome team",
323
+ "description": "Descrizione",
324
+ "providerKey": "Chiave provider",
325
+ "issuerUrl": "URL emittente",
326
+ "clientId": "ID cliente",
327
+ "clientIdRequired": "L'ID cliente è obbligatorio quando si crea un nuovo provider",
328
+ "clientSecret": "Segreto cliente",
329
+ "scopes": "Ambiti",
330
+ "callbackUrl": "URL di callback",
331
+ "customEndpoints": "Endpoint OIDC personalizzati",
332
+ "customEndpointsDescription": "Sovrascrivi i percorsi degli endpoint OIDC predefiniti. Lascia vuoto per usare percorsi standard basati sull'URL emittente.",
333
+ "authorizationUrl": "URL di autorizzazione",
334
+ "tokenUrl": "URL del token",
335
+ "userinfoUrl": "URL informazioni utente",
336
+ "autoCreate": "Crea utenti automaticamente",
337
+ "defaultRole": "Ruolo predefinito",
338
+ "settingKey": "Chiave",
339
+ "settingValue": "Valore",
340
+ "leaveBlank": "Lascia vuoto per mantenere l'attuale",
341
+ "leaveBlankToKeep": "Lascia vuoto per mantenere il valore attuale",
342
+ "confirmDeleteUser": "Sei sicuro di voler eliminare questo utente?",
343
+ "confirmDeleteTeam": "Sei sicuro di voler eliminare questo team?",
344
+ "confirmDeleteGroup": "Sei sicuro di voler eliminare questo team?",
345
+ "confirmDeleteProvider": "Sei sicuro di voler eliminare questo provider?",
346
+ "confirmDeleteSetting": "Sei sicuro di voler eliminare questa impostazione?",
347
+ "manageMembers": "Gestisci membri",
348
+ "currentMembers": "Membri attuali",
349
+ "currentTeams": "Team attuali",
350
+ "addMembers": "Aggiungi membri",
351
+ "addTeams": "Aggiungi team",
352
+ "noMembers": "Nessun membro in questo team",
353
+ "noTeams": "Nessun team assegnato a questo utente",
354
+ "noTeamsYet": "Ancora nessun team",
355
+ "add": "Aggiungi",
356
+ "members": "Membri",
357
+ "manageTeams": "Gestisci team",
358
+ "searchTeams": "Cerca team per nome o descrizione...",
359
+ "createUserWith": "Crea utente con",
360
+ "sendInviteEmail": "Invia invito via email",
361
+ "setPassword": "Imposta password",
362
+ "inviteSent": "Invito inviato",
363
+ "userCreatedInviteSent": "Utente creato; invito inviato.",
364
+ "userCreatedInviteNotSent": "Utente creato; l'invito non è stato inviato (controllare SMTP).",
365
+ "searchUsers": "Cerca utenti per nome o email...",
366
+ "noTeamsAvailable": "Tutti i team sono già assegnati",
367
+ "noUsersAvailable": "Tutti gli utenti sono già membri",
368
+ "noSearchResults": "Nessun risultato corrisponde alla tua ricerca",
369
+ "apiDocsNote": "La documentazione API è disponibile come pagina standalone",
370
+ "viewApiDocs": "Visualizza documentazione API",
371
+ "noUserEmailAvailable": "Nessuna email utente disponibile",
372
+ "manageTeamsTitle": "Gestisci team - {{userName}}",
373
+ "manageMembersTitle": "Gestisci membri - {{teamName}}"
374
+ },
375
+ "passwordReset": {
376
+ "title": "Reimposta password",
377
+ "description": "Inserisci il tuo indirizzo email per ricevere un link di reimpostazione password",
378
+ "email": "Email",
379
+ "emailPlaceholder": "tua@email.com",
380
+ "requestReset": "Invia link di reimpostazione",
381
+ "resetToken": "Token di reimpostazione",
382
+ "newPassword": "Nuova password",
383
+ "confirmPassword": "Conferma password",
384
+ "resetPassword": "Reimposta password",
385
+ "requestSent": "Se esiste un account con questa email, è stato inviato un link di reimpostazione password.",
386
+ "resetSuccess": "Password reimpostata con successo! Ora puoi accedere con la tua nuova password.",
387
+ "invalidToken": "Token di reimpostazione non valido o scaduto",
388
+ "passwordMismatch": "Le password non corrispondono",
389
+ "backToLogin": "Torna al login"
390
+ },
391
+ "emailVerification": {
392
+ "verifying": "Verifica email",
393
+ "verifyingDescription": "Attendi mentre verifichiamo il tuo indirizzo email...",
394
+ "success": "Email verificata",
395
+ "successDescription": "Il tuo indirizzo email è stato cambiato con successo in {{email}}.",
396
+ "error": "Verifica fallita",
397
+ "errorDescription": "Il link di verifica non è valido o è scaduto.",
398
+ "tokenRequired": "È richiesto un token di verifica",
399
+ "invalidToken": "Token di verifica non valido o scaduto",
400
+ "verifyFailed": "Errore nella verifica del token",
401
+ "confirmFailed": "Errore nella conferma della verifica email",
402
+ "redirecting": "Reindirizzamento al profilo...",
403
+ "backToProfile": "Torna al profilo",
404
+ "emailSent": "Email di verifica inviata! Controlla il tuo nuovo indirizzo email.",
405
+ "pendingTitle": "Verifica email in sospeso",
406
+ "pendingDescription": "È stata inviata un'email di verifica a {{email}}. Controlla la tua casella di posta e clicca sul link di verifica per completare la modifica."
407
+ },
408
+ "smtp": {
409
+ "title": "Configurazione email SMTP",
410
+ "description": "Configura le impostazioni SMTP per inviare email (ad esempio, email di reimpostazione password)",
411
+ "enabled": "Abilita SMTP",
412
+ "host": "Server SMTP",
413
+ "hostPlaceholder": "smtp.gmail.com",
414
+ "port": "Porta",
415
+ "portPlaceholder": "587",
416
+ "secure": "Usa TLS/SSL",
417
+ "user": "Nome utente/Email",
418
+ "userPlaceholder": "tua-email@gmail.com",
419
+ "password": "Password",
420
+ "passwordPlaceholder": "Inserisci password per impostare o cambiare",
421
+ "passwordChangeHint": "Inserisci una nuova password per cambiarla, o lascia vuoto per mantenere la password attuale",
422
+ "from": "Email mittente",
423
+ "fromPlaceholder": "noreply@example.com",
424
+ "fromName": "Nome mittente",
425
+ "fromNamePlaceholder": "SlugBase",
426
+ "testEmail": "Email di prova",
427
+ "testEmailPlaceholder": "test@example.com",
428
+ "sendTest": "Invia email di prova",
429
+ "testSent": "Email di prova inviata con successo!",
430
+ "testFailed": "Errore nell'invio dell'email di prova",
431
+ "save": "Salva impostazioni SMTP"
432
+ },
433
+ "shared": {
434
+ "title": "Condiviso",
435
+ "description": "Segnalibri e cartelle condivisi con te",
436
+ "bookmarks": "Segnalibri",
437
+ "folders": "Cartelle",
438
+ "noBookmarks": "Ancora nessun segnalibro condiviso",
439
+ "noFolders": "Ancora nessuna cartella condivisa",
440
+ "unknownUser": "Utente sconosciuto"
441
+ },
442
+ "searchEngineGuide": {
443
+ "title": "Guida alla configurazione del motore di ricerca personalizzato",
444
+ "description": "Scopri come configurare un motore di ricerca personalizzato nel tuo browser per accedere rapidamente ai tuoi segnalibri",
445
+ "howItWorks": "Come funziona",
446
+ "howItWorksDescription": "Configurando un motore di ricerca personalizzato, puoi digitare una parola chiave (come 'go') seguita da uno slug di segnalibro nella barra degli indirizzi del browser per navigare istantaneamente a quel segnalibro.",
447
+ "yourSearchUrl": "La tua URL di ricerca",
448
+ "urlNote": "Usa questo modello di URL quando configuri il tuo motore di ricerca personalizzato. Il %s sarà sostituito con lo slug del tuo segnalibro.",
449
+ "chromiumTitle": "Browser basati su Chromium (Chrome, Edge, Brave, ecc.)",
450
+ "chromiumDescription": "Segui questi passaggi per aggiungere SlugBase come motore di ricerca personalizzato:",
451
+ "chromiumStep1": "Apri le impostazioni del browser",
452
+ "chromiumStep2": "Vai alle impostazioni di 'Motore di ricerca' o 'Ricerca'",
453
+ "chromiumStep3": "Clicca su 'Gestisci motori di ricerca' o 'Aggiungi'",
454
+ "chromiumStep4": "Compila il modulo con:",
455
+ "chromiumStep4a": "Nome: SlugBase (o qualsiasi nome tu preferisca)",
456
+ "chromiumStep4b": "Parola chiave: go (o qualsiasi parola chiave tu preferisca)",
457
+ "chromiumStep4c": "URL: Usa l'URL di ricerca mostrata sopra",
458
+ "chromiumStep5": "Clicca su 'Aggiungi' o 'Salva' per completare la configurazione",
459
+ "firefoxTitle": "Firefox",
460
+ "firefoxDescription": "Segui questi passaggi per aggiungere SlugBase come motore di ricerca personalizzato:",
461
+ "firefoxStep1": "Apri le impostazioni di Firefox",
462
+ "firefoxStep2": "Vai a 'Ricerca' nel menu impostazioni",
463
+ "firefoxStep3": "Scorri verso il basso e clicca su 'Aggiungi' sotto 'Motori di ricerca con un clic'",
464
+ "firefoxStep4": "Compila il modulo con:",
465
+ "firefoxStep4a": "Nome: SlugBase (o qualsiasi nome tu preferisca)",
466
+ "firefoxStep4b": "Parola chiave: go (o qualsiasi parola chiave tu preferisca)",
467
+ "firefoxStep4c": "URL: Usa l'URL di ricerca mostrata sopra",
468
+ "firefoxStep5": "Clicca su 'Aggiungi' per completare la configurazione",
469
+ "usageExample": "Esempio di utilizzo",
470
+ "usageStep1": "Dopo la configurazione, digita semplicemente nella barra degli indirizzi del browser:",
471
+ "usageStep2": "Premi Invio e verrai reindirizzato al segnalibro con lo slug 'test'",
472
+ "usageNote": "Sostituisci 'test' con qualsiasi slug di segnalibro che hai creato in SlugBase!"
473
+ },
474
+ "legal": {
475
+ "imprintTitle": "Note legali",
476
+ "imprintProviderTitle": "Fornitore del servizio (ECG §5)",
477
+ "imprintChamber": "Membro di {{chamber}}",
478
+ "imprintCourtTitle": "Tribunale competente",
479
+ "imprintCourtBody": "Foro competente per le controversie: Landesgericht Linz, Austria. Si applica il diritto austriaco.",
480
+ "imprintOdrTitle": "Risoluzione delle controversie online UE",
481
+ "imprintOdrBody": "La Commissione europea fornisce una piattaforma per la risoluzione online delle controversie. I consumatori possono accedervi su",
482
+ "uid": "UID",
483
+ "backToHome": "Torna alla home",
484
+ "termsTitle": "Termini e condizioni",
485
+ "termsScopeTitle": "Ambito",
486
+ "termsScopeBody": "Questi Termini e condizioni si applicano all'uso di SlugBase Cloud (il \"Servizio\") su slugbase.app. Iscrivendoti o utilizzando il Servizio accetti questi termini. Se sei consumatore, i tuoi diritti legali imperativi restano invariati.",
487
+ "termsServiceTitle": "Descrizione del servizio",
488
+ "termsServiceBody": "SlugBase Cloud è un servizio di gestione segnalibri e reindirizzamento link. Consente di salvare, organizzare e condividere segnalibri; creare cartelle e tag; ed esporre segnalibri come URL brevi. Il servizio è fornito in SaaS su https://slugbase.app.",
489
+ "termsPlansTitle": "Piani",
490
+ "termsPlansBody": "SlugBase Cloud offre piani Free, Personal, Team e Early Supporter Lifetime. I dettagli attuali sono sulla pagina Prezzi.",
491
+ "termsAccountTitle": "Account e idoneità",
492
+ "termsAccountBody": "Devi fornire informazioni accurate alla creazione dell'account. Sei responsabile della custodia delle credenziali. Il Servizio è destinato all'uso legittimo da parte di singoli e team.",
493
+ "termsUseTitle": "Uso del Servizio",
494
+ "termsUseBody": "Puoi usare SlugBase per salvare, organizzare e condividere segnalibri e per usare link brevi (reindirizzamento). Non devi usare il Servizio per scopi illegali, per distribuire malware o per molestare altri.",
495
+ "termsShortLinksTitle": "Link brevi e reindirizzamento",
496
+ "termsShortLinksBody": "I link brevi (es. /go/tuo-slug) reindirizzano all'URL che imposti. Non devi usarli per phishing, spam o altri abusi. Possiamo sospendere o rimuovere link che violano questi termini.",
497
+ "termsBillingTitle": "Fatturazione e pagamento",
498
+ "termsBillingBody": "I piani a pagamento sono fatturati in anticipo. Il pagamento è dovuto all'emissione della fattura. Il piano Early Supporter Lifetime è a pagamento unico.",
499
+ "termsCancellationTitle": "Recesso e rinnovo",
500
+ "termsCancellationBody": "Puoi recedere dall'abbonamento in qualsiasi momento. Il recesso ha effetto alla fine del periodo di fatturazione in corso. Nessun impegno minimo. Per abbonamenti a rinnovo automatico, puoi recedere prima di ogni data di rinnovo.",
501
+ "termsWithdrawalTitle": "Diritto di recesso (consumatori)",
502
+ "termsWithdrawalBody": "Se sei consumatore ai sensi del diritto austriaco, hai un diritto di recesso di 14 giorni senza indicare motivi. Il termine inizia alla data di conclusione del contratto. Per esercitarlo, contattaci a hello@slugbase.app.",
503
+ "termsLiabilityTitle": "Limitazione di responsabilità",
504
+ "termsLiabilityBody": "Il Servizio è fornito \"così com'è\". Non siamo responsabili di danni indiretti o consequenziali, salvo in caso di dolo o colpa grave. La nostra responsabilità è limitata.",
505
+ "termsTerminationTitle": "Sospensione e recesso da parte nostra",
506
+ "termsTerminationBody": "Possiamo sospendere o recedere dal tuo account in caso di violazione grave dei termini o mancato pagamento. Alla risoluzione il tuo diritto d'uso cessa.",
507
+ "termsLawTitle": "Legge applicabile",
508
+ "termsLawBody": "Questi termini sono regolati dalla legge austriaca. Qualsiasi controversia sarà di competenza dei tribunali austriaci.",
509
+ "termsContactTitle": "Contatto",
510
+ "termsContactBody": "Per domande su questi termini, contattaci a hello@slugbase.app o all'indirizzo nelle Note legali.",
511
+ "privacyTitle": "Informativa sulla privacy",
512
+ "privacyScopeTitle": "Ambito",
513
+ "privacyScopeBody": "Questa informativa si applica a SlugBase Cloud su https://slugbase.app. Descrive come trattiamo i tuoi dati personali. Non si applica se self-hosti SlugBase. Basata su GDPR e legge austriaca (DSG).",
514
+ "privacyControllerTitle": "Titolare",
515
+ "privacyControllerBody": "Il titolare del trattamento è Guggernbichler Michael David, Linzer Str. 17, 4100 Ottensheim, Austria (vedi Note legali).",
516
+ "privacyDataTitle": "Dati che trattiamo",
517
+ "privacyDataBody": "Trattiamo: dati account; contenuto (segnalibri, cartelle, tag); utilizzo (sessione, IP, log); dati di contatto se usi il modulo. Non vendiamo dati né li usiamo per pubblicità.",
518
+ "privacyRecipientsTitle": "Destinatari",
519
+ "privacyRecipientsBody": "I dati sono trattati sulla nostra infrastruttura e da responsabili del trattamento conformi al GDPR. Non condividiamo dati con terzi per i loro fini.",
520
+ "privacyBasisTitle": "Base giuridica",
521
+ "privacyBasisBody": "Trattiamo i dati in base all'esecuzione del contratto (fornitura del Servizio), al tuo consenso ove applicabile e a interessi legittimi (sicurezza, prevenzione abusi).",
522
+ "privacyRetentionTitle": "Conservazione",
523
+ "privacyRetentionBody": "Conserviamo dati account e segnalibri finché il tuo account esiste. Dopo la cancellazione rimuoviamo o anonimizziamo i dati in un periodo ragionevole. I log possono essere conservati più a lungo se richiesto dalla legge.",
524
+ "privacyRightsTitle": "I tuoi diritti",
525
+ "privacyRightsBody": "Hai diritto di accesso, rettifica, cancellazione, limitazione, portabilità e opposizione. Puoi revocare il consenso in qualsiasi momento. Contatto: hello@slugbase.app. Puoi presentare reclamo all'autorità austriaca (vedi sotto).",
526
+ "privacyCookiesTitle": "Cookie e autenticazione",
527
+ "privacyCookiesBody": "Usiamo cookie di sessione e mezzi simili per autenticazione e sicurezza. Non usiamo cookie pubblicitari di terze parti.",
528
+ "privacyHostingTitle": "Hosting (CLOUD vs self-hosted)",
529
+ "privacyHostingBody": "Su slugbase.app (CLOUD) ospitiamo i tuoi dati sulla nostra infrastruttura nell'UE/SEE. Se self-hosti SlugBase, sei titolare e controlli l'archiviazione.",
530
+ "privacySupervisoryTitle": "Autorità di vigilanza",
531
+ "privacySupervisoryBody": "Puoi presentare reclamo all'Österreichische Datenschutzbehörde, Barichgasse 40-42, 1030 Vienna, Austria (dsb@dsb.gv.at). Secondo il DSG austriaco, i reclami devono generalmente essere presentati entro un anno dalla conoscenza.",
532
+ "privacyChangesTitle": "Modifiche",
533
+ "privacyChangesBody": "Possiamo aggiornare questa informativa. Modifiche sostanziali saranno comunicate. La versione corrente è disponibile su questa pagina. L'uso continuato dopo le modifiche costituisce accettazione."
534
+ }
535
+ }