@alfadocs/ui-kit-debug 1.56.0 → 1.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (445) hide show
  1. package/dist/_chunks/{address-fields-BfjxS05Z.js → address-fields-CJtu7LQU.js} +2 -2
  2. package/dist/_chunks/{address-fields-BfjxS05Z.js.map → address-fields-CJtu7LQU.js.map} +1 -1
  3. package/dist/_chunks/{ai-credits-notice-BoNJtOuE.js → ai-credits-notice-ktklr8fy.js} +2 -2
  4. package/dist/_chunks/{ai-credits-notice-BoNJtOuE.js.map → ai-credits-notice-ktklr8fy.js.map} +1 -1
  5. package/dist/_chunks/ai-permission-notice-DyuEGwAt.js +206 -0
  6. package/dist/_chunks/ai-permission-notice-DyuEGwAt.js.map +1 -0
  7. package/dist/_chunks/alia-sidebar-dybRpWml.js +1284 -0
  8. package/dist/_chunks/alia-sidebar-dybRpWml.js.map +1 -0
  9. package/dist/_chunks/{anamnesis-summary-rows-CQ-XGr0T.js → anamnesis-summary-rows-M-FUkw9p.js} +6 -6
  10. package/dist/_chunks/{anamnesis-summary-rows-CQ-XGr0T.js.map → anamnesis-summary-rows-M-FUkw9p.js.map} +1 -1
  11. package/dist/_chunks/{app-frame-B-0O9CrU.js → app-frame-CqmDh2v5.js} +2 -2
  12. package/dist/_chunks/{app-frame-B-0O9CrU.js.map → app-frame-CqmDh2v5.js.map} +1 -1
  13. package/dist/_chunks/{appointment-peek-BIZaDeCi.js → appointment-peek-WvNbE4JG.js} +2 -2
  14. package/dist/_chunks/{appointment-peek-BIZaDeCi.js.map → appointment-peek-WvNbE4JG.js.map} +1 -1
  15. package/dist/_chunks/{appointment-timeline-DmqYEIT9.js → appointment-timeline-Z0494xO-.js} +2 -2
  16. package/dist/_chunks/{appointment-timeline-DmqYEIT9.js.map → appointment-timeline-Z0494xO-.js.map} +1 -1
  17. package/dist/_chunks/{balance-badge-cell-DmDcXw0c.js → balance-badge-cell-CGoJZlKf.js} +3 -3
  18. package/dist/_chunks/{balance-badge-cell-DmDcXw0c.js.map → balance-badge-cell-CGoJZlKf.js.map} +1 -1
  19. package/dist/_chunks/{booking-WyNGKPE2.js → booking-CiFSAMR-.js} +4 -4
  20. package/dist/_chunks/{booking-WyNGKPE2.js.map → booking-CiFSAMR-.js.map} +1 -1
  21. package/dist/_chunks/{calculator-dialog-pCPWta7h.js → calculator-dialog-CzQv03p0.js} +2 -2
  22. package/dist/_chunks/{calculator-dialog-pCPWta7h.js.map → calculator-dialog-CzQv03p0.js.map} +1 -1
  23. package/dist/_chunks/{calendar-workspace-Du2ryaI-.js → calendar-workspace-DNHzjG7O.js} +19 -19
  24. package/dist/_chunks/calendar-workspace-DNHzjG7O.js.map +1 -0
  25. package/dist/_chunks/{care-plan-card-Ddjh5Doc.js → care-plan-card-DxrRLRdW.js} +2 -2
  26. package/dist/_chunks/{care-plan-card-Ddjh5Doc.js.map → care-plan-card-DxrRLRdW.js.map} +1 -1
  27. package/dist/_chunks/{care-plan-header-DUX_SVvF.js → care-plan-header-BMwZIgHJ.js} +2 -2
  28. package/dist/_chunks/{care-plan-header-DUX_SVvF.js.map → care-plan-header-BMwZIgHJ.js.map} +1 -1
  29. package/dist/_chunks/{chart-HsF1KHbx.js → chart-ZMkX-Gqy.js} +338 -341
  30. package/dist/_chunks/chart-ZMkX-Gqy.js.map +1 -0
  31. package/dist/_chunks/{city-input-BC_nYINn.js → city-input-3J3bz9EO.js} +2 -2
  32. package/dist/_chunks/{city-input-BC_nYINn.js.map → city-input-3J3bz9EO.js.map} +1 -1
  33. package/dist/_chunks/{clinical-note-card-14JIoUR0.js → clinical-note-card-hx939bvw.js} +2 -2
  34. package/dist/_chunks/{clinical-note-card-14JIoUR0.js.map → clinical-note-card-hx939bvw.js.map} +1 -1
  35. package/dist/_chunks/{color-picker-BRQ4Y9SO.js → color-picker-BsggJovx.js} +128 -123
  36. package/dist/_chunks/color-picker-BsggJovx.js.map +1 -0
  37. package/dist/_chunks/{contact-card-CmK05vNb.js → contact-card-fHBMwEsx.js} +2 -2
  38. package/dist/_chunks/{contact-card-CmK05vNb.js.map → contact-card-fHBMwEsx.js.map} +1 -1
  39. package/dist/_chunks/{contact-profile-card-Ci8lBQ6a.js → contact-profile-card-CMyBYgRR.js} +2 -2
  40. package/dist/_chunks/{contact-profile-card-Ci8lBQ6a.js.map → contact-profile-card-CMyBYgRR.js.map} +1 -1
  41. package/dist/_chunks/{control-room-rail-Tx2jW250.js → control-room-rail-CJ85HkS2.js} +2 -2
  42. package/dist/_chunks/{control-room-rail-Tx2jW250.js.map → control-room-rail-CJ85HkS2.js.map} +1 -1
  43. package/dist/_chunks/{cycle-calculator-Dgfqr4Q4.js → cycle-calculator-Cww9DzIa.js} +2 -2
  44. package/dist/_chunks/{cycle-calculator-Dgfqr4Q4.js.map → cycle-calculator-Cww9DzIa.js.map} +1 -1
  45. package/dist/_chunks/dashboard-grid-Cs7cJAsA.js +933 -0
  46. package/dist/_chunks/dashboard-grid-Cs7cJAsA.js.map +1 -0
  47. package/dist/_chunks/{data-table-D8fuhqO1.js → data-table-Yn5xiGzs.js} +3 -3
  48. package/dist/_chunks/{data-table-D8fuhqO1.js.map → data-table-Yn5xiGzs.js.map} +1 -1
  49. package/dist/_chunks/{data-table-tabs-Xhg5G0gU.js → data-table-tabs-CHYAAeHy.js} +2 -2
  50. package/dist/_chunks/{data-table-tabs-Xhg5G0gU.js.map → data-table-tabs-CHYAAeHy.js.map} +1 -1
  51. package/dist/_chunks/{date-picker-wRAcq2lt.js → date-picker-BSZuKo13.js} +69 -62
  52. package/dist/_chunks/date-picker-BSZuKo13.js.map +1 -0
  53. package/dist/_chunks/{date-range-picker-CtUOI38x.js → date-range-picker-CFk-5O3R.js} +176 -171
  54. package/dist/_chunks/date-range-picker-CFk-5O3R.js.map +1 -0
  55. package/dist/_chunks/{date-time-picker-CLeLKuv9.js → date-time-picker-CjxTkblD.js} +92 -85
  56. package/dist/_chunks/date-time-picker-CjxTkblD.js.map +1 -0
  57. package/dist/_chunks/{dialog-CUzbnKLw.js → dialog-Dn-iQ0Jp.js} +2 -2
  58. package/dist/_chunks/{dialog-CUzbnKLw.js.map → dialog-Dn-iQ0Jp.js.map} +1 -1
  59. package/dist/_chunks/{document-preview-uoTekVR7.js → document-preview-CHGGG0l_.js} +2 -2
  60. package/dist/_chunks/{document-preview-uoTekVR7.js.map → document-preview-CHGGG0l_.js.map} +1 -1
  61. package/dist/_chunks/{due-date-calculator-CSjklbyw.js → due-date-calculator-D_qFUiHp.js} +2 -2
  62. package/dist/_chunks/{due-date-calculator-CSjklbyw.js.map → due-date-calculator-D_qFUiHp.js.map} +1 -1
  63. package/dist/_chunks/{entity-summary-DcB0fIiv.js → entity-summary-CWcCSThK.js} +2 -2
  64. package/dist/_chunks/{entity-summary-DcB0fIiv.js.map → entity-summary-CWcCSThK.js.map} +1 -1
  65. package/dist/_chunks/{face-scheme-BicuUA2K.js → face-scheme-DSKDdIsb.js} +2 -2
  66. package/dist/_chunks/{face-scheme-BicuUA2K.js.map → face-scheme-DSKDdIsb.js.map} +1 -1
  67. package/dist/_chunks/{file-manager-Cc_uO8r2.js → file-manager-DEtkQR1F.js} +4 -4
  68. package/dist/_chunks/{file-manager-Cc_uO8r2.js.map → file-manager-DEtkQR1F.js.map} +1 -1
  69. package/dist/_chunks/{forgot-password-form-DEx-M_QR.js → forgot-password-form-CEqOmNuX.js} +2 -2
  70. package/dist/_chunks/{forgot-password-form-DEx-M_QR.js.map → forgot-password-form-CEqOmNuX.js.map} +1 -1
  71. package/dist/_chunks/{gestational-age-calculator-DqVeJke2.js → gestational-age-calculator-CZi43xKG.js} +2 -2
  72. package/dist/_chunks/{gestational-age-calculator-DqVeJke2.js.map → gestational-age-calculator-CZi43xKG.js.map} +1 -1
  73. package/dist/_chunks/{hcg-doubling-BIYyI2Yo.js → hcg-doubling-Ccvh7OaU.js} +2 -2
  74. package/dist/_chunks/{hcg-doubling-BIYyI2Yo.js.map → hcg-doubling-Ccvh7OaU.js.map} +1 -1
  75. package/dist/_chunks/{header-settings-ge_3gYEq.js → header-settings-BMcCx2LC.js} +2 -2
  76. package/dist/_chunks/{header-settings-ge_3gYEq.js.map → header-settings-BMcCx2LC.js.map} +1 -1
  77. package/dist/_chunks/{heatmap-Gf9r7Tn1.js → heatmap-DiyOSQk9.js} +2 -2
  78. package/dist/_chunks/{heatmap-Gf9r7Tn1.js.map → heatmap-DiyOSQk9.js.map} +1 -1
  79. package/dist/_chunks/{help-me-write-templates-fV-Apf72.js → help-me-write-templates-CM1p6qkm.js} +3 -3
  80. package/dist/_chunks/{help-me-write-templates-fV-Apf72.js.map → help-me-write-templates-CM1p6qkm.js.map} +1 -1
  81. package/dist/_chunks/{hover-card-BnTueNS2.js → hover-card-U_ZYoh1n.js} +201 -187
  82. package/dist/_chunks/hover-card-U_ZYoh1n.js.map +1 -0
  83. package/dist/_chunks/{icon-picker-DWrqmI1c.js → icon-picker-rOFTawXk.js} +3 -3
  84. package/dist/_chunks/{icon-picker-DWrqmI1c.js.map → icon-picker-rOFTawXk.js.map} +1 -1
  85. package/dist/_chunks/{info-tip-B0jmIt6M.js → info-tip-CJpNpzZe.js} +2 -2
  86. package/dist/_chunks/{info-tip-B0jmIt6M.js.map → info-tip-CJpNpzZe.js.map} +1 -1
  87. package/dist/_chunks/{kit-extensions-Byfxy6sy.js → kit-extensions-DYVxWcqv.js} +4 -4
  88. package/dist/_chunks/{kit-extensions-Byfxy6sy.js.map → kit-extensions-DYVxWcqv.js.map} +1 -1
  89. package/dist/_chunks/{link-cell-renderer-TeJNvymP.js → link-cell-renderer-C1wOyxDF.js} +3 -3
  90. package/dist/_chunks/{link-cell-renderer-TeJNvymP.js.map → link-cell-renderer-C1wOyxDF.js.map} +1 -1
  91. package/dist/_chunks/link-gRw3NtOt.js +137 -0
  92. package/dist/_chunks/link-gRw3NtOt.js.map +1 -0
  93. package/dist/_chunks/{list-RRN2TJ_7.js → list-CNnn7DOD.js} +75 -73
  94. package/dist/_chunks/list-CNnn7DOD.js.map +1 -0
  95. package/dist/_chunks/{locale-picker-DfNSdOpy.js → locale-picker-BGfrZyTw.js} +2 -2
  96. package/dist/_chunks/{locale-picker-DfNSdOpy.js.map → locale-picker-BGfrZyTw.js.map} +1 -1
  97. package/dist/_chunks/{login-dev-card-DmZ1B0lB.js → login-dev-card-CIim81VB.js} +2 -2
  98. package/dist/_chunks/{login-dev-card-DmZ1B0lB.js.map → login-dev-card-CIim81VB.js.map} +1 -1
  99. package/dist/_chunks/marketplace-app-shell-CSDmGLPW.js +613 -0
  100. package/dist/_chunks/marketplace-app-shell-CSDmGLPW.js.map +1 -0
  101. package/dist/_chunks/{message-tray-BB95DA82.js → message-tray-DmU0poD7.js} +76 -69
  102. package/dist/_chunks/message-tray-DmU0poD7.js.map +1 -0
  103. package/dist/_chunks/{nav-grid-BqCPH8sm.js → nav-grid-Byx8PxuB.js} +2 -2
  104. package/dist/_chunks/{nav-grid-BqCPH8sm.js.map → nav-grid-Byx8PxuB.js.map} +1 -1
  105. package/dist/_chunks/navigation-dismiss-B1mcW1CT.js +9 -0
  106. package/dist/_chunks/navigation-dismiss-B1mcW1CT.js.map +1 -0
  107. package/dist/_chunks/non-modal-tab-exit-j3CPOuE3.js +89 -0
  108. package/dist/_chunks/non-modal-tab-exit-j3CPOuE3.js.map +1 -0
  109. package/dist/_chunks/{note-attachment-I1NLoeRZ.js → note-attachment-Bt2cddsZ.js} +2 -2
  110. package/dist/_chunks/{note-attachment-I1NLoeRZ.js.map → note-attachment-Bt2cddsZ.js.map} +1 -1
  111. package/dist/_chunks/{note-timeline-CsY8YOE7.js → note-timeline-CX9nAgAR.js} +2 -2
  112. package/dist/_chunks/{note-timeline-CsY8YOE7.js.map → note-timeline-CX9nAgAR.js.map} +1 -1
  113. package/dist/_chunks/{notes-panel-DceRhthG.js → notes-panel-DHLHsxpW.js} +4 -4
  114. package/dist/_chunks/{notes-panel-DceRhthG.js.map → notes-panel-DHLHsxpW.js.map} +1 -1
  115. package/dist/_chunks/{notification-tray-__sJXnsz.js → notification-tray-DPU-Xg0i.js} +83 -76
  116. package/dist/_chunks/notification-tray-DPU-Xg0i.js.map +1 -0
  117. package/dist/_chunks/{panel-subview-BT-Apwgb.js → panel-subview-D4o6ar6_.js} +61 -47
  118. package/dist/_chunks/panel-subview-D4o6ar6_.js.map +1 -0
  119. package/dist/_chunks/{patient-details-DsTtjpuX.js → patient-details-BCaVuaXz.js} +2 -2
  120. package/dist/_chunks/{patient-details-DsTtjpuX.js.map → patient-details-BCaVuaXz.js.map} +1 -1
  121. package/dist/_chunks/{patient-field-row-BvZ9luz-.js → patient-field-row-jcRSTrp4.js} +7 -7
  122. package/dist/_chunks/{patient-field-row-BvZ9luz-.js.map → patient-field-row-jcRSTrp4.js.map} +1 -1
  123. package/dist/_chunks/{patient-summary-card-9nQWTQf6.js → patient-summary-card-kQIfPQOE.js} +4 -4
  124. package/dist/_chunks/{patient-summary-card-9nQWTQf6.js.map → patient-summary-card-kQIfPQOE.js.map} +1 -1
  125. package/dist/_chunks/{payment-automation-upsell-DiHovmUL.js → payment-automation-upsell-C4wHOxsp.js} +2 -2
  126. package/dist/_chunks/{payment-automation-upsell-DiHovmUL.js.map → payment-automation-upsell-C4wHOxsp.js.map} +1 -1
  127. package/dist/_chunks/{payment-request-card-CwDpwXUC.js → payment-request-card-DAniJNLX.js} +2 -2
  128. package/dist/_chunks/{payment-request-card-CwDpwXUC.js.map → payment-request-card-DAniJNLX.js.map} +1 -1
  129. package/dist/_chunks/{pdf-viewer-C3minW5b.js → pdf-viewer-CNQxa4tv.js} +396 -391
  130. package/dist/_chunks/pdf-viewer-CNQxa4tv.js.map +1 -0
  131. package/dist/_chunks/{phone-input-DxkHMYmu.js → phone-input-O9camxkq.js} +156 -151
  132. package/dist/_chunks/phone-input-O9camxkq.js.map +1 -0
  133. package/dist/_chunks/popover-BG75rYjN.js +367 -0
  134. package/dist/_chunks/popover-BG75rYjN.js.map +1 -0
  135. package/dist/_chunks/{practice-results-Dhbo-fc_.js → practice-results-D07wgCqV.js} +2 -2
  136. package/dist/_chunks/{practice-results-Dhbo-fc_.js.map → practice-results-D07wgCqV.js.map} +1 -1
  137. package/dist/_chunks/{pregnancy-dating-Bfu0Cq4H.js → pregnancy-dating-BFzv9g1N.js} +2 -2
  138. package/dist/_chunks/{pregnancy-dating-Bfu0Cq4H.js.map → pregnancy-dating-BFzv9g1N.js.map} +1 -1
  139. package/dist/_chunks/{product-hub-panel-BSSiGGG4.js → product-hub-panel-DCYX0rPG.js} +103 -96
  140. package/dist/_chunks/product-hub-panel-DCYX0rPG.js.map +1 -0
  141. package/dist/_chunks/{public-footer-CxpG6J1M.js → public-footer-ZWTEG1Rq.js} +2 -2
  142. package/dist/_chunks/{public-footer-CxpG6J1M.js.map → public-footer-ZWTEG1Rq.js.map} +1 -1
  143. package/dist/_chunks/{public-header.agent-pr2hyiND.js → public-header.agent-C1SlVSYt.js} +2 -2
  144. package/dist/_chunks/{public-header.agent-pr2hyiND.js.map → public-header.agent-C1SlVSYt.js.map} +1 -1
  145. package/dist/_chunks/{radiograph-panel.agent-DkUokbEa.js → radiograph-panel.agent-DyqbTECc.js} +4 -4
  146. package/dist/_chunks/{radiograph-panel.agent-DkUokbEa.js.map → radiograph-panel.agent-DyqbTECc.js.map} +1 -1
  147. package/dist/_chunks/{registration-form-D7iNqMBF.js → registration-form-DrSR9Sjk.js} +4 -4
  148. package/dist/_chunks/{registration-form-D7iNqMBF.js.map → registration-form-DrSR9Sjk.js.map} +1 -1
  149. package/dist/_chunks/{rich-text-editor-CkFfmA3v.js → rich-text-editor-UgXri8h6.js} +490 -485
  150. package/dist/_chunks/rich-text-editor-UgXri8h6.js.map +1 -0
  151. package/dist/_chunks/{scroll-area-ZtFCv9K7.js → scroll-area-CY5SLYNw.js} +104 -74
  152. package/dist/_chunks/scroll-area-CY5SLYNw.js.map +1 -0
  153. package/dist/_chunks/{search-bar-DQJS0wJN.js → search-bar-mA4bPe3t.js} +294 -255
  154. package/dist/_chunks/search-bar-mA4bPe3t.js.map +1 -0
  155. package/dist/_chunks/{sheet-C7SwIxwB.js → sheet-Dtjk0CVv.js} +3 -3
  156. package/dist/_chunks/{sheet-C7SwIxwB.js.map → sheet-Dtjk0CVv.js.map} +1 -1
  157. package/dist/_chunks/sidebar-D4Wllqfz.js +2029 -0
  158. package/dist/_chunks/sidebar-D4Wllqfz.js.map +1 -0
  159. package/dist/_chunks/{sign-document-B6HlyCGV.js → sign-document-D4iHS_Ug.js} +2 -2
  160. package/dist/_chunks/{sign-document-B6HlyCGV.js.map → sign-document-D4iHS_Ug.js.map} +1 -1
  161. package/dist/_chunks/{signature-request-DhbpB9N9.js → signature-request-dAVgE0_5.js} +3 -3
  162. package/dist/_chunks/{signature-request-DhbpB9N9.js.map → signature-request-dAVgE0_5.js.map} +1 -1
  163. package/dist/_chunks/{signed-out-frame-B2GTIeqA.js → signed-out-frame-DOJpobp8.js} +3 -3
  164. package/dist/_chunks/{signed-out-frame-B2GTIeqA.js.map → signed-out-frame-DOJpobp8.js.map} +1 -1
  165. package/dist/_chunks/{state-backed-text-input-DECQy5aA.js → state-backed-text-input-Cgh4ms3p.js} +2 -2
  166. package/dist/_chunks/{state-backed-text-input-DECQy5aA.js.map → state-backed-text-input-Cgh4ms3p.js.map} +1 -1
  167. package/dist/_chunks/{task-editor-ByyRu29Y.js → task-editor-BflEZmcF.js} +7 -6
  168. package/dist/_chunks/task-editor-BflEZmcF.js.map +1 -0
  169. package/dist/_chunks/{tool-rail-Bwyuw_Ot.js → tool-rail-CTq1KwxW.js} +115 -114
  170. package/dist/_chunks/{tool-rail-Bwyuw_Ot.js.map → tool-rail-CTq1KwxW.js.map} +1 -1
  171. package/dist/_chunks/{use-appointment-details-read-JsDM48tf.js → use-appointment-details-read-izwoXh-G.js} +8 -8
  172. package/dist/_chunks/{use-appointment-details-read-JsDM48tf.js.map → use-appointment-details-read-izwoXh-G.js.map} +1 -1
  173. package/dist/_chunks/use-state-backed-input-DhRQo6gM.js +57 -0
  174. package/dist/_chunks/use-state-backed-input-DhRQo6gM.js.map +1 -0
  175. package/dist/_chunks/{voice-control-panel-Bg1eklL0.js → voice-control-panel-an-bpQfF.js} +3 -3
  176. package/dist/_chunks/{voice-control-panel-Bg1eklL0.js.map → voice-control-panel-an-bpQfF.js.map} +1 -1
  177. package/dist/_chunks/{widget-picker-DXYBMTfe.js → widget-picker-DlJOgYrZ.js} +80 -57
  178. package/dist/_chunks/widget-picker-DlJOgYrZ.js.map +1 -0
  179. package/dist/agent-catalog.json +3 -3
  180. package/dist/agent-i18n/en.json +1 -1
  181. package/dist/components/_shared/navigation-dismiss.d.ts +8 -0
  182. package/dist/components/_shared/navigation-dismiss.d.ts.map +1 -0
  183. package/dist/components/_shared/non-modal-tab-exit.d.ts +15 -4
  184. package/dist/components/_shared/non-modal-tab-exit.d.ts.map +1 -1
  185. package/dist/components/_shared/use-state-backed-input.d.ts +3 -2
  186. package/dist/components/_shared/use-state-backed-input.d.ts.map +1 -1
  187. package/dist/components/address-fields/index.js +1 -1
  188. package/dist/components/ai-credits-notice/index.js +1 -1
  189. package/dist/components/ai-permission-notice/ai-permission-notice.d.ts +32 -0
  190. package/dist/components/ai-permission-notice/ai-permission-notice.d.ts.map +1 -1
  191. package/dist/components/ai-permission-notice/index.d.ts +1 -1
  192. package/dist/components/ai-permission-notice/index.d.ts.map +1 -1
  193. package/dist/components/ai-permission-notice/index.js +1 -1
  194. package/dist/components/app-frame/index.js +1 -1
  195. package/dist/components/appointment-details-panel/index.js +1 -1
  196. package/dist/components/appointment-peek/index.js +1 -1
  197. package/dist/components/appointment-timeline/index.js +1 -1
  198. package/dist/components/booking/index.js +1 -1
  199. package/dist/components/calculator-dialog/index.js +1 -1
  200. package/dist/components/care-plan-card/index.js +1 -1
  201. package/dist/components/care-plan-header/index.js +1 -1
  202. package/dist/components/chart/chart.d.ts +5 -5
  203. package/dist/components/chart/chart.d.ts.map +1 -1
  204. package/dist/components/chart/index.js +1 -1
  205. package/dist/components/city-input/index.js +1 -1
  206. package/dist/components/clinical-note-card/index.js +1 -1
  207. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  208. package/dist/components/color-picker/index.js +1 -1
  209. package/dist/components/contact-card/index.js +1 -1
  210. package/dist/components/contact-profile-card/index.js +1 -1
  211. package/dist/components/control-room-rail/index.js +1 -1
  212. package/dist/components/cycle-calculator/index.js +1 -1
  213. package/dist/components/dashboard-grid/dashboard-grid.d.ts +33 -8
  214. package/dist/components/dashboard-grid/dashboard-grid.d.ts.map +1 -1
  215. package/dist/components/dashboard-grid/index.js +1 -1
  216. package/dist/components/data-table/index.js +2 -2
  217. package/dist/components/data-table-tabs/index.js +1 -1
  218. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  219. package/dist/components/date-picker/index.js +1 -1
  220. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  221. package/dist/components/date-range-picker/index.js +1 -1
  222. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  223. package/dist/components/date-time-picker/index.js +1 -1
  224. package/dist/components/dialog/index.js +1 -1
  225. package/dist/components/document-preview/index.js +1 -1
  226. package/dist/components/due-date-calculator/index.js +1 -1
  227. package/dist/components/entity-summary/index.js +1 -1
  228. package/dist/components/face-scheme/index.js +1 -1
  229. package/dist/components/file-manager/index.js +1 -1
  230. package/dist/components/gestational-age-calculator/index.js +1 -1
  231. package/dist/components/hcg-doubling/index.js +1 -1
  232. package/dist/components/header-settings/index.js +1 -1
  233. package/dist/components/heatmap/index.js +1 -1
  234. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  235. package/dist/components/hover-card/index.js +1 -1
  236. package/dist/components/icon-picker/index.js +1 -1
  237. package/dist/components/info-tip/index.js +1 -1
  238. package/dist/components/link/index.js +1 -1
  239. package/dist/components/link/link.d.ts +5 -3
  240. package/dist/components/link/link.d.ts.map +1 -1
  241. package/dist/components/list/index.js +1 -1
  242. package/dist/components/list/list.d.ts.map +1 -1
  243. package/dist/components/locale-picker/index.js +1 -1
  244. package/dist/components/message-tray/index.js +1 -1
  245. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  246. package/dist/components/nav-grid/index.js +1 -1
  247. package/dist/components/note-timeline/index.js +1 -1
  248. package/dist/components/notes-panel/index.js +1 -1
  249. package/dist/components/notification-tray/index.js +1 -1
  250. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  251. package/dist/components/panel-subview/index.js +1 -1
  252. package/dist/components/panel-subview/panel-subview.d.ts.map +1 -1
  253. package/dist/components/patient-details/index.js +1 -1
  254. package/dist/components/patient-summary-card/index.js +1 -1
  255. package/dist/components/patient-table/index.js +1 -1
  256. package/dist/components/payment-card/index.js +1 -1
  257. package/dist/components/pdf-viewer/index.js +1 -1
  258. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  259. package/dist/components/phone-input/index.js +1 -1
  260. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  261. package/dist/components/popover/index.js +1 -1
  262. package/dist/components/popover/popover.d.ts +1 -1
  263. package/dist/components/popover/popover.d.ts.map +1 -1
  264. package/dist/components/practice-results/index.js +1 -1
  265. package/dist/components/pregnancy-dating/index.js +1 -1
  266. package/dist/components/product-hub-tray/index.js +1 -1
  267. package/dist/components/product-hub-tray/product-hub-tray.d.ts.map +1 -1
  268. package/dist/components/public-footer/index.js +1 -1
  269. package/dist/components/public-header/index.js +1 -1
  270. package/dist/components/radiograph-panel/index.js +1 -1
  271. package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
  272. package/dist/components/rich-text-editor/index.js +2 -2
  273. package/dist/components/scroll-area/index.js +1 -1
  274. package/dist/components/scroll-area/scroll-area.d.ts +6 -5
  275. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  276. package/dist/components/search-bar/index.js +1 -1
  277. package/dist/components/search-bar/search-bar.d.ts +1 -1
  278. package/dist/components/search-bar/search-bar.d.ts.map +1 -1
  279. package/dist/components/sheet/index.js +1 -1
  280. package/dist/components/sidebar/index.d.ts +1 -1
  281. package/dist/components/sidebar/index.d.ts.map +1 -1
  282. package/dist/components/sidebar/index.js +1 -1
  283. package/dist/components/sidebar/sidebar-move.d.ts +88 -0
  284. package/dist/components/sidebar/sidebar-move.d.ts.map +1 -0
  285. package/dist/components/sidebar/sidebar.d.ts +26 -1
  286. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  287. package/dist/components/sign-document/index.js +1 -1
  288. package/dist/components/task-editor/index.js +1 -1
  289. package/dist/components/task-editor/task-editor.d.ts.map +1 -1
  290. package/dist/components/tool-rail/index.js +1 -1
  291. package/dist/components/tool-rail/tool-rail.d.ts.map +1 -1
  292. package/dist/components/voice-control-panel/index.js +1 -1
  293. package/dist/components/widget-picker/index.js +1 -1
  294. package/dist/components/widget-picker/widget-picker.d.ts.map +1 -1
  295. package/dist/host-compat.css +2 -1
  296. package/dist/i18n/locales/ar.d.ts +24 -0
  297. package/dist/i18n/locales/ar.d.ts.map +1 -1
  298. package/dist/i18n/locales/ar.js +26 -2
  299. package/dist/i18n/locales/ar.js.map +1 -1
  300. package/dist/i18n/locales/de.d.ts +24 -0
  301. package/dist/i18n/locales/de.d.ts.map +1 -1
  302. package/dist/i18n/locales/de.js +26 -2
  303. package/dist/i18n/locales/de.js.map +1 -1
  304. package/dist/i18n/locales/el.d.ts +24 -0
  305. package/dist/i18n/locales/el.d.ts.map +1 -1
  306. package/dist/i18n/locales/el.js +26 -2
  307. package/dist/i18n/locales/el.js.map +1 -1
  308. package/dist/i18n/locales/en.d.ts +24 -0
  309. package/dist/i18n/locales/en.d.ts.map +1 -1
  310. package/dist/i18n/locales/en.js +26 -2
  311. package/dist/i18n/locales/en.js.map +1 -1
  312. package/dist/i18n/locales/es.d.ts +24 -0
  313. package/dist/i18n/locales/es.d.ts.map +1 -1
  314. package/dist/i18n/locales/es.js +26 -2
  315. package/dist/i18n/locales/es.js.map +1 -1
  316. package/dist/i18n/locales/fr.d.ts +24 -0
  317. package/dist/i18n/locales/fr.d.ts.map +1 -1
  318. package/dist/i18n/locales/fr.js +26 -2
  319. package/dist/i18n/locales/fr.js.map +1 -1
  320. package/dist/i18n/locales/hi.d.ts +24 -0
  321. package/dist/i18n/locales/hi.d.ts.map +1 -1
  322. package/dist/i18n/locales/hi.js +26 -2
  323. package/dist/i18n/locales/hi.js.map +1 -1
  324. package/dist/i18n/locales/it.d.ts +24 -0
  325. package/dist/i18n/locales/it.d.ts.map +1 -1
  326. package/dist/i18n/locales/it.js +26 -2
  327. package/dist/i18n/locales/it.js.map +1 -1
  328. package/dist/i18n/locales/ja.d.ts +24 -0
  329. package/dist/i18n/locales/ja.d.ts.map +1 -1
  330. package/dist/i18n/locales/ja.js +26 -2
  331. package/dist/i18n/locales/ja.js.map +1 -1
  332. package/dist/i18n/locales/nl.d.ts +24 -0
  333. package/dist/i18n/locales/nl.d.ts.map +1 -1
  334. package/dist/i18n/locales/nl.js +26 -2
  335. package/dist/i18n/locales/nl.js.map +1 -1
  336. package/dist/i18n/locales/pl.d.ts +24 -0
  337. package/dist/i18n/locales/pl.d.ts.map +1 -1
  338. package/dist/i18n/locales/pl.js +26 -2
  339. package/dist/i18n/locales/pl.js.map +1 -1
  340. package/dist/i18n/locales/pt.d.ts +24 -0
  341. package/dist/i18n/locales/pt.d.ts.map +1 -1
  342. package/dist/i18n/locales/pt.js +26 -2
  343. package/dist/i18n/locales/pt.js.map +1 -1
  344. package/dist/i18n/locales/ro.d.ts +24 -0
  345. package/dist/i18n/locales/ro.d.ts.map +1 -1
  346. package/dist/i18n/locales/ro.js +26 -2
  347. package/dist/i18n/locales/ro.js.map +1 -1
  348. package/dist/i18n/locales/ru.d.ts +24 -0
  349. package/dist/i18n/locales/ru.d.ts.map +1 -1
  350. package/dist/i18n/locales/ru.js +26 -2
  351. package/dist/i18n/locales/ru.js.map +1 -1
  352. package/dist/i18n/locales/sq.d.ts +24 -0
  353. package/dist/i18n/locales/sq.d.ts.map +1 -1
  354. package/dist/i18n/locales/sq.js +26 -2
  355. package/dist/i18n/locales/sq.js.map +1 -1
  356. package/dist/i18n/locales/sv.d.ts +24 -0
  357. package/dist/i18n/locales/sv.d.ts.map +1 -1
  358. package/dist/i18n/locales/sv.js +26 -2
  359. package/dist/i18n/locales/sv.js.map +1 -1
  360. package/dist/i18n/locales/tr.d.ts +24 -0
  361. package/dist/i18n/locales/tr.d.ts.map +1 -1
  362. package/dist/i18n/locales/tr.js +26 -2
  363. package/dist/i18n/locales/tr.js.map +1 -1
  364. package/dist/i18n/locales/zh.d.ts +24 -0
  365. package/dist/i18n/locales/zh.d.ts.map +1 -1
  366. package/dist/i18n/locales/zh.js +26 -2
  367. package/dist/i18n/locales/zh.js.map +1 -1
  368. package/dist/index.js +204 -203
  369. package/dist/locales/ar.json +26 -2
  370. package/dist/locales/de.json +26 -2
  371. package/dist/locales/el.json +26 -2
  372. package/dist/locales/en.json +26 -2
  373. package/dist/locales/es.json +26 -2
  374. package/dist/locales/fr.json +26 -2
  375. package/dist/locales/hi.json +26 -2
  376. package/dist/locales/it.json +26 -2
  377. package/dist/locales/ja.json +26 -2
  378. package/dist/locales/nl.json +26 -2
  379. package/dist/locales/pl.json +26 -2
  380. package/dist/locales/pt.json +26 -2
  381. package/dist/locales/ro.json +26 -2
  382. package/dist/locales/ru.json +26 -2
  383. package/dist/locales/sq.json +26 -2
  384. package/dist/locales/sv.json +26 -2
  385. package/dist/locales/tr.json +26 -2
  386. package/dist/locales/zh.json +26 -2
  387. package/dist/patterns/alia-assistant/alia-asteroid-icon.d.ts +10 -13
  388. package/dist/patterns/alia-assistant/alia-asteroid-icon.d.ts.map +1 -1
  389. package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
  390. package/dist/patterns/alia-assistant/alia-popout.d.ts +5 -3
  391. package/dist/patterns/alia-assistant/alia-popout.d.ts.map +1 -1
  392. package/dist/patterns/alia-assistant/index.d.ts +2 -0
  393. package/dist/patterns/alia-assistant/index.d.ts.map +1 -1
  394. package/dist/patterns/alia-assistant/index.js +6 -5
  395. package/dist/patterns/anamnesis/index.js +1 -1
  396. package/dist/patterns/calendar/index.js +1 -1
  397. package/dist/patterns/forgot-password-form/index.js +1 -1
  398. package/dist/patterns/help-me-write-templates/index.js +1 -1
  399. package/dist/patterns/login-form/index.js +1 -1
  400. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  401. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +40 -10
  402. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
  403. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  404. package/dist/patterns/registration-form/index.js +1 -1
  405. package/dist/patterns/signature-request/index.js +1 -1
  406. package/dist/patterns/signed-out-frame/index.js +1 -1
  407. package/dist/tokens.css +1 -1
  408. package/package.json +1 -1
  409. package/dist/_chunks/ai-permission-notice-5vpblPCx.js +0 -171
  410. package/dist/_chunks/ai-permission-notice-5vpblPCx.js.map +0 -1
  411. package/dist/_chunks/alia-sidebar-DOei4Iyu.js +0 -1183
  412. package/dist/_chunks/alia-sidebar-DOei4Iyu.js.map +0 -1
  413. package/dist/_chunks/calendar-workspace-Du2ryaI-.js.map +0 -1
  414. package/dist/_chunks/chart-HsF1KHbx.js.map +0 -1
  415. package/dist/_chunks/color-picker-BRQ4Y9SO.js.map +0 -1
  416. package/dist/_chunks/dashboard-grid-DfEY2qci.js +0 -844
  417. package/dist/_chunks/dashboard-grid-DfEY2qci.js.map +0 -1
  418. package/dist/_chunks/date-picker-wRAcq2lt.js.map +0 -1
  419. package/dist/_chunks/date-range-picker-CtUOI38x.js.map +0 -1
  420. package/dist/_chunks/date-time-picker-CLeLKuv9.js.map +0 -1
  421. package/dist/_chunks/hover-card-BnTueNS2.js.map +0 -1
  422. package/dist/_chunks/link-2HokYuIi.js +0 -130
  423. package/dist/_chunks/link-2HokYuIi.js.map +0 -1
  424. package/dist/_chunks/list-RRN2TJ_7.js.map +0 -1
  425. package/dist/_chunks/marketplace-app-shell-Dcx-JEjg.js +0 -541
  426. package/dist/_chunks/marketplace-app-shell-Dcx-JEjg.js.map +0 -1
  427. package/dist/_chunks/message-tray-BB95DA82.js.map +0 -1
  428. package/dist/_chunks/non-modal-tab-exit-D2Bd93Bq.js +0 -65
  429. package/dist/_chunks/non-modal-tab-exit-D2Bd93Bq.js.map +0 -1
  430. package/dist/_chunks/notification-tray-__sJXnsz.js.map +0 -1
  431. package/dist/_chunks/panel-subview-BT-Apwgb.js.map +0 -1
  432. package/dist/_chunks/pdf-viewer-C3minW5b.js.map +0 -1
  433. package/dist/_chunks/phone-input-DxkHMYmu.js.map +0 -1
  434. package/dist/_chunks/popover-BI3oV3eY.js +0 -305
  435. package/dist/_chunks/popover-BI3oV3eY.js.map +0 -1
  436. package/dist/_chunks/product-hub-panel-BSSiGGG4.js.map +0 -1
  437. package/dist/_chunks/rich-text-editor-CkFfmA3v.js.map +0 -1
  438. package/dist/_chunks/scroll-area-ZtFCv9K7.js.map +0 -1
  439. package/dist/_chunks/search-bar-DQJS0wJN.js.map +0 -1
  440. package/dist/_chunks/sidebar-DLsG2AIk.js +0 -1349
  441. package/dist/_chunks/sidebar-DLsG2AIk.js.map +0 -1
  442. package/dist/_chunks/task-editor-ByyRu29Y.js.map +0 -1
  443. package/dist/_chunks/use-state-backed-input-C7ESmxKB.js +0 -59
  444. package/dist/_chunks/use-state-backed-input-C7ESmxKB.js.map +0 -1
  445. package/dist/_chunks/widget-picker-DXYBMTfe.js.map +0 -1
@@ -0,0 +1,2029 @@
1
+ import { jsxs as h, Fragment as xe, jsx as r } from "react/jsx-runtime";
2
+ import { useId as ye, useState as re, useRef as F, useCallback as L, useEffect as ne, useMemo as he, createContext as ce, useContext as ue, forwardRef as H } from "react";
3
+ import * as pe from "@radix-ui/react-dialog";
4
+ import * as Se from "@radix-ui/react-collapsible";
5
+ import * as be from "@radix-ui/react-accordion";
6
+ import * as E from "@radix-ui/react-tooltip";
7
+ import { a as Xe } from "./accordion-Ch3xp0mX.js";
8
+ import { S as We } from "./scroll-area-CY5SLYNw.js";
9
+ import { Slot as Ze } from "@radix-ui/react-slot";
10
+ import { c as ee } from "./index-D2ZczOXr.js";
11
+ import { useTranslation as de } from "react-i18next";
12
+ import { u as Je } from "./registry-DvAUVLHh.js";
13
+ import { u as Qe } from "./use-edge-resize-DHbyQwu8.js";
14
+ import { c as es } from "./compose-refs-C0k0tdqF.js";
15
+ import { a as ss, b as ts, d as ns } from "./input-surface-iBmxVBfr.js";
16
+ import { u as rs } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
17
+ import { i as as } from "./is-development-CLUAnsU7.js";
18
+ import { X as is } from "./x-B5YnXwCz.js";
19
+ import { c as Me } from "./createLucideIcon-DhHxpK9K.js";
20
+ import { G as os } from "./grip-vertical-onSb1JXO.js";
21
+ import { C as we } from "./chevron-right-I9AeSxH2.js";
22
+ import { S as ds } from "./star-Bf9L2Uot.js";
23
+ import { T as ls } from "./trending-up-C_luYBzS.js";
24
+ /**
25
+ * @license lucide-react v1.22.0 - ISC
26
+ *
27
+ * This source code is licensed under the ISC license.
28
+ * See the LICENSE file in the root directory of this source tree.
29
+ */
30
+ const cs = [
31
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
32
+ ["path", { d: "M9 3v18", key: "fh3hqa" }],
33
+ ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
34
+ ], us = Me("panel-left-close", cs);
35
+ /**
36
+ * @license lucide-react v1.22.0 - ISC
37
+ *
38
+ * This source code is licensed under the ISC license.
39
+ * See the LICENSE file in the root directory of this source tree.
40
+ */
41
+ const ms = [
42
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
43
+ ["path", { d: "M9 3v18", key: "fh3hqa" }],
44
+ ["path", { d: "m14 9 3 3-3 3", key: "8010ee" }]
45
+ ], fs = Me("panel-left-open", ms), ps = {
46
+ id: "sidebar",
47
+ capabilities: ["expand"],
48
+ state: {
49
+ isCollapsed: {
50
+ type: "boolean",
51
+ descriptionKey: "ui.agent.sidebar.state.isCollapsed",
52
+ description: "True when the sidebar is in its collapsed (rail) state.",
53
+ read: (e) => e.getIsCollapsed()
54
+ }
55
+ },
56
+ actions: {
57
+ toggle_collapsed: {
58
+ // Pure ephemeral chrome state — toggling the rail loses no data.
59
+ safety: "read",
60
+ descriptionKey: "ui.agent.sidebar.actions.toggleCollapsed",
61
+ description: "Toggle the sidebar between collapsed and expanded.",
62
+ invoke: (e) => {
63
+ e.toggleCollapsed();
64
+ }
65
+ }
66
+ },
67
+ domHooks: {
68
+ root: { attr: "data-component", value: "sidebar" },
69
+ instanceId: {
70
+ attr: "data-component-id",
71
+ sourceProp: "id",
72
+ description: "Sourced from the id prop."
73
+ },
74
+ item: {
75
+ attr: "data-nav-id",
76
+ sourceProp: "navId",
77
+ description: "Each Sidebar.Item emits its `navId` prop as data-nav-id. Agents activate a nav item via native click on the matching anchor."
78
+ }
79
+ }
80
+ }, Ne = ce({
81
+ enabled: !1,
82
+ move: null
83
+ }), Ce = () => ue(Ne), _e = ce(null), oe = (e, t) => e.sectionId === t.sectionId && e.index === t.index, Be = "[data-sidebar-item-id]", Fe = "[data-sidebar-section-id]";
84
+ function le(e, t) {
85
+ var a;
86
+ const s = (a = e.parentElement) == null ? void 0 : a.closest(Fe);
87
+ return s && t.contains(s) ? s.dataset.sidebarSectionId ?? null : null;
88
+ }
89
+ function vs(e, t) {
90
+ var c;
91
+ const s = e.querySelector("[data-sidebar-body]") ?? e, a = Array.from(
92
+ s.querySelectorAll(`${Fe},${Be}`)
93
+ ), i = /* @__PURE__ */ new Map([[null, []]]), u = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
94
+ let p = null;
95
+ for (const l of a) {
96
+ const v = l.dataset.sidebarSectionId;
97
+ if (v !== void 0) {
98
+ i.set(v, []), u.set(v, l.dataset.sidebarSectionOpen !== "false"), o.set(v, l.dataset.sidebarSectionLabel ?? "");
99
+ continue;
100
+ }
101
+ if (l.dataset.sidebarItemId === t) {
102
+ p = l;
103
+ continue;
104
+ }
105
+ const y = le(l, s);
106
+ (c = i.get(y)) == null || c.push(l);
107
+ }
108
+ if (!p) return null;
109
+ const m = (l) => {
110
+ var v;
111
+ return (((v = i.get(l)) == null ? void 0 : v.length) ?? 0) + 1;
112
+ }, g = [], I = i.get(null) ?? [], N = I.length === 0 && le(p, s) === null;
113
+ for (const l of a) {
114
+ const v = l.dataset.sidebarSectionId;
115
+ if (v !== void 0) {
116
+ const w = i.get(v) ?? [];
117
+ (!u.get(v) || w.length === 0) && g.push({
118
+ sectionId: v,
119
+ index: w.length,
120
+ total: m(v),
121
+ indicator: { kind: "section", sectionId: v }
122
+ });
123
+ continue;
124
+ }
125
+ if (l === p) {
126
+ N && g.push({
127
+ sectionId: null,
128
+ index: 0,
129
+ total: 1,
130
+ indicator: { kind: "item", itemId: t, edge: "before" }
131
+ });
132
+ continue;
133
+ }
134
+ const y = le(l, s);
135
+ if (y !== null && !u.get(y)) continue;
136
+ const A = i.get(y) ?? [], D = A.indexOf(l), T = l.dataset.sidebarItemId ?? "";
137
+ g.push({
138
+ sectionId: y,
139
+ index: D,
140
+ total: m(y),
141
+ indicator: { kind: "item", itemId: T, edge: "before" }
142
+ }), D === A.length - 1 && g.push({
143
+ sectionId: y,
144
+ index: D + 1,
145
+ total: m(y),
146
+ indicator: { kind: "item", itemId: T, edge: "after" }
147
+ });
148
+ }
149
+ I.length === 0 && !N && g.push({
150
+ sectionId: null,
151
+ index: 0,
152
+ total: 1,
153
+ indicator: { kind: "list" }
154
+ });
155
+ const k = le(p, s), R = (i.get(k) ?? []).filter(
156
+ (l) => l.compareDocumentPosition(p) & Node.DOCUMENT_POSITION_FOLLOWING
157
+ ).length;
158
+ return {
159
+ places: g,
160
+ originIndex: g.findIndex(
161
+ (l) => oe(l, { sectionId: k, index: R })
162
+ ),
163
+ emptySectionIds: [...i.entries()].filter(([l, v]) => l !== null && u.get(l) && !v.length).map(([l]) => l),
164
+ listEmpty: I.length === 0 && !N,
165
+ sectionLabels: o
166
+ };
167
+ }
168
+ function gs(e, t) {
169
+ const s = e.querySelector("[data-sidebar-body]") ?? e, a = le(t, s), i = Array.from(s.querySelectorAll(Be)).filter(
170
+ (u) => u !== t && le(u, s) === a && u.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING
171
+ ).length;
172
+ return { sectionId: a, index: i };
173
+ }
174
+ function He(e, t) {
175
+ var a;
176
+ const { indicator: s } = t;
177
+ return s.kind === "item" ? e.querySelector(
178
+ `[data-sidebar-item-id="${CSS.escape(s.itemId)}"]`
179
+ ) : s.kind === "list" ? e.querySelector("[data-sidebar-drop-zone-list]") : e.querySelector(
180
+ `[data-sidebar-drop-zone="${CSS.escape(s.sectionId)}"]`
181
+ ) ?? ((a = e.querySelector(
182
+ `[data-sidebar-section-id="${CSS.escape(s.sectionId)}"]`
183
+ )) == null ? void 0 : a.querySelector("[data-sidebar-section-heading]")) ?? null;
184
+ }
185
+ function bs(e, t) {
186
+ var a;
187
+ const s = (a = He(e, t)) == null ? void 0 : a.getBoundingClientRect();
188
+ return s ? t.indicator.kind === "item" ? t.indicator.edge === "before" ? s.top : s.bottom : s.top + s.height / 2 : t.indicator.kind === "item" ? Number.POSITIVE_INFINITY : e.getBoundingClientRect().bottom;
189
+ }
190
+ const hs = 450, xs = 6, ys = 5e3, Ie = 48, ws = 14;
191
+ function Ss({
192
+ onMoveItem: e,
193
+ enabled: t,
194
+ rootRef: s,
195
+ quietFocusRef: a
196
+ }) {
197
+ const { t: i } = de("ui"), u = ye(), [o, p] = re(null), m = F(null), g = F([]), I = F(/* @__PURE__ */ new Map()), N = F(/* @__PURE__ */ new Map()), k = F(null), R = F(e);
198
+ R.current = e;
199
+ const c = F(null), l = F(null), v = L((n) => {
200
+ m.current = n, p(n);
201
+ }, []), [y, A] = re(""), D = F(!1), T = L((n) => {
202
+ D.current = !D.current, A(D.current ? n : `${n}​`);
203
+ }, []), w = L(
204
+ (n) => n.sectionId === null ? i("navigation.sidebar.move.inList", {
205
+ position: n.index + 1,
206
+ total: n.total
207
+ }) : i("navigation.sidebar.move.inSection", {
208
+ section: I.current.get(n.sectionId) ?? "",
209
+ position: n.index + 1,
210
+ total: n.total
211
+ }),
212
+ [i]
213
+ ), O = L(
214
+ (n, f, x) => {
215
+ var te;
216
+ const d = s.current;
217
+ if (!d) return !1;
218
+ const S = vs(d, n);
219
+ if (!S || S.originIndex < 0) return !1;
220
+ g.current = S.places, I.current = S.sectionLabels;
221
+ const B = S.places[S.originIndex], Z = x.getAttribute("aria-label") ?? ((te = x.textContent) == null ? void 0 : te.trim()) ?? "";
222
+ return v({
223
+ itemId: n,
224
+ label: Z,
225
+ via: f,
226
+ origin: B,
227
+ target: B,
228
+ emptySectionIds: S.emptySectionIds,
229
+ listEmpty: S.listEmpty
230
+ }), T(
231
+ i("navigation.sidebar.move.pickedUp", {
232
+ item: Z,
233
+ place: w(B)
234
+ })
235
+ ), !0;
236
+ },
237
+ [s, v, T, i, w]
238
+ ), z = L(
239
+ (n, f) => {
240
+ const x = m.current;
241
+ !x || oe(x.target, n) || (v({ ...x, target: n }), f && (T(w(n)), requestAnimationFrame(() => {
242
+ var S, B;
243
+ const d = s.current;
244
+ d && ((B = (S = He(d, n)) == null ? void 0 : S.scrollIntoView) == null || B.call(S, { block: "nearest" }));
245
+ })));
246
+ },
247
+ [v, T, w, s]
248
+ ), P = L(() => {
249
+ var B, Z;
250
+ const n = m.current;
251
+ if (!n) return;
252
+ v(null), g.current = [];
253
+ const { itemId: f, origin: x, target: d, label: S } = n;
254
+ oe(x, d) || (k.current = {
255
+ itemId: f,
256
+ sectionId: d.sectionId,
257
+ index: d.index,
258
+ until: Date.now() + ys
259
+ }, d.sectionId !== null && ((B = N.current.get(d.sectionId)) == null || B()), (Z = R.current) == null || Z.call(R, {
260
+ itemId: f,
261
+ toSectionId: d.sectionId,
262
+ index: d.index
263
+ })), T(
264
+ i("navigation.sidebar.move.dropped", {
265
+ item: S,
266
+ place: w(d)
267
+ })
268
+ );
269
+ }, [v, T, i, w]), j = L(() => {
270
+ const n = m.current;
271
+ n && (v(null), g.current = [], T(
272
+ i("navigation.sidebar.move.cancelled", {
273
+ item: n.label,
274
+ place: w(n.origin)
275
+ })
276
+ ));
277
+ }, [v, T, i, w]), X = L(
278
+ (n, f) => {
279
+ const x = m.current, d = !n.altKey && !n.ctrlKey && !n.metaKey && !n.shiftKey;
280
+ if (!x) {
281
+ n.key === " " && d && !n.repeat && (n.preventDefault(), O(f, "keyboard", n.currentTarget));
282
+ return;
283
+ }
284
+ if (x.itemId !== f || x.via !== "keyboard") return;
285
+ const S = g.current, B = S.findIndex((te) => oe(te, x.target)), Z = (te) => {
286
+ const me = S[Math.max(0, Math.min(S.length - 1, te))];
287
+ me && z(me, !0);
288
+ };
289
+ switch (n.key) {
290
+ case "ArrowDown":
291
+ n.preventDefault(), Z(B + 1);
292
+ break;
293
+ case "ArrowUp":
294
+ n.preventDefault(), Z(B - 1);
295
+ break;
296
+ case "Home":
297
+ n.preventDefault(), Z(0);
298
+ break;
299
+ case "End":
300
+ n.preventDefault(), Z(S.length - 1);
301
+ break;
302
+ case " ":
303
+ case "Enter":
304
+ n.preventDefault(), n.repeat || P();
305
+ break;
306
+ case "Escape":
307
+ n.preventDefault(), n.stopPropagation(), j();
308
+ break;
309
+ case "Tab":
310
+ j();
311
+ break;
312
+ }
313
+ },
314
+ [O, z, P, j]
315
+ ), U = L(
316
+ (n) => {
317
+ const f = m.current;
318
+ (f == null ? void 0 : f.via) === "keyboard" && f.itemId === n && j();
319
+ },
320
+ [j]
321
+ ), b = L(() => {
322
+ var f;
323
+ const n = c.current;
324
+ n != null && n.timer && clearTimeout(n.timer), n != null && n.frame && cancelAnimationFrame(n.frame), c.current = null, (f = l.current) == null || f.call(l), l.current = null;
325
+ }, []), M = L(
326
+ (n, f) => {
327
+ if (m.current || c.current || !n.isPrimary || n.button !== 0) return;
328
+ const x = n.pointerType === "touch", d = {
329
+ pointerId: n.pointerId,
330
+ itemId: f,
331
+ node: n.currentTarget,
332
+ touch: x,
333
+ startX: n.clientX,
334
+ startY: n.clientY,
335
+ dragging: !1,
336
+ timer: null,
337
+ lastY: n.clientY,
338
+ frame: 0
339
+ };
340
+ c.current = d;
341
+ const S = () => {
342
+ var C, J;
343
+ if (!O(d.itemId, "pointer", d.node)) {
344
+ b();
345
+ return;
346
+ }
347
+ d.dragging = !0, (J = (C = window.getSelection) == null ? void 0 : C.call(window)) == null || J.removeAllRanges();
348
+ }, B = (C) => {
349
+ const J = s.current;
350
+ if (!J) return;
351
+ let Q = null, fe = Number.POSITIVE_INFINITY;
352
+ for (const ae of g.current) {
353
+ const ie = Math.abs(bs(J, ae) - C);
354
+ ie < fe && (Q = ae, fe = ie);
355
+ }
356
+ Q && z(Q, !1);
357
+ }, Z = () => {
358
+ var De, Ae;
359
+ if (d.frame = 0, !d.dragging) return;
360
+ const C = (Ae = (De = s.current) == null ? void 0 : De.querySelector("[data-sidebar-body]")) == null ? void 0 : Ae.closest("[data-radix-scroll-area-viewport]");
361
+ if (!C) return;
362
+ const J = C.getBoundingClientRect(), Q = J.top + Ie - d.lastY, fe = d.lastY - (J.bottom - Ie), ae = Math.max(Q, fe);
363
+ if (ae <= 0) return;
364
+ const ie = Math.ceil(ws * Math.min(1, ae / Ie)), ge = C.scrollTop;
365
+ C.scrollTop += Q > 0 ? -ie : ie, C.scrollTop !== ge && (B(d.lastY), d.frame = requestAnimationFrame(Z));
366
+ }, te = (C) => {
367
+ if (C.pointerId === d.pointerId) {
368
+ if (!d.dragging) {
369
+ if (Math.hypot(
370
+ C.clientX - d.startX,
371
+ C.clientY - d.startY
372
+ ) < xs) return;
373
+ if (d.touch) {
374
+ b();
375
+ return;
376
+ }
377
+ if (S(), !d.dragging) return;
378
+ }
379
+ d.lastY = C.clientY, B(C.clientY), d.frame || (d.frame = requestAnimationFrame(Z));
380
+ }
381
+ }, me = (C) => {
382
+ var ie;
383
+ if (C.pointerId !== d.pointerId) return;
384
+ const J = d.dragging;
385
+ if (b(), !J) return;
386
+ const Q = (ie = s.current) == null ? void 0 : ie.getBoundingClientRect();
387
+ if (!Q || C.clientX < Q.left || C.clientX > Q.right || C.clientY < Q.top || C.clientY > Q.bottom) {
388
+ j();
389
+ return;
390
+ }
391
+ P();
392
+ const ae = (ge) => {
393
+ ge.preventDefault(), ge.stopPropagation();
394
+ };
395
+ window.addEventListener("click", ae, {
396
+ capture: !0,
397
+ once: !0
398
+ }), setTimeout(() => window.removeEventListener("click", ae, !0), 0);
399
+ }, ke = (C) => {
400
+ if (C.pointerId !== d.pointerId) return;
401
+ const J = d.dragging;
402
+ b(), J && j();
403
+ }, Te = (C) => C.preventDefault(), Ee = (C) => {
404
+ C.key !== "Escape" || !d.dragging || (C.preventDefault(), b(), j());
405
+ };
406
+ window.addEventListener("pointermove", te), window.addEventListener("pointerup", me), window.addEventListener("pointercancel", ke), window.addEventListener("keydown", Ee, !0), x && (window.addEventListener("contextmenu", Te, !0), d.timer = setTimeout(() => {
407
+ d.timer = null, S();
408
+ }, hs)), l.current = () => {
409
+ window.removeEventListener("pointermove", te), window.removeEventListener("pointerup", me), window.removeEventListener("pointercancel", ke), window.removeEventListener("keydown", Ee, !0), window.removeEventListener("contextmenu", Te, !0);
410
+ };
411
+ },
412
+ [O, z, P, j, b, s]
413
+ );
414
+ ne(() => b, [b]);
415
+ const Y = F(null), q = L((n) => {
416
+ var f;
417
+ (f = c.current) != null && f.dragging && n.preventDefault();
418
+ }, []), V = L(
419
+ (n) => {
420
+ var f;
421
+ Y.current !== n && ((f = Y.current) == null || f.removeEventListener("touchmove", q), Y.current = n, n == null || n.addEventListener("touchmove", q, { passive: !1 }));
422
+ },
423
+ [q]
424
+ ), W = F(t);
425
+ W.current = t;
426
+ const K = L(
427
+ (n) => V(n && W.current ? n : null),
428
+ [V]
429
+ );
430
+ ne(() => {
431
+ V(t ? s.current : null);
432
+ }, [t, V, s]), ne(() => () => V(null), [V]), ne(() => {
433
+ !t && m.current && j();
434
+ }, [t, j]);
435
+ const _ = L((n, f) => (N.current.set(n, f), () => {
436
+ N.current.get(n) === f && N.current.delete(n);
437
+ }), []), $ = L(() => {
438
+ const n = k.current, f = s.current;
439
+ if (!n || !f) return;
440
+ if (Date.now() > n.until) {
441
+ k.current = null;
442
+ return;
443
+ }
444
+ const x = f.querySelector(
445
+ `[data-sidebar-item-id="${CSS.escape(n.itemId)}"]`
446
+ );
447
+ if (!x) return;
448
+ const d = document.activeElement, S = d !== null && d !== document.body && d !== x;
449
+ if (!oe(gs(f, x), n)) {
450
+ S && (k.current = null);
451
+ return;
452
+ }
453
+ k.current = null, !(d === x || S) && (a.current = !0, x.focus(), a.current = !1);
454
+ }, [s, a]);
455
+ return {
456
+ context: he(
457
+ () => t ? {
458
+ enabled: t,
459
+ instructionsId: u,
460
+ move: o,
461
+ onItemKeyDown: X,
462
+ onItemPointerDown: M,
463
+ onItemBlur: U,
464
+ registerSection: _
465
+ } : { enabled: !1, move: null, registerSection: _ },
466
+ [
467
+ t,
468
+ u,
469
+ o,
470
+ X,
471
+ M,
472
+ U,
473
+ _
474
+ ]
475
+ ),
476
+ message: y,
477
+ instructionsId: u,
478
+ restoreFocus: $,
479
+ touchGuardRef: K,
480
+ /** True while any move runs: Escape cancels it, not the drawer. */
481
+ cancelIfMoving: () => m.current ? (j(), !0) : !1
482
+ };
483
+ }
484
+ const ze = ce({
485
+ mode: "expanded",
486
+ density: "default"
487
+ }), G = () => ue(ze), Ue = "ui.sidebar.state";
488
+ function Is(e) {
489
+ if (typeof window > "u") return e;
490
+ try {
491
+ const t = window.localStorage.getItem(Ue);
492
+ if (t === "expanded" || t === "icon" || t === "overlay") return t;
493
+ } catch {
494
+ }
495
+ return e;
496
+ }
497
+ function Ns(e) {
498
+ if (!(typeof window > "u"))
499
+ try {
500
+ window.localStorage.setItem(Ue, e);
501
+ } catch {
502
+ }
503
+ }
504
+ const Pe = ee(
505
+ [
506
+ "ds:flex ds:flex-col",
507
+ // `--sidebar-surface`: the page background in light mode (white-on-white
508
+ // chrome separated by --shadow-md). In dark mode the Header already
509
+ // blends with --background, so the token steps the sidebar one layer
510
+ // down (blue-600) to keep it visually distinct from the header band —
511
+ // matches the PDF dark mockups' "flat Dark Blue surface with subtle
512
+ // depth via layering" recipe. A token, so a light sidebar nested in a
513
+ // dark page stays light.
514
+ "ds:bg-[var(--sidebar-surface,var(--background))] ds:text-[var(--foreground)]",
515
+ // The inline-end hairline is drawn in the accessible themes only
516
+ // (--accessible-edge-width is 0 elsewhere).
517
+ "ds:[:where(&)]:border-e-[length:var(--accessible-edge-width,0px)] ds:border-[var(--border)]",
518
+ // Elevation is set per mode below. Forced colours strip shadows, so
519
+ // there only the accessible themes' `border-e` separates the rail.
520
+ "ds:transition-[inline-size] ds:duration-[var(--animation-duration)]",
521
+ "ds:motion-reduce:transition-none",
522
+ // While the resize handle is dragging, the width must track the
523
+ // pointer 1:1 — the data attribute suppresses the width transition.
524
+ "ds:data-[resizing]:transition-none"
525
+ ].join(" "),
526
+ {
527
+ variants: {
528
+ // Tokenised widths (Linear / Jira proportions) and one elevation per
529
+ // mode: chrome `--shadow-md` docked, `--shadow-xl` for the drawer, none
530
+ // in the accessible themes. `[:where(&)]` lets a className shadow win.
531
+ mode: {
532
+ // Docked, `relative z-[1]` lifts the rail over a sibling that paints
533
+ // a background (AppFrame's <main>), which would cover its shadow. The
534
+ // drawer must never get them: they beat its `fixed` and `h-dvh`.
535
+ expanded: "ds:relative ds:z-[1] ds:h-full ds:w-[var(--sidebar-modern-expanded-size)] ds:[:where(&)]:[box-shadow:var(--accessible-off,var(--shadow-md))]",
536
+ icon: "ds:relative ds:z-[1] ds:h-full ds:w-[var(--sidebar-modern-icon-size)] ds:[:where(&)]:[box-shadow:var(--accessible-off,var(--shadow-md))]",
537
+ overlay: "ds:w-[var(--sidebar-modern-expanded-size)] ds:[:where(&)]:[box-shadow:var(--accessible-off,var(--shadow-xl))]"
538
+ },
539
+ density: {
540
+ default: "",
541
+ compact: ""
542
+ }
543
+ },
544
+ defaultVariants: { mode: "expanded", density: "default" }
545
+ }
546
+ ), zs = 192, Cs = 384, js = 248, ks = [
547
+ "ds:absolute ds:[inset-block:0] ds:end-0 ds:z-[2]",
548
+ "ds:w-[var(--resizable-handle-size)]",
549
+ "ds:cursor-col-resize ds:select-none ds:touch-none",
550
+ "ds:hover:bg-[var(--accent)] ds:focus-visible:bg-[var(--accent)]",
551
+ "ds:data-[resizing]:bg-[var(--accent)]",
552
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
553
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
554
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
555
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
556
+ "ds:before:absolute ds:before:content-['']",
557
+ "ds:before:[inset-block:0]",
558
+ "ds:before:[inline-size:var(--min-target-size)]",
559
+ "ds:before:[inset-inline:calc(0px_-_(var(--min-target-size)_-_var(--resizable-handle-size))_/_2)]"
560
+ ].join(" "), Ts = H(
561
+ ({
562
+ state: e,
563
+ defaultState: t = "expanded",
564
+ onStateChange: s,
565
+ density: a = "default",
566
+ open: i,
567
+ onOpenChange: u,
568
+ resizable: o = !1,
569
+ onMoveItem: p,
570
+ "aria-label": m,
571
+ className: g,
572
+ children: I,
573
+ id: N,
574
+ ...k
575
+ }, R) => {
576
+ const { t: c } = de("ui"), l = e !== void 0, [v, y] = re(
577
+ () => Is(t)
578
+ ), A = l ? e : v;
579
+ ne(() => {
580
+ l || Ns(v);
581
+ }, [v, l]);
582
+ const D = L(
583
+ (_) => {
584
+ l || y(_), s == null || s(_);
585
+ },
586
+ [l, s]
587
+ ), T = m ?? c("navigation.sidebar.label"), w = ye(), O = N ?? w, z = F(A);
588
+ ne(() => {
589
+ z.current = A;
590
+ }, [A]);
591
+ const P = he(
592
+ () => ({
593
+ getIsCollapsed: () => z.current !== "expanded",
594
+ toggleCollapsed: () => {
595
+ const _ = z.current === "expanded" ? "icon" : "expanded";
596
+ D(_);
597
+ }
598
+ }),
599
+ [D]
600
+ );
601
+ Je(ps, P, N);
602
+ const j = F(null), X = F(null), U = F(!1), { separatorProps: b, isResizing: M } = Qe({
603
+ edge: "inline-end",
604
+ targetRef: j,
605
+ cssProperty: "--sidebar-modern-expanded-size",
606
+ minSize: zs,
607
+ maxSize: Cs,
608
+ defaultSize: js,
609
+ disabled: !o || A !== "expanded"
610
+ }), Y = o && A === "expanded", q = Ss({
611
+ onMoveItem: p,
612
+ enabled: p !== void 0 && A !== "icon",
613
+ rootRef: j,
614
+ quietFocusRef: U
615
+ }), { touchGuardRef: V } = q, W = he(
616
+ () => es(R, j, V),
617
+ [R, V]
618
+ );
619
+ rs(() => q.restoreFocus());
620
+ const K = p !== void 0 ? /* @__PURE__ */ h(xe, { children: [
621
+ /* @__PURE__ */ r("span", { id: q.instructionsId, hidden: !0, children: c("navigation.sidebar.move.instructions") }),
622
+ /* @__PURE__ */ r(
623
+ "span",
624
+ {
625
+ role: "status",
626
+ "aria-live": "polite",
627
+ "data-sidebar-move-status": "",
628
+ className: "ds:sr-only",
629
+ children: q.message
630
+ }
631
+ )
632
+ ] }) : null;
633
+ return A === "overlay" ? /* @__PURE__ */ r(
634
+ ze.Provider,
635
+ {
636
+ value: {
637
+ mode: "overlay",
638
+ density: a,
639
+ transitionTo: D,
640
+ navElementId: O,
641
+ quietFocusRef: U
642
+ },
643
+ children: /* @__PURE__ */ r(E.Provider, { delayDuration: 300, children: /* @__PURE__ */ r(pe.Root, { open: i, onOpenChange: u, children: /* @__PURE__ */ h(pe.Portal, { children: [
644
+ /* @__PURE__ */ r(
645
+ pe.Overlay,
646
+ {
647
+ className: [
648
+ "ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]",
649
+ "ds:bg-[var(--foreground)]/20 ds:backdrop-blur-sm",
650
+ "ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in",
651
+ "ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out",
652
+ "ds:motion-reduce:animate-none"
653
+ ].join(" ")
654
+ }
655
+ ),
656
+ /* @__PURE__ */ h(
657
+ pe.Content,
658
+ {
659
+ onOpenAutoFocus: (_) => {
660
+ var se;
661
+ X.current = document.activeElement instanceof HTMLElement ? document.activeElement : null;
662
+ const $ = (se = j.current) == null ? void 0 : se.querySelector(
663
+ '[aria-current="page"]'
664
+ );
665
+ U.current = !0, $ == null || $.focus(), U.current = !1, $ && document.activeElement === $ && _.preventDefault();
666
+ },
667
+ onCloseAutoFocus: (_) => {
668
+ var se;
669
+ const $ = document.activeElement;
670
+ $ && $ !== document.body || (se = X.current) != null && se.isConnected && (_.preventDefault(), X.current.focus());
671
+ },
672
+ onEscapeKeyDown: (_) => {
673
+ q.cancelIfMoving() && _.preventDefault();
674
+ },
675
+ "aria-label": T,
676
+ className: [
677
+ "ds:fixed ds:z-[var(--z-modal)]",
678
+ // `start-0`/`top-0` — the `inset-inline-start-0` /
679
+ // `inset-block-start-0` spellings are not Tailwind
680
+ // utilities and compiled to nothing.
681
+ "ds:start-0 ds:top-0",
682
+ "ds:h-dvh",
683
+ Pe({ mode: "overlay", density: a }),
684
+ "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
685
+ "ds:data-[state=open]:slide-in-from-left ds:data-[state=closed]:slide-out-to-left",
686
+ "ds:rtl:data-[state=open]:slide-in-from-right ds:rtl:data-[state=closed]:slide-out-to-right",
687
+ "ds:motion-reduce:animate-none",
688
+ "ds:focus:outline-none",
689
+ g ?? ""
690
+ ].filter(Boolean).join(" "),
691
+ children: [
692
+ /* @__PURE__ */ h(
693
+ "nav",
694
+ {
695
+ ref: W,
696
+ id: O,
697
+ "aria-label": T,
698
+ "data-component": "sidebar",
699
+ "data-component-id": N,
700
+ className: "ds:flex ds:flex-col ds:h-full",
701
+ ...k,
702
+ children: [
703
+ /* @__PURE__ */ r(Ne.Provider, { value: q.context, children: I }),
704
+ K
705
+ ]
706
+ }
707
+ ),
708
+ /* @__PURE__ */ r(pe.Close, { asChild: !0, children: /* @__PURE__ */ r(
709
+ "button",
710
+ {
711
+ type: "button",
712
+ "aria-label": c("navigation.sidebar.close"),
713
+ className: [
714
+ "ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]",
715
+ "ds:inline-flex ds:items-center ds:justify-center",
716
+ "ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]",
717
+ "ds:rounded-[var(--radius-sm)] ds:text-[var(--muted-foreground)]",
718
+ "ds:hover:bg-[var(--muted)]/20 ds:focus-visible:outline-[length:var(--focus-ring-width)]",
719
+ "ds:focus-visible:outline-solid ds:focus-visible:outline-[var(--ring)]",
720
+ "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]"
721
+ ].join(" "),
722
+ children: /* @__PURE__ */ r(is, { "aria-hidden": "true", className: "ds:size-4" })
723
+ }
724
+ ) })
725
+ ]
726
+ }
727
+ )
728
+ ] }) }) })
729
+ }
730
+ ) : /* @__PURE__ */ r(
731
+ ze.Provider,
732
+ {
733
+ value: {
734
+ mode: A,
735
+ density: a,
736
+ transitionTo: D,
737
+ navElementId: O,
738
+ quietFocusRef: U
739
+ },
740
+ children: /* @__PURE__ */ r(E.Provider, { delayDuration: 300, children: /* @__PURE__ */ h(
741
+ "nav",
742
+ {
743
+ ref: W,
744
+ id: O,
745
+ "aria-label": T,
746
+ "data-component": "sidebar",
747
+ "data-component-id": N,
748
+ "data-mode": A,
749
+ "data-density": a,
750
+ "data-resizing": M ? "" : void 0,
751
+ className: [
752
+ Pe({ mode: A, density: a }),
753
+ a === "compact" ? "ds:density-compact" : "",
754
+ g ?? ""
755
+ ].filter(Boolean).join(" "),
756
+ ...k,
757
+ children: [
758
+ /* @__PURE__ */ r(Ne.Provider, { value: q.context, children: I }),
759
+ K,
760
+ Y ? /* @__PURE__ */ r(
761
+ "div",
762
+ {
763
+ ...b,
764
+ "aria-label": c("navigation.sidebar.resize"),
765
+ "data-resizing": M ? "" : void 0,
766
+ className: ks
767
+ }
768
+ ) : null
769
+ ]
770
+ }
771
+ ) })
772
+ }
773
+ );
774
+ }
775
+ );
776
+ Ts.displayName = "Sidebar";
777
+ const Es = H(({ className: e, ...t }, s) => {
778
+ const { mode: a } = G();
779
+ return /* @__PURE__ */ r(
780
+ "div",
781
+ {
782
+ ref: s,
783
+ className: [
784
+ "ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-xs)]",
785
+ "ds:min-h-[var(--min-target-size)]",
786
+ // Expanded uses the SAME inline padding as `SidebarBody`, so the
787
+ // header's first control starts on the nav items' left edge and its
788
+ // icon can land on the nav icon column (the trigger adds the item's
789
+ // own `ps` on top — see `SidebarCollapseTrigger`). In the rail,
790
+ // `justify-center` centres the control exactly as the nav icons
791
+ // centre. Header content therefore tracks the nav column in both
792
+ // modes instead of sitting on its own axis.
793
+ a === "icon" ? "ds:justify-center ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]" : "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]",
794
+ "ds:py-[var(--spacing-sm)]",
795
+ // Hairline border + downward chrome shadow cast the header as a
796
+ // sticky top band above the scrolling body.
797
+ "ds:border-block-end ds:border-[var(--border)]",
798
+ "ds:shadow-[var(--shadow-chrome-down)]",
799
+ e ?? ""
800
+ ].filter(Boolean).join(" "),
801
+ ...t
802
+ }
803
+ );
804
+ });
805
+ Es.displayName = "SidebarHeader";
806
+ const Ye = ee(
807
+ [
808
+ "ds:min-h-[var(--min-target-size)] ds:rounded-[var(--radius-sm)]",
809
+ "ds:border ds:border-dashed ds:border-[color:var(--border)]"
810
+ ].join(" "),
811
+ {
812
+ variants: {
813
+ active: {
814
+ true: "ds:border-[color:var(--primary)] ds:bg-[var(--muted)]/20 ds:forced-colors:border-[Highlight]",
815
+ false: ""
816
+ }
817
+ },
818
+ defaultVariants: { active: !1 }
819
+ }
820
+ ), Ds = H(
821
+ ({ className: e, children: t, ...s }, a) => {
822
+ const { navElementId: i } = G(), { enabled: u, move: o } = Ce(), p = u && (o != null && o.listEmpty) ? /* @__PURE__ */ r(
823
+ "div",
824
+ {
825
+ "aria-hidden": "true",
826
+ "data-sidebar-drop-zone-list": "",
827
+ className: Ye({
828
+ active: o.target.indicator.kind === "list" && !oe(o.target, o.origin)
829
+ })
830
+ }
831
+ ) : null;
832
+ return (
833
+ // Scroll the nav sections through the kit `ScrollArea` (8px tokenised
834
+ // scrollbar) instead of native `overflow-auto` (the OS scrollbar), so the
835
+ // sidebar matches the Control Room rail and the kit's trays. `flex-1 min-h-0`
836
+ // fills the column and bounds the height; the layout `className` lands on the
837
+ // body box (the ScrollArea root). Padding + `ref` + div props go on the inner
838
+ // content div so the scrollbar sits flush at the inline-end edge.
839
+ /* @__PURE__ */ r(
840
+ We,
841
+ {
842
+ orientation: "vertical",
843
+ ...i ? { role: "group", "aria-labelledby": i } : {},
844
+ className: ["ds:flex-1 ds:min-h-0", e ?? ""].filter(Boolean).join(" "),
845
+ children: /* @__PURE__ */ h(
846
+ "div",
847
+ {
848
+ ref: a,
849
+ "data-sidebar-body": "",
850
+ className: "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:py-[var(--spacing-sm)]",
851
+ ...s,
852
+ children: [
853
+ t,
854
+ p
855
+ ]
856
+ }
857
+ )
858
+ }
859
+ )
860
+ );
861
+ }
862
+ );
863
+ Ds.displayName = "SidebarBody";
864
+ const As = H(({ className: e, ...t }, s) => {
865
+ const { mode: a } = G();
866
+ return /* @__PURE__ */ r(
867
+ "div",
868
+ {
869
+ ref: s,
870
+ className: [
871
+ "ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-xs)]",
872
+ // Icon-rail is 64px — two 44×44 controls can't sit side-by-side,
873
+ // so switch to a vertical stack and let each row self-centre.
874
+ a === "icon" ? "ds:flex-col ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]" : "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
875
+ "ds:min-h-[var(--min-target-size)]",
876
+ "ds:py-[var(--spacing-sm)]",
877
+ // Hairline border + upward chrome shadow cast the footer as a
878
+ // sticky bottom band below the scrolling body.
879
+ "ds:border-block-start ds:border-[var(--border)]",
880
+ "ds:shadow-[var(--shadow-chrome-up)]",
881
+ e ?? ""
882
+ ].filter(Boolean).join(" "),
883
+ ...t
884
+ }
885
+ );
886
+ });
887
+ As.displayName = "SidebarFooter";
888
+ const Ps = [
889
+ "ds:group/section-label ds:flex ds:w-full ds:items-center",
890
+ "type-eyebrow",
891
+ "ds:text-[var(--muted-foreground)]",
892
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
893
+ "ds:py-[var(--spacing-xs)]",
894
+ "ds:hover:text-[var(--foreground)]",
895
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
896
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
897
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
898
+ ].join(" "), Re = [
899
+ "ds:inline-flex ds:shrink-0 ds:items-center ds:justify-center",
900
+ "ds:size-4",
901
+ "ds:text-[var(--accent)]",
902
+ "ds:me-[var(--spacing-xs)]"
903
+ ].join(" "), Oe = ee(
904
+ "ds:flex ds:items-center ds:rounded-[var(--radius-sm)]",
905
+ {
906
+ variants: {
907
+ dropInto: {
908
+ true: "ds:outline-[length:var(--focus-ring-width)] ds:outline-dashed ds:outline-[color:var(--primary)] ds:forced-colors:outline-[CanvasText]",
909
+ false: ""
910
+ }
911
+ },
912
+ defaultVariants: { dropInto: !1 }
913
+ }
914
+ ), Rs = [
915
+ "ds:flex ds:shrink-0 ds:items-center",
916
+ "ds:[&>*]:min-w-[var(--min-target-size)] ds:[&>*]:min-h-[var(--min-target-size)]"
917
+ ].join(" "), qe = ce(!1), Ve = H(
918
+ ({
919
+ label: e,
920
+ icon: t,
921
+ collapsible: s = !0,
922
+ defaultOpen: a = !0,
923
+ open: i,
924
+ onOpenChange: u,
925
+ sectionId: o,
926
+ actions: p,
927
+ className: m,
928
+ children: g,
929
+ ...I
930
+ }, N) => {
931
+ const { t: k } = de("ui"), { mode: R } = G(), c = R === "icon", l = ye(), v = s && !c && !!e, [y, A] = re(a), D = i ?? y, T = F(D);
932
+ T.current = D;
933
+ const w = L(
934
+ (K) => {
935
+ i === void 0 && A(K), u == null || u(K);
936
+ },
937
+ [i, u]
938
+ ), { enabled: O, move: z, registerSection: P } = Ce(), j = ue(qe);
939
+ ne(() => {
940
+ O && o === void 0 && !j && as() && console.warn(
941
+ `SidebarSection "${e ?? ""}": moves are on but it has no sectionId, so its items cannot move.`
942
+ );
943
+ }, [O, o, j, e]), ne(() => {
944
+ if (!(o === void 0 || !P))
945
+ return P(o, () => {
946
+ T.current || w(!0);
947
+ });
948
+ }, [o, P, w]);
949
+ const X = O && z !== null && o !== void 0, U = X && z.target.indicator.kind === "section" && z.target.indicator.sectionId === o && !oe(z.target, z.origin), b = X && z.emptySectionIds.includes(o) ? /* @__PURE__ */ r(
950
+ "div",
951
+ {
952
+ "aria-hidden": "true",
953
+ "data-sidebar-drop-zone": o,
954
+ className: Ye({ active: U })
955
+ }
956
+ ) : null, M = o !== void 0 ? {
957
+ "data-sidebar-section-id": o,
958
+ "data-sidebar-section-label": e ?? "",
959
+ "data-sidebar-section-open": String(!v || D)
960
+ } : {}, Y = p && !c ? /* @__PURE__ */ r(
961
+ "span",
962
+ {
963
+ role: "group",
964
+ "aria-label": e ? k("navigation.sidebar.sectionActions", { section: e }) : void 0,
965
+ className: Rs,
966
+ children: p
967
+ }
968
+ ) : null, q = /* @__PURE__ */ h(_e.Provider, { value: { sectionId: o }, children: [
969
+ g,
970
+ b
971
+ ] }), V = [
972
+ "ds:flex ds:flex-col",
973
+ "ds:gap-[var(--spacing-xs)]",
974
+ "ds:mt-[var(--spacing-sm)]",
975
+ m ?? ""
976
+ ].filter(Boolean).join(" ");
977
+ if (!v) {
978
+ const K = !!e || !!t, _ = e ? { role: "group", "aria-labelledby": l } : {}, $ = K ? /* @__PURE__ */ h(
979
+ "span",
980
+ {
981
+ className: [
982
+ "ds:flex ds:items-center",
983
+ "type-eyebrow",
984
+ "ds:text-[var(--muted-foreground)]",
985
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
986
+ "ds:py-[var(--spacing-xs)]",
987
+ Y ? "ds:min-w-0 ds:flex-1" : "",
988
+ c && !t ? "ds:sr-only" : ""
989
+ ].filter(Boolean).join(" "),
990
+ children: [
991
+ t ? /* @__PURE__ */ r("span", { "aria-hidden": "true", className: Re, children: t }) : null,
992
+ e ? /* @__PURE__ */ r("span", { id: l, className: c ? "ds:sr-only" : "", children: e }) : null
993
+ ]
994
+ }
995
+ ) : null;
996
+ return /* @__PURE__ */ h(
997
+ "div",
998
+ {
999
+ ref: N,
1000
+ className: V,
1001
+ ..._,
1002
+ ...M,
1003
+ ...I,
1004
+ children: [
1005
+ Y ? /* @__PURE__ */ h(
1006
+ "div",
1007
+ {
1008
+ "data-sidebar-section-heading": "",
1009
+ className: Oe(),
1010
+ children: [
1011
+ $,
1012
+ Y
1013
+ ]
1014
+ }
1015
+ ) : $,
1016
+ q
1017
+ ]
1018
+ }
1019
+ );
1020
+ }
1021
+ const W = "section";
1022
+ return /* @__PURE__ */ r(
1023
+ be.Root,
1024
+ {
1025
+ type: "single",
1026
+ collapsible: !0,
1027
+ value: D ? W : "",
1028
+ onValueChange: (K) => w(K === W),
1029
+ asChild: !0,
1030
+ children: /* @__PURE__ */ r("div", { ref: N, className: V, ...M, ...I, children: /* @__PURE__ */ h(be.Item, { value: W, children: [
1031
+ /* @__PURE__ */ h(
1032
+ "div",
1033
+ {
1034
+ "data-sidebar-section-heading": "",
1035
+ className: Oe({
1036
+ dropInto: U && !D
1037
+ }),
1038
+ children: [
1039
+ /* @__PURE__ */ r(be.Header, { className: "ds:flex ds:min-w-0 ds:flex-1", children: /* @__PURE__ */ h(be.Trigger, { className: Ps, children: [
1040
+ t ? /* @__PURE__ */ r("span", { "aria-hidden": "true", className: Re, children: t }) : null,
1041
+ /* @__PURE__ */ r("span", { className: "ds:flex-1 ds:text-start", children: e }),
1042
+ /* @__PURE__ */ r(
1043
+ we,
1044
+ {
1045
+ "aria-hidden": "true",
1046
+ className: "ds:size-3 ds:transition-transform ds:group-data-[state=open]/section-label:rotate-90 ds:rtl:-scale-x-100 ds:motion-reduce:transition-none"
1047
+ }
1048
+ )
1049
+ ] }) }),
1050
+ Y
1051
+ ]
1052
+ }
1053
+ ),
1054
+ /* @__PURE__ */ r(
1055
+ Xe,
1056
+ {
1057
+ role: "group",
1058
+ "aria-label": e,
1059
+ forceMount: O ? !0 : void 0,
1060
+ className: [
1061
+ "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:[&>div]:contents",
1062
+ // Force-mounted content is never hidden by Radix: do it here.
1063
+ O ? "ds:data-[state=closed]:hidden" : ""
1064
+ ].filter(Boolean).join(" "),
1065
+ children: q
1066
+ }
1067
+ )
1068
+ ] }) })
1069
+ }
1070
+ );
1071
+ }
1072
+ );
1073
+ Ve.displayName = "SidebarSection";
1074
+ const Os = [
1075
+ "ds:group ds:flex ds:w-full ds:items-center ds:gap-[var(--spacing-sm)]",
1076
+ "ds:min-h-[var(--min-target-size)]",
1077
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
1078
+ "ds:rounded-[var(--radius-sm)]",
1079
+ "ds:text-[var(--foreground)] ds:text-[var(--font-size-sm)]",
1080
+ "ds:font-[var(--font-weight-medium)]",
1081
+ "ds:hover:bg-[var(--muted)]/20",
1082
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1083
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1084
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
1085
+ ].join(" "), Ls = H(
1086
+ ({
1087
+ label: e,
1088
+ icon: t,
1089
+ children: s,
1090
+ className: a,
1091
+ defaultOpen: i,
1092
+ open: u,
1093
+ onOpenChange: o,
1094
+ ...p
1095
+ }, m) => {
1096
+ const { mode: g } = G();
1097
+ return /* @__PURE__ */ h(
1098
+ Se.Root,
1099
+ {
1100
+ ref: m,
1101
+ defaultOpen: i,
1102
+ open: u,
1103
+ onOpenChange: o,
1104
+ className: a,
1105
+ ...p,
1106
+ children: [
1107
+ /* @__PURE__ */ h(Se.Trigger, { className: Os, children: [
1108
+ t ? /* @__PURE__ */ r(
1109
+ "span",
1110
+ {
1111
+ "aria-hidden": "true",
1112
+ className: "ds:inline-flex ds:items-center ds:text-[var(--accent)]",
1113
+ children: t
1114
+ }
1115
+ ) : null,
1116
+ /* @__PURE__ */ r(
1117
+ "span",
1118
+ {
1119
+ className: [
1120
+ "ds:flex-1 ds:text-start",
1121
+ g === "icon" ? "ds:sr-only" : ""
1122
+ ].join(" "),
1123
+ children: e
1124
+ }
1125
+ ),
1126
+ g !== "icon" ? /* @__PURE__ */ r(
1127
+ we,
1128
+ {
1129
+ "aria-hidden": "true",
1130
+ className: "ds:size-4 ds:transition-transform ds:group-data-[state=open]:rotate-90 ds:rtl:-scale-x-100 ds:motion-reduce:transition-none"
1131
+ }
1132
+ ) : null
1133
+ ] }),
1134
+ /* @__PURE__ */ r(
1135
+ Se.Content,
1136
+ {
1137
+ className: [
1138
+ "ds:overflow-hidden",
1139
+ "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
1140
+ "ds:motion-reduce:animate-none",
1141
+ "ds:ps-[var(--spacing-md)]"
1142
+ ].join(" "),
1143
+ children: s
1144
+ }
1145
+ )
1146
+ ]
1147
+ }
1148
+ );
1149
+ }
1150
+ );
1151
+ Ls.displayName = "SidebarGroup";
1152
+ const ve = [
1153
+ "ds:z-[var(--z-tooltip)] ds:max-w-[16rem]",
1154
+ "ds:rounded-[var(--radius-sm)]",
1155
+ "ds:bg-[var(--foreground)] ds:text-[var(--background)]",
1156
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)] ds:text-[length:var(--font-size-xs)]",
1157
+ "ds:animate-in ds:fade-in ds:zoom-in-95 ds:motion-reduce:animate-none"
1158
+ ].join(" "), Ms = ee(
1159
+ [
1160
+ // Every row is a pin-hover parent so inline pin / reorder affordances can
1161
+ // fade in on hover of the whole row — keep `group/item` on this selector.
1162
+ // `!text-[var(--foreground)]` forces the label colour over the browser's
1163
+ // default `<a>` link colour (blue-violet) and any inherited hue. The
1164
+ // active variant also uses `!text-*` so it still wins when needed.
1165
+ "ds:group/item ds:relative ds:flex ds:items-center",
1166
+ "ds:gap-[var(--spacing-sm)]",
1167
+ "ds:no-underline ds:!text-[var(--foreground)] ds:text-[length:var(--font-size-sm)]",
1168
+ "ds:hover:bg-[var(--muted)]/12",
1169
+ "ds:transition-colors ds:duration-[var(--animation-duration)]",
1170
+ "ds:motion-reduce:transition-none",
1171
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1172
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1173
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
1174
+ ].join(" "),
1175
+ {
1176
+ variants: {
1177
+ mode: {
1178
+ expanded: [
1179
+ "ds:min-h-[var(--min-target-size)] ds:rounded-[var(--radius-sm)]",
1180
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]"
1181
+ ].join(" "),
1182
+ // Icon-only: each item is a 44×44 pill tile centered in the rail.
1183
+ // The active / hover background fills just the tile rather than the
1184
+ // whole row — matching Linear / Asana chrome.
1185
+ icon: [
1186
+ "ds:justify-center ds:ms-auto ds:me-auto",
1187
+ "ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]",
1188
+ "ds:ps-0 ds:pe-0 ds:rounded-[var(--radius-md)]"
1189
+ ].join(" "),
1190
+ overlay: [
1191
+ "ds:min-h-[var(--min-target-size)] ds:rounded-[var(--radius-sm)]",
1192
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]"
1193
+ ].join(" ")
1194
+ },
1195
+ density: {
1196
+ default: "",
1197
+ compact: "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]"
1198
+ },
1199
+ isActive: {
1200
+ // Filled pill — multi-carrier (bg + text + weight + aria-current at
1201
+ // render time) so colour is never the sole identifier. `!text-*`
1202
+ // forces the foreground over any inherited / base rule so the icon
1203
+ // and label read clearly against the primary fill in every theme.
1204
+ true: [
1205
+ "ds:bg-[var(--primary)] ds:!text-[var(--primary-foreground)]",
1206
+ "ds:font-[var(--font-weight-semibold)]",
1207
+ // Keep hover from dimming the active fill.
1208
+ "ds:hover:bg-[var(--primary)]"
1209
+ ].join(" "),
1210
+ false: ""
1211
+ }
1212
+ },
1213
+ defaultVariants: {
1214
+ mode: "expanded",
1215
+ density: "default",
1216
+ isActive: !1
1217
+ }
1218
+ }
1219
+ ), Le = [
1220
+ "ds:before:pointer-events-none ds:before:absolute ds:before:start-0 ds:before:end-0",
1221
+ "ds:before:h-[length:var(--focus-ring-width)] ds:before:content-['']",
1222
+ "ds:before:rounded-[var(--radius-full)] ds:before:bg-[var(--primary)]",
1223
+ "ds:forced-colors:before:bg-[CanvasText]"
1224
+ ].join(" "), _s = ee("", {
1225
+ variants: {
1226
+ movable: {
1227
+ true: "ds:select-none ds:[-webkit-touch-callout:none]",
1228
+ false: ""
1229
+ },
1230
+ moving: { true: "ds:opacity-60", false: "" },
1231
+ drop: {
1232
+ before: `${Le} ds:before:top-[calc(var(--spacing-xs)/-2)] ds:before:-translate-y-1/2`,
1233
+ after: `${Le} ds:before:bottom-[calc(var(--spacing-xs)/-2)] ds:before:translate-y-1/2`,
1234
+ none: ""
1235
+ }
1236
+ },
1237
+ defaultVariants: { movable: !1, moving: !1, drop: "none" }
1238
+ }), $e = ce(null), Ge = H(
1239
+ ({
1240
+ asChild: e = !1,
1241
+ isActive: t = !1,
1242
+ navId: s,
1243
+ isPinned: a = !1,
1244
+ onPinChange: i,
1245
+ pinLabel: u,
1246
+ className: o,
1247
+ children: p,
1248
+ "aria-label": m,
1249
+ "aria-describedby": g,
1250
+ onKeyDown: I,
1251
+ onPointerDown: N,
1252
+ onBlur: k,
1253
+ ...R
1254
+ }, c) => {
1255
+ const { mode: l, density: v, quietFocusRef: y, navElementId: A } = G(), D = e ? Ze : "a", T = i !== void 0 && l !== "icon", w = Ce(), O = ue(_e), z = w.enabled && l !== "icon" && s !== void 0 && (O === null || O.sectionId !== void 0) ? s : void 0, P = w.move, j = P && !oe(P.target, P.origin) ? P.target : null, X = z !== void 0 && (j == null ? void 0 : j.indicator.kind) === "item" && j.indicator.itemId === z ? j.indicator.edge : "none", U = z !== void 0 ? {
1256
+ "data-sidebar-item-id": z,
1257
+ "data-moving": (P == null ? void 0 : P.itemId) === z ? "" : void 0,
1258
+ // A link would otherwise start the browser's own link drag.
1259
+ draggable: !1,
1260
+ "aria-describedby": [g, w.instructionsId].filter(Boolean).join(" "),
1261
+ // An image inside the item would start its own native drag.
1262
+ onDragStart: (f) => f.preventDefault(),
1263
+ onKeyDown: (f) => {
1264
+ var d, S;
1265
+ I == null || I(f);
1266
+ const x = f.key === "Escape" && ((d = w.move) == null ? void 0 : d.itemId) === z;
1267
+ (!f.defaultPrevented || x) && ((S = w.onItemKeyDown) == null || S.call(w, f, z));
1268
+ },
1269
+ onPointerDown: (f) => {
1270
+ var x;
1271
+ N == null || N(f), (x = w.onItemPointerDown) == null || x.call(w, f, z);
1272
+ },
1273
+ onBlur: (f) => {
1274
+ var x;
1275
+ k == null || k(f), (x = w.onItemBlur) == null || x.call(w, z);
1276
+ }
1277
+ } : {
1278
+ // Keys left out when unset: an undefined one would override the
1279
+ // tooltip's own description through Slot.
1280
+ ...g !== void 0 ? { "aria-describedby": g } : {},
1281
+ ...I ? { onKeyDown: I } : {},
1282
+ ...N ? { onPointerDown: N } : {},
1283
+ ...k ? { onBlur: k } : {}
1284
+ }, b = _s({
1285
+ movable: z !== void 0,
1286
+ moving: P !== null && P.itemId === z,
1287
+ drop: X
1288
+ }), [M, Y] = re(null), q = l === "icon" && m != null && M ? `${m}, ${M}` : m, V = /* @__PURE__ */ r(
1289
+ D,
1290
+ {
1291
+ ref: c,
1292
+ "aria-current": t ? "page" : void 0,
1293
+ "aria-label": q,
1294
+ "data-nav-id": s,
1295
+ className: Ms({
1296
+ mode: l,
1297
+ density: v,
1298
+ isActive: t,
1299
+ className: [T ? "ds:flex-1 ds:min-w-0" : o, b].filter(Boolean).join(" ")
1300
+ }),
1301
+ ...U,
1302
+ ...R,
1303
+ children: p
1304
+ }
1305
+ ), W = T ? /* @__PURE__ */ h(
1306
+ "div",
1307
+ {
1308
+ className: [
1309
+ "ds:group/item ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]",
1310
+ o ?? ""
1311
+ ].filter(Boolean).join(" "),
1312
+ children: [
1313
+ V,
1314
+ /* @__PURE__ */ r(
1315
+ je,
1316
+ {
1317
+ isPinned: a,
1318
+ label: u ?? m ?? "",
1319
+ onPinChange: i
1320
+ }
1321
+ )
1322
+ ]
1323
+ }
1324
+ ) : V, K = F(null), [_, $] = re(), se = (f) => {
1325
+ var S, B;
1326
+ const x = (S = K.current) == null ? void 0 : S.querySelector(
1327
+ "[data-sidebar-item-label]"
1328
+ );
1329
+ if (!(x != null && x.scrollWidth > x.clientWidth) || y != null && y.current || w.move !== null) {
1330
+ f.preventDefault();
1331
+ return;
1332
+ }
1333
+ $(((B = x.textContent) == null ? void 0 : B.trim()) || void 0);
1334
+ }, n = l !== "icon" && A !== void 0 ? /* @__PURE__ */ h(E.Root, { children: [
1335
+ /* @__PURE__ */ r(
1336
+ E.Trigger,
1337
+ {
1338
+ asChild: !0,
1339
+ ref: K,
1340
+ onPointerMove: se,
1341
+ onFocus: se,
1342
+ children: W
1343
+ }
1344
+ ),
1345
+ /* @__PURE__ */ r(E.Portal, { children: /* @__PURE__ */ h(
1346
+ E.Content,
1347
+ {
1348
+ side: "right",
1349
+ sideOffset: 6,
1350
+ className: ve,
1351
+ children: [
1352
+ m ?? _,
1353
+ /* @__PURE__ */ r(E.Arrow, { className: "ds:fill-[var(--foreground)]" })
1354
+ ]
1355
+ }
1356
+ ) })
1357
+ ] }) : l === "icon" && m ? /* @__PURE__ */ h(E.Root, { children: [
1358
+ /* @__PURE__ */ r(E.Trigger, { asChild: !0, children: W }),
1359
+ /* @__PURE__ */ r(E.Portal, { children: /* @__PURE__ */ h(
1360
+ E.Content,
1361
+ {
1362
+ side: "right",
1363
+ sideOffset: 6,
1364
+ className: ve,
1365
+ children: [
1366
+ m,
1367
+ /* @__PURE__ */ r(E.Arrow, { className: "ds:fill-[var(--foreground)]" })
1368
+ ]
1369
+ }
1370
+ ) })
1371
+ ] }) : W;
1372
+ return /* @__PURE__ */ r($e.Provider, { value: Y, children: n });
1373
+ }
1374
+ );
1375
+ Ge.displayName = "SidebarItem";
1376
+ const Bs = H(({ className: e, children: t, ...s }, a) => /* @__PURE__ */ r(
1377
+ "span",
1378
+ {
1379
+ ref: a,
1380
+ "aria-hidden": "true",
1381
+ className: [
1382
+ "ds:inline-flex ds:shrink-0 ds:items-center ds:justify-center",
1383
+ "ds:size-5",
1384
+ // Icons carry the accent tint by default so the rail reads less
1385
+ // monotone against the violet active pill. The active row sets
1386
+ // `aria-current="page"` on the anchor (which is `group/item`), so
1387
+ // the icon flips to the primary-foreground (white) on the filled
1388
+ // pill — keeping it readable on the primary background.
1389
+ "ds:text-[var(--accent)]",
1390
+ "ds:group-aria-[current=page]/item:text-[var(--primary-foreground)]",
1391
+ e ?? ""
1392
+ ].filter(Boolean).join(" "),
1393
+ ...s,
1394
+ children: t
1395
+ }
1396
+ ));
1397
+ Bs.displayName = "SidebarItemIcon";
1398
+ const Fs = H(({ className: e, children: t, ...s }, a) => {
1399
+ const { mode: i } = G();
1400
+ return /* @__PURE__ */ r(
1401
+ "span",
1402
+ {
1403
+ ref: a,
1404
+ "data-sidebar-item-label": "",
1405
+ className: [
1406
+ "ds:flex-1",
1407
+ "ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap ds:break-normal",
1408
+ "ds:text-start",
1409
+ i === "icon" ? "ds:sr-only" : "",
1410
+ e ?? ""
1411
+ ].filter(Boolean).join(" "),
1412
+ ...s,
1413
+ children: t
1414
+ }
1415
+ );
1416
+ });
1417
+ Fs.displayName = "SidebarItemLabel";
1418
+ const Hs = H(({ className: e, children: t, ...s }, a) => {
1419
+ const { mode: i } = G(), u = i === "icon", o = ue($e);
1420
+ return ne(() => {
1421
+ if (!o || !u) return;
1422
+ const p = t == null || t === !1 ? null : String(t).trim() || null;
1423
+ return o(p), () => o(null);
1424
+ }, [o, t, u]), /* @__PURE__ */ r(
1425
+ "span",
1426
+ {
1427
+ ref: a,
1428
+ "aria-hidden": u ? "true" : void 0,
1429
+ className: [
1430
+ "ds:inline-flex ds:items-center ds:justify-center",
1431
+ "ds:font-[var(--font-weight-semibold)]",
1432
+ u ? [
1433
+ "ds:absolute ds:top-[2px] ds:end-[2px]",
1434
+ "ds:min-w-0 ds:size-[10px] ds:ps-0 ds:pe-0",
1435
+ "ds:rounded-[var(--radius-full)]",
1436
+ "ds:bg-[var(--primary)] ds:text-transparent",
1437
+ "ds:ring-2 ds:ring-[var(--background)]",
1438
+ "ds:pointer-events-none"
1439
+ ].join(" ") : [
1440
+ "ds:min-w-[var(--spacing-lg)] ds:h-[var(--spacing-lg)]",
1441
+ "ds:rounded-[var(--radius-full)]",
1442
+ "ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)]",
1443
+ "ds:text-[length:var(--font-size-xs)]",
1444
+ "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]"
1445
+ ].join(" "),
1446
+ e ?? ""
1447
+ ].filter(Boolean).join(" "),
1448
+ ...s,
1449
+ children: t
1450
+ }
1451
+ );
1452
+ });
1453
+ Hs.displayName = "SidebarItemBadge";
1454
+ const Us = ee(
1455
+ [
1456
+ "ds:flex ds:items-center",
1457
+ "ds:text-[var(--foreground)]",
1458
+ "ds:transition-colors ds:motion-reduce:transition-none",
1459
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1460
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1461
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
1462
+ "ds:no-underline"
1463
+ ].join(" "),
1464
+ {
1465
+ variants: {
1466
+ variant: {
1467
+ // Borderless (Linear / Notion style): transparent at rest with a
1468
+ // muted hover fill, a 44px tap target, roomier radius, and the dense
1469
+ // `--font-size-sm` label. The historical default.
1470
+ ghost: [
1471
+ "ds:min-h-[var(--min-target-size)]",
1472
+ "ds:gap-[var(--spacing-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
1473
+ "ds:text-[length:var(--font-size-sm)]",
1474
+ "ds:rounded-[var(--radius-md)]",
1475
+ "ds:hover:bg-[var(--muted)]/20"
1476
+ ].join(" "),
1477
+ // Input-field look: consumes the SAME shared input-surface tokens as
1478
+ // <TextInput size="sm"> — height, text size and horizontal inset — so
1479
+ // a practice / workspace selector stacked directly above the sidebar
1480
+ // <SearchBar size="sm"> renders as a genuinely matched pair (identical
1481
+ // 32px box and label size) and stays in lockstep if that surface
1482
+ // evolves. `gap-3` + the shared `ps-3` line the pin glyph and label up
1483
+ // with the search input's icon and text below. The 3:1
1484
+ // `--control-border` edge and the `--input`/`--shadow-input`/
1485
+ // `--radius-sm` chrome mirror the input's resting surface; opaque
1486
+ // hover keeps the fill solid over a brand-tinted parent. 32px clears
1487
+ // WCAG 2.5.8 (24px AA).
1488
+ field: [
1489
+ ss.sm,
1490
+ ts.sm,
1491
+ ns.sm,
1492
+ "ds:gap-3",
1493
+ "ds:rounded-[var(--radius-sm)]",
1494
+ "ds:border ds:border-[color:var(--control-border)] ds:bg-[var(--input)]",
1495
+ "ds:shadow-[var(--shadow-input)]",
1496
+ "ds:hover:bg-[color-mix(in_srgb,var(--muted)_20%,var(--input))]"
1497
+ ].join(" ")
1498
+ }
1499
+ },
1500
+ defaultVariants: { variant: "ghost" }
1501
+ }
1502
+ ), Ys = H(
1503
+ ({ logo: e, name: t, showChevron: s = !0, variant: a = "ghost", className: i, ...u }, o) => {
1504
+ const { mode: p } = G(), m = p !== "icon";
1505
+ return /* @__PURE__ */ h(
1506
+ "button",
1507
+ {
1508
+ ref: o,
1509
+ type: "button",
1510
+ "aria-label": t,
1511
+ className: [Us({ variant: a }), i].filter(Boolean).join(" "),
1512
+ ...u,
1513
+ children: [
1514
+ /* @__PURE__ */ r(
1515
+ "span",
1516
+ {
1517
+ "aria-hidden": "true",
1518
+ className: "ds:inline-flex ds:items-center ds:shrink-0",
1519
+ children: e
1520
+ }
1521
+ ),
1522
+ m ? /* @__PURE__ */ h(xe, { children: [
1523
+ /* @__PURE__ */ r("span", { className: "ds:truncate ds:flex-1 ds:text-start ds:max-w-[var(--header-workspace-max-inline-size)]", children: t }),
1524
+ s ? /* @__PURE__ */ r(
1525
+ we,
1526
+ {
1527
+ "aria-hidden": "true",
1528
+ className: "ds:size-4 ds:shrink-0 ds:rotate-90"
1529
+ }
1530
+ ) : null
1531
+ ] }) : null
1532
+ ]
1533
+ }
1534
+ );
1535
+ }
1536
+ );
1537
+ Ys.displayName = "SidebarWorkspaceSwitcher";
1538
+ const qs = ee(
1539
+ [
1540
+ "ds:flex ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]",
1541
+ "ds:min-h-[var(--min-target-size)]",
1542
+ "ds:rounded-[var(--radius-md)]",
1543
+ "ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)]",
1544
+ "ds:font-[var(--font-weight-semibold)] ds:text-[length:var(--font-size-sm)]",
1545
+ "ds:hover:bg-[var(--primary-hover)]",
1546
+ "ds:transition-colors ds:motion-reduce:transition-none",
1547
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1548
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1549
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
1550
+ ].join(" "),
1551
+ {
1552
+ variants: {
1553
+ mode: {
1554
+ expanded: "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
1555
+ // A full target-size tile, like the rail's items: 44px, 48px in the
1556
+ // accessible themes.
1557
+ icon: "ds:ps-0 ds:pe-0 ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)] ds:ms-auto ds:me-auto",
1558
+ overlay: "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]"
1559
+ }
1560
+ },
1561
+ defaultVariants: { mode: "expanded" }
1562
+ }
1563
+ ), Vs = H(({ icon: e, label: t, shortcut: s, className: a, ...i }, u) => {
1564
+ const { mode: o } = G(), p = o !== "icon", m = /* @__PURE__ */ h(
1565
+ "button",
1566
+ {
1567
+ ref: u,
1568
+ type: "button",
1569
+ "aria-label": t,
1570
+ "aria-keyshortcuts": s,
1571
+ className: [qs({ mode: o }), a].filter(Boolean).join(" "),
1572
+ ...i,
1573
+ children: [
1574
+ /* @__PURE__ */ r(
1575
+ "span",
1576
+ {
1577
+ "aria-hidden": "true",
1578
+ className: "ds:inline-flex ds:size-4 ds:items-center ds:justify-center",
1579
+ children: e
1580
+ }
1581
+ ),
1582
+ p ? /* @__PURE__ */ h(xe, { children: [
1583
+ /* @__PURE__ */ r("span", { className: "ds:truncate", children: t }),
1584
+ s ? /* @__PURE__ */ r("kbd", { className: "ds:ms-auto ds:text-[length:var(--font-size-xs)] ds:font-[family-name:var(--font-mono)] ds:opacity-80", children: s }) : null
1585
+ ] }) : null
1586
+ ]
1587
+ }
1588
+ );
1589
+ return p ? m : /* @__PURE__ */ h(E.Root, { children: [
1590
+ /* @__PURE__ */ r(E.Trigger, { asChild: !0, children: m }),
1591
+ /* @__PURE__ */ r(E.Portal, { children: /* @__PURE__ */ h(
1592
+ E.Content,
1593
+ {
1594
+ side: "right",
1595
+ sideOffset: 6,
1596
+ className: ve,
1597
+ children: [
1598
+ t,
1599
+ /* @__PURE__ */ r(E.Arrow, { className: "ds:fill-[var(--foreground)]" })
1600
+ ]
1601
+ }
1602
+ ) })
1603
+ ] });
1604
+ });
1605
+ Vs.displayName = "SidebarPrimaryAction";
1606
+ const $s = [
1607
+ "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
1608
+ "ds:size-6 ds:rounded-[var(--radius-sm)]",
1609
+ // Lift above the Sidebar's opt-in resize handle (z-[2]). When `resizable`,
1610
+ // that handle's ::before hit-area reaches ~--min-target-size/2 inward from
1611
+ // the inline-end edge — exactly where these end-aligned pin stars sit — so
1612
+ // without a higher stacking order the separator swallows the click and
1613
+ // pinning silently fails. Pointer-events stay off until the row is hovered
1614
+ // or the star is focused, so the handle is still fully grabbable at rest
1615
+ // (including touch, where the star never reveals). On a NON-resizable
1616
+ // sidebar there's no handle to clear, but the same gating is inert — the
1617
+ // star reveals and accepts clicks on hover/focus exactly as before.
1618
+ "ds:relative ds:z-[3]",
1619
+ "ds:pointer-events-none ds:group-hover/item:pointer-events-auto ds:focus-visible:pointer-events-auto",
1620
+ // Pin stars carry the accent tint to match every other icon in the rail.
1621
+ // Stays quiet via opacity — reveals only on row hover / focus.
1622
+ "ds:text-[var(--accent)]",
1623
+ "ds:opacity-0 ds:group-hover/item:opacity-100 ds:focus-visible:opacity-100",
1624
+ "ds:hover:bg-[var(--muted)]/20",
1625
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1626
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1627
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
1628
+ "ds:transition-[color,opacity,background-color] ds:duration-[var(--animation-duration)]",
1629
+ "ds:motion-reduce:transition-none"
1630
+ ].join(" "), je = H(
1631
+ ({ isPinned: e, onPinChange: t, label: s, className: a, onClick: i, ...u }, o) => {
1632
+ const { t: p } = de("ui"), { mode: m } = G();
1633
+ if (m === "icon") return null;
1634
+ const g = e ? p("navigation.sidebar.unpinItem", "Unpin {{label}}", { label: s }) : p("navigation.sidebar.pinItem", "Pin {{label}}", { label: s });
1635
+ return /* @__PURE__ */ r(
1636
+ "button",
1637
+ {
1638
+ ref: o,
1639
+ type: "button",
1640
+ "aria-label": g,
1641
+ "aria-pressed": e,
1642
+ className: [$s, a].filter(Boolean).join(" "),
1643
+ onClick: (I) => {
1644
+ I.preventDefault(), I.stopPropagation(), t == null || t(!e), i == null || i(I);
1645
+ },
1646
+ ...u,
1647
+ children: /* @__PURE__ */ r(
1648
+ ds,
1649
+ {
1650
+ "aria-hidden": "true",
1651
+ className: "ds:size-4",
1652
+ fill: e ? "currentColor" : "none"
1653
+ }
1654
+ )
1655
+ }
1656
+ );
1657
+ }
1658
+ );
1659
+ je.displayName = "SidebarPinButton";
1660
+ const Ke = ce(null), Gs = () => ue(Ke), Ks = H(
1661
+ ({ heading: e, emptyMessage: t, onReorder: s, className: a, children: i, ...u }, o) => {
1662
+ const { t: p } = de("ui"), m = e ?? p("navigation.sidebar.favorites", "Favourites"), g = Array.isArray(i) ? i.filter(Boolean) : i ? [i] : [], I = g.length, N = I > 0, [k, R] = re(null), [c, l] = re(""), v = F(!1), y = L((D) => {
1663
+ v.current = !v.current, l(v.current ? D : `${D}​`);
1664
+ }, []), A = he(
1665
+ () => ({ onReorder: s, count: I, dragSource: k, setDragSource: R, announce: y }),
1666
+ [s, I, k, y]
1667
+ );
1668
+ return !N && !t ? null : /* @__PURE__ */ r(Ke.Provider, { value: A, children: /* @__PURE__ */ r(qe.Provider, { value: !0, children: /* @__PURE__ */ h(
1669
+ Ve,
1670
+ {
1671
+ ref: o,
1672
+ label: m,
1673
+ className: a,
1674
+ ...u,
1675
+ children: [
1676
+ N ? g : /* @__PURE__ */ r("p", { className: "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] type-meta ds:text-[color:var(--muted-foreground)]", children: t }),
1677
+ /* @__PURE__ */ r("span", { role: "status", "aria-live": "polite", className: "ds:sr-only", children: c })
1678
+ ]
1679
+ }
1680
+ ) }) });
1681
+ }
1682
+ );
1683
+ Ks.displayName = "SidebarFavorites";
1684
+ const Xs = ee(
1685
+ [
1686
+ "ds:group/item ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]",
1687
+ "ds:rounded-[var(--radius-sm)]",
1688
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
1689
+ ].join(" "),
1690
+ {
1691
+ variants: {
1692
+ dragging: {
1693
+ true: "ds:opacity-60",
1694
+ false: ""
1695
+ },
1696
+ dropTarget: {
1697
+ true: "ds:outline-[length:var(--focus-ring-width)] ds:outline-dashed ds:outline-[var(--primary)] ds:outline-offset-[-2px]",
1698
+ false: ""
1699
+ }
1700
+ },
1701
+ defaultVariants: { dragging: !1, dropTarget: !1 }
1702
+ }
1703
+ ), Ws = [
1704
+ "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
1705
+ "ds:size-6 ds:rounded-[var(--radius-sm)]",
1706
+ "ds:cursor-grab ds:active:cursor-grabbing",
1707
+ "ds:text-[var(--muted-foreground)]",
1708
+ // Quiet chrome — only reveal the grip when the row is hovered or the
1709
+ // handle itself is focused (keyboard / AT). Matches the pin-star's
1710
+ // reveal-on-hover behaviour so the two siblings appear together.
1711
+ "ds:opacity-0 ds:group-hover/item:opacity-100 ds:focus-visible:opacity-100",
1712
+ "ds:hover:bg-[var(--muted)]/20 ds:hover:text-[var(--foreground)]",
1713
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1714
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1715
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
1716
+ "ds:transition-[color,opacity,background-color] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
1717
+ ].join(" "), Zs = H(
1718
+ ({
1719
+ index: e,
1720
+ isActive: t = !1,
1721
+ asChild: s = !1,
1722
+ reorderLabel: a,
1723
+ isPinned: i = !1,
1724
+ onPinChange: u,
1725
+ pinLabel: o,
1726
+ "aria-label": p,
1727
+ className: m,
1728
+ children: g,
1729
+ ...I
1730
+ }, N) => {
1731
+ const { t: k } = de("ui"), { mode: R } = G(), c = Gs(), [l, v] = re(!1), y = !!(c != null && c.onReorder) && R !== "icon", A = a ?? p ?? "", D = ye(), T = (b, M) => {
1732
+ if (!(c != null && c.onReorder)) return;
1733
+ const Y = Math.max(0, Math.min(c.count - 1, M));
1734
+ Y !== b && (c.onReorder(b, Y), c.announce(
1735
+ k(
1736
+ "navigation.sidebar.reorderAnnounce",
1737
+ "{{label}} moved to position {{to}} of {{total}}",
1738
+ { label: A, to: Y + 1, total: c.count }
1739
+ )
1740
+ ));
1741
+ }, w = (b) => {
1742
+ y && (b.altKey && b.key === "ArrowUp" ? (b.preventDefault(), T(e, e - 1)) : b.altKey && b.key === "ArrowDown" ? (b.preventDefault(), T(e, e + 1)) : b.key === "Home" && b.altKey ? (b.preventDefault(), T(e, 0)) : b.key === "End" && b.altKey && (b.preventDefault(), T(e, c.count - 1)));
1743
+ }, O = (b) => {
1744
+ y && (c == null || c.setDragSource(e), b.dataTransfer && (b.dataTransfer.effectAllowed = "move", b.dataTransfer.setData("ds:text/plain", String(e))));
1745
+ }, z = () => {
1746
+ c == null || c.setDragSource(null), v(!1);
1747
+ }, P = (b) => {
1748
+ !y || (c == null ? void 0 : c.dragSource) === null || (b.preventDefault(), b.dataTransfer && (b.dataTransfer.dropEffect = "move"), v(!0));
1749
+ }, j = () => v(!1), X = (b) => {
1750
+ if (!y) return;
1751
+ b.preventDefault();
1752
+ const M = c == null ? void 0 : c.dragSource;
1753
+ v(!1), !(M == null || M === e) && T(M, e);
1754
+ }, U = (c == null ? void 0 : c.dragSource) === e;
1755
+ return /* @__PURE__ */ h(
1756
+ "div",
1757
+ {
1758
+ className: Xs({
1759
+ dragging: U,
1760
+ dropTarget: l && !U
1761
+ }),
1762
+ draggable: y || void 0,
1763
+ onDragStart: y ? O : void 0,
1764
+ onDragEnd: y ? z : void 0,
1765
+ onDragOver: P,
1766
+ onDragLeave: j,
1767
+ onDrop: X,
1768
+ children: [
1769
+ /* @__PURE__ */ r(
1770
+ Ge,
1771
+ {
1772
+ ref: N,
1773
+ isActive: t,
1774
+ asChild: s,
1775
+ "aria-label": p,
1776
+ "aria-describedby": y ? D : void 0,
1777
+ draggable: y ? !1 : void 0,
1778
+ className: [y ? "ds:flex-1 ds:min-w-0" : "", m ?? ""].filter(Boolean).join(" "),
1779
+ ...I,
1780
+ children: g
1781
+ }
1782
+ ),
1783
+ y ? /* @__PURE__ */ r(
1784
+ "button",
1785
+ {
1786
+ type: "button",
1787
+ id: D,
1788
+ "aria-label": k(
1789
+ "navigation.sidebar.reorderHandle",
1790
+ "Reorder {{label}}. Press Alt + Up or Alt + Down to move.",
1791
+ { label: A }
1792
+ ),
1793
+ className: Ws,
1794
+ onKeyDown: w,
1795
+ children: /* @__PURE__ */ r(os, { "aria-hidden": "true", className: "ds:size-4" })
1796
+ }
1797
+ ) : null,
1798
+ u && R !== "icon" ? /* @__PURE__ */ r(
1799
+ je,
1800
+ {
1801
+ isPinned: i,
1802
+ label: o ?? p ?? "",
1803
+ onPinChange: u
1804
+ }
1805
+ ) : null
1806
+ ]
1807
+ }
1808
+ );
1809
+ }
1810
+ );
1811
+ Zs.displayName = "SidebarFavoriteItem";
1812
+ const Js = ee(
1813
+ [
1814
+ "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
1815
+ "ds:min-h-[var(--min-target-size)]",
1816
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
1817
+ "ds:rounded-[var(--radius-md)]",
1818
+ "ds:text-[var(--foreground)] ds:text-[length:var(--font-size-sm)]",
1819
+ "ds:hover:bg-[var(--muted)]/20",
1820
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1821
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1822
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
1823
+ "ds:no-underline"
1824
+ ].join(" ")
1825
+ ), Qs = H(({ avatar: e, name: t, subtitle: s, subtitleLabel: a, className: i, ...u }, o) => {
1826
+ const { mode: p } = G(), m = p !== "icon", g = typeof s == "string" ? s : a;
1827
+ return /* @__PURE__ */ h(
1828
+ "button",
1829
+ {
1830
+ ref: o,
1831
+ type: "button",
1832
+ "aria-label": g ? `${t}, ${g}` : t,
1833
+ className: [Js(), i].filter(Boolean).join(" "),
1834
+ ...u,
1835
+ children: [
1836
+ /* @__PURE__ */ r(
1837
+ "span",
1838
+ {
1839
+ "aria-hidden": "true",
1840
+ className: "ds:inline-flex ds:items-center ds:shrink-0",
1841
+ children: e
1842
+ }
1843
+ ),
1844
+ m ? /* @__PURE__ */ h("span", { className: "ds:flex-1 ds:min-w-0 ds:text-start", children: [
1845
+ /* @__PURE__ */ r("span", { className: "ds:block ds:truncate type-label", children: t }),
1846
+ s ? typeof s == "string" ? /* @__PURE__ */ r("span", { className: "ds:block ds:truncate type-meta ds:text-[color:var(--muted-foreground)]", children: s }) : /* @__PURE__ */ r("span", { className: "ds:flex ds:items-center ds:gap-[length:var(--spacing-xs)] ds:min-w-0 type-meta ds:text-[color:var(--muted-foreground)]", children: s }) : null
1847
+ ] }) : null
1848
+ ]
1849
+ }
1850
+ );
1851
+ });
1852
+ Qs.displayName = "SidebarProfilePill";
1853
+ const et = [
1854
+ "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
1855
+ "ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]",
1856
+ "ds:rounded-[var(--radius-sm)]",
1857
+ "ds:text-[var(--muted-foreground)]",
1858
+ "ds:hover:bg-[var(--muted)]/20 ds:hover:text-[var(--foreground)]",
1859
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1860
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1861
+ "ds:forced-colors:focus-visible:outline-[CanvasText]",
1862
+ "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
1863
+ ].join(" "), st = H(({ className: e, "aria-label": t, onClick: s, ...a }, i) => {
1864
+ const { t: u } = de("ui"), { mode: o, density: p, transitionTo: m } = G();
1865
+ if (o === "overlay") return null;
1866
+ const g = o === "expanded", I = g ? [
1867
+ "ds:justify-start",
1868
+ p === "compact" ? "ds:ps-[var(--spacing-xs)]" : "ds:ps-[var(--spacing-sm)]"
1869
+ ].join(" ") : "ds:justify-center", N = t ?? (g ? u("navigation.sidebar.collapse", "Collapse sidebar") : u("navigation.sidebar.expand", "Expand sidebar")), k = /* @__PURE__ */ r(
1870
+ "button",
1871
+ {
1872
+ ref: i,
1873
+ type: "button",
1874
+ "aria-label": N,
1875
+ "aria-expanded": g,
1876
+ onClick: (R) => {
1877
+ m == null || m(g ? "icon" : "expanded"), s == null || s(R);
1878
+ },
1879
+ className: [et, I, e].filter(Boolean).join(" "),
1880
+ ...a,
1881
+ children: /* @__PURE__ */ r("span", { className: "ds:inline-flex ds:size-5 ds:shrink-0 ds:items-center ds:justify-center", children: g ? /* @__PURE__ */ r(
1882
+ us,
1883
+ {
1884
+ "aria-hidden": "true",
1885
+ className: "ds:size-4 ds:rtl:-scale-x-100"
1886
+ }
1887
+ ) : /* @__PURE__ */ r(
1888
+ fs,
1889
+ {
1890
+ "aria-hidden": "true",
1891
+ className: "ds:size-4 ds:rtl:-scale-x-100"
1892
+ }
1893
+ ) })
1894
+ }
1895
+ );
1896
+ return /* @__PURE__ */ h(E.Root, { children: [
1897
+ /* @__PURE__ */ r(E.Trigger, { asChild: !0, children: k }),
1898
+ /* @__PURE__ */ r(E.Portal, { children: /* @__PURE__ */ h(
1899
+ E.Content,
1900
+ {
1901
+ side: o === "icon" ? "right" : "top",
1902
+ sideOffset: 6,
1903
+ className: ve,
1904
+ children: [
1905
+ N,
1906
+ /* @__PURE__ */ r(E.Arrow, { className: "ds:fill-[var(--foreground)]" })
1907
+ ]
1908
+ }
1909
+ ) })
1910
+ ] });
1911
+ });
1912
+ st.displayName = "SidebarCollapseTrigger";
1913
+ const tt = ee(
1914
+ [
1915
+ "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
1916
+ "ds:rounded-[var(--radius-md)]",
1917
+ "ds:border ds:border-[var(--border)]",
1918
+ "ds:bg-[image:var(--gradient-surface-subtle-accent)]",
1919
+ "ds:no-underline ds:!text-[var(--foreground)]",
1920
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1921
+ "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1922
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
1923
+ ].join(" "),
1924
+ {
1925
+ variants: {
1926
+ mode: {
1927
+ expanded: [
1928
+ "ds:min-h-[var(--min-target-size)]",
1929
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]"
1930
+ ].join(" "),
1931
+ icon: [
1932
+ "ds:justify-center",
1933
+ "ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]",
1934
+ "ds:ms-auto ds:me-auto ds:ps-0 ds:pe-0"
1935
+ ].join(" "),
1936
+ overlay: [
1937
+ "ds:min-h-[var(--min-target-size)]",
1938
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]"
1939
+ ].join(" ")
1940
+ }
1941
+ },
1942
+ defaultVariants: { mode: "expanded" }
1943
+ }
1944
+ ), nt = H(({ title: e, description: t, icon: s, className: a, ...i }, u) => {
1945
+ const { mode: o } = G(), p = o === "icon", m = (
1946
+ // aria-label only in icon mode (where the copy is hidden) — in
1947
+ // expanded mode the accessible name comes from the visible contents
1948
+ // so the description isn't excluded from it.
1949
+ /* @__PURE__ */ h(
1950
+ "a",
1951
+ {
1952
+ ref: u,
1953
+ "aria-label": p ? e : void 0,
1954
+ className: tt({ mode: o, className: a }),
1955
+ ...i,
1956
+ children: [
1957
+ /* @__PURE__ */ r(
1958
+ "span",
1959
+ {
1960
+ "aria-hidden": "true",
1961
+ className: [
1962
+ "ds:inline-flex ds:size-8 ds:shrink-0 ds:items-center ds:justify-center",
1963
+ "ds:rounded-[var(--radius-sm)]",
1964
+ "ds:bg-[var(--accent)] ds:text-[var(--accent-foreground)]"
1965
+ ].join(" "),
1966
+ children: s ?? /* @__PURE__ */ r(ls, { className: "ds:size-4" })
1967
+ }
1968
+ ),
1969
+ p ? null : /* @__PURE__ */ h(xe, { children: [
1970
+ /* @__PURE__ */ h("span", { className: "ds:flex-1 ds:min-w-0 ds:text-start", children: [
1971
+ /* @__PURE__ */ r("span", { className: "ds:block ds:line-clamp-2 type-label", children: e }),
1972
+ t ? (
1973
+ // Foreground (not muted) on the tinted surface — the gradient
1974
+ // stops leave muted text short of AA in both colour schemes.
1975
+ /* @__PURE__ */ r("span", { className: "ds:block ds:line-clamp-2 type-meta", children: t })
1976
+ ) : null
1977
+ ] }),
1978
+ /* @__PURE__ */ r(
1979
+ we,
1980
+ {
1981
+ "aria-hidden": "true",
1982
+ className: "ds:size-4 ds:shrink-0 ds:rtl:-scale-x-100"
1983
+ }
1984
+ )
1985
+ ] })
1986
+ ]
1987
+ }
1988
+ )
1989
+ );
1990
+ return p ? /* @__PURE__ */ h(E.Root, { children: [
1991
+ /* @__PURE__ */ r(E.Trigger, { asChild: !0, children: m }),
1992
+ /* @__PURE__ */ r(E.Portal, { children: /* @__PURE__ */ h(
1993
+ E.Content,
1994
+ {
1995
+ side: "right",
1996
+ sideOffset: 6,
1997
+ className: ve,
1998
+ children: [
1999
+ e,
2000
+ /* @__PURE__ */ r(E.Arrow, { className: "ds:fill-[var(--foreground)]" })
2001
+ ]
2002
+ }
2003
+ ) })
2004
+ ] }) : m;
2005
+ });
2006
+ nt.displayName = "SidebarUpgradeChip";
2007
+ export {
2008
+ Ts as S,
2009
+ Ds as a,
2010
+ st as b,
2011
+ Zs as c,
2012
+ Ks as d,
2013
+ As as e,
2014
+ Ls as f,
2015
+ Es as g,
2016
+ Ge as h,
2017
+ Hs as i,
2018
+ Bs as j,
2019
+ Fs as k,
2020
+ je as l,
2021
+ Vs as m,
2022
+ Qs as n,
2023
+ Ve as o,
2024
+ nt as p,
2025
+ Ys as q,
2026
+ ps as s,
2027
+ G as u
2028
+ };
2029
+ //# sourceMappingURL=sidebar-D4Wllqfz.js.map