@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,550 @@
1
+ {
2
+ "app": {
3
+ "name": "SlugBase",
4
+ "tagline": "Jouw links. Jouw structuur. Jouw taal. Jouw regels."
5
+ },
6
+ "contact": {
7
+ "title": "Contact",
8
+ "description": "Heb je een vraag of feedback? We horen graag van je.",
9
+ "name": "Naam",
10
+ "namePlaceholder": "Je naam",
11
+ "email": "E-mail",
12
+ "emailPlaceholder": "jouw@email.com",
13
+ "message": "Bericht",
14
+ "messagePlaceholder": "Hoe kunnen we je helpen?",
15
+ "submit": "Verstuur bericht",
16
+ "successMessage": "Bedankt! Je bericht is verzonden. We nemen snel contact met je op.",
17
+ "confirmationNote": "Er is een bevestigingsmail naar je e-mailadres gestuurd.",
18
+ "backToLogin": "Terug naar inloggen",
19
+ "submitError": "Verzenden mislukt. Probeer het later opnieuw."
20
+ },
21
+ "auth": {
22
+ "login": "Inloggen",
23
+ "logout": "Uitloggen",
24
+ "loginWith": "Inloggen met {{provider}}",
25
+ "notAuthenticated": "Niet geauthenticeerd",
26
+ "authFailed": "Authenticatie mislukt",
27
+ "loginFailed": "Inloggen mislukt",
28
+ "oidcAuthFailed": "OIDC-authenticatie mislukt. Probeer het opnieuw.",
29
+ "oidcAutoCreateDisabled": "Automatisch aanmaken van gebruikers is uitgeschakeld voor deze OIDC-provider. Neem contact op met een beheerder.",
30
+ "noProviders": "Geen OIDC-providers geconfigureerd",
31
+ "noProvidersDescription": "Configureer een OIDC-provider in de beheerinstellingen om OIDC-inloggen in te schakelen.",
32
+ "email": "E-mail",
33
+ "emailPlaceholder": "jouw@email.com",
34
+ "password": "Wachtwoord",
35
+ "passwordPlaceholder": "Voer je wachtwoord in",
36
+ "forgotPassword": "Wachtwoord vergeten?",
37
+ "or": "Of ga verder met"
38
+ },
39
+ "setup": {
40
+ "title": "Eerste configuratie",
41
+ "description": "Welkom bij SlugBase! Maak je eerste beheerder aan om te beginnen.",
42
+ "email": "E-mail",
43
+ "emailPlaceholder": "admin@example.com",
44
+ "name": "Naam",
45
+ "namePlaceholder": "Beheerder",
46
+ "password": "Wachtwoord",
47
+ "passwordPlaceholder": "Minimaal 8 tekens",
48
+ "confirmPassword": "Bevestig wachtwoord",
49
+ "confirmPasswordPlaceholder": "Voer je wachtwoord opnieuw in",
50
+ "passwordMismatch": "Wachtwoorden komen niet overeen",
51
+ "passwordTooShort": "Wachtwoord moet minimaal 8 tekens lang zijn",
52
+ "adminNote": "Deze gebruiker wordt aangemaakt als beheerder. Je kunt later OIDC-providers configureren in de beheerinstellingen.",
53
+ "submit": "Beheerder aanmaken",
54
+ "alreadyInitialized": "Systeem al geïnitialiseerd",
55
+ "success": "Configuratie succesvol voltooid!",
56
+ "redirecting": "Doorverwijzen naar inloggen...",
57
+ "redirectingToDashboard": "Doorverwijzen naar dashboard..."
58
+ },
59
+ "bookmarks": {
60
+ "title": "Bladwijzers",
61
+ "create": "Bladwijzer aanmaken",
62
+ "edit": "Bladwijzer bewerken",
63
+ "delete": "Bladwijzer verwijderen",
64
+ "deleteBookmark": "Bladwijzer verwijderen",
65
+ "sharingSummary": "{{teamCount}} {{teams}}, {{userCount}} {{users}}",
66
+ "name": "Titel",
67
+ "url": "URL",
68
+ "slug": "Slug",
69
+ "slugOptionalHint": "Laat leeg als je geen aangepaste slug nodig hebt",
70
+ "forwardingEnabled": "Doorsturen inschakelen",
71
+ "forwardingUrl": "Doorstuur-URL",
72
+ "copyUrl": "URL kopiëren",
73
+ "copied": "Gekopieerd!",
74
+ "folder": "Map",
75
+ "folders": "Mappen",
76
+ "tags": "Tags",
77
+ "noFolder": "Geen map",
78
+ "noFoldersAvailable": "Geen mappen beschikbaar. Maak mappen aan om je bladwijzers te organiseren.",
79
+ "foldersDescription": "Selecteer een of meer mappen om deze bladwijzer te organiseren",
80
+ "noTags": "Geen tags",
81
+ "save": "Opslaan",
82
+ "cancel": "Annuleren",
83
+ "deleteConfirm": "Weet je zeker dat je deze bladwijzer wilt verwijderen?",
84
+ "deleteConfirmWithName": "Weet je zeker dat je \"{{name}}\" wilt verwijderen?",
85
+ "empty": "Nog geen bladwijzers. Maak je eerste bladwijzer aan!",
86
+ "emptyDescription": "Begin door je eerste bladwijzer aan te maken of bestaande bladwijzers te importeren.",
87
+ "emptyCreateFirst": "Maak je eerste bladwijzer aan",
88
+ "emptyImport": "Bladwijzers importeren",
89
+ "emptyLearnForwarding": "Leer hoe doorsturen werkt",
90
+ "filterByFolder": "Filteren op map",
91
+ "filterByTag": "Filteren op tag",
92
+ "allFolders": "Alle mappen",
93
+ "allTags": "Alle tags",
94
+ "open": "Openen",
95
+ "shareWithTeams": "Delen met teams",
96
+ "shareWithTeamsDescription": "Selecteer teams om deze bladwijzer mee te delen. Alle leden van de geselecteerde teams kunnen deze bladwijzer bekijken.",
97
+ "shareAllTeams": "Delen met al mijn teams",
98
+ "shareAllTeamsDescription": "Delen met alle teams waar je lid van bent",
99
+ "shareWithUsers": "Delen met gebruikers",
100
+ "shareWithUsersDescription": "Selecteer specifieke gebruikers om mee te delen",
101
+ "sharedWith": "Gedeeld met:",
102
+ "users": "gebruikers",
103
+ "shared": "Gedeeld",
104
+ "sharedWithTeam": "Gedeeld met team",
105
+ "sharedWithTeams": "Gedeeld · {{count}} {{teams}}",
106
+ "teams": "teams",
107
+ "optional": "Optioneel",
108
+ "slugRequired": "Slug is verplicht wanneer doorsturen is ingeschakeld",
109
+ "slugAlreadyExists": "Slug bestaat al. Slugs moeten uniek zijn voor alle bladwijzers.",
110
+ "searchEngineNote": "Wil je snel toegang tot je bladwijzers vanuit de adresbalk van je browser?",
111
+ "searchEngineGuideLink": "Leer hoe je een aangepaste zoekmachine instelt",
112
+ "viewMode": "Weergavemodus",
113
+ "viewCard": "Kaartweergave",
114
+ "viewList": "Lijstweergave",
115
+ "compactMode": "Compacte modus",
116
+ "sortBy": "Sorteren op",
117
+ "sortRecentlyAdded": "Onlangs toegevoegd",
118
+ "sortAlphabetical": "Alfabetisch",
119
+ "sortMostUsed": "Meest gebruikt",
120
+ "sortRecentlyAccessed": "Onlangs bezocht",
121
+ "resetFilters": "Filters resetten",
122
+ "forwardingPreview": "Doorstuur-URL",
123
+ "forwardingPreviewDescription": "Dit is de URL die doorverwijst naar je bladwijzer",
124
+ "bulkSelect": "Meerdere selecteren",
125
+ "bulkActions": "Bulkacties",
126
+ "bulkMoveToFolder": "Verplaatsen naar map",
127
+ "bulkAddTags": "Tags toevoegen",
128
+ "bulkShare": "Delen met teams",
129
+ "bulkDelete": "Geselecteerde verwijderen",
130
+ "selectedCount": "{{count}} geselecteerd",
131
+ "selectAll": "Alles selecteren",
132
+ "deselectAll": "Alles deselecteren",
133
+ "paginationShowing": "{{from}}-{{to}} van {{total}}",
134
+ "paginationPrevious": "Vorige",
135
+ "paginationNext": "Volgende",
136
+ "pinned": "Vastgemaakt",
137
+ "favorites": "Favorieten",
138
+ "import": "Importeren",
139
+ "export": "Exporteren",
140
+ "importBrowser": "Bladwijzers van browser importeren",
141
+ "importJson": "JSON importeren",
142
+ "importHtml": "HTML importeren",
143
+ "exportJson": "Exporteren als JSON",
144
+ "exportHtml": "Exporteren als HTML",
145
+ "importDescription": "Importeer bladwijzers uit een JSON- of HTML-bestand. JSON-bestanden moeten een array bevatten met bladwijzerobjecten met titel- en url-velden.",
146
+ "selectFile": "Bestand selecteren",
147
+ "supportedFormats": "Ondersteunde formaten: JSON, HTML (Netscape bladwijzerformaat)",
148
+ "importSuccess": "{{success}} bladwijzer(s) geïmporteerd, {{failed}} mislukt"
149
+ },
150
+ "folders": {
151
+ "title": "Mappen",
152
+ "create": "Map aanmaken",
153
+ "edit": "Map bewerken",
154
+ "delete": "Map verwijderen",
155
+ "deleteFolder": "Map verwijderen",
156
+ "name": "Mapnaam",
157
+ "icon": "Pictogram",
158
+ "searchIcons": "Zoek pictogrammen op naam...",
159
+ "noIcon": "Geen pictogram",
160
+ "selectedIcon": "Geselecteerd pictogram",
161
+ "clearIcon": "Pictogram wissen",
162
+ "showingPopular": "{{count}} populaire pictogrammen tonen",
163
+ "showingAllIcons": "Alle {{count}} pictogrammen tonen",
164
+ "showAllIcons": "Alle pictogrammen tonen",
165
+ "showPopularOnly": "Alleen populaire tonen",
166
+ "noIconsFound": "Geen pictogrammen gevonden die overeenkomen met je zoekopdracht",
167
+ "useIcon": "Pictogram gebruiken",
168
+ "typeIconName": "Typ een pictogramnaam om een Lucide-pictogram te gebruiken",
169
+ "empty": "Nog geen mappen",
170
+ "deleteConfirm": "Weet je zeker dat je deze map wilt verwijderen?",
171
+ "deleteConfirmWithName": "Weet je zeker dat je \"{{name}}\" wilt verwijderen?",
172
+ "sharedWith": "Gedeeld met:",
173
+ "shareWithTeams": "Delen met teams",
174
+ "shareWithTeamsDescription": "Selecteer teams om deze map mee te delen. Alle bladwijzers in deze map worden gedeeld met de geselecteerde teams.",
175
+ "shared": "Gedeeld"
176
+ },
177
+ "tags": {
178
+ "title": "Tags",
179
+ "create": "Tag aanmaken",
180
+ "edit": "Tag bewerken",
181
+ "delete": "Tag verwijderen",
182
+ "deleteTag": "Tag verwijderen",
183
+ "name": "Tagnaam",
184
+ "empty": "Nog geen tags",
185
+ "deleteConfirm": "Weet je zeker dat je deze tag wilt verwijderen?",
186
+ "deleteConfirmWithName": "Weet je zeker dat je \"{{name}}\" wilt verwijderen?"
187
+ },
188
+ "profile": {
189
+ "title": "Profiel",
190
+ "description": "Beheer je accountinstellingen en voorkeuren",
191
+ "accountInformation": "Accountinformatie",
192
+ "preferences": "Voorkeuren",
193
+ "userKey": "Gebruikerssleutel",
194
+ "userKeyDescription": "Je unieke identifier voor bladwijzerdoorsturen. Deel dit met anderen om hen toegang te geven tot je gedeelde bladwijzers.",
195
+ "email": "E-mail",
196
+ "emailPlaceholder": "jouw@email.com",
197
+ "name": "Naam",
198
+ "namePlaceholder": "Je naam",
199
+ "language": "Taal",
200
+ "theme": "Thema",
201
+ "themeAuto": "Automatisch",
202
+ "themeLight": "Licht",
203
+ "themeDark": "Donker",
204
+ "save": "Instellingen opslaan",
205
+ "languageEnglish": "Engels",
206
+ "languageGerman": "Duits",
207
+ "languageFrench": "Frans",
208
+ "languageSpanish": "Spaans",
209
+ "languageItalian": "Italiaans",
210
+ "languagePortuguese": "Portugees",
211
+ "languageDutch": "Nederlands",
212
+ "languageRussian": "Russisch",
213
+ "languageJapanese": "Japans",
214
+ "languageChinese": "Chinees",
215
+ "languagePolish": "Pools",
216
+ "emailManagedByOIDC": "E-mail wordt beheerd door je identiteitsprovider en kan hier niet worden gewijzigd.",
217
+ "apiAccess": "API-toegang",
218
+ "apiAccessDescription": "Maak en beheer persoonlijke API-tokens voor REST API-authenticatie.",
219
+ "apiTokenWarning": "API-tokens geven volledige toegang tot je account. Bewaar ze veilig en deel ze nooit.",
220
+ "createToken": "Token maken",
221
+ "tokenName": "Tokennaam",
222
+ "tokenNamePlaceholder": "bijv. CLI, CI/CD",
223
+ "tokenCreated": "Token gemaakt",
224
+ "tokenRevealWarning": "Dit token wordt niet meer getoond. Kopieer het nu.",
225
+ "copyToken": "Token kopiëren",
226
+ "revokeToken": "Intrekken",
227
+ "revokeTokenConfirm": "Weet je zeker dat je dit token wilt intrekken? Het werkt direct niet meer.",
228
+ "lastUsed": "Laatst gebruikt",
229
+ "neverUsed": "Nooit gebruikt",
230
+ "createdAt": "Aangemaakt",
231
+ "viewApiDocs": "API-documentatie bekijken",
232
+ "noTokens": "Geen API-tokens",
233
+ "noTokensDescription": "Maak een token om te authenticeren met de REST API vanuit scripts, CLI of CI/CD.",
234
+ "yourTokens": "Je tokens"
235
+ },
236
+ "common": {
237
+ "loading": "Laden...",
238
+ "error": "Er is een fout opgetreden",
239
+ "success": "Succes",
240
+ "close": "Sluiten",
241
+ "delete": "Verwijderen",
242
+ "edit": "Bewerken",
243
+ "create": "Aanmaken",
244
+ "save": "Opslaan",
245
+ "cancel": "Annuleren",
246
+ "clearFilter": "Filter wissen",
247
+ "yes": "Ja",
248
+ "no": "Nee",
249
+ "view": "Bekijken",
250
+ "confirm": "Bevestigen",
251
+ "back": "Terug",
252
+ "bookmark": "bladwijzer",
253
+ "bookmarks": "bladwijzers",
254
+ "tag": "tag",
255
+ "tags": "tags",
256
+ "folder": "map",
257
+ "folders": "mappen",
258
+ "user": "gebruiker",
259
+ "users": "gebruikers",
260
+ "team": "team",
261
+ "teams": "teams",
262
+ "setting": "instelling",
263
+ "settings": "instellingen",
264
+ "provider": "provider",
265
+ "providers": "providers",
266
+ "search": "Zoeken",
267
+ "searchPlaceholder": "Zoek bladwijzers, mappen, tags...",
268
+ "searchShortcut": "Ctrl+K",
269
+ "searchShortcutHint": "Zoeken (Ctrl+K)",
270
+ "noResults": "Geen resultaten gevonden",
271
+ "copy": "Kopiëren",
272
+ "copied": "Gekopieerd!",
273
+ "goTo": "Ga naar",
274
+ "actions": "Acties",
275
+ "navigation": "Navigatie",
276
+ "quickActions": "Snelle acties",
277
+ "collapseSidebar": "Zijbalk insluiten",
278
+ "expandSidebar": "Zijbalk uitvouwen"
279
+ },
280
+ "dashboard": {
281
+ "bookmarksDescription": "Beheer je bladwijzers",
282
+ "foldersDescription": "Organiseer met mappen",
283
+ "tagsDescription": "Tag je bladwijzers",
284
+ "overview": "Overzicht",
285
+ "totalBookmarks": "Totaal bladwijzers",
286
+ "totalFolders": "Totaal mappen",
287
+ "totalTags": "Totaal tags",
288
+ "sharedBookmarks": "Gedeelde bladwijzers",
289
+ "sharedFolders": "Gedeelde mappen",
290
+ "recentBookmarks": "Recente bladwijzers",
291
+ "topTags": "Meest gebruikte tags",
292
+ "noRecentBookmarks": "Nog geen bladwijzers",
293
+ "noTags": "Nog geen tags",
294
+ "searchPlaceholder": "Zoek een bladwijzer of navigeer door SlugBase",
295
+ "quickAccess": "Snelle toegang",
296
+ "viewAll": "Alles bekijken",
297
+ "noQuickAccessBookmarks": "Nog geen bladwijzers met snelkoppeling",
298
+ "noQuickAccessBookmarksHint": "Voeg een slug toe aan een bladwijzer om die hier te zien en go/slug in de browser te gebruiken.",
299
+ "statsBookmarks": "bladwijzers",
300
+ "statsFolders": "mappen",
301
+ "statsTags": "tags",
302
+ "proTipBody": "Tip: Stel SlugBase in als zoekmachine in je browser en typ go github in de adresbalk om bladwijzers te openen.",
303
+ "proTipLink": "Zoekmachine instellen",
304
+ "dismiss": "Sluiten",
305
+ "onboardingTitle": "Aan de slag",
306
+ "onboardingImport": "Browserbladwijzers importeren",
307
+ "onboardingSearchEngine": "Zoekmachine-snelkoppeling instellen",
308
+ "onboardingFolder": "Eerste map maken",
309
+ "onboardingTag": "Bladwijzer taggen",
310
+ "onboardingDismiss": "Lijst sluiten"
311
+ },
312
+ "apiDocs": {
313
+ "title": "API-documentatie",
314
+ "description": "Volledige API-referentie voor SlugBase. Alle endpoints vereisen authenticatie via JWT-tokens, behalve waar aangegeven."
315
+ },
316
+ "admin": {
317
+ "title": "Beheerder",
318
+ "description": "Beheer gebruikers, groepen, OIDC-providers en systeeminstellingen",
319
+ "users": "Gebruikers",
320
+ "teams": "Teams",
321
+ "userGroups": "Teams",
322
+ "oidcProviders": "OIDC-providers",
323
+ "settings": "Instellingen",
324
+ "addUser": "Gebruiker toevoegen",
325
+ "editUser": "Gebruiker bewerken",
326
+ "addTeam": "Team toevoegen",
327
+ "editTeam": "Team bewerken",
328
+ "addGroup": "Team toevoegen",
329
+ "editGroup": "Team bewerken",
330
+ "addProvider": "Provider toevoegen",
331
+ "editProvider": "Provider bewerken",
332
+ "addSetting": "Instelling toevoegen",
333
+ "admin": "Beheerder",
334
+ "user": "Gebruiker",
335
+ "oidcUser": "OIDC-gebruiker",
336
+ "teamName": "Teamnaam",
337
+ "groupName": "Teamnaam",
338
+ "description": "Beschrijving",
339
+ "providerKey": "Providersleutel",
340
+ "issuerUrl": "Issuer-URL",
341
+ "clientId": "Client-ID",
342
+ "clientIdRequired": "Client-ID is verplicht bij het aanmaken van een nieuwe provider",
343
+ "clientSecret": "Clientgeheim",
344
+ "scopes": "Bereiken",
345
+ "callbackUrl": "Callback-URL",
346
+ "customEndpoints": "Aangepaste OIDC-endpoints",
347
+ "customEndpointsDescription": "Overschrijf standaard OIDC-endpointpaden. Laat leeg om standaardpaden te gebruiken op basis van issuer-URL.",
348
+ "authorizationUrl": "Autorisatie-URL",
349
+ "tokenUrl": "Token-URL",
350
+ "userinfoUrl": "UserInfo-URL",
351
+ "autoCreate": "Gebruikers automatisch aanmaken",
352
+ "defaultRole": "Standaardrol",
353
+ "settingKey": "Sleutel",
354
+ "settingValue": "Waarde",
355
+ "leaveBlank": "Laat leeg om huidige te behouden",
356
+ "leaveBlankToKeep": "Laat leeg om huidige waarde te behouden",
357
+ "confirmDeleteUser": "Weet je zeker dat je deze gebruiker wilt verwijderen?",
358
+ "confirmDeleteTeam": "Weet je zeker dat je dit team wilt verwijderen?",
359
+ "confirmDeleteGroup": "Weet je zeker dat je dit team wilt verwijderen?",
360
+ "confirmDeleteProvider": "Weet je zeker dat je deze provider wilt verwijderen?",
361
+ "confirmDeleteSetting": "Weet je zeker dat je deze instelling wilt verwijderen?",
362
+ "manageMembers": "Leden beheren",
363
+ "currentMembers": "Huidige leden",
364
+ "currentTeams": "Huidige teams",
365
+ "addMembers": "Leden toevoegen",
366
+ "addTeams": "Teams toevoegen",
367
+ "noMembers": "Geen leden in dit team",
368
+ "noTeams": "Geen teams toegewezen aan deze gebruiker",
369
+ "noTeamsYet": "Nog geen teams",
370
+ "add": "Toevoegen",
371
+ "members": "Leden",
372
+ "manageTeams": "Teams beheren",
373
+ "searchTeams": "Zoek teams op naam of beschrijving...",
374
+ "createUserWith": "Gebruiker aanmaken met",
375
+ "sendInviteEmail": "Uitnodiging per e-mail versturen",
376
+ "setPassword": "Wachtwoord instellen",
377
+ "inviteSent": "Uitnodiging verzonden",
378
+ "userCreatedInviteSent": "Gebruiker aangemaakt; uitnodiging verzonden.",
379
+ "userCreatedInviteNotSent": "Gebruiker aangemaakt; uitnodiging kon niet worden verzonden (controleer SMTP).",
380
+ "searchUsers": "Zoek gebruikers op naam of e-mail...",
381
+ "noTeamsAvailable": "Alle teams zijn al toegewezen",
382
+ "noUsersAvailable": "Alle gebruikers zijn al leden",
383
+ "noSearchResults": "Geen resultaten gevonden die overeenkomen met je zoekopdracht",
384
+ "apiDocsNote": "API-documentatie is beschikbaar als standalone pagina",
385
+ "viewApiDocs": "API-documentatie bekijken",
386
+ "noUserEmailAvailable": "Geen gebruikerse-mail beschikbaar",
387
+ "manageTeamsTitle": "Teams beheren - {{userName}}",
388
+ "manageMembersTitle": "Leden beheren - {{teamName}}"
389
+ },
390
+ "passwordReset": {
391
+ "title": "Wachtwoord resetten",
392
+ "description": "Voer je e-mailadres in om een wachtwoordresetlink te ontvangen",
393
+ "email": "E-mail",
394
+ "emailPlaceholder": "jouw@email.com",
395
+ "requestReset": "Resetlink verzenden",
396
+ "resetToken": "Reset-token",
397
+ "newPassword": "Nieuw wachtwoord",
398
+ "confirmPassword": "Bevestig wachtwoord",
399
+ "resetPassword": "Wachtwoord resetten",
400
+ "requestSent": "Als er een account bestaat met dit e-mailadres, is een wachtwoordresetlink verzonden.",
401
+ "resetSuccess": "Wachtwoord succesvol gereset! Je kunt nu inloggen met je nieuwe wachtwoord.",
402
+ "invalidToken": "Ongeldig of verlopen reset-token",
403
+ "passwordMismatch": "Wachtwoorden komen niet overeen",
404
+ "backToLogin": "Terug naar inloggen"
405
+ },
406
+ "emailVerification": {
407
+ "verifying": "E-mail verifiëren",
408
+ "verifyingDescription": "Even geduld terwijl we je e-mailadres verifiëren...",
409
+ "success": "E-mail geverifieerd",
410
+ "successDescription": "Je e-mailadres is succesvol gewijzigd naar {{email}}.",
411
+ "error": "Verificatie mislukt",
412
+ "errorDescription": "De verificatielink is ongeldig of verlopen.",
413
+ "tokenRequired": "Verificatietoken is verplicht",
414
+ "invalidToken": "Ongeldig of verlopen verificatietoken",
415
+ "verifyFailed": "Verificatie van token mislukt",
416
+ "confirmFailed": "Bevestiging van e-mailverificatie mislukt",
417
+ "redirecting": "Doorverwijzen naar profiel...",
418
+ "backToProfile": "Terug naar profiel",
419
+ "emailSent": "Verificatie-e-mail verzonden! Controleer je nieuwe e-mailadres.",
420
+ "pendingTitle": "E-mailverificatie in behandeling",
421
+ "pendingDescription": "Een verificatie-e-mail is verzonden naar {{email}}. Controleer je inbox en klik op de verificatielink om de wijziging te voltooien."
422
+ },
423
+ "smtp": {
424
+ "title": "SMTP E-mailconfiguratie",
425
+ "description": "Configureer SMTP-instellingen voor het verzenden van e-mails (bijvoorbeeld wachtwoordreset-e-mails)",
426
+ "enabled": "SMTP inschakelen",
427
+ "host": "SMTP-server",
428
+ "hostPlaceholder": "smtp.gmail.com",
429
+ "port": "Poort",
430
+ "portPlaceholder": "587",
431
+ "secure": "TLS/SSL gebruiken",
432
+ "user": "Gebruikersnaam/E-mail",
433
+ "userPlaceholder": "jouw-email@gmail.com",
434
+ "password": "Wachtwoord",
435
+ "passwordPlaceholder": "Voer wachtwoord in om in te stellen of te wijzigen",
436
+ "passwordChangeHint": "Voer een nieuw wachtwoord in om het te wijzigen, of laat leeg om het huidige wachtwoord te behouden",
437
+ "from": "Afzender e-mail",
438
+ "fromPlaceholder": "noreply@example.com",
439
+ "fromName": "Afzendernaam",
440
+ "fromNamePlaceholder": "SlugBase",
441
+ "testEmail": "Test-e-mail",
442
+ "testEmailPlaceholder": "test@example.com",
443
+ "sendTest": "Test-e-mail verzenden",
444
+ "testSent": "Test-e-mail succesvol verzonden!",
445
+ "testFailed": "Verzenden van test-e-mail mislukt",
446
+ "save": "SMTP-instellingen opslaan"
447
+ },
448
+ "shared": {
449
+ "title": "Gedeeld",
450
+ "description": "Bladwijzers en mappen gedeeld met jou",
451
+ "bookmarks": "Bladwijzers",
452
+ "folders": "Mappen",
453
+ "noBookmarks": "Nog geen gedeelde bladwijzers",
454
+ "noFolders": "Nog geen gedeelde mappen",
455
+ "unknownUser": "Onbekende gebruiker"
456
+ },
457
+ "searchEngineGuide": {
458
+ "title": "Gids voor aangepaste zoekmachine-instelling",
459
+ "description": "Leer hoe je een aangepaste zoekmachine in je browser instelt om snel toegang te krijgen tot je bladwijzers",
460
+ "howItWorks": "Hoe het werkt",
461
+ "howItWorksDescription": "Door een aangepaste zoekmachine in te stellen, kun je een trefwoord (zoals 'go') gevolgd door een bladwijzerslug in de adresbalk van je browser typen om direct naar die bladwijzer te navigeren.",
462
+ "yourSearchUrl": "Je zoek-URL",
463
+ "urlNote": "Gebruik deze URL-sjabloon bij het instellen van je aangepaste zoekmachine. De %s wordt vervangen door je bladwijzerslug.",
464
+ "chromiumTitle": "Chromium-gebaseerde browsers (Chrome, Edge, Brave, enz.)",
465
+ "chromiumDescription": "Volg deze stappen om SlugBase toe te voegen als aangepaste zoekmachine:",
466
+ "chromiumStep1": "Open je browserinstellingen",
467
+ "chromiumStep2": "Navigeer naar 'Zoekmachine' of 'Zoeken' instellingen",
468
+ "chromiumStep3": "Klik op 'Zoekmachines beheren' of 'Toevoegen'",
469
+ "chromiumStep4": "Vul het formulier in met:",
470
+ "chromiumStep4a": "Naam: SlugBase (of een naam naar keuze)",
471
+ "chromiumStep4b": "Trefwoord: go (of een trefwoord naar keuze)",
472
+ "chromiumStep4c": "URL: Gebruik de zoek-URL hierboven weergegeven",
473
+ "chromiumStep5": "Klik op 'Toevoegen' of 'Opslaan' om de instelling te voltooien",
474
+ "firefoxTitle": "Firefox",
475
+ "firefoxDescription": "Volg deze stappen om SlugBase toe te voegen als aangepaste zoekmachine:",
476
+ "firefoxStep1": "Open Firefox-instellingen",
477
+ "firefoxStep2": "Navigeer naar 'Zoeken' in het instellingenmenu",
478
+ "firefoxStep3": "Scroll naar beneden en klik op 'Toevoegen' onder 'Zoekmachines met één klik'",
479
+ "firefoxStep4": "Vul het formulier in met:",
480
+ "firefoxStep4a": "Naam: SlugBase (of een naam naar keuze)",
481
+ "firefoxStep4b": "Trefwoord: go (of een trefwoord naar keuze)",
482
+ "firefoxStep4c": "URL: Gebruik de zoek-URL hierboven weergegeven",
483
+ "firefoxStep5": "Klik op 'Toevoegen' om de instelling te voltooien",
484
+ "usageExample": "Gebruiksvoorbeeld",
485
+ "usageStep1": "Na de instelling typ je eenvoudig in de adresbalk van je browser:",
486
+ "usageStep2": "Druk op Enter en je wordt doorverwezen naar de bladwijzer met de slug 'test'",
487
+ "usageNote": "Vervang 'test' door een bladwijzerslug die je hebt aangemaakt in SlugBase!"
488
+ },
489
+ "legal": {
490
+ "imprintTitle": "Colofon",
491
+ "imprintProviderTitle": "Dienstverlener (ECG §5)",
492
+ "imprintChamber": "Lid van {{chamber}}",
493
+ "imprintCourtTitle": "Bevoegd gerecht",
494
+ "imprintCourtBody": "Rechtsmacht voor geschillen: Landesgericht Linz, Oostenrijk. Oostenrijks recht is van toepassing.",
495
+ "imprintOdrTitle": "EU-onlinegeschillenbeslechting",
496
+ "imprintOdrBody": "De Europese Commissie biedt een platform voor online geschillenbeslechting. Consumenten kunnen het gebruiken op",
497
+ "uid": "UID",
498
+ "backToHome": "Terug naar home",
499
+ "termsTitle": "Algemene voorwaarden",
500
+ "termsScopeTitle": "Toepassingsgebied",
501
+ "termsScopeBody": "Deze Voorwaarden zijn van toepassing op je gebruik van SlugBase Cloud (de \"Dienst\") op slugbase.app. Door je te registreren of de Dienst te gebruiken ga je akkoord met deze voorwaarden. Ben je consument, dan blijven je wettelijke rechten ongewijzigd.",
502
+ "termsServiceTitle": "Beschrijving van de dienst",
503
+ "termsServiceBody": "SlugBase Cloud is een gehoste bladwijzer- en linkdoorverwijzingsdienst. Je kunt bladwijzers opslaan, organiseren en delen; mappen en tags aanmaken; en optioneel bladwijzers als korte URL's aanbieden. De dienst wordt als SaaS aangeboden op https://slugbase.app.",
504
+ "termsPlansTitle": "Plannen",
505
+ "termsPlansBody": "SlugBase Cloud biedt plannen Free, Personal, Team en Early Supporter Lifetime. Huidige details staan op de Prijzen-pagina.",
506
+ "termsAccountTitle": "Account en geschiktheid",
507
+ "termsAccountBody": "Je moet correcte gegevens verstrekken bij het aanmaken van een account. Je bent verantwoordelijk voor het geheim houden van je inloggegevens. De Dienst is bedoeld voor rechtmatig gebruik door individuen en teams.",
508
+ "termsUseTitle": "Gebruik van de Dienst",
509
+ "termsUseBody": "Je mag SlugBase gebruiken om bladwijzers op te slaan, te organiseren en te delen en om korte links (doorverwijzing) te gebruiken. Je mag de Dienst niet gebruiken voor illegale doeleinden, om malware te verspreiden of om anderen lastig te vallen.",
510
+ "termsShortLinksTitle": "Korte links en doorverwijzing",
511
+ "termsShortLinksBody": "Korte links (bijv. /go/jouw-slug) verwijzen door naar de door jou ingestelde URL. Je mag ze niet gebruiken voor phishing, spam of ander misbruik. We kunnen links die in strijd zijn met deze voorwaarden opschorten of verwijderen.",
512
+ "termsBillingTitle": "Facturering en betaling",
513
+ "termsBillingBody": "Betaalde plannen worden vooruit gefactureerd. Betaling is verschuldigd bij factuuromissie. Het Early Supporter Lifetime-plan is een eenmalige betaling.",
514
+ "termsCancellationTitle": "Opzegging en verlenging",
515
+ "termsCancellationBody": "Je kunt je abonnement te allen tijde opzeggen. De opzegging wordt van kracht aan het eind van de lopende factureringsperiode. Geen minimale contractduur. Voor automatisch verlengende abonnementen kun je voor elke verlengingsdatum opzeggen.",
516
+ "termsWithdrawalTitle": "Herroepingsrecht (consumenten)",
517
+ "termsWithdrawalBody": "Ben je consument volgens Oostenrijks recht, dan heb je een herroepingsrecht van 14 dagen zonder opgave van redenen. De termijn begint op de dag van de totstandkoming van de overeenkomst. Neem contact op via hello@slugbase.app.",
518
+ "termsLiabilityTitle": "Beperking van aansprakelijkheid",
519
+ "termsLiabilityBody": "De Dienst wordt geleverd 'as is'. We zijn niet aansprakelijk voor indirecte of gevolgschade, behalve bij opzet of grove nalatigheid. Onze aansprakelijkheid is beperkt.",
520
+ "termsTerminationTitle": "Schorsing en beëindiging door ons",
521
+ "termsTerminationBody": "We kunnen je account schorsen of beëindigen bij ernstige schending van deze voorwaarden of bij gebrek aan betaling. Na beëindiging vervalt je recht op gebruik.",
522
+ "termsLawTitle": "Toepasselijk recht",
523
+ "termsLawBody": "Op deze voorwaarden is Oostenrijks recht van toepassing. Geschillen worden voorgelegd aan de bevoegde rechter in Oostenrijk.",
524
+ "termsContactTitle": "Contact",
525
+ "termsContactBody": "Voor vragen over deze voorwaarden kun je contact opnemen via hello@slugbase.app of het adres in het Colofon.",
526
+ "privacyTitle": "Privacybeleid",
527
+ "privacyScopeTitle": "Toepassingsgebied",
528
+ "privacyScopeBody": "Dit beleid geldt voor SlugBase Cloud op https://slugbase.app. Het beschrijft hoe we je persoonsgegevens verwerken. Het geldt niet als je SlugBase self-hosted. Gebaseerd op de AVG en Oostenrijkse wet (DSG).",
529
+ "privacyControllerTitle": "Verwerkingsverantwoordelijke",
530
+ "privacyControllerBody": "Verwerkingsverantwoordelijke is Guggernbichler Michael David, Linzer Str. 17, 4100 Ottensheim, Oostenrijk (zie Colofon).",
531
+ "privacyDataTitle": "Gegevens die we verwerken",
532
+ "privacyDataBody": "We verwerken: accountgegevens; inhoud (bladwijzers, mappen, tags); gebruik (sessie, IP, logs); contactgegevens bij gebruik van het formulier. We verkopen je gegevens niet en gebruiken ze niet voor advertenties.",
533
+ "privacyRecipientsTitle": "Ontvangers",
534
+ "privacyRecipientsBody": "Gegevens worden verwerkt op onze infrastructuur en door AVG-conforme verwerkers. We delen je gegevens niet met derden voor hun eigen doeleinden.",
535
+ "privacyBasisTitle": "Rechtsgrond",
536
+ "privacyBasisBody": "We verwerken gegevens op basis van contractuitvoering (leveren van de Dienst), je toestemming waar van toepassing, en gerechtvaardigde belangen (beveiliging, misbruikpreventie).",
537
+ "privacyRetentionTitle": "Bewaring",
538
+ "privacyRetentionBody": "We bewaren account- en bladwijzergegevens zolang je account bestaat. Na verwijdering wissen of anonimiseren we gegevens binnen een redelijke termijn. Logs kunnen langer bewaard worden wanneer de wet dit vereist.",
539
+ "privacyRightsTitle": "Je rechten",
540
+ "privacyRightsBody": "Je hebt recht op toegang, rectificatie, verwijdering, beperking, overdraagbaarheid en bezwaar. Je kunt je toestemming te allen tijde intrekken. Contact: hello@slugbase.app. Je kunt een klacht indienen bij de Oostenrijkse autoriteit (zie hieronder).",
541
+ "privacyCookiesTitle": "Cookies en authenticatie",
542
+ "privacyCookiesBody": "We gebruiken sessiecookies en vergelijkbare middelen voor authenticatie en beveiliging. We gebruiken geen cookies van derden voor advertenties.",
543
+ "privacyHostingTitle": "Hosting (CLOUD vs self-hosted)",
544
+ "privacyHostingBody": "Op slugbase.app (CLOUD) hosten we je gegevens op onze infrastructuur in de EU/EEE. Bij self-hosting van SlugBase ben jij verantwoordelijke en bepaal jij de opslag.",
545
+ "privacySupervisoryTitle": "Toezichthoudende autoriteit",
546
+ "privacySupervisoryBody": "Je kunt een klacht indienen bij de Österreichische Datenschutzbehörde, Barichgasse 40-42, 1030 Wenen, Oostenrijk (dsb@dsb.gv.at). Volgens het Oostenrijkse DSG moeten klachten doorgaans binnen een jaar na bekendwording worden ingediend.",
547
+ "privacyChangesTitle": "Wijzigingen",
548
+ "privacyChangesBody": "We kunnen dit beleid van tijd tot tijd bijwerken. Wezenlijke wijzigingen worden gecommuniceerd. De actuele versie staat op deze pagina. Voortgezet gebruik na wijzigingen geldt als acceptatie."
549
+ }
550
+ }