@mastra/playground-ui 63.1.0-alpha.2 → 63.1.0-alpha.4

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 (292) hide show
  1. package/dist/{code-Dcah35Gp.cjs → code-DJReJPSX.cjs} +3 -2
  2. package/dist/code-DJReJPSX.cjs.map +1 -0
  3. package/dist/{code-DAXWNzvf.js → code-DLuATvYu.js} +3 -2
  4. package/dist/code-DLuATvYu.js.map +1 -0
  5. package/dist/{code-block-BzUcNWrb.js → code-block-BQV4o92x.js} +2 -2
  6. package/dist/{code-block-BzUcNWrb.js.map → code-block-BQV4o92x.js.map} +1 -1
  7. package/dist/{code-block-CKLCdWtP.cjs → code-block-DZb0Tb3k.cjs} +2 -2
  8. package/dist/{code-block-CKLCdWtP.cjs.map → code-block-DZb0Tb3k.cjs.map} +1 -1
  9. package/dist/components/Code.cjs.js +1 -1
  10. package/dist/components/Code.es.js +1 -1
  11. package/dist/components/CodeBlock.cjs.js +1 -1
  12. package/dist/components/CodeBlock.es.js +1 -1
  13. package/dist/components/ContentBlocks.cjs.js +6 -2
  14. package/dist/components/ContentBlocks.cjs.js.map +1 -1
  15. package/dist/components/ContentBlocks.es.js +6 -2
  16. package/dist/components/ContentBlocks.es.js.map +1 -1
  17. package/dist/components/DataCodeSection.cjs.js +1 -1
  18. package/dist/components/DataCodeSection.es.js +1 -1
  19. package/dist/components/DataDetailsPanel.cjs.js +1 -1
  20. package/dist/components/DataDetailsPanel.es.js +1 -1
  21. package/dist/components/DataList.cjs.js +3 -3
  22. package/dist/components/DataList.es.js +4 -4
  23. package/dist/components/DataPanel.cjs.js +1 -1
  24. package/dist/components/DataPanel.es.js +1 -1
  25. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  26. package/dist/components/DateTimeRangePicker.es.js +1 -1
  27. package/dist/components/EnvironmentVariablesEditor.cjs.js +1 -1
  28. package/dist/components/EnvironmentVariablesEditor.es.js +1 -1
  29. package/dist/components/FilterBar.cjs.js +3 -1
  30. package/dist/components/FilterBar.cjs.js.map +1 -1
  31. package/dist/components/FilterBar.es.js +4 -2
  32. package/dist/components/FilterBar.es.js.map +1 -1
  33. package/dist/components/LogsDataList.cjs.js +3 -3
  34. package/dist/components/LogsDataList.es.js +3 -3
  35. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  36. package/dist/components/MarkdownRenderer.es.js +1 -1
  37. package/dist/components/SavedViews.cjs.js +1 -1
  38. package/dist/components/SavedViews.es.js +1 -1
  39. package/dist/components/Sidebar.cjs.js +33 -0
  40. package/dist/components/Sidebar.cjs.js.map +1 -1
  41. package/dist/components/Sidebar.es.js +33 -1
  42. package/dist/components/Sidebar.es.js.map +1 -1
  43. package/dist/components/Workflow.cjs.js +1 -1
  44. package/dist/components/Workflow.es.js +1 -1
  45. package/dist/components/ai/activity.cjs.js +1 -1
  46. package/dist/components/ai/activity.es.js +1 -1
  47. package/dist/components/ai/plan.cjs.js +1 -1
  48. package/dist/components/ai/plan.es.js +1 -1
  49. package/dist/components/ai/tool-approval.cjs.js +1 -1
  50. package/dist/components/ai/tool-approval.es.js +1 -1
  51. package/dist/components/ai/tool-call.cjs.js +1 -1
  52. package/dist/components/ai/tool-call.es.js +1 -1
  53. package/dist/{data-code-section-BB2RWius.cjs → data-code-section-DCuBY9Mf.cjs} +2 -2
  54. package/dist/{data-code-section-BB2RWius.cjs.map → data-code-section-DCuBY9Mf.cjs.map} +1 -1
  55. package/dist/{data-code-section-DsU-ubVW.js → data-code-section-DOSV2o6P.js} +2 -2
  56. package/dist/{data-code-section-DsU-ubVW.js.map → data-code-section-DOSV2o6P.js.map} +1 -1
  57. package/dist/{data-list-BbOYiz4B.js → data-list-B4Ho_OCZ.js} +5 -2
  58. package/dist/data-list-B4Ho_OCZ.js.map +1 -0
  59. package/dist/{data-list-2svaWtkq.cjs → data-list-CYpGCm6F.cjs} +5 -2
  60. package/dist/data-list-CYpGCm6F.cjs.map +1 -0
  61. package/dist/{data-list-skeleton-C9Zm5XMX.js → data-list-skeleton-AfVi5OHw.js} +2 -2
  62. package/dist/{data-list-skeleton-C9Zm5XMX.js.map → data-list-skeleton-AfVi5OHw.js.map} +1 -1
  63. package/dist/{data-list-skeleton-C-j6Sf0F.cjs → data-list-skeleton-CIfVTfq4.cjs} +2 -2
  64. package/dist/{data-list-skeleton-C-j6Sf0F.cjs.map → data-list-skeleton-CIfVTfq4.cjs.map} +1 -1
  65. package/dist/{data-panel-CwIdwpov.js → data-panel-C8sHDwrx.js} +2 -2
  66. package/dist/{data-panel-CwIdwpov.js.map → data-panel-C8sHDwrx.js.map} +1 -1
  67. package/dist/{data-panel-CtFwwsPs.cjs → data-panel-DIVqWg0V.cjs} +2 -2
  68. package/dist/{data-panel-CtFwwsPs.cjs.map → data-panel-DIVqWg0V.cjs.map} +1 -1
  69. package/dist/{date-time-range-picker-BT9qan60.js → date-time-range-picker-B9me2TUa.js} +21 -4
  70. package/dist/date-time-range-picker-B9me2TUa.js.map +1 -0
  71. package/dist/{date-time-range-picker-DQa5XLST.cjs → date-time-range-picker-CyoaOAsi.cjs} +21 -4
  72. package/dist/date-time-range-picker-CyoaOAsi.cjs.map +1 -0
  73. package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
  74. package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
  75. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  76. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  77. package/dist/domains/chat/messages/skill-message.cjs.js +1 -1
  78. package/dist/domains/chat/messages/skill-message.es.js +1 -1
  79. package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
  80. package/dist/domains/chat/messages/tripwire-notice.es.js +1 -1
  81. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
  82. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
  83. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
  84. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
  85. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
  86. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
  87. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
  88. package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
  89. package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
  90. package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
  91. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +1 -1
  92. package/dist/domains/chat/tools/badges/tool-badge.es.js +1 -1
  93. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
  94. package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
  95. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
  96. package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
  97. package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
  98. package/dist/domains/logs/components/log-data-panel.es.js +1 -1
  99. package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
  100. package/dist/domains/logs/components/logs-list-view.es.js +3 -3
  101. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  102. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  103. package/dist/domains/metrics/drilldown.cjs.js +1 -1
  104. package/dist/domains/metrics/drilldown.es.js +1 -1
  105. package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
  106. package/dist/domains/metrics/metrics-filters.es.js +1 -1
  107. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  108. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  109. package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
  110. package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
  111. package/dist/domains/traces/components/span-data-panel-view.cjs.js +2 -2
  112. package/dist/domains/traces/components/span-data-panel-view.es.js +2 -2
  113. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  114. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  115. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
  116. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
  117. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  118. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  119. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +2 -2
  120. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
  121. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  122. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  123. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
  124. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
  125. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  126. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  127. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  128. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  129. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
  130. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
  131. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
  132. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
  133. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  134. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  135. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
  136. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
  137. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -2
  138. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  139. package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -2
  140. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  141. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +1 -1
  142. package/dist/domains/traces/components/trace-data-panel-view.es.js +1 -1
  143. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
  144. package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
  145. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  146. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  147. package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
  148. package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
  149. package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
  150. package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
  151. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +3 -3
  152. package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
  153. package/dist/domains/traces/components/trace-time-range-chip.es.js +3 -3
  154. package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
  155. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  156. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  157. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  158. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  159. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
  160. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
  161. package/dist/domains/traces/hooks/use-trace-filter-persistence.cjs.js +1 -1
  162. package/dist/domains/traces/hooks/use-trace-filter-persistence.es.js +1 -1
  163. package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +1 -1
  164. package/dist/domains/traces/hooks/use-trace-url-state.es.js +1 -1
  165. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +15 -3
  166. package/dist/domains/traces/hooks/use-traces-list-source.cjs.js.map +1 -1
  167. package/dist/domains/traces/hooks/use-traces-list-source.es.js +13 -4
  168. package/dist/domains/traces/hooks/use-traces-list-source.es.js.map +1 -1
  169. package/dist/domains/traces/trace-filters.cjs.js +1 -1
  170. package/dist/domains/traces/trace-filters.es.js +1 -1
  171. package/dist/domains/traces/trace-query-filters.cjs.js +1 -3
  172. package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
  173. package/dist/domains/traces/trace-query-filters.es.js +1 -1
  174. package/dist/domains/traces.cjs.js +1 -3
  175. package/dist/domains/traces.cjs.js.map +1 -1
  176. package/dist/domains/traces.es.js +1 -1
  177. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
  178. package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
  179. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
  180. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
  181. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  182. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  183. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
  184. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
  185. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +1 -1
  186. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +1 -1
  187. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  188. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  189. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  190. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  191. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
  192. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
  193. package/dist/domains/workspace/components/workspace-active-file.cjs.js +1 -1
  194. package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
  195. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
  196. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
  197. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
  198. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
  199. package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
  200. package/dist/ee/signals/components/entity-index-list.es.js +1 -1
  201. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +2 -2
  202. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +2 -2
  203. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +1 -1
  204. package/dist/ee/topics/components/topic-trace-summary-list.es.js +1 -1
  205. package/dist/{errors-BiY55qIh.cjs → errors-7WFF-9EC.cjs} +3 -2
  206. package/dist/errors-7WFF-9EC.cjs.map +1 -0
  207. package/dist/{errors-CDTokuME.js → errors-BFVXW8Dr.js} +3 -2
  208. package/dist/errors-BFVXW8Dr.js.map +1 -0
  209. package/dist/{filter-bar-chip-BBErw_aR.cjs → filter-bar-chip-CYCOeX1B.cjs} +8 -4
  210. package/dist/filter-bar-chip-CYCOeX1B.cjs.map +1 -0
  211. package/dist/{filter-bar-chip-DvRTWRwT.js → filter-bar-chip-U55TxGOw.js} +8 -4
  212. package/dist/filter-bar-chip-U55TxGOw.js.map +1 -0
  213. package/dist/hooks/use-local-storage-store.cjs.js +71 -0
  214. package/dist/hooks/use-local-storage-store.cjs.js.map +1 -0
  215. package/dist/hooks/use-local-storage-store.d.ts +2 -0
  216. package/dist/hooks/use-local-storage-store.es.js +66 -0
  217. package/dist/hooks/use-local-storage-store.es.js.map +1 -0
  218. package/dist/layout/tabbed-container.cjs.js +1 -1
  219. package/dist/layout/tabbed-container.es.js +1 -1
  220. package/dist/{logs-data-list-D4sVbF23.cjs → logs-data-list-Bh_wPam2.cjs} +2 -2
  221. package/dist/{logs-data-list-D4sVbF23.cjs.map → logs-data-list-Bh_wPam2.cjs.map} +1 -1
  222. package/dist/{logs-data-list-0_z4s0Sj.js → logs-data-list-CZ2TvWyb.js} +2 -2
  223. package/dist/{logs-data-list-0_z4s0Sj.js.map → logs-data-list-CZ2TvWyb.js.map} +1 -1
  224. package/dist/{markdown-renderer-WesDzhMr.js → markdown-renderer-B55LVMsv.js} +2 -2
  225. package/dist/{markdown-renderer-WesDzhMr.js.map → markdown-renderer-B55LVMsv.js.map} +1 -1
  226. package/dist/{markdown-renderer-BRu3RpQD.cjs → markdown-renderer-B8Zmudqn.cjs} +2 -2
  227. package/dist/{markdown-renderer-BRu3RpQD.cjs.map → markdown-renderer-B8Zmudqn.cjs.map} +1 -1
  228. package/dist/{plan-ColU7p3H.cjs → plan-BxKWT5Jc.cjs} +2 -2
  229. package/dist/{plan-ColU7p3H.cjs.map → plan-BxKWT5Jc.cjs.map} +1 -1
  230. package/dist/{plan-CBiLa54G.js → plan-CoeSire7.js} +2 -2
  231. package/dist/{plan-CBiLa54G.js.map → plan-CoeSire7.js.map} +1 -1
  232. package/dist/{reasoning-activity-DLrXgE9k.js → reasoning-activity-C6KlS9dD.js} +2 -2
  233. package/dist/{reasoning-activity-DLrXgE9k.js.map → reasoning-activity-C6KlS9dD.js.map} +1 -1
  234. package/dist/{reasoning-activity-B8bR8ib_.cjs → reasoning-activity-DwvH_xWp.cjs} +2 -2
  235. package/dist/{reasoning-activity-B8bR8ib_.cjs.map → reasoning-activity-DwvH_xWp.cjs.map} +1 -1
  236. package/dist/{span-payload-primitives-DBNNkmHo.js → span-payload-primitives-DPAyz0rW.js} +2 -2
  237. package/dist/{span-payload-primitives-DBNNkmHo.js.map → span-payload-primitives-DPAyz0rW.js.map} +1 -1
  238. package/dist/{span-payload-primitives-BymKsUAo.cjs → span-payload-primitives-nXrFCYgn.cjs} +2 -2
  239. package/dist/{span-payload-primitives-BymKsUAo.cjs.map → span-payload-primitives-nXrFCYgn.cjs.map} +1 -1
  240. package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +1 -1
  241. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +6 -0
  242. package/dist/src/domains/traces/trace-query-filters.d.ts +0 -11
  243. package/dist/src/ds/components/ContentBlocks/content-blocks.d.ts +3 -2
  244. package/dist/src/ds/components/DataList/shared.d.ts +4 -4
  245. package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -1
  246. package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +3 -1
  247. package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +11 -1
  248. package/dist/src/ds/components/FilterBar/filter-bar.d.ts +6 -1
  249. package/dist/src/ds/components/Sidebar/index.d.ts +1 -0
  250. package/dist/src/ds/components/Sidebar/nav/sidebar-nav-show-more.d.ts +9 -0
  251. package/dist/src/ds/components/Sidebar/sidebar.d.ts +2 -0
  252. package/dist/src/hooks/use-local-storage-store.d.ts +15 -0
  253. package/dist/style.css +20 -0
  254. package/dist/{tool-approval-BK2j7aj_.js → tool-approval-CYmQJ2i4.js} +2 -2
  255. package/dist/{tool-approval-BK2j7aj_.js.map → tool-approval-CYmQJ2i4.js.map} +1 -1
  256. package/dist/{tool-approval-Bza_sgxa.cjs → tool-approval-aWNKG9dK.cjs} +2 -2
  257. package/dist/{tool-approval-Bza_sgxa.cjs.map → tool-approval-aWNKG9dK.cjs.map} +1 -1
  258. package/dist/{tool-call-arguments-BLCAiFYg.js → tool-call-arguments-Bk13pV6A.js} +3 -3
  259. package/dist/{tool-call-arguments-BLCAiFYg.js.map → tool-call-arguments-Bk13pV6A.js.map} +1 -1
  260. package/dist/{tool-call-arguments-CK3kQ_FX.cjs → tool-call-arguments-DTwVq7AB.cjs} +3 -3
  261. package/dist/{tool-call-arguments-CK3kQ_FX.cjs.map → tool-call-arguments-DTwVq7AB.cjs.map} +1 -1
  262. package/dist/{trace-filters-C71gmCq4.js → trace-filters-C91h9X86.js} +2 -10
  263. package/dist/trace-filters-C91h9X86.js.map +1 -0
  264. package/dist/{trace-filters-Bh4dVNPX.cjs → trace-filters-Dz4oj8yV.cjs} +1 -11
  265. package/dist/trace-filters-Dz4oj8yV.cjs.map +1 -0
  266. package/dist/{traces-data-list-C05UwTiE.js → traces-data-list-BXotATNk.js} +2 -2
  267. package/dist/{traces-data-list-C05UwTiE.js.map → traces-data-list-BXotATNk.js.map} +1 -1
  268. package/dist/{traces-data-list-DPA5T14k.cjs → traces-data-list-D6pq_WLy.cjs} +2 -2
  269. package/dist/{traces-data-list-DPA5T14k.cjs.map → traces-data-list-D6pq_WLy.cjs.map} +1 -1
  270. package/dist/{use-workflow-graph-runtime-DX56livO.js → use-workflow-graph-runtime-S5G_ZvSM.js} +2 -2
  271. package/dist/{use-workflow-graph-runtime-DX56livO.js.map → use-workflow-graph-runtime-S5G_ZvSM.js.map} +1 -1
  272. package/dist/{use-workflow-graph-runtime-C8TkqjvM.cjs → use-workflow-graph-runtime-UxUOrRDb.cjs} +2 -2
  273. package/dist/{use-workflow-graph-runtime-C8TkqjvM.cjs.map → use-workflow-graph-runtime-UxUOrRDb.cjs.map} +1 -1
  274. package/dist/utils/errors.cjs.js +1 -1
  275. package/dist/utils/errors.es.js +1 -1
  276. package/dist/{workflow-condition-card-bn5mrwKe.cjs → workflow-condition-card-CHV32SJm.cjs} +2 -2
  277. package/dist/{workflow-condition-card-bn5mrwKe.cjs.map → workflow-condition-card-CHV32SJm.cjs.map} +1 -1
  278. package/dist/{workflow-condition-card-DMkPh5TM.js → workflow-condition-card-DNsQmIae.js} +2 -2
  279. package/dist/{workflow-condition-card-DMkPh5TM.js.map → workflow-condition-card-DNsQmIae.js.map} +1 -1
  280. package/package.json +8 -8
  281. package/dist/code-DAXWNzvf.js.map +0 -1
  282. package/dist/code-Dcah35Gp.cjs.map +0 -1
  283. package/dist/data-list-2svaWtkq.cjs.map +0 -1
  284. package/dist/data-list-BbOYiz4B.js.map +0 -1
  285. package/dist/date-time-range-picker-BT9qan60.js.map +0 -1
  286. package/dist/date-time-range-picker-DQa5XLST.cjs.map +0 -1
  287. package/dist/errors-BiY55qIh.cjs.map +0 -1
  288. package/dist/errors-CDTokuME.js.map +0 -1
  289. package/dist/filter-bar-chip-BBErw_aR.cjs.map +0 -1
  290. package/dist/filter-bar-chip-DvRTWRwT.js.map +0 -1
  291. package/dist/trace-filters-Bh4dVNPX.cjs.map +0 -1
  292. package/dist/trace-filters-C71gmCq4.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.cjs.js","sources":["../../src/ds/components/Sidebar/footer/sidebar-footer.tsx","../../src/ds/components/Sidebar/root/sidebar-context.ts","../../src/ds/components/Sidebar/footer/sidebar-footer-meta.tsx","../../src/ds/components/Sidebar/footer/sidebar-meter.tsx","../../src/ds/components/Sidebar/header/sidebar-brand.tsx","../../src/ds/components/Sidebar/header/sidebar-command-header.tsx","../../src/ds/components/Sidebar/root/sidebar-trigger.tsx","../../src/ds/components/Sidebar/header/sidebar-header.tsx","../../src/ds/components/Sidebar/header/sidebar-search-trigger.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-header.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-label.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-item-classes.ts","../../src/ds/components/Sidebar/nav/sidebar-nav-link.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-list.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-section.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-separator.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-context.ts","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-root.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-page-classes.ts","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-root-view.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-view.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack.ts","../../src/ds/components/Sidebar/root/sidebar-mobile-trigger.tsx","../../src/ds/components/Sidebar/root/sidebar-provider.tsx","../../src/ds/components/Sidebar/root/sidebar-panel.tsx","../../src/ds/components/Sidebar/root/sidebar-root.tsx","../../src/ds/components/Sidebar/sections/sidebar-visibility.ts","../../src/ds/components/Sidebar/sections/sidebar-customize-dialog.tsx","../../src/ds/components/Sidebar/sections/sidebar-section-link.tsx","../../src/ds/components/Sidebar/sections/sidebar-optional-link.tsx","../../src/ds/components/Sidebar/sections/sidebar-more-links.tsx","../../src/ds/components/Sidebar/sections/sidebar-sections-content.tsx","../../src/ds/components/Sidebar/sections/sidebar-sections.tsx","../../src/ds/components/Sidebar/sidebar.ts","../../src/ds/components/Sidebar/nav/sidebar-link-active.ts"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarFooterProps = ComponentPropsWithoutRef<'footer'>;\n\nexport function SidebarFooter({ className, children, ...props }: SidebarFooterProps) {\n return (\n <footer data-slot=\"sidebar-footer\" className={cn('mt-auto shrink-0 space-y-1.5', className)} {...props}>\n {children}\n </footer>\n );\n}\n","import React from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nexport type SidebarState = 'default' | 'collapsed';\n\ntype SidebarContextValue = {\n state: SidebarState;\n desktopState: SidebarState;\n width: number;\n minWidth: number;\n maxWidth: number;\n collapseBelow: number;\n collapsedWidth: number;\n isMobile: boolean;\n openMobile: boolean;\n mobileTriggerRef: React.RefObject<HTMLButtonElement | null>;\n setOpenMobile: (open: boolean) => void;\n setMobileDrawerPresent: (present: boolean) => void;\n toggleSidebar: () => void;\n setWidth: (width: number) => void;\n collapse: () => void;\n expand: () => void;\n commit: () => void;\n setGestureActive: (active: boolean) => void;\n LinkComponent?: LinkComponent;\n};\n\n// Split: drawer open-state lives in its own context so navigation rows\n// do not re-render when the mobile drawer toggles.\nexport type MobileDrawerContextValue = {\n openMobile: boolean;\n mobileTriggerRef: React.RefObject<HTMLButtonElement | null>;\n setOpenMobile: (open: boolean) => void;\n setMobileDrawerPresent: (present: boolean) => void;\n};\n\nexport type SidebarStateContextValue = Omit<\n SidebarContextValue,\n 'openMobile' | 'mobileTriggerRef' | 'setOpenMobile' | 'setMobileDrawerPresent'\n>;\n\nexport const SidebarContext = React.createContext<SidebarStateContextValue | null>(null);\nexport const MobileDrawerContext = React.createContext<MobileDrawerContextValue | null>(null);\n\n/** Reads sidebar state and actions without subscribing to mobile drawer state. */\nexport function useMaybeSidebarState(): SidebarStateContextValue | null {\n return React.useContext(SidebarContext);\n}\n\nexport function useSidebar(): SidebarContextValue {\n const ctx = React.useContext(SidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return { ...ctx, ...drawer };\n}\n\nexport function useMaybeSidebar(): SidebarContextValue | null {\n const ctx = React.useContext(SidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) return null;\n return { ...ctx, ...drawer };\n}\n\n/** Reads only mobile drawer state. Cheap — no re-renders on sidebar resize. */\nexport function useMobileDrawer(): MobileDrawerContextValue {\n const drawer = React.useContext(MobileDrawerContext);\n if (!drawer) throw new Error('useMobileDrawer must be used within a SidebarProvider.');\n return drawer;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarFooterMetaProps = ComponentPropsWithoutRef<'div'> & {\n action?: ReactNode;\n};\n\nexport const SidebarFooterMeta = forwardRef<HTMLDivElement, SidebarFooterMetaProps>(function SidebarFooterMeta(\n { className, children, action, ...props },\n ref,\n) {\n const { state } = useSidebar();\n\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-footer-meta\"\n data-state={state}\n className={cn(\n 'grid min-h-10 grid-cols-[minmax(0,1fr)_auto_0fr] items-center border-t border-border px-2 py-1 text-meta text-muted-foreground',\n 'transition-[grid-template-columns] duration-slow ease-out-custom motion-reduce:transition-none',\n state === 'collapsed' && 'grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] px-0',\n className,\n )}\n {...props}\n >\n <div\n aria-hidden={state === 'collapsed'}\n className={cn(\n 'min-w-0 truncate transition-opacity duration-normal ease-out-custom motion-reduce:transition-none',\n state === 'collapsed' && 'opacity-0',\n )}\n >\n {children}\n </div>\n {action}\n <span aria-hidden />\n </div>\n );\n});\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { Txt } from '@/ds/components/Txt';\nimport { surfaceStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarMeterTone = 'neutral' | 'warning' | 'danger';\n\nconst NOISE =\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\\\")\";\n\nconst CARD_HEIGHT = 76;\nconst BLOOM_HEIGHT = 100;\nconst BLOOM_HOLD_Y = 60;\nconst BLOOM_HOLD_X = 22.5;\nconst GRAIN_OPACITY = 0.18;\nconst GRAIN_SIZE = 110;\n\nconst FALLOFF_RAMP = [0, 0.08, 0.16, 0.25, 0.34, 0.44, 0.55, 0.66, 0.78, 0.89, 1];\n\nconst TONES = {\n neutral: { colorVar: '--foreground', peak: 0.08, grain: true, text: 'text-muted-foreground' },\n warning: {\n colorVar: '--warning-indicator',\n peak: 0.16,\n grain: false,\n text: 'text-warning-foreground',\n },\n danger: {\n colorVar: '--destructive-indicator',\n peak: 0.16,\n grain: false,\n text: 'text-destructive-foreground',\n },\n};\n\nfunction cubicFalloff(position: number) {\n const inverse = 1 - position;\n return inverse * inverse * inverse;\n}\n\nfunction easedBloom(colorVar: string, peak: number) {\n const stops = FALLOFF_RAMP.map(position => {\n const alpha = (peak * cubicFalloff(position) * 100).toFixed(2);\n return `color-mix(in oklch, var(${colorVar}) ${alpha}%, transparent) ${(position * 100).toFixed(0)}%`;\n });\n return `linear-gradient(to right, ${stops.join(', ')})`;\n}\n\nfunction easedMask(direction: string, hold: number) {\n const stops = FALLOFF_RAMP.map(position => {\n const offset = (hold + (100 - hold) * position).toFixed(2);\n return `rgb(0 0 0 / ${cubicFalloff(position).toFixed(3)}) ${offset}%`;\n });\n return `linear-gradient(${direction}, rgb(0 0 0 / 1) 0%, ${stops.join(', ')})`;\n}\n\nconst BLOOM_MASK = `${easedMask('to bottom', BLOOM_HOLD_Y)}, ${easedMask('to right', BLOOM_HOLD_X)}`;\n\nfunction Bloom({ tone }: { tone: SidebarMeterTone }) {\n const current = TONES[tone];\n return (\n <span\n aria-hidden\n data-slot=\"sidebar-meter-bloom\"\n className=\"pointer-events-none absolute inset-x-0 top-0 -z-10\"\n style={{\n height: BLOOM_HEIGHT,\n backgroundImage: easedBloom(current.colorVar, current.peak),\n maskImage: BLOOM_MASK,\n maskComposite: 'intersect',\n }}\n >\n {current.grain ? (\n <span\n aria-hidden\n className=\"absolute inset-0\"\n style={{\n backgroundImage: NOISE,\n backgroundRepeat: 'repeat',\n backgroundSize: `${GRAIN_SIZE}px ${GRAIN_SIZE}px`,\n opacity: GRAIN_OPACITY,\n }}\n />\n ) : null}\n </span>\n );\n}\n\ninterface SidebarMeterBaseProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n label: ReactNode;\n value: ReactNode;\n status?: ReactNode;\n tone?: SidebarMeterTone;\n icon?: ReactNode;\n action?: ReactNode;\n LinkComponent?: LinkComponent;\n state?: SidebarState;\n}\n\ntype SidebarMeterLinkProps =\n | {\n href: string;\n linkLabel: string;\n }\n | { href?: never; linkLabel?: never };\nexport type SidebarMeterProps = SidebarMeterBaseProps & SidebarMeterLinkProps;\n\nexport const SidebarMeter = forwardRef<HTMLDivElement, SidebarMeterProps>(function SidebarMeter(\n {\n label,\n value,\n status,\n tone = 'neutral',\n icon,\n action,\n href,\n linkLabel,\n LinkComponent: LinkProp,\n state: stateProp,\n className,\n ...props\n },\n ref,\n) {\n const ctx = useMaybeSidebarState();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const Link: LinkComponent = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const isCollapsed = state === 'collapsed';\n const current = TONES[tone];\n\n if (isCollapsed) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-meter\"\n data-tone={tone}\n data-state={state}\n className={cn(\n 'relative isolate flex items-center justify-center overflow-hidden rounded-lg border border-border bg-background px-1 py-2',\n className,\n )}\n {...props}\n >\n <Bloom tone={tone} />\n {href ? <Link href={href} className=\"absolute inset-0 rounded-lg\" aria-label={linkLabel} /> : null}\n <Txt as=\"span\" variant=\"meta\" tone=\"ink\" className=\"pointer-events-none relative tabular-nums\">\n {value}\n </Txt>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-meter\"\n data-tone={tone}\n data-state={state}\n className={cn(\n 'relative isolate flex flex-col justify-center overflow-hidden rounded-lg border border-border bg-background px-3',\n href && surfaceStateLayerStyle,\n className,\n )}\n style={{ height: CARD_HEIGHT }}\n {...props}\n >\n <Bloom tone={tone} />\n {href ? <Link href={href} className=\"absolute inset-0 rounded-lg\" aria-label={linkLabel} /> : null}\n\n <div className=\"pointer-events-none relative\">\n <div className=\"flex items-center gap-1.5\">\n {tone === 'neutral' ? null : icon}\n <Txt as=\"span\" variant=\"column\" tone=\"muted\">\n {label}\n </Txt>\n {action ? <span className=\"pointer-events-auto\">{action}</span> : null}\n </div>\n\n <Txt variant=\"heading\" tone=\"ink\" className=\"mt-0.5 leading-tight tabular-nums\">\n {value}\n </Txt>\n\n {status ? (\n <div className=\"mt-1 text-meta\">\n <p className={cn('truncate', current.text)}>{status}</p>\n </div>\n ) : null}\n </div>\n </div>\n );\n});\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { Txt } from '@/ds/components/Txt';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarBrandProps = Omit<ComponentPropsWithoutRef<'div'>, 'title'> & {\n logo?: ReactNode;\n title: ReactNode;\n};\n\nexport function SidebarBrand({ logo, title, className, ...props }: SidebarBrandProps) {\n const { state } = useSidebar();\n\n return (\n <div data-slot=\"sidebar-brand\" className={cn('flex min-w-0 flex-1 items-center gap-2', className)} {...props}>\n {logo ? <span className=\"shrink-0\">{logo}</span> : null}\n {state === 'collapsed' ? (\n <VisuallyHidden>{title}</VisuallyHidden>\n ) : (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className=\"truncate font-body tracking-tight\">\n {title}\n </Txt>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarCommandHeaderProps = ComponentPropsWithoutRef<'header'>;\n\nexport const SidebarCommandHeader = forwardRef<HTMLElement, SidebarCommandHeaderProps>(function SidebarCommandHeader(\n { className, children, ...props },\n ref,\n) {\n const { state, isMobile } = useSidebar();\n\n return (\n <header\n ref={ref}\n data-slot=\"sidebar-command-header\"\n data-state={state}\n className={cn(\n 'flex h-header-default shrink-0 items-center gap-1 overflow-hidden',\n state === 'collapsed' ? 'px-3' : 'pr-2 pl-3.5',\n state !== 'collapsed' && !isMobile && 'w-[calc(var(--sidebar-width)-1rem)]',\n state === 'collapsed' && '[&_[data-slot=sidebar-search-trigger]]:hidden',\n className,\n )}\n {...props}\n >\n {children}\n </header>\n );\n});\n","import { PanelLeftIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from './sidebar-context';\nimport { Kbd } from '@/ds/components/Kbd';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarTriggerProps = ComponentPropsWithoutRef<'button'>;\n\nexport function SidebarTrigger({ className, onClick, ...props }: SidebarTriggerProps) {\n const { desktopState, isMobile, toggleSidebar } = useSidebar();\n const isCollapsed = desktopState === 'collapsed';\n\n if (isMobile) return null;\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n aria-label=\"Toggle sidebar\"\n aria-expanded={!isCollapsed}\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleSidebar();\n }}\n className={cn(\n 'flex items-center justify-center rounded-md text-muted-foreground',\n 'size-7',\n !isCollapsed && 'ml-auto',\n 'hover:bg-fill-subtle hover:text-foreground',\n 'transition-colors duration-normal ease-out-custom motion-reduce:transition-none',\n focusRing,\n '[&_svg]:size-4 [&_svg]:text-muted-foreground [&:hover_svg]:text-foreground',\n className,\n )}\n >\n <PanelLeftIcon />\n </button>\n }\n />\n\n <TooltipContent>\n <span className=\"inline-flex items-center gap-1.5\">\n Toggle Sidebar\n <Kbd size=\"xs\" className=\"bg-muted text-muted-foreground\">\n [\n </Kbd>\n </span>\n </TooltipContent>\n </Tooltip>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { SidebarTrigger } from '../root/sidebar-trigger';\nimport { cn } from '@/lib/utils';\n\nimport './sidebar-header.css';\n\nexport type SidebarHeaderProps = ComponentPropsWithoutRef<'header'> & {\n collapsedLogo?: ReactNode;\n actions?: ReactNode;\n};\n\nconst hold = 'animate-[sidebar-hold_var(--resize-dur)] motion-reduce:animate-none';\n\nexport function SidebarHeader({ className, children, collapsedLogo, actions, ...props }: SidebarHeaderProps) {\n const sidebar = useMaybeSidebarState();\n const collapsed = sidebar?.state === 'collapsed';\n const isMobile = sidebar?.isMobile ?? false;\n\n return (\n <header\n data-slot=\"sidebar-header\"\n className={cn(\n 'flex h-header-default shrink-0 items-center gap-2',\n collapsed ? 'px-1' : 'pr-2 pl-3.5',\n collapsed && actions && 'h-auto flex-col gap-3 py-3',\n !collapsed && !isMobile && 'w-[calc(var(--sidebar-width)-1rem)]',\n className,\n )}\n {...props}\n >\n {collapsed && collapsedLogo ? (\n <div className=\"group/collapsed-logo relative ml-0.5 grid size-9 shrink-0 place-items-center\">\n <span\n className={cn(\n hold,\n 'grid place-items-center transition-opacity duration-normal [--sidebar-hold-opacity:1] group-focus-within/collapsed-logo:opacity-0 group-hover/sidebar:opacity-0 motion-reduce:transition-none',\n )}\n >\n {collapsedLogo}\n </span>\n {isMobile ? null : (\n <div\n className={cn(\n hold,\n 'absolute inset-0 grid place-items-center opacity-0 transition-opacity duration-normal [--sidebar-hold-opacity:0] group-hover/sidebar:opacity-100 focus-within:opacity-100 motion-reduce:transition-none',\n )}\n >\n <SidebarTrigger />\n </div>\n )}\n </div>\n ) : (\n children\n )}\n {actions}\n </header>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { Kbd } from '@/ds/components/Kbd';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover, quietTextHoverInGroup } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarSearchTriggerProps = ComponentPropsWithoutRef<'button'> & {\n shortcut?: ReactNode;\n};\n\nexport const SidebarSearchTrigger = forwardRef<HTMLButtonElement, SidebarSearchTriggerProps>(\n function SidebarSearchTrigger({ className, children, shortcut, type = 'button', ...props }, ref) {\n return (\n <button\n ref={ref}\n data-slot=\"sidebar-search-trigger\"\n type={type}\n className={cn(\n 'group inline-flex size-control-md shrink-0 items-center justify-center gap-1.5 rounded-full border border-transparent hover:bg-fill-subtle',\n quietTextHover,\n controlStateColorTransition,\n focusRing,\n '[&_svg]:size-4 [&_svg]:shrink-0',\n shortcut && 'w-auto px-2',\n className,\n )}\n {...props}\n >\n {children}\n {shortcut ? (\n <Kbd size=\"xs\" className={cn('bg-surface-overlay-soft active:scale-100', quietTextHoverInGroup)}>\n {shortcut}\n </Kbd>\n ) : null}\n </button>\n );\n },\n);\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavProps = ComponentPropsWithoutRef<'nav'>;\n\nexport function SidebarNav({ 'aria-label': ariaLabel = 'Main', children, className, ...props }: SidebarNavProps) {\n const isMobile = useMaybeSidebarState()?.isMobile ?? false;\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(\n '-mr-1.5 flex min-h-0 flex-1 flex-col',\n '[&_[data-slot=scroll-area-scrollbar][data-orientation=vertical]]:w-1 [&_[data-slot=scroll-area-scrollbar][data-orientation=vertical]]:p-0',\n 'focus-within:[&_[data-slot=scroll-area-scrollbar][data-orientation=vertical][data-has-overflow-y]]:opacity-100',\n isMobile && '[&_a]:min-h-11 [&_a]:touch-manipulation [&_button]:min-h-11 [&_button]:touch-manipulation',\n className,\n )}\n {...props}\n >\n <ScrollArea className=\"min-h-0 flex-1\" mask={{ top: '3rem', bottom: '5rem' }}>\n <ScrollAreaViewport className=\"px-0.5\">\n <div className=\"pr-1.5\">{children}</div>\n </ScrollAreaViewport>\n </ScrollArea>\n </nav>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavHeaderProps = Omit<ComponentPropsWithoutRef<'header'>, 'children'> & {\n children?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n state?: SidebarState;\n href?: string;\n isActive?: boolean;\n LinkComponent?: LinkComponent;\n};\n\nexport function SidebarNavHeader({\n children,\n icon,\n action,\n className,\n state: stateProp,\n href,\n isActive,\n LinkComponent: LinkProp,\n ...props\n}: SidebarNavHeaderProps) {\n const context = useMaybeSidebarState();\n const state = stateProp ?? context?.state ?? 'default';\n const showTitle = state === 'default';\n const Link = LinkProp ?? context?.LinkComponent ?? 'a';\n\n const toneClassName = isActive ? 'text-foreground' : 'text-muted-foreground';\n\n return (\n <div className={cn('flex min-w-0 items-center', showTitle ? 'mt-3 min-h-7' : 'h-10', className)}>\n {showTitle ? (\n <>\n {icon ? (\n <span aria-hidden=\"true\" className={cn('flex shrink-0 pl-3 [&_svg]:size-4', toneClassName)}>\n {icon}\n </span>\n ) : null}\n <header\n {...props}\n className={cn('max-w-full min-w-0 flex-1 truncate text-column', icon ? 'pl-2' : 'pl-3', toneClassName)}\n >\n {href ? (\n <Link\n href={href}\n className={cn('block min-w-0 truncate transition-colors duration-normal', {\n 'hover:text-foreground': !isActive,\n 'text-foreground': isActive,\n })}\n >\n {children}\n </Link>\n ) : (\n children\n )}\n </header>\n {action}\n </>\n ) : (\n <>\n <VisuallyHidden asChild>\n <header {...props}>{children}</header>\n </VisuallyHidden>\n <div aria-hidden=\"true\" className=\"mx-3 h-px flex-1 bg-border\" />\n {action ? <VisuallyHidden>{action}</VisuallyHidden> : null}\n </>\n )}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavLabelProps = ComponentPropsWithoutRef<'span'> & {\n /** Override sidebar state. Defaults to context, then `'default'`. */\n state?: SidebarState;\n};\n\n/**\n * Label slot for `Sidebar.NavLink` rows.\n *\n * Auto-hides via `VisuallyHidden` when the sidebar is collapsed (icon-only row),\n * so screen readers still announce the label without it leaking outside the\n * 28px collapsed item. Handles single-line truncation when expanded.\n *\n * Required for custom `render` and legacy `asChild` consumers — the default\n * `link={...}` path wraps the name internally, but custom elements bring their\n * own children, so the label needs to opt into the collapse-aware rendering.\n */\nexport function SidebarNavLabel({ children, className, state: stateProp, ...rest }: SidebarNavLabelProps) {\n const ctx = useMaybeSidebarState();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n if (state === 'collapsed') {\n return <VisuallyHidden>{children}</VisuallyHidden>;\n }\n return (\n <span {...rest} className={cn('min-w-0 flex-1 truncate text-left', className)}>\n {children}\n </span>\n );\n}\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { surfaceStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// A nav row is a control: same rhythm as a button or a field, from the same rungs, so a\n// sidebar row and a toolbar button in the same app are never 2px apart. A nav label is a\n// label at every row height, so only the box grows — 12px reads too small for a primary\n// navigation target, and 400 weight makes the label recede below its icon.\nconst navItemVariants = cva('flex min-w-0 cursor-pointer items-center rounded-lg text-label whitespace-nowrap', {\n variants: {\n size: {\n sm: controlHeight.sm,\n md: controlHeight.md,\n lg: controlHeight.lg,\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\ntype NavItemVariantProps = VariantProps<typeof navItemVariants>;\n\nexport type SidebarNavItemSize = NonNullable<NavItemVariantProps['size']>;\n\ntype NavRowSurfaceOptions = {\n isActive?: boolean;\n isFeatured?: boolean;\n};\n\ntype NavItemLayoutOptions = {\n isCollapsed?: boolean;\n level?: number;\n size?: SidebarNavItemSize;\n};\n\ntype ItemStyleOptions = NavRowSurfaceOptions & NavItemLayoutOptions;\n\nconst nestedExpandedItemClasses = (level: number) => {\n if (level <= 0) return 'gap-2 py-1 px-3';\n if (level === 1) return `gap-2 py-1 pr-3 pl-8 ${controlHeight.md}`;\n if (level === 2) return `gap-2 py-1 pr-3 pl-10 ${controlHeight.md}`;\n return `gap-2 py-1 pr-3 pl-12 ${controlHeight.md}`;\n};\n\n// Two neutral tones, never more: a row is either quiet (`muted-foreground`) or\n// current (`foreground`). Icons inherit that colour — lucide strokes with\n// `currentColor` — so there is nothing to restate per state.\nconst idleSurface = cn('rounded-lg text-muted-foreground hover:text-foreground', surfaceStateLayerStyle);\n\nconst activeSurface = 'bg-fill text-foreground';\n\nconst featuredSurface = cn(\n 'my-2 border border-transparent bg-brand-green text-black hover:text-black hover:brightness-95',\n);\n\nexport const navRowSurfaceClasses = ({ isActive, isFeatured }: NavRowSurfaceOptions) =>\n cn(idleSurface, isActive && activeSurface, isFeatured && featuredSurface);\n\nexport const navItemLayoutClasses = ({ isCollapsed, level = 0, size }: NavItemLayoutOptions) =>\n cn(\n navItemVariants({ size }),\n 'w-full justify-start',\n controlStateColorTransition,\n '[&_svg]:size-4 [&_svg]:shrink-0',\n focusRing,\n !isCollapsed && nestedExpandedItemClasses(level),\n isCollapsed && 'gap-0 px-[13.5px] py-0',\n );\n\nexport const navItemClasses = ({ isActive, isCollapsed, isFeatured, level, size }: ItemStyleOptions = {}) =>\n cn(navItemLayoutClasses({ isCollapsed, level, size }), navRowSurfaceClasses({ isActive, isFeatured }));\n","import { ChevronRightIcon } from 'lucide-react';\nimport React from 'react';\nimport type { ComponentProps } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { navItemClasses, navItemLayoutClasses, navRowSurfaceClasses } from './sidebar-nav-item-classes';\nimport type { SidebarNavItemSize } from './sidebar-nav-item-classes';\nimport { SidebarNavLabel } from './sidebar-nav-label';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarLink = {\n name: string;\n url: string;\n icon?: React.ReactNode;\n children?: SidebarLink[];\n isActive?: boolean;\n variant?: 'default' | 'featured';\n tooltipMsg?: string;\n opensView?: boolean;\n /** @deprecated Prefer nested `children`; accepted for callers still rendering manual sublinks. */\n indent?: boolean;\n};\n\nexport type SidebarNavLinkProps = Omit<ComponentProps<'li'>, 'children'> & {\n link?: SidebarLink;\n isActive?: boolean;\n state?: SidebarState;\n children?: React.ReactNode;\n size?: SidebarNavItemSize;\n render?: React.ReactElement<SlottedNavChildProps>;\n action?: React.ReactNode;\n LinkComponent?: LinkComponent;\n level?: number;\n subItems?: React.ReactNode;\n /**\n * When true, render `children` as the interactive element.\n * Use for `<button>` items or custom router Links. Item classes are forwarded\n * to the slotted element. `link.url` and `LinkComponent` are ignored; other\n * `link` presentation fields still apply when supplied.\n *\n * @deprecated Prefer typed render composition for new APIs; this legacy\n * slotted prop will be migrated separately.\n */\n asChild?: boolean;\n};\n\ntype SlottedNavChildProps = {\n className?: string;\n children?: React.ReactNode;\n 'aria-current'?: 'page';\n};\n\nexport function SidebarNavLink({\n link,\n state: stateProp,\n children,\n isActive,\n size,\n render,\n action,\n className,\n LinkComponent: LinkProp,\n level: levelProp,\n subItems,\n asChild = false,\n ...props\n}: SidebarNavLinkProps) {\n if (render && asChild) {\n throw new Error('SidebarNavLink accepts either `render` or `asChild`, not both.');\n }\n\n const ctx = useMaybeSidebarState();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const Link: LinkComponent = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const isCollapsed = state === 'collapsed';\n const isFeatured = link?.variant === 'featured';\n const level = levelProp ?? (link?.indent ? 1 : 0);\n const rowAction = isCollapsed ? undefined : action;\n\n const itemClassName = rowAction\n ? cn(navItemLayoutClasses({ level, size }), 'flex-1 pr-1')\n : cn(navItemClasses({ isActive, isCollapsed, isFeatured, level, size }), link?.opensView && !isCollapsed && 'pr-1');\n\n return (\n <li {...props} className={cn('relative flex min-w-0 flex-col', className)}>\n <NavRowBody action={rowAction} surfaceClassName={navRowSurfaceClasses({ isActive, isFeatured })}>\n <NavRowTooltip label={navTooltipLabel(link, isCollapsed)}>\n {navInteractiveRow({ render, asChild, children, link, state, Link, isActive, className: itemClassName })}\n </NavRowTooltip>\n </NavRowBody>\n {!isCollapsed && subItems}\n </li>\n );\n}\n\nfunction navInteractiveRow({\n render,\n asChild,\n children,\n link,\n state,\n Link,\n isActive,\n className,\n}: {\n render?: React.ReactElement<SlottedNavChildProps>;\n asChild: boolean;\n children?: React.ReactNode;\n link?: SidebarLink;\n state: SidebarState;\n Link: LinkComponent;\n isActive?: boolean;\n className: string;\n}) {\n // The current row is announced, not merely tinted: its fill is the only thing that says\n // \"you are here\", and a fill says nothing to a screen reader.\n const current = isActive ? ('page' as const) : undefined;\n const caret =\n link?.opensView && state !== 'collapsed' ? <ChevronRightIcon aria-hidden=\"true\" className=\"!size-3.5\" /> : null;\n\n if (render || asChild) {\n const slotted = render ?? children;\n if (!React.isValidElement<SlottedNavChildProps>(slotted)) {\n throw new Error(\n 'SidebarNavLink requires a valid React element child when `asChild` is true so it can apply `SlottedNavChildProps` and merge `itemClassName`.',\n );\n }\n\n return React.cloneElement(slotted, {\n className: cn(className, slotted.props.className),\n 'aria-current': current,\n children: (\n <>\n {slotted.props.children}\n {caret}\n </>\n ),\n });\n }\n\n if (!link) return children;\n\n const externalParams = /^(https?:)?\\/\\//.test(link.url) ? { target: '_blank', rel: 'noreferrer' } : {};\n\n return (\n <Link href={link.url} {...externalParams} aria-current={current} className={className}>\n {link.icon}\n <SidebarNavLabel state={state}>{link.name}</SidebarNavLabel>\n {children}\n {caret}\n </Link>\n );\n}\n\nfunction navTooltipLabel(link: SidebarLink | undefined, isCollapsed: boolean) {\n if (!link) return undefined;\n if (link.tooltipMsg) return isCollapsed ? `${link.name} | ${link.tooltipMsg}` : link.tooltipMsg;\n return isCollapsed ? link.name : undefined;\n}\n\nfunction NavRowTooltip({ label, children }: { label?: string; children: React.ReactNode }) {\n if (!React.isValidElement(children)) return children;\n\n return (\n <Tooltip disabled={!label}>\n <TooltipTrigger render={children} />\n {label ? (\n <TooltipContent side=\"right\" align=\"center\" sideOffset={16}>\n {label}\n </TooltipContent>\n ) : null}\n </Tooltip>\n );\n}\n\nfunction NavRowBody({\n action,\n surfaceClassName,\n children,\n}: {\n action?: React.ReactNode;\n surfaceClassName: string;\n children: React.ReactNode;\n}) {\n if (!action) return children;\n\n return (\n <div className={cn('flex min-w-0 items-center pr-1', surfaceClassName)}>\n {children}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport function SidebarNavList({ className, children, ...props }: SidebarNavListProps) {\n return (\n <ul className={cn('grid grid-cols-[minmax(0,1fr)] content-center items-start gap-0.5', className)} {...props}>\n {children}\n </ul>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavSectionProps = ComponentPropsWithoutRef<'section'>;\n\nexport function SidebarNavSection({ className, children, ...props }: SidebarNavSectionProps) {\n return (\n <section className={cn('relative grid grid-cols-[minmax(0,1fr)] content-center items-start', className)} {...props}>\n {children}\n </section>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavSeparatorProps = ComponentPropsWithoutRef<'div'>;\n\nexport function SidebarNavSeparator({ className, ...props }: SidebarNavSeparatorProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n 'relative min-h-5',\n '[&:after]:absolute [&:after]:inset-x-3 [&:after]:top-1/2 [&:after]:block [&:after]:h-0 [&:after]:border-t [&:after]:border-border [&:after]:content-[\"\"]',\n className,\n )}\n {...props}\n />\n );\n}\n","import React from 'react';\n\nexport type SidebarNavStackContextValue = {\n activeValue: string;\n rootValue: string;\n closeView: (returnFocusRef?: React.RefObject<HTMLElement | null>) => void;\n};\n\nexport const SidebarNavStackContext = React.createContext<SidebarNavStackContextValue | undefined>(undefined);\n\nexport function useSidebarNavStack() {\n const context = React.useContext(SidebarNavStackContext);\n if (!context) throw new Error('Sidebar.NavStack components must be used within Sidebar.NavStack.');\n return context;\n}\n","import React from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { SidebarNavStackContext } from './sidebar-nav-stack-context';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavStackProps = ComponentPropsWithoutRef<'div'> & {\n value: string;\n rootValue?: string;\n onValueChange: (value: string) => void;\n};\n\nexport function SidebarNavStackRoot({\n value,\n rootValue = 'root',\n onValueChange,\n children,\n className,\n ...props\n}: SidebarNavStackProps) {\n function closeView(returnFocusRef?: React.RefObject<HTMLElement | null>) {\n onValueChange(rootValue);\n requestAnimationFrame(() => {\n const target = returnFocusRef?.current;\n if (target && !target.closest('[inert]')) target.focus();\n });\n }\n\n return (\n <SidebarNavStackContext.Provider value={{ activeValue: value, rootValue, closeView }}>\n <div\n data-slot=\"sidebar-nav-stack\"\n data-value={value}\n className={cn('relative grid min-w-0 overflow-hidden', className)}\n {...props}\n >\n {children}\n </div>\n </SidebarNavStackContext.Provider>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function sidebarNavStackPageClasses(active: boolean, page: 'root' | 'view', className?: string) {\n return cn(\n 'col-start-1 row-start-1 min-w-0 transition-[opacity,translate] duration-normal ease-out-custom will-change-[opacity,translate] motion-reduce:transition-none',\n active && 'relative translate-x-0 opacity-100',\n !active && 'pointer-events-none absolute inset-0 opacity-0',\n !active && page === 'root' && '-translate-x-2',\n !active && page === 'view' && 'translate-x-2',\n className,\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { useSidebarNavStack } from './sidebar-nav-stack-context';\nimport { sidebarNavStackPageClasses } from './sidebar-nav-stack-page-classes';\n\nexport type SidebarNavStackRootViewProps = ComponentPropsWithoutRef<'div'>;\n\nexport function SidebarNavStackRootView({ children, className, ...props }: SidebarNavStackRootViewProps) {\n const { state } = useSidebar();\n const { activeValue, rootValue } = useSidebarNavStack();\n const active = state === 'collapsed' || activeValue === rootValue;\n\n return (\n <div\n {...props}\n data-slot=\"sidebar-nav-stack-root\"\n aria-hidden={!active}\n inert={!active}\n className={sidebarNavStackPageClasses(active, 'root', className)}\n >\n {children}\n </div>\n );\n}\n","import { ArrowLeftIcon } from 'lucide-react';\nimport React from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { navItemClasses } from '../nav/sidebar-nav-item-classes';\nimport { useSidebar } from '../root/sidebar-context';\nimport { useSidebarNavStack } from './sidebar-nav-stack-context';\nimport { sidebarNavStackPageClasses } from './sidebar-nav-stack-page-classes';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavStackViewProps = ComponentPropsWithoutRef<'div'> & {\n value: string;\n title: string;\n backLabel?: string;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n onBack?: () => void;\n};\n\nexport function SidebarNavStackView({\n value,\n title,\n backLabel = 'Back to main navigation',\n returnFocusRef,\n onBack,\n children,\n className,\n ...props\n}: SidebarNavStackViewProps) {\n const { state } = useSidebar();\n const { activeValue, closeView } = useSidebarNavStack();\n const active = state !== 'collapsed' && activeValue === value;\n const backRef = React.useRef<HTMLButtonElement>(null);\n const wasActiveRef = React.useRef(active);\n\n React.useEffect(() => {\n if (active && !wasActiveRef.current) backRef.current?.focus();\n wasActiveRef.current = active;\n }, [active]);\n\n React.useEffect(() => {\n if (!active) return;\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n event.preventDefault();\n closeView(returnFocusRef);\n onBack?.();\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [active, closeView, onBack, returnFocusRef]);\n\n function handleBack() {\n closeView(returnFocusRef);\n onBack?.();\n }\n\n return (\n <div\n {...props}\n data-slot=\"sidebar-nav-stack-view\"\n data-value={value}\n aria-hidden={!active}\n inert={!active}\n className={sidebarNavStackPageClasses(active, 'view', className)}\n >\n <button\n ref={backRef}\n type=\"button\"\n aria-label={`${backLabel}: ${title}`}\n onClick={handleBack}\n className={cn(navItemClasses(), 'mb-2 grid grid-cols-[2rem_1fr_2rem] px-1')}\n >\n <ArrowLeftIcon className=\"justify-self-center\" aria-hidden=\"true\" />\n <span className=\"min-w-0 truncate text-center\">{title}</span>\n <span aria-hidden=\"true\" />\n </button>\n {children}\n </div>\n );\n}\n","import { SidebarNavStackRoot } from './sidebar-nav-stack-root';\nimport { SidebarNavStackRootView } from './sidebar-nav-stack-root-view';\nimport { SidebarNavStackView } from './sidebar-nav-stack-view';\n\nexport type { SidebarNavStackProps } from './sidebar-nav-stack-root';\nexport type { SidebarNavStackRootViewProps } from './sidebar-nav-stack-root-view';\nexport type { SidebarNavStackViewProps } from './sidebar-nav-stack-view';\n\nexport const SidebarNavStack = Object.assign(SidebarNavStackRoot, {\n Root: SidebarNavStackRootView,\n View: SidebarNavStackView,\n});\n","import { MenuIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from './sidebar-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarMobileTriggerProps = ComponentPropsWithoutRef<'button'> & {\n icon?: React.ReactNode;\n};\n\nexport function SidebarMobileTrigger({\n className,\n icon,\n 'aria-label': ariaLabel = 'Open navigation menu',\n onClick,\n ...props\n}: SidebarMobileTriggerProps) {\n const { isMobile, mobileTriggerRef, setOpenMobile } = useSidebar();\n return (\n <button\n ref={mobileTriggerRef}\n type=\"button\"\n aria-label={ariaLabel}\n aria-hidden={!isMobile}\n tabIndex={isMobile ? 0 : -1}\n data-mobile-only\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) setOpenMobile(true);\n }}\n className={cn(\n 'inline-flex size-10 items-center justify-center rounded-md',\n // compound selector, not `in-*` — its `:where()` ties with a consumer's later `.inline-flex`\n \"[[data-sidebar-mobile='false']_&]:hidden\",\n \"[[data-sidebar-mobile-present='true']_&]:invisible\",\n quietTextHover,\n 'hover:bg-fill-subtle',\n focusRing,\n className,\n )}\n >\n {icon ?? <MenuIcon className=\"size-5\" />}\n </button>\n );\n}\n","import React from 'react';\nimport type { CSSProperties } from 'react';\nimport {\n SidebarContext,\n MobileDrawerContext,\n type MobileDrawerContextValue,\n type SidebarState,\n} from './sidebar-context';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst SIDEBAR_STATE_KEY = 'sidebar:state';\nconst SIDEBAR_WIDTH_KEY = 'sidebar:width';\n\nconst SIDEBAR_WIDTH_VAR = '--sidebar-width';\n\ntype InitialSidebarState = {\n state: SidebarState;\n width: number;\n};\n\ntype SidebarScopeStyle = CSSProperties & {\n '--sidebar-width': string;\n '--sidebar-width-mobile': string;\n};\n\nexport type SidebarProviderProps = {\n children: React.ReactNode;\n /** Initial state before localStorage hydrates. Defaults to `'default'`. */\n defaultState?: SidebarState;\n /** Default expanded width in px. Defaults to `240`. */\n defaultWidth?: number;\n /** Minimum draggable width in px. Defaults to `200`. */\n minWidth?: number;\n /** Maximum draggable width in px. Defaults to `480`. */\n maxWidth?: number;\n /** Drag below this value snaps the sidebar closed. Defaults to `minWidth` (snap to collapsed when dragged below the expanded minimum). Pass `0` to disable snap. */\n collapseBelow?: number;\n /** Width in px when collapsed. Defaults to `64`. Set to `0` for fully hidden. */\n collapsedWidth?: number;\n /** Disable the global ⌘B / Ctrl+B toggle shortcut. Defaults to `true` so browser shortcuts are preserved. */\n disableKeyboardShortcut?: boolean;\n /** Scope-key for localStorage. Allows multiple independent sidebars per app. */\n storageKey?: string;\n /** Mobile breakpoint in px (max-width). Below this, sidebar renders as a drawer. Defaults to `1024`. */\n mobileBreakpoint?: number;\n /** Drawer max-width on mobile in px. Actual width is `min(75vw, mobileWidth)`. Defaults to `360`. */\n mobileWidth?: number;\n /** Default LinkComponent injected into SidebarLink/NavHeader. Falls back to plain `<a>` if omitted. */\n LinkComponent?: LinkComponent;\n};\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v));\n\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nexport function SidebarProvider({\n children,\n defaultState = 'default',\n defaultWidth = 240,\n minWidth = 200,\n maxWidth = 480,\n collapseBelow,\n collapsedWidth = 64,\n disableKeyboardShortcut = true,\n storageKey,\n mobileBreakpoint = 1024,\n mobileWidth = 360,\n LinkComponent,\n}: SidebarProviderProps) {\n const safeMin = Math.max(0, Math.min(minWidth, maxWidth));\n const safeMax = Math.max(safeMin, maxWidth);\n const safeCollapsed = Math.max(0, Math.min(collapsedWidth, safeMax));\n const safeDefault = clamp(defaultWidth, safeMin, safeMax);\n const safeCollapseBelow = collapseBelow ?? safeMin;\n\n const stateStorageKey = storageKey ? `${storageKey}:${SIDEBAR_STATE_KEY}` : SIDEBAR_STATE_KEY;\n const widthStorageKey = storageKey ? `${storageKey}:${SIDEBAR_WIDTH_KEY}` : SIDEBAR_WIDTH_KEY;\n\n // Read storage during render so the first paint already has the stored width.\n const readInitial = (): InitialSidebarState => {\n if (typeof window === 'undefined') return { state: defaultState, width: safeDefault };\n try {\n let nextState: SidebarState = defaultState;\n let nextWidth = safeDefault;\n const storedState = window.localStorage.getItem(stateStorageKey);\n if (storedState === 'collapsed' || storedState === 'default') nextState = storedState;\n const storedWidth = window.localStorage.getItem(widthStorageKey);\n if (storedWidth !== null) {\n const parsed = Number(storedWidth);\n if (Number.isFinite(parsed)) nextWidth = clamp(parsed, safeMin, safeMax);\n }\n return { state: nextState, width: nextWidth };\n } catch {\n return { state: defaultState, width: safeDefault };\n }\n };\n const initialRef = React.useRef<InitialSidebarState | null>(null);\n if (initialRef.current === null) initialRef.current = readInitial();\n const initial = initialRef.current;\n\n const [state, setState] = React.useState<SidebarState>(initial.state);\n const [width, setWidthState] = React.useState<number>(initial.width);\n const [isMobile, setIsMobile] = React.useState(false);\n const [openMobile, setOpenMobileState] = React.useState(false);\n const [mobileDrawerPresent, setMobileDrawerPresent] = React.useState(false);\n const openMobileRef = React.useRef(false);\n const mobileTriggerRef = React.useRef<HTMLButtonElement | null>(null);\n const widthRef = React.useRef<number>(initial.width);\n const stateRef = React.useRef<SidebarState>(initial.state);\n stateRef.current = state;\n\n const scopeRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);\n const update = () => setIsMobile(mq.matches);\n update();\n mq.addEventListener('change', update);\n return () => mq.removeEventListener('change', update);\n }, [mobileBreakpoint]);\n\n const setOpenMobile = React.useCallback((open: boolean) => {\n openMobileRef.current = open;\n if (open) setMobileDrawerPresent(true);\n setOpenMobileState(open);\n }, []);\n\n React.useEffect(() => {\n if (!isMobile && openMobile) {\n setOpenMobile(false);\n setMobileDrawerPresent(false);\n }\n }, [isMobile, openMobile, setOpenMobile]);\n\n const writeCssVar = React.useCallback((px: number) => {\n const el = scopeRef.current;\n if (el) el.style.setProperty(SIDEBAR_WIDTH_VAR, `${px}px`);\n }, []);\n\n useIsoLayoutEffect(() => {\n writeCssVar(state === 'collapsed' ? safeCollapsed : widthRef.current);\n }, [state, safeCollapsed, writeCssVar]);\n\n const persistState = React.useCallback(\n (next: SidebarState) => {\n try {\n window.localStorage.setItem(stateStorageKey, next);\n } catch {}\n },\n [stateStorageKey],\n );\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setOpenMobile(!openMobileRef.current);\n return;\n }\n setState(prev => {\n const next = prev === 'default' ? 'collapsed' : 'default';\n // Sync ref: a same-tick `commit()` must persist this state, not the render-time one.\n stateRef.current = next;\n persistState(next);\n return next;\n });\n }, [isMobile, persistState, setOpenMobile]);\n\n const setWidth = React.useCallback(\n (next: number) => {\n const clamped = clamp(next, safeMin, safeMax);\n widthRef.current = clamped;\n writeCssVar(clamped);\n },\n [safeMin, safeMax, writeCssVar],\n );\n\n const collapse = React.useCallback(() => {\n stateRef.current = 'collapsed';\n persistState('collapsed');\n setState('collapsed');\n }, [persistState]);\n const expand = React.useCallback(() => {\n stateRef.current = 'default';\n persistState('default');\n setState('default');\n }, [persistState]);\n\n const commit = React.useCallback(() => {\n setWidthState(widthRef.current);\n try {\n window.localStorage.setItem(stateStorageKey, stateRef.current);\n window.localStorage.setItem(widthStorageKey, String(widthRef.current));\n } catch {}\n }, [stateStorageKey, widthStorageKey]);\n\n const setGestureActive = React.useCallback((active: boolean) => {\n const el = scopeRef.current;\n if (!el) return;\n if (active) el.setAttribute('data-sidebar-gesture', 'active');\n else el.removeAttribute('data-sidebar-gesture');\n }, []);\n\n React.useEffect(() => {\n if (disableKeyboardShortcut) return;\n const onKeyDown = (ev: KeyboardEvent) => {\n // `code` is layout-independent — works on non-Latin keyboards.\n if (ev.code !== 'KeyB') return;\n if (!(ev.metaKey || ev.ctrlKey)) return;\n if (ev.altKey || ev.shiftKey) return;\n if (ev.target instanceof HTMLElement) {\n const tag = ev.target.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;\n if (ev.target.isContentEditable) return;\n }\n ev.preventDefault();\n toggleSidebar();\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [disableKeyboardShortcut, toggleSidebar]);\n\n const effectiveState: SidebarState = isMobile ? 'default' : state;\n\n const contextValue = React.useMemo(\n () => ({\n state: effectiveState,\n desktopState: state,\n width,\n minWidth: safeMin,\n maxWidth: safeMax,\n collapseBelow: safeCollapseBelow,\n collapsedWidth: safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n }),\n [\n effectiveState,\n state,\n width,\n safeMin,\n safeMax,\n safeCollapseBelow,\n safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n ],\n );\n\n const drawerValue = React.useMemo<MobileDrawerContextValue>(\n () => ({ openMobile, mobileTriggerRef, setOpenMobile, setMobileDrawerPresent }),\n [openMobile, setOpenMobile],\n );\n\n const scopeStyle: SidebarScopeStyle = {\n [SIDEBAR_WIDTH_VAR]: `${initial.state === 'collapsed' ? safeCollapsed : initial.width}px`,\n '--sidebar-width-mobile': `${mobileWidth}px`,\n display: 'contents',\n };\n\n return (\n <div\n ref={scopeRef}\n data-sidebar-scope\n data-sidebar-state={state}\n data-sidebar-mobile={isMobile ? 'true' : 'false'}\n data-sidebar-mobile-present={mobileDrawerPresent ? 'true' : 'false'}\n style={scopeStyle}\n suppressHydrationWarning\n >\n <SidebarContext.Provider value={contextValue}>\n <MobileDrawerContext.Provider value={drawerValue}>{children}</MobileDrawerContext.Provider>\n </SidebarContext.Provider>\n </div>\n );\n}\n","import { MenuIcon } from 'lucide-react';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useSidebar } from './sidebar-context';\nimport { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerTitle } from '@/ds/components/Drawer';\nimport { overlaySurfaceStyle, surfaceGroupStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport { ResizeHandleIndicator } from '@/ds/primitives/resize-handle-indicator';\nimport { quietTextHoverInGroup } from '@/ds/primitives/typography';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarPanelProps = {\n children: React.ReactNode;\n className?: string;\n mobileMode?: 'drawer' | 'takeover';\n};\n\nconst KEYBOARD_STEP = 10;\nconst DRAG_THRESHOLD = 5;\n\nexport function SidebarPanel({ children, className, mobileMode = 'drawer' }: SidebarPanelProps) {\n const {\n state,\n width,\n minWidth,\n maxWidth,\n collapseBelow,\n collapsedWidth,\n isMobile,\n openMobile,\n mobileTriggerRef,\n setOpenMobile,\n setMobileDrawerPresent,\n setWidth,\n collapse,\n expand,\n commit,\n toggleSidebar,\n setGestureActive,\n } = useSidebar();\n const isCollapsed = state === 'collapsed';\n const isHidden = isCollapsed && collapsedWidth === 0;\n\n const draggedRef = useRef(false);\n const dragCleanupRef = useRef<(() => void) | null>(null);\n\n useEffect(() => {\n return () => {\n dragCleanupRef.current?.();\n dragCleanupRef.current = null;\n };\n }, []);\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n event.preventDefault();\n\n draggedRef.current = false;\n setGestureActive(true);\n\n const startX = event.clientX;\n const handle = event.currentTarget;\n const pointerId = event.pointerId;\n\n try {\n handle.setPointerCapture(pointerId);\n } catch {\n // The pointer may have ended before capture.\n }\n\n const sidebarEl = handle.parentElement;\n const sidebarLeft = sidebarEl ? sidebarEl.getBoundingClientRect().left : 0;\n\n const prevCursor = document.body.style.cursor;\n const prevUserSelect = document.body.style.userSelect;\n\n const onMove = (ev: PointerEvent) => {\n if (ev.pointerId !== pointerId) return;\n const dx = ev.clientX - startX;\n if (!draggedRef.current) {\n if (Math.abs(dx) <= DRAG_THRESHOLD) return;\n draggedRef.current = true;\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n const cursorWidth = ev.clientX - sidebarLeft;\n\n if (collapseBelow > 0 && cursorWidth < collapseBelow) {\n collapse();\n return;\n }\n expand();\n setWidth(cursorWidth);\n };\n const cleanup = (ev?: PointerEvent) => {\n if (ev && ev.pointerId !== pointerId) return;\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', cleanup);\n window.removeEventListener('pointercancel', cleanup);\n document.body.style.cursor = prevCursor;\n document.body.style.userSelect = prevUserSelect;\n setGestureActive(false);\n commit();\n dragCleanupRef.current = null;\n };\n dragCleanupRef.current = () => cleanup();\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', cleanup);\n window.addEventListener('pointercancel', cleanup);\n },\n [collapseBelow, setWidth, expand, collapse, commit, setGestureActive],\n );\n\n const onClick = useCallback(() => {\n if (draggedRef.current) {\n draggedRef.current = false;\n return;\n }\n toggleSidebar();\n }, [toggleSidebar]);\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n toggleSidebar();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (isCollapsed) return;\n setWidth(width - KEYBOARD_STEP);\n commit();\n return;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (isCollapsed) {\n expand();\n commit();\n return;\n }\n setWidth(width + KEYBOARD_STEP);\n commit();\n return;\n }\n case 'Home': {\n event.preventDefault();\n expand();\n setWidth(minWidth);\n commit();\n return;\n }\n case 'End': {\n event.preventDefault();\n expand();\n setWidth(maxWidth);\n commit();\n return;\n }\n }\n },\n [isCollapsed, width, minWidth, maxWidth, setWidth, expand, commit, toggleSidebar],\n );\n\n // Client-side routers preventDefault but should still close the drawer.\n const closeOnAnchor = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (!(event.target instanceof Element)) return;\n const anchor = event.target.closest<HTMLAnchorElement>('a');\n if (!anchor || !anchor.hasAttribute('href')) return;\n\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n\n if (anchor.target === '_blank' || anchor.hasAttribute('download')) return;\n setOpenMobile(false);\n },\n [setOpenMobile],\n );\n\n if (isMobile) {\n return (\n <Drawer\n side=\"left\"\n open={openMobile}\n onOpenChange={setOpenMobile}\n onOpenChangeComplete={open => {\n if (!open) setMobileDrawerPresent(false);\n }}\n >\n <DrawerContent\n data-mobile-mode={mobileMode}\n finalFocus={mobileTriggerRef}\n showCloseButton={mobileMode === 'drawer'}\n className={cn(\n 'border-0 bg-sidebar text-foreground',\n mobileMode === 'takeover'\n ? 'w-[calc(100%-3.5rem)] max-w-none overflow-visible rounded-l-none rounded-r-3xl pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]'\n : 'w-3/4 max-w-(--sidebar-width-mobile) overflow-hidden rounded-none',\n className,\n )}\n >\n {mobileMode === 'takeover' ? (\n <DrawerClose asChild>\n <button\n type=\"button\"\n aria-label=\"Close\"\n className=\"group absolute top-2 -right-12 z-10 inline-flex size-11 touch-manipulation items-center justify-center transition-opacity duration-fast group-data-[ending-style]/popup:opacity-0 focus-visible:outline-hidden motion-reduce:duration-0\"\n >\n <span\n className={cn(\n overlaySurfaceStyle,\n quietTextHoverInGroup,\n surfaceGroupStateLayerStyle,\n 'inline-flex size-9 items-center justify-center rounded-full backdrop-blur-sm group-focus-visible:ring-1 group-focus-visible:ring-border-focus',\n )}\n >\n <MenuIcon className=\"size-4\" />\n </span>\n </button>\n </DrawerClose>\n ) : null}\n <VisuallyHidden asChild>\n <DrawerTitle>Navigation</DrawerTitle>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DrawerDescription>Primary site navigation drawer</DrawerDescription>\n </VisuallyHidden>\n <div\n onClick={closeOnAnchor}\n className={cn(\n 'flex h-full min-h-0 flex-col overflow-hidden py-2',\n mobileMode === 'takeover' ? 'px-4' : 'px-3',\n )}\n >\n {children}\n </div>\n </DrawerContent>\n </Drawer>\n );\n }\n\n const currentWidth = isCollapsed ? collapsedWidth : width;\n return (\n <div\n className={cn(\n 'sidebar-layout group/sidebar t-resize relative min-h-0 shrink-0 self-stretch bg-sidebar text-foreground',\n 'w-(--sidebar-width)',\n 'in-data-[sidebar-gesture=active]:transition-none',\n className,\n\n isHidden && 'border-r-0 border-transparent',\n )}\n >\n <div\n className={cn(\n 'flex h-full min-h-0 flex-col overflow-hidden',\n 'transition-opacity duration-200 motion-reduce:transition-none',\n // Inset on every side, like the mobile drawer's container, so the header and footer never touch an edge.\n 'p-2',\n isHidden && 'pointer-events-none p-0 opacity-0',\n )}\n >\n {children}\n </div>\n\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n\n aria-valuenow={isCollapsed ? undefined : currentWidth}\n aria-valuemin={isCollapsed ? undefined : minWidth}\n aria-valuemax={isCollapsed ? undefined : maxWidth}\n aria-valuetext={isCollapsed ? 'collapsed' : `${currentWidth} pixels`}\n aria-label={`Resize sidebar. Arrow keys to resize, Enter to ${isCollapsed ? 'expand' : 'collapse'}.`}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={cn(\n 'group absolute top-0 -right-1 z-10 h-full w-2 cursor-col-resize touch-none',\n 'flex items-center justify-center',\n 'focus-visible:outline-hidden',\n )}\n >\n <ResizeHandleIndicator\n className={cn(\n 'via-foreground/30 group-hover:opacity-100',\n 'group-focus-visible:via-border-focus group-focus-visible:opacity-100',\n 'in-data-[sidebar-gesture=active]:via-foreground/45 in-data-[sidebar-gesture=active]:opacity-100',\n )}\n />\n </div>\n </div>\n );\n}\n","import { useMaybeSidebarState } from './sidebar-context';\nimport type { SidebarPanelProps } from './sidebar-panel';\nimport { SidebarPanel } from './sidebar-panel';\nimport { frameSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarRootProps = SidebarPanelProps & {\n 'aria-label'?: string;\n variant?: 'default' | 'raised';\n};\n\nexport function SidebarRoot({\n 'aria-label': ariaLabel = 'Sidebar',\n mobileMode = 'takeover',\n variant = 'default',\n children,\n ...props\n}: SidebarRootProps) {\n const sidebar = useMaybeSidebarState();\n const isRaised = variant === 'raised' && !sidebar?.isMobile;\n\n return (\n <aside aria-label={ariaLabel} className=\"contents\">\n <SidebarPanel mobileMode={mobileMode} {...props}>\n {isRaised ? (\n <div\n data-slot=\"sidebar-surface\"\n className={cn(\n '-mr-2 -ml-4 flex min-h-0 flex-1 flex-col overflow-hidden rounded-r-xl py-1.5',\n sidebar?.state === 'collapsed' ? 'pr-2 pl-4' : 'pr-3.5 pl-5.5',\n frameSurfaceStyle,\n )}\n >\n {children}\n </div>\n ) : (\n children\n )}\n </SidebarPanel>\n </aside>\n );\n}\n","import { z } from 'zod/v4';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\n\nexport const sidebarLinkPlacements = ['sidebar', 'more', 'hidden'] as const;\nexport type SidebarLinkPlacement = (typeof sidebarLinkPlacements)[number];\n\nexport const sidebarLinkPlacementLabels: Record<SidebarLinkPlacement, string> = {\n sidebar: 'Always show',\n more: 'Hide in More menu',\n hidden: 'Never show',\n};\n\nexport const placementsSchema = z.record(z.string(), z.enum(sidebarLinkPlacements));\nexport type SidebarLinkPlacements = z.infer<typeof placementsSchema>;\n\nexport const defaultVisibilityStorageKey = 'mastra:sidebar:link-visibility';\n\nexport type OptionalSidebarLink = SidebarLink & { defaultVisible?: boolean };\n\nexport function getSidebarLinkKey(link: SidebarLink) {\n return `${link.url}:${link.name}`;\n}\n\nexport function getSidebarVisibilityKey(sectionKey: string, link: SidebarLink) {\n return `${sectionKey}:${link.name}`;\n}\n\nexport function getDefaultPlacement(link: OptionalSidebarLink, optionalLinkCount: number): SidebarLinkPlacement {\n const visible = link.defaultVisible ?? optionalLinkCount < 2;\n return visible ? 'sidebar' : 'more';\n}\n\nexport function isSidebarLinkPlacement(value: unknown): value is SidebarLinkPlacement {\n return sidebarLinkPlacements.some(placement => placement === value);\n}\n","import { useId } from 'react';\nimport type { RefObject } from 'react';\nimport type { SidebarSection } from './sidebar-sections';\nimport {\n getSidebarLinkKey,\n isSidebarLinkPlacement,\n sidebarLinkPlacementLabels,\n sidebarLinkPlacements,\n} from './sidebar-visibility';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Txt } from '@/ds/components/Txt';\n\nexport type SidebarCustomizeDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n returnFocusRef: RefObject<HTMLElement | null>;\n sections: SidebarSection[];\n placementOf: (sectionKey: string, link: OptionalSidebarLink, optionalLinkCount: number) => SidebarLinkPlacement;\n onPlacementChange: (sectionKey: string, link: OptionalSidebarLink, placement: SidebarLinkPlacement) => void;\n};\n\nexport function SidebarCustomizeDialog({\n open,\n onOpenChange,\n returnFocusRef,\n sections,\n placementOf,\n onPlacementChange,\n}: SidebarCustomizeDialogProps) {\n const baseId = useId();\n const customizableSections = sections.filter(section => (section.moreLinks?.length ?? 0) > 0);\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent size=\"md\" finalFocus={returnFocusRef}>\n <DialogHeader>\n <DialogTitle>Customize sidebar</DialogTitle>\n <DialogDescription>\n Choose where each optional link appears. Changes save automatically in this browser.\n </DialogDescription>\n </DialogHeader>\n <DialogBody className=\"space-y-5\">\n {customizableSections.map(section => {\n const links = section.moreLinks ?? [];\n const headingId = section.title ? `${baseId}-${section.key}` : undefined;\n\n return (\n <section\n key={section.key}\n aria-labelledby={headingId}\n aria-label={headingId ? undefined : section.key}\n className=\"space-y-2\"\n >\n {section.title ? (\n <Txt as=\"h3\" id={headingId} variant=\"label\" tone=\"muted\">\n {section.title}\n </Txt>\n ) : null}\n <ul className=\"divide-y divide-border rounded-lg border border-border\">\n {links.map(link => (\n <li key={getSidebarLinkKey(link)} className=\"flex min-h-11 items-center gap-2.5 py-1.5 pr-1.5 pl-3\">\n <span aria-hidden=\"true\" className=\"flex shrink-0 text-muted-foreground [&_svg]:size-4\">\n {link.icon}\n </span>\n <Txt as=\"span\" variant=\"body-sm\" className=\"min-w-0 flex-1 truncate\">\n {link.name}\n </Txt>\n <Select\n value={placementOf(section.key, link, links.length)}\n onValueChange={placement => {\n if (isSidebarLinkPlacement(placement)) onPlacementChange(section.key, link, placement);\n }}\n >\n <SelectTrigger\n size=\"sm\"\n variant=\"ghost\"\n className=\"w-44 shrink-0\"\n aria-label={`${link.name} placement`}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {sidebarLinkPlacements.map(placement => (\n <SelectItem key={placement} value={placement}>\n {sidebarLinkPlacementLabels[placement]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </li>\n ))}\n </ul>\n </section>\n );\n })}\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n}\n","import type { ComponentProps } from 'react';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarNavLink } from '../nav/sidebar-nav-link';\nimport { SidebarNavList } from '../nav/sidebar-nav-list';\nimport { getSidebarLinkKey } from './sidebar-visibility';\n\nexport type SidebarSectionLinkProps = Omit<ComponentProps<'li'>, 'children'> & {\n link: SidebarLink;\n activeCandidates: SidebarLink[];\n level?: number;\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n};\n\nexport function SidebarSectionLink({ link, activeCandidates, level = 0, isActive, ...props }: SidebarSectionLinkProps) {\n const childLinks = link.children ?? [];\n\n return (\n <SidebarNavLink\n {...props}\n link={link}\n isActive={isActive?.(link, activeCandidates) ?? link.isActive}\n level={level}\n subItems={\n childLinks.length > 0 ? (\n <SidebarNavList className=\"mt-0.5\">\n {childLinks.map(child => (\n <SidebarSectionLink\n key={getSidebarLinkKey(child)}\n link={child}\n activeCandidates={activeCandidates}\n level={level + 1}\n isActive={isActive}\n />\n ))}\n </SidebarNavList>\n ) : null\n }\n />\n );\n}\n","import { useRef } from 'react';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarSectionLink } from './sidebar-section-link';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport { isSidebarLinkPlacement, sidebarLinkPlacementLabels, sidebarLinkPlacements } from './sidebar-visibility';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\n\nexport type SidebarOptionalLinkProps = {\n link: OptionalSidebarLink;\n activeCandidates: SidebarLink[];\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n placement: SidebarLinkPlacement;\n onPlacementChange: (placement: SidebarLinkPlacement) => void;\n onCustomize: (returnFocusTo: HTMLElement | null) => void;\n};\n\nexport function SidebarOptionalLink({\n link,\n activeCandidates,\n isActive,\n placement,\n onPlacementChange,\n onCustomize,\n}: SidebarOptionalLinkProps) {\n const itemRef = useRef<HTMLElement | null>(null);\n\n return (\n <ContextMenu>\n <ContextMenu.Trigger\n ref={(node: HTMLElement | null) => {\n itemRef.current = node;\n }}\n render={<SidebarSectionLink link={link} activeCandidates={activeCandidates} isActive={isActive} />}\n />\n <ContextMenu.Content aria-label={`${link.name} options`}>\n <ContextMenu.RadioGroup\n value={placement}\n onValueChange={value => {\n if (isSidebarLinkPlacement(value)) onPlacementChange(value);\n }}\n >\n {sidebarLinkPlacements.map(option => (\n <ContextMenu.RadioItem key={option} value={option}>\n {sidebarLinkPlacementLabels[option]}\n </ContextMenu.RadioItem>\n ))}\n </ContextMenu.RadioGroup>\n <ContextMenu.Separator />\n <ContextMenu.Item onClick={() => onCustomize(itemRef.current?.querySelector('a') ?? null)}>\n Customize sidebar…\n </ContextMenu.Item>\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n","import { MoreHorizontalIcon, Settings2Icon } from 'lucide-react';\nimport { Fragment, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { SidebarNavLabel } from '../nav/sidebar-nav-label';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarNavLink } from '../nav/sidebar-nav-link';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { SidebarOptionalLink } from './sidebar-optional-link';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport { getDefaultPlacement, getSidebarLinkKey } from './sidebar-visibility';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\n\nexport type SidebarMoreLinksProps = {\n links: OptionalSidebarLink[];\n activeCandidates: SidebarLink[];\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n placementOf: (link: OptionalSidebarLink) => SidebarLinkPlacement;\n onPlacementChange: (link: OptionalSidebarLink, placement: SidebarLinkPlacement) => void;\n onCustomize: (returnFocusTo: HTMLElement | null, getMoreTrigger: () => HTMLElement | null) => void;\n};\n\nexport function SidebarMoreLinks({\n links,\n activeCandidates,\n isActive,\n placementOf,\n onPlacementChange,\n onCustomize,\n}: SidebarMoreLinksProps) {\n const context = useMaybeSidebarState();\n const Link = context?.LinkComponent ?? 'a';\n const linkIsActive = (link: SidebarLink) => isActive?.(link, activeCandidates) ?? link.isActive ?? false;\n const shownLinks = links.filter(link => linkIsActive(link) || placementOf(link) === 'sidebar');\n const moreMenuLinks = links.filter(link => !shownLinks.includes(link) && placementOf(link) === 'more');\n const isCustomized = links.some(link => placementOf(link) !== getDefaultPlacement(link, links.length));\n const hasMoreRow = links.length > 1 || moreMenuLinks.length > 0 || isCustomized;\n const moreTriggerRef = useRef<HTMLButtonElement>(null);\n\n function renderMenuLink(link: SidebarLink, nested = false): ReactNode {\n return (\n <Fragment key={getSidebarLinkKey(link)}>\n <DropdownMenu.Item\n nativeButton={false}\n inset={nested}\n render={\n <Link\n href={link.url}\n {...(/^(https?:)?\\/\\//.test(link.url) ? { target: '_blank', rel: 'noreferrer' } : {})}\n />\n }\n aria-current={linkIsActive(link) ? 'page' : undefined}\n >\n {link.icon}\n {link.name}\n </DropdownMenu.Item>\n {link.children?.map(child => renderMenuLink(child, true))}\n </Fragment>\n );\n }\n\n return (\n <>\n {shownLinks.map(link => (\n <SidebarOptionalLink\n key={getSidebarLinkKey(link)}\n link={link}\n activeCandidates={activeCandidates}\n isActive={isActive}\n placement={placementOf(link)}\n onPlacementChange={placement => onPlacementChange(link, placement)}\n onCustomize={returnFocusTo => onCustomize(returnFocusTo, () => moreTriggerRef.current)}\n />\n ))}\n {hasMoreRow ? (\n <DropdownMenu modal={false}>\n <SidebarNavLink\n link={{ name: 'More', url: '', icon: <MoreHorizontalIcon /> }}\n render={\n <DropdownMenu.Trigger ref={moreTriggerRef} render={<button type=\"button\" />} aria-label=\"More\">\n <MoreHorizontalIcon aria-hidden=\"true\" />\n <SidebarNavLabel>More</SidebarNavLabel>\n </DropdownMenu.Trigger>\n }\n />\n <DropdownMenu.Content align=\"start\" aria-label=\"More navigation\" className=\"min-w-44\">\n {moreMenuLinks.map(link => renderMenuLink(link))}\n {moreMenuLinks.length > 0 && <DropdownMenu.Separator />}\n <DropdownMenu.Item onClick={() => onCustomize(moreTriggerRef.current, () => moreTriggerRef.current)}>\n <Settings2Icon />\n Customize sidebar\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : null}\n </>\n );\n}\n","import { useId, useRef, useState } from 'react';\nimport { SidebarNavHeader } from '../nav/sidebar-nav-header';\nimport { SidebarNavList } from '../nav/sidebar-nav-list';\nimport { SidebarNavSection } from '../nav/sidebar-nav-section';\nimport { SidebarNavSeparator } from '../nav/sidebar-nav-separator';\nimport { SidebarCustomizeDialog } from './sidebar-customize-dialog';\nimport { SidebarMoreLinks } from './sidebar-more-links';\nimport { SidebarSectionLink } from './sidebar-section-link';\nimport type { SidebarSectionsProps } from './sidebar-sections';\nimport {\n getDefaultPlacement,\n getSidebarLinkKey,\n getSidebarVisibilityKey,\n placementsSchema,\n} from './sidebar-visibility';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport { useLocalStorageState } from '@/hooks/use-local-storage-state';\n\nexport function SidebarSectionsContent({\n sections,\n isActive,\n className,\n visibilityStorageKey,\n}: SidebarSectionsProps & { visibilityStorageKey: string }) {\n const baseId = useId();\n const [customizeOpen, setCustomizeOpen] = useState(false);\n const customizeReturnFocusRef = useRef<HTMLElement | null>(null);\n const getCustomizeFallbackRef = useRef<() => HTMLElement | null>(() => null);\n const [placements, setPlacements] = useLocalStorageState({\n initialKey: visibilityStorageKey,\n defaultValue: {},\n schema: placementsSchema,\n });\n\n function placementOf(sectionKey: string, link: OptionalSidebarLink, optionalLinkCount: number) {\n return placements[getSidebarVisibilityKey(sectionKey, link)] ?? getDefaultPlacement(link, optionalLinkCount);\n }\n\n function openCustomize(returnFocusTo: HTMLElement | null, getMoreTrigger: () => HTMLElement | null) {\n customizeReturnFocusRef.current = returnFocusTo;\n getCustomizeFallbackRef.current = getMoreTrigger;\n setCustomizeOpen(true);\n }\n\n function changeCustomizeOpen(open: boolean) {\n if (!open && !customizeReturnFocusRef.current?.isConnected) {\n customizeReturnFocusRef.current = getCustomizeFallbackRef.current();\n }\n setCustomizeOpen(open);\n }\n\n function changePlacement(sectionKey: string, link: OptionalSidebarLink, placement: SidebarLinkPlacement) {\n setPlacements(current => ({ ...current, [getSidebarVisibilityKey(sectionKey, link)]: placement }));\n }\n\n return (\n <>\n {sections.map(section => {\n const showSeparator = section.links.length > 0 && section.separator;\n const headerId = section.title ? `${baseId}-${section.key}` : undefined;\n const moreLinks = section.moreLinks ?? [];\n const activeCandidates = [...section.links, ...moreLinks];\n\n return (\n <SidebarNavSection\n key={section.key}\n className={className}\n aria-labelledby={headerId}\n aria-label={!headerId ? section.key : undefined}\n >\n {showSeparator ? <SidebarNavSeparator className=\"[&:after]:border-border\" /> : null}\n {section.title ? (\n <SidebarNavHeader id={headerId} href={section.href} isActive={section.isHeaderActive}>\n {section.title}\n </SidebarNavHeader>\n ) : null}\n <SidebarNavList>\n {section.links.map(link => (\n <SidebarSectionLink\n key={getSidebarLinkKey(link)}\n link={link}\n activeCandidates={activeCandidates}\n isActive={isActive}\n />\n ))}\n {moreLinks.length > 0 ? (\n <SidebarMoreLinks\n links={moreLinks}\n activeCandidates={activeCandidates}\n isActive={isActive}\n placementOf={link => placementOf(section.key, link, moreLinks.length)}\n onPlacementChange={(link, placement) => changePlacement(section.key, link, placement)}\n onCustomize={openCustomize}\n />\n ) : null}\n </SidebarNavList>\n </SidebarNavSection>\n );\n })}\n <SidebarCustomizeDialog\n open={customizeOpen}\n onOpenChange={changeCustomizeOpen}\n returnFocusRef={customizeReturnFocusRef}\n sections={sections}\n placementOf={placementOf}\n onPlacementChange={changePlacement}\n />\n </>\n );\n}\n","import type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarSectionsContent } from './sidebar-sections-content';\nimport { defaultVisibilityStorageKey } from './sidebar-visibility';\nimport type { OptionalSidebarLink } from './sidebar-visibility';\n\nexport type SidebarSection = {\n key: string;\n title?: string;\n href?: string;\n links: SidebarLink[];\n moreLinks?: OptionalSidebarLink[];\n separator?: boolean;\n isHeaderActive?: boolean;\n};\n\nexport type SidebarSectionsProps = {\n sections: SidebarSection[];\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n className?: string;\n visibilityStorageKey?: string;\n};\n\nexport function SidebarSections({\n visibilityStorageKey = defaultVisibilityStorageKey,\n ...props\n}: SidebarSectionsProps) {\n return <SidebarSectionsContent key={visibilityStorageKey} {...props} visibilityStorageKey={visibilityStorageKey} />;\n}\n","import { SidebarFooter } from './footer/sidebar-footer';\nimport { SidebarFooterMeta } from './footer/sidebar-footer-meta';\nimport { SidebarMeter } from './footer/sidebar-meter';\nimport { SidebarBrand } from './header/sidebar-brand';\nimport { SidebarCommandHeader } from './header/sidebar-command-header';\nimport { SidebarHeader } from './header/sidebar-header';\nimport { SidebarSearchTrigger } from './header/sidebar-search-trigger';\nimport { SidebarNav } from './nav/sidebar-nav';\nimport { SidebarNavHeader } from './nav/sidebar-nav-header';\nimport { SidebarNavLabel } from './nav/sidebar-nav-label';\nimport { SidebarNavLink } from './nav/sidebar-nav-link';\nimport { SidebarNavList } from './nav/sidebar-nav-list';\nimport { SidebarNavSection } from './nav/sidebar-nav-section';\nimport { SidebarNavSeparator } from './nav/sidebar-nav-separator';\nimport { SidebarNavStack } from './nav-stack/sidebar-nav-stack';\nimport { SidebarMobileTrigger } from './root/sidebar-mobile-trigger';\nimport { SidebarProvider } from './root/sidebar-provider';\nimport { SidebarRoot } from './root/sidebar-root';\nimport { SidebarTrigger } from './root/sidebar-trigger';\nimport { SidebarSections } from './sections/sidebar-sections';\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Brand: SidebarBrand,\n CommandHeader: SidebarCommandHeader,\n Footer: SidebarFooter,\n FooterMeta: SidebarFooterMeta,\n Header: SidebarHeader,\n Meter: SidebarMeter,\n MobileTrigger: SidebarMobileTrigger,\n Nav: SidebarNav,\n NavHeader: SidebarNavHeader,\n NavLabel: SidebarNavLabel,\n NavLink: SidebarNavLink,\n NavList: SidebarNavList,\n NavSection: SidebarNavSection,\n NavSeparator: SidebarNavSeparator,\n NavStack: SidebarNavStack,\n Provider: SidebarProvider,\n SearchTrigger: SidebarSearchTrigger,\n Sections: SidebarSections,\n Trigger: SidebarTrigger,\n});\n","import type { SidebarLink } from './sidebar-nav-link';\n\n/**\n * Strict active-path match with sibling-exclusion.\n * - `pathname === link.url` or starts with `link.url + '/'`\n * - Not active if any sibling link has a longer matching url (prevents `/a` lighting while `/a/b` matches).\n */\nexport function getIsLinkActive(link: SidebarLink, pathname: string, siblings: SidebarLink[] = []): boolean {\n const matches = (url: string) => pathname === url || pathname.startsWith(url + '/');\n const flattenLinks = (links: SidebarLink[]): SidebarLink[] =>\n links.flatMap(item => [item, ...flattenLinks(item.children ?? [])]);\n\n if (!matches(link.url)) return false;\n const competingLinks = [...flattenLinks(link.children ?? []), ...flattenLinks(siblings)];\n return !competingLinks.some(\n other => other.url !== link.url && other.url.length > link.url.length && matches(other.url),\n );\n}\n"],"names":["jsx","cn","forwardRef","SidebarFooterMeta","jsxs","SidebarMeter","Txt","surfaceStateLayerStyle","VisuallyHidden","SidebarCommandHeader","Tooltip","TooltipTrigger","focusRing","PanelLeftIcon","TooltipContent","Kbd","SidebarSearchTrigger","quietTextHover","controlStateColorTransition","quietTextHoverInGroup","ScrollArea","ScrollAreaViewport","Fragment","cva","controlHeight","ChevronRightIcon","ArrowLeftIcon","MenuIcon","useRef","useEffect","useCallback","Drawer","DrawerContent","DrawerClose","overlaySurfaceStyle","surfaceGroupStateLayerStyle","DrawerTitle","DrawerDescription","ResizeHandleIndicator","frameSurfaceStyle","z","useId","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ContextMenu","DropdownMenu","MoreHorizontalIcon","Settings2Icon","useState","useLocalStorageState"],"mappings":"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"}
1
+ {"version":3,"file":"Sidebar.cjs.js","sources":["../../src/ds/components/Sidebar/footer/sidebar-footer.tsx","../../src/ds/components/Sidebar/root/sidebar-context.ts","../../src/ds/components/Sidebar/footer/sidebar-footer-meta.tsx","../../src/ds/components/Sidebar/footer/sidebar-meter.tsx","../../src/ds/components/Sidebar/header/sidebar-brand.tsx","../../src/ds/components/Sidebar/header/sidebar-command-header.tsx","../../src/ds/components/Sidebar/root/sidebar-trigger.tsx","../../src/ds/components/Sidebar/header/sidebar-header.tsx","../../src/ds/components/Sidebar/header/sidebar-search-trigger.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-header.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-label.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-item-classes.ts","../../src/ds/components/Sidebar/nav/sidebar-nav-link.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-list.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-section.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-separator.tsx","../../src/ds/components/Sidebar/nav/sidebar-nav-show-more.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-context.ts","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-root.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-page-classes.ts","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-root-view.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack-view.tsx","../../src/ds/components/Sidebar/nav-stack/sidebar-nav-stack.ts","../../src/ds/components/Sidebar/root/sidebar-mobile-trigger.tsx","../../src/ds/components/Sidebar/root/sidebar-provider.tsx","../../src/ds/components/Sidebar/root/sidebar-panel.tsx","../../src/ds/components/Sidebar/root/sidebar-root.tsx","../../src/ds/components/Sidebar/sections/sidebar-visibility.ts","../../src/ds/components/Sidebar/sections/sidebar-customize-dialog.tsx","../../src/ds/components/Sidebar/sections/sidebar-section-link.tsx","../../src/ds/components/Sidebar/sections/sidebar-optional-link.tsx","../../src/ds/components/Sidebar/sections/sidebar-more-links.tsx","../../src/ds/components/Sidebar/sections/sidebar-sections-content.tsx","../../src/ds/components/Sidebar/sections/sidebar-sections.tsx","../../src/ds/components/Sidebar/sidebar.ts","../../src/ds/components/Sidebar/nav/sidebar-link-active.ts"],"sourcesContent":["import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarFooterProps = ComponentPropsWithoutRef<'footer'>;\n\nexport function SidebarFooter({ className, children, ...props }: SidebarFooterProps) {\n return (\n <footer data-slot=\"sidebar-footer\" className={cn('mt-auto shrink-0 space-y-1.5', className)} {...props}>\n {children}\n </footer>\n );\n}\n","import React from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nexport type SidebarState = 'default' | 'collapsed';\n\ntype SidebarContextValue = {\n state: SidebarState;\n desktopState: SidebarState;\n width: number;\n minWidth: number;\n maxWidth: number;\n collapseBelow: number;\n collapsedWidth: number;\n isMobile: boolean;\n openMobile: boolean;\n mobileTriggerRef: React.RefObject<HTMLButtonElement | null>;\n setOpenMobile: (open: boolean) => void;\n setMobileDrawerPresent: (present: boolean) => void;\n toggleSidebar: () => void;\n setWidth: (width: number) => void;\n collapse: () => void;\n expand: () => void;\n commit: () => void;\n setGestureActive: (active: boolean) => void;\n LinkComponent?: LinkComponent;\n};\n\n// Split: drawer open-state lives in its own context so navigation rows\n// do not re-render when the mobile drawer toggles.\nexport type MobileDrawerContextValue = {\n openMobile: boolean;\n mobileTriggerRef: React.RefObject<HTMLButtonElement | null>;\n setOpenMobile: (open: boolean) => void;\n setMobileDrawerPresent: (present: boolean) => void;\n};\n\nexport type SidebarStateContextValue = Omit<\n SidebarContextValue,\n 'openMobile' | 'mobileTriggerRef' | 'setOpenMobile' | 'setMobileDrawerPresent'\n>;\n\nexport const SidebarContext = React.createContext<SidebarStateContextValue | null>(null);\nexport const MobileDrawerContext = React.createContext<MobileDrawerContextValue | null>(null);\n\n/** Reads sidebar state and actions without subscribing to mobile drawer state. */\nexport function useMaybeSidebarState(): SidebarStateContextValue | null {\n return React.useContext(SidebarContext);\n}\n\nexport function useSidebar(): SidebarContextValue {\n const ctx = React.useContext(SidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return { ...ctx, ...drawer };\n}\n\nexport function useMaybeSidebar(): SidebarContextValue | null {\n const ctx = React.useContext(SidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) return null;\n return { ...ctx, ...drawer };\n}\n\n/** Reads only mobile drawer state. Cheap — no re-renders on sidebar resize. */\nexport function useMobileDrawer(): MobileDrawerContextValue {\n const drawer = React.useContext(MobileDrawerContext);\n if (!drawer) throw new Error('useMobileDrawer must be used within a SidebarProvider.');\n return drawer;\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarFooterMetaProps = ComponentPropsWithoutRef<'div'> & {\n action?: ReactNode;\n};\n\nexport const SidebarFooterMeta = forwardRef<HTMLDivElement, SidebarFooterMetaProps>(function SidebarFooterMeta(\n { className, children, action, ...props },\n ref,\n) {\n const { state } = useSidebar();\n\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-footer-meta\"\n data-state={state}\n className={cn(\n 'grid min-h-10 grid-cols-[minmax(0,1fr)_auto_0fr] items-center border-t border-border px-2 py-1 text-meta text-muted-foreground',\n 'transition-[grid-template-columns] duration-slow ease-out-custom motion-reduce:transition-none',\n state === 'collapsed' && 'grid-cols-[minmax(0,1fr)_auto_minmax(0,1fr)] px-0',\n className,\n )}\n {...props}\n >\n <div\n aria-hidden={state === 'collapsed'}\n className={cn(\n 'min-w-0 truncate transition-opacity duration-normal ease-out-custom motion-reduce:transition-none',\n state === 'collapsed' && 'opacity-0',\n )}\n >\n {children}\n </div>\n {action}\n <span aria-hidden />\n </div>\n );\n});\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { Txt } from '@/ds/components/Txt';\nimport { surfaceStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarMeterTone = 'neutral' | 'warning' | 'danger';\n\nconst NOISE =\n \"url(\\\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E\\\")\";\n\nconst CARD_HEIGHT = 76;\nconst BLOOM_HEIGHT = 100;\nconst BLOOM_HOLD_Y = 60;\nconst BLOOM_HOLD_X = 22.5;\nconst GRAIN_OPACITY = 0.18;\nconst GRAIN_SIZE = 110;\n\nconst FALLOFF_RAMP = [0, 0.08, 0.16, 0.25, 0.34, 0.44, 0.55, 0.66, 0.78, 0.89, 1];\n\nconst TONES = {\n neutral: { colorVar: '--foreground', peak: 0.08, grain: true, text: 'text-muted-foreground' },\n warning: {\n colorVar: '--warning-indicator',\n peak: 0.16,\n grain: false,\n text: 'text-warning-foreground',\n },\n danger: {\n colorVar: '--destructive-indicator',\n peak: 0.16,\n grain: false,\n text: 'text-destructive-foreground',\n },\n};\n\nfunction cubicFalloff(position: number) {\n const inverse = 1 - position;\n return inverse * inverse * inverse;\n}\n\nfunction easedBloom(colorVar: string, peak: number) {\n const stops = FALLOFF_RAMP.map(position => {\n const alpha = (peak * cubicFalloff(position) * 100).toFixed(2);\n return `color-mix(in oklch, var(${colorVar}) ${alpha}%, transparent) ${(position * 100).toFixed(0)}%`;\n });\n return `linear-gradient(to right, ${stops.join(', ')})`;\n}\n\nfunction easedMask(direction: string, hold: number) {\n const stops = FALLOFF_RAMP.map(position => {\n const offset = (hold + (100 - hold) * position).toFixed(2);\n return `rgb(0 0 0 / ${cubicFalloff(position).toFixed(3)}) ${offset}%`;\n });\n return `linear-gradient(${direction}, rgb(0 0 0 / 1) 0%, ${stops.join(', ')})`;\n}\n\nconst BLOOM_MASK = `${easedMask('to bottom', BLOOM_HOLD_Y)}, ${easedMask('to right', BLOOM_HOLD_X)}`;\n\nfunction Bloom({ tone }: { tone: SidebarMeterTone }) {\n const current = TONES[tone];\n return (\n <span\n aria-hidden\n data-slot=\"sidebar-meter-bloom\"\n className=\"pointer-events-none absolute inset-x-0 top-0 -z-10\"\n style={{\n height: BLOOM_HEIGHT,\n backgroundImage: easedBloom(current.colorVar, current.peak),\n maskImage: BLOOM_MASK,\n maskComposite: 'intersect',\n }}\n >\n {current.grain ? (\n <span\n aria-hidden\n className=\"absolute inset-0\"\n style={{\n backgroundImage: NOISE,\n backgroundRepeat: 'repeat',\n backgroundSize: `${GRAIN_SIZE}px ${GRAIN_SIZE}px`,\n opacity: GRAIN_OPACITY,\n }}\n />\n ) : null}\n </span>\n );\n}\n\ninterface SidebarMeterBaseProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n label: ReactNode;\n value: ReactNode;\n status?: ReactNode;\n tone?: SidebarMeterTone;\n icon?: ReactNode;\n action?: ReactNode;\n LinkComponent?: LinkComponent;\n state?: SidebarState;\n}\n\ntype SidebarMeterLinkProps =\n | {\n href: string;\n linkLabel: string;\n }\n | { href?: never; linkLabel?: never };\nexport type SidebarMeterProps = SidebarMeterBaseProps & SidebarMeterLinkProps;\n\nexport const SidebarMeter = forwardRef<HTMLDivElement, SidebarMeterProps>(function SidebarMeter(\n {\n label,\n value,\n status,\n tone = 'neutral',\n icon,\n action,\n href,\n linkLabel,\n LinkComponent: LinkProp,\n state: stateProp,\n className,\n ...props\n },\n ref,\n) {\n const ctx = useMaybeSidebarState();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const Link: LinkComponent = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const isCollapsed = state === 'collapsed';\n const current = TONES[tone];\n\n if (isCollapsed) {\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-meter\"\n data-tone={tone}\n data-state={state}\n className={cn(\n 'relative isolate flex items-center justify-center overflow-hidden rounded-lg border border-border bg-background px-1 py-2',\n className,\n )}\n {...props}\n >\n <Bloom tone={tone} />\n {href ? <Link href={href} className=\"absolute inset-0 rounded-lg\" aria-label={linkLabel} /> : null}\n <Txt as=\"span\" variant=\"meta\" tone=\"ink\" className=\"pointer-events-none relative tabular-nums\">\n {value}\n </Txt>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n data-slot=\"sidebar-meter\"\n data-tone={tone}\n data-state={state}\n className={cn(\n 'relative isolate flex flex-col justify-center overflow-hidden rounded-lg border border-border bg-background px-3',\n href && surfaceStateLayerStyle,\n className,\n )}\n style={{ height: CARD_HEIGHT }}\n {...props}\n >\n <Bloom tone={tone} />\n {href ? <Link href={href} className=\"absolute inset-0 rounded-lg\" aria-label={linkLabel} /> : null}\n\n <div className=\"pointer-events-none relative\">\n <div className=\"flex items-center gap-1.5\">\n {tone === 'neutral' ? null : icon}\n <Txt as=\"span\" variant=\"column\" tone=\"muted\">\n {label}\n </Txt>\n {action ? <span className=\"pointer-events-auto\">{action}</span> : null}\n </div>\n\n <Txt variant=\"heading\" tone=\"ink\" className=\"mt-0.5 leading-tight tabular-nums\">\n {value}\n </Txt>\n\n {status ? (\n <div className=\"mt-1 text-meta\">\n <p className={cn('truncate', current.text)}>{status}</p>\n </div>\n ) : null}\n </div>\n </div>\n );\n});\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { Txt } from '@/ds/components/Txt';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarBrandProps = Omit<ComponentPropsWithoutRef<'div'>, 'title'> & {\n logo?: ReactNode;\n title: ReactNode;\n};\n\nexport function SidebarBrand({ logo, title, className, ...props }: SidebarBrandProps) {\n const { state } = useSidebar();\n\n return (\n <div data-slot=\"sidebar-brand\" className={cn('flex min-w-0 flex-1 items-center gap-2', className)} {...props}>\n {logo ? <span className=\"shrink-0\">{logo}</span> : null}\n {state === 'collapsed' ? (\n <VisuallyHidden>{title}</VisuallyHidden>\n ) : (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className=\"truncate font-body tracking-tight\">\n {title}\n </Txt>\n )}\n </div>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarCommandHeaderProps = ComponentPropsWithoutRef<'header'>;\n\nexport const SidebarCommandHeader = forwardRef<HTMLElement, SidebarCommandHeaderProps>(function SidebarCommandHeader(\n { className, children, ...props },\n ref,\n) {\n const { state, isMobile } = useSidebar();\n\n return (\n <header\n ref={ref}\n data-slot=\"sidebar-command-header\"\n data-state={state}\n className={cn(\n 'flex h-header-default shrink-0 items-center gap-1 overflow-hidden',\n state === 'collapsed' ? 'px-3' : 'pr-2 pl-3.5',\n state !== 'collapsed' && !isMobile && 'w-[calc(var(--sidebar-width)-1rem)]',\n state === 'collapsed' && '[&_[data-slot=sidebar-search-trigger]]:hidden',\n className,\n )}\n {...props}\n >\n {children}\n </header>\n );\n});\n","import { PanelLeftIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from './sidebar-context';\nimport { Kbd } from '@/ds/components/Kbd';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarTriggerProps = ComponentPropsWithoutRef<'button'>;\n\nexport function SidebarTrigger({ className, onClick, ...props }: SidebarTriggerProps) {\n const { desktopState, isMobile, toggleSidebar } = useSidebar();\n const isCollapsed = desktopState === 'collapsed';\n\n if (isMobile) return null;\n\n return (\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n aria-label=\"Toggle sidebar\"\n aria-expanded={!isCollapsed}\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) toggleSidebar();\n }}\n className={cn(\n 'flex items-center justify-center rounded-md text-muted-foreground',\n 'size-7',\n !isCollapsed && 'ml-auto',\n 'hover:bg-fill-subtle hover:text-foreground',\n 'transition-colors duration-normal ease-out-custom motion-reduce:transition-none',\n focusRing,\n '[&_svg]:size-4 [&_svg]:text-muted-foreground [&:hover_svg]:text-foreground',\n className,\n )}\n >\n <PanelLeftIcon />\n </button>\n }\n />\n\n <TooltipContent>\n <span className=\"inline-flex items-center gap-1.5\">\n Toggle Sidebar\n <Kbd size=\"xs\" className=\"bg-muted text-muted-foreground\">\n [\n </Kbd>\n </span>\n </TooltipContent>\n </Tooltip>\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { SidebarTrigger } from '../root/sidebar-trigger';\nimport { cn } from '@/lib/utils';\n\nimport './sidebar-header.css';\n\nexport type SidebarHeaderProps = ComponentPropsWithoutRef<'header'> & {\n collapsedLogo?: ReactNode;\n actions?: ReactNode;\n};\n\nconst hold = 'animate-[sidebar-hold_var(--resize-dur)] motion-reduce:animate-none';\n\nexport function SidebarHeader({ className, children, collapsedLogo, actions, ...props }: SidebarHeaderProps) {\n const sidebar = useMaybeSidebarState();\n const collapsed = sidebar?.state === 'collapsed';\n const isMobile = sidebar?.isMobile ?? false;\n\n return (\n <header\n data-slot=\"sidebar-header\"\n className={cn(\n 'flex h-header-default shrink-0 items-center gap-2',\n collapsed ? 'px-1' : 'pr-2 pl-3.5',\n collapsed && actions && 'h-auto flex-col gap-3 py-3',\n !collapsed && !isMobile && 'w-[calc(var(--sidebar-width)-1rem)]',\n className,\n )}\n {...props}\n >\n {collapsed && collapsedLogo ? (\n <div className=\"group/collapsed-logo relative ml-0.5 grid size-9 shrink-0 place-items-center\">\n <span\n className={cn(\n hold,\n 'grid place-items-center transition-opacity duration-normal [--sidebar-hold-opacity:1] group-focus-within/collapsed-logo:opacity-0 group-hover/sidebar:opacity-0 motion-reduce:transition-none',\n )}\n >\n {collapsedLogo}\n </span>\n {isMobile ? null : (\n <div\n className={cn(\n hold,\n 'absolute inset-0 grid place-items-center opacity-0 transition-opacity duration-normal [--sidebar-hold-opacity:0] group-hover/sidebar:opacity-100 focus-within:opacity-100 motion-reduce:transition-none',\n )}\n >\n <SidebarTrigger />\n </div>\n )}\n </div>\n ) : (\n children\n )}\n {actions}\n </header>\n );\n}\n","import { forwardRef } from 'react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { Kbd } from '@/ds/components/Kbd';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover, quietTextHoverInGroup } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarSearchTriggerProps = ComponentPropsWithoutRef<'button'> & {\n shortcut?: ReactNode;\n};\n\nexport const SidebarSearchTrigger = forwardRef<HTMLButtonElement, SidebarSearchTriggerProps>(\n function SidebarSearchTrigger({ className, children, shortcut, type = 'button', ...props }, ref) {\n return (\n <button\n ref={ref}\n data-slot=\"sidebar-search-trigger\"\n type={type}\n className={cn(\n 'group inline-flex size-control-md shrink-0 items-center justify-center gap-1.5 rounded-full border border-transparent hover:bg-fill-subtle',\n quietTextHover,\n controlStateColorTransition,\n focusRing,\n '[&_svg]:size-4 [&_svg]:shrink-0',\n shortcut && 'w-auto px-2',\n className,\n )}\n {...props}\n >\n {children}\n {shortcut ? (\n <Kbd size=\"xs\" className={cn('bg-surface-overlay-soft active:scale-100', quietTextHoverInGroup)}>\n {shortcut}\n </Kbd>\n ) : null}\n </button>\n );\n },\n);\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavProps = ComponentPropsWithoutRef<'nav'>;\n\nexport function SidebarNav({ 'aria-label': ariaLabel = 'Main', children, className, ...props }: SidebarNavProps) {\n const isMobile = useMaybeSidebarState()?.isMobile ?? false;\n\n return (\n <nav\n aria-label={ariaLabel}\n className={cn(\n '-mr-1.5 flex min-h-0 flex-1 flex-col',\n '[&_[data-slot=scroll-area-scrollbar][data-orientation=vertical]]:w-1 [&_[data-slot=scroll-area-scrollbar][data-orientation=vertical]]:p-0',\n 'focus-within:[&_[data-slot=scroll-area-scrollbar][data-orientation=vertical][data-has-overflow-y]]:opacity-100',\n isMobile && '[&_a]:min-h-11 [&_a]:touch-manipulation [&_button]:min-h-11 [&_button]:touch-manipulation',\n className,\n )}\n {...props}\n >\n <ScrollArea className=\"min-h-0 flex-1\" mask={{ top: '3rem', bottom: '5rem' }}>\n <ScrollAreaViewport className=\"px-0.5\">\n <div className=\"pr-1.5\">{children}</div>\n </ScrollAreaViewport>\n </ScrollArea>\n </nav>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavHeaderProps = Omit<ComponentPropsWithoutRef<'header'>, 'children'> & {\n children?: React.ReactNode;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n state?: SidebarState;\n href?: string;\n isActive?: boolean;\n LinkComponent?: LinkComponent;\n};\n\nexport function SidebarNavHeader({\n children,\n icon,\n action,\n className,\n state: stateProp,\n href,\n isActive,\n LinkComponent: LinkProp,\n ...props\n}: SidebarNavHeaderProps) {\n const context = useMaybeSidebarState();\n const state = stateProp ?? context?.state ?? 'default';\n const showTitle = state === 'default';\n const Link = LinkProp ?? context?.LinkComponent ?? 'a';\n\n const toneClassName = isActive ? 'text-foreground' : 'text-muted-foreground';\n\n return (\n <div className={cn('flex min-w-0 items-center', showTitle ? 'mt-3 min-h-7' : 'h-10', className)}>\n {showTitle ? (\n <>\n {icon ? (\n <span aria-hidden=\"true\" className={cn('flex shrink-0 pl-3 [&_svg]:size-4', toneClassName)}>\n {icon}\n </span>\n ) : null}\n <header\n {...props}\n className={cn('max-w-full min-w-0 flex-1 truncate text-column', icon ? 'pl-2' : 'pl-3', toneClassName)}\n >\n {href ? (\n <Link\n href={href}\n className={cn('block min-w-0 truncate transition-colors duration-normal', {\n 'hover:text-foreground': !isActive,\n 'text-foreground': isActive,\n })}\n >\n {children}\n </Link>\n ) : (\n children\n )}\n </header>\n {action}\n </>\n ) : (\n <>\n <VisuallyHidden asChild>\n <header {...props}>{children}</header>\n </VisuallyHidden>\n <div aria-hidden=\"true\" className=\"mx-3 h-px flex-1 bg-border\" />\n {action ? <VisuallyHidden>{action}</VisuallyHidden> : null}\n </>\n )}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavLabelProps = ComponentPropsWithoutRef<'span'> & {\n /** Override sidebar state. Defaults to context, then `'default'`. */\n state?: SidebarState;\n};\n\n/**\n * Label slot for `Sidebar.NavLink` rows.\n *\n * Auto-hides via `VisuallyHidden` when the sidebar is collapsed (icon-only row),\n * so screen readers still announce the label without it leaking outside the\n * 28px collapsed item. Handles single-line truncation when expanded.\n *\n * Required for custom `render` and legacy `asChild` consumers — the default\n * `link={...}` path wraps the name internally, but custom elements bring their\n * own children, so the label needs to opt into the collapse-aware rendering.\n */\nexport function SidebarNavLabel({ children, className, state: stateProp, ...rest }: SidebarNavLabelProps) {\n const ctx = useMaybeSidebarState();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n if (state === 'collapsed') {\n return <VisuallyHidden>{children}</VisuallyHidden>;\n }\n return (\n <span {...rest} className={cn('min-w-0 flex-1 truncate text-left', className)}>\n {children}\n </span>\n );\n}\n","import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { surfaceStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n// A nav row is a control: same rhythm as a button or a field, from the same rungs, so a\n// sidebar row and a toolbar button in the same app are never 2px apart. A nav label is a\n// label at every row height, so only the box grows — 12px reads too small for a primary\n// navigation target, and 400 weight makes the label recede below its icon.\nconst navItemVariants = cva('flex min-w-0 cursor-pointer items-center rounded-lg text-label whitespace-nowrap', {\n variants: {\n size: {\n sm: controlHeight.sm,\n md: controlHeight.md,\n lg: controlHeight.lg,\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\ntype NavItemVariantProps = VariantProps<typeof navItemVariants>;\n\nexport type SidebarNavItemSize = NonNullable<NavItemVariantProps['size']>;\n\ntype NavRowSurfaceOptions = {\n isActive?: boolean;\n isFeatured?: boolean;\n};\n\ntype NavItemLayoutOptions = {\n isCollapsed?: boolean;\n level?: number;\n size?: SidebarNavItemSize;\n};\n\ntype ItemStyleOptions = NavRowSurfaceOptions & NavItemLayoutOptions;\n\nconst nestedExpandedItemClasses = (level: number) => {\n if (level <= 0) return 'gap-2 py-1 px-3';\n if (level === 1) return `gap-2 py-1 pr-3 pl-8 ${controlHeight.md}`;\n if (level === 2) return `gap-2 py-1 pr-3 pl-10 ${controlHeight.md}`;\n return `gap-2 py-1 pr-3 pl-12 ${controlHeight.md}`;\n};\n\n// Two neutral tones, never more: a row is either quiet (`muted-foreground`) or\n// current (`foreground`). Icons inherit that colour — lucide strokes with\n// `currentColor` — so there is nothing to restate per state.\nconst idleSurface = cn('rounded-lg text-muted-foreground hover:text-foreground', surfaceStateLayerStyle);\n\nconst activeSurface = 'bg-fill text-foreground';\n\nconst featuredSurface = cn(\n 'my-2 border border-transparent bg-brand-green text-black hover:text-black hover:brightness-95',\n);\n\nexport const navRowSurfaceClasses = ({ isActive, isFeatured }: NavRowSurfaceOptions) =>\n cn(idleSurface, isActive && activeSurface, isFeatured && featuredSurface);\n\nexport const navItemLayoutClasses = ({ isCollapsed, level = 0, size }: NavItemLayoutOptions) =>\n cn(\n navItemVariants({ size }),\n 'w-full justify-start',\n controlStateColorTransition,\n '[&_svg]:size-4 [&_svg]:shrink-0',\n focusRing,\n !isCollapsed && nestedExpandedItemClasses(level),\n isCollapsed && 'gap-0 px-[13.5px] py-0',\n );\n\nexport const navItemClasses = ({ isActive, isCollapsed, isFeatured, level, size }: ItemStyleOptions = {}) =>\n cn(navItemLayoutClasses({ isCollapsed, level, size }), navRowSurfaceClasses({ isActive, isFeatured }));\n","import { ChevronRightIcon } from 'lucide-react';\nimport React from 'react';\nimport type { ComponentProps } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { navItemClasses, navItemLayoutClasses, navRowSurfaceClasses } from './sidebar-nav-item-classes';\nimport type { SidebarNavItemSize } from './sidebar-nav-item-classes';\nimport { SidebarNavLabel } from './sidebar-nav-label';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport type { LinkComponent } from '@/ds/types/link-component';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarLink = {\n name: string;\n url: string;\n icon?: React.ReactNode;\n children?: SidebarLink[];\n isActive?: boolean;\n variant?: 'default' | 'featured';\n tooltipMsg?: string;\n opensView?: boolean;\n /** @deprecated Prefer nested `children`; accepted for callers still rendering manual sublinks. */\n indent?: boolean;\n};\n\nexport type SidebarNavLinkProps = Omit<ComponentProps<'li'>, 'children'> & {\n link?: SidebarLink;\n isActive?: boolean;\n state?: SidebarState;\n children?: React.ReactNode;\n size?: SidebarNavItemSize;\n render?: React.ReactElement<SlottedNavChildProps>;\n action?: React.ReactNode;\n LinkComponent?: LinkComponent;\n level?: number;\n subItems?: React.ReactNode;\n /**\n * When true, render `children` as the interactive element.\n * Use for `<button>` items or custom router Links. Item classes are forwarded\n * to the slotted element. `link.url` and `LinkComponent` are ignored; other\n * `link` presentation fields still apply when supplied.\n *\n * @deprecated Prefer typed render composition for new APIs; this legacy\n * slotted prop will be migrated separately.\n */\n asChild?: boolean;\n};\n\ntype SlottedNavChildProps = {\n className?: string;\n children?: React.ReactNode;\n 'aria-current'?: 'page';\n};\n\nexport function SidebarNavLink({\n link,\n state: stateProp,\n children,\n isActive,\n size,\n render,\n action,\n className,\n LinkComponent: LinkProp,\n level: levelProp,\n subItems,\n asChild = false,\n ...props\n}: SidebarNavLinkProps) {\n if (render && asChild) {\n throw new Error('SidebarNavLink accepts either `render` or `asChild`, not both.');\n }\n\n const ctx = useMaybeSidebarState();\n const state: SidebarState = stateProp ?? ctx?.state ?? 'default';\n const Link: LinkComponent = LinkProp ?? ctx?.LinkComponent ?? 'a';\n const isCollapsed = state === 'collapsed';\n const isFeatured = link?.variant === 'featured';\n const level = levelProp ?? (link?.indent ? 1 : 0);\n const rowAction = isCollapsed ? undefined : action;\n\n const itemClassName = rowAction\n ? cn(navItemLayoutClasses({ level, size }), 'flex-1 pr-1')\n : cn(navItemClasses({ isActive, isCollapsed, isFeatured, level, size }), link?.opensView && !isCollapsed && 'pr-1');\n\n return (\n <li {...props} className={cn('relative flex min-w-0 flex-col', className)}>\n <NavRowBody action={rowAction} surfaceClassName={navRowSurfaceClasses({ isActive, isFeatured })}>\n <NavRowTooltip label={navTooltipLabel(link, isCollapsed)}>\n {navInteractiveRow({ render, asChild, children, link, state, Link, isActive, className: itemClassName })}\n </NavRowTooltip>\n </NavRowBody>\n {!isCollapsed && subItems}\n </li>\n );\n}\n\nfunction navInteractiveRow({\n render,\n asChild,\n children,\n link,\n state,\n Link,\n isActive,\n className,\n}: {\n render?: React.ReactElement<SlottedNavChildProps>;\n asChild: boolean;\n children?: React.ReactNode;\n link?: SidebarLink;\n state: SidebarState;\n Link: LinkComponent;\n isActive?: boolean;\n className: string;\n}) {\n // The current row is announced, not merely tinted: its fill is the only thing that says\n // \"you are here\", and a fill says nothing to a screen reader.\n const current = isActive ? ('page' as const) : undefined;\n const caret =\n link?.opensView && state !== 'collapsed' ? <ChevronRightIcon aria-hidden=\"true\" className=\"!size-3.5\" /> : null;\n\n if (render || asChild) {\n const slotted = render ?? children;\n if (!React.isValidElement<SlottedNavChildProps>(slotted)) {\n throw new Error(\n 'SidebarNavLink requires a valid React element child when `asChild` is true so it can apply `SlottedNavChildProps` and merge `itemClassName`.',\n );\n }\n\n return React.cloneElement(slotted, {\n className: cn(className, slotted.props.className),\n 'aria-current': current,\n children: (\n <>\n {slotted.props.children}\n {caret}\n </>\n ),\n });\n }\n\n if (!link) return children;\n\n const externalParams = /^(https?:)?\\/\\//.test(link.url) ? { target: '_blank', rel: 'noreferrer' } : {};\n\n return (\n <Link href={link.url} {...externalParams} aria-current={current} className={className}>\n {link.icon}\n <SidebarNavLabel state={state}>{link.name}</SidebarNavLabel>\n {children}\n {caret}\n </Link>\n );\n}\n\nfunction navTooltipLabel(link: SidebarLink | undefined, isCollapsed: boolean) {\n if (!link) return undefined;\n if (link.tooltipMsg) return isCollapsed ? `${link.name} | ${link.tooltipMsg}` : link.tooltipMsg;\n return isCollapsed ? link.name : undefined;\n}\n\nfunction NavRowTooltip({ label, children }: { label?: string; children: React.ReactNode }) {\n if (!React.isValidElement(children)) return children;\n\n return (\n <Tooltip disabled={!label}>\n <TooltipTrigger render={children} />\n {label ? (\n <TooltipContent side=\"right\" align=\"center\" sideOffset={16}>\n {label}\n </TooltipContent>\n ) : null}\n </Tooltip>\n );\n}\n\nfunction NavRowBody({\n action,\n surfaceClassName,\n children,\n}: {\n action?: React.ReactNode;\n surfaceClassName: string;\n children: React.ReactNode;\n}) {\n if (!action) return children;\n\n return (\n <div className={cn('flex min-w-0 items-center pr-1', surfaceClassName)}>\n {children}\n {action}\n </div>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport function SidebarNavList({ className, children, ...props }: SidebarNavListProps) {\n return (\n <ul className={cn('grid grid-cols-[minmax(0,1fr)] content-center items-start gap-0.5', className)} {...props}>\n {children}\n </ul>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavSectionProps = ComponentPropsWithoutRef<'section'>;\n\nexport function SidebarNavSection({ className, children, ...props }: SidebarNavSectionProps) {\n return (\n <section className={cn('relative grid grid-cols-[minmax(0,1fr)] content-center items-start', className)} {...props}>\n {children}\n </section>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavSeparatorProps = ComponentPropsWithoutRef<'div'>;\n\nexport function SidebarNavSeparator({ className, ...props }: SidebarNavSeparatorProps) {\n return (\n <div\n role=\"separator\"\n aria-orientation=\"horizontal\"\n className={cn(\n 'relative min-h-5',\n '[&:after]:absolute [&:after]:inset-x-3 [&:after]:top-1/2 [&:after]:block [&:after]:h-0 [&:after]:border-t [&:after]:border-border [&:after]:content-[\"\"]',\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from '../root/sidebar-context';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { textStyle } from '@/ds/primitives/text';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavShowMoreProps = Omit<ComponentPropsWithoutRef<'button'>, 'children' | 'onClick'> & {\n foldedCount: number;\n expanded: boolean;\n onExpandedChange: (expanded: boolean) => void;\n state?: SidebarState;\n};\n\nexport function SidebarNavShowMore({\n foldedCount,\n expanded,\n onExpandedChange,\n state: stateProp,\n className,\n ...props\n}: SidebarNavShowMoreProps) {\n const context = useMaybeSidebarState();\n const state = stateProp ?? context?.state ?? 'default';\n if (state === 'collapsed' || foldedCount <= 0) return null;\n\n return (\n <button\n type=\"button\"\n aria-expanded={expanded}\n onClick={() => onExpandedChange(!expanded)}\n className={cn(\n textStyle({ variant: 'caption', tone: 'muted' }),\n 'self-start rounded-md pl-3 text-left hover:text-foreground',\n controlStateColorTransition,\n focusRing,\n className,\n )}\n {...props}\n >\n {expanded ? 'Show less' : `Show ${foldedCount} more`}\n </button>\n );\n}\n","import React from 'react';\n\nexport type SidebarNavStackContextValue = {\n activeValue: string;\n rootValue: string;\n closeView: (returnFocusRef?: React.RefObject<HTMLElement | null>) => void;\n};\n\nexport const SidebarNavStackContext = React.createContext<SidebarNavStackContextValue | undefined>(undefined);\n\nexport function useSidebarNavStack() {\n const context = React.useContext(SidebarNavStackContext);\n if (!context) throw new Error('Sidebar.NavStack components must be used within Sidebar.NavStack.');\n return context;\n}\n","import React from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { SidebarNavStackContext } from './sidebar-nav-stack-context';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavStackProps = ComponentPropsWithoutRef<'div'> & {\n value: string;\n rootValue?: string;\n onValueChange: (value: string) => void;\n};\n\nexport function SidebarNavStackRoot({\n value,\n rootValue = 'root',\n onValueChange,\n children,\n className,\n ...props\n}: SidebarNavStackProps) {\n function closeView(returnFocusRef?: React.RefObject<HTMLElement | null>) {\n onValueChange(rootValue);\n requestAnimationFrame(() => {\n const target = returnFocusRef?.current;\n if (target && !target.closest('[inert]')) target.focus();\n });\n }\n\n return (\n <SidebarNavStackContext.Provider value={{ activeValue: value, rootValue, closeView }}>\n <div\n data-slot=\"sidebar-nav-stack\"\n data-value={value}\n className={cn('relative grid min-w-0 overflow-hidden', className)}\n {...props}\n >\n {children}\n </div>\n </SidebarNavStackContext.Provider>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function sidebarNavStackPageClasses(active: boolean, page: 'root' | 'view', className?: string) {\n return cn(\n 'col-start-1 row-start-1 min-w-0 transition-[opacity,translate] duration-normal ease-out-custom will-change-[opacity,translate] motion-reduce:transition-none',\n active && 'relative translate-x-0 opacity-100',\n !active && 'pointer-events-none absolute inset-0 opacity-0',\n !active && page === 'root' && '-translate-x-2',\n !active && page === 'view' && 'translate-x-2',\n className,\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from '../root/sidebar-context';\nimport { useSidebarNavStack } from './sidebar-nav-stack-context';\nimport { sidebarNavStackPageClasses } from './sidebar-nav-stack-page-classes';\n\nexport type SidebarNavStackRootViewProps = ComponentPropsWithoutRef<'div'>;\n\nexport function SidebarNavStackRootView({ children, className, ...props }: SidebarNavStackRootViewProps) {\n const { state } = useSidebar();\n const { activeValue, rootValue } = useSidebarNavStack();\n const active = state === 'collapsed' || activeValue === rootValue;\n\n return (\n <div\n {...props}\n data-slot=\"sidebar-nav-stack-root\"\n aria-hidden={!active}\n inert={!active}\n className={sidebarNavStackPageClasses(active, 'root', className)}\n >\n {children}\n </div>\n );\n}\n","import { ArrowLeftIcon } from 'lucide-react';\nimport React from 'react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { navItemClasses } from '../nav/sidebar-nav-item-classes';\nimport { useSidebar } from '../root/sidebar-context';\nimport { useSidebarNavStack } from './sidebar-nav-stack-context';\nimport { sidebarNavStackPageClasses } from './sidebar-nav-stack-page-classes';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarNavStackViewProps = ComponentPropsWithoutRef<'div'> & {\n value: string;\n title: string;\n backLabel?: string;\n returnFocusRef?: React.RefObject<HTMLElement | null>;\n onBack?: () => void;\n};\n\nexport function SidebarNavStackView({\n value,\n title,\n backLabel = 'Back to main navigation',\n returnFocusRef,\n onBack,\n children,\n className,\n ...props\n}: SidebarNavStackViewProps) {\n const { state } = useSidebar();\n const { activeValue, closeView } = useSidebarNavStack();\n const active = state !== 'collapsed' && activeValue === value;\n const backRef = React.useRef<HTMLButtonElement>(null);\n const wasActiveRef = React.useRef(active);\n\n React.useEffect(() => {\n if (active && !wasActiveRef.current) backRef.current?.focus();\n wasActiveRef.current = active;\n }, [active]);\n\n React.useEffect(() => {\n if (!active) return;\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key !== 'Escape' || event.defaultPrevented) return;\n event.preventDefault();\n closeView(returnFocusRef);\n onBack?.();\n }\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [active, closeView, onBack, returnFocusRef]);\n\n function handleBack() {\n closeView(returnFocusRef);\n onBack?.();\n }\n\n return (\n <div\n {...props}\n data-slot=\"sidebar-nav-stack-view\"\n data-value={value}\n aria-hidden={!active}\n inert={!active}\n className={sidebarNavStackPageClasses(active, 'view', className)}\n >\n <button\n ref={backRef}\n type=\"button\"\n aria-label={`${backLabel}: ${title}`}\n onClick={handleBack}\n className={cn(navItemClasses(), 'mb-2 grid grid-cols-[2rem_1fr_2rem] px-1')}\n >\n <ArrowLeftIcon className=\"justify-self-center\" aria-hidden=\"true\" />\n <span className=\"min-w-0 truncate text-center\">{title}</span>\n <span aria-hidden=\"true\" />\n </button>\n {children}\n </div>\n );\n}\n","import { SidebarNavStackRoot } from './sidebar-nav-stack-root';\nimport { SidebarNavStackRootView } from './sidebar-nav-stack-root-view';\nimport { SidebarNavStackView } from './sidebar-nav-stack-view';\n\nexport type { SidebarNavStackProps } from './sidebar-nav-stack-root';\nexport type { SidebarNavStackRootViewProps } from './sidebar-nav-stack-root-view';\nexport type { SidebarNavStackViewProps } from './sidebar-nav-stack-view';\n\nexport const SidebarNavStack = Object.assign(SidebarNavStackRoot, {\n Root: SidebarNavStackRootView,\n View: SidebarNavStackView,\n});\n","import { MenuIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useSidebar } from './sidebar-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarMobileTriggerProps = ComponentPropsWithoutRef<'button'> & {\n icon?: React.ReactNode;\n};\n\nexport function SidebarMobileTrigger({\n className,\n icon,\n 'aria-label': ariaLabel = 'Open navigation menu',\n onClick,\n ...props\n}: SidebarMobileTriggerProps) {\n const { isMobile, mobileTriggerRef, setOpenMobile } = useSidebar();\n return (\n <button\n ref={mobileTriggerRef}\n type=\"button\"\n aria-label={ariaLabel}\n aria-hidden={!isMobile}\n tabIndex={isMobile ? 0 : -1}\n data-mobile-only\n {...props}\n onClick={event => {\n onClick?.(event);\n if (!event.defaultPrevented) setOpenMobile(true);\n }}\n className={cn(\n 'inline-flex size-10 items-center justify-center rounded-md',\n // compound selector, not `in-*` — its `:where()` ties with a consumer's later `.inline-flex`\n \"[[data-sidebar-mobile='false']_&]:hidden\",\n \"[[data-sidebar-mobile-present='true']_&]:invisible\",\n quietTextHover,\n 'hover:bg-fill-subtle',\n focusRing,\n className,\n )}\n >\n {icon ?? <MenuIcon className=\"size-5\" />}\n </button>\n );\n}\n","import React from 'react';\nimport type { CSSProperties } from 'react';\nimport {\n SidebarContext,\n MobileDrawerContext,\n type MobileDrawerContextValue,\n type SidebarState,\n} from './sidebar-context';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nconst SIDEBAR_STATE_KEY = 'sidebar:state';\nconst SIDEBAR_WIDTH_KEY = 'sidebar:width';\n\nconst SIDEBAR_WIDTH_VAR = '--sidebar-width';\n\ntype InitialSidebarState = {\n state: SidebarState;\n width: number;\n};\n\ntype SidebarScopeStyle = CSSProperties & {\n '--sidebar-width': string;\n '--sidebar-width-mobile': string;\n};\n\nexport type SidebarProviderProps = {\n children: React.ReactNode;\n /** Initial state before localStorage hydrates. Defaults to `'default'`. */\n defaultState?: SidebarState;\n /** Default expanded width in px. Defaults to `240`. */\n defaultWidth?: number;\n /** Minimum draggable width in px. Defaults to `200`. */\n minWidth?: number;\n /** Maximum draggable width in px. Defaults to `480`. */\n maxWidth?: number;\n /** Drag below this value snaps the sidebar closed. Defaults to `minWidth` (snap to collapsed when dragged below the expanded minimum). Pass `0` to disable snap. */\n collapseBelow?: number;\n /** Width in px when collapsed. Defaults to `64`. Set to `0` for fully hidden. */\n collapsedWidth?: number;\n /** Disable the global ⌘B / Ctrl+B toggle shortcut. Defaults to `true` so browser shortcuts are preserved. */\n disableKeyboardShortcut?: boolean;\n /** Scope-key for localStorage. Allows multiple independent sidebars per app. */\n storageKey?: string;\n /** Mobile breakpoint in px (max-width). Below this, sidebar renders as a drawer. Defaults to `1024`. */\n mobileBreakpoint?: number;\n /** Drawer max-width on mobile in px. Actual width is `min(75vw, mobileWidth)`. Defaults to `360`. */\n mobileWidth?: number;\n /** Default LinkComponent injected into SidebarLink/NavHeader. Falls back to plain `<a>` if omitted. */\n LinkComponent?: LinkComponent;\n};\n\nconst clamp = (v: number, lo: number, hi: number) => Math.min(hi, Math.max(lo, v));\n\nconst useIsoLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n\nexport function SidebarProvider({\n children,\n defaultState = 'default',\n defaultWidth = 240,\n minWidth = 200,\n maxWidth = 480,\n collapseBelow,\n collapsedWidth = 64,\n disableKeyboardShortcut = true,\n storageKey,\n mobileBreakpoint = 1024,\n mobileWidth = 360,\n LinkComponent,\n}: SidebarProviderProps) {\n const safeMin = Math.max(0, Math.min(minWidth, maxWidth));\n const safeMax = Math.max(safeMin, maxWidth);\n const safeCollapsed = Math.max(0, Math.min(collapsedWidth, safeMax));\n const safeDefault = clamp(defaultWidth, safeMin, safeMax);\n const safeCollapseBelow = collapseBelow ?? safeMin;\n\n const stateStorageKey = storageKey ? `${storageKey}:${SIDEBAR_STATE_KEY}` : SIDEBAR_STATE_KEY;\n const widthStorageKey = storageKey ? `${storageKey}:${SIDEBAR_WIDTH_KEY}` : SIDEBAR_WIDTH_KEY;\n\n // Read storage during render so the first paint already has the stored width.\n const readInitial = (): InitialSidebarState => {\n if (typeof window === 'undefined') return { state: defaultState, width: safeDefault };\n try {\n let nextState: SidebarState = defaultState;\n let nextWidth = safeDefault;\n const storedState = window.localStorage.getItem(stateStorageKey);\n if (storedState === 'collapsed' || storedState === 'default') nextState = storedState;\n const storedWidth = window.localStorage.getItem(widthStorageKey);\n if (storedWidth !== null) {\n const parsed = Number(storedWidth);\n if (Number.isFinite(parsed)) nextWidth = clamp(parsed, safeMin, safeMax);\n }\n return { state: nextState, width: nextWidth };\n } catch {\n return { state: defaultState, width: safeDefault };\n }\n };\n const initialRef = React.useRef<InitialSidebarState | null>(null);\n if (initialRef.current === null) initialRef.current = readInitial();\n const initial = initialRef.current;\n\n const [state, setState] = React.useState<SidebarState>(initial.state);\n const [width, setWidthState] = React.useState<number>(initial.width);\n const [isMobile, setIsMobile] = React.useState(false);\n const [openMobile, setOpenMobileState] = React.useState(false);\n const [mobileDrawerPresent, setMobileDrawerPresent] = React.useState(false);\n const openMobileRef = React.useRef(false);\n const mobileTriggerRef = React.useRef<HTMLButtonElement | null>(null);\n const widthRef = React.useRef<number>(initial.width);\n const stateRef = React.useRef<SidebarState>(initial.state);\n stateRef.current = state;\n\n const scopeRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (typeof window === 'undefined') return;\n const mq = window.matchMedia(`(max-width: ${mobileBreakpoint - 1}px)`);\n const update = () => setIsMobile(mq.matches);\n update();\n mq.addEventListener('change', update);\n return () => mq.removeEventListener('change', update);\n }, [mobileBreakpoint]);\n\n const setOpenMobile = React.useCallback((open: boolean) => {\n openMobileRef.current = open;\n if (open) setMobileDrawerPresent(true);\n setOpenMobileState(open);\n }, []);\n\n React.useEffect(() => {\n if (!isMobile && openMobile) {\n setOpenMobile(false);\n setMobileDrawerPresent(false);\n }\n }, [isMobile, openMobile, setOpenMobile]);\n\n const writeCssVar = React.useCallback((px: number) => {\n const el = scopeRef.current;\n if (el) el.style.setProperty(SIDEBAR_WIDTH_VAR, `${px}px`);\n }, []);\n\n useIsoLayoutEffect(() => {\n writeCssVar(state === 'collapsed' ? safeCollapsed : widthRef.current);\n }, [state, safeCollapsed, writeCssVar]);\n\n const persistState = React.useCallback(\n (next: SidebarState) => {\n try {\n window.localStorage.setItem(stateStorageKey, next);\n } catch {}\n },\n [stateStorageKey],\n );\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setOpenMobile(!openMobileRef.current);\n return;\n }\n setState(prev => {\n const next = prev === 'default' ? 'collapsed' : 'default';\n // Sync ref: a same-tick `commit()` must persist this state, not the render-time one.\n stateRef.current = next;\n persistState(next);\n return next;\n });\n }, [isMobile, persistState, setOpenMobile]);\n\n const setWidth = React.useCallback(\n (next: number) => {\n const clamped = clamp(next, safeMin, safeMax);\n widthRef.current = clamped;\n writeCssVar(clamped);\n },\n [safeMin, safeMax, writeCssVar],\n );\n\n const collapse = React.useCallback(() => {\n stateRef.current = 'collapsed';\n persistState('collapsed');\n setState('collapsed');\n }, [persistState]);\n const expand = React.useCallback(() => {\n stateRef.current = 'default';\n persistState('default');\n setState('default');\n }, [persistState]);\n\n const commit = React.useCallback(() => {\n setWidthState(widthRef.current);\n try {\n window.localStorage.setItem(stateStorageKey, stateRef.current);\n window.localStorage.setItem(widthStorageKey, String(widthRef.current));\n } catch {}\n }, [stateStorageKey, widthStorageKey]);\n\n const setGestureActive = React.useCallback((active: boolean) => {\n const el = scopeRef.current;\n if (!el) return;\n if (active) el.setAttribute('data-sidebar-gesture', 'active');\n else el.removeAttribute('data-sidebar-gesture');\n }, []);\n\n React.useEffect(() => {\n if (disableKeyboardShortcut) return;\n const onKeyDown = (ev: KeyboardEvent) => {\n // `code` is layout-independent — works on non-Latin keyboards.\n if (ev.code !== 'KeyB') return;\n if (!(ev.metaKey || ev.ctrlKey)) return;\n if (ev.altKey || ev.shiftKey) return;\n if (ev.target instanceof HTMLElement) {\n const tag = ev.target.tagName;\n if (tag === 'INPUT' || tag === 'TEXTAREA' || tag === 'SELECT') return;\n if (ev.target.isContentEditable) return;\n }\n ev.preventDefault();\n toggleSidebar();\n };\n window.addEventListener('keydown', onKeyDown);\n return () => window.removeEventListener('keydown', onKeyDown);\n }, [disableKeyboardShortcut, toggleSidebar]);\n\n const effectiveState: SidebarState = isMobile ? 'default' : state;\n\n const contextValue = React.useMemo(\n () => ({\n state: effectiveState,\n desktopState: state,\n width,\n minWidth: safeMin,\n maxWidth: safeMax,\n collapseBelow: safeCollapseBelow,\n collapsedWidth: safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n }),\n [\n effectiveState,\n state,\n width,\n safeMin,\n safeMax,\n safeCollapseBelow,\n safeCollapsed,\n isMobile,\n toggleSidebar,\n setWidth,\n collapse,\n expand,\n commit,\n setGestureActive,\n LinkComponent,\n ],\n );\n\n const drawerValue = React.useMemo<MobileDrawerContextValue>(\n () => ({ openMobile, mobileTriggerRef, setOpenMobile, setMobileDrawerPresent }),\n [openMobile, setOpenMobile],\n );\n\n const scopeStyle: SidebarScopeStyle = {\n [SIDEBAR_WIDTH_VAR]: `${initial.state === 'collapsed' ? safeCollapsed : initial.width}px`,\n '--sidebar-width-mobile': `${mobileWidth}px`,\n display: 'contents',\n };\n\n return (\n <div\n ref={scopeRef}\n data-sidebar-scope\n data-sidebar-state={state}\n data-sidebar-mobile={isMobile ? 'true' : 'false'}\n data-sidebar-mobile-present={mobileDrawerPresent ? 'true' : 'false'}\n style={scopeStyle}\n suppressHydrationWarning\n >\n <SidebarContext.Provider value={contextValue}>\n <MobileDrawerContext.Provider value={drawerValue}>{children}</MobileDrawerContext.Provider>\n </SidebarContext.Provider>\n </div>\n );\n}\n","import { MenuIcon } from 'lucide-react';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useSidebar } from './sidebar-context';\nimport { Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerTitle } from '@/ds/components/Drawer';\nimport { overlaySurfaceStyle, surfaceGroupStateLayerStyle } from '@/ds/primitives/raised-surface';\nimport { ResizeHandleIndicator } from '@/ds/primitives/resize-handle-indicator';\nimport { quietTextHoverInGroup } from '@/ds/primitives/typography';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarPanelProps = {\n children: React.ReactNode;\n className?: string;\n mobileMode?: 'drawer' | 'takeover';\n};\n\nconst KEYBOARD_STEP = 10;\nconst DRAG_THRESHOLD = 5;\n\nexport function SidebarPanel({ children, className, mobileMode = 'drawer' }: SidebarPanelProps) {\n const {\n state,\n width,\n minWidth,\n maxWidth,\n collapseBelow,\n collapsedWidth,\n isMobile,\n openMobile,\n mobileTriggerRef,\n setOpenMobile,\n setMobileDrawerPresent,\n setWidth,\n collapse,\n expand,\n commit,\n toggleSidebar,\n setGestureActive,\n } = useSidebar();\n const isCollapsed = state === 'collapsed';\n const isHidden = isCollapsed && collapsedWidth === 0;\n\n const draggedRef = useRef(false);\n const dragCleanupRef = useRef<(() => void) | null>(null);\n\n useEffect(() => {\n return () => {\n dragCleanupRef.current?.();\n dragCleanupRef.current = null;\n };\n }, []);\n\n const onPointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n event.preventDefault();\n\n draggedRef.current = false;\n setGestureActive(true);\n\n const startX = event.clientX;\n const handle = event.currentTarget;\n const pointerId = event.pointerId;\n\n try {\n handle.setPointerCapture(pointerId);\n } catch {\n // The pointer may have ended before capture.\n }\n\n const sidebarEl = handle.parentElement;\n const sidebarLeft = sidebarEl ? sidebarEl.getBoundingClientRect().left : 0;\n\n const prevCursor = document.body.style.cursor;\n const prevUserSelect = document.body.style.userSelect;\n\n const onMove = (ev: PointerEvent) => {\n if (ev.pointerId !== pointerId) return;\n const dx = ev.clientX - startX;\n if (!draggedRef.current) {\n if (Math.abs(dx) <= DRAG_THRESHOLD) return;\n draggedRef.current = true;\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n }\n\n const cursorWidth = ev.clientX - sidebarLeft;\n\n if (collapseBelow > 0 && cursorWidth < collapseBelow) {\n collapse();\n return;\n }\n expand();\n setWidth(cursorWidth);\n };\n const cleanup = (ev?: PointerEvent) => {\n if (ev && ev.pointerId !== pointerId) return;\n window.removeEventListener('pointermove', onMove);\n window.removeEventListener('pointerup', cleanup);\n window.removeEventListener('pointercancel', cleanup);\n document.body.style.cursor = prevCursor;\n document.body.style.userSelect = prevUserSelect;\n setGestureActive(false);\n commit();\n dragCleanupRef.current = null;\n };\n dragCleanupRef.current = () => cleanup();\n window.addEventListener('pointermove', onMove);\n window.addEventListener('pointerup', cleanup);\n window.addEventListener('pointercancel', cleanup);\n },\n [collapseBelow, setWidth, expand, collapse, commit, setGestureActive],\n );\n\n const onClick = useCallback(() => {\n if (draggedRef.current) {\n draggedRef.current = false;\n return;\n }\n toggleSidebar();\n }, [toggleSidebar]);\n\n const onKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n switch (event.key) {\n case 'Enter':\n case ' ': {\n event.preventDefault();\n toggleSidebar();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n if (isCollapsed) return;\n setWidth(width - KEYBOARD_STEP);\n commit();\n return;\n }\n case 'ArrowRight': {\n event.preventDefault();\n if (isCollapsed) {\n expand();\n commit();\n return;\n }\n setWidth(width + KEYBOARD_STEP);\n commit();\n return;\n }\n case 'Home': {\n event.preventDefault();\n expand();\n setWidth(minWidth);\n commit();\n return;\n }\n case 'End': {\n event.preventDefault();\n expand();\n setWidth(maxWidth);\n commit();\n return;\n }\n }\n },\n [isCollapsed, width, minWidth, maxWidth, setWidth, expand, commit, toggleSidebar],\n );\n\n // Client-side routers preventDefault but should still close the drawer.\n const closeOnAnchor = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (!(event.target instanceof Element)) return;\n const anchor = event.target.closest<HTMLAnchorElement>('a');\n if (!anchor || !anchor.hasAttribute('href')) return;\n\n if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n\n if (anchor.target === '_blank' || anchor.hasAttribute('download')) return;\n setOpenMobile(false);\n },\n [setOpenMobile],\n );\n\n if (isMobile) {\n return (\n <Drawer\n side=\"left\"\n open={openMobile}\n onOpenChange={setOpenMobile}\n onOpenChangeComplete={open => {\n if (!open) setMobileDrawerPresent(false);\n }}\n >\n <DrawerContent\n data-mobile-mode={mobileMode}\n finalFocus={mobileTriggerRef}\n showCloseButton={mobileMode === 'drawer'}\n className={cn(\n 'border-0 bg-sidebar text-foreground',\n mobileMode === 'takeover'\n ? 'w-[calc(100%-3.5rem)] max-w-none overflow-visible rounded-l-none rounded-r-3xl pt-[env(safe-area-inset-top)] pb-[env(safe-area-inset-bottom)]'\n : 'w-3/4 max-w-(--sidebar-width-mobile) overflow-hidden rounded-none',\n className,\n )}\n >\n {mobileMode === 'takeover' ? (\n <DrawerClose asChild>\n <button\n type=\"button\"\n aria-label=\"Close\"\n className=\"group absolute top-2 -right-12 z-10 inline-flex size-11 touch-manipulation items-center justify-center transition-opacity duration-fast group-data-[ending-style]/popup:opacity-0 focus-visible:outline-hidden motion-reduce:duration-0\"\n >\n <span\n className={cn(\n overlaySurfaceStyle,\n quietTextHoverInGroup,\n surfaceGroupStateLayerStyle,\n 'inline-flex size-9 items-center justify-center rounded-full backdrop-blur-sm group-focus-visible:ring-1 group-focus-visible:ring-border-focus',\n )}\n >\n <MenuIcon className=\"size-4\" />\n </span>\n </button>\n </DrawerClose>\n ) : null}\n <VisuallyHidden asChild>\n <DrawerTitle>Navigation</DrawerTitle>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DrawerDescription>Primary site navigation drawer</DrawerDescription>\n </VisuallyHidden>\n <div\n onClick={closeOnAnchor}\n className={cn(\n 'flex h-full min-h-0 flex-col overflow-hidden py-2',\n mobileMode === 'takeover' ? 'px-4' : 'px-3',\n )}\n >\n {children}\n </div>\n </DrawerContent>\n </Drawer>\n );\n }\n\n const currentWidth = isCollapsed ? collapsedWidth : width;\n return (\n <div\n className={cn(\n 'sidebar-layout group/sidebar t-resize relative min-h-0 shrink-0 self-stretch bg-sidebar text-foreground',\n 'w-(--sidebar-width)',\n 'in-data-[sidebar-gesture=active]:transition-none',\n className,\n\n isHidden && 'border-r-0 border-transparent',\n )}\n >\n <div\n className={cn(\n 'flex h-full min-h-0 flex-col overflow-hidden',\n 'transition-opacity duration-200 motion-reduce:transition-none',\n // Inset on every side, like the mobile drawer's container, so the header and footer never touch an edge.\n 'p-2',\n isHidden && 'pointer-events-none p-0 opacity-0',\n )}\n >\n {children}\n </div>\n\n <div\n role=\"separator\"\n aria-orientation=\"vertical\"\n\n aria-valuenow={isCollapsed ? undefined : currentWidth}\n aria-valuemin={isCollapsed ? undefined : minWidth}\n aria-valuemax={isCollapsed ? undefined : maxWidth}\n aria-valuetext={isCollapsed ? 'collapsed' : `${currentWidth} pixels`}\n aria-label={`Resize sidebar. Arrow keys to resize, Enter to ${isCollapsed ? 'expand' : 'collapse'}.`}\n tabIndex={0}\n onPointerDown={onPointerDown}\n onClick={onClick}\n onKeyDown={onKeyDown}\n className={cn(\n 'group absolute top-0 -right-1 z-10 h-full w-2 cursor-col-resize touch-none',\n 'flex items-center justify-center',\n 'focus-visible:outline-hidden',\n )}\n >\n <ResizeHandleIndicator\n className={cn(\n 'via-foreground/30 group-hover:opacity-100',\n 'group-focus-visible:via-border-focus group-focus-visible:opacity-100',\n 'in-data-[sidebar-gesture=active]:via-foreground/45 in-data-[sidebar-gesture=active]:opacity-100',\n )}\n />\n </div>\n </div>\n );\n}\n","import { useMaybeSidebarState } from './sidebar-context';\nimport type { SidebarPanelProps } from './sidebar-panel';\nimport { SidebarPanel } from './sidebar-panel';\nimport { frameSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport type SidebarRootProps = SidebarPanelProps & {\n 'aria-label'?: string;\n variant?: 'default' | 'raised';\n};\n\nexport function SidebarRoot({\n 'aria-label': ariaLabel = 'Sidebar',\n mobileMode = 'takeover',\n variant = 'default',\n children,\n ...props\n}: SidebarRootProps) {\n const sidebar = useMaybeSidebarState();\n const isRaised = variant === 'raised' && !sidebar?.isMobile;\n\n return (\n <aside aria-label={ariaLabel} className=\"contents\">\n <SidebarPanel mobileMode={mobileMode} {...props}>\n {isRaised ? (\n <div\n data-slot=\"sidebar-surface\"\n className={cn(\n '-mr-2 -ml-4 flex min-h-0 flex-1 flex-col overflow-hidden rounded-r-xl py-1.5',\n sidebar?.state === 'collapsed' ? 'pr-2 pl-4' : 'pr-3.5 pl-5.5',\n frameSurfaceStyle,\n )}\n >\n {children}\n </div>\n ) : (\n children\n )}\n </SidebarPanel>\n </aside>\n );\n}\n","import { z } from 'zod/v4';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\n\nexport const sidebarLinkPlacements = ['sidebar', 'more', 'hidden'] as const;\nexport type SidebarLinkPlacement = (typeof sidebarLinkPlacements)[number];\n\nexport const sidebarLinkPlacementLabels: Record<SidebarLinkPlacement, string> = {\n sidebar: 'Always show',\n more: 'Hide in More menu',\n hidden: 'Never show',\n};\n\nexport const placementsSchema = z.record(z.string(), z.enum(sidebarLinkPlacements));\nexport type SidebarLinkPlacements = z.infer<typeof placementsSchema>;\n\nexport const defaultVisibilityStorageKey = 'mastra:sidebar:link-visibility';\n\nexport type OptionalSidebarLink = SidebarLink & { defaultVisible?: boolean };\n\nexport function getSidebarLinkKey(link: SidebarLink) {\n return `${link.url}:${link.name}`;\n}\n\nexport function getSidebarVisibilityKey(sectionKey: string, link: SidebarLink) {\n return `${sectionKey}:${link.name}`;\n}\n\nexport function getDefaultPlacement(link: OptionalSidebarLink, optionalLinkCount: number): SidebarLinkPlacement {\n const visible = link.defaultVisible ?? optionalLinkCount < 2;\n return visible ? 'sidebar' : 'more';\n}\n\nexport function isSidebarLinkPlacement(value: unknown): value is SidebarLinkPlacement {\n return sidebarLinkPlacements.some(placement => placement === value);\n}\n","import { useId } from 'react';\nimport type { RefObject } from 'react';\nimport type { SidebarSection } from './sidebar-sections';\nimport {\n getSidebarLinkKey,\n isSidebarLinkPlacement,\n sidebarLinkPlacementLabels,\n sidebarLinkPlacements,\n} from './sidebar-visibility';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport {\n Dialog,\n DialogBody,\n DialogContent,\n DialogDescription,\n DialogHeader,\n DialogTitle,\n} from '@/ds/components/Dialog';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { Txt } from '@/ds/components/Txt';\n\nexport type SidebarCustomizeDialogProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n returnFocusRef: RefObject<HTMLElement | null>;\n sections: SidebarSection[];\n placementOf: (sectionKey: string, link: OptionalSidebarLink, optionalLinkCount: number) => SidebarLinkPlacement;\n onPlacementChange: (sectionKey: string, link: OptionalSidebarLink, placement: SidebarLinkPlacement) => void;\n};\n\nexport function SidebarCustomizeDialog({\n open,\n onOpenChange,\n returnFocusRef,\n sections,\n placementOf,\n onPlacementChange,\n}: SidebarCustomizeDialogProps) {\n const baseId = useId();\n const customizableSections = sections.filter(section => (section.moreLinks?.length ?? 0) > 0);\n\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent size=\"md\" finalFocus={returnFocusRef}>\n <DialogHeader>\n <DialogTitle>Customize sidebar</DialogTitle>\n <DialogDescription>\n Choose where each optional link appears. Changes save automatically in this browser.\n </DialogDescription>\n </DialogHeader>\n <DialogBody className=\"space-y-5\">\n {customizableSections.map(section => {\n const links = section.moreLinks ?? [];\n const headingId = section.title ? `${baseId}-${section.key}` : undefined;\n\n return (\n <section\n key={section.key}\n aria-labelledby={headingId}\n aria-label={headingId ? undefined : section.key}\n className=\"space-y-2\"\n >\n {section.title ? (\n <Txt as=\"h3\" id={headingId} variant=\"label\" tone=\"muted\">\n {section.title}\n </Txt>\n ) : null}\n <ul className=\"divide-y divide-border rounded-lg border border-border\">\n {links.map(link => (\n <li key={getSidebarLinkKey(link)} className=\"flex min-h-11 items-center gap-2.5 py-1.5 pr-1.5 pl-3\">\n <span aria-hidden=\"true\" className=\"flex shrink-0 text-muted-foreground [&_svg]:size-4\">\n {link.icon}\n </span>\n <Txt as=\"span\" variant=\"body-sm\" className=\"min-w-0 flex-1 truncate\">\n {link.name}\n </Txt>\n <Select\n value={placementOf(section.key, link, links.length)}\n onValueChange={placement => {\n if (isSidebarLinkPlacement(placement)) onPlacementChange(section.key, link, placement);\n }}\n >\n <SelectTrigger\n size=\"sm\"\n variant=\"ghost\"\n className=\"w-44 shrink-0\"\n aria-label={`${link.name} placement`}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {sidebarLinkPlacements.map(placement => (\n <SelectItem key={placement} value={placement}>\n {sidebarLinkPlacementLabels[placement]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </li>\n ))}\n </ul>\n </section>\n );\n })}\n </DialogBody>\n </DialogContent>\n </Dialog>\n );\n}\n","import type { ComponentProps } from 'react';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarNavLink } from '../nav/sidebar-nav-link';\nimport { SidebarNavList } from '../nav/sidebar-nav-list';\nimport { getSidebarLinkKey } from './sidebar-visibility';\n\nexport type SidebarSectionLinkProps = Omit<ComponentProps<'li'>, 'children'> & {\n link: SidebarLink;\n activeCandidates: SidebarLink[];\n level?: number;\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n};\n\nexport function SidebarSectionLink({ link, activeCandidates, level = 0, isActive, ...props }: SidebarSectionLinkProps) {\n const childLinks = link.children ?? [];\n\n return (\n <SidebarNavLink\n {...props}\n link={link}\n isActive={isActive?.(link, activeCandidates) ?? link.isActive}\n level={level}\n subItems={\n childLinks.length > 0 ? (\n <SidebarNavList className=\"mt-0.5\">\n {childLinks.map(child => (\n <SidebarSectionLink\n key={getSidebarLinkKey(child)}\n link={child}\n activeCandidates={activeCandidates}\n level={level + 1}\n isActive={isActive}\n />\n ))}\n </SidebarNavList>\n ) : null\n }\n />\n );\n}\n","import { useRef } from 'react';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarSectionLink } from './sidebar-section-link';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport { isSidebarLinkPlacement, sidebarLinkPlacementLabels, sidebarLinkPlacements } from './sidebar-visibility';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\n\nexport type SidebarOptionalLinkProps = {\n link: OptionalSidebarLink;\n activeCandidates: SidebarLink[];\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n placement: SidebarLinkPlacement;\n onPlacementChange: (placement: SidebarLinkPlacement) => void;\n onCustomize: (returnFocusTo: HTMLElement | null) => void;\n};\n\nexport function SidebarOptionalLink({\n link,\n activeCandidates,\n isActive,\n placement,\n onPlacementChange,\n onCustomize,\n}: SidebarOptionalLinkProps) {\n const itemRef = useRef<HTMLElement | null>(null);\n\n return (\n <ContextMenu>\n <ContextMenu.Trigger\n ref={(node: HTMLElement | null) => {\n itemRef.current = node;\n }}\n render={<SidebarSectionLink link={link} activeCandidates={activeCandidates} isActive={isActive} />}\n />\n <ContextMenu.Content aria-label={`${link.name} options`}>\n <ContextMenu.RadioGroup\n value={placement}\n onValueChange={value => {\n if (isSidebarLinkPlacement(value)) onPlacementChange(value);\n }}\n >\n {sidebarLinkPlacements.map(option => (\n <ContextMenu.RadioItem key={option} value={option}>\n {sidebarLinkPlacementLabels[option]}\n </ContextMenu.RadioItem>\n ))}\n </ContextMenu.RadioGroup>\n <ContextMenu.Separator />\n <ContextMenu.Item onClick={() => onCustomize(itemRef.current?.querySelector('a') ?? null)}>\n Customize sidebar…\n </ContextMenu.Item>\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n","import { MoreHorizontalIcon, Settings2Icon } from 'lucide-react';\nimport { Fragment, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { SidebarNavLabel } from '../nav/sidebar-nav-label';\nimport type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarNavLink } from '../nav/sidebar-nav-link';\nimport { useMaybeSidebarState } from '../root/sidebar-context';\nimport { SidebarOptionalLink } from './sidebar-optional-link';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport { getDefaultPlacement, getSidebarLinkKey } from './sidebar-visibility';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\n\nexport type SidebarMoreLinksProps = {\n links: OptionalSidebarLink[];\n activeCandidates: SidebarLink[];\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n placementOf: (link: OptionalSidebarLink) => SidebarLinkPlacement;\n onPlacementChange: (link: OptionalSidebarLink, placement: SidebarLinkPlacement) => void;\n onCustomize: (returnFocusTo: HTMLElement | null, getMoreTrigger: () => HTMLElement | null) => void;\n};\n\nexport function SidebarMoreLinks({\n links,\n activeCandidates,\n isActive,\n placementOf,\n onPlacementChange,\n onCustomize,\n}: SidebarMoreLinksProps) {\n const context = useMaybeSidebarState();\n const Link = context?.LinkComponent ?? 'a';\n const linkIsActive = (link: SidebarLink) => isActive?.(link, activeCandidates) ?? link.isActive ?? false;\n const shownLinks = links.filter(link => linkIsActive(link) || placementOf(link) === 'sidebar');\n const moreMenuLinks = links.filter(link => !shownLinks.includes(link) && placementOf(link) === 'more');\n const isCustomized = links.some(link => placementOf(link) !== getDefaultPlacement(link, links.length));\n const hasMoreRow = links.length > 1 || moreMenuLinks.length > 0 || isCustomized;\n const moreTriggerRef = useRef<HTMLButtonElement>(null);\n\n function renderMenuLink(link: SidebarLink, nested = false): ReactNode {\n return (\n <Fragment key={getSidebarLinkKey(link)}>\n <DropdownMenu.Item\n nativeButton={false}\n inset={nested}\n render={\n <Link\n href={link.url}\n {...(/^(https?:)?\\/\\//.test(link.url) ? { target: '_blank', rel: 'noreferrer' } : {})}\n />\n }\n aria-current={linkIsActive(link) ? 'page' : undefined}\n >\n {link.icon}\n {link.name}\n </DropdownMenu.Item>\n {link.children?.map(child => renderMenuLink(child, true))}\n </Fragment>\n );\n }\n\n return (\n <>\n {shownLinks.map(link => (\n <SidebarOptionalLink\n key={getSidebarLinkKey(link)}\n link={link}\n activeCandidates={activeCandidates}\n isActive={isActive}\n placement={placementOf(link)}\n onPlacementChange={placement => onPlacementChange(link, placement)}\n onCustomize={returnFocusTo => onCustomize(returnFocusTo, () => moreTriggerRef.current)}\n />\n ))}\n {hasMoreRow ? (\n <DropdownMenu modal={false}>\n <SidebarNavLink\n link={{ name: 'More', url: '', icon: <MoreHorizontalIcon /> }}\n render={\n <DropdownMenu.Trigger ref={moreTriggerRef} render={<button type=\"button\" />} aria-label=\"More\">\n <MoreHorizontalIcon aria-hidden=\"true\" />\n <SidebarNavLabel>More</SidebarNavLabel>\n </DropdownMenu.Trigger>\n }\n />\n <DropdownMenu.Content align=\"start\" aria-label=\"More navigation\" className=\"min-w-44\">\n {moreMenuLinks.map(link => renderMenuLink(link))}\n {moreMenuLinks.length > 0 && <DropdownMenu.Separator />}\n <DropdownMenu.Item onClick={() => onCustomize(moreTriggerRef.current, () => moreTriggerRef.current)}>\n <Settings2Icon />\n Customize sidebar\n </DropdownMenu.Item>\n </DropdownMenu.Content>\n </DropdownMenu>\n ) : null}\n </>\n );\n}\n","import { useId, useRef, useState } from 'react';\nimport { SidebarNavHeader } from '../nav/sidebar-nav-header';\nimport { SidebarNavList } from '../nav/sidebar-nav-list';\nimport { SidebarNavSection } from '../nav/sidebar-nav-section';\nimport { SidebarNavSeparator } from '../nav/sidebar-nav-separator';\nimport { SidebarCustomizeDialog } from './sidebar-customize-dialog';\nimport { SidebarMoreLinks } from './sidebar-more-links';\nimport { SidebarSectionLink } from './sidebar-section-link';\nimport type { SidebarSectionsProps } from './sidebar-sections';\nimport {\n getDefaultPlacement,\n getSidebarLinkKey,\n getSidebarVisibilityKey,\n placementsSchema,\n} from './sidebar-visibility';\nimport type { OptionalSidebarLink, SidebarLinkPlacement } from './sidebar-visibility';\nimport { useLocalStorageState } from '@/hooks/use-local-storage-state';\n\nexport function SidebarSectionsContent({\n sections,\n isActive,\n className,\n visibilityStorageKey,\n}: SidebarSectionsProps & { visibilityStorageKey: string }) {\n const baseId = useId();\n const [customizeOpen, setCustomizeOpen] = useState(false);\n const customizeReturnFocusRef = useRef<HTMLElement | null>(null);\n const getCustomizeFallbackRef = useRef<() => HTMLElement | null>(() => null);\n const [placements, setPlacements] = useLocalStorageState({\n initialKey: visibilityStorageKey,\n defaultValue: {},\n schema: placementsSchema,\n });\n\n function placementOf(sectionKey: string, link: OptionalSidebarLink, optionalLinkCount: number) {\n return placements[getSidebarVisibilityKey(sectionKey, link)] ?? getDefaultPlacement(link, optionalLinkCount);\n }\n\n function openCustomize(returnFocusTo: HTMLElement | null, getMoreTrigger: () => HTMLElement | null) {\n customizeReturnFocusRef.current = returnFocusTo;\n getCustomizeFallbackRef.current = getMoreTrigger;\n setCustomizeOpen(true);\n }\n\n function changeCustomizeOpen(open: boolean) {\n if (!open && !customizeReturnFocusRef.current?.isConnected) {\n customizeReturnFocusRef.current = getCustomizeFallbackRef.current();\n }\n setCustomizeOpen(open);\n }\n\n function changePlacement(sectionKey: string, link: OptionalSidebarLink, placement: SidebarLinkPlacement) {\n setPlacements(current => ({ ...current, [getSidebarVisibilityKey(sectionKey, link)]: placement }));\n }\n\n return (\n <>\n {sections.map(section => {\n const showSeparator = section.links.length > 0 && section.separator;\n const headerId = section.title ? `${baseId}-${section.key}` : undefined;\n const moreLinks = section.moreLinks ?? [];\n const activeCandidates = [...section.links, ...moreLinks];\n\n return (\n <SidebarNavSection\n key={section.key}\n className={className}\n aria-labelledby={headerId}\n aria-label={!headerId ? section.key : undefined}\n >\n {showSeparator ? <SidebarNavSeparator className=\"[&:after]:border-border\" /> : null}\n {section.title ? (\n <SidebarNavHeader id={headerId} href={section.href} isActive={section.isHeaderActive}>\n {section.title}\n </SidebarNavHeader>\n ) : null}\n <SidebarNavList>\n {section.links.map(link => (\n <SidebarSectionLink\n key={getSidebarLinkKey(link)}\n link={link}\n activeCandidates={activeCandidates}\n isActive={isActive}\n />\n ))}\n {moreLinks.length > 0 ? (\n <SidebarMoreLinks\n links={moreLinks}\n activeCandidates={activeCandidates}\n isActive={isActive}\n placementOf={link => placementOf(section.key, link, moreLinks.length)}\n onPlacementChange={(link, placement) => changePlacement(section.key, link, placement)}\n onCustomize={openCustomize}\n />\n ) : null}\n </SidebarNavList>\n </SidebarNavSection>\n );\n })}\n <SidebarCustomizeDialog\n open={customizeOpen}\n onOpenChange={changeCustomizeOpen}\n returnFocusRef={customizeReturnFocusRef}\n sections={sections}\n placementOf={placementOf}\n onPlacementChange={changePlacement}\n />\n </>\n );\n}\n","import type { SidebarLink } from '../nav/sidebar-nav-link';\nimport { SidebarSectionsContent } from './sidebar-sections-content';\nimport { defaultVisibilityStorageKey } from './sidebar-visibility';\nimport type { OptionalSidebarLink } from './sidebar-visibility';\n\nexport type SidebarSection = {\n key: string;\n title?: string;\n href?: string;\n links: SidebarLink[];\n moreLinks?: OptionalSidebarLink[];\n separator?: boolean;\n isHeaderActive?: boolean;\n};\n\nexport type SidebarSectionsProps = {\n sections: SidebarSection[];\n isActive?: (link: SidebarLink, activeCandidates: SidebarLink[]) => boolean;\n className?: string;\n visibilityStorageKey?: string;\n};\n\nexport function SidebarSections({\n visibilityStorageKey = defaultVisibilityStorageKey,\n ...props\n}: SidebarSectionsProps) {\n return <SidebarSectionsContent key={visibilityStorageKey} {...props} visibilityStorageKey={visibilityStorageKey} />;\n}\n","import { SidebarFooter } from './footer/sidebar-footer';\nimport { SidebarFooterMeta } from './footer/sidebar-footer-meta';\nimport { SidebarMeter } from './footer/sidebar-meter';\nimport { SidebarBrand } from './header/sidebar-brand';\nimport { SidebarCommandHeader } from './header/sidebar-command-header';\nimport { SidebarHeader } from './header/sidebar-header';\nimport { SidebarSearchTrigger } from './header/sidebar-search-trigger';\nimport { SidebarNav } from './nav/sidebar-nav';\nimport { SidebarNavHeader } from './nav/sidebar-nav-header';\nimport { SidebarNavLabel } from './nav/sidebar-nav-label';\nimport { SidebarNavLink } from './nav/sidebar-nav-link';\nimport { SidebarNavList } from './nav/sidebar-nav-list';\nimport { SidebarNavSection } from './nav/sidebar-nav-section';\nimport { SidebarNavSeparator } from './nav/sidebar-nav-separator';\nimport { SidebarNavShowMore } from './nav/sidebar-nav-show-more';\nimport { SidebarNavStack } from './nav-stack/sidebar-nav-stack';\nimport { SidebarMobileTrigger } from './root/sidebar-mobile-trigger';\nimport { SidebarProvider } from './root/sidebar-provider';\nimport { SidebarRoot } from './root/sidebar-root';\nimport { SidebarTrigger } from './root/sidebar-trigger';\nimport { SidebarSections } from './sections/sidebar-sections';\n\nexport const Sidebar = Object.assign(SidebarRoot, {\n Brand: SidebarBrand,\n CommandHeader: SidebarCommandHeader,\n Footer: SidebarFooter,\n FooterMeta: SidebarFooterMeta,\n Header: SidebarHeader,\n Meter: SidebarMeter,\n MobileTrigger: SidebarMobileTrigger,\n Nav: SidebarNav,\n NavHeader: SidebarNavHeader,\n NavLabel: SidebarNavLabel,\n NavLink: SidebarNavLink,\n NavList: SidebarNavList,\n NavSection: SidebarNavSection,\n NavSeparator: SidebarNavSeparator,\n NavShowMore: SidebarNavShowMore,\n NavStack: SidebarNavStack,\n Provider: SidebarProvider,\n SearchTrigger: SidebarSearchTrigger,\n Sections: SidebarSections,\n Trigger: SidebarTrigger,\n});\n","import type { SidebarLink } from './sidebar-nav-link';\n\n/**\n * Strict active-path match with sibling-exclusion.\n * - `pathname === link.url` or starts with `link.url + '/'`\n * - Not active if any sibling link has a longer matching url (prevents `/a` lighting while `/a/b` matches).\n */\nexport function getIsLinkActive(link: SidebarLink, pathname: string, siblings: SidebarLink[] = []): boolean {\n const matches = (url: string) => pathname === url || pathname.startsWith(url + '/');\n const flattenLinks = (links: SidebarLink[]): SidebarLink[] =>\n links.flatMap(item => [item, ...flattenLinks(item.children ?? [])]);\n\n if (!matches(link.url)) return false;\n const competingLinks = [...flattenLinks(link.children ?? []), ...flattenLinks(siblings)];\n return !competingLinks.some(\n other => other.url !== link.url && other.url.length > link.url.length && matches(other.url),\n );\n}\n"],"names":["jsx","cn","forwardRef","SidebarFooterMeta","jsxs","SidebarMeter","Txt","surfaceStateLayerStyle","VisuallyHidden","SidebarCommandHeader","Tooltip","TooltipTrigger","focusRing","PanelLeftIcon","TooltipContent","Kbd","SidebarSearchTrigger","quietTextHover","controlStateColorTransition","quietTextHoverInGroup","ScrollArea","ScrollAreaViewport","Fragment","cva","controlHeight","ChevronRightIcon","textStyle","ArrowLeftIcon","MenuIcon","useRef","useEffect","useCallback","Drawer","DrawerContent","DrawerClose","overlaySurfaceStyle","surfaceGroupStateLayerStyle","DrawerTitle","DrawerDescription","ResizeHandleIndicator","frameSurfaceStyle","z","useId","Dialog","DialogContent","DialogHeader","DialogTitle","DialogDescription","DialogBody","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","ContextMenu","DropdownMenu","MoreHorizontalIcon","Settings2Icon","useState","useLocalStorageState"],"mappings":"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"}