@open-mercato/core 0.6.6-develop.6314.1.c7b8291aa2 → 0.6.6-develop.6330.1.a261878aa8
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/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js +7 -12
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +5 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +2 -1
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/company-users/widget.client.js +2 -1
- package/dist/modules/customer_accounts/widgets/injection/company-users/widget.client.js.map +2 -2
- package/dist/modules/customers/ai-tools/_shared.js +158 -0
- package/dist/modules/customers/ai-tools/_shared.js.map +7 -0
- package/dist/modules/customers/ai-tools/companies-pack.js +15 -121
- package/dist/modules/customers/ai-tools/companies-pack.js.map +2 -2
- package/dist/modules/customers/ai-tools/people-pack.js +9 -107
- package/dist/modules/customers/ai-tools/people-pack.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarScreen.js +1 -0
- package/dist/modules/customers/components/calendar/CalendarScreen.js.map +2 -2
- package/dist/modules/customers/components/calendar/EventPeekPopover.js +12 -1
- package/dist/modules/customers/components/calendar/EventPeekPopover.js.map +2 -2
- package/dist/modules/customers/components/calendar/TimeGrid.js +3 -0
- package/dist/modules/customers/components/calendar/TimeGrid.js.map +2 -2
- package/dist/modules/customers/components/calendar/types.js.map +1 -1
- package/dist/modules/customers/components/detail/EntityTagsDialog.js +76 -67
- package/dist/modules/customers/components/detail/EntityTagsDialog.js.map +3 -3
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js +4 -3
- package/dist/modules/dashboards/components/WidgetVisibilityEditor.js.map +2 -2
- package/dist/modules/data_sync/api/runs.js +1 -0
- package/dist/modules/data_sync/api/runs.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +3 -1
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/data/validators.js +1 -0
- package/dist/modules/data_sync/data/validators.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-run-service.js +20 -0
- package/dist/modules/data_sync/lib/sync-run-service.js.map +2 -2
- package/dist/modules/entities/api/records.js +11 -1
- package/dist/modules/entities/api/records.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +17 -10
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/messages/api/unread-count/route.js +32 -0
- package/dist/modules/messages/api/unread-count/route.js.map +2 -2
- package/dist/modules/query_index/components/QueryIndexesTable.js +13 -5
- package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
- package/dist/modules/shipping_carriers/i18n/en.js +11 -1
- package/dist/modules/shipping_carriers/i18n/en.js.map +2 -2
- package/dist/modules/shipping_carriers/i18n/pl.js +11 -1
- package/dist/modules/shipping_carriers/i18n/pl.js.map +2 -2
- package/dist/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.client.js +25 -0
- package/dist/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.client.js.map +7 -0
- package/dist/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.js +3 -17
- package/dist/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.js.map +2 -2
- package/dist/modules/translations/widgets/injection/translation-manager/widget.client.js +19 -14
- package/dist/modules/translations/widgets/injection/translation-manager/widget.client.js.map +2 -2
- package/package.json +7 -7
- package/src/modules/customer_accounts/backend/customer_accounts/roles/[id]/page.tsx +7 -10
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +6 -7
- package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +3 -2
- package/src/modules/customer_accounts/widgets/injection/company-users/widget.client.tsx +3 -2
- package/src/modules/customers/ai-tools/_shared.ts +270 -0
- package/src/modules/customers/ai-tools/companies-pack.ts +17 -157
- package/src/modules/customers/ai-tools/people-pack.ts +11 -133
- package/src/modules/customers/components/calendar/CalendarScreen.tsx +1 -0
- package/src/modules/customers/components/calendar/EventPeekPopover.tsx +29 -11
- package/src/modules/customers/components/calendar/TimeGrid.tsx +3 -0
- package/src/modules/customers/components/calendar/types.ts +1 -0
- package/src/modules/customers/components/detail/EntityTagsDialog.tsx +89 -71
- package/src/modules/customers/i18n/de.json +1 -0
- package/src/modules/customers/i18n/en.json +1 -0
- package/src/modules/customers/i18n/es.json +1 -0
- package/src/modules/customers/i18n/pl.json +1 -0
- package/src/modules/dashboards/components/WidgetVisibilityEditor.tsx +6 -3
- package/src/modules/data_sync/api/runs.ts +1 -0
- package/src/modules/data_sync/backend/data-sync/page.tsx +3 -1
- package/src/modules/data_sync/data/validators.ts +1 -0
- package/src/modules/data_sync/i18n/de.json +1 -0
- package/src/modules/data_sync/i18n/en.json +1 -0
- package/src/modules/data_sync/i18n/es.json +1 -0
- package/src/modules/data_sync/i18n/pl.json +1 -0
- package/src/modules/data_sync/lib/sync-run-service.ts +23 -0
- package/src/modules/entities/api/records.ts +17 -1
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +25 -12
- package/src/modules/messages/api/unread-count/route.ts +40 -0
- package/src/modules/query_index/components/QueryIndexesTable.tsx +17 -15
- package/src/modules/shipping_carriers/i18n/de.json +11 -1
- package/src/modules/shipping_carriers/i18n/en.json +11 -1
- package/src/modules/shipping_carriers/i18n/en.ts +10 -0
- package/src/modules/shipping_carriers/i18n/es.json +11 -1
- package/src/modules/shipping_carriers/i18n/pl.json +11 -1
- package/src/modules/shipping_carriers/i18n/pl.ts +10 -0
- package/src/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.client.tsx +35 -0
- package/src/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.tsx +3 -22
- package/src/modules/translations/widgets/injection/translation-manager/widget.client.tsx +30 -13
|
@@ -70,5 +70,15 @@
|
|
|
70
70
|
"shipping_carriers.create.summary.to": "Nach",
|
|
71
71
|
"shipping_carriers.create.title": "Sendung beim Transporteur erstellen",
|
|
72
72
|
"shipping_carriers.feature.manage": "Versanddienstleister-Vorgaenge verwalten",
|
|
73
|
-
"shipping_carriers.feature.view": "Sendungen der Versanddienstleister anzeigen"
|
|
73
|
+
"shipping_carriers.feature.view": "Sendungen der Versanddienstleister anzeigen",
|
|
74
|
+
"shipping_carriers.status.cancelled": "Storniert",
|
|
75
|
+
"shipping_carriers.status.delivered": "Zugestellt",
|
|
76
|
+
"shipping_carriers.status.failed_delivery": "Zustellung fehlgeschlagen",
|
|
77
|
+
"shipping_carriers.status.in_transit": "Unterwegs",
|
|
78
|
+
"shipping_carriers.status.label_created": "Label erstellt",
|
|
79
|
+
"shipping_carriers.status.out_for_delivery": "In Zustellung",
|
|
80
|
+
"shipping_carriers.status.pending": "Ausstehend",
|
|
81
|
+
"shipping_carriers.status.picked_up": "Abgeholt",
|
|
82
|
+
"shipping_carriers.status.returned": "Zuruckgesendet",
|
|
83
|
+
"shipping_carriers.status.unknown": "Unbekannt"
|
|
74
84
|
}
|
|
@@ -70,5 +70,15 @@
|
|
|
70
70
|
"shipping_carriers.create.summary.to": "To",
|
|
71
71
|
"shipping_carriers.create.title": "Create carrier shipment",
|
|
72
72
|
"shipping_carriers.feature.manage": "Manage shipping carrier operations",
|
|
73
|
-
"shipping_carriers.feature.view": "View shipping carrier shipments"
|
|
73
|
+
"shipping_carriers.feature.view": "View shipping carrier shipments",
|
|
74
|
+
"shipping_carriers.status.cancelled": "Cancelled",
|
|
75
|
+
"shipping_carriers.status.delivered": "Delivered",
|
|
76
|
+
"shipping_carriers.status.failed_delivery": "Delivery failed",
|
|
77
|
+
"shipping_carriers.status.in_transit": "In transit",
|
|
78
|
+
"shipping_carriers.status.label_created": "Label created",
|
|
79
|
+
"shipping_carriers.status.out_for_delivery": "Out for delivery",
|
|
80
|
+
"shipping_carriers.status.pending": "Pending",
|
|
81
|
+
"shipping_carriers.status.picked_up": "Picked up",
|
|
82
|
+
"shipping_carriers.status.returned": "Returned",
|
|
83
|
+
"shipping_carriers.status.unknown": "Unknown"
|
|
74
84
|
}
|
|
@@ -4,4 +4,14 @@ export default {
|
|
|
4
4
|
'shipping_carriers.column.trackingStatus': 'Tracking status',
|
|
5
5
|
'shipping_carriers.column.shippingStatus': 'Shipping status',
|
|
6
6
|
'shipping_carriers.action.createShipment': 'Create shipment',
|
|
7
|
+
'shipping_carriers.status.cancelled': 'Cancelled',
|
|
8
|
+
'shipping_carriers.status.delivered': 'Delivered',
|
|
9
|
+
'shipping_carriers.status.failed_delivery': 'Delivery failed',
|
|
10
|
+
'shipping_carriers.status.in_transit': 'In transit',
|
|
11
|
+
'shipping_carriers.status.label_created': 'Label created',
|
|
12
|
+
'shipping_carriers.status.out_for_delivery': 'Out for delivery',
|
|
13
|
+
'shipping_carriers.status.pending': 'Pending',
|
|
14
|
+
'shipping_carriers.status.picked_up': 'Picked up',
|
|
15
|
+
'shipping_carriers.status.returned': 'Returned',
|
|
16
|
+
'shipping_carriers.status.unknown': 'Unknown',
|
|
7
17
|
}
|
|
@@ -70,5 +70,15 @@
|
|
|
70
70
|
"shipping_carriers.create.summary.to": "Hasta",
|
|
71
71
|
"shipping_carriers.create.title": "Crear envio con transportista",
|
|
72
72
|
"shipping_carriers.feature.manage": "Gestionar operaciones de transportistas",
|
|
73
|
-
"shipping_carriers.feature.view": "Ver envios de transportistas"
|
|
73
|
+
"shipping_carriers.feature.view": "Ver envios de transportistas",
|
|
74
|
+
"shipping_carriers.status.cancelled": "Cancelado",
|
|
75
|
+
"shipping_carriers.status.delivered": "Entregado",
|
|
76
|
+
"shipping_carriers.status.failed_delivery": "Entrega fallida",
|
|
77
|
+
"shipping_carriers.status.in_transit": "En transito",
|
|
78
|
+
"shipping_carriers.status.label_created": "Etiqueta creada",
|
|
79
|
+
"shipping_carriers.status.out_for_delivery": "En reparto",
|
|
80
|
+
"shipping_carriers.status.pending": "Pendiente",
|
|
81
|
+
"shipping_carriers.status.picked_up": "Recogido",
|
|
82
|
+
"shipping_carriers.status.returned": "Devuelto",
|
|
83
|
+
"shipping_carriers.status.unknown": "Desconocido"
|
|
74
84
|
}
|
|
@@ -70,5 +70,15 @@
|
|
|
70
70
|
"shipping_carriers.create.summary.to": "Odbiór",
|
|
71
71
|
"shipping_carriers.create.title": "Utwórz przesyłkę u przewoźnika",
|
|
72
72
|
"shipping_carriers.feature.manage": "Zarzadzanie operacjami przewoznikow",
|
|
73
|
-
"shipping_carriers.feature.view": "Podglad przesylek przewoznikow"
|
|
73
|
+
"shipping_carriers.feature.view": "Podglad przesylek przewoznikow",
|
|
74
|
+
"shipping_carriers.status.cancelled": "Anulowano",
|
|
75
|
+
"shipping_carriers.status.delivered": "Doreczono",
|
|
76
|
+
"shipping_carriers.status.failed_delivery": "Doreczenie nieudane",
|
|
77
|
+
"shipping_carriers.status.in_transit": "W transporcie",
|
|
78
|
+
"shipping_carriers.status.label_created": "Etykieta utworzona",
|
|
79
|
+
"shipping_carriers.status.out_for_delivery": "W doreczeniu",
|
|
80
|
+
"shipping_carriers.status.pending": "Oczekuje",
|
|
81
|
+
"shipping_carriers.status.picked_up": "Odebrano",
|
|
82
|
+
"shipping_carriers.status.returned": "Zwrocono",
|
|
83
|
+
"shipping_carriers.status.unknown": "Nieznany"
|
|
74
84
|
}
|
|
@@ -4,4 +4,14 @@ export default {
|
|
|
4
4
|
'shipping_carriers.column.trackingStatus': 'Status śledzenia',
|
|
5
5
|
'shipping_carriers.column.shippingStatus': 'Status wysyłki',
|
|
6
6
|
'shipping_carriers.action.createShipment': 'Utwórz przesyłkę',
|
|
7
|
+
'shipping_carriers.status.cancelled': 'Anulowano',
|
|
8
|
+
'shipping_carriers.status.delivered': 'Doręczono',
|
|
9
|
+
'shipping_carriers.status.failed_delivery': 'Doręczenie nieudane',
|
|
10
|
+
'shipping_carriers.status.in_transit': 'W transporcie',
|
|
11
|
+
'shipping_carriers.status.label_created': 'Etykieta utworzona',
|
|
12
|
+
'shipping_carriers.status.out_for_delivery': 'W doręczeniu',
|
|
13
|
+
'shipping_carriers.status.pending': 'Oczekuje',
|
|
14
|
+
'shipping_carriers.status.picked_up': 'Odebrano',
|
|
15
|
+
'shipping_carriers.status.returned': 'Zwrócono',
|
|
16
|
+
'shipping_carriers.status.unknown': 'Nieznany',
|
|
7
17
|
}
|
package/src/modules/shipping_carriers/widgets/injection/tracking-status-badge/widget.client.tsx
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
4
|
+
import { StatusBadge, type StatusMap } from '@open-mercato/ui/primitives/status-badge'
|
|
5
|
+
import type { UnifiedShipmentStatus } from '../../../lib/adapter'
|
|
6
|
+
|
|
7
|
+
type ShippingStatus = UnifiedShipmentStatus | 'pending'
|
|
8
|
+
|
|
9
|
+
const shippingStatusVariantMap: StatusMap<ShippingStatus> = {
|
|
10
|
+
pending: 'neutral',
|
|
11
|
+
label_created: 'info',
|
|
12
|
+
picked_up: 'info',
|
|
13
|
+
in_transit: 'info',
|
|
14
|
+
out_for_delivery: 'info',
|
|
15
|
+
delivered: 'success',
|
|
16
|
+
failed_delivery: 'error',
|
|
17
|
+
returned: 'warning',
|
|
18
|
+
cancelled: 'error',
|
|
19
|
+
unknown: 'neutral',
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type ShippingStatusBadgeWidgetProps = {
|
|
23
|
+
status: string
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export default function ShippingStatusBadgeWidget({ status }: ShippingStatusBadgeWidgetProps) {
|
|
27
|
+
const t = useT()
|
|
28
|
+
const variant = shippingStatusVariantMap[status as ShippingStatus] ?? 'neutral'
|
|
29
|
+
|
|
30
|
+
return (
|
|
31
|
+
<StatusBadge variant={variant} dot>
|
|
32
|
+
{t(`shipping_carriers.status.${status}`, status)}
|
|
33
|
+
</StatusBadge>
|
|
34
|
+
)
|
|
35
|
+
}
|
|
@@ -1,20 +1,6 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
1
2
|
import type { InjectionColumnWidget } from '@open-mercato/shared/modules/widgets/injection'
|
|
2
|
-
|
|
3
|
-
const SHIPPING_STATUS_COLORS: Record<string, string> = {
|
|
4
|
-
pending: 'bg-gray-100 text-gray-700',
|
|
5
|
-
label_created: 'bg-slate-100 text-slate-700',
|
|
6
|
-
picked_up: 'bg-sky-100 text-sky-700',
|
|
7
|
-
in_transit: 'bg-blue-100 text-blue-700',
|
|
8
|
-
out_for_delivery: 'bg-indigo-100 text-indigo-700',
|
|
9
|
-
delivered: 'bg-green-100 text-green-700',
|
|
10
|
-
returned: 'bg-amber-100 text-amber-700',
|
|
11
|
-
cancelled: 'bg-red-100 text-red-700',
|
|
12
|
-
failed_delivery: 'bg-orange-100 text-orange-700',
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function formatShippingStatusLabel(value: string): string {
|
|
16
|
-
return value.replace(/_/g, ' ')
|
|
17
|
-
}
|
|
3
|
+
import ShippingStatusBadgeWidget from './widget.client'
|
|
18
4
|
|
|
19
5
|
const widget: InjectionColumnWidget = {
|
|
20
6
|
metadata: {
|
|
@@ -30,12 +16,7 @@ const widget: InjectionColumnWidget = {
|
|
|
30
16
|
cell: ({ getValue }) => {
|
|
31
17
|
const value = getValue()
|
|
32
18
|
if (typeof value !== 'string' || value.length === 0) return null
|
|
33
|
-
|
|
34
|
-
return (
|
|
35
|
-
<span className={`inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium ${colors}`}>
|
|
36
|
-
{formatShippingStatusLabel(value)}
|
|
37
|
-
</span>
|
|
38
|
-
)
|
|
19
|
+
return React.createElement(ShippingStatusBadgeWidget, { status: value })
|
|
39
20
|
},
|
|
40
21
|
},
|
|
41
22
|
],
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
import * as React from 'react'
|
|
4
4
|
import { useParams } from 'next/navigation'
|
|
5
5
|
import Link from 'next/link'
|
|
6
|
+
import { useQuery } from '@tanstack/react-query'
|
|
6
7
|
import { ExternalLink, Languages } from 'lucide-react'
|
|
7
8
|
import type { InjectionWidgetComponentProps } from '@open-mercato/shared/modules/widgets/injection'
|
|
8
9
|
import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
10
|
+
import { hasAllFeatures } from '@open-mercato/shared/lib/auth/featureMatch'
|
|
11
|
+
import { apiCall } from '@open-mercato/ui/backend/utils/apiCall'
|
|
9
12
|
import { Button } from '@open-mercato/ui/primitives/button'
|
|
10
13
|
import {
|
|
11
14
|
Drawer,
|
|
@@ -21,20 +24,34 @@ import { extractRecordId } from '../../../lib/extract-record-id'
|
|
|
21
24
|
type WidgetContext = { entityId?: string; recordId?: string }
|
|
22
25
|
type WidgetData = Record<string, unknown> & { id?: string | number }
|
|
23
26
|
|
|
27
|
+
type FeatureCheckResponse = {
|
|
28
|
+
ok: boolean
|
|
29
|
+
granted: string[]
|
|
30
|
+
userId: string
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const TRANSLATION_ACCESS_FEATURES = ['translations.view']
|
|
34
|
+
|
|
35
|
+
// Probe access through the shared apiCall/React Query path so multiple injected
|
|
36
|
+
// widget instances dedupe a single request via the query key. feature-check
|
|
37
|
+
// always answers 200 with the granted feature list, so a user without
|
|
38
|
+
// translations.view is hidden gracefully — no login redirect, no forbidden flash.
|
|
24
39
|
function useTranslationAccess(): boolean {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
const { data } = useQuery<boolean>({
|
|
41
|
+
queryKey: ['translations', 'widget-access', ...TRANSLATION_ACCESS_FEATURES],
|
|
42
|
+
queryFn: async () => {
|
|
43
|
+
const res = await apiCall<FeatureCheckResponse>('/api/auth/feature-check', {
|
|
44
|
+
method: 'POST',
|
|
45
|
+
headers: { 'content-type': 'application/json' },
|
|
46
|
+
body: JSON.stringify({ features: TRANSLATION_ACCESS_FEATURES }),
|
|
47
|
+
})
|
|
48
|
+
if (!res.ok) return false
|
|
49
|
+
return hasAllFeatures(TRANSLATION_ACCESS_FEATURES, res.result?.granted ?? [])
|
|
50
|
+
},
|
|
51
|
+
staleTime: 5 * 60 * 1000,
|
|
52
|
+
retry: false,
|
|
53
|
+
})
|
|
54
|
+
return data === true
|
|
38
55
|
}
|
|
39
56
|
|
|
40
57
|
export default function TranslationWidget({ context, data }: InjectionWidgetComponentProps<WidgetContext, WidgetData>) {
|