@spaceinvoices/react-ui 0.4.10 → 0.4.12

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 (638) hide show
  1. package/README.md +24 -8
  2. package/cli/dist/index.js +89 -26
  3. package/package.json +6 -2
  4. package/registry.json +30 -31
  5. package/spaceinvoices.schema.json +6 -1
  6. package/src/common/autocomplete.tsx +41 -25
  7. package/src/components/activities/locales/bg.ts +21 -0
  8. package/src/components/activities/locales/cs.ts +21 -0
  9. package/src/components/activities/locales/en.ts +21 -0
  10. package/src/components/activities/locales/et.ts +21 -0
  11. package/src/components/activities/locales/fi.ts +21 -0
  12. package/src/components/activities/locales/is.ts +21 -0
  13. package/src/components/activities/locales/nb.ts +21 -0
  14. package/src/components/activities/locales/sk.ts +21 -0
  15. package/src/components/activities/locales/sv.ts +21 -0
  16. package/src/components/advance-invoices/advance-invoices.hooks.ts +2 -3
  17. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +290 -69
  18. package/src/components/advance-invoices/create/locales/bg.ts +48 -0
  19. package/src/components/advance-invoices/create/locales/cs.ts +48 -0
  20. package/src/components/advance-invoices/create/locales/en.ts +48 -0
  21. package/src/components/advance-invoices/create/locales/et.ts +48 -0
  22. package/src/components/advance-invoices/create/locales/fi.ts +48 -0
  23. package/src/components/advance-invoices/create/locales/hr.ts +17 -17
  24. package/src/components/advance-invoices/create/locales/is.ts +48 -0
  25. package/src/components/advance-invoices/create/locales/nb.ts +48 -0
  26. package/src/components/advance-invoices/create/locales/sk.ts +48 -0
  27. package/src/components/advance-invoices/create/locales/sl.ts +9 -7
  28. package/src/components/advance-invoices/create/locales/sv.ts +48 -0
  29. package/src/components/advance-invoices/create/prepare-advance-invoice-submission.ts +16 -2
  30. package/src/components/advance-invoices/list/list-row-actions.tsx +48 -16
  31. package/src/components/advance-invoices/list/list-table.tsx +33 -8
  32. package/src/components/advance-invoices/list/locales/bg.ts +51 -0
  33. package/src/components/advance-invoices/list/locales/cs.ts +51 -0
  34. package/src/components/advance-invoices/list/locales/en.ts +33 -2
  35. package/src/components/advance-invoices/list/locales/et.ts +51 -0
  36. package/src/components/advance-invoices/list/locales/fi.ts +51 -0
  37. package/src/components/advance-invoices/list/locales/hr.ts +15 -15
  38. package/src/components/advance-invoices/list/locales/is.ts +51 -0
  39. package/src/components/advance-invoices/list/locales/nb.ts +51 -0
  40. package/src/components/advance-invoices/list/locales/sk.ts +51 -0
  41. package/src/components/advance-invoices/list/locales/sv.ts +51 -0
  42. package/src/components/advance-invoices/list/use-advance-invoice-download.ts +3 -5
  43. package/src/components/common/autocomplete-locales.ts +101 -0
  44. package/src/components/company-registry/company-registry.hooks.ts +3 -7
  45. package/src/components/credit-notes/create/create-credit-note-form.tsx +211 -22
  46. package/src/components/credit-notes/create/locales/bg.ts +87 -0
  47. package/src/components/credit-notes/create/locales/cs.ts +87 -0
  48. package/src/components/credit-notes/create/locales/en.ts +87 -0
  49. package/src/components/credit-notes/create/locales/et.ts +87 -0
  50. package/src/components/credit-notes/create/locales/fi.ts +87 -0
  51. package/src/components/credit-notes/create/locales/hr.ts +24 -24
  52. package/src/components/credit-notes/create/locales/is.ts +87 -0
  53. package/src/components/credit-notes/create/locales/nb.ts +87 -0
  54. package/src/components/credit-notes/create/locales/sk.ts +87 -0
  55. package/src/components/credit-notes/create/locales/sl.ts +9 -9
  56. package/src/components/credit-notes/create/locales/sv.ts +87 -0
  57. package/src/components/credit-notes/create/prepare-credit-note-submission.ts +32 -0
  58. package/src/components/credit-notes/credit-notes.hooks.ts +15 -3
  59. package/src/components/credit-notes/list/list-row-actions.tsx +19 -7
  60. package/src/components/credit-notes/list/list-table.tsx +58 -7
  61. package/src/components/credit-notes/list/locales/bg.ts +48 -0
  62. package/src/components/credit-notes/list/locales/cs.ts +48 -0
  63. package/src/components/credit-notes/list/locales/en.ts +31 -2
  64. package/src/components/credit-notes/list/locales/et.ts +48 -0
  65. package/src/components/credit-notes/list/locales/fi.ts +48 -0
  66. package/src/components/credit-notes/list/locales/hr.ts +12 -12
  67. package/src/components/credit-notes/list/locales/is.ts +48 -0
  68. package/src/components/credit-notes/list/locales/nb.ts +48 -0
  69. package/src/components/credit-notes/list/locales/sk.ts +48 -0
  70. package/src/components/credit-notes/list/locales/sv.ts +48 -0
  71. package/src/components/credit-notes/list/use-credit-note-download.ts +3 -5
  72. package/src/components/customers/create-customer-form/locales/bg.ts +21 -0
  73. package/src/components/customers/create-customer-form/locales/cs.ts +21 -0
  74. package/src/components/customers/create-customer-form/locales/en.ts +21 -0
  75. package/src/components/customers/create-customer-form/locales/et.ts +21 -0
  76. package/src/components/customers/create-customer-form/locales/fi.ts +21 -0
  77. package/src/components/customers/create-customer-form/locales/hr.ts +11 -11
  78. package/src/components/customers/create-customer-form/locales/is.ts +21 -0
  79. package/src/components/customers/create-customer-form/locales/nb.ts +21 -0
  80. package/src/components/customers/create-customer-form/locales/sk.ts +21 -0
  81. package/src/components/customers/create-customer-form/locales/sv.ts +21 -0
  82. package/src/components/customers/customer-autocomplete.tsx +32 -4
  83. package/src/components/customers/customer-list-table/customer-list-table.tsx +8 -6
  84. package/src/components/customers/customer-list-table/locales/bg.ts +25 -0
  85. package/src/components/customers/customer-list-table/locales/cs.ts +25 -0
  86. package/src/components/customers/customer-list-table/locales/en.ts +17 -2
  87. package/src/components/customers/customer-list-table/locales/et.ts +25 -0
  88. package/src/components/customers/customer-list-table/locales/fi.ts +25 -0
  89. package/src/components/customers/customer-list-table/locales/hr.ts +11 -11
  90. package/src/components/customers/customer-list-table/locales/is.ts +25 -0
  91. package/src/components/customers/customer-list-table/locales/nb.ts +25 -0
  92. package/src/components/customers/customer-list-table/locales/sk.ts +25 -0
  93. package/src/components/customers/customer-list-table/locales/sv.ts +25 -0
  94. package/src/components/customers/customers.hooks.ts +14 -17
  95. package/src/components/customers/edit-customer-form/locales/bg.ts +13 -0
  96. package/src/components/customers/edit-customer-form/locales/cs.ts +13 -0
  97. package/src/components/customers/edit-customer-form/locales/en.ts +13 -0
  98. package/src/components/customers/edit-customer-form/locales/et.ts +13 -0
  99. package/src/components/customers/edit-customer-form/locales/fi.ts +13 -0
  100. package/src/components/customers/edit-customer-form/locales/hr.ts +5 -5
  101. package/src/components/customers/edit-customer-form/locales/is.ts +13 -0
  102. package/src/components/customers/edit-customer-form/locales/nb.ts +13 -0
  103. package/src/components/customers/edit-customer-form/locales/sk.ts +13 -0
  104. package/src/components/customers/edit-customer-form/locales/sv.ts +13 -0
  105. package/src/components/dashboard/collection-rate-card/collection-rate-card.tsx +7 -6
  106. package/src/components/dashboard/collection-rate-card/locales/en.ts +3 -0
  107. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +8 -7
  108. package/src/components/dashboard/invoice-status-chart/invoice-status-chart.tsx +7 -4
  109. package/src/components/dashboard/invoice-status-chart/locales/bg.ts +5 -5
  110. package/src/components/dashboard/invoice-status-chart/locales/cs.ts +5 -5
  111. package/src/components/dashboard/invoice-status-chart/locales/de.ts +1 -1
  112. package/src/components/dashboard/invoice-status-chart/locales/en.ts +10 -0
  113. package/src/components/dashboard/invoice-status-chart/locales/es.ts +1 -1
  114. package/src/components/dashboard/invoice-status-chart/locales/et.ts +5 -5
  115. package/src/components/dashboard/invoice-status-chart/locales/fi.ts +5 -5
  116. package/src/components/dashboard/invoice-status-chart/locales/fr.ts +1 -1
  117. package/src/components/dashboard/invoice-status-chart/locales/hr.ts +5 -5
  118. package/src/components/dashboard/invoice-status-chart/locales/is.ts +5 -5
  119. package/src/components/dashboard/invoice-status-chart/locales/it.ts +1 -1
  120. package/src/components/dashboard/invoice-status-chart/locales/nb.ts +5 -5
  121. package/src/components/dashboard/invoice-status-chart/locales/nl.ts +1 -1
  122. package/src/components/dashboard/invoice-status-chart/locales/pl.ts +1 -1
  123. package/src/components/dashboard/invoice-status-chart/locales/pt.ts +1 -1
  124. package/src/components/dashboard/invoice-status-chart/locales/sk.ts +5 -5
  125. package/src/components/dashboard/invoice-status-chart/locales/sl.ts +1 -1
  126. package/src/components/dashboard/invoice-status-chart/locales/sv.ts +5 -5
  127. package/src/components/dashboard/payment-methods-chart/locales/bg.ts +5 -5
  128. package/src/components/dashboard/payment-methods-chart/locales/cs.ts +5 -5
  129. package/src/components/dashboard/payment-methods-chart/locales/en.ts +12 -0
  130. package/src/components/dashboard/payment-methods-chart/locales/et.ts +5 -5
  131. package/src/components/dashboard/payment-methods-chart/locales/fi.ts +6 -6
  132. package/src/components/dashboard/payment-methods-chart/locales/hr.ts +3 -3
  133. package/src/components/dashboard/payment-methods-chart/locales/is.ts +5 -5
  134. package/src/components/dashboard/payment-methods-chart/locales/nb.ts +5 -5
  135. package/src/components/dashboard/payment-methods-chart/locales/sk.ts +5 -5
  136. package/src/components/dashboard/payment-methods-chart/locales/sv.ts +5 -5
  137. package/src/components/dashboard/payment-methods-chart/payment-methods-chart.tsx +4 -3
  138. package/src/components/dashboard/payment-trend-chart/locales/bg.ts +1 -1
  139. package/src/components/dashboard/payment-trend-chart/locales/cs.ts +1 -1
  140. package/src/components/dashboard/payment-trend-chart/locales/en.ts +6 -0
  141. package/src/components/dashboard/payment-trend-chart/locales/et.ts +1 -1
  142. package/src/components/dashboard/payment-trend-chart/locales/fi.ts +1 -1
  143. package/src/components/dashboard/payment-trend-chart/locales/is.ts +1 -1
  144. package/src/components/dashboard/payment-trend-chart/locales/nb.ts +1 -1
  145. package/src/components/dashboard/payment-trend-chart/locales/sk.ts +1 -1
  146. package/src/components/dashboard/payment-trend-chart/locales/sv.ts +1 -1
  147. package/src/components/dashboard/payment-trend-chart/payment-trend-chart.tsx +4 -3
  148. package/src/components/dashboard/payment-trend-chart/use-payment-trend.ts +12 -9
  149. package/src/components/dashboard/revenue-card.tsx +3 -3
  150. package/src/components/dashboard/revenue-trend-chart/locales/bg.ts +1 -1
  151. package/src/components/dashboard/revenue-trend-chart/locales/cs.ts +1 -1
  152. package/src/components/dashboard/revenue-trend-chart/locales/en.ts +6 -0
  153. package/src/components/dashboard/revenue-trend-chart/locales/et.ts +1 -1
  154. package/src/components/dashboard/revenue-trend-chart/locales/fi.ts +1 -1
  155. package/src/components/dashboard/revenue-trend-chart/locales/is.ts +1 -1
  156. package/src/components/dashboard/revenue-trend-chart/locales/nb.ts +1 -1
  157. package/src/components/dashboard/revenue-trend-chart/locales/sk.ts +1 -1
  158. package/src/components/dashboard/revenue-trend-chart/locales/sv.ts +1 -1
  159. package/src/components/dashboard/revenue-trend-chart/revenue-trend-chart.tsx +4 -3
  160. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +4 -3
  161. package/src/components/dashboard/shared/local-date.ts +11 -0
  162. package/src/components/dashboard/shared/use-revenue-data.ts +6 -5
  163. package/src/components/dashboard/shared/use-stats-query.ts +7 -11
  164. package/src/components/dashboard/stat-card.tsx +3 -3
  165. package/src/components/dashboard/tax-collected-card/tax-collected-card.tsx +11 -9
  166. package/src/components/dashboard/tax-collected-card/use-tax-collected.ts +3 -2
  167. package/src/components/dashboard/top-customers-chart/locales/bg.ts +2 -2
  168. package/src/components/dashboard/top-customers-chart/locales/cs.ts +2 -2
  169. package/src/components/dashboard/top-customers-chart/locales/en.ts +7 -0
  170. package/src/components/dashboard/top-customers-chart/locales/et.ts +2 -2
  171. package/src/components/dashboard/top-customers-chart/locales/fi.ts +2 -2
  172. package/src/components/dashboard/top-customers-chart/locales/is.ts +2 -2
  173. package/src/components/dashboard/top-customers-chart/locales/nb.ts +2 -2
  174. package/src/components/dashboard/top-customers-chart/locales/sk.ts +2 -2
  175. package/src/components/dashboard/top-customers-chart/locales/sv.ts +2 -2
  176. package/src/components/dashboard/top-customers-chart/top-customers-chart.tsx +4 -3
  177. package/src/components/dashboard/top-customers-chart/use-top-customers.ts +7 -20
  178. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +61 -31
  179. package/src/components/delivery-notes/create/locales/bg.ts +68 -0
  180. package/src/components/delivery-notes/create/locales/cs.ts +68 -0
  181. package/src/components/delivery-notes/create/locales/en.ts +68 -0
  182. package/src/components/delivery-notes/create/locales/et.ts +68 -0
  183. package/src/components/delivery-notes/create/locales/fi.ts +68 -0
  184. package/src/components/delivery-notes/create/locales/hr.ts +6 -6
  185. package/src/components/delivery-notes/create/locales/is.ts +68 -0
  186. package/src/components/delivery-notes/create/locales/nb.ts +68 -0
  187. package/src/components/delivery-notes/create/locales/sk.ts +68 -0
  188. package/src/components/delivery-notes/create/locales/sl.ts +5 -5
  189. package/src/components/delivery-notes/create/locales/sv.ts +68 -0
  190. package/src/components/delivery-notes/delivery-notes.hooks.ts +20 -3
  191. package/src/components/delivery-notes/list/list-row-actions.tsx +62 -16
  192. package/src/components/delivery-notes/list/list-table.tsx +42 -9
  193. package/src/components/delivery-notes/list/locales/bg.ts +40 -0
  194. package/src/components/delivery-notes/list/locales/cs.ts +40 -0
  195. package/src/components/delivery-notes/list/locales/et.ts +40 -0
  196. package/src/components/delivery-notes/list/locales/fi.ts +40 -0
  197. package/src/components/delivery-notes/list/locales/is.ts +40 -0
  198. package/src/components/delivery-notes/list/locales/nb.ts +40 -0
  199. package/src/components/delivery-notes/list/locales/sk.ts +40 -0
  200. package/src/components/delivery-notes/list/locales/sv.ts +40 -0
  201. package/src/components/delivery-notes/list/use-delivery-note-download.ts +3 -5
  202. package/src/components/documents/create/document-add-item-form.tsx +256 -147
  203. package/src/components/documents/create/document-add-item-tax-rate-field.tsx +2 -1
  204. package/src/components/documents/create/document-details-section.tsx +30 -12
  205. package/src/components/documents/create/document-item-validation.ts +50 -0
  206. package/src/components/documents/create/document-items-section.tsx +44 -6
  207. package/src/components/documents/create/document-recipient-section.tsx +10 -2
  208. package/src/components/documents/create/linked-documents-info.tsx +4 -3
  209. package/src/components/documents/create/live-preview.tsx +19 -15
  210. package/src/components/documents/create/mark-as-paid-section.tsx +77 -20
  211. package/src/components/documents/create/payment-rows.ts +291 -0
  212. package/src/components/documents/create/prepare-document-submission.ts +24 -13
  213. package/src/components/documents/create/scroll-to-first-invalid-field.ts +27 -0
  214. package/src/components/documents/create/smart-code-insert-button.tsx +5 -53
  215. package/src/components/documents/create/use-document-customer-form.ts +74 -25
  216. package/src/components/documents/documents.hooks.ts +3 -5
  217. package/src/components/documents/index.ts +1 -0
  218. package/src/components/documents/public/index.ts +1 -0
  219. package/src/components/documents/public/public-document-summary.tsx +343 -0
  220. package/src/components/documents/shared/document-preview-display.tsx +65 -39
  221. package/src/components/documents/shared/index.ts +6 -1
  222. package/src/components/documents/shared/scaled-document-preview.tsx +33 -19
  223. package/src/components/documents/types.ts +24 -0
  224. package/src/components/documents/view/document-actions-bar.tsx +241 -62
  225. package/src/components/documents/view/document-activities-list.tsx +23 -11
  226. package/src/components/documents/view/document-details-card.tsx +7 -27
  227. package/src/components/documents/view/document-payments-list.tsx +114 -57
  228. package/src/components/documents/view/document-relations-list.tsx +26 -6
  229. package/src/components/documents/view/document-sidebar.tsx +25 -3
  230. package/src/components/documents/view/document-version-history.tsx +137 -0
  231. package/src/components/documents/view/index.ts +1 -0
  232. package/src/components/documents/view/locales/bg.ts +143 -0
  233. package/src/components/documents/view/locales/cs.ts +143 -0
  234. package/src/components/documents/view/locales/de.ts +13 -0
  235. package/src/components/documents/view/locales/en.ts +143 -0
  236. package/src/components/documents/view/locales/es.ts +13 -0
  237. package/src/components/documents/view/locales/et.ts +143 -0
  238. package/src/components/documents/view/locales/fi.ts +143 -0
  239. package/src/components/documents/view/locales/fr.ts +13 -0
  240. package/src/components/documents/view/locales/hr.ts +13 -0
  241. package/src/components/documents/view/locales/is.ts +143 -0
  242. package/src/components/documents/view/locales/it.ts +13 -0
  243. package/src/components/documents/view/locales/nb.ts +143 -0
  244. package/src/components/documents/view/locales/nl.ts +13 -0
  245. package/src/components/documents/view/locales/pl.ts +13 -0
  246. package/src/components/documents/view/locales/pt.ts +13 -0
  247. package/src/components/documents/view/locales/sk.ts +143 -0
  248. package/src/components/documents/view/locales/sl.ts +13 -0
  249. package/src/components/documents/view/locales/sv.ts +143 -0
  250. package/src/components/documents/view/use-document-download.ts +18 -17
  251. package/src/components/entities/create-entity-form.tsx +200 -12
  252. package/src/components/entities/entities.hooks.ts +15 -7
  253. package/src/components/entities/entity-settings-form/entity-settings-form.tsx +131 -75
  254. package/src/components/entities/entity-settings-form/input-with-preview.tsx +28 -4
  255. package/src/components/entities/entity-settings-form/locales/bg.ts +199 -0
  256. package/src/components/entities/entity-settings-form/locales/cs.ts +199 -0
  257. package/src/components/entities/entity-settings-form/locales/de.ts +18 -3
  258. package/src/components/entities/entity-settings-form/locales/en.ts +199 -0
  259. package/src/components/entities/entity-settings-form/locales/es.ts +18 -3
  260. package/src/components/entities/entity-settings-form/locales/et.ts +198 -0
  261. package/src/components/entities/entity-settings-form/locales/fi.ts +199 -0
  262. package/src/components/entities/entity-settings-form/locales/fr.ts +18 -3
  263. package/src/components/entities/entity-settings-form/locales/hr.ts +26 -11
  264. package/src/components/entities/entity-settings-form/locales/is.ts +199 -0
  265. package/src/components/entities/entity-settings-form/locales/it.ts +18 -3
  266. package/src/components/entities/entity-settings-form/locales/nb.ts +199 -0
  267. package/src/components/entities/entity-settings-form/locales/nl.ts +18 -3
  268. package/src/components/entities/entity-settings-form/locales/pl.ts +18 -3
  269. package/src/components/entities/entity-settings-form/locales/pt.ts +18 -3
  270. package/src/components/entities/entity-settings-form/locales/sk.ts +199 -0
  271. package/src/components/entities/entity-settings-form/locales/sl.ts +30 -15
  272. package/src/components/entities/entity-settings-form/locales/sv.ts +205 -0
  273. package/src/components/entities/fina-settings-form/fina-operator-required-dialog.tsx +34 -9
  274. package/src/components/entities/fina-settings-form/fina-settings-form.tsx +2 -0
  275. package/src/components/entities/fina-settings-form/fina-settings.hooks.ts +14 -45
  276. package/src/components/entities/fina-settings-form/locales/bg.ts +163 -0
  277. package/src/components/entities/fina-settings-form/locales/cs.ts +163 -0
  278. package/src/components/entities/fina-settings-form/locales/et.ts +163 -0
  279. package/src/components/entities/fina-settings-form/locales/fi.ts +163 -0
  280. package/src/components/entities/fina-settings-form/locales/hr.ts +11 -10
  281. package/src/components/entities/fina-settings-form/locales/is.ts +164 -0
  282. package/src/components/entities/fina-settings-form/locales/nb.ts +163 -0
  283. package/src/components/entities/fina-settings-form/locales/sk.ts +163 -0
  284. package/src/components/entities/fina-settings-form/locales/sl.ts +8 -7
  285. package/src/components/entities/fina-settings-form/locales/sv.ts +165 -0
  286. package/src/components/entities/furs-settings-form/furs-operator-required-dialog.tsx +34 -9
  287. package/src/components/entities/furs-settings-form/furs-settings-form.tsx +13 -1
  288. package/src/components/entities/furs-settings-form/furs-settings.hooks.ts +141 -42
  289. package/src/components/entities/furs-settings-form/locales/bg.ts +242 -0
  290. package/src/components/entities/furs-settings-form/locales/cs.ts +241 -0
  291. package/src/components/entities/furs-settings-form/locales/de.ts +42 -15
  292. package/src/components/entities/furs-settings-form/locales/en.ts +24 -0
  293. package/src/components/entities/furs-settings-form/locales/es.ts +42 -15
  294. package/src/components/entities/furs-settings-form/locales/et.ts +242 -0
  295. package/src/components/entities/furs-settings-form/locales/fi.ts +243 -0
  296. package/src/components/entities/furs-settings-form/locales/fr.ts +43 -15
  297. package/src/components/entities/furs-settings-form/locales/hr.ts +44 -19
  298. package/src/components/entities/furs-settings-form/locales/is.ts +242 -0
  299. package/src/components/entities/furs-settings-form/locales/it.ts +42 -15
  300. package/src/components/entities/furs-settings-form/locales/nb.ts +242 -0
  301. package/src/components/entities/furs-settings-form/locales/nl.ts +42 -15
  302. package/src/components/entities/furs-settings-form/locales/pl.ts +40 -15
  303. package/src/components/entities/furs-settings-form/locales/pt.ts +42 -15
  304. package/src/components/entities/furs-settings-form/locales/sk.ts +243 -0
  305. package/src/components/entities/furs-settings-form/locales/sl.ts +34 -10
  306. package/src/components/entities/furs-settings-form/locales/sv.ts +242 -0
  307. package/src/components/entities/furs-settings-form/sections/enable-fiscalization-section.tsx +11 -0
  308. package/src/components/entities/furs-settings-form/sections/furs-internal-act-download-card.tsx +111 -0
  309. package/src/components/entities/furs-settings-form/sections/general-settings-section.tsx +27 -0
  310. package/src/components/entities/furs-settings-form/sections/premises-management-section.tsx +23 -16
  311. package/src/components/entities/furs-settings-form/sections/register-premise-dialog.tsx +89 -31
  312. package/src/components/entities/settings/branding-settings-form.tsx +11 -30
  313. package/src/components/entities/settings/company-settings-form.tsx +2 -1
  314. package/src/components/entities/settings/defaults-settings-form.tsx +112 -9
  315. package/src/components/entities/settings/email-settings-form.tsx +245 -3
  316. package/src/components/entities/settings/eslog-settings-form.tsx +2 -1
  317. package/src/components/entities/settings/number-format-settings-form.tsx +2 -1
  318. package/src/components/entities/settings/pdf-template-selector/locales/bg.ts +20 -0
  319. package/src/components/entities/settings/pdf-template-selector/locales/cs.ts +20 -0
  320. package/src/components/entities/settings/pdf-template-selector/locales/en.ts +20 -0
  321. package/src/components/entities/settings/pdf-template-selector/locales/et.ts +19 -0
  322. package/src/components/entities/settings/pdf-template-selector/locales/fi.ts +20 -0
  323. package/src/components/entities/settings/pdf-template-selector/locales/is.ts +19 -0
  324. package/src/components/entities/settings/pdf-template-selector/locales/nb.ts +19 -0
  325. package/src/components/entities/settings/pdf-template-selector/locales/sk.ts +20 -0
  326. package/src/components/entities/settings/pdf-template-selector/locales/sv.ts +19 -0
  327. package/src/components/entities/settings/tax-rules-settings-form.tsx +21 -6
  328. package/src/components/estimates/create/create-estimate-form.tsx +70 -34
  329. package/src/components/estimates/create/locales/bg.ts +76 -0
  330. package/src/components/estimates/create/locales/cs.ts +76 -0
  331. package/src/components/estimates/create/locales/en.ts +76 -0
  332. package/src/components/estimates/create/locales/et.ts +76 -0
  333. package/src/components/estimates/create/locales/fi.ts +76 -0
  334. package/src/components/estimates/create/locales/hr.ts +8 -8
  335. package/src/components/estimates/create/locales/is.ts +76 -0
  336. package/src/components/estimates/create/locales/nb.ts +76 -0
  337. package/src/components/estimates/create/locales/sk.ts +76 -0
  338. package/src/components/estimates/create/locales/sl.ts +8 -8
  339. package/src/components/estimates/create/locales/sv.ts +76 -0
  340. package/src/components/estimates/create/prepare-estimate-submission.ts +4 -1
  341. package/src/components/estimates/estimates.hooks.ts +15 -3
  342. package/src/components/estimates/list/list-row-actions.tsx +34 -7
  343. package/src/components/estimates/list/list-table.tsx +78 -10
  344. package/src/components/estimates/list/locales/bg.ts +38 -0
  345. package/src/components/estimates/list/locales/cs.ts +38 -0
  346. package/src/components/estimates/list/locales/en.ts +27 -2
  347. package/src/components/estimates/list/locales/et.ts +38 -0
  348. package/src/components/estimates/list/locales/fi.ts +38 -0
  349. package/src/components/estimates/list/locales/hr.ts +2 -2
  350. package/src/components/estimates/list/locales/is.ts +38 -0
  351. package/src/components/estimates/list/locales/nb.ts +38 -0
  352. package/src/components/estimates/list/locales/sk.ts +38 -0
  353. package/src/components/estimates/list/locales/sv.ts +38 -0
  354. package/src/components/estimates/list/use-estimate-download.ts +3 -5
  355. package/src/components/export/document-export-form.tsx +72 -15
  356. package/src/components/export/sales-per-item-export-form.tsx +3 -2
  357. package/src/components/invoices/create/create-invoice-form.tsx +294 -76
  358. package/src/components/invoices/create/eslog-validation.ts +97 -8
  359. package/src/components/invoices/create/locales/bg.ts +164 -0
  360. package/src/components/invoices/create/locales/cs.ts +164 -0
  361. package/src/components/invoices/create/locales/de.ts +24 -0
  362. package/src/components/invoices/create/locales/en.ts +164 -0
  363. package/src/components/invoices/create/locales/es.ts +24 -0
  364. package/src/components/invoices/create/locales/et.ts +164 -0
  365. package/src/components/invoices/create/locales/fi.ts +164 -0
  366. package/src/components/invoices/create/locales/fr.ts +23 -0
  367. package/src/components/invoices/create/locales/hr.ts +32 -9
  368. package/src/components/invoices/create/locales/is.ts +164 -0
  369. package/src/components/invoices/create/locales/it.ts +24 -0
  370. package/src/components/invoices/create/locales/nb.ts +164 -0
  371. package/src/components/invoices/create/locales/nl.ts +23 -0
  372. package/src/components/invoices/create/locales/pl.ts +23 -0
  373. package/src/components/invoices/create/locales/pt.ts +24 -0
  374. package/src/components/invoices/create/locales/sk.ts +164 -0
  375. package/src/components/invoices/create/locales/sl.ts +32 -9
  376. package/src/components/invoices/create/locales/sv.ts +166 -0
  377. package/src/components/invoices/create/prepare-invoice-submission.ts +19 -2
  378. package/src/components/invoices/invoices-furs.hooks.ts +11 -8
  379. package/src/components/invoices/invoices.hooks.ts +27 -10
  380. package/src/components/invoices/list/list-row-actions.tsx +54 -21
  381. package/src/components/invoices/list/list-table.tsx +92 -11
  382. package/src/components/invoices/list/locales/bg.ts +49 -0
  383. package/src/components/invoices/list/locales/cs.ts +49 -0
  384. package/src/components/invoices/list/locales/en.ts +34 -2
  385. package/src/components/invoices/list/locales/et.ts +49 -0
  386. package/src/components/invoices/list/locales/fi.ts +49 -0
  387. package/src/components/invoices/list/locales/is.ts +49 -0
  388. package/src/components/invoices/list/locales/nb.ts +49 -0
  389. package/src/components/invoices/list/locales/sk.ts +49 -0
  390. package/src/components/invoices/list/locales/sv.ts +49 -0
  391. package/src/components/invoices/list/use-invoice-download.ts +3 -5
  392. package/src/components/invoices/send-email-dialog/locales/bg.ts +58 -0
  393. package/src/components/invoices/send-email-dialog/locales/cs.ts +58 -0
  394. package/src/components/invoices/send-email-dialog/locales/de.ts +39 -0
  395. package/src/components/invoices/send-email-dialog/locales/en.ts +58 -0
  396. package/src/components/invoices/send-email-dialog/locales/es.ts +39 -0
  397. package/src/components/invoices/send-email-dialog/locales/et.ts +58 -0
  398. package/src/components/invoices/send-email-dialog/locales/fi.ts +58 -0
  399. package/src/components/invoices/send-email-dialog/locales/fr.ts +39 -0
  400. package/src/components/invoices/send-email-dialog/locales/hr.ts +39 -0
  401. package/src/components/invoices/send-email-dialog/locales/is.ts +58 -0
  402. package/src/components/invoices/send-email-dialog/locales/it.ts +39 -0
  403. package/src/components/invoices/send-email-dialog/locales/nb.ts +58 -0
  404. package/src/components/invoices/send-email-dialog/locales/nl.ts +39 -0
  405. package/src/components/invoices/send-email-dialog/locales/pl.ts +39 -0
  406. package/src/components/invoices/send-email-dialog/locales/pt.ts +39 -0
  407. package/src/components/invoices/send-email-dialog/locales/sk.ts +58 -0
  408. package/src/components/invoices/send-email-dialog/locales/sl.ts +39 -0
  409. package/src/components/invoices/send-email-dialog/locales/sv.ts +58 -0
  410. package/src/components/invoices/send-email-dialog/send-email-dialog.tsx +188 -93
  411. package/src/components/invoices/view/eslog-info-display.tsx +2 -0
  412. package/src/components/invoices/view/fiscalization-status-card.tsx +2 -0
  413. package/src/components/items/create-item-form/create-item-form.tsx +29 -0
  414. package/src/components/items/create-item-form/locales/bg.ts +13 -0
  415. package/src/components/items/create-item-form/locales/cs.ts +13 -0
  416. package/src/components/items/create-item-form/locales/et.ts +13 -0
  417. package/src/components/items/create-item-form/locales/fi.ts +13 -0
  418. package/src/components/items/create-item-form/locales/is.ts +13 -0
  419. package/src/components/items/create-item-form/locales/nb.ts +13 -0
  420. package/src/components/items/create-item-form/locales/sk.ts +13 -0
  421. package/src/components/items/create-item-form/locales/sv.ts +13 -0
  422. package/src/components/items/edit-item-form/edit-item-form.tsx +39 -1
  423. package/src/components/items/edit-item-form/locales/bg.ts +12 -0
  424. package/src/components/items/edit-item-form/locales/cs.ts +12 -0
  425. package/src/components/items/edit-item-form/locales/en.ts +12 -0
  426. package/src/components/items/edit-item-form/locales/et.ts +12 -0
  427. package/src/components/items/edit-item-form/locales/fi.ts +12 -0
  428. package/src/components/items/edit-item-form/locales/is.ts +12 -0
  429. package/src/components/items/edit-item-form/locales/nb.ts +12 -0
  430. package/src/components/items/edit-item-form/locales/sk.ts +12 -0
  431. package/src/components/items/edit-item-form/locales/sv.ts +12 -0
  432. package/src/components/items/item-combobox.tsx +51 -18
  433. package/src/components/items/item-list-table/item-list-table.tsx +47 -23
  434. package/src/components/items/item-list-table/locales/bg.ts +16 -0
  435. package/src/components/items/item-list-table/locales/cs.ts +16 -0
  436. package/src/components/items/item-list-table/locales/en.ts +4 -3
  437. package/src/components/items/item-list-table/locales/et.ts +16 -0
  438. package/src/components/items/item-list-table/locales/fi.ts +16 -0
  439. package/src/components/items/item-list-table/locales/is.ts +16 -0
  440. package/src/components/items/item-list-table/locales/nb.ts +16 -0
  441. package/src/components/items/item-list-table/locales/sk.ts +16 -0
  442. package/src/components/items/item-list-table/locales/sv.ts +16 -0
  443. package/src/components/items/items.hooks.ts +15 -15
  444. package/src/components/payments/create-payment-form/create-payment-form.tsx +11 -7
  445. package/src/components/payments/create-payment-form/index.ts +1 -0
  446. package/src/components/payments/create-payment-form/locales/bg.ts +20 -0
  447. package/src/components/payments/create-payment-form/locales/cs.ts +20 -0
  448. package/src/components/payments/create-payment-form/locales/en.ts +20 -0
  449. package/src/components/payments/create-payment-form/locales/et.ts +20 -0
  450. package/src/components/payments/create-payment-form/locales/fi.ts +20 -0
  451. package/src/components/payments/create-payment-form/locales/hr.ts +2 -2
  452. package/src/components/payments/create-payment-form/locales/is.ts +20 -0
  453. package/src/components/payments/create-payment-form/locales/nb.ts +20 -0
  454. package/src/components/payments/create-payment-form/locales/sk.ts +20 -0
  455. package/src/components/payments/create-payment-form/locales/sl.ts +4 -4
  456. package/src/components/payments/create-payment-form/locales/sv.ts +20 -0
  457. package/src/components/payments/edit-payment-form/edit-payment-form.tsx +5 -1
  458. package/src/components/payments/edit-payment-form/locales/bg.ts +20 -0
  459. package/src/components/payments/edit-payment-form/locales/cs.ts +20 -0
  460. package/src/components/payments/edit-payment-form/locales/en.ts +20 -0
  461. package/src/components/payments/edit-payment-form/locales/et.ts +20 -0
  462. package/src/components/payments/edit-payment-form/locales/fi.ts +20 -0
  463. package/src/components/payments/edit-payment-form/locales/hr.ts +2 -2
  464. package/src/components/payments/edit-payment-form/locales/is.ts +20 -0
  465. package/src/components/payments/edit-payment-form/locales/nb.ts +20 -0
  466. package/src/components/payments/edit-payment-form/locales/sk.ts +20 -0
  467. package/src/components/payments/edit-payment-form/locales/sl.ts +4 -4
  468. package/src/components/payments/edit-payment-form/locales/sv.ts +20 -0
  469. package/src/components/payments/list/list-row-actions.tsx +10 -2
  470. package/src/components/payments/list/list-table.tsx +51 -45
  471. package/src/components/payments/list/locales/bg.ts +42 -0
  472. package/src/components/payments/list/locales/cs.ts +42 -0
  473. package/src/components/payments/list/locales/de.ts +18 -0
  474. package/src/components/payments/list/locales/en.ts +37 -2
  475. package/src/components/payments/list/locales/es.ts +18 -0
  476. package/src/components/payments/list/locales/et.ts +42 -0
  477. package/src/components/payments/list/locales/fi.ts +42 -0
  478. package/src/components/payments/list/locales/fr.ts +18 -0
  479. package/src/components/payments/list/locales/hr.ts +18 -0
  480. package/src/components/payments/list/locales/is.ts +42 -0
  481. package/src/components/payments/list/locales/it.ts +18 -0
  482. package/src/components/payments/list/locales/nb.ts +42 -0
  483. package/src/components/payments/list/locales/nl.ts +18 -0
  484. package/src/components/payments/list/locales/pl.ts +18 -0
  485. package/src/components/payments/list/locales/pt.ts +18 -0
  486. package/src/components/payments/list/locales/sk.ts +42 -0
  487. package/src/components/payments/list/locales/sl.ts +18 -1
  488. package/src/components/payments/list/locales/sv.ts +42 -0
  489. package/src/components/payments/payments.hooks.ts +13 -6
  490. package/src/components/recurring-invoices/create-recurring-invoice-form/create-recurring-invoice-form.tsx +23 -17
  491. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/bg.ts +44 -0
  492. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/cs.ts +44 -0
  493. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/en.ts +44 -0
  494. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/et.ts +44 -0
  495. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/fi.ts +44 -0
  496. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/hr.ts +6 -6
  497. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/is.ts +44 -0
  498. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/nb.ts +44 -0
  499. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sk.ts +44 -0
  500. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sl.ts +4 -4
  501. package/src/components/recurring-invoices/create-recurring-invoice-form/locales/sv.ts +44 -0
  502. package/src/components/recurring-invoices/list/list-row-actions.tsx +3 -5
  503. package/src/components/recurring-invoices/list/list-table.tsx +10 -7
  504. package/src/components/recurring-invoices/list/locales/bg.ts +28 -0
  505. package/src/components/recurring-invoices/list/locales/cs.ts +28 -0
  506. package/src/components/recurring-invoices/list/locales/en.ts +23 -0
  507. package/src/components/recurring-invoices/list/locales/et.ts +28 -0
  508. package/src/components/recurring-invoices/list/locales/fi.ts +28 -0
  509. package/src/components/recurring-invoices/list/locales/is.ts +28 -0
  510. package/src/components/recurring-invoices/list/locales/nb.ts +28 -0
  511. package/src/components/recurring-invoices/list/locales/sk.ts +28 -0
  512. package/src/components/recurring-invoices/list/locales/sv.ts +28 -0
  513. package/src/components/recurring-invoices/recurring-invoices.hooks.ts +11 -8
  514. package/src/components/request-logs/request-log-detail.tsx +30 -23
  515. package/src/components/request-logs/request-log-list-table.tsx +88 -45
  516. package/src/components/table/README.md +47 -9
  517. package/src/components/table/data-table.tsx +232 -92
  518. package/src/components/table/filter-bar.tsx +1 -1
  519. package/src/components/table/filter-panel.tsx +51 -22
  520. package/src/components/table/hooks/use-table-state.ts +64 -11
  521. package/src/components/table/index.ts +3 -0
  522. package/src/components/table/locales.ts +119 -4
  523. package/src/components/table/selection-toolbar.tsx +65 -9
  524. package/src/components/table/sorting.ts +80 -0
  525. package/src/components/table/table-skeleton.tsx +15 -9
  526. package/src/components/table/types.ts +17 -0
  527. package/src/components/tax-reports/index.ts +8 -0
  528. package/src/components/tax-reports/kir-export-form.tsx +4 -5
  529. package/src/components/tax-reports/slovenia-accounting-mappings-fields.tsx +271 -0
  530. package/src/components/tax-reports/slovenia-tax-profile-step.tsx +21 -10
  531. package/src/components/tax-reports/slovenia-vod-export-form.tsx +452 -0
  532. package/src/components/tax-reports/slovenia-yearly-export-form.tsx +17 -16
  533. package/src/components/tax-reports/slovenia-yearly-review-step.tsx +40 -18
  534. package/src/components/taxes/create-tax-form/create-tax-form.tsx +48 -2
  535. package/src/components/taxes/create-tax-form/locales/bg.ts +8 -0
  536. package/src/components/taxes/create-tax-form/locales/cs.ts +8 -0
  537. package/src/components/taxes/create-tax-form/locales/et.ts +8 -0
  538. package/src/components/taxes/create-tax-form/locales/fi.ts +8 -0
  539. package/src/components/taxes/create-tax-form/locales/is.ts +8 -0
  540. package/src/components/taxes/create-tax-form/locales/nb.ts +8 -0
  541. package/src/components/taxes/create-tax-form/locales/sk.ts +8 -0
  542. package/src/components/taxes/create-tax-form/locales/sv.ts +8 -0
  543. package/src/components/taxes/edit-tax-form/edit-tax-form.tsx +80 -11
  544. package/src/components/taxes/edit-tax-form/locales/bg.ts +6 -0
  545. package/src/components/taxes/edit-tax-form/locales/cs.ts +6 -0
  546. package/src/components/taxes/edit-tax-form/locales/en.ts +6 -0
  547. package/src/components/taxes/edit-tax-form/locales/et.ts +6 -0
  548. package/src/components/taxes/edit-tax-form/locales/fi.ts +6 -0
  549. package/src/components/taxes/edit-tax-form/locales/is.ts +6 -0
  550. package/src/components/taxes/edit-tax-form/locales/nb.ts +6 -0
  551. package/src/components/taxes/edit-tax-form/locales/sk.ts +6 -0
  552. package/src/components/taxes/edit-tax-form/locales/sv.ts +6 -0
  553. package/src/components/taxes/tax-list-table/locales/bg.ts +17 -0
  554. package/src/components/taxes/tax-list-table/locales/cs.ts +17 -0
  555. package/src/components/taxes/tax-list-table/locales/en.ts +4 -3
  556. package/src/components/taxes/tax-list-table/locales/et.ts +17 -0
  557. package/src/components/taxes/tax-list-table/locales/fi.ts +17 -0
  558. package/src/components/taxes/tax-list-table/locales/is.ts +17 -0
  559. package/src/components/taxes/tax-list-table/locales/nb.ts +17 -0
  560. package/src/components/taxes/tax-list-table/locales/sk.ts +17 -0
  561. package/src/components/taxes/tax-list-table/locales/sv.ts +17 -0
  562. package/src/components/taxes/tax-list-table/tax-list-table.tsx +53 -19
  563. package/src/components/taxes/taxes.hooks.ts +53 -12
  564. package/src/components/ui/badge.tsx +1 -1
  565. package/src/components/ui/button.tsx +1 -1
  566. package/src/components/ui/drawer.tsx +2 -2
  567. package/src/components/ui/form.tsx +118 -2
  568. package/src/components/ui/progress.tsx +6 -4
  569. package/src/components/ui/select.tsx +118 -1
  570. package/src/components/ui/sidebar.tsx +3 -2
  571. package/src/components/ui/sonner.tsx +17 -36
  572. package/src/components/ui/sticky-form-footer.tsx +6 -1
  573. package/src/components/ui/tooltip.tsx +15 -2
  574. package/src/components/webhook-logs/webhook-delivery-detail.tsx +22 -22
  575. package/src/components/webhook-logs/webhook-delivery-list-table.tsx +92 -17
  576. package/src/components/wl-subscription/locked-feature.tsx +11 -10
  577. package/src/components/wl-subscription/paywall.tsx +184 -72
  578. package/src/components/wl-subscription/upgrade-modal.tsx +28 -31
  579. package/src/generate-schemas.ts +17 -7
  580. package/src/generated/schemas/account_webhook.ts +43 -0
  581. package/src/generated/schemas/accountwebhook.ts +67 -0
  582. package/src/generated/schemas/entity.ts +343 -4
  583. package/src/generated/schemas/exportsloveniavodxml_body.ts +16 -0
  584. package/src/generated/schemas/exportsloveniayearlynormiranireport_body.ts +27 -0
  585. package/src/generated/schemas/furssettings.ts +1 -0
  586. package/src/generated/schemas/incomingpurchasedocument.ts +198 -0
  587. package/src/generated/schemas/incomingpurchasedocumentpayment.ts +38 -0
  588. package/src/generated/schemas/index.ts +12 -0
  589. package/src/generated/schemas/item.ts +36 -0
  590. package/src/generated/schemas/me.ts +23 -19
  591. package/src/generated/schemas/order.ts +2 -0
  592. package/src/generated/schemas/orderintegration.ts +8 -4
  593. package/src/generated/schemas/payment.ts +5 -0
  594. package/src/generated/schemas/ptatcudseries.ts +30 -0
  595. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +35 -3
  596. package/src/generated/schemas/rendercreditnotepreview_body.ts +35 -3
  597. package/src/generated/schemas/renderdeliverynotepreview_body.ts +12 -5
  598. package/src/generated/schemas/renderestimatepreview_body.ts +38 -5
  599. package/src/generated/schemas/renderinvoicepreview_body.ts +39 -5
  600. package/src/generated/schemas/senddocument_body.ts +1 -0
  601. package/src/generated/schemas/sendemail_body.ts +67 -39
  602. package/src/generated/schemas/sloveniataxprofile.ts +118 -0
  603. package/src/generated/schemas/starteslogexport_body.ts +33 -0
  604. package/src/generated/schemas/startpdfexport_body.ts +94 -78
  605. package/src/generated/schemas/supplier.ts +59 -0
  606. package/src/generated/schemas/syncshopifyorders_body.ts +20 -0
  607. package/src/generated/schemas/tax.ts +2 -0
  608. package/src/generated/schemas/uploadfile_body.ts +1 -0
  609. package/src/generated/schemas/userptsettings.ts +26 -0
  610. package/src/generated/schemas/voidinvoice_body.ts +20 -0
  611. package/src/generated/schemas/webhook.ts +2 -0
  612. package/src/hooks/create-resource-hooks.ts +22 -19
  613. package/src/hooks/use-duplicate-document.ts +10 -8
  614. package/src/hooks/use-eslog-validation.ts +5 -1
  615. package/src/hooks/use-next-document-number.ts +13 -6
  616. package/src/hooks/use-resolved-entity-id.ts +14 -0
  617. package/src/hooks/use-resource-mutation.ts +11 -30
  618. package/src/hooks/use-transaction-type-check.ts +3 -8
  619. package/src/lib/browser-cookies.ts +1 -1
  620. package/src/lib/country-capabilities.ts +114 -0
  621. package/src/lib/date-fns-locale.ts +1 -20
  622. package/src/lib/eslog-export.ts +32 -0
  623. package/src/lib/fiscalization-options.ts +21 -1
  624. package/src/lib/formatting.ts +27 -0
  625. package/src/lib/furs-error-utils.ts +29 -0
  626. package/src/lib/locale.ts +4 -0
  627. package/src/lib/payment-display.ts +95 -0
  628. package/src/lib/pt-document-input.ts +67 -0
  629. package/src/lib/schemas/shared.ts +1 -0
  630. package/src/lib/template-variables.tsx +102 -4
  631. package/src/lib/translation.ts +51 -33
  632. package/src/lib/white-label-capabilities.ts +626 -0
  633. package/src/lib/zod-validation-message.ts +291 -0
  634. package/src/providers/entities-provider.tsx +32 -14
  635. package/src/providers/sdk-provider.tsx +112 -12
  636. package/src/providers/space-invoices-provider.tsx +129 -0
  637. package/src/providers/white-label-provider.tsx +96 -4
  638. package/src/providers/wl-subscription-provider.tsx +144 -10
@@ -0,0 +1,626 @@
1
+ import type { Entity } from "@/ui/providers/entities-context";
2
+
3
+ export type WhiteLabelCapabilityGroup = "workspace" | "documents" | "compliance";
4
+ export type WhiteLabelControlKind = "capability" | "action";
5
+
6
+ export type WhiteLabelCapabilityId =
7
+ | "developer_tools"
8
+ | "multi_entity"
9
+ | "documents.estimates"
10
+ | "documents.credit_notes"
11
+ | "documents.advance_invoices"
12
+ | "documents.delivery_notes"
13
+ | "documents.recurring_invoices"
14
+ | "compliance.furs"
15
+ | "compliance.fina"
16
+ | "compliance.eslog"
17
+ | "compliance.e_invoicing";
18
+
19
+ export type WhiteLabelActionControlId =
20
+ | "actions.multi_entity.add_entity_entry_points"
21
+ | "actions.documents.invoice.create"
22
+ | "actions.documents.invoice.save_draft"
23
+ | "actions.documents.estimate.create"
24
+ | "actions.documents.estimate.save_draft"
25
+ | "actions.documents.credit_note.create"
26
+ | "actions.documents.credit_note.save_draft"
27
+ | "actions.documents.advance_invoice.create"
28
+ | "actions.documents.advance_invoice.save_draft"
29
+ | "actions.documents.delivery_note.create"
30
+ | "actions.documents.delivery_note.save_draft"
31
+ | "actions.documents.recurring_invoices.create"
32
+ | "actions.documents.invoice.void"
33
+ | "actions.documents.credit_note.void"
34
+ | "actions.documents.advance_invoice.void"
35
+ | "actions.documents.delivery_note.void"
36
+ | "actions.documents.invoice.payments.manage"
37
+ | "actions.documents.credit_note.payments.manage"
38
+ | "actions.documents.advance_invoice.payments.manage"
39
+ | "actions.documents.credit_notes.create_from_invoice"
40
+ | "actions.documents.invoices.create_from_estimate"
41
+ | "actions.documents.invoices.create_from_advance_invoice"
42
+ | "actions.documents.invoices.create_from_delivery_note"
43
+ | "actions.documents.recurring_invoices.create_from_invoice";
44
+
45
+ export type WhiteLabelHiddenFeatureId = WhiteLabelCapabilityId | WhiteLabelActionControlId;
46
+
47
+ export type WhiteLabelDocumentType = "invoice" | "estimate" | "credit_note" | "advance_invoice" | "delivery_note";
48
+ export type WhiteLabelCreatableResourceType = WhiteLabelDocumentType | "recurring_invoice";
49
+ export type WhiteLabelVoidableDocumentType = Extract<
50
+ WhiteLabelDocumentType,
51
+ "invoice" | "credit_note" | "advance_invoice" | "delivery_note"
52
+ >;
53
+ export type WhiteLabelPayableDocumentType = Extract<
54
+ WhiteLabelDocumentType,
55
+ "invoice" | "credit_note" | "advance_invoice"
56
+ >;
57
+
58
+ type CountryFeatureDependency = "furs" | "fina" | "eslog" | "e_invoicing";
59
+
60
+ export type WhiteLabelCapabilityDefinition = {
61
+ kind: "capability";
62
+ id: WhiteLabelCapabilityId;
63
+ label: string;
64
+ description: string;
65
+ group: WhiteLabelCapabilityGroup;
66
+ affectedSurfaces: string[];
67
+ countryFeatureDependency?: CountryFeatureDependency;
68
+ subscriptionFeatureDependency?: string;
69
+ };
70
+
71
+ export type WhiteLabelActionControlDefinition = {
72
+ kind: "action";
73
+ id: WhiteLabelActionControlId;
74
+ label: string;
75
+ description: string;
76
+ group: WhiteLabelCapabilityGroup;
77
+ affectedSurfaces: string[];
78
+ parentCapability?: WhiteLabelCapabilityId;
79
+ countryFeatureDependency?: CountryFeatureDependency;
80
+ subscriptionFeatureDependency?: string;
81
+ };
82
+
83
+ export type WhiteLabelControlDefinition = WhiteLabelCapabilityDefinition | WhiteLabelActionControlDefinition;
84
+
85
+ export const ALWAYS_HIDDEN_WHITE_LABEL_CAPABILITIES = ["developer_tools"] as const;
86
+
87
+ export const WHITE_LABEL_CAPABILITIES: WhiteLabelCapabilityDefinition[] = [
88
+ {
89
+ kind: "capability",
90
+ id: "developer_tools",
91
+ label: "Developer tools",
92
+ description: "Hide account-level developer surfaces such as request logs and webhook logs.",
93
+ group: "workspace",
94
+ affectedSurfaces: ["account pages", "developer routes", "sidebar developer section"],
95
+ },
96
+ {
97
+ kind: "capability",
98
+ id: "multi_entity",
99
+ label: "Multi-entity",
100
+ description: "Hide add-entity entry points after the first entity exists.",
101
+ group: "workspace",
102
+ affectedSurfaces: ["entity switcher", "entities/add route"],
103
+ },
104
+ {
105
+ kind: "capability",
106
+ id: "documents.estimates",
107
+ label: "Estimates",
108
+ description: "Hide estimate list, create, view, and conversion entry points.",
109
+ group: "documents",
110
+ affectedSurfaces: ["sidebar", "documents routes", "document duplicate menu"],
111
+ },
112
+ {
113
+ kind: "capability",
114
+ id: "documents.credit_notes",
115
+ label: "Credit notes",
116
+ description: "Hide credit note list, create, view, and conversion entry points.",
117
+ group: "documents",
118
+ affectedSurfaces: ["sidebar", "documents routes", "document duplicate menu"],
119
+ },
120
+ {
121
+ kind: "capability",
122
+ id: "documents.advance_invoices",
123
+ label: "Advance invoices",
124
+ description: "Hide advance invoice list, create, view, and conversion entry points.",
125
+ group: "documents",
126
+ affectedSurfaces: ["sidebar", "documents routes", "document duplicate menu"],
127
+ },
128
+ {
129
+ kind: "capability",
130
+ id: "documents.delivery_notes",
131
+ label: "Delivery notes",
132
+ description: "Hide delivery note list, create, view, and conversion entry points.",
133
+ group: "documents",
134
+ affectedSurfaces: ["sidebar", "documents routes", "document duplicate menu"],
135
+ },
136
+ {
137
+ kind: "capability",
138
+ id: "documents.recurring_invoices",
139
+ label: "Recurring invoices",
140
+ description: "Hide recurring invoice pages and create-recurring actions.",
141
+ group: "documents",
142
+ affectedSurfaces: ["sidebar", "recurring routes", "document actions"],
143
+ subscriptionFeatureDependency: "recurring",
144
+ },
145
+ {
146
+ kind: "capability",
147
+ id: "compliance.furs",
148
+ label: "FURS",
149
+ description: "Hide Slovenian fiscalization settings surfaces. Only affects entities that support FURS.",
150
+ group: "compliance",
151
+ affectedSurfaces: ["sidebar settings", "settings routes"],
152
+ countryFeatureDependency: "furs",
153
+ },
154
+ {
155
+ kind: "capability",
156
+ id: "compliance.fina",
157
+ label: "FINA",
158
+ description: "Hide Croatian fiscalization settings surfaces. Only affects entities that support FINA.",
159
+ group: "compliance",
160
+ affectedSurfaces: ["sidebar settings", "settings routes"],
161
+ countryFeatureDependency: "fina",
162
+ },
163
+ {
164
+ kind: "capability",
165
+ id: "compliance.eslog",
166
+ label: "e-SLOG",
167
+ description: "Hide e-SLOG settings surfaces. Only affects entities that support e-SLOG.",
168
+ group: "compliance",
169
+ affectedSurfaces: ["sidebar settings", "settings routes"],
170
+ countryFeatureDependency: "eslog",
171
+ },
172
+ {
173
+ kind: "capability",
174
+ id: "compliance.e_invoicing",
175
+ label: "E-invoicing",
176
+ description: "Hide e-invoicing settings surfaces. Only affects entities that support e-invoicing.",
177
+ group: "compliance",
178
+ affectedSurfaces: ["sidebar settings", "settings routes"],
179
+ countryFeatureDependency: "e_invoicing",
180
+ },
181
+ ];
182
+
183
+ export const WHITE_LABEL_ACTION_CONTROLS: WhiteLabelActionControlDefinition[] = [
184
+ {
185
+ kind: "action",
186
+ id: "actions.multi_entity.add_entity_entry_points",
187
+ label: "Show add entity entry points",
188
+ description: "Keep add-entity buttons and links visible while leaving the route available.",
189
+ group: "workspace",
190
+ affectedSurfaces: ["entity switcher", "account dashboard", "account entities page"],
191
+ parentCapability: "multi_entity",
192
+ },
193
+ {
194
+ kind: "action",
195
+ id: "actions.documents.invoice.create",
196
+ label: "Show Create invoice",
197
+ description: "Keep invoice create entry points and add routes visible.",
198
+ group: "documents",
199
+ affectedSurfaces: ["invoice list", "invoice add route", "invoice empty state"],
200
+ },
201
+ {
202
+ kind: "action",
203
+ id: "actions.documents.invoice.save_draft",
204
+ label: "Show invoice draft saving",
205
+ description: "Keep invoice draft save actions visible on create forms.",
206
+ group: "documents",
207
+ affectedSurfaces: ["invoice create form", "embed invoice create form", "document footer actions"],
208
+ },
209
+ {
210
+ kind: "action",
211
+ id: "actions.documents.estimate.create",
212
+ label: "Show Create estimate",
213
+ description: "Keep estimate create entry points and add routes visible.",
214
+ group: "documents",
215
+ affectedSurfaces: ["estimate list", "estimate add route", "estimate empty state"],
216
+ parentCapability: "documents.estimates",
217
+ },
218
+ {
219
+ kind: "action",
220
+ id: "actions.documents.estimate.save_draft",
221
+ label: "Show estimate draft saving",
222
+ description: "Keep estimate draft save actions visible on create forms.",
223
+ group: "documents",
224
+ affectedSurfaces: ["estimate create form", "embed estimate create form", "document footer actions"],
225
+ parentCapability: "documents.estimates",
226
+ },
227
+ {
228
+ kind: "action",
229
+ id: "actions.documents.credit_note.create",
230
+ label: "Show Create credit note",
231
+ description: "Keep credit note create entry points and add routes visible.",
232
+ group: "documents",
233
+ affectedSurfaces: ["credit note list", "credit note add route", "credit note empty state"],
234
+ parentCapability: "documents.credit_notes",
235
+ },
236
+ {
237
+ kind: "action",
238
+ id: "actions.documents.credit_note.save_draft",
239
+ label: "Show credit note draft saving",
240
+ description: "Keep credit note draft save actions visible on create forms.",
241
+ group: "documents",
242
+ affectedSurfaces: ["credit note create form", "embed credit note create form", "document footer actions"],
243
+ parentCapability: "documents.credit_notes",
244
+ },
245
+ {
246
+ kind: "action",
247
+ id: "actions.documents.advance_invoice.create",
248
+ label: "Show Create advance invoice",
249
+ description: "Keep advance invoice create entry points and add routes visible.",
250
+ group: "documents",
251
+ affectedSurfaces: ["advance invoice list", "advance invoice add route", "advance invoice empty state"],
252
+ parentCapability: "documents.advance_invoices",
253
+ },
254
+ {
255
+ kind: "action",
256
+ id: "actions.documents.advance_invoice.save_draft",
257
+ label: "Show advance invoice draft saving",
258
+ description: "Keep advance invoice draft save actions visible on create forms.",
259
+ group: "documents",
260
+ affectedSurfaces: ["advance invoice create form", "embed advance invoice create form", "document footer actions"],
261
+ parentCapability: "documents.advance_invoices",
262
+ },
263
+ {
264
+ kind: "action",
265
+ id: "actions.documents.delivery_note.create",
266
+ label: "Show Create delivery note",
267
+ description: "Keep delivery note create entry points and add routes visible.",
268
+ group: "documents",
269
+ affectedSurfaces: ["delivery note list", "delivery note add route", "delivery note empty state"],
270
+ parentCapability: "documents.delivery_notes",
271
+ },
272
+ {
273
+ kind: "action",
274
+ id: "actions.documents.delivery_note.save_draft",
275
+ label: "Show delivery note draft saving",
276
+ description: "Keep delivery note draft save actions visible on create forms.",
277
+ group: "documents",
278
+ affectedSurfaces: ["delivery note create form", "embed delivery note create form", "document footer actions"],
279
+ parentCapability: "documents.delivery_notes",
280
+ },
281
+ {
282
+ kind: "action",
283
+ id: "actions.documents.recurring_invoices.create",
284
+ label: "Show Create recurring invoice",
285
+ description: "Keep recurring invoice create entry points visible where available.",
286
+ group: "documents",
287
+ affectedSurfaces: ["recurring invoice create entry points"],
288
+ parentCapability: "documents.recurring_invoices",
289
+ subscriptionFeatureDependency: "recurring",
290
+ },
291
+ {
292
+ kind: "action",
293
+ id: "actions.documents.invoice.void",
294
+ label: "Show Void invoice",
295
+ description: "Keep invoice void actions visible on list and view pages.",
296
+ group: "documents",
297
+ affectedSurfaces: ["invoice list", "invoice view"],
298
+ },
299
+ {
300
+ kind: "action",
301
+ id: "actions.documents.credit_note.void",
302
+ label: "Show Void credit note",
303
+ description: "Keep credit note void actions visible on list and view pages.",
304
+ group: "documents",
305
+ affectedSurfaces: ["credit note list", "credit note view"],
306
+ parentCapability: "documents.credit_notes",
307
+ },
308
+ {
309
+ kind: "action",
310
+ id: "actions.documents.advance_invoice.void",
311
+ label: "Show Void advance invoice",
312
+ description: "Keep advance invoice void actions visible on list and view pages.",
313
+ group: "documents",
314
+ affectedSurfaces: ["advance invoice list", "advance invoice view"],
315
+ parentCapability: "documents.advance_invoices",
316
+ },
317
+ {
318
+ kind: "action",
319
+ id: "actions.documents.delivery_note.void",
320
+ label: "Show Void delivery note",
321
+ description: "Keep delivery note void actions visible on list and view pages.",
322
+ group: "documents",
323
+ affectedSurfaces: ["delivery note list", "delivery note view"],
324
+ parentCapability: "documents.delivery_notes",
325
+ },
326
+ {
327
+ kind: "action",
328
+ id: "actions.documents.invoice.payments.manage",
329
+ label: "Show invoice payments",
330
+ description: "Keep invoice payment add, edit, and delete UI visible.",
331
+ group: "documents",
332
+ affectedSurfaces: ["invoice action bar", "invoice sidebar payments"],
333
+ },
334
+ {
335
+ kind: "action",
336
+ id: "actions.documents.credit_note.payments.manage",
337
+ label: "Show credit note payments",
338
+ description: "Keep credit note payment add, edit, and delete UI visible.",
339
+ group: "documents",
340
+ affectedSurfaces: ["credit note action bar", "credit note sidebar payments"],
341
+ parentCapability: "documents.credit_notes",
342
+ },
343
+ {
344
+ kind: "action",
345
+ id: "actions.documents.advance_invoice.payments.manage",
346
+ label: "Show advance invoice payments",
347
+ description: "Keep advance invoice payment add, edit, and delete UI visible.",
348
+ group: "documents",
349
+ affectedSurfaces: ["advance invoice action bar", "advance invoice sidebar payments"],
350
+ parentCapability: "documents.advance_invoices",
351
+ },
352
+ {
353
+ kind: "action",
354
+ id: "actions.documents.credit_notes.create_from_invoice",
355
+ label: "Show Create credit note from invoice",
356
+ description: "Keep the invoice-to-credit-note conversion action visible on invoice view.",
357
+ group: "documents",
358
+ affectedSurfaces: ["invoice actions"],
359
+ parentCapability: "documents.credit_notes",
360
+ },
361
+ {
362
+ kind: "action",
363
+ id: "actions.documents.invoices.create_from_estimate",
364
+ label: "Show Create invoice from estimate",
365
+ description: "Keep the estimate-to-invoice conversion action visible on estimate view.",
366
+ group: "documents",
367
+ affectedSurfaces: ["estimate actions"],
368
+ parentCapability: "documents.estimates",
369
+ },
370
+ {
371
+ kind: "action",
372
+ id: "actions.documents.invoices.create_from_advance_invoice",
373
+ label: "Show Create invoice from advance invoice",
374
+ description: "Keep the advance-invoice-to-invoice conversion action visible on advance invoice view.",
375
+ group: "documents",
376
+ affectedSurfaces: ["advance invoice actions"],
377
+ parentCapability: "documents.advance_invoices",
378
+ },
379
+ {
380
+ kind: "action",
381
+ id: "actions.documents.invoices.create_from_delivery_note",
382
+ label: "Show Create invoice from delivery note",
383
+ description: "Keep the delivery-note-to-invoice conversion action visible on delivery note view.",
384
+ group: "documents",
385
+ affectedSurfaces: ["delivery note actions"],
386
+ parentCapability: "documents.delivery_notes",
387
+ },
388
+ {
389
+ kind: "action",
390
+ id: "actions.documents.recurring_invoices.create_from_invoice",
391
+ label: "Show Create recurring from invoice",
392
+ description: "Keep the recurring invoice CTA visible on invoice view.",
393
+ group: "documents",
394
+ affectedSurfaces: ["invoice actions"],
395
+ parentCapability: "documents.recurring_invoices",
396
+ subscriptionFeatureDependency: "recurring",
397
+ },
398
+ ];
399
+
400
+ export const WHITE_LABEL_CAPABILITY_IDS = WHITE_LABEL_CAPABILITIES.map((capability) => capability.id);
401
+ export const WHITE_LABEL_ACTION_CONTROL_IDS = WHITE_LABEL_ACTION_CONTROLS.map((control) => control.id);
402
+ export const WHITE_LABEL_HIDDEN_FEATURE_IDS = [...WHITE_LABEL_CAPABILITY_IDS, ...WHITE_LABEL_ACTION_CONTROL_IDS];
403
+
404
+ type WhiteLabelFutureFeatureVisibilityInput = {
405
+ hiddenFeatures: string[];
406
+ hideNewFeaturesByDefault?: boolean;
407
+ reviewedFeatureCatalogIds?: string[];
408
+ currentCatalogIds?: string[];
409
+ };
410
+
411
+ const DOCUMENT_CAPABILITY_MAP: Partial<Record<WhiteLabelDocumentType, WhiteLabelCapabilityId>> = {
412
+ estimate: "documents.estimates",
413
+ credit_note: "documents.credit_notes",
414
+ advance_invoice: "documents.advance_invoices",
415
+ delivery_note: "documents.delivery_notes",
416
+ };
417
+
418
+ const DOCUMENT_TRANSITION_ACTION_CONTROL_MAP: Partial<
419
+ Record<`${WhiteLabelDocumentType}->${WhiteLabelDocumentType}`, WhiteLabelActionControlId>
420
+ > = {
421
+ "invoice->credit_note": "actions.documents.credit_notes.create_from_invoice",
422
+ "estimate->invoice": "actions.documents.invoices.create_from_estimate",
423
+ "advance_invoice->invoice": "actions.documents.invoices.create_from_advance_invoice",
424
+ "delivery_note->invoice": "actions.documents.invoices.create_from_delivery_note",
425
+ };
426
+
427
+ const DOCUMENT_CREATE_ACTION_CONTROL_MAP: Record<WhiteLabelCreatableResourceType, WhiteLabelActionControlId> = {
428
+ invoice: "actions.documents.invoice.create",
429
+ estimate: "actions.documents.estimate.create",
430
+ credit_note: "actions.documents.credit_note.create",
431
+ advance_invoice: "actions.documents.advance_invoice.create",
432
+ delivery_note: "actions.documents.delivery_note.create",
433
+ recurring_invoice: "actions.documents.recurring_invoices.create",
434
+ };
435
+
436
+ const DOCUMENT_DRAFT_ACTION_CONTROL_MAP: Record<WhiteLabelDocumentType, WhiteLabelActionControlId> = {
437
+ invoice: "actions.documents.invoice.save_draft",
438
+ estimate: "actions.documents.estimate.save_draft",
439
+ credit_note: "actions.documents.credit_note.save_draft",
440
+ advance_invoice: "actions.documents.advance_invoice.save_draft",
441
+ delivery_note: "actions.documents.delivery_note.save_draft",
442
+ };
443
+
444
+ const DOCUMENT_VOID_ACTION_CONTROL_MAP: Record<WhiteLabelVoidableDocumentType, WhiteLabelActionControlId> = {
445
+ invoice: "actions.documents.invoice.void",
446
+ credit_note: "actions.documents.credit_note.void",
447
+ advance_invoice: "actions.documents.advance_invoice.void",
448
+ delivery_note: "actions.documents.delivery_note.void",
449
+ };
450
+
451
+ const DOCUMENT_PAYMENTS_ACTION_CONTROL_MAP: Record<WhiteLabelPayableDocumentType, WhiteLabelActionControlId> = {
452
+ invoice: "actions.documents.invoice.payments.manage",
453
+ credit_note: "actions.documents.credit_note.payments.manage",
454
+ advance_invoice: "actions.documents.advance_invoice.payments.manage",
455
+ };
456
+
457
+ export function getWhiteLabelCapability(id: string): WhiteLabelCapabilityDefinition | undefined {
458
+ return WHITE_LABEL_CAPABILITIES.find((capability) => capability.id === id);
459
+ }
460
+
461
+ export function getWhiteLabelActionControl(id: string): WhiteLabelActionControlDefinition | undefined {
462
+ return WHITE_LABEL_ACTION_CONTROLS.find((control) => control.id === id);
463
+ }
464
+
465
+ export function getCurrentWhiteLabelCatalogIds(): WhiteLabelHiddenFeatureId[] {
466
+ return [...WHITE_LABEL_HIDDEN_FEATURE_IDS];
467
+ }
468
+
469
+ export function getAutoHiddenWhiteLabelFeatureIds({
470
+ hideNewFeaturesByDefault = false,
471
+ reviewedFeatureCatalogIds = [],
472
+ currentCatalogIds = WHITE_LABEL_HIDDEN_FEATURE_IDS,
473
+ }: Omit<WhiteLabelFutureFeatureVisibilityInput, "hiddenFeatures">): string[] {
474
+ if (!hideNewFeaturesByDefault) {
475
+ return [];
476
+ }
477
+
478
+ const reviewedIds = new Set(reviewedFeatureCatalogIds);
479
+
480
+ return currentCatalogIds.filter((featureId) => !reviewedIds.has(featureId));
481
+ }
482
+
483
+ export function getEffectiveWhiteLabelHiddenFeatures({
484
+ hiddenFeatures,
485
+ hideNewFeaturesByDefault = false,
486
+ reviewedFeatureCatalogIds = [],
487
+ currentCatalogIds = WHITE_LABEL_HIDDEN_FEATURE_IDS,
488
+ }: WhiteLabelFutureFeatureVisibilityInput): string[] {
489
+ const effectiveHiddenFeatures = new Set(hiddenFeatures);
490
+
491
+ for (const featureId of getAutoHiddenWhiteLabelFeatureIds({
492
+ hideNewFeaturesByDefault,
493
+ reviewedFeatureCatalogIds,
494
+ currentCatalogIds,
495
+ })) {
496
+ effectiveHiddenFeatures.add(featureId);
497
+ }
498
+
499
+ return [...effectiveHiddenFeatures];
500
+ }
501
+
502
+ export function getWhiteLabelCapabilityForDocumentType(
503
+ documentType: WhiteLabelDocumentType | string | null | undefined,
504
+ ): WhiteLabelCapabilityId | null {
505
+ if (!documentType) return null;
506
+ return DOCUMENT_CAPABILITY_MAP[documentType as WhiteLabelDocumentType] ?? null;
507
+ }
508
+
509
+ export function getWhiteLabelActionControlForDocumentTransition(
510
+ sourceType: WhiteLabelDocumentType | string | null | undefined,
511
+ targetType: WhiteLabelDocumentType | string | null | undefined,
512
+ ): WhiteLabelActionControlId | null {
513
+ if (!sourceType || !targetType) return null;
514
+
515
+ return (
516
+ DOCUMENT_TRANSITION_ACTION_CONTROL_MAP[
517
+ `${sourceType as WhiteLabelDocumentType}->${targetType as WhiteLabelDocumentType}`
518
+ ] ?? null
519
+ );
520
+ }
521
+
522
+ export function getWhiteLabelActionControlForDocumentCreate(
523
+ documentType: WhiteLabelCreatableResourceType | string | null | undefined,
524
+ ): WhiteLabelActionControlId | null {
525
+ if (!documentType) return null;
526
+ return DOCUMENT_CREATE_ACTION_CONTROL_MAP[documentType as WhiteLabelCreatableResourceType] ?? null;
527
+ }
528
+
529
+ export function getWhiteLabelActionControlForDocumentDraft(
530
+ documentType: WhiteLabelDocumentType | string | null | undefined,
531
+ ): WhiteLabelActionControlId | null {
532
+ if (!documentType) return null;
533
+ return DOCUMENT_DRAFT_ACTION_CONTROL_MAP[documentType as WhiteLabelDocumentType] ?? null;
534
+ }
535
+
536
+ export function getWhiteLabelActionControlForDocumentVoid(
537
+ documentType: WhiteLabelVoidableDocumentType | string | null | undefined,
538
+ ): WhiteLabelActionControlId | null {
539
+ if (!documentType) return null;
540
+ return DOCUMENT_VOID_ACTION_CONTROL_MAP[documentType as WhiteLabelVoidableDocumentType] ?? null;
541
+ }
542
+
543
+ export function getWhiteLabelActionControlForDocumentPayments(
544
+ documentType: WhiteLabelPayableDocumentType | string | null | undefined,
545
+ ): WhiteLabelActionControlId | null {
546
+ if (!documentType) return null;
547
+ return DOCUMENT_PAYMENTS_ACTION_CONTROL_MAP[documentType as WhiteLabelPayableDocumentType] ?? null;
548
+ }
549
+
550
+ function entityHasCountryFeature(entity: Entity | null | undefined, feature: CountryFeatureDependency): boolean {
551
+ return entity?.country_rules?.features?.includes(feature) ?? false;
552
+ }
553
+
554
+ type WhiteLabelCapabilityVisibilityInput = {
555
+ capability: WhiteLabelCapabilityId;
556
+ hiddenFeatures: string[];
557
+ entity?: Entity | null;
558
+ entityCount?: number;
559
+ };
560
+
561
+ type WhiteLabelActionControlVisibilityInput = {
562
+ control: WhiteLabelActionControlId;
563
+ hiddenFeatures: string[];
564
+ entity?: Entity | null;
565
+ entityCount?: number;
566
+ };
567
+
568
+ export function isWhiteLabelCapabilityAvailable({
569
+ capability,
570
+ entity,
571
+ }: Omit<WhiteLabelCapabilityVisibilityInput, "hiddenFeatures">): boolean {
572
+ if (capability === "multi_entity") {
573
+ return true;
574
+ }
575
+
576
+ const definition = getWhiteLabelCapability(capability);
577
+ if (!definition?.countryFeatureDependency) {
578
+ return true;
579
+ }
580
+
581
+ return entityHasCountryFeature(entity, definition.countryFeatureDependency);
582
+ }
583
+
584
+ export function isWhiteLabelCapabilityVisible({
585
+ capability,
586
+ hiddenFeatures,
587
+ entity,
588
+ entityCount,
589
+ }: WhiteLabelCapabilityVisibilityInput): boolean {
590
+ if (!isWhiteLabelCapabilityAvailable({ capability, entity, entityCount })) {
591
+ return false;
592
+ }
593
+
594
+ if (capability === "multi_entity" && (entityCount ?? 0) === 0) {
595
+ return true;
596
+ }
597
+
598
+ return !hiddenFeatures.includes(capability);
599
+ }
600
+
601
+ export function isWhiteLabelUiControlVisible({
602
+ control,
603
+ hiddenFeatures,
604
+ entity,
605
+ entityCount,
606
+ }: WhiteLabelActionControlVisibilityInput): boolean {
607
+ const definition = getWhiteLabelActionControl(control);
608
+ if (!definition) {
609
+ return true;
610
+ }
611
+
612
+ if (definition.parentCapability) {
613
+ if (
614
+ !isWhiteLabelCapabilityVisible({
615
+ capability: definition.parentCapability,
616
+ hiddenFeatures,
617
+ entity,
618
+ entityCount,
619
+ })
620
+ ) {
621
+ return false;
622
+ }
623
+ }
624
+
625
+ return !hiddenFeatures.includes(control);
626
+ }