@alfadocs/ui-kit-debug 1.130.1 → 1.130.2

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 (179) hide show
  1. package/dist/_chunks/{actions-cell-renderer-DTaIQKp9.js → actions-cell-renderer-C-l_ppP6.js} +3 -3
  2. package/dist/_chunks/{actions-cell-renderer-DTaIQKp9.js.map → actions-cell-renderer-C-l_ppP6.js.map} +1 -1
  3. package/dist/_chunks/{alia-sidebar-BBxbMRmX.js → alia-sidebar-CK1zw_Bc.js} +2 -2
  4. package/dist/_chunks/{alia-sidebar-BBxbMRmX.js.map → alia-sidebar-CK1zw_Bc.js.map} +1 -1
  5. package/dist/_chunks/{anamnesis-summary-rows-CtcULkvc.js → anamnesis-summary-rows-CCNmkq55.js} +5 -5
  6. package/dist/_chunks/{anamnesis-summary-rows-CtcULkvc.js.map → anamnesis-summary-rows-CCNmkq55.js.map} +1 -1
  7. package/dist/_chunks/{appointment-card-vbUsDh70.js → appointment-card-OAOur8lH.js} +2 -2
  8. package/dist/_chunks/{appointment-card-vbUsDh70.js.map → appointment-card-OAOur8lH.js.map} +1 -1
  9. package/dist/_chunks/{appointment-peek-DdUhqfEi.js → appointment-peek-DZa6xyUb.js} +2 -2
  10. package/dist/_chunks/{appointment-peek-DdUhqfEi.js.map → appointment-peek-DZa6xyUb.js.map} +1 -1
  11. package/dist/_chunks/{appointment-timeline-B5pfBl-b.js → appointment-timeline-DQePqpyH.js} +3 -3
  12. package/dist/_chunks/{appointment-timeline-B5pfBl-b.js.map → appointment-timeline-DQePqpyH.js.map} +1 -1
  13. package/dist/_chunks/{appointment-tray-BhiXetjs.js → appointment-tray-DSFqO5Rm.js} +2 -2
  14. package/dist/_chunks/{appointment-tray-BhiXetjs.js.map → appointment-tray-DSFqO5Rm.js.map} +1 -1
  15. package/dist/_chunks/{balance-badge-cell-BtFge7Y6.js → balance-badge-cell-DTiMdnCZ.js} +4 -4
  16. package/dist/_chunks/{balance-badge-cell-BtFge7Y6.js.map → balance-badge-cell-DTiMdnCZ.js.map} +1 -1
  17. package/dist/_chunks/body-pointer-lock-CsOEDm1I.js +15 -0
  18. package/dist/_chunks/body-pointer-lock-CsOEDm1I.js.map +1 -0
  19. package/dist/_chunks/{button-group-B2MJo0Se.js → button-group-DuQuuulC.js} +2 -2
  20. package/dist/_chunks/{button-group-B2MJo0Se.js.map → button-group-DuQuuulC.js.map} +1 -1
  21. package/dist/_chunks/{calculator-dialog-BGX5XQCM.js → calculator-dialog-Cg3GjaRf.js} +2 -2
  22. package/dist/_chunks/{calculator-dialog-BGX5XQCM.js.map → calculator-dialog-Cg3GjaRf.js.map} +1 -1
  23. package/dist/_chunks/{calendar-DzR-vdJ5.js → calendar-BIoOeBTT.js} +103 -103
  24. package/dist/_chunks/{calendar-DzR-vdJ5.js.map → calendar-BIoOeBTT.js.map} +1 -1
  25. package/dist/_chunks/{calendar-appointment-editor-dialog-CXch4Pmu.js → calendar-appointment-editor-dialog-WW6V1SGh.js} +15 -15
  26. package/dist/_chunks/{calendar-appointment-editor-dialog-CXch4Pmu.js.map → calendar-appointment-editor-dialog-WW6V1SGh.js.map} +1 -1
  27. package/dist/_chunks/{care-plan-card-CwgkImOD.js → care-plan-card-DKScH9Ss.js} +2 -2
  28. package/dist/_chunks/{care-plan-card-CwgkImOD.js.map → care-plan-card-DKScH9Ss.js.map} +1 -1
  29. package/dist/_chunks/{care-plan-entry-card-cdojypxu.js → care-plan-entry-card-AG1y3nyW.js} +2 -2
  30. package/dist/_chunks/{care-plan-entry-card-cdojypxu.js.map → care-plan-entry-card-AG1y3nyW.js.map} +1 -1
  31. package/dist/_chunks/{chart-Aue_2dMb.js → chart-D0EeFWst.js} +2 -2
  32. package/dist/_chunks/{chart-Aue_2dMb.js.map → chart-D0EeFWst.js.map} +1 -1
  33. package/dist/_chunks/{dashboard-grid-CaxgaEgI.js → dashboard-grid-2uVXEe9e.js} +2 -2
  34. package/dist/_chunks/{dashboard-grid-CaxgaEgI.js.map → dashboard-grid-2uVXEe9e.js.map} +1 -1
  35. package/dist/_chunks/{data-table-BCfkcPti.js → data-table-FTV3uRjX.js} +3 -3
  36. package/dist/_chunks/{data-table-BCfkcPti.js.map → data-table-FTV3uRjX.js.map} +1 -1
  37. package/dist/_chunks/{default-tabs-BnB6FUEW.js → default-tabs-BryvhiHv.js} +4 -4
  38. package/dist/_chunks/{default-tabs-BnB6FUEW.js.map → default-tabs-BryvhiHv.js.map} +1 -1
  39. package/dist/_chunks/{dialog-CIUn5oLb.js → dialog-CVTxyR0v.js} +48 -47
  40. package/dist/_chunks/dialog-CVTxyR0v.js.map +1 -0
  41. package/dist/_chunks/{document-preview-BWDTCEHI.js → document-preview-_kQ9QvZV.js} +2 -2
  42. package/dist/_chunks/{document-preview-BWDTCEHI.js.map → document-preview-_kQ9QvZV.js.map} +1 -1
  43. package/dist/_chunks/{dropdown-menu-Dw6sgQwJ.js → dropdown-menu-DBWaW4pq.js} +92 -88
  44. package/dist/_chunks/dropdown-menu-DBWaW4pq.js.map +1 -0
  45. package/dist/_chunks/{editable-currency-cell-renderer-BlK-8A7b.js → editable-currency-cell-renderer-CZMQ5xRT.js} +2 -2
  46. package/dist/_chunks/{editable-currency-cell-renderer-BlK-8A7b.js.map → editable-currency-cell-renderer-CZMQ5xRT.js.map} +1 -1
  47. package/dist/_chunks/{face-scheme-Bt07zQJU.js → face-scheme-D_Y1StPl.js} +3 -3
  48. package/dist/_chunks/{face-scheme-Bt07zQJU.js.map → face-scheme-D_Y1StPl.js.map} +1 -1
  49. package/dist/_chunks/{file-manager-Dpwv0qs-.js → file-manager-Bzr5NK1t.js} +5 -5
  50. package/dist/_chunks/{file-manager-Dpwv0qs-.js.map → file-manager-Bzr5NK1t.js.map} +1 -1
  51. package/dist/_chunks/{header-settings-ZGvYAuKF.js → header-settings-Cu-MKOsO.js} +2 -2
  52. package/dist/_chunks/{header-settings-ZGvYAuKF.js.map → header-settings-Cu-MKOsO.js.map} +1 -1
  53. package/dist/_chunks/{heatmap-Ds5DJBUL.js → heatmap-C5gJin_F.js} +3 -3
  54. package/dist/_chunks/{heatmap-Ds5DJBUL.js.map → heatmap-C5gJin_F.js.map} +1 -1
  55. package/dist/_chunks/{help-me-write-templates-C28E_rOt.js → help-me-write-templates-DO6vJeP4.js} +2 -2
  56. package/dist/_chunks/{help-me-write-templates-C28E_rOt.js.map → help-me-write-templates-DO6vJeP4.js.map} +1 -1
  57. package/dist/_chunks/{icon-button-group-BKtkVZ1W.js → icon-button-group-SmkdVCNx.js} +2 -2
  58. package/dist/_chunks/{icon-button-group-BKtkVZ1W.js.map → icon-button-group-SmkdVCNx.js.map} +1 -1
  59. package/dist/_chunks/{invoice-upload-list-tJY7W1g_.js → invoice-upload-list-868v1oDe.js} +3 -3
  60. package/dist/_chunks/{invoice-upload-list-tJY7W1g_.js.map → invoice-upload-list-868v1oDe.js.map} +1 -1
  61. package/dist/_chunks/{link-cell-renderer-CC9VHU68.js → link-cell-renderer-D3JLPURZ.js} +2 -2
  62. package/dist/_chunks/{link-cell-renderer-CC9VHU68.js.map → link-cell-renderer-D3JLPURZ.js.map} +1 -1
  63. package/dist/_chunks/{marketplace-app-shell-D_HA8CKx.js → marketplace-app-shell-dMmxI6MT.js} +4 -4
  64. package/dist/_chunks/{marketplace-app-shell-D_HA8CKx.js.map → marketplace-app-shell-dMmxI6MT.js.map} +1 -1
  65. package/dist/_chunks/{muscle-scheme-DdIdm8Gw.js → muscle-scheme-BGJD62op.js} +2 -2
  66. package/dist/_chunks/{muscle-scheme-DdIdm8Gw.js.map → muscle-scheme-BGJD62op.js.map} +1 -1
  67. package/dist/_chunks/{notes-panel-DIY7eNsq.js → notes-panel-Cm-_pCRJ.js} +3 -3
  68. package/dist/_chunks/{notes-panel-DIY7eNsq.js.map → notes-panel-Cm-_pCRJ.js.map} +1 -1
  69. package/dist/_chunks/{parts-tGzYz0uG.js → parts-BOnDDU3E.js} +2 -2
  70. package/dist/_chunks/{parts-tGzYz0uG.js.map → parts-BOnDDU3E.js.map} +1 -1
  71. package/dist/_chunks/{patient-search-OAwFgOW3.js → patient-search-DBvLFArV.js} +2 -2
  72. package/dist/_chunks/{patient-search-OAwFgOW3.js.map → patient-search-DBvLFArV.js.map} +1 -1
  73. package/dist/_chunks/{practice-results-BDnZtbDM.js → practice-results-M5A9-X9y.js} +3 -3
  74. package/dist/_chunks/{practice-results-BDnZtbDM.js.map → practice-results-M5A9-X9y.js.map} +1 -1
  75. package/dist/_chunks/{public-header.agent-Db4wm6_S.js → public-header.agent-DaeDfLfy.js} +2 -2
  76. package/dist/_chunks/{public-header.agent-Db4wm6_S.js.map → public-header.agent-DaeDfLfy.js.map} +1 -1
  77. package/dist/_chunks/{radiograph-panel.agent-B-r3BoqU.js → radiograph-panel.agent-88VjqlG7.js} +2 -2
  78. package/dist/_chunks/{radiograph-panel.agent-B-r3BoqU.js.map → radiograph-panel.agent-88VjqlG7.js.map} +1 -1
  79. package/dist/_chunks/{rich-text-editor-TnX0SYdq.js → rich-text-editor-DjHL1b3E.js} +3 -3
  80. package/dist/_chunks/{rich-text-editor-TnX0SYdq.js.map → rich-text-editor-DjHL1b3E.js.map} +1 -1
  81. package/dist/_chunks/{row-actions-Dpf9CrCP.js → row-actions-BF2-uizV.js} +3 -3
  82. package/dist/_chunks/{row-actions-Dpf9CrCP.js.map → row-actions-BF2-uizV.js.map} +1 -1
  83. package/dist/_chunks/{sheet-uZZXaO_S.js → sheet-BdhYeQQT.js} +84 -72
  84. package/dist/_chunks/sheet-BdhYeQQT.js.map +1 -0
  85. package/dist/_chunks/{signature-request-DW2PSp66.js → signature-request-4pGq3YBe.js} +3 -3
  86. package/dist/_chunks/{signature-request-DW2PSp66.js.map → signature-request-4pGq3YBe.js.map} +1 -1
  87. package/dist/_chunks/{tab-bar-CF8R38Og.js → tab-bar-CeC2QOwB.js} +2 -2
  88. package/dist/_chunks/{tab-bar-CF8R38Og.js.map → tab-bar-CeC2QOwB.js.map} +1 -1
  89. package/dist/_chunks/{tabs-P4qFmxk5.js → tabs-CRIDBLP7.js} +2 -2
  90. package/dist/_chunks/{tabs-P4qFmxk5.js.map → tabs-CRIDBLP7.js.map} +1 -1
  91. package/dist/_chunks/{task-editor-CVRrDqpe.js → task-editor-BL2hHxNz.js} +3 -3
  92. package/dist/_chunks/{task-editor-CVRrDqpe.js.map → task-editor-BL2hHxNz.js.map} +1 -1
  93. package/dist/_chunks/{tasks-panel-DBSm3WjK.js → tasks-panel-BE3zaayj.js} +2 -2
  94. package/dist/_chunks/{tasks-panel-DBSm3WjK.js.map → tasks-panel-BE3zaayj.js.map} +1 -1
  95. package/dist/_chunks/{theme-toggle-CeKl8f_f.js → theme-toggle-BQDFxvVS.js} +3 -3
  96. package/dist/_chunks/{theme-toggle-CeKl8f_f.js.map → theme-toggle-BQDFxvVS.js.map} +1 -1
  97. package/dist/_chunks/{token-insert-menu-BrK5NQIq.js → token-insert-menu-BLtfMTJd.js} +2 -2
  98. package/dist/_chunks/{token-insert-menu-BrK5NQIq.js.map → token-insert-menu-BLtfMTJd.js.map} +1 -1
  99. package/dist/_chunks/{toolbar-CC-Ls_eC.js → toolbar-BK6S9PhI.js} +2 -2
  100. package/dist/_chunks/{toolbar-CC-Ls_eC.js.map → toolbar-BK6S9PhI.js.map} +1 -1
  101. package/dist/_chunks/{tooth-scheme-DHRxV2sE.js → tooth-scheme-BtnFgugP.js} +2 -2
  102. package/dist/_chunks/{tooth-scheme-DHRxV2sE.js.map → tooth-scheme-BtnFgugP.js.map} +1 -1
  103. package/dist/_chunks/{use-appointment-details-read-BrykoTOR.js → use-appointment-details-read-_b7FRB1x.js} +4 -4
  104. package/dist/_chunks/{use-appointment-details-read-BrykoTOR.js.map → use-appointment-details-read-_b7FRB1x.js.map} +1 -1
  105. package/dist/_chunks/{verify-identity-types-D_LdByCp.js → verify-identity-types-CxtrBXsZ.js} +2 -2
  106. package/dist/_chunks/{verify-identity-types-D_LdByCp.js.map → verify-identity-types-CxtrBXsZ.js.map} +1 -1
  107. package/dist/_chunks/{widget-picker-DrxJjEkv.js → widget-picker-D3T7e8a4.js} +2 -2
  108. package/dist/_chunks/{widget-picker-DrxJjEkv.js.map → widget-picker-D3T7e8a4.js.map} +1 -1
  109. package/dist/_chunks/{workflow-map-DCjkRuS_.js → workflow-map-DaZFP9SJ.js} +2 -2
  110. package/dist/_chunks/{workflow-map-DCjkRuS_.js.map → workflow-map-DaZFP9SJ.js.map} +1 -1
  111. package/dist/_chunks/{workflow-status-D0avpoeS.js → workflow-status-D1WgGVTP.js} +2 -2
  112. package/dist/_chunks/{workflow-status-D0avpoeS.js.map → workflow-status-D1WgGVTP.js.map} +1 -1
  113. package/dist/_chunks/{workflow-webhook-action-Cae02r_4.js → workflow-webhook-action-BsGSh3h9.js} +2 -2
  114. package/dist/_chunks/{workflow-webhook-action-Cae02r_4.js.map → workflow-webhook-action-BsGSh3h9.js.map} +1 -1
  115. package/dist/agent-catalog.json +1 -1
  116. package/dist/browser-support.js +1 -1
  117. package/dist/components/_shared/body-pointer-lock.d.ts +2 -0
  118. package/dist/components/_shared/body-pointer-lock.d.ts.map +1 -0
  119. package/dist/components/appointment-card/index.js +2 -2
  120. package/dist/components/appointment-details-panel/index.js +1 -1
  121. package/dist/components/appointment-peek/index.js +1 -1
  122. package/dist/components/appointment-timeline/index.js +1 -1
  123. package/dist/components/bill-table/index.js +1 -1
  124. package/dist/components/button-group/index.js +1 -1
  125. package/dist/components/calculator-dialog/index.js +1 -1
  126. package/dist/components/calendar/calendar.d.ts.map +1 -1
  127. package/dist/components/calendar/index.js +1 -1
  128. package/dist/components/care-plan-card/index.js +1 -1
  129. package/dist/components/care-plan-entry-card/index.js +1 -1
  130. package/dist/components/chart/index.js +1 -1
  131. package/dist/components/dashboard-grid/index.js +1 -1
  132. package/dist/components/data-grid/index.js +1 -1
  133. package/dist/components/data-table/index.js +4 -4
  134. package/dist/components/dialog/dialog.d.ts.map +1 -1
  135. package/dist/components/dialog/index.js +1 -1
  136. package/dist/components/document-preview/index.js +1 -1
  137. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  138. package/dist/components/dropdown-menu/index.js +1 -1
  139. package/dist/components/face-scheme/index.js +1 -1
  140. package/dist/components/file-manager/index.js +1 -1
  141. package/dist/components/header-settings/index.js +1 -1
  142. package/dist/components/heatmap/index.js +1 -1
  143. package/dist/components/icon-button-group/index.js +1 -1
  144. package/dist/components/invoice-upload-list/index.js +1 -1
  145. package/dist/components/muscle-scheme/index.js +1 -1
  146. package/dist/components/notes-panel/index.js +1 -1
  147. package/dist/components/patient-search/index.js +1 -1
  148. package/dist/components/patient-table/index.js +1 -1
  149. package/dist/components/practice-results/index.js +1 -1
  150. package/dist/components/public-header/index.js +1 -1
  151. package/dist/components/radiograph-panel/index.js +1 -1
  152. package/dist/components/rich-text-editor/index.js +1 -1
  153. package/dist/components/row-actions/index.js +1 -1
  154. package/dist/components/sheet/index.js +1 -1
  155. package/dist/components/sheet/sheet.d.ts.map +1 -1
  156. package/dist/components/skeleton-scheme/index.js +1 -1
  157. package/dist/components/tab-bar/index.js +1 -1
  158. package/dist/components/tabs/index.js +1 -1
  159. package/dist/components/task-editor/index.js +1 -1
  160. package/dist/components/tasks-panel/index.js +1 -1
  161. package/dist/components/theme-toggle/index.js +1 -1
  162. package/dist/components/token-insert-menu/index.js +1 -1
  163. package/dist/components/tooth-scheme/index.js +1 -1
  164. package/dist/components/widget-picker/index.js +1 -1
  165. package/dist/components/workflow/index.js +1 -1
  166. package/dist/components/workflow-status/index.js +1 -1
  167. package/dist/index.js +54 -54
  168. package/dist/patterns/alia-assistant/index.js +1 -1
  169. package/dist/patterns/anamnesis/index.js +1 -1
  170. package/dist/patterns/calendar/index.js +1 -1
  171. package/dist/patterns/help-me-write-templates/index.js +1 -1
  172. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  173. package/dist/patterns/signature-request/index.js +1 -1
  174. package/dist/patterns/verify-identity/index.js +1 -1
  175. package/dist/patterns/workflow-webhook-action/index.js +1 -1
  176. package/package.json +1 -1
  177. package/dist/_chunks/dialog-CIUn5oLb.js.map +0 -1
  178. package/dist/_chunks/dropdown-menu-Dw6sgQwJ.js.map +0 -1
  179. package/dist/_chunks/sheet-uZZXaO_S.js.map +0 -1
package/dist/index.js CHANGED
@@ -11,11 +11,11 @@ import { u as M } from "./_chunks/use-prism-DBOiELx7.js";
11
11
  import { B as y } from "./_chunks/button-DohK_Ak_.js";
12
12
  import { I as G } from "./_chunks/icon-button-S8_weU3g.js";
13
13
  import { b as v } from "./_chunks/button.agent-BuGZBktn.js";
14
- import { B as H } from "./_chunks/button-group-B2MJo0Se.js";
14
+ import { B as H } from "./_chunks/button-group-DuQuuulC.js";
15
15
  import { D as w } from "./_chunks/dev-bypass-button-B7ePcJcg.js";
16
16
  import { d as Y } from "./_chunks/dev-bypass-button.agent-BJqFSTqE.js";
17
17
  import { F as q } from "./_chunks/floating-action-button-BesoUmO_.js";
18
- import { I as Q } from "./_chunks/icon-button-group-BKtkVZ1W.js";
18
+ import { I as Q } from "./_chunks/icon-button-group-SmkdVCNx.js";
19
19
  import { S as Z } from "./_chunks/sign-in-with-alfadocs-button-DzrNgbWv.js";
20
20
  import { SafeHtml as $, sanitiseHtml as aa } from "./safe-html/index.js";
21
21
  import { FATTURAPA_DECIMAL as sa, FATTURAPA_VALUE as ra, compareDecimal as oa, decimalToNumber as ta, divideDecimal as ia, formatDecimal as na, isDecimalString as pa, multiplyDecimal as ma, numberToDecimal as la, parseDecimal as Aa, rescaleDecimal as da, sumDecimals as Sa } from "./decimal/index.js";
@@ -48,7 +48,7 @@ import { I as ss, i as rs } from "./_chunks/icon-picker-BmU6gpZT.js";
48
48
  import { I as ts, a as is, c as ns, b as ps, d as ms, i as ls, t as As } from "./_chunks/image-cropper-Ch80rFdt.js";
49
49
  import { P as Ss, p as fs, a as cs } from "./_chunks/permission-matrix-BXmhICzN.js";
50
50
  import { P as gs, p as Cs, g as Is } from "./_chunks/position-grid-CBB88EaH.js";
51
- import { T as xs, t as _s } from "./_chunks/token-insert-menu-BrK5NQIq.js";
51
+ import { T as xs, t as _s } from "./_chunks/token-insert-menu-BLtfMTJd.js";
52
52
  import { F as Ps, b as Rs, f as Ls } from "./_chunks/file-upload-DQc0LsBM.js";
53
53
  import { I as Ds, a as bs, i as Os } from "./_chunks/types-BrJRsnSG.js";
54
54
  import { F as hs } from "./_chunks/form-field-CyHfOVKF.js";
@@ -88,10 +88,10 @@ import { A as _o, g as uo, n as Po } from "./_chunks/avatar-Dp5apm1d.js";
88
88
  import { B as Lo } from "./_chunks/badge-BUk4RjTS.js";
89
89
  import { B as Do } from "./_chunks/benefit-card-BcPtRHgM.js";
90
90
  import { B as Oo, a as Fo, b as ho, c as Mo, d as Bo, e as yo, f as ko, g as Go, h as Uo, i as vo, j as Wo, k as Ho, l as Vo, m as wo, n as Ko, o as Yo, p as Xo, q as qo, r as jo, s as Qo, t as zo } from "./_chunks/bill-line-table-CzYzg-Qh.js";
91
- import { B as Jo, a as $o, b as at, c as et, d as st, e as rt, f as ot, g as tt, h as it, i as nt, j as pt, k as mt, l as lt, m as At, u as dt } from "./_chunks/default-tabs-BnB6FUEW.js";
91
+ import { B as Jo, a as $o, b as at, c as et, d as st, e as rt, f as ot, g as tt, h as it, i as nt, j as pt, k as mt, l as lt, m as At, u as dt } from "./_chunks/default-tabs-BryvhiHv.js";
92
92
  import { B as ft } from "./_chunks/bmi-calculator-rri5vvMt.js";
93
93
  import { b as Tt, a as gt, c as Ct, d as It, e as Et, f as xt, i as _t, k as ut, l as Pt } from "./_chunks/bmi-BxD-tFzU.js";
94
- import { C as Lt } from "./_chunks/calculator-dialog-BGX5XQCM.js";
94
+ import { C as Lt } from "./_chunks/calculator-dialog-Cg3GjaRf.js";
95
95
  import { C as Dt, L as bt, p as Ot } from "./_chunks/cycle-calculator-WFhMfJHt.js";
96
96
  import { C as ht } from "./_chunks/card-n6W6LW-N.js";
97
97
  import { C as Bt, c as yt } from "./_chunks/carousel.agent-CkDXR3-8.js";
@@ -99,19 +99,19 @@ import { C as Gt, c as Ut } from "./_chunks/connection-status-DWClakYw.js";
99
99
  import { C as Wt } from "./_chunks/contact-card-BSY2YpLZ.js";
100
100
  import { C as Vt } from "./_chunks/counter-WsvRuum1.js";
101
101
  import { D as Kt, a as Yt, b as Xt, c as qt, d as jt, e as Qt, f as zt } from "./_chunks/data-grid-C9xlUMLt.js";
102
- import { D as Jt, a as $t } from "./_chunks/toolbar-CC-Ls_eC.js";
102
+ import { D as Jt, a as $t } from "./_chunks/toolbar-BK6S9PhI.js";
103
103
  import { D as ei, a as si, b as ri, d as oi } from "./_chunks/data-grid-tabs-D9Y4DeeH.js";
104
- import { D as ii, E as ni, T as pi, a as mi, b as li, c as Ai, d as di, e as Si, f as fi, i as ci, g as Ti } from "./_chunks/data-table-BCfkcPti.js";
105
- import { B as Ci, C as Ii, a as Ei, E as xi, b as _i, R as ui, T as Pi, c as Ri, r as Li, u as Ni, w as Di } from "./_chunks/editable-currency-cell-renderer-BlK-8A7b.js";
106
- import { D as Oi, a as Fi, b as hi, I as Mi, L as Bi, N as yi, c as ki, S as Gi, d as Ui, e as vi, T as Wi, f as Hi, g as Vi, U as wi } from "./_chunks/link-cell-renderer-CC9VHU68.js";
107
- import { A as Yi, a as Xi } from "./_chunks/actions-cell-renderer-DTaIQKp9.js";
104
+ import { D as ii, E as ni, T as pi, a as mi, b as li, c as Ai, d as di, e as Si, f as fi, i as ci, g as Ti } from "./_chunks/data-table-FTV3uRjX.js";
105
+ import { B as Ci, C as Ii, a as Ei, E as xi, b as _i, R as ui, T as Pi, c as Ri, r as Li, u as Ni, w as Di } from "./_chunks/editable-currency-cell-renderer-CZMQ5xRT.js";
106
+ import { D as Oi, a as Fi, b as hi, I as Mi, L as Bi, N as yi, c as ki, S as Gi, d as Ui, e as vi, T as Wi, f as Hi, g as Vi, U as wi } from "./_chunks/link-cell-renderer-D3JLPURZ.js";
107
+ import { A as Yi, a as Xi } from "./_chunks/actions-cell-renderer-C-l_ppP6.js";
108
108
  import { D as ji, d as Qi, a as zi, b as Zi } from "./_chunks/data-table-tabs-NYLhD8_Z.js";
109
- import { R as $i } from "./_chunks/row-actions-Dpf9CrCP.js";
109
+ import { R as $i } from "./_chunks/row-actions-BF2-uizV.js";
110
110
  import { C as en, c as sn } from "./_chunks/clinical-note-card-pPaeWWnu.js";
111
111
  import { N as on, n as tn } from "./_chunks/note-timeline-BQeW0VZY.js";
112
112
  import { D as pn } from "./_chunks/description-list-BxzDN9o2.js";
113
113
  import { E as ln } from "./_chunks/empty-state-DwJ5YNzz.js";
114
- import { F as dn, f as Sn } from "./_chunks/file-manager-Dpwv0qs-.js";
114
+ import { F as dn, f as Sn } from "./_chunks/file-manager-Bzr5NK1t.js";
115
115
  import { F as cn, a as Tn, h as gn } from "./_chunks/flag-DVBE6DnB.js";
116
116
  import { K as In, k as En } from "./_chunks/kbd-Bx7eQv9f.js";
117
117
  import { K as _n, a as un, S as Pn } from "./_chunks/key-value-pair-DOTl68_U.js";
@@ -140,15 +140,15 @@ import { L as gm } from "./_chunks/link-CeV7FoI6.js";
140
140
  import { P as Im, a as Em, b as xm, c as _m, d as um, e as Pm, f as Rm, g as Lm, p as Nm } from "./_chunks/pagination-C7N_NiRN.js";
141
141
  import { D as bm, a as Om, P as Fm, S as hm, c as Mm } from "./_chunks/public-footer-D0cqScpz.js";
142
142
  import { p as ym } from "./_chunks/public-footer.agent-CRZCrq3_.js";
143
- import { P as Gm, p as Um } from "./_chunks/public-header.agent-Db4wm6_S.js";
143
+ import { P as Gm, p as Um } from "./_chunks/public-header.agent-DaeDfLfy.js";
144
144
  import { S as Wm, f as Hm, s as Vm } from "./_chunks/search-bar-CQ9_V3EJ.js";
145
145
  import { S as Km, a as Ym, b as Xm, c as qm, d as jm, e as Qm, f as zm, g as Zm, h as Jm, i as $m, j as al, k as el, l as sl, m as rl, n as ol, o as tl, p as il, q as nl, r as pl, s as ml, t as ll, u as Al, v as dl } from "./_chunks/sidebar-D5DFYN5K.js";
146
146
  import { S as fl } from "./_chunks/stepper-accordion-CYjrmRte.js";
147
147
  import { s as Tl } from "./_chunks/stepper-accordion.agent-cmEguIdx.js";
148
148
  import { S as Cl, s as Il } from "./_chunks/stepper-progress-D6H8wQiV.js";
149
- import { T as xl } from "./_chunks/tab-bar-CF8R38Og.js";
150
- import { T as ul, a as Pl, b as Rl, c as Ll, t as Nl } from "./_chunks/tabs-P4qFmxk5.js";
151
- import { T as bl, t as Ol } from "./_chunks/theme-toggle-CeKl8f_f.js";
149
+ import { T as xl } from "./_chunks/tab-bar-CeC2QOwB.js";
150
+ import { T as ul, a as Pl, b as Rl, c as Ll, t as Nl } from "./_chunks/tabs-CRIDBLP7.js";
151
+ import { T as bl, t as Ol } from "./_chunks/theme-toggle-BQDFxvVS.js";
152
152
  import { A as hl } from "./_chunks/agenda-card-B8hV3dZV.js";
153
153
  import { a as Bl } from "./_chunks/agenda-card.agent-Cb5tuEh3.js";
154
154
  import { i as kl, i as Gl, i as Ul, i as vl } from "./_chunks/is-safe-url-DkETxeHz.js";
@@ -158,20 +158,20 @@ import { A as ql } from "./_chunks/ai-credits-notice-BNFcQoXo.js";
158
158
  import { a as Ql, b as zl, c as Zl } from "./_chunks/ai-credits-exhausted-notice.agent-DgTSTgez.js";
159
159
  import { A as $l, a as aA, i as eA } from "./_chunks/ai-credits-exhausted-notice-Lws3113e.js";
160
160
  import { A as rA } from "./_chunks/alert-C4WKViaS.js";
161
- import { A as tA } from "./_chunks/appointment-card-vbUsDh70.js";
162
- import { A as nA, a as pA, b as mA } from "./_chunks/appointment-tray-BhiXetjs.js";
163
- import { A as AA } from "./_chunks/appointment-peek-DdUhqfEi.js";
161
+ import { A as tA } from "./_chunks/appointment-card-OAOur8lH.js";
162
+ import { A as nA, a as pA, b as mA } from "./_chunks/appointment-tray-DSFqO5Rm.js";
163
+ import { A as AA } from "./_chunks/appointment-peek-DZa6xyUb.js";
164
164
  import { a as SA } from "./_chunks/appointment-peek.agent-C539tNFM.js";
165
- import { A as cA, D as TA, a as gA, p as CA, u as IA } from "./_chunks/use-appointment-details-read-BrykoTOR.js";
166
- import { A as xA, a as _A } from "./_chunks/appointment-timeline-B5pfBl-b.js";
167
- import { D as PA, d as RA } from "./_chunks/dialog-CIUn5oLb.js";
168
- import { D as NA, d as DA } from "./_chunks/dropdown-menu-Dw6sgQwJ.js";
165
+ import { A as cA, D as TA, a as gA, p as CA, u as IA } from "./_chunks/use-appointment-details-read-_b7FRB1x.js";
166
+ import { A as xA, a as _A } from "./_chunks/appointment-timeline-DQePqpyH.js";
167
+ import { D as PA, d as RA } from "./_chunks/dialog-CVTxyR0v.js";
168
+ import { D as NA, d as DA } from "./_chunks/dropdown-menu-DBWaW4pq.js";
169
169
  import { E as OA } from "./_chunks/error-boundary-tAn_GuCu.js";
170
170
  import { E as hA } from "./_chunks/error-summary-DxNhwf_G.js";
171
171
  import { F as BA } from "./_chunks/finished-terminal-FR8uc_Ws.js";
172
172
  import { H as kA, h as GA, u as UA } from "./_chunks/hover-card-CuRIA4wN.js";
173
173
  import { I as WA, i as HA } from "./_chunks/info-tip-B3cn3fY2.js";
174
- import { I as wA, a as KA, b as YA, c as XA, d as qA, i as jA } from "./_chunks/invoice-upload-list-tJY7W1g_.js";
174
+ import { I as wA, a as KA, b as YA, c as XA, d as qA, i as jA } from "./_chunks/invoice-upload-list-868v1oDe.js";
175
175
  import { L as zA } from "./_chunks/live-region-C41SO3cA.js";
176
176
  import { M as JA } from "./_chunks/matrix-rain-sDOUUwZp.js";
177
177
  import { M as ad } from "./_chunks/message-card-BG3_3nN1.js";
@@ -181,20 +181,20 @@ import { N as nd, i as pd } from "./_chunks/notification-card-DRMv2_pW.js";
181
181
  import { n as ld } from "./_chunks/notification-card.agent-DxGBZb8T.js";
182
182
  import { N as dd, n as Sd } from "./_chunks/notification-tray-mlCfxNRH.js";
183
183
  import { N as cd, n as Td } from "./_chunks/notice-group-B-trhof8.js";
184
- import { N as Cd } from "./_chunks/notes-panel-DIY7eNsq.js";
184
+ import { N as Cd } from "./_chunks/notes-panel-Cm-_pCRJ.js";
185
185
  import { P as Ed, p as xd } from "./_chunks/popover-CN5IsOeS.js";
186
- import { R as ud, I as Pd, r as Rd } from "./_chunks/radiograph-panel.agent-B-r3BoqU.js";
186
+ import { R as ud, I as Pd, r as Rd } from "./_chunks/radiograph-panel.agent-88VjqlG7.js";
187
187
  import { P as Nd, R as Dd, T as bd, a as Od, p as Fd, r as hd } from "./_chunks/pregnancy-weight-gain-DkGcEc_l.js";
188
188
  import { P as Bd, p as yd } from "./_chunks/privacy-lock-CcrjIbBv.js";
189
189
  import { P as Gd, a as Ud, p as vd, b as Wd } from "./_chunks/product-hub-panel-a8wdVOUt.js";
190
190
  import { P as Vd, p as wd } from "./_chunks/progress-D_g_Sl2g.js";
191
191
  import { P as Yd, p as Xd } from "./_chunks/progress-notice-F7ao70ZP.js";
192
- import { S as jd, s as Qd } from "./_chunks/sheet-uZZXaO_S.js";
192
+ import { S as jd, s as Qd } from "./_chunks/sheet-BdhYeQQT.js";
193
193
  import { S as Zd } from "./_chunks/spinner-CoflYlEx.js";
194
194
  import { T as $d, i as aS } from "./_chunks/task-card-BNbkwIYM.js";
195
195
  import { t as sS } from "./_chunks/task-card.agent-CF2N_uu4.js";
196
196
  import { T as oS, t as tS } from "./_chunks/task-tray-Bmi9wCHq.js";
197
- import { T as nS, t as pS } from "./_chunks/tasks-panel-DBSm3WjK.js";
197
+ import { T as nS, t as pS } from "./_chunks/tasks-panel-BE3zaayj.js";
198
198
  import { T as lS, t as AS, a as dS, b as SS, c as fS, d as cS } from "./_chunks/toast-DQ1Zu1kk.js";
199
199
  import { t as gS } from "./_chunks/toast.agent-DNQ0JYGv.js";
200
200
  import { T as IS, a as ES } from "./_chunks/tooltip-uEBdD1-5.js";
@@ -210,8 +210,8 @@ import { S as $S } from "./_chunks/separator-Bdc9bqoJ.js";
210
210
  import { T as ef } from "./_chunks/theme-root-BOO73p5t.js";
211
211
  import { C as rf, U as of, a as tf, b as nf, c as pf } from "./_chunks/unit-converter-YKlHyUC2.js";
212
212
  import { V as lf } from "./_chunks/visually-hidden-BHxEUGyT.js";
213
- import { C as df, c as Sf, a as ff } from "./_chunks/chart-Aue_2dMb.js";
214
- import { H as Tf, a as gf, b as Cf, h as If } from "./_chunks/heatmap-Ds5DJBUL.js";
213
+ import { C as df, c as Sf, a as ff } from "./_chunks/chart-D0EeFWst.js";
214
+ import { H as Tf, a as gf, b as Cf, h as If } from "./_chunks/heatmap-C5gJin_F.js";
215
215
  import { A as xf, a as _f } from "./_chunks/ai-prompt-input-JIPbrTF3.js";
216
216
  import { A as Pf } from "./_chunks/ai-sparkle-D23NT8Z_.js";
217
217
  import { A as Lf, a as Nf } from "./_chunks/audio-recorder-CsnM_WDy.js";
@@ -228,22 +228,22 @@ import { T as Zf, t as Jf } from "./_chunks/transcript-panel-Wr8e4Zgi.js";
228
228
  import { T as ac } from "./_chunks/typing-indicator-B1RkE8jD.js";
229
229
  import { V as sc, v as rc } from "./_chunks/voice-control-panel-Be_c0CQ0.js";
230
230
  import { A as tc } from "./_chunks/anamnesis-card-sUFT0dpF.js";
231
- import { D as nc, F as pc, a as mc, M as lc, b as Ac, e as dc, f as Sc, c as fc, g as cc, d as Tc, m as gc, r as Cc, u as Ic, v as Ec } from "./_chunks/muscle-scheme-DdIdm8Gw.js";
231
+ import { D as nc, F as pc, a as mc, M as lc, b as Ac, e as dc, f as Sc, c as fc, g as cc, d as Tc, m as gc, r as Cc, u as Ic, v as Ec } from "./_chunks/muscle-scheme-BGJD62op.js";
232
232
  import { A as _c, a as uc, b as Pc, c as Rc, d as Lc, e as Nc, C as Dc, f as bc, g as Oc, D as Fc, h as hc, E as Mc, L as Bc, O as yc, P as kc, i as Gc, j as Uc, k as vc, l as Wc, R as Hc, S as Vc, m as wc, n as Kc, o as Yc, p as Xc, q as qc, r as jc, s as Qc, t as zc, u as Zc, v as Jc, w as $c, x as aT, y as eT, z as sT, B as rT, F as oT } from "./_chunks/optical-prescription-Da_r8pMr.js";
233
233
  import { B as iT, a as nT, C as pT, O as mT, b as lT, c as AT } from "./_chunks/reserved.agent-BBuWWtYb.js";
234
- import { C as ST, c as fT, r as cT } from "./_chunks/calendar-DzR-vdJ5.js";
234
+ import { C as ST, c as fT, r as cT } from "./_chunks/calendar-BIoOeBTT.js";
235
235
  import { C as gT } from "./_chunks/calendar-event-card-BNEzkjm-.js";
236
236
  import { R as IT, a as ET } from "./_chunks/resource-chip-DB5jDwUO.js";
237
- import { C as _T, c as uT } from "./_chunks/care-plan-card-CwgkImOD.js";
238
- import { C as RT, c as LT } from "./_chunks/care-plan-entry-card-cdojypxu.js";
237
+ import { C as _T, c as uT } from "./_chunks/care-plan-card-DKScH9Ss.js";
238
+ import { C as RT, c as LT } from "./_chunks/care-plan-entry-card-AG1y3nyW.js";
239
239
  import { C as DT, c as bT } from "./_chunks/care-plan-header-Dx5OMkc9.js";
240
240
  import { O as FT, o as hT } from "./_chunks/operator-hero-CnfWckNQ.js";
241
241
  import { P as BT, p as yT } from "./_chunks/practice-profile-hero-BFS6lO2a.js";
242
242
  import { P as GT, p as UT } from "./_chunks/patient-details-DBtEITfE.js";
243
- import { P as WT, p as HT } from "./_chunks/patient-search-OAwFgOW3.js";
243
+ import { P as WT, p as HT } from "./_chunks/patient-search-DBvLFArV.js";
244
244
  import { P as wT, p as KT } from "./_chunks/patient-summary-card-BUcZ-gaL.js";
245
245
  import { A as XT, a as qT } from "./_chunks/anamnesis-summary-card-BtFPpegp.js";
246
- import { B as QT, C as zT, N as ZT, P as JT, a as $T, T as ag, b as eg, g as sg, u as rg } from "./_chunks/balance-badge-cell-BtFge7Y6.js";
246
+ import { B as QT, C as zT, N as ZT, P as JT, a as $T, T as ag, b as eg, g as sg, u as rg } from "./_chunks/balance-badge-cell-DTiMdnCZ.js";
247
247
  import { B as tg, M as ig, P as ng, a as pg, b as mg, c as lg, d as Ag, S as dg, e as Sg, f as fg, g as cg, h as Tg, p as gg, i as Cg, j as Ig, k as Eg, s as xg, t as _g, l as ug } from "./_chunks/periodontal-chart-DqHrQY4e.js";
248
248
  import { P as Rg, a as Lg, p as Ng } from "./_chunks/periodontal-chart-card-q9WSHRC2.js";
249
249
  import { D as bg, P as Og, a as Fg, b as hg, c as Mg, S as Bg, e as yg, i as kg, p as Gg } from "./_chunks/periodontal-diagnosis-CJPWluQU.js";
@@ -251,12 +251,12 @@ import { P as vg, a as Wg, c as Hg, p as Vg, r as wg } from "./_chunks/periodont
251
251
  import { C as Yg, a as Xg, b as qg, c as jg } from "./_chunks/contact-profile-card-CsZNMlws.js";
252
252
  import { S as zg, a as Zg, b as Jg, c as $g, r as aC } from "./_chunks/specialty-icon-BkpExzMh.js";
253
253
  import { S as sC } from "./_chunks/specialty-list-BzalHR8_.js";
254
- import { P as oC, p as tC } from "./_chunks/practice-results-BDnZtbDM.js";
254
+ import { P as oC, p as tC } from "./_chunks/practice-results-M5A9-X9y.js";
255
255
  import { P as nC, a as pC, p as mC, b as lC } from "./_chunks/payment-request-card-Dv4WbRBe.js";
256
256
  import { P as dC, f as SC, p as fC, a as cC, s as TC, b as gC, c as CC } from "./_chunks/payment-form-C-s1x-bU.js";
257
257
  import { P as EC, p as xC } from "./_chunks/pdf-viewer-BnBKdx0y.js";
258
258
  import { R as uC, r as PC } from "./_chunks/reviews-panel-CdHUSndF.js";
259
- import { R as LC, r as NC, w as DC } from "./_chunks/rich-text-editor-TnX0SYdq.js";
259
+ import { R as LC, r as NC, w as DC } from "./_chunks/rich-text-editor-DjHL1b3E.js";
260
260
  import { k as OC } from "./_chunks/kit-extensions-DUaIYyMD.js";
261
261
  import { E as hC } from "./_chunks/editor-overlay-Dc8uVxEp.js";
262
262
  import { S as BC, s as yC } from "./_chunks/signature-capture-BJc7kfqi.js";
@@ -264,36 +264,36 @@ import { S as GC, s as UC } from "./_chunks/signature-field-DjabvRZm.js";
264
264
  import { S as WC, e as HC, s as VC } from "./_chunks/signature-status-chip-pIoQjvH8.js";
265
265
  import { S as KC, s as YC } from "./_chunks/sign-document-CQZVzfpk.js";
266
266
  import { S as qC, f as jC, i as QC, s as zC } from "./_chunks/slot-grid-CfA5zeMv.js";
267
- import { T as JC, t as $C } from "./_chunks/task-editor-CVRrDqpe.js";
268
- import { A as eI, F as sI, a as rI, b as oI, c as tI, d as iI, e as nI, I as pI, f as mI, g as lI, h as AI, i as dI, j as SI, k as fI, l as cI, m as TI, n as gI, o as CI, p as II, q as EI, r as xI, s as _I, t as uI, u as PI } from "./_chunks/face-scheme-Bt07zQJU.js";
269
- import { T as LI, t as NI, r as DI } from "./_chunks/tooth-scheme-DHRxV2sE.js";
267
+ import { T as JC, t as $C } from "./_chunks/task-editor-BL2hHxNz.js";
268
+ import { A as eI, F as sI, a as rI, b as oI, c as tI, d as iI, e as nI, I as pI, f as mI, g as lI, h as AI, i as dI, j as SI, k as fI, l as cI, m as TI, n as gI, o as CI, p as II, q as EI, r as xI, s as _I, t as uI, u as PI } from "./_chunks/face-scheme-D_Y1StPl.js";
269
+ import { T as LI, t as NI, r as DI } from "./_chunks/tooth-scheme-BtnFgugP.js";
270
270
  import { C as OI, a as FI, b as hI, c as MI, d as BI, e as yI, F as kI, f as GI, g as UI, h as vI, I as WI, P as HI, i as VI, S as wI, j as KI, k as YI, l as XI, m as qI, n as jI, T as QI, o as zI, p as ZI, q as JI, r as $I, s as aE, t as eE, u as sE, v as rE, w as oE, x as tE, y as iE, z as nE, A as pE, B as mE, D as lE, E as AE, G as dE, H as SE, J as fE, K as cE, L as TE, M as gE, N as CE, O as IE, Q as EE, R as xE, U as _E, V as uE, W as PE, X as RE, Y as LE, Z as NE, _ as DE, $ as bE } from "./_chunks/tooth-data-DR8Kdnup.js";
271
271
  import { C as FE, D as hE, T as ME, t as BE, a as yE } from "./_chunks/tooth-finding-palette-DNQ3G2Tz.js";
272
272
  import { T as GE } from "./_chunks/transaction-chip-CkYd-3ky.js";
273
273
  import { W as vE, a as WE } from "./_chunks/whatsapp-button-XbozeDl_.js";
274
- import { W as VE, a as wE, w as KE } from "./_chunks/workflow-status-D0avpoeS.js";
274
+ import { W as VE, a as wE, w as KE } from "./_chunks/workflow-status-D1WgGVTP.js";
275
275
  import { A as XE, a as qE, i as jE, u as QE } from "./_chunks/appointment-workflow-status-DMjuIK90.js";
276
- import { C as ZE, W as JE, a as $E, b as ax, c as ex, i as sx, l as rx, m as ox, r as tx, w as ix, d as nx, e as px, f as mx } from "./_chunks/workflow-map-DCjkRuS_.js";
276
+ import { C as ZE, W as JE, a as $E, b as ax, c as ex, i as sx, l as rx, m as ox, r as tx, w as ix, d as nx, e as px, f as mx } from "./_chunks/workflow-map-DaZFP9SJ.js";
277
277
  import { AliaAsteroidIcon as Ax } from "./alia-asteroid-icon/index.js";
278
- import { A as Sx, a as fx, b as cx, c as Tx } from "./_chunks/alia-sidebar-BBxbMRmX.js";
279
- import { A as Cx, a as Ix, L as Ex, P as xx, S as _x, T as ux, b as Px, c as Rx, d as Lx, e as Nx, f as Dx, g as bx, h as Ox, i as Fx, j as hx, k as Mx, l as Bx, m as yx, n as kx, o as Gx, p as Ux, r as vx, q as Wx, s as Hx, t as Vx, u as wx } from "./_chunks/anamnesis-summary-rows-CtcULkvc.js";
280
- import { A as Yx, C as Xx, a as qx, b as jx, c as Qx, d as zx, e as Zx, f as Jx, D as $x, g as a_, S as e_, V as s_, W as r_, h as o_, i as t_, m as i_, r as n_, u as p_, j as m_, k as l_ } from "./_chunks/calendar-appointment-editor-dialog-CXch4Pmu.js";
278
+ import { A as Sx, a as fx, b as cx, c as Tx } from "./_chunks/alia-sidebar-CK1zw_Bc.js";
279
+ import { A as Cx, a as Ix, L as Ex, P as xx, S as _x, T as ux, b as Px, c as Rx, d as Lx, e as Nx, f as Dx, g as bx, h as Ox, i as Fx, j as hx, k as Mx, l as Bx, m as yx, n as kx, o as Gx, p as Ux, r as vx, q as Wx, s as Hx, t as Vx, u as wx } from "./_chunks/anamnesis-summary-rows-CCNmkq55.js";
280
+ import { A as Yx, C as Xx, a as qx, b as jx, c as Qx, d as zx, e as Zx, f as Jx, D as $x, g as a_, S as e_, V as s_, W as r_, h as o_, i as t_, m as i_, r as n_, u as p_, j as m_, k as l_ } from "./_chunks/calendar-appointment-editor-dialog-WW6V1SGh.js";
281
281
  import { E as d_, a as S_, b as f_, e as c_, r as T_ } from "./_chunks/error-page-B0fGNTRB.js";
282
282
  import { E as C_ } from "./_chunks/error-page-illustration-BdJLuMdV.js";
283
283
  import { F as E_, a as x_ } from "./_chunks/forgot-password-form-YvI9vX-G.js";
284
- import { A as u_, a as P_, H as R_, b as L_, u as N_ } from "./_chunks/help-me-write-templates-C28E_rOt.js";
284
+ import { A as u_, a as P_, H as R_, b as L_, u as N_ } from "./_chunks/help-me-write-templates-DO6vJeP4.js";
285
285
  import { L as b_, a as O_, b as F_ } from "./_chunks/login-dev-card-Dz3ezx1o.js";
286
- import { C as M_, M as B_, P as y_ } from "./_chunks/marketplace-app-shell-D_HA8CKx.js";
286
+ import { C as M_, M as B_, P as y_ } from "./_chunks/marketplace-app-shell-dMmxI6MT.js";
287
287
  import { P as G_ } from "./_chunks/payment-automation-upsell-CGdG2Mwk.js";
288
288
  import { R as v_, a as W_ } from "./_chunks/registration-form-CwbhtKcy.js";
289
289
  import { R as V_, a as w_ } from "./_chunks/reset-password-form-D_TePSM1.js";
290
290
  import { S as Y_, a as X_ } from "./_chunks/send-registration-link-form-BjkXr0TD.js";
291
- import { S as j_ } from "./_chunks/signature-request-DW2PSp66.js";
291
+ import { S as j_ } from "./_chunks/signature-request-4pGq3YBe.js";
292
292
  import { S as z_, a as Z_ } from "./_chunks/signed-out-frame-Oa2e1yps.js";
293
- import { C as $_, V as au, a as eu, b as su } from "./_chunks/verify-identity-types-D_LdByCp.js";
294
- import { W as ou, a as tu } from "./_chunks/workflow-webhook-action-Cae02r_4.js";
293
+ import { C as $_, V as au, a as eu, b as su } from "./_chunks/verify-identity-types-CxtrBXsZ.js";
294
+ import { W as ou, a as tu } from "./_chunks/workflow-webhook-action-BsGSh3h9.js";
295
295
  import { D as nu, d as pu } from "./_chunks/dependent-selector-D6y4Kjg5.js";
296
- import { D as lu, d as Au } from "./_chunks/document-preview-BWDTCEHI.js";
296
+ import { D as lu, d as Au } from "./_chunks/document-preview-_kQ9QvZV.js";
297
297
  import { D as Su, d as fu } from "./_chunks/document-scanner-CETscDea.js";
298
298
  import { F as Tu, c as gu, a as Cu, b as Iu, f as Eu, w as xu, i as _u, d as uu } from "./_chunks/fiscal-code-input-BBvU7sAo.js";
299
299
  import { Q as Ru, c as Lu, q as Nu, s as Du } from "./_chunks/qr-code-DHEma21c.js";
@@ -301,8 +301,8 @@ import { S as Ou, s as Fu } from "./_chunks/session-countdown-C4tzbJVc.js";
301
301
  import { S as Mu } from "./_chunks/social-sign-in-button-BqYZxbXI.js";
302
302
  import { W as yu } from "./_chunks/wallet-pay-button-DajFzhHK.js";
303
303
  import { W as Gu, w as Uu } from "./_chunks/warehouse-load-summary-DkAKXcw0.js";
304
- import { D as Wu, d as Hu } from "./_chunks/dashboard-grid-CaxgaEgI.js";
305
- import { W as wu, w as Ku } from "./_chunks/widget-picker-DrxJjEkv.js";
304
+ import { D as Wu, d as Hu } from "./_chunks/dashboard-grid-2uVXEe9e.js";
305
+ import { W as wu, w as Ku } from "./_chunks/widget-picker-D3T7e8a4.js";
306
306
  import { Root as Xu } from "@radix-ui/react-aspect-ratio";
307
307
  import { C as ju, a as Qu, D as zu, G as Zu, M as Ju, T as $u, c as aP, b as eP, g as sP, p as rP, r as oP, d as tP, t as iP } from "./_chunks/antenatal-schedule-timeline-XHbig8On.js";
308
308
  export {
@@ -1,5 +1,5 @@
1
1
  import { AliaAsteroidIcon as e } from "../../alia-asteroid-icon/index.js";
2
- import { A as r, a as A, b as d, c as l } from "../../_chunks/alia-sidebar-BBxbMRmX.js";
2
+ import { A as r, a as A, b as d, c as l } from "../../_chunks/alia-sidebar-CK1zw_Bc.js";
3
3
  export {
4
4
  e as AliaAsteroidIcon,
5
5
  r as AliaChatSurface,
@@ -1,4 +1,4 @@
1
- import { A as e, a as i, L as r, P as n, S as o, T as t, b as l, c as d, d as g, e as A, f as m, g as c, h as E, i as P, j as f, k as S, l as h, m as u, n as T, o as I, p as N, r as R, q as _, s as C, t as L, u as b } from "../../_chunks/anamnesis-summary-rows-CtcULkvc.js";
1
+ import { A as e, a as i, L as r, P as n, S as o, T as t, b as l, c as d, d as g, e as A, f as m, g as c, h as E, i as P, j as f, k as S, l as h, m as u, n as T, o as I, p as N, r as R, q as _, s as C, t as L, u as b } from "../../_chunks/anamnesis-summary-rows-CCNmkq55.js";
2
2
  export {
3
3
  e as Anamnesis,
4
4
  i as AnamnesisConfigEditor,
@@ -1,4 +1,4 @@
1
- import { A as s, C as r, a as t, b as S, c as E, d as n, e as o, f as i, D as A, g as C, S as d, V as P, W as D, h as l, i as _, m as O, r as c, u as p, j as L, k as R } from "../../_chunks/calendar-appointment-editor-dialog-CXch4Pmu.js";
1
+ import { A as s, C as r, a as t, b as S, c as E, d as n, e as o, f as i, D as A, g as C, S as d, V as P, W as D, h as l, i as _, m as O, r as c, u as p, j as L, k as R } from "../../_chunks/calendar-appointment-editor-dialog-WW6V1SGh.js";
2
2
  export {
3
3
  s as AppointmentEditorDialog,
4
4
  r as CALENDAR_PREFERENCE_KEYS,
@@ -1,4 +1,4 @@
1
- import { A as r, a as t, H as s, b as i, u as o } from "../../_chunks/help-me-write-templates-C28E_rOt.js";
1
+ import { A as r, a as t, H as s, b as i, u as o } from "../../_chunks/help-me-write-templates-DO6vJeP4.js";
2
2
  import { A as l } from "../../_chunks/ai-credits-exhausted-notice-Lws3113e.js";
3
3
  export {
4
4
  r as AiCreditsExhaustedError,
@@ -1,4 +1,4 @@
1
- import { C as l, M as o } from "../../_chunks/marketplace-app-shell-D_HA8CKx.js";
1
+ import { C as l, M as o } from "../../_chunks/marketplace-app-shell-dMmxI6MT.js";
2
2
  export {
3
3
  l as ConnectWithAlfadocs,
4
4
  o as MarketplaceAppShell
@@ -1,4 +1,4 @@
1
- import { S as o } from "../../_chunks/signature-request-DW2PSp66.js";
1
+ import { S as o } from "../../_chunks/signature-request-4pGq3YBe.js";
2
2
  export {
3
3
  o as SignatureRequestModal
4
4
  };
@@ -1,4 +1,4 @@
1
- import { C as e, V as t, a as I, b as o } from "../../_chunks/verify-identity-types-D_LdByCp.js";
1
+ import { C as e, V as t, a as I, b as o } from "../../_chunks/verify-identity-types-CxtrBXsZ.js";
2
2
  export {
3
3
  e as ChangeEmailDialog,
4
4
  t as VERIFY_IDENTITY_STEPS,
@@ -1,4 +1,4 @@
1
- import { W as O, a } from "../../_chunks/workflow-webhook-action-Cae02r_4.js";
1
+ import { W as O, a } from "../../_chunks/workflow-webhook-action-BsGSh3h9.js";
2
2
  export {
3
3
  O as WORKFLOW_WEBHOOK_ACTION_FIELDS,
4
4
  a as WorkflowWebhookAction
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfadocs/ui-kit-debug",
3
- "version": "1.130.1",
3
+ "version": "1.130.2",
4
4
  "type": "module",
5
5
  "description": "AlfaDocs shared design system — tokens, components, patterns, and translations for platform, booking, and alfascribe. (debug build — identical runtime to @alfadocs/ui-kit, ships source maps for symbolication).",
6
6
  "license": "BUSL-1.1",
@@ -1 +0,0 @@
1
- {"version":3,"file":"dialog-CIUn5oLb.js","sources":["../../src/components/dialog/focus-return.ts","../../src/components/dialog/dialog.agent.ts","../../src/components/dialog/dialog.tsx"],"sourcesContent":["/*\n * Focus return for a Dialog opened without a Dialog.Trigger.\n *\n * Radix returns focus to its Trigger on close, and to nothing when there is\n * no Trigger, so a controlled dialog opened from a button, a row action or a\n * menu item left focus on <body>. Dialog.Root records where focus was when it\n * opened (`focusReturnCandidates`), and Dialog.Content hands it back on close\n * (`restoreFocus`).\n *\n * A menu item is gone by the time the dialog closes, so the list also holds\n * the control that opened each enclosing menu (a submenu's item, then the\n * menu's trigger): the first one still in the page and focusable wins.\n */\n\n/** How many menu levels to climb; a guard against a labelling loop. */\nconst MAX_MENU_DEPTH = 8;\n\nfunction asHTMLElement(node: Element | null | undefined): HTMLElement | null {\n return node instanceof HTMLElement ? node : null;\n}\n\n/** The control that opened a menu: Radix labels the menu with its trigger's\n * id, and the open trigger names the menu in `aria-controls`. */\nfunction menuOpener(menu: HTMLElement): HTMLElement | null {\n const doc = menu.ownerDocument;\n const labelIds = menu.getAttribute('aria-labelledby')?.split(/\\s+/) ?? [];\n for (const id of labelIds) {\n const label = id ? asHTMLElement(doc.getElementById(id)) : null;\n if (label && !menu.contains(label)) return label;\n }\n if (menu.id) {\n const controller = asHTMLElement(\n doc.querySelector(`[aria-controls~=\"${CSS.escape(menu.id)}\"]`),\n );\n if (controller && !menu.contains(controller)) return controller;\n }\n return null;\n}\n\n/**\n * The elements focus should go back to, best first: the element focused when\n * the dialog opened, then the opener of each menu it sits in. Empty when\n * nothing was focused (focus on <body>).\n */\nexport function focusReturnCandidates(active: Element | null): HTMLElement[] {\n const candidates: HTMLElement[] = [];\n let current = asHTMLElement(active);\n if (!current || current === current.ownerDocument.body) return candidates;\n for (let depth = 0; current && depth <= MAX_MENU_DEPTH; depth += 1) {\n candidates.push(current);\n const menu = current.closest<HTMLElement>('[role=\"menu\"]');\n if (!menu) break;\n current = menuOpener(menu);\n }\n return candidates;\n}\n\nfunction canTakeFocus(element: HTMLElement): boolean {\n return (\n element.isConnected &&\n !element.matches(':disabled') &&\n element.closest('[inert]') === null &&\n element.getClientRects().length > 0\n );\n}\n\n/**\n * Focus the first candidate that is still in the page and can take focus.\n * Returns false when none could, so the caller leaves Radix's default alone.\n */\nexport function restoreFocus(candidates: readonly HTMLElement[]): boolean {\n for (const element of candidates) {\n if (!canTakeFocus(element)) continue;\n // As Radix's own focus return: no scroll jump to a far-off row.\n element.focus({ preventScroll: true });\n if (element.ownerDocument.activeElement === element) return true;\n }\n return false;\n}\n","import type { AgentAdapter } from '../../agent/types';\nimport type { DialogHandle } from './dialog';\n\n/**\n * Dialog wraps Radix Dialog. The curated handle (`DialogHandle`) bridges the\n * Radix controlled-or-uncontrolled `open` state so an agent can observe and\n * drive the dialog without owning the React state itself.\n */\nexport const dialogAgent: AgentAdapter<DialogHandle> = {\n id: 'dialog',\n capabilities: ['open', 'close', 'dismiss'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.dialog.state.isOpen',\n description: 'True when the dialog is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dialog.actions.open',\n description: 'Open the dialog.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dialog.actions.close',\n description: 'Close the dialog. Reversible by reopening.',\n invoke: (handle) => {\n handle.close();\n },\n },\n dismiss: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.dialog.actions.dismiss',\n description:\n 'Dismiss the dialog. Loses any in-progress input that has not been committed.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'dialog' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Dialog.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from 'react';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { useAgentRegistration } from '../../agent';\nimport { useNonModalTabExit } from '../_shared/non-modal-tab-exit';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { focusReturnCandidates, restoreFocus } from './focus-return';\nimport { dialogAgent } from './dialog.agent';\n\n// The `ds-dialog__*` class names below are the framework-agnostic contract\n// defined in src/styles.css (@layer ui-kit-components). The React component\n// renders the SAME classes a vanilla (non-React) host hand-authors — the\n// surface (`ds-dialog__surface` + its size modifiers), the close button\n// (`ds-dialog__close`), and the body slot (`ds-dialog__body`) — so there is\n// ONE visual skin (scrim, radius, elevation, bg, padding, centering, sizing,\n// close-button glyph + hover/focus) and the two surfaces can't drift. The few\n// Tailwind utilities that remain are NOT skin: they are the Radix animation\n// hooks (`data-[state=…]:animate-*`) and the surface focus-suppression chrome\n// — neither lives in the vanilla CSS contract. Layer order\n// (`…, utilities, ui-kit-tokens, ui-kit-components`) puts the `ds-dialog__*`\n// rules after Tailwind's utilities, so the contract owns every visual\n// property and the animation utilities only touch `animation` / `outline`.\nconst OVERLAY_CLASSES = [\n 'ds-dialog__backdrop',\n 'ds:backdrop-blur-sm',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// Animation + focus chrome only — every visual property (position, centering,\n// bg, radius, elevation, padding, sizing) comes from `.ds-dialog__surface`.\nconst SURFACE_CHROME = [\n 'ds:focus-visible:outline-none',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=closed]:zoom-out-95',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// CVA drives only the contract class names per size. `ds-dialog` is the host\n// marker (cascade-reset boundary); `ds-dialog__surface` carries the panel skin;\n// the `--sm` / `--lg` / `--fullscreen` modifiers shift only `max-inline-size`\n// (or the fullscreen geometry) and are defined alongside the base rule in\n// src/styles.css — so size, like the skin, lives in one place.\nconst contentVariants = cva(`ds-dialog ds-dialog__surface ${SURFACE_CHROME}`, {\n variants: {\n size: {\n sm: 'ds-dialog__surface--sm',\n md: '',\n lg: 'ds-dialog__surface--lg',\n xl: 'ds-dialog__surface--xl',\n fullscreen: 'ds-dialog__surface--fullscreen',\n },\n // `body` pins the header and footer and scrolls only `Dialog.Body` once\n // the content passes the height cap. `surface` (default) scrolls the\n // whole panel as one block.\n scroll: {\n surface: '',\n body: 'ds-dialog__surface--scroll-body',\n },\n // `flush` drops the surface padding for content that brings its own\n // header, scroll box and footer (a docked panel thrown in a dialog).\n flush: {\n true: 'ds-dialog__surface--flush',\n false: '',\n },\n },\n defaultVariants: { size: 'md', scroll: 'surface', flush: false },\n});\n\n// Curated agent-readiness handle — see dialog.agent.ts.\nexport interface DialogHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface DialogRootProps extends ComponentPropsWithoutRef<\n typeof RadixDialog.Root\n> {\n /** Opaque instance id — forwarded to Dialog.Content as `data-component-id`. */\n id?: string;\n}\n\ninterface DialogContextValue {\n id?: string;\n modal: boolean;\n /** Set while a Dialog.Trigger is mounted: Radix returns focus to it. */\n triggerRef: MutableRefObject<HTMLButtonElement | null>;\n /** Where focus was when the dialog opened, best first (focus-return.ts). */\n returnFocusRef: MutableRefObject<HTMLElement[]>;\n}\n\nconst DialogContext = createContext<DialogContextValue>({\n modal: true,\n triggerRef: { current: null },\n returnFocusRef: { current: [] },\n});\n\nconst DialogRoot = ({\n children,\n id,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n ...props\n}: DialogRootProps) => {\n const [openRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n const open = openRaw ?? false;\n\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const handle = useMemo<DialogHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(dialogAgent, handle, id);\n\n // Record where focus is as the dialog opens. A layout effect runs before\n // Radix's FocusScope moves focus into the content (a passive effect), so\n // this still sees the button, row action or menu item that opened it.\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const returnFocusRef = useRef<HTMLElement[]>([]);\n useIsomorphicLayoutEffect(() => {\n if (open) {\n returnFocusRef.current = focusReturnCandidates(document.activeElement);\n }\n }, [open]);\n\n const context = useMemo(\n () => ({ id, modal, triggerRef, returnFocusRef }),\n [id, modal],\n );\n\n return (\n <DialogContext.Provider value={context}>\n <RadixDialog.Root\n open={open}\n onOpenChange={setOpen}\n modal={modal}\n {...props}\n >\n {children}\n </RadixDialog.Root>\n </DialogContext.Provider>\n );\n};\nDialogRoot.displayName = 'Dialog.Root';\n\nconst DialogTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Trigger>\n>(({ children, ...props }, ref) => {\n const { triggerRef } = useContext(DialogContext);\n return (\n <RadixDialog.Trigger ref={composeRefs(ref, triggerRef)} {...props}>\n {children}\n </RadixDialog.Trigger>\n );\n});\nDialogTrigger.displayName = 'Dialog.Trigger';\n\nconst DialogClose = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Close>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Close ref={ref} {...props}>\n {children}\n </RadixDialog.Close>\n));\nDialogClose.displayName = 'Dialog.Close';\n\nexport interface DialogContentProps\n extends\n Omit<ComponentPropsWithoutRef<typeof RadixDialog.Content>, 'role'>,\n VariantProps<typeof contentVariants> {\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'fullscreen';\n variant?: 'default' | 'alert' | 'confirmation';\n /**\n * Hide the top-right dismiss \"X\". The default is **variant-aware**: the X is\n * shown for `variant=\"default\"` and hidden for `variant=\"alert\"` /\n * `\"confirmation\"` (forced-choice surfaces, where the decision is made via\n * the explicit footer actions). An explicit value always wins — pass `false`\n * to force the X onto an alert, or `true` to suppress it on a default dialog.\n */\n hideCloseButton?: boolean;\n /**\n * What scrolls once the content passes the height cap (85dvh). `surface`\n * (default) scrolls the whole panel, title and footer included. `body`\n * keeps `Dialog.Header` and `Dialog.Footer` in view and scrolls only\n * `Dialog.Body`, so the content must sit in a `Dialog.Body`. Below 480px\n * of viewport height it falls back to scrolling the whole panel.\n */\n scroll?: 'surface' | 'body';\n /**\n * No surface padding, and the surface becomes a column that does not\n * scroll itself: for one child that brings its own header, scroll box\n * and footer, such as a side panel shown in a dialog. That child must\n * fill the column (`flex: 1; min-block-size: 0`) and scroll inside.\n */\n flush?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (\n {\n size = 'md',\n variant = 'default',\n scroll = 'surface',\n flush = false,\n hideCloseButton,\n className,\n children,\n onKeyDown,\n onCloseAutoFocus,\n onInteractOutside,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const {\n id: instanceId,\n modal,\n triggerRef,\n returnFocusRef,\n } = useContext(DialogContext);\n const contentRef = useRef<HTMLDivElement | null>(null);\n const interactedOutsideRef = useRef(false);\n const exitOnTab = useNonModalTabExit(!modal);\n // Only forward `role` when we actually need to override Radix's default\n // (`role=\"dialog\"`). Passing `role={undefined}` explicitly wins over\n // Radix's internal assignment and strips the attribute entirely.\n const roleOverride =\n variant === 'alert' ? { role: 'alertdialog' as const } : {};\n\n // Variant-aware close default: plain dialogs expose the dismiss X; alert\n // and confirmation dialogs are forced-choice (no X) so the decision is\n // made via the explicit footer actions. An explicit `hideCloseButton`\n // always wins.\n const closeHidden = hideCloseButton ?? variant !== 'default';\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n data-component=\"dialog-overlay\"\n className={OVERLAY_CLASSES}\n />\n <RadixDialog.Content\n ref={composeRefs(ref, contentRef)}\n {...roleOverride}\n data-component=\"dialog\"\n data-component-id={instanceId}\n className={contentVariants({ size, scroll, flush, className })}\n {...props}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n exitOnTab(event);\n }}\n onInteractOutside={(event) => {\n onInteractOutside?.(event);\n if (!event.defaultPrevented) interactedOutsideRef.current = true;\n }}\n onCloseAutoFocus={(event) => {\n onCloseAutoFocus?.(event);\n const interactedOutside = interactedOutsideRef.current;\n interactedOutsideRef.current = false;\n // The host chose a target, or a Dialog.Trigger is mounted and\n // Radix returns focus to it, as before.\n if (event.defaultPrevented || triggerRef.current?.isConnected) {\n return;\n }\n // A non-modal dialog left by clicking elsewhere keeps focus\n // where the user put it (Radix does the same for its Trigger).\n if (!modal && interactedOutside) return;\n const active = document.activeElement;\n const focusMovedOn =\n active !== null &&\n active !== document.body &&\n !contentRef.current?.contains(active);\n if (focusMovedOn) return;\n if (restoreFocus(returnFocusRef.current)) event.preventDefault();\n }}\n >\n {children}\n\n {!closeHidden && (\n // The close is a plain button carrying the `ds-dialog__close`\n // contract class — the SAME class a vanilla host renders. The CSS\n // (src/styles.css) owns its position, sizing, glyph size, hover\n // wash, and focus ring from tokens, so the React and non-React\n // close buttons are identical and can't drift.\n <RadixDialog.Close\n type=\"button\"\n className=\"ds-dialog__close\"\n aria-label={t('common.close', 'Close')}\n >\n <X aria-hidden=\"true\" />\n </RadixDialog.Close>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\nconst DialogHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds-dialog__header', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = 'Dialog.Header';\n\n// Optional body slot. Carries the `ds-dialog__body` contract class — the SAME\n// class a vanilla host renders — so content / iframe slots match between the\n// React and non-React surfaces and can't drift. Additive: content placed\n// directly in Dialog.Content (without this wrapper) still works as before.\nconst DialogBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds-dialog__body', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nDialogBody.displayName = 'Dialog.Body';\n\nconst DialogTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Title>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Title\n ref={ref}\n className={['ds-dialog__title type-title-card ds:break-words', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogTitle.displayName = 'Dialog.Title';\n\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Description>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Description\n ref={ref}\n className={['type-body-sm ds:text-[var(--muted-foreground)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogDescription.displayName = 'Dialog.Description';\n\ninterface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n divider?: boolean;\n}\n\n// Below 384px of footer width (a phone, whatever the dialog size) every\n// action goes full-width on its own line, in DOM order, so each label fits on\n// one line. The footer is its own container; px so a host root cannot move it.\nconst footerVariants = cva(\n [\n 'ds:@container/dialog-footer',\n 'ds:flex ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]',\n 'ds:@max-[384px]/dialog-footer:[&>*]:w-full',\n 'ds:mt-[var(--spacing-md)]',\n ].join(' '),\n {\n variants: {\n divider: {\n true: 'ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-md)]',\n false: '',\n },\n },\n defaultVariants: { divider: false },\n },\n);\n\nconst DialogFooter = forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, divider = false, ...props }, ref) => (\n <div\n ref={ref}\n className={footerVariants({ divider, className })}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = 'Dialog.Footer';\n\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\nexport type { DialogFooterProps };\n"],"names":["MAX_MENU_DEPTH","asHTMLElement","node","menuOpener","menu","doc","labelIds","_a","id","label","controller","focusReturnCandidates","active","candidates","current","depth","canTakeFocus","element","restoreFocus","dialogAgent","handle","OVERLAY_CLASSES","SURFACE_CHROME","contentVariants","cva","DialogContext","createContext","DialogRoot","children","openProp","defaultOpen","onOpenChange","modal","props","openRaw","setOpen","useControllableState","open","openRef","useRef","useEffect","useMemo","useAgentRegistration","triggerRef","returnFocusRef","useIsomorphicLayoutEffect","context","jsx","RadixDialog","DialogTrigger","forwardRef","ref","useContext","composeRefs","DialogClose","DialogContent","size","variant","scroll","flush","hideCloseButton","className","onKeyDown","onCloseAutoFocus","onInteractOutside","t","useTranslation","instanceId","contentRef","interactedOutsideRef","exitOnTab","useNonModalTabExit","roleOverride","closeHidden","jsxs","event","interactedOutside","_b","X","DialogHeader","DialogBody","DialogTitle","DialogDescription","footerVariants","DialogFooter","divider","Dialog"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dropdown-menu-Dw6sgQwJ.js","sources":["../../src/components/dropdown-menu/dropdown-menu.agent.ts","../../src/components/dropdown-menu/dropdown-menu.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { DropdownMenuHandle } from './dropdown-menu';\n\n// The handle cannot run an arbitrary item (Radix owns item activation), so\n// there is no 'pick' capability. It CAN drive settings rows: a ChoiceSub or\n// SwitchItem given a `name` registers with its Root, and set_value /\n// set_checked call that row's own onValueChange / onCheckedChange, exactly\n// as a click would. Rows mount with the menu, so a closed menu opens for the\n// moment and closes again.\nexport const dropdownMenuAgent: AgentAdapter<DropdownMenuHandle> = {\n id: 'dropdown-menu',\n capabilities: ['open', 'close', 'set_value'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.dropdownMenu.state.isOpen',\n description: 'True when the menu is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n settings: {\n type: 'Array<{ setting: string; kind: \"choice\" | \"switch\"; value?: string; options?: string[]; checked?: boolean; disabled: boolean }>',\n descriptionKey: 'ui.agent.dropdownMenu.state.settings',\n description:\n \"The menu's named settings rows and their current values: choice rows with the selected value and every option's value, switch rows with whether they are on. Rows are listed only while the menu is open; open it first to read them.\",\n read: (handle) => handle.getSettings(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dropdownMenu.actions.open',\n description: 'Open the menu.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dropdownMenu.actions.close',\n description: 'Close the menu.',\n invoke: (handle) => {\n handle.close();\n },\n },\n set_value: {\n safety: 'write',\n argsType: '{ setting: string; value: string }',\n argsSchema: {\n type: 'object',\n properties: {\n setting: {\n type: 'string',\n description: \"The row's name (its data-setting attribute).\",\n },\n value: {\n type: 'string',\n description: \"One of the row's option values.\",\n },\n },\n required: ['setting', 'value'],\n },\n idempotent: true,\n errors: [\n 'No choice row with that name in this menu',\n 'The value is not one of the options, or it or the row is disabled',\n ],\n examples: [\n {\n args: { setting: 'slotDensity', value: 'comfortable' },\n note: 'Calendar display settings: switch to comfortable rows.',\n },\n ],\n descriptionKey: 'ui.agent.dropdownMenu.actions.setValue',\n description:\n 'Pick an option on a named choice row (ChoiceSub), as clicking it would. A closed menu opens for the moment and closes again.',\n invoke: (handle, args: { setting: string; value: string }) =>\n handle.setValue(args.setting, args.value),\n },\n set_checked: {\n safety: 'write',\n argsType: '{ setting: string; checked: boolean }',\n argsSchema: {\n type: 'object',\n properties: {\n setting: {\n type: 'string',\n description: \"The row's name (its data-setting attribute).\",\n },\n checked: { type: 'boolean' },\n },\n required: ['setting', 'checked'],\n },\n idempotent: true,\n errors: [\n 'No switch row with that name in this menu',\n 'The row is disabled',\n ],\n examples: [\n {\n args: { setting: 'zebraRows', checked: true },\n note: 'Calendar display settings: turn zebra rows on.',\n },\n ],\n descriptionKey: 'ui.agent.dropdownMenu.actions.setChecked',\n description:\n 'Turn a named switch row (SwitchItem) on or off, as clicking it would. A closed menu opens for the moment and closes again.',\n invoke: (handle, args: { setting: string; checked: boolean }) =>\n handle.setChecked(args.setting, args.checked),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'dropdown-menu' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on DropdownMenu.Root.',\n },\n item: {\n attr: 'data-setting',\n sourceProp: 'name',\n description:\n 'On a ChoiceSub or SwitchItem row given a name: the setting that set_value / set_checked address.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useId,\n useLayoutEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type ReactNode,\n} from 'react';\nimport * as RadixDropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { Check, ChevronRight } from 'lucide-react';\nimport { Separator as DsSeparator } from '../separator/separator';\nimport { Kbd, type KbdNamedKey } from '../kbd/kbd';\nimport { useDocumentDirection } from '../_shared/use-direction';\nimport { MENU_ROW_HIGHLIGHT } from '../_shared/menu-row';\nimport { PopupRegion } from '../_shared/popup-region';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent';\nimport { dropdownMenuAgent } from './dropdown-menu.agent';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst contentVariants = cva(\n [\n 'ds:z-[var(--z-dropdown)]',\n // Roomier panel: wider floor, larger radius, deeper float and a\n // breath more padding so menus read as elevated surfaces rather\n // than flat lists hugging their trigger.\n 'ds:min-w-[14rem]',\n 'ds:rounded-[var(--radius-lg)]',\n // Border kept (transparent) so the forced-colors override below can\n // repaint a visible edge in HCM. In normal modes the soft drop-shadow\n // carries the edge cue; the heavy `--border` (grey-800 since WCAG\n // 1.4.11 bump in 67fef8c) made the menu read as a charcoal box.\n 'ds:border ds:border-transparent',\n 'ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-xl)]',\n 'ds:p-[var(--spacing-sm)]',\n // Never taller than the room Radix measures beside the trigger: a long\n // menu scrolls instead of running off the screen. Submenus portal out,\n // so the scroll never clips them. Radix sets the same variable on\n // Content and SubContent.\n 'ds:max-h-[var(--radix-dropdown-menu-content-available-height)] ds:overflow-y-auto',\n // Motion — gated on --animation-duration via Tailwind's animate-in\n // preset. motion-reduce disables via the no-preference query.\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out',\n 'ds:data-[state=open]:zoom-in-95 ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[state=open]:slide-in-from-top-1',\n 'ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n);\n\nconst itemClasses = cva(\n [\n 'ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:min-h-[var(--min-target-size)]',\n // The ink comes from the variants below, one colour class per state:\n // two text-colour utilities on one element resolve by stylesheet order,\n // not by class order, and --foreground would win over --destructive.\n 'ds:text-[length:var(--font-size-sm)]',\n 'ds:select-none ds:outline-none',\n // Radix highlights on hover and on keyboard focus alike. The highlight\n // itself comes from the `unavailable` variant below.\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n // Disabled\n 'ds:data-[disabled]:opacity-50 ds:data-[disabled]:cursor-not-allowed',\n 'ds:data-[disabled]:pointer-events-none',\n ].join(' '),\n {\n variants: {\n /* Item only. A lit row repoints --destructive to the accent ink\n (MENU_ROW_HIGHLIGHT), so the label keeps its contrast there. */\n variant: { default: '', destructive: '' },\n /* An Item that is disabled with a reason: it keeps focus, so it is\n muted rather than faded, and the reason stays readable. */\n unavailable: {\n /* Lit, it stays neutral: the accent fill reads as \"ready to\n choose\", and it would turn the muted reason into accent ink. */\n true: [\n 'ds:text-[color:var(--muted-foreground)] ds:cursor-not-allowed',\n 'ds:forced-colors:text-[GrayText]',\n 'ds:data-[highlighted]:bg-[var(--muted)]',\n 'ds:forced-colors:data-[highlighted]:outline-solid',\n 'ds:forced-colors:data-[highlighted]:outline-[length:var(--focus-ring-width)]',\n 'ds:forced-colors:data-[highlighted]:outline-[GrayText]',\n 'ds:forced-colors:data-[highlighted]:[outline-offset:calc(var(--focus-ring-width)*-1)]',\n ].join(' '),\n /* The pointer lives here, not in the base: two cursor utilities on\n one element resolve by stylesheet order, and it would win. */\n false: `ds:cursor-pointer ${MENU_ROW_HIGHLIGHT.highlighted}`,\n },\n },\n compoundVariants: [\n {\n variant: 'default',\n unavailable: false,\n className: 'ds:text-[color:var(--foreground)]',\n },\n {\n variant: 'destructive',\n unavailable: false,\n className: 'ds:text-[color:var(--destructive)]',\n },\n ],\n defaultVariants: { variant: 'default', unavailable: false },\n },\n);\n\nconst labelClasses = cva(\n [\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-2xs)]',\n // Quiet sentence-case caption — the shouty uppercase eyebrow made\n // every menu read as a form. Groups should lean on separators first\n // and reach for a Label only when the grouping is genuinely unclear.\n 'ds:text-[length:var(--font-size-xs)]',\n 'ds:font-[var(--font-weight-medium)]',\n 'ds:text-[color:var(--muted-foreground)]',\n 'ds:select-none',\n ].join(' '),\n);\n\nconst indicatorSlotClasses =\n 'ds:inline-flex ds:items-center ds:justify-center ds:size-4 ds:shrink-0';\n\n/* ------------------------------------------------------------------ */\n/* Root / Trigger / Portal */\n/* ------------------------------------------------------------------ */\n\n/** A named settings row (a ChoiceSub or SwitchItem given a `name`) and\n * its current state, as an agent reads it. Values only, never labels. */\nexport interface DropdownMenuSetting {\n setting: string;\n kind: 'choice' | 'switch';\n /** ChoiceSub: the selected value and every option's value. */\n value?: string;\n options?: string[];\n /** SwitchItem: whether it is on. */\n checked?: boolean;\n disabled: boolean;\n}\n\n// Curated agent-readiness handle — see dropdown-menu.agent.ts.\nexport interface DropdownMenuHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n /** The named settings rows, while the menu is open (closed: none). */\n getSettings: () => DropdownMenuSetting[];\n /** Pick `value` on the named ChoiceSub. A closed menu opens for the\n * moment and closes again. Rejects on an unknown row, value or a\n * disabled one. */\n setValue: (setting: string, value: string) => Promise<void>;\n /** Turn the named SwitchItem on or off, as `setValue` does. */\n setChecked: (setting: string, checked: boolean) => Promise<void>;\n}\n\n/* A named row registers with its Root so the handle can drive it. */\ntype SettingRow =\n | {\n kind: 'choice';\n read: () => {\n value: string;\n options: ReadonlyArray<{ value: string; disabled?: boolean }>;\n disabled: boolean;\n closeOnSelect: boolean;\n };\n pick: (value: string) => void;\n }\n | {\n kind: 'switch';\n read: () => { checked: boolean; disabled: boolean };\n pick: (checked: boolean) => void;\n };\n\ntype RegisterSettingRow = (name: string, row: SettingRow) => () => void;\n\nconst SettingRowsContext = createContext<RegisterSettingRow | undefined>(\n undefined,\n);\n\nconst nextFrame = () =>\n new Promise<void>((resolve) => {\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(() => resolve());\n } else {\n setTimeout(resolve, 16);\n }\n });\n\nexport interface DropdownMenuRootProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Root\n> {\n /** Opaque instance id — forwarded to DropdownMenu.Content as `data-component-id`. */\n id?: string;\n}\n\nconst DropdownMenuIdContext = createContext<string | undefined>(undefined);\n\nconst Root = ({\n dir,\n id,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n}: DropdownMenuRootProps) => {\n const autoDir = useDocumentDirection();\n const [openRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n const open = openRaw ?? false;\n\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const rowsRef = useRef(new Map<string, SettingRow>());\n // Counts explicit open/close calls on the handle.\n const openRequestsRef = useRef(0);\n const registerRow = useMemo<RegisterSettingRow>(\n () => (name, row) => {\n rowsRef.current.set(name, row);\n return () => {\n if (rowsRef.current.get(name) === row) rowsRef.current.delete(name);\n };\n },\n [],\n );\n\n const handle = useMemo<DropdownMenuHandle>(() => {\n /* Rows mount with the menu. A closed menu opens for the moment, waits\n for the row to register, and closes again once the change lands. */\n // open/close update the ref at once, not a render later, so a set\n // right after an explicit open() sees the menu as open and leaves it so.\n const show = (next: boolean) => {\n openRef.current = next;\n setOpen(next);\n };\n const withRow = async <K extends SettingRow['kind']>(\n setting: string,\n kind: K,\n apply: (row: Extract<SettingRow, { kind: K }>) => void,\n ) => {\n const opened = !openRef.current;\n if (opened) show(true);\n const requests = openRequestsRef.current;\n try {\n // A row mounts a render or two after the menu opens.\n let row = rowsRef.current.get(setting);\n for (let frame = 0; !row && frame < 30; frame += 1) {\n await nextFrame();\n row = rowsRef.current.get(setting);\n }\n if (!row || row.kind !== kind) {\n throw new Error(`No ${kind} setting named \"${setting}\" in this menu`);\n }\n apply(row as Extract<SettingRow, { kind: K }>);\n } finally {\n // Close only a menu this call opened, and nobody asked for since.\n if (opened && openRequestsRef.current === requests) show(false);\n }\n };\n return {\n getIsOpen: () => openRef.current,\n open: () => {\n openRequestsRef.current += 1;\n show(true);\n },\n close: () => {\n openRequestsRef.current += 1;\n show(false);\n },\n getSettings: () =>\n [...rowsRef.current].map(([setting, row]) => {\n if (row.kind === 'choice') {\n const { value, options, disabled } = row.read();\n return {\n setting,\n kind: 'choice' as const,\n value,\n options: options.map((option) => option.value),\n disabled,\n };\n }\n const { checked, disabled } = row.read();\n return { setting, kind: 'switch' as const, checked, disabled };\n }),\n setValue: (setting, value) =>\n withRow(setting, 'choice', (row) => {\n const { options, disabled, closeOnSelect } = row.read();\n const option = options.find((o) => o.value === value);\n if (disabled || !option || option.disabled) {\n throw new Error(\n `\"${value}\" is not an option that \"${setting}\" can take now`,\n );\n }\n row.pick(value);\n // As a click on the option would.\n if (closeOnSelect) show(false);\n }),\n setChecked: (setting, checked) =>\n withRow(setting, 'switch', (row) => {\n if (row.read().disabled) {\n throw new Error(`\"${setting}\" is disabled`);\n }\n row.pick(checked);\n }),\n };\n }, [setOpen]);\n useAgentRegistration(dropdownMenuAgent, handle, id);\n\n return (\n <DropdownMenuIdContext.Provider value={id}>\n <SettingRowsContext.Provider value={registerRow}>\n <RadixDropdownMenu.Root\n dir={dir ?? autoDir}\n open={open}\n onOpenChange={setOpen}\n {...props}\n />\n </SettingRowsContext.Provider>\n </DropdownMenuIdContext.Provider>\n );\n};\nRoot.displayName = 'DropdownMenu.Root';\n\nconst Trigger = RadixDropdownMenu.Trigger;\nconst Portal = RadixDropdownMenu.Portal;\nconst RadixGroup = RadixDropdownMenu.Group;\nconst RadixRadioGroup = RadixDropdownMenu.RadioGroup;\n\n/* ------------------------------------------------------------------ */\n/* Content */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuContentProps\n extends\n ComponentPropsWithoutRef<typeof RadixDropdownMenu.Content>,\n VariantProps<typeof contentVariants> {}\n\nconst Content = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Content>,\n DropdownMenuContentProps\n>(({ className, sideOffset = 8, ...props }, ref) => {\n const instanceId = useContext(DropdownMenuIdContext);\n return (\n <RadixDropdownMenu.Portal>\n {/* A region named after the trigger, so axe `region` passes while open. */}\n <PopupRegion popupRef={ref}>\n {(popupRef) => (\n <RadixDropdownMenu.Content\n ref={popupRef}\n sideOffset={sideOffset}\n className={contentVariants({ className })}\n data-component=\"dropdown-menu\"\n data-component-id={instanceId}\n {...props}\n />\n )}\n </PopupRegion>\n </RadixDropdownMenu.Portal>\n );\n});\nContent.displayName = 'DropdownMenu.Content';\n\n/* ------------------------------------------------------------------ */\n/* Item */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuItemProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Item\n> {\n startIcon?: ReactNode;\n endIcon?: ReactNode;\n description?: ReactNode;\n /** Convenience — renders a DS <Kbd keys={…}> on the inline-end. */\n shortcut?: Array<KbdNamedKey | string>;\n /** `'destructive'` paints the label and icon in `--destructive`, for an\n * action that deletes or cancels. The host still confirms it (AlertDialog).\n * Default `'default'`. */\n variant?: 'default' | 'destructive';\n /** Why the item cannot be chosen. Only read with `disabled`: the item then\n * stays reachable by arrow keys and typeahead (the APG menu pattern), is\n * `aria-disabled`, ignores Enter, Space and click (the menu stays open),\n * and shows the reason as its second line, in place of `description`,\n * linked with `aria-describedby`. Without a reason, `disabled` items are\n * skipped, as before. Pass translated text. */\n disabledReason?: string;\n}\n\nconst Item = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Item>,\n DropdownMenuItemProps\n>(\n (\n {\n className,\n startIcon,\n endIcon,\n description,\n shortcut,\n variant,\n disabled,\n disabledReason,\n textValue,\n onSelect,\n onClick,\n children,\n 'aria-describedby': ariaDescribedBy,\n ...props\n },\n ref,\n ) => {\n const baseId = useId();\n const reasonId = `${baseId}-reason`;\n const labelId = `${baseId}-label`;\n /* Disabled with a reason: Radix must not see `disabled`, or it would\n take the item out of arrow navigation. The guard below refuses it. */\n const unavailable = Boolean(disabled && disabledReason);\n const secondLine = unavailable ? disabledReason : description;\n /* The reason is the description, so it stays out of the name, which a\n menuitem would otherwise take from all of its text. */\n const nameFromLabel =\n unavailable && !props['aria-label'] && !props['aria-labelledby'];\n return (\n <RadixDropdownMenu.Item\n ref={ref}\n className={itemClasses({ variant, unavailable, className })}\n disabled={unavailable ? false : disabled}\n // Typeahead matches the label, never the reason under it.\n textValue={\n textValue ??\n (unavailable && typeof children === 'string' ? children : undefined)\n }\n aria-describedby={\n unavailable\n ? [ariaDescribedBy, reasonId].filter(Boolean).join(' ')\n : ariaDescribedBy\n }\n onClick={(event) => {\n if (unavailable) return;\n onClick?.(event);\n }}\n onSelect={(event) => {\n if (unavailable) {\n // Keeps the menu open and the item focused.\n event.preventDefault();\n return;\n }\n onSelect?.(event);\n }}\n {...props}\n {...(unavailable\n ? { 'aria-disabled': true, 'data-unavailable': '' }\n : undefined)}\n {...(nameFromLabel ? { 'aria-labelledby': labelId } : undefined)}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {startIcon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:flex ds:flex-col ds:min-w-0\">\n <span\n id={nameFromLabel ? labelId : undefined}\n className=\"ds:truncate\"\n >\n {children}\n </span>\n {unavailable ? (\n /* Wraps inside the width the labels set (w-0 + min-w-full),\n rather than widening the menu or being cut off. */\n <span\n id={reasonId}\n className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:w-0 ds:min-w-full ds:whitespace-normal ds:[overflow-wrap:anywhere]\"\n >\n {secondLine}\n </span>\n ) : secondLine ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:truncate\">\n {secondLine}\n </span>\n ) : null}\n </span>\n {shortcut ? (\n <span className=\"ds:ms-auto\">\n <Kbd keys={shortcut} size=\"sm\" />\n </span>\n ) : endIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:ms-auto ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {endIcon}\n </span>\n ) : null}\n </RadixDropdownMenu.Item>\n );\n },\n);\nItem.displayName = 'DropdownMenu.Item';\n\n/* ------------------------------------------------------------------ */\n/* CheckboxItem */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuCheckboxItemProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.CheckboxItem\n>;\n\nconst CheckboxItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.CheckboxItem>,\n DropdownMenuCheckboxItemProps\n>(({ className, children, ...props }, ref) => (\n <RadixDropdownMenu.CheckboxItem\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n <span className={indicatorSlotClasses}>\n <RadixDropdownMenu.ItemIndicator>\n <Check aria-hidden className=\"ds:size-4\" />\n </RadixDropdownMenu.ItemIndicator>\n </span>\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n </RadixDropdownMenu.CheckboxItem>\n));\nCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\n/* Registers a named row with its Root for as long as it is mounted. The\n row object is rebuilt each render; the Root reads it through a ref, so\n it always sees the latest value and callback. */\nfunction useSettingRow(name: string | undefined, row: SettingRow): void {\n const register = useContext(SettingRowsContext);\n const latest = useRef(row);\n useLayoutEffect(() => {\n latest.current = row;\n });\n useEffect(() => {\n if (!name || !register) return undefined;\n const proxy: SettingRow =\n latest.current.kind === 'choice'\n ? {\n kind: 'choice',\n read: () =>\n (\n latest.current as Extract<SettingRow, { kind: 'choice' }>\n ).read(),\n pick: (value) =>\n (latest.current as Extract<SettingRow, { kind: 'choice' }>).pick(\n value,\n ),\n }\n : {\n kind: 'switch',\n read: () =>\n (\n latest.current as Extract<SettingRow, { kind: 'switch' }>\n ).read(),\n pick: (checked) =>\n (latest.current as Extract<SettingRow, { kind: 'switch' }>).pick(\n checked,\n ),\n };\n return register(name, proxy);\n }, [name, register]);\n}\n\n/* ------------------------------------------------------------------ */\n/* SwitchItem */\n/* */\n/* A persistent on/off toggle row (menuitemcheckbox semantics) whose */\n/* indicator is a trailing switch glyph instead of a tick — for */\n/* settings that live inside a menu (e.g. accessible mode). Selecting */\n/* keeps the menu open so the user sees the toggle land. */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuSwitchItemProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.CheckboxItem\n> {\n /** Names the row for agents (the menu's `set_checked` action and\n * `settings` state) and emits `data-setting`. */\n name?: string;\n}\n\n// Mirrors the kit Switch's `sm` metrics (track h-4 w-7, thumb size-3)\n// and its primary checked fill so the two switch affordances stay kin.\n// The muted-foreground border keeps the OFF state perceivable — without\n// it the muted track sits at ~1.2:1 on the popover (WCAG 1.4.11).\nconst switchTrackClasses = [\n 'ds:ms-auto ds:inline-flex ds:items-center ds:shrink-0',\n 'ds:h-4 ds:w-7 ds:p-[2px]',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:border ds:border-[length:var(--border-width-sm)] ds:border-[color:var(--muted-foreground)]',\n 'ds:bg-[color:var(--muted)]',\n 'ds:[[data-state=checked]_&]:bg-[color:var(--primary)]',\n 'ds:[[data-state=checked]_&]:border-[color:var(--primary)]',\n // Thumb slides via justify swap — logical-direction safe, no\n // transform to fight under prefers-reduced-motion.\n 'ds:justify-start ds:[[data-state=checked]_&]:justify-end',\n 'ds:forced-colors:border-[CanvasText]',\n // HCM strips fills — paint the checked track with the system\n // selection colour so state isn't conveyed by thumb position alone.\n 'ds:forced-colors:[[data-state=checked]_&]:bg-[SelectedItem]',\n].join(' ');\n\nconst switchThumbClasses = [\n 'ds:block ds:size-3',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[color:var(--background)]',\n 'ds:border ds:border-[length:var(--border-width-sm)] ds:border-[color:var(--muted-foreground)]',\n 'ds:[[data-state=checked]_&]:border-transparent',\n 'ds:shadow-[var(--shadow-sm)]',\n 'ds:forced-colors:bg-[CanvasText]',\n].join(' ');\n\nconst SwitchItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.CheckboxItem>,\n DropdownMenuSwitchItemProps\n>(({ className, children, onSelect, name, ...props }, ref) => {\n const { checked, onCheckedChange, disabled } = props;\n useSettingRow(name, {\n kind: 'switch',\n read: () => ({ checked: checked === true, disabled: disabled === true }),\n // What a click does, and only when it would change something: the\n // consumer's onSelect, then the new state.\n pick: (next) => {\n if (next === (checked === true)) return;\n onSelect?.(new Event('menu.itemSelect', { cancelable: true }));\n onCheckedChange?.(next);\n },\n });\n return (\n <RadixDropdownMenu.CheckboxItem\n ref={ref}\n className={itemClasses({ className })}\n data-setting={name}\n onSelect={(event) => {\n // Keep-open is unconditional — prevent first so a throwing consumer\n // handler can't close the menu as a side effect.\n event.preventDefault();\n onSelect?.(event);\n }}\n {...props}\n >\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n <span aria-hidden=\"true\" className={switchTrackClasses}>\n <span className={switchThumbClasses} />\n </span>\n </RadixDropdownMenu.CheckboxItem>\n );\n});\nSwitchItem.displayName = 'DropdownMenu.SwitchItem';\n\n/* ------------------------------------------------------------------ */\n/* RadioGroup / RadioItem */\n/* ------------------------------------------------------------------ */\n\nconst RadioGroup = RadixRadioGroup;\n\nexport type DropdownMenuRadioItemProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.RadioItem\n>;\n\nconst RadioItem = forwardRef<\n ElementRef<typeof RadixDropdownMenu.RadioItem>,\n DropdownMenuRadioItemProps\n>(({ className, children, ...props }, ref) => (\n <RadixDropdownMenu.RadioItem\n ref={ref}\n className={itemClasses({ className })}\n {...props}\n >\n {/* Real radio affordance: an always-visible ring with a filled dot\n when selected — a tick reads as a checkbox, not a single choice.\n The ring colours via the item's own data-state so the unchecked\n options still advertise that they are part of a radio set. */}\n <span className={indicatorSlotClasses} aria-hidden=\"true\">\n <span\n className={[\n 'ds:inline-flex ds:size-4 ds:items-center ds:justify-center ds:shrink-0',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:border ds:border-[length:var(--border-width-sm)] ds:border-[color:var(--muted-foreground)]',\n 'ds:[[data-state=checked]_&]:border-[color:var(--accent)]',\n // Accent on the lit row would vanish, so ring and dot take its ink.\n 'ds:not-forced-colors:[[data-highlighted][data-state=checked]_&]:border-[color:var(--accent-foreground)]',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' ')}\n >\n <RadixDropdownMenu.ItemIndicator>\n <span\n className={[\n 'ds:block ds:size-2 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--accent)]',\n 'ds:not-forced-colors:group-data-[highlighted]/menu-row:bg-[color:var(--accent-foreground)]',\n 'ds:forced-colors:bg-[CanvasText]',\n ].join(' ')}\n />\n </RadixDropdownMenu.ItemIndicator>\n </span>\n </span>\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n </RadixDropdownMenu.RadioItem>\n));\nRadioItem.displayName = 'DropdownMenu.RadioItem';\n\n/* ------------------------------------------------------------------ */\n/* Label */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuLabelProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Label\n>;\n\nconst Label = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Label>,\n DropdownMenuLabelProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Label\n ref={ref}\n className={labelClasses({ className })}\n {...props}\n />\n));\nLabel.displayName = 'DropdownMenu.Label';\n\n/* ------------------------------------------------------------------ */\n/* Separator */\n/* ------------------------------------------------------------------ */\n\nexport type DropdownMenuSeparatorProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.Separator\n>;\n\nconst MenuSeparator = forwardRef<\n ElementRef<typeof RadixDropdownMenu.Separator>,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Separator ref={ref} asChild {...props}>\n <DsSeparator\n className={['ds:my-[calc(var(--spacing-xs)/2)]', className ?? '']\n .filter(Boolean)\n .join(' ')}\n />\n </RadixDropdownMenu.Separator>\n));\nMenuSeparator.displayName = 'DropdownMenu.Separator';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut — thin wrapper over DS Kbd for the right side of an Item */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuShortcutProps {\n keys: Array<KbdNamedKey | string>;\n separator?: 'none' | 'plus' | 'then';\n}\n\nconst Shortcut = forwardRef<HTMLSpanElement, DropdownMenuShortcutProps>(\n ({ keys, separator = 'none' }, ref) => (\n <span ref={ref} className=\"ds:ms-auto ds:ps-[var(--spacing-sm)]\">\n <Kbd keys={keys} separator={separator} size=\"sm\" />\n </span>\n ),\n);\nShortcut.displayName = 'DropdownMenu.Shortcut';\n\n/* ------------------------------------------------------------------ */\n/* Sub-menu */\n/* ------------------------------------------------------------------ */\n\nconst Sub = RadixDropdownMenu.Sub;\n\nexport interface DropdownMenuSubTriggerProps extends ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.SubTrigger\n> {\n startIcon?: ReactNode;\n}\n\nconst SubTrigger = forwardRef<\n ElementRef<typeof RadixDropdownMenu.SubTrigger>,\n DropdownMenuSubTriggerProps\n>(({ className, startIcon, children, ...props }, ref) => (\n <RadixDropdownMenu.SubTrigger\n ref={ref}\n // Stays lit while focus is in its submenu, so the path is visible.\n className={itemClasses({\n className: [MENU_ROW_HIGHLIGHT.open, className].filter(Boolean).join(' '),\n })}\n {...props}\n >\n {startIcon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {startIcon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:truncate\">{children}</span>\n <ChevronRight\n aria-hidden\n className=\"ds:ms-auto ds:size-4 ds:shrink-0 ds:rtl:-scale-x-100\"\n />\n </RadixDropdownMenu.SubTrigger>\n));\nSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\nexport type DropdownMenuSubContentProps = ComponentPropsWithoutRef<\n typeof RadixDropdownMenu.SubContent\n>;\n\nconst SubContent = forwardRef<\n ElementRef<typeof RadixDropdownMenu.SubContent>,\n DropdownMenuSubContentProps\n>(({ className, ...props }, ref) => (\n <RadixDropdownMenu.Portal>\n <PopupRegion popupRef={ref}>\n {(popupRef) => (\n <RadixDropdownMenu.SubContent\n ref={popupRef}\n sideOffset={8}\n data-component=\"dropdown-menu-sub-content\"\n className={contentVariants({ className })}\n {...props}\n />\n )}\n </PopupRegion>\n </RadixDropdownMenu.Portal>\n));\nSubContent.displayName = 'DropdownMenu.SubContent';\n\n/* ------------------------------------------------------------------ */\n/* ChoiceSub */\n/* */\n/* One setting with a few exclusive options, as a single menu row that */\n/* names the setting and shows its current value (\"Row density · */\n/* Compact ›\"). The row opens a submenu of radio items. It replaces the */\n/* \"label + Select\" row inside popovers: no Select ever opens inside a */\n/* menu, and the whole settings menu stays keyboard-native. Picking an */\n/* option keeps the menu open by default, like SwitchItem, so the user */\n/* sees the value land and can adjust the next setting. */\n/* ------------------------------------------------------------------ */\n\nexport interface DropdownMenuChoiceOption<T extends string = string> {\n value: T;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface DropdownMenuChoiceSubProps<T extends string = string> {\n /** The setting's name, shown at the start of the row. */\n label: ReactNode;\n /** The selected option's value; its label shows at the end of the row. */\n value: T;\n onValueChange: (value: T) => void;\n options: ReadonlyArray<DropdownMenuChoiceOption<T>>;\n startIcon?: ReactNode;\n disabled?: boolean;\n /** Close the whole menu after a pick. @default false */\n closeOnSelect?: boolean;\n /** Names the row for agents (the menu's `set_value` action and\n * `settings` state) and emits `data-setting`. */\n name?: string;\n className?: string;\n}\n\nfunction ChoiceSub<T extends string>({\n label,\n value,\n onValueChange,\n options,\n startIcon,\n disabled,\n closeOnSelect = false,\n name,\n className,\n}: DropdownMenuChoiceSubProps<T>) {\n const current = options.find((option) => option.value === value);\n useSettingRow(name, {\n kind: 'choice',\n read: () => ({\n value,\n options,\n disabled: disabled === true,\n closeOnSelect,\n }),\n pick: (next) => onValueChange(next as T),\n });\n return (\n <Sub>\n <SubTrigger\n startIcon={startIcon}\n disabled={disabled}\n className={className}\n data-component=\"dropdown-menu-choice\"\n data-value={value}\n data-setting={name}\n >\n <span className=\"ds:flex ds:min-w-0 ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <span className=\"ds:truncate\">{label}</span>\n {current ? (\n <span className=\"ds:shrink-0 ds:text-[color:var(--muted-foreground)] ds:[[data-highlighted]_&]:text-current\">\n {current.label}\n </span>\n ) : null}\n </span>\n </SubTrigger>\n <SubContent>\n <RadioGroup\n value={value}\n onValueChange={(next) => onValueChange(next as T)}\n >\n {options.map((option) => (\n <RadioItem\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n onSelect={\n closeOnSelect ? undefined : (event) => event.preventDefault()\n }\n >\n {option.label}\n </RadioItem>\n ))}\n </RadioGroup>\n </SubContent>\n </Sub>\n );\n}\nChoiceSub.displayName = 'DropdownMenu.ChoiceSub';\n\n/* ------------------------------------------------------------------ */\n/* Assembled namespace export */\n/* ------------------------------------------------------------------ */\n\nexport const DropdownMenu = {\n Root,\n Trigger,\n Portal,\n Content,\n Group: RadixGroup,\n Item,\n CheckboxItem,\n SwitchItem,\n RadioGroup,\n RadioItem,\n Label,\n Separator: MenuSeparator,\n Shortcut,\n Sub,\n SubTrigger,\n SubContent,\n ChoiceSub,\n};\n"],"names":["dropdownMenuAgent","handle","args","contentVariants","cva","itemClasses","MENU_ROW_HIGHLIGHT","labelClasses","indicatorSlotClasses","SettingRowsContext","createContext","nextFrame","resolve","DropdownMenuIdContext","Root","dir","id","openProp","defaultOpen","onOpenChange","props","autoDir","useDocumentDirection","openRaw","setOpen","useControllableState","open","openRef","useRef","useEffect","rowsRef","openRequestsRef","registerRow","useMemo","name","row","show","next","withRow","setting","kind","apply","opened","requests","frame","value","options","disabled","option","checked","closeOnSelect","o","useAgentRegistration","jsx","RadixDropdownMenu","Trigger","Portal","RadixGroup","RadixRadioGroup","Content","forwardRef","className","sideOffset","ref","instanceId","useContext","PopupRegion","popupRef","Item","startIcon","endIcon","description","shortcut","variant","disabledReason","textValue","onSelect","onClick","children","ariaDescribedBy","baseId","useId","reasonId","labelId","unavailable","secondLine","nameFromLabel","jsxs","event","Kbd","CheckboxItem","Check","useSettingRow","register","latest","useLayoutEffect","proxy","switchTrackClasses","switchThumbClasses","SwitchItem","onCheckedChange","RadioGroup","RadioItem","Label","MenuSeparator","DsSeparator","Shortcut","keys","separator","Sub","SubTrigger","ChevronRight","SubContent","ChoiceSub","label","onValueChange","current","DropdownMenu"],"mappings":"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"}