@endora-commerce/mod-settings 0.100.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +58 -0
  3. package/dist/admin/api/settings-client.d.ts +47 -0
  4. package/dist/admin/api/settings-client.d.ts.map +1 -0
  5. package/dist/admin/api/settings-client.js +41 -0
  6. package/dist/admin/api/settings-client.js.map +1 -0
  7. package/dist/admin/components/ActivationPointerRow.d.ts +21 -0
  8. package/dist/admin/components/ActivationPointerRow.d.ts.map +1 -0
  9. package/dist/admin/components/ActivationPointerRow.js +28 -0
  10. package/dist/admin/components/ActivationPointerRow.js.map +1 -0
  11. package/dist/admin/components/AssetIdSettingInput.d.ts +12 -0
  12. package/dist/admin/components/AssetIdSettingInput.d.ts.map +1 -0
  13. package/dist/admin/components/AssetIdSettingInput.js +10 -0
  14. package/dist/admin/components/AssetIdSettingInput.js.map +1 -0
  15. package/dist/admin/components/ConfigurationReferenceInput.d.ts +39 -0
  16. package/dist/admin/components/ConfigurationReferenceInput.d.ts.map +1 -0
  17. package/dist/admin/components/ConfigurationReferenceInput.js +74 -0
  18. package/dist/admin/components/ConfigurationReferenceInput.js.map +1 -0
  19. package/dist/admin/components/ConflictBanner.d.ts +13 -0
  20. package/dist/admin/components/ConflictBanner.d.ts.map +1 -0
  21. package/dist/admin/components/ConflictBanner.js +12 -0
  22. package/dist/admin/components/ConflictBanner.js.map +1 -0
  23. package/dist/admin/components/ImageSettingInput.d.ts +34 -0
  24. package/dist/admin/components/ImageSettingInput.d.ts.map +1 -0
  25. package/dist/admin/components/ImageSettingInput.js +36 -0
  26. package/dist/admin/components/ImageSettingInput.js.map +1 -0
  27. package/dist/admin/components/QuoteRequestsSettingsTab.d.ts +3 -0
  28. package/dist/admin/components/QuoteRequestsSettingsTab.d.ts.map +1 -0
  29. package/dist/admin/components/QuoteRequestsSettingsTab.js +69 -0
  30. package/dist/admin/components/QuoteRequestsSettingsTab.js.map +1 -0
  31. package/dist/admin/components/SellerCompanyDataInput.d.ts +22 -0
  32. package/dist/admin/components/SellerCompanyDataInput.d.ts.map +1 -0
  33. package/dist/admin/components/SellerCompanyDataInput.js +53 -0
  34. package/dist/admin/components/SellerCompanyDataInput.js.map +1 -0
  35. package/dist/admin/components/SettingRowEditor.d.ts +55 -0
  36. package/dist/admin/components/SettingRowEditor.d.ts.map +1 -0
  37. package/dist/admin/components/SettingRowEditor.js +160 -0
  38. package/dist/admin/components/SettingRowEditor.js.map +1 -0
  39. package/dist/admin/index.d.ts +39 -0
  40. package/dist/admin/index.d.ts.map +1 -0
  41. package/dist/admin/index.js +87 -0
  42. package/dist/admin/index.js.map +1 -0
  43. package/dist/admin/pages/CachePage.d.ts +14 -0
  44. package/dist/admin/pages/CachePage.d.ts.map +1 -0
  45. package/dist/admin/pages/CachePage.js +124 -0
  46. package/dist/admin/pages/CachePage.js.map +1 -0
  47. package/dist/admin/pages/GroupsPage.d.ts +17 -0
  48. package/dist/admin/pages/GroupsPage.d.ts.map +1 -0
  49. package/dist/admin/pages/GroupsPage.js +84 -0
  50. package/dist/admin/pages/GroupsPage.js.map +1 -0
  51. package/dist/admin/pages/SettingsPage.d.ts +20 -0
  52. package/dist/admin/pages/SettingsPage.d.ts.map +1 -0
  53. package/dist/admin/pages/SettingsPage.js +453 -0
  54. package/dist/admin/pages/SettingsPage.js.map +1 -0
  55. package/dist/backend/cli/cache-clear.d.ts +23 -0
  56. package/dist/backend/cli/cache-clear.d.ts.map +1 -0
  57. package/dist/backend/cli/cache-clear.js +37 -0
  58. package/dist/backend/cli/cache-clear.js.map +1 -0
  59. package/dist/backend/index.d.ts +100 -0
  60. package/dist/backend/index.d.ts.map +1 -0
  61. package/dist/backend/index.js +125 -0
  62. package/dist/backend/index.js.map +1 -0
  63. package/dist/backend/routes.admin.d.ts +308 -0
  64. package/dist/backend/routes.admin.d.ts.map +1 -0
  65. package/dist/backend/routes.admin.js +188 -0
  66. package/dist/backend/routes.admin.js.map +1 -0
  67. package/dist/backend/routes.cache.d.ts +20 -0
  68. package/dist/backend/routes.cache.d.ts.map +1 -0
  69. package/dist/backend/routes.cache.js +22 -0
  70. package/dist/backend/routes.cache.js.map +1 -0
  71. package/dist/backend/routes.homepage.d.ts +15 -0
  72. package/dist/backend/routes.homepage.d.ts.map +1 -0
  73. package/dist/backend/routes.homepage.js +20 -0
  74. package/dist/backend/routes.homepage.js.map +1 -0
  75. package/dist/backend/routes.product-card-buttons.d.ts +15 -0
  76. package/dist/backend/routes.product-card-buttons.d.ts.map +1 -0
  77. package/dist/backend/routes.product-card-buttons.js +21 -0
  78. package/dist/backend/routes.product-card-buttons.js.map +1 -0
  79. package/dist/backend/routes.speculation-rules.d.ts +16 -0
  80. package/dist/backend/routes.speculation-rules.d.ts.map +1 -0
  81. package/dist/backend/routes.speculation-rules.js +21 -0
  82. package/dist/backend/routes.speculation-rules.js.map +1 -0
  83. package/dist/backend/routes.storefront.d.ts +15 -0
  84. package/dist/backend/routes.storefront.d.ts.map +1 -0
  85. package/dist/backend/routes.storefront.js +20 -0
  86. package/dist/backend/routes.storefront.js.map +1 -0
  87. package/dist/backend/services/cache-admin.service.d.ts +83 -0
  88. package/dist/backend/services/cache-admin.service.d.ts.map +1 -0
  89. package/dist/backend/services/cache-admin.service.js +148 -0
  90. package/dist/backend/services/cache-admin.service.js.map +1 -0
  91. package/dist/backend/services/homepage-resolver.d.ts +25 -0
  92. package/dist/backend/services/homepage-resolver.d.ts.map +1 -0
  93. package/dist/backend/services/homepage-resolver.js +31 -0
  94. package/dist/backend/services/homepage-resolver.js.map +1 -0
  95. package/dist/backend/services/product-card-buttons-resolver.d.ts +25 -0
  96. package/dist/backend/services/product-card-buttons-resolver.d.ts.map +1 -0
  97. package/dist/backend/services/product-card-buttons-resolver.js +37 -0
  98. package/dist/backend/services/product-card-buttons-resolver.js.map +1 -0
  99. package/dist/backend/services/registered-settings-manifests.d.ts +45 -0
  100. package/dist/backend/services/registered-settings-manifests.d.ts.map +1 -0
  101. package/dist/backend/services/registered-settings-manifests.js +55 -0
  102. package/dist/backend/services/registered-settings-manifests.js.map +1 -0
  103. package/dist/backend/services/setting-write-validators.d.ts +43 -0
  104. package/dist/backend/services/setting-write-validators.d.ts.map +1 -0
  105. package/dist/backend/services/setting-write-validators.js +43 -0
  106. package/dist/backend/services/setting-write-validators.js.map +1 -0
  107. package/dist/backend/services/settings-admin.service.d.ts +206 -0
  108. package/dist/backend/services/settings-admin.service.d.ts.map +1 -0
  109. package/dist/backend/services/settings-admin.service.js +642 -0
  110. package/dist/backend/services/settings-admin.service.js.map +1 -0
  111. package/dist/backend/services/shop-info-resolver.d.ts +15 -0
  112. package/dist/backend/services/shop-info-resolver.d.ts.map +1 -0
  113. package/dist/backend/services/shop-info-resolver.js +44 -0
  114. package/dist/backend/services/shop-info-resolver.js.map +1 -0
  115. package/dist/backend/services/speculation-rules-resolver.d.ts +28 -0
  116. package/dist/backend/services/speculation-rules-resolver.d.ts.map +1 -0
  117. package/dist/backend/services/speculation-rules-resolver.js +39 -0
  118. package/dist/backend/services/speculation-rules-resolver.js.map +1 -0
  119. package/dist/manifest.d.ts +194 -0
  120. package/dist/manifest.d.ts.map +1 -0
  121. package/dist/manifest.js +379 -0
  122. package/dist/manifest.js.map +1 -0
  123. package/docs/settings/index.md +171 -0
  124. package/i18n/en.json +167 -0
  125. package/i18n/pl.json +167 -0
  126. package/package.json +96 -0
  127. package/tailwind.css +14 -0
package/i18n/en.json ADDED
@@ -0,0 +1,167 @@
1
+ {
2
+ "cache.page.title": "Clear cache",
3
+ "cache.page.description": "Flush cached data so freshly-published content and changed settings appear immediately, without waiting for cache expiry.",
4
+ "cache.loading": "Loading cache namespaces…",
5
+ "cache.selectAll": "Select all",
6
+ "cache.clearSelected": "Clear selected",
7
+ "cache.clearAll": "Clear all caches",
8
+ "cache.refresh": "Refresh",
9
+ "cache.cleared": "Cache cleared — {count} key(s) removed.",
10
+ "cache.disabled": "No Redis cache is configured, so clearing has no effect in this environment.",
11
+ "cache.error.load": "Failed to load cache namespaces.",
12
+ "cache.error.clear": "Failed to clear the cache.",
13
+ "cache.i18n.title": "Reload translations",
14
+ "cache.i18n.description": "Re-read translation files from disk so edited admin translations appear without restarting the backend. The storefront ships its strings compiled in, so it still needs a redeploy.",
15
+ "cache.i18n.button": "Reload translations",
16
+ "cache.i18n.done": "Translations reloaded ({installed} module(s)). Refreshing…",
17
+ "cache.i18n.error": "Failed to reload translations.",
18
+ "search.reindex.title": "Rebuild search index",
19
+ "search.reindex.description": "Reindex every sales-channel Meilisearch index now so catalogue changes appear in search immediately. The platform also rebuilds the index automatically on the interval configured in Search settings.",
20
+ "search.reindex.button": "Reindex products",
21
+ "search.reindex.done": "Search index rebuilt — {channels} channel(s), {documents} product(s) indexed.",
22
+ "search.reindex.error": "Failed to rebuild the search index.",
23
+ "cache.namespace.settings.label": "Settings",
24
+ "cache.namespace.settings.description": "Resolved platform / per-channel setting values.",
25
+ "cache.namespace.sales_channels.label": "Sales channels",
26
+ "cache.namespace.sales_channels.description": "Resolved sales-channel configuration.",
27
+ "cache.namespace.blog.label": "Blog",
28
+ "cache.namespace.blog.description": "Storefront blog index, posts, categories and tag pages.",
29
+ "cache.namespace.cms.label": "CMS",
30
+ "cache.namespace.cms.description": "Storefront CMS pages, blocks and hook content.",
31
+ "cache.namespace.megamenu.label": "Mega menu",
32
+ "cache.namespace.megamenu.description": "Resolved storefront mega-menu trees.",
33
+ "cache.namespace.dictionaries.label": "Dictionaries",
34
+ "cache.namespace.dictionaries.description": "Resolved dictionary registries and entries (countries, etc.).",
35
+ "cache.namespace.carts.label": "Cart pricing",
36
+ "cache.namespace.carts.description": "Cached cart re-pricing snapshots.",
37
+ "page.title": "Settings",
38
+ "page.description": "Per-sales-channel configuration grouped by section. Each setting is declared by a backend module; values can be applied to all channels or to a chosen subset.",
39
+ "groups.page.title": "Setting groups",
40
+ "groups.page.description": "Manage the sections in which settings are presented. The system-protected `general` group cannot be deleted.",
41
+ "groups.loading": "Loading groups…",
42
+ "groups.newGroup.title": "New group",
43
+ "groups.newGroup.codePlaceholder": "code (snake_case)",
44
+ "groups.newGroup.namePlaceholder": "Display name",
45
+ "groups.newGroup.create": "Create",
46
+ "groups.column.code": "Code",
47
+ "groups.column.name": "Name",
48
+ "groups.column.ownerModule": "Owner module",
49
+ "groups.column.settings": "Settings",
50
+ "groups.column.actions": "Actions",
51
+ "groups.action.rename": "Rename",
52
+ "groups.action.delete": "Delete",
53
+ "quoteRequestsTab.title": "Quote Requests",
54
+ "quoteRequestsTab.saved": "Saved.",
55
+ "quoteRequestsTab.save": "Save",
56
+ "quoteRequestsTab.error.load": "Failed to load settings.",
57
+ "quoteRequestsTab.error.save": "Save failed.",
58
+ "quoteRequestsTab.error.invalidExpiry": "Expiry must be an integer ≥ 0.",
59
+ "quoteRequestsTab.expiry.label": "Auto-expire pending after (days)",
60
+ "quoteRequestsTab.expiry.help": "0 disables auto-expiry entirely. Pending and Created from admin Quote Requests older than this threshold flip to Expired automatically.",
61
+ "quoteRequestsTab.showOnCards": "Show \"Add to quote\" button on storefront product cards",
62
+ "quoteRequestsTab.showOnPdp": "Show \"Add to quote\" button on storefront product detail pages",
63
+ "table.column.code": "Code",
64
+ "table.column.name": "Name",
65
+ "table.column.type": "Type",
66
+ "table.column.value": "Value",
67
+ "table.column.scope": "Scope",
68
+ "table.column.description": "Description",
69
+ "actions.copyCode.label": "Copy code",
70
+ "actions.copyCode.copied": "Copied!",
71
+ "search.placeholder": "Search by name, code or description…",
72
+ "search.noResults": "No settings match your search.",
73
+ "search.shortcut": "Ctrl+Shift+K",
74
+ "groups.expandAll": "Expand all",
75
+ "groups.collapseAll": "Collapse all",
76
+ "groups.empty": "No settings registered in this group.",
77
+ "actions.edit": "Edit",
78
+ "actions.resetToDefault": "Reset to default for all channels",
79
+ "actions.applyToAll": "Apply to all channels",
80
+ "actions.applyToSubset": "Apply to selected channels",
81
+ "actions.saveChanges": "Save {count} change(s)",
82
+ "actions.saveAll": "Save changes",
83
+ "actions.discard": "Discard",
84
+ "actions.reset": "Reset",
85
+ "editor.applyTo.label": "Apply to",
86
+ "editor.applyTo.allInScope": "All channels in scope ({count})",
87
+ "editor.applyTo.subset": "Selected channels",
88
+ "editor.applyTo.subsetEmpty": "Pick one or more sales channels.",
89
+ "editor.value": "Value",
90
+ "editor.dirty": "Unsaved",
91
+ "editor.perChannelOverrides": "{count} per-channel override(s)",
92
+ "editor.defaultPrefix": "Default:",
93
+ "editor.globalPrefix": "Global:",
94
+ "editor.savedNotice": "Saved {count} setting(s).",
95
+ "context.label": "Editing for",
96
+ "context.allChannels": "All channels (default)",
97
+ "context.channelOverride": "Channel: {code}",
98
+ "context.discardOnSwitch": "You have unsaved changes for the current context. Discard them and switch?",
99
+ "context.empty": "No settings apply to this sales channel.",
100
+ "context.outOfScope": "Out of scope for this channel.",
101
+ "context.usingDefault": "Using default",
102
+ "context.channelOverridePresent": "Channel override",
103
+ "context.globalOverrideSet": "Global value set",
104
+ "context.inheritsGlobal": "Inherits global value",
105
+ "editor.empty": "Select a setting from the left to edit its value.",
106
+ "editor.default": "Default",
107
+ "editor.module": "Module",
108
+ "editor.perChannelValues": "Per-channel values",
109
+ "validation.atLeastOneChannel": "Choose at least one sales channel.",
110
+ "conflict.title": "This setting was changed by another administrator.",
111
+ "conflict.description": "Refresh the page and reapply your edit, then save again.",
112
+ "state.loading": "Loading settings…",
113
+ "state.empty": "No settings registered yet.",
114
+ "actions.openSettings.label": "Open platform settings",
115
+ "actions.openSettings.description": "Configure platform settings and preferences",
116
+ "errors.SETTING_NOT_REGISTERED": "Setting is not registered.",
117
+ "errors.SETTING_OUT_OF_SCOPE_FOR_CHANNEL": "Setting is out of scope for this channel.",
118
+ "errors.SETTING_VALUE_SHAPE_MISMATCH": "Setting value does not match the required shape.",
119
+ "errors.SETTING_EMPTY_SUBSET": "Choose at least one sales channel.",
120
+ "errors.SETTING_GROUP_PROTECTED": "Setting group is protected.",
121
+ "errors.SETTING_GROUP_NOT_FOUND": "Setting group not found.",
122
+ "errors.SETTING_CODE_CONFLICT": "Setting code already exists.",
123
+ "errors.SETTING_GROUP_CODE_CONFLICT": "Setting group code already exists.",
124
+ "errors.SETTING_BREAKING_CHANGE_REJECTED": "Breaking setting change was rejected.",
125
+ "auditLog.setting.global_value_set": "Global setting value set",
126
+ "auditLog.setting.value_set": "Setting value set",
127
+ "auditLog.setting.value_reset": "Setting value reset",
128
+ "auditLog.setting.global_value_reset": "Global setting value reset",
129
+ "auditLog.setting_group.created": "Setting group created",
130
+ "auditLog.setting_group.renamed": "Setting group renamed",
131
+ "auditLog.setting_group.rescoped": "Setting group scope changed",
132
+ "auditLog.setting_group.deleted": "Setting group deleted",
133
+ "editor.placeholder.json": "{\"key\": \"value\"}",
134
+ "editor.placeholder.stringList": "comma,separated,values",
135
+ "editor.sellerCompanyData.legalName": "Legal name",
136
+ "editor.sellerCompanyData.addressLine1": "Address line 1",
137
+ "editor.sellerCompanyData.addressLine2": "Address line 2",
138
+ "editor.sellerCompanyData.postalCode": "Postal code",
139
+ "editor.sellerCompanyData.city": "City",
140
+ "editor.sellerCompanyData.country": "Country (ISO code)",
141
+ "editor.sellerCompanyData.taxId": "Tax ID",
142
+ "editor.sellerCompanyData.bankName": "Bank name",
143
+ "editor.sellerCompanyData.bankAccount": "Bank account",
144
+ "editor.sellerCompanyData.swift": "SWIFT / BIC",
145
+ "editor.sellerCompanyData.email": "Email",
146
+ "editor.sellerCompanyData.phone": "Phone",
147
+ "editor.image.none": "No image set.",
148
+ "editor.image.upload": "Upload image",
149
+ "editor.image.remove": "Remove",
150
+ "editor.image.toggleUrl": "Or enter an image URL",
151
+ "editor.image.urlPlaceholder": "https://example.com/image.png",
152
+ "editor.placeholder.secretSet": "Value is set — enter a new value to replace it",
153
+ "editor.placeholder.secretUnset": "Enter the secret value",
154
+ "editor.secretIsSet": "Secret value is set (write-only, never displayed)",
155
+ "editor.secretNotSet": "No secret value set",
156
+ "activation.title": "Module",
157
+ "activation.on": "On",
158
+ "activation.off": "Switched off",
159
+ "activation.managedOnPlatformScreen": "This is the module's on/off switch. It is managed on the Modules screen, together with what this deployment offers.",
160
+ "activation.openPlatformScreen": "Open Modules",
161
+ "editor.readOnly": "Read-only",
162
+ "editor.readOnlyReason": "The module that owns this setting is switched off. Its stored value is preserved and becomes editable again when the module is switched on.",
163
+ "nav.settings.label": "Settings",
164
+ "nav.settingGroups.label": "Setting groups",
165
+ "nav.cache.label": "Clear cache",
166
+ "editor.credentialRef.preview": "Preview"
167
+ }
package/i18n/pl.json ADDED
@@ -0,0 +1,167 @@
1
+ {
2
+ "cache.page.title": "Czyszczenie cache",
3
+ "cache.page.description": "Wyczyść dane z pamięci podręcznej, aby świeżo opublikowane treści i zmienione ustawienia pojawiły się natychmiast, bez oczekiwania na wygaśnięcie cache.",
4
+ "cache.loading": "Wczytywanie obszarów cache…",
5
+ "cache.selectAll": "Zaznacz wszystkie",
6
+ "cache.clearSelected": "Wyczyść zaznaczone",
7
+ "cache.clearAll": "Wyczyść cały cache",
8
+ "cache.refresh": "Odśwież",
9
+ "cache.cleared": "Cache wyczyszczony — usunięto {count} klucz(y).",
10
+ "cache.disabled": "Brak skonfigurowanego cache Redis, więc czyszczenie nie ma efektu w tym środowisku.",
11
+ "cache.error.load": "Nie udało się wczytać obszarów cache.",
12
+ "cache.error.clear": "Nie udało się wyczyścić cache.",
13
+ "cache.i18n.title": "Przeładuj tłumaczenia",
14
+ "cache.i18n.description": "Ponownie wczytaj pliki tłumaczeń z dysku, aby zmienione tłumaczenia panelu pojawiły się bez restartu backendu. Storefront ma tłumaczenia wkompilowane, więc nadal wymaga ponownego wdrożenia.",
15
+ "cache.i18n.button": "Przeładuj tłumaczenia",
16
+ "cache.i18n.done": "Tłumaczenia przeładowane ({installed} moduł(ów)). Odświeżanie…",
17
+ "cache.i18n.error": "Nie udało się przeładować tłumaczeń.",
18
+ "search.reindex.title": "Przebuduj indeks wyszukiwarki",
19
+ "search.reindex.description": "Zreindeksuj teraz indeksy Meilisearch dla wszystkich kanałów sprzedaży, aby zmiany w katalogu były natychmiast widoczne w wyszukiwarce. Platforma przebudowuje indeks również automatycznie, w odstępie skonfigurowanym w ustawieniach Wyszukiwarki.",
20
+ "search.reindex.button": "Reindeksuj produkty",
21
+ "search.reindex.done": "Indeks wyszukiwarki przebudowany — {channels} kanał(ów), zaindeksowano {documents} produkt(ów).",
22
+ "search.reindex.error": "Nie udało się przebudować indeksu wyszukiwarki.",
23
+ "cache.namespace.settings.label": "Ustawienia",
24
+ "cache.namespace.settings.description": "Rozwiązane wartości ustawień platformy / per kanał.",
25
+ "cache.namespace.sales_channels.label": "Kanały sprzedaży",
26
+ "cache.namespace.sales_channels.description": "Rozwiązana konfiguracja kanałów sprzedaży.",
27
+ "cache.namespace.blog.label": "Blog",
28
+ "cache.namespace.blog.description": "Strona bloga, wpisy, kategorie i strony tagów w Storefront.",
29
+ "cache.namespace.cms.label": "CMS",
30
+ "cache.namespace.cms.description": "Strony CMS, bloki i treści hooków w Storefront.",
31
+ "cache.namespace.megamenu.label": "Mega menu",
32
+ "cache.namespace.megamenu.description": "Rozwiązane drzewa mega menu Storefront.",
33
+ "cache.namespace.dictionaries.label": "Słowniki",
34
+ "cache.namespace.dictionaries.description": "Rozwiązane rejestry i wpisy słowników (kraje itp.).",
35
+ "cache.namespace.carts.label": "Wycena koszyka",
36
+ "cache.namespace.carts.description": "Zbuforowane migawki przeliczeń koszyka.",
37
+ "page.title": "Ustawienia",
38
+ "page.description": "Konfiguracja per kanał sprzedaży, pogrupowana w sekcje. Każde ustawienie jest deklarowane przez moduł backendu; wartości można stosować do wszystkich kanałów lub do wybranego podzbioru.",
39
+ "groups.page.title": "Grupy ustawień",
40
+ "groups.page.description": "Zarządzaj sekcjami, w których prezentowane są ustawienia. Systemowej grupy `general` nie można usunąć.",
41
+ "groups.loading": "Wczytywanie grup…",
42
+ "groups.newGroup.title": "Nowa grupa",
43
+ "groups.newGroup.codePlaceholder": "kod (snake_case)",
44
+ "groups.newGroup.namePlaceholder": "Nazwa wyświetlana",
45
+ "groups.newGroup.create": "Utwórz",
46
+ "groups.column.code": "Kod",
47
+ "groups.column.name": "Nazwa",
48
+ "groups.column.ownerModule": "Moduł właścicielski",
49
+ "groups.column.settings": "Ustawienia",
50
+ "groups.column.actions": "Akcje",
51
+ "groups.action.rename": "Zmień nazwę",
52
+ "groups.action.delete": "Usuń",
53
+ "quoteRequestsTab.title": "Zapytania ofertowe",
54
+ "quoteRequestsTab.saved": "Zapisano.",
55
+ "quoteRequestsTab.save": "Zapisz",
56
+ "quoteRequestsTab.error.load": "Nie udało się wczytać ustawień.",
57
+ "quoteRequestsTab.error.save": "Zapis nie powiódł się.",
58
+ "quoteRequestsTab.error.invalidExpiry": "Liczba dni do wygaśnięcia musi być liczbą całkowitą ≥ 0.",
59
+ "quoteRequestsTab.expiry.label": "Automatyczne wygaszenie oczekujących po (dni)",
60
+ "quoteRequestsTab.expiry.help": "0 całkowicie wyłącza auto-wygaszanie. Zapytania ze statusem „Oczekujące” lub „Utworzone z poziomu admina”, starsze niż ta wartość, są automatycznie przenoszone do „Wygasłe”.",
61
+ "quoteRequestsTab.showOnCards": "Pokaż przycisk „Dodaj do zapytania” na kafelkach produktów w sklepie",
62
+ "quoteRequestsTab.showOnPdp": "Pokaż przycisk „Dodaj do zapytania” na stronie produktu w sklepie",
63
+ "table.column.code": "Kod",
64
+ "table.column.name": "Nazwa",
65
+ "table.column.type": "Typ",
66
+ "table.column.value": "Wartość",
67
+ "table.column.scope": "Zakres",
68
+ "table.column.description": "Opis",
69
+ "actions.copyCode.label": "Kopiuj kod",
70
+ "actions.copyCode.copied": "Skopiowano!",
71
+ "search.placeholder": "Szukaj po nazwie, kodzie lub opisie…",
72
+ "search.noResults": "Żadne ustawienie nie pasuje do wyszukiwania.",
73
+ "search.shortcut": "Ctrl+Shift+K",
74
+ "groups.expandAll": "Rozwiń wszystkie",
75
+ "groups.collapseAll": "Zwiń wszystkie",
76
+ "groups.empty": "Brak zarejestrowanych ustawień w tej grupie.",
77
+ "actions.edit": "Edytuj",
78
+ "actions.resetToDefault": "Przywróć domyślne dla wszystkich kanałów",
79
+ "actions.applyToAll": "Zastosuj do wszystkich kanałów",
80
+ "actions.applyToSubset": "Zastosuj do wybranych kanałów",
81
+ "actions.saveChanges": "Zapisz {count} zmian(y)",
82
+ "actions.saveAll": "Zapisz zmiany",
83
+ "actions.discard": "Odrzuć",
84
+ "actions.reset": "Resetuj",
85
+ "editor.applyTo.label": "Zastosuj do",
86
+ "editor.applyTo.allInScope": "Wszystkie kanały w zakresie ({count})",
87
+ "editor.applyTo.subset": "Wybrane kanały",
88
+ "editor.applyTo.subsetEmpty": "Wybierz co najmniej jeden kanał sprzedaży.",
89
+ "editor.value": "Wartość",
90
+ "editor.dirty": "Niezapisane",
91
+ "editor.perChannelOverrides": "{count} nadpisań per kanał",
92
+ "editor.defaultPrefix": "Domyślnie:",
93
+ "editor.globalPrefix": "Globalnie:",
94
+ "editor.savedNotice": "Zapisano ustawień: {count}.",
95
+ "context.label": "Edycja dla",
96
+ "context.allChannels": "Wszystkie kanały (domyślnie)",
97
+ "context.channelOverride": "Kanał: {code}",
98
+ "context.discardOnSwitch": "Masz niezapisane zmiany w bieżącym kontekście. Odrzucić je i przełączyć?",
99
+ "context.empty": "Żadne ustawienie nie dotyczy tego kanału sprzedaży.",
100
+ "context.outOfScope": "Poza zakresem dla tego kanału.",
101
+ "context.usingDefault": "Wartość domyślna",
102
+ "context.channelOverridePresent": "Nadpisanie kanału",
103
+ "context.globalOverrideSet": "Ustawiona wartość globalna",
104
+ "context.inheritsGlobal": "Dziedziczy wartość globalną",
105
+ "editor.empty": "Wybierz ustawienie z listy po lewej, aby edytować wartość.",
106
+ "editor.default": "Domyślnie",
107
+ "editor.module": "Moduł",
108
+ "editor.perChannelValues": "Wartości per kanał",
109
+ "validation.atLeastOneChannel": "Wybierz co najmniej jeden kanał sprzedaży.",
110
+ "conflict.title": "To ustawienie zostało zmienione przez innego administratora.",
111
+ "conflict.description": "Odśwież stronę, ponownie wprowadź zmianę i zapisz.",
112
+ "state.loading": "Wczytywanie ustawień…",
113
+ "state.empty": "Brak zarejestrowanych ustawień.",
114
+ "actions.openSettings.label": "Otwórz ustawienia platformy",
115
+ "actions.openSettings.description": "Skonfiguruj ustawienia i preferencje platformy",
116
+ "errors.SETTING_NOT_REGISTERED": "Ustawienie nie jest zarejestrowane.",
117
+ "errors.SETTING_OUT_OF_SCOPE_FOR_CHANNEL": "Ustawienie jest poza zakresem tego kanału.",
118
+ "errors.SETTING_VALUE_SHAPE_MISMATCH": "Wartość ustawienia nie ma wymaganego formatu.",
119
+ "errors.SETTING_EMPTY_SUBSET": "Wybierz co najmniej jeden kanał sprzedaży.",
120
+ "errors.SETTING_GROUP_PROTECTED": "Grupa ustawień jest chroniona.",
121
+ "errors.SETTING_GROUP_NOT_FOUND": "Nie znaleziono grupy ustawień.",
122
+ "errors.SETTING_CODE_CONFLICT": "Kod ustawienia już istnieje.",
123
+ "errors.SETTING_GROUP_CODE_CONFLICT": "Kod grupy ustawień już istnieje.",
124
+ "errors.SETTING_BREAKING_CHANGE_REJECTED": "Odrzucono niezgodną zmianę ustawienia.",
125
+ "auditLog.setting.global_value_set": "Ustawiono globalną wartość ustawienia",
126
+ "auditLog.setting.value_set": "Ustawiono wartość ustawienia",
127
+ "auditLog.setting.value_reset": "Zresetowano wartość ustawienia",
128
+ "auditLog.setting.global_value_reset": "Zresetowano globalną wartość ustawienia",
129
+ "auditLog.setting_group.created": "Utworzono grupę ustawień",
130
+ "auditLog.setting_group.renamed": "Zmieniono nazwę grupy ustawień",
131
+ "auditLog.setting_group.rescoped": "Zmieniono zakres grupy ustawień",
132
+ "auditLog.setting_group.deleted": "Usunięto grupę ustawień",
133
+ "editor.placeholder.json": "{\"klucz\": \"wartość\"}",
134
+ "editor.placeholder.stringList": "wartość1,wartość2,wartość3",
135
+ "editor.sellerCompanyData.legalName": "Nazwa firmy",
136
+ "editor.sellerCompanyData.addressLine1": "Adres, linia 1",
137
+ "editor.sellerCompanyData.addressLine2": "Adres, linia 2",
138
+ "editor.sellerCompanyData.postalCode": "Kod pocztowy",
139
+ "editor.sellerCompanyData.city": "Miasto",
140
+ "editor.sellerCompanyData.country": "Kraj (kod ISO)",
141
+ "editor.sellerCompanyData.taxId": "NIP",
142
+ "editor.sellerCompanyData.bankName": "Nazwa banku",
143
+ "editor.sellerCompanyData.bankAccount": "Numer konta",
144
+ "editor.sellerCompanyData.swift": "SWIFT / BIC",
145
+ "editor.sellerCompanyData.email": "E-mail",
146
+ "editor.sellerCompanyData.phone": "Telefon",
147
+ "editor.image.none": "Nie ustawiono obrazka.",
148
+ "editor.image.upload": "Prześlij obrazek",
149
+ "editor.image.remove": "Usuń",
150
+ "editor.image.toggleUrl": "Lub podaj adres URL obrazka",
151
+ "editor.image.urlPlaceholder": "https://example.com/obrazek.png",
152
+ "editor.placeholder.secretSet": "Wartość jest ustawiona — wpisz nową, aby ją zastąpić",
153
+ "editor.placeholder.secretUnset": "Wpisz wartość sekretu",
154
+ "editor.secretIsSet": "Sekret jest ustawiony (tylko do zapisu, nigdy nie jest wyświetlany)",
155
+ "editor.secretNotSet": "Sekret nie jest ustawiony",
156
+ "activation.title": "Moduł",
157
+ "activation.on": "Włączony",
158
+ "activation.off": "Wyłączony",
159
+ "activation.managedOnPlatformScreen": "To jest przełącznik włączania modułu. Zarządza się nim na ekranie Moduły, razem z tym, co udostępnia ta instalacja.",
160
+ "activation.openPlatformScreen": "Otwórz Moduły",
161
+ "editor.readOnly": "Tylko do odczytu",
162
+ "editor.readOnlyReason": "Moduł, do którego należy to ustawienie, jest wyłączony. Zapisana wartość jest zachowana i będzie ponownie edytowalna po włączeniu modułu.",
163
+ "nav.settings.label": "Ustawienia",
164
+ "nav.settingGroups.label": "Grupy ustawień",
165
+ "nav.cache.label": "Czyszczenie cache",
166
+ "editor.credentialRef.preview": "Podgląd"
167
+ }
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@endora-commerce/mod-settings",
3
+ "version": "0.100.0",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "description": "Per-module setting registry, admin UI, and value resolver.",
7
+ "license": "MIT",
8
+ "endora": {
9
+ "type": "module",
10
+ "id": "settings"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "git+https://github.com/endora-commerce/endora-commerce.git",
15
+ "directory": "packages/modules/settings"
16
+ },
17
+ "publishConfig": {
18
+ "access": "public"
19
+ },
20
+ "exports": {
21
+ ".": {
22
+ "types": "./dist/manifest.d.ts",
23
+ "default": "./dist/manifest.js"
24
+ },
25
+ "./backend": {
26
+ "types": "./dist/backend/index.d.ts",
27
+ "default": "./dist/backend/index.js"
28
+ },
29
+ "./admin": {
30
+ "types": "./dist/admin/index.d.ts",
31
+ "default": "./dist/admin/index.js"
32
+ },
33
+ "./tailwind.css": "./tailwind.css",
34
+ "./package.json": "./package.json"
35
+ },
36
+ "files": [
37
+ "dist",
38
+ "i18n",
39
+ "docs",
40
+ "tailwind.css"
41
+ ],
42
+ "engines": {
43
+ "node": ">=22.18.0"
44
+ },
45
+ "peerDependencies": {
46
+ "@fastify/rate-limit": "^10",
47
+ "@mikro-orm/postgresql": "^6",
48
+ "fastify": "^5",
49
+ "ioredis": "^5",
50
+ "lucide-react": "^1",
51
+ "react": "^19",
52
+ "react-router-dom": "^7",
53
+ "@endora-commerce/admin-kit": "0.100.0",
54
+ "@endora-commerce/contracts": "0.100.0",
55
+ "@endora-commerce/mod-credentials": "0.100.0",
56
+ "@endora-commerce/platform": "0.100.0"
57
+ },
58
+ "peerDependenciesMeta": {
59
+ "@endora-commerce/admin-kit": {
60
+ "optional": true
61
+ },
62
+ "@endora-commerce/mod-credentials": {
63
+ "optional": true
64
+ },
65
+ "lucide-react": {
66
+ "optional": true
67
+ },
68
+ "react": {
69
+ "optional": true
70
+ },
71
+ "react-router-dom": {
72
+ "optional": true
73
+ }
74
+ },
75
+ "devDependencies": {
76
+ "@fastify/rate-limit": "^10.3.0",
77
+ "@mikro-orm/postgresql": "^6.6.13",
78
+ "@types/node": "^22.9.0",
79
+ "@types/react": "^19.2.14",
80
+ "fastify": "^5.12.5",
81
+ "ioredis": "^5.10.1",
82
+ "lucide-react": "^1.11.0",
83
+ "react": "^19.2.5",
84
+ "react-router-dom": "^7.18.2",
85
+ "typescript": "^5.9.3",
86
+ "@endora-commerce/admin-kit": "0.100.0",
87
+ "@endora-commerce/mod-credentials": "0.100.0",
88
+ "@endora-commerce/contracts": "0.100.0",
89
+ "@endora-commerce/platform": "0.100.0"
90
+ },
91
+ "scripts": {
92
+ "build": "tsc -p tsconfig.build.json && tsc -p tsconfig.ui.json",
93
+ "typecheck": "tsc -p tsconfig.json && tsc -p tsconfig.ui.json --noEmit",
94
+ "lint": "eslint src"
95
+ }
96
+ }
package/tailwind.css ADDED
@@ -0,0 +1,14 @@
1
+ /* @endora-commerce/mod-settings — AUTO-GENERATED by `pnpm --filter backend run manifests:generate`.
2
+ *
3
+ * The `@source` directives this package asks its host to scan
4
+ * (`specs/110-instance-repository/contracts/admin-stylesheet-composition.md` R1).
5
+ * They resolve relative to **this file**, so they hold wherever the package is
6
+ * installed — a workspace link here, `node_modules` in a client's instance.
7
+ *
8
+ * The `dist` line is what a published tarball ships and is what an instance
9
+ * scans; the `src` line is inert there and is what keeps `pnpm --filter admin
10
+ * run dev` reading source in this repository. Do not edit: run
11
+ * `pnpm --filter backend run manifests:generate`.
12
+ */
13
+ @source "./dist/admin";
14
+ @source "./src/admin";