@spaceinvoices/react-ui 0.4.1 → 0.4.3

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 (245) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/registry.json +25 -0
  4. package/src/components/advance-invoices/advance-invoices.hooks.ts +32 -2
  5. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +109 -4
  6. package/src/components/advance-invoices/create/locales/de.ts +2 -0
  7. package/src/components/advance-invoices/create/locales/es.ts +2 -0
  8. package/src/components/advance-invoices/create/locales/fr.ts +2 -0
  9. package/src/components/advance-invoices/create/locales/hr.ts +2 -0
  10. package/src/components/advance-invoices/create/locales/it.ts +2 -0
  11. package/src/components/advance-invoices/create/locales/nl.ts +2 -0
  12. package/src/components/advance-invoices/create/locales/pl.ts +2 -0
  13. package/src/components/advance-invoices/create/locales/pt.ts +2 -0
  14. package/src/components/advance-invoices/create/locales/sl.ts +2 -0
  15. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +17 -0
  16. package/src/components/advance-invoices/list/list-row-actions.tsx +3 -6
  17. package/src/components/advance-invoices/list/list-table.tsx +105 -2
  18. package/src/components/advance-invoices/list/locales/de.ts +4 -0
  19. package/src/components/advance-invoices/list/locales/en.ts +4 -0
  20. package/src/components/advance-invoices/list/locales/es.ts +4 -0
  21. package/src/components/advance-invoices/list/locales/fr.ts +4 -0
  22. package/src/components/advance-invoices/list/locales/hr.ts +4 -0
  23. package/src/components/advance-invoices/list/locales/it.ts +4 -0
  24. package/src/components/advance-invoices/list/locales/nl.ts +4 -0
  25. package/src/components/advance-invoices/list/locales/pl.ts +4 -0
  26. package/src/components/advance-invoices/list/locales/pt.ts +4 -0
  27. package/src/components/advance-invoices/list/locales/sl.ts +4 -0
  28. package/src/components/credit-notes/create/create-credit-note-form.tsx +177 -6
  29. package/src/components/credit-notes/create/locales/de.ts +8 -0
  30. package/src/components/credit-notes/create/locales/es.ts +8 -0
  31. package/src/components/credit-notes/create/locales/fr.ts +7 -0
  32. package/src/components/credit-notes/create/locales/hr.ts +7 -0
  33. package/src/components/credit-notes/create/locales/it.ts +9 -0
  34. package/src/components/credit-notes/create/locales/nl.ts +7 -0
  35. package/src/components/credit-notes/create/locales/pl.ts +7 -0
  36. package/src/components/credit-notes/create/locales/pt.ts +7 -0
  37. package/src/components/credit-notes/create/locales/sl.ts +7 -0
  38. package/src/components/credit-notes/credit-notes.hooks.ts +30 -0
  39. package/src/components/credit-notes/list/list-row-actions.tsx +3 -6
  40. package/src/components/credit-notes/list/list-table.tsx +79 -8
  41. package/src/components/credit-notes/list/locales/de.ts +4 -1
  42. package/src/components/credit-notes/list/locales/en.ts +5 -0
  43. package/src/components/credit-notes/list/locales/es.ts +4 -1
  44. package/src/components/credit-notes/list/locales/fr.ts +4 -1
  45. package/src/components/credit-notes/list/locales/hr.ts +4 -1
  46. package/src/components/credit-notes/list/locales/it.ts +4 -1
  47. package/src/components/credit-notes/list/locales/nl.ts +4 -1
  48. package/src/components/credit-notes/list/locales/pl.ts +4 -1
  49. package/src/components/credit-notes/list/locales/pt.ts +4 -1
  50. package/src/components/credit-notes/list/locales/sl.ts +4 -1
  51. package/src/components/customers/create-customer-form/create-customer-form.tsx +0 -1
  52. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +2 -2
  53. package/src/components/dashboard/invoice-status-chart/use-invoice-status.ts +3 -3
  54. package/src/components/dashboard/payment-methods-chart/use-payment-methods.ts +1 -1
  55. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +1 -1
  56. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +1 -1
  57. package/src/components/dashboard/shared/use-revenue-data.ts +4 -4
  58. package/src/components/dashboard/shared/use-stats-counts.ts +4 -4
  59. package/src/components/dashboard/shared/use-stats-query.ts +1 -1
  60. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +2 -2
  61. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +1 -1
  62. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +332 -0
  63. package/src/components/delivery-notes/create/locales/de.ts +50 -0
  64. package/src/components/delivery-notes/create/locales/es.ts +49 -0
  65. package/src/components/delivery-notes/create/locales/fr.ts +50 -0
  66. package/src/components/delivery-notes/create/locales/hr.ts +49 -0
  67. package/src/components/delivery-notes/create/locales/it.ts +49 -0
  68. package/src/components/delivery-notes/create/locales/nl.ts +50 -0
  69. package/src/components/delivery-notes/create/locales/pl.ts +49 -0
  70. package/src/components/delivery-notes/create/locales/pt.ts +50 -0
  71. package/src/components/delivery-notes/create/locales/sl.ts +49 -0
  72. package/src/components/delivery-notes/create/prepare-delivery-note-submission.ts +38 -0
  73. package/src/components/delivery-notes/create/use-delivery-note-customer-form.ts +1 -0
  74. package/src/components/delivery-notes/delivery-notes.hooks.ts +15 -0
  75. package/src/components/delivery-notes/list/index.ts +3 -0
  76. package/src/components/delivery-notes/list/list-row-actions.tsx +103 -0
  77. package/src/components/delivery-notes/list/list-table.tsx +214 -0
  78. package/src/components/delivery-notes/list/locales/de.ts +9 -0
  79. package/src/components/delivery-notes/list/locales/en.ts +11 -0
  80. package/src/components/delivery-notes/list/locales/es.ts +9 -0
  81. package/src/components/delivery-notes/list/locales/fr.ts +9 -0
  82. package/src/components/delivery-notes/list/locales/hr.ts +9 -0
  83. package/src/components/delivery-notes/list/locales/it.ts +9 -0
  84. package/src/components/delivery-notes/list/locales/nl.ts +9 -0
  85. package/src/components/delivery-notes/list/locales/pl.ts +9 -0
  86. package/src/components/delivery-notes/list/locales/pt.ts +9 -0
  87. package/src/components/delivery-notes/list/locales/sl.ts +9 -0
  88. package/src/components/delivery-notes/list/use-delivery-note-download.ts +63 -0
  89. package/src/components/documents/create/document-details-section.tsx +103 -33
  90. package/src/components/documents/create/live-preview.tsx +37 -10
  91. package/src/components/documents/create/mark-as-paid-section.tsx +11 -2
  92. package/src/components/documents/create/prepare-document-submission.ts +1 -1
  93. package/src/components/documents/documents.hooks.ts +2 -1
  94. package/src/components/documents/shared/document-preview-display.tsx +12 -5
  95. package/src/components/documents/types.ts +10 -1
  96. package/src/components/documents/view/document-actions-bar.tsx +30 -0
  97. package/src/components/documents/view/document-details-card.tsx +3 -3
  98. package/src/components/documents/view/document-payments-list.tsx +3 -3
  99. package/src/components/documents/view/document-relations-list.tsx +105 -0
  100. package/src/components/documents/view/locales/de.ts +26 -0
  101. package/src/components/documents/view/locales/es.ts +26 -0
  102. package/src/components/documents/view/locales/fr.ts +26 -0
  103. package/src/components/documents/view/locales/hr.ts +26 -0
  104. package/src/components/documents/view/locales/it.ts +26 -0
  105. package/src/components/documents/view/locales/nl.ts +26 -0
  106. package/src/components/documents/view/locales/pl.ts +26 -0
  107. package/src/components/documents/view/locales/pt.ts +26 -0
  108. package/src/components/documents/view/locales/sl.ts +26 -0
  109. package/src/components/documents/view/use-document-download.ts +5 -3
  110. package/src/components/entities/create-entity-form.tsx +1 -1
  111. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +2 -3
  112. package/src/components/entities/entity-settings-form/locales/es.ts +2 -0
  113. package/src/components/entities/entity-settings-form/locales/fr.ts +2 -0
  114. package/src/components/entities/entity-settings-form/locales/hr.ts +2 -0
  115. package/src/components/entities/entity-settings-form/locales/it.ts +2 -0
  116. package/src/components/entities/entity-settings-form/locales/nl.ts +2 -0
  117. package/src/components/entities/entity-settings-form/locales/pl.ts +2 -0
  118. package/src/components/entities/entity-settings-form/locales/pt.ts +2 -0
  119. package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +109 -0
  120. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +377 -35
  121. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +106 -20
  122. package/src/components/entities/fina-settings-form/index.ts +1 -0
  123. package/src/components/entities/fina-settings-form/locales/de.ts +54 -34
  124. package/src/components/entities/fina-settings-form/locales/en.ts +51 -34
  125. package/src/components/entities/fina-settings-form/locales/es.ts +50 -34
  126. package/src/components/entities/fina-settings-form/locales/fr.ts +50 -34
  127. package/src/components/entities/fina-settings-form/locales/hr.ts +50 -34
  128. package/src/components/entities/fina-settings-form/locales/it.ts +50 -34
  129. package/src/components/entities/fina-settings-form/locales/nl.ts +50 -34
  130. package/src/components/entities/fina-settings-form/locales/pl.ts +50 -34
  131. package/src/components/entities/fina-settings-form/locales/pt.ts +50 -34
  132. package/src/components/entities/fina-settings-form/locales/sl.ts +50 -34
  133. package/src/components/entities/fina-settings-form/sections/certificate-settings-section.tsx +18 -0
  134. package/src/components/entities/fina-settings-form/sections/premises-management-section.tsx +64 -89
  135. package/src/components/entities/fina-settings-form/sections/register-premise-dialog.tsx +51 -323
  136. package/src/components/entities/furs-settings-form/furs-operator-required-dialog.tsx +106 -0
  137. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +33 -10
  138. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +12 -11
  139. package/src/components/entities/furs-settings-form/index.ts +1 -0
  140. package/src/components/entities/furs-settings-form/locales/de.ts +27 -3
  141. package/src/components/entities/furs-settings-form/locales/en.ts +17 -3
  142. package/src/components/entities/furs-settings-form/locales/es.ts +26 -3
  143. package/src/components/entities/furs-settings-form/locales/fr.ts +26 -3
  144. package/src/components/entities/furs-settings-form/locales/hr.ts +26 -3
  145. package/src/components/entities/furs-settings-form/locales/it.ts +26 -3
  146. package/src/components/entities/furs-settings-form/locales/nl.ts +26 -3
  147. package/src/components/entities/furs-settings-form/locales/pl.ts +26 -3
  148. package/src/components/entities/furs-settings-form/locales/pt.ts +26 -3
  149. package/src/components/entities/furs-settings-form/locales/sl.ts +16 -3
  150. package/src/components/entities/furs-settings-form/sections/certificate-settings-section.tsx +22 -0
  151. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +26 -5
  152. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +14 -2
  153. package/src/components/entities/settings/tax-rules-settings-form.tsx +4 -4
  154. package/src/components/estimates/list/list-row-actions.tsx +3 -7
  155. package/src/components/estimates/list/list-table.tsx +35 -2
  156. package/src/components/estimates/list/locales/de.ts +3 -0
  157. package/src/components/estimates/list/locales/en.ts +3 -0
  158. package/src/components/estimates/list/locales/es.ts +3 -0
  159. package/src/components/estimates/list/locales/fr.ts +3 -0
  160. package/src/components/estimates/list/locales/hr.ts +3 -0
  161. package/src/components/estimates/list/locales/it.ts +3 -0
  162. package/src/components/estimates/list/locales/nl.ts +3 -0
  163. package/src/components/estimates/list/locales/pl.ts +3 -0
  164. package/src/components/estimates/list/locales/pt.ts +3 -0
  165. package/src/components/estimates/list/locales/sl.ts +3 -0
  166. package/src/components/export/document-export-form.tsx +34 -34
  167. package/src/components/invoices/create/create-invoice-form.tsx +107 -5
  168. package/src/components/invoices/create/prepare-invoice-submission.ts +17 -0
  169. package/src/components/invoices/invoices-furs.hooks.ts +24 -9
  170. package/src/components/invoices/invoices.hooks.ts +32 -2
  171. package/src/components/invoices/list/list-row-actions.tsx +26 -11
  172. package/src/components/invoices/list/list-table.tsx +121 -5
  173. package/src/components/invoices/list/locales/de.ts +5 -0
  174. package/src/components/invoices/list/locales/en.ts +5 -0
  175. package/src/components/invoices/list/locales/es.ts +5 -0
  176. package/src/components/invoices/list/locales/fr.ts +5 -0
  177. package/src/components/invoices/list/locales/hr.ts +5 -0
  178. package/src/components/invoices/list/locales/it.ts +5 -0
  179. package/src/components/invoices/list/locales/nl.ts +5 -0
  180. package/src/components/invoices/list/locales/pl.ts +5 -0
  181. package/src/components/invoices/list/locales/pt.ts +5 -0
  182. package/src/components/invoices/list/locales/sl.ts +5 -0
  183. package/src/components/invoices/view/fiscalization-status-card.tsx +4 -1
  184. package/src/components/items/item-list-table/item-list-row-actions.tsx +5 -8
  185. package/src/components/items/item-list-table/item-list-row.tsx +5 -3
  186. package/src/components/items/item-list-table/item-list-table.tsx +5 -1
  187. package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +418 -0
  188. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/de.ts +45 -0
  189. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/es.ts +44 -0
  190. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fr.ts +44 -0
  191. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/hr.ts +44 -0
  192. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/it.ts +44 -0
  193. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nl.ts +44 -0
  194. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/pl.ts +44 -0
  195. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/pt.ts +44 -0
  196. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sl.ts +44 -0
  197. package/src/components/recurring-invoices/index.ts +3 -0
  198. package/src/components/recurring-invoices/list/index.ts +2 -0
  199. package/src/components/recurring-invoices/list/list-row-actions.tsx +139 -0
  200. package/src/components/recurring-invoices/list/list-table.tsx +179 -0
  201. package/src/components/recurring-invoices/list/locales/de.ts +27 -0
  202. package/src/components/recurring-invoices/list/locales/en.ts +5 -0
  203. package/src/components/recurring-invoices/list/locales/es.ts +27 -0
  204. package/src/components/recurring-invoices/list/locales/fr.ts +27 -0
  205. package/src/components/recurring-invoices/list/locales/hr.ts +27 -0
  206. package/src/components/recurring-invoices/list/locales/it.ts +27 -0
  207. package/src/components/recurring-invoices/list/locales/nl.ts +27 -0
  208. package/src/components/recurring-invoices/list/locales/pl.ts +27 -0
  209. package/src/components/recurring-invoices/list/locales/pt.ts +27 -0
  210. package/src/components/recurring-invoices/list/locales/sl.ts +27 -0
  211. package/src/components/recurring-invoices/recurring-invoices.hooks.ts +28 -0
  212. package/src/components/table/data-table.tsx +122 -5
  213. package/src/components/table/selection-toolbar.tsx +36 -0
  214. package/src/components/tax-reports/kir-export-form.tsx +75 -55
  215. package/src/components/taxes/tax-list-table/tax-list-row-actions.tsx +3 -6
  216. package/src/components/taxes/tax-list-table/tax-list-row.tsx +3 -2
  217. package/src/components/taxes/tax-list-table/tax-list-table.tsx +5 -1
  218. package/src/components/ui/checkbox.tsx +5 -5
  219. package/src/generate-schemas.ts +45 -18
  220. package/src/generated/schemas/authorizeshopify_body.ts +22 -0
  221. package/src/generated/schemas/creditnote.ts +0 -2
  222. package/src/generated/schemas/deliverynote.ts +134 -0
  223. package/src/generated/schemas/entity.ts +5 -1
  224. package/src/generated/schemas/index.ts +42 -28
  225. package/src/generated/schemas/order.ts +129 -0
  226. package/src/generated/schemas/orderintegration.ts +51 -0
  227. package/src/generated/schemas/payment.ts +24 -2
  228. package/src/generated/schemas/recurringinvoice.ts +61 -0
  229. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +108 -140
  230. package/src/generated/schemas/rendercreditnotepreview_body.ts +109 -141
  231. package/src/generated/schemas/renderdeliverynotepreview_body.ts +185 -0
  232. package/src/generated/schemas/renderestimatepreview_body.ts +79 -82
  233. package/src/generated/schemas/renderinvoicepreview_body.ts +109 -141
  234. package/src/generated/schemas/startpdfexport_body.ts +18 -2
  235. package/src/generated/schemas/userfinasettings.ts +19 -0
  236. package/src/generated/schemas/webhook.ts +54 -0
  237. package/src/hooks/use-duplicate-document.ts +11 -3
  238. package/src/hooks/use-next-document-number.ts +2 -2
  239. package/src/lib/furs-error-utils.ts +36 -0
  240. package/src/lib/schemas/advance-invoice.ts +3 -3
  241. package/src/lib/schemas/credit-note.ts +3 -3
  242. package/src/lib/schemas/estimate.ts +3 -3
  243. package/src/lib/schemas/invoice.ts +3 -3
  244. package/src/providers/sdk-provider.tsx +5 -7
  245. package/src/providers/white-label-provider.tsx +3 -0
@@ -43,7 +43,7 @@ export default {
43
43
  "Tax number of the operator for API key usage (optional)":
44
44
  "Belastingnummer van de operator voor API-sleutelgebruik (optioneel)",
45
45
  "Operator Label": "Operatorlabel",
46
- "Descriptive label for the operator (optional)": "Beschrijvend label voor de operator (optioneel)",
46
+
47
47
  "Digital Certificate": "Digitaal certificaat",
48
48
  "Upload your FURS digital certificate": "Upload uw FURS digitaal certificaat",
49
49
  "Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
@@ -54,6 +54,10 @@ export default {
54
54
  "Ongeldig bestandstype. Upload een .p12 of .pfx certificaatbestand.",
55
55
  "Please select a certificate file and enter the passphrase":
56
56
  "Selecteer een certificaatbestand en voer de wachtwoordzin in",
57
+ "Invalid certificate passphrase. Please check your passphrase and try again.":
58
+ "Ongeldig certificaatwachtwoord. Controleer uw wachtwoord en probeer het opnieuw.",
59
+ "Certificate tax number does not match entity tax number. Please upload a certificate for this entity.":
60
+ "BTW-nummer van certificaat komt niet overeen met BTW-nummer van entiteit. Upload een certificaat voor deze entiteit.",
57
61
  Valid: "Geldig",
58
62
  "Expiring Soon": "Verloopt binnenkort",
59
63
  Expired: "Verlopen",
@@ -177,8 +181,8 @@ export default {
177
181
  "Your personal operator info for FURS invoices": "Uw persoonlijke operatorinformatie voor FURS-facturen",
178
182
  "Save Operator Settings": "Operatorinstellingen opslaan",
179
183
  "Your tax number for FURS fiscalization": "Uw belastingnummer voor FURS-fiscalisatie",
180
- "Your name or identifier for FURS invoices": "Uw naam of identificatie voor FURS-facturen",
181
- "Your Name": "Uw naam",
184
+ "Descriptive label for the operator (e.g. Cashier 1)": "Beschrijvend label voor de operator (bijv. Kassier 1)",
185
+ "e.g. Cashier 1": "bijv. Kassier 1",
182
186
  "Fiscalization Settings": "Fiscalisatie-instellingen",
183
187
  "Advanced Settings": "Geavanceerde instellingen",
184
188
  "API Default Operator": "API-standaardoperator",
@@ -194,4 +198,23 @@ export default {
194
198
  "Standaard operatorinformatie die wordt gebruikt wanneer facturen worden aangemaakt via API zonder ingelogde gebruiker.",
195
199
  "Certificate uploaded successfully": "Certificaat succesvol geüpload",
196
200
  "Loading certificate details...": "Certificaatgegevens worden geladen...",
201
+ // Entity info section
202
+ "Entity Information": "Entity Information",
203
+ "Required company details for FURS fiscalization": "Required company details for FURS fiscalization",
204
+ "Entity Tax Number": "Entity Tax Number",
205
+ "Your company's tax number (must match FURS certificate)": "Your company's tax number (must match FURS certificate)",
206
+ Address: "Address",
207
+ "Post Code": "Post Code",
208
+ "Save Entity Info": "Save Entity Info",
209
+ "Tax number is required for FURS fiscalization": "Tax number is required for FURS fiscalization",
210
+ "Set entity tax number in General Settings first": "Set entity tax number in General Settings first",
211
+ "Set operator tax number and label in General Settings first":
212
+ "Set operator tax number and label in General Settings first",
213
+ "Complete General Settings first": "Complete General Settings first",
214
+ "Operator tax number and label are required for FURS fiscalization":
215
+ "Operator tax number and label are required for FURS fiscalization",
216
+ "FURS Operator Settings Required": "FURS Operator Settings Required",
217
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.":
218
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.",
219
+ "Save & Retry": "Save & Retry",
197
220
  } as const;
@@ -43,7 +43,7 @@ export default {
43
43
  "Tax number of the operator for API key usage (optional)":
44
44
  "Numer podatkowy operatora do użycia z kluczem API (opcjonalnie)",
45
45
  "Operator Label": "Etykieta operatora",
46
- "Descriptive label for the operator (optional)": "Opisowa etykieta operatora (opcjonalnie)",
46
+
47
47
  "Digital Certificate": "Certyfikat cyfrowy",
48
48
  "Upload your FURS digital certificate": "Prześlij swój certyfikat cyfrowy FURS",
49
49
  "Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
@@ -53,6 +53,10 @@ export default {
53
53
  "Invalid file type. Please upload a .p12 or .pfx certificate file.":
54
54
  "Nieprawidłowy typ pliku. Prześlij plik certyfikatu .p12 lub .pfx.",
55
55
  "Please select a certificate file and enter the passphrase": "Wybierz plik certyfikatu i wprowadź hasło",
56
+ "Invalid certificate passphrase. Please check your passphrase and try again.":
57
+ "Nieprawidłowe hasło certyfikatu. Sprawdź hasło i spróbuj ponownie.",
58
+ "Certificate tax number does not match entity tax number. Please upload a certificate for this entity.":
59
+ "Numer podatkowy certyfikatu nie zgadza się z numerem podatkowym podmiotu. Prześlij certifikat dla tego podmiotu.",
56
60
  Valid: "Ważny",
57
61
  "Expiring Soon": "Wkrótce wygasa",
58
62
  Expired: "Wygasł",
@@ -176,8 +180,8 @@ export default {
176
180
  "Your personal operator info for FURS invoices": "Twoje osobiste informacje operatora dla faktur FURS",
177
181
  "Save Operator Settings": "Zapisz ustawienia operatora",
178
182
  "Your tax number for FURS fiscalization": "Twój numer podatkowy do fiskalizacji FURS",
179
- "Your name or identifier for FURS invoices": "Twoje imię lub identyfikator dla faktur FURS",
180
- "Your Name": "Twoje imię",
183
+ "Descriptive label for the operator (e.g. Cashier 1)": "Opisowa etykieta operatora (np. Kasjer 1)",
184
+ "e.g. Cashier 1": "np. Kasjer 1",
181
185
  "Fiscalization Settings": "Ustawienia fiskalizacji",
182
186
  "Advanced Settings": "Ustawienia zaawansowane",
183
187
  "API Default Operator": "Domyślny operator API",
@@ -193,4 +197,23 @@ export default {
193
197
  "Domyślne informacje operatora używane, gdy faktury są tworzone przez API bez zalogowanego użytkownika.",
194
198
  "Certificate uploaded successfully": "Certyfikat przesłany pomyślnie",
195
199
  "Loading certificate details...": "Ładowanie szczegółów certyfikatu...",
200
+ // Entity info section
201
+ "Entity Information": "Entity Information",
202
+ "Required company details for FURS fiscalization": "Required company details for FURS fiscalization",
203
+ "Entity Tax Number": "Entity Tax Number",
204
+ "Your company's tax number (must match FURS certificate)": "Your company's tax number (must match FURS certificate)",
205
+ Address: "Address",
206
+ "Post Code": "Post Code",
207
+ "Save Entity Info": "Save Entity Info",
208
+ "Tax number is required for FURS fiscalization": "Tax number is required for FURS fiscalization",
209
+ "Set entity tax number in General Settings first": "Set entity tax number in General Settings first",
210
+ "Set operator tax number and label in General Settings first":
211
+ "Set operator tax number and label in General Settings first",
212
+ "Complete General Settings first": "Complete General Settings first",
213
+ "Operator tax number and label are required for FURS fiscalization":
214
+ "Operator tax number and label are required for FURS fiscalization",
215
+ "FURS Operator Settings Required": "FURS Operator Settings Required",
216
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.":
217
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.",
218
+ "Save & Retry": "Save & Retry",
196
219
  } as const;
@@ -43,7 +43,7 @@ export default {
43
43
  "Tax number of the operator for API key usage (optional)":
44
44
  "Número fiscal do operador para utilização da chave API (opcional)",
45
45
  "Operator Label": "Etiqueta do operador",
46
- "Descriptive label for the operator (optional)": "Etiqueta descritiva do operador (opcional)",
46
+
47
47
  "Digital Certificate": "Certificado digital",
48
48
  "Upload your FURS digital certificate": "Carregue o seu certificado digital FURS",
49
49
  "Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
@@ -54,6 +54,10 @@ export default {
54
54
  "Tipo de ficheiro inválido. Carregue um ficheiro de certificado .p12 ou .pfx.",
55
55
  "Please select a certificate file and enter the passphrase":
56
56
  "Selecione um ficheiro de certificado e introduza a palavra-passe",
57
+ "Invalid certificate passphrase. Please check your passphrase and try again.":
58
+ "Senha do certificado inválida. Verifique sua senha e tente novamente.",
59
+ "Certificate tax number does not match entity tax number. Please upload a certificate for this entity.":
60
+ "Número fiscal do certificado não corresponde ao número fiscal da entidade. Envie um certificado para esta entidade.",
57
61
  Valid: "Válido",
58
62
  "Expiring Soon": "Expira em breve",
59
63
  Expired: "Expirado",
@@ -177,8 +181,8 @@ export default {
177
181
  "Your personal operator info for FURS invoices": "As suas informações pessoais de operador para faturas FURS",
178
182
  "Save Operator Settings": "Guardar definições do operador",
179
183
  "Your tax number for FURS fiscalization": "O seu número fiscal para a fiscalização FURS",
180
- "Your name or identifier for FURS invoices": "O seu nome ou identificador para faturas FURS",
181
- "Your Name": "O seu nome",
184
+ "Descriptive label for the operator (e.g. Cashier 1)": "Etiqueta descritiva do operador (ex. Caixa 1)",
185
+ "e.g. Cashier 1": "ex. Caixa 1",
182
186
  "Fiscalization Settings": "Definições de fiscalização",
183
187
  "Advanced Settings": "Definições avançadas",
184
188
  "API Default Operator": "Operador predefinido API",
@@ -194,4 +198,23 @@ export default {
194
198
  "Informações do operador predefinidas utilizadas quando as faturas são criadas via API sem um utilizador com sessão iniciada.",
195
199
  "Certificate uploaded successfully": "Certificado carregado com sucesso",
196
200
  "Loading certificate details...": "A carregar detalhes do certificado...",
201
+ // Entity info section
202
+ "Entity Information": "Entity Information",
203
+ "Required company details for FURS fiscalization": "Required company details for FURS fiscalization",
204
+ "Entity Tax Number": "Entity Tax Number",
205
+ "Your company's tax number (must match FURS certificate)": "Your company's tax number (must match FURS certificate)",
206
+ Address: "Address",
207
+ "Post Code": "Post Code",
208
+ "Save Entity Info": "Save Entity Info",
209
+ "Tax number is required for FURS fiscalization": "Tax number is required for FURS fiscalization",
210
+ "Set entity tax number in General Settings first": "Set entity tax number in General Settings first",
211
+ "Set operator tax number and label in General Settings first":
212
+ "Set operator tax number and label in General Settings first",
213
+ "Complete General Settings first": "Complete General Settings first",
214
+ "Operator tax number and label are required for FURS fiscalization":
215
+ "Operator tax number and label are required for FURS fiscalization",
216
+ "FURS Operator Settings Required": "FURS Operator Settings Required",
217
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.":
218
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.",
219
+ "Save & Retry": "Save & Retry",
197
220
  } as const;
@@ -43,7 +43,7 @@ export default {
43
43
  "Tax number of the operator for API key usage (optional)":
44
44
  "Davčna številka operaterja za uporabo z API ključem (opcijsko)",
45
45
  "Operator Label": "Oznaka operaterja",
46
- "Descriptive label for the operator (optional)": "Opisna oznaka za operaterja (opcijsko)",
46
+
47
47
  "Digital Certificate": "Digitalni certifikat",
48
48
  "Upload your FURS digital certificate": "Naložite svoj digitalni certifikat FURS",
49
49
  "Your certificate is required to digitally sign all fiscalized invoices. The certificate must be obtained from the Slovenian Financial Administration (FURS).":
@@ -54,6 +54,10 @@ export default {
54
54
  "Neveljavna vrsta datoteke. Prosimo, naložite datoteko certifikata .p12 ali .pfx.",
55
55
  "Please select a certificate file and enter the passphrase":
56
56
  "Prosimo, izberite datoteko certifikata in vnesite geslo",
57
+ "Invalid certificate passphrase. Please check your passphrase and try again.":
58
+ "Neveljavno geslo certifikata. Preverite geslo in poskusite znova.",
59
+ "Certificate tax number does not match entity tax number. Please upload a certificate for this entity.":
60
+ "Davčna številka certifikata se ne ujema z davčno številko entitete. Naložite certifikat za to entiteto.",
57
61
  Valid: "Veljaven",
58
62
  "Expiring Soon": "Kmalu poteče",
59
63
  Expired: "Potekel",
@@ -179,8 +183,8 @@ export default {
179
183
  "Your personal operator info for FURS invoices": "Vaši osebni podatki operaterja za FURS račune",
180
184
  "Save Operator Settings": "Shrani nastavitve operaterja",
181
185
  "Your tax number for FURS fiscalization": "Vaša davčna številka za fiskalizacijo FURS",
182
- "Your name or identifier for FURS invoices": "Vaše ime ali identifikator za FURS račune",
183
- "Your Name": "Vaše ime",
186
+ "Descriptive label for the operator (e.g. Cashier 1)": "Opisna oznaka za operaterja (npr. Blagajnik 1)",
187
+ "e.g. Cashier 1": "npr. Blagajnik 1",
184
188
  "Fiscalization Settings": "Nastavitve fiskalizacije",
185
189
  "Advanced Settings": "Napredne nastavitve",
186
190
  "API Default Operator": "Privzeti operater za API",
@@ -209,4 +213,13 @@ export default {
209
213
  "Tax number is required for FURS fiscalization": "Davčna številka je obvezna za fiskalizacijo FURS",
210
214
  "Set entity tax number in General Settings first":
211
215
  "Najprej nastavite davčno številko podjetja v splošnih nastavitvah",
216
+ "Set operator tax number and label in General Settings first":
217
+ "Set operator tax number and label in General Settings first",
218
+ "Complete General Settings first": "Complete General Settings first",
219
+ "Operator tax number and label are required for FURS fiscalization":
220
+ "Operator tax number and label are required for FURS fiscalization",
221
+ "FURS Operator Settings Required": "FURS Operator Settings Required",
222
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.":
223
+ "Your FURS operator information is needed to fiscalize this document. Please enter your operator details.",
224
+ "Save & Retry": "Save & Retry",
212
225
  } as const;
@@ -53,6 +53,28 @@ export const CertificateSettingsSection: FC<CertificateSettingsSectionProps> = (
53
53
  onSuccess?.();
54
54
  },
55
55
  onError: (error) => {
56
+ const apiMsg = (error as any)?.data?.message || (error as any)?.message;
57
+ if (typeof apiMsg === "string") {
58
+ if (apiMsg.includes("certificate") && apiMsg.includes("mode")) {
59
+ onError?.(new Error(t(apiMsg)));
60
+ return;
61
+ }
62
+ if (apiMsg.includes("Invalid certificate passphrase")) {
63
+ onError?.(new Error(t("Invalid certificate passphrase. Please check your passphrase and try again.")));
64
+ return;
65
+ }
66
+ const taxMatch = apiMsg.match(/Certificate tax number .+ does not match entity tax number/);
67
+ if (taxMatch) {
68
+ onError?.(
69
+ new Error(
70
+ t(
71
+ "Certificate tax number does not match entity tax number. Please upload a certificate for this entity.",
72
+ ),
73
+ ),
74
+ );
75
+ return;
76
+ }
77
+ }
56
78
  onError?.(error);
57
79
  },
58
80
  });
@@ -8,6 +8,7 @@ import { Button } from "@/ui/components/ui/button";
8
8
  import { FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage } from "@/ui/components/ui/form";
9
9
  import { Input } from "@/ui/components/ui/input";
10
10
  import { RadioGroup, RadioGroupItem } from "@/ui/components/ui/radio-group";
11
+ import { Separator } from "@/ui/components/ui/separator";
11
12
  import { cn } from "@/ui/lib/utils";
12
13
  import { useUpdateUserFursSettings, useUserFursSettings } from "../furs-settings.hooks";
13
14
  import type { FursSettingsFormSchema, SectionType } from "../furs-settings-form";
@@ -19,6 +20,7 @@ interface GeneralSettingsSectionProps {
19
20
  onSuccess?: () => void;
20
21
  onError?: (error: unknown) => void;
21
22
  wrapSection?: (section: SectionType, content: ReactNode) => ReactNode;
23
+ hideUserOperatorSection?: boolean;
22
24
  }
23
25
 
24
26
  export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
@@ -28,9 +30,10 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
28
30
  onSuccess,
29
31
  onError,
30
32
  wrapSection,
33
+ hideUserOperatorSection,
31
34
  }) => {
32
35
  const wrap = (section: SectionType, content: ReactNode) => (wrapSection ? wrapSection(section, content) : content);
33
- const [isAdvancedOpen, setIsAdvancedOpen] = useState(false);
36
+ const [isAdvancedOpen, setIsAdvancedOpen] = useState(!!hideUserOperatorSection);
34
37
 
35
38
  // Entity info (local state for form)
36
39
  const [entityTaxNumber, setEntityTaxNumber] = useState("");
@@ -64,7 +67,9 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
64
67
  };
65
68
 
66
69
  // User operator settings (local state for form)
67
- const { data: userFursSettings, isLoading: userSettingsLoading } = useUserFursSettings(entity.id);
70
+ const { data: userFursSettings, isLoading: userSettingsLoading } = useUserFursSettings(entity.id, {
71
+ enabled: !hideUserOperatorSection,
72
+ });
68
73
  const [operatorTaxNumber, setOperatorTaxNumber] = useState("");
69
74
  const [operatorLabel, setOperatorLabel] = useState("");
70
75
 
@@ -190,6 +195,13 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
190
195
  </div>
191
196
  </div>
192
197
 
198
+ {(!userFursSettings?.operator_tax_number || !userFursSettings?.operator_label) && (
199
+ <Alert variant="destructive">
200
+ <AlertTriangle className="h-4 w-4" />
201
+ <AlertDescription>{t("Operator tax number and label are required for FURS fiscalization")}</AlertDescription>
202
+ </Alert>
203
+ )}
204
+
193
205
  <div className="space-y-4">
194
206
  <div>
195
207
  <label htmlFor="operator-tax-number" className="font-medium text-sm">
@@ -212,13 +224,15 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
212
224
  </label>
213
225
  <Input
214
226
  id="operator-label"
215
- placeholder={t("Your Name")}
227
+ placeholder={t("e.g. Cashier 1")}
216
228
  value={operatorLabel}
217
229
  onChange={(e) => setOperatorLabel(e.target.value)}
218
230
  className="mt-2 h-10"
219
231
  disabled={userSettingsLoading}
220
232
  />
221
- <p className="mt-1 text-muted-foreground text-xs">{t("Your name or identifier for FURS invoices")}</p>
233
+ <p className="mt-1 text-muted-foreground text-xs">
234
+ {t("Descriptive label for the operator (e.g. Cashier 1)")}
235
+ </p>
222
236
  </div>
223
237
 
224
238
  <Button
@@ -364,8 +378,15 @@ export const GeneralSettingsSection: FC<GeneralSettingsSectionProps> = ({
364
378
  return (
365
379
  <div className="space-y-6">
366
380
  {wrap("entity-info", entityInfoContent)}
367
- {wrap("operator", operatorContent)}
381
+ <Separator />
382
+ {!hideUserOperatorSection && (
383
+ <>
384
+ {wrap("operator", operatorContent)}
385
+ <Separator />
386
+ </>
387
+ )}
368
388
  {wrap("fiscalization", fiscalizationContent)}
389
+ <Separator />
369
390
  {wrap("advanced", advancedContent)}
370
391
  </div>
371
392
  );
@@ -157,7 +157,13 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
157
157
 
158
158
  {isRealEstate ? (
159
159
  <Form {...realEstateForm}>
160
- <form onSubmit={realEstateForm.handleSubmit(handleRealEstateSubmit as any)} className="space-y-4">
160
+ <form
161
+ onSubmit={(e) => {
162
+ e.stopPropagation();
163
+ realEstateForm.handleSubmit(handleRealEstateSubmit as any)(e);
164
+ }}
165
+ className="space-y-4"
166
+ >
161
167
  {/* Premise Name */}
162
168
  <FormField
163
169
  control={realEstateForm.control as any}
@@ -324,7 +330,13 @@ export const RegisterPremiseDialog: FC<RegisterPremiseDialogProps> = ({
324
330
  </Form>
325
331
  ) : (
326
332
  <Form {...movableForm}>
327
- <form onSubmit={movableForm.handleSubmit(handleMovableSubmit as any)} className="space-y-4">
333
+ <form
334
+ onSubmit={(e) => {
335
+ e.stopPropagation();
336
+ movableForm.handleSubmit(handleMovableSubmit as any)(e);
337
+ }}
338
+ className="space-y-4"
339
+ >
328
340
  {/* Premise Name */}
329
341
  <FormField
330
342
  control={movableForm.control as any}
@@ -2,9 +2,9 @@ import { zodResolver } from "@hookform/resolvers/zod";
2
2
  import type {
3
3
  Entity,
4
4
  EntitySettings,
5
- EntitySettingsTaxClauseDefaultsAnyOf,
5
+ EntitySettingsTaxClauseDefaults,
6
6
  GetEntities200DataItem,
7
- TaxRulesAnyOf,
7
+ TaxRules,
8
8
  } from "@spaceinvoices/js-sdk";
9
9
  import { ChevronDown, Globe, MessageSquareText } from "lucide-react";
10
10
  import type { ReactNode } from "react";
@@ -81,9 +81,9 @@ export function TaxRulesSettingsForm({
81
81
  const showTaxClauseDefaults = entity.country_rules?.features?.includes("tax_clause_defaults") ?? false;
82
82
 
83
83
  const currentSettings = (entity.settings as EntitySettings) || {};
84
- const currentTaxRules = (currentSettings.tax_rules as TaxRulesAnyOf | null)?.eu || {};
84
+ const currentTaxRules = (currentSettings.tax_rules as TaxRules | null)?.eu || {};
85
85
  const currentTaxClauseDefaults =
86
- (currentSettings.tax_clause_defaults as EntitySettingsTaxClauseDefaultsAnyOf | null) || {};
86
+ (currentSettings.tax_clause_defaults as EntitySettingsTaxClauseDefaults | null) || {};
87
87
 
88
88
  const form = useForm<TaxRulesSettingsSchema>({
89
89
  resolver: zodResolver(taxRulesSettingsSchema),
@@ -17,6 +17,7 @@ import { useEstimateDownload } from "./use-estimate-download";
17
17
 
18
18
  type EstimateListRowActionsProps = {
19
19
  estimate: Estimate;
20
+ onView?: (estimate: Estimate) => void;
20
21
  onDuplicate?: (estimate: Estimate) => void;
21
22
  onDownloadStart?: () => void;
22
23
  onDownloadSuccess?: (fileName: string) => void;
@@ -27,6 +28,7 @@ type EstimateListRowActionsProps = {
27
28
 
28
29
  export default function EstimateListRowActions({
29
30
  estimate,
31
+ onView,
30
32
  onDuplicate,
31
33
  onDownloadStart,
32
34
  onDownloadSuccess,
@@ -61,13 +63,7 @@ export default function EstimateListRowActions({
61
63
  </DropdownMenuGroup>
62
64
  <DropdownMenuSeparator />
63
65
  <DropdownMenuGroup>
64
- <DropdownMenuItem
65
- className="cursor-pointer"
66
- onClick={() => {
67
- // TODO: Use router
68
- window.location.href = `/app/estimates/view/${estimate.id}`;
69
- }}
70
- >
66
+ <DropdownMenuItem className="cursor-pointer" onClick={() => onView?.(estimate)}>
71
67
  <Eye className="h-4 w-4" />
72
68
  {t("View estimate")}
73
69
  </DropdownMenuItem>
@@ -1,8 +1,9 @@
1
1
  import type { Estimate } from "@spaceinvoices/js-sdk";
2
- import { useMemo } from "react";
2
+ import { useCallback, useMemo, useState } from "react";
3
3
  import { DataTable } from "@/ui/components/table/data-table";
4
4
  import { FormattedDate } from "@/ui/components/table/date-cell";
5
5
  import { useTableFetch } from "@/ui/components/table/hooks/use-table-fetch";
6
+ import { SelectionToolbar } from "@/ui/components/table/selection-toolbar";
6
7
  import type {
7
8
  Column,
8
9
  FilterConfig,
@@ -45,21 +46,25 @@ type EstimateListTableProps = {
45
46
  namespace?: string;
46
47
  locale?: string;
47
48
  entityId?: string;
49
+ onView?: (estimate: Estimate) => void;
48
50
  onDuplicate?: (estimate: Estimate) => void;
49
51
  onDownloadStart?: () => void;
50
52
  onDownloadSuccess?: (fileName: string) => void;
51
53
  onDownloadError?: (error: string) => void;
54
+ onExportSelected?: (documentIds: string[]) => void;
52
55
  } & ListTableProps<Estimate>;
53
56
 
54
57
  export default function EstimateListTable({
55
58
  queryParams,
56
59
  onRowClick,
60
+ onView,
57
61
  onDuplicate,
58
62
  onChangeParams,
59
63
  entityId,
60
64
  onDownloadStart,
61
65
  onDownloadSuccess,
62
66
  onDownloadError,
67
+ onExportSelected,
63
68
  ...i18nProps
64
69
  }: EstimateListTableProps) {
65
70
  const t = createTranslation({
@@ -68,6 +73,7 @@ export default function EstimateListTable({
68
73
  });
69
74
 
70
75
  const { sdk } = useSDK();
76
+ const [selectedIds, setSelectedIds] = useState<Set<string>>(new Set());
71
77
 
72
78
  const handleFetch = useTableFetch(async (params: TableQueryParams) => {
73
79
  if (!sdk) throw new Error("SDK not initialized");
@@ -97,6 +103,28 @@ export default function EstimateListTable({
97
103
  [t],
98
104
  );
99
105
 
106
+ const handleExportPdfs = useCallback(() => {
107
+ if (selectedIds.size > 0 && onExportSelected) {
108
+ onExportSelected(Array.from(selectedIds));
109
+ }
110
+ }, [selectedIds, onExportSelected]);
111
+
112
+ const handleDeselectAll = useCallback(() => {
113
+ setSelectedIds(new Set());
114
+ }, []);
115
+
116
+ const selectionToolbar = useCallback(
117
+ (count: number) => (
118
+ <SelectionToolbar
119
+ selectedCount={count}
120
+ onExportPdfs={onExportSelected ? handleExportPdfs : undefined}
121
+ onDeselectAll={handleDeselectAll}
122
+ t={t}
123
+ />
124
+ ),
125
+ [handleExportPdfs, handleDeselectAll, onExportSelected, t],
126
+ );
127
+
100
128
  const columns: Column<Estimate>[] = useMemo(
101
129
  () => [
102
130
  {
@@ -157,6 +185,7 @@ export default function EstimateListTable({
157
185
  cell: (estimate) => (
158
186
  <EstimateListRowActions
159
187
  estimate={estimate}
188
+ onView={onView}
160
189
  onDuplicate={onDuplicate}
161
190
  onDownloadStart={onDownloadStart}
162
191
  onDownloadSuccess={onDownloadSuccess}
@@ -167,7 +196,7 @@ export default function EstimateListTable({
167
196
  ),
168
197
  },
169
198
  ],
170
- [t, onRowClick, onDuplicate, onDownloadStart, onDownloadSuccess, onDownloadError, i18nProps.locale],
199
+ [t, onRowClick, onView, onDuplicate, onDownloadStart, onDownloadSuccess, onDownloadError, i18nProps.locale],
171
200
  );
172
201
 
173
202
  return (
@@ -183,6 +212,10 @@ export default function EstimateListTable({
183
212
  filterConfig={filterConfig}
184
213
  t={t}
185
214
  locale={i18nProps.locale}
215
+ selectable={!!onExportSelected}
216
+ selectedIds={selectedIds}
217
+ onSelectionChange={setSelectedIds}
218
+ selectionToolbar={selectionToolbar}
186
219
  />
187
220
  );
188
221
  }
@@ -32,4 +32,7 @@ export default {
32
32
  "No results found": "Keine Angebote gefunden",
33
33
  "Try adjusting your search criteria": "Versuchen Sie, Ihre Suchkriterien anzupassen",
34
34
  "Clear search": "Suche zurücksetzen",
35
+ selected: "ausgewählt",
36
+ "Export PDFs": "PDFs exportieren",
37
+ "Deselect all": "Auswahl aufheben",
35
38
  } as const;
@@ -5,4 +5,7 @@ export default {
5
5
  "Create new": "Create estimate",
6
6
  // No results translations
7
7
  "No results found": "No estimates found",
8
+ selected: "selected",
9
+ "Export PDFs": "Export PDFs",
10
+ "Deselect all": "Deselect all",
8
11
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "No se encontraron presupuestos",
30
30
  "Try adjusting your search criteria": "Intente ajustar sus criterios de búsqueda",
31
31
  "Clear search": "Limpiar búsqueda",
32
+ selected: "seleccionados",
33
+ "Export PDFs": "Exportar PDFs",
34
+ "Deselect all": "Deseleccionar todo",
32
35
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "Aucun devis trouvé",
30
30
  "Try adjusting your search criteria": "Essayez d'ajuster vos critères de recherche",
31
31
  "Clear search": "Effacer la recherche",
32
+ selected: "sélectionnés",
33
+ "Export PDFs": "Exporter les PDF",
34
+ "Deselect all": "Tout désélectionner",
32
35
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "Nisu pronađeni predračuni",
30
30
  "Try adjusting your search criteria": "Pokušajte prilagoditi kriterije pretraživanja",
31
31
  "Clear search": "Očisti pretraživanje",
32
+ selected: "odabranih",
33
+ "Export PDFs": "Izvezi PDF-ove",
34
+ "Deselect all": "Poništi odabir",
32
35
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "Nessun preventivo trovato",
30
30
  "Try adjusting your search criteria": "Prova a modificare i criteri di ricerca",
31
31
  "Clear search": "Cancella ricerca",
32
+ selected: "selezionati",
33
+ "Export PDFs": "Esporta PDF",
34
+ "Deselect all": "Deseleziona tutto",
32
35
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "Geen offertes gevonden",
30
30
  "Try adjusting your search criteria": "Probeer uw zoekcriteria aan te passen",
31
31
  "Clear search": "Zoekopdracht wissen",
32
+ selected: "geselecteerd",
33
+ "Export PDFs": "PDFs exporteren",
34
+ "Deselect all": "Alles deselecteren",
32
35
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "Nie znaleziono kosztorysów",
30
30
  "Try adjusting your search criteria": "Spróbuj dostosować kryteria wyszukiwania",
31
31
  "Clear search": "Wyczyść wyszukiwanie",
32
+ selected: "wybranych",
33
+ "Export PDFs": "Eksportuj PDF-y",
34
+ "Deselect all": "Odznacz wszystko",
32
35
  } as const;
@@ -29,4 +29,7 @@ export default {
29
29
  "No results found": "Nenhum orçamento encontrado",
30
30
  "Try adjusting your search criteria": "Tente ajustar os seus critérios de pesquisa",
31
31
  "Clear search": "Limpar pesquisa",
32
+ selected: "selecionados",
33
+ "Export PDFs": "Exportar PDFs",
34
+ "Deselect all": "Desselecionar tudo",
32
35
  } as const;
@@ -32,4 +32,7 @@ export default {
32
32
  "No results found": "Ni najdenih predračunov",
33
33
  "Try adjusting your search criteria": "Poskusite prilagoditi iskalne kriterije",
34
34
  "Clear search": "Počisti iskanje",
35
+ selected: "izbranih",
36
+ "Export PDFs": "Izvozi PDF-je",
37
+ "Deselect all": "Počisti izbiro",
35
38
  } as const;