@open-mercato/ui 0.7.0 → 0.7.1-develop.7102.1.b41f7e3e51

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 (67) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/ai/records/ActivityCard.js +4 -3
  3. package/dist/ai/records/ActivityCard.js.map +2 -2
  4. package/dist/ai/records/DealCard.js +4 -3
  5. package/dist/ai/records/DealCard.js.map +2 -2
  6. package/dist/ai/records/ProductCard.js +3 -2
  7. package/dist/ai/records/ProductCard.js.map +2 -2
  8. package/dist/backend/AppShell.js +129 -106
  9. package/dist/backend/AppShell.js.map +2 -2
  10. package/dist/backend/DataTable.js +20 -7
  11. package/dist/backend/DataTable.js.map +2 -2
  12. package/dist/backend/detail/NotesSection.js +26 -20
  13. package/dist/backend/detail/NotesSection.js.map +2 -2
  14. package/dist/backend/icons/lucideRegistry.generated.js +4 -0
  15. package/dist/backend/icons/lucideRegistry.generated.js.map +2 -2
  16. package/dist/backend/injection/useRegisteredComponent.js +24 -6
  17. package/dist/backend/injection/useRegisteredComponent.js.map +2 -2
  18. package/dist/backend/inputs/ComboboxInput.js +8 -4
  19. package/dist/backend/inputs/ComboboxInput.js.map +2 -2
  20. package/dist/backend/inputs/LookupSelect.js +8 -8
  21. package/dist/backend/inputs/LookupSelect.js.map +2 -2
  22. package/dist/backend/sidebar/SidebarCustomizationEditor.js +36 -30
  23. package/dist/backend/sidebar/SidebarCustomizationEditor.js.map +2 -2
  24. package/dist/backend/utils/crud.js.map +2 -2
  25. package/dist/primitives/alert.js +1 -1
  26. package/dist/primitives/alert.js.map +2 -2
  27. package/dist/primitives/icon-button.js +20 -1
  28. package/dist/primitives/icon-button.js.map +2 -2
  29. package/dist/primitives/pagination.js +14 -9
  30. package/dist/primitives/pagination.js.map +2 -2
  31. package/dist/primitives/rich-editor.js +14 -7
  32. package/dist/primitives/rich-editor.js.map +2 -2
  33. package/dist/utils/format.js +5 -5
  34. package/dist/utils/format.js.map +2 -2
  35. package/package.json +5 -4
  36. package/src/ai/parts/__tests__/ConfirmationCard.test.tsx +2 -0
  37. package/src/ai/records/ActivityCard.tsx +4 -3
  38. package/src/ai/records/DealCard.tsx +4 -3
  39. package/src/ai/records/ProductCard.tsx +3 -2
  40. package/src/backend/AppShell.tsx +89 -58
  41. package/src/backend/DataTable.tsx +44 -10
  42. package/src/backend/__tests__/AppShell.test.tsx +162 -1
  43. package/src/backend/__tests__/DataTable.cappedPagination.test.tsx +122 -0
  44. package/src/backend/__tests__/DataTable.headerWrap.test.tsx +111 -0
  45. package/src/backend/__tests__/DataTable.render.test.tsx +37 -0
  46. package/src/backend/__tests__/NotesSection.test.tsx +89 -0
  47. package/src/backend/__tests__/useRegisteredComponent.identity.test.tsx +305 -0
  48. package/src/backend/detail/NotesSection.tsx +92 -67
  49. package/src/backend/icons/lucideRegistry.generated.tsx +4 -0
  50. package/src/backend/injection/useRegisteredComponent.tsx +49 -8
  51. package/src/backend/inputs/ComboboxInput.tsx +21 -5
  52. package/src/backend/inputs/LookupSelect.tsx +8 -8
  53. package/src/backend/inputs/__tests__/ComboboxInput.test.tsx +142 -0
  54. package/src/backend/inputs/__tests__/LookupSelect.test.tsx +75 -0
  55. package/src/backend/sidebar/SidebarCustomizationEditor.tsx +14 -11
  56. package/src/backend/utils/crud.ts +2 -0
  57. package/src/primitives/__tests__/alert.test.tsx +41 -1
  58. package/src/primitives/__tests__/icon-button.test.tsx +70 -0
  59. package/src/primitives/__tests__/notification.test.tsx +1 -1
  60. package/src/primitives/__tests__/pagination.test.tsx +54 -0
  61. package/src/primitives/__tests__/rich-editor.test.tsx +43 -0
  62. package/src/primitives/alert.tsx +5 -2
  63. package/src/primitives/icon-button.tsx +20 -1
  64. package/src/primitives/pagination.tsx +40 -9
  65. package/src/primitives/rich-editor.tsx +9 -4
  66. package/src/utils/__tests__/format.test.ts +27 -14
  67. package/src/utils/format.ts +10 -5
@@ -4,10 +4,15 @@
4
4
  * Returns `null` for empty input, the original string for non-numeric input,
5
5
  * and falls back to a plain number format (optionally suffixed with the code)
6
6
  * when the currency code is missing or rejected by `Intl.NumberFormat`.
7
+ *
8
+ * Pass `locale` to format in the application locale (`useLocale()` in client
9
+ * components). Omitting it keeps the runtime default, which varies per machine
10
+ * and is therefore not assertable in tests.
7
11
  */
8
12
  export function formatCurrency(
9
13
  value: string | number | null | undefined,
10
14
  currency?: string | null,
15
+ locale?: string,
11
16
  ): string | null {
12
17
  if (value === null || value === undefined || value === '') return null
13
18
  const numeric = typeof value === 'number' ? value : Number(value)
@@ -17,12 +22,12 @@ export function formatCurrency(
17
22
  const code = currency && currency.length === 3 ? currency.toUpperCase() : undefined
18
23
  try {
19
24
  if (code) {
20
- return new Intl.NumberFormat(undefined, { style: 'currency', currency: code }).format(numeric)
25
+ return new Intl.NumberFormat(locale, { style: 'currency', currency: code }).format(numeric)
21
26
  }
22
27
  } catch {
23
28
  // fall through to plain number formatting
24
29
  }
25
- const formatted = new Intl.NumberFormat().format(numeric)
30
+ const formatted = new Intl.NumberFormat(locale).format(numeric)
26
31
  return code ? `${formatted} ${code}` : formatted
27
32
  }
28
33
 
@@ -30,11 +35,11 @@ export function formatCurrency(
30
35
  * Format an ISO date string as a localized short date (e.g. `Jun 9, 2026`).
31
36
  *
32
37
  * Returns `null` for empty input and echoes the original value back when it is
33
- * not a parseable date.
38
+ * not a parseable date. Pass `locale` to format in the application locale.
34
39
  */
35
- export function formatDate(value: string | null | undefined): string | null {
40
+ export function formatDate(value: string | null | undefined, locale?: string): string | null {
36
41
  if (!value) return null
37
42
  const date = new Date(value)
38
43
  if (Number.isNaN(date.getTime())) return value
39
- return date.toLocaleDateString(undefined, { year: 'numeric', month: 'short', day: 'numeric' })
44
+ return date.toLocaleDateString(locale, { year: 'numeric', month: 'short', day: 'numeric' })
40
45
  }