create-mercato-app 0.4.2-canary-e5804f7db1

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 (49) hide show
  1. package/README.md +94 -0
  2. package/bin/create-mercato-app +21 -0
  3. package/dist/index.js +177 -0
  4. package/package.json +42 -0
  5. package/template/.env.example +217 -0
  6. package/template/.yarnrc.yml.template +2 -0
  7. package/template/components.json +22 -0
  8. package/template/gitignore +50 -0
  9. package/template/next.config.ts +28 -0
  10. package/template/package.json.template +87 -0
  11. package/template/postcss.config.mjs +5 -0
  12. package/template/public/catch-the-tornado-logo.png +0 -0
  13. package/template/public/file.svg +1 -0
  14. package/template/public/globe.svg +1 -0
  15. package/template/public/next.svg +1 -0
  16. package/template/public/open-mercato.svg +50 -0
  17. package/template/public/vercel.svg +1 -0
  18. package/template/public/window.svg +1 -0
  19. package/template/src/app/(backend)/backend/[...slug]/page.tsx +59 -0
  20. package/template/src/app/(backend)/backend/layout.tsx +350 -0
  21. package/template/src/app/(backend)/backend/page.tsx +13 -0
  22. package/template/src/app/(frontend)/[...slug]/page.tsx +32 -0
  23. package/template/src/app/api/[...slug]/route.ts +227 -0
  24. package/template/src/app/api/docs/markdown/route.ts +35 -0
  25. package/template/src/app/api/docs/openapi/route.ts +30 -0
  26. package/template/src/app/globals.css +178 -0
  27. package/template/src/app/layout.tsx +76 -0
  28. package/template/src/app/page.tsx +134 -0
  29. package/template/src/bootstrap.ts +58 -0
  30. package/template/src/components/ClientBootstrap.tsx +37 -0
  31. package/template/src/components/GlobalNoticeBars.tsx +116 -0
  32. package/template/src/components/OrganizationSwitcher.tsx +360 -0
  33. package/template/src/components/StartPageContent.tsx +269 -0
  34. package/template/src/components/ui/button.tsx +59 -0
  35. package/template/src/components/ui/card.tsx +92 -0
  36. package/template/src/components/ui/checkbox.tsx +29 -0
  37. package/template/src/components/ui/input.tsx +21 -0
  38. package/template/src/components/ui/label.tsx +24 -0
  39. package/template/src/di.ts +11 -0
  40. package/template/src/i18n/de.json +375 -0
  41. package/template/src/i18n/en.json +376 -0
  42. package/template/src/i18n/es.json +376 -0
  43. package/template/src/i18n/pl.json +375 -0
  44. package/template/src/modules/.gitkeep +0 -0
  45. package/template/src/modules.ts +31 -0
  46. package/template/src/proxy.ts +17 -0
  47. package/template/tsconfig.json +54 -0
  48. package/template/types/pg/index.d.ts +1 -0
  49. package/template/types/react-big-calendar/index.d.ts +16 -0
@@ -0,0 +1,375 @@
1
+ {
2
+ "app.title": "Open Mercato Starter (Next.js + shadcn + MikroORM)",
3
+ "app.status": "{status}",
4
+ "app.goToLogin": "Przejdź do logowania",
5
+ "app.examplePage": "Strona przykładowa",
6
+ "app.exampleAdmin": "Panel przykładowy",
7
+ "app.exampleBlogPost": "Przykładowy wpis na blogu",
8
+ "common.create": "Utwórz",
9
+ "common.close": "Zamknij",
10
+ "common.delete": "Usuń",
11
+ "common.edit": "Edytuj",
12
+ "common.export": "Eksportuj",
13
+ "common.yes": "Tak",
14
+ "common.no": "Nie",
15
+ "common.language": "Język",
16
+ "common.terms": "Regulamin",
17
+ "common.privacy": "Polityka prywatności",
18
+ "common.languages.english": "Angielski",
19
+ "common.languages.polish": "Polski",
20
+ "common.languages.spanish": "Hiszpański",
21
+ "common.languages.german": "Niemiecki",
22
+ "common.theme.light": "Jasny",
23
+ "common.theme.dark": "Ciemny",
24
+ "common.theme.system": "Systemowy",
25
+ "common.theme.toggle": "Przełącz motyw",
26
+ "ui.actions.refresh": "Odśwież",
27
+ "ui.actions.delete": "Usuń",
28
+ "ui.actions.deleting": "Usuwanie…",
29
+ "ui.forms.actions.save": "Zapisz",
30
+ "ui.forms.actions.cancel": "Anuluj",
31
+ "ui.forms.actions.clear": "Wyczyść",
32
+ "ui.forms.actions.delete": "Usuń",
33
+ "ui.forms.status.saving": "Zapisywanie…",
34
+ "ui.forms.loading": "Ładowanie danych…",
35
+ "ui.forms.confirmDelete": "Usunąć ten rekord? Tej operacji nie można cofnąć.",
36
+ "ui.forms.flash.deleteSuccess": "Rekord usunięty",
37
+ "ui.forms.flash.deleteError": "Nie udało się usunąć rekordu",
38
+ "ui.forms.flash.saveSuccess": "Zapisano pomyślnie.",
39
+ "ui.forms.flash.saveError": "Nie udało się zapisać",
40
+ "catalog.products.edit.offers.deleteError": "Nie udało się usunąć oferty kanału sprzedaży.",
41
+ "ui.forms.errors.required": "To pole jest wymagane",
42
+ "ui.forms.errors.highlighted": "Popraw zaznaczone błędy.",
43
+ "ui.forms.errors.unexpected": "Nieoczekiwany błąd",
44
+ "ui.forms.richtext.bold": "Pogrubienie",
45
+ "ui.forms.richtext.italic": "Kursywa",
46
+ "ui.forms.richtext.underline": "Podkreślenie",
47
+ "ui.forms.richtext.list": "Lista",
48
+ "ui.forms.richtext.heading3": "H3",
49
+ "ui.forms.richtext.link": "Link",
50
+ "ui.forms.richtext.linkUrlPrompt": "Adres URL linku",
51
+ "ui.forms.richtext.placeholder": "Napisz treść w Markdown...",
52
+ "ui.forms.richtext.sampleText": "tekst",
53
+ "ui.forms.listbox.searchPlaceholder": "Szukaj...",
54
+ "ui.forms.listbox.noMatches": "Brak wyników",
55
+ "ui.lookupSelect.select": "Wybierz",
56
+ "ui.lookupSelect.selected": "Wybrano",
57
+ "ui.lookupSelect.clearSelection": "Wyczyść wybór",
58
+ "ui.lookupSelect.noResults": "Brak wyników",
59
+ "ui.lookupSelect.searching": "Szukam…",
60
+ "ui.lookupSelect.startTyping": "Zacznij pisać, aby wyszukać.",
61
+ "ui.lookupSelect.minQueryHint": "Wpisz co najmniej {minQuery} znaki, aby wyszukać.",
62
+ "ui.navigation.back": "Wstecz",
63
+ "backend.title": "Zaplecze",
64
+ "backend.selectModule": "Wybierz moduł w panelu.",
65
+ "auth.signIn": "Zaloguj się",
66
+ "auth.email": "Email",
67
+ "auth.password": "Hasło",
68
+ "dictionaries.config.list.title": "Słowniki",
69
+ "dictionaries.config.list.add": "Nowy słownik",
70
+ "dictionaries.config.list.inherited": "Dziedziczone",
71
+ "dictionaries.config.entries.readOnly": "Dziedziczone słowniki są zarządzane w organizacji nadrzędnej.",
72
+ "dictionaries.config.entries.readOnlyActions": "Zarządzane w organizacji nadrzędnej",
73
+ "auth.sendResetLink": "Wyślij link resetujący",
74
+ "auth.resetPassword": "Resetuj hasło",
75
+ "auth.usersRoles": "Użytkownicy i role",
76
+ "auth.manageAuthSettings": "Zarządzaj ustawieniami uwierzytelniania.",
77
+ "auth.users.list.title": "Użytkownicy",
78
+ "auth.users.list.confirmDelete": "Usunąć użytkownika \"{email}\"?",
79
+ "auth.users.list.actions.showRoles": "Pokaż role",
80
+ "entities.user.table.title": "Encje użytkownika",
81
+ "entities.user.table.column.entity": "Encja",
82
+ "entities.user.table.column.label": "Etykieta",
83
+ "entities.user.table.column.source": "Źródło",
84
+ "entities.user.table.column.fields": "Pola",
85
+ "entities.user.table.column.inSidebar": "W pasku bocznym",
86
+ "entities.user.table.actions.showRecords": "Pokaż rekordy",
87
+ "example.moduleTitle": "Moduł przykładowy",
88
+ "example.publicPage": "Publiczna strona przykładowa.",
89
+ "example.adminTitle": "Panel przykładowy",
90
+ "example.manageEntities": "Zarządzaj encjami przykładowymi.",
91
+ "example.blog.overriddenTitle": "Nadpisany wpis na blogu",
92
+ "example.blog.customTitle": "Niestandardowe nadpisanie wpisu na blogu",
93
+ "example.blog.overrideDescription": "Ta strona pochodzi z src/modules i nadpisuje pakiet przykładowy.",
94
+ "example.blog.postId": "ID wpisu:",
95
+ "example.blog.removeHint": "Możesz usunąć ten plik, aby wrócić do implementacji pakietu.",
96
+ "dashboard.title": "Pulpit",
97
+ "dashboard.subtitle": "Dostosuj widżety, które widzisz na stronie startowej panelu administratora.",
98
+ "dashboard.unavailable": "Pulpit jest niedostępny",
99
+ "dashboard.retry": "Spróbuj ponownie",
100
+ "dashboard.saving": "Zapisywanie…",
101
+ "dashboard.action.customize": "Dostosuj",
102
+ "dashboard.action.done": "Gotowe",
103
+ "dashboard.error.partial": "Niektóre zmiany nie zostały zapisane",
104
+ "dashboard.error.reload": "Ponownie wczytaj dane",
105
+ "dashboard.addWidget": "Dodaj widżet",
106
+ "dashboard.empty.configurable": "Nie wybrano jeszcze żadnych widżetów. Użyj \"Dodaj widżet\", aby zbudować pulpit.",
107
+ "dashboard.empty.readonly": "Brak dostępnych widżetów dla Twojego konta.",
108
+ "dashboard.loadError": "Nie udało się wczytać danych pulpitu. Spróbuj ponownie później.",
109
+ "dashboard.saveError": "Nie udało się zapisać zmian układu pulpitu.",
110
+ "dashboard.widget.loadError": "Nie udało się wczytać widżetu.",
111
+ "dashboard.widget.closeSettings": "Zamknij ustawienia",
112
+ "dashboard.widget.editSettings": "Edytuj ustawienia",
113
+ "dashboard.widget.refresh": "Odśwież widżet",
114
+ "dashboard.widget.remove": "Usuń widżet",
115
+ "dashboard.widgets.customers.dashboard.todos.title": "Zadania klientów",
116
+ "dashboard.widgets.customers.dashboard.todos.description": "Przeglądaj najnowsze zadania powiązane z rekordami klientów i przechodź bezpośrednio do szczegółów.",
117
+ "dashboard.widgets.customers.dashboard.newCustomers.title": "Nowi klienci",
118
+ "dashboard.widgets.customers.dashboard.newCustomers.description": "Śledź ostatnio dodane osoby i firmy, aby szybko zareagować.",
119
+ "dashboard.widgets.customers.dashboard.nextInteractions.title": "Najbliższe interakcje",
120
+ "dashboard.widgets.customers.dashboard.nextInteractions.description": "Zobacz klientów z zaplanowanymi interakcjami, aby pozostać proaktywnym.",
121
+ "appShell.openMenu": "Otwórz menu",
122
+ "appShell.toggleSidebar": "Przełącz panel boczny",
123
+ "appShell.goToDashboard": "Przejdź do pulpitu",
124
+ "appShell.closeMenu": "Zamknij menu",
125
+ "appShell.userFallback": "Użytkownik",
126
+ "appShell.productName": "Open Mercato",
127
+ "appShell.version": "Wersja {{version}}",
128
+ "appShell.customizeSidebar": "Dostosuj pasek boczny",
129
+ "appShell.sidebarCustomizationHeading": "Dostosowanie paska bocznego",
130
+ "appShell.sidebarCustomizationHint": "Zmiany dotyczą tylko Twojego paska bocznego w języku {locale}. Pozostałe wersje pozostają bez zmian.",
131
+ "appShell.sidebarCustomizationReset": "Resetuj",
132
+ "appShell.sidebarCustomizationCancel": "Anuluj",
133
+ "appShell.sidebarCustomizationSave": "Zapisz",
134
+ "appShell.sidebarCustomizationSaving": "Zapisywanie…",
135
+ "appShell.sidebarCustomizationMoveUp": "Przesuń w górę",
136
+ "appShell.sidebarCustomizationMoveDown": "Przesuń w dół",
137
+ "appShell.sidebarCustomizationGroupLabel": "Nazwa sekcji",
138
+ "appShell.sidebarCustomizationShowItem": "Pokaż pozycję",
139
+ "appShell.sidebarCustomizationLoading": "Wczytywanie ustawień…",
140
+ "appShell.sidebarCustomizationLoadError": "Nie udało się wczytać ustawień paska bocznego.",
141
+ "appShell.sidebarCustomizationSaveError": "Nie udało się zapisać ustawień paska bocznego.",
142
+ "appShell.sidebarApplyToRolesTitle": "Zastosuj do ról",
143
+ "appShell.sidebarApplyToRolesDescription": "Wybierz role, które powinny domyślnie korzystać z tego układu paska bocznego.",
144
+ "appShell.sidebarApplyToRolesEmpty": "Brak dostępnych ról dla tego tenant.",
145
+ "appShell.sidebarRoleHasPreset": "używa tych ustawień",
146
+ "appShell.sidebarRoleWillClear": "ustawienia zostaną usunięte",
147
+ "organizationSwitcher.label": "Organizacja",
148
+ "organizationSwitcher.loading": "Ładowanie…",
149
+ "organizationSwitcher.error": "Nie udało się załadować",
150
+ "organizationSwitcher.empty": "Brak organizacji",
151
+ "organizationSwitcher.manage": "Zarządzaj",
152
+ "organizationSwitcher.tenantLabel": "Tenant",
153
+ "organizationSelect.all": "Wszystkie organizacje",
154
+ "organizationSelect.empty": "—",
155
+ "organizationSelect.loading": "Ładowanie organizacji…",
156
+ "organizationSelect.error": "Nie udało się załadować organizacji",
157
+ "organizationSelect.inactive": "Nieaktywna",
158
+ "tenantSelect.empty": "—",
159
+ "tenantSelect.loading": "Ładowanie tenantów…",
160
+ "tenantSelect.error": "Nie udało się załadować tenantów",
161
+ "tenantSelect.inactive": "Nieaktywny",
162
+ "app.metadata.title": "Open Mercato",
163
+ "app.metadata.description": "Modularna podstawa ERP z obsługą AI dla firm produkcyjnych i usługowych",
164
+ "app.page.title": "Open Mercato",
165
+ "app.page.subtitle": "Modularna podstawa ERP z obsługą AI dla firm produkcyjnych i usługowych",
166
+ "app.page.logoAlt": "Open Mercato",
167
+ "app.page.dbStatus.title": "Status bazy danych",
168
+ "app.page.dbStatus.label": "Status:",
169
+ "app.page.dbStatus.unknown": "Nieznany",
170
+ "app.page.dbStatus.connected": "Połączono",
171
+ "app.page.dbStatus.noConnection": "brak połączenia",
172
+ "app.page.dbStatus.error": "Błąd: {message}",
173
+ "app.page.dbStatus.users": "Użytkownicy:",
174
+ "app.page.dbStatus.tenants": "Tenanci:",
175
+ "app.page.dbStatus.organizations": "Organizacje:",
176
+ "app.page.activeModules.title": "Aktywne moduły",
177
+ "app.page.quickLinks.title": "Szybkie linki",
178
+ "app.page.quickLinks.login": "Zaloguj się",
179
+ "app.page.quickLinks.examplePage": "Strona przykładowa",
180
+ "app.page.quickLinks.exampleAdmin": "Panel przykładowy",
181
+ "app.page.quickLinks.exampleTodos": "Przykładowe zadania z polami niestandardowymi",
182
+ "app.page.quickLinks.exampleBlog": "Przykładowy wpis na blogu",
183
+ "app.page.footer": "Zbudowane z Next.js, MikroORM i Awilix — modularne z założenia.",
184
+ "startPage.welcome.title": "Witamy w instalacji Open Mercato",
185
+ "startPage.welcome.description": "To jest konfigurowalna strona startowa dla Twojej nowej instalacji Open Mercato. Wybierz swoją rolę poniżej, aby rozpocząć i poznać dostępne funkcje.",
186
+ "startPage.onboarding.title": "Uruchom własną przestrzeń roboczą",
187
+ "startPage.onboarding.description": "Utwórz najemcę, organizację i konto administratora w kilka minut. Zweryfikujemy Twój e-mail i dostarczymy wstępnie skonfigurowane środowisko, abyś mógł eksplorować Open Mercato z rzeczywistymi danymi.",
188
+ "startPage.onboarding.feature1": "Automatyczne udostępnianie najemcy i przykładowych danych",
189
+ "startPage.onboarding.feature2": "Gotowe do użycia dane logowania superadministratora po weryfikacji",
190
+ "startPage.onboarding.cta": "Rozpocznij onboardowanie",
191
+ "startPage.defaultPassword.title": "Domyślne hasło",
192
+ "startPage.defaultPassword.description1": "Domyślne hasło dla wszystkich kont demonstracyjnych to",
193
+ "startPage.defaultPassword.description2": "Aby zmienić hasła, użyj polecenia CLI:",
194
+ "startPage.chooseRole.title": "Wybierz swoją rolę",
195
+ "startPage.roleTile.availableFeatures": "Dostępne funkcje:",
196
+ "startPage.roleTile.loginUnavailable": "Logowanie niedostępne",
197
+ "startPage.roleTile.loginAs": "Zaloguj się jako {title}",
198
+ "startPage.roles.superAdmin.title": "Super Administrator",
199
+ "startPage.roles.superAdmin.description": "Pełny dostęp do systemu z pełną kontrolą",
200
+ "startPage.roles.superAdmin.feature1": "Zarządzaj strukturą organizacji",
201
+ "startPage.roles.superAdmin.feature2": "Twórz i zarządzaj rolami",
202
+ "startPage.roles.superAdmin.feature3": "Zarządzaj wszystkimi użytkownikami w organizacjach",
203
+ "startPage.roles.superAdmin.feature4": "Konfiguracja systemowa",
204
+ "startPage.roles.superAdmin.feature5": "Dostęp do wszystkich modułów i funkcji",
205
+ "startPage.roles.superAdmin.disabledCta": "Logowanie superadministratora wyłączone",
206
+ "startPage.roles.superAdmin.disabledMessage1": "Dostęp demonstracyjny superadministratora nie jest włączony w tej instancji.",
207
+ "startPage.roles.superAdmin.disabledMessage2": "Zainstaluj Open Mercato lokalnie, aby uzyskać pełny dostęp przez",
208
+ "startPage.roles.admin.title": "Administrator",
209
+ "startPage.roles.admin.description": "Administracja na poziomie organizacji",
210
+ "startPage.roles.admin.feature1": "Administruj określoną(ymi) organizacją(ami)",
211
+ "startPage.roles.admin.feature2": "Zarządzaj użytkownikami w organizacji",
212
+ "startPage.roles.admin.feature3": "Konfiguruj ustawienia organizacji",
213
+ "startPage.roles.admin.feature4": "Dostęp do modułów administracyjnych",
214
+ "startPage.roles.admin.feature5": "Dostęp do raportów i analityki",
215
+ "startPage.roles.employee.title": "Pracownik",
216
+ "startPage.roles.employee.description": "Pracuj nad codziennymi zadaniami",
217
+ "startPage.roles.employee.feature1": "Pracuj nad przypisanymi zadaniami",
218
+ "startPage.roles.employee.feature2": "Uzyskuj dostęp do zasobów organizacji",
219
+ "startPage.roles.employee.feature3": "Współpracuj z członkami zespołu",
220
+ "startPage.roles.employee.feature4": "Wyświetlaj osobisty pulpit",
221
+ "startPage.roles.employee.feature5": "Przesyłaj raporty i aktualizacje",
222
+ "startPage.apiResources.title": "Zasoby API",
223
+ "startPage.apiResources.description": "Poznaj oficjalną dokumentację i pobierz wygenerowane eksporty OpenAPI dla tej instalacji.",
224
+ "startPage.apiResources.openLink": "Otwórz link",
225
+ "startPage.apiResources.baseUrl": "Aktualny podstawowy URL API:",
226
+ "startPage.showNextTime": "Wyświetl tę stronę startową następnym razem",
227
+ "api.errors.unauthorized": "Nieautoryzowany",
228
+ "api.errors.forbidden": "Zabroniony",
229
+ "api.errors.notFound": "Nie znaleziono",
230
+ "api.errors.invalidJson": "Nieprawidłowa ładunek JSON.",
231
+ "api.errors.invalidPayload": "Nieprawidłowa ładunek.",
232
+ "api.errors.invalidLocale": "Nieprawidłowy język",
233
+ "api.errors.badRequest": "Nieprawidłowe żądanie",
234
+ "api.docs.title": "API Open Mercato",
235
+ "api.docs.description": "Automatycznie wygenerowana definicja OpenAPI dla wszystkich włączonych modułów.",
236
+ "api.docs.serverDescription": "Domyślne środowisko",
237
+ "vector.api.errors.configUnavailable": "Usługa konfiguracji niedostępna",
238
+ "vector.api.errors.autoIndexingDisabled": "Automatyczne indeksowanie jest wyłączone przez DISABLE_VECTOR_SEARCH_AUTOINDEXING.",
239
+ "vector.api.errors.indexUnavailable": "Indeks wektorowy niedostępny",
240
+ "vector.api.errors.missingQuery": "Brakuje zapytania",
241
+ "vector.api.errors.searchFailed": "Wyszukiwanie wektorowe nie powiodło się",
242
+ "vector.api.errors.reindexFailed": "Ponowne indeksowanie wektorowe nie powiodło się",
243
+ "vector.api.errors.indexFetchFailed": "Pobieranie indeksu wektorowego nie powiodło się",
244
+ "vector.api.errors.purgeFailed": "Czyszczenie indeksu wektorowego nie powiodło się",
245
+ "vector.api.errors.updateFailed": "Nie udało się zaktualizować ustawień wektorowych.",
246
+ "ui.errors.defaultTitle": "Coś poszło nie tak",
247
+ "ui.errors.defaultMessage": "Nie udało się załadować danych. Spróbuj ponownie.",
248
+ "ui.badges.severity.low": "Niski",
249
+ "ui.badges.severity.medium": "Średni",
250
+ "ui.badges.severity.high": "Wysoki",
251
+ "ui.filters.title": "Filtry",
252
+ "ui.dialogs.confirm.defaultTitle": "Czy na pewno?",
253
+ "ui.dataTable.export.label": "Eksportuj",
254
+ "ui.dataTable.export.format.markdown": "Markdown",
255
+ "ui.dataTable.customizeColumns.ariaLabel": "Dostosuj kolumny",
256
+ "ui.dataTable.customizeColumns.title": "Dostosuj kolumny",
257
+ "ui.dataTable.customizeColumns.srOnly": "Dostosuj kolumny",
258
+ "ui.dataTable.pagination.results": "Wyświetlanie {start} do {end} z {total} wyników",
259
+ "ui.dataTable.pagination.resultsWithDuration": "Wyświetlanie {start} do {end} z {total} wyników w {duration}",
260
+ "ui.dataTable.pagination.previous": "Poprzednia",
261
+ "ui.dataTable.pagination.next": "Następna",
262
+ "ui.dataTable.pagination.pageInfo": "Strona {page} z {totalPages}",
263
+ "ui.dataTable.pagination.cache.ariaLabel": "Pamięć podręczna {status}",
264
+ "ui.dataTable.pagination.cache.title": "Pamięć podręczna {status}",
265
+ "ui.dataTable.pagination.cache.srOnly": "Pamięć podręczna {status}",
266
+ "ui.dataTable.emptyState.default": "Brak wyników.",
267
+ "ui.dataTable.actionsColumn": "Akcje",
268
+ "ui.dataTable.perspectives.button": "Perspektywy",
269
+ "ui.inputs.tagsInput.placeholder": "Dodaj tag i naciśnij Enter",
270
+ "ui.filters.actions.clear": "Wyczyść",
271
+ "ui.filters.actions.apply": "Zastosuj",
272
+ "ui.filters.dateRange.from": "Od",
273
+ "ui.filters.dateRange.to": "Do",
274
+ "ui.perspectives.untitled": "Perspektywa bez tytułu",
275
+ "ui.perspectives.badge.default": "Domyślna",
276
+ "ui.perspectives.badge.roleDefault": "Domyślna roli",
277
+ "ui.perspectives.updated": "Zaktualizowano {date}",
278
+ "ui.perspectives.role.fallback": "Rola",
279
+ "ui.perspectives.role.defaultConfigured": "Skonfigurowano domyślną perspektywę",
280
+ "ui.perspectives.actions.active": "Aktywna",
281
+ "ui.perspectives.actions.use": "Użyj",
282
+ "ui.perspectives.actions.removing": "Usuwanie…",
283
+ "ui.perspectives.form.nameLabel": "Nazwa",
284
+ "ui.perspectives.form.namePlaceholder": "np. Moja skondensowana perspektywa",
285
+ "ui.perspectives.form.makeDefault": "Ustaw jako moją domyślną perspektywę",
286
+ "ui.perspectives.form.shareWithRoles": "Udostępnij rolom",
287
+ "ui.perspectives.form.noRolesAvailable": "Brak dostępnych ról.",
288
+ "ui.perspectives.form.setRoleDefault": "Ustaw jako domyślną dla wybranych ról",
289
+ "ui.perspectives.form.saving": "Zapisywanie…",
290
+ "ui.perspectives.form.save": "Zapisz perspektywę",
291
+ "ui.perspectives.form.columns": "Kolumny",
292
+ "ui.perspectives.title": "Perspektywy",
293
+ "ui.perspectives.close": "Zamknij",
294
+ "ui.perspectives.myPerspectives.title": "Moje perspektywy",
295
+ "ui.perspectives.myPerspectives.empty": "Brak zapisanych perspektyw. Dostosuj kolumny lub filtry i zapisz swoją pierwszą perspektywę.",
296
+ "ui.perspectives.rolePerspectives.title": "Perspektywy ról",
297
+ "ui.perspectives.rolePerspectives.empty": "Brak dostępnych wspólnych perspektyw ról.",
298
+ "ui.perspectives.saveCurrentView.title": "Zapisz bieżący widok",
299
+ "ui.perspectives.role.clearing": "Czyszczenie…",
300
+ "ui.perspectives.role.clear": "Wyczyść rolę",
301
+ "ui.rowActions.openActions": "Otwórz akcje",
302
+ "ui.userMenu.userFallback": "Użytkownik",
303
+ "ui.userMenu.loggedInAs": "Zalogowany jako:",
304
+ "ui.userMenu.logout": "Wyloguj",
305
+ "ui.contextHelp.hide": "Ukryj",
306
+ "ui.contextHelp.show": "Pokaż",
307
+ "ui.dataLoader.loading": "Ładowanie...",
308
+ "ui.filterBar.searchPlaceholder": "Szukaj",
309
+ "ui.filterBar.filters": "Filtry",
310
+ "ui.filterBar.filtersWithCount": "Filtry {count}",
311
+ "ui.forms.select.emptyOption": "—",
312
+ "ui.dataTable.perspectives.error.load": "Nie udało się załadować perspektyw",
313
+ "ui.dataTable.perspectives.error.save": "Nie udało się zapisać perspektywy",
314
+ "ui.dataTable.perspectives.error.delete": "Nie udało się usunąć perspektywy",
315
+ "ui.dataTable.perspectives.error.clearRoles": "Nie udało się wyczyścić perspektyw ról",
316
+ "ui.dataTable.perspectives.error.apiUnavailable": "API perspektyw nie jest dostępne. Uruchom `npm run modules:prepare` i zrestartuj serwer deweloperski.",
317
+ "ui.dataTable.perspectives.warning.apiUnavailable": "API perspektyw nie jest jeszcze dostępne. Uruchom `npm run modules:prepare`, aby wygenerować ponownie trasy modułów, a następnie zrestartuj serwer.",
318
+ "audit_logs.banner.undo_failed": "Nie udało się cofnąć",
319
+ "ui.spinner.ariaLabel": "Ładowanie",
320
+ "ui.spinner.srOnly": "Ładowanie...",
321
+ "ui.dialog.close.ariaLabel": "Zamknij",
322
+ "example.products.table.column.product": "Produkt",
323
+ "example.products.table.column.collection": "Kolekcja",
324
+ "example.products.table.column.channels": "Kanały sprzedaży",
325
+ "example.products.table.column.variants": "Warianty",
326
+ "example.products.table.column.status": "Status",
327
+ "example.products.actions.export": "Eksportuj",
328
+ "example.products.actions.import": "Importuj",
329
+ "example.products.actions.create": "Utwórz",
330
+ "example.products.page.title": "Produkty",
331
+ "example.products.actions.addFilter": "Dodaj filtr",
332
+ "example.admin.page.title": "Panel przykładowy",
333
+ "example.admin.page.description": "Zasoby demonstracyjne dla modułu przykładowego.",
334
+ "example.admin.page.resources": "Zasoby",
335
+ "example.admin.page.todosList": "Lista zadań",
336
+ "example.widgets.welcome.settings.headlineLabel": "Nagłówek",
337
+ "example.widgets.welcome.settings.headlinePlaceholder": "Witaj ponownie, {{user}}!",
338
+ "example.widgets.welcome.settings.headlineHint": "Użyj {{user}}, aby uwzględnić identyfikator zalogowanego użytkownika.",
339
+ "example.widgets.welcome.settings.messageLabel": "Wiadomość",
340
+ "example.widgets.notes.settings.label": "Notatki",
341
+ "example.widgets.notes.settings.placeholder": "Napisz szybkie notatki, które chcesz mieć pod ręką.",
342
+ "example.widgets.notes.empty": "Brak notatek. Przejdź do ustawień, aby dodać tekst.",
343
+ "notices.demo.title": "Środowisko demonstracyjne",
344
+ "notices.demo.description": "Ta instancja jest udostępniana wyłącznie do celów demonstracyjnych. Dane mogą zostać zresetowane w dowolnym momencie i nie są przechowywane przez żaden gwarantowany okres.",
345
+ "notices.demo.superadminQuestion": "Potrzebujesz trwałego dostępu superadministratora?",
346
+ "notices.demo.installLink": "Zainstaluj Open Mercato lokalnie",
347
+ "notices.demo.reviewLinks": "Przejrzyj nasze",
348
+ "notices.demo.and": "i",
349
+ "notices.cookies.description": "Używamy niezbędnych plików cookie, aby zapamiętać Twoje preferencje. Dowiedz się, jak obsługujemy dane w naszej",
350
+ "notices.cookies.dismiss": "Odrzuć",
351
+ "upgrades.versionLabel": "Wersja {{version}}",
352
+ "upgrades.scopeRequired": "Wybierz organizację i tenant, aby zastosować tę aktualizację.",
353
+ "upgrades.v034.message": "Wersja {{version}} została zainstalowana. Aby w pełni korzystać z tej edycji, uruchom „Zainstaluj przykładowe produkty i kategorie katalogu”.",
354
+ "upgrades.v034.cta": "Zainstaluj przykładowe produkty i kategorie katalogu",
355
+ "upgrades.v034.loading": "Instalowanie…",
356
+ "upgrades.v034.success": "Przykładowe produkty i kategorie katalogu zostały zainstalowane.",
357
+ "upgrades.v036.message": "Wersja {{version}} została zainstalowana. Aby wypróbować nowy moduł sprzedaży, uruchom „Zainstaluj przykładowe oferty i zamówienia sprzedaży”.",
358
+ "upgrades.v036.cta": "Zainstaluj przykładowe oferty i zamówienia sprzedaży",
359
+ "upgrades.v036.loading": "Instalowanie…",
360
+ "upgrades.v036.success": "Przykładowe oferty i zamówienia sprzedaży zostały zainstalowane.",
361
+ "upgrades.v036_vector_encryption.message": "Wersja {{version}} została zainstalowana. Zaszyfruj dodatkowe pola wyszukiwania wektorowego i uruchom ponowne indeksowanie.",
362
+ "upgrades.v036_vector_encryption.cta": "Zaktualizuj szyfrowanie wyszukiwania wektorowego",
363
+ "upgrades.v036_vector_encryption.loading": "Aktualizowanie…",
364
+ "upgrades.v036_vector_encryption.success": "Szyfrowanie wyszukiwania wektorowego zaktualizowane; ponowne indeksowanie uruchomione.",
365
+ "upgrades.v0313.message": "Wersja {{version}} została zainstalowana. Zainstaluj przykładowe dane, waluty i workflowy.",
366
+ "upgrades.v0313.cta": "Zainstaluj przykładowe dane, waluty i workflowy",
367
+ "upgrades.v0313.loading": "Instalowanie…",
368
+ "upgrades.v0313.success": "Przykładowe dane, waluty i workflowy zostały zainstalowane.",
369
+ "upgrades.v035.message": "Wersja {{version}} została zainstalowana. Nadaj roli admin dostęp do Business Rules.",
370
+ "upgrades.v035.cta": "Nadaj dostęp Business Rules roli admin",
371
+ "upgrades.v035.loading": "Aktualizowanie roli…",
372
+ "upgrades.v035.success": "Rola admin została zaktualizowana o dostęp do Business Rules.",
373
+ "upgrades.runFailed": "Nie udało się uruchomić tej akcji aktualizacji.",
374
+ "upgrades.loading": "Ładowanie aktualizacji…"
375
+ }
File without changes
@@ -0,0 +1,31 @@
1
+ // Central place to enable modules and their source.
2
+ // - id: module id (plural snake_case; special cases: 'auth')
3
+ // - from: '@open-mercato/core' | '@app' | custom alias/path in future
4
+ export type ModuleEntry = { id: string; from?: '@open-mercato/core' | '@app' | string }
5
+
6
+ export const enabledModules: ModuleEntry[] = [
7
+ { id: 'dashboards', from: '@open-mercato/core' },
8
+ { id: 'auth', from: '@open-mercato/core' },
9
+ { id: 'directory', from: '@open-mercato/core' },
10
+ { id: 'customers', from: '@open-mercato/core' },
11
+ { id: 'perspectives', from: '@open-mercato/core' },
12
+ { id: 'entities', from: '@open-mercato/core' },
13
+ { id: 'configs', from: '@open-mercato/core' },
14
+ { id: 'query_index', from: '@open-mercato/core' },
15
+ { id: 'audit_logs', from: '@open-mercato/core' },
16
+ { id: 'attachments', from: '@open-mercato/core' },
17
+ { id: 'catalog', from: '@open-mercato/core' },
18
+ { id: 'sales', from: '@open-mercato/core' },
19
+ { id: 'api_keys', from: '@open-mercato/core' },
20
+ { id: 'dictionaries', from: '@open-mercato/core' },
21
+ { id: 'content', from: '@open-mercato/content' },
22
+ { id: 'onboarding', from: '@open-mercato/onboarding' },
23
+ { id: 'api_docs', from: '@open-mercato/core' },
24
+ { id: 'business_rules', from: '@open-mercato/core' },
25
+ { id: 'feature_toggles', from: '@open-mercato/core' },
26
+ { id: 'workflows', from: '@open-mercato/core' },
27
+ { id: 'search', from: '@open-mercato/search' },
28
+ { id: 'currencies', from: '@open-mercato/core' },
29
+ { id: 'events', from: '@open-mercato/events' },
30
+ { id: 'ai_assistant', from: '@open-mercato/ai-assistant' },
31
+ ]
@@ -0,0 +1,17 @@
1
+ import type { NextRequest } from 'next/server'
2
+ import { NextResponse } from 'next/server'
3
+
4
+ // Note: Do NOT import bootstrap here - middleware runs in Edge runtime
5
+ // which cannot use Node.js modules like MikroORM. Bootstrap is called
6
+ // in layout.tsx which runs in Node.js runtime.
7
+
8
+ export function proxy(req: NextRequest) {
9
+ const requestHeaders = new Headers(req.headers)
10
+ // Expose current URL path (no query) to server components via request headers
11
+ requestHeaders.set('x-next-url', req.nextUrl.pathname)
12
+ return NextResponse.next({ request: { headers: requestHeaders } })
13
+ }
14
+
15
+ export const config = {
16
+ matcher: ['/backend/:path*'],
17
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "compilerOptions": {
3
+ "lib": [
4
+ "dom",
5
+ "dom.iterable",
6
+ "esnext"
7
+ ],
8
+ "allowJs": true,
9
+ "skipLibCheck": true,
10
+ "strict": true,
11
+ "noEmit": true,
12
+ "esModuleInterop": true,
13
+ "module": "esnext",
14
+ "moduleResolution": "bundler",
15
+ "resolveJsonModule": true,
16
+ "isolatedModules": true,
17
+ "jsx": "react-jsx",
18
+ "incremental": true,
19
+ "experimentalDecorators": true,
20
+ "emitDecoratorMetadata": true,
21
+ "useDefineForClassFields": false,
22
+ "plugins": [
23
+ {
24
+ "name": "next"
25
+ }
26
+ ],
27
+ "baseUrl": ".",
28
+ "paths": {
29
+ "@/*": [
30
+ "./src/*"
31
+ ],
32
+ "@/.mercato/*": [
33
+ "./.mercato/*"
34
+ ]
35
+ },
36
+ "typeRoots": [
37
+ "./types",
38
+ "./node_modules/@types"
39
+ ],
40
+ "verbatimModuleSyntax": false,
41
+ "target": "ES2017"
42
+ },
43
+ "include": [
44
+ "next-env.d.ts",
45
+ "**/*.ts",
46
+ "**/*.tsx",
47
+ ".next/types/**/*.ts",
48
+ ".mercato/**/*.ts",
49
+ ".next/dev/types/**/*.ts"
50
+ ],
51
+ "exclude": [
52
+ "node_modules"
53
+ ]
54
+ }
@@ -0,0 +1 @@
1
+ declare module 'pg';
@@ -0,0 +1,16 @@
1
+ declare module 'react-big-calendar' {
2
+ import * as React from 'react'
3
+
4
+ export type View = 'month' | 'week' | 'day' | 'agenda' | string
5
+
6
+ export type SlotInfo = {
7
+ start: Date
8
+ end: Date
9
+ slots: Date[]
10
+ action: 'select' | 'click' | 'doubleClick'
11
+ }
12
+
13
+ export function dateFnsLocalizer(_config: Record<string, unknown>): unknown
14
+
15
+ export const Calendar: React.ComponentType<Record<string, unknown>>
16
+ }