@open-mercato/core 0.5.1-develop.2996.ce62fd491c → 0.5.1-develop.3036.f02c281f23
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/auth/api/sidebar/preferences/route.js +2 -2
- package/dist/modules/auth/api/sidebar/preferences/route.js.map +2 -2
- package/dist/modules/auth/api/sidebar/variants/[id]/route.js +2 -2
- package/dist/modules/auth/api/sidebar/variants/[id]/route.js.map +2 -2
- package/dist/modules/auth/api/sidebar/variants/route.js +1 -1
- package/dist/modules/auth/api/sidebar/variants/route.js.map +2 -2
- package/dist/modules/auth/backend/sidebar-customization/page.meta.js +1 -0
- package/dist/modules/auth/backend/sidebar-customization/page.meta.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/route.js +30 -20
- package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/companies/route.js +12 -7
- package/dist/modules/customers/api/companies/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +12 -7
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +2 -2
- package/dist/modules/customers/api/people/route.js +12 -7
- package/dist/modules/customers/api/people/route.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +21 -0
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +27 -30
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivitiesAddNewMenu.js +56 -0
- package/dist/modules/customers/components/detail/ActivitiesAddNewMenu.js.map +7 -0
- package/dist/modules/customers/components/detail/ActivitiesCard.js +175 -0
- package/dist/modules/customers/components/detail/ActivitiesCard.js.map +7 -0
- package/dist/modules/customers/components/detail/ActivitiesDayStrip.js +324 -0
- package/dist/modules/customers/components/detail/ActivitiesDayStrip.js.map +7 -0
- package/dist/modules/customers/components/detail/ActivitiesSection.js +62 -13
- package/dist/modules/customers/components/detail/ActivitiesSection.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivityLogTab.js +14 -23
- package/dist/modules/customers/components/detail/ActivityLogTab.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivityTimeline.js +13 -13
- package/dist/modules/customers/components/detail/ActivityTimeline.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivityTimelineFilters.js +35 -22
- package/dist/modules/customers/components/detail/ActivityTimelineFilters.js.map +2 -2
- package/dist/modules/customers/components/detail/AiActionChips.js +15 -22
- package/dist/modules/customers/components/detail/AiActionChips.js.map +2 -2
- package/dist/modules/customers/components/detail/ScheduleActivityDialog.js +196 -28
- package/dist/modules/customers/components/detail/ScheduleActivityDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/DateTimeFields.js +2 -2
- package/dist/modules/customers/components/detail/schedule/DateTimeFields.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/FooterFields.js +14 -2
- package/dist/modules/customers/components/detail/schedule/FooterFields.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/LinkedEntitiesField.js +9 -2
- package/dist/modules/customers/components/detail/schedule/LinkedEntitiesField.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js +9 -2
- package/dist/modules/customers/components/detail/schedule/ParticipantsField.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/fieldConfig.js +25 -4
- package/dist/modules/customers/components/detail/schedule/fieldConfig.js.map +2 -2
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js +20 -3
- package/dist/modules/customers/components/detail/schedule/useScheduleFormState.js.map +2 -2
- package/package.json +3 -3
- package/src/modules/auth/api/sidebar/preferences/route.ts +2 -2
- package/src/modules/auth/api/sidebar/variants/[id]/route.ts +2 -2
- package/src/modules/auth/api/sidebar/variants/route.ts +1 -1
- package/src/modules/auth/backend/sidebar-customization/page.meta.ts +1 -8
- package/src/modules/customers/api/companies/[id]/route.ts +30 -20
- package/src/modules/customers/api/companies/route.ts +12 -7
- package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +12 -7
- package/src/modules/customers/api/people/route.ts +12 -7
- package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +22 -0
- package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +28 -21
- package/src/modules/customers/components/detail/ActivitiesAddNewMenu.tsx +67 -0
- package/src/modules/customers/components/detail/ActivitiesCard.tsx +231 -0
- package/src/modules/customers/components/detail/ActivitiesDayStrip.tsx +390 -0
- package/src/modules/customers/components/detail/ActivitiesSection.tsx +91 -40
- package/src/modules/customers/components/detail/ActivityLogTab.tsx +25 -23
- package/src/modules/customers/components/detail/ActivityTimeline.tsx +15 -19
- package/src/modules/customers/components/detail/ActivityTimelineFilters.tsx +36 -29
- package/src/modules/customers/components/detail/AiActionChips.tsx +17 -23
- package/src/modules/customers/components/detail/ScheduleActivityDialog.tsx +233 -41
- package/src/modules/customers/components/detail/schedule/DateTimeFields.tsx +6 -2
- package/src/modules/customers/components/detail/schedule/FooterFields.tsx +22 -2
- package/src/modules/customers/components/detail/schedule/LinkedEntitiesField.tsx +10 -2
- package/src/modules/customers/components/detail/schedule/ParticipantsField.tsx +10 -2
- package/src/modules/customers/components/detail/schedule/fieldConfig.ts +26 -6
- package/src/modules/customers/components/detail/schedule/useScheduleFormState.ts +32 -3
- package/src/modules/customers/i18n/de.json +69 -2
- package/src/modules/customers/i18n/en.json +69 -2
- package/src/modules/customers/i18n/es.json +69 -2
- package/src/modules/customers/i18n/pl.json +68 -1
|
@@ -5,7 +5,27 @@ import { useT } from '@open-mercato/shared/lib/i18n/context'
|
|
|
5
5
|
import type { ActivityType, ScheduleFieldId } from './fieldConfig'
|
|
6
6
|
import { isVisible, getFieldLabel } from './fieldConfig'
|
|
7
7
|
|
|
8
|
-
const REMINDER_OPTIONS = [0, 5, 10, 15, 30, 60]
|
|
8
|
+
const REMINDER_OPTIONS = [0, 5, 10, 15, 30, 60, 240, 1440]
|
|
9
|
+
|
|
10
|
+
function formatReminderLabel(
|
|
11
|
+
minutes: number,
|
|
12
|
+
t: (key: string, fallback: string, params?: Record<string, string | number>) => string,
|
|
13
|
+
): string {
|
|
14
|
+
if (minutes === 0) return t('customers.schedule.reminder.none', 'None')
|
|
15
|
+
if (minutes >= 1440) {
|
|
16
|
+
const days = Math.round(minutes / 1440)
|
|
17
|
+
return days === 1
|
|
18
|
+
? t('customers.schedule.reminder.dayBefore', '1 day before')
|
|
19
|
+
: t('customers.schedule.reminder.daysBefore', '{days} days before', { days })
|
|
20
|
+
}
|
|
21
|
+
if (minutes >= 60) {
|
|
22
|
+
const hours = Math.round(minutes / 60)
|
|
23
|
+
return hours === 1
|
|
24
|
+
? t('customers.schedule.reminder.hourBefore', '1 hour before')
|
|
25
|
+
: t('customers.schedule.reminder.hoursBefore', '{hours} hours before', { hours })
|
|
26
|
+
}
|
|
27
|
+
return t('customers.schedule.reminder.minutesBefore', '{minutes} min before', { minutes })
|
|
28
|
+
}
|
|
9
29
|
|
|
10
30
|
interface FooterFieldsProps {
|
|
11
31
|
visible: Set<ScheduleFieldId>
|
|
@@ -47,7 +67,7 @@ export function FooterFields({
|
|
|
47
67
|
>
|
|
48
68
|
{REMINDER_OPTIONS.map((m) => (
|
|
49
69
|
<option key={m} value={m}>
|
|
50
|
-
{m
|
|
70
|
+
{formatReminderLabel(m, t)}
|
|
51
71
|
</option>
|
|
52
72
|
))}
|
|
53
73
|
</select>
|
|
@@ -9,7 +9,7 @@ import { Button } from '@open-mercato/ui/primitives/button'
|
|
|
9
9
|
import { IconButton } from '@open-mercato/ui/primitives/icon-button'
|
|
10
10
|
import { Popover, PopoverContent, PopoverTrigger } from '@open-mercato/ui/primitives/popover'
|
|
11
11
|
import type { ActivityType, ScheduleFieldId } from './fieldConfig'
|
|
12
|
-
import { isVisible } from './fieldConfig'
|
|
12
|
+
import { isVisible, getFieldLabel } from './fieldConfig'
|
|
13
13
|
import type { LinkedEntity } from './useScheduleFormState'
|
|
14
14
|
|
|
15
15
|
const ENTITY_LINK_TYPES = ['company', 'deal', 'offer'] as const
|
|
@@ -242,10 +242,18 @@ export function LinkedEntitiesField({
|
|
|
242
242
|
|
|
243
243
|
if (!isVisible(activityType, 'linkedEntities')) return null
|
|
244
244
|
|
|
245
|
+
const sectionLabel = getFieldLabel(
|
|
246
|
+
activityType,
|
|
247
|
+
'linkedEntities',
|
|
248
|
+
t,
|
|
249
|
+
'customers.schedule.linkedEntities',
|
|
250
|
+
'Linked entities',
|
|
251
|
+
)
|
|
252
|
+
|
|
245
253
|
return (
|
|
246
254
|
<div>
|
|
247
255
|
<label className="text-overline font-semibold uppercase text-muted-foreground tracking-wider">
|
|
248
|
-
{
|
|
256
|
+
{sectionLabel}
|
|
249
257
|
</label>
|
|
250
258
|
<div className="mt-2.5 flex flex-wrap content-center items-center gap-2">
|
|
251
259
|
{linkedEntities.map((entity) => (
|
|
@@ -9,7 +9,7 @@ import { IconButton } from '@open-mercato/ui/primitives/icon-button'
|
|
|
9
9
|
import { Popover, PopoverContent, PopoverTrigger } from '@open-mercato/ui/primitives/popover'
|
|
10
10
|
import { fetchAssignableStaffMembersPage } from '../assignableStaff'
|
|
11
11
|
import type { ActivityType, ScheduleFieldId } from './fieldConfig'
|
|
12
|
-
import { isVisible } from './fieldConfig'
|
|
12
|
+
import { isVisible, getFieldLabel } from './fieldConfig'
|
|
13
13
|
import type { Participant, RsvpStatus } from './useScheduleFormState'
|
|
14
14
|
import { PARTICIPANT_COLORS } from './useScheduleFormState'
|
|
15
15
|
|
|
@@ -186,10 +186,18 @@ export function ParticipantsField({
|
|
|
186
186
|
|
|
187
187
|
if (!isVisible(activityType, 'participants')) return null
|
|
188
188
|
|
|
189
|
+
const sectionLabel = getFieldLabel(
|
|
190
|
+
activityType,
|
|
191
|
+
'participants',
|
|
192
|
+
t,
|
|
193
|
+
'customers.schedule.participants',
|
|
194
|
+
'Participants',
|
|
195
|
+
)
|
|
196
|
+
|
|
189
197
|
return (
|
|
190
198
|
<div>
|
|
191
199
|
<label className="text-overline font-semibold uppercase text-muted-foreground tracking-wider">
|
|
192
|
-
{
|
|
200
|
+
{sectionLabel}
|
|
193
201
|
</label>
|
|
194
202
|
<div className="mt-2.5 flex flex-wrap content-center items-center gap-2 rounded-lg border border-border bg-background px-3 py-2.5">
|
|
195
203
|
{participants.map((p) => (
|
|
@@ -27,29 +27,49 @@ export const FIELD_VISIBILITY: Record<ActivityType, Set<ScheduleFieldId>> = {
|
|
|
27
27
|
'participants', 'linkedEntities', 'description',
|
|
28
28
|
'reminder', 'visibility',
|
|
29
29
|
]),
|
|
30
|
+
// Task: now also surfaces Due time (startTime) + Estimate (duration) per Figma 790:280.
|
|
30
31
|
task: new Set([
|
|
31
|
-
'title', 'date',
|
|
32
|
+
'title', 'date', 'startTime', 'duration',
|
|
32
33
|
'linkedEntities', 'description',
|
|
33
34
|
'reminder', 'visibility',
|
|
34
35
|
]),
|
|
36
|
+
// Email: surface participants as TO recipients per Figma 790:510.
|
|
35
37
|
email: new Set([
|
|
36
38
|
'title', 'date', 'startTime',
|
|
37
|
-
'linkedEntities', 'description',
|
|
38
|
-
'visibility',
|
|
39
|
+
'participants', 'linkedEntities', 'description',
|
|
40
|
+
'reminder', 'visibility',
|
|
39
41
|
]),
|
|
40
42
|
}
|
|
41
43
|
|
|
42
44
|
type LabelOverride = { key: string; fallback: string }
|
|
43
45
|
|
|
46
|
+
// Per-type section labels (Figma 784:1255 / 829:50 / 790:280 / 790:510).
|
|
47
|
+
// `participants` / `linkedEntities` / `description` resolve via these overrides
|
|
48
|
+
// when present; otherwise the field components fall back to their generic key.
|
|
44
49
|
export const FIELD_LABEL_OVERRIDES: Partial<
|
|
45
50
|
Record<ActivityType, Partial<Record<ScheduleFieldId, LabelOverride>>>
|
|
46
51
|
> = {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
52
|
+
meeting: {
|
|
53
|
+
participants: { key: 'customers.schedule.attendees', fallback: 'Attendees' },
|
|
54
|
+
linkedEntities: { key: 'customers.schedule.connections', fallback: 'Connections' },
|
|
55
|
+
},
|
|
56
|
+
call: {
|
|
57
|
+
participants: { key: 'customers.schedule.contact', fallback: 'Contact' },
|
|
58
|
+
linkedEntities: { key: 'customers.schedule.connections', fallback: 'Connections' },
|
|
59
|
+
description: { key: 'customers.schedule.callNotes', fallback: 'Call notes' },
|
|
50
60
|
},
|
|
51
61
|
task: {
|
|
52
62
|
date: { key: 'customers.schedule.dueDate', fallback: 'Due date' },
|
|
63
|
+
startTime: { key: 'customers.schedule.dueTime', fallback: 'Due time' },
|
|
64
|
+
duration: { key: 'customers.schedule.estimate', fallback: 'Estimate' },
|
|
65
|
+
linkedEntities: { key: 'customers.schedule.connections', fallback: 'Connections' },
|
|
66
|
+
description: { key: 'customers.schedule.details', fallback: 'Details' },
|
|
67
|
+
},
|
|
68
|
+
email: {
|
|
69
|
+
title: { key: 'customers.schedule.subject', fallback: 'Subject' },
|
|
70
|
+
participants: { key: 'customers.schedule.to', fallback: 'To' },
|
|
71
|
+
linkedEntities: { key: 'customers.schedule.connections', fallback: 'Connections' },
|
|
72
|
+
description: { key: 'customers.schedule.message', fallback: 'Message' },
|
|
53
73
|
},
|
|
54
74
|
}
|
|
55
75
|
|
|
@@ -44,6 +44,18 @@ export const PARTICIPANT_COLORS = [
|
|
|
44
44
|
'bg-chart-teal',
|
|
45
45
|
]
|
|
46
46
|
|
|
47
|
+
// Per-Figma defaults for the Reminder dropdown when the user picks an activity
|
|
48
|
+
// type. Meeting/email keep the standard 15 min; tasks default to 1 day (1440 min)
|
|
49
|
+
// because they're plan-ahead artefacts; calls default to 5 min as a stand-in for
|
|
50
|
+
// the Figma "After call ends" treatment (which would need a non-numeric sentinel
|
|
51
|
+
// in the API contract — tracked as a follow-up).
|
|
52
|
+
const DEFAULT_REMINDER_MINUTES: Record<ActivityType, number> = {
|
|
53
|
+
meeting: 15,
|
|
54
|
+
call: 5,
|
|
55
|
+
task: 1440,
|
|
56
|
+
email: 15,
|
|
57
|
+
}
|
|
58
|
+
|
|
47
59
|
interface UseScheduleFormStateParams {
|
|
48
60
|
open: boolean
|
|
49
61
|
editData: ScheduleActivityEditData | null | undefined
|
|
@@ -76,7 +88,8 @@ export function useScheduleFormState({ open, editData }: UseScheduleFormStatePar
|
|
|
76
88
|
if (open) {
|
|
77
89
|
if (editData) {
|
|
78
90
|
// Edit mode: populate from existing interaction
|
|
79
|
-
|
|
91
|
+
const resolvedType = (editData.interactionType as ActivityType) ?? 'meeting'
|
|
92
|
+
setActivityType(resolvedType)
|
|
80
93
|
setTitle(editData.title ?? '')
|
|
81
94
|
const scheduledDate = editData.scheduledAt ? new Date(editData.scheduledAt) : new Date()
|
|
82
95
|
setDate(scheduledDate.toISOString().slice(0, 10))
|
|
@@ -85,7 +98,9 @@ export function useScheduleFormState({ open, editData }: UseScheduleFormStatePar
|
|
|
85
98
|
setAllDay(editData.allDay ?? false)
|
|
86
99
|
setDescription(editData.body ?? '')
|
|
87
100
|
setLocation(editData.location ?? '')
|
|
88
|
-
|
|
101
|
+
// Use per-type default when the editData omits an explicit reminder
|
|
102
|
+
// (the menu-driven "New X" flow opens the dialog with `reminderMinutes: null`).
|
|
103
|
+
setReminderMinutes(editData.reminderMinutes ?? DEFAULT_REMINDER_MINUTES[resolvedType])
|
|
89
104
|
setVisibility(editData.visibility ?? 'team')
|
|
90
105
|
setParticipants(
|
|
91
106
|
Array.isArray(editData.participants)
|
|
@@ -145,7 +160,7 @@ export function useScheduleFormState({ open, editData }: UseScheduleFormStatePar
|
|
|
145
160
|
setAllDay(false)
|
|
146
161
|
setDescription('')
|
|
147
162
|
setLocation('')
|
|
148
|
-
setReminderMinutes(
|
|
163
|
+
setReminderMinutes(DEFAULT_REMINDER_MINUTES.meeting)
|
|
149
164
|
setVisibility('team')
|
|
150
165
|
setParticipants([])
|
|
151
166
|
setLinkedEntities([])
|
|
@@ -160,6 +175,20 @@ export function useScheduleFormState({ open, editData }: UseScheduleFormStatePar
|
|
|
160
175
|
}
|
|
161
176
|
}, [open, editData])
|
|
162
177
|
|
|
178
|
+
// Update the Reminder default when the activity type changes in create mode.
|
|
179
|
+
// Skipped in edit mode (the persisted value wins), and gated by `open` to
|
|
180
|
+
// avoid flipping the default in a closed-but-mounted dialog.
|
|
181
|
+
const lastReminderTypeRef = React.useRef<ActivityType>('meeting')
|
|
182
|
+
React.useEffect(() => {
|
|
183
|
+
if (!open || editData) {
|
|
184
|
+
lastReminderTypeRef.current = activityType
|
|
185
|
+
return
|
|
186
|
+
}
|
|
187
|
+
if (lastReminderTypeRef.current === activityType) return
|
|
188
|
+
lastReminderTypeRef.current = activityType
|
|
189
|
+
setReminderMinutes(DEFAULT_REMINDER_MINUTES[activityType])
|
|
190
|
+
}, [activityType, editData, open])
|
|
191
|
+
|
|
163
192
|
const removeParticipant = React.useCallback((userId: string) => {
|
|
164
193
|
setParticipants((prev) => prev.filter((p) => p.userId !== userId))
|
|
165
194
|
}, [])
|
|
@@ -4,12 +4,33 @@
|
|
|
4
4
|
"audit_logs.resource_kind.customers.comment": "Kommentar",
|
|
5
5
|
"audit_logs.resource_kind.customers.todoLink": "Aufgabe",
|
|
6
6
|
"backend.nav.configuration": "Konfiguration",
|
|
7
|
+
"customers.activities.add.call": "Anruf protokollieren",
|
|
8
|
+
"customers.activities.add.email": "E-Mail verfassen",
|
|
9
|
+
"customers.activities.add.meeting": "Neues Meeting",
|
|
10
|
+
"customers.activities.add.task": "Neue Aufgabe",
|
|
11
|
+
"customers.activities.addNew": "Neu hinzufügen",
|
|
12
|
+
"customers.activities.calendar.eventPlural": "Ereignisse",
|
|
13
|
+
"customers.activities.calendar.eventSingular": "Ereignis",
|
|
14
|
+
"customers.activities.calendar.eventsSummary": "{count} {countLabel} · {duration}",
|
|
15
|
+
"customers.activities.calendar.hoursMinutesShort": "{hours}h {minutes}m",
|
|
16
|
+
"customers.activities.calendar.hoursShort": "{hours}h",
|
|
17
|
+
"customers.activities.calendar.minutesShort": "{minutes}m",
|
|
18
|
+
"customers.activities.calendar.monthYear": "{month} {year}",
|
|
19
|
+
"customers.activities.calendar.nextMonth": "Nächster Monat",
|
|
20
|
+
"customers.activities.calendar.nextWindow": "Nächste Tage",
|
|
21
|
+
"customers.activities.calendar.prevMonth": "Vorheriger Monat",
|
|
22
|
+
"customers.activities.calendar.prevWindow": "Vorherige Tage",
|
|
23
|
+
"customers.activities.calendar.weekend": "Wochenende",
|
|
24
|
+
"customers.activities.card.empty": "Für diesen Tag ist nichts geplant.",
|
|
25
|
+
"customers.activities.card.overdue": "{count} überfällig",
|
|
26
|
+
"customers.activities.card.title": "Aktivitäten",
|
|
7
27
|
"customers.activities.filters.clearAll": "Clear filters",
|
|
8
28
|
"customers.activities.filters.dateRange": "Date range",
|
|
9
29
|
"customers.activities.loadFailed": "Aktivitäten konnten nicht geladen werden.",
|
|
10
30
|
"customers.activities.loadMore": "Load more",
|
|
11
31
|
"customers.activities.overdue": "",
|
|
12
32
|
"customers.activities.seeAll": "",
|
|
33
|
+
"customers.activities.seeMatching": "",
|
|
13
34
|
"customers.activities.yearSeparator": "",
|
|
14
35
|
"customers.activityComposer.cancel": "Cancel",
|
|
15
36
|
"customers.activityComposer.dateLabel": "Date",
|
|
@@ -1781,22 +1802,46 @@
|
|
|
1781
1802
|
"customers.schedule.addVisibleLinks": "Alle sichtbaren hinzufügen",
|
|
1782
1803
|
"customers.schedule.addVisibleParticipants": "Alle sichtbaren hinzufügen",
|
|
1783
1804
|
"customers.schedule.allDay": "All day",
|
|
1805
|
+
"customers.schedule.attendees": "Attendees",
|
|
1784
1806
|
"customers.schedule.body": "Inhalt",
|
|
1807
|
+
"customers.schedule.call.direction.inbound": "Eingehend",
|
|
1808
|
+
"customers.schedule.call.direction.outbound": "Ausgehend",
|
|
1809
|
+
"customers.schedule.call.directionLabel": "Richtung",
|
|
1810
|
+
"customers.schedule.call.outcome.badNumber": "Falsche Nummer",
|
|
1811
|
+
"customers.schedule.call.outcome.busy": "Besetzt",
|
|
1812
|
+
"customers.schedule.call.outcome.connected": "Verbunden",
|
|
1813
|
+
"customers.schedule.call.outcome.noAnswer": "Keine Antwort",
|
|
1814
|
+
"customers.schedule.call.outcome.voicemail": "Voicemail",
|
|
1815
|
+
"customers.schedule.call.outcomeLabel": "Ergebnis",
|
|
1816
|
+
"customers.schedule.call.phoneLabel": "Telefonnummer",
|
|
1817
|
+
"customers.schedule.call.phonePlaceholder": "+1 555 000 0000",
|
|
1818
|
+
"customers.schedule.call.save": "Anruf protokollieren",
|
|
1819
|
+
"customers.schedule.call.subtitle": "Protokollieren Sie einen gerade geführten Anruf oder planen Sie einen",
|
|
1820
|
+
"customers.schedule.call.title": "Anruf protokollieren",
|
|
1821
|
+
"customers.schedule.callNotes": "Call notes",
|
|
1785
1822
|
"customers.schedule.cancel": "Cancel",
|
|
1786
1823
|
"customers.schedule.conflict.description": "Overlaps with: {{items}}",
|
|
1787
1824
|
"customers.schedule.conflict.title": "Calendar conflict",
|
|
1825
|
+
"customers.schedule.connections": "Connections",
|
|
1826
|
+
"customers.schedule.contact": "Contact",
|
|
1788
1827
|
"customers.schedule.context": "On timeline: {{name}}",
|
|
1789
1828
|
"customers.schedule.date": "Date",
|
|
1790
1829
|
"customers.schedule.description": "Description",
|
|
1791
1830
|
"customers.schedule.descriptionPlaceholder": "Add details...",
|
|
1831
|
+
"customers.schedule.details": "Details",
|
|
1792
1832
|
"customers.schedule.discardConfirm.cancel": "Weiter bearbeiten",
|
|
1793
1833
|
"customers.schedule.discardConfirm.confirm": "Verwerfen",
|
|
1794
1834
|
"customers.schedule.discardConfirm.description": "Sie haben nicht gespeicherte Änderungen in dieser Aktivität. Speichern Sie sie zuerst oder fahren Sie fort, um sie zu verwerfen.",
|
|
1795
1835
|
"customers.schedule.discardConfirm.title": "Nicht gespeicherte Änderungen verwerfen?",
|
|
1796
1836
|
"customers.schedule.dueDate": "Fälligkeitsdatum",
|
|
1837
|
+
"customers.schedule.dueTime": "Due time",
|
|
1797
1838
|
"customers.schedule.duration": "Duration",
|
|
1798
1839
|
"customers.schedule.editTitle": "Aktivität bearbeiten",
|
|
1840
|
+
"customers.schedule.email.save": "E-Mail senden",
|
|
1841
|
+
"customers.schedule.email.subtitle": "Verfassen und senden Sie eine getrackte E-Mail",
|
|
1842
|
+
"customers.schedule.email.title": "E-Mail verfassen",
|
|
1799
1843
|
"customers.schedule.error": "Failed to schedule activity",
|
|
1844
|
+
"customers.schedule.estimate": "Estimate",
|
|
1800
1845
|
"customers.schedule.guestPerm.invite": "Invite others",
|
|
1801
1846
|
"customers.schedule.guestPerm.modify": "Modify",
|
|
1802
1847
|
"customers.schedule.guestPerm.seeList": "See list",
|
|
@@ -1808,6 +1853,10 @@
|
|
|
1808
1853
|
"customers.schedule.loadMore": "Load more",
|
|
1809
1854
|
"customers.schedule.location": "Location",
|
|
1810
1855
|
"customers.schedule.locationPlaceholder": "Add location or meeting link...",
|
|
1856
|
+
"customers.schedule.meeting.save": "Aktivität speichern",
|
|
1857
|
+
"customers.schedule.meeting.subtitle": "Termin im Kalender mit Teilnehmern blockieren",
|
|
1858
|
+
"customers.schedule.meeting.title": "Neues Meeting",
|
|
1859
|
+
"customers.schedule.message": "Message",
|
|
1811
1860
|
"customers.schedule.noResults": "No results",
|
|
1812
1861
|
"customers.schedule.participants": "Participants",
|
|
1813
1862
|
"customers.schedule.recurrence.active": "Repeats",
|
|
@@ -1815,10 +1864,15 @@
|
|
|
1815
1864
|
"customers.schedule.recurrence.edit": "Bearbeiten",
|
|
1816
1865
|
"customers.schedule.recurrence.ends": "Ends",
|
|
1817
1866
|
"customers.schedule.recurrence.never": "Never",
|
|
1818
|
-
"customers.schedule.recurrence.none": "
|
|
1867
|
+
"customers.schedule.recurrence.none": "Does not repeat",
|
|
1819
1868
|
"customers.schedule.recurrence.onDate": "On date",
|
|
1820
1869
|
"customers.schedule.recurrence.title": "Recurrence",
|
|
1821
1870
|
"customers.schedule.reminder": "Reminder",
|
|
1871
|
+
"customers.schedule.reminder.dayBefore": "1 day before",
|
|
1872
|
+
"customers.schedule.reminder.daysBefore": "{days} days before",
|
|
1873
|
+
"customers.schedule.reminder.hourBefore": "1 hour before",
|
|
1874
|
+
"customers.schedule.reminder.hoursBefore": "{hours} hours before",
|
|
1875
|
+
"customers.schedule.reminder.minutesBefore": "{minutes} min before",
|
|
1822
1876
|
"customers.schedule.reminder.none": "None",
|
|
1823
1877
|
"customers.schedule.removeLink": "Verknüpfung entfernen",
|
|
1824
1878
|
"customers.schedule.removeParticipant": "Teilnehmer entfernen",
|
|
@@ -1834,9 +1888,19 @@
|
|
|
1834
1888
|
"customers.schedule.searching": "Searching...",
|
|
1835
1889
|
"customers.schedule.start": "Start",
|
|
1836
1890
|
"customers.schedule.subject": "Betreff",
|
|
1891
|
+
"customers.schedule.subjectPlaceholder": "Subject...",
|
|
1892
|
+
"customers.schedule.task.priority.high": "Hoch",
|
|
1893
|
+
"customers.schedule.task.priority.low": "Niedrig",
|
|
1894
|
+
"customers.schedule.task.priority.medium": "Mittel",
|
|
1895
|
+
"customers.schedule.task.priority.urgent": "Dringend",
|
|
1896
|
+
"customers.schedule.task.priorityLabel": "Priorität",
|
|
1897
|
+
"customers.schedule.task.save": "Aufgabe speichern",
|
|
1898
|
+
"customers.schedule.task.subtitle": "Erfassen Sie etwas zum Nachverfolgen",
|
|
1899
|
+
"customers.schedule.task.title": "Neue Aufgabe",
|
|
1837
1900
|
"customers.schedule.title": "Schedule activity",
|
|
1838
1901
|
"customers.schedule.titleLabel": "Title",
|
|
1839
1902
|
"customers.schedule.titlePlaceholder": "Activity title...",
|
|
1903
|
+
"customers.schedule.to": "To",
|
|
1840
1904
|
"customers.schedule.types.call": "Call",
|
|
1841
1905
|
"customers.schedule.types.email": "Email",
|
|
1842
1906
|
"customers.schedule.types.meeting": "Meeting",
|
|
@@ -1923,10 +1987,11 @@
|
|
|
1923
1987
|
"customers.temperature.warm": "High Interest",
|
|
1924
1988
|
"customers.timeline.author": "by {{name}}",
|
|
1925
1989
|
"customers.timeline.date.today": "today",
|
|
1990
|
+
"customers.timeline.date.tomorrow": "tomorrow",
|
|
1926
1991
|
"customers.timeline.date.yesterday": "yesterday",
|
|
1927
1992
|
"customers.timeline.edit": "Edit",
|
|
1928
1993
|
"customers.timeline.empty": "No activities match the current filters.",
|
|
1929
|
-
"customers.timeline.filter.all": "All",
|
|
1994
|
+
"customers.timeline.filter.all": "All Activities",
|
|
1930
1995
|
"customers.timeline.filter.call": "Call",
|
|
1931
1996
|
"customers.timeline.filter.email": "Email",
|
|
1932
1997
|
"customers.timeline.filter.from": "From date",
|
|
@@ -1934,6 +1999,8 @@
|
|
|
1934
1999
|
"customers.timeline.filter.note": "Note",
|
|
1935
2000
|
"customers.timeline.filter.to": "To date",
|
|
1936
2001
|
"customers.timeline.history.filtered": "filtered: {{types}} · {{count}} results",
|
|
2002
|
+
"customers.timeline.history.searchAriaLabel": "",
|
|
2003
|
+
"customers.timeline.history.searchPlaceholder": "",
|
|
1937
2004
|
"customers.timeline.history.seeAll": "See all {{count}} activities",
|
|
1938
2005
|
"customers.timeline.history.title": "Interaction history with {{name}}",
|
|
1939
2006
|
"customers.timeline.history.titleGeneric": "Interaction history",
|
|
@@ -4,12 +4,33 @@
|
|
|
4
4
|
"audit_logs.resource_kind.customers.comment": "Comment",
|
|
5
5
|
"audit_logs.resource_kind.customers.todoLink": "Todo",
|
|
6
6
|
"backend.nav.configuration": "Configuration",
|
|
7
|
+
"customers.activities.add.call": "Log call",
|
|
8
|
+
"customers.activities.add.email": "Compose email",
|
|
9
|
+
"customers.activities.add.meeting": "New meeting",
|
|
10
|
+
"customers.activities.add.task": "New task",
|
|
11
|
+
"customers.activities.addNew": "Add new",
|
|
12
|
+
"customers.activities.calendar.eventPlural": "events",
|
|
13
|
+
"customers.activities.calendar.eventSingular": "event",
|
|
14
|
+
"customers.activities.calendar.eventsSummary": "{count} {countLabel} · {duration}",
|
|
15
|
+
"customers.activities.calendar.hoursMinutesShort": "{hours}h {minutes}m",
|
|
16
|
+
"customers.activities.calendar.hoursShort": "{hours}h",
|
|
17
|
+
"customers.activities.calendar.minutesShort": "{minutes}m",
|
|
18
|
+
"customers.activities.calendar.monthYear": "{month} {year}",
|
|
19
|
+
"customers.activities.calendar.nextMonth": "Next month",
|
|
20
|
+
"customers.activities.calendar.nextWindow": "Next days",
|
|
21
|
+
"customers.activities.calendar.prevMonth": "Previous month",
|
|
22
|
+
"customers.activities.calendar.prevWindow": "Previous days",
|
|
23
|
+
"customers.activities.calendar.weekend": "Weekend",
|
|
24
|
+
"customers.activities.card.empty": "Nothing scheduled for this day.",
|
|
25
|
+
"customers.activities.card.overdue": "{count} overdue",
|
|
26
|
+
"customers.activities.card.title": "Activities",
|
|
7
27
|
"customers.activities.filters.clearAll": "Clear filters",
|
|
8
28
|
"customers.activities.filters.dateRange": "Date range",
|
|
9
29
|
"customers.activities.loadFailed": "Failed to load activities.",
|
|
10
30
|
"customers.activities.loadMore": "Load more",
|
|
11
31
|
"customers.activities.overdue": "{count} overdue",
|
|
12
32
|
"customers.activities.seeAll": "See all {count} activities",
|
|
33
|
+
"customers.activities.seeMatching": "Showing {visible} of {total} activities",
|
|
13
34
|
"customers.activities.yearSeparator": "{year}",
|
|
14
35
|
"customers.activityComposer.cancel": "Cancel",
|
|
15
36
|
"customers.activityComposer.dateLabel": "Date",
|
|
@@ -1781,22 +1802,46 @@
|
|
|
1781
1802
|
"customers.schedule.addVisibleLinks": "Add all visible",
|
|
1782
1803
|
"customers.schedule.addVisibleParticipants": "Add all visible",
|
|
1783
1804
|
"customers.schedule.allDay": "All day",
|
|
1805
|
+
"customers.schedule.attendees": "Attendees",
|
|
1784
1806
|
"customers.schedule.body": "Body",
|
|
1807
|
+
"customers.schedule.call.direction.inbound": "Inbound",
|
|
1808
|
+
"customers.schedule.call.direction.outbound": "Outbound",
|
|
1809
|
+
"customers.schedule.call.directionLabel": "Direction",
|
|
1810
|
+
"customers.schedule.call.outcome.badNumber": "Bad number",
|
|
1811
|
+
"customers.schedule.call.outcome.busy": "Busy",
|
|
1812
|
+
"customers.schedule.call.outcome.connected": "Connected",
|
|
1813
|
+
"customers.schedule.call.outcome.noAnswer": "No answer",
|
|
1814
|
+
"customers.schedule.call.outcome.voicemail": "Voicemail",
|
|
1815
|
+
"customers.schedule.call.outcomeLabel": "Outcome",
|
|
1816
|
+
"customers.schedule.call.phoneLabel": "Phone number",
|
|
1817
|
+
"customers.schedule.call.phonePlaceholder": "+1 555 000 0000",
|
|
1818
|
+
"customers.schedule.call.save": "Log call",
|
|
1819
|
+
"customers.schedule.call.subtitle": "Log a call you just had or schedule one",
|
|
1820
|
+
"customers.schedule.call.title": "Log call",
|
|
1821
|
+
"customers.schedule.callNotes": "Call notes",
|
|
1785
1822
|
"customers.schedule.cancel": "Cancel",
|
|
1786
1823
|
"customers.schedule.conflict.description": "Overlaps with: {{items}}",
|
|
1787
1824
|
"customers.schedule.conflict.title": "Calendar conflict",
|
|
1825
|
+
"customers.schedule.connections": "Connections",
|
|
1826
|
+
"customers.schedule.contact": "Contact",
|
|
1788
1827
|
"customers.schedule.context": "On timeline: {{name}}",
|
|
1789
1828
|
"customers.schedule.date": "Date",
|
|
1790
1829
|
"customers.schedule.description": "Description",
|
|
1791
1830
|
"customers.schedule.descriptionPlaceholder": "Add details...",
|
|
1831
|
+
"customers.schedule.details": "Details",
|
|
1792
1832
|
"customers.schedule.discardConfirm.cancel": "Keep editing",
|
|
1793
1833
|
"customers.schedule.discardConfirm.confirm": "Discard",
|
|
1794
1834
|
"customers.schedule.discardConfirm.description": "You have unsaved edits in this activity. Save them first or continue to discard them.",
|
|
1795
1835
|
"customers.schedule.discardConfirm.title": "Discard unsaved changes?",
|
|
1796
1836
|
"customers.schedule.dueDate": "Due date",
|
|
1837
|
+
"customers.schedule.dueTime": "Due time",
|
|
1797
1838
|
"customers.schedule.duration": "Duration",
|
|
1798
1839
|
"customers.schedule.editTitle": "Edit activity",
|
|
1840
|
+
"customers.schedule.email.save": "Send email",
|
|
1841
|
+
"customers.schedule.email.subtitle": "Compose and send a tracked email",
|
|
1842
|
+
"customers.schedule.email.title": "Compose email",
|
|
1799
1843
|
"customers.schedule.error": "Failed to schedule activity",
|
|
1844
|
+
"customers.schedule.estimate": "Estimate",
|
|
1800
1845
|
"customers.schedule.guestPerm.invite": "Invite others",
|
|
1801
1846
|
"customers.schedule.guestPerm.modify": "Modify",
|
|
1802
1847
|
"customers.schedule.guestPerm.seeList": "See list",
|
|
@@ -1808,6 +1853,10 @@
|
|
|
1808
1853
|
"customers.schedule.loadMore": "Load more",
|
|
1809
1854
|
"customers.schedule.location": "Location",
|
|
1810
1855
|
"customers.schedule.locationPlaceholder": "Add location or meeting link...",
|
|
1856
|
+
"customers.schedule.meeting.save": "Save activity",
|
|
1857
|
+
"customers.schedule.meeting.subtitle": "Block time on the calendar with attendees",
|
|
1858
|
+
"customers.schedule.meeting.title": "New meeting",
|
|
1859
|
+
"customers.schedule.message": "Message",
|
|
1811
1860
|
"customers.schedule.noResults": "No results",
|
|
1812
1861
|
"customers.schedule.participants": "Participants",
|
|
1813
1862
|
"customers.schedule.recurrence.active": "Repeats",
|
|
@@ -1815,10 +1864,15 @@
|
|
|
1815
1864
|
"customers.schedule.recurrence.edit": "Edit",
|
|
1816
1865
|
"customers.schedule.recurrence.ends": "Ends",
|
|
1817
1866
|
"customers.schedule.recurrence.never": "Never",
|
|
1818
|
-
"customers.schedule.recurrence.none": "
|
|
1867
|
+
"customers.schedule.recurrence.none": "Does not repeat",
|
|
1819
1868
|
"customers.schedule.recurrence.onDate": "On date",
|
|
1820
1869
|
"customers.schedule.recurrence.title": "Recurrence",
|
|
1821
1870
|
"customers.schedule.reminder": "Reminder",
|
|
1871
|
+
"customers.schedule.reminder.dayBefore": "1 day before",
|
|
1872
|
+
"customers.schedule.reminder.daysBefore": "{days} days before",
|
|
1873
|
+
"customers.schedule.reminder.hourBefore": "1 hour before",
|
|
1874
|
+
"customers.schedule.reminder.hoursBefore": "{hours} hours before",
|
|
1875
|
+
"customers.schedule.reminder.minutesBefore": "{minutes} min before",
|
|
1822
1876
|
"customers.schedule.reminder.none": "None",
|
|
1823
1877
|
"customers.schedule.removeLink": "Remove link",
|
|
1824
1878
|
"customers.schedule.removeParticipant": "Remove participant",
|
|
@@ -1834,9 +1888,19 @@
|
|
|
1834
1888
|
"customers.schedule.searching": "Searching...",
|
|
1835
1889
|
"customers.schedule.start": "Start",
|
|
1836
1890
|
"customers.schedule.subject": "Subject",
|
|
1891
|
+
"customers.schedule.subjectPlaceholder": "Subject...",
|
|
1892
|
+
"customers.schedule.task.priority.high": "High",
|
|
1893
|
+
"customers.schedule.task.priority.low": "Low",
|
|
1894
|
+
"customers.schedule.task.priority.medium": "Medium",
|
|
1895
|
+
"customers.schedule.task.priority.urgent": "Urgent",
|
|
1896
|
+
"customers.schedule.task.priorityLabel": "Priority",
|
|
1897
|
+
"customers.schedule.task.save": "Save task",
|
|
1898
|
+
"customers.schedule.task.subtitle": "Capture something to follow up on",
|
|
1899
|
+
"customers.schedule.task.title": "New task",
|
|
1837
1900
|
"customers.schedule.title": "Schedule activity",
|
|
1838
1901
|
"customers.schedule.titleLabel": "Title",
|
|
1839
1902
|
"customers.schedule.titlePlaceholder": "Activity title...",
|
|
1903
|
+
"customers.schedule.to": "To",
|
|
1840
1904
|
"customers.schedule.types.call": "Call",
|
|
1841
1905
|
"customers.schedule.types.email": "Email",
|
|
1842
1906
|
"customers.schedule.types.meeting": "Meeting",
|
|
@@ -1923,10 +1987,11 @@
|
|
|
1923
1987
|
"customers.temperature.warm": "High Interest",
|
|
1924
1988
|
"customers.timeline.author": "by {{name}}",
|
|
1925
1989
|
"customers.timeline.date.today": "today",
|
|
1990
|
+
"customers.timeline.date.tomorrow": "tomorrow",
|
|
1926
1991
|
"customers.timeline.date.yesterday": "yesterday",
|
|
1927
1992
|
"customers.timeline.edit": "Edit",
|
|
1928
1993
|
"customers.timeline.empty": "No activities match the current filters.",
|
|
1929
|
-
"customers.timeline.filter.all": "All",
|
|
1994
|
+
"customers.timeline.filter.all": "All Activities",
|
|
1930
1995
|
"customers.timeline.filter.call": "Call",
|
|
1931
1996
|
"customers.timeline.filter.email": "Email",
|
|
1932
1997
|
"customers.timeline.filter.from": "From date",
|
|
@@ -1934,6 +1999,8 @@
|
|
|
1934
1999
|
"customers.timeline.filter.note": "Note",
|
|
1935
2000
|
"customers.timeline.filter.to": "To date",
|
|
1936
2001
|
"customers.timeline.history.filtered": "filtered: {{types}} · {{count}} results",
|
|
2002
|
+
"customers.timeline.history.searchAriaLabel": "Search interaction history",
|
|
2003
|
+
"customers.timeline.history.searchPlaceholder": "Search...",
|
|
1937
2004
|
"customers.timeline.history.seeAll": "See all {{count}} activities",
|
|
1938
2005
|
"customers.timeline.history.title": "Interaction history with {{name}}",
|
|
1939
2006
|
"customers.timeline.history.titleGeneric": "Interaction history",
|