@vendure/dashboard 3.5.0-minor-202509261210 → 3.5.0-minor-202510031341

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 (263) hide show
  1. package/README.md +4 -0
  2. package/dist/plugin/dashboard.plugin.d.ts +25 -6
  3. package/dist/plugin/dashboard.plugin.js +184 -27
  4. package/dist/plugin/default-page.html +188 -0
  5. package/dist/vite/vite-plugin-config.js +13 -9
  6. package/dist/vite/vite-plugin-translations.d.ts +22 -0
  7. package/dist/vite/vite-plugin-translations.js +66 -0
  8. package/dist/vite/vite-plugin-vendure-dashboard.js +8 -6
  9. package/lingui.config.js +25 -2
  10. package/package.json +159 -156
  11. package/src/app/app-providers.tsx +0 -4
  12. package/src/app/common/delete-bulk-action.tsx +6 -5
  13. package/src/app/common/duplicate-bulk-action.tsx +4 -5
  14. package/src/app/common/duplicate-entity-dialog.tsx +1 -1
  15. package/src/app/common/set-document-direction.ts +7 -0
  16. package/src/app/main.tsx +50 -17
  17. package/src/app/routes/_authenticated/_administrators/administrators.tsx +8 -6
  18. package/src/app/routes/_authenticated/_administrators/administrators_.$id.tsx +17 -6
  19. package/src/app/routes/_authenticated/_administrators/components/role-permissions-display.tsx +2 -2
  20. package/src/app/routes/_authenticated/_assets/assets.tsx +1 -1
  21. package/src/app/routes/_authenticated/_assets/assets_.$id.tsx +4 -4
  22. package/src/app/routes/_authenticated/_assets/components/asset-bulk-actions.tsx +8 -6
  23. package/src/app/routes/_authenticated/_assets/components/asset-tag-filter.tsx +1 -1
  24. package/src/app/routes/_authenticated/_assets/components/asset-tags-editor.tsx +1 -1
  25. package/src/app/routes/_authenticated/_assets/components/manage-tags-dialog.tsx +3 -8
  26. package/src/app/routes/_authenticated/_channels/channels.tsx +3 -6
  27. package/src/app/routes/_authenticated/_channels/channels_.$id.tsx +5 -5
  28. package/src/app/routes/_authenticated/_collections/collections.tsx +3 -4
  29. package/src/app/routes/_authenticated/_collections/collections_.$id.tsx +4 -6
  30. package/src/app/routes/_authenticated/_collections/components/collection-bulk-actions.tsx +1 -1
  31. package/src/app/routes/_authenticated/_collections/components/collection-contents-sheet.tsx +1 -1
  32. package/src/app/routes/_authenticated/_collections/components/move-collections-dialog.tsx +6 -6
  33. package/src/app/routes/_authenticated/_countries/countries.graphql.ts +2 -0
  34. package/src/app/routes/_authenticated/_countries/countries.tsx +2 -3
  35. package/src/app/routes/_authenticated/_countries/countries_.$id.tsx +4 -4
  36. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-sheet.tsx +1 -1
  37. package/src/app/routes/_authenticated/_customer-groups/components/customer-group-members-table.tsx +4 -4
  38. package/src/app/routes/_authenticated/_customer-groups/customer-groups.tsx +2 -4
  39. package/src/app/routes/_authenticated/_customer-groups/customer-groups_.$id.tsx +13 -6
  40. package/src/app/routes/_authenticated/_customers/components/customer-address-card.tsx +8 -8
  41. package/src/app/routes/_authenticated/_customers/components/customer-address-form.tsx +3 -3
  42. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-container.tsx +1 -1
  43. package/src/app/routes/_authenticated/_customers/components/customer-history/customer-history-utils.tsx +1 -1
  44. package/src/app/routes/_authenticated/_customers/components/customer-history/default-customer-history-components.tsx +1 -1
  45. package/src/app/routes/_authenticated/_customers/components/customer-history/use-customer-history.ts +1 -1
  46. package/src/app/routes/_authenticated/_customers/components/customer-status-badge.tsx +1 -1
  47. package/src/app/routes/_authenticated/_customers/customers.graphql.ts +4 -0
  48. package/src/app/routes/_authenticated/_customers/customers.tsx +23 -11
  49. package/src/app/routes/_authenticated/_customers/customers_.$id.tsx +10 -8
  50. package/src/app/routes/_authenticated/_facets/components/edit-facet-value.tsx +1 -1
  51. package/src/app/routes/_authenticated/_facets/components/facet-bulk-actions.tsx +6 -5
  52. package/src/app/routes/_authenticated/_facets/components/facet-values-sheet.tsx +1 -1
  53. package/src/app/routes/_authenticated/_facets/components/facet-values-table.tsx +1 -1
  54. package/src/app/routes/_authenticated/_facets/facets.tsx +5 -5
  55. package/src/app/routes/_authenticated/_facets/facets_.$facetId.values_.$id.tsx +7 -5
  56. package/src/app/routes/_authenticated/_facets/facets_.$id.tsx +4 -4
  57. package/src/app/routes/_authenticated/_global-settings/global-settings.tsx +5 -5
  58. package/src/app/routes/_authenticated/_orders/components/add-manual-payment-dialog.tsx +19 -21
  59. package/src/app/routes/_authenticated/_orders/components/customer-address-selector.tsx +1 -1
  60. package/src/app/routes/_authenticated/_orders/components/edit-order-table.tsx +22 -22
  61. package/src/app/routes/_authenticated/_orders/components/fulfill-order-dialog.tsx +6 -6
  62. package/src/app/routes/_authenticated/_orders/components/fulfillment-details.tsx +15 -9
  63. package/src/app/routes/_authenticated/_orders/components/order-address.tsx +1 -1
  64. package/src/app/routes/_authenticated/_orders/components/order-detail-shared.tsx +11 -9
  65. package/src/app/routes/_authenticated/_orders/components/order-history/default-order-history-components.tsx +1 -1
  66. package/src/app/routes/_authenticated/_orders/components/order-history/order-history-container.tsx +1 -1
  67. package/src/app/routes/_authenticated/_orders/components/order-history/order-history-utils.tsx +1 -1
  68. package/src/app/routes/_authenticated/_orders/components/order-history/use-order-history.ts +1 -1
  69. package/src/app/routes/_authenticated/_orders/components/order-line-custom-fields-form.tsx +1 -1
  70. package/src/app/routes/_authenticated/_orders/components/order-modification-preview-dialog.tsx +4 -4
  71. package/src/app/routes/_authenticated/_orders/components/order-modification-summary.tsx +1 -1
  72. package/src/app/routes/_authenticated/_orders/components/order-table-totals.tsx +27 -27
  73. package/src/app/routes/_authenticated/_orders/components/order-table.tsx +2 -2
  74. package/src/app/routes/_authenticated/_orders/components/order-tax-summary.tsx +1 -1
  75. package/src/app/routes/_authenticated/_orders/components/payment-details.tsx +26 -20
  76. package/src/app/routes/_authenticated/_orders/components/seller-orders-card.tsx +3 -1
  77. package/src/app/routes/_authenticated/_orders/components/settle-refund-dialog.tsx +6 -6
  78. package/src/app/routes/_authenticated/_orders/components/shipping-method-selector.tsx +1 -1
  79. package/src/app/routes/_authenticated/_orders/components/state-transition-control.tsx +1 -1
  80. package/src/app/routes/_authenticated/_orders/components/use-transition-order-to-state.tsx +3 -2
  81. package/src/app/routes/_authenticated/_orders/orders.tsx +5 -9
  82. package/src/app/routes/_authenticated/_orders/orders_.$aggregateOrderId_.seller-orders.$sellerOrderId.tsx +1 -1
  83. package/src/app/routes/_authenticated/_orders/orders_.$id.tsx +1 -1
  84. package/src/app/routes/_authenticated/_orders/orders_.$id_.modify.tsx +4 -4
  85. package/src/app/routes/_authenticated/_orders/orders_.draft.$id.tsx +17 -17
  86. package/src/app/routes/_authenticated/_orders/utils/order-detail-loaders.tsx +1 -1
  87. package/src/app/routes/_authenticated/_payment-methods/payment-methods.tsx +5 -6
  88. package/src/app/routes/_authenticated/_payment-methods/payment-methods_.$id.tsx +13 -6
  89. package/src/app/routes/_authenticated/_product-variants/components/product-variant-bulk-actions.tsx +1 -1
  90. package/src/app/routes/_authenticated/_product-variants/components/variant-price-detail.tsx +1 -1
  91. package/src/app/routes/_authenticated/_product-variants/product-variants.tsx +9 -2
  92. package/src/app/routes/_authenticated/_product-variants/product-variants_.$id.tsx +13 -6
  93. package/src/app/routes/_authenticated/_products/components/add-option-group-dialog.tsx +5 -5
  94. package/src/app/routes/_authenticated/_products/components/add-product-variant-dialog.tsx +5 -5
  95. package/src/app/routes/_authenticated/_products/components/assign-facet-values-dialog.tsx +5 -4
  96. package/src/app/routes/_authenticated/_products/components/create-product-options-dialog.tsx +9 -12
  97. package/src/app/routes/_authenticated/_products/components/create-product-variants-dialog.tsx +1 -1
  98. package/src/app/routes/_authenticated/_products/components/create-product-variants.tsx +4 -4
  99. package/src/app/routes/_authenticated/_products/components/option-groups-editor.tsx +1 -1
  100. package/src/app/routes/_authenticated/_products/components/product-bulk-actions.tsx +1 -1
  101. package/src/app/routes/_authenticated/_products/components/product-option-select.tsx +3 -3
  102. package/src/app/routes/_authenticated/_products/components/product-options-table.tsx +9 -6
  103. package/src/app/routes/_authenticated/_products/products.graphql.ts +31 -31
  104. package/src/app/routes/_authenticated/_products/products.tsx +11 -6
  105. package/src/app/routes/_authenticated/_products/products_.$id.tsx +4 -4
  106. package/src/app/routes/_authenticated/_products/products_.$id_.variants.tsx +11 -11
  107. package/src/app/routes/_authenticated/_products/products_.$productId.option-groups.$id.tsx +8 -12
  108. package/src/app/routes/_authenticated/_products/products_.$productId.option-groups.$productOptionGroupId.options_.$id.tsx +2 -2
  109. package/src/app/routes/_authenticated/_profile/profile.tsx +4 -4
  110. package/src/app/routes/_authenticated/_promotions/promotions.tsx +2 -4
  111. package/src/app/routes/_authenticated/_promotions/promotions_.$id.tsx +16 -9
  112. package/src/app/routes/_authenticated/_roles/components/permissions-table-grid.tsx +1 -1
  113. package/src/app/routes/_authenticated/_roles/roles.tsx +3 -6
  114. package/src/app/routes/_authenticated/_roles/roles_.$id.tsx +4 -6
  115. package/src/app/routes/_authenticated/_sellers/sellers.tsx +3 -4
  116. package/src/app/routes/_authenticated/_sellers/sellers_.$id.tsx +4 -4
  117. package/src/app/routes/_authenticated/_shipping-methods/components/price-display.tsx +5 -5
  118. package/src/app/routes/_authenticated/_shipping-methods/components/shipping-method-test-result-wrapper.tsx +1 -1
  119. package/src/app/routes/_authenticated/_shipping-methods/components/test-address-form.tsx +4 -3
  120. package/src/app/routes/_authenticated/_shipping-methods/components/test-order-builder.tsx +4 -3
  121. package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods-result.tsx +8 -8
  122. package/src/app/routes/_authenticated/_shipping-methods/components/test-shipping-methods-sheet.tsx +1 -1
  123. package/src/app/routes/_authenticated/_shipping-methods/components/test-single-method-result.tsx +8 -8
  124. package/src/app/routes/_authenticated/_shipping-methods/components/test-single-shipping-method-sheet.tsx +4 -4
  125. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods.tsx +2 -3
  126. package/src/app/routes/_authenticated/_shipping-methods/shipping-methods_.$id.tsx +2 -2
  127. package/src/app/routes/_authenticated/_stock-locations/stock-locations.tsx +3 -4
  128. package/src/app/routes/_authenticated/_stock-locations/stock-locations_.$id.tsx +13 -6
  129. package/src/app/routes/_authenticated/_system/healthchecks.tsx +10 -4
  130. package/src/app/routes/_authenticated/_system/job-queue.tsx +10 -13
  131. package/src/app/routes/_authenticated/_system/scheduled-tasks.tsx +18 -16
  132. package/src/app/routes/_authenticated/_tax-categories/tax-categories.tsx +2 -4
  133. package/src/app/routes/_authenticated/_tax-categories/tax-categories_.$id.tsx +13 -6
  134. package/src/app/routes/_authenticated/_tax-rates/tax-rates.tsx +8 -12
  135. package/src/app/routes/_authenticated/_tax-rates/tax-rates_.$id.tsx +6 -4
  136. package/src/app/routes/_authenticated/_zones/zones.tsx +4 -4
  137. package/src/app/routes/_authenticated/_zones/zones_.$id.tsx +8 -5
  138. package/src/app/routes/_authenticated/index.tsx +6 -2
  139. package/src/app/styles.css +4 -0
  140. package/src/i18n/common-strings.ts +111 -0
  141. package/src/i18n/locales/ar.po +4777 -0
  142. package/src/i18n/locales/cs.po +4777 -0
  143. package/src/i18n/locales/de.po +4299 -1101
  144. package/src/i18n/locales/en.po +3857 -659
  145. package/src/i18n/locales/es.po +4777 -0
  146. package/src/i18n/locales/fa.po +4777 -0
  147. package/src/i18n/locales/fr.po +4777 -0
  148. package/src/i18n/locales/he.po +4777 -0
  149. package/src/i18n/locales/hr.po +4777 -0
  150. package/src/i18n/locales/it.po +4777 -0
  151. package/src/i18n/locales/ja.po +4777 -0
  152. package/src/i18n/locales/ko.po +4628 -0
  153. package/src/i18n/locales/nb.po +4777 -0
  154. package/src/i18n/locales/ne.po +4777 -0
  155. package/src/i18n/locales/nl.po +4628 -0
  156. package/src/i18n/locales/pl.po +4777 -0
  157. package/src/i18n/locales/pt_BR.po +4777 -0
  158. package/src/i18n/locales/pt_PT.po +4777 -0
  159. package/src/i18n/locales/ru.po +4777 -0
  160. package/src/i18n/locales/sv.po +4777 -0
  161. package/src/i18n/locales/tr.po +4777 -0
  162. package/src/i18n/locales/uk.po +4777 -0
  163. package/src/i18n/locales/zh_Hans.po +4777 -0
  164. package/src/i18n/locales/zh_Hant.po +4777 -0
  165. package/src/lib/components/data-input/combination-mode-input.tsx +1 -1
  166. package/src/lib/components/data-input/custom-field-list-input.tsx +11 -7
  167. package/src/lib/components/data-input/customer-group-input.tsx +27 -33
  168. package/src/lib/components/data-input/datetime-input.tsx +40 -1
  169. package/src/lib/components/data-input/default-relation-input.tsx +5 -4
  170. package/src/lib/components/data-input/product-multi-selector-input.tsx +14 -14
  171. package/src/lib/components/data-input/relation-selector.tsx +1 -1
  172. package/src/lib/components/data-input/select-with-options.tsx +1 -1
  173. package/src/lib/components/data-input/slug-input.tsx +9 -15
  174. package/src/lib/components/data-table/add-filter-menu.tsx +4 -4
  175. package/src/lib/components/data-table/data-table-bulk-action-item.tsx +8 -8
  176. package/src/lib/components/data-table/data-table-bulk-actions.tsx +4 -4
  177. package/src/lib/components/data-table/data-table-column-header.tsx +13 -8
  178. package/src/lib/components/data-table/data-table-faceted-filter.tsx +2 -1
  179. package/src/lib/components/data-table/data-table-filter-dialog.tsx +1 -1
  180. package/src/lib/components/data-table/data-table-utils.ts +21 -4
  181. package/src/lib/components/data-table/data-table-view-options.tsx +4 -2
  182. package/src/lib/components/data-table/data-table.tsx +3 -3
  183. package/src/lib/components/data-table/filters/data-table-boolean-filter.tsx +4 -4
  184. package/src/lib/components/data-table/global-views-bar.tsx +1 -1
  185. package/src/lib/components/data-table/human-readable-operator.tsx +1 -1
  186. package/src/lib/components/data-table/manage-global-views-button.tsx +1 -1
  187. package/src/lib/components/data-table/my-views-button.tsx +13 -13
  188. package/src/lib/components/data-table/refresh-button.tsx +1 -1
  189. package/src/lib/components/data-table/save-view-button.tsx +11 -11
  190. package/src/lib/components/data-table/use-generated-columns.tsx +10 -7
  191. package/src/lib/components/data-table/views-sheet.tsx +79 -71
  192. package/src/lib/components/date-range-picker.tsx +36 -34
  193. package/src/lib/components/layout/app-sidebar.tsx +3 -1
  194. package/src/lib/components/layout/channel-switcher.tsx +8 -10
  195. package/src/lib/components/layout/dev-mode-indicator.tsx +1 -1
  196. package/src/lib/components/layout/generated-breadcrumbs.tsx +10 -8
  197. package/src/lib/components/layout/language-dialog.tsx +34 -13
  198. package/src/lib/components/layout/manage-languages-dialog.tsx +1 -1
  199. package/src/lib/components/layout/nav-main.tsx +23 -13
  200. package/src/lib/components/layout/nav-user.tsx +19 -23
  201. package/src/lib/components/login/login-form.tsx +1 -1
  202. package/src/lib/components/shared/asset/asset-bulk-actions.tsx +4 -4
  203. package/src/lib/components/shared/asset/asset-focal-point-editor.tsx +1 -1
  204. package/src/lib/components/shared/asset/asset-gallery.tsx +15 -14
  205. package/src/lib/components/shared/assign-to-channel-bulk-action.tsx +11 -11
  206. package/src/lib/components/shared/assign-to-channel-dialog.tsx +6 -5
  207. package/src/lib/components/shared/channel-code-label.tsx +1 -1
  208. package/src/lib/components/shared/channel-selector.tsx +4 -4
  209. package/src/lib/components/shared/configurable-operation-multi-selector.tsx +16 -14
  210. package/src/lib/components/shared/configurable-operation-selector.tsx +1 -1
  211. package/src/lib/components/shared/confirmation-dialog.tsx +8 -8
  212. package/src/lib/components/shared/country-selector.tsx +1 -1
  213. package/src/lib/components/shared/currency-selector.tsx +4 -4
  214. package/src/lib/components/shared/custom-fields-form.tsx +8 -24
  215. package/src/lib/components/shared/customer-address-form.tsx +3 -3
  216. package/src/lib/components/shared/customer-group-selector.tsx +1 -1
  217. package/src/lib/components/shared/customer-selector.tsx +1 -1
  218. package/src/lib/components/shared/error-page.tsx +1 -1
  219. package/src/lib/components/shared/facet-value-selector.tsx +10 -10
  220. package/src/lib/components/shared/history-timeline/history-note-checkbox.tsx +1 -1
  221. package/src/lib/components/shared/history-timeline/history-note-editor.tsx +1 -1
  222. package/src/lib/components/shared/history-timeline/history-note-entry.tsx +1 -1
  223. package/src/lib/components/shared/language-selector.tsx +4 -4
  224. package/src/lib/components/shared/navigation-confirmation.tsx +1 -1
  225. package/src/lib/components/shared/paginated-list-data-table.tsx +21 -18
  226. package/src/lib/components/shared/remove-from-channel-bulk-action.tsx +6 -5
  227. package/src/lib/components/shared/rich-text-editor/image-dialog.tsx +1 -1
  228. package/src/lib/components/shared/rich-text-editor/link-dialog.tsx +1 -1
  229. package/src/lib/components/shared/rich-text-editor/responsive-toolbar.tsx +1 -1
  230. package/src/lib/components/shared/rich-text-editor/table-edit-icons.tsx +1 -1
  231. package/src/lib/components/shared/role-code-label.tsx +1 -1
  232. package/src/lib/components/shared/role-selector.tsx +4 -4
  233. package/src/lib/components/shared/seller-selector.tsx +1 -1
  234. package/src/lib/components/shared/stock-level-label.tsx +3 -5
  235. package/src/lib/components/shared/table-cell/order-table-cell-components.tsx +3 -1
  236. package/src/lib/components/shared/tax-category-selector.tsx +1 -1
  237. package/src/lib/components/shared/translatable-form-field.tsx +15 -15
  238. package/src/lib/components/shared/zone-selector.tsx +1 -1
  239. package/src/lib/constants.ts +10 -0
  240. package/src/lib/framework/dashboard-widget/base-widget.tsx +11 -9
  241. package/src/lib/framework/dashboard-widget/latest-orders-widget/index.tsx +6 -4
  242. package/src/lib/framework/dashboard-widget/metrics-widget/index.tsx +8 -5
  243. package/src/lib/framework/dashboard-widget/orders-summary/index.tsx +7 -4
  244. package/src/lib/framework/dashboard-widget/widget-filters-context.tsx +3 -1
  245. package/src/lib/framework/defaults.ts +34 -63
  246. package/src/lib/framework/layout-engine/page-layout.tsx +36 -36
  247. package/src/lib/framework/page/detail-page.tsx +10 -10
  248. package/src/lib/framework/page/use-extended-router.tsx +48 -23
  249. package/src/lib/graphql/api.ts +22 -7
  250. package/src/lib/graphql/graphql-env.d.ts +13 -25
  251. package/src/lib/hooks/use-display-locale.ts +40 -0
  252. package/src/lib/hooks/use-dynamic-translations.ts +46 -0
  253. package/src/lib/hooks/use-extended-detail-query.ts +1 -1
  254. package/src/lib/hooks/use-extended-list-query.ts +1 -1
  255. package/src/lib/hooks/use-local-format.ts +15 -1
  256. package/src/lib/hooks/use-saved-views.ts +7 -0
  257. package/src/lib/hooks/use-ui-language-loader.ts +30 -0
  258. package/src/lib/lib/load-i18n-messages.ts +17 -0
  259. package/src/lib/lib/trans.tsx +15 -11
  260. package/src/lib/providers/auth.tsx +2 -2
  261. package/src/lib/providers/channel-provider.tsx +3 -2
  262. package/src/lib/providers/i18n-provider.tsx +7 -14
  263. package/src/lib/providers/user-settings.tsx +46 -5
@@ -20,7 +20,7 @@ import {
20
20
  } from '@/vdb/framework/layout-engine/page-layout.js';
21
21
  import { detailPageRouteLoader } from '@/vdb/framework/page/detail-page-route-loader.js';
22
22
  import { useDetailPage } from '@/vdb/framework/page/use-detail-page.js';
23
- import { Trans, useLingui } from '@/vdb/lib/trans.js';
23
+ import { Trans, useLingui } from '@lingui/react/macro';
24
24
  import { createFileRoute, useNavigate } from '@tanstack/react-router';
25
25
  import { toast } from 'sonner';
26
26
  import { createTaxRateDocument, taxRateDetailDocument, updateTaxRateDocument } from './tax-rates.graphql.js';
@@ -46,7 +46,7 @@ function TaxRateDetailPage() {
46
46
  const params = Route.useParams();
47
47
  const navigate = useNavigate();
48
48
  const creatingNewEntity = params.id === NEW_ENTITY_PATH;
49
- const { i18n } = useLingui();
49
+ const { t } = useLingui();
50
50
 
51
51
  const { form, submitHandler, entity, isPending, resetForm } = useDetailPage({
52
52
  pageId,
@@ -67,14 +67,16 @@ function TaxRateDetailPage() {
67
67
  },
68
68
  params: { id: params.id },
69
69
  onSuccess: async data => {
70
- toast.success(i18n.t(creatingNewEntity ? 'Successfully created tax rate' : 'Successfully updated tax rate'));
70
+ toast.success(
71
+ creatingNewEntity ? t`Successfully created tax rate` : t`Successfully updated tax rate`,
72
+ );
71
73
  resetForm();
72
74
  if (creatingNewEntity) {
73
75
  await navigate({ to: `../$id`, params: { id: data.id } });
74
76
  }
75
77
  },
76
78
  onError: err => {
77
- toast.error(i18n.t(creatingNewEntity ? 'Failed to create tax rate' : 'Failed to update tax rate'), {
79
+ toast.error(creatingNewEntity ? t`Failed to create tax rate` : t`Failed to update tax rate`, {
78
80
  description: err instanceof Error ? err.message : 'Unknown error',
79
81
  });
80
82
  },
@@ -3,7 +3,7 @@ import { PermissionGuard } from '@/vdb/components/shared/permission-guard.js';
3
3
  import { Button } from '@/vdb/components/ui/button.js';
4
4
  import { PageActionBarRight } from '@/vdb/framework/layout-engine/page-layout.js';
5
5
  import { ListPage } from '@/vdb/framework/page/list-page.js';
6
- import { Trans } from '@/vdb/lib/trans.js';
6
+ import { Trans, useLingui } from '@lingui/react/macro';
7
7
  import { createFileRoute, Link } from '@tanstack/react-router';
8
8
  import { PlusIcon } from 'lucide-react';
9
9
  import { DeleteZonesBulkAction } from './components/zone-bulk-actions.js';
@@ -16,24 +16,24 @@ export const Route = createFileRoute('/_authenticated/_zones/zones')({
16
16
  });
17
17
 
18
18
  function ZoneListPage() {
19
+ const { t } = useLingui();
19
20
  return (
20
21
  <ListPage
21
22
  pageId="zone-list"
22
23
  listQuery={zoneListQuery}
23
24
  route={Route}
24
- title="Zones"
25
+ title={<Trans>Zones</Trans>}
25
26
  defaultVisibility={{
26
27
  name: true,
27
28
  }}
28
29
  customizeColumns={{
29
30
  name: {
30
- header: 'Name',
31
31
  cell: ({ row }) => <DetailPageButton id={row.original.id} label={row.original.name} />,
32
32
  },
33
33
  }}
34
34
  additionalColumns={{
35
35
  regions: {
36
- header: 'Regions',
36
+ header: t`Regions`,
37
37
  cell: ({ row }) => (
38
38
  <ZoneCountriesSheet zoneId={row.original.id} zoneName={row.original.name}>
39
39
  <Trans>Edit members</Trans>
@@ -16,7 +16,7 @@ import {
16
16
  } from '@/vdb/framework/layout-engine/page-layout.js';
17
17
  import { detailPageRouteLoader } from '@/vdb/framework/page/detail-page-route-loader.js';
18
18
  import { useDetailPage } from '@/vdb/framework/page/use-detail-page.js';
19
- import { Trans, useLingui } from '@/vdb/lib/trans.js';
19
+ import { Trans, useLingui } from '@lingui/react/macro';
20
20
  import { createFileRoute, useNavigate } from '@tanstack/react-router';
21
21
  import { toast } from 'sonner';
22
22
  import { ZoneCountriesTable } from './components/zone-countries-table.js';
@@ -30,7 +30,10 @@ export const Route = createFileRoute('/_authenticated/_zones/zones_/$id')({
30
30
  pageId,
31
31
  queryDocument: zoneDetailDocument,
32
32
  breadcrumb(isNew, entity) {
33
- return [{ path: '/zones', label: <Trans>Zones</Trans> }, isNew ? <Trans>New zone</Trans> : entity?.name];
33
+ return [
34
+ { path: '/zones', label: <Trans>Zones</Trans> },
35
+ isNew ? <Trans>New zone</Trans> : entity?.name,
36
+ ];
34
37
  },
35
38
  }),
36
39
  errorComponent: ({ error }) => <ErrorPage message={error.message} />,
@@ -40,7 +43,7 @@ function ZoneDetailPage() {
40
43
  const params = Route.useParams();
41
44
  const navigate = useNavigate();
42
45
  const creatingNewEntity = params.id === NEW_ENTITY_PATH;
43
- const { i18n } = useLingui();
46
+ const { t } = useLingui();
44
47
 
45
48
  const { form, submitHandler, entity, isPending, resetForm } = useDetailPage({
46
49
  pageId,
@@ -56,14 +59,14 @@ function ZoneDetailPage() {
56
59
  },
57
60
  params: { id: params.id },
58
61
  onSuccess: async data => {
59
- toast.success(i18n.t(creatingNewEntity ? 'Successfully created zone' : 'Successfully updated zone'));
62
+ toast.success(creatingNewEntity ? t`Successfully created zone` : t`Successfully updated zone`);
60
63
  resetForm();
61
64
  if (creatingNewEntity) {
62
65
  await navigate({ to: `../$id`, params: { id: data.id } });
63
66
  }
64
67
  },
65
68
  onError: err => {
66
- toast.error(i18n.t(creatingNewEntity ? 'Failed to create zone' : 'Failed to update zone'), {
69
+ toast.error(creatingNewEntity ? t`Failed to create zone` : t`Failed to update zone`, {
67
70
  description: err instanceof Error ? err.message : 'Unknown error',
68
71
  });
69
72
  },
@@ -23,6 +23,7 @@ import { useUserSettings } from '@/vdb/hooks/use-user-settings.js';
23
23
  import { createFileRoute } from '@tanstack/react-router';
24
24
  import { endOfDay, startOfMonth } from 'date-fns';
25
25
  import { useEffect, useRef, useState } from 'react';
26
+ import { Trans, useLingui } from '@lingui/react/macro';
26
27
 
27
28
  export const Route = createFileRoute('/_authenticated/')({
28
29
  component: DashboardPage,
@@ -73,6 +74,7 @@ function DashboardPage() {
73
74
  const [editMode, setEditMode] = useState(false);
74
75
  const [isInitialized, setIsInitialized] = useState(false);
75
76
  const prevEditModeRef = useRef(editMode);
77
+ const { t } = useLingui();
76
78
  const [dateRange, setDateRange] = useState<DefinedDateRange>({
77
79
  from: startOfMonth(new Date()),
78
80
  to: endOfDay(new Date()),
@@ -175,7 +177,9 @@ function DashboardPage() {
175
177
 
176
178
  return (
177
179
  <Page pageId="insights">
178
- <PageTitle>Insights</PageTitle>
180
+ <PageTitle>
181
+ <Trans>Insights</Trans>
182
+ </PageTitle>
179
183
  <PageActionBar>
180
184
  <PageActionBarRight>
181
185
  <DateRangePicker
@@ -187,7 +191,7 @@ function DashboardPage() {
187
191
  variant={editMode ? 'default' : 'outline'}
188
192
  onClick={() => setEditMode(prev => !prev)}
189
193
  >
190
- {editMode ? 'Save Layout' : 'Edit Layout'}
194
+ {editMode ? t`Save Layout` : t`Edit Layout`}
191
195
  </Button>
192
196
  </PageActionBarRight>
193
197
  </PageActionBar>
@@ -2,6 +2,10 @@
2
2
  @import 'tailwindcss';
3
3
  @import 'tw-animate-css';
4
4
 
5
+ html[dir="rtl"] * {
6
+ direction: rtl;
7
+ }
8
+
5
9
  @custom-variant dark (&:is(.dark *));
6
10
 
7
11
  /* @source rules from extensions will be added here by the dashboardTailwindSourcePlugin */
@@ -0,0 +1,111 @@
1
+ /**
2
+ * These are strings that are not defined as string literals in the code (and therefore won't
3
+ * get extracted), but still need to have translations
4
+ */
5
+ const commonI18nString = {
6
+ fulfillmentState: [
7
+ /* i18n*/ 'fulfillmentState.Created',
8
+ /* i18n*/ 'fulfillmentState.Pending',
9
+ /* i18n*/ 'fulfillmentState.Cancelled',
10
+ /* i18n*/ 'fulfillmentState.Shipped',
11
+ /* i18n*/ 'fulfillmentState.Delivered',
12
+ /* i18n*/ 'fulfillmentState.Cancelled',
13
+ ],
14
+ paymentState: [
15
+ /* i18n*/ 'paymentState.Created',
16
+ /* i18n*/ 'paymentState.Authorized',
17
+ /* i18n*/ 'paymentState.Settled',
18
+ /* i18n*/ 'paymentState.Declined',
19
+ /* i18n*/ 'paymentState.Error',
20
+ /* i18n*/ 'paymentState.Cancelled',
21
+ ],
22
+ refundState: [
23
+ /* i18n*/ 'paymentState.Pending',
24
+ /* i18n*/ 'paymentState.Settled',
25
+ /* i18n*/ 'paymentState.Failed',
26
+ ],
27
+ orderState: [
28
+ /* i18n*/ 'orderState.Created',
29
+ /* i18n*/ 'orderState.Draft',
30
+ /* i18n*/ 'orderState.AddingItems',
31
+ /* i18n*/ 'orderState.Cancelled',
32
+ /* i18n*/ 'orderState.ArrangingPayment',
33
+ /* i18n*/ 'orderState.PaymentAuthorized',
34
+ /* i18n*/ 'orderState.PaymentSettled',
35
+ /* i18n*/ 'orderState.PartiallyShipped',
36
+ /* i18n*/ 'orderState.Shipped',
37
+ /* i18n*/ 'orderState.PartiallyDelivered',
38
+ /* i18n*/ 'orderState.Delivered',
39
+ /* i18n*/ 'orderState.Modifying',
40
+ /* i18n*/ 'orderState.ArrangingAdditionalPayment',
41
+ ],
42
+ fieldName: [
43
+ /* i18n*/ 'fieldName.attempts',
44
+ /* i18n*/ 'fieldName.availableCurrencyCodes',
45
+ /* i18n*/ 'fieldName.availableLanguageCodes',
46
+ /* i18n*/ 'fieldName.breadcrumbs',
47
+ /* i18n*/ 'fieldName.category',
48
+ /* i18n*/ 'fieldName.channels',
49
+ /* i18n*/ 'fieldName.children',
50
+ /* i18n*/ 'fieldName.code',
51
+ /* i18n*/ 'fieldName.couponCode',
52
+ /* i18n*/ 'fieldName.createdAt',
53
+ /* i18n*/ 'fieldName.currencyCode',
54
+ /* i18n*/ 'fieldName.customer',
55
+ /* i18n*/ 'fieldName.customerGroup',
56
+ /* i18n*/ 'fieldName.customers',
57
+ /* i18n*/ 'fieldName.customFields',
58
+ /* i18n*/ 'fieldName.data',
59
+ /* i18n*/ 'fieldName.defaultCurrencyCode',
60
+ /* i18n*/ 'fieldName.defaultLanguageCode',
61
+ /* i18n*/ 'fieldName.defaultShippingZone',
62
+ /* i18n*/ 'fieldName.defaultTaxZone',
63
+ /* i18n*/ 'fieldName.description',
64
+ /* i18n*/ 'fieldName.duration',
65
+ /* i18n*/ 'fieldName.emailAddress',
66
+ /* i18n*/ 'fieldName.enabled',
67
+ /* i18n*/ 'fieldName.endsAt',
68
+ /* i18n*/ 'fieldName.error',
69
+ /* i18n*/ 'fieldName.featuredAsset',
70
+ /* i18n*/ 'fieldName.firstName',
71
+ /* i18n*/ 'fieldName.fulfillmentHandlerCode',
72
+ /* i18n*/ 'fieldName.id',
73
+ /* i18n*/ 'fieldName.isDefault',
74
+ /* i18n*/ 'fieldName.isPrivate',
75
+ /* i18n*/ 'fieldName.isSettled',
76
+ /* i18n*/ 'fieldName.lastName',
77
+ /* i18n*/ 'fieldName.name',
78
+ /* i18n*/ 'fieldName.orderPlacedAt',
79
+ /* i18n*/ 'fieldName.parentId',
80
+ /* i18n*/ 'fieldName.perCustomerUsageLimit',
81
+ /* i18n*/ 'fieldName.permissions',
82
+ /* i18n*/ 'fieldName.position',
83
+ /* i18n*/ 'fieldName.price',
84
+ /* i18n*/ 'fieldName.priceWithTax',
85
+ /* i18n*/ 'fieldName.pricesIncludeTax',
86
+ /* i18n*/ 'fieldName.productVariants',
87
+ /* i18n*/ 'fieldName.progress',
88
+ /* i18n*/ 'fieldName.queueName',
89
+ /* i18n*/ 'fieldName.result',
90
+ /* i18n*/ 'fieldName.retries',
91
+ /* i18n*/ 'fieldName.seller',
92
+ /* i18n*/ 'fieldName.settledAt',
93
+ /* i18n*/ 'fieldName.shippingLines',
94
+ /* i18n*/ 'fieldName.sku',
95
+ /* i18n*/ 'fieldName.slug',
96
+ /* i18n*/ 'fieldName.startedAt',
97
+ /* i18n*/ 'fieldName.startsAt',
98
+ /* i18n*/ 'fieldName.state',
99
+ /* i18n*/ 'fieldName.stockLevels',
100
+ /* i18n*/ 'fieldName.token',
101
+ /* i18n*/ 'fieldName.total',
102
+ /* i18n*/ 'fieldName.totalWithTax',
103
+ /* i18n*/ 'fieldName.type',
104
+ /* i18n*/ 'fieldName.updatedAt',
105
+ /* i18n*/ 'fieldName.usageLimit',
106
+ /* i18n*/ 'fieldName.user',
107
+ /* i18n*/ 'fieldName.value',
108
+ /* i18n*/ 'fieldName.valueList',
109
+ /* i18n*/ 'fieldName.zone',
110
+ ],
111
+ };