@open-mercato/ui 0.7.0 → 0.7.1-develop.7103.1.41ff100d93
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.
- package/.turbo/turbo-build.log +1 -1
- package/dist/ai/records/ActivityCard.js +4 -3
- package/dist/ai/records/ActivityCard.js.map +2 -2
- package/dist/ai/records/DealCard.js +4 -3
- package/dist/ai/records/DealCard.js.map +2 -2
- package/dist/ai/records/ProductCard.js +3 -2
- package/dist/ai/records/ProductCard.js.map +2 -2
- package/dist/backend/AppShell.js +129 -106
- package/dist/backend/AppShell.js.map +2 -2
- package/dist/backend/DataTable.js +20 -7
- package/dist/backend/DataTable.js.map +2 -2
- package/dist/backend/detail/NotesSection.js +26 -20
- package/dist/backend/detail/NotesSection.js.map +2 -2
- package/dist/backend/icons/lucideRegistry.generated.js +4 -0
- package/dist/backend/icons/lucideRegistry.generated.js.map +2 -2
- package/dist/backend/injection/useRegisteredComponent.js +24 -6
- package/dist/backend/injection/useRegisteredComponent.js.map +2 -2
- package/dist/backend/inputs/ComboboxInput.js +8 -4
- package/dist/backend/inputs/ComboboxInput.js.map +2 -2
- package/dist/backend/inputs/LookupSelect.js +8 -8
- package/dist/backend/inputs/LookupSelect.js.map +2 -2
- package/dist/backend/sidebar/SidebarCustomizationEditor.js +36 -30
- package/dist/backend/sidebar/SidebarCustomizationEditor.js.map +2 -2
- package/dist/backend/utils/crud.js.map +2 -2
- package/dist/primitives/alert.js +1 -1
- package/dist/primitives/alert.js.map +2 -2
- package/dist/primitives/icon-button.js +20 -1
- package/dist/primitives/icon-button.js.map +2 -2
- package/dist/primitives/pagination.js +14 -9
- package/dist/primitives/pagination.js.map +2 -2
- package/dist/primitives/rich-editor.js +14 -7
- package/dist/primitives/rich-editor.js.map +2 -2
- package/dist/utils/format.js +5 -5
- package/dist/utils/format.js.map +2 -2
- package/package.json +5 -4
- package/src/ai/parts/__tests__/ConfirmationCard.test.tsx +2 -0
- package/src/ai/records/ActivityCard.tsx +4 -3
- package/src/ai/records/DealCard.tsx +4 -3
- package/src/ai/records/ProductCard.tsx +3 -2
- package/src/backend/AppShell.tsx +89 -58
- package/src/backend/DataTable.tsx +44 -10
- package/src/backend/__tests__/AppShell.test.tsx +162 -1
- package/src/backend/__tests__/DataTable.cappedPagination.test.tsx +122 -0
- package/src/backend/__tests__/DataTable.headerWrap.test.tsx +111 -0
- package/src/backend/__tests__/DataTable.render.test.tsx +37 -0
- package/src/backend/__tests__/NotesSection.test.tsx +89 -0
- package/src/backend/__tests__/useRegisteredComponent.identity.test.tsx +305 -0
- package/src/backend/detail/NotesSection.tsx +92 -67
- package/src/backend/icons/lucideRegistry.generated.tsx +4 -0
- package/src/backend/injection/useRegisteredComponent.tsx +49 -8
- package/src/backend/inputs/ComboboxInput.tsx +21 -5
- package/src/backend/inputs/LookupSelect.tsx +8 -8
- package/src/backend/inputs/__tests__/ComboboxInput.test.tsx +142 -0
- package/src/backend/inputs/__tests__/LookupSelect.test.tsx +75 -0
- package/src/backend/sidebar/SidebarCustomizationEditor.tsx +14 -11
- package/src/backend/utils/crud.ts +2 -0
- package/src/primitives/__tests__/alert.test.tsx +41 -1
- package/src/primitives/__tests__/icon-button.test.tsx +70 -0
- package/src/primitives/__tests__/notification.test.tsx +1 -1
- package/src/primitives/__tests__/pagination.test.tsx +54 -0
- package/src/primitives/__tests__/rich-editor.test.tsx +43 -0
- package/src/primitives/alert.tsx +5 -2
- package/src/primitives/icon-button.tsx +20 -1
- package/src/primitives/pagination.tsx +40 -9
- package/src/primitives/rich-editor.tsx +9 -4
- package/src/utils/__tests__/format.test.ts +27 -14
- package/src/utils/format.ts +10 -5
package/src/utils/format.ts
CHANGED
|
@@ -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(
|
|
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(
|
|
44
|
+
return date.toLocaleDateString(locale, { year: 'numeric', month: 'short', day: 'numeric' })
|
|
40
45
|
}
|