@alfadocs/ui-kit 1.15.1 → 1.17.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.
Files changed (76) hide show
  1. package/dist/_chunks/{calendar-CHT9Rm3M.js → calendar-PFO-NlYw.js} +2 -2
  2. package/dist/_chunks/{calendar-event-card-BjdHZaqz.js → calendar-event-card-66CEEWU6.js} +38 -20
  3. package/dist/_chunks/calendar-workspace-Ca0n_r1v.js +7341 -0
  4. package/dist/_chunks/{file-manager-DJMeB3V8.js → file-manager-spc3_khe.js} +152 -136
  5. package/dist/_chunks/{signature-field-CEiPe-vX.js → signature-field-0rFODJlW.js} +34 -19
  6. package/dist/agent-catalog.json +10 -56
  7. package/dist/agent-i18n/en.json +3 -5
  8. package/dist/components/calendar/index.js +1 -1
  9. package/dist/components/calendar-event-card/index.js +1 -1
  10. package/dist/components/file-manager/index.js +1 -1
  11. package/dist/components/signature-field/index.js +1 -1
  12. package/dist/i18n/locales/ar.d.ts +2 -38
  13. package/dist/i18n/locales/ar.js +4 -40
  14. package/dist/i18n/locales/de.d.ts +2 -38
  15. package/dist/i18n/locales/de.js +4 -40
  16. package/dist/i18n/locales/el.d.ts +2 -38
  17. package/dist/i18n/locales/el.js +4 -40
  18. package/dist/i18n/locales/en.d.ts +2 -38
  19. package/dist/i18n/locales/en.js +4 -40
  20. package/dist/i18n/locales/es.d.ts +2 -38
  21. package/dist/i18n/locales/es.js +4 -40
  22. package/dist/i18n/locales/fr.d.ts +2 -38
  23. package/dist/i18n/locales/fr.js +4 -40
  24. package/dist/i18n/locales/hi.d.ts +2 -38
  25. package/dist/i18n/locales/hi.js +4 -40
  26. package/dist/i18n/locales/it.d.ts +2 -38
  27. package/dist/i18n/locales/it.js +4 -40
  28. package/dist/i18n/locales/ja.d.ts +2 -38
  29. package/dist/i18n/locales/ja.js +4 -40
  30. package/dist/i18n/locales/nl.d.ts +2 -38
  31. package/dist/i18n/locales/nl.js +4 -40
  32. package/dist/i18n/locales/pl.d.ts +2 -38
  33. package/dist/i18n/locales/pl.js +4 -40
  34. package/dist/i18n/locales/pt.d.ts +2 -38
  35. package/dist/i18n/locales/pt.js +4 -40
  36. package/dist/i18n/locales/ro.d.ts +2 -38
  37. package/dist/i18n/locales/ro.js +4 -40
  38. package/dist/i18n/locales/ru.d.ts +2 -38
  39. package/dist/i18n/locales/ru.js +4 -40
  40. package/dist/i18n/locales/sq.d.ts +2 -38
  41. package/dist/i18n/locales/sq.js +4 -40
  42. package/dist/i18n/locales/sv.d.ts +2 -38
  43. package/dist/i18n/locales/sv.js +4 -40
  44. package/dist/i18n/locales/tr.d.ts +2 -38
  45. package/dist/i18n/locales/tr.js +4 -40
  46. package/dist/i18n/locales/zh.d.ts +2 -38
  47. package/dist/i18n/locales/zh.js +4 -40
  48. package/dist/index.js +5 -5
  49. package/dist/locales/ar.json +4 -40
  50. package/dist/locales/de.json +4 -40
  51. package/dist/locales/el.json +4 -40
  52. package/dist/locales/en.json +4 -40
  53. package/dist/locales/es.json +4 -40
  54. package/dist/locales/fr.json +4 -40
  55. package/dist/locales/hi.json +4 -40
  56. package/dist/locales/it.json +4 -40
  57. package/dist/locales/ja.json +4 -40
  58. package/dist/locales/nl.json +4 -40
  59. package/dist/locales/pl.json +4 -40
  60. package/dist/locales/pt.json +4 -40
  61. package/dist/locales/ro.json +4 -40
  62. package/dist/locales/ru.json +4 -40
  63. package/dist/locales/sq.json +4 -40
  64. package/dist/locales/sv.json +4 -40
  65. package/dist/locales/tr.json +4 -40
  66. package/dist/locales/zh.json +4 -40
  67. package/dist/patterns/calendar/calendar-workspace.model.d.ts +59 -13
  68. package/dist/patterns/calendar/calendar.model.d.ts +18 -5
  69. package/dist/patterns/calendar/calendar.sheets.d.ts +10 -13
  70. package/dist/patterns/calendar/calendar.types.d.ts +79 -13
  71. package/dist/patterns/calendar/index.js +1 -1
  72. package/dist/tokens.css +1 -1
  73. package/package.json +1 -1
  74. package/dist/_chunks/calendar-workspace-CqVe4v5s.js +0 -7481
  75. package/dist/_chunks/folder-plus-CutOs4DP.js +0 -22
  76. package/dist/_chunks/signature-CpFNpsVK.js +0 -21
@@ -1,12 +1,27 @@
1
1
  import { jsx as s, jsxs as m, Fragment as v } from "react/jsx-runtime";
2
2
  import { forwardRef as k } from "react";
3
- import { c as y } from "./index-D2ZczOXr.js";
4
- import { useTranslation as S } from "react-i18next";
3
+ import { c as C } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as _ } from "react-i18next";
5
5
  import { S as T } from "./spinner-hbwuKwMf.js";
6
- import { C as _ } from "./check-DrFSN__t.js";
7
- import { S as w } from "./signature-CpFNpsVK.js";
6
+ import { C as w } from "./check-DrFSN__t.js";
7
+ import { c as S } from "./createLucideIcon-DhHxpK9K.js";
8
8
  import { P as $ } from "./pen-line-D0De5zdl.js";
9
- const P = y(
9
+ /**
10
+ * @license lucide-react v1.22.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ */
15
+ const P = [
16
+ [
17
+ "path",
18
+ {
19
+ d: "m21 17-2.156-1.868A.5.5 0 0 0 18 15.5v.5a1 1 0 0 1-1 1h-2a1 1 0 0 1-1-1c0-2.545-3.991-3.97-8.5-4a1 1 0 0 0 0 5c4.153 0 4.745-11.295 5.708-13.5a2.5 2.5 0 1 1 3.31 3.284",
20
+ key: "y32ogt"
21
+ }
22
+ ],
23
+ ["path", { d: "M3 21h18", key: "itz85i" }]
24
+ ], V = S("signature", P), B = C(
10
25
  [
11
26
  // Overlay fields are always absolutely positioned within the
12
27
  // renderPageOverlay box; the percent geometry rides the inline style.
@@ -85,7 +100,7 @@ const P = y(
85
100
  },
86
101
  defaultVariants: { state: "unsigned", active: !1 }
87
102
  }
88
- ), V = k(
103
+ ), D = k(
89
104
  ({
90
105
  state: e = "unsigned",
91
106
  insetInlineStart: o,
@@ -102,12 +117,12 @@ const P = y(
102
117
  className: h,
103
118
  ...x
104
119
  }, z) => {
105
- const { t: i } = S(), f = p || e === "signing", n = {};
120
+ const { t: i } = _(), f = p || e === "signing", n = {};
106
121
  o !== void 0 && (n.insetInlineStart = `${o}%`), a !== void 0 && (n.insetBlockStart = `${a}%`), t !== void 0 && (n.inlineSize = `${t}%`), l !== void 0 && (n.blockSize = `${l}%`);
107
- const F = r ?? i("signatureField.prompt"), j = e === "signing" ? r ? i("signatureField.signingNamed", { label: r }) : i("signatureField.signing") : e === "signed" ? r ? i("signatureField.signedNamed", { label: r }) : i("signatureField.signed") : r ?? i("signatureField.unsigned");
108
- function N(C) {
122
+ const F = r ?? i("signatureField.prompt"), N = e === "signing" ? r ? i("signatureField.signingNamed", { label: r }) : i("signatureField.signing") : e === "signed" ? r ? i("signatureField.signedNamed", { label: r }) : i("signatureField.signed") : r ?? i("signatureField.unsigned");
123
+ function j(y) {
109
124
  if (f) {
110
- C.preventDefault();
125
+ y.preventDefault();
111
126
  return;
112
127
  }
113
128
  d == null || d();
@@ -122,11 +137,11 @@ const P = y(
122
137
  "data-component-id": b,
123
138
  "data-state": e,
124
139
  "data-active": g || void 0,
125
- "aria-label": j,
140
+ "aria-label": N,
126
141
  "aria-disabled": f || void 0,
127
142
  "aria-busy": e === "signing" || void 0,
128
- onClick: N,
129
- className: [P({ state: e, active: g }), h].filter(Boolean).join(" "),
143
+ onClick: j,
144
+ className: [B({ state: e, active: g }), h].filter(Boolean).join(" "),
130
145
  style: n,
131
146
  children: e === "signing" ? (
132
147
  // Decorative: the button's aria-label + aria-busy are the single
@@ -155,7 +170,7 @@ const P = y(
155
170
  ) })
156
171
  ) : /* @__PURE__ */ m(v, { children: [
157
172
  /* @__PURE__ */ s(
158
- _,
173
+ w,
159
174
  {
160
175
  "aria-hidden": "true",
161
176
  className: "ds:block-size-4 ds:inline-size-4 ds:text-[var(--success)]"
@@ -165,7 +180,7 @@ const P = y(
165
180
  ] }) : u ? (
166
181
  // Glyph-only unsigned prompt — the Signature squiggle reads as
167
182
  // "sign here" on its own, where the pen + caption would overflow.
168
- /* @__PURE__ */ s(w, { "aria-hidden": "true", className: "ds:size-5" })
183
+ /* @__PURE__ */ s(V, { "aria-hidden": "true", className: "ds:size-5" })
169
184
  ) : /* @__PURE__ */ m(v, { children: [
170
185
  /* @__PURE__ */ s(
171
186
  $,
@@ -180,9 +195,9 @@ const P = y(
180
195
  );
181
196
  }
182
197
  );
183
- V.displayName = "SignatureField";
198
+ D.displayName = "SignatureField";
184
199
  export {
185
- V as S,
186
- P as s
200
+ D as S,
201
+ B as s
187
202
  };
188
- //# sourceMappingURL=signature-field-CEiPe-vX.js.map
203
+ //# sourceMappingURL=signature-field-0rFODJlW.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "packageVersion": "1.15.1",
3
+ "packageVersion": "1.17.0",
4
4
  "components": [
5
5
  {
6
6
  "kind": "component",
@@ -16598,19 +16598,19 @@
16598
16598
  "as": "toolRail"
16599
16599
  },
16600
16600
  {
16601
- "component": "button",
16601
+ "component": "icon-button",
16602
16602
  "as": "newAppointment"
16603
16603
  },
16604
16604
  {
16605
- "component": "button-group",
16605
+ "component": "icon-button",
16606
16606
  "as": "waitingListSplit"
16607
16607
  },
16608
16608
  {
16609
- "component": "button",
16609
+ "component": "icon-button",
16610
16610
  "as": "onlineBookings"
16611
16611
  },
16612
16612
  {
16613
- "component": "button",
16613
+ "component": "icon-button",
16614
16614
  "as": "findFreeSlots"
16615
16615
  },
16616
16616
  {
@@ -16805,10 +16805,6 @@
16805
16805
  "component": "text-input",
16806
16806
  "as": "appointmentDescription"
16807
16807
  },
16808
- {
16809
- "component": "text-area",
16810
- "as": "appointmentNotes"
16811
- },
16812
16808
  {
16813
16809
  "component": "number-input",
16814
16810
  "as": "repetitionCount"
@@ -16863,18 +16859,10 @@
16863
16859
  "component": "radio-group",
16864
16860
  "as": "deleteScope"
16865
16861
  },
16866
- {
16867
- "component": "dialog",
16868
- "as": "createBillConfirm"
16869
- },
16870
16862
  {
16871
16863
  "component": "dropdown-menu",
16872
16864
  "as": "signatureMenu"
16873
16865
  },
16874
- {
16875
- "component": "dropdown-menu",
16876
- "as": "documentsMenu"
16877
- },
16878
16866
  {
16879
16867
  "component": "signature-status-chip",
16880
16868
  "as": "signatureStatus"
@@ -16902,7 +16890,7 @@
16902
16890
  },
16903
16891
  {
16904
16892
  "component": "whatsapp-button",
16905
- "as": "whatsAppBridge",
16893
+ "as": "whatsAppLink",
16906
16894
  "entity": "patient"
16907
16895
  },
16908
16896
  {
@@ -17255,7 +17243,7 @@
17255
17243
  {
17256
17244
  "name": "request_signature",
17257
17245
  "safety": "phi",
17258
- "description": "Ask the patient to sign the appointment's documents from the details panel: by SMS or e-mail through the kit menu, or \"On this device…\", which hands off to the host's own e-signature surface. The chip beside it reports the channel a request has already gone out on. Sends a patient-identifiable request.",
17246
+ "description": "Ask the patient to sign the appointment's documents from the details panel, by SMS or e-mail through the kit menu. The chip beside it reports the channel a request has already gone out on. There is no \"On this device…\" item: on-device signing is the host's own e-signature surface and no seam here mounts it, so the menu offers only the two channels it can honour. Sends a patient-identifiable request.",
17259
17247
  "descriptionKey": "ui.agent.calendar.workflows.requestSignature",
17260
17248
  "uiActions": [
17261
17249
  "dropdown-menu.open",
@@ -17268,47 +17256,13 @@
17268
17256
  "signature.request"
17269
17257
  ]
17270
17258
  },
17271
- {
17272
- "name": "create_bill",
17273
- "safety": "phi",
17274
- "description": "Raise a bill for the appointment from the details panel's Documents menu, behind a confirmation dialog. Refused while the appointment has no operator. Creates a patient-identifiable financial document.",
17275
- "descriptionKey": "ui.agent.calendar.workflows.createBill",
17276
- "uiActions": [
17277
- "dropdown-menu.open",
17278
- "dropdown-menu.close",
17279
- "dialog.open",
17280
- "dialog.close",
17281
- "dialog.dismiss"
17282
- ],
17283
- "stateReads": [
17284
- "dropdown-menu.isOpen",
17285
- "dialog.isOpen"
17286
- ],
17287
- "apiActions": [
17288
- "bill.create"
17289
- ]
17290
- },
17291
- {
17292
- "name": "open_patient_folder",
17293
- "safety": "read",
17294
- "description": "Hand off from an appointment or a waiting-list row to its patient: the name in the details panel's identity strip and in the waiting queue is a link the host resolves to the patient folder. Navigation only.",
17295
- "descriptionKey": "ui.agent.calendar.workflows.openPatientFolder",
17296
- "uiActions": [
17297
- "calendar.focus_event"
17298
- ],
17299
- "apiActions": [
17300
- "patient.get"
17301
- ]
17302
- },
17303
17259
  {
17304
17260
  "name": "message_patient_whatsapp",
17305
17261
  "safety": "phi",
17306
- "description": "Reach the patient over WhatsApp from the details panel or a waiting-list row. The kit only raises the bridge — the host mounts the legacy Snippets surface that composes and sends. The affordance is disabled, and names its reason in its accessible name, when the entry carries no SMS-capable number. Hands a patient's contact detail to an outbound channel.",
17262
+ "description": "Reach the patient over WhatsApp from a waiting-list row. The affordance is a `wa.me` deep link the row opens in a new tab — it is disabled, and names its reason in its accessible name, when the entry carries no WhatsApp-capable number. There is no equivalent in the details panel: the send-reminder group is handed an empty channel list, because the host's legacy Snippets island is the only composing surface and no seam here mounts it. Hands a patient's contact detail to an outbound channel.",
17307
17263
  "descriptionKey": "ui.agent.calendar.workflows.messagePatientWhatsapp",
17308
17264
  "uiActions": [],
17309
- "apiActions": [
17310
- "patient.openWhatsAppSnippets"
17311
- ]
17265
+ "apiActions": []
17312
17266
  },
17313
17267
  {
17314
17268
  "name": "filter_waiting_list",
@@ -17377,7 +17331,7 @@
17377
17331
  {
17378
17332
  "name": "find_free_slot",
17379
17333
  "safety": "read",
17380
- "description": "Search the practice for bookable time in the finder panel. Operator and chair scope are grouped checklists behind a popover per axis — a select-all row first, operators sectioned under their groups, nothing ticked searching every eligible resource — beside the care, the duration, the date range and, for a care that needs one, a medical-device select. The results list groups the slots under a day heading; a click steers the grid to that day and docks the editor prefilled with the date, time, duration, chair, operator and any seeded patient or care. The 185-day range warning is advisory (the search still runs), \"Show more slots\" pushes the To date out by 30 days and re-searches, and an alert links to the scheduler when the practice or its operators hold no business hours. Read-only until a slot is booked.",
17334
+ "description": "Search the practice for bookable time in the finder panel. Operator and chair scope are grouped checklists behind a popover per axis — a select-all row first, operators sectioned under their groups, nothing ticked searching every eligible resource — beside the care, the duration, the date range and, for a care that needs one, a medical-device select. The results list groups the slots under a day heading; a click steers the grid to that day and docks the editor prefilled with the date, time, duration, chair, operator and any seeded patient or care. The 185-day range warning is advisory (the search still runs), \"Show more slots\" pushes the To date out by 30 days and re-searches, and an alert names which business hours are missing when the practice or its operators hold none (it links to the scheduler only where the host supplies that navigation, which this workspace does not). Read-only until a slot is booked.",
17381
17335
  "descriptionKey": "ui.agent.calendar.workflows.findFreeSlot",
17382
17336
  "uiActions": [
17383
17337
  "collapsible.toggle",
@@ -181,14 +181,12 @@
181
181
  "deleteAppointment": "Remove an appointment from the details panel behind an alert dialog. The dialog asks for the recurring scope when the appointment belongs to a series, and for the care-plan cleanup when it is the parent of a price-list recurrence — so confirming can drop far more than the one card. Irreversible from this surface.",
182
182
  "managePatientNotes": "Read and write the patient's notes from the Notes sub-view beside History: add a note through the composer, pin one, edit one in a dialog or delete one behind an alert dialog. Every write goes to the host, which stamps the note's id, time and author — the kit attributes nothing to a clinical note. With no host seam, or without the edit permission, the sub-view is a read-only timeline. The rows carry ids and pin / flag / clinical markers only; the body and the author are never exposed as state. Writes patient-identifiable clinical data.",
183
183
  "readModificationHistory": "Open the History sub-view of the details panel and read the appointment's modification ledger, newest first — what changed, from what to what, and when. No mutation.",
184
- "requestSignature": "Ask the patient to sign the appointment's documents from the details panel: by SMS or e-mail through the kit menu, or \"On this device…\", which hands off to the host's own e-signature surface. The chip beside it reports the channel a request has already gone out on. Sends a patient-identifiable request.",
185
- "createBill": "Raise a bill for the appointment from the details panel's Documents menu, behind a confirmation dialog. Refused while the appointment has no operator. Creates a patient-identifiable financial document.",
186
- "openPatientFolder": "Hand off from an appointment or a waiting-list row to its patient: the name in the details panel's identity strip and in the waiting queue is a link the host resolves to the patient folder. Navigation only.",
187
- "messagePatientWhatsapp": "Reach the patient over WhatsApp from the details panel or a waiting-list row. The kit only raises the bridge — the host mounts the legacy Snippets surface that composes and sends. The affordance is disabled, and names its reason in its accessible name, when the entry carries no SMS-capable number. Hands a patient's contact detail to an outbound channel.",
184
+ "requestSignature": "Ask the patient to sign the appointment's documents from the details panel, by SMS or e-mail through the kit menu. The chip beside it reports the channel a request has already gone out on. There is no \"On this device…\" item: on-device signing is the host's own e-signature surface and no seam here mounts it, so the menu offers only the two channels it can honour. Sends a patient-identifiable request.",
185
+ "messagePatientWhatsapp": "Reach the patient over WhatsApp from a waiting-list row. The affordance is a `wa.me` deep link the row opens in a new tab — it is disabled, and names its reason in its accessible name, when the entry carries no WhatsApp-capable number. There is no equivalent in the details panel: the send-reminder group is handed an empty channel list, because the host's legacy Snippets island is the only composing surface and no seam here mounts it. Hands a patient's contact detail to an outbound channel.",
188
186
  "filterWaitingList": "Narrow the waiting queue: the four quick views (all, patients without an appointment, appointment scheduled over 30 days ago, on the list over 30 days) and, behind \"Show advanced filters\", the platform's nine optional client-side inputs — patient, patient assigned, operator, appointment scheduled, appointment scheduled from / to, on the waiting list from / to and description — applied only when \"Filter list\" is pressed. The toggle carries a count badge while any input is set, and changing the quick view drops the form. Selection only.",
189
187
  "manageWaitingListEntry": "Add, amend or remove a waiting-list entry. The four-field form opens as a rail SUB-VIEW — from the toolbar split button's plus segment, from Add entry, or from a row's pencil — with a back arrow to the queue. Editing is refused on a row already linked to an appointment, because those fields belong to the appointment; the pencil stays focusable and names that reason. Remove deletes at once with no confirmation, platform parity, and its toast carries an Undo that puts the entry back. Writes patient-identifiable data.",
190
188
  "scheduleWaitingPatient": "Give a waiting patient a slot. \"Schedule\" on an unlinked row hands off to the free-slot finder seeded from the entry — operator, chair, duration, patient, care and colour already filled in — and booking a slot opens the editor carrying the entry, so saving books the appointment and takes the entry off the list. A row already linked to an appointment reads \"Reschedule\" and seeds the same finder, but booking there MOVES the existing appointment rather than creating a second one. Writes patient-identifiable data.",
191
- "findFreeSlot": "Search the practice for bookable time in the finder panel. Operator and chair scope are grouped checklists behind a popover per axis — a select-all row first, operators sectioned under their groups, nothing ticked searching every eligible resource — beside the care, the duration, the date range and, for a care that needs one, a medical-device select. The results list groups the slots under a day heading; a click steers the grid to that day and docks the editor prefilled with the date, time, duration, chair, operator and any seeded patient or care. The 185-day range warning is advisory (the search still runs), \"Show more slots\" pushes the To date out by 30 days and re-searches, and an alert links to the scheduler when the practice or its operators hold no business hours. Read-only until a slot is booked.",
189
+ "findFreeSlot": "Search the practice for bookable time in the finder panel. Operator and chair scope are grouped checklists behind a popover per axis — a select-all row first, operators sectioned under their groups, nothing ticked searching every eligible resource — beside the care, the duration, the date range and, for a care that needs one, a medical-device select. The results list groups the slots under a day heading; a click steers the grid to that day and docks the editor prefilled with the date, time, duration, chair, operator and any seeded patient or care. The 185-day range warning is advisory (the search still runs), \"Show more slots\" pushes the To date out by 30 days and re-searches, and an alert names which business hours are missing when the practice or its operators hold none (it links to the scheduler only where the host supplies that navigation, which this workspace does not). Read-only until a slot is booked.",
192
190
  "triageOnlineBooking": "Work the online-bookings panel — the platform's bookings page hosted in the rail, badged with the bookings of the last thirty days still missing a patient or an operator. A row can be shown on the grid, which selects it and docks its details, or completed, which docks the editor prefilled with what the person typed on the booking site so the missing patient or operator can be filled in and saved. Completing writes patient-identifiable data.",
193
191
  "printDaySheet": "Print the front-desk call sheet. The toolbar's printer icon opens a dialog asking which day — one day, never the visible range — and Print renders that day's appointments through the browser, scoped by the filters in force and masked when privacy mode is on. Nothing is sent to a server, but the sheet itself is a patient-identifiable document."
194
192
  }
@@ -1,4 +1,4 @@
1
- import { C as r, c as l, r as n } from "../../_chunks/calendar-CHT9Rm3M.js";
1
+ import { C as r, c as l, r as n } from "../../_chunks/calendar-PFO-NlYw.js";
2
2
  export {
3
3
  r as Calendar,
4
4
  l as calendarAgent,
@@ -1,4 +1,4 @@
1
- import { C as e } from "../../_chunks/calendar-event-card-BjdHZaqz.js";
1
+ import { C as e } from "../../_chunks/calendar-event-card-66CEEWU6.js";
2
2
  export {
3
3
  e as CalendarEventCard
4
4
  };
@@ -1,4 +1,4 @@
1
- import { F as r, f } from "../../_chunks/file-manager-DJMeB3V8.js";
1
+ import { F as r, f } from "../../_chunks/file-manager-spc3_khe.js";
2
2
  export {
3
3
  r as FileManager,
4
4
  f as fileManagerAgent
@@ -1,4 +1,4 @@
1
- import { S as i, s as r } from "../../_chunks/signature-field-CEiPe-vX.js";
1
+ import { S as i, s as r } from "../../_chunks/signature-field-0rFODJlW.js";
2
2
  export {
3
3
  i as SignatureField,
4
4
  r as signatureFieldVariants
@@ -3996,6 +3996,8 @@ export declare const arUi: {
3996
3996
  readonly phone: "الهاتف";
3997
3997
  readonly email: "البريد الإلكتروني";
3998
3998
  readonly city: "المدينة";
3999
+ readonly patientNotLoaded: "لم يتم تحميل سجل المريض";
4000
+ readonly patientPhoneUnknown: "لا يوجد رقم هاتف متاح لهذا المريض";
3999
4001
  readonly docked: "تم فتح تفاصيل موعد {{name}} في اللوحة الجانبية";
4000
4002
  readonly remind: "إرسال تذكير";
4001
4003
  readonly remindWhatsApp: "واتساب";
@@ -4024,8 +4026,6 @@ export declare const arUi: {
4024
4026
  readonly anamnesisTitle: "التاريخ المرضي يحتاج إلى مراجعة";
4025
4027
  readonly anamnesisHighlighted: "إجابات مميّزة: {{n}}";
4026
4028
  readonly anamnesisExpired: "إجابات منتهية الصلاحية: {{n}}";
4027
- readonly anamnesisRenew: "تجديد";
4028
- readonly anamnesisRenewToast: "تجديد التاريخ المرضي — عرض توضيحي فقط، لا يُرسل شيء";
4029
4029
  readonly sectionSigning: "مستندات للتوقيع";
4030
4030
  readonly signingToSignOne: "مستند واحد للتوقيع";
4031
4031
  readonly signingToSignMany: "{{n}} مستندات للتوقيع";
@@ -4041,8 +4041,6 @@ export declare const arUi: {
4041
4041
  readonly sectionBooking: "الحجز عبر الإنترنت";
4042
4042
  readonly bookedAt: "تاريخ الحجز";
4043
4043
  readonly bookingNote: "ملاحظة المريض";
4044
- readonly joinTelehealth: "الانضمام إلى الجلسة عن بُعد";
4045
- readonly joinTelehealthToast: "جلسة عن بُعد {{code}} — عرض توضيحي فقط، لا تبدأ أي مكالمة";
4046
4044
  readonly historyAction: "سجل التعديلات";
4047
4045
  readonly historyTitle: "سجل التعديلات";
4048
4046
  readonly historyBack: "العودة إلى التفاصيل";
@@ -4066,12 +4064,8 @@ export declare const arUi: {
4066
4064
  readonly move: "نقل…";
4067
4065
  readonly copy: "نسخ…";
4068
4066
  readonly signingOnDevice: "على هذا الجهاز…";
4069
- readonly aesEnable: "تفعيل التوقيع الإلكتروني المتقدم";
4070
- readonly aesToast: "يفتح إعداد التوقيع الإلكتروني المتقدم. ليس جزءًا من هذا العرض.";
4071
4067
  readonly paidOnline: "مدفوع عبر الإنترنت";
4072
4068
  readonly toCollect: "للتحصيل";
4073
- readonly pauUpsell: "أتمتة المدفوعات";
4074
- readonly pauToast: "يفتح أتمتة المدفوعات. ليس جزءًا من هذا العرض.";
4075
4069
  readonly address: "العنوان";
4076
4070
  readonly mapsLink: "فتح في خرائط Google";
4077
4071
  readonly bookingPhone: "هاتف الحجز";
@@ -4259,15 +4253,6 @@ export declare const arUi: {
4259
4253
  readonly duplicateAppointmentOnly: "الموعد فقط";
4260
4254
  readonly duplicateWithTreatments: "الموعد والعلاجات";
4261
4255
  readonly cancel: "إلغاء";
4262
- readonly createDocument: "إنشاء مستند";
4263
- readonly createBill: "إنشاء فاتورة";
4264
- readonly createBillNoOperator: "عيّن معالجًا أولًا";
4265
- readonly createFolder: "مجلد جديد";
4266
- readonly createFromTemplate: "مستند من قالب";
4267
- readonly createEmptyDocument: "مستند فارغ";
4268
- readonly createIdDocument: "وثيقة هوية";
4269
- readonly createWebCamera: "كاميرا الويب";
4270
- readonly createDocumentToast: "{{item}} — عرض توضيحي فقط، لا يُنشأ شيء";
4271
4256
  readonly branch: "الفرع";
4272
4257
  readonly devices: "الأجهزة الطبية";
4273
4258
  readonly signModeSms: "طلب عبر رسالة نصية";
@@ -4293,10 +4278,6 @@ export declare const arUi: {
4293
4278
  readonly carePlanCleanup: "العلاجات في خطة العلاج";
4294
4279
  readonly carePlanRemove: "إزالة العلاج من خطة العلاج";
4295
4280
  readonly carePlanKeep: "الإبقاء على العلاج في خطة العلاج";
4296
- readonly createBillConfirmTitle: "إنشاء الفاتورة؟";
4297
- readonly createBillConfirmBody: "تُعلَّم كل العلاجات المرتبطة بهذا الموعد كمنجزة من قبل المعالج المعيّن، ثم تُفتح الفاتورة.";
4298
- readonly createBillConfirm: "متابعة";
4299
- readonly createBillCancel: "إلغاء";
4300
4281
  readonly devicesRequired_one: "يتطلب جهازًا واحدًا";
4301
4282
  readonly devicesRequired_many: "يتطلب {{count}} جهازًا";
4302
4283
  readonly devicesRequired_other: "يتطلب {{count}} جهاز";
@@ -4378,8 +4359,6 @@ export declare const arUi: {
4378
4359
  readonly entriesToggle: "بنود العلاج ({{count}})";
4379
4360
  readonly linkedToThis: "مرتبط بهذا الموعد";
4380
4361
  readonly showOnCalendar: "عرض في التقويم";
4381
- readonly openFull: "فتح الخطة كاملة";
4382
- readonly openFullToast: "تُفتح خطة العلاج الكاملة في ملف المريض — ليست جزءًا من هذا العرض.";
4383
4362
  };
4384
4363
  readonly backlog: {
4385
4364
  readonly tool: "المهام المعلّقة";
@@ -4459,10 +4438,6 @@ export declare const arUi: {
4459
4438
  readonly chairs: "الكراسي";
4460
4439
  readonly operators: "المعالجون";
4461
4440
  readonly resetFilters: "إعادة تعيين عوامل التصفية";
4462
- readonly scheduler: "جدولة الأوقات";
4463
- readonly schedulerToast: "يفتح جدولة الأوقات — ساعات عمل العيادة وتوافر المعالجين. ليس جزءًا من هذا العرض.";
4464
- readonly settings: "إعدادات الأجندة";
4465
- readonly settingsToast: "يفتح صفحة إعدادات الأجندة. ليس جزءًا من هذا العرض.";
4466
4441
  readonly navigation: "التنقل في الأجندة";
4467
4442
  readonly waitingListCount_one: "قائمة الانتظار — إدخال واحد";
4468
4443
  readonly waitingListCount_many: "قائمة الانتظار — {{count}} إدخالًا";
@@ -4521,8 +4496,6 @@ export declare const arUi: {
4521
4496
  readonly chairShort: "حرفان";
4522
4497
  readonly mapsLink: "رابط الخريطة في تفاصيل الموعد";
4523
4498
  readonly windowPractice: "ساعات العيادة ({{from}}–{{to}})";
4524
- readonly tutorial: "الدليل التعليمي";
4525
- readonly tutorialToast: "يفتح الدليل التعليمي للأجندة في الأكاديمية. ليس جزءًا من هذا العرض.";
4526
4499
  };
4527
4500
  readonly print: {
4528
4501
  readonly title: "طباعة اليوم";
@@ -4536,9 +4509,6 @@ export declare const arUi: {
4536
4509
  readonly undo: "تراجع";
4537
4510
  readonly undone: "تمت استعادة المدة";
4538
4511
  };
4539
- readonly dialogs: {
4540
- readonly carePlanToast: "يفتح خطة العلاج في ملف المريض. ليس جزءًا من هذا العرض.";
4541
- };
4542
4512
  readonly bookings: {
4543
4513
  readonly title: "الحجوزات عبر الإنترنت";
4544
4514
  readonly intro: "حجوزات آخر ثلاثين يوماً التي ما زالت تحتاج إلى مريض أو معالج.";
@@ -4593,12 +4563,6 @@ export declare const arUi: {
4593
4563
  readonly readOnly: {
4594
4564
  readonly createBlocked: "ليست لديك صلاحية إنشاء المواعيد.";
4595
4565
  };
4596
- readonly legacy: {
4597
- readonly patientFolder: "يفتح ملف المريض {{name}}. ليس جزءًا من هذه العروض التوضيحية.";
4598
- readonly saveAndReturn: "تم الحفظ. في المنصة يعود المستخدم إلى خطة العلاج التي جاء منها الرابط. ليس جزءًا من هذا العرض.";
4599
- readonly whatsapp: "يفتح نافذة قصاصات واتساب القديمة. ليس جزءًا من هذا العرض.";
4600
- readonly signOnDevice: "يفتح نافذة التوقيع الإلكتروني القديمة — التوقيع على هذا الجهاز وتعيين الموقّع والمعالج. ليس جزءًا من هذا العرض.";
4601
- };
4602
4566
  readonly rail: {
4603
4567
  readonly appointments: "المواعيد";
4604
4568
  readonly appointmentsTitle: "المواعيد القادمة";
@@ -3957,6 +3957,8 @@ const e = {
3957
3957
  phone: "الهاتف",
3958
3958
  email: "البريد الإلكتروني",
3959
3959
  city: "المدينة",
3960
+ patientNotLoaded: "لم يتم تحميل سجل المريض",
3961
+ patientPhoneUnknown: "لا يوجد رقم هاتف متاح لهذا المريض",
3960
3962
  docked: "تم فتح تفاصيل موعد {{name}} في اللوحة الجانبية",
3961
3963
  remind: "إرسال تذكير",
3962
3964
  remindWhatsApp: "واتساب",
@@ -3985,8 +3987,6 @@ const e = {
3985
3987
  anamnesisTitle: "التاريخ المرضي يحتاج إلى مراجعة",
3986
3988
  anamnesisHighlighted: "إجابات مميّزة: {{n}}",
3987
3989
  anamnesisExpired: "إجابات منتهية الصلاحية: {{n}}",
3988
- anamnesisRenew: "تجديد",
3989
- anamnesisRenewToast: "تجديد التاريخ المرضي — عرض توضيحي فقط، لا يُرسل شيء",
3990
3990
  sectionSigning: "مستندات للتوقيع",
3991
3991
  signingToSignOne: "مستند واحد للتوقيع",
3992
3992
  signingToSignMany: "{{n}} مستندات للتوقيع",
@@ -4002,8 +4002,6 @@ const e = {
4002
4002
  sectionBooking: "الحجز عبر الإنترنت",
4003
4003
  bookedAt: "تاريخ الحجز",
4004
4004
  bookingNote: "ملاحظة المريض",
4005
- joinTelehealth: "الانضمام إلى الجلسة عن بُعد",
4006
- joinTelehealthToast: "جلسة عن بُعد {{code}} — عرض توضيحي فقط، لا تبدأ أي مكالمة",
4007
4005
  historyAction: "سجل التعديلات",
4008
4006
  historyTitle: "سجل التعديلات",
4009
4007
  historyBack: "العودة إلى التفاصيل",
@@ -4027,12 +4025,8 @@ const e = {
4027
4025
  move: "نقل…",
4028
4026
  copy: "نسخ…",
4029
4027
  signingOnDevice: "على هذا الجهاز…",
4030
- aesEnable: "تفعيل التوقيع الإلكتروني المتقدم",
4031
- aesToast: "يفتح إعداد التوقيع الإلكتروني المتقدم. ليس جزءًا من هذا العرض.",
4032
4028
  paidOnline: "مدفوع عبر الإنترنت",
4033
4029
  toCollect: "للتحصيل",
4034
- pauUpsell: "أتمتة المدفوعات",
4035
- pauToast: "يفتح أتمتة المدفوعات. ليس جزءًا من هذا العرض.",
4036
4030
  address: "العنوان",
4037
4031
  mapsLink: "فتح في خرائط Google",
4038
4032
  bookingPhone: "هاتف الحجز",
@@ -4220,15 +4214,6 @@ const e = {
4220
4214
  duplicateAppointmentOnly: "الموعد فقط",
4221
4215
  duplicateWithTreatments: "الموعد والعلاجات",
4222
4216
  cancel: "إلغاء",
4223
- createDocument: "إنشاء مستند",
4224
- createBill: "إنشاء فاتورة",
4225
- createBillNoOperator: "عيّن معالجًا أولًا",
4226
- createFolder: "مجلد جديد",
4227
- createFromTemplate: "مستند من قالب",
4228
- createEmptyDocument: "مستند فارغ",
4229
- createIdDocument: "وثيقة هوية",
4230
- createWebCamera: "كاميرا الويب",
4231
- createDocumentToast: "{{item}} — عرض توضيحي فقط، لا يُنشأ شيء",
4232
4217
  branch: "الفرع",
4233
4218
  devices: "الأجهزة الطبية",
4234
4219
  signModeSms: "طلب عبر رسالة نصية",
@@ -4254,10 +4239,6 @@ const e = {
4254
4239
  carePlanCleanup: "العلاجات في خطة العلاج",
4255
4240
  carePlanRemove: "إزالة العلاج من خطة العلاج",
4256
4241
  carePlanKeep: "الإبقاء على العلاج في خطة العلاج",
4257
- createBillConfirmTitle: "إنشاء الفاتورة؟",
4258
- createBillConfirmBody: "تُعلَّم كل العلاجات المرتبطة بهذا الموعد كمنجزة من قبل المعالج المعيّن، ثم تُفتح الفاتورة.",
4259
- createBillConfirm: "متابعة",
4260
- createBillCancel: "إلغاء",
4261
4242
  devicesRequired_one: "يتطلب جهازًا واحدًا",
4262
4243
  devicesRequired_many: "يتطلب {{count}} جهازًا",
4263
4244
  devicesRequired_other: "يتطلب {{count}} جهاز",
@@ -4338,9 +4319,7 @@ const e = {
4338
4319
  region: "خطة العلاج",
4339
4320
  entriesToggle: "بنود العلاج ({{count}})",
4340
4321
  linkedToThis: "مرتبط بهذا الموعد",
4341
- showOnCalendar: "عرض في التقويم",
4342
- openFull: "فتح الخطة كاملة",
4343
- openFullToast: "تُفتح خطة العلاج الكاملة في ملف المريض — ليست جزءًا من هذا العرض."
4322
+ showOnCalendar: "عرض في التقويم"
4344
4323
  },
4345
4324
  backlog: {
4346
4325
  tool: "المهام المعلّقة",
@@ -4420,10 +4399,6 @@ const e = {
4420
4399
  chairs: "الكراسي",
4421
4400
  operators: "المعالجون",
4422
4401
  resetFilters: "إعادة تعيين عوامل التصفية",
4423
- scheduler: "جدولة الأوقات",
4424
- schedulerToast: "يفتح جدولة الأوقات — ساعات عمل العيادة وتوافر المعالجين. ليس جزءًا من هذا العرض.",
4425
- settings: "إعدادات الأجندة",
4426
- settingsToast: "يفتح صفحة إعدادات الأجندة. ليس جزءًا من هذا العرض.",
4427
4402
  navigation: "التنقل في الأجندة",
4428
4403
  waitingListCount_one: "قائمة الانتظار — إدخال واحد",
4429
4404
  waitingListCount_many: "قائمة الانتظار — {{count}} إدخالًا",
@@ -4481,9 +4456,7 @@ const e = {
4481
4456
  chairFull: "الاسم الكامل",
4482
4457
  chairShort: "حرفان",
4483
4458
  mapsLink: "رابط الخريطة في تفاصيل الموعد",
4484
- windowPractice: "ساعات العيادة ({{from}}–{{to}})",
4485
- tutorial: "الدليل التعليمي",
4486
- tutorialToast: "يفتح الدليل التعليمي للأجندة في الأكاديمية. ليس جزءًا من هذا العرض."
4459
+ windowPractice: "ساعات العيادة ({{from}}–{{to}})"
4487
4460
  },
4488
4461
  print: {
4489
4462
  title: "طباعة اليوم",
@@ -4497,9 +4470,6 @@ const e = {
4497
4470
  undo: "تراجع",
4498
4471
  undone: "تمت استعادة المدة"
4499
4472
  },
4500
- dialogs: {
4501
- carePlanToast: "يفتح خطة العلاج في ملف المريض. ليس جزءًا من هذا العرض."
4502
- },
4503
4473
  bookings: {
4504
4474
  title: "الحجوزات عبر الإنترنت",
4505
4475
  intro: "حجوزات آخر ثلاثين يوماً التي ما زالت تحتاج إلى مريض أو معالج.",
@@ -4554,12 +4524,6 @@ const e = {
4554
4524
  readOnly: {
4555
4525
  createBlocked: "ليست لديك صلاحية إنشاء المواعيد."
4556
4526
  },
4557
- legacy: {
4558
- patientFolder: "يفتح ملف المريض {{name}}. ليس جزءًا من هذه العروض التوضيحية.",
4559
- saveAndReturn: "تم الحفظ. في المنصة يعود المستخدم إلى خطة العلاج التي جاء منها الرابط. ليس جزءًا من هذا العرض.",
4560
- whatsapp: "يفتح نافذة قصاصات واتساب القديمة. ليس جزءًا من هذا العرض.",
4561
- signOnDevice: "يفتح نافذة التوقيع الإلكتروني القديمة — التوقيع على هذا الجهاز وتعيين الموقّع والمعالج. ليس جزءًا من هذا العرض."
4562
- },
4563
4527
  rail: {
4564
4528
  appointments: "المواعيد",
4565
4529
  appointmentsTitle: "المواعيد القادمة",