@alfadocs/ui-kit 0.69.0 → 0.70.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 (261) hide show
  1. package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
  2. package/dist/_chunks/{agenda-tray-g0kg7HwB.js → agenda-tray-CGXRk58j.js} +2 -2
  3. package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js → ai-consent-banner-Be-h9mRI.js} +3 -3
  4. package/dist/_chunks/ai-tools-rail-B5NEghsp.js +511 -0
  5. package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
  6. package/dist/_chunks/{anamnesis-card-DRmE24OQ.js → anamnesis-card-DvYCa16e.js} +2 -2
  7. package/dist/_chunks/anatomy-scheme-CJB6dI6p.js +2445 -0
  8. package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
  9. package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
  10. package/dist/_chunks/appointment-card-C06aZqA7.js +310 -0
  11. package/dist/_chunks/appointment-timeline-BJM0S_Fg.js +386 -0
  12. package/dist/_chunks/appointment-tray-DRRw5ROi.js +193 -0
  13. package/dist/_chunks/{audio-recorder-DYXXnGug.js → audio-recorder-Cpdk5qpQ.js} +2 -2
  14. package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
  15. package/dist/_chunks/{bishop-score-PJI3AXzA.js → bishop-score-DnYWtZa_.js} +2 -2
  16. package/dist/_chunks/{bmi-calculator-BZtIJ53x.js → bmi-calculator-zjeY4E7J.js} +2 -2
  17. package/dist/_chunks/{booking-C3VqFReX.js → booking-DUBI0oqt.js} +4 -4
  18. package/dist/_chunks/{care-plan-card-CvFGXa2z.js → care-plan-card-C5sTfY9G.js} +5 -5
  19. package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js → care-plan-entry-card-CXnxGCWA.js} +5 -5
  20. package/dist/_chunks/care-plan-header-BUwqDTtz.js +206 -0
  21. package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
  22. package/dist/_chunks/{contact-profile-card-Dramqa9C.js → contact-profile-card-DDPwRFiP.js} +2 -2
  23. package/dist/_chunks/control-room-rail-Y8ryLYsP.js +229 -0
  24. package/dist/_chunks/{cycle-calculator-DmRGJNaT.js → cycle-calculator-CCmPwcBl.js} +2 -2
  25. package/dist/_chunks/{dependent-selector-CG_FOHya.js → dependent-selector-DUV4thxX.js} +2 -2
  26. package/dist/_chunks/{document-scanner-CTubA0-N.js → document-scanner-C_AxLooF.js} +3 -3
  27. package/dist/_chunks/{due-date-calculator-BTmsIQqD.js → due-date-calculator-Brdj-euS.js} +3 -3
  28. package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js +328 -0
  29. package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
  30. package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-9_62gY7l.js} +38 -20
  31. package/dist/_chunks/entity-summary-BxRjFh_4.js +138 -0
  32. package/dist/_chunks/{fetal-weight-CRz7KE2D.js → fetal-weight-DNCkyeVo.js} +2 -2
  33. package/dist/_chunks/field-value-NXYczdpO.js +415 -0
  34. package/dist/_chunks/{file-upload-5ScQd4fE.js → file-upload-DwZcAK8D.js} +2 -1
  35. package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js → freemium-paywall-WYlNO7yT.js} +2 -2
  36. package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js → gestational-age-calculator-CF2ISaYQ.js} +3 -3
  37. package/dist/_chunks/hash-CysBBS_N.js +17 -0
  38. package/dist/_chunks/{hcg-doubling-CnjDXX6U.js → hcg-doubling-C7bmuaU3.js} +2 -2
  39. package/dist/_chunks/{actions-cell-renderer-DrcaxB0w.js → link-cell-renderer-CTXqtXV-.js} +715 -592
  40. package/dist/_chunks/lock-CKOIn0IK.js +15 -0
  41. package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js → marketplace-app-shell-Skhfp6vK.js} +3 -3
  42. package/dist/_chunks/notes-panel-ay8_lPrA.js +158 -0
  43. package/dist/_chunks/{notification-card-BiESdm8q.js → notification-card-D2jiKSJJ.js} +27 -23
  44. package/dist/_chunks/{notification-tray-Btb9oQeZ.js → notification-tray-AEun6DN2.js} +2 -2
  45. package/dist/_chunks/{operator-hero-CP2Nhupm.js → operator-hero-CR0Rqh4-.js} +3 -3
  46. package/dist/_chunks/patient-details-Dlhqb5ig.js +675 -0
  47. package/dist/_chunks/{patient-search-CBC_ySF6.js → patient-search-Be6cLrHR.js} +2 -2
  48. package/dist/_chunks/patient-summary-card-WySCMwwA.js +437 -0
  49. package/dist/_chunks/patient-table-CHxf3Oqk.js +1110 -0
  50. package/dist/_chunks/{payment-form-DvjwYVIT.js → payment-form-CxqIXqw7.js} +2 -2
  51. package/dist/_chunks/{payment-request-card-DioWKBUq.js → payment-request-card-BcZJwu9z.js} +125 -136
  52. package/dist/_chunks/{pdf-viewer-D6BPfW2D.js → pdf-viewer-QfebdLOd.js} +192 -214
  53. package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js → periodontal-chart-card-hRRJY1NN.js} +2 -2
  54. package/dist/_chunks/{practice-results-KrTHqZua.js → practice-results-C6qDfxos.js} +3 -3
  55. package/dist/_chunks/{pregnancy-dating-DORUAOHB.js → pregnancy-dating-CRVWswD-.js} +3 -3
  56. package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js → pregnancy-weight-gain-BUNpTsH-.js} +2 -2
  57. package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js +558 -0
  58. package/dist/_chunks/{rich-text-editor-BsV7zUdg.js → rich-text-editor-DlCqPixb.js} +410 -394
  59. package/dist/_chunks/{sign-document-B4DeRhTe.js → sign-document-By6hMOra.js} +2 -2
  60. package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
  61. package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
  62. package/dist/_chunks/tooth-scheme-BhQoPNBD.js +2131 -0
  63. package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
  64. package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
  65. package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
  66. package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
  67. package/dist/_chunks/{warning-stack-BsgaEbL8.js → warning-stack--sTrrBDA.js} +86 -101
  68. package/dist/_chunks/{workflow-map-Bdam9pGp.js → workflow-map-Dy8mLCqF.js} +3 -3
  69. package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
  70. package/dist/agent/index.js +5 -4
  71. package/dist/agent/types.d.ts +19 -2
  72. package/dist/agent-catalog.json +1253 -86
  73. package/dist/agent-i18n/en.json +108 -6
  74. package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
  75. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  76. package/dist/components/_shared/field-value.d.ts +21 -0
  77. package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
  78. package/dist/components/_shared/field-visibility.d.ts +36 -0
  79. package/dist/components/_shared/patient-fields.d.ts +119 -0
  80. package/dist/components/agenda-card/index.js +1 -1
  81. package/dist/components/agenda-tray/index.js +1 -1
  82. package/dist/components/ai-consent-banner/index.js +1 -1
  83. package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +75 -0
  84. package/dist/components/ai-tools-rail/index.js +1 -1
  85. package/dist/components/alert/alert.d.ts +5 -0
  86. package/dist/components/alert/index.js +1 -1
  87. package/dist/components/anamnesis-card/index.js +1 -1
  88. package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
  89. package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
  90. package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
  91. package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
  92. package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
  93. package/dist/components/anatomy-scheme/index.d.ts +6 -0
  94. package/dist/components/anatomy-scheme/index.js +17 -0
  95. package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
  96. package/dist/components/annotation-marker/index.d.ts +3 -0
  97. package/dist/components/annotation-marker/index.js +7 -0
  98. package/dist/components/appointment-card/appointment-card.d.ts +25 -1
  99. package/dist/components/appointment-card/index.js +6 -5
  100. package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
  101. package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
  102. package/dist/components/appointment-timeline/index.d.ts +4 -0
  103. package/dist/components/appointment-timeline/index.js +6 -0
  104. package/dist/components/audio-recorder/index.js +1 -1
  105. package/dist/components/badge/badge.d.ts +6 -2
  106. package/dist/components/badge/index.js +1 -1
  107. package/dist/components/bishop-score/index.js +1 -1
  108. package/dist/components/bmi-calculator/index.js +1 -1
  109. package/dist/components/booking/index.js +1 -1
  110. package/dist/components/care-plan-card/index.js +1 -1
  111. package/dist/components/care-plan-entry-card/index.js +1 -1
  112. package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
  113. package/dist/components/care-plan-header/care-plan-header.d.ts +100 -0
  114. package/dist/components/care-plan-header/index.d.ts +4 -0
  115. package/dist/components/care-plan-header/index.js +6 -0
  116. package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
  117. package/dist/components/clinical-note-card/index.js +1 -1
  118. package/dist/components/contact-profile-card/index.js +1 -1
  119. package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
  120. package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
  121. package/dist/components/control-room-rail/index.d.ts +5 -0
  122. package/dist/components/control-room-rail/index.js +9 -0
  123. package/dist/components/cycle-calculator/index.js +1 -1
  124. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
  125. package/dist/components/data-table/index.d.ts +1 -1
  126. package/dist/components/data-table/index.js +32 -31
  127. package/dist/components/dependent-selector/index.js +1 -1
  128. package/dist/components/document-scanner/index.js +1 -1
  129. package/dist/components/due-date-calculator/index.js +2 -2
  130. package/dist/components/email-input/index.js +1 -1
  131. package/dist/components/entity-summary/entity-summary.d.ts +43 -0
  132. package/dist/components/entity-summary/index.d.ts +3 -0
  133. package/dist/components/entity-summary/index.js +5 -0
  134. package/dist/components/fetal-weight/index.js +1 -1
  135. package/dist/components/file-upload/index.js +1 -1
  136. package/dist/components/freemium-paywall/index.js +1 -1
  137. package/dist/components/gestational-age-calculator/index.js +1 -1
  138. package/dist/components/hcg-doubling/index.js +1 -1
  139. package/dist/components/index.d.ts +9 -0
  140. package/dist/components/notes-panel/index.d.ts +3 -0
  141. package/dist/components/notes-panel/index.js +5 -0
  142. package/dist/components/notes-panel/notes-panel.d.ts +64 -0
  143. package/dist/components/notification-card/index.js +1 -1
  144. package/dist/components/notification-tray/index.js +1 -1
  145. package/dist/components/operator-hero/index.js +1 -1
  146. package/dist/components/patient-details/index.d.ts +5 -0
  147. package/dist/components/patient-details/index.js +6 -0
  148. package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
  149. package/dist/components/patient-details/patient-details.d.ts +96 -0
  150. package/dist/components/patient-search/index.js +1 -1
  151. package/dist/components/patient-summary-card/index.js +1 -1
  152. package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
  153. package/dist/components/patient-table/columns.d.ts +69 -40
  154. package/dist/components/patient-table/index.d.ts +2 -6
  155. package/dist/components/patient-table/index.js +8 -9
  156. package/dist/components/patient-table/patient-table.d.ts +38 -4
  157. package/dist/components/patient-table/types.d.ts +52 -2
  158. package/dist/components/patient-table/use-responsive-columns.d.ts +8 -6
  159. package/dist/components/payment-card/index.js +1 -1
  160. package/dist/components/payment-form/index.js +1 -1
  161. package/dist/components/pdf-viewer/index.js +1 -1
  162. package/dist/components/periodontal-chart-card/index.js +1 -1
  163. package/dist/components/practice-results/index.js +1 -1
  164. package/dist/components/pregnancy-dating/index.js +1 -1
  165. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  166. package/dist/components/radiograph-panel/index.d.ts +4 -0
  167. package/dist/components/radiograph-panel/index.js +7 -0
  168. package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
  169. package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
  170. package/dist/components/rich-text-editor/index.js +1 -1
  171. package/dist/components/sidebar/index.js +1 -1
  172. package/dist/components/sign-document/index.js +1 -1
  173. package/dist/components/stepper-accordion/index.js +1 -1
  174. package/dist/components/tab-bar/index.js +1 -1
  175. package/dist/components/tab-bar/tab-bar.d.ts +18 -1
  176. package/dist/components/tooth-scheme/index.d.ts +2 -2
  177. package/dist/components/tooth-scheme/index.js +30 -23
  178. package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
  179. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
  180. package/dist/components/tooth-scheme/tooth-scheme.d.ts +75 -11
  181. package/dist/components/transaction-chip/index.js +1 -1
  182. package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
  183. package/dist/components/warning-stack/index.js +1 -1
  184. package/dist/components/warning-stack/warning-stack.d.ts +10 -7
  185. package/dist/components/workflow/index.js +1 -1
  186. package/dist/hooks/index.d.ts +1 -0
  187. package/dist/hooks/index.js +24 -22
  188. package/dist/hooks/use-clamp-overflow.d.ts +19 -0
  189. package/dist/hooks/use-overflow-collapse.d.ts +46 -0
  190. package/dist/hooks/use-persistent-state.d.ts +7 -1
  191. package/dist/hooks/use-scroll-overflow.d.ts +36 -0
  192. package/dist/i18n/locales/ar.d.ts +308 -24
  193. package/dist/i18n/locales/ar.js +322 -27
  194. package/dist/i18n/locales/de.d.ts +308 -24
  195. package/dist/i18n/locales/de.js +322 -27
  196. package/dist/i18n/locales/el.d.ts +308 -24
  197. package/dist/i18n/locales/el.js +322 -27
  198. package/dist/i18n/locales/en.d.ts +309 -32
  199. package/dist/i18n/locales/en.js +323 -35
  200. package/dist/i18n/locales/es.d.ts +308 -24
  201. package/dist/i18n/locales/es.js +322 -27
  202. package/dist/i18n/locales/fr.d.ts +308 -24
  203. package/dist/i18n/locales/fr.js +322 -27
  204. package/dist/i18n/locales/hi.d.ts +308 -24
  205. package/dist/i18n/locales/hi.js +322 -27
  206. package/dist/i18n/locales/it.d.ts +308 -24
  207. package/dist/i18n/locales/it.js +322 -27
  208. package/dist/i18n/locales/ja.d.ts +308 -24
  209. package/dist/i18n/locales/ja.js +322 -27
  210. package/dist/i18n/locales/nl.d.ts +308 -24
  211. package/dist/i18n/locales/nl.js +322 -27
  212. package/dist/i18n/locales/pl.d.ts +308 -24
  213. package/dist/i18n/locales/pl.js +322 -27
  214. package/dist/i18n/locales/pt.d.ts +308 -24
  215. package/dist/i18n/locales/pt.js +322 -27
  216. package/dist/i18n/locales/ro.d.ts +308 -24
  217. package/dist/i18n/locales/ro.js +322 -27
  218. package/dist/i18n/locales/ru.d.ts +308 -24
  219. package/dist/i18n/locales/ru.js +322 -27
  220. package/dist/i18n/locales/sq.d.ts +308 -24
  221. package/dist/i18n/locales/sq.js +322 -27
  222. package/dist/i18n/locales/sv.d.ts +308 -24
  223. package/dist/i18n/locales/sv.js +322 -27
  224. package/dist/i18n/locales/tr.d.ts +308 -24
  225. package/dist/i18n/locales/tr.js +322 -27
  226. package/dist/i18n/locales/zh.d.ts +308 -24
  227. package/dist/i18n/locales/zh.js +322 -27
  228. package/dist/index.js +672 -623
  229. package/dist/locales/ar.json +311 -27
  230. package/dist/locales/de.json +311 -27
  231. package/dist/locales/el.json +311 -27
  232. package/dist/locales/en.json +311 -27
  233. package/dist/locales/es.json +311 -27
  234. package/dist/locales/fr.json +311 -27
  235. package/dist/locales/hi.json +311 -27
  236. package/dist/locales/it.json +311 -27
  237. package/dist/locales/ja.json +311 -27
  238. package/dist/locales/nl.json +311 -27
  239. package/dist/locales/pl.json +311 -27
  240. package/dist/locales/pt.json +311 -27
  241. package/dist/locales/ro.json +311 -27
  242. package/dist/locales/ru.json +311 -27
  243. package/dist/locales/sq.json +311 -27
  244. package/dist/locales/sv.json +311 -27
  245. package/dist/locales/tr.json +311 -27
  246. package/dist/locales/zh.json +311 -27
  247. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  248. package/dist/tokens.css +1 -1
  249. package/package.json +37 -1
  250. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js +0 -373
  251. package/dist/_chunks/appointment-tray-CZtvtaH-.js +0 -431
  252. package/dist/_chunks/clinical-note-card-DqQYf_D4.js +0 -333
  253. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +0 -448
  254. package/dist/_chunks/email-input-B_Y55f5G.js +0 -396
  255. package/dist/_chunks/patient-summary-card-B836_fDB.js +0 -435
  256. package/dist/_chunks/patient-table-CDuosVru.js +0 -889
  257. package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
  258. package/dist/_chunks/tooth-scheme-yBr53cvv.js +0 -1330
  259. package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
  260. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +0 -45
  261. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +0 -26
@@ -0,0 +1,13 @@
1
+ import type { AgentAdapter } from '../../agent/types';
2
+ import type { RadiographPanelHandle } from './radiograph-panel';
3
+ import type { Radiograph } from '../tooth-scheme';
4
+ /**
5
+ * The Imaging panel for the Control Room rail. It DISPLAYS the selected tooth's
6
+ * radiographs and drives the fullscreen viewer; uploads and deletes are the
7
+ * host's responsibility (the `onAddRadiograph` / `onDeleteRadiograph` props),
8
+ * so they are not exposed here — the consuming pattern/app owns those `write` /
9
+ * `destructive` workflows and their `radiograph.*` API contracts.
10
+ */
11
+ export declare const radiographPanelAgent: AgentAdapter<RadiographPanelHandle>;
12
+ export type { Radiograph };
13
+ //# sourceMappingURL=radiograph-panel.agent.d.ts.map
@@ -0,0 +1,36 @@
1
+ import { type HTMLAttributes } from 'react';
2
+ import { Radiation } from 'lucide-react';
3
+ import type { FdiId, Radiograph } from '../tooth-scheme';
4
+ export interface RadiographPanelHandle {
5
+ /** Read the films currently shown (after the host's `radiographs` prop). */
6
+ getRadiographs: () => Radiograph[];
7
+ /** Open the fullscreen viewer on a film by id. */
8
+ openViewer: (id: string) => void;
9
+ /** Close the fullscreen viewer. */
10
+ closeViewer: () => void;
11
+ }
12
+ export interface RadiographPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'title' | 'children'> {
13
+ /** Instance id — emitted as `data-component-id` for the agent registry. */
14
+ id?: string;
15
+ /** The tooth whose films are shown (FDI id). Null → a "select a tooth" prompt. */
16
+ toothId?: FdiId | null;
17
+ /** Display label for the selected tooth. Defaults to the localised "Tooth {{id}}". */
18
+ toothLabel?: string;
19
+ /** The selected tooth's films. The panel sorts + filters; order in is irrelevant. */
20
+ radiographs?: Radiograph[];
21
+ /** Commit a new film (the host persists it). Omit to hide the upload composer. */
22
+ onAddRadiograph?: (draft: {
23
+ fileName: string;
24
+ date?: string;
25
+ note?: string;
26
+ }) => void;
27
+ /** Remove a film by id. Omit to hide the delete affordance. */
28
+ onDeleteRadiograph?: (id: string) => void;
29
+ /** Panel heading. Defaults to the localised "Imaging". */
30
+ title?: string;
31
+ /** Accessible name for the panel region (defaults to `title`). */
32
+ 'aria-label'?: string;
33
+ }
34
+ export declare const RadiographPanel: import("react").ForwardRefExoticComponent<RadiographPanelProps & import("react").RefAttributes<RadiographPanelHandle>>;
35
+ export { Radiation as RadiographPanelIcon };
36
+ //# sourceMappingURL=radiograph-panel.d.ts.map
@@ -1,4 +1,4 @@
1
- import { R as a, r as e, w as i } from "../../_chunks/rich-text-editor-BsV7zUdg.js";
1
+ import { R as a, r as e, w as i } from "../../_chunks/rich-text-editor-DlCqPixb.js";
2
2
  export {
3
3
  a as RichTextEditor,
4
4
  e as richTextEditorAgent,
@@ -1,5 +1,5 @@
1
1
  import { S as r, a as i, b as s, c as d, d as S, e as b, f as t, g as o, h as m, i as n, j as p, k as l, l as c, m as g, n as u, o as I, p as P, q as f, s as h, u as B } from "../../_chunks/sidebar-DY9jGjgt.js";
2
- import { u as k } from "../../_chunks/use-persistent-state-i23OWy6G.js";
2
+ import { u as k } from "../../_chunks/use-persistent-state-nZwZAnE9.js";
3
3
  export {
4
4
  r as Sidebar,
5
5
  i as SidebarBody,
@@ -1,4 +1,4 @@
1
- import { S as o, s } from "../../_chunks/sign-document-B4DeRhTe.js";
1
+ import { S as o, s } from "../../_chunks/sign-document-By6hMOra.js";
2
2
  export {
3
3
  o as SignDocument,
4
4
  s as signDocumentAgent
@@ -1,4 +1,4 @@
1
- import { S as e } from "../../_chunks/stepper-accordion-Dki6r9ZE.js";
1
+ import { S as e } from "../../_chunks/stepper-accordion-DC-H-8v4.js";
2
2
  import { s as t } from "../../_chunks/stepper-accordion.agent-cmEguIdx.js";
3
3
  export {
4
4
  e as StepperAccordion,
@@ -1,4 +1,4 @@
1
- import { T as o } from "../../_chunks/tab-bar-B1ovILzh.js";
1
+ import { T as o } from "../../_chunks/tab-bar-Bv9nGNdO.js";
2
2
  export {
3
3
  o as TabBar
4
4
  };
@@ -14,13 +14,18 @@
14
14
  * Use this when the tab set is open-ended (e.g. a marketplace app's routes).
15
15
  * - `fill`: equal-width tabs that fill the bar and always stack the label under
16
16
  * the icon — a fixed, always-visible set that fits any column width without
17
- * scrolling (e.g. a patient portal's four sections).
17
+ * scrolling (e.g. a patient portal's handful of sections).
18
18
  *
19
19
  * Tabs render as links when given an `href` (real navigation) or as buttons
20
20
  * otherwise (in-app view switching via `onSelect`). Use it as a header (top,
21
21
  * default) for section navigation; `position="bottom"` floats it from the
22
22
  * bottom edge for a footer.
23
23
  *
24
+ * With `collapseToMenu`, the strip folds into a single DropdownMenu whenever the
25
+ * tabs don't fit — below the `sm` breakpoint OR when they overflow their
26
+ * container at any width (a narrow column on a wide screen, e.g. a page squeezed
27
+ * between two sidebars, clips the tabs just the same as a small viewport).
28
+ *
24
29
  * SPA / consumer-router links: pass `renderLink` and TabBar hands each `href`
25
30
  * tab off to your router's `<Link>` instead of rendering its own `<a>` — the
26
31
  * embedded MarketplaceAppShell strip uses this so a tab click is a client-side
@@ -97,6 +102,18 @@ export interface TabBarProps {
97
102
  * `'bottom'` gutters from the bottom edge for a footer.
98
103
  */
99
104
  position?: 'top' | 'bottom';
105
+ /**
106
+ * Collapse the tab strip into a single DropdownMenu whenever the tabs don't
107
+ * fit — below the `sm` breakpoint (≤640px) OR when they overflow their
108
+ * container at any viewport width (a narrow column between two sidebars clips
109
+ * the tabs the same as a small screen). The trigger shows the active tab; the
110
+ * menu lists them all. Off (default) keeps the content-width / scroll
111
+ * behaviour at every width, so existing consumers are unaffected. Designed for
112
+ * button (`onSelect`) tabs; in the collapsed menu an `href` tab navigates with
113
+ * a full page load, so `renderLink` (SPA routing) and a per-item `onClick`
114
+ * apply only to the expanded strip.
115
+ */
116
+ collapseToMenu?: boolean;
100
117
  /** Extra classes merged onto the outer strip (e.g. sticky/fixed positioning). */
101
118
  className?: string;
102
119
  }
@@ -1,5 +1,5 @@
1
1
  export * from './tooth-scheme';
2
- export { FDI_TO_META, FDI_TO_UNIVERSAL, FDI_TO_PALMER, CONDITION_COLORS, CONDITION_TOKENS, CONDITION_SIDE_SYMBOL, CONDITION_PLAN_FOLDER, SURFACE_ASSET_NAME, toothImageUrl, conditionSymbolUrl, surfaceSymbolUrl, zonesForTooth, zoneSurface, zonePath, chartFromConditions, emptyChart, labelFor, layoutTeeth, } from './tooth-data';
3
- export type { Anatomy, Arch, Quadrant, Side, Surface, SurfaceZone, Projection, SideSymbolSpec, ToothMeta, PositionedTooth, } from './tooth-data';
2
+ export { FDI_TO_META, FDI_TO_UNIVERSAL, FDI_TO_PALMER, CONDITION_COLORS, CONDITION_TOKENS, CONDITION_SIDE_SYMBOL, CONDITION_PLAN_FOLDER, SURFACE_ASSET_NAME, toothImageUrl, conditionSymbolUrl, surfaceSymbolUrl, zonesForTooth, zoneSurface, zonePath, chartFromConditions, emptyChart, labelFor, layoutTeeth, layoutSpecials, specialsForRow, specialIconUrl, generalElement, isSpecialElement, SPECIAL_ELEMENTS, SPECIAL_BY_ID, } from './tooth-data';
3
+ export type { Anatomy, Arch, Quadrant, Side, Surface, SurfaceZone, Projection, Radiograph, RadiographKind, SideSymbolSpec, SpecialElement, SpecialElementKind, PositionedSpecial, ToothMeta, PositionedTooth, } from './tooth-data';
4
4
  export { toothSchemeAgent } from './tooth-scheme.agent';
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1,27 +1,34 @@
1
- import { C as o, a as t, b as e, c as T, F as O, d as _, e as E, P as I, f as S, S as r, T as N, g as h, h as m, i as n, l as A, j as l, s as C, t as D, k as F, r as c, z as R, m as i, n as L } from "../../_chunks/tooth-scheme-yBr53cvv.js";
1
+ import { C as o, a as e, b as t, c as E, F as S, d as T, e as I, P as _, f as l, S as r, g as O, h as N, T as n, i as c, j as h, k as m, l as A, m as i, n as C, o as D, p as F, s as L, q as R, r as P, t as p, u as M, v as U, z as u, w as y, x as b } from "../../_chunks/tooth-scheme-BhQoPNBD.js";
2
2
  export {
3
3
  o as CONDITION_COLORS,
4
- t as CONDITION_PLAN_FOLDER,
5
- e as CONDITION_SIDE_SYMBOL,
6
- T as CONDITION_TOKENS,
7
- O as FDI_TO_META,
8
- _ as FDI_TO_PALMER,
9
- E as FDI_TO_UNIVERSAL,
10
- I as PERMANENT_TEETH,
11
- S as PRIMARY_TEETH,
12
- r as SURFACE_ASSET_NAME,
13
- N as ToothScheme,
14
- h as chartFromConditions,
15
- m as conditionSymbolUrl,
16
- n as emptyChart,
17
- A as labelFor,
18
- l as layoutTeeth,
19
- C as surfaceSymbolUrl,
20
- D as toothImageUrl,
21
- F as toothSchemeAgent,
22
- c as toothSchemeVariants,
23
- R as zonePath,
24
- i as zoneSurface,
25
- L as zonesForTooth
4
+ e as CONDITION_PLAN_FOLDER,
5
+ t as CONDITION_SIDE_SYMBOL,
6
+ E as CONDITION_TOKENS,
7
+ S as FDI_TO_META,
8
+ T as FDI_TO_PALMER,
9
+ I as FDI_TO_UNIVERSAL,
10
+ _ as PERMANENT_TEETH,
11
+ l as PRIMARY_TEETH,
12
+ r as SPECIAL_BY_ID,
13
+ O as SPECIAL_ELEMENTS,
14
+ N as SURFACE_ASSET_NAME,
15
+ n as ToothScheme,
16
+ c as chartFromConditions,
17
+ h as conditionSymbolUrl,
18
+ m as emptyChart,
19
+ A as generalElement,
20
+ i as isSpecialElement,
21
+ C as labelFor,
22
+ D as layoutSpecials,
23
+ F as layoutTeeth,
24
+ L as specialIconUrl,
25
+ R as specialsForRow,
26
+ P as surfaceSymbolUrl,
27
+ p as toothImageUrl,
28
+ M as toothSchemeAgent,
29
+ U as toothSchemeVariants,
30
+ u as zonePath,
31
+ y as zoneSurface,
32
+ b as zonesForTooth
26
33
  };
27
34
  //# sourceMappingURL=index.js.map
@@ -10,6 +10,35 @@ export interface ToothState {
10
10
  notes?: string;
11
11
  }
12
12
  export type ToothChart = Record<FdiId, ToothState>;
13
+ /** Radiograph (x-ray) type. `'periapical'` is the intraoral *endorale*. */
14
+ export type RadiographKind = 'periapical' | 'bitewing' | 'panoramic' | 'other';
15
+ /**
16
+ * A single radiograph attached to a tooth. Image urls are opaque,
17
+ * consumer-hosted strings, interpolated into an SVG `<image href>` / `<img src>`
18
+ * (which cannot execute scripts) — never bundled and never runtime-validated.
19
+ * Real radiographs are PHI: stories and demos must use synthetic placeholders.
20
+ */
21
+ export interface Radiograph {
22
+ /** Stable id — keys the archive list and the imperative open call. */
23
+ id: string;
24
+ /** Full-resolution image url. */
25
+ url: string;
26
+ /** Optional smaller preview url (falls back to `url`). */
27
+ thumbnailUrl?: string;
28
+ /** ISO acquisition date (`YYYY-MM-DD`). */
29
+ date?: string;
30
+ /** Free-text clinical note. */
31
+ note?: string;
32
+ /** Radiograph type. Default `'periapical'` (an *endorale*). */
33
+ kind?: RadiographKind;
34
+ /**
35
+ * Accessible description for the FULL-SIZE image, consumed by a downstream
36
+ * viewer (e.g. the Dental Imaging Hub archive `<img>`). The chart's slot
37
+ * render is decorative (`aria-hidden` — the tooth's accessible name carries
38
+ * the radiograph count), so `alt` is intentionally not read by the chart.
39
+ */
40
+ alt?: string;
41
+ }
13
42
  export type Anatomy = 'incisor' | 'canine' | 'premolar' | 'molar';
14
43
  export type Arch = 'upper' | 'lower';
15
44
  export type Side = 'right' | 'left';
@@ -141,11 +170,93 @@ export interface PositionedTooth {
141
170
  * is preserved: the patient's right sits on the viewer's left in both
142
171
  * arches, regardless of document direction.
143
172
  */
144
- export declare function layoutTeeth(dentition: Dentition, slotHeight?: number): {
173
+ export declare function layoutTeeth(dentition: Dentition, slotHeight?: number, options?: {
174
+ arch?: Arch;
175
+ }): {
145
176
  teeth: PositionedTooth[];
146
177
  width: number;
147
178
  height: number;
148
179
  };
180
+ export type SpecialElementKind = 'quadrant' | 'sextant' | 'arch' | 'general';
181
+ export interface SpecialElement {
182
+ /**
183
+ * Stable id — a chart key and the value emitted by `onSelect`. Permanent:
184
+ * `Q1`–`Q4`, `S1`–`S6`, `AS`, `AI`, `general`. Primary mirrors with an `m`
185
+ * prefix: `mQ1`…, `mS1`…, `mAS`, `mAI`, `mGeneral`.
186
+ */
187
+ id: string;
188
+ kind: SpecialElementKind;
189
+ arch: Arch;
190
+ dentition: 'permanent' | 'primary';
191
+ /** i18n token under `toothScheme.special.*` for the accessible name. */
192
+ labelKey: 'quadrant' | 'sextant' | 'archUpper' | 'archLower' | 'general';
193
+ /** Interpolated into the `{{n}}` of quadrant / sextant labels (e.g. `1`). */
194
+ labelIndex?: number;
195
+ /** Short code shown in the slot, e.g. `Q1`, `S3`, `AS`, `Gen.`. */
196
+ code: string;
197
+ /**
198
+ * Member teeth (FDI) — informational for consumers that highlight or expand a
199
+ * region. Selection itself keys on `id`; the platform expands membership
200
+ * server-side. Sextants follow the WHO/CPITN convention.
201
+ */
202
+ teeth: FdiId[];
203
+ /**
204
+ * Column within the special-element block. Quadrant and its paired sextant
205
+ * share a column so they stack (Q1↕S1, Q2↕S2, AS↕S3 / S4↕Q4, S5↕Q3, S6↕AI).
206
+ */
207
+ column: number;
208
+ /** Row the element attaches to: side (quadrant/arch/general) or plan (sextant). */
209
+ row: Projection;
210
+ }
211
+ /** Every special element, flat — permanent then primary. */
212
+ export declare const SPECIAL_ELEMENTS: SpecialElement[];
213
+ /** Lookup a special element by its id (`Q1`, `mS3`, `AS`, `general`…). */
214
+ export declare const SPECIAL_BY_ID: Record<string, SpecialElement>;
215
+ /** True when an id names a special element rather than a tooth. */
216
+ export declare function isSpecialElement(id: string): boolean;
217
+ /**
218
+ * The special-element SLOTS that attach to a given row, ordered by column.
219
+ * Quadrant / arch live on the `side` row; sextants on the `plan` row. The
220
+ * whole-mouth `general` element is excluded — it renders as a switch beneath the
221
+ * chart (see `generalElement`), not as a column. Mixed dentition reuses the
222
+ * permanent set (the platform has no mixed view).
223
+ */
224
+ export declare function specialsForRow(dentition: Dentition, arch: Arch, projection: Projection): SpecialElement[];
225
+ /**
226
+ * The whole-mouth `general` element for a dentition. It is rendered as a switch
227
+ * beneath the chart rather than as a cramped icon column (the platform's vertical
228
+ * "GENERALE" glyph is illegible at column width).
229
+ */
230
+ export declare function generalElement(dentition: Dentition): SpecialElement;
231
+ /** A special-element slot placed in an SVG, to the inline-end of the teeth. */
232
+ export interface PositionedSpecial {
233
+ element: SpecialElement;
234
+ x: number;
235
+ y: number;
236
+ }
237
+ /** Special-element slot block-size — matches a tooth slot so icons read clearly. */
238
+ export declare const SPECIAL_SLOT_WIDTH = 36;
239
+ /**
240
+ * Resolve the photoreal icon URL for a special element, or `null` when it has
241
+ * none (sextants are label-only — the platform ships no sextant icon). Icons
242
+ * live in the `global/` sibling of the `teeth/` render folder; quadrants and
243
+ * arches reuse their code as the file stem (`Q1`, `AS`, …), general resolves to
244
+ * `general`, and primary elements reuse the permanent art.
245
+ */
246
+ export declare function specialIconUrl(element: SpecialElement, assetBaseUrl: string): string | null;
247
+ /** Gap between the last tooth and the first special-element column. */
248
+ export declare const SPECIAL_GAP = 8;
249
+ /** Column pitch within the special-element block. */
250
+ export declare const SPECIAL_PITCH: number;
251
+ /**
252
+ * Place a row's special elements after the teeth (inline-end) and report the
253
+ * total row width. Columns are derived from `element.column`, so a quadrant and
254
+ * its paired sextant share an x and stack across the two rows.
255
+ */
256
+ export declare function layoutSpecials(specials: SpecialElement[], teethWidth: number): {
257
+ specials: PositionedSpecial[];
258
+ width: number;
259
+ };
149
260
  export declare function labelFor(id: FdiId, numbering: Numbering): string;
150
261
  export declare function emptyChart(): ToothChart;
151
262
  export declare function chartFromConditions(conditions: Partial<Record<FdiId, ToothCondition[]>>): ToothChart;
@@ -1,6 +1,6 @@
1
1
  import type { AgentAdapter } from '../../agent/types';
2
2
  import type { ToothSchemeHandle } from './tooth-scheme';
3
- import type { Surface, ToothCondition } from './tooth-data';
3
+ import type { Radiograph, Surface, ToothCondition } from './tooth-data';
4
4
  export declare const toothSchemeAgent: AgentAdapter<ToothSchemeHandle>;
5
- export type { Surface, ToothCondition };
5
+ export type { Radiograph, Surface, ToothCondition };
6
6
  //# sourceMappingURL=tooth-scheme.agent.d.ts.map
@@ -1,4 +1,4 @@
1
- import { PERMANENT_TEETH, PRIMARY_TEETH, type ViewMode, type Dentition, type FdiId, type Numbering, type Surface, type ToothChart, type ToothCondition, type ToothMode } from './tooth-data';
1
+ import { PERMANENT_TEETH, PRIMARY_TEETH, type Arch, type ViewMode, type Dentition, type FdiId, type Numbering, type Radiograph, type Surface, type ToothChart, type ToothCondition, type ToothMode } from './tooth-data';
2
2
  export interface ToothSchemeProps {
3
3
  /** Opaque instance id — emitted as `data-component-id` for the agent registry. */
4
4
  id?: string;
@@ -10,21 +10,59 @@ export interface ToothSchemeProps {
10
10
  mode?: ToothMode;
11
11
  /**
12
12
  * `'side'` shows the facial view (whole-tooth findings); `'plan'` shows the
13
- * occlusal view (per-surface caries / fillings); `'both'` stacks the side
14
- * chart above an interactive occlusal companion that shares the chart data.
15
- * Default `'side'`.
13
+ * occlusal view (per-surface caries / fillings); `'both'` lays the two facial
14
+ * rows on the outside with the two occlusal rows between them (upper side
15
+ * upper occlusal → lower occlusal → lower side), bracketed by tooth numbers
16
+ * above and below. Default `'side'`.
16
17
  */
17
18
  projection?: ViewMode;
19
+ /**
20
+ * Show the selectable special-element slots (quadrants, sextants, arches,
21
+ * whole-mouth) to the inline-end of each arch row. When unset, they show in
22
+ * `both` view and hide in the single side / plan views; pass `true` / `false`
23
+ * to force it. They share the chart data and emit `onSelect` like a tooth.
24
+ */
25
+ specialElements?: boolean;
18
26
  /** Controlled chart state — the full `Record<FdiId, ToothState>`. */
19
27
  value?: ToothChart;
20
28
  /** Uncontrolled initial chart state. */
21
29
  defaultValue?: ToothChart;
22
30
  /** Fired whenever the chart changes — always emits FDI ids. */
23
31
  onChange?: (next: ToothChart) => void;
24
- /** Fired when a tooth is focused or clicked. */
32
+ /**
33
+ * Fired when a tooth OR special element is focused / clicked. Special
34
+ * elements emit their id (`Q1`, `S3`, `AS`, `general`, …).
35
+ */
25
36
  onSelect?: (toothId: FdiId) => void;
26
37
  /** Shortcut for pre-populating conditions: `{ '16': ['caries'], '36': ['filled'] }`. */
27
38
  conditions?: Partial<Record<FdiId, ToothCondition[]>>;
39
+ /**
40
+ * Per-tooth radiographs (x-rays / *endorali*), keyed by FDI id — mirrors the
41
+ * `conditions` shape. Teeth carrying at least one radiograph get a corner
42
+ * count badge; in `radiographDisplay="thumbnail"` the most-recent film also
43
+ * fills the slot. Image urls are opaque / consumer-hosted — never bundle real
44
+ * scans (PHI).
45
+ */
46
+ radiographs?: Partial<Record<FdiId, Radiograph[]>>;
47
+ /**
48
+ * How a tooth carrying radiographs is marked. `'badge'` (default) keeps the
49
+ * photoreal tooth render and adds a corner count badge; `'thumbnail'` shows
50
+ * the most-recent radiograph inset in the slot (still badged).
51
+ */
52
+ radiographDisplay?: 'badge' | 'thumbnail';
53
+ /**
54
+ * Fired when a tooth's radiograph archive is opened — i.e. a tooth is
55
+ * activated (click / Enter / Space) in `mode="display"`. Wire this to a
56
+ * Sheet/Dialog that manages the tooth's films. Setting this makes display-mode
57
+ * teeth focusable buttons; it is mutually exclusive with interactive
58
+ * findings-editing (`mode="interactive"` / `activeCondition`).
59
+ *
60
+ * EVERY tooth becomes an open-archive button — including unfilmed teeth, so the
61
+ * user can add the first film to an empty tooth (matching a real imaging hub).
62
+ * Filmed teeth are distinguished by the radiograph count folded into their
63
+ * accessible name and tooltip.
64
+ */
65
+ onOpenRadiographs?: (toothId: FdiId) => void;
28
66
  /**
29
67
  * The finding a tooth-click applies in interactive mode (the selected
30
68
  * tool in a Findings / "Stato dentale" panel). Clicking a tooth toggles
@@ -49,10 +87,10 @@ export interface ToothSchemeProps {
49
87
  legend?: boolean;
50
88
  /**
51
89
  * Render a built-in options affordance: a gear button that opens a popover
52
- * letting the END USER toggle the legend and switch dentition / numbering /
53
- * projection. Opt-in — when on, those four become user-overridable (seeded
54
- * from the props); when off, the props drive the chart directly. Default
55
- * `false`.
90
+ * letting the END USER toggle the legend + special elements and switch
91
+ * dentition / numbering / projection. Opt-in — when on, those become
92
+ * user-overridable (seeded from the props); when off, the props drive the
93
+ * chart directly. Default `false`.
56
94
  */
57
95
  controls?: boolean;
58
96
  /** Accessible label override for the chart region. */
@@ -60,6 +98,26 @@ export interface ToothSchemeProps {
60
98
  /** Extra class names on the wrapper. */
61
99
  className?: string;
62
100
  }
101
+ /** Number-label placement for a sub-chart. */
102
+ type NumbersPosition = 'between' | 'above' | 'below' | 'none';
103
+ /**
104
+ * Internal-only props (prefixed `_`) used when the component composes itself
105
+ * into the four-row `both` view — never part of the public API.
106
+ */
107
+ interface ToothSchemeInternalProps {
108
+ /** Render a single arch (the `both` view stacks one arch per sub-chart). */
109
+ _arch?: Arch;
110
+ /** Number-label placement for this sub-chart. */
111
+ _numbersPosition?: NumbersPosition;
112
+ /** Render only the `<svg>` (no region wrapper, controls, legend, or chrome). */
113
+ _inner?: boolean;
114
+ /**
115
+ * Force the SVG content width (the `both` view shares one width across all
116
+ * four sub-charts so they scale identically and stay column-aligned —
117
+ * otherwise rows with fewer special-element columns would scale up larger).
118
+ */
119
+ _contentWidth?: number;
120
+ }
63
121
  export interface ToothSchemeHandle {
64
122
  /** Programmatically focus a tooth by FDI id. */
65
123
  focusTooth: (id: FdiId) => void;
@@ -75,9 +133,15 @@ export interface ToothSchemeHandle {
75
133
  removeFinding: (id: FdiId, condition: ToothCondition) => void;
76
134
  /** Clear every finding from a tooth. */
77
135
  clearTooth: (id: FdiId) => void;
136
+ /** Read the radiographs attached to one tooth (empty array if none). */
137
+ getRadiographs: (id: FdiId) => Radiograph[];
138
+ /** Read the FDI ids of every tooth carrying at least one radiograph. */
139
+ teethWithRadiographs: () => FdiId[];
140
+ /** Focus a tooth and open its radiograph archive (fires `onOpenRadiographs`). */
141
+ openRadiographs: (id: FdiId) => void;
78
142
  }
79
143
  declare const rootVariants: (props?: import("class-variance-authority/types").ClassProp | undefined) => string;
80
- export declare const ToothScheme: import("react").ForwardRefExoticComponent<ToothSchemeProps & import("react").RefAttributes<ToothSchemeHandle>>;
144
+ export declare const ToothScheme: import("react").ForwardRefExoticComponent<ToothSchemeProps & ToothSchemeInternalProps & import("react").RefAttributes<ToothSchemeHandle>>;
81
145
  export { rootVariants as toothSchemeVariants, PERMANENT_TEETH, PRIMARY_TEETH };
82
- export type { Dentition, FdiId, Numbering, ToothChart, ToothCondition, ToothMode, ToothState, } from './tooth-data';
146
+ export type { Dentition, FdiId, Numbering, SpecialElement, ToothChart, ToothCondition, ToothMode, ToothState, } from './tooth-data';
83
147
  //# sourceMappingURL=tooth-scheme.d.ts.map
@@ -1,4 +1,4 @@
1
- import { T as r } from "../../_chunks/transaction-chip-DK84XCBU.js";
1
+ import { T as r } from "../../_chunks/transaction-chip-CscoQbxF.js";
2
2
  export {
3
3
  r as TransactionChip
4
4
  };
@@ -1,8 +1,8 @@
1
1
  import { type HTMLAttributes } from 'react';
2
2
  import { type VariantProps } from 'class-variance-authority';
3
- export type TransactionState = 'debt' | 'credit' | 'to-invoice' | 'to-deliver' | 'settled';
3
+ export type TransactionState = 'debt' | 'credit' | 'to-invoice' | 'to-deliver' | 'settled' | 'discount';
4
4
  declare const chipVariants: (props?: ({
5
- state?: "debt" | "credit" | "to-invoice" | "to-deliver" | "settled" | null | undefined;
5
+ state?: "debt" | "credit" | "to-invoice" | "to-deliver" | "settled" | "discount" | null | undefined;
6
6
  size?: "sm" | "md" | "lg" | null | undefined;
7
7
  bold?: boolean | null | undefined;
8
8
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
@@ -1,4 +1,4 @@
1
- import { W as n } from "../../_chunks/warning-stack-BsgaEbL8.js";
1
+ import { W as n } from "../../_chunks/warning-stack--sTrrBDA.js";
2
2
  export {
3
3
  n as WarningStack
4
4
  };
@@ -11,7 +11,6 @@ export interface WarningStackItem {
11
11
  dismissible?: boolean;
12
12
  }
13
13
  declare const stackVariants: (props?: ({
14
- size?: "sm" | "md" | null | undefined;
15
14
  stretch?: boolean | null | undefined;
16
15
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
17
16
  export interface WarningStackProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role' | 'title'>, VariantProps<typeof stackVariants> {
@@ -26,17 +25,21 @@ export interface WarningStackProps extends Omit<HTMLAttributes<HTMLDivElement>,
26
25
  title?: ReactNode;
27
26
  /** Optional short description rendered under the title. */
28
27
  description?: ReactNode;
29
- /** Cap on visible items before a "Show N more" toggle appears. */
28
+ /** Cap on visible items before a "Show N more" toggle appears. Defaults to
29
+ * `2`; pass a larger number (or `Infinity`) to show more before collapsing. */
30
30
  maxVisible?: number;
31
31
  /** Whether the stack starts collapsed when items exceed `maxVisible`. */
32
32
  defaultCollapsed?: boolean;
33
33
  /** Fires when a dismissible item's close control is activated. */
34
34
  onDismiss?: (item: WarningStackItem) => void;
35
- /** When provided, a close control is rendered at the top inline-end of the
36
- * header that clears the whole stack at once. Activating it dismisses every
37
- * currently-visible notice (folding the region away) and then fires this
38
- * callback so the consumer can mirror the bulk dismissal into its store.
39
- * Opt-in: omit it when the stack carries notices that must not be bulk-cleared. */
35
+ /** Whether the whole-stack close control is shown at the header's inline-end.
36
+ * Defaults to `true` the tray is closable. Set `false` for stacks that
37
+ * carry notices which must not be bulk-cleared (e.g. hard compliance blocks). */
38
+ closable?: boolean;
39
+ /** Fires when the whole-stack close control is activated, after every
40
+ * currently-visible notice has been dismissed (folding the region away).
41
+ * Optional — the fold happens internally regardless; supply this only to
42
+ * mirror the bulk dismissal into the consumer's own store. */
40
43
  onDismissAll?: () => void;
41
44
  /** Accessible label for the whole-stack close control. Defaults to the
42
45
  * localised "Dismiss all notices". */
@@ -1,4 +1,4 @@
1
- import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-Bdam9pGp.js";
1
+ import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-Dy8mLCqF.js";
2
2
  export {
3
3
  r as CORE_PATIENT_FIELDS,
4
4
  e as WorkflowCard,
@@ -16,6 +16,7 @@ export { useFocusTrap, type UseFocusTrapOptions } from './use-focus-trap';
16
16
  export { useDirection, useDocumentDirection, type Direction, } from './use-direction';
17
17
  export { usePersistentState } from './use-persistent-state';
18
18
  export { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect';
19
+ export { useOverflowCollapse, type UseOverflowCollapseReturn, } from './use-overflow-collapse';
19
20
  export { useWebOtp, type UseWebOtpOptions } from './use-web-otp';
20
21
  export { useEdgeResize, type UseEdgeResizeOptions, type UseEdgeResizeReturn, type EdgeResizeSeparatorProps, } from './use-edge-resize';
21
22
  export { useSigningSession, type SigningField, type SigningFieldBase, type UseSigningSessionReturn, } from './use-signing-session';