@alfadocs/ui-kit 1.57.0 → 1.59.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 (378) hide show
  1. package/dist/_chunks/{actions-cell-renderer-Dj1ZkvJj.js → actions-cell-renderer-KoO3EYrZ.js} +4 -4
  2. package/dist/_chunks/{address-fields-BfjxS05Z.js → address-fields-CJtu7LQU.js} +2 -2
  3. package/dist/_chunks/{agenda-tray-ZKhDxlfw.js → agenda-tray-D3GH9t3T.js} +3 -3
  4. package/dist/_chunks/{ai-credits-notice-ktklr8fy.js → ai-credits-notice-DAxBt_wr.js} +11 -11
  5. package/dist/_chunks/{ai-permission-notice-DyuEGwAt.js → ai-permission-notice-htJegWcH.js} +2 -2
  6. package/dist/_chunks/{ai-prompt-input-Beh-O_rJ.js → ai-prompt-input-DRNqTCSK.js} +3 -3
  7. package/dist/_chunks/{alia-sidebar-BBKBJCv6.js → alia-sidebar-bMVUsMmJ.js} +8 -8
  8. package/dist/_chunks/{anamnesis-card-BSlAhaoG.js → anamnesis-card-Bh7Tg6i-.js} +3 -3
  9. package/dist/_chunks/{anamnesis-summary-card-2YfIYY2j.js → anamnesis-summary-card-cCj7LPh3.js} +2 -2
  10. package/dist/_chunks/{anamnesis-summary-rows-CCQ62mMN.js → anamnesis-summary-rows-D9cFUeXk.js} +14 -14
  11. package/dist/_chunks/{antenatal-schedule-timeline-Kf2Yg8uo.js → antenatal-schedule-timeline-CfNFrej5.js} +2 -2
  12. package/dist/_chunks/{app-frame-B-0O9CrU.js → app-frame-CqmDh2v5.js} +2 -2
  13. package/dist/_chunks/{appointment-card-Dh3fAcyf.js → appointment-card-BXQUZlAJ.js} +2 -2
  14. package/dist/_chunks/{appointment-peek-WvNbE4JG.js → appointment-peek-drkQF54M.js} +4 -4
  15. package/dist/_chunks/{appointment-timeline-Z0494xO-.js → appointment-timeline-C3mTzaUm.js} +5 -5
  16. package/dist/_chunks/{appointment-tray-CyI_p3zU.js → appointment-tray-CUBBT4mL.js} +4 -4
  17. package/dist/_chunks/{audio-recorder-DWKKjGPt.js → audio-recorder-B1TpJoMu.js} +4 -4
  18. package/dist/_chunks/{balance-badge-cell-CII3SDmR.js → balance-badge-cell-BC92nTi9.js} +5 -5
  19. package/dist/_chunks/{bishop-score-BxA20j9T.js → bishop-score-BOjlxLzL.js} +4 -4
  20. package/dist/_chunks/{bmi-calculator-C0UTxB7R.js → bmi-calculator-JNiTHdYJ.js} +3 -3
  21. package/dist/_chunks/{booking-81WnKDsH.js → booking-BdWwr_NM.js} +8 -8
  22. package/dist/_chunks/{button-Bn16lcFM.js → button-CnUVJg1Y.js} +71 -61
  23. package/dist/_chunks/{button-group-CWlwR-A5.js → button-group-DLqAoowT.js} +73 -73
  24. package/dist/_chunks/{calculator-dialog-CzQv03p0.js → calculator-dialog-BUfaWqvu.js} +2 -2
  25. package/dist/_chunks/{calendar-6-24PQ1u.js → calendar-KihOHLCs.js} +2 -2
  26. package/dist/_chunks/{calendar-workspace-D5-k_9zE.js → calendar-workspace-DD378Xg8.js} +30 -30
  27. package/dist/_chunks/{card-DMO2nkt4.js → card-BA4Ig_kn.js} +9 -8
  28. package/dist/_chunks/{care-plan-card-DxrRLRdW.js → care-plan-card-Cd1En8-p.js} +2 -2
  29. package/dist/_chunks/{care-plan-entry-card-0rpR-4Te.js → care-plan-entry-card-FIYdF44t.js} +2 -2
  30. package/dist/_chunks/{care-plan-header-BMwZIgHJ.js → care-plan-header-DgPAJWS4.js} +2 -2
  31. package/dist/_chunks/{carousel.agent-D3xthzTf.js → carousel.agent-C7MXzwUi.js} +2 -2
  32. package/dist/_chunks/{chart-DQ5GxqgT.js → chart-0jK6B2ry.js} +407 -393
  33. package/dist/_chunks/{chat-input-PtrSu1ZC.js → chat-input-1c4k4-uk.js} +2 -2
  34. package/dist/_chunks/{chat-message-CmGUcajG.js → chat-message-Bv9eW1NW.js} +3 -3
  35. package/dist/_chunks/{city-input-BC_nYINn.js → city-input-3J3bz9EO.js} +2 -2
  36. package/dist/_chunks/{clinical-note-card-hx939bvw.js → clinical-note-card-L6FVM9Gx.js} +2 -2
  37. package/dist/_chunks/{code-block-BQgK70mO.js → code-block-DWVvOrUF.js} +2 -2
  38. package/dist/_chunks/{connection-status-ncTjUPt6.js → connection-status-D-Zeqpr3.js} +4 -4
  39. package/dist/_chunks/{contact-card-fHBMwEsx.js → contact-card-C8rEsC4Q.js} +2 -2
  40. package/dist/_chunks/{contact-profile-card-CMyBYgRR.js → contact-profile-card-DJe2ld0g.js} +3 -3
  41. package/dist/_chunks/{control-room-rail-Tx2jW250.js → control-room-rail-DgS2snUz.js} +3 -3
  42. package/dist/_chunks/{copy-field-CvTIuA_p.js → copy-field-CY1f0k7O.js} +2 -2
  43. package/dist/_chunks/{cycle-calculator-Cww9DzIa.js → cycle-calculator-sOOESGEG.js} +3 -3
  44. package/dist/_chunks/dashboard-grid-SAGjktTs.js +933 -0
  45. package/dist/_chunks/{data-table-fAMTeAjM.js → data-table-DjDuXaQB.js} +11 -11
  46. package/dist/_chunks/{data-table-tabs-CHYAAeHy.js → data-table-tabs-BsCll8sH.js} +3 -3
  47. package/dist/_chunks/{description-list-DkLeHiew.js → description-list-ZWlFfbOy.js} +2 -2
  48. package/dist/_chunks/{dev-bypass-button-BhGn6evf.js → dev-bypass-button-m-eXU2PU.js} +2 -2
  49. package/dist/_chunks/{dialog-Dn-iQ0Jp.js → dialog-D6fkpRc4.js} +72 -61
  50. package/dist/_chunks/{document-preview-CHGGG0l_.js → document-preview-E6od-Yy0.js} +4 -4
  51. package/dist/_chunks/{document-scanner-CQS9kv84.js → document-scanner-DDOMMswN.js} +2 -2
  52. package/dist/_chunks/{dropdown-menu-BQSNVp4x.js → dropdown-menu-D1we7oAY.js} +134 -133
  53. package/dist/_chunks/{due-date-calculator-D_qFUiHp.js → due-date-calculator-rtMADvJ8.js} +4 -4
  54. package/dist/_chunks/{editable-currency-cell-renderer-CmYcMuwi.js → editable-currency-cell-renderer-DTtF6IIr.js} +3 -3
  55. package/dist/_chunks/{editable-description-DuJlvltc.js → editable-description-CriawIum.js} +3 -3
  56. package/dist/_chunks/{editor-overlay-NMxzcO6J.js → editor-overlay-CbFUYsVk.js} +2 -2
  57. package/dist/_chunks/{empty-state-gNG3qYCX.js → empty-state-BN_R5AzQ.js} +61 -59
  58. package/dist/_chunks/{entity-summary-CWcCSThK.js → entity-summary-CoCUJe3N.js} +4 -4
  59. package/dist/_chunks/{error-boundary-ChowhO6w.js → error-boundary-BlwcM1KR.js} +2 -2
  60. package/dist/_chunks/{error-page-CpuYbpOB.js → error-page-B0ER6tPK.js} +2 -2
  61. package/dist/_chunks/{face-scheme-BicuUA2K.js → face-scheme-BunF1rjI.js} +7 -7
  62. package/dist/_chunks/{fetal-weight-BWaqqjea.js → fetal-weight-67yvef3S.js} +3 -3
  63. package/dist/_chunks/{field-array-BO-kaKFK.js → field-array-BVitwPIt.js} +3 -3
  64. package/dist/_chunks/{file-manager-CFsL1KVt.js → file-manager-YXtUu76I.js} +9 -9
  65. package/dist/_chunks/{finished-terminal-CPSDrIMB.js → finished-terminal-DdLHDe_5.js} +3 -3
  66. package/dist/_chunks/{fiscal-code-input-DesSQ6Fh.js → fiscal-code-input-Dsa1M6VK.js} +2 -2
  67. package/dist/_chunks/{forgot-password-form-DEx-M_QR.js → forgot-password-form-C2ibWCZT.js} +4 -4
  68. package/dist/_chunks/{freemium-paywall-DIKuhX8b.js → freemium-paywall-C8CXWbhO.js} +27 -27
  69. package/dist/_chunks/{gestational-age-calculator-CZi43xKG.js → gestational-age-calculator-DT8XDFVK.js} +5 -5
  70. package/dist/_chunks/{hcg-doubling-Ccvh7OaU.js → hcg-doubling-BxggoYNV.js} +3 -3
  71. package/dist/_chunks/{header-B9552pLh.js → header-C0XQZtu6.js} +2 -2
  72. package/dist/_chunks/{header-settings-BMcCx2LC.js → header-settings-BJ6M2p9Q.js} +4 -4
  73. package/dist/_chunks/{heatmap-BEeOThkW.js → heatmap-COoukTUe.js} +6 -6
  74. package/dist/_chunks/{help-me-write-templates-BUoYGo6f.js → help-me-write-templates-DpcMweG1.js} +7 -7
  75. package/dist/_chunks/{hover-card-U_ZYoh1n.js → hover-card-s2qD4RAz.js} +2 -2
  76. package/dist/_chunks/{icon-button-COX76Jdj.js → icon-button-CsOGhuRB.js} +2 -2
  77. package/dist/_chunks/{icon-button-group-C5hhI-R5.js → icon-button-group-Cap4-Idv.js} +3 -3
  78. package/dist/_chunks/{icon-picker-C86lQTIA.js → icon-picker-BbO2FB4y.js} +4 -4
  79. package/dist/_chunks/{image-cropper-D0kkQ4lG.js → image-cropper-DXqCUezS.js} +2 -2
  80. package/dist/_chunks/{info-tip-CJpNpzZe.js → info-tip-CJqR9fhi.js} +2 -2
  81. package/dist/_chunks/{insert-result-C1C2OCc3.js → insert-result-BUEtHFMg.js} +2 -2
  82. package/dist/_chunks/{key-value-pair-BNNITp6S.js → key-value-pair-BN5lWXcB.js} +2 -2
  83. package/dist/_chunks/{kit-extensions-DYVxWcqv.js → kit-extensions-BVtvnev_.js} +6 -6
  84. package/dist/_chunks/{link-cell-renderer-CxW_oLa5.js → link-cell-renderer-BZmRw_Yi.js} +6 -6
  85. package/dist/_chunks/{list-RRN2TJ_7.js → list-CNnn7DOD.js} +75 -73
  86. package/dist/_chunks/{locale-picker-BGfrZyTw.js → locale-picker-DVWHnuDN.js} +3 -3
  87. package/dist/_chunks/{login-dev-card-DmZ1B0lB.js → login-dev-card-DQioAtdz.js} +4 -4
  88. package/dist/_chunks/{map-view-CO2v0hfp.js → map-view-9Ro_P8O8.js} +2 -2
  89. package/dist/_chunks/marketplace-app-shell-DnuHxuoE.js +613 -0
  90. package/dist/_chunks/{message-card-DVo8-dOm.js → message-card-BNoaKInS.js} +3 -3
  91. package/dist/_chunks/{message-tray-QKQutwxj.js → message-tray-D4R0boMJ.js} +5 -5
  92. package/dist/_chunks/{muscle-scheme-BDgIaGeW.js → muscle-scheme-YoN3rYXV.js} +2 -2
  93. package/dist/_chunks/navigation-dismiss-B1mcW1CT.js +9 -0
  94. package/dist/_chunks/{notes-panel-Cm4pttpl.js → notes-panel-0Wots8rp.js} +7 -7
  95. package/dist/_chunks/{notification-card-BGCIL6Mu.js → notification-card-DRLmYlL8.js} +3 -3
  96. package/dist/_chunks/{notification-tray-C5VtbGjd.js → notification-tray-qrSc9Fcs.js} +5 -5
  97. package/dist/_chunks/{operator-hero-Dyd2IGbR.js → operator-hero-C_Khr5IU.js} +2 -2
  98. package/dist/_chunks/{optical-prescription-Do6e3wfs.js → optical-prescription-B0ap3kGl.js} +3 -3
  99. package/dist/_chunks/{pagination-BR1_GfD_.js → pagination-DvKGrsXu.js} +146 -142
  100. package/dist/_chunks/{panel-subview-BT-Apwgb.js → panel-subview-Bs0WhwR9.js} +62 -48
  101. package/dist/_chunks/{patient-details-99kEdtc5.js → patient-details-C6buDwuI.js} +4 -4
  102. package/dist/_chunks/{patient-field-row-DkxY13T6.js → patient-field-row-CKb4FIaM.js} +9 -9
  103. package/dist/_chunks/{patient-search-D5xlXmd2.js → patient-search-Cgv8Pjsc.js} +4 -4
  104. package/dist/_chunks/{patient-summary-card-opdyfeW2.js → patient-summary-card-DWx0emu2.js} +6 -6
  105. package/dist/_chunks/{payment-automation-upsell-DiHovmUL.js → payment-automation-upsell-BAJwtVCs.js} +4 -4
  106. package/dist/_chunks/{payment-request-card-DAniJNLX.js → payment-request-card-BNiZqIzT.js} +4 -4
  107. package/dist/_chunks/{periodontal-chart-DD5C0M3l.js → periodontal-chart-DMWiP5Ti.js} +2 -2
  108. package/dist/_chunks/{periodontal-chart-card-CxdXvsPU.js → periodontal-chart-card-D2ZFjN7G.js} +3 -3
  109. package/dist/_chunks/{periodontal-diagnosis-D-PJv7KS.js → periodontal-diagnosis-6wybid_W.js} +2 -2
  110. package/dist/_chunks/{periodontal-risk-chart-D3DjIymT.js → periodontal-risk-chart-CgLwBj5c.js} +2 -2
  111. package/dist/_chunks/{popover-BG75rYjN.js → popover-CltTC2Rg.js} +2 -2
  112. package/dist/_chunks/popup-region-qz_5_A0V.js +79 -0
  113. package/dist/_chunks/{practice-profile-hero-C8RPACCi.js → practice-profile-hero-DPbvYfCs.js} +2 -2
  114. package/dist/_chunks/{practice-results-CfRkjzsI.js → practice-results-PINvX-1g.js} +6 -6
  115. package/dist/_chunks/{pregnancy-dating-BFzv9g1N.js → pregnancy-dating-BNSWXA0p.js} +5 -5
  116. package/dist/_chunks/{pregnancy-weight-gain-CUUrBTBo.js → pregnancy-weight-gain-CI7R6sA6.js} +3 -3
  117. package/dist/_chunks/{privacy-lock-WkUgwIj_.js → privacy-lock-CqLxFiLE.js} +3 -3
  118. package/dist/_chunks/{privacy-mask-ChIjELJC.js → privacy-mask-CUnJv35j.js} +3 -3
  119. package/dist/_chunks/{product-hub-panel-DlVRK7Ue.js → product-hub-panel-MbiHZwjC.js} +4 -4
  120. package/dist/_chunks/{public-header.agent-BctevbuY.js → public-header.agent-1MZVDYY1.js} +3 -3
  121. package/dist/_chunks/{radiograph-panel.agent-DyqbTECc.js → radiograph-panel.agent-CpKvvZIU.js} +6 -6
  122. package/dist/_chunks/{registration-form-BlTzYywa.js → registration-form-JYravsvu.js} +7 -7
  123. package/dist/_chunks/{reviews-panel-CDcK6W3b.js → reviews-panel-B1Xirvh4.js} +5 -5
  124. package/dist/_chunks/{rich-text-editor-DTnNZ4Ff.js → rich-text-editor-CZXnqI3-.js} +11 -11
  125. package/dist/_chunks/{scroll-area-ZtFCv9K7.js → scroll-area-CY5SLYNw.js} +104 -74
  126. package/dist/_chunks/{search-bar-DQJS0wJN.js → search-bar-mA4bPe3t.js} +294 -255
  127. package/dist/_chunks/{section-card-ChJdOlBU.js → section-card-D5nWiTcK.js} +2 -2
  128. package/dist/_chunks/{select-Ce5RMk93.js → select-k4gBdS8N.js} +249 -224
  129. package/dist/_chunks/{session-countdown-CBINYw8H.js → session-countdown-DAyI9Wye.js} +2 -2
  130. package/dist/_chunks/{sheet-8qsiMoUI.js → sheet-D_bERXP2.js} +8 -8
  131. package/dist/_chunks/sidebar-D_S2-SXH.js +2165 -0
  132. package/dist/_chunks/{sign-in-with-alfadocs-button-D91_x8DX.js → sign-in-with-alfadocs-button-WfdfqQ8O.js} +2 -2
  133. package/dist/_chunks/{signature-request-DRuYAG5I.js → signature-request-BZIs36nH.js} +7 -7
  134. package/dist/_chunks/{signed-out-frame-AhMsNW1r.js → signed-out-frame-BR5sJSNX.js} +4 -4
  135. package/dist/_chunks/{slot-grid-sVZriOiQ.js → slot-grid-JU--9C6W.js} +4 -4
  136. package/dist/_chunks/{state-backed-text-input-DECQy5aA.js → state-backed-text-input-Cgh4ms3p.js} +2 -2
  137. package/dist/_chunks/{streaming-text-BKZmbW1Q.js → streaming-text-COuXesoR.js} +2 -2
  138. package/dist/_chunks/{tab-bar-Bm-rJB7Y.js → tab-bar-5GppbMGc.js} +2 -2
  139. package/dist/_chunks/{tabs-I2wf_nC7.js → tabs-2x3L13jn.js} +3 -3
  140. package/dist/_chunks/{task-card-BMXMh3uE.js → task-card-D9ngXO7p.js} +2 -2
  141. package/dist/_chunks/{task-editor-NkcopDna.js → task-editor-B7xb-mMs.js} +11 -10
  142. package/dist/_chunks/{task-tray-DsBO-AaP.js → task-tray-BAW_wbTO.js} +4 -4
  143. package/dist/_chunks/{tasks-panel-CdgZQQgG.js → tasks-panel-DQvN3TiB.js} +7 -7
  144. package/dist/_chunks/{theme-toggle-PpFcFoYK.js → theme-toggle-CfjLDUfK.js} +4 -4
  145. package/dist/_chunks/{timeline-DG8wAlAx.js → timeline-DEIuHrWz.js} +2 -2
  146. package/dist/_chunks/{toast-CPqguP7G.js → toast-2y0czYHr.js} +2 -2
  147. package/dist/_chunks/{token-insert-menu-B-pWFDKX.js → token-insert-menu-BzNAHiND.js} +3 -3
  148. package/dist/_chunks/{tool-rail-Bwyuw_Ot.js → tool-rail-DQ5qTv4l.js} +115 -114
  149. package/dist/_chunks/{tooth-scheme-BAO_voUO.js → tooth-scheme-CLyS9UUW.js} +3 -3
  150. package/dist/_chunks/{unit-converter-DS4UB_59.js → unit-converter-W62N99Mw.js} +3 -3
  151. package/dist/_chunks/{use-appointment-details-read-CfFQNOF_.js → use-appointment-details-read-Ba1DBPr7.js} +18 -18
  152. package/dist/_chunks/use-state-backed-input-DhRQo6gM.js +57 -0
  153. package/dist/_chunks/{voice-control-panel-BKbgb7FM.js → voice-control-panel-p7WMTj4D.js} +6 -6
  154. package/dist/_chunks/{warning-stack-ubD0IZCy.js → warning-stack-DGPuJNVD.js} +3 -3
  155. package/dist/_chunks/{widget-picker-rBA7MR5P.js → widget-picker-CkhoG4Rj.js} +80 -57
  156. package/dist/_chunks/{workflow-map-Demlpy39.js → workflow-map-DFuVff8U.js} +7 -7
  157. package/dist/_chunks/{workflow-status-BT27_fQp.js → workflow-status-Dc_CyEz5.js} +2 -2
  158. package/dist/agent-catalog.json +2 -2
  159. package/dist/agent-i18n/en.json +1 -1
  160. package/dist/components/_shared/navigation-dismiss.d.ts +8 -0
  161. package/dist/components/_shared/popup-region.d.ts +28 -0
  162. package/dist/components/_shared/use-state-backed-input.d.ts +3 -2
  163. package/dist/components/address-fields/index.js +1 -1
  164. package/dist/components/agenda-tray/index.js +1 -1
  165. package/dist/components/ai-credits-notice/index.js +1 -1
  166. package/dist/components/ai-permission-notice/index.js +1 -1
  167. package/dist/components/ai-prompt-input/index.js +1 -1
  168. package/dist/components/anamnesis-card/index.js +1 -1
  169. package/dist/components/anamnesis-summary-card/index.js +1 -1
  170. package/dist/components/app-frame/index.js +1 -1
  171. package/dist/components/appointment-card/index.js +2 -2
  172. package/dist/components/appointment-details-panel/index.js +1 -1
  173. package/dist/components/appointment-peek/index.js +1 -1
  174. package/dist/components/appointment-timeline/index.js +1 -1
  175. package/dist/components/audio-recorder/index.js +1 -1
  176. package/dist/components/bishop-score/index.js +1 -1
  177. package/dist/components/bmi-calculator/index.js +1 -1
  178. package/dist/components/booking/index.js +1 -1
  179. package/dist/components/button/index.js +2 -2
  180. package/dist/components/button-group/index.js +1 -1
  181. package/dist/components/calculator-dialog/index.js +1 -1
  182. package/dist/components/calendar/index.js +1 -1
  183. package/dist/components/card/index.js +1 -1
  184. package/dist/components/care-plan-card/index.js +1 -1
  185. package/dist/components/care-plan-entry-card/index.js +1 -1
  186. package/dist/components/care-plan-header/index.js +1 -1
  187. package/dist/components/carousel/index.js +1 -1
  188. package/dist/components/chart/index.js +1 -1
  189. package/dist/components/chat-input/index.js +1 -1
  190. package/dist/components/chat-message/index.js +1 -1
  191. package/dist/components/city-input/index.js +1 -1
  192. package/dist/components/clinical-note-card/index.js +1 -1
  193. package/dist/components/connection-status/index.js +1 -1
  194. package/dist/components/contact-card/index.js +1 -1
  195. package/dist/components/contact-profile-card/index.js +1 -1
  196. package/dist/components/control-room-rail/index.js +1 -1
  197. package/dist/components/copy-field/index.js +1 -1
  198. package/dist/components/cycle-calculator/index.js +1 -1
  199. package/dist/components/dashboard-grid/dashboard-grid.d.ts +33 -8
  200. package/dist/components/dashboard-grid/index.js +1 -1
  201. package/dist/components/data-table/index.js +4 -4
  202. package/dist/components/data-table-tabs/index.js +1 -1
  203. package/dist/components/description-list/index.js +1 -1
  204. package/dist/components/dev-bypass-button/index.js +1 -1
  205. package/dist/components/dialog/index.js +1 -1
  206. package/dist/components/document-preview/index.js +1 -1
  207. package/dist/components/document-scanner/index.js +1 -1
  208. package/dist/components/dropdown-menu/index.js +1 -1
  209. package/dist/components/due-date-calculator/index.js +2 -2
  210. package/dist/components/editable-description/index.js +1 -1
  211. package/dist/components/editor-overlay/index.js +1 -1
  212. package/dist/components/empty-state/empty-state.d.ts +8 -0
  213. package/dist/components/empty-state/index.d.ts +1 -1
  214. package/dist/components/empty-state/index.js +1 -1
  215. package/dist/components/entity-summary/index.js +1 -1
  216. package/dist/components/error-boundary/index.js +1 -1
  217. package/dist/components/face-scheme/index.js +1 -1
  218. package/dist/components/fetal-weight/index.js +1 -1
  219. package/dist/components/field-array/index.js +1 -1
  220. package/dist/components/file-manager/index.js +1 -1
  221. package/dist/components/finished-terminal/index.js +1 -1
  222. package/dist/components/fiscal-code-input/index.js +1 -1
  223. package/dist/components/freemium-paywall/index.js +1 -1
  224. package/dist/components/gestational-age-calculator/index.js +1 -1
  225. package/dist/components/hcg-doubling/index.js +1 -1
  226. package/dist/components/header/index.js +1 -1
  227. package/dist/components/header-settings/index.js +1 -1
  228. package/dist/components/heatmap/index.js +1 -1
  229. package/dist/components/hover-card/index.js +1 -1
  230. package/dist/components/icon-button/index.js +1 -1
  231. package/dist/components/icon-button-group/index.js +1 -1
  232. package/dist/components/icon-picker/index.js +1 -1
  233. package/dist/components/image-cropper/index.js +1 -1
  234. package/dist/components/info-tip/index.js +1 -1
  235. package/dist/components/key-value-pair/index.js +1 -1
  236. package/dist/components/list/index.js +1 -1
  237. package/dist/components/locale-picker/index.js +1 -1
  238. package/dist/components/map-view/index.js +1 -1
  239. package/dist/components/message-card/index.js +1 -1
  240. package/dist/components/message-tray/index.js +1 -1
  241. package/dist/components/muscle-scheme/index.js +1 -1
  242. package/dist/components/notes-panel/index.js +1 -1
  243. package/dist/components/notification-card/index.js +1 -1
  244. package/dist/components/notification-tray/index.js +1 -1
  245. package/dist/components/operator-hero/index.js +1 -1
  246. package/dist/components/optical-prescription/index.js +1 -1
  247. package/dist/components/pagination/index.js +1 -1
  248. package/dist/components/panel-subview/index.js +1 -1
  249. package/dist/components/patient-details/index.js +1 -1
  250. package/dist/components/patient-search/index.js +1 -1
  251. package/dist/components/patient-summary-card/index.js +1 -1
  252. package/dist/components/patient-table/index.js +1 -1
  253. package/dist/components/payment-card/index.js +1 -1
  254. package/dist/components/periodontal-chart/index.js +1 -1
  255. package/dist/components/periodontal-chart-card/index.js +1 -1
  256. package/dist/components/periodontal-diagnosis/index.js +1 -1
  257. package/dist/components/periodontal-risk-chart/index.js +1 -1
  258. package/dist/components/popover/index.js +1 -1
  259. package/dist/components/practice-profile-hero/index.js +1 -1
  260. package/dist/components/practice-results/index.js +1 -1
  261. package/dist/components/pregnancy-dating/index.js +1 -1
  262. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  263. package/dist/components/privacy-lock/index.js +1 -1
  264. package/dist/components/product-hub-tray/index.js +1 -1
  265. package/dist/components/public-header/index.js +1 -1
  266. package/dist/components/radiograph-panel/index.js +1 -1
  267. package/dist/components/reviews-panel/index.js +1 -1
  268. package/dist/components/rich-text-editor/index.js +2 -2
  269. package/dist/components/scroll-area/index.js +1 -1
  270. package/dist/components/scroll-area/scroll-area.d.ts +6 -5
  271. package/dist/components/search-bar/index.js +1 -1
  272. package/dist/components/search-bar/search-bar.d.ts +1 -1
  273. package/dist/components/section-card/index.js +1 -1
  274. package/dist/components/select/index.js +1 -1
  275. package/dist/components/select/select.d.ts +1 -1
  276. package/dist/components/session-countdown/index.js +1 -1
  277. package/dist/components/sheet/index.js +1 -1
  278. package/dist/components/sidebar/index.d.ts +1 -1
  279. package/dist/components/sidebar/index.js +1 -1
  280. package/dist/components/sidebar/sidebar-move.d.ts +88 -0
  281. package/dist/components/sidebar/sidebar.d.ts +40 -1
  282. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  283. package/dist/components/skeleton-scheme/index.js +1 -1
  284. package/dist/components/slot-grid/index.js +1 -1
  285. package/dist/components/streaming-text/index.js +1 -1
  286. package/dist/components/tab-bar/index.js +1 -1
  287. package/dist/components/tabs/index.js +1 -1
  288. package/dist/components/task-card/index.js +1 -1
  289. package/dist/components/task-editor/index.js +1 -1
  290. package/dist/components/task-tray/index.js +1 -1
  291. package/dist/components/tasks-panel/index.js +1 -1
  292. package/dist/components/theme-toggle/index.js +1 -1
  293. package/dist/components/timeline/index.js +1 -1
  294. package/dist/components/toast/index.js +1 -1
  295. package/dist/components/token-insert-menu/index.js +1 -1
  296. package/dist/components/tool-rail/index.js +1 -1
  297. package/dist/components/tooth-scheme/index.js +1 -1
  298. package/dist/components/unit-converter/index.js +1 -1
  299. package/dist/components/voice-control-panel/index.js +1 -1
  300. package/dist/components/warning-stack/index.js +1 -1
  301. package/dist/components/widget-picker/index.js +1 -1
  302. package/dist/components/workflow/index.js +1 -1
  303. package/dist/components/workflow-status/index.js +1 -1
  304. package/dist/host-compat.css +2 -1
  305. package/dist/i18n/locales/ar.d.ts +15 -0
  306. package/dist/i18n/locales/ar.js +16 -1
  307. package/dist/i18n/locales/de.d.ts +15 -0
  308. package/dist/i18n/locales/de.js +16 -1
  309. package/dist/i18n/locales/el.d.ts +15 -0
  310. package/dist/i18n/locales/el.js +16 -1
  311. package/dist/i18n/locales/en.d.ts +15 -0
  312. package/dist/i18n/locales/en.js +16 -1
  313. package/dist/i18n/locales/es.d.ts +15 -0
  314. package/dist/i18n/locales/es.js +16 -1
  315. package/dist/i18n/locales/fr.d.ts +15 -0
  316. package/dist/i18n/locales/fr.js +16 -1
  317. package/dist/i18n/locales/hi.d.ts +15 -0
  318. package/dist/i18n/locales/hi.js +16 -1
  319. package/dist/i18n/locales/it.d.ts +15 -0
  320. package/dist/i18n/locales/it.js +16 -1
  321. package/dist/i18n/locales/ja.d.ts +15 -0
  322. package/dist/i18n/locales/ja.js +16 -1
  323. package/dist/i18n/locales/nl.d.ts +15 -0
  324. package/dist/i18n/locales/nl.js +16 -1
  325. package/dist/i18n/locales/pl.d.ts +15 -0
  326. package/dist/i18n/locales/pl.js +16 -1
  327. package/dist/i18n/locales/pt.d.ts +15 -0
  328. package/dist/i18n/locales/pt.js +16 -1
  329. package/dist/i18n/locales/ro.d.ts +15 -0
  330. package/dist/i18n/locales/ro.js +16 -1
  331. package/dist/i18n/locales/ru.d.ts +15 -0
  332. package/dist/i18n/locales/ru.js +16 -1
  333. package/dist/i18n/locales/sq.d.ts +15 -0
  334. package/dist/i18n/locales/sq.js +16 -1
  335. package/dist/i18n/locales/sv.d.ts +15 -0
  336. package/dist/i18n/locales/sv.js +16 -1
  337. package/dist/i18n/locales/tr.d.ts +15 -0
  338. package/dist/i18n/locales/tr.js +16 -1
  339. package/dist/i18n/locales/zh.d.ts +15 -0
  340. package/dist/i18n/locales/zh.js +16 -1
  341. package/dist/index.js +147 -147
  342. package/dist/locales/ar.json +16 -1
  343. package/dist/locales/de.json +16 -1
  344. package/dist/locales/el.json +16 -1
  345. package/dist/locales/en.json +16 -1
  346. package/dist/locales/es.json +16 -1
  347. package/dist/locales/fr.json +16 -1
  348. package/dist/locales/hi.json +16 -1
  349. package/dist/locales/it.json +16 -1
  350. package/dist/locales/ja.json +16 -1
  351. package/dist/locales/nl.json +16 -1
  352. package/dist/locales/pl.json +16 -1
  353. package/dist/locales/pt.json +16 -1
  354. package/dist/locales/ro.json +16 -1
  355. package/dist/locales/ru.json +16 -1
  356. package/dist/locales/sq.json +16 -1
  357. package/dist/locales/sv.json +16 -1
  358. package/dist/locales/tr.json +16 -1
  359. package/dist/locales/zh.json +16 -1
  360. package/dist/patterns/alia-assistant/index.js +1 -1
  361. package/dist/patterns/anamnesis/index.js +1 -1
  362. package/dist/patterns/calendar/index.js +1 -1
  363. package/dist/patterns/error-page/index.js +1 -1
  364. package/dist/patterns/forgot-password-form/index.js +1 -1
  365. package/dist/patterns/help-me-write-templates/index.js +1 -1
  366. package/dist/patterns/login-form/index.js +1 -1
  367. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  368. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +34 -9
  369. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  370. package/dist/patterns/registration-form/index.js +1 -1
  371. package/dist/patterns/signature-request/index.js +1 -1
  372. package/dist/patterns/signed-out-frame/index.js +1 -1
  373. package/dist/tokens.css +6 -3
  374. package/package.json +1 -1
  375. package/dist/_chunks/dashboard-grid-DfEY2qci.js +0 -844
  376. package/dist/_chunks/marketplace-app-shell-BZcA9Z06.js +0 -555
  377. package/dist/_chunks/sidebar-DLsG2AIk.js +0 -1349
  378. package/dist/_chunks/use-state-backed-input-C7ESmxKB.js +0 -59
@@ -1,1349 +0,0 @@
1
- import { jsx as s, jsxs as u, Fragment as X } from "react/jsx-runtime";
2
- import { forwardRef as b, useState as B, useEffect as L, useCallback as Q, useRef as G, useMemo as O, useId as ns, useContext as q, createContext as Z } from "react";
3
- import * as R from "@radix-ui/react-dialog";
4
- import * as M from "@radix-ui/react-collapsible";
5
- import * as E from "@radix-ui/react-accordion";
6
- import * as h from "@radix-ui/react-tooltip";
7
- import { a as os } from "./accordion-Ch3xp0mX.js";
8
- import { S as ts } from "./scroll-area-ZtFCv9K7.js";
9
- import { Slot as ls } from "@radix-ui/react-slot";
10
- import { c as T } from "./index-D2ZczOXr.js";
11
- import { useTranslation as A } from "react-i18next";
12
- import { u as cs } from "./registry-DvAUVLHh.js";
13
- import { u as us } from "./use-edge-resize-DHbyQwu8.js";
14
- import { c as ms } from "./compose-refs-C0k0tdqF.js";
15
- import { a as vs, b as ps, d as fs } from "./input-surface-iBmxVBfr.js";
16
- import { X as gs } from "./x-B5YnXwCz.js";
17
- import { c as ss } from "./createLucideIcon-DhHxpK9K.js";
18
- import { G as bs } from "./grip-vertical-onSb1JXO.js";
19
- import { C as H } from "./chevron-right-I9AeSxH2.js";
20
- import { S as hs } from "./star-Bf9L2Uot.js";
21
- import { T as xs } from "./trending-up-C_luYBzS.js";
22
- /**
23
- * @license lucide-react v1.22.0 - ISC
24
- *
25
- * This source code is licensed under the ISC license.
26
- * See the LICENSE file in the root directory of this source tree.
27
- */
28
- const ys = [
29
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
30
- ["path", { d: "M9 3v18", key: "fh3hqa" }],
31
- ["path", { d: "m16 15-3-3 3-3", key: "14y99z" }]
32
- ], ws = ss("panel-left-close", ys);
33
- /**
34
- * @license lucide-react v1.22.0 - ISC
35
- *
36
- * This source code is licensed under the ISC license.
37
- * See the LICENSE file in the root directory of this source tree.
38
- */
39
- const Ns = [
40
- ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
41
- ["path", { d: "M9 3v18", key: "fh3hqa" }],
42
- ["path", { d: "m14 9 3 3-3 3", key: "8010ee" }]
43
- ], zs = ss("panel-left-open", Ns), Ss = {
44
- id: "sidebar",
45
- capabilities: ["expand"],
46
- state: {
47
- isCollapsed: {
48
- type: "boolean",
49
- descriptionKey: "ui.agent.sidebar.state.isCollapsed",
50
- description: "True when the sidebar is in its collapsed (rail) state.",
51
- read: (e) => e.getIsCollapsed()
52
- }
53
- },
54
- actions: {
55
- toggle_collapsed: {
56
- // Pure ephemeral chrome state — toggling the rail loses no data.
57
- safety: "read",
58
- descriptionKey: "ui.agent.sidebar.actions.toggleCollapsed",
59
- description: "Toggle the sidebar between collapsed and expanded.",
60
- invoke: (e) => {
61
- e.toggleCollapsed();
62
- }
63
- }
64
- },
65
- domHooks: {
66
- root: { attr: "data-component", value: "sidebar" },
67
- instanceId: {
68
- attr: "data-component-id",
69
- sourceProp: "id",
70
- description: "Sourced from the id prop."
71
- },
72
- item: {
73
- attr: "data-nav-id",
74
- sourceProp: "navId",
75
- description: "Each Sidebar.Item emits its `navId` prop as data-nav-id. Agents activate a nav item via native click on the matching anchor."
76
- }
77
- }
78
- }, $ = Z({
79
- mode: "expanded",
80
- density: "default"
81
- }), w = () => q($), es = "ui.sidebar.state";
82
- function js(e) {
83
- if (typeof window > "u") return e;
84
- try {
85
- const a = window.localStorage.getItem(es);
86
- if (a === "expanded" || a === "icon" || a === "overlay") return a;
87
- } catch {
88
- }
89
- return e;
90
- }
91
- function Cs(e) {
92
- if (!(typeof window > "u"))
93
- try {
94
- window.localStorage.setItem(es, e);
95
- } catch {
96
- }
97
- }
98
- const Y = T(
99
- [
100
- "ds:flex ds:flex-col",
101
- // `--sidebar-surface`: the page background in light mode (white-on-white
102
- // chrome separated by --shadow-md). In dark mode the Header already
103
- // blends with --background, so the token steps the sidebar one layer
104
- // down (blue-600) to keep it visually distinct from the header band —
105
- // matches the PDF dark mockups' "flat Dark Blue surface with subtle
106
- // depth via layering" recipe. A token, so a light sidebar nested in a
107
- // dark page stays light.
108
- "ds:bg-[var(--sidebar-surface,var(--background))] ds:text-[var(--foreground)]",
109
- // The inline-end hairline is drawn in the accessible themes only
110
- // (--accessible-edge-width is 0 elsewhere).
111
- "ds:[:where(&)]:border-e-[length:var(--accessible-edge-width,0px)] ds:border-[var(--border)]",
112
- // Elevation is set per mode below. Forced colours strip shadows, so
113
- // there only the accessible themes' `border-e` separates the rail.
114
- //
115
- // `relative z-[1]` lifts the rail above any sibling that paints a
116
- // solid background (e.g. AppFrame's `<main>` surface), otherwise
117
- // the shadow that projects towards the inline-end gets covered.
118
- "ds:relative ds:z-[1]",
119
- "ds:h-full",
120
- "ds:transition-[inline-size] ds:duration-[var(--animation-duration)]",
121
- "ds:motion-reduce:transition-none",
122
- // While the resize handle is dragging, the width must track the
123
- // pointer 1:1 — the data attribute suppresses the width transition.
124
- "ds:data-[resizing]:transition-none"
125
- ].join(" "),
126
- {
127
- variants: {
128
- // Tokenised widths (Linear / Jira proportions) and one elevation per
129
- // mode: chrome `--shadow-md` docked, `--shadow-xl` for the drawer, none
130
- // in the accessible themes. `[:where(&)]` lets a className shadow win.
131
- mode: {
132
- expanded: "ds:w-[var(--sidebar-modern-expanded-size)] ds:[:where(&)]:[box-shadow:var(--accessible-off,var(--shadow-md))]",
133
- icon: "ds:w-[var(--sidebar-modern-icon-size)] ds:[:where(&)]:[box-shadow:var(--accessible-off,var(--shadow-md))]",
134
- overlay: "ds:w-[var(--sidebar-modern-expanded-size)] ds:[:where(&)]:[box-shadow:var(--accessible-off,var(--shadow-xl))]"
135
- },
136
- density: {
137
- default: "",
138
- compact: ""
139
- }
140
- },
141
- defaultVariants: { mode: "expanded", density: "default" }
142
- }
143
- ), ks = 192, Ts = 384, Is = 248, Rs = [
144
- "ds:absolute ds:[inset-block:0] ds:end-0 ds:z-[2]",
145
- "ds:w-[var(--resizable-handle-size)]",
146
- "ds:cursor-col-resize ds:select-none ds:touch-none",
147
- "ds:hover:bg-[var(--accent)] ds:focus-visible:bg-[var(--accent)]",
148
- "ds:data-[resizing]:bg-[var(--accent)]",
149
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
150
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
151
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
152
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
153
- "ds:before:absolute ds:before:content-['']",
154
- "ds:before:[inset-block:0]",
155
- "ds:before:[inline-size:var(--min-target-size)]",
156
- "ds:before:[inset-inline:calc(0px_-_(var(--min-target-size)_-_var(--resizable-handle-size))_/_2)]"
157
- ].join(" "), Bs = b(
158
- ({
159
- state: e,
160
- defaultState: a = "expanded",
161
- onStateChange: r,
162
- density: d = "default",
163
- open: n,
164
- onOpenChange: t,
165
- resizable: o = !1,
166
- "aria-label": l,
167
- className: c,
168
- children: m,
169
- id: f,
170
- ...g
171
- }, y) => {
172
- const { t: x } = A("ui"), i = e !== void 0, [N, z] = B(
173
- () => i ? e : js(a)
174
- ), v = i ? e : N;
175
- L(() => {
176
- i || Cs(N);
177
- }, [N, i]);
178
- const S = Q(
179
- (k) => {
180
- i || z(k), r == null || r(k);
181
- },
182
- [i, r]
183
- ), j = l ?? x("navigation.sidebar.label"), C = G(v);
184
- L(() => {
185
- C.current = v;
186
- }, [v]);
187
- const F = O(
188
- () => ({
189
- getIsCollapsed: () => C.current !== "expanded",
190
- toggleCollapsed: () => {
191
- const k = C.current === "expanded" ? "icon" : "expanded";
192
- S(k);
193
- }
194
- }),
195
- [S]
196
- );
197
- cs(Ss, F, f);
198
- const D = G(null), P = O(() => ms(y, D), [y]), { separatorProps: U, isResizing: _ } = us({
199
- edge: "inline-end",
200
- targetRef: D,
201
- cssProperty: "--sidebar-modern-expanded-size",
202
- minSize: ks,
203
- maxSize: Ts,
204
- defaultSize: Is,
205
- disabled: !o || v !== "expanded"
206
- }), V = o && v === "expanded";
207
- return v === "overlay" ? /* @__PURE__ */ s(
208
- $.Provider,
209
- {
210
- value: { mode: "overlay", density: d, transitionTo: S },
211
- children: /* @__PURE__ */ s(R.Root, { open: n, onOpenChange: t, children: /* @__PURE__ */ u(R.Portal, { children: [
212
- /* @__PURE__ */ s(
213
- R.Overlay,
214
- {
215
- className: [
216
- "ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]",
217
- "ds:bg-[var(--foreground)]/20 ds:backdrop-blur-sm",
218
- "ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in",
219
- "ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out",
220
- "ds:motion-reduce:animate-none"
221
- ].join(" ")
222
- }
223
- ),
224
- /* @__PURE__ */ u(
225
- R.Content,
226
- {
227
- "aria-label": j,
228
- className: [
229
- "ds:fixed ds:z-[var(--z-modal)]",
230
- // `start-0`/`top-0` — the `inset-inline-start-0` /
231
- // `inset-block-start-0` spellings are not Tailwind
232
- // utilities and compiled to nothing.
233
- "ds:start-0 ds:top-0",
234
- "ds:h-dvh",
235
- Y({ mode: "overlay", density: d }),
236
- "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
237
- "ds:data-[state=open]:slide-in-from-left ds:data-[state=closed]:slide-out-to-left",
238
- "ds:rtl:data-[state=open]:slide-in-from-right ds:rtl:data-[state=closed]:slide-out-to-right",
239
- "ds:motion-reduce:animate-none",
240
- "ds:focus:outline-none",
241
- c ?? ""
242
- ].filter(Boolean).join(" "),
243
- children: [
244
- /* @__PURE__ */ s(
245
- "nav",
246
- {
247
- ref: P,
248
- id: f,
249
- "aria-label": j,
250
- "data-component": "sidebar",
251
- "data-component-id": f,
252
- className: "ds:flex ds:flex-col ds:h-full",
253
- ...g,
254
- children: m
255
- }
256
- ),
257
- /* @__PURE__ */ s(R.Close, { asChild: !0, children: /* @__PURE__ */ s(
258
- "button",
259
- {
260
- type: "button",
261
- "aria-label": x("navigation.sidebar.close"),
262
- className: [
263
- "ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]",
264
- "ds:inline-flex ds:items-center ds:justify-center",
265
- "ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]",
266
- "ds:rounded-[var(--radius-sm)] ds:text-[var(--muted-foreground)]",
267
- "ds:hover:bg-[var(--muted)]/20 ds:focus-visible:outline-[length:var(--focus-ring-width)]",
268
- "ds:focus-visible:outline-solid ds:focus-visible:outline-[var(--ring)]",
269
- "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]"
270
- ].join(" "),
271
- children: /* @__PURE__ */ s(gs, { "aria-hidden": "true", className: "ds:size-4" })
272
- }
273
- ) })
274
- ]
275
- }
276
- )
277
- ] }) })
278
- }
279
- ) : /* @__PURE__ */ s(
280
- $.Provider,
281
- {
282
- value: { mode: v, density: d, transitionTo: S },
283
- children: /* @__PURE__ */ s(h.Provider, { delayDuration: 300, children: /* @__PURE__ */ u(
284
- "nav",
285
- {
286
- ref: P,
287
- id: f,
288
- "aria-label": j,
289
- "data-component": "sidebar",
290
- "data-component-id": f,
291
- "data-mode": v,
292
- "data-density": d,
293
- "data-resizing": _ ? "" : void 0,
294
- className: [
295
- Y({ mode: v, density: d }),
296
- d === "compact" ? "ds:density-compact" : "",
297
- c ?? ""
298
- ].filter(Boolean).join(" "),
299
- ...g,
300
- children: [
301
- m,
302
- V ? /* @__PURE__ */ s(
303
- "div",
304
- {
305
- ...U,
306
- "aria-label": x("navigation.sidebar.resize"),
307
- "data-resizing": _ ? "" : void 0,
308
- className: Rs
309
- }
310
- ) : null
311
- ]
312
- }
313
- ) })
314
- }
315
- );
316
- }
317
- );
318
- Bs.displayName = "Sidebar";
319
- const As = b(({ className: e, ...a }, r) => {
320
- const { mode: d } = w();
321
- return /* @__PURE__ */ s(
322
- "div",
323
- {
324
- ref: r,
325
- className: [
326
- "ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-xs)]",
327
- "ds:min-h-[var(--min-target-size)]",
328
- // Expanded uses the SAME inline padding as `SidebarBody`, so the
329
- // header's first control starts on the nav items' left edge and its
330
- // icon can land on the nav icon column (the trigger adds the item's
331
- // own `ps` on top — see `SidebarCollapseTrigger`). In the rail,
332
- // `justify-center` centres the control exactly as the nav icons
333
- // centre. Header content therefore tracks the nav column in both
334
- // modes instead of sitting on its own axis.
335
- d === "icon" ? "ds:justify-center ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]" : "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]",
336
- "ds:py-[var(--spacing-sm)]",
337
- // Hairline border + downward chrome shadow cast the header as a
338
- // sticky top band above the scrolling body.
339
- "ds:border-block-end ds:border-[var(--border)]",
340
- "ds:shadow-[var(--shadow-chrome-down)]",
341
- e ?? ""
342
- ].filter(Boolean).join(" "),
343
- ...a
344
- }
345
- );
346
- });
347
- As.displayName = "SidebarHeader";
348
- const Ds = b(
349
- ({ className: e, children: a, ...r }, d) => (
350
- // Scroll the nav sections through the kit `ScrollArea` (8px tokenised
351
- // scrollbar) instead of native `overflow-auto` (the OS scrollbar), so the
352
- // sidebar matches the Control Room rail and the kit's trays. `flex-1 min-h-0`
353
- // fills the column and bounds the height; the layout `className` lands on the
354
- // body box (the ScrollArea root). Padding + `ref` + div props go on the inner
355
- // content div so the scrollbar sits flush at the inline-end edge.
356
- /* @__PURE__ */ s(
357
- ts,
358
- {
359
- orientation: "vertical",
360
- className: ["ds:flex-1 ds:min-h-0", e ?? ""].filter(Boolean).join(" "),
361
- children: /* @__PURE__ */ s(
362
- "div",
363
- {
364
- ref: d,
365
- className: "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:py-[var(--spacing-sm)]",
366
- ...r,
367
- children: a
368
- }
369
- )
370
- }
371
- )
372
- )
373
- );
374
- Ds.displayName = "SidebarBody";
375
- const Ps = b(({ className: e, ...a }, r) => {
376
- const { mode: d } = w();
377
- return /* @__PURE__ */ s(
378
- "div",
379
- {
380
- ref: r,
381
- className: [
382
- "ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-xs)]",
383
- // Icon-rail is 64px — two 44×44 controls can't sit side-by-side,
384
- // so switch to a vertical stack and let each row self-centre.
385
- d === "icon" ? "ds:flex-col ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]" : "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
386
- "ds:min-h-[var(--min-target-size)]",
387
- "ds:py-[var(--spacing-sm)]",
388
- // Hairline border + upward chrome shadow cast the footer as a
389
- // sticky bottom band below the scrolling body.
390
- "ds:border-block-start ds:border-[var(--border)]",
391
- "ds:shadow-[var(--shadow-chrome-up)]",
392
- e ?? ""
393
- ].filter(Boolean).join(" "),
394
- ...a
395
- }
396
- );
397
- });
398
- Ps.displayName = "SidebarFooter";
399
- const _s = [
400
- "ds:group/section-label ds:flex ds:w-full ds:items-center",
401
- "type-eyebrow",
402
- "ds:text-[var(--muted-foreground)]",
403
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
404
- "ds:py-[var(--spacing-xs)]",
405
- "ds:hover:text-[var(--foreground)]",
406
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
407
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
408
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
409
- ].join(" "), J = [
410
- "ds:inline-flex ds:shrink-0 ds:items-center ds:justify-center",
411
- "ds:size-4",
412
- "ds:text-[var(--accent)]",
413
- "ds:me-[var(--spacing-xs)]"
414
- ].join(" "), as = b(
415
- ({
416
- label: e,
417
- icon: a,
418
- collapsible: r = !0,
419
- defaultOpen: d = !0,
420
- open: n,
421
- onOpenChange: t,
422
- className: o,
423
- children: l,
424
- ...c
425
- }, m) => {
426
- const { mode: f } = w(), g = f === "icon", y = r && !g && !!e, x = [
427
- "ds:flex ds:flex-col",
428
- "ds:gap-[var(--spacing-xs)]",
429
- "ds:mt-[var(--spacing-sm)]",
430
- o ?? ""
431
- ].filter(Boolean).join(" ");
432
- if (!y)
433
- return /* @__PURE__ */ u("div", { ref: m, className: x, ...c, children: [
434
- !!e || !!a ? /* @__PURE__ */ u(
435
- "span",
436
- {
437
- className: [
438
- "ds:flex ds:items-center",
439
- "type-eyebrow",
440
- "ds:text-[var(--muted-foreground)]",
441
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
442
- "ds:py-[var(--spacing-xs)]",
443
- g && !a ? "ds:sr-only" : ""
444
- ].filter(Boolean).join(" "),
445
- children: [
446
- a ? /* @__PURE__ */ s("span", { "aria-hidden": "true", className: J, children: a }) : null,
447
- e ? /* @__PURE__ */ s("span", { className: g ? "ds:sr-only" : "", children: e }) : null
448
- ]
449
- }
450
- ) : null,
451
- l
452
- ] });
453
- const i = "section";
454
- return /* @__PURE__ */ s(
455
- E.Root,
456
- {
457
- type: "single",
458
- collapsible: !0,
459
- defaultValue: n === void 0 && d ? i : void 0,
460
- value: n === void 0 ? void 0 : n ? i : "",
461
- onValueChange: t ? (N) => t(N === i) : void 0,
462
- asChild: !0,
463
- children: /* @__PURE__ */ s("div", { ref: m, className: x, ...c, children: /* @__PURE__ */ u(E.Item, { value: i, children: [
464
- /* @__PURE__ */ s(E.Header, { className: "ds:flex", children: /* @__PURE__ */ u(E.Trigger, { className: _s, children: [
465
- a ? /* @__PURE__ */ s("span", { "aria-hidden": "true", className: J, children: a }) : null,
466
- /* @__PURE__ */ s("span", { className: "ds:flex-1 ds:text-start", children: e }),
467
- /* @__PURE__ */ s(
468
- H,
469
- {
470
- "aria-hidden": "true",
471
- 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"
472
- }
473
- )
474
- ] }) }),
475
- /* @__PURE__ */ s(
476
- os,
477
- {
478
- "aria-label": e,
479
- className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:[&>div]:contents",
480
- children: l
481
- }
482
- )
483
- ] }) })
484
- }
485
- );
486
- }
487
- );
488
- as.displayName = "SidebarSection";
489
- const Es = [
490
- "ds:group ds:flex ds:w-full ds:items-center ds:gap-[var(--spacing-sm)]",
491
- "ds:min-h-[var(--min-target-size)]",
492
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
493
- "ds:rounded-[var(--radius-sm)]",
494
- "ds:text-[var(--foreground)] ds:text-[var(--font-size-sm)]",
495
- "ds:font-[var(--font-weight-medium)]",
496
- "ds:hover:bg-[var(--muted)]/20",
497
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
498
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
499
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
500
- ].join(" "), Hs = b(
501
- ({
502
- label: e,
503
- icon: a,
504
- children: r,
505
- className: d,
506
- defaultOpen: n,
507
- open: t,
508
- onOpenChange: o,
509
- ...l
510
- }, c) => {
511
- const { mode: m } = w();
512
- return /* @__PURE__ */ u(
513
- M.Root,
514
- {
515
- ref: c,
516
- defaultOpen: n,
517
- open: t,
518
- onOpenChange: o,
519
- className: d,
520
- ...l,
521
- children: [
522
- /* @__PURE__ */ u(M.Trigger, { className: Es, children: [
523
- a ? /* @__PURE__ */ s(
524
- "span",
525
- {
526
- "aria-hidden": "true",
527
- className: "ds:inline-flex ds:items-center ds:text-[var(--accent)]",
528
- children: a
529
- }
530
- ) : null,
531
- /* @__PURE__ */ s(
532
- "span",
533
- {
534
- className: [
535
- "ds:flex-1 ds:text-start",
536
- m === "icon" ? "ds:sr-only" : ""
537
- ].join(" "),
538
- children: e
539
- }
540
- ),
541
- m !== "icon" ? /* @__PURE__ */ s(
542
- H,
543
- {
544
- "aria-hidden": "true",
545
- className: "ds:size-4 ds:transition-transform ds:group-data-[state=open]:rotate-90 ds:rtl:-scale-x-100 ds:motion-reduce:transition-none"
546
- }
547
- ) : null
548
- ] }),
549
- /* @__PURE__ */ s(
550
- M.Content,
551
- {
552
- className: [
553
- "ds:overflow-hidden",
554
- "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
555
- "ds:motion-reduce:animate-none",
556
- "ds:ps-[var(--spacing-md)]"
557
- ].join(" "),
558
- children: r
559
- }
560
- )
561
- ]
562
- }
563
- );
564
- }
565
- );
566
- Hs.displayName = "SidebarGroup";
567
- const Fs = T(
568
- [
569
- // Every row is a pin-hover parent so inline pin / reorder affordances can
570
- // fade in on hover of the whole row — keep `group/item` on this selector.
571
- // `!text-[var(--foreground)]` forces the label colour over the browser's
572
- // default `<a>` link colour (blue-violet) and any inherited hue. The
573
- // active variant also uses `!text-*` so it still wins when needed.
574
- "ds:group/item ds:relative ds:flex ds:items-center",
575
- "ds:gap-[var(--spacing-sm)]",
576
- "ds:no-underline ds:!text-[var(--foreground)] ds:text-[length:var(--font-size-sm)]",
577
- "ds:hover:bg-[var(--muted)]/12",
578
- "ds:transition-colors ds:duration-[var(--animation-duration)]",
579
- "ds:motion-reduce:transition-none",
580
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
581
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
582
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
583
- ].join(" "),
584
- {
585
- variants: {
586
- mode: {
587
- expanded: [
588
- "ds:min-h-[var(--min-target-size)] ds:rounded-[var(--radius-sm)]",
589
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]"
590
- ].join(" "),
591
- // Icon-only: each item is a 44×44 pill tile centered in the rail.
592
- // The active / hover background fills just the tile rather than the
593
- // whole row — matching Linear / Asana chrome.
594
- icon: [
595
- "ds:justify-center ds:ms-auto ds:me-auto",
596
- "ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]",
597
- "ds:ps-0 ds:pe-0 ds:rounded-[var(--radius-md)]"
598
- ].join(" "),
599
- overlay: [
600
- "ds:min-h-[var(--min-target-size)] ds:rounded-[var(--radius-sm)]",
601
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]"
602
- ].join(" ")
603
- },
604
- density: {
605
- default: "",
606
- compact: "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]"
607
- },
608
- isActive: {
609
- // Filled pill — multi-carrier (bg + text + weight + aria-current at
610
- // render time) so colour is never the sole identifier. `!text-*`
611
- // forces the foreground over any inherited / base rule so the icon
612
- // and label read clearly against the primary fill in every theme.
613
- true: [
614
- "ds:bg-[var(--primary)] ds:!text-[var(--primary-foreground)]",
615
- "ds:font-[var(--font-weight-semibold)]",
616
- // Keep hover from dimming the active fill.
617
- "ds:hover:bg-[var(--primary)]"
618
- ].join(" "),
619
- false: ""
620
- }
621
- },
622
- defaultVariants: {
623
- mode: "expanded",
624
- density: "default",
625
- isActive: !1
626
- }
627
- }
628
- ), rs = Z(null), is = b(
629
- ({
630
- asChild: e = !1,
631
- isActive: a = !1,
632
- navId: r,
633
- isPinned: d = !1,
634
- onPinChange: n,
635
- pinLabel: t,
636
- className: o,
637
- children: l,
638
- "aria-label": c,
639
- ...m
640
- }, f) => {
641
- const { mode: g, density: y } = w(), x = e ? ls : "a", i = n !== void 0 && g !== "icon", [N, z] = B(null), v = g === "icon" && c != null && N ? `${c}, ${N}` : c, S = /* @__PURE__ */ s(
642
- x,
643
- {
644
- ref: f,
645
- "aria-current": a ? "page" : void 0,
646
- "aria-label": v,
647
- "data-nav-id": r,
648
- className: Fs({
649
- mode: g,
650
- density: y,
651
- isActive: a,
652
- className: i ? "ds:flex-1 ds:min-w-0" : o
653
- }),
654
- ...m,
655
- children: l
656
- }
657
- ), j = i ? /* @__PURE__ */ u(
658
- "div",
659
- {
660
- className: [
661
- "ds:group/item ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]",
662
- o ?? ""
663
- ].filter(Boolean).join(" "),
664
- children: [
665
- S,
666
- /* @__PURE__ */ s(
667
- W,
668
- {
669
- isPinned: d,
670
- label: t ?? c ?? "",
671
- onPinChange: n
672
- }
673
- )
674
- ]
675
- }
676
- ) : S, C = g === "icon" && c ? /* @__PURE__ */ u(h.Root, { children: [
677
- /* @__PURE__ */ s(h.Trigger, { asChild: !0, children: j }),
678
- /* @__PURE__ */ s(h.Portal, { children: /* @__PURE__ */ u(
679
- h.Content,
680
- {
681
- side: "right",
682
- sideOffset: 6,
683
- className: [
684
- "ds:z-[var(--z-tooltip)] ds:max-w-[16rem]",
685
- "ds:rounded-[var(--radius-sm)]",
686
- "ds:bg-[var(--foreground)] ds:text-[var(--background)]",
687
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)] ds:text-[length:var(--font-size-xs)]",
688
- "ds:animate-in ds:fade-in ds:zoom-in-95 ds:motion-reduce:animate-none"
689
- ].join(" "),
690
- children: [
691
- c,
692
- /* @__PURE__ */ s(h.Arrow, { className: "ds:fill-[var(--foreground)]" })
693
- ]
694
- }
695
- ) })
696
- ] }) : j;
697
- return /* @__PURE__ */ s(rs.Provider, { value: z, children: C });
698
- }
699
- );
700
- is.displayName = "SidebarItem";
701
- const Us = b(({ className: e, children: a, ...r }, d) => /* @__PURE__ */ s(
702
- "span",
703
- {
704
- ref: d,
705
- "aria-hidden": "true",
706
- className: [
707
- "ds:inline-flex ds:shrink-0 ds:items-center ds:justify-center",
708
- "ds:size-5",
709
- // Icons carry the accent tint by default so the rail reads less
710
- // monotone against the violet active pill. The active row sets
711
- // `aria-current="page"` on the anchor (which is `group/item`), so
712
- // the icon flips to the primary-foreground (white) on the filled
713
- // pill — keeping it readable on the primary background.
714
- "ds:text-[var(--accent)]",
715
- "ds:group-aria-[current=page]/item:text-[var(--primary-foreground)]",
716
- e ?? ""
717
- ].filter(Boolean).join(" "),
718
- ...r,
719
- children: a
720
- }
721
- ));
722
- Us.displayName = "SidebarItemIcon";
723
- const Vs = b(({ className: e, children: a, ...r }, d) => {
724
- const { mode: n } = w();
725
- return /* @__PURE__ */ s(
726
- "span",
727
- {
728
- ref: d,
729
- className: [
730
- "ds:flex-1",
731
- "ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap ds:break-normal",
732
- "ds:text-start",
733
- n === "icon" ? "ds:sr-only" : "",
734
- e ?? ""
735
- ].filter(Boolean).join(" "),
736
- ...r,
737
- children: a
738
- }
739
- );
740
- });
741
- Vs.displayName = "SidebarItemLabel";
742
- const Ks = b(({ className: e, children: a, ...r }, d) => {
743
- const { mode: n } = w(), t = n === "icon", o = q(rs);
744
- return L(() => {
745
- if (!o || !t) return;
746
- const l = a == null || a === !1 ? null : String(a).trim() || null;
747
- return o(l), () => o(null);
748
- }, [o, a, t]), /* @__PURE__ */ s(
749
- "span",
750
- {
751
- ref: d,
752
- "aria-hidden": t ? "true" : void 0,
753
- className: [
754
- "ds:inline-flex ds:items-center ds:justify-center",
755
- "ds:font-[var(--font-weight-semibold)]",
756
- t ? [
757
- "ds:absolute ds:top-[2px] ds:end-[2px]",
758
- "ds:min-w-0 ds:size-[10px] ds:ps-0 ds:pe-0",
759
- "ds:rounded-[var(--radius-full)]",
760
- "ds:bg-[var(--primary)] ds:text-transparent",
761
- "ds:ring-2 ds:ring-[var(--background)]",
762
- "ds:pointer-events-none"
763
- ].join(" ") : [
764
- "ds:min-w-[var(--spacing-lg)] ds:h-[var(--spacing-lg)]",
765
- "ds:rounded-[var(--radius-full)]",
766
- "ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)]",
767
- "ds:text-[length:var(--font-size-xs)]",
768
- "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]"
769
- ].join(" "),
770
- e ?? ""
771
- ].filter(Boolean).join(" "),
772
- ...r,
773
- children: a
774
- }
775
- );
776
- });
777
- Ks.displayName = "SidebarItemBadge";
778
- const Ms = T(
779
- [
780
- "ds:flex ds:items-center",
781
- "ds:text-[var(--foreground)]",
782
- "ds:transition-colors ds:motion-reduce:transition-none",
783
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
784
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
785
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
786
- "ds:no-underline"
787
- ].join(" "),
788
- {
789
- variants: {
790
- variant: {
791
- // Borderless (Linear / Notion style): transparent at rest with a
792
- // muted hover fill, a 44px tap target, roomier radius, and the dense
793
- // `--font-size-sm` label. The historical default.
794
- ghost: [
795
- "ds:min-h-[var(--min-target-size)]",
796
- "ds:gap-[var(--spacing-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
797
- "ds:text-[length:var(--font-size-sm)]",
798
- "ds:rounded-[var(--radius-md)]",
799
- "ds:hover:bg-[var(--muted)]/20"
800
- ].join(" "),
801
- // Input-field look: consumes the SAME shared input-surface tokens as
802
- // <TextInput size="sm"> — height, text size and horizontal inset — so
803
- // a practice / workspace selector stacked directly above the sidebar
804
- // <SearchBar size="sm"> renders as a genuinely matched pair (identical
805
- // 32px box and label size) and stays in lockstep if that surface
806
- // evolves. `gap-3` + the shared `ps-3` line the pin glyph and label up
807
- // with the search input's icon and text below. The 3:1
808
- // `--control-border` edge and the `--input`/`--shadow-input`/
809
- // `--radius-sm` chrome mirror the input's resting surface; opaque
810
- // hover keeps the fill solid over a brand-tinted parent. 32px clears
811
- // WCAG 2.5.8 (24px AA).
812
- field: [
813
- vs.sm,
814
- ps.sm,
815
- fs.sm,
816
- "ds:gap-3",
817
- "ds:rounded-[var(--radius-sm)]",
818
- "ds:border ds:border-[color:var(--control-border)] ds:bg-[var(--input)]",
819
- "ds:shadow-[var(--shadow-input)]",
820
- "ds:hover:bg-[color-mix(in_srgb,var(--muted)_20%,var(--input))]"
821
- ].join(" ")
822
- }
823
- },
824
- defaultVariants: { variant: "ghost" }
825
- }
826
- ), Ls = b(
827
- ({ logo: e, name: a, showChevron: r = !0, variant: d = "ghost", className: n, ...t }, o) => {
828
- const { mode: l } = w(), c = l !== "icon";
829
- return /* @__PURE__ */ u(
830
- "button",
831
- {
832
- ref: o,
833
- type: "button",
834
- "aria-label": a,
835
- className: [Ms({ variant: d }), n].filter(Boolean).join(" "),
836
- ...t,
837
- children: [
838
- /* @__PURE__ */ s(
839
- "span",
840
- {
841
- "aria-hidden": "true",
842
- className: "ds:inline-flex ds:items-center ds:shrink-0",
843
- children: e
844
- }
845
- ),
846
- c ? /* @__PURE__ */ u(X, { children: [
847
- /* @__PURE__ */ s("span", { className: "ds:truncate ds:flex-1 ds:text-start ds:max-w-[var(--header-workspace-max-inline-size)]", children: a }),
848
- r ? /* @__PURE__ */ s(
849
- H,
850
- {
851
- "aria-hidden": "true",
852
- className: "ds:size-4 ds:shrink-0 ds:rotate-90"
853
- }
854
- ) : null
855
- ] }) : null
856
- ]
857
- }
858
- );
859
- }
860
- );
861
- Ls.displayName = "SidebarWorkspaceSwitcher";
862
- const Gs = T(
863
- [
864
- "ds:flex ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]",
865
- "ds:min-h-[var(--min-target-size)]",
866
- "ds:rounded-[var(--radius-md)]",
867
- "ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)]",
868
- "ds:font-[var(--font-weight-semibold)] ds:text-[length:var(--font-size-sm)]",
869
- "ds:hover:bg-[var(--primary-hover)]",
870
- "ds:transition-colors ds:motion-reduce:transition-none",
871
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
872
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
873
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
874
- ].join(" "),
875
- {
876
- variants: {
877
- mode: {
878
- expanded: "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]",
879
- icon: "ds:ps-0 ds:pe-0 ds:w-[var(--sidebar-modern-tile)] ds:h-[var(--sidebar-modern-tile)] ds:ms-auto ds:me-auto",
880
- overlay: "ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]"
881
- }
882
- },
883
- defaultVariants: { mode: "expanded" }
884
- }
885
- ), Os = b(({ icon: e, label: a, shortcut: r, className: d, ...n }, t) => {
886
- const { mode: o } = w(), l = o !== "icon";
887
- return /* @__PURE__ */ u(
888
- "button",
889
- {
890
- ref: t,
891
- type: "button",
892
- "aria-label": a,
893
- "aria-keyshortcuts": r,
894
- className: [Gs({ mode: o }), d].filter(Boolean).join(" "),
895
- ...n,
896
- children: [
897
- /* @__PURE__ */ s(
898
- "span",
899
- {
900
- "aria-hidden": "true",
901
- className: "ds:inline-flex ds:size-4 ds:items-center ds:justify-center",
902
- children: e
903
- }
904
- ),
905
- l ? /* @__PURE__ */ u(X, { children: [
906
- /* @__PURE__ */ s("span", { className: "ds:truncate", children: a }),
907
- r ? /* @__PURE__ */ s("kbd", { className: "ds:ms-auto ds:text-[length:var(--font-size-xs)] ds:font-[family-name:var(--font-mono)] ds:opacity-80", children: r }) : null
908
- ] }) : null
909
- ]
910
- }
911
- );
912
- });
913
- Os.displayName = "SidebarPrimaryAction";
914
- const $s = [
915
- "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
916
- "ds:size-6 ds:rounded-[var(--radius-sm)]",
917
- // Lift above the Sidebar's opt-in resize handle (z-[2]). When `resizable`,
918
- // that handle's ::before hit-area reaches ~--min-target-size/2 inward from
919
- // the inline-end edge — exactly where these end-aligned pin stars sit — so
920
- // without a higher stacking order the separator swallows the click and
921
- // pinning silently fails. Pointer-events stay off until the row is hovered
922
- // or the star is focused, so the handle is still fully grabbable at rest
923
- // (including touch, where the star never reveals). On a NON-resizable
924
- // sidebar there's no handle to clear, but the same gating is inert — the
925
- // star reveals and accepts clicks on hover/focus exactly as before.
926
- "ds:relative ds:z-[3]",
927
- "ds:pointer-events-none ds:group-hover/item:pointer-events-auto ds:focus-visible:pointer-events-auto",
928
- // Pin stars carry the accent tint to match every other icon in the rail.
929
- // Stays quiet via opacity — reveals only on row hover / focus.
930
- "ds:text-[var(--accent)]",
931
- "ds:opacity-0 ds:group-hover/item:opacity-100 ds:focus-visible:opacity-100",
932
- "ds:hover:bg-[var(--muted)]/20",
933
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
934
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
935
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
936
- "ds:transition-[color,opacity,background-color] ds:duration-[var(--animation-duration)]",
937
- "ds:motion-reduce:transition-none"
938
- ].join(" "), W = b(
939
- ({ isPinned: e, onPinChange: a, label: r, className: d, onClick: n, ...t }, o) => {
940
- const { t: l } = A("ui"), { mode: c } = w();
941
- if (c === "icon") return null;
942
- const m = e ? l("navigation.sidebar.unpinItem", "Unpin {{label}}", { label: r }) : l("navigation.sidebar.pinItem", "Pin {{label}}", { label: r });
943
- return /* @__PURE__ */ s(
944
- "button",
945
- {
946
- ref: o,
947
- type: "button",
948
- "aria-label": m,
949
- "aria-pressed": e,
950
- className: [$s, d].filter(Boolean).join(" "),
951
- onClick: (f) => {
952
- f.preventDefault(), f.stopPropagation(), a == null || a(!e), n == null || n(f);
953
- },
954
- ...t,
955
- children: /* @__PURE__ */ s(
956
- hs,
957
- {
958
- "aria-hidden": "true",
959
- className: "ds:size-4",
960
- fill: e ? "currentColor" : "none"
961
- }
962
- )
963
- }
964
- );
965
- }
966
- );
967
- W.displayName = "SidebarPinButton";
968
- const ds = Z(null), Xs = () => q(ds), qs = b(
969
- ({ heading: e, emptyMessage: a, onReorder: r, className: d, children: n, ...t }, o) => {
970
- const { t: l } = A("ui"), c = e ?? l("navigation.sidebar.favorites", "Favourites"), m = Array.isArray(n) ? n.filter(Boolean) : n ? [n] : [], f = m.length, g = f > 0, [y, x] = B(null), [i, N] = B(""), z = G(!1), v = Q((j) => {
971
- z.current = !z.current, N(z.current ? j : `${j}​`);
972
- }, []), S = O(
973
- () => ({ onReorder: r, count: f, dragSource: y, setDragSource: x, announce: v }),
974
- [r, f, y, v]
975
- );
976
- return !g && !a ? null : /* @__PURE__ */ s(ds.Provider, { value: S, children: /* @__PURE__ */ u(
977
- as,
978
- {
979
- ref: o,
980
- label: c,
981
- className: d,
982
- ...t,
983
- children: [
984
- g ? m : /* @__PURE__ */ s("p", { className: "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] type-meta ds:text-[color:var(--muted-foreground)]", children: a }),
985
- /* @__PURE__ */ s("span", { role: "status", "aria-live": "polite", className: "ds:sr-only", children: i })
986
- ]
987
- }
988
- ) });
989
- }
990
- );
991
- qs.displayName = "SidebarFavorites";
992
- const Zs = T(
993
- [
994
- "ds:group/item ds:relative ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]",
995
- "ds:rounded-[var(--radius-sm)]",
996
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
997
- ].join(" "),
998
- {
999
- variants: {
1000
- dragging: {
1001
- true: "ds:opacity-60",
1002
- false: ""
1003
- },
1004
- dropTarget: {
1005
- true: "ds:outline-[length:var(--focus-ring-width)] ds:outline-dashed ds:outline-[var(--primary)] ds:outline-offset-[-2px]",
1006
- false: ""
1007
- }
1008
- },
1009
- defaultVariants: { dragging: !1, dropTarget: !1 }
1010
- }
1011
- ), Ws = [
1012
- "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
1013
- "ds:size-6 ds:rounded-[var(--radius-sm)]",
1014
- "ds:cursor-grab ds:active:cursor-grabbing",
1015
- "ds:text-[var(--muted-foreground)]",
1016
- // Quiet chrome — only reveal the grip when the row is hovered or the
1017
- // handle itself is focused (keyboard / AT). Matches the pin-star's
1018
- // reveal-on-hover behaviour so the two siblings appear together.
1019
- "ds:opacity-0 ds:group-hover/item:opacity-100 ds:focus-visible:opacity-100",
1020
- "ds:hover:bg-[var(--muted)]/20 ds:hover:text-[var(--foreground)]",
1021
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1022
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1023
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
1024
- "ds:transition-[color,opacity,background-color] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
1025
- ].join(" "), Ys = b(
1026
- ({
1027
- index: e,
1028
- isActive: a = !1,
1029
- asChild: r = !1,
1030
- reorderLabel: d,
1031
- isPinned: n = !1,
1032
- onPinChange: t,
1033
- pinLabel: o,
1034
- "aria-label": l,
1035
- className: c,
1036
- children: m,
1037
- ...f
1038
- }, g) => {
1039
- const { t: y } = A("ui"), { mode: x } = w(), i = Xs(), [N, z] = B(!1), v = !!(i != null && i.onReorder) && x !== "icon", S = d ?? l ?? "", j = ns(), C = (p, I) => {
1040
- if (!(i != null && i.onReorder)) return;
1041
- const K = Math.max(0, Math.min(i.count - 1, I));
1042
- K !== p && (i.onReorder(p, K), i.announce(
1043
- y(
1044
- "navigation.sidebar.reorderAnnounce",
1045
- "{{label}} moved to position {{to}} of {{total}}",
1046
- { label: S, to: K + 1, total: i.count }
1047
- )
1048
- ));
1049
- }, F = (p) => {
1050
- v && (p.altKey && p.key === "ArrowUp" ? (p.preventDefault(), C(e, e - 1)) : p.altKey && p.key === "ArrowDown" ? (p.preventDefault(), C(e, e + 1)) : p.key === "Home" && p.altKey ? (p.preventDefault(), C(e, 0)) : p.key === "End" && p.altKey && (p.preventDefault(), C(e, i.count - 1)));
1051
- }, D = (p) => {
1052
- v && (i == null || i.setDragSource(e), p.dataTransfer && (p.dataTransfer.effectAllowed = "move", p.dataTransfer.setData("ds:text/plain", String(e))));
1053
- }, P = () => {
1054
- i == null || i.setDragSource(null), z(!1);
1055
- }, U = (p) => {
1056
- !v || (i == null ? void 0 : i.dragSource) === null || (p.preventDefault(), p.dataTransfer && (p.dataTransfer.dropEffect = "move"), z(!0));
1057
- }, _ = () => z(!1), V = (p) => {
1058
- if (!v) return;
1059
- p.preventDefault();
1060
- const I = i == null ? void 0 : i.dragSource;
1061
- z(!1), !(I == null || I === e) && C(I, e);
1062
- }, k = (i == null ? void 0 : i.dragSource) === e;
1063
- return /* @__PURE__ */ u(
1064
- "div",
1065
- {
1066
- className: Zs({
1067
- dragging: k,
1068
- dropTarget: N && !k
1069
- }),
1070
- draggable: v || void 0,
1071
- onDragStart: v ? D : void 0,
1072
- onDragEnd: v ? P : void 0,
1073
- onDragOver: U,
1074
- onDragLeave: _,
1075
- onDrop: V,
1076
- children: [
1077
- /* @__PURE__ */ s(
1078
- is,
1079
- {
1080
- ref: g,
1081
- isActive: a,
1082
- asChild: r,
1083
- "aria-label": l,
1084
- "aria-describedby": v ? j : void 0,
1085
- draggable: v ? !1 : void 0,
1086
- className: [v ? "ds:flex-1 ds:min-w-0" : "", c ?? ""].filter(Boolean).join(" "),
1087
- ...f,
1088
- children: m
1089
- }
1090
- ),
1091
- v ? /* @__PURE__ */ s(
1092
- "button",
1093
- {
1094
- type: "button",
1095
- id: j,
1096
- "aria-label": y(
1097
- "navigation.sidebar.reorderHandle",
1098
- "Reorder {{label}}. Press Alt + Up or Alt + Down to move.",
1099
- { label: S }
1100
- ),
1101
- className: Ws,
1102
- onKeyDown: F,
1103
- children: /* @__PURE__ */ s(bs, { "aria-hidden": "true", className: "ds:size-4" })
1104
- }
1105
- ) : null,
1106
- t && x !== "icon" ? /* @__PURE__ */ s(
1107
- W,
1108
- {
1109
- isPinned: n,
1110
- label: o ?? l ?? "",
1111
- onPinChange: t
1112
- }
1113
- ) : null
1114
- ]
1115
- }
1116
- );
1117
- }
1118
- );
1119
- Ys.displayName = "SidebarFavoriteItem";
1120
- const Js = T(
1121
- [
1122
- "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
1123
- "ds:min-h-[var(--min-target-size)]",
1124
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
1125
- "ds:rounded-[var(--radius-md)]",
1126
- "ds:text-[var(--foreground)] ds:text-[length:var(--font-size-sm)]",
1127
- "ds:hover:bg-[var(--muted)]/20",
1128
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1129
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1130
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
1131
- "ds:no-underline"
1132
- ].join(" ")
1133
- ), Qs = b(({ avatar: e, name: a, subtitle: r, subtitleLabel: d, className: n, ...t }, o) => {
1134
- const { mode: l } = w(), c = l !== "icon", m = typeof r == "string" ? r : d;
1135
- return /* @__PURE__ */ u(
1136
- "button",
1137
- {
1138
- ref: o,
1139
- type: "button",
1140
- "aria-label": m ? `${a}, ${m}` : a,
1141
- className: [Js(), n].filter(Boolean).join(" "),
1142
- ...t,
1143
- children: [
1144
- /* @__PURE__ */ s(
1145
- "span",
1146
- {
1147
- "aria-hidden": "true",
1148
- className: "ds:inline-flex ds:items-center ds:shrink-0",
1149
- children: e
1150
- }
1151
- ),
1152
- c ? /* @__PURE__ */ u("span", { className: "ds:flex-1 ds:min-w-0 ds:text-start", children: [
1153
- /* @__PURE__ */ s("span", { className: "ds:block ds:truncate type-label", children: a }),
1154
- r ? typeof r == "string" ? /* @__PURE__ */ s("span", { className: "ds:block ds:truncate type-meta ds:text-[color:var(--muted-foreground)]", children: r }) : /* @__PURE__ */ s("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: r }) : null
1155
- ] }) : null
1156
- ]
1157
- }
1158
- );
1159
- });
1160
- Qs.displayName = "SidebarProfilePill";
1161
- const se = [
1162
- "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
1163
- "ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]",
1164
- "ds:rounded-[var(--radius-sm)]",
1165
- "ds:text-[var(--muted-foreground)]",
1166
- "ds:hover:bg-[var(--muted)]/20 ds:hover:text-[var(--foreground)]",
1167
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1168
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1169
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
1170
- "ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
1171
- ].join(" "), ee = b(({ className: e, "aria-label": a, onClick: r, ...d }, n) => {
1172
- const { t } = A("ui"), { mode: o, density: l, transitionTo: c } = w();
1173
- if (o === "overlay") return null;
1174
- const m = o === "expanded", f = m ? [
1175
- "ds:justify-start",
1176
- l === "compact" ? "ds:ps-[var(--spacing-xs)]" : "ds:ps-[var(--spacing-sm)]"
1177
- ].join(" ") : "ds:justify-center", g = a ?? (m ? t("navigation.sidebar.collapse", "Collapse sidebar") : t("navigation.sidebar.expand", "Expand sidebar")), y = /* @__PURE__ */ s(
1178
- "button",
1179
- {
1180
- ref: n,
1181
- type: "button",
1182
- "aria-label": g,
1183
- "aria-expanded": m,
1184
- onClick: (x) => {
1185
- c == null || c(m ? "icon" : "expanded"), r == null || r(x);
1186
- },
1187
- className: [se, f, e].filter(Boolean).join(" "),
1188
- ...d,
1189
- children: /* @__PURE__ */ s("span", { className: "ds:inline-flex ds:size-5 ds:shrink-0 ds:items-center ds:justify-center", children: m ? /* @__PURE__ */ s(
1190
- ws,
1191
- {
1192
- "aria-hidden": "true",
1193
- className: "ds:size-4 ds:rtl:-scale-x-100"
1194
- }
1195
- ) : /* @__PURE__ */ s(
1196
- zs,
1197
- {
1198
- "aria-hidden": "true",
1199
- className: "ds:size-4 ds:rtl:-scale-x-100"
1200
- }
1201
- ) })
1202
- }
1203
- );
1204
- return /* @__PURE__ */ u(h.Root, { children: [
1205
- /* @__PURE__ */ s(h.Trigger, { asChild: !0, children: y }),
1206
- /* @__PURE__ */ s(h.Portal, { children: /* @__PURE__ */ u(
1207
- h.Content,
1208
- {
1209
- side: o === "icon" ? "right" : "top",
1210
- sideOffset: 6,
1211
- className: [
1212
- "ds:z-[var(--z-tooltip)] ds:max-w-[16rem]",
1213
- "ds:rounded-[var(--radius-sm)]",
1214
- "ds:bg-[var(--foreground)] ds:text-[var(--background)]",
1215
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)] ds:text-[length:var(--font-size-xs)]",
1216
- "ds:animate-in ds:fade-in ds:zoom-in-95 ds:motion-reduce:animate-none"
1217
- ].join(" "),
1218
- children: [
1219
- g,
1220
- /* @__PURE__ */ s(h.Arrow, { className: "ds:fill-[var(--foreground)]" })
1221
- ]
1222
- }
1223
- ) })
1224
- ] });
1225
- });
1226
- ee.displayName = "SidebarCollapseTrigger";
1227
- const ae = T(
1228
- [
1229
- "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
1230
- "ds:rounded-[var(--radius-md)]",
1231
- "ds:border ds:border-[var(--border)]",
1232
- "ds:bg-[image:var(--gradient-surface-subtle-accent)]",
1233
- "ds:no-underline ds:!text-[var(--foreground)]",
1234
- "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
1235
- "ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
1236
- "ds:forced-colors:focus-visible:outline-[CanvasText]"
1237
- ].join(" "),
1238
- {
1239
- variants: {
1240
- mode: {
1241
- expanded: [
1242
- "ds:min-h-[var(--min-target-size)]",
1243
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]"
1244
- ].join(" "),
1245
- icon: [
1246
- "ds:justify-center",
1247
- "ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]",
1248
- "ds:ms-auto ds:me-auto ds:ps-0 ds:pe-0"
1249
- ].join(" "),
1250
- overlay: [
1251
- "ds:min-h-[var(--min-target-size)]",
1252
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]"
1253
- ].join(" ")
1254
- }
1255
- },
1256
- defaultVariants: { mode: "expanded" }
1257
- }
1258
- ), re = b(({ title: e, description: a, icon: r, className: d, ...n }, t) => {
1259
- const { mode: o } = w(), l = o === "icon", c = (
1260
- // aria-label only in icon mode (where the copy is hidden) — in
1261
- // expanded mode the accessible name comes from the visible contents
1262
- // so the description isn't excluded from it.
1263
- /* @__PURE__ */ u(
1264
- "a",
1265
- {
1266
- ref: t,
1267
- "aria-label": l ? e : void 0,
1268
- className: ae({ mode: o, className: d }),
1269
- ...n,
1270
- children: [
1271
- /* @__PURE__ */ s(
1272
- "span",
1273
- {
1274
- "aria-hidden": "true",
1275
- className: [
1276
- "ds:inline-flex ds:size-8 ds:shrink-0 ds:items-center ds:justify-center",
1277
- "ds:rounded-[var(--radius-sm)]",
1278
- "ds:bg-[var(--accent)] ds:text-[var(--accent-foreground)]"
1279
- ].join(" "),
1280
- children: r ?? /* @__PURE__ */ s(xs, { className: "ds:size-4" })
1281
- }
1282
- ),
1283
- l ? null : /* @__PURE__ */ u(X, { children: [
1284
- /* @__PURE__ */ u("span", { className: "ds:flex-1 ds:min-w-0 ds:text-start", children: [
1285
- /* @__PURE__ */ s("span", { className: "ds:block ds:line-clamp-2 type-label", children: e }),
1286
- a ? (
1287
- // Foreground (not muted) on the tinted surface — the gradient
1288
- // stops leave muted text short of AA in both colour schemes.
1289
- /* @__PURE__ */ s("span", { className: "ds:block ds:line-clamp-2 type-meta", children: a })
1290
- ) : null
1291
- ] }),
1292
- /* @__PURE__ */ s(
1293
- H,
1294
- {
1295
- "aria-hidden": "true",
1296
- className: "ds:size-4 ds:shrink-0 ds:rtl:-scale-x-100"
1297
- }
1298
- )
1299
- ] })
1300
- ]
1301
- }
1302
- )
1303
- );
1304
- return l ? /* @__PURE__ */ u(h.Root, { children: [
1305
- /* @__PURE__ */ s(h.Trigger, { asChild: !0, children: c }),
1306
- /* @__PURE__ */ s(h.Portal, { children: /* @__PURE__ */ u(
1307
- h.Content,
1308
- {
1309
- side: "right",
1310
- sideOffset: 6,
1311
- className: [
1312
- "ds:z-[var(--z-tooltip)] ds:max-w-[16rem]",
1313
- "ds:rounded-[var(--radius-sm)]",
1314
- "ds:bg-[var(--foreground)] ds:text-[var(--background)]",
1315
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:py-[var(--spacing-xs)] ds:text-[length:var(--font-size-xs)]",
1316
- "ds:animate-in ds:fade-in ds:zoom-in-95 ds:motion-reduce:animate-none"
1317
- ].join(" "),
1318
- children: [
1319
- e,
1320
- /* @__PURE__ */ s(h.Arrow, { className: "ds:fill-[var(--foreground)]" })
1321
- ]
1322
- }
1323
- ) })
1324
- ] }) : c;
1325
- });
1326
- re.displayName = "SidebarUpgradeChip";
1327
- export {
1328
- Bs as S,
1329
- Ds as a,
1330
- ee as b,
1331
- Ys as c,
1332
- qs as d,
1333
- Ps as e,
1334
- Hs as f,
1335
- As as g,
1336
- is as h,
1337
- Ks as i,
1338
- Us as j,
1339
- Vs as k,
1340
- W as l,
1341
- Os as m,
1342
- Qs as n,
1343
- as as o,
1344
- re as p,
1345
- Ls as q,
1346
- Ss as s,
1347
- w as u
1348
- };
1349
- //# sourceMappingURL=sidebar-DLsG2AIk.js.map