@alfadocs/ui-kit-debug 1.13.0 → 1.15.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 (194) hide show
  1. package/dist/_chunks/actions-cell-renderer-yy03OgRL.js +137 -0
  2. package/dist/_chunks/actions-cell-renderer-yy03OgRL.js.map +1 -0
  3. package/dist/_chunks/{balance-badge-cell--iQ_gtmi.js → balance-badge-cell-CgkxYO96.js} +7 -6
  4. package/dist/_chunks/{balance-badge-cell--iQ_gtmi.js.map → balance-badge-cell-CgkxYO96.js.map} +1 -1
  5. package/dist/_chunks/{calendar-B4Gnyu1C.js → calendar-CHT9Rm3M.js} +2 -2
  6. package/dist/_chunks/{calendar-B4Gnyu1C.js.map → calendar-CHT9Rm3M.js.map} +1 -1
  7. package/dist/_chunks/{calendar-event-card-Bjdbik8G.js → calendar-event-card-BjdHZaqz.js} +18 -14
  8. package/dist/_chunks/{calendar-event-card-Bjdbik8G.js.map → calendar-event-card-BjdHZaqz.js.map} +1 -1
  9. package/dist/_chunks/calendar-plus-BFrIRE4r.js +19 -0
  10. package/dist/_chunks/calendar-plus-BFrIRE4r.js.map +1 -0
  11. package/dist/_chunks/calendar-workspace-CGuY4kmv.js +7480 -0
  12. package/dist/_chunks/calendar-workspace-CGuY4kmv.js.map +1 -0
  13. package/dist/_chunks/clipboard-list-rSzfIYZB.js +25 -0
  14. package/dist/_chunks/clipboard-list-rSzfIYZB.js.map +1 -0
  15. package/dist/_chunks/{color-picker-oZ6zYks8.js → color-picker-CU303VjY.js} +4 -2
  16. package/dist/_chunks/{color-picker-oZ6zYks8.js.map → color-picker-CU303VjY.js.map} +1 -1
  17. package/dist/_chunks/data-table-DC5rO3Ty.js +1817 -0
  18. package/dist/_chunks/data-table-DC5rO3Ty.js.map +1 -0
  19. package/dist/_chunks/{field-value-DG8zaZvo.js → field-value-D-vkX9uL.js} +120 -140
  20. package/dist/_chunks/field-value-D-vkX9uL.js.map +1 -0
  21. package/dist/_chunks/{file-manager-UsD8e_AB.js → file-manager-DJMeB3V8.js} +138 -153
  22. package/dist/_chunks/file-manager-DJMeB3V8.js.map +1 -0
  23. package/dist/_chunks/folder-plus-CutOs4DP.js +22 -0
  24. package/dist/_chunks/folder-plus-CutOs4DP.js.map +1 -0
  25. package/dist/_chunks/hourglass-BEAzW1wE.js +26 -0
  26. package/dist/_chunks/hourglass-BEAzW1wE.js.map +1 -0
  27. package/dist/_chunks/{notes-panel-CymneXtl.js → notes-panel-DYAtlq_i.js} +2 -2
  28. package/dist/_chunks/{notes-panel-CymneXtl.js.map → notes-panel-DYAtlq_i.js.map} +1 -1
  29. package/dist/_chunks/{patient-details-BQaUzPqp.js → patient-details-BfzvFnxQ.js} +73 -92
  30. package/dist/_chunks/patient-details-BfzvFnxQ.js.map +1 -0
  31. package/dist/_chunks/{patient-summary-card-CvDxhbBR.js → patient-summary-card-D5Vfa321.js} +2 -2
  32. package/dist/_chunks/{patient-summary-card-CvDxhbBR.js.map → patient-summary-card-D5Vfa321.js.map} +1 -1
  33. package/dist/_chunks/{practice-results-D7ygCj_W.js → practice-results-DL_ExLYE.js} +159 -172
  34. package/dist/_chunks/practice-results-DL_ExLYE.js.map +1 -0
  35. package/dist/_chunks/{rich-text-editor-BDfFtK4H.js → rich-text-editor-DtbcA6s1.js} +2 -2
  36. package/dist/_chunks/{rich-text-editor-BDfFtK4H.js.map → rich-text-editor-DtbcA6s1.js.map} +1 -1
  37. package/dist/_chunks/signature-CpFNpsVK.js +21 -0
  38. package/dist/_chunks/signature-CpFNpsVK.js.map +1 -0
  39. package/dist/_chunks/{signature-field-0rFODJlW.js → signature-field-CEiPe-vX.js} +19 -34
  40. package/dist/_chunks/signature-field-CEiPe-vX.js.map +1 -0
  41. package/dist/_chunks/smartphone-C0rFF2if.js +15 -0
  42. package/dist/_chunks/smartphone-C0rFF2if.js.map +1 -0
  43. package/dist/_chunks/{toast.agent-D1tdg6DS.js → toast-YZz2sBzB.js} +160 -212
  44. package/dist/_chunks/toast-YZz2sBzB.js.map +1 -0
  45. package/dist/_chunks/toast.agent-DNQ0JYGv.js +56 -0
  46. package/dist/_chunks/toast.agent-DNQ0JYGv.js.map +1 -0
  47. package/dist/_chunks/{workflow-map-wcw3t6g4.js → workflow-map-dNzJjBWG.js} +103 -112
  48. package/dist/_chunks/workflow-map-dNzJjBWG.js.map +1 -0
  49. package/dist/agent-catalog.json +867 -1
  50. package/dist/agent-i18n/en.json +27 -0
  51. package/dist/components/calendar/index.js +1 -1
  52. package/dist/components/calendar-event-card/index.js +1 -1
  53. package/dist/components/color-picker/index.js +1 -1
  54. package/dist/components/data-table/index.js +39 -38
  55. package/dist/components/data-table/index.js.map +1 -1
  56. package/dist/components/file-manager/index.js +1 -1
  57. package/dist/components/index.d.ts +1 -0
  58. package/dist/components/index.d.ts.map +1 -1
  59. package/dist/components/notes-panel/index.js +1 -1
  60. package/dist/components/patient-details/index.js +1 -1
  61. package/dist/components/patient-summary-card/index.js +1 -1
  62. package/dist/components/patient-table/index.js +1 -1
  63. package/dist/components/practice-results/index.js +1 -1
  64. package/dist/components/rich-text-editor/index.js +1 -1
  65. package/dist/components/signature-field/index.js +1 -1
  66. package/dist/components/toast/index.js +7 -6
  67. package/dist/components/toast/index.js.map +1 -1
  68. package/dist/components/workflow/index.js +1 -1
  69. package/dist/i18n/locales/ar.d.ts +680 -0
  70. package/dist/i18n/locales/ar.d.ts.map +1 -1
  71. package/dist/i18n/locales/ar.js +680 -0
  72. package/dist/i18n/locales/ar.js.map +1 -1
  73. package/dist/i18n/locales/de.d.ts +680 -0
  74. package/dist/i18n/locales/de.d.ts.map +1 -1
  75. package/dist/i18n/locales/de.js +680 -0
  76. package/dist/i18n/locales/de.js.map +1 -1
  77. package/dist/i18n/locales/el.d.ts +680 -0
  78. package/dist/i18n/locales/el.d.ts.map +1 -1
  79. package/dist/i18n/locales/el.js +680 -0
  80. package/dist/i18n/locales/el.js.map +1 -1
  81. package/dist/i18n/locales/en.d.ts +680 -0
  82. package/dist/i18n/locales/en.d.ts.map +1 -1
  83. package/dist/i18n/locales/en.js +680 -0
  84. package/dist/i18n/locales/en.js.map +1 -1
  85. package/dist/i18n/locales/es.d.ts +680 -0
  86. package/dist/i18n/locales/es.d.ts.map +1 -1
  87. package/dist/i18n/locales/es.js +680 -0
  88. package/dist/i18n/locales/es.js.map +1 -1
  89. package/dist/i18n/locales/fr.d.ts +680 -0
  90. package/dist/i18n/locales/fr.d.ts.map +1 -1
  91. package/dist/i18n/locales/fr.js +680 -0
  92. package/dist/i18n/locales/fr.js.map +1 -1
  93. package/dist/i18n/locales/hi.d.ts +680 -0
  94. package/dist/i18n/locales/hi.d.ts.map +1 -1
  95. package/dist/i18n/locales/hi.js +680 -0
  96. package/dist/i18n/locales/hi.js.map +1 -1
  97. package/dist/i18n/locales/it.d.ts +680 -0
  98. package/dist/i18n/locales/it.d.ts.map +1 -1
  99. package/dist/i18n/locales/it.js +680 -0
  100. package/dist/i18n/locales/it.js.map +1 -1
  101. package/dist/i18n/locales/ja.d.ts +680 -0
  102. package/dist/i18n/locales/ja.d.ts.map +1 -1
  103. package/dist/i18n/locales/ja.js +680 -0
  104. package/dist/i18n/locales/ja.js.map +1 -1
  105. package/dist/i18n/locales/nl.d.ts +680 -0
  106. package/dist/i18n/locales/nl.d.ts.map +1 -1
  107. package/dist/i18n/locales/nl.js +680 -0
  108. package/dist/i18n/locales/nl.js.map +1 -1
  109. package/dist/i18n/locales/pl.d.ts +680 -0
  110. package/dist/i18n/locales/pl.d.ts.map +1 -1
  111. package/dist/i18n/locales/pl.js +680 -0
  112. package/dist/i18n/locales/pl.js.map +1 -1
  113. package/dist/i18n/locales/pt.d.ts +680 -0
  114. package/dist/i18n/locales/pt.d.ts.map +1 -1
  115. package/dist/i18n/locales/pt.js +680 -0
  116. package/dist/i18n/locales/pt.js.map +1 -1
  117. package/dist/i18n/locales/ro.d.ts +680 -0
  118. package/dist/i18n/locales/ro.d.ts.map +1 -1
  119. package/dist/i18n/locales/ro.js +680 -0
  120. package/dist/i18n/locales/ro.js.map +1 -1
  121. package/dist/i18n/locales/ru.d.ts +680 -0
  122. package/dist/i18n/locales/ru.d.ts.map +1 -1
  123. package/dist/i18n/locales/ru.js +680 -0
  124. package/dist/i18n/locales/ru.js.map +1 -1
  125. package/dist/i18n/locales/sq.d.ts +680 -0
  126. package/dist/i18n/locales/sq.d.ts.map +1 -1
  127. package/dist/i18n/locales/sq.js +680 -0
  128. package/dist/i18n/locales/sq.js.map +1 -1
  129. package/dist/i18n/locales/sv.d.ts +680 -0
  130. package/dist/i18n/locales/sv.d.ts.map +1 -1
  131. package/dist/i18n/locales/sv.js +680 -0
  132. package/dist/i18n/locales/sv.js.map +1 -1
  133. package/dist/i18n/locales/tr.d.ts +680 -0
  134. package/dist/i18n/locales/tr.d.ts.map +1 -1
  135. package/dist/i18n/locales/tr.js +680 -0
  136. package/dist/i18n/locales/tr.js.map +1 -1
  137. package/dist/i18n/locales/zh.d.ts +680 -0
  138. package/dist/i18n/locales/zh.d.ts.map +1 -1
  139. package/dist/i18n/locales/zh.js +680 -0
  140. package/dist/i18n/locales/zh.js.map +1 -1
  141. package/dist/index.js +821 -803
  142. package/dist/index.js.map +1 -1
  143. package/dist/locales/ar.json +680 -0
  144. package/dist/locales/de.json +680 -0
  145. package/dist/locales/el.json +680 -0
  146. package/dist/locales/en.json +680 -0
  147. package/dist/locales/es.json +680 -0
  148. package/dist/locales/fr.json +680 -0
  149. package/dist/locales/hi.json +680 -0
  150. package/dist/locales/it.json +680 -0
  151. package/dist/locales/ja.json +680 -0
  152. package/dist/locales/nl.json +680 -0
  153. package/dist/locales/pl.json +680 -0
  154. package/dist/locales/pt.json +680 -0
  155. package/dist/locales/ro.json +680 -0
  156. package/dist/locales/ru.json +680 -0
  157. package/dist/locales/sq.json +680 -0
  158. package/dist/locales/sv.json +680 -0
  159. package/dist/locales/tr.json +680 -0
  160. package/dist/locales/zh.json +680 -0
  161. package/dist/patterns/calendar/calendar-workspace.d.ts +82 -0
  162. package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -0
  163. package/dist/patterns/calendar/calendar-workspace.model.d.ts +380 -0
  164. package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -0
  165. package/dist/patterns/calendar/calendar.data.d.ts +122 -0
  166. package/dist/patterns/calendar/calendar.data.d.ts.map +1 -0
  167. package/dist/patterns/calendar/calendar.host.d.ts +10 -0
  168. package/dist/patterns/calendar/calendar.host.d.ts.map +1 -0
  169. package/dist/patterns/calendar/calendar.journey.d.ts +119 -0
  170. package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -0
  171. package/dist/patterns/calendar/calendar.model.d.ts +684 -0
  172. package/dist/patterns/calendar/calendar.model.d.ts.map +1 -0
  173. package/dist/patterns/calendar/calendar.preferences.d.ts +74 -0
  174. package/dist/patterns/calendar/calendar.preferences.d.ts.map +1 -0
  175. package/dist/patterns/calendar/calendar.sheets.d.ts +398 -0
  176. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -0
  177. package/dist/patterns/calendar/calendar.surface.d.ts +85 -0
  178. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -0
  179. package/dist/patterns/calendar/calendar.types.d.ts +413 -0
  180. package/dist/patterns/calendar/calendar.types.d.ts.map +1 -0
  181. package/dist/patterns/calendar/index.d.ts +13 -0
  182. package/dist/patterns/calendar/index.d.ts.map +1 -0
  183. package/dist/patterns/calendar/index.js +19 -0
  184. package/dist/patterns/calendar/index.js.map +1 -0
  185. package/package.json +5 -1
  186. package/dist/_chunks/actions-cell-renderer-ReurEy5i.js +0 -1945
  187. package/dist/_chunks/actions-cell-renderer-ReurEy5i.js.map +0 -1
  188. package/dist/_chunks/field-value-DG8zaZvo.js.map +0 -1
  189. package/dist/_chunks/file-manager-UsD8e_AB.js.map +0 -1
  190. package/dist/_chunks/patient-details-BQaUzPqp.js.map +0 -1
  191. package/dist/_chunks/practice-results-D7ygCj_W.js.map +0 -1
  192. package/dist/_chunks/signature-field-0rFODJlW.js.map +0 -1
  193. package/dist/_chunks/toast.agent-D1tdg6DS.js.map +0 -1
  194. package/dist/_chunks/workflow-map-wcw3t6g4.js.map +0 -1
@@ -0,0 +1,82 @@
1
+ import { type CalendarData } from './calendar.data';
2
+ import type { CalendarJourney } from './calendar.journey';
3
+ import { type CalendarPreferenceAdapter } from './calendar.preferences';
4
+ import { type EditorPrefill } from './calendar.model';
5
+ import { type CalendarWorkspaceToolId, type WorkspaceDisplaySettings } from './calendar-workspace.model';
6
+ export { WORKSPACE_TOOL, type CalendarWorkspaceToolId, } from './calendar-workspace.model';
7
+ export interface CalendarWorkspaceProps {
8
+ /** The domain state and its handlers — the host implements them. */
9
+ journey: CalendarJourney;
10
+ /** The practice's read model, stable for a page load. */
11
+ data: CalendarData;
12
+ locale?: string;
13
+ /** Host-level cog overrides. */
14
+ initialDisplay?: Partial<WorkspaceDisplaySettings>;
15
+ /** The platform's `practice_appointment_edit` right — false turns the
16
+ * page read-only (no drag, no create, details without write actions). */
17
+ permissions?: {
18
+ editAppointment?: boolean;
19
+ };
20
+ /** Deep link `focusAppointmentId`: open on the appointment's day, ring
21
+ * and scroll to its card and dock its details. */
22
+ focusAppointmentId?: string;
23
+ /** Deep link `createParameters`: arrive in CREATE mode — the banner
24
+ * stands and the next free-slot click opens the editor prefilled. */
25
+ createParameters?: {
26
+ prefill: EditorPrefill;
27
+ patientName?: string;
28
+ };
29
+ /** Deep link `freeSlotClicked`: jump to the slot and open the editor
30
+ * prefilled with it. */
31
+ freeSlot?: EditorPrefill;
32
+ /** Platform advisories the finder raises when the scheduler is empty. */
33
+ businessHours?: {
34
+ practice?: boolean;
35
+ operators?: boolean;
36
+ };
37
+ /**
38
+ * The tools this host can back with real data. Omitting one hides both
39
+ * its rail tool and the toolbar control that opens it. Defaults to all
40
+ * five.
41
+ *
42
+ * A tool a host cannot supply must not be offered: the free-slot
43
+ * finder without the practice's business hours, holidays and closures
44
+ * reports slots as free that are already booked or fall on days the
45
+ * practice is shut, and staff ring patients with them. `appointments`
46
+ * is always included — the rail docks it as its resting panel — and a
47
+ * route into a tool left out (a deep link, a panel hand-off) lands
48
+ * there instead of on an empty dock.
49
+ */
50
+ availableTools?: readonly CalendarWorkspaceToolId[];
51
+ /**
52
+ * The practice's FullCalendar Scheduler licence key, passed straight
53
+ * through to the kit `Calendar`.
54
+ *
55
+ * Chairs and operators as columns are Scheduler premium views, so a
56
+ * host that does not supply a key renders the "Your license key is
57
+ * invalid" watermark across the resource columns. The kit ships no key
58
+ * and invents no default: omit this and the grid behaves exactly as it
59
+ * did before the prop existed, falling through to whatever the
60
+ * `Calendar` component's own environment default resolves to.
61
+ */
62
+ schedulerLicenseKey?: string;
63
+ /** Where the cog's settings, the view, the weekend choice and the
64
+ * chair / operator selections are remembered — the host's per-user
65
+ * store. Defaults to the session-scoped in-memory adapter. */
66
+ preferences?: CalendarPreferenceAdapter;
67
+ /** The grid's instance id — the agent registry's handle for this
68
+ * calendar and the DOM hook anything outside React reaches it by.
69
+ * Override it only when two workspaces share one page. */
70
+ id?: string;
71
+ }
72
+ /**
73
+ * The cog's settings as the workspace opens with them: the remembered
74
+ * entry under the workspace's own key, a caller's `initialDisplay`
75
+ * winning for the keys it names. Exported so a host seeding its journey
76
+ * (row colours follow `colorAssociation`) starts from the same values
77
+ * the workspace will show.
78
+ */
79
+ export declare function initialWorkspaceDisplay(initialDisplay: Partial<WorkspaceDisplaySettings> | undefined, preferences?: CalendarPreferenceAdapter): WorkspaceDisplaySettings;
80
+ /** The workspace root: the read model, then the rail scope, then the page. */
81
+ export declare function CalendarWorkspace({ data, ...props }: CalendarWorkspaceProps): import("react/jsx-runtime").JSX.Element;
82
+ //# sourceMappingURL=calendar-workspace.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-workspace.d.ts","sourceRoot":"","sources":["../../../src/patterns/calendar/calendar-workspace.tsx"],"names":[],"mappings":"AAkEA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAM1D,OAAO,EAEL,KAAK,yBAAyB,EAG/B,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAGL,KAAK,aAAa,EAYnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,uBAAuB,EAK5B,KAAK,wBAAwB,EAiB9B,MAAM,4BAA4B,CAAC;AAqBpC,OAAO,EACL,cAAc,EACd,KAAK,uBAAuB,GAC7B,MAAM,4BAA4B,CAAC;AAwvBpC,MAAM,WAAW,sBAAsB;IACrC,oEAAoE;IACpE,OAAO,EAAE,eAAe,CAAC;IACzB,yDAAyD;IACzD,IAAI,EAAE,YAAY,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,cAAc,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;IACnD;8EAC0E;IAC1E,WAAW,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5C;uDACmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;0EACsE;IACtE,gBAAgB,CAAC,EAAE;QAAE,OAAO,EAAE,aAAa,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE;6BACyB;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,yEAAyE;IACzE,aAAa,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC5D;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACpD;;;;;;;;;;OAUG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;mEAE+D;IAC/D,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC;;+DAE2D;IAC3D,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAAG,SAAS,EAC7D,WAAW,GAAE,yBAAmD,GAC/D,wBAAwB,CAK1B;AAED,8EAA8E;AAC9E,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,sBAAsB,2CAQ3E"}
@@ -0,0 +1,380 @@
1
+ /**
2
+ * Calendar demo, Increment 1 — the pure model the rail-hosted surface
3
+ * adds on top of `calendar.model.ts`: the four-way range view with its
4
+ * keyboard shortcuts, the extended display settings (default duration,
5
+ * name display, map link), the practice-hours time axis, the platform's
6
+ * filter semantics (nothing ticked = everyone) and the split-button
7
+ * badge count. No React, no i18n lookups. Every read of practice data
8
+ * goes through the explicit `data: CalendarData` parameter.
9
+ */
10
+ import type { AppointmentItem } from '../../components/appointment-card';
11
+ import type { CalendarResource } from '../../components/calendar';
12
+ import type { CalendarData } from './calendar.data';
13
+ import type { CalendarPatient, CalendarWaitingEntry } from './calendar.types';
14
+ import { type CalendarRow, type DisplaySettings, type EditorDraft, type EditorPrefill, type WaitingQuickView } from './calendar.model';
15
+ export declare const WORKSPACE_TOOL: {
16
+ readonly appointments: "appointments";
17
+ readonly editor: "appointment-editor";
18
+ readonly waitingList: "waiting-list";
19
+ readonly bookings: "online-bookings";
20
+ readonly findSlots: "find-slots";
21
+ };
22
+ /** One of the workspace rail's five tools. */
23
+ export type CalendarWorkspaceToolId = (typeof WORKSPACE_TOOL)[keyof typeof WORKSPACE_TOOL];
24
+ /** Strip order — the order the rail registers the tools in, and the
25
+ * order a host's `availableTools` is normalised back to. */
26
+ export declare const ALL_WORKSPACE_TOOLS: readonly CalendarWorkspaceToolId[];
27
+ /**
28
+ * Which tools this host can back with real data, as a membership set.
29
+ *
30
+ * Appointments is forced in whatever the caller asked for: the rail
31
+ * docks it as its resting panel, so leaving it out would leave an empty
32
+ * dock rather than a smaller rail. An id the kit does not know is
33
+ * ignored rather than thrown on — a host on a newer contract than the
34
+ * kit it mounts must not crash the agenda.
35
+ */
36
+ export declare function resolveAvailableTools(requested: readonly string[]): ReadonlySet<CalendarWorkspaceToolId>;
37
+ /** The platform's four ranges; "Working week" became the Show-weekends
38
+ * item, so it is no longer a view of its own. */
39
+ export type WorkspaceViewId = 'day' | 'threeDays' | 'week' | 'month';
40
+ export declare const WORKSPACE_VIEWS: readonly WorkspaceViewId[];
41
+ /** CalendarView stem per range — composed with the column axis. */
42
+ export declare const WORKSPACE_VIEW_STEM: Record<WorkspaceViewId, 'Day' | 'ThreeDays' | 'Week' | 'Month'>;
43
+ /** Google-Calendar-style single-key shortcuts (X = 3 days, as GCal). */
44
+ export declare const VIEW_SHORTCUT_KEYS: Record<WorkspaceViewId, string>;
45
+ export declare const readWorkspaceViewId: (raw: unknown) => WorkspaceViewId | undefined;
46
+ /** The range a bare key press selects, case-insensitive; undefined when
47
+ * the key is not a shortcut. */
48
+ export declare function viewForShortcutKey(key: string): WorkspaceViewId | undefined;
49
+ export declare function shortcutAllowedOn(target: EventTarget | null): boolean;
50
+ /** The keydown shape the shortcut resolver reads — a subset of
51
+ * KeyboardEvent so tests can pass plain objects. */
52
+ export interface ShortcutKeydown {
53
+ key: string;
54
+ altKey: boolean;
55
+ ctrlKey: boolean;
56
+ metaKey: boolean;
57
+ shiftKey: boolean;
58
+ repeat: boolean;
59
+ defaultPrevented: boolean;
60
+ target: EventTarget | null;
61
+ }
62
+ /** The range a page-level keydown switches to, or undefined when the
63
+ * press must be left alone (modifier, auto-repeat, typing, an open
64
+ * menu or dialog, already handled). */
65
+ export declare function shortcutViewForKeydown(event: ShortcutKeydown): WorkspaceViewId | undefined;
66
+ /** Weekend visibility is a per-user choice now (platform hidden days):
67
+ * off hides Saturday and Sunday in every range view. */
68
+ export declare function weekendHiddenDays(showWeekends: boolean): number[];
69
+ export type OperatorNameDisplay = 'full' | 'initials';
70
+ export type ChairNameDisplay = 'full' | 'short';
71
+ export interface WorkspaceDisplaySettings extends DisplaySettings {
72
+ /** The per-user default appointment length (platform 30). */
73
+ defaultDurationMin: number;
74
+ /** Column header treatment for people: dot + name, or initials disc. */
75
+ operatorNameDisplay: OperatorNameDisplay;
76
+ /** Column header treatment for chairs: full name or the short code. */
77
+ chairNameDisplay: ChairNameDisplay;
78
+ /** Show the Google Maps link in the appointment details. */
79
+ mapsLink: boolean;
80
+ }
81
+ export declare const DEFAULT_DURATION_RANGE: {
82
+ readonly min: 5;
83
+ readonly max: 240;
84
+ readonly step: 5;
85
+ };
86
+ export declare const DEFAULT_WORKSPACE_DISPLAY: WorkspaceDisplaySettings;
87
+ /** Remembered Increment 1 display settings, validated per field over the
88
+ * Increment 1 defaults (a Final State shape keeps every knob it knows). */
89
+ export declare function readWorkspaceDisplaySettings(raw: unknown): WorkspaceDisplaySettings | undefined;
90
+ /** Earliest opening and latest closing across the practice's week —
91
+ * the platform's `openingTime` / `closingTime` for the time axis. */
92
+ export declare function practiceDayWindow(data: CalendarData): {
93
+ min: string;
94
+ max: string;
95
+ };
96
+ /** The axis for a cog window: `working` is the practice's own hours;
97
+ * extended and full stay the Final State overrides. */
98
+ export declare function workspaceDayWindow(window: DisplaySettings['window'], data: CalendarData): {
99
+ min: string;
100
+ max: string;
101
+ };
102
+ /** The ids a selection shows: the ticked ones, or all when none is. */
103
+ export declare function effectiveIds(selected: readonly string[], all: readonly string[]): string[];
104
+ /** Tick or untick `ids` in a selection (a row or a whole group). */
105
+ export declare function toggleSelectedIds(prev: readonly string[], ids: readonly string[], checked: boolean | 'indeterminate'): string[];
106
+ /** What the Reset chip counts: every ticked chair and operator. */
107
+ export declare function activeFilterCount(selectedChairIds: readonly string[], selectedOperatorIds: readonly string[]): number;
108
+ /**
109
+ * Disabled operators holding at least one appointment that STARTS inside
110
+ * the visible range — the platform's carve-out
111
+ * (`NewCalendar/Library.js`: `isActive(op) || hasAppointments(op)`).
112
+ * Their column stands whatever the "Show disabled operators" switch
113
+ * says, so hiding the operator can never hide an appointment.
114
+ */
115
+ export declare function bookedDisabledOperatorIds(rows: readonly CalendarRow[], inactiveIds: readonly string[], range: {
116
+ start: number;
117
+ end: number;
118
+ } | null): string[];
119
+ /**
120
+ * The operators the grid may give a column to when NOTHING is ticked:
121
+ * every active one, the disabled ones while the switch reveals them, and
122
+ * any disabled operator the carve-out keeps. An explicit selection still
123
+ * wins over all three (platform: `kept.filter(selected)`).
124
+ */
125
+ export declare function columnableOperatorIds(args: {
126
+ operators: readonly CalendarResource[];
127
+ inactiveIds: readonly string[];
128
+ showDisabled: boolean;
129
+ keepIds: readonly string[];
130
+ }): string[];
131
+ /** The operators the filter list offers — disabled ones only once the
132
+ * session switch reveals them (the carve-out is a column, not a row). */
133
+ export declare function listedOperators(operators: readonly CalendarResource[], inactiveIds: readonly string[], showDisabled: boolean): CalendarResource[];
134
+ /** Chair column label per the cog: the full name, or the fixture's short
135
+ * code (the platform's "first two letters" setting). */
136
+ export declare function chairResourceTitle(chair: CalendarResource, mode: ChairNameDisplay): string;
137
+ /** Operator column label: the plain name, or the name plus the muted
138
+ * Disabled marker when the practice has disabled them. The kit Calendar
139
+ * renders a resource header from its `title`, so the marker rides
140
+ * there — and reaches the Avatar's accessible name under initials. */
141
+ export declare function operatorResourceTitle(operator: CalendarResource, isDisabled: boolean, disabledLabel: string): string;
142
+ /** Whole minutes between two instants — the resize toast's figure. */
143
+ export declare function minutesBetween(start: Date | string, end: Date | string): number;
144
+ /** Re-ends one appointment. The resize path writes through this twice —
145
+ * once for the drag, once for the Undo that restores the old end — so
146
+ * the two can never drift apart. */
147
+ export declare function rowsWithEnd(rows: readonly CalendarRow[], eventId: string, end: Date): CalendarRow[];
148
+ /** The platform's recurring-mode chooser (move, delete, save on edit). */
149
+ export type RecurringScope = 'this' | 'following' | 'all';
150
+ export declare const RECURRING_SCOPES: readonly RecurringScope[];
151
+ /** Literal map (not a template) so key extractors see every key. */
152
+ export declare const RECURRING_SCOPE_LABEL_KEY: Record<RecurringScope, string>;
153
+ /** How the create form asks for the required documents' signature. */
154
+ export type RequiredDocsSignMode = 'sms' | 'email' | 'none';
155
+ /** What the editor reports beside the draft — the platform-only choices
156
+ * the shared `EditorDraft` never needed. */
157
+ export interface EditorDraftExtras {
158
+ recurringSaveMode?: RecurringScope;
159
+ requiredDocsSignMode?: RequiredDocsSignMode;
160
+ branchId?: string;
161
+ }
162
+ /** Delete confirmation choices — the recurring scope and, for a
163
+ * price-list recurrence parent, the care-plan cleanup. */
164
+ export interface DeleteOptions {
165
+ scope: RecurringScope;
166
+ removeFromCarePlan?: boolean;
167
+ }
168
+ /** The occurrences a scope names, in series order — the event itself
169
+ * for `this`, it and its later occurrences for `following`, the whole
170
+ * series for `all`. A row outside a series only ever names itself. */
171
+ export declare function seriesScopeEventIds(rows: readonly CalendarRow[], eventId: string, scope: RecurringScope): string[];
172
+ /** Every timed appointment overlapping `[start, end)` — cancelled and
173
+ * absent ones, tasks, washes and the row itself never count (platform
174
+ * busy check). */
175
+ export declare function slotConflicts(rows: readonly CalendarRow[], slot: {
176
+ start: Date;
177
+ end: Date;
178
+ chairId?: string;
179
+ operatorId?: string;
180
+ excludeEventId?: string;
181
+ }): {
182
+ chairBusy: boolean;
183
+ operatorBusy: boolean;
184
+ };
185
+ /** Devices the chosen cares need, deduplicated, in care order. */
186
+ export declare function devicesForCares(cares: readonly {
187
+ careId?: string;
188
+ }[] | undefined, devicesByCare: Readonly<Record<string, readonly string[]>>): string[];
189
+ /** Which sign channels a patient can take a request on. */
190
+ export declare function signChannelsFor(patient: CalendarPatient | undefined): {
191
+ sms: boolean;
192
+ email: boolean;
193
+ };
194
+ /** The platform's default: SMS when the patient can take one, else
195
+ * email, else nothing. */
196
+ export declare function defaultSignMode(patient: CalendarPatient | undefined): RequiredDocsSignMode;
197
+ /** Google Maps search for the patient's address — the popover's map link. */
198
+ export declare function patientMapsUrl(patient: CalendarPatient): string;
199
+ /** A CREATE mode armed by a deep link (`createParameters`) or the
200
+ * Backlog's Schedule: the next empty-slot click opens the editor with
201
+ * this context already filled in (platform `_switchMode('create')`). */
202
+ export interface CreateModeRequest {
203
+ tick: number;
204
+ prefill: EditorPrefill;
205
+ /** Named in the banner when the context carries a patient. */
206
+ patientName?: string;
207
+ }
208
+ /** Legible ink for a mode banner tinted with an appointment colour. The
209
+ * Google palette ships no text colour, so the pair is settled by the
210
+ * kit's own contrast maths rather than by eye. */
211
+ export declare function bannerTextColor(backgroundHex?: string): string | undefined;
212
+ /** A Move… or Copy… armed from the details dialog: the next empty-slot
213
+ * click places the source appointment there. */
214
+ export interface PlacementRequest {
215
+ kind: 'move' | 'copy';
216
+ eventId: string;
217
+ /** Copy only — carry the linked treatments along (platform's two copies). */
218
+ withTreatments?: boolean;
219
+ /** Armed from a waiting-list Reschedule — the entry leaves the queue
220
+ * once the move lands (platform parity). */
221
+ waitingEntryId?: string;
222
+ }
223
+ /** The platform's "Copia & incolla": the same appointment on a new slot
224
+ * with a fresh id — never a series member, treatments only on request.
225
+ * An all-day source stays all-day on the target date. */
226
+ export declare function copyRowAt(source: CalendarRow, target: {
227
+ start: Date;
228
+ resourceId?: string;
229
+ axisKind: DisplaySettings['resourceKind'];
230
+ }, id: string, withTreatments: boolean): CalendarRow;
231
+ /** Apply an edit saved with "this and following" / "all" to the other
232
+ * occurrences: each keeps its own day shifted by the same delta as the
233
+ * edited one, and takes the edited duration, allocation, colour, status,
234
+ * type and description. */
235
+ export declare function applySeriesEdit(rows: readonly CalendarRow[], primaryPrev: CalendarRow, draft: EditorDraft, siblingIds: readonly string[], data: CalendarData): CalendarRow[];
236
+ /** What the post-save toast needs to decide whether the saved
237
+ * appointment is on screen: its day and its allocation. */
238
+ export interface SaveNotice {
239
+ tick: number;
240
+ date: Date;
241
+ chairId?: string;
242
+ operatorId?: string;
243
+ }
244
+ /** Why a saved appointment is not on the grid right now — empty when it
245
+ * is visible. The "Go to" action undoes exactly these. */
246
+ export declare function hiddenReasons(notice: Pick<SaveNotice, 'date' | 'chairId' | 'operatorId'>, view: {
247
+ visibleRange: {
248
+ start: number;
249
+ end: number;
250
+ } | null;
251
+ hiddenDays: readonly number[];
252
+ selectedChairIds: readonly string[];
253
+ selectedOperatorIds: readonly string[];
254
+ }): Array<'range' | 'weekend' | 'chair' | 'operator'>;
255
+ /**
256
+ * The platform DASHBOARD widget's window (`upcomingAppointmentsAction`):
257
+ * NOW → `forwardDays` later at 23:59:59.999, cancelled excluded, date
258
+ * ascending, no row limit. `backDays` is 0 at rest — the kit timeline's
259
+ * presets and its edge loaders widen the derived window in place of a
260
+ * fetch, so the panel can look further than the platform's seven days.
261
+ */
262
+ export interface UpcomingWindow {
263
+ /** Days of history the panel has been widened to; 0 starts at NOW. */
264
+ backDays: number;
265
+ /** Days ahead — the platform's seven at rest. */
266
+ forwardDays: number;
267
+ }
268
+ /** Platform default: now to the end of the seventh day. */
269
+ export declare const UPCOMING_FORWARD_DAYS = 7;
270
+ /** How far one widening step reaches at either edge. */
271
+ export declare const UPCOMING_STEP_DAYS = 7;
272
+ /** Where the widening stops — the demo's own ceiling, not the platform's. */
273
+ export declare const UPCOMING_MAX_DAYS = 180;
274
+ export declare const DEFAULT_UPCOMING_WINDOW: UpcomingWindow;
275
+ /** Epoch bounds of a window, inclusive of its closing second. */
276
+ export declare function upcomingWindowBounds(nowIso: string, window: UpcomingWindow): {
277
+ startMs: number;
278
+ endMs: number;
279
+ };
280
+ /** One widening step at either edge, capped at the ceiling. */
281
+ export declare function widenUpcomingWindow(window: UpcomingWindow, edge: 'earlier' | 'later'): UpcomingWindow;
282
+ /** Widen just far enough to reach `targetIso` — the timeline's presets and
283
+ * its jump-to-date land on days the default seven never covered. */
284
+ export declare function upcomingWindowCovering(window: UpcomingWindow, nowIso: string, targetIso: string): UpcomingWindow;
285
+ /**
286
+ * The rows the widget lists: appointments starting inside the window,
287
+ * cancelled excluded, date ascending. Background washes and the composing
288
+ * draft never qualify; tasks are already out of the Increment 1 feed.
289
+ */
290
+ export declare function upcomingAppointmentRows(rows: CalendarRow[], bounds: {
291
+ startMs: number;
292
+ endMs: number;
293
+ }): CalendarRow[];
294
+ /** One agenda row as the kit timeline's item — identity, allocation and
295
+ * care lines; the row id stays the event id so a click maps straight
296
+ * back onto the grid. */
297
+ export declare function upcomingAppointmentItem(row: CalendarRow, privacy: boolean, data: CalendarData): AppointmentItem;
298
+ /** How far back the platform's booking query looks, on `createdAt`. */
299
+ export declare const ONLINE_BOOKINGS_WINDOW_DAYS = 30;
300
+ /**
301
+ * Bookings still to check: created online (or through the API) within
302
+ * the last 30 days, not cancelled, and still missing a patient OR an
303
+ * operator. Mirrors the repository query behind the platform's alert
304
+ * strip; Increment 1 renders the same count on a toolbar button.
305
+ */
306
+ export declare function onlineBookingsToCheck(rows: readonly CalendarRow[], data: CalendarData): CalendarRow[];
307
+ /**
308
+ * One row of the platform's "Prenotazioni online" page, which Increment 1
309
+ * hosts in the rail instead of sending the user to a separate page.
310
+ * Columns mirror it: when it was booked, what was asked for, whether it
311
+ * was paid online, and what is still missing before it is a real
312
+ * appointment.
313
+ */
314
+ export interface BookingRowView {
315
+ row: CalendarRow;
316
+ eventId: string;
317
+ /** The appointment's own start. */
318
+ start: Date;
319
+ /** Platform `createdAt` — "del <date>" under the appointment date. */
320
+ bookedAt: Date | null;
321
+ /** The booking reason, or the platform's "Non specificato". */
322
+ reason: string | null;
323
+ chairTitle: string | null;
324
+ /** Stripe amount when the patient paid at booking. */
325
+ paidOnline: number | null;
326
+ needsPatient: boolean;
327
+ needsOperator: boolean;
328
+ /** Booked after the user last opened the page — the "(Nuovo)" marker. */
329
+ isNew: boolean;
330
+ }
331
+ /** Bookings made after this instant carry the platform's "(Nuovo)" tag. */
332
+ export declare const DEFAULT_BOOKINGS_LAST_SEEN_ISO = "2026-06-23T00:00:00";
333
+ export declare function bookingRowView(row: CalendarRow, data: CalendarData, lastSeenMs?: number): BookingRowView;
334
+ /** The nine advanced inputs, all optional. Empty = the input is unset;
335
+ * `operatorId` also accepts `NONE`, the platform's "no operator". */
336
+ export interface WaitingListFilters {
337
+ patientId: string;
338
+ patientAssigned: '' | 'yes' | 'no';
339
+ operatorId: string;
340
+ appointmentScheduled: '' | 'yes' | 'no';
341
+ appointmentFrom?: Date;
342
+ appointmentTo?: Date;
343
+ waitingFrom?: Date;
344
+ waitingTo?: Date;
345
+ description: string;
346
+ }
347
+ export declare const EMPTY_WAITING_FILTERS: WaitingListFilters;
348
+ /** How many of the nine inputs carry a value — the toggle's badge. */
349
+ export declare function waitingFiltersActiveCount(filters: WaitingListFilters): number;
350
+ /**
351
+ * One waiting row resolved the way the platform's serializer resolves
352
+ * it: the entry's OWN patient, the linked appointment with its patient,
353
+ * care line and colour, and the operator default. `noConnection` is the
354
+ * platform's "Nessun collegamento" test — none of the four is present.
355
+ */
356
+ export interface WaitingListRowView {
357
+ entry: CalendarWaitingEntry;
358
+ /** Platform `patientId` / `patientName` / `patientPhoneNumber`. */
359
+ patient?: CalendarPatient;
360
+ /** The linked appointment, live from the grid's rows. */
361
+ appointment?: CalendarRow;
362
+ /** Platform `appointmentPatientId` — the linked appointment's patient. */
363
+ appointmentPatient?: CalendarPatient;
364
+ /** Platform `operatorName`. */
365
+ operatorTitle?: string;
366
+ /** Platform `appointmentName` — the linked appointment's care line. */
367
+ appointmentName?: string;
368
+ noConnection: boolean;
369
+ }
370
+ export declare function waitingListRowView(entry: CalendarWaitingEntry, rows: readonly CalendarRow[], data: CalendarData): WaitingListRowView;
371
+ /**
372
+ * The platform's advanced predicates, in its own order. A patient
373
+ * matches the entry's OWN patient or the linked appointment's; the
374
+ * operator and the description only ever read the ENTRY's own fields.
375
+ */
376
+ export declare function waitingEntryMatchesFilters(view: WaitingListRowView, filters: WaitingListFilters, data: CalendarData): boolean;
377
+ /** The quick view first, then the advanced predicates — the platform's
378
+ * own order (`_filterForAdvancedSearch` re-runs the view). */
379
+ export declare function filterWaitingEntries(entries: readonly CalendarWaitingEntry[], rows: readonly CalendarRow[], quickView: WaitingQuickView, filters: WaitingListFilters, data: CalendarData): WaitingListRowView[];
380
+ //# sourceMappingURL=calendar-workspace.model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar-workspace.model.d.ts","sourceRoot":"","sources":["../../../src/patterns/calendar/calendar-workspace.model.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Calendar pattern — the READ MODEL the host supplies, stable for a page
3
+ * load: the practice's resources, catalogue, agenda extras and lookups.
4
+ * It mirrors what the demo once read straight from its fixture module —
5
+ * one property per constant, one method per fixture-backed helper — so
6
+ * the demos hand in their fixtures and the platform island hands in what
7
+ * `/internalApi/...` returned, and the model, panels and surface compute
8
+ * from either without knowing which.
9
+ *
10
+ * Provided once with `<CalendarDataProvider value={data}>`; components
11
+ * read it with `useCalendarData()`, pure model functions take it as an
12
+ * explicit `data` parameter — never a module-level global.
13
+ *
14
+ * Every REQUIRED member is one the shipped runtime actually reads. The
15
+ * handful marked optional are read only by the story-only Final State
16
+ * demo (`src/patterns/demos/calendar/`), which keeps supplying them; a
17
+ * platform host mounting `CalendarWorkspace` can leave them out.
18
+ */
19
+ import { type ReactNode } from 'react';
20
+ import type { CalendarResource } from '../../components/calendar';
21
+ import type { AppointmentItem } from '../../components/appointment-card';
22
+ import type { NotesPanelNote } from '../../components/notes-panel';
23
+ import type { TasksPanelItem } from '../../components/tasks-panel';
24
+ import type { CalendarAppointmentMeta, CalendarBaseEvent, CalendarBookingContact, CalendarBranch, CalendarBusinessHours, CalendarCare, CalendarCareEntry, CalendarCareLink, CalendarCarePlan, CalendarClosure, CalendarHistoryEntry, CalendarHoliday, CalendarOperatorGroup, CalendarPatient, CalendarPracticeFeatures, CalendarPriceList, CalendarTaskDetail, CalendarWaitingEntry } from './calendar.types';
25
+ export interface CalendarData {
26
+ chairs: readonly CalendarResource[];
27
+ operators: readonly CalendarResource[];
28
+ /** Operator groups (platform `OperatorGroup`) for the grouped filter. */
29
+ operatorGroups: readonly CalendarOperatorGroup[];
30
+ /** Operators the practice has disabled (platform `isActive === false`). */
31
+ inactiveOperatorIds: readonly string[];
32
+ /** Operator id → local ISO dates the operator is away. */
33
+ operatorAbsences: Record<string, readonly string[]>;
34
+ /** Operator id → absence display title (a sibling map, optional per operator). */
35
+ operatorAbsenceTitles: Record<string, string>;
36
+ holidays: readonly CalendarHoliday[];
37
+ /** Practice-closed local ISO dates. */
38
+ closedDates: readonly string[];
39
+ /** JS `getDay()` numbers the practice does not work. Optional: the
40
+ * shipped workspace derives its hidden days from `businessHours` and
41
+ * the weekend toggle; only the Final State demo reads this. */
42
+ nonWorkingDays?: readonly number[];
43
+ businessHours: CalendarBusinessHours;
44
+ /** The clock every relative label and ledger stamp is pinned to. */
45
+ nowIso: string;
46
+ /** The date the calendar opens on. */
47
+ initialDateIso: string;
48
+ cares: readonly CalendarCare[];
49
+ priceLists: readonly CalendarPriceList[];
50
+ /** Optional: no shipped code reads the flat list — the panels go
51
+ * through `carePlanById` / `openCarePlansForPatient`. */
52
+ carePlans?: readonly CalendarCarePlan[];
53
+ patients: readonly CalendarPatient[];
54
+ /** The appointments and tasks as the host loaded them, no resource axis. */
55
+ baseEvents: readonly CalendarBaseEvent[];
56
+ /** Event id → appointment extras (patient, operator, chair, care, billing). */
57
+ metaById: Record<string, CalendarAppointmentMeta>;
58
+ /** Event id → the note the patient left on the online booking form. */
59
+ bookingNotes: Record<string, string>;
60
+ /** Event id → what the person typed on the booking website. */
61
+ bookingContacts: Record<string, CalendarBookingContact>;
62
+ /** Task-event id → its chair / operator axis (tasks carry no meta).
63
+ * Optional: the shipped workspace drops tasks at the feed boundary;
64
+ * only the Final State demo, which shows them, reads this. */
65
+ taskAxis?: Record<string, {
66
+ chairId: string;
67
+ operatorId: string;
68
+ }>;
69
+ /** Event id → platform-shaped task detail. */
70
+ taskDetails: Record<string, CalendarTaskDetail>;
71
+ /** The waiting list as loaded — the journey seeds its state from it. */
72
+ waitingList: readonly CalendarWaitingEntry[];
73
+ /** Event id → the modification ledger as loaded. Optional: the
74
+ * workspace reads the ledger off `CalendarJourney.history`, which the
75
+ * host seeds however it likes. */
76
+ appointmentHistory?: Record<string, CalendarHistoryEntry[]>;
77
+ practiceFeatures: CalendarPracticeFeatures;
78
+ branches: readonly CalendarBranch[];
79
+ /** Care id → the medical devices it needs. */
80
+ careDevices: Readonly<Record<string, readonly string[]>>;
81
+ /** Patient id → required documents still unsigned. */
82
+ unsignedRequiredDocs: Readonly<Record<string, number>>;
83
+ /** Patients with an advanced e-signature (AES) setup. */
84
+ patientsWithAes: ReadonlySet<string>;
85
+ /** Appointment id → the deposit paid online when booking. */
86
+ paidOnline: Readonly<Record<string, number>>;
87
+ /** Appointment id → the phone typed on the booking site. */
88
+ bookingPhones: Readonly<Record<string, string>>;
89
+ patientById(id: string): CalendarPatient | undefined;
90
+ patientNotes(patientId: string): NotesPanelNote[];
91
+ patientAppointments(patientId: string): AppointmentItem[];
92
+ patientTasks(patientId: string): TasksPanelItem[];
93
+ careById(id: string): CalendarCare | undefined;
94
+ carePlanById(id: string): CalendarCarePlan | undefined;
95
+ /** Optional: no shipped code calls it — the editor links through
96
+ * `openCarePlansForPatient`, the details panel through
97
+ * `carePlanById`. */
98
+ carePlansForPatient?(patientId: string): CalendarCarePlan[];
99
+ /** Plans the editor may link to: not discarded or closed, with undone lines. */
100
+ openCarePlansForPatient(patientId: string): CalendarCarePlan[];
101
+ /** The care entries a link resolves to — plan lines in plan order, or
102
+ * the price-list picks. Unknown ids are dropped. */
103
+ careEntriesFromLink(link: CalendarCareLink): CalendarCareEntry[];
104
+ /** Closed dates plus holidays, unless the practice stays open on them. */
105
+ practiceClosedOn(dateIso: string): boolean;
106
+ /** Why a date (or, given an operator, that column) cannot take a
107
+ * booking — closed > holiday > absence; null when it can. */
108
+ closureOn(dateIso: string, operatorId?: string): CalendarClosure | null;
109
+ /** Local dates in [from, to] with practice hours that are neither
110
+ * closed nor a holiday. */
111
+ openDatesBetween(from: Date, to: Date): string[];
112
+ /** Waiting-since instant for an entry (platform `createdAt`). */
113
+ waitingSinceIso(entry: CalendarWaitingEntry): string;
114
+ }
115
+ /** Wrap whatever renders the calendar's panels and surface — one provider
116
+ * per subtree is fine (a rail renders its panels outside the page tree). */
117
+ export declare function CalendarDataProvider({ value, children, }: {
118
+ value: CalendarData;
119
+ children?: ReactNode;
120
+ }): import("react").FunctionComponentElement<import("react").ProviderProps<CalendarData | null>>;
121
+ export declare function useCalendarData(): CalendarData;
122
+ //# sourceMappingURL=calendar.data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.data.d.ts","sourceRoot":"","sources":["../../../src/patterns/calendar/calendar.data.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export type SheetId = 'appointment-editor' | 'appointment-details' | 'find-slots' | 'backlog' | 'patient-care-plan';
2
+ export interface SheetHostContext {
3
+ open(id: SheetId): void;
4
+ close(): void;
5
+ }
6
+ /** Wrap whatever renders the panels and the surface — one provider per
7
+ * subtree is fine (a rail renders its panels outside the page tree). */
8
+ export declare const SheetHostProvider: import("react").Provider<SheetHostContext | null>;
9
+ export declare function useSheetHost(): SheetHostContext;
10
+ //# sourceMappingURL=calendar.host.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.host.d.ts","sourceRoot":"","sources":["../../../src/patterns/calendar/calendar.host.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,OAAO,GACf,oBAAoB,GACpB,qBAAqB,GACrB,YAAY,GACZ,SAAS,GACT,mBAAmB,CAAC;AAExB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,KAAK,IAAI,IAAI,CAAC;CACf;AAID;yEACyE;AACzE,eAAO,MAAM,iBAAiB,mDAAiC,CAAC;AAEhE,wBAAgB,YAAY,IAAI,gBAAgB,CAM/C"}