@voyantjs/notifications-ui 0.35.0 → 0.37.0
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/dist/components/notification-settings-form.d.ts.map +1 -1
- package/dist/components/notification-settings-form.js +4 -4
- package/dist/components/stage-channel-editor-dialog.js +1 -1
- package/dist/components/stage-editor-dialog.d.ts.map +1 -1
- package/dist/components/stage-editor-dialog.js +2 -2
- package/dist/components/template-picker.d.ts.map +1 -1
- package/dist/components/template-picker.js +4 -2
- package/dist/components/timezone-combobox.d.ts.map +1 -1
- package/dist/components/timezone-combobox.js +4 -2
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +21 -0
- package/dist/i18n/messages.d.ts +21 -0
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/ro.d.ts.map +1 -1
- package/dist/i18n/ro.js +21 -0
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notification-settings-form.d.ts","sourceRoot":"","sources":["../../src/components/notification-settings-form.tsx"],"names":[],"mappings":"AA0DA,wBAAgB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"notification-settings-form.d.ts","sourceRoot":"","sources":["../../src/components/notification-settings-form.tsx"],"names":[],"mappings":"AA0DA,wBAAgB,wBAAwB,4CAqNvC"}
|
|
@@ -14,7 +14,7 @@ const nextBlackoutKey = () => `bo-${++blackoutSeq}`;
|
|
|
14
14
|
const emptyForm = {
|
|
15
15
|
quietHoursStart: "",
|
|
16
16
|
quietHoursEnd: "",
|
|
17
|
-
quietHoursTz: "UTC",
|
|
17
|
+
quietHoursTz: "UTC", // i18n-literal-ok IANA timezone default
|
|
18
18
|
blackoutDates: [],
|
|
19
19
|
skipWeekends: false,
|
|
20
20
|
recipientRateLimitPerDay: "",
|
|
@@ -31,7 +31,7 @@ export function NotificationSettingsForm() {
|
|
|
31
31
|
setForm({
|
|
32
32
|
quietHoursStart: settings.quietHoursLocal?.start ?? "",
|
|
33
33
|
quietHoursEnd: settings.quietHoursLocal?.end ?? "",
|
|
34
|
-
quietHoursTz: settings.quietHoursLocal?.tz ?? "UTC",
|
|
34
|
+
quietHoursTz: settings.quietHoursLocal?.tz ?? "UTC", // i18n-literal-ok IANA timezone default
|
|
35
35
|
blackoutDates: (settings.blackoutDates ?? []).map((date) => ({
|
|
36
36
|
rowKey: nextBlackoutKey(),
|
|
37
37
|
date,
|
|
@@ -50,7 +50,7 @@ export function NotificationSettingsForm() {
|
|
|
50
50
|
.map((row) => row.date)
|
|
51
51
|
.filter((d) => Boolean(d && /^\d{4}-\d{2}-\d{2}$/.test(d)));
|
|
52
52
|
const quiet = form.quietHoursStart && form.quietHoursEnd
|
|
53
|
-
? { start: form.quietHoursStart, end: form.quietHoursEnd, tz: form.quietHoursTz || "UTC" }
|
|
53
|
+
? { start: form.quietHoursStart, end: form.quietHoursEnd, tz: form.quietHoursTz || "UTC" } // i18n-literal-ok IANA timezone default
|
|
54
54
|
: null;
|
|
55
55
|
await mutation.mutateAsync({
|
|
56
56
|
quietHoursLocal: quiet,
|
|
@@ -62,5 +62,5 @@ export function NotificationSettingsForm() {
|
|
|
62
62
|
suppressionWindowHours: form.suppressionWindowHours,
|
|
63
63
|
});
|
|
64
64
|
};
|
|
65
|
-
return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: messages.settings.heading }), _jsx(CardDescription, { children: messages.settings.description })] }), _jsxs(CardContent, { children: [isLoading && _jsx("p", { className: "text-sm text-muted-foreground", children: messages.common.loading }), _jsxs(FieldGroup, { children: [_jsxs(FieldSet, { children: [_jsx(FieldLegend, { children: messages.settings.sections.quietHours }), _jsx(FieldDescription, { children: messages.settings.sections.quietHoursDesc }), _jsxs(FieldGroup, { className: "gap-4", children: [_jsxs(Field, { orientation: "horizontal", children: [_jsx(Switch, { id: "skipWeekends", checked: form.skipWeekends, onCheckedChange: (value) => setField("skipWeekends", value) }), _jsxs(FieldLabel, { htmlFor: "skipWeekends", className: "!w-auto !flex-row", children: [_jsx(FieldTitle, { children: messages.settings.fields.skipWeekends }), _jsx(FieldDescription, { children: messages.settings.fields.skipWeekendsDesc })] })] }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "quietHoursStart", children: messages.settings.fields.quietHoursStart }), _jsx(Input, { id: "quietHoursStart", type: "time", value: form.quietHoursStart, onChange: (e) => setField("quietHoursStart", e.target.value) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "quietHoursEnd", children: messages.settings.fields.quietHoursEnd }), _jsx(Input, { id: "quietHoursEnd", type: "time", value: form.quietHoursEnd, onChange: (e) => setField("quietHoursEnd", e.target.value) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { children: messages.settings.fields.quietHoursTz }), _jsx(TimezoneCombobox, { value: form.quietHoursTz, onChange: (value) => setField("quietHoursTz", value ?? "UTC"), placeholder: messages.settings.placeholders.tz })] })] })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { children: messages.settings.sections.blackouts }), _jsx(FieldDescription, { children: messages.settings.sections.blackoutsDesc }), _jsxs("div", { className: "space-y-2", children: [form.blackoutDates.length === 0 && (_jsx("p", { className: "text-sm text-muted-foreground", children: messages.settings.placeholders.noBlackouts })), form.blackoutDates.map((row) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "flex-1", children: _jsx(DatePicker, { value: row.date, onChange: (value) => updateBlackout(row.rowKey, value) }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => removeBlackout(row.rowKey), "aria-label": messages.settings.actions.removeBlackoutDate, children: _jsx(Trash2, { className: "size-4" }) })] }, row.rowKey))), _jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: addBlackout, children: [_jsx(Plus, { className: "size-4" }), " ", messages.settings.actions.addBlackoutDate] })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { children: messages.settings.sections.rateLimits }), _jsx(FieldDescription, { children: messages.settings.sections.rateLimitsDesc }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "recipientRateLimitPerDay", children: messages.settings.fields.recipientRateLimitPerDay }), _jsx(Input, { id: "recipientRateLimitPerDay", type: "number", min: 1, value: form.recipientRateLimitPerDay, onChange: (e) => setField("recipientRateLimitPerDay", e.target.value), placeholder: messages.common.optionalPlaceholder }), _jsx(FieldDescription, { children: messages.settings.helpers.recipientRateLimitPerDay })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "suppressionWindowHours", children: messages.settings.fields.suppressionWindowHours }), _jsx(Input, { id: "suppressionWindowHours", type: "number", min: 0, value: form.suppressionWindowHours, onChange: (e) => setField("suppressionWindowHours", Number(e.target.value)) }), _jsx(FieldDescription, { children: messages.settings.helpers.suppressionWindowHours })] })] })] })] })] }), _jsx(CardFooter, { className: "justify-end", children: _jsxs(Button, { onClick: handleSubmit, disabled: mutation.isPending, children: [mutation.isPending ? _jsx(Loader2, { className: "size-4 animate-spin" }) : null, messages.common.save] }) })] }));
|
|
65
|
+
return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsx(CardTitle, { children: messages.settings.heading }), _jsx(CardDescription, { children: messages.settings.description })] }), _jsxs(CardContent, { children: [isLoading && _jsx("p", { className: "text-sm text-muted-foreground", children: messages.common.loading }), _jsxs(FieldGroup, { children: [_jsxs(FieldSet, { children: [_jsx(FieldLegend, { children: messages.settings.sections.quietHours }), _jsx(FieldDescription, { children: messages.settings.sections.quietHoursDesc }), _jsxs(FieldGroup, { className: "gap-4", children: [_jsxs(Field, { orientation: "horizontal", children: [_jsx(Switch, { id: "skipWeekends", checked: form.skipWeekends, onCheckedChange: (value) => setField("skipWeekends", value) }), _jsxs(FieldLabel, { htmlFor: "skipWeekends", className: "!w-auto !flex-row", children: [_jsx(FieldTitle, { children: messages.settings.fields.skipWeekends }), _jsx(FieldDescription, { children: messages.settings.fields.skipWeekendsDesc })] })] }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "quietHoursStart", children: messages.settings.fields.quietHoursStart }), _jsx(Input, { id: "quietHoursStart", type: "time", value: form.quietHoursStart, onChange: (e) => setField("quietHoursStart", e.target.value) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "quietHoursEnd", children: messages.settings.fields.quietHoursEnd }), _jsx(Input, { id: "quietHoursEnd", type: "time", value: form.quietHoursEnd, onChange: (e) => setField("quietHoursEnd", e.target.value) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { children: messages.settings.fields.quietHoursTz }), _jsx(TimezoneCombobox, { value: form.quietHoursTz, onChange: (value) => setField("quietHoursTz", value ?? "UTC" /* i18n-literal-ok IANA timezone default */), placeholder: messages.settings.placeholders.tz })] })] })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { children: messages.settings.sections.blackouts }), _jsx(FieldDescription, { children: messages.settings.sections.blackoutsDesc }), _jsxs("div", { className: "space-y-2", children: [form.blackoutDates.length === 0 && (_jsx("p", { className: "text-sm text-muted-foreground", children: messages.settings.placeholders.noBlackouts })), form.blackoutDates.map((row) => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("div", { className: "flex-1", children: _jsx(DatePicker, { value: row.date, onChange: (value) => updateBlackout(row.rowKey, value) }) }), _jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: () => removeBlackout(row.rowKey), "aria-label": messages.settings.actions.removeBlackoutDate, children: _jsx(Trash2, { className: "size-4" }) })] }, row.rowKey))), _jsxs(Button, { type: "button", variant: "outline", size: "sm", onClick: addBlackout, children: [_jsx(Plus, { className: "size-4" }), " ", messages.settings.actions.addBlackoutDate] })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { children: messages.settings.sections.rateLimits }), _jsx(FieldDescription, { children: messages.settings.sections.rateLimitsDesc }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "recipientRateLimitPerDay", children: messages.settings.fields.recipientRateLimitPerDay }), _jsx(Input, { id: "recipientRateLimitPerDay", type: "number", min: 1, value: form.recipientRateLimitPerDay, onChange: (e) => setField("recipientRateLimitPerDay", e.target.value), placeholder: messages.common.optionalPlaceholder }), _jsx(FieldDescription, { children: messages.settings.helpers.recipientRateLimitPerDay })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "suppressionWindowHours", children: messages.settings.fields.suppressionWindowHours }), _jsx(Input, { id: "suppressionWindowHours", type: "number", min: 0, value: form.suppressionWindowHours, onChange: (e) => setField("suppressionWindowHours", Number(e.target.value)) }), _jsx(FieldDescription, { children: messages.settings.helpers.suppressionWindowHours })] })] })] })] })] }), _jsx(CardFooter, { className: "justify-end", children: _jsxs(Button, { onClick: handleSubmit, disabled: mutation.isPending, children: [mutation.isPending ? _jsx(Loader2, { className: "size-4 animate-spin" }) : null, messages.common.save] }) })] }));
|
|
66
66
|
}
|
|
@@ -73,5 +73,5 @@ export function StageChannelEditorDialog({ reminderRuleId, stageId, channel, def
|
|
|
73
73
|
if (!v)
|
|
74
74
|
return;
|
|
75
75
|
setField("provider", v);
|
|
76
|
-
}, children: [_jsx(SelectTrigger, { id: "channel-provider", children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "automatic", children: messages.channel.providers.automatic }), _jsx(SelectItem, { value: "resend", children: messages.channel.providers.resend }), _jsx(SelectItem, { value: "twilio", children: messages.channel.providers.twilio })] })] }), _jsx(FieldDescription, { children:
|
|
76
|
+
}, children: [_jsx(SelectTrigger, { id: "channel-provider", children: _jsx(SelectValue, {}) }), _jsxs(SelectContent, { children: [_jsx(SelectItem, { value: "automatic", children: messages.channel.providers.automatic }), _jsx(SelectItem, { value: "resend", children: messages.channel.providers.resend }), _jsx(SelectItem, { value: "twilio", children: messages.channel.providers.twilio })] })] }), _jsx(FieldDescription, { children: messages.channel.descriptions.automaticProvider })] })] })] }) }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), disabled: isPending, children: messages.common.cancel }), _jsxs(Button, { onClick: handleSubmit, disabled: isPending, children: [isPending ? _jsx(Loader2, { className: "size-4 animate-spin" }) : null, isEdit ? messages.common.save : messages.common.create] })] })] }) }));
|
|
77
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stage-editor-dialog.d.ts","sourceRoot":"","sources":["../../src/components/stage-editor-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,+BAA+B,CAAA;AAoGtC,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,KAAK,EACL,iBAAqB,EACrB,IAAI,EACJ,YAAY,GACb,EAAE,sBAAsB,
|
|
1
|
+
{"version":3,"file":"stage-editor-dialog.d.ts","sourceRoot":"","sources":["../../src/components/stage-editor-dialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,+BAA+B,CAAA;AAoGtC,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAA;IACtB,KAAK,EAAE,uBAAuB,GAAG,IAAI,CAAA;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,EAAE,OAAO,CAAA;IACb,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;CACtC;AAED,wBAAgB,iBAAiB,CAAC,EAChC,cAAc,EACd,KAAK,EACL,iBAAqB,EACrB,IAAI,EACJ,YAAY,GACb,EAAE,sBAAsB,2CAkTxB"}
|
|
@@ -91,7 +91,7 @@ export function StageEditorDialog({ reminderRuleId, stage, defaultOrderIndex = 0
|
|
|
91
91
|
}
|
|
92
92
|
onOpenChange(false);
|
|
93
93
|
};
|
|
94
|
-
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "max-w-2xl", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: isEdit ? messages.stage.titles.edit : messages.stage.titles.create }) }), _jsx(DialogBody, { children: _jsxs(FieldGroup, { children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-[1fr_8rem]", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "stage-name", children: messages.stage.fields.name }), _jsx(Input, { id: "stage-name", value: form.name, onChange: (e) => setField("name", e.target.value), placeholder: messages.stage.placeholders.name })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "stage-order", children: messages.stage.fields.orderIndex }), _jsx(Input, { id: "stage-order", type: "number", value: form.orderIndex, onChange: (e) => setField("orderIndex", Number(e.target.value)) })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { variant: "label", children: messages.stage.fields.anchor }), _jsx(FieldDescription, { children:
|
|
94
|
+
return (_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { className: "max-w-2xl", children: [_jsx(DialogHeader, { children: _jsx(DialogTitle, { children: isEdit ? messages.stage.titles.edit : messages.stage.titles.create }) }), _jsx(DialogBody, { children: _jsxs(FieldGroup, { children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-[1fr_8rem]", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "stage-name", children: messages.stage.fields.name }), _jsx(Input, { id: "stage-name", value: form.name, onChange: (e) => setField("name", e.target.value), placeholder: messages.stage.placeholders.name })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "stage-order", children: messages.stage.fields.orderIndex }), _jsx(Input, { id: "stage-order", type: "number", value: form.orderIndex, onChange: (e) => setField("orderIndex", Number(e.target.value)) })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { variant: "label", children: messages.stage.fields.anchor }), _jsx(FieldDescription, { children: messages.stage.descriptions.window }), _jsxs(FieldGroup, { className: "gap-4", children: [_jsx(Field, { children: _jsxs(Select, { value: form.anchor, onValueChange: (v) => setField("anchor", v), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: ANCHORS.map((a) => (_jsx(SelectItem, { value: a, children: messages.stage.anchors[a] }, a))) })] }) }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "window-start", children: messages.stage.fields.windowStartDays }), _jsx(Input, { id: "window-start", type: "number", value: form.windowStartDays, onChange: (e) => setField("windowStartDays", Number(e.target.value)) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "window-end", children: messages.stage.fields.windowEndDays }), _jsx(Input, { id: "window-end", type: "number", value: form.windowEndDays, onChange: (e) => setField("windowEndDays", Number(e.target.value)) })] })] })] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { variant: "label", children: messages.stage.fields.cadenceKind }), _jsx(FieldDescription, { children: messages.stage.descriptions.cadence }), _jsxs(FieldGroup, { className: "gap-4", children: [_jsx(Field, { children: _jsxs(Select, { value: form.cadenceKind, onValueChange: (v) => setField("cadenceKind", v), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: CADENCES.map((c) => (_jsx(SelectItem, { value: c, children: messages.stage.cadences[c] }, c))) })] }) }), form.cadenceKind === "every_n_days" && (_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "cadence-every", children: messages.stage.fields.cadenceEveryDays }), _jsx(Input, { id: "cadence-every", type: "number", min: 1, value: form.cadenceEveryDays ?? "", onChange: (e) => setField("cadenceEveryDays", e.target.value ? Number(e.target.value) : null) })] })), form.cadenceKind === "escalating" && (_jsxs(Field, { children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx(FieldLabel, { children: messages.stage.fields.cadenceIntervals }), _jsxs(Button, { type: "button", size: "sm", variant: "outline", onClick: addInterval, children: [_jsx(Plus, { className: "size-4" }), messages.stage.intervalRow.addInterval] })] }), form.cadenceIntervals.length === 0 ? (_jsx(FieldDescription, { children: messages.stage.descriptions.emptyIntervals })) : null, _jsx("div", { className: "space-y-2", children: form.cadenceIntervals.map((interval) => (_jsxs("div", { className: "grid grid-cols-[1fr_1fr_auto] items-end gap-2", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { className: "text-xs", children: messages.stage.intervalRow.whenDaysUntilDueGT }), _jsx(Input, { type: "number", value: interval.whenDaysUntilDueGT ?? "", onChange: (e) => setField("cadenceIntervals", form.cadenceIntervals.map((row) => row.rowKey === interval.rowKey
|
|
95
95
|
? {
|
|
96
96
|
...row,
|
|
97
97
|
whenDaysUntilDueGT: e.target.value
|
|
@@ -100,5 +100,5 @@ export function StageEditorDialog({ reminderRuleId, stage, defaultOrderIndex = 0
|
|
|
100
100
|
}
|
|
101
101
|
: row)) })] }), _jsxs(Field, { children: [_jsx(FieldLabel, { className: "text-xs", children: messages.stage.intervalRow.repeatEveryDays }), _jsx(Input, { type: "number", min: 1, value: interval.repeatEveryDays, onChange: (e) => setField("cadenceIntervals", form.cadenceIntervals.map((row) => row.rowKey === interval.rowKey
|
|
102
102
|
? { ...row, repeatEveryDays: Number(e.target.value) }
|
|
103
|
-
: row)) })] }), _jsx(Button, { type: "button", size: "icon", variant: "ghost", onClick: () => removeInterval(interval.rowKey), "aria-label": messages.stage.intervalRow.removeInterval, children: _jsx(Trash2, { className: "size-4" }) })] }, interval.rowKey))) })] }))] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { variant: "label", children:
|
|
103
|
+
: row)) })] }), _jsx(Button, { type: "button", size: "icon", variant: "ghost", onClick: () => removeInterval(interval.rowKey), "aria-label": messages.stage.intervalRow.removeInterval, children: _jsx(Trash2, { className: "size-4" }) })] }, interval.rowKey))) })] }))] })] }), _jsxs(FieldSet, { children: [_jsx(FieldLegend, { variant: "label", children: messages.stage.descriptions.stopConditions }), _jsxs(FieldGroup, { className: "gap-4", children: [_jsxs(Field, { children: [_jsx(FieldLabel, { htmlFor: "max-sends", children: messages.stage.fields.maxSendsInStage }), _jsx(Input, { id: "max-sends", type: "number", min: 1, value: form.maxSendsInStage ?? "", onChange: (e) => setField("maxSendsInStage", e.target.value ? Number(e.target.value) : null), placeholder: messages.common.optionalPlaceholder }), _jsx(FieldDescription, { children: messages.stage.descriptions.maxSendsInStage })] }), _jsxs(Field, { orientation: "horizontal", children: [_jsx(Switch, { id: "respect-quiet-hours", checked: form.respectQuietHours, onCheckedChange: (v) => setField("respectQuietHours", Boolean(v)) }), _jsxs(FieldLabel, { htmlFor: "respect-quiet-hours", className: "!w-auto !flex-row", children: [_jsx(FieldTitle, { children: messages.stage.fields.respectQuietHours }), _jsx(FieldDescription, { children: messages.stage.descriptions.respectQuietHours })] })] })] })] })] }) }), _jsxs(DialogFooter, { children: [_jsx(Button, { variant: "outline", onClick: () => onOpenChange(false), disabled: isPending, children: messages.common.cancel }), _jsxs(Button, { onClick: handleSubmit, disabled: isPending, children: [isPending ? _jsx(Loader2, { className: "size-4 animate-spin" }) : null, isEdit ? messages.common.save : messages.common.create] })] })] }) }));
|
|
104
104
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template-picker.d.ts","sourceRoot":"","sources":["../../src/components/template-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"template-picker.d.ts","sourceRoot":"","sources":["../../src/components/template-picker.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,0BAA0B,EAGhC,MAAM,+BAA+B,CAAA;AAMtC,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,iEAAiE;IACjE,OAAO,CAAC,EAAE,0BAA0B,CAAC,SAAS,CAAC,CAAA;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,QAAQ,EACR,OAAO,EACP,WAAW,EACX,SAAS,EACT,QAAQ,GACT,EAAE,mBAAmB,2CA8BrB"}
|
|
@@ -3,13 +3,15 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useNotificationTemplate, useNotificationTemplates, } from "@voyantjs/notifications-react";
|
|
4
4
|
import { AsyncCombobox } from "@voyantjs/ui/components/async-combobox";
|
|
5
5
|
import * as React from "react";
|
|
6
|
+
import { useNotificationsUiMessagesOrDefault } from "../i18n/index.js";
|
|
6
7
|
/**
|
|
7
8
|
* Async-friendly template picker. Searches active templates by name / slug
|
|
8
9
|
* filtered by the chosen channel and resolves to the template id. The
|
|
9
10
|
* currently selected template is fetched separately so its label keeps
|
|
10
11
|
* rendering even after the search list filters it out.
|
|
11
12
|
*/
|
|
12
|
-
export function TemplatePicker({ value, onChange, channel, placeholder
|
|
13
|
+
export function TemplatePicker({ value, onChange, channel, placeholder, emptyText, disabled, }) {
|
|
14
|
+
const messages = useNotificationsUiMessagesOrDefault().pickers.templates;
|
|
13
15
|
const [search, setSearch] = React.useState("");
|
|
14
16
|
const { data } = useNotificationTemplates({
|
|
15
17
|
channel,
|
|
@@ -20,5 +22,5 @@ export function TemplatePicker({ value, onChange, channel, placeholder = "Search
|
|
|
20
22
|
});
|
|
21
23
|
const { data: selected } = useNotificationTemplate(value ?? "", { enabled: Boolean(value) });
|
|
22
24
|
const items = data?.data ?? [];
|
|
23
|
-
return (_jsx(AsyncCombobox, { value: value, onChange: onChange, items: items, selectedItem: selected ?? null, getKey: (template) => template.id, getLabel: (template) => template.name, getSecondary: (template) => template.slug, onSearchChange: setSearch, placeholder: placeholder, emptyText: emptyText, disabled: disabled, clearable: true }));
|
|
25
|
+
return (_jsx(AsyncCombobox, { value: value, onChange: onChange, items: items, selectedItem: selected ?? null, getKey: (template) => template.id, getLabel: (template) => template.name, getSecondary: (template) => template.slug, onSearchChange: setSearch, placeholder: placeholder ?? messages.placeholder, emptyText: emptyText ?? messages.empty, disabled: disabled, clearable: true }));
|
|
24
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timezone-combobox.d.ts","sourceRoot":"","sources":["../../src/components/timezone-combobox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"timezone-combobox.d.ts","sourceRoot":"","sources":["../../src/components/timezone-combobox.tsx"],"names":[],"mappings":"AA+DA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IACxC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,EACT,QAAQ,GACT,EAAE,qBAAqB,2CAyCvB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Combobox, ComboboxCollection, ComboboxContent, ComboboxEmpty, ComboboxInput, ComboboxItem, ComboboxList, } from "@voyantjs/ui/components/combobox";
|
|
4
4
|
import * as React from "react";
|
|
5
|
+
import { useNotificationsUiMessagesOrDefault } from "../i18n/index.js";
|
|
5
6
|
const TIMEZONES = (() => {
|
|
6
7
|
const intl = Intl;
|
|
7
8
|
if (typeof intl.supportedValuesOf === "function") {
|
|
@@ -48,7 +49,8 @@ const TIMEZONES = (() => {
|
|
|
48
49
|
"Pacific/Auckland",
|
|
49
50
|
];
|
|
50
51
|
})();
|
|
51
|
-
export function TimezoneCombobox({ value, onChange, placeholder
|
|
52
|
+
export function TimezoneCombobox({ value, onChange, placeholder, emptyText, disabled, }) {
|
|
53
|
+
const messages = useNotificationsUiMessagesOrDefault().pickers.timezones;
|
|
52
54
|
const [inputValue, setInputValue] = React.useState(value ?? "");
|
|
53
55
|
React.useEffect(() => {
|
|
54
56
|
setInputValue(value ?? "");
|
|
@@ -61,5 +63,5 @@ export function TimezoneCombobox({ value, onChange, placeholder = "Search timezo
|
|
|
61
63
|
const tz = next ?? null;
|
|
62
64
|
onChange(tz);
|
|
63
65
|
setInputValue(tz ?? "");
|
|
64
|
-
}, children: [_jsx(ComboboxInput, { placeholder: placeholder, showClear: Boolean(value) }), _jsxs(ComboboxContent, { children: [_jsx(ComboboxEmpty, { children: emptyText }), _jsx(ComboboxList, { children: _jsx(ComboboxCollection, { children: (tz) => (_jsx(ComboboxItem, { value: tz, children: tz }, tz)) }) })] })] }));
|
|
66
|
+
}, children: [_jsx(ComboboxInput, { placeholder: placeholder ?? messages.placeholder, showClear: Boolean(value) }), _jsxs(ComboboxContent, { children: [_jsx(ComboboxEmpty, { children: emptyText ?? messages.empty }), _jsx(ComboboxList, { children: _jsx(ComboboxCollection, { children: (tz) => (_jsx(ComboboxItem, { value: tz, children: tz }, tz)) }) })] })] }));
|
|
65
67
|
}
|
package/dist/i18n/en.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,iBAAiB,EAAE,uBAgK/B,CAAA"}
|
package/dist/i18n/en.js
CHANGED
|
@@ -27,6 +27,14 @@ export const notificationsUiEn = {
|
|
|
27
27
|
maxSendsInStage: "Max sends in stage",
|
|
28
28
|
respectQuietHours: "Respect quiet hours",
|
|
29
29
|
},
|
|
30
|
+
descriptions: {
|
|
31
|
+
window: "When the eligibility window opens, relative to the chosen anchor.",
|
|
32
|
+
cadence: "How often this stage may fire while inside the window.",
|
|
33
|
+
emptyIntervals: "Add buckets keyed on days-until-due to scale cadence as the deadline approaches.",
|
|
34
|
+
stopConditions: "Stop conditions",
|
|
35
|
+
maxSendsInStage: "Leave blank for no limit. When reached, the next stage takes over.",
|
|
36
|
+
respectQuietHours: "Defer fires that would land inside the tenant's quiet-hours window.",
|
|
37
|
+
},
|
|
30
38
|
placeholders: {
|
|
31
39
|
name: "First reminder",
|
|
32
40
|
},
|
|
@@ -87,6 +95,9 @@ export const notificationsUiEn = {
|
|
|
87
95
|
placeholders: {
|
|
88
96
|
template: "Search templates…",
|
|
89
97
|
},
|
|
98
|
+
descriptions: {
|
|
99
|
+
automaticProvider: "Use Automatic to fall back to the deployment default for this channel.",
|
|
100
|
+
},
|
|
90
101
|
},
|
|
91
102
|
settings: {
|
|
92
103
|
heading: "Notification settings",
|
|
@@ -123,6 +134,16 @@ export const notificationsUiEn = {
|
|
|
123
134
|
removeBlackoutDate: "Remove",
|
|
124
135
|
},
|
|
125
136
|
},
|
|
137
|
+
pickers: {
|
|
138
|
+
templates: {
|
|
139
|
+
placeholder: "Search templates…",
|
|
140
|
+
empty: "No templates found.",
|
|
141
|
+
},
|
|
142
|
+
timezones: {
|
|
143
|
+
placeholder: "Search timezones…",
|
|
144
|
+
empty: "No timezones found.",
|
|
145
|
+
},
|
|
146
|
+
},
|
|
126
147
|
preview: {
|
|
127
148
|
dateLabel: "Date",
|
|
128
149
|
empty: "Nothing would fire on this date.",
|
package/dist/i18n/messages.d.ts
CHANGED
|
@@ -27,6 +27,14 @@ export type NotificationsUiMessages = {
|
|
|
27
27
|
maxSendsInStage: string;
|
|
28
28
|
respectQuietHours: string;
|
|
29
29
|
};
|
|
30
|
+
descriptions: {
|
|
31
|
+
window: string;
|
|
32
|
+
cadence: string;
|
|
33
|
+
emptyIntervals: string;
|
|
34
|
+
stopConditions: string;
|
|
35
|
+
maxSendsInStage: string;
|
|
36
|
+
respectQuietHours: string;
|
|
37
|
+
};
|
|
30
38
|
placeholders: {
|
|
31
39
|
name: string;
|
|
32
40
|
};
|
|
@@ -87,6 +95,9 @@ export type NotificationsUiMessages = {
|
|
|
87
95
|
placeholders: {
|
|
88
96
|
template: string;
|
|
89
97
|
};
|
|
98
|
+
descriptions: {
|
|
99
|
+
automaticProvider: string;
|
|
100
|
+
};
|
|
90
101
|
};
|
|
91
102
|
settings: {
|
|
92
103
|
heading: string;
|
|
@@ -123,6 +134,16 @@ export type NotificationsUiMessages = {
|
|
|
123
134
|
removeBlackoutDate: string;
|
|
124
135
|
};
|
|
125
136
|
};
|
|
137
|
+
pickers: {
|
|
138
|
+
templates: {
|
|
139
|
+
placeholder: string;
|
|
140
|
+
empty: string;
|
|
141
|
+
};
|
|
142
|
+
timezones: {
|
|
143
|
+
placeholder: string;
|
|
144
|
+
empty: string;
|
|
145
|
+
};
|
|
146
|
+
};
|
|
126
147
|
preview: {
|
|
127
148
|
dateLabel: string;
|
|
128
149
|
empty: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/i18n/messages.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/ro.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"ro.d.ts","sourceRoot":"","sources":["../../src/i18n/ro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AAE5D,eAAO,MAAM,iBAAiB,EAAE,uBAmK/B,CAAA"}
|
package/dist/i18n/ro.js
CHANGED
|
@@ -27,6 +27,14 @@ export const notificationsUiRo = {
|
|
|
27
27
|
maxSendsInStage: "Trimiteri maxime per etapă",
|
|
28
28
|
respectQuietHours: "Respectă orele de liniște",
|
|
29
29
|
},
|
|
30
|
+
descriptions: {
|
|
31
|
+
window: "Când se deschide fereastra de eligibilitate, relativ la reperul ales.",
|
|
32
|
+
cadence: "Cât de des se poate declanșa etapa în interiorul ferestrei.",
|
|
33
|
+
emptyIntervals: "Adaugă praguri bazate pe zile-până-la-scadență pentru a ajusta cadența pe măsură ce se apropie termenul.",
|
|
34
|
+
stopConditions: "Condiții de oprire",
|
|
35
|
+
maxSendsInStage: "Lasă gol pentru fără limită. Când se atinge limita, preia etapa următoare.",
|
|
36
|
+
respectQuietHours: "Amână declanșările care ar cădea în intervalul de ore de liniște al tenantului.",
|
|
37
|
+
},
|
|
30
38
|
placeholders: {
|
|
31
39
|
name: "Prima reamintire",
|
|
32
40
|
},
|
|
@@ -87,6 +95,9 @@ export const notificationsUiRo = {
|
|
|
87
95
|
placeholders: {
|
|
88
96
|
template: "Caută șabloane…",
|
|
89
97
|
},
|
|
98
|
+
descriptions: {
|
|
99
|
+
automaticProvider: "Folosește Automat pentru a utiliza valoarea implicită a deploymentului pentru acest canal.",
|
|
100
|
+
},
|
|
90
101
|
},
|
|
91
102
|
settings: {
|
|
92
103
|
heading: "Setări notificări",
|
|
@@ -123,6 +134,16 @@ export const notificationsUiRo = {
|
|
|
123
134
|
removeBlackoutDate: "Șterge",
|
|
124
135
|
},
|
|
125
136
|
},
|
|
137
|
+
pickers: {
|
|
138
|
+
templates: {
|
|
139
|
+
placeholder: "Caută șabloane…",
|
|
140
|
+
empty: "Nu s-a găsit niciun șablon.",
|
|
141
|
+
},
|
|
142
|
+
timezones: {
|
|
143
|
+
placeholder: "Caută fusuri orare…",
|
|
144
|
+
empty: "Nu s-a găsit niciun fus orar.",
|
|
145
|
+
},
|
|
146
|
+
},
|
|
126
147
|
preview: {
|
|
127
148
|
dateLabel: "Dată",
|
|
128
149
|
empty: "Nimic nu s-ar declanșa la această dată.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@voyantjs/notifications-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
"react": "^19.0.0",
|
|
45
45
|
"react-dom": "^19.0.0",
|
|
46
46
|
"zod": "^4.3.6",
|
|
47
|
-
"@voyantjs/notifications-react": "0.
|
|
48
|
-
"@voyantjs/ui": "0.
|
|
47
|
+
"@voyantjs/notifications-react": "0.37.0",
|
|
48
|
+
"@voyantjs/ui": "0.37.0"
|
|
49
49
|
},
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@voyantjs/i18n": "0.
|
|
51
|
+
"@voyantjs/i18n": "0.37.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@tanstack/react-query": "^5.96.2",
|
|
@@ -60,10 +60,10 @@
|
|
|
60
60
|
"typescript": "^6.0.2",
|
|
61
61
|
"vitest": "^4.1.2",
|
|
62
62
|
"zod": "^4.3.6",
|
|
63
|
-
"@voyantjs/i18n": "0.
|
|
64
|
-
"@voyantjs/notifications-react": "0.
|
|
63
|
+
"@voyantjs/i18n": "0.37.0",
|
|
64
|
+
"@voyantjs/notifications-react": "0.37.0",
|
|
65
65
|
"@voyantjs/voyant-typescript-config": "0.1.0",
|
|
66
|
-
"@voyantjs/ui": "0.
|
|
66
|
+
"@voyantjs/ui": "0.37.0"
|
|
67
67
|
},
|
|
68
68
|
"files": [
|
|
69
69
|
"dist",
|