@fayz-ai/plugin-agenda 0.27.11 → 0.27.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/dist/AgendaGeneralSettings-YBI43RB6.js +96 -0
  2. package/dist/AgendaGeneralSettings-YBI43RB6.js.map +1 -0
  3. package/dist/AgendaMessageTemplates-46ZLTFLM.js +31 -0
  4. package/dist/AgendaMessageTemplates-46ZLTFLM.js.map +1 -0
  5. package/dist/AgendaPage-43OXQDZE.js +3174 -0
  6. package/dist/AgendaPage-43OXQDZE.js.map +1 -0
  7. package/dist/CheckinPage-SGWK2TQZ.js +904 -0
  8. package/dist/CheckinPage-SGWK2TQZ.js.map +1 -0
  9. package/dist/ConfirmationsView-DZJSYBXA.js +361 -0
  10. package/dist/ConfirmationsView-DZJSYBXA.js.map +1 -0
  11. package/dist/MyClientsTodayWidget-ZGTXJJKN.js +127 -0
  12. package/dist/MyClientsTodayWidget-ZGTXJJKN.js.map +1 -0
  13. package/dist/PersonAttendanceBlock-PHZVHFQ4.js +105 -0
  14. package/dist/PersonAttendanceBlock-PHZVHFQ4.js.map +1 -0
  15. package/dist/PersonAttendancesWidget-3NTWBGCU.js +1278 -0
  16. package/dist/PersonAttendancesWidget-3NTWBGCU.js.map +1 -0
  17. package/dist/PersonServicesWidget-4RJGKX3K.js +80 -0
  18. package/dist/PersonServicesWidget-4RJGKX3K.js.map +1 -0
  19. package/dist/chunk-37INOUNW.js +20 -0
  20. package/dist/chunk-37INOUNW.js.map +1 -0
  21. package/dist/chunk-A2VD5DVN.js +12 -0
  22. package/dist/chunk-A2VD5DVN.js.map +1 -0
  23. package/dist/chunk-HGJI2JR6.js +169 -0
  24. package/dist/chunk-HGJI2JR6.js.map +1 -0
  25. package/dist/chunk-VFQPXKXP.js +11 -0
  26. package/dist/chunk-VFQPXKXP.js.map +1 -0
  27. package/dist/chunk-WNANVT4F.js +2386 -0
  28. package/dist/chunk-WNANVT4F.js.map +1 -0
  29. package/dist/chunk-X7PKHXT6.js +18 -0
  30. package/dist/chunk-X7PKHXT6.js.map +1 -0
  31. package/dist/chunk-XTNSK4RJ.js +12 -0
  32. package/dist/chunk-XTNSK4RJ.js.map +1 -0
  33. package/dist/components/PersonAttendanceBlock.d.ts.map +1 -1
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +2530 -19553
  36. package/dist/index.js.map +1 -1
  37. package/dist/migrations/integrations-google-calendar.browser.js +15 -0
  38. package/dist/migrations/integrations-google-calendar.browser.js.map +1 -0
  39. package/dist/migrations/integrations-google-calendar.js +1992 -0
  40. package/dist/migrations/integrations-google-calendar.js.map +1 -0
  41. package/dist/migrations/main.browser.js +29 -0
  42. package/dist/migrations/main.browser.js.map +1 -0
  43. package/dist/migrations/main.js +6440 -0
  44. package/dist/migrations/main.js.map +1 -0
  45. package/package.json +13 -7
@@ -0,0 +1,96 @@
1
+ import { useAgendaSettings } from './chunk-37INOUNW.js';
2
+ import { useTenantPluginSettings, SettingsGroup, ToggleRow, SelectRow } from '@fayz-ai/admin';
3
+ import { useTranslation } from '@fayz-ai/core';
4
+ import { jsxs, jsx } from 'react/jsx-runtime';
5
+
6
+ var HOUR_OPTIONS = Array.from({ length: 18 }, (_, i) => {
7
+ const h = (5 + i).toString().padStart(2, "0");
8
+ return { value: `${h}:00`, label: `${h}:00` };
9
+ });
10
+ var AGENDA_TOGGLE_DEFAULTS = {
11
+ conflictDetection: true,
12
+ dragDrop: true,
13
+ autoCreateOrder: true,
14
+ // Consumed by AppointmentModal: the V1 "Interesses" block on evaluation
15
+ // services. On by default — it only surfaces when an evaluation-kind
16
+ // service is selected, so tenants without evaluations never see it.
17
+ interestsOnBooking: true,
18
+ // "Repetir" no agendamento. LIGADO: fechada, a linha é uma frase de 11px sob
19
+ // o horário — quem nunca marca retorno fixo lê "Não se repete" e segue. Um
20
+ // padrão desligado esconderia a função de quem não sabe que ela existe, que
21
+ // é justamente quem precisaria achá-la. Quem não a quer desliga aqui.
22
+ recurringBookings: true,
23
+ // Off: most houses read the day by status. A clinic reads it by kind of visit (FAY-1613).
24
+ cardColorByServiceKind: false,
25
+ enableLocation: false,
26
+ enableWorkingHours: true,
27
+ blockOutside: false,
28
+ enableConfirmations: true,
29
+ autoConfirm: false,
30
+ reminder: true,
31
+ showCancelled: false,
32
+ showNoShow: true,
33
+ compact: false,
34
+ newBookingNotif: true,
35
+ cancelAlerts: true,
36
+ noShowTracking: false
37
+ };
38
+ function AgendaGeneralSettings() {
39
+ const t = useTranslation();
40
+ const { startTime, endTime, setStartTime, setEndTime } = useAgendaSettings();
41
+ const s = useTenantPluginSettings("agenda", AGENDA_TOGGLE_DEFAULTS);
42
+ return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
43
+ /* @__PURE__ */ jsxs(SettingsGroup, { title: t("agenda.settings.scheduling"), description: t("agenda.settings.schedulingDesc"), children: [
44
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.conflictDetection"), description: t("agenda.settings.conflictDetectionDesc"), checked: s.get("conflictDetection"), onChange: (v) => s.set("conflictDetection", v) }),
45
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.dragDrop"), description: t("agenda.settings.dragDropDesc"), checked: s.get("dragDrop"), onChange: (v) => s.set("dragDrop", v) }),
46
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.autoCreateOrder"), description: t("agenda.settings.autoCreateOrderDesc"), checked: s.get("autoCreateOrder"), onChange: (v) => s.set("autoCreateOrder", v) }),
47
+ /* @__PURE__ */ jsx(ToggleRow, { label: t("agenda.settings.interestsOnBooking"), description: t("agenda.settings.interestsOnBookingDesc"), checked: s.get("interestsOnBooking"), onChange: (v) => s.set("interestsOnBooking", v) }),
48
+ /* @__PURE__ */ jsx(ToggleRow, { label: t("agenda.settings.recurringBookings"), description: t("agenda.settings.recurringBookingsDesc"), checked: s.get("recurringBookings"), onChange: (v) => s.set("recurringBookings", v) })
49
+ ] }),
50
+ /* @__PURE__ */ jsx(SettingsGroup, { title: t("agenda.settings.locations"), description: t("agenda.settings.locationsDesc"), children: /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.enableLocation"), description: t("agenda.settings.enableLocationDesc"), checked: s.get("enableLocation"), onChange: (v) => s.set("enableLocation", v) }) }),
51
+ /* @__PURE__ */ jsxs(SettingsGroup, { title: t("agenda.settings.workingHours"), description: t("agenda.settings.workingHoursDesc"), children: [
52
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.enableWorkingHours"), description: t("agenda.settings.enableWorkingHoursDesc"), checked: s.get("enableWorkingHours"), onChange: (v) => s.set("enableWorkingHours", v) }),
53
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.blockOutside"), description: t("agenda.settings.blockOutsideDesc"), checked: s.get("blockOutside"), onChange: (v) => s.set("blockOutside", v) })
54
+ ] }),
55
+ /* @__PURE__ */ jsxs(SettingsGroup, { title: t("agenda.settings.confirmations"), description: t("agenda.settings.confirmationsDesc"), children: [
56
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.enableConfirmations"), description: t("agenda.settings.enableConfirmationsDesc"), checked: s.get("enableConfirmations"), onChange: (v) => s.set("enableConfirmations", v) }),
57
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.autoConfirm"), description: t("agenda.settings.autoConfirmDesc"), checked: s.get("autoConfirm"), onChange: (v) => s.set("autoConfirm", v) }),
58
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.reminder"), description: t("agenda.settings.reminderDesc"), checked: s.get("reminder"), onChange: (v) => s.set("reminder", v) })
59
+ ] }),
60
+ /* @__PURE__ */ jsxs(SettingsGroup, { title: t("agenda.settings.calendarDisplay"), description: t("agenda.settings.calendarDisplayDesc"), children: [
61
+ /* @__PURE__ */ jsx(ToggleRow, { label: t("agenda.settings.cardColorByServiceKind"), description: t("agenda.settings.cardColorByServiceKindDesc"), checked: s.get("cardColorByServiceKind"), onChange: (v) => s.set("cardColorByServiceKind", v) }),
62
+ /* @__PURE__ */ jsx(
63
+ SelectRow,
64
+ {
65
+ label: t("agenda.settings.dayStartTime"),
66
+ description: t("agenda.settings.dayStartTimeDesc"),
67
+ value: startTime,
68
+ options: HOUR_OPTIONS,
69
+ onChange: setStartTime
70
+ }
71
+ ),
72
+ /* @__PURE__ */ jsx(
73
+ SelectRow,
74
+ {
75
+ label: t("agenda.settings.dayEndTime"),
76
+ description: t("agenda.settings.dayEndTimeDesc"),
77
+ value: endTime,
78
+ options: HOUR_OPTIONS,
79
+ onChange: setEndTime
80
+ }
81
+ ),
82
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.showCancelled"), description: t("agenda.settings.showCancelledDesc"), checked: s.get("showCancelled"), onChange: (v) => s.set("showCancelled", v) }),
83
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.showNoShow"), description: t("agenda.settings.showNoShowDesc"), checked: s.get("showNoShow"), onChange: (v) => s.set("showNoShow", v) }),
84
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.compact"), description: t("agenda.settings.compactDesc"), checked: s.get("compact"), onChange: (v) => s.set("compact", v) })
85
+ ] }),
86
+ /* @__PURE__ */ jsxs(SettingsGroup, { title: t("agenda.settings.notifications"), description: t("agenda.settings.notificationsDesc"), children: [
87
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.newBookingNotif"), description: t("agenda.settings.newBookingNotifDesc"), checked: s.get("newBookingNotif"), onChange: (v) => s.set("newBookingNotif", v) }),
88
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.cancelAlerts"), description: t("agenda.settings.cancelAlertsDesc"), checked: s.get("cancelAlerts"), onChange: (v) => s.set("cancelAlerts", v) }),
89
+ /* @__PURE__ */ jsx(ToggleRow, { pending: true, label: t("agenda.settings.noShowTracking"), description: t("agenda.settings.noShowTrackingDesc"), checked: s.get("noShowTracking"), onChange: (v) => s.set("noShowTracking", v) })
90
+ ] })
91
+ ] });
92
+ }
93
+
94
+ export { AgendaGeneralSettings };
95
+ //# sourceMappingURL=AgendaGeneralSettings-YBI43RB6.js.map
96
+ //# sourceMappingURL=AgendaGeneralSettings-YBI43RB6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AgendaGeneralSettings.tsx"],"names":[],"mappings":"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","file":"AgendaGeneralSettings-YBI43RB6.js","sourcesContent":["import React from 'react'\nimport { SettingsGroup, ToggleRow, SelectRow, useTenantPluginSettings } from '@fayz-ai/admin'\nimport { useTranslation } from '@fayz-ai/core'\nimport { useAgendaSettings } from '../hooks/useAgendaSettings'\n\nconst HOUR_OPTIONS = Array.from({ length: 18 }, (_, i) => {\n const h = (5 + i).toString().padStart(2, '0')\n return { value: `${h}:00`, label: `${h}:00` }\n})\n\n// Per-tenant toggle defaults. Rows marked `pending` save but nothing reads them\n// yet (docs/status/SETTINGS-AUDIT.md).\nconst AGENDA_TOGGLE_DEFAULTS = {\n conflictDetection: true,\n dragDrop: true,\n autoCreateOrder: true,\n // Consumed by AppointmentModal: the V1 \"Interesses\" block on evaluation\n // services. On by default — it only surfaces when an evaluation-kind\n // service is selected, so tenants without evaluations never see it.\n interestsOnBooking: true,\n // \"Repetir\" no agendamento. LIGADO: fechada, a linha é uma frase de 11px sob\n // o horário — quem nunca marca retorno fixo lê \"Não se repete\" e segue. Um\n // padrão desligado esconderia a função de quem não sabe que ela existe, que\n // é justamente quem precisaria achá-la. Quem não a quer desliga aqui.\n recurringBookings: true,\n // Off: most houses read the day by status. A clinic reads it by kind of visit (FAY-1613).\n cardColorByServiceKind: false,\n enableLocation: false,\n enableWorkingHours: true,\n blockOutside: false,\n enableConfirmations: true,\n autoConfirm: false,\n reminder: true,\n showCancelled: false,\n showNoShow: true,\n compact: false,\n newBookingNotif: true,\n cancelAlerts: true,\n noShowTracking: false,\n}\n\nexport function AgendaGeneralSettings() {\n const t = useTranslation()\n const { startTime, endTime, setStartTime, setEndTime } = useAgendaSettings()\n const s = useTenantPluginSettings('agenda', AGENDA_TOGGLE_DEFAULTS)\n return (\n <div className=\"space-y-4\">\n <SettingsGroup title={t('agenda.settings.scheduling')} description={t('agenda.settings.schedulingDesc')}>\n <ToggleRow pending label={t('agenda.settings.conflictDetection')} description={t('agenda.settings.conflictDetectionDesc')} checked={s.get('conflictDetection')} onChange={(v) => s.set('conflictDetection', v)} />\n <ToggleRow pending label={t('agenda.settings.dragDrop')} description={t('agenda.settings.dragDropDesc')} checked={s.get('dragDrop')} onChange={(v) => s.set('dragDrop', v)} />\n <ToggleRow pending label={t('agenda.settings.autoCreateOrder')} description={t('agenda.settings.autoCreateOrderDesc')} checked={s.get('autoCreateOrder')} onChange={(v) => s.set('autoCreateOrder', v)} />\n <ToggleRow label={t('agenda.settings.interestsOnBooking')} description={t('agenda.settings.interestsOnBookingDesc')} checked={s.get('interestsOnBooking')} onChange={(v) => s.set('interestsOnBooking', v)} />\n <ToggleRow label={t('agenda.settings.recurringBookings')} description={t('agenda.settings.recurringBookingsDesc')} checked={s.get('recurringBookings')} onChange={(v) => s.set('recurringBookings', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('agenda.settings.locations')} description={t('agenda.settings.locationsDesc')}>\n <ToggleRow pending label={t('agenda.settings.enableLocation')} description={t('agenda.settings.enableLocationDesc')} checked={s.get('enableLocation')} onChange={(v) => s.set('enableLocation', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('agenda.settings.workingHours')} description={t('agenda.settings.workingHoursDesc')}>\n <ToggleRow pending label={t('agenda.settings.enableWorkingHours')} description={t('agenda.settings.enableWorkingHoursDesc')} checked={s.get('enableWorkingHours')} onChange={(v) => s.set('enableWorkingHours', v)} />\n <ToggleRow pending label={t('agenda.settings.blockOutside')} description={t('agenda.settings.blockOutsideDesc')} checked={s.get('blockOutside')} onChange={(v) => s.set('blockOutside', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('agenda.settings.confirmations')} description={t('agenda.settings.confirmationsDesc')}>\n <ToggleRow pending label={t('agenda.settings.enableConfirmations')} description={t('agenda.settings.enableConfirmationsDesc')} checked={s.get('enableConfirmations')} onChange={(v) => s.set('enableConfirmations', v)} />\n <ToggleRow pending label={t('agenda.settings.autoConfirm')} description={t('agenda.settings.autoConfirmDesc')} checked={s.get('autoConfirm')} onChange={(v) => s.set('autoConfirm', v)} />\n <ToggleRow pending label={t('agenda.settings.reminder')} description={t('agenda.settings.reminderDesc')} checked={s.get('reminder')} onChange={(v) => s.set('reminder', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('agenda.settings.calendarDisplay')} description={t('agenda.settings.calendarDisplayDesc')}>\n <ToggleRow label={t('agenda.settings.cardColorByServiceKind')} description={t('agenda.settings.cardColorByServiceKindDesc')} checked={s.get('cardColorByServiceKind')} onChange={(v) => s.set('cardColorByServiceKind', v)} />\n <SelectRow\n label={t('agenda.settings.dayStartTime')}\n description={t('agenda.settings.dayStartTimeDesc')}\n value={startTime}\n options={HOUR_OPTIONS}\n onChange={setStartTime}\n />\n <SelectRow\n label={t('agenda.settings.dayEndTime')}\n description={t('agenda.settings.dayEndTimeDesc')}\n value={endTime}\n options={HOUR_OPTIONS}\n onChange={setEndTime}\n />\n <ToggleRow pending label={t('agenda.settings.showCancelled')} description={t('agenda.settings.showCancelledDesc')} checked={s.get('showCancelled')} onChange={(v) => s.set('showCancelled', v)} />\n <ToggleRow pending label={t('agenda.settings.showNoShow')} description={t('agenda.settings.showNoShowDesc')} checked={s.get('showNoShow')} onChange={(v) => s.set('showNoShow', v)} />\n <ToggleRow pending label={t('agenda.settings.compact')} description={t('agenda.settings.compactDesc')} checked={s.get('compact')} onChange={(v) => s.set('compact', v)} />\n </SettingsGroup>\n\n <SettingsGroup title={t('agenda.settings.notifications')} description={t('agenda.settings.notificationsDesc')}>\n <ToggleRow pending label={t('agenda.settings.newBookingNotif')} description={t('agenda.settings.newBookingNotifDesc')} checked={s.get('newBookingNotif')} onChange={(v) => s.set('newBookingNotif', v)} />\n <ToggleRow pending label={t('agenda.settings.cancelAlerts')} description={t('agenda.settings.cancelAlertsDesc')} checked={s.get('cancelAlerts')} onChange={(v) => s.set('cancelAlerts', v)} />\n <ToggleRow pending label={t('agenda.settings.noShowTracking')} description={t('agenda.settings.noShowTrackingDesc')} checked={s.get('noShowTracking')} onChange={(v) => s.set('noShowTracking', v)} />\n </SettingsGroup>\n </div>\n )\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { SettingsGroup, MessageTemplateRow } from '@fayz-ai/admin';
2
+ import { tl } from '@fayz-ai/core';
3
+ import { jsx } from 'react/jsx-runtime';
4
+
5
+ // src/components/AgendaMessageTemplates.tsx
6
+ var MESSAGES = [
7
+ { eventKey: "agenda.confirmation_requested", label: ["Manual confirmation", "Confirma\xE7\xE3o manual"], pending: true },
8
+ { eventKey: "agenda.booking_created", label: ["Booking created", "Agendamento criado"] },
9
+ { eventKey: "agenda.booking_reminder", label: ["Reminder", "Lembrete de v\xE9spera"] },
10
+ { eventKey: "agenda.booking_rescheduled", label: ["Rescheduled", "Hor\xE1rio remarcado"] },
11
+ { eventKey: "agenda.booking_cancelled", label: ["Cancelled", "Agendamento cancelado"] },
12
+ { eventKey: "agenda.booking_completed", label: ["After the visit", "Depois do atendimento"] },
13
+ { eventKey: "agenda.booking_no_show", label: ["No-show", "Falta"] }
14
+ ];
15
+ function AgendaMessageTemplates() {
16
+ return /* @__PURE__ */ jsx(
17
+ SettingsGroup,
18
+ {
19
+ title: tl("Message templates", "Templates de mensagem"),
20
+ description: tl(
21
+ "Each text is edited once, in Automations \u203A Messages, and used wherever it is sent.",
22
+ "Cada texto \xE9 editado uma vez, em Automa\xE7\xF5es \u203A Mensagens, e vale onde ele for enviado."
23
+ ),
24
+ children: MESSAGES.map((m) => /* @__PURE__ */ jsx(MessageTemplateRow, { eventKey: m.eventKey, label: tl(...m.label), pending: m.pending }, m.eventKey))
25
+ }
26
+ );
27
+ }
28
+
29
+ export { AgendaMessageTemplates };
30
+ //# sourceMappingURL=AgendaMessageTemplates-46ZLTFLM.js.map
31
+ //# sourceMappingURL=AgendaMessageTemplates-46ZLTFLM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/AgendaMessageTemplates.tsx"],"names":[],"mappings":";;;;;AAMA,IAAM,QAAA,GAA6F;AAAA,EACjG,EAAE,UAAU,+BAAA,EAAiC,KAAA,EAAO,CAAC,qBAAA,EAAuB,0BAAoB,CAAA,EAAG,OAAA,EAAS,IAAA,EAAK;AAAA,EACjH,EAAE,QAAA,EAAU,wBAAA,EAA0B,OAAO,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,EAAE;AAAA,EACvF,EAAE,QAAA,EAAU,yBAAA,EAA2B,OAAO,CAAC,UAAA,EAAY,wBAAqB,CAAA,EAAE;AAAA,EAClF,EAAE,QAAA,EAAU,4BAAA,EAA8B,OAAO,CAAC,aAAA,EAAe,sBAAmB,CAAA,EAAE;AAAA,EACtF,EAAE,QAAA,EAAU,0BAAA,EAA4B,OAAO,CAAC,WAAA,EAAa,uBAAuB,CAAA,EAAE;AAAA,EACtF,EAAE,QAAA,EAAU,0BAAA,EAA4B,OAAO,CAAC,iBAAA,EAAmB,uBAAuB,CAAA,EAAE;AAAA,EAC5F,EAAE,QAAA,EAAU,wBAAA,EAA0B,OAAO,CAAC,SAAA,EAAW,OAAO,CAAA;AAClE,CAAA;AAEO,SAAS,sBAAA,GAAyB;AACvC,EAAA,uBACE,GAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MAAc,KAAA,EAAO,EAAA,CAAG,mBAAA,EAAqB,uBAAuB,CAAA;AAAA,MACnE,WAAA,EAAa,EAAA;AAAA,QAAG,yFAAA;AAAA,QACd;AAAA,OAAuF;AAAA,MACxF,QAAA,EAAA,QAAA,CAAS,IAAI,CAAC,CAAA,yBACZ,kBAAA,EAAA,EAAoC,QAAA,EAAU,EAAE,QAAA,EAAU,KAAA,EAAO,GAAG,GAAG,CAAA,CAAE,KAAK,CAAA,EAAG,OAAA,EAAS,EAAE,OAAA,EAAA,EAApE,CAAA,CAAE,QAA2E,CACvG;AAAA;AAAA,GACH;AAEJ","file":"AgendaMessageTemplates-46ZLTFLM.js","sourcesContent":["import React from 'react'\nimport { MessageTemplateRow, SettingsGroup } from '@fayz-ai/admin'\nimport { tl } from '@fayz-ai/core'\n\n// The agenda's messages, each one record of the shared catalog (Automações ›\n// Mensagens). V1's \"Confirmação manual\" lives here, first.\nconst MESSAGES: Array<{ eventKey: string; label: readonly [string, string]; pending?: boolean }> = [\n { eventKey: 'agenda.confirmation_requested', label: ['Manual confirmation', 'Confirmação manual'], pending: true },\n { eventKey: 'agenda.booking_created', label: ['Booking created', 'Agendamento criado'] },\n { eventKey: 'agenda.booking_reminder', label: ['Reminder', 'Lembrete de véspera'] },\n { eventKey: 'agenda.booking_rescheduled', label: ['Rescheduled', 'Horário remarcado'] },\n { eventKey: 'agenda.booking_cancelled', label: ['Cancelled', 'Agendamento cancelado'] },\n { eventKey: 'agenda.booking_completed', label: ['After the visit', 'Depois do atendimento'] },\n { eventKey: 'agenda.booking_no_show', label: ['No-show', 'Falta'] },\n]\n\nexport function AgendaMessageTemplates() {\n return (\n <SettingsGroup title={tl('Message templates', 'Templates de mensagem')}\n description={tl('Each text is edited once, in Automations › Messages, and used wherever it is sent.',\n 'Cada texto é editado uma vez, em Automações › Mensagens, e vale onde ele for enviado.')}>\n {MESSAGES.map((m) => (\n <MessageTemplateRow key={m.eventKey} eventKey={m.eventKey} label={tl(...m.label)} pending={m.pending} />\n ))}\n </SettingsGroup>\n )\n}\n"]}