@alfadocs/ui-kit-debug 1.130.0 → 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 (270) 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-CHrjv7p2.js → muscle-scheme-BGJD62op.js} +3 -2
  66. package/dist/_chunks/{muscle-scheme-CHrjv7p2.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/muscle-scheme/muscle-scheme.d.ts.map +1 -1
  147. package/dist/components/notes-panel/index.js +1 -1
  148. package/dist/components/patient-search/index.js +1 -1
  149. package/dist/components/patient-table/index.js +1 -1
  150. package/dist/components/practice-results/index.js +1 -1
  151. package/dist/components/public-header/index.js +1 -1
  152. package/dist/components/radiograph-panel/index.js +1 -1
  153. package/dist/components/rich-text-editor/index.js +1 -1
  154. package/dist/components/row-actions/index.js +1 -1
  155. package/dist/components/sheet/index.js +1 -1
  156. package/dist/components/sheet/sheet.d.ts.map +1 -1
  157. package/dist/components/skeleton-scheme/index.js +1 -1
  158. package/dist/components/tab-bar/index.js +1 -1
  159. package/dist/components/tabs/index.js +1 -1
  160. package/dist/components/task-editor/index.js +1 -1
  161. package/dist/components/tasks-panel/index.js +1 -1
  162. package/dist/components/theme-toggle/index.js +1 -1
  163. package/dist/components/token-insert-menu/index.js +1 -1
  164. package/dist/components/tooth-scheme/index.js +1 -1
  165. package/dist/components/widget-picker/index.js +1 -1
  166. package/dist/components/workflow/index.js +1 -1
  167. package/dist/components/workflow-status/index.js +1 -1
  168. package/dist/i18n/locales/ar.d.ts +1 -0
  169. package/dist/i18n/locales/ar.d.ts.map +1 -1
  170. package/dist/i18n/locales/ar.js +1 -0
  171. package/dist/i18n/locales/ar.js.map +1 -1
  172. package/dist/i18n/locales/de.d.ts +1 -0
  173. package/dist/i18n/locales/de.d.ts.map +1 -1
  174. package/dist/i18n/locales/de.js +1 -0
  175. package/dist/i18n/locales/de.js.map +1 -1
  176. package/dist/i18n/locales/el.d.ts +1 -0
  177. package/dist/i18n/locales/el.d.ts.map +1 -1
  178. package/dist/i18n/locales/el.js +1 -0
  179. package/dist/i18n/locales/el.js.map +1 -1
  180. package/dist/i18n/locales/en.d.ts +1 -0
  181. package/dist/i18n/locales/en.d.ts.map +1 -1
  182. package/dist/i18n/locales/en.js +1 -0
  183. package/dist/i18n/locales/en.js.map +1 -1
  184. package/dist/i18n/locales/es.d.ts +1 -0
  185. package/dist/i18n/locales/es.d.ts.map +1 -1
  186. package/dist/i18n/locales/es.js +1 -0
  187. package/dist/i18n/locales/es.js.map +1 -1
  188. package/dist/i18n/locales/fr.d.ts +1 -0
  189. package/dist/i18n/locales/fr.d.ts.map +1 -1
  190. package/dist/i18n/locales/fr.js +1 -0
  191. package/dist/i18n/locales/fr.js.map +1 -1
  192. package/dist/i18n/locales/hi.d.ts +1 -0
  193. package/dist/i18n/locales/hi.d.ts.map +1 -1
  194. package/dist/i18n/locales/hi.js +1 -0
  195. package/dist/i18n/locales/hi.js.map +1 -1
  196. package/dist/i18n/locales/it.d.ts +1 -0
  197. package/dist/i18n/locales/it.d.ts.map +1 -1
  198. package/dist/i18n/locales/it.js +1 -0
  199. package/dist/i18n/locales/it.js.map +1 -1
  200. package/dist/i18n/locales/ja.d.ts +1 -0
  201. package/dist/i18n/locales/ja.d.ts.map +1 -1
  202. package/dist/i18n/locales/ja.js +1 -0
  203. package/dist/i18n/locales/ja.js.map +1 -1
  204. package/dist/i18n/locales/nl.d.ts +1 -0
  205. package/dist/i18n/locales/nl.d.ts.map +1 -1
  206. package/dist/i18n/locales/nl.js +1 -0
  207. package/dist/i18n/locales/nl.js.map +1 -1
  208. package/dist/i18n/locales/pl.d.ts +1 -0
  209. package/dist/i18n/locales/pl.d.ts.map +1 -1
  210. package/dist/i18n/locales/pl.js +1 -0
  211. package/dist/i18n/locales/pl.js.map +1 -1
  212. package/dist/i18n/locales/pt.d.ts +1 -0
  213. package/dist/i18n/locales/pt.d.ts.map +1 -1
  214. package/dist/i18n/locales/pt.js +1 -0
  215. package/dist/i18n/locales/pt.js.map +1 -1
  216. package/dist/i18n/locales/ro.d.ts +1 -0
  217. package/dist/i18n/locales/ro.d.ts.map +1 -1
  218. package/dist/i18n/locales/ro.js +1 -0
  219. package/dist/i18n/locales/ro.js.map +1 -1
  220. package/dist/i18n/locales/ru.d.ts +1 -0
  221. package/dist/i18n/locales/ru.d.ts.map +1 -1
  222. package/dist/i18n/locales/ru.js +1 -0
  223. package/dist/i18n/locales/ru.js.map +1 -1
  224. package/dist/i18n/locales/sq.d.ts +1 -0
  225. package/dist/i18n/locales/sq.d.ts.map +1 -1
  226. package/dist/i18n/locales/sq.js +1 -0
  227. package/dist/i18n/locales/sq.js.map +1 -1
  228. package/dist/i18n/locales/sv.d.ts +1 -0
  229. package/dist/i18n/locales/sv.d.ts.map +1 -1
  230. package/dist/i18n/locales/sv.js +1 -0
  231. package/dist/i18n/locales/sv.js.map +1 -1
  232. package/dist/i18n/locales/tr.d.ts +1 -0
  233. package/dist/i18n/locales/tr.d.ts.map +1 -1
  234. package/dist/i18n/locales/tr.js +1 -0
  235. package/dist/i18n/locales/tr.js.map +1 -1
  236. package/dist/i18n/locales/zh.d.ts +1 -0
  237. package/dist/i18n/locales/zh.d.ts.map +1 -1
  238. package/dist/i18n/locales/zh.js +1 -0
  239. package/dist/i18n/locales/zh.js.map +1 -1
  240. package/dist/index.js +54 -54
  241. package/dist/locales/ar.json +1 -0
  242. package/dist/locales/de.json +1 -0
  243. package/dist/locales/el.json +1 -0
  244. package/dist/locales/en.json +1 -0
  245. package/dist/locales/es.json +1 -0
  246. package/dist/locales/fr.json +1 -0
  247. package/dist/locales/hi.json +1 -0
  248. package/dist/locales/it.json +1 -0
  249. package/dist/locales/ja.json +1 -0
  250. package/dist/locales/nl.json +1 -0
  251. package/dist/locales/pl.json +1 -0
  252. package/dist/locales/pt.json +1 -0
  253. package/dist/locales/ro.json +1 -0
  254. package/dist/locales/ru.json +1 -0
  255. package/dist/locales/sq.json +1 -0
  256. package/dist/locales/sv.json +1 -0
  257. package/dist/locales/tr.json +1 -0
  258. package/dist/locales/zh.json +1 -0
  259. package/dist/patterns/alia-assistant/index.js +1 -1
  260. package/dist/patterns/anamnesis/index.js +1 -1
  261. package/dist/patterns/calendar/index.js +1 -1
  262. package/dist/patterns/help-me-write-templates/index.js +1 -1
  263. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  264. package/dist/patterns/signature-request/index.js +1 -1
  265. package/dist/patterns/verify-identity/index.js +1 -1
  266. package/dist/patterns/workflow-webhook-action/index.js +1 -1
  267. package/package.json +1 -1
  268. package/dist/_chunks/dialog-CIUn5oLb.js.map +0 -1
  269. package/dist/_chunks/dropdown-menu-Dw6sgQwJ.js.map +0 -1
  270. package/dist/_chunks/sheet-uZZXaO_S.js.map +0 -1
@@ -3,8 +3,8 @@ import { forwardRef as B, useId as O, useRef as w, isValidElement as P, cloneEle
3
3
  import { c as N } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as K } from "react-i18next";
5
5
  import { I as j } from "./icon-button-S8_weU3g.js";
6
- import { I as L } from "./icon-button-group-BKtkVZ1W.js";
7
- import { D as m } from "./dropdown-menu-Dw6sgQwJ.js";
6
+ import { I as L } from "./icon-button-group-SmkdVCNx.js";
7
+ import { D as m } from "./dropdown-menu-DBWaW4pq.js";
8
8
  import { a as F } from "./accessible-target-D3j6F-AG.js";
9
9
  import { c as I } from "./compose-refs-C0k0tdqF.js";
10
10
  import { u as Q } from "./use-direction-Dp8h70PP.js";
@@ -210,4 +210,4 @@ ee.displayName = "RowActions";
210
210
  export {
211
211
  ee as R
212
212
  };
213
- //# sourceMappingURL=row-actions-Dpf9CrCP.js.map
213
+ //# sourceMappingURL=row-actions-BF2-uizV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"row-actions-Dpf9CrCP.js","sources":["../../src/components/row-actions/row-actions.tsx"],"sourcesContent":["import {\n Fragment,\n cloneElement,\n forwardRef,\n isValidElement,\n useId,\n useRef,\n type ForwardedRef,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Ellipsis } from 'lucide-react';\nimport { IconButton, type IconButtonProps } from '../button/icon-button';\nimport { IconButtonGroup } from '../icon-button-group/icon-button-group';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport { accessibleTargetSquareClass } from '../_shared/accessible-target';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { useDirection } from '../../hooks/use-direction';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * One action on a row. A superset of DataTable's `ActionDef`, so an action\n * list written for DataTable works here unchanged.\n */\nexport interface RowActionDef<TRow> {\n /** Developer constant: the React key and the `data-action-id` DOM hook\n * for tests. Never row data. Defaults to the index. */\n id?: string;\n /** A Lucide icon. Decorative (`aria-hidden`); RowActions sizes it. */\n icon: ReactNode;\n /** Translated. The accessible name, the tooltip and the menu text. */\n label: string;\n /** Called with the row. Never called while the action is disabled. */\n onClick: (row: TRow) => void;\n /** Pass a predicate for a per-row state. */\n disabled?: boolean | ((row: TRow) => boolean);\n /** Translated. Why the action is disabled. Inline: the tooltip, and the\n * button's description for screen readers (the button stays focusable).\n * In the More menu: the item's second line. */\n disabledReason?: string | ((row: TRow) => string | undefined);\n /** `'destructive'` paints the action in `--destructive`. RowActions never\n * confirms: open an AlertDialog from `onClick`. */\n variant?: 'default' | 'destructive';\n /** Pass a predicate to hide the action on some rows. */\n hidden?: boolean | ((row: TRow) => boolean);\n /** Developer constant naming the action's group in the More menu\n * (\"downloads\", \"delete\"). The menu draws a separator where the section\n * changes between two visible items. Keep a section's actions next to\n * each other. Inline buttons ignore it. Never row data. */\n section?: string;\n}\n\nexport interface RowActionsProps<TRow> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children' | 'role' | 'aria-label' | 'aria-labelledby'\n> {\n /** The row the actions act on. Passed back to each `onClick`. */\n row: TRow;\n actions: readonly RowActionDef<TRow>[];\n /** How many visible actions show as buttons before the rest fold into\n * \"More actions\". Default: all inline. `0`: only \"More actions\". */\n maxInline?: number;\n /** Button intent. Default `'ghost'`. */\n intent?: 'ghost' | 'outline';\n /** Render the buttons as one segmented IconButtonGroup. */\n group?: boolean;\n /** Ids of the element(s) naming the actions, such as a table's hidden\n * \"Actions, FT 12/2026\" span. Keeps row data out of attributes. */\n 'aria-labelledby'?: string;\n /** Names the actions when `aria-labelledby` is not given. Translated.\n * Default \"Actions\". */\n label?: string;\n /** Button size. Default `'sm'`. */\n size?: 'sm' | 'md';\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:max-w-full',\n);\n\n/* The ghost or outline chrome, destructive ink. Button's intent sets its own\n text colour, which a plain utility here would lose to by stylesheet order,\n so the ink is keyed on the IconButton marker to outrank it (as IconButton\n does for Button's padding). */\nconst inlineVariants = cva(accessibleTargetSquareClass, {\n variants: {\n destructive: {\n true: 'ds:data-[component=icon-button]:text-[color:var(--destructive)] ds:data-[component=icon-button]:hover:text-[color:var(--destructive-hover)]',\n false: '',\n },\n },\n defaultVariants: { destructive: false },\n});\n\n/* In a button the icon fills IconButton's own icon box (16px at sm, 18px\n at md), so the two never disagree; a menu item's icon slot is unsized,\n so it takes the kit's 16px. */\nconst iconVariants = cva('', {\n variants: {\n place: { button: 'ds:size-full', menu: 'ds:size-4' },\n },\n defaultVariants: { place: 'button' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\ninterface ResolvedAction<TRow> {\n key: string;\n def: RowActionDef<TRow>;\n disabled: boolean;\n /** Only set while disabled. */\n reason: string | undefined;\n destructive: boolean;\n}\n\nfunction flag<TRow>(\n value: boolean | ((row: TRow) => boolean) | undefined,\n row: TRow,\n): boolean {\n return typeof value === 'function' ? value(row) : Boolean(value);\n}\n\n/** The visible actions, split into inline buttons and the More menu. */\nfunction resolveRowActions<TRow>(\n row: TRow,\n actions: readonly RowActionDef<TRow>[],\n maxInline: number | undefined,\n): { inline: ResolvedAction<TRow>[]; overflow: ResolvedAction<TRow>[] } {\n const visible: ResolvedAction<TRow>[] = [];\n actions.forEach((def, index) => {\n if (flag(def.hidden, row)) return;\n const disabled = flag(def.disabled, row);\n const reason = disabled\n ? typeof def.disabledReason === 'function'\n ? def.disabledReason(row)\n : def.disabledReason\n : undefined;\n visible.push({\n key: def.id ?? String(index),\n def,\n disabled,\n reason: reason || undefined,\n destructive: def.variant === 'destructive',\n });\n });\n const cut =\n maxInline === undefined\n ? visible.length\n : Math.max(0, Math.floor(maxInline));\n return { inline: visible.slice(0, cut), overflow: visible.slice(cut) };\n}\n\n/* A bare Lucide icon renders at 24px; size it to its box. */\nfunction sizeIcon(node: ReactNode, place: 'button' | 'menu'): ReactNode {\n if (!isValidElement<{ className?: string }>(node)) return node;\n const own = node.props.className ?? '';\n if (/(^|\\s)(ds:)?(size|w|h)-/.test(own)) return node;\n return cloneElement(node, {\n className: `${own} ${iconVariants({ place })}`.trim(),\n });\n}\n\n/* Row-level handlers (select the row, open it) never see these clicks. */\nfunction stopRowClick(event: MouseEvent) {\n event.stopPropagation();\n}\n\n/* ------------------------------------------------------------------ */\n/* More actions */\n/* ------------------------------------------------------------------ */\n\ninterface MoreEntry {\n key: string;\n id: string | undefined;\n section: string | undefined;\n icon: ReactNode;\n label: string;\n disabled: boolean;\n reason: string | undefined;\n destructive: boolean;\n choose: () => void;\n}\n\ninterface RowActionsMoreProps extends Omit<\n IconButtonProps,\n 'icon' | 'aria-label' | 'tooltip'\n> {\n entries: MoreEntry[];\n label: string;\n dir: 'ltr' | 'rtl';\n}\n\n/* The \"More actions\" trigger and its menu. It forwards its ref and the\n props an IconButtonGroup injects to the trigger IconButton, so the group\n seats it as its last segment like a plain button.\n\n A chosen action runs once the menu has closed and focus is back on the\n trigger, not from onSelect: a dialog the action opens then returns focus\n to \"More actions\" instead of to a menu item that no longer exists. */\nconst RowActionsMoreBase = forwardRef<HTMLButtonElement, RowActionsMoreProps>(\n ({ entries, label, dir, onClick, ...rest }, ref) => {\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const chosen = useRef<(() => void) | null>(null);\n return (\n <DropdownMenu.Root dir={dir}>\n <DropdownMenu.Trigger asChild>\n <IconButton\n {...rest}\n ref={composeRefs(ref, triggerRef)}\n icon={sizeIcon(<Ellipsis />, 'button')}\n className={`${accessibleTargetSquareClass} ${rest.className ?? ''}`.trim()}\n tooltip={label}\n aria-label={label}\n data-action-id=\"more\"\n onClick={(event) => {\n stopRowClick(event);\n onClick?.(event);\n }}\n />\n </DropdownMenu.Trigger>\n {/* Portalled, but React still bubbles its clicks to the row. */}\n <DropdownMenu.Content\n align=\"end\"\n onClick={stopRowClick}\n onCloseAutoFocus={(event) => {\n const run = chosen.current;\n if (!run) return;\n chosen.current = null;\n event.preventDefault();\n triggerRef.current?.focus();\n run();\n }}\n >\n {entries.map((entry, index) => {\n const previous = index > 0 ? entries[index - 1] : undefined;\n const newSection =\n previous !== undefined && previous.section !== entry.section;\n return (\n <Fragment key={entry.key}>\n {newSection ? <DropdownMenu.Separator /> : null}\n <DropdownMenu.Item\n data-action-id={entry.id}\n startIcon={sizeIcon(entry.icon, 'menu')}\n variant={entry.destructive ? 'destructive' : 'default'}\n disabled={entry.disabled}\n disabledReason={entry.reason}\n onSelect={() => {\n chosen.current = entry.choose;\n }}\n >\n {entry.label}\n </DropdownMenu.Item>\n </Fragment>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n },\n);\nRowActionsMoreBase.displayName = 'RowActions.More';\n\n/* IconButtonGroup accepts a child that renders one IconButton trigger. */\nconst RowActionsMore = Object.assign(RowActionsMoreBase, {\n rendersIconButton: true,\n});\n\n/* ------------------------------------------------------------------ */\n/* RowActions */\n/* ------------------------------------------------------------------ */\n\nfunction RowActionsInner<TRow>(\n {\n row,\n actions,\n maxInline,\n intent = 'ghost',\n group = false,\n 'aria-labelledby': ariaLabelledBy,\n label,\n size = 'sm',\n className,\n ...rest\n }: RowActionsProps<TRow>,\n ref: ForwardedRef<HTMLDivElement>,\n): ReactElement | null {\n const { t } = useTranslation('ui');\n const baseId = useId();\n const rootRef = useRef<HTMLDivElement | null>(null);\n const dir = useDirection(rootRef);\n\n const { inline, overflow } = resolveRowActions(row, actions, maxInline);\n if (inline.length === 0 && overflow.length === 0) return null;\n\n const groupLabel = label ?? t('rowActions.label', 'Actions');\n // Ids come from useId and the position, never from row data.\n const reasonIdFor = (index: number) => `${baseId}-reason-${index}`;\n\n const buttons = inline.map((action, index) => {\n const reasonId =\n action.disabled && action.reason ? reasonIdFor(index) : undefined;\n return (\n <IconButton\n key={action.key}\n size={size}\n intent={intent}\n icon={sizeIcon(action.def.icon, 'button')}\n tooltip={reasonId ? action.reason : action.def.label}\n aria-label={action.def.label}\n // Not the HTML attribute: the button stays a Tab stop, so its\n // reason can be reached. The click guard below refuses it.\n aria-disabled={action.disabled || undefined}\n aria-describedby={reasonId}\n data-action-id={action.def.id}\n className={inlineVariants({ destructive: action.destructive })}\n onClick={(event) => {\n stopRowClick(event);\n if (action.disabled) {\n event.preventDefault();\n return;\n }\n action.def.onClick(row);\n }}\n />\n );\n });\n\n const more =\n overflow.length > 0 ? (\n <RowActionsMore\n key=\"more\"\n size={size}\n intent={intent}\n dir={dir}\n label={t('rowActions.more', 'More actions')}\n entries={overflow.map((action) => ({\n key: action.key,\n id: action.def.id,\n section: action.def.section,\n icon: action.def.icon,\n label: action.def.label,\n disabled: action.disabled,\n reason: action.reason,\n destructive: action.destructive,\n choose: () => action.def.onClick(row),\n }))}\n />\n ) : null;\n\n const reasons = inline.map((action, index) =>\n action.disabled && action.reason ? (\n <span key={`reason-${action.key}`} id={reasonIdFor(index)} hidden>\n {action.reason}\n </span>\n ) : null,\n );\n\n const name = ariaLabelledBy\n ? ({ 'aria-labelledby': ariaLabelledBy } as const)\n : ({ 'aria-label': groupLabel } as const);\n\n if (group) {\n // The segmented group carries the role and the name; this root only\n // marks the component boundary and holds the reasons.\n return (\n <div\n ref={composeRefs(ref, rootRef)}\n data-component=\"row-actions\"\n className={rootVariants({ className })}\n {...rest}\n >\n <IconButtonGroup size={size} intent={intent} {...name}>\n {buttons}\n {more}\n </IconButtonGroup>\n {reasons}\n </div>\n );\n }\n\n return (\n <div\n ref={composeRefs(ref, rootRef)}\n role=\"group\"\n data-component=\"row-actions\"\n className={rootVariants({ className })}\n {...name}\n {...rest}\n >\n {buttons}\n {more}\n {reasons}\n </div>\n );\n}\n\n/**\n * The actions for one row of a table, list or card: icon buttons, with the\n * rest under \"More actions\". Engine-free, so it works in DataGrid, a list or\n * a card. A disabled action stays focusable and says why.\n */\nexport const RowActions = forwardRef(RowActionsInner) as (<TRow>(\n props: RowActionsProps<TRow> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReactElement | null) & { displayName?: string };\nRowActions.displayName = 'RowActions';\n"],"names":["rootVariants","cva","inlineVariants","accessibleTargetSquareClass","iconVariants","flag","value","row","resolveRowActions","actions","maxInline","visible","def","index","disabled","reason","cut","sizeIcon","node","place","isValidElement","own","cloneElement","stopRowClick","event","RowActionsMoreBase","forwardRef","entries","label","dir","onClick","rest","ref","triggerRef","useRef","chosen","jsxs","DropdownMenu","jsx","IconButton","composeRefs","Ellipsis","run","_a","entry","previous","newSection","Fragment","RowActionsMore","RowActionsInner","intent","group","ariaLabelledBy","size","className","t","useTranslation","baseId","useId","rootRef","useDirection","inline","overflow","groupLabel","reasonIdFor","buttons","action","reasonId","more","reasons","name","IconButtonGroup","RowActions"],"mappings":"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"}
1
+ {"version":3,"file":"row-actions-BF2-uizV.js","sources":["../../src/components/row-actions/row-actions.tsx"],"sourcesContent":["import {\n Fragment,\n cloneElement,\n forwardRef,\n isValidElement,\n useId,\n useRef,\n type ForwardedRef,\n type HTMLAttributes,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Ellipsis } from 'lucide-react';\nimport { IconButton, type IconButtonProps } from '../button/icon-button';\nimport { IconButtonGroup } from '../icon-button-group/icon-button-group';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport { accessibleTargetSquareClass } from '../_shared/accessible-target';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { useDirection } from '../../hooks/use-direction';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * One action on a row. A superset of DataTable's `ActionDef`, so an action\n * list written for DataTable works here unchanged.\n */\nexport interface RowActionDef<TRow> {\n /** Developer constant: the React key and the `data-action-id` DOM hook\n * for tests. Never row data. Defaults to the index. */\n id?: string;\n /** A Lucide icon. Decorative (`aria-hidden`); RowActions sizes it. */\n icon: ReactNode;\n /** Translated. The accessible name, the tooltip and the menu text. */\n label: string;\n /** Called with the row. Never called while the action is disabled. */\n onClick: (row: TRow) => void;\n /** Pass a predicate for a per-row state. */\n disabled?: boolean | ((row: TRow) => boolean);\n /** Translated. Why the action is disabled. Inline: the tooltip, and the\n * button's description for screen readers (the button stays focusable).\n * In the More menu: the item's second line. */\n disabledReason?: string | ((row: TRow) => string | undefined);\n /** `'destructive'` paints the action in `--destructive`. RowActions never\n * confirms: open an AlertDialog from `onClick`. */\n variant?: 'default' | 'destructive';\n /** Pass a predicate to hide the action on some rows. */\n hidden?: boolean | ((row: TRow) => boolean);\n /** Developer constant naming the action's group in the More menu\n * (\"downloads\", \"delete\"). The menu draws a separator where the section\n * changes between two visible items. Keep a section's actions next to\n * each other. Inline buttons ignore it. Never row data. */\n section?: string;\n}\n\nexport interface RowActionsProps<TRow> extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'children' | 'role' | 'aria-label' | 'aria-labelledby'\n> {\n /** The row the actions act on. Passed back to each `onClick`. */\n row: TRow;\n actions: readonly RowActionDef<TRow>[];\n /** How many visible actions show as buttons before the rest fold into\n * \"More actions\". Default: all inline. `0`: only \"More actions\". */\n maxInline?: number;\n /** Button intent. Default `'ghost'`. */\n intent?: 'ghost' | 'outline';\n /** Render the buttons as one segmented IconButtonGroup. */\n group?: boolean;\n /** Ids of the element(s) naming the actions, such as a table's hidden\n * \"Actions, FT 12/2026\" span. Keeps row data out of attributes. */\n 'aria-labelledby'?: string;\n /** Names the actions when `aria-labelledby` is not given. Translated.\n * Default \"Actions\". */\n label?: string;\n /** Button size. Default `'sm'`. */\n size?: 'sm' | 'md';\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:max-w-full',\n);\n\n/* The ghost or outline chrome, destructive ink. Button's intent sets its own\n text colour, which a plain utility here would lose to by stylesheet order,\n so the ink is keyed on the IconButton marker to outrank it (as IconButton\n does for Button's padding). */\nconst inlineVariants = cva(accessibleTargetSquareClass, {\n variants: {\n destructive: {\n true: 'ds:data-[component=icon-button]:text-[color:var(--destructive)] ds:data-[component=icon-button]:hover:text-[color:var(--destructive-hover)]',\n false: '',\n },\n },\n defaultVariants: { destructive: false },\n});\n\n/* In a button the icon fills IconButton's own icon box (16px at sm, 18px\n at md), so the two never disagree; a menu item's icon slot is unsized,\n so it takes the kit's 16px. */\nconst iconVariants = cva('', {\n variants: {\n place: { button: 'ds:size-full', menu: 'ds:size-4' },\n },\n defaultVariants: { place: 'button' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\ninterface ResolvedAction<TRow> {\n key: string;\n def: RowActionDef<TRow>;\n disabled: boolean;\n /** Only set while disabled. */\n reason: string | undefined;\n destructive: boolean;\n}\n\nfunction flag<TRow>(\n value: boolean | ((row: TRow) => boolean) | undefined,\n row: TRow,\n): boolean {\n return typeof value === 'function' ? value(row) : Boolean(value);\n}\n\n/** The visible actions, split into inline buttons and the More menu. */\nfunction resolveRowActions<TRow>(\n row: TRow,\n actions: readonly RowActionDef<TRow>[],\n maxInline: number | undefined,\n): { inline: ResolvedAction<TRow>[]; overflow: ResolvedAction<TRow>[] } {\n const visible: ResolvedAction<TRow>[] = [];\n actions.forEach((def, index) => {\n if (flag(def.hidden, row)) return;\n const disabled = flag(def.disabled, row);\n const reason = disabled\n ? typeof def.disabledReason === 'function'\n ? def.disabledReason(row)\n : def.disabledReason\n : undefined;\n visible.push({\n key: def.id ?? String(index),\n def,\n disabled,\n reason: reason || undefined,\n destructive: def.variant === 'destructive',\n });\n });\n const cut =\n maxInline === undefined\n ? visible.length\n : Math.max(0, Math.floor(maxInline));\n return { inline: visible.slice(0, cut), overflow: visible.slice(cut) };\n}\n\n/* A bare Lucide icon renders at 24px; size it to its box. */\nfunction sizeIcon(node: ReactNode, place: 'button' | 'menu'): ReactNode {\n if (!isValidElement<{ className?: string }>(node)) return node;\n const own = node.props.className ?? '';\n if (/(^|\\s)(ds:)?(size|w|h)-/.test(own)) return node;\n return cloneElement(node, {\n className: `${own} ${iconVariants({ place })}`.trim(),\n });\n}\n\n/* Row-level handlers (select the row, open it) never see these clicks. */\nfunction stopRowClick(event: MouseEvent) {\n event.stopPropagation();\n}\n\n/* ------------------------------------------------------------------ */\n/* More actions */\n/* ------------------------------------------------------------------ */\n\ninterface MoreEntry {\n key: string;\n id: string | undefined;\n section: string | undefined;\n icon: ReactNode;\n label: string;\n disabled: boolean;\n reason: string | undefined;\n destructive: boolean;\n choose: () => void;\n}\n\ninterface RowActionsMoreProps extends Omit<\n IconButtonProps,\n 'icon' | 'aria-label' | 'tooltip'\n> {\n entries: MoreEntry[];\n label: string;\n dir: 'ltr' | 'rtl';\n}\n\n/* The \"More actions\" trigger and its menu. It forwards its ref and the\n props an IconButtonGroup injects to the trigger IconButton, so the group\n seats it as its last segment like a plain button.\n\n A chosen action runs once the menu has closed and focus is back on the\n trigger, not from onSelect: a dialog the action opens then returns focus\n to \"More actions\" instead of to a menu item that no longer exists. */\nconst RowActionsMoreBase = forwardRef<HTMLButtonElement, RowActionsMoreProps>(\n ({ entries, label, dir, onClick, ...rest }, ref) => {\n const triggerRef = useRef<HTMLButtonElement | null>(null);\n const chosen = useRef<(() => void) | null>(null);\n return (\n <DropdownMenu.Root dir={dir}>\n <DropdownMenu.Trigger asChild>\n <IconButton\n {...rest}\n ref={composeRefs(ref, triggerRef)}\n icon={sizeIcon(<Ellipsis />, 'button')}\n className={`${accessibleTargetSquareClass} ${rest.className ?? ''}`.trim()}\n tooltip={label}\n aria-label={label}\n data-action-id=\"more\"\n onClick={(event) => {\n stopRowClick(event);\n onClick?.(event);\n }}\n />\n </DropdownMenu.Trigger>\n {/* Portalled, but React still bubbles its clicks to the row. */}\n <DropdownMenu.Content\n align=\"end\"\n onClick={stopRowClick}\n onCloseAutoFocus={(event) => {\n const run = chosen.current;\n if (!run) return;\n chosen.current = null;\n event.preventDefault();\n triggerRef.current?.focus();\n run();\n }}\n >\n {entries.map((entry, index) => {\n const previous = index > 0 ? entries[index - 1] : undefined;\n const newSection =\n previous !== undefined && previous.section !== entry.section;\n return (\n <Fragment key={entry.key}>\n {newSection ? <DropdownMenu.Separator /> : null}\n <DropdownMenu.Item\n data-action-id={entry.id}\n startIcon={sizeIcon(entry.icon, 'menu')}\n variant={entry.destructive ? 'destructive' : 'default'}\n disabled={entry.disabled}\n disabledReason={entry.reason}\n onSelect={() => {\n chosen.current = entry.choose;\n }}\n >\n {entry.label}\n </DropdownMenu.Item>\n </Fragment>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n },\n);\nRowActionsMoreBase.displayName = 'RowActions.More';\n\n/* IconButtonGroup accepts a child that renders one IconButton trigger. */\nconst RowActionsMore = Object.assign(RowActionsMoreBase, {\n rendersIconButton: true,\n});\n\n/* ------------------------------------------------------------------ */\n/* RowActions */\n/* ------------------------------------------------------------------ */\n\nfunction RowActionsInner<TRow>(\n {\n row,\n actions,\n maxInline,\n intent = 'ghost',\n group = false,\n 'aria-labelledby': ariaLabelledBy,\n label,\n size = 'sm',\n className,\n ...rest\n }: RowActionsProps<TRow>,\n ref: ForwardedRef<HTMLDivElement>,\n): ReactElement | null {\n const { t } = useTranslation('ui');\n const baseId = useId();\n const rootRef = useRef<HTMLDivElement | null>(null);\n const dir = useDirection(rootRef);\n\n const { inline, overflow } = resolveRowActions(row, actions, maxInline);\n if (inline.length === 0 && overflow.length === 0) return null;\n\n const groupLabel = label ?? t('rowActions.label', 'Actions');\n // Ids come from useId and the position, never from row data.\n const reasonIdFor = (index: number) => `${baseId}-reason-${index}`;\n\n const buttons = inline.map((action, index) => {\n const reasonId =\n action.disabled && action.reason ? reasonIdFor(index) : undefined;\n return (\n <IconButton\n key={action.key}\n size={size}\n intent={intent}\n icon={sizeIcon(action.def.icon, 'button')}\n tooltip={reasonId ? action.reason : action.def.label}\n aria-label={action.def.label}\n // Not the HTML attribute: the button stays a Tab stop, so its\n // reason can be reached. The click guard below refuses it.\n aria-disabled={action.disabled || undefined}\n aria-describedby={reasonId}\n data-action-id={action.def.id}\n className={inlineVariants({ destructive: action.destructive })}\n onClick={(event) => {\n stopRowClick(event);\n if (action.disabled) {\n event.preventDefault();\n return;\n }\n action.def.onClick(row);\n }}\n />\n );\n });\n\n const more =\n overflow.length > 0 ? (\n <RowActionsMore\n key=\"more\"\n size={size}\n intent={intent}\n dir={dir}\n label={t('rowActions.more', 'More actions')}\n entries={overflow.map((action) => ({\n key: action.key,\n id: action.def.id,\n section: action.def.section,\n icon: action.def.icon,\n label: action.def.label,\n disabled: action.disabled,\n reason: action.reason,\n destructive: action.destructive,\n choose: () => action.def.onClick(row),\n }))}\n />\n ) : null;\n\n const reasons = inline.map((action, index) =>\n action.disabled && action.reason ? (\n <span key={`reason-${action.key}`} id={reasonIdFor(index)} hidden>\n {action.reason}\n </span>\n ) : null,\n );\n\n const name = ariaLabelledBy\n ? ({ 'aria-labelledby': ariaLabelledBy } as const)\n : ({ 'aria-label': groupLabel } as const);\n\n if (group) {\n // The segmented group carries the role and the name; this root only\n // marks the component boundary and holds the reasons.\n return (\n <div\n ref={composeRefs(ref, rootRef)}\n data-component=\"row-actions\"\n className={rootVariants({ className })}\n {...rest}\n >\n <IconButtonGroup size={size} intent={intent} {...name}>\n {buttons}\n {more}\n </IconButtonGroup>\n {reasons}\n </div>\n );\n }\n\n return (\n <div\n ref={composeRefs(ref, rootRef)}\n role=\"group\"\n data-component=\"row-actions\"\n className={rootVariants({ className })}\n {...name}\n {...rest}\n >\n {buttons}\n {more}\n {reasons}\n </div>\n );\n}\n\n/**\n * The actions for one row of a table, list or card: icon buttons, with the\n * rest under \"More actions\". Engine-free, so it works in DataGrid, a list or\n * a card. A disabled action stays focusable and says why.\n */\nexport const RowActions = forwardRef(RowActionsInner) as (<TRow>(\n props: RowActionsProps<TRow> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReactElement | null) & { displayName?: string };\nRowActions.displayName = 'RowActions';\n"],"names":["rootVariants","cva","inlineVariants","accessibleTargetSquareClass","iconVariants","flag","value","row","resolveRowActions","actions","maxInline","visible","def","index","disabled","reason","cut","sizeIcon","node","place","isValidElement","own","cloneElement","stopRowClick","event","RowActionsMoreBase","forwardRef","entries","label","dir","onClick","rest","ref","triggerRef","useRef","chosen","jsxs","DropdownMenu","jsx","IconButton","composeRefs","Ellipsis","run","_a","entry","previous","newSection","Fragment","RowActionsMore","RowActionsInner","intent","group","ariaLabelledBy","size","className","t","useTranslation","baseId","useId","rootRef","useDirection","inline","overflow","groupLabel","reasonIdFor","buttons","action","reasonId","more","reasons","name","IconButtonGroup","RowActions"],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  import { jsx as o, jsxs as x } from "react/jsx-runtime";
2
- import { useState as O, useRef as I, useEffect as A, useCallback as E, useMemo as y, forwardRef as i, useContext as H, createContext as D } from "react";
2
+ import { useState as O, useRef as I, useEffect as E, useCallback as H, useMemo as y, forwardRef as i, useContext as L, createContext as D } from "react";
3
3
  import * as d from "@radix-ui/react-dialog";
4
- import { c as F } from "./index-D2ZczOXr.js";
5
- import { useTranslation as L } from "react-i18next";
6
- import { I as V } from "./icon-button-S8_weU3g.js";
4
+ import { c as P } from "./index-D2ZczOXr.js";
5
+ import { useTranslation as V } from "react-i18next";
6
+ import { I as A } from "./icon-button-S8_weU3g.js";
7
7
  import { S as M } from "./scroll-area-CY5SLYNw.js";
8
- import { u as P } from "./registry-DvAUVLHh.js";
9
- import { u as K } from "./non-modal-tab-exit-j3CPOuE3.js";
10
- import { X } from "./x-B5YnXwCz.js";
11
- const Y = {
8
+ import { u as K } from "./registry-DvAUVLHh.js";
9
+ import { u as X } from "./non-modal-tab-exit-j3CPOuE3.js";
10
+ import { r as Y } from "./body-pointer-lock-CsOEDm1I.js";
11
+ import { X as _ } from "./x-B5YnXwCz.js";
12
+ const q = {
12
13
  id: "sheet",
13
14
  // `dismiss` shares the handle's close() — it is the same imperative close
14
15
  // path with destructive intent (loses uncommitted input). Backed.
@@ -63,14 +64,14 @@ const Y = {
63
64
  description: "Sourced from the id prop on Sheet.Root."
64
65
  }
65
66
  }
66
- }, _ = [
67
+ }, F = [
67
68
  "ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]",
68
69
  "ds:bg-[var(--background)]/[var(--opacity-70)]",
69
70
  "ds:backdrop-blur-sm",
70
71
  "ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0",
71
72
  "ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0",
72
73
  "ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
73
- ].join(" "), q = F(
74
+ ].join(" "), G = P(
74
75
  [
75
76
  "ds:fixed ds:z-[var(--z-modal)] ds:flex ds:flex-col",
76
77
  "ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]",
@@ -112,7 +113,7 @@ const Y = {
112
113
  defaultVariants: { side: "end" }
113
114
  }
114
115
  );
115
- function G(e, t) {
116
+ function J(e, t) {
116
117
  return e === "start" || e === "end" ? {
117
118
  sm: "ds:[inline-size:360px]",
118
119
  md: "ds:[inline-size:480px]",
@@ -123,92 +124,103 @@ function G(e, t) {
123
124
  lg: "ds:[block-size:80dvh]"
124
125
  }[t];
125
126
  }
126
- const S = D({ modal: !0 }), h = ({
127
+ const S = D({ modal: !0 }), v = ({
127
128
  children: e,
128
129
  id: t,
129
130
  open: s,
130
- defaultOpen: r,
131
+ defaultOpen: l,
131
132
  onOpenChange: a,
132
- modal: l = !0,
133
- ...m
133
+ modal: r = !0,
134
+ ...u
134
135
  }) => {
135
- const c = s !== void 0, [u, f] = O(
136
- r ?? !1
137
- ), n = c ? !!s : u, b = I(n);
138
- A(() => {
139
- b.current = n;
140
- }, [n]);
141
- const p = E(
136
+ const p = s !== void 0, [f, h] = O(
137
+ l ?? !1
138
+ ), c = p ? !!s : f, n = I(c);
139
+ E(() => {
140
+ n.current = c;
141
+ }, [c]);
142
+ const m = H(
142
143
  (g) => {
143
- c || f(g), a == null || a(g);
144
+ p || h(g), a == null || a(g);
144
145
  },
145
- [c, a]
146
- ), B = y(
146
+ [p, a]
147
+ ), C = y(
147
148
  () => ({
148
- getIsOpen: () => b.current,
149
- open: () => p(!0),
150
- close: () => p(!1)
149
+ getIsOpen: () => n.current,
150
+ open: () => m(!0),
151
+ close: () => m(!1)
151
152
  }),
152
- [p]
153
+ [m]
153
154
  );
154
- P(Y, B, t);
155
- const w = y(() => ({ id: t, modal: l }), [t, l]);
155
+ K(q, C, t);
156
+ const w = y(() => ({ id: t, modal: r }), [t, r]);
156
157
  return /* @__PURE__ */ o(S.Provider, { value: w, children: /* @__PURE__ */ o(
157
158
  d.Root,
158
159
  {
159
- open: n,
160
- onOpenChange: p,
161
- modal: l,
162
- ...m,
160
+ open: c,
161
+ onOpenChange: m,
162
+ modal: r,
163
+ ...u,
163
164
  children: e
164
165
  }
165
166
  ) });
166
167
  };
167
- h.displayName = "Sheet.Root";
168
- const N = i(({ children: e, ...t }, s) => /* @__PURE__ */ o(d.Trigger, { ref: s, ...t, children: e }));
169
- N.displayName = "Sheet.Trigger";
170
- const v = i(({ children: e, ...t }, s) => /* @__PURE__ */ o(d.Close, { ref: s, ...t, children: e }));
171
- v.displayName = "Sheet.Close";
172
- const j = i(
173
- ({ side: e = "end", size: t = "md", className: s, children: r, onKeyDown: a, ...l }, m) => {
174
- const { id: c, modal: u } = H(S), f = K(!u);
168
+ v.displayName = "Sheet.Root";
169
+ const k = i(({ children: e, ...t }, s) => /* @__PURE__ */ o(d.Trigger, { ref: s, ...t, children: e }));
170
+ k.displayName = "Sheet.Trigger";
171
+ const b = i(({ children: e, ...t }, s) => /* @__PURE__ */ o(d.Close, { ref: s, ...t, children: e }));
172
+ b.displayName = "Sheet.Close";
173
+ const N = i(
174
+ ({
175
+ side: e = "end",
176
+ size: t = "md",
177
+ className: s,
178
+ children: l,
179
+ onKeyDown: a,
180
+ onCloseAutoFocus: r,
181
+ ...u
182
+ }, p) => {
183
+ const { id: f, modal: h } = L(S), c = X(!h);
175
184
  return /* @__PURE__ */ x(d.Portal, { children: [
176
185
  /* @__PURE__ */ o(
177
186
  d.Overlay,
178
187
  {
179
188
  "data-component": "sheet-overlay",
180
- className: _
189
+ className: F
181
190
  }
182
191
  ),
183
192
  /* @__PURE__ */ o(
184
193
  d.Content,
185
194
  {
186
- ref: m,
195
+ ref: p,
187
196
  className: [
188
- q({ side: e }),
189
- G(e, t),
197
+ G({ side: e }),
198
+ J(e, t),
190
199
  s
191
200
  ].filter(Boolean).join(" "),
192
201
  "data-component": "sheet",
193
- "data-component-id": c,
194
- ...l,
202
+ "data-component-id": f,
203
+ ...u,
195
204
  onKeyDown: (n) => {
196
- a == null || a(n), f(n);
205
+ a == null || a(n), c(n);
206
+ },
207
+ onCloseAutoFocus: (n) => {
208
+ Y(), r == null || r(n);
197
209
  },
198
- children: r
210
+ children: l
199
211
  }
200
212
  )
201
213
  ] });
202
214
  }
203
215
  );
204
- j.displayName = "Sheet.Content";
205
- const k = i(
206
- ({ className: e, children: t, ...s }, r) => {
207
- const { t: a } = L("ui");
216
+ N.displayName = "Sheet.Content";
217
+ const j = i(
218
+ ({ className: e, children: t, ...s }, l) => {
219
+ const { t: a } = V("ui");
208
220
  return /* @__PURE__ */ x(
209
221
  "div",
210
222
  {
211
- ref: r,
223
+ ref: l,
212
224
  className: [
213
225
  "ds:sticky ds:top-0 ds:z-10 ds:flex ds:items-center ds:justify-between",
214
226
  "ds:ps-[var(--spacing-lg)] ds:pe-[var(--spacing-lg)] ds:py-[var(--spacing-md)]",
@@ -218,10 +230,10 @@ const k = i(
218
230
  ...s,
219
231
  children: [
220
232
  t,
221
- /* @__PURE__ */ o(v, { asChild: !0, children: /* @__PURE__ */ o(
222
- V,
233
+ /* @__PURE__ */ o(b, { asChild: !0, children: /* @__PURE__ */ o(
234
+ A,
223
235
  {
224
- icon: /* @__PURE__ */ o(X, {}),
236
+ icon: /* @__PURE__ */ o(_, {}),
225
237
  intent: "ghost",
226
238
  size: "sm",
227
239
  "aria-label": a("common.close", "Close")
@@ -232,7 +244,7 @@ const k = i(
232
244
  );
233
245
  }
234
246
  );
235
- k.displayName = "Sheet.Header";
247
+ j.displayName = "Sheet.Header";
236
248
  const z = i(
237
249
  ({ className: e, ...t }, s) => (
238
250
  // ScrollArea forwards its ref to the scroll container (Radix viewport), so
@@ -259,7 +271,7 @@ const z = i(
259
271
  )
260
272
  );
261
273
  z.displayName = "Sheet.Body";
262
- const C = i(
274
+ const B = i(
263
275
  ({ className: e, ...t }, s) => /* @__PURE__ */ o(
264
276
  "div",
265
277
  {
@@ -275,7 +287,7 @@ const C = i(
275
287
  }
276
288
  )
277
289
  );
278
- C.displayName = "Sheet.Footer";
290
+ B.displayName = "Sheet.Footer";
279
291
  const R = i(({ className: e, ...t }, s) => /* @__PURE__ */ o(
280
292
  d.Title,
281
293
  {
@@ -294,19 +306,19 @@ const T = i(({ className: e, ...t }, s) => /* @__PURE__ */ o(
294
306
  }
295
307
  ));
296
308
  T.displayName = "Sheet.Description";
297
- const oe = Object.assign(h, {
298
- Root: h,
299
- Trigger: N,
300
- Content: j,
301
- Header: k,
309
+ const de = Object.assign(v, {
310
+ Root: v,
311
+ Trigger: k,
312
+ Content: N,
313
+ Header: j,
302
314
  Body: z,
303
- Footer: C,
315
+ Footer: B,
304
316
  Title: R,
305
317
  Description: T,
306
- Close: v
318
+ Close: b
307
319
  });
308
320
  export {
309
- oe as S,
310
- Y as s
321
+ de as S,
322
+ q as s
311
323
  };
312
- //# sourceMappingURL=sheet-uZZXaO_S.js.map
324
+ //# sourceMappingURL=sheet-BdhYeQQT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet-BdhYeQQT.js","sources":["../../src/components/sheet/sheet.agent.ts","../../src/components/sheet/sheet.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { SheetHandle } from './sheet';\n\nexport const sheetAgent: AgentAdapter<SheetHandle> = {\n id: 'sheet',\n // `dismiss` shares the handle's close() — it is the same imperative close\n // path with destructive intent (loses uncommitted input). Backed.\n capabilities: ['open', 'close', 'dismiss'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.sheet.state.isOpen',\n description: 'True when the sheet is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n // Pure ephemeral UI state — opening loses no data.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.sheet.actions.open',\n description: 'Open the sheet.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n // Pure ephemeral UI state — closing is reversible by reopening and\n // loses no committed data.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.sheet.actions.close',\n description: 'Close the sheet. Reversible by reopening.',\n invoke: (handle) => {\n handle.close();\n },\n },\n dismiss: {\n // Same close() path, but flagged destructive because dismissing a sheet\n // mid-edit discards any in-progress input that was not committed.\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.sheet.actions.dismiss',\n description:\n 'Dismiss the sheet. 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: 'sheet' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Sheet.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\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 { IconButton } from '../button/icon-button';\nimport { ScrollArea } from '../scroll-area/scroll-area';\nimport { useAgentRegistration } from '../../agent';\nimport { useNonModalTabExit } from '../_shared/non-modal-tab-exit';\nimport { sheetAgent } from './sheet.agent';\nimport { releaseStaleBodyPointerLock } from '../_shared/body-pointer-lock';\n\nconst OVERLAY_CLASSES = [\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[var(--background)]/[var(--opacity-70)]',\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\nconst contentVariants = cva(\n [\n 'ds:fixed ds:z-[var(--z-modal)] ds:flex ds:flex-col',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-xl)]',\n 'ds:focus-visible:outline-none',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n side: {\n start: [\n 'ds:start-0 ds:inset-y-0',\n 'ds:border-e ds:border-[color:var(--border)]',\n 'ds:data-[state=open]:animate-in ds:ltr:data-[state=open]:slide-in-from-left-full ds:rtl:data-[state=open]:slide-in-from-right-full',\n 'ds:data-[state=closed]:animate-out ds:ltr:data-[state=closed]:slide-out-to-left-full ds:rtl:data-[state=closed]:slide-out-to-right-full',\n 'ds:max-sm:[inline-size:100dvw] ds:max-sm:[block-size:100dvh]',\n ].join(' '),\n end: [\n 'ds:end-0 ds:inset-y-0',\n 'ds:border-s ds:border-[color:var(--border)]',\n 'ds:data-[state=open]:animate-in ds:ltr:data-[state=open]:slide-in-from-right-full ds:rtl:data-[state=open]:slide-in-from-left-full',\n 'ds:data-[state=closed]:animate-out ds:ltr:data-[state=closed]:slide-out-to-right-full ds:rtl:data-[state=closed]:slide-out-to-left-full',\n 'ds:max-sm:[inline-size:100dvw] ds:max-sm:[block-size:100dvh]',\n ].join(' '),\n top: [\n 'ds:top-0 ds:inset-x-0',\n 'ds:border-b ds:border-[color:var(--border)]',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:slide-in-from-top-full',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:slide-out-to-top-full',\n ].join(' '),\n bottom: [\n 'ds:bottom-0 ds:inset-x-0',\n 'ds:border-t ds:border-[color:var(--border)]',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:slide-in-from-bottom-full',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:slide-out-to-bottom-full',\n ].join(' '),\n },\n },\n defaultVariants: { side: 'end' },\n },\n);\n\nfunction getSizeClass(\n side: 'start' | 'end' | 'top' | 'bottom',\n size: 'sm' | 'md' | 'lg',\n): string {\n if (side === 'start' || side === 'end') {\n // These MUST carry the `ds:` prefix — a bare `[inline-size:…]` is not a\n // recognised utility under `prefix: 'ds'`, so Tailwind emits no rule and the\n // sheet renders full-bleed (the mobile `ds:max-sm:[inline-size:100dvw]`\n // classes work precisely because they are prefixed).\n const map = {\n sm: 'ds:[inline-size:360px]',\n md: 'ds:[inline-size:480px]',\n lg: 'ds:[inline-size:640px]',\n } as const;\n return map[size];\n }\n\n const map = {\n sm: 'ds:[block-size:40dvh]',\n md: 'ds:[block-size:60dvh]',\n lg: 'ds:[block-size:80dvh]',\n } as const;\n return map[size];\n}\n\n// Curated agent-readiness handle — see sheet.agent.ts.\nexport interface SheetHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface SheetRootProps extends ComponentPropsWithoutRef<\n typeof RadixDialog.Root\n> {\n /** Opaque instance id — forwarded to Sheet.Content as `data-component-id`. */\n id?: string;\n}\n\ninterface SheetContextValue {\n id?: string;\n modal: boolean;\n}\n\nconst SheetContext = createContext<SheetContextValue>({ modal: true });\n\nconst SheetRoot = ({\n children,\n id,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true,\n ...props\n}: SheetRootProps) => {\n const isControlled = openProp !== undefined;\n const [internalOpen, setInternalOpen] = useState<boolean>(\n defaultOpen ?? false,\n );\n const open = isControlled ? Boolean(openProp) : internalOpen;\n\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const setOpen = useCallback(\n (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isControlled, onOpenChange],\n );\n\n const handle = useMemo<SheetHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(sheetAgent, handle, id);\n\n const context = useMemo(() => ({ id, modal }), [id, modal]);\n\n return (\n <SheetContext.Provider value={context}>\n <RadixDialog.Root\n open={open}\n onOpenChange={setOpen}\n modal={modal}\n {...props}\n >\n {children}\n </RadixDialog.Root>\n </SheetContext.Provider>\n );\n};\nSheetRoot.displayName = 'Sheet.Root';\n\nconst SheetTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Trigger ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n));\nSheetTrigger.displayName = 'Sheet.Trigger';\n\nconst SheetClose = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Close>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Close ref={ref} {...props}>\n {children}\n </RadixDialog.Close>\n));\nSheetClose.displayName = 'Sheet.Close';\n\nexport interface SheetContentProps\n extends\n Omit<ComponentPropsWithoutRef<typeof RadixDialog.Content>, 'className'>,\n VariantProps<typeof contentVariants> {\n side?: 'start' | 'end' | 'top' | 'bottom';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n children: ReactNode;\n}\n\nconst SheetContent = forwardRef<HTMLDivElement, SheetContentProps>(\n (\n {\n side = 'end',\n size = 'md',\n className,\n children,\n onKeyDown,\n onCloseAutoFocus,\n ...props\n },\n ref,\n ) => {\n const { id: instanceId, modal } = useContext(SheetContext);\n const exitOnTab = useNonModalTabExit(!modal);\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n data-component=\"sheet-overlay\"\n className={OVERLAY_CLASSES}\n />\n <RadixDialog.Content\n ref={ref}\n className={[\n contentVariants({ side }),\n getSizeClass(side, size),\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n data-component=\"sheet\"\n data-component-id={instanceId}\n {...props}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n exitOnTab(event);\n }}\n onCloseAutoFocus={(event) => {\n releaseStaleBodyPointerLock();\n onCloseAutoFocus?.(event);\n }}\n >\n {children}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n );\n },\n);\nSheetContent.displayName = 'Sheet.Content';\n\nconst SheetHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { t } = useTranslation('ui');\n\n return (\n <div\n ref={ref}\n className={[\n 'ds:sticky ds:top-0 ds:z-10 ds:flex ds:items-center ds:justify-between',\n 'ds:ps-[var(--spacing-lg)] ds:pe-[var(--spacing-lg)] ds:py-[var(--spacing-md)]',\n 'ds:border-b ds:border-[color:var(--border)] ds:bg-[var(--popover)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n <SheetClose asChild>\n <IconButton\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('common.close', 'Close')}\n />\n </SheetClose>\n </div>\n );\n },\n);\nSheetHeader.displayName = 'Sheet.Header';\n\nconst SheetBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n // ScrollArea forwards its ref to the scroll container (Radix viewport), so\n // SheetBody's ref still points at the scroller — preserving scrollTop access.\n <ScrollArea\n ref={ref}\n orientation=\"vertical\"\n className=\"ds:flex-1 ds:min-h-0\"\n >\n <div\n className={[\n 'ds:ps-[var(--spacing-lg)] ds:pe-[var(--spacing-lg)] ds:py-[var(--spacing-lg)]',\n 'ds:break-words',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n </ScrollArea>\n ),\n);\nSheetBody.displayName = 'Sheet.Body';\n\nconst SheetFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:sticky ds:bottom-0 ds:z-10 ds:flex ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-lg)] ds:pe-[var(--spacing-lg)] ds:py-[var(--spacing-md)]',\n 'ds:border-t ds:border-[color:var(--border)] ds:bg-[var(--popover)]',\n 'ds:max-sm:flex-col ds:max-sm:[&>*]:w-full',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nSheetFooter.displayName = 'Sheet.Footer';\n\nconst SheetTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Title>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Title\n ref={ref}\n className={['type-title-card ds:break-words', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nSheetTitle.displayName = 'Sheet.Title';\n\nconst SheetDescription = 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));\nSheetDescription.displayName = 'Sheet.Description';\n\nexport const Sheet = Object.assign(SheetRoot, {\n Root: SheetRoot,\n Trigger: SheetTrigger,\n Content: SheetContent,\n Header: SheetHeader,\n Body: SheetBody,\n Footer: SheetFooter,\n Title: SheetTitle,\n Description: SheetDescription,\n Close: SheetClose,\n});\n\nexport type SheetHeaderProps = HTMLAttributes<HTMLDivElement>;\nexport type SheetBodyProps = HTMLAttributes<HTMLDivElement>;\nexport type SheetFooterProps = HTMLAttributes<HTMLDivElement>;\n"],"names":["sheetAgent","handle","OVERLAY_CLASSES","contentVariants","cva","getSizeClass","side","size","SheetContext","createContext","SheetRoot","children","id","openProp","defaultOpen","onOpenChange","modal","props","isControlled","internalOpen","setInternalOpen","useState","open","openRef","useRef","useEffect","setOpen","useCallback","next","useMemo","useAgentRegistration","context","jsx","RadixDialog","SheetTrigger","forwardRef","ref","SheetClose","SheetContent","className","onKeyDown","onCloseAutoFocus","instanceId","useContext","exitOnTab","useNonModalTabExit","jsxs","event","releaseStaleBodyPointerLock","SheetHeader","t","useTranslation","IconButton","X","SheetBody","ScrollArea","SheetFooter","SheetTitle","SheetDescription","Sheet"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as n, jsxs as u, Fragment as ge } from "react/jsx-runtime";
2
2
  import { useState as _, useRef as oe, useEffect as je, useId as B, forwardRef as Mi, useLayoutEffect as Qt } from "react";
3
3
  import { useTranslation as Fn } from "react-i18next";
4
- import { D as q } from "./dialog-CIUn5oLb.js";
4
+ import { D as q } from "./dialog-CVTxyR0v.js";
5
5
  import { Q as $i } from "./qr-code-DHEma21c.js";
6
6
  import { S as zi } from "./spinner-CoflYlEx.js";
7
7
  import { S as Ie } from "./skeleton-tTWJpvAq.js";
@@ -19,7 +19,7 @@ import { a as Ma } from "./whatsapp-button-XbozeDl_.js";
19
19
  import { c as dt } from "./createLucideIcon-DhHxpK9K.js";
20
20
  import { M as $a } from "./mail-BqXVF2zH.js";
21
21
  import { M as Bi } from "./message-square-Bye4ATvx.js";
22
- import { D as Nn } from "./dropdown-menu-Dw6sgQwJ.js";
22
+ import { D as Nn } from "./dropdown-menu-DBWaW4pq.js";
23
23
  import { S as ji } from "./signature-status-chip-pIoQjvH8.js";
24
24
  import { C as Ui } from "./chevron-down-DWE7GSq9.js";
25
25
  import { E as Wi } from "./eye-BjhN2nYf.js";
@@ -2787,4 +2787,4 @@ Or.displayName = "SignatureRequestModal";
2787
2787
  export {
2788
2788
  Or as S
2789
2789
  };
2790
- //# sourceMappingURL=signature-request-DW2PSp66.js.map
2790
+ //# sourceMappingURL=signature-request-4pGq3YBe.js.map