@alfadocs/ui-kit 1.58.0 → 1.60.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 (356) hide show
  1. package/dist/_chunks/{actions-cell-renderer-Dj1ZkvJj.js → actions-cell-renderer-CZWGQFKV.js} +4 -4
  2. package/dist/_chunks/{agenda-tray-ZKhDxlfw.js → agenda-tray-DU7O5Z7R.js} +3 -3
  3. package/dist/_chunks/{ai-credits-notice-ktklr8fy.js → ai-credits-notice-MBgQXxsx.js} +11 -11
  4. package/dist/_chunks/{ai-permission-notice-DyuEGwAt.js → ai-permission-notice-BJHutKLE.js} +2 -2
  5. package/dist/_chunks/{ai-prompt-input-Beh-O_rJ.js → ai-prompt-input-Dzos37rf.js} +3 -3
  6. package/dist/_chunks/{alia-sidebar-dybRpWml.js → alia-sidebar-CU3mVL9J.js} +8 -8
  7. package/dist/_chunks/{anamnesis-card-BSlAhaoG.js → anamnesis-card-VjJOUl-t.js} +3 -3
  8. package/dist/_chunks/{anamnesis-summary-card-2YfIYY2j.js → anamnesis-summary-card-cCj7LPh3.js} +2 -2
  9. package/dist/_chunks/{anamnesis-summary-rows-M-FUkw9p.js → anamnesis-summary-rows-C5F08WT6.js} +12 -12
  10. package/dist/_chunks/{antenatal-schedule-timeline-Kf2Yg8uo.js → antenatal-schedule-timeline-CfNFrej5.js} +2 -2
  11. package/dist/_chunks/{appointment-card-Dh3fAcyf.js → appointment-card-BXQUZlAJ.js} +2 -2
  12. package/dist/_chunks/{appointment-peek-WvNbE4JG.js → appointment-peek-BvzXHYiD.js} +4 -4
  13. package/dist/_chunks/{appointment-timeline-Z0494xO-.js → appointment-timeline-r-q97cec.js} +5 -5
  14. package/dist/_chunks/{appointment-tray-CyI_p3zU.js → appointment-tray-DF_R9ldY.js} +4 -4
  15. package/dist/_chunks/{audio-recorder-DWKKjGPt.js → audio-recorder-Cssm6jVh.js} +4 -4
  16. package/dist/_chunks/{balance-badge-cell-CGoJZlKf.js → balance-badge-cell-DMG06b2C.js} +5 -5
  17. package/dist/_chunks/{bishop-score-BxA20j9T.js → bishop-score-DxfkcxiV.js} +4 -4
  18. package/dist/_chunks/{bmi-calculator-C0UTxB7R.js → bmi-calculator-B4kgPqt5.js} +3 -3
  19. package/dist/_chunks/{booking-CiFSAMR-.js → booking-CXaqmdF7.js} +7 -7
  20. package/dist/_chunks/{button-Bn16lcFM.js → button-D-MQxsA_.js} +82 -63
  21. package/dist/_chunks/{button-group-CWlwR-A5.js → button-group-Cfpyu6pc.js} +73 -73
  22. package/dist/_chunks/{calculator-dialog-CzQv03p0.js → calculator-dialog-BUfaWqvu.js} +2 -2
  23. package/dist/_chunks/{calendar-6-24PQ1u.js → calendar-DNTVaK6b.js} +2 -2
  24. package/dist/_chunks/{calendar-workspace-DNHzjG7O.js → calendar-workspace-UL5xcpWa.js} +26 -26
  25. package/dist/_chunks/{card-DMO2nkt4.js → card-BA4Ig_kn.js} +9 -8
  26. package/dist/_chunks/{care-plan-card-DxrRLRdW.js → care-plan-card-DFQbU_Gd.js} +2 -2
  27. package/dist/_chunks/{care-plan-entry-card-0rpR-4Te.js → care-plan-entry-card-bj784KRk.js} +2 -2
  28. package/dist/_chunks/{care-plan-header-BMwZIgHJ.js → care-plan-header-DDhyAfVK.js} +2 -2
  29. package/dist/_chunks/{carousel.agent-D3xthzTf.js → carousel.agent-Csn24G1k.js} +2 -2
  30. package/dist/_chunks/{chart-ZMkX-Gqy.js → chart-D7PbNO_M.js} +407 -393
  31. package/dist/_chunks/{chat-input-PtrSu1ZC.js → chat-input-Ck34Pnmp.js} +2 -2
  32. package/dist/_chunks/{chat-message-CmGUcajG.js → chat-message-DU0X3Xnl.js} +3 -3
  33. package/dist/_chunks/{clinical-note-card-hx939bvw.js → clinical-note-card-L6FVM9Gx.js} +2 -2
  34. package/dist/_chunks/{code-block-BQgK70mO.js → code-block-DiC4bg-o.js} +2 -2
  35. package/dist/_chunks/{connection-status-ncTjUPt6.js → connection-status-BAnuwayz.js} +4 -4
  36. package/dist/_chunks/{contact-card-fHBMwEsx.js → contact-card-C8rEsC4Q.js} +2 -2
  37. package/dist/_chunks/{contact-profile-card-CMyBYgRR.js → contact-profile-card-JTRbnbxy.js} +3 -3
  38. package/dist/_chunks/{control-room-rail-CJ85HkS2.js → control-room-rail-BbBEIdws.js} +3 -3
  39. package/dist/_chunks/{copy-field-CvTIuA_p.js → copy-field-BCT7APRE.js} +2 -2
  40. package/dist/_chunks/{cycle-calculator-Cww9DzIa.js → cycle-calculator-BuFi6ZJa.js} +3 -3
  41. package/dist/_chunks/{dashboard-grid-Cs7cJAsA.js → dashboard-grid-DeNEltwI.js} +2 -2
  42. package/dist/_chunks/{data-table-Yn5xiGzs.js → data-table-DAPkhyXO.js} +10 -10
  43. package/dist/_chunks/{data-table-tabs-CHYAAeHy.js → data-table-tabs-2t0cdk0h.js} +3 -3
  44. package/dist/_chunks/{description-list-DkLeHiew.js → description-list-CFEw__MT.js} +2 -2
  45. package/dist/_chunks/{dev-bypass-button-BhGn6evf.js → dev-bypass-button-dTuUuzsT.js} +2 -2
  46. package/dist/_chunks/{dialog-Dn-iQ0Jp.js → dialog-D6fkpRc4.js} +72 -61
  47. package/dist/_chunks/{document-preview-CHGGG0l_.js → document-preview-DYX669jE.js} +4 -4
  48. package/dist/_chunks/{document-scanner-CQS9kv84.js → document-scanner-C41n4pNq.js} +2 -2
  49. package/dist/_chunks/{dropdown-menu-BQSNVp4x.js → dropdown-menu-D1we7oAY.js} +134 -133
  50. package/dist/_chunks/{due-date-calculator-D_qFUiHp.js → due-date-calculator-yYvX8Ww_.js} +4 -4
  51. package/dist/_chunks/{editable-currency-cell-renderer-CmYcMuwi.js → editable-currency-cell-renderer-6LDFAWUE.js} +3 -3
  52. package/dist/_chunks/{editable-description-DuJlvltc.js → editable-description-D9FsTi8e.js} +3 -3
  53. package/dist/_chunks/{editor-overlay-NMxzcO6J.js → editor-overlay-BYkcaLCj.js} +2 -2
  54. package/dist/_chunks/{empty-state-gNG3qYCX.js → empty-state-pL1qum99.js} +61 -59
  55. package/dist/_chunks/{entity-summary-CWcCSThK.js → entity-summary-oD_63dlz.js} +4 -4
  56. package/dist/_chunks/{error-boundary-ChowhO6w.js → error-boundary-Dzgu3O6W.js} +2 -2
  57. package/dist/_chunks/{error-page-CpuYbpOB.js → error-page-DirZKDz2.js} +2 -2
  58. package/dist/_chunks/{face-scheme-DSKDdIsb.js → face-scheme-C-5V3MsY.js} +6 -6
  59. package/dist/_chunks/{fetal-weight-BWaqqjea.js → fetal-weight-CHv2winC.js} +3 -3
  60. package/dist/_chunks/{field-array-BO-kaKFK.js → field-array-dSkD_ePA.js} +3 -3
  61. package/dist/_chunks/{file-manager-DEtkQR1F.js → file-manager-C8bdHsYy.js} +8 -8
  62. package/dist/_chunks/{finished-terminal-CPSDrIMB.js → finished-terminal-DuF3xrUv.js} +3 -3
  63. package/dist/_chunks/{fiscal-code-input-DesSQ6Fh.js → fiscal-code-input-BSWwda0C.js} +2 -2
  64. package/dist/_chunks/{forgot-password-form-CEqOmNuX.js → forgot-password-form-CGWV5Q1-.js} +3 -3
  65. package/dist/_chunks/{freemium-paywall-DIKuhX8b.js → freemium-paywall-DjjVPC-5.js} +27 -27
  66. package/dist/_chunks/{gestational-age-calculator-CZi43xKG.js → gestational-age-calculator-BLccWS_4.js} +5 -5
  67. package/dist/_chunks/{hcg-doubling-Ccvh7OaU.js → hcg-doubling-CnrY2OVu.js} +3 -3
  68. package/dist/_chunks/{header-B9552pLh.js → header-BVHAt7Fi.js} +2 -2
  69. package/dist/_chunks/{header-settings-BMcCx2LC.js → header-settings-C200bKyp.js} +4 -4
  70. package/dist/_chunks/{heatmap-DiyOSQk9.js → heatmap-CRMr7VWC.js} +6 -6
  71. package/dist/_chunks/{help-me-write-templates-CM1p6qkm.js → help-me-write-templates-C9T8-DcT.js} +6 -6
  72. package/dist/_chunks/{hover-card-U_ZYoh1n.js → hover-card-DbTmj-ea.js} +2 -2
  73. package/dist/_chunks/{icon-button-COX76Jdj.js → icon-button-dNE6ENLn.js} +12 -9
  74. package/dist/_chunks/{icon-button-group-C5hhI-R5.js → icon-button-group-Du8IvZek.js} +3 -3
  75. package/dist/_chunks/{icon-picker-rOFTawXk.js → icon-picker-D5NdDbCL.js} +3 -3
  76. package/dist/_chunks/{image-cropper-D0kkQ4lG.js → image-cropper-s8ej8cxa.js} +2 -2
  77. package/dist/_chunks/{info-tip-CJpNpzZe.js → info-tip-DObdz3w3.js} +2 -2
  78. package/dist/_chunks/{insert-result-C1C2OCc3.js → insert-result-h3WL-gMo.js} +2 -2
  79. package/dist/_chunks/{key-value-pair-BNNITp6S.js → key-value-pair-BNYHAZwD.js} +2 -2
  80. package/dist/_chunks/{kit-extensions-DYVxWcqv.js → kit-extensions-DI2nHVNw.js} +6 -6
  81. package/dist/_chunks/{link-cell-renderer-C1wOyxDF.js → link-cell-renderer-DvhzS6lu.js} +5 -5
  82. package/dist/_chunks/{locale-picker-BGfrZyTw.js → locale-picker-Bu4YE5b2.js} +3 -3
  83. package/dist/_chunks/{login-dev-card-CIim81VB.js → login-dev-card-DwWWHclZ.js} +3 -3
  84. package/dist/_chunks/{map-view-CO2v0hfp.js → map-view-BuVfJMEa.js} +2 -2
  85. package/dist/_chunks/{marketplace-app-shell-CSDmGLPW.js → marketplace-app-shell-DK2pFMpf.js} +279 -236
  86. package/dist/_chunks/{message-card-DVo8-dOm.js → message-card-CvZlo3Fn.js} +3 -3
  87. package/dist/_chunks/{message-tray-DmU0poD7.js → message-tray-DrS_LOed.js} +4 -4
  88. package/dist/_chunks/{muscle-scheme-BDgIaGeW.js → muscle-scheme-YoN3rYXV.js} +2 -2
  89. package/dist/_chunks/{notes-panel-DHLHsxpW.js → notes-panel-6TElt7jQ.js} +7 -7
  90. package/dist/_chunks/{notification-card-BGCIL6Mu.js → notification-card-Qrs52HIA.js} +3 -3
  91. package/dist/_chunks/{notification-tray-DPU-Xg0i.js → notification-tray-DRm1z97G.js} +4 -4
  92. package/dist/_chunks/{operator-hero-Dyd2IGbR.js → operator-hero-C_Khr5IU.js} +2 -2
  93. package/dist/_chunks/{optical-prescription-Do6e3wfs.js → optical-prescription-DLIAhJ6f.js} +3 -3
  94. package/dist/_chunks/{pagination-BR1_GfD_.js → pagination-DvKGrsXu.js} +146 -142
  95. package/dist/_chunks/{panel-subview-D4o6ar6_.js → panel-subview-CjZgdWwO.js} +2 -2
  96. package/dist/_chunks/{patient-details-BCaVuaXz.js → patient-details-BjqKBY2x.js} +4 -4
  97. package/dist/_chunks/{patient-field-row-jcRSTrp4.js → patient-field-row-BiI0BPPK.js} +7 -7
  98. package/dist/_chunks/{patient-search-D5xlXmd2.js → patient-search-B5R7FyFO.js} +4 -4
  99. package/dist/_chunks/{patient-summary-card-kQIfPQOE.js → patient-summary-card-BOgnWKRV.js} +6 -6
  100. package/dist/_chunks/{payment-automation-upsell-C4wHOxsp.js → payment-automation-upsell-39d5ykBi.js} +3 -3
  101. package/dist/_chunks/{payment-request-card-DAniJNLX.js → payment-request-card-E3G4aVt6.js} +4 -4
  102. package/dist/_chunks/{periodontal-chart-DD5C0M3l.js → periodontal-chart-BZ1d6S36.js} +2 -2
  103. package/dist/_chunks/{periodontal-chart-card-CxdXvsPU.js → periodontal-chart-card-BE5hiQnn.js} +3 -3
  104. package/dist/_chunks/{periodontal-diagnosis-D-PJv7KS.js → periodontal-diagnosis-6wybid_W.js} +2 -2
  105. package/dist/_chunks/{periodontal-risk-chart-D3DjIymT.js → periodontal-risk-chart-CgLwBj5c.js} +2 -2
  106. package/dist/_chunks/{popover-BG75rYjN.js → popover-DQr_tljb.js} +2 -2
  107. package/dist/_chunks/popup-region-qz_5_A0V.js +79 -0
  108. package/dist/_chunks/{practice-profile-hero-C8RPACCi.js → practice-profile-hero-DPbvYfCs.js} +2 -2
  109. package/dist/_chunks/{practice-results-D07wgCqV.js → practice-results-Cktx7KaC.js} +6 -6
  110. package/dist/_chunks/{pregnancy-dating-BFzv9g1N.js → pregnancy-dating-26fcvhAx.js} +5 -5
  111. package/dist/_chunks/{pregnancy-weight-gain-CUUrBTBo.js → pregnancy-weight-gain-D8q1IUCT.js} +3 -3
  112. package/dist/_chunks/{privacy-lock-WkUgwIj_.js → privacy-lock-BpVgSgMb.js} +3 -3
  113. package/dist/_chunks/{privacy-mask-ChIjELJC.js → privacy-mask-BfMC57ST.js} +3 -3
  114. package/dist/_chunks/{product-hub-panel-DCYX0rPG.js → product-hub-panel-CH4B49ij.js} +3 -3
  115. package/dist/_chunks/{public-header.agent-C1SlVSYt.js → public-header.agent-BHTDKMsw.js} +3 -3
  116. package/dist/_chunks/{radiograph-panel.agent-DyqbTECc.js → radiograph-panel.agent-DR0gOeSc.js} +6 -6
  117. package/dist/_chunks/{registration-form-DrSR9Sjk.js → registration-form-B8IeB9kd.js} +5 -5
  118. package/dist/_chunks/{reviews-panel-CDcK6W3b.js → reviews-panel-CHzDqerd.js} +5 -5
  119. package/dist/_chunks/{rich-text-editor-UgXri8h6.js → rich-text-editor-BRuTo2hm.js} +10 -10
  120. package/dist/_chunks/{section-card-ChJdOlBU.js → section-card-D5nWiTcK.js} +2 -2
  121. package/dist/_chunks/{select-Ce5RMk93.js → select-k4gBdS8N.js} +249 -224
  122. package/dist/_chunks/{session-countdown-CBINYw8H.js → session-countdown-DWY61IcV.js} +2 -2
  123. package/dist/_chunks/{sheet-Dtjk0CVv.js → sheet-CqvPYNLn.js} +7 -7
  124. package/dist/_chunks/sidebar-DhePV1hE.js +2563 -0
  125. package/dist/_chunks/{sign-in-with-alfadocs-button-D91_x8DX.js → sign-in-with-alfadocs-button-CIv0GgeA.js} +2 -2
  126. package/dist/_chunks/{signature-request-dAVgE0_5.js → signature-request-BH7yKI01.js} +6 -6
  127. package/dist/_chunks/{signed-out-frame-DOJpobp8.js → signed-out-frame-eaOWHpDr.js} +3 -3
  128. package/dist/_chunks/{slot-grid-sVZriOiQ.js → slot-grid-DELa2Nwz.js} +4 -4
  129. package/dist/_chunks/{streaming-text-BKZmbW1Q.js → streaming-text-bPDoG7Y3.js} +2 -2
  130. package/dist/_chunks/{tab-bar-Bm-rJB7Y.js → tab-bar-5GppbMGc.js} +2 -2
  131. package/dist/_chunks/{tabs-I2wf_nC7.js → tabs-2x3L13jn.js} +3 -3
  132. package/dist/_chunks/{task-card-BMXMh3uE.js → task-card-zaTU1rQa.js} +2 -2
  133. package/dist/_chunks/{task-editor-BflEZmcF.js → task-editor-CgGcg-2c.js} +8 -8
  134. package/dist/_chunks/{task-tray-DsBO-AaP.js → task-tray-DGMwogWu.js} +4 -4
  135. package/dist/_chunks/{tasks-panel-CdgZQQgG.js → tasks-panel-xGtiEdcj.js} +7 -7
  136. package/dist/_chunks/{theme-toggle-PpFcFoYK.js → theme-toggle-_cfYEK73.js} +4 -4
  137. package/dist/_chunks/{timeline-DG8wAlAx.js → timeline-DEIuHrWz.js} +2 -2
  138. package/dist/_chunks/{toast-CPqguP7G.js → toast-CNUydTgT.js} +2 -2
  139. package/dist/_chunks/{token-insert-menu-B-pWFDKX.js → token-insert-menu-CQvV4u1m.js} +3 -3
  140. package/dist/_chunks/{tool-rail-CTq1KwxW.js → tool-rail-Blgibz0a.js} +2 -2
  141. package/dist/_chunks/{tooth-scheme-BAO_voUO.js → tooth-scheme-05DsRMA5.js} +3 -3
  142. package/dist/_chunks/{unit-converter-DS4UB_59.js → unit-converter-BPZ0Ldkb.js} +3 -3
  143. package/dist/_chunks/{use-appointment-details-read-izwoXh-G.js → use-appointment-details-read-BGVthJFx.js} +16 -16
  144. package/dist/_chunks/{voice-control-panel-an-bpQfF.js → voice-control-panel-DyKEaFxt.js} +5 -5
  145. package/dist/_chunks/{warning-stack-ubD0IZCy.js → warning-stack-CAL9xVo1.js} +3 -3
  146. package/dist/_chunks/{widget-picker-DlJOgYrZ.js → widget-picker-CkhoG4Rj.js} +2 -2
  147. package/dist/_chunks/{workflow-map-Demlpy39.js → workflow-map-BUYG1oXU.js} +7 -7
  148. package/dist/_chunks/{workflow-status-BT27_fQp.js → workflow-status-Dc_CyEz5.js} +2 -2
  149. package/dist/agent-catalog.json +26 -1
  150. package/dist/agent-i18n/en.json +4 -2
  151. package/dist/components/_shared/aria-keyshortcuts.d.ts +5 -0
  152. package/dist/components/_shared/popup-region.d.ts +28 -0
  153. package/dist/components/agenda-tray/index.js +1 -1
  154. package/dist/components/ai-credits-notice/index.js +1 -1
  155. package/dist/components/ai-permission-notice/index.js +1 -1
  156. package/dist/components/ai-prompt-input/index.js +1 -1
  157. package/dist/components/anamnesis-card/index.js +1 -1
  158. package/dist/components/anamnesis-summary-card/index.js +1 -1
  159. package/dist/components/appointment-card/index.js +2 -2
  160. package/dist/components/appointment-details-panel/index.js +1 -1
  161. package/dist/components/appointment-peek/index.js +1 -1
  162. package/dist/components/appointment-timeline/index.js +1 -1
  163. package/dist/components/audio-recorder/index.js +1 -1
  164. package/dist/components/bishop-score/index.js +1 -1
  165. package/dist/components/bmi-calculator/index.js +1 -1
  166. package/dist/components/booking/index.js +1 -1
  167. package/dist/components/button/index.js +2 -2
  168. package/dist/components/button-group/index.js +1 -1
  169. package/dist/components/calculator-dialog/index.js +1 -1
  170. package/dist/components/calendar/index.js +1 -1
  171. package/dist/components/card/index.js +1 -1
  172. package/dist/components/care-plan-card/index.js +1 -1
  173. package/dist/components/care-plan-entry-card/index.js +1 -1
  174. package/dist/components/care-plan-header/index.js +1 -1
  175. package/dist/components/carousel/index.js +1 -1
  176. package/dist/components/chart/index.js +1 -1
  177. package/dist/components/chat-input/index.js +1 -1
  178. package/dist/components/chat-message/index.js +1 -1
  179. package/dist/components/clinical-note-card/index.js +1 -1
  180. package/dist/components/connection-status/index.js +1 -1
  181. package/dist/components/contact-card/index.js +1 -1
  182. package/dist/components/contact-profile-card/index.js +1 -1
  183. package/dist/components/control-room-rail/index.js +1 -1
  184. package/dist/components/copy-field/index.js +1 -1
  185. package/dist/components/cycle-calculator/index.js +1 -1
  186. package/dist/components/dashboard-grid/index.js +1 -1
  187. package/dist/components/data-table/data-table.d.ts +1 -1
  188. package/dist/components/data-table/index.js +4 -4
  189. package/dist/components/data-table/toolbar.d.ts +1 -1
  190. package/dist/components/data-table-tabs/index.js +1 -1
  191. package/dist/components/description-list/index.js +1 -1
  192. package/dist/components/dev-bypass-button/index.js +1 -1
  193. package/dist/components/dialog/index.js +1 -1
  194. package/dist/components/document-preview/index.js +1 -1
  195. package/dist/components/document-scanner/index.js +1 -1
  196. package/dist/components/dropdown-menu/index.js +1 -1
  197. package/dist/components/due-date-calculator/index.js +2 -2
  198. package/dist/components/editable-description/index.js +1 -1
  199. package/dist/components/editor-overlay/index.js +1 -1
  200. package/dist/components/empty-state/empty-state.d.ts +8 -0
  201. package/dist/components/empty-state/index.d.ts +1 -1
  202. package/dist/components/empty-state/index.js +1 -1
  203. package/dist/components/entity-summary/index.js +1 -1
  204. package/dist/components/error-boundary/index.js +1 -1
  205. package/dist/components/face-scheme/index.js +1 -1
  206. package/dist/components/fetal-weight/index.js +1 -1
  207. package/dist/components/field-array/index.js +1 -1
  208. package/dist/components/file-manager/index.js +1 -1
  209. package/dist/components/finished-terminal/index.js +1 -1
  210. package/dist/components/fiscal-code-input/index.js +1 -1
  211. package/dist/components/freemium-paywall/index.js +1 -1
  212. package/dist/components/gestational-age-calculator/index.js +1 -1
  213. package/dist/components/hcg-doubling/index.js +1 -1
  214. package/dist/components/header/index.js +1 -1
  215. package/dist/components/header-settings/index.js +1 -1
  216. package/dist/components/heatmap/index.js +1 -1
  217. package/dist/components/hover-card/index.js +1 -1
  218. package/dist/components/icon-button/index.js +1 -1
  219. package/dist/components/icon-button-group/index.js +1 -1
  220. package/dist/components/icon-picker/index.js +1 -1
  221. package/dist/components/image-cropper/index.js +1 -1
  222. package/dist/components/info-tip/index.js +1 -1
  223. package/dist/components/key-value-pair/index.js +1 -1
  224. package/dist/components/locale-picker/index.js +1 -1
  225. package/dist/components/map-view/index.js +1 -1
  226. package/dist/components/message-card/index.js +1 -1
  227. package/dist/components/message-tray/index.js +1 -1
  228. package/dist/components/muscle-scheme/index.js +1 -1
  229. package/dist/components/notes-panel/index.js +1 -1
  230. package/dist/components/notification-card/index.js +1 -1
  231. package/dist/components/notification-tray/index.js +1 -1
  232. package/dist/components/operator-hero/index.js +1 -1
  233. package/dist/components/optical-prescription/index.js +1 -1
  234. package/dist/components/pagination/index.js +1 -1
  235. package/dist/components/panel-subview/index.js +1 -1
  236. package/dist/components/patient-details/index.js +1 -1
  237. package/dist/components/patient-search/index.js +1 -1
  238. package/dist/components/patient-summary-card/index.js +1 -1
  239. package/dist/components/patient-table/index.js +1 -1
  240. package/dist/components/payment-card/index.js +1 -1
  241. package/dist/components/periodontal-chart/index.js +1 -1
  242. package/dist/components/periodontal-chart-card/index.js +1 -1
  243. package/dist/components/periodontal-diagnosis/index.js +1 -1
  244. package/dist/components/periodontal-risk-chart/index.js +1 -1
  245. package/dist/components/popover/index.js +1 -1
  246. package/dist/components/practice-profile-hero/index.js +1 -1
  247. package/dist/components/practice-results/index.js +1 -1
  248. package/dist/components/pregnancy-dating/index.js +1 -1
  249. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  250. package/dist/components/privacy-lock/index.js +1 -1
  251. package/dist/components/product-hub-tray/index.js +1 -1
  252. package/dist/components/public-header/index.js +1 -1
  253. package/dist/components/radiograph-panel/index.js +1 -1
  254. package/dist/components/reviews-panel/index.js +1 -1
  255. package/dist/components/rich-text-editor/index.js +2 -2
  256. package/dist/components/section-card/index.js +1 -1
  257. package/dist/components/select/index.js +1 -1
  258. package/dist/components/select/select.d.ts +1 -1
  259. package/dist/components/session-countdown/index.js +1 -1
  260. package/dist/components/sheet/index.js +1 -1
  261. package/dist/components/sidebar/index.d.ts +2 -2
  262. package/dist/components/sidebar/index.js +24 -21
  263. package/dist/components/sidebar/sidebar.d.ts +69 -1
  264. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  265. package/dist/components/skeleton-scheme/index.js +1 -1
  266. package/dist/components/slot-grid/index.js +1 -1
  267. package/dist/components/streaming-text/index.js +1 -1
  268. package/dist/components/tab-bar/index.js +1 -1
  269. package/dist/components/tabs/index.js +1 -1
  270. package/dist/components/task-card/index.js +1 -1
  271. package/dist/components/task-editor/index.js +1 -1
  272. package/dist/components/task-tray/index.js +1 -1
  273. package/dist/components/tasks-panel/index.js +1 -1
  274. package/dist/components/theme-toggle/index.js +1 -1
  275. package/dist/components/timeline/index.js +1 -1
  276. package/dist/components/toast/index.js +1 -1
  277. package/dist/components/token-insert-menu/index.js +1 -1
  278. package/dist/components/tool-rail/index.js +1 -1
  279. package/dist/components/tooth-scheme/index.js +1 -1
  280. package/dist/components/unit-converter/index.js +1 -1
  281. package/dist/components/voice-control-panel/index.js +1 -1
  282. package/dist/components/warning-stack/index.js +1 -1
  283. package/dist/components/widget-picker/index.js +1 -1
  284. package/dist/components/workflow/index.js +1 -1
  285. package/dist/components/workflow-status/index.js +1 -1
  286. package/dist/i18n/locales/ar.d.ts +7 -0
  287. package/dist/i18n/locales/ar.js +8 -1
  288. package/dist/i18n/locales/de.d.ts +7 -0
  289. package/dist/i18n/locales/de.js +8 -1
  290. package/dist/i18n/locales/el.d.ts +7 -0
  291. package/dist/i18n/locales/el.js +8 -1
  292. package/dist/i18n/locales/en.d.ts +7 -0
  293. package/dist/i18n/locales/en.js +8 -1
  294. package/dist/i18n/locales/es.d.ts +7 -0
  295. package/dist/i18n/locales/es.js +8 -1
  296. package/dist/i18n/locales/fr.d.ts +7 -0
  297. package/dist/i18n/locales/fr.js +8 -1
  298. package/dist/i18n/locales/hi.d.ts +7 -0
  299. package/dist/i18n/locales/hi.js +8 -1
  300. package/dist/i18n/locales/it.d.ts +7 -0
  301. package/dist/i18n/locales/it.js +8 -1
  302. package/dist/i18n/locales/ja.d.ts +7 -0
  303. package/dist/i18n/locales/ja.js +8 -1
  304. package/dist/i18n/locales/nl.d.ts +7 -0
  305. package/dist/i18n/locales/nl.js +8 -1
  306. package/dist/i18n/locales/pl.d.ts +7 -0
  307. package/dist/i18n/locales/pl.js +8 -1
  308. package/dist/i18n/locales/pt.d.ts +7 -0
  309. package/dist/i18n/locales/pt.js +8 -1
  310. package/dist/i18n/locales/ro.d.ts +7 -0
  311. package/dist/i18n/locales/ro.js +8 -1
  312. package/dist/i18n/locales/ru.d.ts +7 -0
  313. package/dist/i18n/locales/ru.js +8 -1
  314. package/dist/i18n/locales/sq.d.ts +7 -0
  315. package/dist/i18n/locales/sq.js +8 -1
  316. package/dist/i18n/locales/sv.d.ts +7 -0
  317. package/dist/i18n/locales/sv.js +8 -1
  318. package/dist/i18n/locales/tr.d.ts +7 -0
  319. package/dist/i18n/locales/tr.js +8 -1
  320. package/dist/i18n/locales/zh.d.ts +7 -0
  321. package/dist/i18n/locales/zh.js +8 -1
  322. package/dist/index.js +781 -778
  323. package/dist/locales/ar.json +8 -1
  324. package/dist/locales/de.json +8 -1
  325. package/dist/locales/el.json +8 -1
  326. package/dist/locales/en.json +8 -1
  327. package/dist/locales/es.json +8 -1
  328. package/dist/locales/fr.json +8 -1
  329. package/dist/locales/hi.json +8 -1
  330. package/dist/locales/it.json +8 -1
  331. package/dist/locales/ja.json +8 -1
  332. package/dist/locales/nl.json +8 -1
  333. package/dist/locales/pl.json +8 -1
  334. package/dist/locales/pt.json +8 -1
  335. package/dist/locales/ro.json +8 -1
  336. package/dist/locales/ru.json +8 -1
  337. package/dist/locales/sq.json +8 -1
  338. package/dist/locales/sv.json +8 -1
  339. package/dist/locales/tr.json +8 -1
  340. package/dist/locales/zh.json +8 -1
  341. package/dist/patterns/alia-assistant/index.js +1 -1
  342. package/dist/patterns/anamnesis/index.js +1 -1
  343. package/dist/patterns/calendar/index.js +1 -1
  344. package/dist/patterns/error-page/index.js +1 -1
  345. package/dist/patterns/forgot-password-form/index.js +1 -1
  346. package/dist/patterns/help-me-write-templates/index.js +1 -1
  347. package/dist/patterns/login-form/index.js +1 -1
  348. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  349. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +23 -4
  350. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  351. package/dist/patterns/registration-form/index.js +1 -1
  352. package/dist/patterns/signature-request/index.js +1 -1
  353. package/dist/patterns/signed-out-frame/index.js +1 -1
  354. package/dist/tokens.css +6 -3
  355. package/package.json +1 -1
  356. package/dist/_chunks/sidebar-D4Wllqfz.js +0 -2029
@@ -1,2029 +0,0 @@
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