@spaceinvoices/react-ui 0.4.4 → 0.4.5

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 (147) hide show
  1. package/cli/dist/index.js +1 -1
  2. package/package.json +1 -1
  3. package/src/components/advance-invoices/create/create-advance-invoice-form.tsx +61 -11
  4. package/src/components/advance-invoices/create/locales/de.ts +15 -0
  5. package/src/components/advance-invoices/create/locales/es.ts +15 -0
  6. package/src/components/advance-invoices/create/locales/fr.ts +15 -0
  7. package/src/components/advance-invoices/create/locales/hr.ts +15 -0
  8. package/src/components/advance-invoices/create/locales/it.ts +15 -0
  9. package/src/components/advance-invoices/create/locales/nl.ts +15 -0
  10. package/src/components/advance-invoices/create/locales/pl.ts +15 -0
  11. package/src/components/advance-invoices/create/locales/pt.ts +15 -0
  12. package/src/components/advance-invoices/create/locales/sl.ts +15 -0
  13. package/src/components/advance-invoices/list/list-row-actions.tsx +48 -1
  14. package/src/components/advance-invoices/list/list-table.tsx +21 -1
  15. package/src/components/advance-invoices/list/locales/de.ts +4 -0
  16. package/src/components/advance-invoices/list/locales/en.ts +3 -0
  17. package/src/components/advance-invoices/list/locales/es.ts +4 -0
  18. package/src/components/advance-invoices/list/locales/fr.ts +4 -0
  19. package/src/components/advance-invoices/list/locales/hr.ts +3 -0
  20. package/src/components/advance-invoices/list/locales/it.ts +4 -0
  21. package/src/components/advance-invoices/list/locales/nl.ts +4 -0
  22. package/src/components/advance-invoices/list/locales/pl.ts +3 -0
  23. package/src/components/advance-invoices/list/locales/pt.ts +4 -0
  24. package/src/components/advance-invoices/list/locales/sl.ts +3 -0
  25. package/src/components/credit-notes/create/create-credit-note-form.tsx +71 -8
  26. package/src/components/credit-notes/create/locales/de.ts +16 -0
  27. package/src/components/credit-notes/create/locales/es.ts +16 -0
  28. package/src/components/credit-notes/create/locales/fr.ts +16 -0
  29. package/src/components/credit-notes/create/locales/hr.ts +16 -0
  30. package/src/components/credit-notes/create/locales/it.ts +16 -0
  31. package/src/components/credit-notes/create/locales/nl.ts +16 -0
  32. package/src/components/credit-notes/create/locales/pl.ts +16 -0
  33. package/src/components/credit-notes/create/locales/pt.ts +16 -0
  34. package/src/components/credit-notes/create/locales/sl.ts +17 -1
  35. package/src/components/credit-notes/list/list-row-actions.tsx +44 -1
  36. package/src/components/credit-notes/list/list-table.tsx +16 -2
  37. package/src/components/credit-notes/list/locales/de.ts +2 -0
  38. package/src/components/credit-notes/list/locales/en.ts +2 -0
  39. package/src/components/credit-notes/list/locales/es.ts +2 -0
  40. package/src/components/credit-notes/list/locales/fr.ts +2 -0
  41. package/src/components/credit-notes/list/locales/hr.ts +2 -0
  42. package/src/components/credit-notes/list/locales/it.ts +2 -0
  43. package/src/components/credit-notes/list/locales/nl.ts +2 -0
  44. package/src/components/credit-notes/list/locales/pl.ts +2 -0
  45. package/src/components/credit-notes/list/locales/pt.ts +2 -0
  46. package/src/components/credit-notes/list/locales/sl.ts +2 -0
  47. package/src/components/dashboard/collection-rate-card/use-collection-rate.ts +48 -9
  48. package/src/components/dashboard/revenue-trend-chart/use-revenue-trend.ts +77 -48
  49. package/src/components/dashboard/shared/use-revenue-data.ts +77 -9
  50. package/src/components/delivery-notes/create/create-delivery-note-form.tsx +67 -7
  51. package/src/components/delivery-notes/create/locales/de.ts +16 -0
  52. package/src/components/delivery-notes/create/locales/es.ts +16 -0
  53. package/src/components/delivery-notes/create/locales/fr.ts +16 -0
  54. package/src/components/delivery-notes/create/locales/hr.ts +16 -0
  55. package/src/components/delivery-notes/create/locales/it.ts +16 -0
  56. package/src/components/delivery-notes/create/locales/nl.ts +16 -0
  57. package/src/components/delivery-notes/create/locales/pl.ts +16 -0
  58. package/src/components/delivery-notes/create/locales/pt.ts +16 -0
  59. package/src/components/delivery-notes/create/locales/sl.ts +17 -1
  60. package/src/components/delivery-notes/list/list-table.tsx +17 -8
  61. package/src/components/delivery-notes/list/locales/de.ts +32 -1
  62. package/src/components/delivery-notes/list/locales/en.ts +31 -0
  63. package/src/components/delivery-notes/list/locales/es.ts +32 -1
  64. package/src/components/delivery-notes/list/locales/fr.ts +32 -1
  65. package/src/components/delivery-notes/list/locales/hr.ts +32 -1
  66. package/src/components/delivery-notes/list/locales/it.ts +32 -1
  67. package/src/components/delivery-notes/list/locales/nl.ts +32 -1
  68. package/src/components/delivery-notes/list/locales/pl.ts +32 -1
  69. package/src/components/delivery-notes/list/locales/pt.ts +32 -1
  70. package/src/components/delivery-notes/list/locales/sl.ts +32 -1
  71. package/src/components/documents/create/document-add-item-form.tsx +70 -0
  72. package/src/components/documents/create/document-details-section.tsx +122 -2
  73. package/src/components/documents/create/document-items-section.tsx +21 -4
  74. package/src/components/documents/create/live-preview.tsx +24 -4
  75. package/src/components/documents/create/mark-as-paid-section.tsx +29 -20
  76. package/src/components/documents/create/prepare-document-submission.ts +19 -7
  77. package/src/components/documents/shared/document-preview-display.tsx +3 -4
  78. package/src/components/documents/view/document-actions-bar.tsx +7 -27
  79. package/src/components/documents/view/document-details-card.tsx +26 -9
  80. package/src/components/documents/view/locales/de.ts +2 -0
  81. package/src/components/documents/view/locales/es.ts +2 -0
  82. package/src/components/documents/view/locales/fr.ts +2 -0
  83. package/src/components/documents/view/locales/hr.ts +2 -0
  84. package/src/components/documents/view/locales/it.ts +2 -0
  85. package/src/components/documents/view/locales/nl.ts +2 -0
  86. package/src/components/documents/view/locales/pl.ts +2 -0
  87. package/src/components/documents/view/locales/pt.ts +2 -0
  88. package/src/components/documents/view/locales/sl.ts +3 -1
  89. package/src/components/documents/view/use-document-download.ts +6 -3
  90. package/src/components/entities/create-entity-form.tsx +2 -1
  91. package/src/components/entities/entity-settings-form/input-with-preview.tsx +30 -2
  92. package/src/components/entities/entity-settings-form/locales/de.ts +1 -0
  93. package/src/components/entities/entity-settings-form/locales/es.ts +1 -0
  94. package/src/components/entities/entity-settings-form/locales/fr.ts +1 -0
  95. package/src/components/entities/entity-settings-form/locales/hr.ts +1 -0
  96. package/src/components/entities/entity-settings-form/locales/it.ts +1 -0
  97. package/src/components/entities/entity-settings-form/locales/nl.ts +1 -0
  98. package/src/components/entities/entity-settings-form/locales/pl.ts +1 -0
  99. package/src/components/entities/entity-settings-form/locales/pt.ts +1 -0
  100. package/src/components/entities/entity-settings-form/locales/sl.ts +1 -0
  101. package/src/components/entities/settings/company-settings-form.tsx +173 -20
  102. package/src/components/estimates/create/create-estimate-form.tsx +64 -6
  103. package/src/components/estimates/create/locales/de.ts +16 -0
  104. package/src/components/estimates/create/locales/es.ts +16 -0
  105. package/src/components/estimates/create/locales/fr.ts +16 -0
  106. package/src/components/estimates/create/locales/hr.ts +16 -0
  107. package/src/components/estimates/create/locales/it.ts +16 -0
  108. package/src/components/estimates/create/locales/nl.ts +16 -0
  109. package/src/components/estimates/create/locales/pl.ts +16 -0
  110. package/src/components/estimates/create/locales/pt.ts +16 -0
  111. package/src/components/estimates/create/locales/sl.ts +17 -1
  112. package/src/components/estimates/list/list-table.tsx +11 -2
  113. package/src/components/estimates/list/locales/de.ts +1 -0
  114. package/src/components/estimates/list/locales/en.ts +1 -0
  115. package/src/components/estimates/list/locales/es.ts +1 -0
  116. package/src/components/estimates/list/locales/fr.ts +1 -0
  117. package/src/components/estimates/list/locales/hr.ts +1 -0
  118. package/src/components/estimates/list/locales/it.ts +1 -0
  119. package/src/components/estimates/list/locales/nl.ts +1 -0
  120. package/src/components/estimates/list/locales/pl.ts +1 -0
  121. package/src/components/estimates/list/locales/pt.ts +1 -0
  122. package/src/components/estimates/list/locales/sl.ts +1 -0
  123. package/src/components/export/document-export-form.tsx +46 -12
  124. package/src/components/invoices/create/create-invoice-form.tsx +58 -10
  125. package/src/components/invoices/create/locales/de.ts +15 -0
  126. package/src/components/invoices/create/locales/es.ts +15 -0
  127. package/src/components/invoices/create/locales/fr.ts +15 -0
  128. package/src/components/invoices/create/locales/hr.ts +15 -0
  129. package/src/components/invoices/create/locales/it.ts +15 -0
  130. package/src/components/invoices/create/locales/nl.ts +15 -0
  131. package/src/components/invoices/create/locales/pl.ts +15 -0
  132. package/src/components/invoices/create/locales/pt.ts +15 -0
  133. package/src/components/invoices/create/locales/sl.ts +16 -1
  134. package/src/components/invoices/view/fiscalization-status-card.tsx +10 -8
  135. package/src/components/table/search-input.tsx +17 -0
  136. package/src/generated/schemas/advanceinvoice.ts +4 -2
  137. package/src/generated/schemas/creditnote.ts +2 -1
  138. package/src/generated/schemas/deliverynote.ts +2 -1
  139. package/src/generated/schemas/estimate.ts +4 -2
  140. package/src/generated/schemas/invoice.ts +2 -1
  141. package/src/generated/schemas/renderadvanceinvoicepreview_body.ts +17 -23
  142. package/src/generated/schemas/rendercreditnotepreview_body.ts +17 -23
  143. package/src/generated/schemas/renderdeliverynotepreview_body.ts +17 -23
  144. package/src/generated/schemas/renderestimatepreview_body.ts +17 -23
  145. package/src/generated/schemas/renderinvoicepreview_body.ts +19 -23
  146. package/src/hooks/use-duplicate-document.ts +16 -9
  147. package/src/hooks/use-vies-check.ts +3 -0
@@ -47,4 +47,20 @@ export default {
47
47
  "Gross price (tax included)": "Preço bruto (impostos incluídos)",
48
48
  "Net price (before tax)": "Preço líquido (antes de impostos)",
49
49
  "Hide prices": "Ocultar preços",
50
+ // Separator items
51
+ "Add separator": "Adicionar separador",
52
+ "Section header": "Cabeçalho da secção",
53
+ "Section title...": "Título da secção...",
54
+ // Transaction type
55
+ "Transaction type": "Tipo de transação",
56
+ Domestic: "Nacional",
57
+ "EU B2B": "EU B2B",
58
+ "EU B2C": "EU B2C",
59
+ Export: "Exportação",
60
+ "Determining transaction type...": "Determinando tipo de transação...",
61
+ "This invoice will not be fiscalized (non-domestic transaction)":
62
+ "Esta fatura não será fiscalizada (transação não nacional)",
63
+ "Tax Clause": "Cláusula fiscal",
64
+ "Add tax clause...": "Adicionar cláusula fiscal...",
65
+ "Reverse charge - tax exempt EU B2B sale": "Autoliquidação - venda B2B UE isenta de imposto",
50
66
  } as const;
@@ -16,7 +16,7 @@ export default {
16
16
  "Tax Number": "Davčna številka",
17
17
  Items: "Postavke",
18
18
  "Add item": "Dodaj postavko",
19
- Tax: "Davek",
19
+ Tax: "DDV",
20
20
  "Tax rate": "Davčna stopnja",
21
21
  "Add tax": "Dodaj davek",
22
22
  "Select tax...": "Izberi davek...",
@@ -46,4 +46,20 @@ export default {
46
46
  "Gross price (tax included)": "Bruto cena (z davkom)",
47
47
  "Net price (before tax)": "Neto cena (brez davka)",
48
48
  "Hide prices": "Skrij cene",
49
+ // Separator items
50
+ "Add separator": "Dodaj ločilnik",
51
+ "Section header": "Naslov razdelka",
52
+ "Section title...": "Naslov razdelka...",
53
+ // Transaction type
54
+ "Transaction type": "Vrsta transakcije",
55
+ Domestic: "Domača",
56
+ "EU B2B": "EU B2B",
57
+ "EU B2C": "EU B2C",
58
+ Export: "Izvoz",
59
+ "Determining transaction type...": "Določanje vrste transakcije...",
60
+ "This invoice will not be fiscalized (non-domestic transaction)":
61
+ "Ta račun ne bo fiskaliziran (nedomača transakcija)",
62
+ "Tax Clause": "Davčna klavzula",
63
+ "Add tax clause...": "Dodajte davčno klavzulo...",
64
+ "Reverse charge - tax exempt EU B2B sale": "Obrnjena davčna obveznost - davka oproščena EU B2B prodaja",
49
65
  } as const;
@@ -157,14 +157,6 @@ export default function DeliveryNoteListTable({
157
157
  {t("Draft")}
158
158
  </Badge>
159
159
  )}
160
- {deliveryNote.voided_at && (
161
- <Badge
162
- variant="outline"
163
- className="border-red-500 bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-400"
164
- >
165
- {t("Voided")}
166
- </Badge>
167
- )}
168
160
  </div>
169
161
  ),
170
162
  },
@@ -190,6 +182,23 @@ export default function DeliveryNoteListTable({
190
182
  align: "right",
191
183
  cell: (deliveryNote) => deliveryNote.total_with_tax,
192
184
  },
185
+ {
186
+ id: "status",
187
+ header: t("Status"),
188
+ cell: (deliveryNote) => {
189
+ if (deliveryNote.voided_at) {
190
+ return (
191
+ <Badge
192
+ variant="outline"
193
+ className="border-red-500 bg-red-50 text-red-700 dark:bg-red-950 dark:text-red-400"
194
+ >
195
+ {t("Voided")}
196
+ </Badge>
197
+ );
198
+ }
199
+ return null;
200
+ },
201
+ },
193
202
  {
194
203
  id: "actions",
195
204
  header: "",
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Entwurf",
4
+ Number: "Nummer",
5
+ Customer: "Kunde",
6
+ Date: "Datum",
7
+ "Created At": "Erstellt am",
8
+ Status: "Status",
9
+ Total: "Gesamt",
10
+ "Total with Tax": "Gesamt mit MwSt",
11
+ // Filter translations
12
+ "Search...": "Suchen...",
13
+ Filters: "Filter",
14
+ "Date Range": "Datumsbereich",
15
+ From: "Von",
16
+ To: "Bis",
17
+ "Clear filters": "Filter löschen",
18
+ // Empty state translations
2
19
  "Your list is empty": "Ihre Lieferscheinliste ist leer",
3
20
  "Get started by creating your first entry": "Erstellen Sie Ihren ersten Lieferschein",
4
21
  "Create new": "Lieferschein erstellen",
22
+ // No results translations
5
23
  "No results found": "Keine Lieferscheine gefunden",
24
+ "Try adjusting your search criteria": "Versuchen Sie, Ihre Suchkriterien anzupassen",
25
+ "Clear search": "Suche zurücksetzen",
26
+ "Clear all": "Alles zurücksetzen",
6
27
  selected: "ausgewählt",
7
28
  "Export PDFs": "PDFs exportieren",
8
29
  "Deselect all": "Alle abwählen",
9
30
  "Copy to Invoice": "In Rechnung kopieren",
10
- "Clear all": "Alles zurücksetzen",
11
31
  Void: "Stornieren",
12
32
  Voided: "Storniert",
33
+ // Row action translations
34
+ "Open menu": "Menü öffnen",
35
+ Actions: "Aktionen",
36
+ "Copy delivery note ID": "Lieferschein-ID kopieren",
37
+ "View delivery note": "Lieferschein anzeigen",
38
+ "Download PDF": "PDF herunterladen",
39
+ "Downloading...": "Wird heruntergeladen...",
40
+ Duplicate: "Duplizieren",
41
+ Unshare: "Freigabe aufheben",
42
+ "Failed to download PDF": "PDF-Download fehlgeschlagen",
43
+ "Delivery Note": "Lieferschein",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Draft",
4
+ Number: "Number",
5
+ Customer: "Customer",
6
+ Date: "Date",
7
+ "Created At": "Created At",
8
+ Status: "Status",
9
+ Total: "Total",
10
+ "Total with Tax": "Total with Tax",
11
+ // Filter translations
12
+ "Search...": "Search...",
13
+ Filters: "Filters",
14
+ "Date Range": "Date Range",
15
+ From: "From",
16
+ To: "To",
17
+ "Clear filters": "Clear filters",
2
18
  // Empty state translations
3
19
  "Your list is empty": "Your delivery note list is empty",
4
20
  "Get started by creating your first entry": "Get started by creating your first delivery note",
5
21
  "Create new": "Create delivery note",
6
22
  // No results translations
7
23
  "No results found": "No delivery notes found",
24
+ "Try adjusting your search criteria": "Try adjusting your search criteria",
25
+ "Clear search": "Clear search",
26
+ "Clear all": "Clear all",
8
27
  selected: "selected",
9
28
  "Export PDFs": "Export PDFs",
10
29
  "Deselect all": "Deselect all",
11
30
  "Copy to Invoice": "Copy to Invoice",
12
31
  Void: "Void",
32
+ Voided: "Voided",
33
+ // Row action translations
34
+ "Open menu": "Open menu",
35
+ Actions: "Actions",
36
+ "Copy delivery note ID": "Copy delivery note ID",
37
+ "View delivery note": "View delivery note",
38
+ "Download PDF": "Download PDF",
39
+ "Downloading...": "Downloading...",
40
+ Duplicate: "Duplicate",
41
+ Unshare: "Unshare",
42
+ "Failed to download PDF": "Failed to download PDF",
43
+ "Delivery Note": "Delivery Note",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Borrador",
4
+ Number: "Número",
5
+ Customer: "Cliente",
6
+ Date: "Fecha",
7
+ "Created At": "Creado el",
8
+ Status: "Estado",
9
+ Total: "Total",
10
+ "Total with Tax": "Total con IVA",
11
+ // Filter translations
12
+ "Search...": "Buscar...",
13
+ Filters: "Filtros",
14
+ "Date Range": "Rango de fechas",
15
+ From: "Desde",
16
+ To: "Hasta",
17
+ "Clear filters": "Limpiar filtros",
18
+ // Empty state translations
2
19
  "Your list is empty": "Su lista de albaranes está vacía",
3
20
  "Get started by creating your first entry": "Comience creando su primer albarán",
4
21
  "Create new": "Crear albarán",
22
+ // No results translations
5
23
  "No results found": "No se encontraron albaranes",
24
+ "Try adjusting your search criteria": "Intente ajustar sus criterios de búsqueda",
25
+ "Clear search": "Limpiar búsqueda",
26
+ "Clear all": "Borrar todo",
6
27
  selected: "seleccionados",
7
28
  "Export PDFs": "Exportar PDFs",
8
29
  "Deselect all": "Deseleccionar todo",
9
30
  "Copy to Invoice": "Copiar a factura",
10
- "Clear all": "Borrar todo",
11
31
  Void: "Anular",
12
32
  Voided: "Anulado",
33
+ // Row action translations
34
+ "Open menu": "Abrir menú",
35
+ Actions: "Acciones",
36
+ "Copy delivery note ID": "Copiar ID de albarán",
37
+ "View delivery note": "Ver albarán",
38
+ "Download PDF": "Descargar PDF",
39
+ "Downloading...": "Descargando...",
40
+ Duplicate: "Duplicar",
41
+ Unshare: "Dejar de compartir",
42
+ "Failed to download PDF": "Error al descargar el PDF",
43
+ "Delivery Note": "Albarán",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Brouillon",
4
+ Number: "Numéro",
5
+ Customer: "Client",
6
+ Date: "Date",
7
+ "Created At": "Créé le",
8
+ Status: "Statut",
9
+ Total: "Total",
10
+ "Total with Tax": "Total TTC",
11
+ // Filter translations
12
+ "Search...": "Rechercher...",
13
+ Filters: "Filtres",
14
+ "Date Range": "Plage de dates",
15
+ From: "Du",
16
+ To: "Au",
17
+ "Clear filters": "Effacer les filtres",
18
+ // Empty state translations
2
19
  "Your list is empty": "Votre liste de bons de livraison est vide",
3
20
  "Get started by creating your first entry": "Commencez par créer votre premier bon de livraison",
4
21
  "Create new": "Créer un bon de livraison",
22
+ // No results translations
5
23
  "No results found": "Aucun bon de livraison trouvé",
24
+ "Try adjusting your search criteria": "Essayez de modifier vos critères de recherche",
25
+ "Clear search": "Effacer la recherche",
26
+ "Clear all": "Tout effacer",
6
27
  selected: "sélectionnés",
7
28
  "Export PDFs": "Exporter les PDFs",
8
29
  "Deselect all": "Tout désélectionner",
9
30
  "Copy to Invoice": "Copier vers facture",
10
- "Clear all": "Tout effacer",
11
31
  Void: "Annuler",
12
32
  Voided: "Annulé",
33
+ // Row action translations
34
+ "Open menu": "Ouvrir le menu",
35
+ Actions: "Actions",
36
+ "Copy delivery note ID": "Copier l'ID du bon de livraison",
37
+ "View delivery note": "Voir le bon de livraison",
38
+ "Download PDF": "Télécharger le PDF",
39
+ "Downloading...": "Téléchargement...",
40
+ Duplicate: "Dupliquer",
41
+ Unshare: "Annuler le partage",
42
+ "Failed to download PDF": "Échec du téléchargement du PDF",
43
+ "Delivery Note": "Bon de livraison",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Nacrt",
4
+ Number: "Broj",
5
+ Customer: "Kupac",
6
+ Date: "Datum",
7
+ "Created At": "Kreirano",
8
+ Status: "Status",
9
+ Total: "Ukupno",
10
+ "Total with Tax": "Ukupno s PDV-om",
11
+ // Filter translations
12
+ "Search...": "Pretraži...",
13
+ Filters: "Filtri",
14
+ "Date Range": "Raspon datuma",
15
+ From: "Od",
16
+ To: "Do",
17
+ "Clear filters": "Očisti filtre",
18
+ // Empty state translations
2
19
  "Your list is empty": "Popis otpremnica je prazan",
3
20
  "Get started by creating your first entry": "Započnite stvaranjem prve otpremnice",
4
21
  "Create new": "Stvori otpremnicu",
22
+ // No results translations
5
23
  "No results found": "Nisu pronađene otpremnice",
24
+ "Try adjusting your search criteria": "Pokušajte prilagoditi kriterije pretrage",
25
+ "Clear search": "Očisti pretragu",
26
+ "Clear all": "Očisti sve",
6
27
  selected: "odabranih",
7
28
  "Export PDFs": "Izvezi PDF-ove",
8
29
  "Deselect all": "Poništi odabir",
9
30
  "Copy to Invoice": "Kopiraj u račun",
10
- "Clear all": "Očisti sve",
11
31
  Void: "Storniraj",
12
32
  Voided: "Poništeno",
33
+ // Row action translations
34
+ "Open menu": "Otvori izbornik",
35
+ Actions: "Akcije",
36
+ "Copy delivery note ID": "Kopiraj ID otpremnice",
37
+ "View delivery note": "Prikaži otpremnicu",
38
+ "Download PDF": "Preuzmi PDF",
39
+ "Downloading...": "Preuzimanje...",
40
+ Duplicate: "Dupliciraj",
41
+ Unshare: "Ukloni dijeljenje",
42
+ "Failed to download PDF": "Preuzimanje PDF-a nije uspjelo",
43
+ "Delivery Note": "Otpremnica",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Bozza",
4
+ Number: "Numero",
5
+ Customer: "Cliente",
6
+ Date: "Data",
7
+ "Created At": "Creato il",
8
+ Status: "Stato",
9
+ Total: "Totale",
10
+ "Total with Tax": "Totale con IVA",
11
+ // Filter translations
12
+ "Search...": "Cerca...",
13
+ Filters: "Filtri",
14
+ "Date Range": "Intervallo di date",
15
+ From: "Da",
16
+ To: "A",
17
+ "Clear filters": "Cancella filtri",
18
+ // Empty state translations
2
19
  "Your list is empty": "La lista delle bolle di consegna è vuota",
3
20
  "Get started by creating your first entry": "Inizia creando la tua prima bolla di consegna",
4
21
  "Create new": "Crea bolla di consegna",
22
+ // No results translations
5
23
  "No results found": "Nessuna bolla di consegna trovata",
24
+ "Try adjusting your search criteria": "Prova a modificare i criteri di ricerca",
25
+ "Clear search": "Cancella ricerca",
26
+ "Clear all": "Cancella tutto",
6
27
  selected: "selezionati",
7
28
  "Export PDFs": "Esporta PDF",
8
29
  "Deselect all": "Deseleziona tutto",
9
30
  "Copy to Invoice": "Copia in fattura",
10
- "Clear all": "Cancella tutto",
11
31
  Void: "Annulla",
12
32
  Voided: "Annullato",
33
+ // Row action translations
34
+ "Open menu": "Apri menu",
35
+ Actions: "Azioni",
36
+ "Copy delivery note ID": "Copia ID bolla di consegna",
37
+ "View delivery note": "Visualizza bolla di consegna",
38
+ "Download PDF": "Scarica PDF",
39
+ "Downloading...": "Download in corso...",
40
+ Duplicate: "Duplica",
41
+ Unshare: "Rimuovi condivisione",
42
+ "Failed to download PDF": "Download del PDF non riuscito",
43
+ "Delivery Note": "Bolla di consegna",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Concept",
4
+ Number: "Nummer",
5
+ Customer: "Klant",
6
+ Date: "Datum",
7
+ "Created At": "Aangemaakt op",
8
+ Status: "Status",
9
+ Total: "Totaal",
10
+ "Total with Tax": "Totaal met BTW",
11
+ // Filter translations
12
+ "Search...": "Zoeken...",
13
+ Filters: "Filters",
14
+ "Date Range": "Datumbereik",
15
+ From: "Van",
16
+ To: "Tot",
17
+ "Clear filters": "Filters wissen",
18
+ // Empty state translations
2
19
  "Your list is empty": "Uw pakbonlijst is leeg",
3
20
  "Get started by creating your first entry": "Begin met het aanmaken van uw eerste pakbon",
4
21
  "Create new": "Pakbon aanmaken",
22
+ // No results translations
5
23
  "No results found": "Geen pakbonnen gevonden",
24
+ "Try adjusting your search criteria": "Probeer uw zoekcriteria aan te passen",
25
+ "Clear search": "Zoekopdracht wissen",
26
+ "Clear all": "Alles wissen",
6
27
  selected: "geselecteerd",
7
28
  "Export PDFs": "PDFs exporteren",
8
29
  "Deselect all": "Alles deselecteren",
9
30
  "Copy to Invoice": "Kopieer naar factuur",
10
- "Clear all": "Alles wissen",
11
31
  Void: "Nietig verklaren",
12
32
  Voided: "Ongeldig verklaard",
33
+ // Row action translations
34
+ "Open menu": "Menu openen",
35
+ Actions: "Acties",
36
+ "Copy delivery note ID": "Pakbon-ID kopiëren",
37
+ "View delivery note": "Pakbon bekijken",
38
+ "Download PDF": "PDF downloaden",
39
+ "Downloading...": "Downloaden...",
40
+ Duplicate: "Dupliceren",
41
+ Unshare: "Delen opheffen",
42
+ "Failed to download PDF": "PDF-download mislukt",
43
+ "Delivery Note": "Pakbon",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Wersja robocza",
4
+ Number: "Numer",
5
+ Customer: "Klient",
6
+ Date: "Data",
7
+ "Created At": "Utworzono",
8
+ Status: "Status",
9
+ Total: "Razem",
10
+ "Total with Tax": "Razem z VAT",
11
+ // Filter translations
12
+ "Search...": "Szukaj...",
13
+ Filters: "Filtry",
14
+ "Date Range": "Zakres dat",
15
+ From: "Od",
16
+ To: "Do",
17
+ "Clear filters": "Wyczyść filtry",
18
+ // Empty state translations
2
19
  "Your list is empty": "Lista listów przewozowych jest pusta",
3
20
  "Get started by creating your first entry": "Zacznij od utworzenia pierwszego listu przewozowego",
4
21
  "Create new": "Utwórz list przewozowy",
22
+ // No results translations
5
23
  "No results found": "Nie znaleziono listów przewozowych",
24
+ "Try adjusting your search criteria": "Spróbuj dostosować kryteria wyszukiwania",
25
+ "Clear search": "Wyczyść wyszukiwanie",
26
+ "Clear all": "Wyczyść wszystko",
6
27
  selected: "wybranych",
7
28
  "Export PDFs": "Eksportuj PDF-y",
8
29
  "Deselect all": "Odznacz wszystko",
9
30
  "Copy to Invoice": "Kopiuj do faktury",
10
- "Clear all": "Wyczyść wszystko",
11
31
  Void: "Anuluj",
12
32
  Voided: "Anulowana",
33
+ // Row action translations
34
+ "Open menu": "Otwórz menu",
35
+ Actions: "Akcje",
36
+ "Copy delivery note ID": "Kopiuj ID listu przewozowego",
37
+ "View delivery note": "Pokaż list przewozowy",
38
+ "Download PDF": "Pobierz PDF",
39
+ "Downloading...": "Pobieranie...",
40
+ Duplicate: "Duplikuj",
41
+ Unshare: "Cofnij udostępnienie",
42
+ "Failed to download PDF": "Nie udało się pobrać PDF",
43
+ "Delivery Note": "List przewozowy",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Rascunho",
4
+ Number: "Número",
5
+ Customer: "Cliente",
6
+ Date: "Data",
7
+ "Created At": "Criado em",
8
+ Status: "Estado",
9
+ Total: "Total",
10
+ "Total with Tax": "Total com IVA",
11
+ // Filter translations
12
+ "Search...": "Pesquisar...",
13
+ Filters: "Filtros",
14
+ "Date Range": "Intervalo de datas",
15
+ From: "De",
16
+ To: "Até",
17
+ "Clear filters": "Limpar filtros",
18
+ // Empty state translations
2
19
  "Your list is empty": "A sua lista de guias de remessa está vazia",
3
20
  "Get started by creating your first entry": "Comece criando a sua primeira guia de remessa",
4
21
  "Create new": "Criar guia de remessa",
22
+ // No results translations
5
23
  "No results found": "Nenhuma guia de remessa encontrada",
24
+ "Try adjusting your search criteria": "Tente ajustar os seus critérios de pesquisa",
25
+ "Clear search": "Limpar pesquisa",
26
+ "Clear all": "Limpar tudo",
6
27
  selected: "selecionados",
7
28
  "Export PDFs": "Exportar PDFs",
8
29
  "Deselect all": "Desmarcar tudo",
9
30
  "Copy to Invoice": "Copiar para fatura",
10
- "Clear all": "Limpar tudo",
11
31
  Void: "Anular",
12
32
  Voided: "Anulado",
33
+ // Row action translations
34
+ "Open menu": "Abrir menu",
35
+ Actions: "Ações",
36
+ "Copy delivery note ID": "Copiar ID da guia de remessa",
37
+ "View delivery note": "Ver guia de remessa",
38
+ "Download PDF": "Transferir PDF",
39
+ "Downloading...": "A transferir...",
40
+ Duplicate: "Duplicar",
41
+ Unshare: "Remover partilha",
42
+ "Failed to download PDF": "Falha ao transferir o PDF",
43
+ "Delivery Note": "Guia de remessa",
13
44
  } as const;
@@ -1,13 +1,44 @@
1
1
  export default {
2
+ // Column headers
3
+ Draft: "Osnutek",
4
+ Number: "Številka",
5
+ Customer: "Stranka",
6
+ Date: "Datum",
7
+ "Created At": "Ustvarjeno",
8
+ Status: "Status",
9
+ Total: "Skupaj",
10
+ "Total with Tax": "Skupaj z DDV",
11
+ // Filter translations
12
+ "Search...": "Iskanje...",
13
+ Filters: "Filtri",
14
+ "Date Range": "Datumski razpon",
15
+ From: "Od",
16
+ To: "Do",
17
+ "Clear filters": "Počisti filtre",
18
+ // Empty state translations
2
19
  "Your list is empty": "Seznam dobavnic je prazen",
3
20
  "Get started by creating your first entry": "Začnite z ustvarjanjem prve dobavnice",
4
21
  "Create new": "Ustvari dobavnico",
22
+ // No results translations
5
23
  "No results found": "Ni najdenih dobavnic",
24
+ "Try adjusting your search criteria": "Poskusite prilagoditi iskalne kriterije",
25
+ "Clear search": "Počisti iskanje",
26
+ "Clear all": "Počisti vse",
6
27
  selected: "izbranih",
7
28
  "Export PDFs": "Izvozi PDF-je",
8
29
  "Deselect all": "Počisti izbor",
9
30
  "Copy to Invoice": "Kopiraj v račun",
10
- "Clear all": "Počisti vse",
11
31
  Void: "Storniraj",
12
32
  Voided: "Stornirano",
33
+ // Row action translations
34
+ "Open menu": "Odpri meni",
35
+ Actions: "Akcije",
36
+ "Copy delivery note ID": "Kopiraj ID dobavnice",
37
+ "View delivery note": "Prikaži dobavnico",
38
+ "Download PDF": "Prenesi PDF",
39
+ "Downloading...": "Prenašam...",
40
+ Duplicate: "Podvoji",
41
+ Unshare: "Odstrani deljenje",
42
+ "Failed to download PDF": "Prenos PDF-ja je spodletel",
43
+ "Delivery Note": "Dobavnica",
13
44
  } as const;
@@ -67,6 +67,12 @@ export default function DocumentAddItemForm({
67
67
  initialIsGrossPrice = false,
68
68
  onPriceModeChange,
69
69
  }: DocumentAddItemFormProps) {
70
+ const itemType = useWatch({
71
+ control,
72
+ name: `items.${index}.type`,
73
+ });
74
+ const isSeparator = itemType === "separator";
75
+
70
76
  const taxes = useWatch({
71
77
  control,
72
78
  name: `items.${index}.taxes`,
@@ -140,6 +146,70 @@ export default function DocumentAddItemForm({
140
146
  }
141
147
  };
142
148
 
149
+ if (isSeparator) {
150
+ return (
151
+ <div className="space-y-4 rounded-lg border border-muted-foreground/50 border-dashed p-4">
152
+ {/* Header row with name and remove button */}
153
+ <div className="flex items-start gap-4">
154
+ <div className="flex-1">
155
+ <FormField
156
+ control={control}
157
+ name={`items.${index}.name`}
158
+ render={({ field }) => (
159
+ <FormItem>
160
+ <FormLabel className="text-muted-foreground text-xs">{t("Section header")}</FormLabel>
161
+ <FormControl>
162
+ <Input placeholder={t("Section title...")} {...field} />
163
+ </FormControl>
164
+ <FormMessage />
165
+ </FormItem>
166
+ )}
167
+ />
168
+ </div>
169
+
170
+ {showRemove && (
171
+ <Button type="button" variant="ghost" size="icon" onClick={onRemove} className="mt-6">
172
+ <Trash2 className="h-4 w-4" />
173
+ </Button>
174
+ )}
175
+ </div>
176
+
177
+ {/* Description and move buttons */}
178
+ <div className="flex gap-4">
179
+ <div className="flex-1">
180
+ <FormField
181
+ control={control}
182
+ name={`items.${index}.description`}
183
+ render={({ field }) => (
184
+ <FormItem>
185
+ <FormControl>
186
+ <Textarea placeholder={t("Description")} {...field} />
187
+ </FormControl>
188
+ <FormMessage />
189
+ </FormItem>
190
+ )}
191
+ />
192
+ </div>
193
+
194
+ {(showMoveUp || showMoveDown) && (
195
+ <div className="flex flex-col gap-2">
196
+ {showMoveUp && (
197
+ <Button type="button" variant="ghost" size="icon" onClick={onMoveUp} className="mt-auto">
198
+ <ChevronUp className="h-4 w-4" />
199
+ </Button>
200
+ )}
201
+ {showMoveDown && (
202
+ <Button type="button" variant="ghost" size="icon" onClick={onMoveDown} className="mt-auto">
203
+ <ChevronDown className="h-4 w-4" />
204
+ </Button>
205
+ )}
206
+ </div>
207
+ )}
208
+ </div>
209
+ </div>
210
+ );
211
+ }
212
+
143
213
  return (
144
214
  <div className="space-y-4 rounded-lg border p-4">
145
215
  {/* Header row with name and remove button */}