@spaceinvoices/react-ui 0.4.8 → 0.4.11

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 (276) hide show
  1. package/README.md +24 -8
  2. package/cli/dist/index.js +89 -26
  3. package/package.json +4 -1
  4. package/spaceinvoices.schema.json +6 -1
  5. package/src/common/autocomplete.tsx +69 -6
  6. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +124 -285
  7. package/src/components/advance-invoices/list/list-table.tsx +10 -3
  8. package/src/components/advance-invoices/list/locales/de.ts +2 -0
  9. package/src/components/advance-invoices/list/locales/en.ts +1 -0
  10. package/src/components/advance-invoices/list/locales/es.ts +1 -0
  11. package/src/components/advance-invoices/list/locales/fr.ts +1 -0
  12. package/src/components/advance-invoices/list/locales/hr.ts +1 -0
  13. package/src/components/advance-invoices/list/locales/it.ts +1 -0
  14. package/src/components/advance-invoices/list/locales/nl.ts +1 -0
  15. package/src/components/advance-invoices/list/locales/pl.ts +1 -0
  16. package/src/components/advance-invoices/list/locales/pt.ts +1 -0
  17. package/src/components/advance-invoices/list/locales/sl.ts +1 -0
  18. package/src/components/advance-invoices/list/use-advance-invoice-download.ts +1 -12
  19. package/src/components/credit-notes/create/create-credit-note-form.tsx +116 -238
  20. package/src/components/credit-notes/list/list-table.tsx +6 -3
  21. package/src/components/credit-notes/list/use-credit-note-download.ts +1 -12
  22. package/src/components/customers/customer-autocomplete.tsx +64 -11
  23. package/src/components/customers/customer-list-table/customer-list-table.tsx +3 -2
  24. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +9 -1
  25. package/src/components/dashboard/collection-rate-card/locales/bg.ts +3 -0
  26. package/src/components/dashboard/collection-rate-card/locales/cs.ts +3 -0
  27. package/src/components/dashboard/collection-rate-card/locales/et.ts +3 -0
  28. package/src/components/dashboard/collection-rate-card/locales/fi.ts +3 -0
  29. package/src/components/dashboard/collection-rate-card/locales/is.ts +3 -0
  30. package/src/components/dashboard/collection-rate-card/locales/nb.ts +3 -0
  31. package/src/components/dashboard/collection-rate-card/locales/sk.ts +3 -0
  32. package/src/components/dashboard/collection-rate-card/locales/sv.ts +3 -0
  33. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +10 -2
  34. package/src/components/dashboard/invoice-status-chart/locales/bg.ts +10 -0
  35. package/src/components/dashboard/invoice-status-chart/locales/cs.ts +10 -0
  36. package/src/components/dashboard/invoice-status-chart/locales/de.ts +1 -0
  37. package/src/components/dashboard/invoice-status-chart/locales/es.ts +1 -0
  38. package/src/components/dashboard/invoice-status-chart/locales/et.ts +10 -0
  39. package/src/components/dashboard/invoice-status-chart/locales/fi.ts +10 -0
  40. package/src/components/dashboard/invoice-status-chart/locales/fr.ts +1 -0
  41. package/src/components/dashboard/invoice-status-chart/locales/hr.ts +1 -0
  42. package/src/components/dashboard/invoice-status-chart/locales/is.ts +10 -0
  43. package/src/components/dashboard/invoice-status-chart/locales/it.ts +1 -0
  44. package/src/components/dashboard/invoice-status-chart/locales/nb.ts +10 -0
  45. package/src/components/dashboard/invoice-status-chart/locales/nl.ts +1 -0
  46. package/src/components/dashboard/invoice-status-chart/locales/pl.ts +1 -0
  47. package/src/components/dashboard/invoice-status-chart/locales/pt.ts +1 -0
  48. package/src/components/dashboard/invoice-status-chart/locales/sk.ts +10 -0
  49. package/src/components/dashboard/invoice-status-chart/locales/sl.ts +1 -0
  50. package/src/components/dashboard/invoice-status-chart/locales/sv.ts +10 -0
  51. package/src/components/dashboard/payment-methods-chart/locales/bg.ts +12 -0
  52. package/src/components/dashboard/payment-methods-chart/locales/cs.ts +12 -0
  53. package/src/components/dashboard/payment-methods-chart/locales/et.ts +12 -0
  54. package/src/components/dashboard/payment-methods-chart/locales/fi.ts +12 -0
  55. package/src/components/dashboard/payment-methods-chart/locales/is.ts +12 -0
  56. package/src/components/dashboard/payment-methods-chart/locales/nb.ts +12 -0
  57. package/src/components/dashboard/payment-methods-chart/locales/sk.ts +12 -0
  58. package/src/components/dashboard/payment-methods-chart/locales/sv.ts +12 -0
  59. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +9 -1
  60. package/src/components/dashboard/payment-trend-chart/locales/bg.ts +6 -0
  61. package/src/components/dashboard/payment-trend-chart/locales/cs.ts +6 -0
  62. package/src/components/dashboard/payment-trend-chart/locales/de.ts +1 -0
  63. package/src/components/dashboard/payment-trend-chart/locales/es.ts +1 -0
  64. package/src/components/dashboard/payment-trend-chart/locales/et.ts +6 -0
  65. package/src/components/dashboard/payment-trend-chart/locales/fi.ts +6 -0
  66. package/src/components/dashboard/payment-trend-chart/locales/fr.ts +1 -0
  67. package/src/components/dashboard/payment-trend-chart/locales/hr.ts +1 -0
  68. package/src/components/dashboard/payment-trend-chart/locales/is.ts +6 -0
  69. package/src/components/dashboard/payment-trend-chart/locales/it.ts +1 -0
  70. package/src/components/dashboard/payment-trend-chart/locales/nb.ts +6 -0
  71. package/src/components/dashboard/payment-trend-chart/locales/nl.ts +1 -0
  72. package/src/components/dashboard/payment-trend-chart/locales/pl.ts +1 -0
  73. package/src/components/dashboard/payment-trend-chart/locales/pt.ts +1 -0
  74. package/src/components/dashboard/payment-trend-chart/locales/sk.ts +6 -0
  75. package/src/components/dashboard/payment-trend-chart/locales/sl.ts +1 -0
  76. package/src/components/dashboard/payment-trend-chart/locales/sv.ts +6 -0
  77. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +15 -8
  78. package/src/components/dashboard/revenue-trend-chart/locales/bg.ts +6 -0
  79. package/src/components/dashboard/revenue-trend-chart/locales/cs.ts +6 -0
  80. package/src/components/dashboard/revenue-trend-chart/locales/de.ts +1 -0
  81. package/src/components/dashboard/revenue-trend-chart/locales/es.ts +1 -0
  82. package/src/components/dashboard/revenue-trend-chart/locales/et.ts +6 -0
  83. package/src/components/dashboard/revenue-trend-chart/locales/fi.ts +6 -0
  84. package/src/components/dashboard/revenue-trend-chart/locales/fr.ts +1 -0
  85. package/src/components/dashboard/revenue-trend-chart/locales/hr.ts +1 -0
  86. package/src/components/dashboard/revenue-trend-chart/locales/is.ts +6 -0
  87. package/src/components/dashboard/revenue-trend-chart/locales/it.ts +1 -0
  88. package/src/components/dashboard/revenue-trend-chart/locales/nb.ts +6 -0
  89. package/src/components/dashboard/revenue-trend-chart/locales/nl.ts +1 -0
  90. package/src/components/dashboard/revenue-trend-chart/locales/pl.ts +1 -0
  91. package/src/components/dashboard/revenue-trend-chart/locales/pt.ts +1 -0
  92. package/src/components/dashboard/revenue-trend-chart/locales/sk.ts +6 -0
  93. package/src/components/dashboard/revenue-trend-chart/locales/sl.ts +1 -0
  94. package/src/components/dashboard/revenue-trend-chart/locales/sv.ts +6 -0
  95. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +15 -8
  96. package/src/components/dashboard/tax-collected-card/locales.ts +110 -0
  97. package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +8 -2
  98. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +4 -4
  99. package/src/components/dashboard/top-customers-chart/locales/bg.ts +7 -0
  100. package/src/components/dashboard/top-customers-chart/locales/cs.ts +7 -0
  101. package/src/components/dashboard/top-customers-chart/locales/de.ts +2 -0
  102. package/src/components/dashboard/top-customers-chart/locales/es.ts +2 -0
  103. package/src/components/dashboard/top-customers-chart/locales/et.ts +7 -0
  104. package/src/components/dashboard/top-customers-chart/locales/fi.ts +7 -0
  105. package/src/components/dashboard/top-customers-chart/locales/fr.ts +2 -0
  106. package/src/components/dashboard/top-customers-chart/locales/hr.ts +2 -0
  107. package/src/components/dashboard/top-customers-chart/locales/is.ts +7 -0
  108. package/src/components/dashboard/top-customers-chart/locales/it.ts +2 -0
  109. package/src/components/dashboard/top-customers-chart/locales/nb.ts +7 -0
  110. package/src/components/dashboard/top-customers-chart/locales/nl.ts +2 -0
  111. package/src/components/dashboard/top-customers-chart/locales/pl.ts +2 -0
  112. package/src/components/dashboard/top-customers-chart/locales/pt.ts +2 -0
  113. package/src/components/dashboard/top-customers-chart/locales/sk.ts +7 -0
  114. package/src/components/dashboard/top-customers-chart/locales/sl.ts +2 -0
  115. package/src/components/dashboard/top-customers-chart/locales/sv.ts +7 -0
  116. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +23 -12
  117. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +33 -20
  118. package/src/components/delivery-notes/list/list-table.tsx +22 -13
  119. package/src/components/delivery-notes/list/locales/de.ts +2 -0
  120. package/src/components/delivery-notes/list/locales/en.ts +1 -0
  121. package/src/components/delivery-notes/list/locales/es.ts +1 -0
  122. package/src/components/delivery-notes/list/locales/fr.ts +1 -0
  123. package/src/components/delivery-notes/list/locales/hr.ts +1 -0
  124. package/src/components/delivery-notes/list/locales/it.ts +1 -0
  125. package/src/components/delivery-notes/list/locales/nl.ts +1 -0
  126. package/src/components/delivery-notes/list/locales/pl.ts +1 -0
  127. package/src/components/delivery-notes/list/locales/pt.ts +1 -0
  128. package/src/components/delivery-notes/list/locales/sl.ts +1 -0
  129. package/src/components/delivery-notes/list/use-delivery-note-download.ts +1 -12
  130. package/src/components/documents/create/document-add-item-form.tsx +28 -16
  131. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +12 -2
  132. package/src/components/documents/create/document-items-section.tsx +70 -39
  133. package/src/components/documents/create/document-recipient-section.tsx +10 -1
  134. package/src/components/documents/create/live-preview.tsx +113 -15
  135. package/src/components/documents/create/prepare-document-submission.ts +35 -16
  136. package/src/components/documents/create/use-document-customer-form.ts +14 -3
  137. package/src/components/documents/documents.hooks.ts +7 -2
  138. package/src/components/documents/shared/document-preview-display.tsx +136 -67
  139. package/src/components/documents/shared/scaled-document-preview.tsx +45 -5
  140. package/src/components/documents/view/document-actions-bar.tsx +284 -182
  141. package/src/components/documents/view/document-activities-list.tsx +3 -0
  142. package/src/components/documents/view/document-payments-list.tsx +3 -0
  143. package/src/components/documents/view/locales/de.ts +8 -0
  144. package/src/components/documents/view/locales/es.ts +8 -0
  145. package/src/components/documents/view/locales/fr.ts +8 -0
  146. package/src/components/documents/view/locales/hr.ts +8 -0
  147. package/src/components/documents/view/locales/it.ts +8 -0
  148. package/src/components/documents/view/locales/nl.ts +8 -0
  149. package/src/components/documents/view/locales/pl.ts +8 -0
  150. package/src/components/documents/view/locales/pt.ts +8 -0
  151. package/src/components/documents/view/locales/sl.ts +8 -0
  152. package/src/components/documents/view/use-document-download.ts +14 -25
  153. package/src/components/entities/create-entity-form.tsx +101 -16
  154. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +10 -10
  155. package/src/components/entities/entity-settings-form/locales/de.ts +10 -0
  156. package/src/components/entities/entity-settings-form/locales/es.ts +10 -0
  157. package/src/components/entities/entity-settings-form/locales/fr.ts +10 -0
  158. package/src/components/entities/entity-settings-form/locales/hr.ts +10 -0
  159. package/src/components/entities/entity-settings-form/locales/it.ts +10 -0
  160. package/src/components/entities/entity-settings-form/locales/nl.ts +10 -0
  161. package/src/components/entities/entity-settings-form/locales/pl.ts +10 -0
  162. package/src/components/entities/entity-settings-form/locales/pt.ts +10 -0
  163. package/src/components/entities/entity-settings-form/locales/sl.ts +10 -0
  164. package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +3 -3
  165. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +78 -124
  166. package/src/components/entities/fina-settings-form/sections/certificate-settings-section.tsx +8 -1
  167. package/src/components/entities/fina-settings-form/sections/premises-management-section.tsx +14 -2
  168. package/src/components/entities/fina-settings-form/sections/register-premise-dialog.tsx +7 -2
  169. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +56 -130
  170. package/src/components/entities/furs-settings-form/sections/certificate-settings-section.tsx +8 -1
  171. package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +1 -0
  172. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +15 -2
  173. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +20 -3
  174. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +38 -12
  175. package/src/components/entities/settings/defaults-settings-form.tsx +6 -6
  176. package/src/components/entities/settings/eslog-settings-form.tsx +13 -1
  177. package/src/components/entities/settings/pdf-template-selector/demo-invoice-data.ts +3 -22
  178. package/src/components/entities/shared/fiscalization-step-flow.ts +77 -0
  179. package/src/components/entities/shared/fiscalization-step-tabs.tsx +71 -0
  180. package/src/components/estimates/create/create-estimate-form.tsx +34 -21
  181. package/src/components/estimates/list/list-table.tsx +23 -14
  182. package/src/components/estimates/list/locales/de.ts +2 -0
  183. package/src/components/estimates/list/locales/en.ts +1 -0
  184. package/src/components/estimates/list/locales/es.ts +1 -0
  185. package/src/components/estimates/list/locales/fr.ts +1 -0
  186. package/src/components/estimates/list/locales/hr.ts +1 -0
  187. package/src/components/estimates/list/locales/it.ts +1 -0
  188. package/src/components/estimates/list/locales/nl.ts +1 -0
  189. package/src/components/estimates/list/locales/pl.ts +1 -0
  190. package/src/components/estimates/list/locales/pt.ts +1 -0
  191. package/src/components/estimates/list/locales/sl.ts +1 -0
  192. package/src/components/estimates/list/use-estimate-download.ts +1 -12
  193. package/src/components/export/document-export-form.tsx +33 -7
  194. package/src/components/export/sales-per-item-export-form.tsx +23 -7
  195. package/src/components/invoices/create/create-invoice-form.tsx +295 -329
  196. package/src/components/invoices/create/prepare-invoice-submission.ts +0 -8
  197. package/src/components/invoices/list/list-table.tsx +7 -4
  198. package/src/components/invoices/list/use-invoice-download.ts +1 -11
  199. package/src/components/invoices/send-email-dialog/locales/de.ts +20 -0
  200. package/src/components/invoices/send-email-dialog/locales/es.ts +20 -0
  201. package/src/components/invoices/send-email-dialog/locales/fr.ts +20 -0
  202. package/src/components/invoices/send-email-dialog/locales/hr.ts +20 -0
  203. package/src/components/invoices/send-email-dialog/locales/it.ts +20 -0
  204. package/src/components/invoices/send-email-dialog/locales/nl.ts +20 -0
  205. package/src/components/invoices/send-email-dialog/locales/pl.ts +20 -0
  206. package/src/components/invoices/send-email-dialog/locales/pt.ts +20 -0
  207. package/src/components/invoices/send-email-dialog/locales/sl.ts +20 -0
  208. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +77 -8
  209. package/src/components/invoices/view/eslog-info-display.tsx +17 -1
  210. package/src/components/invoices/view/fiscalization-status-card.tsx +7 -3
  211. package/src/components/items/item-combobox.tsx +26 -6
  212. package/src/components/items/item-list-table/item-list-table.tsx +5 -2
  213. package/src/components/payments/create-payment-form/index.ts +1 -0
  214. package/src/components/payments/list/list-table.tsx +14 -4
  215. package/src/components/recurring-invoices/list/list-table.tsx +7 -4
  216. package/src/components/request-logs/locales.ts +412 -0
  217. package/src/components/request-logs/request-log-detail.tsx +37 -21
  218. package/src/components/request-logs/request-log-list-table.tsx +57 -11
  219. package/src/components/table/data-table.tsx +5 -2
  220. package/src/components/table/date-cell.tsx +3 -1
  221. package/src/components/table/filter-bar.tsx +14 -2
  222. package/src/components/table/hooks/use-table-query.ts +1 -1
  223. package/src/components/table/locales.ts +1116 -0
  224. package/src/components/table/search-input.tsx +12 -3
  225. package/src/components/table/selection-toolbar.tsx +23 -6
  226. package/src/components/table/table-empty-state.tsx +43 -3
  227. package/src/components/table/table-no-results.tsx +3 -3
  228. package/src/components/table/table-pagination.tsx +4 -3
  229. package/src/components/table/types.ts +1 -0
  230. package/src/components/tax-reports/index.ts +1 -0
  231. package/src/components/tax-reports/kir-export-form.tsx +46 -8
  232. package/src/components/tax-reports/slovenia-tax-profile-step.tsx +191 -0
  233. package/src/components/tax-reports/slovenia-yearly-export-form.tsx +509 -0
  234. package/src/components/tax-reports/slovenia-yearly-review-step.tsx +253 -0
  235. package/src/components/tax-reports/slovenia-yearly-summary.tsx +19 -0
  236. package/src/components/taxes/tax-list-table/tax-list-table.tsx +3 -2
  237. package/src/components/ui/sidebar.tsx +3 -2
  238. package/src/components/ui/sticky-form-footer.tsx +7 -1
  239. package/src/components/webhook-logs/index.ts +6 -0
  240. package/src/components/webhook-logs/locales.ts +392 -0
  241. package/src/components/webhook-logs/webhook-delivery-detail.tsx +255 -0
  242. package/src/components/webhook-logs/webhook-delivery-list-table.tsx +278 -0
  243. package/src/components/wl-subscription/index.ts +1 -0
  244. package/src/components/wl-subscription/locked-feature.tsx +1 -0
  245. package/src/components/wl-subscription/paywall.tsx +193 -0
  246. package/src/components/wl-subscription/upgrade-modal.tsx +93 -29
  247. package/src/generate-schemas.ts +12 -7
  248. package/src/generated/schemas/customer.ts +2 -0
  249. package/src/generated/schemas/entity.ts +134 -0
  250. package/src/generated/schemas/exportsloveniayearlynormiranireport_body.ts +27 -0
  251. package/src/generated/schemas/index.ts +2 -0
  252. package/src/generated/schemas/me.ts +20 -1
  253. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +40 -34
  254. package/src/generated/schemas/rendercreditnotepreview_body.ts +42 -36
  255. package/src/generated/schemas/renderdeliverynotepreview_body.ts +23 -13
  256. package/src/generated/schemas/renderestimatepreview_body.ts +23 -13
  257. package/src/generated/schemas/renderinvoicepreview_body.ts +40 -34
  258. package/src/generated/schemas/sendemail_body.ts +44 -0
  259. package/src/generated/schemas/sloveniataxprofile.ts +42 -0
  260. package/src/generated/schemas/startpdfexport_body.ts +91 -1
  261. package/src/generated/schemas/webhook.ts +10 -0
  262. package/src/hooks/use-duplicate-document.ts +51 -13
  263. package/src/hooks/use-eslog-validation.ts +59 -0
  264. package/src/hooks/use-premise-selection.ts +186 -0
  265. package/src/lib/browser-cookies.ts +4 -4
  266. package/src/lib/date-fns-locale.ts +48 -0
  267. package/src/lib/fiscalization-options.ts +81 -0
  268. package/src/lib/locale.ts +38 -0
  269. package/src/lib/template-variables.tsx +1 -1
  270. package/src/lib/translation.ts +14 -3
  271. package/src/providers/entities-context.tsx +1 -0
  272. package/src/providers/entities-provider.tsx +102 -3
  273. package/src/providers/form-footer-context.tsx +37 -4
  274. package/src/providers/sdk-provider.tsx +7 -2
  275. package/src/providers/white-label-provider.tsx +4 -1
  276. package/src/providers/wl-subscription-provider.tsx +90 -3
@@ -6,6 +6,7 @@ import {
6
6
  ChevronDown,
7
7
  Copy,
8
8
  Download,
9
+ Ellipsis,
9
10
  FileCode2,
10
11
  Link2Off,
11
12
  Loader2,
@@ -22,6 +23,7 @@ import {
22
23
  DropdownMenu,
23
24
  DropdownMenuContent,
24
25
  DropdownMenuItem,
26
+ DropdownMenuSeparator,
25
27
  DropdownMenuTrigger,
26
28
  } from "@/ui/components/ui/dropdown-menu";
27
29
  import { Tooltip, TooltipContent, TooltipTrigger } from "@/ui/components/ui/tooltip";
@@ -56,6 +58,14 @@ const PDF_LANGUAGE_CODES = [
56
58
  { label: "Dutch", code: "nl-NL" },
57
59
  { label: "Polish", code: "pl-PL" },
58
60
  { label: "Croatian", code: "hr-HR" },
61
+ { label: "Swedish", code: "sv-SE" },
62
+ { label: "Finnish", code: "fi-FI" },
63
+ { label: "Estonian", code: "et-EE" },
64
+ { label: "Bulgarian", code: "bg-BG" },
65
+ { label: "Czech", code: "cs-CZ" },
66
+ { label: "Slovak", code: "sk-SK" },
67
+ { label: "Norwegian", code: "nb-NO" },
68
+ { label: "Icelandic", code: "is-IS" },
59
69
  ] as const;
60
70
 
61
71
  interface DocumentActionsBarProps extends ComponentTranslationProps {
@@ -132,7 +142,7 @@ export function DocumentActionsBar({
132
142
  isVoiding,
133
143
  ...i18nProps
134
144
  }: DocumentActionsBarProps) {
135
- const t = createTranslation({ translations, locale: currentLocale, ...i18nProps });
145
+ const t = createTranslation({ ...i18nProps, translations, locale: currentLocale });
136
146
  const [linkCopied, setLinkCopied] = useState(false);
137
147
 
138
148
  const { isDownloadingPdf, isDownloadingEslog, downloadPdf, downloadEslog } = useDocumentDownload({
@@ -168,208 +178,300 @@ export function DocumentActionsBar({
168
178
 
169
179
  const isDraft = (document as any).is_draft === true;
170
180
 
171
- return (
172
- <div className="flex flex-wrap items-center gap-2">
173
- {/* PDF Download */}
174
- <div className="flex">
175
- <Button
176
- variant="outline"
177
- size="sm"
178
- disabled={isDownloadingPdf}
179
- onClick={() => handleDownloadPdf()}
180
- className="cursor-pointer rounded-r-none"
181
- >
182
- {isDownloadingPdf ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Download className="mr-2 h-4 w-4" />}
183
- {t("PDF")}
184
- </Button>
185
- <DropdownMenu>
186
- <DropdownMenuTrigger asChild>
187
- <Button
188
- variant="outline"
189
- size="sm"
190
- disabled={isDownloadingPdf}
191
- className="cursor-pointer rounded-l-none border-l-0 px-2"
192
- >
193
- <ChevronDown className="h-4 w-4" />
194
- </Button>
195
- </DropdownMenuTrigger>
196
- <DropdownMenuContent align="end">
197
- {PDF_LANGUAGE_CODES.map((lang) => (
198
- <DropdownMenuItem key={lang.code} onClick={() => handleDownloadPdf(lang.code)} className="cursor-pointer">
199
- {t(lang.label)}
200
- </DropdownMenuItem>
201
- ))}
202
- </DropdownMenuContent>
203
- </DropdownMenu>
204
- </div>
181
+ // --- Primary actions (always visible) ---
182
+ const pdfButton = (
183
+ <div className="flex">
184
+ <Button
185
+ variant="outline"
186
+ size="sm"
187
+ disabled={isDownloadingPdf}
188
+ onClick={() => handleDownloadPdf()}
189
+ className="cursor-pointer rounded-r-none"
190
+ >
191
+ {isDownloadingPdf ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Download className="mr-2 h-4 w-4" />}
192
+ {t("PDF")}
193
+ </Button>
194
+ <DropdownMenu>
195
+ <DropdownMenuTrigger asChild>
196
+ <Button
197
+ variant="outline"
198
+ size="sm"
199
+ disabled={isDownloadingPdf}
200
+ className="cursor-pointer rounded-l-none border-l-0 px-2"
201
+ >
202
+ <ChevronDown className="h-4 w-4" />
203
+ </Button>
204
+ </DropdownMenuTrigger>
205
+ <DropdownMenuContent align="end">
206
+ {PDF_LANGUAGE_CODES.map((lang) => (
207
+ <DropdownMenuItem key={lang.code} onClick={() => handleDownloadPdf(lang.code)} className="cursor-pointer">
208
+ {t(lang.label)}
209
+ </DropdownMenuItem>
210
+ ))}
211
+ </DropdownMenuContent>
212
+ </DropdownMenu>
213
+ </div>
214
+ );
205
215
 
206
- {/* e-SLOG Download */}
207
- {showEslogDownload && (
208
- <Button
209
- variant="outline"
210
- size="sm"
211
- disabled={isDownloadingEslog}
212
- onClick={handleDownloadEslog}
213
- className="cursor-pointer"
214
- >
215
- {isDownloadingEslog ? (
216
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
217
- ) : (
218
- <FileCode2 className="mr-2 h-4 w-4" />
219
- )}
220
- e-SLOG
221
- </Button>
222
- )}
216
+ const eslogButton = showEslogDownload ? (
217
+ <Button
218
+ variant="outline"
219
+ size="sm"
220
+ disabled={isDownloadingEslog}
221
+ onClick={handleDownloadEslog}
222
+ className="cursor-pointer"
223
+ >
224
+ {isDownloadingEslog ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <FileCode2 className="mr-2 h-4 w-4" />}
225
+ e-SLOG
226
+ </Button>
227
+ ) : null;
223
228
 
224
- {/* Send Email */}
225
- <Button variant="outline" size="sm" onClick={onSendEmail} className="cursor-pointer">
226
- <Mail className="mr-2 h-4 w-4" />
227
- {t("Send")}
228
- </Button>
229
+ const sendButton = (
230
+ <Button variant="outline" size="sm" onClick={onSendEmail} className="cursor-pointer">
231
+ <Mail className="mr-2 h-4 w-4" />
232
+ {t("Send")}
233
+ </Button>
234
+ );
229
235
 
230
- {/* Add Payment */}
231
- {supportsPayments && (
232
- <Button variant="outline" size="sm" onClick={onAddPayment} className="cursor-pointer">
233
- <Plus className="mr-2 h-4 w-4" />
234
- {t("Payment")}
235
- </Button>
236
- )}
236
+ const paymentButton = supportsPayments ? (
237
+ <Button variant="outline" size="sm" onClick={onAddPayment} className="cursor-pointer">
238
+ <Plus className="mr-2 h-4 w-4" />
239
+ {t("Payment")}
240
+ </Button>
241
+ ) : null;
237
242
 
238
- {/* Edit */}
239
- {onEdit &&
240
- (isEditable ? (
241
- <Button variant="outline" size="sm" onClick={onEdit} className="cursor-pointer">
243
+ // --- Secondary actions (desktop: inline buttons, mobile: overflow menu) ---
244
+ const editButton = onEdit ? (
245
+ isEditable ? (
246
+ <Button variant="outline" size="sm" onClick={onEdit} className="cursor-pointer">
247
+ <Pencil className="mr-2 h-4 w-4" />
248
+ {t("Edit")}
249
+ </Button>
250
+ ) : (
251
+ <Tooltip>
252
+ <TooltipTrigger asChild>
253
+ <Button
254
+ variant="outline"
255
+ size="sm"
256
+ aria-disabled="true"
257
+ className="pointer-events-auto opacity-50"
258
+ onClick={(e) => e.preventDefault()}
259
+ >
242
260
  <Pencil className="mr-2 h-4 w-4" />
243
261
  {t("Edit")}
244
262
  </Button>
245
- ) : (
246
- <Tooltip>
247
- <TooltipTrigger asChild>
248
- <Button
249
- variant="outline"
250
- size="sm"
251
- aria-disabled="true"
252
- className="pointer-events-auto opacity-50"
253
- onClick={(e) => e.preventDefault()}
254
- >
255
- <Pencil className="mr-2 h-4 w-4" />
256
- {t("Edit")}
257
- </Button>
258
- </TooltipTrigger>
259
- <TooltipContent>
260
- <p>{editDisabledReason}</p>
261
- </TooltipContent>
262
- </Tooltip>
263
+ </TooltipTrigger>
264
+ <TooltipContent>
265
+ <p>{editDisabledReason}</p>
266
+ </TooltipContent>
267
+ </Tooltip>
268
+ )
269
+ ) : null;
270
+
271
+ const shareButton = shareUrl ? (
272
+ <div className="flex">
273
+ <Tooltip>
274
+ <TooltipTrigger asChild>
275
+ <Button variant="outline" size="sm" onClick={handleCopyShareLink} className="cursor-pointer rounded-r-none">
276
+ {linkCopied ? <Check className="mr-2 h-4 w-4 text-green-600" /> : <Share2 className="mr-2 h-4 w-4" />}
277
+ {linkCopied ? t("Copied") : t("Share")}
278
+ </Button>
279
+ </TooltipTrigger>
280
+ <TooltipContent>
281
+ <p>{t("Copy shareable link")}</p>
282
+ </TooltipContent>
283
+ </Tooltip>
284
+ <DropdownMenu>
285
+ <DropdownMenuTrigger asChild>
286
+ <Button variant="outline" size="sm" className="cursor-pointer rounded-l-none border-l-0 px-2">
287
+ <ChevronDown className="h-4 w-4" />
288
+ </Button>
289
+ </DropdownMenuTrigger>
290
+ <DropdownMenuContent align="end">
291
+ <DropdownMenuItem onClick={handleCopyShareLink} className="cursor-pointer">
292
+ <Share2 className="mr-2 h-4 w-4" />
293
+ {t("Copy shareable link")}
294
+ </DropdownMenuItem>
295
+ <DropdownMenuItem
296
+ onClick={onUnshare}
297
+ disabled={isUnsharing}
298
+ className="hover:!bg-destructive hover:!text-destructive-foreground focus:!bg-destructive focus:!text-destructive-foreground cursor-pointer text-destructive"
299
+ >
300
+ {isUnsharing ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Link2Off className="mr-2 h-4 w-4" />}
301
+ {t("Unshare")}
302
+ </DropdownMenuItem>
303
+ </DropdownMenuContent>
304
+ </DropdownMenu>
305
+ </div>
306
+ ) : onShare ? (
307
+ <Button variant="outline" size="sm" onClick={onShare} disabled={isSharing} className="cursor-pointer">
308
+ {isSharing ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Share2 className="mr-2 h-4 w-4" />}
309
+ {t("Share")}
310
+ </Button>
311
+ ) : null;
312
+
313
+ const recurringButton = onCreateRecurring ? (
314
+ <Button variant="outline" size="sm" onClick={onCreateRecurring} className="cursor-pointer">
315
+ <RefreshCw className="mr-2 h-4 w-4" />
316
+ {recurringLabel || t("Recurring")}
317
+ </Button>
318
+ ) : null;
319
+
320
+ const duplicateButton = onDuplicate ? (
321
+ <DropdownMenu>
322
+ <DropdownMenuTrigger asChild>
323
+ <Button variant="outline" size="sm" className="cursor-pointer">
324
+ <Copy className="mr-2 h-4 w-4" />
325
+ {t("Duplicate")}
326
+ <ChevronDown className="ml-1 h-4 w-4" />
327
+ </Button>
328
+ </DropdownMenuTrigger>
329
+ <DropdownMenuContent align="end">
330
+ {getAllowedDuplicateTargets(documentType).map((targetType) => (
331
+ <DropdownMenuItem key={targetType} onClick={() => onDuplicate(targetType)} className="cursor-pointer">
332
+ {targetType === documentType ? t(`Duplicate ${documentType}`) : t(`Create ${targetType}`)}
333
+ </DropdownMenuItem>
263
334
  ))}
335
+ </DropdownMenuContent>
336
+ </DropdownMenu>
337
+ ) : null;
338
+
339
+ const voidButton =
340
+ !isDraft && onVoid ? (
341
+ <Button variant="destructive" size="sm" onClick={onVoid} disabled={isVoiding} className="cursor-pointer">
342
+ {isVoiding ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Ban className="mr-2 h-4 w-4" />}
343
+ {isVoiding ? t("Voiding...") : t("Void")}
344
+ </Button>
345
+ ) : null;
346
+
347
+ const finalizeButton =
348
+ isDraft && onFinalize ? (
349
+ <Button variant="default" size="sm" onClick={onFinalize} disabled={isFinalizing} className="cursor-pointer">
350
+ {isFinalizing ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <CheckCircle className="mr-2 h-4 w-4" />}
351
+ {t("Finalize")}
352
+ </Button>
353
+ ) : null;
354
+
355
+ const deleteDraftButton =
356
+ isDraft && onDeleteDraft ? (
357
+ <Button
358
+ variant="destructive"
359
+ size="sm"
360
+ onClick={onDeleteDraft}
361
+ disabled={isDeletingDraft}
362
+ className="cursor-pointer"
363
+ >
364
+ {isDeletingDraft ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Trash2 className="mr-2 h-4 w-4" />}
365
+ {t("Delete Draft")}
366
+ </Button>
367
+ ) : null;
368
+
369
+ // Collect secondary items for the mobile overflow menu
370
+ const hasSecondaryActions =
371
+ editButton ||
372
+ shareButton ||
373
+ recurringButton ||
374
+ duplicateButton ||
375
+ voidButton ||
376
+ finalizeButton ||
377
+ deleteDraftButton;
378
+
379
+ return (
380
+ <div className="flex flex-wrap items-center gap-2">
381
+ {/* Primary actions — always visible */}
382
+ {pdfButton}
383
+ {eslogButton}
384
+ {sendButton}
385
+ {paymentButton}
386
+
387
+ {/* Secondary actions — visible on md+ screens as inline buttons */}
388
+ <div className="hidden flex-wrap items-center gap-2 md:flex">
389
+ {editButton}
390
+ {shareButton}
391
+ {recurringButton}
392
+ {duplicateButton}
393
+ {voidButton}
394
+ {finalizeButton}
395
+ {deleteDraftButton}
396
+ </div>
264
397
 
265
- {/* Share Link */}
266
- {shareUrl ? (
267
- <div className="flex">
268
- <Tooltip>
269
- <TooltipTrigger asChild>
270
- <Button
271
- variant="outline"
272
- size="sm"
273
- onClick={handleCopyShareLink}
274
- className="cursor-pointer rounded-r-none"
398
+ {/* Mobile overflow — visible on small screens only */}
399
+ {hasSecondaryActions && (
400
+ <DropdownMenu>
401
+ <DropdownMenuTrigger asChild>
402
+ <Button variant="outline" size="sm" className="cursor-pointer md:hidden">
403
+ <Ellipsis className="h-4 w-4" />
404
+ </Button>
405
+ </DropdownMenuTrigger>
406
+ <DropdownMenuContent align="end">
407
+ {onEdit && (
408
+ <DropdownMenuItem
409
+ onClick={isEditable ? onEdit : undefined}
410
+ disabled={!isEditable}
411
+ className="cursor-pointer"
275
412
  >
276
- {linkCopied ? <Check className="mr-2 h-4 w-4 text-green-600" /> : <Share2 className="mr-2 h-4 w-4" />}
277
- {linkCopied ? t("Copied") : t("Share")}
278
- </Button>
279
- </TooltipTrigger>
280
- <TooltipContent>
281
- <p>{t("Copy shareable link")}</p>
282
- </TooltipContent>
283
- </Tooltip>
284
- <DropdownMenu>
285
- <DropdownMenuTrigger asChild>
286
- <Button variant="outline" size="sm" className="cursor-pointer rounded-l-none border-l-0 px-2">
287
- <ChevronDown className="h-4 w-4" />
288
- </Button>
289
- </DropdownMenuTrigger>
290
- <DropdownMenuContent align="end">
413
+ <Pencil className="mr-2 h-4 w-4" />
414
+ {t("Edit")}
415
+ </DropdownMenuItem>
416
+ )}
417
+ {shareUrl ? (
291
418
  <DropdownMenuItem onClick={handleCopyShareLink} className="cursor-pointer">
292
419
  <Share2 className="mr-2 h-4 w-4" />
293
- {t("Copy shareable link")}
420
+ {linkCopied ? t("Copied") : t("Share")}
421
+ </DropdownMenuItem>
422
+ ) : onShare ? (
423
+ <DropdownMenuItem onClick={onShare} disabled={isSharing} className="cursor-pointer">
424
+ <Share2 className="mr-2 h-4 w-4" />
425
+ {t("Share")}
426
+ </DropdownMenuItem>
427
+ ) : null}
428
+ {onCreateRecurring && (
429
+ <DropdownMenuItem onClick={onCreateRecurring} className="cursor-pointer">
430
+ <RefreshCw className="mr-2 h-4 w-4" />
431
+ {recurringLabel || t("Recurring")}
432
+ </DropdownMenuItem>
433
+ )}
434
+ {onDuplicate && (
435
+ <>
436
+ <DropdownMenuSeparator />
437
+ {getAllowedDuplicateTargets(documentType).map((targetType) => (
438
+ <DropdownMenuItem key={targetType} onClick={() => onDuplicate(targetType)} className="cursor-pointer">
439
+ <Copy className="mr-2 h-4 w-4" />
440
+ {targetType === documentType ? t(`Duplicate ${documentType}`) : t(`Create ${targetType}`)}
441
+ </DropdownMenuItem>
442
+ ))}
443
+ </>
444
+ )}
445
+ {(voidButton || finalizeButton || deleteDraftButton) && <DropdownMenuSeparator />}
446
+ {isDraft && onFinalize && (
447
+ <DropdownMenuItem onClick={onFinalize} disabled={isFinalizing} className="cursor-pointer">
448
+ <CheckCircle className="mr-2 h-4 w-4" />
449
+ {t("Finalize")}
294
450
  </DropdownMenuItem>
451
+ )}
452
+ {!isDraft && onVoid && (
295
453
  <DropdownMenuItem
296
- onClick={onUnshare}
297
- disabled={isUnsharing}
454
+ onClick={onVoid}
455
+ disabled={isVoiding}
298
456
  className="hover:!bg-destructive hover:!text-destructive-foreground focus:!bg-destructive focus:!text-destructive-foreground cursor-pointer text-destructive"
299
457
  >
300
- {isUnsharing ? (
301
- <Loader2 className="mr-2 h-4 w-4 animate-spin" />
302
- ) : (
303
- <Link2Off className="mr-2 h-4 w-4" />
304
- )}
305
- {t("Unshare")}
458
+ <Ban className="mr-2 h-4 w-4" />
459
+ {t("Void")}
306
460
  </DropdownMenuItem>
307
- </DropdownMenuContent>
308
- </DropdownMenu>
309
- </div>
310
- ) : onShare ? (
311
- <Button variant="outline" size="sm" onClick={onShare} disabled={isSharing} className="cursor-pointer">
312
- {isSharing ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Share2 className="mr-2 h-4 w-4" />}
313
- {t("Share")}
314
- </Button>
315
- ) : null}
316
-
317
- {/* Recurring */}
318
- {onCreateRecurring && (
319
- <Button variant="outline" size="sm" onClick={onCreateRecurring} className="cursor-pointer">
320
- <RefreshCw className="mr-2 h-4 w-4" />
321
- {recurringLabel || t("Recurring")}
322
- </Button>
323
- )}
324
-
325
- {/* Duplicate/Convert */}
326
- {onDuplicate && (
327
- <DropdownMenu>
328
- <DropdownMenuTrigger asChild>
329
- <Button variant="outline" size="sm" className="cursor-pointer">
330
- <Copy className="mr-2 h-4 w-4" />
331
- {t("Duplicate")}
332
- <ChevronDown className="ml-1 h-4 w-4" />
333
- </Button>
334
- </DropdownMenuTrigger>
335
- <DropdownMenuContent align="end">
336
- {getAllowedDuplicateTargets(documentType).map((targetType) => (
337
- <DropdownMenuItem key={targetType} onClick={() => onDuplicate(targetType)} className="cursor-pointer">
338
- {targetType === documentType ? t(`Duplicate ${documentType}`) : t(`Create ${targetType}`)}
461
+ )}
462
+ {isDraft && onDeleteDraft && (
463
+ <DropdownMenuItem
464
+ onClick={onDeleteDraft}
465
+ disabled={isDeletingDraft}
466
+ className="hover:!bg-destructive hover:!text-destructive-foreground focus:!bg-destructive focus:!text-destructive-foreground cursor-pointer text-destructive"
467
+ >
468
+ <Trash2 className="mr-2 h-4 w-4" />
469
+ {t("Delete Draft")}
339
470
  </DropdownMenuItem>
340
- ))}
471
+ )}
341
472
  </DropdownMenuContent>
342
473
  </DropdownMenu>
343
474
  )}
344
-
345
- {/* Void */}
346
- {!isDraft && onVoid && (
347
- <Button variant="destructive" size="sm" onClick={onVoid} disabled={isVoiding} className="cursor-pointer">
348
- {isVoiding ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Ban className="mr-2 h-4 w-4" />}
349
- {isVoiding ? t("Voiding...") : t("Void")}
350
- </Button>
351
- )}
352
-
353
- {/* Draft Actions */}
354
- {isDraft && onFinalize && (
355
- <Button variant="default" size="sm" onClick={onFinalize} disabled={isFinalizing} className="cursor-pointer">
356
- {isFinalizing ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <CheckCircle className="mr-2 h-4 w-4" />}
357
- {t("Finalize")}
358
- </Button>
359
- )}
360
-
361
- {isDraft && onDeleteDraft && (
362
- <Button
363
- variant="destructive"
364
- size="sm"
365
- onClick={onDeleteDraft}
366
- disabled={isDeletingDraft}
367
- className="cursor-pointer"
368
- >
369
- {isDeletingDraft ? <Loader2 className="mr-2 h-4 w-4 animate-spin" /> : <Trash2 className="mr-2 h-4 w-4" />}
370
- {t("Delete Draft")}
371
- </Button>
372
- )}
373
475
  </div>
374
476
  );
375
477
  }
@@ -91,6 +91,9 @@ export function DocumentActivitiesList({
91
91
  });
92
92
  },
93
93
  enabled: !!sdk && !!entityId && !!documentId,
94
+ staleTime: 15_000,
95
+ gcTime: 300_000,
96
+ refetchOnWindowFocus: false,
94
97
  });
95
98
 
96
99
  const activities = activitiesData?.data || [];
@@ -135,6 +135,9 @@ export function DocumentPaymentsList({
135
135
  return response.data;
136
136
  },
137
137
  enabled: !!sdk && !!entityId && !!documentId,
138
+ staleTime: 30_000,
139
+ gcTime: 600_000,
140
+ refetchOnWindowFocus: false,
138
141
  });
139
142
 
140
143
  const payments = paymentsData || [];
@@ -124,6 +124,14 @@ export default {
124
124
  Dutch: "Niederländisch",
125
125
  Polish: "Polnisch",
126
126
  Croatian: "Kroatisch",
127
+ Swedish: "Schwedisch",
128
+ Finnish: "Finnisch",
129
+ Estonian: "Estnisch",
130
+ Bulgarian: "Bulgarisch",
131
+ Czech: "Tschechisch",
132
+ Slovak: "Slowakisch",
133
+ Norwegian: "Norwegisch",
134
+ Icelandic: "Isländisch",
127
135
 
128
136
  // Linked documents
129
137
  "Linked documents": "Verknüpfte Dokumente",
@@ -122,6 +122,14 @@ export default {
122
122
  Dutch: "Neerlandés",
123
123
  Polish: "Polaco",
124
124
  Croatian: "Croata",
125
+ Swedish: "Sueco",
126
+ Finnish: "Finlandés",
127
+ Estonian: "Estonio",
128
+ Bulgarian: "Búlgaro",
129
+ Czech: "Checo",
130
+ Slovak: "Eslovaco",
131
+ Norwegian: "Noruego",
132
+ Icelandic: "Islandés",
125
133
 
126
134
  // Linked documents
127
135
  "Linked documents": "Documentos vinculados",
@@ -122,6 +122,14 @@ export default {
122
122
  Dutch: "Néerlandais",
123
123
  Polish: "Polonais",
124
124
  Croatian: "Croate",
125
+ Swedish: "Suédois",
126
+ Finnish: "Finnois",
127
+ Estonian: "Estonien",
128
+ Bulgarian: "Bulgare",
129
+ Czech: "Tchèque",
130
+ Slovak: "Slovaque",
131
+ Norwegian: "Norvégien",
132
+ Icelandic: "Islandais",
125
133
 
126
134
  // Linked documents
127
135
  "Linked documents": "Documents liés",
@@ -122,6 +122,14 @@ export default {
122
122
  Dutch: "Nizozemski",
123
123
  Polish: "Poljski",
124
124
  Croatian: "Hrvatski",
125
+ Swedish: "Švedski",
126
+ Finnish: "Finski",
127
+ Estonian: "Estonski",
128
+ Bulgarian: "Bugarski",
129
+ Czech: "Češki",
130
+ Slovak: "Slovački",
131
+ Norwegian: "Norveški",
132
+ Icelandic: "Islandski",
125
133
 
126
134
  // Linked documents
127
135
  "Linked documents": "Povezani dokumenti",
@@ -122,6 +122,14 @@ export default {
122
122
  Dutch: "Olandese",
123
123
  Polish: "Polacco",
124
124
  Croatian: "Croato",
125
+ Swedish: "Svedese",
126
+ Finnish: "Finlandese",
127
+ Estonian: "Estone",
128
+ Bulgarian: "Bulgaro",
129
+ Czech: "Ceco",
130
+ Slovak: "Slovacco",
131
+ Norwegian: "Norvegese",
132
+ Icelandic: "Islandese",
125
133
 
126
134
  // Linked documents
127
135
  "Linked documents": "Documenti collegati",
@@ -123,6 +123,14 @@ export default {
123
123
  Dutch: "Nederlands",
124
124
  Polish: "Pools",
125
125
  Croatian: "Kroatisch",
126
+ Swedish: "Zweeds",
127
+ Finnish: "Fins",
128
+ Estonian: "Estlands",
129
+ Bulgarian: "Bulgaars",
130
+ Czech: "Tsjechisch",
131
+ Slovak: "Slowaaks",
132
+ Norwegian: "Noors",
133
+ Icelandic: "IJslands",
126
134
 
127
135
  // Linked documents
128
136
  "Linked documents": "Gekoppelde documenten",
@@ -122,6 +122,14 @@ export default {
122
122
  Dutch: "Niderlandzki",
123
123
  Polish: "Polski",
124
124
  Croatian: "Chorwacki",
125
+ Swedish: "Szwedzki",
126
+ Finnish: "Fiński",
127
+ Estonian: "Estoński",
128
+ Bulgarian: "Bułgarski",
129
+ Czech: "Czeski",
130
+ Slovak: "Słowacki",
131
+ Norwegian: "Norweski",
132
+ Icelandic: "Islandzki",
125
133
 
126
134
  // Linked documents
127
135
  "Linked documents": "Powiązane dokumenty",