@mastra/playground-ui 60.2.1-alpha.0 → 61.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1149) hide show
  1. package/README.md +18 -0
  2. package/dist/{Avatar-bHcyExU7.js → Avatar-Bg_EZRgZ.js} +2 -2
  3. package/dist/{Avatar-bHcyExU7.js.map → Avatar-Bg_EZRgZ.js.map} +1 -1
  4. package/dist/{Avatar-B3PwGdWv.cjs → Avatar-DchBEEMO.cjs} +2 -2
  5. package/dist/{Avatar-B3PwGdWv.cjs.map → Avatar-DchBEEMO.cjs.map} +1 -1
  6. package/dist/{Badge-D3EctKQo.cjs → Badge-DB59RxT5.cjs} +3 -3
  7. package/dist/Badge-DB59RxT5.cjs.map +1 -0
  8. package/dist/{Badge-DmOqFpXW.js → Badge-DId-8rYY.js} +3 -3
  9. package/dist/Badge-DId-8rYY.js.map +1 -0
  10. package/dist/{EmptyState-DyyUFpzY.js → EmptyState-DGzBN0Ix.js} +2 -2
  11. package/dist/{EmptyState-DyyUFpzY.js.map → EmptyState-DGzBN0Ix.js.map} +1 -1
  12. package/dist/{EmptyState-CuoMGNP0.cjs → EmptyState-DvSib3QC.cjs} +2 -2
  13. package/dist/{EmptyState-CuoMGNP0.cjs.map → EmptyState-DvSib3QC.cjs.map} +1 -1
  14. package/dist/{Header-hTHhO02b.js → Header-BXl3AZgO.js} +2 -2
  15. package/dist/{Header-hTHhO02b.js.map → Header-BXl3AZgO.js.map} +1 -1
  16. package/dist/{Header-y51Sfo3G.cjs → Header-W3PBmXia.cjs} +2 -2
  17. package/dist/{Header-y51Sfo3G.cjs.map → Header-W3PBmXia.cjs.map} +1 -1
  18. package/dist/{Notice-B8RIClJD.js → Notice-D4gMAkVI.js} +2 -2
  19. package/dist/{Notice-B8RIClJD.js.map → Notice-D4gMAkVI.js.map} +1 -1
  20. package/dist/{Notice-C4Tgmtgb.cjs → Notice-D4zc_oTj.cjs} +2 -2
  21. package/dist/{Notice-C4Tgmtgb.cjs.map → Notice-D4zc_oTj.cjs.map} +1 -1
  22. package/dist/{Txt-BP1SRHmL.js → Txt-C3cYJgKU.js} +4 -1
  23. package/dist/Txt-C3cYJgKU.js.map +1 -0
  24. package/dist/{Txt-DPmEpNbp.cjs → Txt-DNnvlrBo.cjs} +4 -1
  25. package/dist/Txt-DNnvlrBo.cjs.map +1 -0
  26. package/dist/{activity-CbQG59Oc.cjs → activity-ClKZR5_o.cjs} +2 -2
  27. package/dist/{activity-CbQG59Oc.cjs.map → activity-ClKZR5_o.cjs.map} +1 -1
  28. package/dist/{activity-BoXbE4Kz.js → activity-D0SefV4r.js} +2 -2
  29. package/dist/{activity-BoXbE4Kz.js.map → activity-D0SefV4r.js.map} +1 -1
  30. package/dist/{ask-user-DE8TaPhb.js → ask-user-CqCUiZRR.js} +4 -4
  31. package/dist/{ask-user-DE8TaPhb.js.map → ask-user-CqCUiZRR.js.map} +1 -1
  32. package/dist/{ask-user-XYY0fUoI.cjs → ask-user-DBb0lUh2.cjs} +4 -4
  33. package/dist/{ask-user-XYY0fUoI.cjs.map → ask-user-DBb0lUh2.cjs.map} +1 -1
  34. package/dist/buttons-group.css +1 -1
  35. package/dist/{code-BeWhOFT4.js → code-C8akLzcu.js} +12 -9
  36. package/dist/code-C8akLzcu.js.map +1 -0
  37. package/dist/{code-B-x-9sJ1.cjs → code-D_sH618U.cjs} +12 -9
  38. package/dist/code-D_sH618U.cjs.map +1 -0
  39. package/dist/{code-block-Bnz7Pq0Q.js → code-block-CXZNO_qi.js} +6 -5
  40. package/dist/{code-block-Bnz7Pq0Q.js.map → code-block-CXZNO_qi.js.map} +1 -1
  41. package/dist/{code-block-C3DbSINk.cjs → code-block-z2hVcNq7.cjs} +7 -6
  42. package/dist/{code-block-C3DbSINk.cjs.map → code-block-z2hVcNq7.cjs.map} +1 -1
  43. package/dist/collapsible-box-DW-y0Oi1.js +67 -0
  44. package/dist/collapsible-box-DW-y0Oi1.js.map +1 -0
  45. package/dist/collapsible-box-DdUueeh6.cjs +69 -0
  46. package/dist/collapsible-box-DdUueeh6.cjs.map +1 -0
  47. package/dist/{combobox-RzEkcOuu.cjs → combobox-DPpiBLWV.cjs} +3 -3
  48. package/dist/{combobox-RzEkcOuu.cjs.map → combobox-DPpiBLWV.cjs.map} +1 -1
  49. package/dist/{combobox-DKFPbNMB.js → combobox-DoJgbq9N.js} +3 -3
  50. package/dist/{combobox-DKFPbNMB.js.map → combobox-DoJgbq9N.js.map} +1 -1
  51. package/dist/{combobox-styles-mbcWlNZQ.js → combobox-styles-BuHYzri9.js} +3 -3
  52. package/dist/combobox-styles-BuHYzri9.js.map +1 -0
  53. package/dist/{combobox-styles-qL3FSgmU.cjs → combobox-styles-zdW4cHSq.cjs} +3 -3
  54. package/dist/combobox-styles-zdW4cHSq.cjs.map +1 -0
  55. package/dist/{command-DFin7kHN.js → command-CXPbrw66.js} +7 -4
  56. package/dist/command-CXPbrw66.js.map +1 -0
  57. package/dist/{command-Bm0VcX7X.cjs → command-DD3WIrQX.cjs} +7 -4
  58. package/dist/command-DD3WIrQX.cjs.map +1 -0
  59. package/dist/{comment-DKWkzdMj.js → comment-B1Cf9w4Z.js} +2 -2
  60. package/dist/{comment-DKWkzdMj.js.map → comment-B1Cf9w4Z.js.map} +1 -1
  61. package/dist/{comment-DWY6D0pZ.cjs → comment-DnbibTOe.cjs} +2 -2
  62. package/dist/{comment-DWY6D0pZ.cjs.map → comment-DnbibTOe.cjs.map} +1 -1
  63. package/dist/components/Avatar.cjs.js +1 -1
  64. package/dist/components/Avatar.es.js +1 -1
  65. package/dist/components/Badge.cjs.js +1 -1
  66. package/dist/components/Badge.es.js +1 -1
  67. package/dist/components/ChatShell.cjs.js +6 -5
  68. package/dist/components/ChatShell.cjs.js.map +1 -1
  69. package/dist/components/ChatShell.es.js +6 -5
  70. package/dist/components/ChatShell.es.js.map +1 -1
  71. package/dist/components/ClampedText.cjs.js +1 -1
  72. package/dist/components/ClampedText.es.js +1 -1
  73. package/dist/components/Code.cjs.js +1 -1
  74. package/dist/components/Code.es.js +1 -1
  75. package/dist/components/CodeBlock.cjs.js +1 -1
  76. package/dist/components/CodeBlock.es.js +1 -1
  77. package/dist/components/CollapsibleBox.cjs.js +3 -2
  78. package/dist/components/CollapsibleBox.cjs.js.map +1 -1
  79. package/dist/components/CollapsibleBox.es.js +2 -1
  80. package/dist/components/CollapsibleBox.es.js.map +1 -1
  81. package/dist/components/Combobox.cjs.js +2 -2
  82. package/dist/components/Combobox.es.js +2 -2
  83. package/dist/components/Command.cjs.js +1 -1
  84. package/dist/components/Command.es.js +1 -1
  85. package/dist/components/CommandPalette.cjs.js +2 -2
  86. package/dist/components/CommandPalette.es.js +2 -2
  87. package/dist/components/Comment.cjs.js +4 -4
  88. package/dist/components/Comment.es.js +5 -5
  89. package/dist/components/DataCodeSection.cjs.js +1 -1
  90. package/dist/components/DataCodeSection.es.js +1 -1
  91. package/dist/components/DataDetailsPanel.cjs.js +2 -2
  92. package/dist/components/DataDetailsPanel.es.js +2 -2
  93. package/dist/components/DataList.cjs.js +4 -4
  94. package/dist/components/DataList.es.js +4 -4
  95. package/dist/components/DataPanel.cjs.js +1 -1
  96. package/dist/components/DataPanel.es.js +1 -1
  97. package/dist/components/DateRangeTimeline.cjs.js +1 -1
  98. package/dist/components/DateRangeTimeline.es.js +1 -1
  99. package/dist/components/DateTimePicker.cjs.js +2 -2
  100. package/dist/components/DateTimePicker.es.js +2 -2
  101. package/dist/components/DateTimeRangePicker.cjs.js +1 -1
  102. package/dist/components/DateTimeRangePicker.es.js +1 -1
  103. package/dist/components/EmptyState.cjs.js +1 -1
  104. package/dist/components/EmptyState.es.js +1 -1
  105. package/dist/components/Entity.cjs.js +1 -1
  106. package/dist/components/Entity.es.js +1 -1
  107. package/dist/components/EntityHeader.cjs.js +1 -1
  108. package/dist/components/EntityHeader.es.js +1 -1
  109. package/dist/components/Entry.cjs.js +1 -1
  110. package/dist/components/Entry.es.js +1 -1
  111. package/dist/components/EnvironmentVariablesEditor.cjs.js +5 -5
  112. package/dist/components/EnvironmentVariablesEditor.es.js +5 -5
  113. package/dist/components/Field.cjs.js +1 -1
  114. package/dist/components/Field.es.js +1 -1
  115. package/dist/components/FileDropBackdrop.cjs.js +1 -1
  116. package/dist/components/FileDropBackdrop.es.js +1 -1
  117. package/dist/components/FilterBar.cjs.js +3 -3
  118. package/dist/components/FilterBar.es.js +4 -4
  119. package/dist/components/FormFieldBlocks.cjs.js +2 -2
  120. package/dist/components/FormFieldBlocks.es.js +2 -2
  121. package/dist/components/Header.cjs.js +1 -1
  122. package/dist/components/Header.es.js +1 -1
  123. package/dist/components/HorizontalBars.cjs.js +1 -1
  124. package/dist/components/HorizontalBars.es.js +1 -1
  125. package/dist/components/InputGroup.cjs.js +3 -1
  126. package/dist/components/InputGroup.cjs.js.map +1 -1
  127. package/dist/components/InputGroup.es.js +1 -1
  128. package/dist/components/InputNumber.cjs.js +95 -0
  129. package/dist/components/InputNumber.cjs.js.map +1 -0
  130. package/dist/components/InputNumber.d.ts +2 -0
  131. package/dist/components/InputNumber.es.js +68 -0
  132. package/dist/components/InputNumber.es.js.map +1 -0
  133. package/dist/components/JSONSchemaForm.cjs.js +2 -2
  134. package/dist/components/JSONSchemaForm.es.js +2 -2
  135. package/dist/components/KeyValueList.cjs.js +1 -1
  136. package/dist/components/KeyValueList.es.js +1 -1
  137. package/dist/components/ListSearch.cjs.js +1 -1
  138. package/dist/components/ListSearch.es.js +1 -1
  139. package/dist/components/LogsDataList.cjs.js +3 -1
  140. package/dist/components/LogsDataList.cjs.js.map +1 -1
  141. package/dist/components/LogsDataList.es.js +3 -1
  142. package/dist/components/LogsDataList.es.js.map +1 -1
  143. package/dist/components/MainHeader.cjs.js +1 -1
  144. package/dist/components/MainHeader.es.js +1 -1
  145. package/dist/components/MainSidebar.cjs.js +11 -125
  146. package/dist/components/MainSidebar.cjs.js.map +1 -1
  147. package/dist/components/MainSidebar.es.js +1 -120
  148. package/dist/components/MainSidebar.es.js.map +1 -1
  149. package/dist/components/MarkdownRenderer.cjs.js +1 -1
  150. package/dist/components/MarkdownRenderer.es.js +1 -1
  151. package/dist/components/Message.cjs.js +1 -1
  152. package/dist/components/Message.es.js +2 -2
  153. package/dist/components/MessageScroller.cjs.js +1 -1
  154. package/dist/components/MessageScroller.es.js +1 -1
  155. package/dist/components/MetricsCard.cjs.js +1 -1
  156. package/dist/components/MetricsCard.es.js +1 -1
  157. package/dist/components/MetricsKpiCard.cjs.js +1 -1
  158. package/dist/components/MetricsKpiCard.es.js +1 -1
  159. package/dist/components/MetricsLineChart.cjs.js +2 -2
  160. package/dist/components/MetricsLineChart.es.js +2 -2
  161. package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
  162. package/dist/components/MetricsStackedBarChart.es.js +1 -1
  163. package/dist/components/Notice.cjs.js +1 -1
  164. package/dist/components/Notice.es.js +1 -1
  165. package/dist/components/PageHeader.cjs.js +1 -1
  166. package/dist/components/PageHeader.es.js +1 -1
  167. package/dist/components/PageLayout.cjs.js +1 -1
  168. package/dist/components/PageLayout.es.js +1 -1
  169. package/dist/components/ProductBadge.cjs.js +1 -1
  170. package/dist/components/ProductBadge.es.js +1 -1
  171. package/dist/components/PropertyFilter.cjs.js +3 -3
  172. package/dist/components/PropertyFilter.es.js +3 -3
  173. package/dist/components/RelativeTimestamp.cjs.js +1 -1
  174. package/dist/components/RelativeTimestamp.es.js +1 -1
  175. package/dist/components/RuleBuilder.cjs.js +2 -2
  176. package/dist/components/RuleBuilder.es.js +2 -2
  177. package/dist/components/ScatterPlotChart.cjs.js +1 -1
  178. package/dist/components/ScatterPlotChart.es.js +1 -1
  179. package/dist/components/SearchInput.cjs.js +1 -1
  180. package/dist/components/SearchInput.es.js +1 -1
  181. package/dist/components/Section.cjs.js +1 -1
  182. package/dist/components/Section.es.js +1 -1
  183. package/dist/components/SectionCard.cjs.js +1 -1
  184. package/dist/components/SectionCard.es.js +1 -1
  185. package/dist/components/Select.cjs.js +1 -1
  186. package/dist/components/Select.es.js +1 -1
  187. package/dist/components/SideDialog.cjs.js +1 -1
  188. package/dist/components/SideDialog.es.js +1 -1
  189. package/dist/components/StatusIndicators.cjs.js +1 -1
  190. package/dist/components/StatusIndicators.es.js +1 -1
  191. package/dist/components/Steps.cjs.js +1 -1
  192. package/dist/components/Steps.es.js +1 -1
  193. package/dist/components/Table.cjs.js +1 -1
  194. package/dist/components/Table.es.js +1 -1
  195. package/dist/components/Tabs.cjs.js +5 -4
  196. package/dist/components/Tabs.cjs.js.map +1 -1
  197. package/dist/components/Tabs.es.js +4 -3
  198. package/dist/components/Tabs.es.js.map +1 -1
  199. package/dist/components/Text.cjs.js +1 -1
  200. package/dist/components/Text.es.js +1 -1
  201. package/dist/components/ThinkingLevel.cjs.js +230 -0
  202. package/dist/components/ThinkingLevel.cjs.js.map +1 -0
  203. package/dist/components/ThinkingLevel.d.ts +2 -0
  204. package/dist/components/ThinkingLevel.es.js +223 -0
  205. package/dist/components/ThinkingLevel.es.js.map +1 -0
  206. package/dist/components/ThreadList.cjs.js +1 -1
  207. package/dist/components/ThreadList.es.js +1 -1
  208. package/dist/components/ThreadRail.cjs.js +1 -1
  209. package/dist/components/ThreadRail.es.js +1 -1
  210. package/dist/components/TokenBudget.cjs.js +1 -1
  211. package/dist/components/TokenBudget.es.js +1 -1
  212. package/dist/components/Tree.cjs.js +2 -487
  213. package/dist/components/Tree.cjs.js.map +1 -1
  214. package/dist/components/Tree.es.js +1 -471
  215. package/dist/components/Tree.es.js.map +1 -1
  216. package/dist/components/Truncate.cjs.js +1 -1
  217. package/dist/components/Truncate.es.js +1 -1
  218. package/dist/components/Txt.cjs.js +1 -1
  219. package/dist/components/Txt.es.js +1 -1
  220. package/dist/components/Workflow.cjs.js +4 -4
  221. package/dist/components/Workflow.es.js +4 -4
  222. package/dist/components/ai/activity.cjs.js +4 -4
  223. package/dist/components/ai/activity.es.js +4 -4
  224. package/dist/components/ai/ask-user.cjs.js +1 -1
  225. package/dist/components/ai/ask-user.es.js +1 -1
  226. package/dist/components/ai/plan.cjs.js +1 -1
  227. package/dist/components/ai/plan.es.js +1 -1
  228. package/dist/components/ai/task-list.cjs.js +1 -1
  229. package/dist/components/ai/task-list.es.js +1 -1
  230. package/dist/components/ai/tool-call.cjs.js +2 -2
  231. package/dist/components/ai/tool-call.es.js +2 -2
  232. package/dist/components/ai/transcript-divider.cjs.js +3 -11
  233. package/dist/components/ai/transcript-divider.cjs.js.map +1 -1
  234. package/dist/components/ai/transcript-divider.es.js +1 -13
  235. package/dist/components/ai/transcript-divider.es.js.map +1 -1
  236. package/dist/{data-code-section-Ds79F6W-.cjs → data-code-section-BK0bftM-.cjs} +3 -3
  237. package/dist/{data-code-section-Ds79F6W-.cjs.map → data-code-section-BK0bftM-.cjs.map} +1 -1
  238. package/dist/{data-code-section-DFxE6ckH.js → data-code-section-yMYmVciV.js} +3 -3
  239. package/dist/{data-code-section-DFxE6ckH.js.map → data-code-section-yMYmVciV.js.map} +1 -1
  240. package/dist/{data-list-CEIYm7FY.js → data-list-DdsyfT8B.js} +3 -3
  241. package/dist/{data-list-CEIYm7FY.js.map → data-list-DdsyfT8B.js.map} +1 -1
  242. package/dist/{data-list-Bqf-fhMx.cjs → data-list-DoKc-wSe.cjs} +3 -3
  243. package/dist/{data-list-Bqf-fhMx.cjs.map → data-list-DoKc-wSe.cjs.map} +1 -1
  244. package/dist/{data-list-spacer-BH2DjRdk.js → data-list-spacer-7QVTcgIS.js} +2 -2
  245. package/dist/{data-list-spacer-BH2DjRdk.js.map → data-list-spacer-7QVTcgIS.js.map} +1 -1
  246. package/dist/{data-list-spacer-DFvaAEqo.cjs → data-list-spacer-CD4hD-As.cjs} +2 -2
  247. package/dist/{data-list-spacer-DFvaAEqo.cjs.map → data-list-spacer-CD4hD-As.cjs.map} +1 -1
  248. package/dist/{data-panel-CbomKGJt.js → data-panel-GT4fMXR0.js} +4 -4
  249. package/dist/data-panel-GT4fMXR0.js.map +1 -0
  250. package/dist/{data-panel-o-QLWuFV.cjs → data-panel-mzQKwVkT.cjs} +4 -4
  251. package/dist/data-panel-mzQKwVkT.cjs.map +1 -0
  252. package/dist/{date-time-range-picker-Bb-CGVEL.cjs → date-time-range-picker-BbX8F_LY.cjs} +4 -4
  253. package/dist/{date-time-range-picker-Bb-CGVEL.cjs.map → date-time-range-picker-BbX8F_LY.cjs.map} +1 -1
  254. package/dist/{date-time-range-picker-B1zYIQTC.js → date-time-range-picker-DzPLKJol.js} +4 -4
  255. package/dist/{date-time-range-picker-B1zYIQTC.js.map → date-time-range-picker-DzPLKJol.js.map} +1 -1
  256. package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
  257. package/dist/domains/auth/components/permission-denied.es.js +1 -1
  258. package/dist/domains/auth/components/session-expired.cjs.js +1 -1
  259. package/dist/domains/auth/components/session-expired.es.js +1 -1
  260. package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
  261. package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
  262. package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +1 -1
  263. package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
  264. package/dist/domains/chat/components/section-label.cjs.js +1 -1
  265. package/dist/domains/chat/components/section-label.es.js +1 -1
  266. package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
  267. package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
  268. package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -2
  269. package/dist/domains/chat/messages/dataset-save-action.es.js +2 -2
  270. package/dist/domains/chat/messages/message-row.cjs.js +4 -4
  271. package/dist/domains/chat/messages/message-row.es.js +4 -4
  272. package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
  273. package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
  274. package/dist/domains/chat/messages/renderers/message-text.cjs.js +3 -3
  275. package/dist/domains/chat/messages/renderers/message-text.es.js +3 -3
  276. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
  277. package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
  278. package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
  279. package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
  280. package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
  281. package/dist/domains/chat/messages/signal-badge.es.js +1 -1
  282. package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
  283. package/dist/domains/chat/messages/skill-message.es.js +3 -3
  284. package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
  285. package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
  286. package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
  287. package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
  288. package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
  289. package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
  290. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +1 -1
  291. package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
  292. package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
  293. package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
  294. package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +3 -3
  295. package/dist/domains/chat/tools/badges/file-tree-badge.es.js +3 -3
  296. package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
  297. package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
  298. package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +3 -3
  299. package/dist/domains/chat/tools/badges/observation-marker-details.es.js +3 -3
  300. package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +2 -2
  301. package/dist/domains/chat/tools/badges/observation-renderer.es.js +2 -2
  302. package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
  303. package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
  304. package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
  305. package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
  306. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +2 -0
  307. package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
  308. package/dist/domains/chat/tools/badges/workflow-badge.es.js +2 -0
  309. package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
  310. package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
  311. package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
  312. package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
  313. package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
  314. package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
  315. package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
  316. package/dist/domains/logs/components/log-data-panel.cjs.js +2 -2
  317. package/dist/domains/logs/components/log-data-panel.es.js +2 -2
  318. package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
  319. package/dist/domains/logs/components/logs-error-content.es.js +1 -1
  320. package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
  321. package/dist/domains/logs/components/logs-list-view.es.js +1 -1
  322. package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
  323. package/dist/domains/logs/components/no-logs-info.es.js +1 -1
  324. package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
  325. package/dist/domains/memory/components/flame-graph.es.js +1 -1
  326. package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
  327. package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
  328. package/dist/domains/memory/components/observation-detail-view.cjs.js +3 -3
  329. package/dist/domains/memory/components/observation-detail-view.es.js +3 -3
  330. package/dist/domains/metrics/components/bar-list.cjs.js +1 -1
  331. package/dist/domains/metrics/components/bar-list.es.js +1 -1
  332. package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
  333. package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
  334. package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
  335. package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
  336. package/dist/domains/metrics/components/latency-card-view.cjs.js +8 -7
  337. package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
  338. package/dist/domains/metrics/components/latency-card-view.es.js +7 -6
  339. package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
  340. package/dist/domains/metrics/components/memory-card-view.cjs.js +7 -6
  341. package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
  342. package/dist/domains/metrics/components/memory-card-view.es.js +6 -5
  343. package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
  344. package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
  345. package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
  346. package/dist/domains/metrics/components/scores-card-view.cjs.js +8 -7
  347. package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
  348. package/dist/domains/metrics/components/scores-card-view.es.js +7 -6
  349. package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
  350. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +7 -6
  351. package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
  352. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +6 -5
  353. package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
  354. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +8 -7
  355. package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
  356. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +7 -6
  357. package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
  358. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +7 -6
  359. package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
  360. package/dist/domains/metrics/components/traces-volume-card-view.es.js +6 -5
  361. package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
  362. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
  363. package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
  364. package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +1 -1
  365. package/dist/domains/observability/components/trace-as-item-dialog.es.js +1 -1
  366. package/dist/domains/request-context/components/request-context-label.cjs.js +1 -1
  367. package/dist/domains/request-context/components/request-context-label.es.js +1 -1
  368. package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
  369. package/dist/domains/review/components/review-status-badge.es.js +1 -1
  370. package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
  371. package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
  372. package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
  373. package/dist/domains/scores/components/score-data-panel.es.js +1 -1
  374. package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
  375. package/dist/domains/scores/components/span-scoring.es.js +3 -3
  376. package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -4
  377. package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
  378. package/dist/domains/scores/components/trace-scores-tab.es.js +5 -4
  379. package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
  380. package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
  381. package/dist/domains/traces/components/feedback-thread.es.js +4 -4
  382. package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
  383. package/dist/domains/traces/components/no-traces-info.es.js +1 -1
  384. package/dist/domains/traces/components/span-data-panel-view.cjs.js +21 -16
  385. package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
  386. package/dist/domains/traces/components/span-data-panel-view.es.js +20 -15
  387. package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
  388. package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
  389. package/dist/domains/traces/components/span-details-view.es.js +1 -1
  390. package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
  391. package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
  392. package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
  393. package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
  394. package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
  395. package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
  396. package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
  397. package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
  398. package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
  399. package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
  400. package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
  401. package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
  402. package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
  403. package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
  404. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -2
  405. package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
  406. package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -1
  407. package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
  408. package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
  409. package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
  410. package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -3
  411. package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
  412. package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
  413. package/dist/domains/traces/components/span-summary-description.es.js +1 -1
  414. package/dist/domains/traces/components/span-timeline-row.cjs.js +1 -1
  415. package/dist/domains/traces/components/span-timeline-row.es.js +1 -1
  416. package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
  417. package/dist/domains/traces/components/span-token-usage.es.js +1 -1
  418. package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
  419. package/dist/domains/traces/components/span-type-legend.es.js +1 -1
  420. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +5 -3
  421. package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js.map +1 -1
  422. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +5 -3
  423. package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js.map +1 -1
  424. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +4 -3
  425. package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js.map +1 -1
  426. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +4 -3
  427. package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js.map +1 -1
  428. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +8 -16
  429. package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js.map +1 -1
  430. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +8 -15
  431. package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js.map +1 -1
  432. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +3 -16
  433. package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js.map +1 -1
  434. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +3 -16
  435. package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js.map +1 -1
  436. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +27 -5
  437. package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
  438. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +27 -7
  439. package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
  440. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +29 -24
  441. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js.map +1 -1
  442. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +30 -25
  443. package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js.map +1 -1
  444. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +45 -45
  445. package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js.map +1 -1
  446. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +47 -47
  447. package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js.map +1 -1
  448. package/dist/domains/traces/components/thread-trace.cjs.js +2 -1
  449. package/dist/domains/traces/components/thread-trace.cjs.js.map +1 -1
  450. package/dist/domains/traces/components/thread-trace.es.js +4 -3
  451. package/dist/domains/traces/components/thread-trace.es.js.map +1 -1
  452. package/dist/domains/traces/components/thread-view-by-trace.cjs.js +43 -23
  453. package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
  454. package/dist/domains/traces/components/thread-view-by-trace.es.js +46 -26
  455. package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
  456. package/dist/domains/traces/components/thread-view-skeleton.cjs.js +28 -13
  457. package/dist/domains/traces/components/thread-view-skeleton.cjs.js.map +1 -1
  458. package/dist/domains/traces/components/thread-view-skeleton.es.js +28 -13
  459. package/dist/domains/traces/components/thread-view-skeleton.es.js.map +1 -1
  460. package/dist/domains/traces/components/timeline-name-col.cjs.js +5 -5
  461. package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
  462. package/dist/domains/traces/components/timeline-name-col.es.js +5 -5
  463. package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
  464. package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
  465. package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
  466. package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -3
  467. package/dist/domains/traces/components/trace-columns-menu.es.js +3 -3
  468. package/dist/domains/traces/components/trace-data-panel-view.cjs.js +72 -50
  469. package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
  470. package/dist/domains/traces/components/trace-data-panel-view.es.js +72 -50
  471. package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
  472. package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -0
  473. package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
  474. package/dist/domains/traces/components/trace-data-panel.es.js +1 -0
  475. package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
  476. package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
  477. package/dist/domains/traces/components/trace-id-button.es.js +1 -1
  478. package/dist/domains/traces/components/trace-messages-panel.cjs.js +2 -16
  479. package/dist/domains/traces/components/trace-messages-panel.cjs.js.map +1 -1
  480. package/dist/domains/traces/components/trace-messages-panel.es.js +3 -17
  481. package/dist/domains/traces/components/trace-messages-panel.es.js.map +1 -1
  482. package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +18 -15
  483. package/dist/domains/traces/components/trace-messages-skeleton.cjs.js.map +1 -1
  484. package/dist/domains/traces/components/trace-messages-skeleton.es.js +18 -15
  485. package/dist/domains/traces/components/trace-messages-skeleton.es.js.map +1 -1
  486. package/dist/domains/traces/components/trace-span-panel.cjs.js +77 -66
  487. package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
  488. package/dist/domains/traces/components/trace-span-panel.es.js +78 -67
  489. package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
  490. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +11 -13
  491. package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
  492. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +11 -13
  493. package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
  494. package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -1
  495. package/dist/domains/traces/components/trace-span-tree.es.js +1 -1
  496. package/dist/domains/traces/components/trace-summary-description.cjs.js +2 -2
  497. package/dist/domains/traces/components/trace-summary-description.es.js +2 -2
  498. package/dist/domains/traces/components/trace-thread-item-view.cjs.js +2 -2
  499. package/dist/domains/traces/components/trace-thread-item-view.cjs.js.map +1 -1
  500. package/dist/domains/traces/components/trace-thread-item-view.es.js +2 -2
  501. package/dist/domains/traces/components/trace-thread-item-view.es.js.map +1 -1
  502. package/dist/domains/traces/components/trace-thread-panel.cjs.js +32 -21
  503. package/dist/domains/traces/components/trace-thread-panel.cjs.js.map +1 -1
  504. package/dist/domains/traces/components/trace-thread-panel.es.js +32 -21
  505. package/dist/domains/traces/components/trace-thread-panel.es.js.map +1 -1
  506. package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
  507. package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
  508. package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
  509. package/dist/domains/traces/components/traces-error-content.es.js +1 -1
  510. package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
  511. package/dist/domains/traces/components/traces-list-view.es.js +3 -3
  512. package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
  513. package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
  514. package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
  515. package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
  516. package/dist/domains/traces/hooks/use-branch.cjs.js +0 -3
  517. package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
  518. package/dist/domains/traces/hooks/use-branch.es.js +0 -3
  519. package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
  520. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -3
  521. package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
  522. package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -3
  523. package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
  524. package/dist/domains/traces/hooks/use-trace-or-branch-spans.cjs.js.map +1 -1
  525. package/dist/domains/traces/hooks/use-trace-or-branch-spans.es.js.map +1 -1
  526. package/dist/domains/traces/hooks/use-trace-query.cjs.js +2 -0
  527. package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
  528. package/dist/domains/traces/hooks/use-trace-query.es.js +2 -0
  529. package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
  530. package/dist/domains/traces/hooks/use-trace-search.cjs.js +7 -2
  531. package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
  532. package/dist/domains/traces/hooks/use-trace-search.es.js +7 -2
  533. package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
  534. package/dist/domains/traces/hooks/use-trace-spans.cjs.js +1 -5
  535. package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
  536. package/dist/domains/traces/hooks/use-trace-spans.es.js +1 -5
  537. package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
  538. package/dist/domains/traces/utils/to-searchable-spans.cjs.js +0 -5
  539. package/dist/domains/traces/utils/to-searchable-spans.cjs.js.map +1 -1
  540. package/dist/domains/traces/utils/to-searchable-spans.es.js +1 -5
  541. package/dist/domains/traces/utils/to-searchable-spans.es.js.map +1 -1
  542. package/dist/domains/traces/utils.cjs.js +0 -1
  543. package/dist/domains/traces/utils.cjs.js.map +1 -1
  544. package/dist/domains/traces/utils.es.js +1 -1
  545. package/dist/domains/traces.cjs.js +0 -1
  546. package/dist/domains/traces.cjs.js.map +1 -1
  547. package/dist/domains/traces.es.js +1 -1
  548. package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
  549. package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
  550. package/dist/domains/workflows/components/workflow-entity-header.cjs.js +2 -2
  551. package/dist/domains/workflows/components/workflow-entity-header.es.js +2 -2
  552. package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
  553. package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
  554. package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
  555. package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
  556. package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +3 -3
  557. package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +3 -3
  558. package/dist/domains/workflows/runs/workflow-run-details.cjs.js +1 -1
  559. package/dist/domains/workflows/runs/workflow-run-details.es.js +1 -1
  560. package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
  561. package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
  562. package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
  563. package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
  564. package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
  565. package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
  566. package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
  567. package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
  568. package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
  569. package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
  570. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
  571. package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
  572. package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +2 -2
  573. package/dist/domains/workflows/workflow/workflow-body-graph.es.js +2 -2
  574. package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
  575. package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
  576. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
  577. package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
  578. package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
  579. package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
  580. package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +1 -1
  581. package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +1 -1
  582. package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
  583. package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
  584. package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
  585. package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
  586. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +2 -1
  587. package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
  588. package/dist/domains/workflows/workflow/workflow-input-data.es.js +2 -1
  589. package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
  590. package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +1 -1
  591. package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +1 -1
  592. package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +4 -4
  593. package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +4 -4
  594. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +6 -5
  595. package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
  596. package/dist/domains/workflows/workflow/workflow-run-data.es.js +5 -4
  597. package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
  598. package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
  599. package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
  600. package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +3 -3
  601. package/dist/domains/workflows/workflow/workflow-run-header.es.js +3 -3
  602. package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
  603. package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
  604. package/dist/domains/workflows/workflow/workflow-steps-status.cjs.js +1 -1
  605. package/dist/domains/workflows/workflow/workflow-steps-status.es.js +1 -1
  606. package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
  607. package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
  608. package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -3
  609. package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -3
  610. package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
  611. package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
  612. package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
  613. package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
  614. package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +2 -2
  615. package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +2 -2
  616. package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +1 -1
  617. package/dist/domains/workflows/workflow/workflow-trigger.es.js +1 -1
  618. package/dist/domains/workspace/components/frontmatter.cjs.js +13 -0
  619. package/dist/domains/workspace/components/frontmatter.cjs.js.map +1 -0
  620. package/dist/domains/workspace/components/frontmatter.d.ts +2 -0
  621. package/dist/domains/workspace/components/frontmatter.es.js +9 -0
  622. package/dist/domains/workspace/components/frontmatter.es.js.map +1 -0
  623. package/dist/domains/workspace/components/mount-icon.cjs.js +42 -0
  624. package/dist/domains/workspace/components/mount-icon.cjs.js.map +1 -0
  625. package/dist/domains/workspace/components/mount-icon.d.ts +2 -0
  626. package/dist/domains/workspace/components/mount-icon.es.js +38 -0
  627. package/dist/domains/workspace/components/mount-icon.es.js.map +1 -0
  628. package/dist/domains/workspace/components/use-workspace-context.cjs.js +16 -0
  629. package/dist/domains/workspace/components/use-workspace-context.cjs.js.map +1 -0
  630. package/dist/domains/workspace/components/use-workspace-context.d.ts +2 -0
  631. package/dist/domains/workspace/components/use-workspace-context.es.js +11 -0
  632. package/dist/domains/workspace/components/use-workspace-context.es.js.map +1 -0
  633. package/dist/domains/workspace/components/workspace-active-file.cjs.js +72 -0
  634. package/dist/domains/workspace/components/workspace-active-file.cjs.js.map +1 -0
  635. package/dist/domains/workspace/components/workspace-active-file.d.ts +2 -0
  636. package/dist/domains/workspace/components/workspace-active-file.es.js +67 -0
  637. package/dist/domains/workspace/components/workspace-active-file.es.js.map +1 -0
  638. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +282 -0
  639. package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -0
  640. package/dist/domains/workspace/components/workspace-add-skill-dialog.d.ts +2 -0
  641. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +278 -0
  642. package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -0
  643. package/dist/domains/workspace/components/workspace-add-skill.cjs.js +48 -0
  644. package/dist/domains/workspace/components/workspace-add-skill.cjs.js.map +1 -0
  645. package/dist/domains/workspace/components/workspace-add-skill.d.ts +2 -0
  646. package/dist/domains/workspace/components/workspace-add-skill.es.js +44 -0
  647. package/dist/domains/workspace/components/workspace-add-skill.es.js.map +1 -0
  648. package/dist/domains/workspace/components/workspace-context.cjs.js +88 -0
  649. package/dist/domains/workspace/components/workspace-context.cjs.js.map +1 -0
  650. package/dist/domains/workspace/components/workspace-context.d.ts +2 -0
  651. package/dist/domains/workspace/components/workspace-context.es.js +84 -0
  652. package/dist/domains/workspace/components/workspace-context.es.js.map +1 -0
  653. package/dist/domains/workspace/components/workspace-create-directory.cjs.js +68 -0
  654. package/dist/domains/workspace/components/workspace-create-directory.cjs.js.map +1 -0
  655. package/dist/domains/workspace/components/workspace-create-directory.d.ts +2 -0
  656. package/dist/domains/workspace/components/workspace-create-directory.es.js +64 -0
  657. package/dist/domains/workspace/components/workspace-create-directory.es.js.map +1 -0
  658. package/dist/domains/workspace/components/workspace-error.cjs.js +26 -0
  659. package/dist/domains/workspace/components/workspace-error.cjs.js.map +1 -0
  660. package/dist/domains/workspace/components/workspace-error.d.ts +2 -0
  661. package/dist/domains/workspace/components/workspace-error.es.js +22 -0
  662. package/dist/domains/workspace/components/workspace-error.es.js.map +1 -0
  663. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +27 -0
  664. package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js.map +1 -0
  665. package/dist/domains/workspace/components/workspace-markdown-preview.d.ts +2 -0
  666. package/dist/domains/workspace/components/workspace-markdown-preview.es.js +23 -0
  667. package/dist/domains/workspace/components/workspace-markdown-preview.es.js.map +1 -0
  668. package/dist/domains/workspace/components/workspace-parts.cjs.js +94 -0
  669. package/dist/domains/workspace/components/workspace-parts.cjs.js.map +1 -0
  670. package/dist/domains/workspace/components/workspace-parts.d.ts +2 -0
  671. package/dist/domains/workspace/components/workspace-parts.es.js +84 -0
  672. package/dist/domains/workspace/components/workspace-parts.es.js.map +1 -0
  673. package/dist/domains/workspace/components/workspace-search.cjs.js +117 -0
  674. package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -0
  675. package/dist/domains/workspace/components/workspace-search.d.ts +2 -0
  676. package/dist/domains/workspace/components/workspace-search.es.js +111 -0
  677. package/dist/domains/workspace/components/workspace-search.es.js.map +1 -0
  678. package/dist/domains/workspace/components/workspace-tree-view.cjs.js +34 -0
  679. package/dist/domains/workspace/components/workspace-tree-view.cjs.js.map +1 -0
  680. package/dist/domains/workspace/components/workspace-tree-view.d.ts +2 -0
  681. package/dist/domains/workspace/components/workspace-tree-view.es.js +30 -0
  682. package/dist/domains/workspace/components/workspace-tree-view.es.js.map +1 -0
  683. package/dist/domains/workspace/components/workspace-tree.cjs.js +245 -0
  684. package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -0
  685. package/dist/domains/workspace/components/workspace-tree.d.ts +2 -0
  686. package/dist/domains/workspace/components/workspace-tree.es.js +241 -0
  687. package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -0
  688. package/dist/domains/workspace/components/workspace.cjs.js +25 -0
  689. package/dist/domains/workspace/components/workspace.cjs.js.map +1 -0
  690. package/dist/domains/workspace/components/workspace.d.ts +2 -0
  691. package/dist/domains/workspace/components/workspace.es.js +21 -0
  692. package/dist/domains/workspace/components/workspace.es.js.map +1 -0
  693. package/dist/domains/workspace/file-type.cjs.js +25 -0
  694. package/dist/domains/workspace/file-type.cjs.js.map +1 -0
  695. package/dist/domains/workspace/file-type.d.ts +2 -0
  696. package/dist/domains/workspace/file-type.es.js +17 -0
  697. package/dist/domains/workspace/file-type.es.js.map +1 -0
  698. package/dist/domains/workspace/hooks/use-skills-sh.cjs.js +72 -0
  699. package/dist/domains/workspace/hooks/use-skills-sh.cjs.js.map +1 -0
  700. package/dist/domains/workspace/hooks/use-skills-sh.d.ts +2 -0
  701. package/dist/domains/workspace/hooks/use-skills-sh.es.js +65 -0
  702. package/dist/domains/workspace/hooks/use-skills-sh.es.js.map +1 -0
  703. package/dist/domains/workspace/hooks/use-workspace-directory.cjs.js +21 -0
  704. package/dist/domains/workspace/hooks/use-workspace-directory.cjs.js.map +1 -0
  705. package/dist/domains/workspace/hooks/use-workspace-directory.d.ts +2 -0
  706. package/dist/domains/workspace/hooks/use-workspace-directory.es.js +16 -0
  707. package/dist/domains/workspace/hooks/use-workspace-directory.es.js.map +1 -0
  708. package/dist/domains/workspace/hooks/use-workspace-file-content.cjs.js +22 -0
  709. package/dist/domains/workspace/hooks/use-workspace-file-content.cjs.js.map +1 -0
  710. package/dist/domains/workspace/hooks/use-workspace-file-content.d.ts +2 -0
  711. package/dist/domains/workspace/hooks/use-workspace-file-content.es.js +18 -0
  712. package/dist/domains/workspace/hooks/use-workspace-file-content.es.js.map +1 -0
  713. package/dist/domains/workspace/hooks/use-workspace-search.cjs.js +53 -0
  714. package/dist/domains/workspace/hooks/use-workspace-search.cjs.js.map +1 -0
  715. package/dist/domains/workspace/hooks/use-workspace-search.d.ts +2 -0
  716. package/dist/domains/workspace/hooks/use-workspace-search.es.js +49 -0
  717. package/dist/domains/workspace/hooks/use-workspace-search.es.js.map +1 -0
  718. package/dist/domains/workspace/path.cjs.js +17 -0
  719. package/dist/domains/workspace/path.cjs.js.map +1 -0
  720. package/dist/domains/workspace/path.d.ts +2 -0
  721. package/dist/domains/workspace/path.es.js +10 -0
  722. package/dist/domains/workspace/path.es.js.map +1 -0
  723. package/dist/domains/workspace.cjs.js +24 -0
  724. package/dist/domains/workspace.cjs.js.map +1 -0
  725. package/dist/domains/workspace.d.ts +2 -0
  726. package/dist/domains/workspace.es.js +9 -0
  727. package/dist/domains/workspace.es.js.map +1 -0
  728. package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +2 -2
  729. package/dist/ee/signals/components/entity-index-compact-grid.es.js +2 -2
  730. package/dist/ee/signals/components/entity-index-list.cjs.js +4 -2
  731. package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
  732. package/dist/ee/signals/components/entity-index-list.es.js +4 -2
  733. package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
  734. package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
  735. package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
  736. package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
  737. package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
  738. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -3
  739. package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
  740. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +4 -3
  741. package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
  742. package/dist/ee/signals/examples-pager.cjs.js +1 -1
  743. package/dist/ee/signals/examples-pager.es.js +1 -1
  744. package/dist/ee/signals/flow-card.cjs.js +1 -1
  745. package/dist/ee/signals/flow-card.es.js +1 -1
  746. package/dist/ee/signals/lifeline-row.cjs.js +1 -1
  747. package/dist/ee/signals/lifeline-row.es.js +1 -1
  748. package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
  749. package/dist/ee/signals/noise-detail-panel.es.js +1 -1
  750. package/dist/ee/signals/sankey-signals.cjs.js +4 -3
  751. package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
  752. package/dist/ee/signals/sankey-signals.es.js +3 -2
  753. package/dist/ee/signals/sankey-signals.es.js.map +1 -1
  754. package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +3 -3
  755. package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -3
  756. package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
  757. package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
  758. package/dist/ee/signals/signal-delta-column.cjs.js +1 -1
  759. package/dist/ee/signals/signal-delta-column.es.js +1 -1
  760. package/dist/ee/signals/signal-lifelines.cjs.js +1 -1
  761. package/dist/ee/signals/signal-lifelines.es.js +1 -1
  762. package/dist/ee/signals/signals-error-state.cjs.js +1 -1
  763. package/dist/ee/signals/signals-error-state.es.js +1 -1
  764. package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
  765. package/dist/ee/signals/snapshot-timeline.es.js +1 -1
  766. package/dist/ee/signals/theme-compare.cjs.js +1 -1
  767. package/dist/ee/signals/theme-compare.es.js +1 -1
  768. package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
  769. package/dist/ee/signals/theme-detail-panel.es.js +1 -1
  770. package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
  771. package/dist/ee/signals/theme-filter-banner.es.js +1 -1
  772. package/dist/ee/signals/theme-lifelines.cjs.js +1 -1
  773. package/dist/ee/signals/theme-lifelines.es.js +1 -1
  774. package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
  775. package/dist/ee/signals/trace-insight-view.es.js +1 -1
  776. package/dist/ee/signals/trace-intelligence-explainer.cjs.js +1 -1
  777. package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -1
  778. package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
  779. package/dist/ee/signals/view-mode-tab.es.js +2 -2
  780. package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +2 -1
  781. package/dist/ee/topics/components/topic-trace-details-panel.cjs.js.map +1 -1
  782. package/dist/ee/topics/components/topic-trace-details-panel.es.js +2 -1
  783. package/dist/ee/topics/components/topic-trace-details-panel.es.js.map +1 -1
  784. package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
  785. package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
  786. package/dist/{entity-header-DEjkHoqj.cjs → entity-header-By57lpH8.cjs} +2 -2
  787. package/dist/{entity-header-DEjkHoqj.cjs.map → entity-header-By57lpH8.cjs.map} +1 -1
  788. package/dist/{entity-header-9qzr-3xQ.js → entity-header-DMjzE4Za.js} +2 -2
  789. package/dist/{entity-header-9qzr-3xQ.js.map → entity-header-DMjzE4Za.js.map} +1 -1
  790. package/dist/{field-BtvEQ68O.js → field-BiMIiq2Y.js} +3 -3
  791. package/dist/field-BiMIiq2Y.js.map +1 -0
  792. package/dist/{field-ip9xiOVa.cjs → field-BkeKcz_6.cjs} +3 -3
  793. package/dist/field-BkeKcz_6.cjs.map +1 -0
  794. package/dist/{field-error-id-4DYu4KZ2.cjs → field-error-id-4xiCVBJ_.cjs} +5 -5
  795. package/dist/field-error-id-4xiCVBJ_.cjs.map +1 -0
  796. package/dist/{field-error-id-BSQLcfHo.js → field-error-id-CSvLKtJE.js} +5 -5
  797. package/dist/field-error-id-CSvLKtJE.js.map +1 -0
  798. package/dist/{filter-bar-chip-Dmboyu1t.js → filter-bar-chip-CRejLco-.js} +2 -2
  799. package/dist/{filter-bar-chip-Dmboyu1t.js.map → filter-bar-chip-CRejLco-.js.map} +1 -1
  800. package/dist/{filter-bar-chip-BsWm7SQr.cjs → filter-bar-chip-Cr7kUN9G.cjs} +2 -2
  801. package/dist/{filter-bar-chip-BsWm7SQr.cjs.map → filter-bar-chip-Cr7kUN9G.cjs.map} +1 -1
  802. package/dist/hooks/use-fluid-hover.cjs.js +11 -0
  803. package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
  804. package/dist/hooks/use-fluid-hover.es.js +11 -0
  805. package/dist/hooks/use-fluid-hover.es.js.map +1 -1
  806. package/dist/{horizontal-bars-BSRESJsp.js → horizontal-bars-BL-GHeFh.js} +2 -2
  807. package/dist/{horizontal-bars-BSRESJsp.js.map → horizontal-bars-BL-GHeFh.js.map} +1 -1
  808. package/dist/{horizontal-bars-DRD7JkHL.cjs → horizontal-bars-D-rFCRbH.cjs} +2 -2
  809. package/dist/{horizontal-bars-DRD7JkHL.cjs.map → horizontal-bars-D-rFCRbH.cjs.map} +1 -1
  810. package/dist/icons/FileIcon.cjs.js +18 -0
  811. package/dist/icons/FileIcon.cjs.js.map +1 -0
  812. package/dist/icons/FileIcon.d.ts +2 -0
  813. package/dist/icons/FileIcon.es.js +14 -0
  814. package/dist/icons/FileIcon.es.js.map +1 -0
  815. package/dist/icons/SearchIcon.cjs.js +18 -0
  816. package/dist/icons/SearchIcon.cjs.js.map +1 -0
  817. package/dist/icons/SearchIcon.d.ts +2 -0
  818. package/dist/icons/SearchIcon.es.js +14 -0
  819. package/dist/icons/SearchIcon.es.js.map +1 -0
  820. package/dist/icons/TrashIcon.cjs.js +18 -0
  821. package/dist/icons/TrashIcon.cjs.js.map +1 -0
  822. package/dist/icons/TrashIcon.d.ts +2 -0
  823. package/dist/icons/TrashIcon.es.js +14 -0
  824. package/dist/icons/TrashIcon.es.js.map +1 -0
  825. package/dist/{input-group-wzirc-1k.js → input-group-D1XvzgI2.js} +10 -7
  826. package/dist/input-group-D1XvzgI2.js.map +1 -0
  827. package/dist/{input-group-BgCXLSRV.cjs → input-group-DBRe9V5t.cjs} +11 -6
  828. package/dist/input-group-DBRe9V5t.cjs.map +1 -0
  829. package/dist/layout/tabbed-container.cjs.js +11 -9
  830. package/dist/layout/tabbed-container.cjs.js.map +1 -1
  831. package/dist/layout/tabbed-container.es.js +9 -7
  832. package/dist/layout/tabbed-container.es.js.map +1 -1
  833. package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
  834. package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
  835. package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
  836. package/dist/lib/form/components/array-wrapper.es.js +1 -1
  837. package/dist/lib/form/components/boolean-field.cjs.js +1 -1
  838. package/dist/lib/form/components/boolean-field.es.js +1 -1
  839. package/dist/lib/form/components/error-message.cjs.js +1 -1
  840. package/dist/lib/form/components/error-message.es.js +1 -1
  841. package/dist/lib/form/components/field-wrapper.cjs.js +1 -1
  842. package/dist/lib/form/components/field-wrapper.es.js +1 -1
  843. package/dist/lib/form/components/object-wrapper.cjs.js +1 -1
  844. package/dist/lib/form/components/object-wrapper.es.js +1 -1
  845. package/dist/lib/form/components/select-field.cjs.js +1 -1
  846. package/dist/lib/form/components/select-field.es.js +1 -1
  847. package/dist/lib/form/components/union-field.cjs.js +1 -1
  848. package/dist/lib/form/components/union-field.es.js +1 -1
  849. package/dist/{list-search-CTGQJCh1.cjs → list-search-CCHN2OMB.cjs} +2 -2
  850. package/dist/{list-search-CTGQJCh1.cjs.map → list-search-CCHN2OMB.cjs.map} +1 -1
  851. package/dist/{list-search-CmOCmTwL.js → list-search-DcACBmNB.js} +2 -2
  852. package/dist/{list-search-CmOCmTwL.js.map → list-search-DcACBmNB.js.map} +1 -1
  853. package/dist/{logs-data-list-B9CAqAHD.cjs → logs-data-list-BITdSK12.cjs} +4 -4
  854. package/dist/{logs-data-list-B9CAqAHD.cjs.map → logs-data-list-BITdSK12.cjs.map} +1 -1
  855. package/dist/{logs-data-list-DfzdzgXB.js → logs-data-list-PlH4_hgq.js} +4 -4
  856. package/dist/{logs-data-list-DfzdzgXB.js.map → logs-data-list-PlH4_hgq.js.map} +1 -1
  857. package/dist/{main-sidebar-link-active-buZAhlHo.js → main-sidebar-B0ivY7lW.js} +118 -6
  858. package/dist/main-sidebar-B0ivY7lW.js.map +1 -0
  859. package/dist/{main-sidebar-link-active-D8VSuJKx.cjs → main-sidebar-BWKVSRoQ.cjs} +117 -4
  860. package/dist/main-sidebar-BWKVSRoQ.cjs.map +1 -0
  861. package/dist/{markdown-renderer-DPwN7Vtm.cjs → markdown-renderer-4iyMU2Cm.cjs} +2 -2
  862. package/dist/{markdown-renderer-DPwN7Vtm.cjs.map → markdown-renderer-4iyMU2Cm.cjs.map} +1 -1
  863. package/dist/{markdown-renderer-zvB6a8uj.js → markdown-renderer-B3Pf1uW9.js} +2 -2
  864. package/dist/{markdown-renderer-zvB6a8uj.js.map → markdown-renderer-B3Pf1uW9.js.map} +1 -1
  865. package/dist/{message-C1c5oZE7.cjs → message-DGDmsmOT.cjs} +2 -2
  866. package/dist/{message-C1c5oZE7.cjs.map → message-DGDmsmOT.cjs.map} +1 -1
  867. package/dist/{message-C7hocqft.js → message-DoxVrgBX.js} +2 -2
  868. package/dist/{message-C7hocqft.js.map → message-DoxVrgBX.js.map} +1 -1
  869. package/dist/{message-scroller-E05PLPmT.cjs → message-scroller-D-_KN9Fv.cjs} +3 -1
  870. package/dist/message-scroller-D-_KN9Fv.cjs.map +1 -0
  871. package/dist/{message-scroller-CiFr8MwT.js → message-scroller-WWaQ-XU_.js} +3 -1
  872. package/dist/message-scroller-WWaQ-XU_.js.map +1 -0
  873. package/dist/{metrics-card-C1rTkbcn.js → metrics-card-DFEWxFkJ.js} +3 -3
  874. package/dist/{metrics-card-C1rTkbcn.js.map → metrics-card-DFEWxFkJ.js.map} +1 -1
  875. package/dist/{metrics-card-D7J9JDgn.cjs → metrics-card-xX9SHUpB.cjs} +3 -3
  876. package/dist/{metrics-card-D7J9JDgn.cjs.map → metrics-card-xX9SHUpB.cjs.map} +1 -1
  877. package/dist/{metrics-kpi-card-1hbihR2T.cjs → metrics-kpi-card-9L0j_oGY.cjs} +5 -14
  878. package/dist/metrics-kpi-card-9L0j_oGY.cjs.map +1 -0
  879. package/dist/{metrics-kpi-card-CiB88L41.js → metrics-kpi-card-DxcLqbDU.js} +5 -14
  880. package/dist/metrics-kpi-card-DxcLqbDU.js.map +1 -0
  881. package/dist/{metrics-line-chart-C3UMBQ38.js → metrics-line-chart-C9_EMuHK.js} +2 -2
  882. package/dist/{metrics-line-chart-C3UMBQ38.js.map → metrics-line-chart-C9_EMuHK.js.map} +1 -1
  883. package/dist/{metrics-line-chart-CjJxBbM-.cjs → metrics-line-chart-R-T_jyeP.cjs} +2 -2
  884. package/dist/{metrics-line-chart-CjJxBbM-.cjs.map → metrics-line-chart-R-T_jyeP.cjs.map} +1 -1
  885. package/dist/{metrics-line-chart-tooltip-DiXCgpik.cjs → metrics-line-chart-tooltip-BoG8nbkO.cjs} +2 -2
  886. package/dist/{metrics-line-chart-tooltip-DiXCgpik.cjs.map → metrics-line-chart-tooltip-BoG8nbkO.cjs.map} +1 -1
  887. package/dist/{metrics-line-chart-tooltip-mZXPH1yH.js → metrics-line-chart-tooltip-C3WAk3DN.js} +2 -2
  888. package/dist/{metrics-line-chart-tooltip-mZXPH1yH.js.map → metrics-line-chart-tooltip-C3WAk3DN.js.map} +1 -1
  889. package/dist/new/layout/page-header.cjs.js +1 -1
  890. package/dist/new/layout/page-header.es.js +1 -1
  891. package/dist/new/settings.cjs.js +2 -2
  892. package/dist/new/settings.es.js +2 -2
  893. package/dist/new/sidebar.cjs.js +35 -35
  894. package/dist/new/sidebar.cjs.js.map +1 -1
  895. package/dist/new/sidebar.es.js +3 -3
  896. package/dist/{notification-activity-CFR_b8eA.js → notification-activity-BDoleJAA.js} +4 -4
  897. package/dist/{notification-activity-CFR_b8eA.js.map → notification-activity-BDoleJAA.js.map} +1 -1
  898. package/dist/{notification-activity-Dk50wcE4.cjs → notification-activity-C_vZiswj.cjs} +4 -4
  899. package/dist/{notification-activity-Dk50wcE4.cjs.map → notification-activity-C_vZiswj.cjs.map} +1 -1
  900. package/dist/{page-header-DIS8V2TK.js → page-header-D5a7qrVc.js} +2 -2
  901. package/dist/{page-header-DIS8V2TK.js.map → page-header-D5a7qrVc.js.map} +1 -1
  902. package/dist/{page-header-C1WiOrTE.cjs → page-header-Dc2KSbnw.cjs} +2 -2
  903. package/dist/{page-header-C1WiOrTE.cjs.map → page-header-Dc2KSbnw.cjs.map} +1 -1
  904. package/dist/{plan-D8rM4i4S.cjs → plan-D49plJdQ.cjs} +7 -6
  905. package/dist/{plan-D8rM4i4S.cjs.map → plan-D49plJdQ.cjs.map} +1 -1
  906. package/dist/{plan-BtOryfz5.js → plan-DvkySMRk.js} +6 -5
  907. package/dist/{plan-BtOryfz5.js.map → plan-DvkySMRk.js.map} +1 -1
  908. package/dist/primitives/form-element.cjs.js +1 -1
  909. package/dist/primitives/form-element.cjs.js.map +1 -1
  910. package/dist/primitives/form-element.es.js +1 -1
  911. package/dist/primitives/form-element.es.js.map +1 -1
  912. package/dist/{reasoning-activity-DaXMgyr3.cjs → reasoning-activity-COiiln9U.cjs} +3 -3
  913. package/dist/{reasoning-activity-DaXMgyr3.cjs.map → reasoning-activity-COiiln9U.cjs.map} +1 -1
  914. package/dist/{reasoning-activity-6VkIbDT4.js → reasoning-activity-r7B4_j4d.js} +3 -3
  915. package/dist/{reasoning-activity-6VkIbDT4.js.map → reasoning-activity-r7B4_j4d.js.map} +1 -1
  916. package/dist/{relative-timestamp-BlmN8Vjn.cjs → relative-timestamp-Nnwtw7Rp.cjs} +2 -2
  917. package/dist/{relative-timestamp-BlmN8Vjn.cjs.map → relative-timestamp-Nnwtw7Rp.cjs.map} +1 -1
  918. package/dist/{relative-timestamp-Cnp4VeLp.js → relative-timestamp-Rn8mAobA.js} +2 -2
  919. package/dist/{relative-timestamp-Cnp4VeLp.js.map → relative-timestamp-Rn8mAobA.js.map} +1 -1
  920. package/dist/resize/panel-group.cjs.js +14 -2
  921. package/dist/resize/panel-group.cjs.js.map +1 -1
  922. package/dist/resize/panel-group.es.js +14 -2
  923. package/dist/resize/panel-group.es.js.map +1 -1
  924. package/dist/{search-input-BKXiYeed.js → search-input-63Y1_wgA.js} +3 -3
  925. package/dist/{search-input-BKXiYeed.js.map → search-input-63Y1_wgA.js.map} +1 -1
  926. package/dist/{search-input-T0orZ7Jf.cjs → search-input-CBhT3N4z.cjs} +3 -3
  927. package/dist/{search-input-T0orZ7Jf.cjs.map → search-input-CBhT3N4z.cjs.map} +1 -1
  928. package/dist/{section-Byml9qxH.cjs → section-C5r-Mtxk.cjs} +3 -3
  929. package/dist/{section-Byml9qxH.cjs.map → section-C5r-Mtxk.cjs.map} +1 -1
  930. package/dist/{section-DTooysg2.js → section-DYrbH35K.js} +3 -3
  931. package/dist/{section-DTooysg2.js.map → section-DYrbH35K.js.map} +1 -1
  932. package/dist/{select--ArpXYDc.js → select-CWxcmE3F.js} +2 -2
  933. package/dist/select-CWxcmE3F.js.map +1 -0
  934. package/dist/{select-DJQYAVcm.cjs → select-KV77JIvp.cjs} +2 -2
  935. package/dist/select-KV77JIvp.cjs.map +1 -0
  936. package/dist/{settings-row-B0jGFpVw.js → settings-row-Dc6ECXjj.js} +2 -2
  937. package/dist/{settings-row-B0jGFpVw.js.map → settings-row-Dc6ECXjj.js.map} +1 -1
  938. package/dist/{settings-row-Dt4WnnRf.cjs → settings-row-UPZXTcx1.cjs} +2 -2
  939. package/dist/{settings-row-Dt4WnnRf.cjs.map → settings-row-UPZXTcx1.cjs.map} +1 -1
  940. package/dist/{side-dialog-lQUx6B_M.cjs → side-dialog-CFTgnDXu.cjs} +2 -2
  941. package/dist/{side-dialog-lQUx6B_M.cjs.map → side-dialog-CFTgnDXu.cjs.map} +1 -1
  942. package/dist/{side-dialog-DZJc85m3.js → side-dialog-yvAvCday.js} +2 -2
  943. package/dist/{side-dialog-DZJc85m3.js.map → side-dialog-yvAvCday.js.map} +1 -1
  944. package/dist/{signal-activity-byCTRP86.cjs → signal-activity-BI-DRdjw.cjs} +4 -4
  945. package/dist/{signal-activity-byCTRP86.cjs.map → signal-activity-BI-DRdjw.cjs.map} +1 -1
  946. package/dist/{signal-activity-DW2ExjIp.js → signal-activity-_ChAbNsW.js} +4 -4
  947. package/dist/{signal-activity-DW2ExjIp.js.map → signal-activity-_ChAbNsW.js.map} +1 -1
  948. package/dist/{span-payload-primitives-CGamdu2t.js → span-payload-primitives-DceLKTQK.js} +3 -3
  949. package/dist/{span-payload-primitives-CGamdu2t.js.map → span-payload-primitives-DceLKTQK.js.map} +1 -1
  950. package/dist/{span-payload-primitives-SkL3U9hR.cjs → span-payload-primitives-DqeZJkw3.cjs} +3 -3
  951. package/dist/{span-payload-primitives-SkL3U9hR.cjs.map → span-payload-primitives-DqeZJkw3.cjs.map} +1 -1
  952. package/dist/src/domains/traces/components/span-data-panel-view.d.ts +3 -1
  953. package/dist/src/domains/traces/components/thread-trace/index.d.ts +23 -20
  954. package/dist/src/domains/traces/components/thread-trace/thread-trace-details.d.ts +1 -1
  955. package/dist/src/domains/traces/components/thread-trace/thread-trace-messages.d.ts +5 -15
  956. package/dist/src/domains/traces/components/thread-trace/thread-trace-root.d.ts +2 -2
  957. package/dist/src/domains/traces/components/thread-trace/thread-trace-row.d.ts +17 -2
  958. package/dist/src/domains/traces/components/thread-trace/thread-trace-span-panel.d.ts +3 -3
  959. package/dist/src/domains/traces/components/thread-trace/thread-trace-spans.d.ts +3 -4
  960. package/dist/src/domains/traces/components/thread-view-skeleton.d.ts +10 -4
  961. package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +10 -3
  962. package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +7 -5
  963. package/dist/src/domains/traces/components/trace-messages-panel.d.ts +2 -10
  964. package/dist/src/domains/traces/components/trace-messages-skeleton.d.ts +9 -6
  965. package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -1
  966. package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +4 -6
  967. package/dist/src/domains/traces/components/trace-thread-panel.d.ts +7 -5
  968. package/dist/src/domains/traces/hooks/use-branch.d.ts +2 -2
  969. package/dist/src/domains/traces/hooks/use-trace-light-spans.d.ts +2 -2
  970. package/dist/src/domains/traces/hooks/use-trace-or-branch-spans.d.ts +2 -2
  971. package/dist/src/domains/traces/hooks/use-trace-query.d.ts +2 -0
  972. package/dist/src/domains/traces/hooks/use-trace-search.d.ts +11 -8
  973. package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +1 -7
  974. package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
  975. package/dist/src/domains/traces/utils/index.d.ts +1 -1
  976. package/dist/src/domains/traces/utils/to-searchable-spans.d.ts +2 -26
  977. package/dist/src/domains/workspace/components/frontmatter.d.ts +4 -0
  978. package/dist/src/domains/workspace/components/mount-icon.d.ts +6 -0
  979. package/dist/src/domains/workspace/components/use-workspace-context.d.ts +32 -0
  980. package/dist/src/domains/workspace/components/workspace-active-file.d.ts +13 -0
  981. package/dist/src/domains/workspace/components/workspace-add-skill-dialog.d.ts +39 -0
  982. package/dist/src/domains/workspace/components/workspace-add-skill.d.ts +10 -0
  983. package/dist/src/domains/workspace/components/workspace-context.d.ts +28 -0
  984. package/dist/src/domains/workspace/components/workspace-create-directory.d.ts +4 -0
  985. package/dist/src/domains/workspace/components/workspace-error.d.ts +5 -0
  986. package/dist/src/domains/workspace/components/workspace-markdown-preview.d.ts +4 -0
  987. package/dist/src/domains/workspace/components/workspace-parts.d.ts +25 -0
  988. package/dist/src/domains/workspace/components/workspace-search.d.ts +5 -0
  989. package/dist/src/domains/workspace/components/workspace-tree-view.d.ts +32 -0
  990. package/dist/src/domains/workspace/components/workspace-tree.d.ts +1 -0
  991. package/dist/src/domains/workspace/components/workspace.d.ts +18 -0
  992. package/dist/src/domains/workspace/file-type.d.ts +6 -0
  993. package/dist/src/domains/workspace/hooks/use-skills-sh.d.ts +51 -0
  994. package/dist/src/domains/workspace/hooks/use-workspace-directory.d.ts +17 -0
  995. package/dist/src/domains/workspace/hooks/use-workspace-file-content.d.ts +8 -0
  996. package/dist/src/domains/workspace/hooks/use-workspace-search.d.ts +11 -0
  997. package/dist/src/domains/workspace/index.d.ts +14 -0
  998. package/dist/src/domains/workspace/path.d.ts +6 -0
  999. package/dist/src/ds/components/Button/button.stories.d.ts +1 -0
  1000. package/dist/src/ds/components/ChatShell/chat-shell.d.ts +13 -8
  1001. package/dist/src/ds/components/Code/code.d.ts +1 -1
  1002. package/dist/src/ds/components/CollapsibleBox/collapsible-box.d.ts +5 -2
  1003. package/dist/src/ds/components/CollapsibleBox/collapsible-box.stories.d.ts +1 -0
  1004. package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -1
  1005. package/dist/src/ds/components/Command/command.stories.d.ts +1 -0
  1006. package/dist/src/ds/components/InputGroup/input-group.d.ts +2 -0
  1007. package/dist/src/ds/components/InputGroup/input-group.stories.d.ts +0 -1
  1008. package/dist/src/ds/components/InputNumber/index.d.ts +1 -0
  1009. package/dist/src/ds/components/InputNumber/input-number.d.ts +26 -0
  1010. package/dist/src/ds/components/InputNumber/input-number.stories.d.ts +11 -0
  1011. package/dist/src/ds/components/Tabs/tabs-context.d.ts +0 -1
  1012. package/dist/src/ds/components/Tabs/tabs-list.d.ts +0 -7
  1013. package/dist/src/ds/components/Tabs/tabs-root.d.ts +1 -1
  1014. package/dist/src/ds/components/Tabs/tabs-tab.d.ts +3 -1
  1015. package/dist/src/ds/components/Tabs/tabs.stories.d.ts +0 -1
  1016. package/dist/src/ds/components/ThinkingLevel/index.d.ts +4 -0
  1017. package/dist/src/ds/components/ThinkingLevel/thinking-level-picker.d.ts +17 -0
  1018. package/dist/src/ds/components/ThinkingLevel/thinking-level-ramp.d.ts +9 -0
  1019. package/dist/src/ds/components/ThinkingLevel/thinking-level-slider.d.ts +13 -0
  1020. package/dist/src/ds/components/ThinkingLevel/thinking-level.stories.d.ts +14 -0
  1021. package/dist/src/ds/components/ThinkingLevel/use-thinking-level-stop.d.ts +29 -0
  1022. package/dist/src/ds/components/ai/transcript-divider/stories/transcript-divider.stories.d.ts +3 -0
  1023. package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +6 -1
  1024. package/dist/src/ds/icons/FileIcon.d.ts +2 -0
  1025. package/dist/src/ds/icons/SearchIcon.d.ts +2 -0
  1026. package/dist/src/ds/icons/TrashIcon.d.ts +2 -0
  1027. package/dist/src/ds/icons/index.d.ts +3 -0
  1028. package/dist/src/ds/layout/tabbed-container/tabbed-container-root.d.ts +2 -1
  1029. package/dist/src/ds/tokens/fonts.d.ts +1 -1
  1030. package/dist/src/lib/resize/panel-group.d.ts +3 -1
  1031. package/dist/style.css +300 -127
  1032. package/dist/{tabs-content-DnscxcLI.cjs → tabs-content-DfH1hhpU.cjs} +3 -3
  1033. package/dist/{tabs-content-DnscxcLI.cjs.map → tabs-content-DfH1hhpU.cjs.map} +1 -1
  1034. package/dist/{tabs-content-CwbkTutf.js → tabs-content-OWF8un_n.js} +2 -2
  1035. package/dist/{tabs-content-CwbkTutf.js.map → tabs-content-OWF8un_n.js.map} +1 -1
  1036. package/dist/tabs-context-Cbuw7i0u.js +7 -0
  1037. package/dist/tabs-context-Cbuw7i0u.js.map +1 -0
  1038. package/dist/tabs-context-pnspPkI-.cjs +10 -0
  1039. package/dist/tabs-context-pnspPkI-.cjs.map +1 -0
  1040. package/dist/{tabs-root-C-ePF1y9.cjs → tabs-list-Tqj36HIL.cjs} +10 -43
  1041. package/dist/tabs-list-Tqj36HIL.cjs.map +1 -0
  1042. package/dist/{tabs-root-lrZZ3KwH.js → tabs-list-tLx5fgP0.js} +12 -44
  1043. package/dist/tabs-list-tLx5fgP0.js.map +1 -0
  1044. package/dist/tabs-root-BbzhUZl4.js +40 -0
  1045. package/dist/tabs-root-BbzhUZl4.js.map +1 -0
  1046. package/dist/tabs-root-Hkt7A6oq.cjs +42 -0
  1047. package/dist/tabs-root-Hkt7A6oq.cjs.map +1 -0
  1048. package/dist/tabs-root.css +0 -70
  1049. package/dist/{tabs-tab-BmIBFifi.cjs → tabs-tab-C-C2vX-D.cjs} +10 -7
  1050. package/dist/tabs-tab-C-C2vX-D.cjs.map +1 -0
  1051. package/dist/{tabs-tab-DoPSW-1s.js → tabs-tab-ClLIOGiC.js} +11 -6
  1052. package/dist/tabs-tab-ClLIOGiC.js.map +1 -0
  1053. package/dist/{text-and-icon-CuBm-Wjm.js → text-and-icon-Bo6NLLBl.js} +2 -2
  1054. package/dist/{text-and-icon-CuBm-Wjm.js.map → text-and-icon-Bo6NLLBl.js.map} +1 -1
  1055. package/dist/{text-and-icon-4eVhfmbb.cjs → text-and-icon-CvakH4YL.cjs} +2 -2
  1056. package/dist/{text-and-icon-4eVhfmbb.cjs.map → text-and-icon-CvakH4YL.cjs.map} +1 -1
  1057. package/dist/{thread-list-BTpezI4f.js → thread-list-D2zSEQWK.js} +2 -2
  1058. package/dist/{thread-list-BTpezI4f.js.map → thread-list-D2zSEQWK.js.map} +1 -1
  1059. package/dist/{thread-list-Drcptd4x.cjs → thread-list-DKBwiGfX.cjs} +2 -2
  1060. package/dist/{thread-list-Drcptd4x.cjs.map → thread-list-DKBwiGfX.cjs.map} +1 -1
  1061. package/dist/{time-picker-KE48KlpH.cjs → time-picker-Uz05Y0qU.cjs} +2 -2
  1062. package/dist/{time-picker-KE48KlpH.cjs.map → time-picker-Uz05Y0qU.cjs.map} +1 -1
  1063. package/dist/{time-picker-DRSAkFuj.js → time-picker-eQkyOP4X.js} +2 -2
  1064. package/dist/{time-picker-DRSAkFuj.js.map → time-picker-eQkyOP4X.js.map} +1 -1
  1065. package/dist/tokens.cjs.js +3 -0
  1066. package/dist/tokens.cjs.js.map +1 -1
  1067. package/dist/tokens.es.js +3 -0
  1068. package/dist/tokens.es.js.map +1 -1
  1069. package/dist/{tool-call-arguments-CtUKj7IB.js → tool-call-arguments-DQv3oaEC.js} +3 -3
  1070. package/dist/{tool-call-arguments-CtUKj7IB.js.map → tool-call-arguments-DQv3oaEC.js.map} +1 -1
  1071. package/dist/{tool-call-arguments-BemKsB9v.cjs → tool-call-arguments-DdO3E60i.cjs} +3 -3
  1072. package/dist/{tool-call-arguments-BemKsB9v.cjs.map → tool-call-arguments-DdO3E60i.cjs.map} +1 -1
  1073. package/dist/{tool-call-group-D_ioE9hT.cjs → tool-call-group-CALHT0zr.cjs} +3 -3
  1074. package/dist/{tool-call-group-D_ioE9hT.cjs.map → tool-call-group-CALHT0zr.cjs.map} +1 -1
  1075. package/dist/{tool-call-group-ZuYxpyDs.js → tool-call-group-UoMplOy2.js} +3 -3
  1076. package/dist/{tool-call-group-ZuYxpyDs.js.map → tool-call-group-UoMplOy2.js.map} +1 -1
  1077. package/dist/{traces-data-list-Dd8vMPQK.cjs → traces-data-list-D-wz-Je3.cjs} +5 -5
  1078. package/dist/{traces-data-list-Dd8vMPQK.cjs.map → traces-data-list-D-wz-Je3.cjs.map} +1 -1
  1079. package/dist/{traces-data-list-Fvl8mlih.js → traces-data-list-DmCgejAx.js} +5 -5
  1080. package/dist/{traces-data-list-Fvl8mlih.js.map → traces-data-list-DmCgejAx.js.map} +1 -1
  1081. package/dist/transcript-divider-273Bsdjs.cjs +30 -0
  1082. package/dist/transcript-divider-273Bsdjs.cjs.map +1 -0
  1083. package/dist/transcript-divider-CPIo8NUj.js +28 -0
  1084. package/dist/transcript-divider-CPIo8NUj.js.map +1 -0
  1085. package/dist/tree-DOVwqiSm.cjs +493 -0
  1086. package/dist/tree-DOVwqiSm.cjs.map +1 -0
  1087. package/dist/tree-DixCN7B0.js +472 -0
  1088. package/dist/tree-DixCN7B0.js.map +1 -0
  1089. package/dist/use-collapsible-box-B0t2_SvP.js +20 -0
  1090. package/dist/use-collapsible-box-B0t2_SvP.js.map +1 -0
  1091. package/dist/use-collapsible-box-BI80L4h_.cjs +23 -0
  1092. package/dist/use-collapsible-box-BI80L4h_.cjs.map +1 -0
  1093. package/dist/{use-workflow-graph-runtime-JQwLwNBD.js → use-workflow-graph-runtime-BF_NZEkj.js} +4 -4
  1094. package/dist/{use-workflow-graph-runtime-JQwLwNBD.js.map → use-workflow-graph-runtime-BF_NZEkj.js.map} +1 -1
  1095. package/dist/{use-workflow-graph-runtime-BNAtEa06.cjs → use-workflow-graph-runtime-r_OOpvSo.cjs} +4 -4
  1096. package/dist/{use-workflow-graph-runtime-BNAtEa06.cjs.map → use-workflow-graph-runtime-r_OOpvSo.cjs.map} +1 -1
  1097. package/dist/{workflow-condition-card-3J-As62x.js → workflow-condition-card-BCSYogql.js} +4 -4
  1098. package/dist/{workflow-condition-card-3J-As62x.js.map → workflow-condition-card-BCSYogql.js.map} +1 -1
  1099. package/dist/{workflow-condition-card-BjEAp0t6.cjs → workflow-condition-card-Dlo2PaKV.cjs} +4 -4
  1100. package/dist/{workflow-condition-card-BjEAp0t6.cjs.map → workflow-condition-card-Dlo2PaKV.cjs.map} +1 -1
  1101. package/dist/{workflow-data-edge-view-C4nbA2Fa.js → workflow-data-edge-view-JmkSlDp1.js} +2 -2
  1102. package/dist/{workflow-data-edge-view-C4nbA2Fa.js.map → workflow-data-edge-view-JmkSlDp1.js.map} +1 -1
  1103. package/dist/{workflow-data-edge-view-aHAZkZOH.cjs → workflow-data-edge-view-aNTgHQUk.cjs} +2 -2
  1104. package/dist/{workflow-data-edge-view-aHAZkZOH.cjs.map → workflow-data-edge-view-aNTgHQUk.cjs.map} +1 -1
  1105. package/dist/{workflow-debug-controls-tty6gLX2.js → workflow-debug-controls-CQc8ljAI.js} +3 -3
  1106. package/dist/{workflow-debug-controls-tty6gLX2.js.map → workflow-debug-controls-CQc8ljAI.js.map} +1 -1
  1107. package/dist/{workflow-debug-controls-VbxiluNZ.cjs → workflow-debug-controls-WXT05idC.cjs} +3 -3
  1108. package/dist/{workflow-debug-controls-VbxiluNZ.cjs.map → workflow-debug-controls-WXT05idC.cjs.map} +1 -1
  1109. package/dist/{workflow-edge-data-button-2aIkzgev.js → workflow-edge-data-button-B7bM7UqW.js} +2 -2
  1110. package/dist/{workflow-edge-data-button-2aIkzgev.js.map → workflow-edge-data-button-B7bM7UqW.js.map} +1 -1
  1111. package/dist/{workflow-edge-data-button-BFNO-TRL.cjs → workflow-edge-data-button-CHoNrfef.cjs} +2 -2
  1112. package/dist/{workflow-edge-data-button-BFNO-TRL.cjs.map → workflow-edge-data-button-CHoNrfef.cjs.map} +1 -1
  1113. package/package.json +10 -10
  1114. package/theme/colors.css +1 -1
  1115. package/theme/typography.css +19 -2
  1116. package/dist/Badge-D3EctKQo.cjs.map +0 -1
  1117. package/dist/Badge-DmOqFpXW.js.map +0 -1
  1118. package/dist/Txt-BP1SRHmL.js.map +0 -1
  1119. package/dist/Txt-DPmEpNbp.cjs.map +0 -1
  1120. package/dist/code-B-x-9sJ1.cjs.map +0 -1
  1121. package/dist/code-BeWhOFT4.js.map +0 -1
  1122. package/dist/combobox-styles-mbcWlNZQ.js.map +0 -1
  1123. package/dist/combobox-styles-qL3FSgmU.cjs.map +0 -1
  1124. package/dist/command-Bm0VcX7X.cjs.map +0 -1
  1125. package/dist/command-DFin7kHN.js.map +0 -1
  1126. package/dist/data-panel-CbomKGJt.js.map +0 -1
  1127. package/dist/data-panel-o-QLWuFV.cjs.map +0 -1
  1128. package/dist/field-BtvEQ68O.js.map +0 -1
  1129. package/dist/field-error-id-4DYu4KZ2.cjs.map +0 -1
  1130. package/dist/field-error-id-BSQLcfHo.js.map +0 -1
  1131. package/dist/field-ip9xiOVa.cjs.map +0 -1
  1132. package/dist/input-group-BgCXLSRV.cjs.map +0 -1
  1133. package/dist/input-group-wzirc-1k.js.map +0 -1
  1134. package/dist/main-sidebar-link-active-D8VSuJKx.cjs.map +0 -1
  1135. package/dist/main-sidebar-link-active-buZAhlHo.js.map +0 -1
  1136. package/dist/message-scroller-CiFr8MwT.js.map +0 -1
  1137. package/dist/message-scroller-E05PLPmT.cjs.map +0 -1
  1138. package/dist/metrics-kpi-card-1hbihR2T.cjs.map +0 -1
  1139. package/dist/metrics-kpi-card-CiB88L41.js.map +0 -1
  1140. package/dist/select--ArpXYDc.js.map +0 -1
  1141. package/dist/select-DJQYAVcm.cjs.map +0 -1
  1142. package/dist/tabs-root-C-ePF1y9.cjs.map +0 -1
  1143. package/dist/tabs-root-lrZZ3KwH.js.map +0 -1
  1144. package/dist/tabs-tab-BmIBFifi.cjs.map +0 -1
  1145. package/dist/tabs-tab-DoPSW-1s.js.map +0 -1
  1146. package/dist/use-collapsible-box-CCvsF_a9.js +0 -54
  1147. package/dist/use-collapsible-box-CCvsF_a9.js.map +0 -1
  1148. package/dist/use-collapsible-box-CbQOkokQ.cjs +0 -58
  1149. package/dist/use-collapsible-box-CbQOkokQ.cjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-error-id-4DYu4KZ2.cjs","sources":["../src/ds/components/FormFieldBlocks/block/field-block-column.tsx","../src/ds/components/FormFieldBlocks/block/field-block-error-msg.tsx","../src/ds/components/FormFieldBlocks/block/field-block-help-text.tsx","../src/ds/components/FormFieldBlocks/block/field-block-label.tsx","../src/ds/components/FormFieldBlocks/block/field-block-layout.tsx","../src/ds/components/FormFieldBlocks/block/field-block-message.tsx","../src/ds/components/FormFieldBlocks/block/field-block.tsx","../src/ds/components/FormFieldBlocks/block/field-error-id.ts"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type FieldBlockColumnProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function FieldBlockColumn({ children, className }: FieldBlockColumnProps) {\n return <div className={cn('grid gap-2 text-foreground', className)}>{children}</div>;\n}\n","import { CircleAlertIcon } from 'lucide-react';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\n\nexport type FieldBlockErrorMsgProps = {\n children?: React.ReactNode;\n /**\n * The field this message belongs to, matching the `name` given to `FieldBlock.Label`.\n * Sets a stable `error-<name>` id so the control can point at it with\n * `aria-describedby` and a screen reader reads the message with the field.\n */\n name?: string;\n className?: string;\n};\n\nexport function FieldBlockErrorMsg({ children, name, className }: FieldBlockErrorMsgProps) {\n return (\n <Txt\n variant=\"caption\"\n // `role=\"alert\"` lives here rather than in a wrapper at every call site, so an\n // error announces itself wherever it is used instead of depending on each caller\n // remembering to wrap it.\n role=\"alert\"\n id={name !== undefined ? `error-${name}` : undefined}\n className={cn('flex gap-1 text-destructive-foreground', className)}\n >\n <Icon size=\"xs\" className=\"mt-0.75 shrink-0\" aria-hidden>\n <CircleAlertIcon />\n </Icon>\n <span>{children}</span>\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nexport type FieldBlockHelpTextProps = {\n children?: React.ReactNode;\n};\n\nexport function FieldBlockHelpText({ children }: FieldBlockHelpTextProps) {\n return (\n <Txt variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLabelProps = {\n children: React.ReactNode;\n name: string;\n htmlFor?: string;\n required?: boolean;\n disabled?: boolean;\n size?: 'default' | 'bigger';\n className?: string;\n};\n\nexport function FieldBlockLabel({\n children,\n name,\n htmlFor = `input-${name}`,\n required,\n disabled = false,\n size = 'default',\n className,\n}: FieldBlockLabelProps) {\n return (\n <label\n htmlFor={htmlFor}\n className={cn(\n 'inline-flex items-center text-label',\n {\n 'text-body': size === 'bigger',\n 'text-foreground': !disabled,\n 'text-muted-foreground': disabled,\n },\n className,\n )}\n >\n {children}\n {required ? (\n <>\n <span\n aria-hidden\n className={cn('ml-0.5', disabled ? 'text-muted-foreground' : 'text-destructive-foreground')}\n >\n *\n </span>\n <span className=\"sr-only\"> (required)</span>\n </>\n ) : null}\n </label>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLayoutProps = {\n children: React.ReactNode;\n className?: string;\n layout?: 'vertical' | 'horizontal';\n // Optional prop to specify label column width in horizontal layout\n labelColumnWidth?: string; // e.g., '150px' or '30%'\n};\n\nexport function FieldBlockLayout({\n children,\n className,\n layout = 'vertical',\n labelColumnWidth,\n}: FieldBlockLayoutProps) {\n return (\n <div\n className={cn(\n 'relative grid gap-2 text-foreground',\n {\n 'horizontal-field-block grid-cols-[auto_1fr] items-baseline': layout === 'horizontal',\n },\n className,\n )}\n style={\n layout === 'horizontal' && labelColumnWidth ? { gridTemplateColumns: `${labelColumnWidth} 1fr` } : undefined\n }\n >\n {children}\n </div>\n );\n}\n","import { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\n\nexport type FieldBlockMessageProps = {\n name: string;\n helpText?: React.ReactNode;\n errorMsg?: React.ReactNode;\n};\n\nexport function FieldBlockMessage({ name, helpText, errorMsg }: FieldBlockMessageProps) {\n return (\n <div className=\"h-[1lh] min-w-0 overflow-hidden text-caption [&>p]:truncate\">\n {errorMsg ? (\n <FieldBlockErrorMsg name={name} className=\"truncate\">\n {errorMsg}\n </FieldBlockErrorMsg>\n ) : helpText ? (\n <FieldBlockHelpText>{helpText}</FieldBlockHelpText>\n ) : null}\n </div>\n );\n}\n","import { FieldBlockColumn } from './field-block-column';\nimport { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\nimport { FieldBlockLabel } from './field-block-label';\nimport { FieldBlockLayout } from './field-block-layout';\nimport { FieldBlockMessage } from './field-block-message';\n\n/** @deprecated Use `Field` with `FieldLabel`, `FieldDescription` and `FieldError`. */\nexport const FieldBlock = Object.assign(\n {},\n {\n Layout: FieldBlockLayout,\n Column: FieldBlockColumn,\n Label: FieldBlockLabel,\n HelpText: FieldBlockHelpText,\n ErrorMsg: FieldBlockErrorMsg,\n Message: FieldBlockMessage,\n },\n);\n","/** @deprecated Wrap the control in a `Field`: `FieldError` links itself to the control. */\nexport const fieldErrorId = (name: string) => `error-${name}`;\n"],"names":["cn","jsxs","Txt","jsx","Icon","CircleAlertIcon","Fragment"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-error-id-BSQLcfHo.js","sources":["../src/ds/components/FormFieldBlocks/block/field-block-column.tsx","../src/ds/components/FormFieldBlocks/block/field-block-error-msg.tsx","../src/ds/components/FormFieldBlocks/block/field-block-help-text.tsx","../src/ds/components/FormFieldBlocks/block/field-block-label.tsx","../src/ds/components/FormFieldBlocks/block/field-block-layout.tsx","../src/ds/components/FormFieldBlocks/block/field-block-message.tsx","../src/ds/components/FormFieldBlocks/block/field-block.tsx","../src/ds/components/FormFieldBlocks/block/field-error-id.ts"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type FieldBlockColumnProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function FieldBlockColumn({ children, className }: FieldBlockColumnProps) {\n return <div className={cn('grid gap-2 text-foreground', className)}>{children}</div>;\n}\n","import { CircleAlertIcon } from 'lucide-react';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\n\nexport type FieldBlockErrorMsgProps = {\n children?: React.ReactNode;\n /**\n * The field this message belongs to, matching the `name` given to `FieldBlock.Label`.\n * Sets a stable `error-<name>` id so the control can point at it with\n * `aria-describedby` and a screen reader reads the message with the field.\n */\n name?: string;\n className?: string;\n};\n\nexport function FieldBlockErrorMsg({ children, name, className }: FieldBlockErrorMsgProps) {\n return (\n <Txt\n variant=\"caption\"\n // `role=\"alert\"` lives here rather than in a wrapper at every call site, so an\n // error announces itself wherever it is used instead of depending on each caller\n // remembering to wrap it.\n role=\"alert\"\n id={name !== undefined ? `error-${name}` : undefined}\n className={cn('flex gap-1 text-destructive-foreground', className)}\n >\n <Icon size=\"xs\" className=\"mt-0.75 shrink-0\" aria-hidden>\n <CircleAlertIcon />\n </Icon>\n <span>{children}</span>\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nexport type FieldBlockHelpTextProps = {\n children?: React.ReactNode;\n};\n\nexport function FieldBlockHelpText({ children }: FieldBlockHelpTextProps) {\n return (\n <Txt variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLabelProps = {\n children: React.ReactNode;\n name: string;\n htmlFor?: string;\n required?: boolean;\n disabled?: boolean;\n size?: 'default' | 'bigger';\n className?: string;\n};\n\nexport function FieldBlockLabel({\n children,\n name,\n htmlFor = `input-${name}`,\n required,\n disabled = false,\n size = 'default',\n className,\n}: FieldBlockLabelProps) {\n return (\n <label\n htmlFor={htmlFor}\n className={cn(\n 'inline-flex items-center text-label',\n {\n 'text-body': size === 'bigger',\n 'text-foreground': !disabled,\n 'text-muted-foreground': disabled,\n },\n className,\n )}\n >\n {children}\n {required ? (\n <>\n <span\n aria-hidden\n className={cn('ml-0.5', disabled ? 'text-muted-foreground' : 'text-destructive-foreground')}\n >\n *\n </span>\n <span className=\"sr-only\"> (required)</span>\n </>\n ) : null}\n </label>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLayoutProps = {\n children: React.ReactNode;\n className?: string;\n layout?: 'vertical' | 'horizontal';\n // Optional prop to specify label column width in horizontal layout\n labelColumnWidth?: string; // e.g., '150px' or '30%'\n};\n\nexport function FieldBlockLayout({\n children,\n className,\n layout = 'vertical',\n labelColumnWidth,\n}: FieldBlockLayoutProps) {\n return (\n <div\n className={cn(\n 'relative grid gap-2 text-foreground',\n {\n 'horizontal-field-block grid-cols-[auto_1fr] items-baseline': layout === 'horizontal',\n },\n className,\n )}\n style={\n layout === 'horizontal' && labelColumnWidth ? { gridTemplateColumns: `${labelColumnWidth} 1fr` } : undefined\n }\n >\n {children}\n </div>\n );\n}\n","import { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\n\nexport type FieldBlockMessageProps = {\n name: string;\n helpText?: React.ReactNode;\n errorMsg?: React.ReactNode;\n};\n\nexport function FieldBlockMessage({ name, helpText, errorMsg }: FieldBlockMessageProps) {\n return (\n <div className=\"h-[1lh] min-w-0 overflow-hidden text-caption [&>p]:truncate\">\n {errorMsg ? (\n <FieldBlockErrorMsg name={name} className=\"truncate\">\n {errorMsg}\n </FieldBlockErrorMsg>\n ) : helpText ? (\n <FieldBlockHelpText>{helpText}</FieldBlockHelpText>\n ) : null}\n </div>\n );\n}\n","import { FieldBlockColumn } from './field-block-column';\nimport { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\nimport { FieldBlockLabel } from './field-block-label';\nimport { FieldBlockLayout } from './field-block-layout';\nimport { FieldBlockMessage } from './field-block-message';\n\n/** @deprecated Use `Field` with `FieldLabel`, `FieldDescription` and `FieldError`. */\nexport const FieldBlock = Object.assign(\n {},\n {\n Layout: FieldBlockLayout,\n Column: FieldBlockColumn,\n Label: FieldBlockLabel,\n HelpText: FieldBlockHelpText,\n ErrorMsg: FieldBlockErrorMsg,\n Message: FieldBlockMessage,\n },\n);\n","/** @deprecated Wrap the control in a `Field`: `FieldError` links itself to the control. */\nexport const fieldErrorId = (name: string) => `error-${name}`;\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"field-ip9xiOVa.cjs","sources":["../src/ds/components/Field/field.tsx"],"sourcesContent":["import { Field as FieldPrimitive } from '@base-ui/react/field';\nimport { Fieldset as FieldsetPrimitive } from '@base-ui/react/fieldset';\nimport { CircleAlertIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { FieldAriaContext, useFieldAriaIds } from './field-control-aria';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\n\ntype FieldProps = Omit<FieldPrimitive.Root.Props, 'className'> & {\n className?: string;\n orientation?: 'vertical' | 'horizontal' | 'responsive';\n};\n\nconst orientationClassName = {\n vertical: 'grid gap-2',\n horizontal: 'flex items-center gap-2 has-[>[data-slot=field-label]:first-child]:justify-between',\n responsive: 'flex flex-col gap-2 sm:flex-row sm:items-center',\n} satisfies Record<NonNullable<FieldProps['orientation']>, string>;\n\nfunction Field({ className, orientation = 'vertical', invalid = false, ...props }: FieldProps) {\n const id = React.useId();\n const [hasDescription, setHasDescription] = React.useState(false);\n const ariaIds = React.useMemo(\n () => ({\n labelId: `${id}-label`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n controlId: `${id}-control`,\n invalid,\n hasDescription,\n setHasDescription,\n }),\n [id, invalid, hasDescription],\n );\n\n return (\n <FieldAriaContext.Provider value={ariaIds}>\n <FieldPrimitive.Root\n invalid={invalid}\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn('min-w-0 text-foreground', orientationClassName[orientation], className)}\n {...props}\n />\n </FieldAriaContext.Provider>\n );\n}\n\ntype FieldContentProps = React.ComponentProps<'div'>;\n\nfunction FieldContent({ className, ...props }: FieldContentProps) {\n return <div data-slot=\"field-content\" className={cn('grid min-w-0 flex-1 gap-2', className)} {...props} />;\n}\n\ntype FieldItemProps = Omit<FieldPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nfunction FieldItem({ className, ...props }: FieldItemProps) {\n const isInsideField = useFieldAriaIds() !== null;\n const ItemScope = isInsideField ? FieldPrimitive.Item : FieldPrimitive.Root;\n\n return (\n <FieldAriaContext.Provider value={null}>\n <ItemScope data-slot=\"field-item\" className={cn('flex min-w-0 items-center gap-2', className)} {...props} />\n </FieldAriaContext.Provider>\n );\n}\n\nfunction RequiredMark() {\n return (\n <>\n <span aria-hidden className=\"ml-0.5 text-destructive-foreground in-data-disabled:text-muted-foreground\">\n *\n </span>{' '}\n <span className=\"sr-only\">(required)</span>\n </>\n );\n}\n\ntype FieldLabelProps = Omit<FieldPrimitive.Label.Props, 'className' | 'id'> & {\n className?: string;\n required?: boolean;\n size?: 'smaller' | 'default' | 'bigger';\n};\n\nfunction FieldLabel({ className, required = false, size = 'default', children, onClick, ...props }: FieldLabelProps) {\n const field = useFieldAriaIds();\n\n const focusManualControl: FieldLabelProps['onClick'] = event => {\n onClick?.(event);\n if (!field || event.defaultPrevented) return;\n event.currentTarget.ownerDocument.getElementById(field.controlId)?.focus();\n };\n\n return (\n <FieldPrimitive.Label\n id={field?.labelId}\n data-slot=\"field-label\"\n className={cn(\n 'inline-flex shrink-0 items-center text-label text-foreground data-disabled:text-muted-foreground',\n 'not-data-disabled:has-[[role=checkbox],[role=switch],[role=radio]]:cursor-pointer',\n 'not-data-disabled:[:is([data-slot=field],[data-slot=field-item]):has(>[role=checkbox],>[role=switch],>[role=radio])_&]:cursor-pointer',\n 'data-disabled:cursor-not-allowed',\n size === 'smaller' && 'text-column',\n size === 'bigger' && 'text-body',\n className,\n )}\n onClick={focusManualControl}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldPrimitive.Label>\n );\n}\n\ntype FieldDescriptionProps = Omit<FieldPrimitive.Description.Props, 'className' | 'id'> & {\n className?: string;\n};\n\nfunction FieldDescription({ className, ...props }: FieldDescriptionProps) {\n const field = useFieldAriaIds();\n const setHasDescription = field?.setHasDescription;\n\n React.useEffect(() => {\n if (!setHasDescription) return;\n setHasDescription(true);\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <FieldPrimitive.Description\n id={field?.descriptionId}\n data-slot=\"field-description\"\n className={cn('-mt-1 text-caption text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype FieldErrorProps = Omit<FieldPrimitive.Error.Props, 'className' | 'match' | 'render'> & {\n className?: string;\n};\n\nconst fieldErrorClassName = '-mt-1 flex gap-1 text-caption text-destructive-foreground';\n\nfunction FieldErrorIcon() {\n return (\n <Icon size=\"xs\" className=\"mt-0.75 shrink-0\" aria-hidden>\n <CircleAlertIcon />\n </Icon>\n );\n}\n\nfunction FieldError({ className, children, ...props }: FieldErrorProps) {\n const field = useFieldAriaIds();\n\n if (children) {\n return (\n <FieldPrimitive.Error\n key=\"external\"\n id={field?.errorId}\n match\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n >\n <FieldErrorIcon />\n <span className=\"min-w-0\">{children}</span>\n </FieldPrimitive.Error>\n );\n }\n\n return (\n <FieldPrimitive.Error\n key=\"native\"\n id={field?.errorId}\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n render={({ children: message, ...errorProps }) => (\n <div {...errorProps}>\n <FieldErrorIcon />\n <span className=\"min-w-0\">{message}</span>\n </div>\n )}\n />\n );\n}\n\ntype FieldsetProps = Omit<FieldsetPrimitive.Root.Props, 'className'> & {\n className?: string;\n};\n\nfunction Fieldset({ className, ...props }: FieldsetProps) {\n return (\n <FieldsetPrimitive.Root\n data-slot=\"fieldset\"\n className={cn('m-0 grid min-w-0 gap-3 border-0 p-0', className)}\n {...props}\n />\n );\n}\n\ntype FieldsetLegendProps = Omit<FieldsetPrimitive.Legend.Props, 'className'> & {\n className?: string;\n required?: boolean;\n};\n\nfunction FieldsetLegend({ className, required = false, children, ...props }: FieldsetLegendProps) {\n return (\n <FieldsetPrimitive.Legend\n data-slot=\"fieldset-legend\"\n className={cn('text-label text-foreground data-disabled:text-muted-foreground', className)}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldsetPrimitive.Legend>\n );\n}\n\nexport { Field, FieldContent, FieldItem, FieldLabel, FieldDescription, FieldError, Fieldset, FieldsetLegend };\nexport type {\n FieldProps,\n FieldContentProps,\n FieldItemProps,\n FieldLabelProps,\n FieldDescriptionProps,\n FieldErrorProps,\n FieldsetProps,\n FieldsetLegendProps,\n};\n"],"names":["React","jsx","FieldAriaContext","FieldPrimitive","cn","useFieldAriaIds","jsxs","Fragment","field","Icon","CircleAlertIcon","FieldsetPrimitive"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-group-BgCXLSRV.cjs","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { ControlSizeContext, controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRimWithin,\n inputSurfaceAndFocusWithinStyle,\n} from '@/ds/primitives/form-element';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\n// Size flows down as `data-size` on the named group root (`group/input-group`), read by the\n// control through `group-data-[size=…]` variants — no prop drilling. The one context read is\n// upward: a wrapper that owns the rung (ButtonsGroup) hands it to the field.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n // The wrapper owns its control's width — a bare control has no width of its own,\n // so the group is the one that decides the input fills the remaining space.\n '[&>[data-slot=input-group-control]]:min-w-0 [&>[data-slot=input-group-control]]:flex-1',\n 'text-foreground',\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:text-muted-foreground',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// A group wears the field material — the same `bg-card` plus rim an Input wears — so a\n// group and a bare field beside it are one surface. Its states move the rim, and they\n// read the nested control's focus (`focus-within`) because the wrapper never takes focus\n// itself. There is no second look: a transparent `outline` group existed alongside this\n// one and only ever produced two boundary languages for the same control, which is why\n// four of its call sites had wrapped it in a hand-made `bg-card rounded-full` div to get\n// the material back.\nconst inputGroupClassName = cn(\n inputGroupBaseClassName,\n 'rounded-full',\n inputSurfaceAndFocusWithinStyle,\n fieldErrorRimWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nexport type InputGroupProps = React.ComponentProps<'div'> & {\n size?: ControlSize;\n};\n\nfunction InputGroup({ className, size, ...props }: InputGroupProps) {\n // A wrapper's rung wins over the field's own: inside a ButtonsGroup the group owns the\n // height of every segment, so a field that kept its own type scale would sit at one rung\n // and read at another.\n const groupSize = React.useContext(ControlSizeContext);\n const resolved = groupSize ?? size ?? 'md';\n return (\n <div\n role=\"group\"\n data-slot=\"input-group\"\n data-size={resolved}\n className={cn(inputGroupClassName, controlHeight[resolved], className)}\n {...props}\n />\n );\n}\n\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=sm]/input-group:text-caption',\n 'group-data-[size=md]/input-group:text-body-sm',\n 'group-data-[size=lg]/input-group:text-body',\n);\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-muted-foreground select-none',\n inputGroupControlTextBySize,\n 'group-has-[:disabled]/input-group:text-muted-foreground',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nfunction InputGroupAddon({ className, align = 'inline-start', onClick, ...props }: InputGroupAddonProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n}\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control is sized to the root's\n// content box (token height minus the 1px border on each side) so it never overflows the\n// root — otherwise, in a flex-column parent, the root's content-based minimum would win\n// over its explicit height and the group would render 2px taller than a sibling control.\n// The explicit height also keeps the control from collapsing to the line-height in block\n// mode (flex-col + flex-none).\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=sm]/input-group:h-[calc(var(--spacing-control-sm)-2px)]',\n 'group-data-[size=md]/input-group:h-[calc(var(--spacing-control-md)-2px)]',\n 'group-data-[size=lg]/input-group:h-[calc(var(--spacing-control-lg)-2px)]',\n);\n\nexport type InputGroupInputProps = Omit<React.ComponentProps<'input'>, 'size'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupInput({ className, testId, error, type = 'text', ...props }: InputGroupInputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-label text-foreground outline-hidden',\n inputGroupControlHeightBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // WebKit and Firefox use different selectors for native number spinners.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport type InputGroupTextareaProps = React.ComponentProps<'textarea'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupTextarea({ className, testId, error, ...props }: InputGroupTextareaProps) {\n return (\n <TextareaControl\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-foreground outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n />\n );\n}\n\nexport type InputGroupTextProps = React.ComponentProps<'span'>;\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2 text-caption text-muted-foreground [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nfunction InputGroupButton({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }: InputGroupButtonProps) {\n return <Button type={type} size={size} variant={variant} {...props} />;\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["cn","inputSurfaceAndFocusWithinStyle","fieldErrorRimWithin","React","ControlSizeContext","jsx","controlHeight","cva","InputPrimitive","deprecatedErrorAria","keepOwnAccessibleName","TextareaControl","Button"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"input-group-wzirc-1k.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { ControlSizeContext, controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRimWithin,\n inputSurfaceAndFocusWithinStyle,\n} from '@/ds/primitives/form-element';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\n// Size flows down as `data-size` on the named group root (`group/input-group`), read by the\n// control through `group-data-[size=…]` variants — no prop drilling. The one context read is\n// upward: a wrapper that owns the rung (ButtonsGroup) hands it to the field.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n // The wrapper owns its control's width — a bare control has no width of its own,\n // so the group is the one that decides the input fills the remaining space.\n '[&>[data-slot=input-group-control]]:min-w-0 [&>[data-slot=input-group-control]]:flex-1',\n 'text-foreground',\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:text-muted-foreground',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// A group wears the field material — the same `bg-card` plus rim an Input wears — so a\n// group and a bare field beside it are one surface. Its states move the rim, and they\n// read the nested control's focus (`focus-within`) because the wrapper never takes focus\n// itself. There is no second look: a transparent `outline` group existed alongside this\n// one and only ever produced two boundary languages for the same control, which is why\n// four of its call sites had wrapped it in a hand-made `bg-card rounded-full` div to get\n// the material back.\nconst inputGroupClassName = cn(\n inputGroupBaseClassName,\n 'rounded-full',\n inputSurfaceAndFocusWithinStyle,\n fieldErrorRimWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nexport type InputGroupProps = React.ComponentProps<'div'> & {\n size?: ControlSize;\n};\n\nfunction InputGroup({ className, size, ...props }: InputGroupProps) {\n // A wrapper's rung wins over the field's own: inside a ButtonsGroup the group owns the\n // height of every segment, so a field that kept its own type scale would sit at one rung\n // and read at another.\n const groupSize = React.useContext(ControlSizeContext);\n const resolved = groupSize ?? size ?? 'md';\n return (\n <div\n role=\"group\"\n data-slot=\"input-group\"\n data-size={resolved}\n className={cn(inputGroupClassName, controlHeight[resolved], className)}\n {...props}\n />\n );\n}\n\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=sm]/input-group:text-caption',\n 'group-data-[size=md]/input-group:text-body-sm',\n 'group-data-[size=lg]/input-group:text-body',\n);\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-muted-foreground select-none',\n inputGroupControlTextBySize,\n 'group-has-[:disabled]/input-group:text-muted-foreground',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nfunction InputGroupAddon({ className, align = 'inline-start', onClick, ...props }: InputGroupAddonProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n}\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control is sized to the root's\n// content box (token height minus the 1px border on each side) so it never overflows the\n// root — otherwise, in a flex-column parent, the root's content-based minimum would win\n// over its explicit height and the group would render 2px taller than a sibling control.\n// The explicit height also keeps the control from collapsing to the line-height in block\n// mode (flex-col + flex-none).\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=sm]/input-group:h-[calc(var(--spacing-control-sm)-2px)]',\n 'group-data-[size=md]/input-group:h-[calc(var(--spacing-control-md)-2px)]',\n 'group-data-[size=lg]/input-group:h-[calc(var(--spacing-control-lg)-2px)]',\n);\n\nexport type InputGroupInputProps = Omit<React.ComponentProps<'input'>, 'size'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupInput({ className, testId, error, type = 'text', ...props }: InputGroupInputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-label text-foreground outline-hidden',\n inputGroupControlHeightBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // WebKit and Firefox use different selectors for native number spinners.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport type InputGroupTextareaProps = React.ComponentProps<'textarea'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupTextarea({ className, testId, error, ...props }: InputGroupTextareaProps) {\n return (\n <TextareaControl\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-foreground outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n />\n );\n}\n\nexport type InputGroupTextProps = React.ComponentProps<'span'>;\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2 text-caption text-muted-foreground [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nfunction InputGroupButton({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }: InputGroupButtonProps) {\n return <Button type={type} size={size} variant={variant} {...props} />;\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["InputPrimitive"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"main-sidebar-link-active-D8VSuJKx.cjs","sources":["../src/ds/components/MainSidebar/main-sidebar-context.ts","../src/ds/components/MainSidebar/main-sidebar-mobile-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar-nav.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-label.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-item-classes.ts","../src/ds/components/MainSidebar/main-sidebar-nav-link.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-list.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-section.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-separator.tsx","../src/ds/components/MainSidebar/main-sidebar-root.tsx","../src/ds/components/MainSidebar/main-sidebar-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar-provider.tsx","../src/ds/components/MainSidebar/main-sidebar-link-active.ts"],"sourcesContent":["import React from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nexport type SidebarState = 'default' | 'collapsed';\n\ntype MainSidebarContextValue = {\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 MainSidebarStateContextValue = Omit<\n MainSidebarContextValue,\n 'openMobile' | 'mobileTriggerRef' | 'setOpenMobile' | 'setMobileDrawerPresent'\n>;\n\nexport const MainSidebarContext = React.createContext<MainSidebarStateContextValue | 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(): MainSidebarStateContextValue | null {\n return React.useContext(MainSidebarContext);\n}\n\nexport function useMainSidebar(): MainSidebarContextValue {\n const ctx = React.useContext(MainSidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) {\n throw new Error('useMainSidebar must be used within a MainSidebarProvider.');\n }\n return { ...ctx, ...drawer };\n}\n\nexport function useMaybeSidebar(): MainSidebarContextValue | null {\n const ctx = React.useContext(MainSidebarContext);\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 MainSidebarProvider.');\n return drawer;\n}\n","import { MenuIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarMobileTriggerProps = ComponentPropsWithoutRef<'button'> & {\n icon?: React.ReactNode;\n};\n\nexport function MainSidebarMobileTrigger({\n className,\n icon,\n 'aria-label': ariaLabel = 'Open navigation menu',\n onClick,\n ...props\n}: MainSidebarMobileTriggerProps) {\n const { isMobile, mobileTriggerRef, setOpenMobile } = useMainSidebar();\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 type { ComponentPropsWithoutRef } from 'react';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavProps = ComponentPropsWithoutRef<'nav'>;\n\nexport function MainSidebarNav({\n 'aria-label': ariaLabel = 'Main',\n children,\n className,\n ...props\n}: MainSidebarNavProps) {\n return (\n <nav aria-label={ariaLabel} className={cn('flex min-h-0 flex-1 flex-col', className)} {...props}>\n <ScrollArea className=\"min-h-0 flex-1\" mask={{ top: '3rem', bottom: '5rem' }}>\n <ScrollAreaViewport className=\"px-0.5\">{children}</ScrollAreaViewport>\n </ScrollArea>\n </nav>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebarState } from './main-sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavLabelProps = ComponentPropsWithoutRef<'span'> & {\n /** Override sidebar state. Defaults to context, then `'default'`. */\n state?: SidebarState;\n};\n\n/**\n * Label slot for `MainSidebar.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 MainSidebarNavLabel({ children, className, state: stateProp, ...rest }: MainSidebarNavLabelProps) {\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 MainSidebarNavItemSize = NonNullable<NavItemVariantProps['size']>;\n\ntype NavRowSurfaceOptions = {\n isActive?: boolean;\n isFeatured?: boolean;\n};\n\ntype NavItemLayoutOptions = {\n isCollapsed?: boolean;\n level?: number;\n size?: MainSidebarNavItemSize;\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 React from 'react';\nimport type { ComponentProps } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebarState } from './main-sidebar-context';\nimport { navItemClasses, navItemLayoutClasses, navRowSurfaceClasses } from './main-sidebar-nav-item-classes';\nimport type { MainSidebarNavItemSize } from './main-sidebar-nav-item-classes';\nimport { MainSidebarNavLabel } from './main-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 NavLink = {\n name: string;\n url: string;\n icon?: React.ReactNode;\n children?: NavLink[];\n isActive?: boolean;\n variant?: 'default' | 'featured';\n tooltipMsg?: string;\n /** @deprecated Prefer nested `children`; accepted for callers still rendering manual sublinks. */\n indent?: boolean;\n};\n\nexport type MainSidebarNavLinkProps = Omit<ComponentProps<'li'>, 'children'> & {\n link?: NavLink;\n isActive?: boolean;\n state?: SidebarState;\n children?: React.ReactNode;\n size?: MainSidebarNavItemSize;\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 'aria-current'?: 'page';\n};\n\nexport function MainSidebarNavLink({\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}: MainSidebarNavLinkProps) {\n if (render && asChild) {\n throw new Error('MainSidebarNavLink 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 : navItemClasses({ isActive, isCollapsed, isFeatured, level, size });\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?: NavLink;\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 if (render) {\n return React.cloneElement(render, { className: cn(className, render.props.className), 'aria-current': current });\n }\n\n if (asChild) {\n if (!React.isValidElement<SlottedNavChildProps>(children)) {\n throw new Error(\n 'MainSidebarNavLink 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(children, {\n className: cn(className, children.props.className),\n 'aria-current': current,\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 <MainSidebarNavLabel state={state}>{link.name}</MainSidebarNavLabel>\n {children}\n </Link>\n );\n}\n\nfunction navTooltipLabel(link: NavLink | 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 MainSidebarNavListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport function MainSidebarNavList({ className, children, ...props }: MainSidebarNavListProps) {\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 type { NavLink } from './main-sidebar-nav-link';\nimport { cn } from '@/lib/utils';\n\nexport type NavSection = {\n key: string;\n title?: string;\n href?: string;\n links: NavLink[];\n separator?: boolean;\n isHeaderActive?: boolean;\n};\n\nexport type MainSidebarNavSectionProps = ComponentPropsWithoutRef<'section'>;\n\nexport function MainSidebarNavSection({ className, children, ...props }: MainSidebarNavSectionProps) {\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 MainSidebarNavSeparatorProps = ComponentPropsWithoutRef<'div'>;\n\nexport function MainSidebarNavSeparator({ className, ...props }: MainSidebarNavSeparatorProps) {\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 { MenuIcon } from 'lucide-react';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useMainSidebar } from './main-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 MainSidebarRootProps = {\n children: React.ReactNode;\n className?: string;\n mobileMode?: 'drawer' | 'takeover';\n};\n\nconst KEYBOARD_STEP = 10;\nconst DRAG_THRESHOLD = 5;\n\nexport function MainSidebarRoot({ children, className, mobileMode = 'drawer' }: MainSidebarRootProps) {\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 } = useMainSidebar();\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 'px-2',\n isHidden && 'pointer-events-none px-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 { PanelLeftIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-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 MainSidebarTriggerProps = ComponentPropsWithoutRef<'button'>;\n\nexport function MainSidebarTrigger({ className, onClick, ...props }: MainSidebarTriggerProps) {\n const { desktopState, toggleSidebar } = useMainSidebar();\n const isCollapsed = desktopState === 'collapsed';\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 React from 'react';\nimport type { CSSProperties } from 'react';\nimport {\n MainSidebarContext,\n MobileDrawerContext,\n type MobileDrawerContextValue,\n type SidebarState,\n} from './main-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 MainSidebarProviderProps = {\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 NavLink/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 MainSidebarProvider({\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}: MainSidebarProviderProps) {\n // Normalize props so bad inputs (defaultWidth < minWidth, min > max, etc.) never produce a broken layout.\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 // Default snap-zone = minWidth: dragging below the expanded min snaps to collapsed,\n // since below min the sidebar cannot render its expanded layout anyway.\n // Pass `collapseBelow={0}` to disable snap.\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 // Hydrate synchronously from localStorage so first paint is already at the correct width.\n // Falls back to clamped defaults during SSR or when storage is unavailable.\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 // Watch viewport for mobile breakpoint.\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 // Close mobile drawer when crossing back to desktop.\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 // Keep the CSS var in sync with collapsed state transitions.\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 so a synchronous follow-up `commit()` (e.g. keyboard handler)\n // persists the new state instead of the stale render-time value.\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 // Global ⌘B / Ctrl+B toggle. Skip when typing.\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 // CSS var owned exclusively by writeCssVar (single source of truth).\n // SSR seeds the initial value here; post-mount writeCssVar takes over.\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 <MainSidebarContext.Provider value={contextValue}>\n <MobileDrawerContext.Provider value={drawerValue}>{children}</MobileDrawerContext.Provider>\n </MainSidebarContext.Provider>\n </div>\n );\n}\n","import type { NavLink } from './main-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: NavLink, pathname: string, siblings: NavLink[] = []): boolean {\n const matches = (url: string) => pathname === url || pathname.startsWith(url + '/');\n const flattenLinks = (links: NavLink[]): NavLink[] =>\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","quietTextHover","focusRing","MenuIcon","ScrollArea","ScrollAreaViewport","VisuallyHidden","cva","controlHeight","surfaceStateLayerStyle","controlStateColorTransition","jsxs","Tooltip","TooltipTrigger","TooltipContent","useRef","useEffect","useCallback","Drawer","DrawerContent","DrawerClose","overlaySurfaceStyle","quietTextHoverInGroup","surfaceGroupStateLayerStyle","DrawerTitle","DrawerDescription","ResizeHandleIndicator","PanelLeftIcon","Kbd"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"main-sidebar-link-active-buZAhlHo.js","sources":["../src/ds/components/MainSidebar/main-sidebar-context.ts","../src/ds/components/MainSidebar/main-sidebar-mobile-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar-nav.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-label.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-item-classes.ts","../src/ds/components/MainSidebar/main-sidebar-nav-link.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-list.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-section.tsx","../src/ds/components/MainSidebar/main-sidebar-nav-separator.tsx","../src/ds/components/MainSidebar/main-sidebar-root.tsx","../src/ds/components/MainSidebar/main-sidebar-trigger.tsx","../src/ds/components/MainSidebar/main-sidebar-provider.tsx","../src/ds/components/MainSidebar/main-sidebar-link-active.ts"],"sourcesContent":["import React from 'react';\nimport type { LinkComponent } from '@/ds/types/link-component';\n\nexport type SidebarState = 'default' | 'collapsed';\n\ntype MainSidebarContextValue = {\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 MainSidebarStateContextValue = Omit<\n MainSidebarContextValue,\n 'openMobile' | 'mobileTriggerRef' | 'setOpenMobile' | 'setMobileDrawerPresent'\n>;\n\nexport const MainSidebarContext = React.createContext<MainSidebarStateContextValue | 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(): MainSidebarStateContextValue | null {\n return React.useContext(MainSidebarContext);\n}\n\nexport function useMainSidebar(): MainSidebarContextValue {\n const ctx = React.useContext(MainSidebarContext);\n const drawer = React.useContext(MobileDrawerContext);\n if (!ctx || !drawer) {\n throw new Error('useMainSidebar must be used within a MainSidebarProvider.');\n }\n return { ...ctx, ...drawer };\n}\n\nexport function useMaybeSidebar(): MainSidebarContextValue | null {\n const ctx = React.useContext(MainSidebarContext);\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 MainSidebarProvider.');\n return drawer;\n}\n","import { MenuIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-sidebar-context';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarMobileTriggerProps = ComponentPropsWithoutRef<'button'> & {\n icon?: React.ReactNode;\n};\n\nexport function MainSidebarMobileTrigger({\n className,\n icon,\n 'aria-label': ariaLabel = 'Open navigation menu',\n onClick,\n ...props\n}: MainSidebarMobileTriggerProps) {\n const { isMobile, mobileTriggerRef, setOpenMobile } = useMainSidebar();\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 type { ComponentPropsWithoutRef } from 'react';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavProps = ComponentPropsWithoutRef<'nav'>;\n\nexport function MainSidebarNav({\n 'aria-label': ariaLabel = 'Main',\n children,\n className,\n ...props\n}: MainSidebarNavProps) {\n return (\n <nav aria-label={ariaLabel} className={cn('flex min-h-0 flex-1 flex-col', className)} {...props}>\n <ScrollArea className=\"min-h-0 flex-1\" mask={{ top: '3rem', bottom: '5rem' }}>\n <ScrollAreaViewport className=\"px-0.5\">{children}</ScrollAreaViewport>\n </ScrollArea>\n </nav>\n );\n}\n","import type { ComponentPropsWithoutRef } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebarState } from './main-sidebar-context';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nexport type MainSidebarNavLabelProps = ComponentPropsWithoutRef<'span'> & {\n /** Override sidebar state. Defaults to context, then `'default'`. */\n state?: SidebarState;\n};\n\n/**\n * Label slot for `MainSidebar.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 MainSidebarNavLabel({ children, className, state: stateProp, ...rest }: MainSidebarNavLabelProps) {\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 MainSidebarNavItemSize = NonNullable<NavItemVariantProps['size']>;\n\ntype NavRowSurfaceOptions = {\n isActive?: boolean;\n isFeatured?: boolean;\n};\n\ntype NavItemLayoutOptions = {\n isCollapsed?: boolean;\n level?: number;\n size?: MainSidebarNavItemSize;\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 React from 'react';\nimport type { ComponentProps } from 'react';\nimport type { SidebarState } from './main-sidebar-context';\nimport { useMaybeSidebarState } from './main-sidebar-context';\nimport { navItemClasses, navItemLayoutClasses, navRowSurfaceClasses } from './main-sidebar-nav-item-classes';\nimport type { MainSidebarNavItemSize } from './main-sidebar-nav-item-classes';\nimport { MainSidebarNavLabel } from './main-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 NavLink = {\n name: string;\n url: string;\n icon?: React.ReactNode;\n children?: NavLink[];\n isActive?: boolean;\n variant?: 'default' | 'featured';\n tooltipMsg?: string;\n /** @deprecated Prefer nested `children`; accepted for callers still rendering manual sublinks. */\n indent?: boolean;\n};\n\nexport type MainSidebarNavLinkProps = Omit<ComponentProps<'li'>, 'children'> & {\n link?: NavLink;\n isActive?: boolean;\n state?: SidebarState;\n children?: React.ReactNode;\n size?: MainSidebarNavItemSize;\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 'aria-current'?: 'page';\n};\n\nexport function MainSidebarNavLink({\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}: MainSidebarNavLinkProps) {\n if (render && asChild) {\n throw new Error('MainSidebarNavLink 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 : navItemClasses({ isActive, isCollapsed, isFeatured, level, size });\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?: NavLink;\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 if (render) {\n return React.cloneElement(render, { className: cn(className, render.props.className), 'aria-current': current });\n }\n\n if (asChild) {\n if (!React.isValidElement<SlottedNavChildProps>(children)) {\n throw new Error(\n 'MainSidebarNavLink 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(children, {\n className: cn(className, children.props.className),\n 'aria-current': current,\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 <MainSidebarNavLabel state={state}>{link.name}</MainSidebarNavLabel>\n {children}\n </Link>\n );\n}\n\nfunction navTooltipLabel(link: NavLink | 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 MainSidebarNavListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport function MainSidebarNavList({ className, children, ...props }: MainSidebarNavListProps) {\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 type { NavLink } from './main-sidebar-nav-link';\nimport { cn } from '@/lib/utils';\n\nexport type NavSection = {\n key: string;\n title?: string;\n href?: string;\n links: NavLink[];\n separator?: boolean;\n isHeaderActive?: boolean;\n};\n\nexport type MainSidebarNavSectionProps = ComponentPropsWithoutRef<'section'>;\n\nexport function MainSidebarNavSection({ className, children, ...props }: MainSidebarNavSectionProps) {\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 MainSidebarNavSeparatorProps = ComponentPropsWithoutRef<'div'>;\n\nexport function MainSidebarNavSeparator({ className, ...props }: MainSidebarNavSeparatorProps) {\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 { MenuIcon } from 'lucide-react';\nimport { useCallback, useEffect, useRef } from 'react';\nimport type { KeyboardEvent as ReactKeyboardEvent, PointerEvent as ReactPointerEvent } from 'react';\nimport { useMainSidebar } from './main-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 MainSidebarRootProps = {\n children: React.ReactNode;\n className?: string;\n mobileMode?: 'drawer' | 'takeover';\n};\n\nconst KEYBOARD_STEP = 10;\nconst DRAG_THRESHOLD = 5;\n\nexport function MainSidebarRoot({ children, className, mobileMode = 'drawer' }: MainSidebarRootProps) {\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 } = useMainSidebar();\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 'px-2',\n isHidden && 'pointer-events-none px-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 { PanelLeftIcon } from 'lucide-react';\nimport type { ComponentPropsWithoutRef } from 'react';\nimport { useMainSidebar } from './main-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 MainSidebarTriggerProps = ComponentPropsWithoutRef<'button'>;\n\nexport function MainSidebarTrigger({ className, onClick, ...props }: MainSidebarTriggerProps) {\n const { desktopState, toggleSidebar } = useMainSidebar();\n const isCollapsed = desktopState === 'collapsed';\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 React from 'react';\nimport type { CSSProperties } from 'react';\nimport {\n MainSidebarContext,\n MobileDrawerContext,\n type MobileDrawerContextValue,\n type SidebarState,\n} from './main-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 MainSidebarProviderProps = {\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 NavLink/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 MainSidebarProvider({\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}: MainSidebarProviderProps) {\n // Normalize props so bad inputs (defaultWidth < minWidth, min > max, etc.) never produce a broken layout.\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 // Default snap-zone = minWidth: dragging below the expanded min snaps to collapsed,\n // since below min the sidebar cannot render its expanded layout anyway.\n // Pass `collapseBelow={0}` to disable snap.\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 // Hydrate synchronously from localStorage so first paint is already at the correct width.\n // Falls back to clamped defaults during SSR or when storage is unavailable.\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 // Watch viewport for mobile breakpoint.\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 // Close mobile drawer when crossing back to desktop.\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 // Keep the CSS var in sync with collapsed state transitions.\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 so a synchronous follow-up `commit()` (e.g. keyboard handler)\n // persists the new state instead of the stale render-time value.\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 // Global ⌘B / Ctrl+B toggle. Skip when typing.\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 // CSS var owned exclusively by writeCssVar (single source of truth).\n // SSR seeds the initial value here; post-mount writeCssVar takes over.\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 <MainSidebarContext.Provider value={contextValue}>\n <MobileDrawerContext.Provider value={drawerValue}>{children}</MobileDrawerContext.Provider>\n </MainSidebarContext.Provider>\n </div>\n );\n}\n","import type { NavLink } from './main-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: NavLink, pathname: string, siblings: NavLink[] = []): boolean {\n const matches = (url: string) => pathname === url || pathname.startsWith(url + '/');\n const flattenLinks = (links: NavLink[]): NavLink[] =>\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":["React"],"mappings":";;;;;;;;;;;;;;;;AAyCO,MAAM,kBAAA,GAAqBA,cAAA,CAAM,aAAA,CAAmD,IAAI,CAAA;AACxF,MAAM,mBAAA,GAAsBA,cAAA,CAAM,aAAA,CAA+C,IAAI,CAAA;AAGrF,SAAS,oBAAA,GAA4D;AAC1E,EAAA,OAAOA,cAAA,CAAM,WAAW,kBAAkB,CAAA;AAC5C;AAEO,SAAS,cAAA,GAA0C;AACxD,EAAA,MAAM,GAAA,GAAMA,cAAA,CAAM,UAAA,CAAW,kBAAkB,CAAA;AAC/C,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,UAAA,CAAW,mBAAmB,CAAA;AACnD,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAA,EAAQ;AACnB,IAAA,MAAM,IAAI,MAAM,2DAA2D,CAAA;AAAA,EAC7E;AACA,EAAA,OAAO,EAAE,GAAG,GAAA,EAAK,GAAG,MAAA,EAAO;AAC7B;AAEO,SAAS,eAAA,GAAkD;AAChE,EAAA,MAAM,GAAA,GAAMA,cAAA,CAAM,UAAA,CAAW,kBAAkB,CAAA;AAC/C,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,UAAA,CAAW,mBAAmB,CAAA;AACnD,EAAA,IAAI,CAAC,GAAA,IAAO,CAAC,MAAA,EAAQ,OAAO,IAAA;AAC5B,EAAA,OAAO,EAAE,GAAG,GAAA,EAAK,GAAG,MAAA,EAAO;AAC7B;AAGO,SAAS,eAAA,GAA4C;AAC1D,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,UAAA,CAAW,mBAAmB,CAAA;AACnD,EAAA,IAAI,CAAC,MAAA,EAAQ,MAAM,IAAI,MAAM,4DAA4D,CAAA;AACzF,EAAA,OAAO,MAAA;AACT;;AC3DO,SAAS,wBAAA,CAAyB;AAAA,EACvC,SAAA;AAAA,EACA,IAAA;AAAA,EACA,cAAc,SAAA,GAAY,sBAAA;AAAA,EAC1B,OAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAkC;AAChC,EAAA,MAAM,EAAE,QAAA,EAAU,gBAAA,EAAkB,aAAA,KAAkB,cAAA,EAAe;AACrE,EAAA,uBACE,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,gBAAA;AAAA,MACL,IAAA,EAAK,QAAA;AAAA,MACL,YAAA,EAAY,SAAA;AAAA,MACZ,eAAa,CAAC,QAAA;AAAA,MACd,QAAA,EAAU,WAAW,CAAA,GAAI,EAAA;AAAA,MACzB,kBAAA,EAAgB,IAAA;AAAA,MACf,GAAG,KAAA;AAAA,MACJ,SAAS,CAAA,KAAA,KAAS;AAChB,QAAA,OAAA,GAAU,KAAK,CAAA;AACf,QAAA,IAAI,CAAC,KAAA,CAAM,gBAAA,EAAkB,aAAA,CAAc,IAAI,CAAA;AAAA,MACjD,CAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,4DAAA;AAAA;AAAA,QAEA,0CAAA;AAAA,QACA,oDAAA;AAAA,QACA,cAAA;AAAA,QACA,sBAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA,IAAA,oBAAQ,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA,GACxC;AAEJ;;ACxCO,SAAS,cAAA,CAAe;AAAA,EAC7B,cAAc,SAAA,GAAY,MAAA;AAAA,EAC1B,QAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAG;AACL,CAAA,EAAwB;AACtB,EAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAY,SAAA,EAAW,SAAA,EAAW,EAAA,CAAG,8BAAA,EAAgC,SAAS,CAAA,EAAI,GAAG,KAAA,EACxF,QAAA,kBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,gBAAA,EAAiB,IAAA,EAAM,EAAE,GAAA,EAAK,MAAA,EAAQ,MAAA,EAAQ,MAAA,EAAO,EACzE,QAAA,kBAAA,GAAA,CAAC,kBAAA,EAAA,EAAmB,SAAA,EAAU,QAAA,EAAU,QAAA,EAAS,CAAA,EACnD,CAAA,EACF,CAAA;AAEJ;;ACGO,SAAS,mBAAA,CAAoB,EAAE,QAAA,EAAU,SAAA,EAAW,OAAO,SAAA,EAAW,GAAG,MAAK,EAA6B;AAChH,EAAA,MAAM,MAAM,oBAAA,EAAqB;AACjC,EAAA,MAAM,KAAA,GAAsB,SAAA,IAAa,GAAA,EAAK,KAAA,IAAS,SAAA;AACvD,EAAA,IAAI,UAAU,WAAA,EAAa;AACzB,IAAA,uBAAO,GAAA,CAAC,kBAAgB,QAAA,EAAS,CAAA;AAAA,EACnC;AACA,EAAA,uBACE,GAAA,CAAC,UAAM,GAAG,IAAA,EAAM,WAAW,EAAA,CAAG,mCAAA,EAAqC,SAAS,CAAA,EACzE,QAAA,EACH,CAAA;AAEJ;;ACtBA,MAAM,eAAA,GAAkB,IAAI,kFAAA,EAAoF;AAAA,EAC9G,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,IAAI,aAAA,CAAc,EAAA;AAAA,MAClB,IAAI,aAAA,CAAc,EAAA;AAAA,MAClB,IAAI,aAAA,CAAc;AAAA;AACpB,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM;AAAA;AAEV,CAAC,CAAA;AAmBD,MAAM,yBAAA,GAA4B,CAAC,KAAA,KAAkB;AACnD,EAAA,IAAI,KAAA,IAAS,GAAG,OAAO,iBAAA;AACvB,EAAA,IAAI,KAAA,KAAU,CAAA,EAAG,OAAO,CAAA,qBAAA,EAAwB,cAAc,EAAE,CAAA,CAAA;AAChE,EAAA,IAAI,KAAA,KAAU,CAAA,EAAG,OAAO,CAAA,sBAAA,EAAyB,cAAc,EAAE,CAAA,CAAA;AACjE,EAAA,OAAO,CAAA,sBAAA,EAAyB,cAAc,EAAE,CAAA,CAAA;AAClD,CAAA;AAKA,MAAM,WAAA,GAAc,EAAA,CAAG,wDAAA,EAA0D,sBAAsB,CAAA;AAEvG,MAAM,aAAA,GAAgB,yBAAA;AAEtB,MAAM,eAAA,GAAkB,EAAA;AAAA,EACtB;AACF,CAAA;AAEO,MAAM,oBAAA,GAAuB,CAAC,EAAE,QAAA,EAAU,UAAA,EAAW,KAC1D,EAAA,CAAG,WAAA,EAAa,QAAA,IAAY,aAAA,EAAe,UAAA,IAAc,eAAe,CAAA;AAEnE,MAAM,uBAAuB,CAAC,EAAE,aAAa,KAAA,GAAQ,CAAA,EAAG,MAAK,KAClE,EAAA;AAAA,EACE,eAAA,CAAgB,EAAE,IAAA,EAAM,CAAA;AAAA,EACxB,sBAAA;AAAA,EACA,2BAAA;AAAA,EACA,iCAAA;AAAA,EACA,SAAA;AAAA,EACA,CAAC,WAAA,IAAe,yBAAA,CAA0B,KAAK,CAAA;AAAA,EAC/C,WAAA,IAAe;AACjB,CAAA;AAEK,MAAM,cAAA,GAAiB,CAAC,EAAE,QAAA,EAAU,WAAA,EAAa,YAAY,KAAA,EAAO,IAAA,EAAK,GAAsB,EAAC,KACrG,EAAA,CAAG,qBAAqB,EAAE,WAAA,EAAa,KAAA,EAAO,IAAA,EAAM,CAAA,EAAG,qBAAqB,EAAE,QAAA,EAAU,UAAA,EAAY,CAAC;;ACvBhG,SAAS,kBAAA,CAAmB;AAAA,EACjC,IAAA;AAAA,EACA,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,aAAA,EAAe,QAAA;AAAA,EACf,KAAA,EAAO,SAAA;AAAA,EACP,QAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,GAAG;AACL,CAAA,EAA4B;AAC1B,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,MAAM,IAAI,MAAM,oEAAoE,CAAA;AAAA,EACtF;AAEA,EAAA,MAAM,MAAM,oBAAA,EAAqB;AACjC,EAAA,MAAM,KAAA,GAAsB,SAAA,IAAa,GAAA,EAAK,KAAA,IAAS,SAAA;AACvD,EAAA,MAAM,IAAA,GAAsB,QAAA,IAAY,GAAA,EAAK,aAAA,IAAiB,GAAA;AAC9D,EAAA,MAAM,cAAc,KAAA,KAAU,WAAA;AAC9B,EAAA,MAAM,UAAA,GAAa,MAAM,OAAA,KAAY,UAAA;AACrC,EAAA,MAAM,KAAA,GAAQ,SAAA,KAAc,IAAA,EAAM,MAAA,GAAS,CAAA,GAAI,CAAA,CAAA;AAC/C,EAAA,MAAM,SAAA,GAAY,cAAc,MAAA,GAAY,MAAA;AAE5C,EAAA,MAAM,gBAAgB,SAAA,GAClB,EAAA,CAAG,qBAAqB,EAAE,KAAA,EAAO,MAAM,CAAA,EAAG,aAAa,CAAA,GACvD,eAAe,EAAE,QAAA,EAAU,aAAa,UAAA,EAAY,KAAA,EAAO,MAAM,CAAA;AAErE,EAAA,uBACE,IAAA,CAAC,QAAI,GAAG,KAAA,EAAO,WAAW,EAAA,CAAG,gCAAA,EAAkC,SAAS,CAAA,EACtE,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,UAAA,EAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,gBAAA,EAAkB,oBAAA,CAAqB,EAAE,QAAA,EAAU,UAAA,EAAY,CAAA,EAC5F,QAAA,kBAAA,GAAA,CAAC,aAAA,EAAA,EAAc,OAAO,eAAA,CAAgB,IAAA,EAAM,WAAW,CAAA,EACpD,QAAA,EAAA,iBAAA,CAAkB,EAAE,MAAA,EAAQ,OAAA,EAAS,QAAA,EAAU,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,QAAA,EAAU,SAAA,EAAW,aAAA,EAAe,GACzG,CAAA,EACF,CAAA;AAAA,IACC,CAAC,WAAA,IAAe;AAAA,GAAA,EACnB,CAAA;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,QAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,IAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EASG;AAGD,EAAA,MAAM,OAAA,GAAU,WAAY,MAAA,GAAmB,MAAA;AAC/C,EAAA,IAAI,MAAA,EAAQ;AACV,IAAA,OAAOA,cAAA,CAAM,YAAA,CAAa,MAAA,EAAQ,EAAE,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,MAAA,CAAO,KAAA,CAAM,SAAS,CAAA,EAAG,cAAA,EAAgB,SAAS,CAAA;AAAA,EACjH;AAEA,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,IAAI,CAACA,cAAA,CAAM,cAAA,CAAqC,QAAQ,CAAA,EAAG;AACzD,MAAA,MAAM,IAAI,KAAA;AAAA,QACR;AAAA,OACF;AAAA,IACF;AAEA,IAAA,OAAOA,cAAA,CAAM,aAAa,QAAA,EAAU;AAAA,MAClC,SAAA,EAAW,EAAA,CAAG,SAAA,EAAW,QAAA,CAAS,MAAM,SAAS,CAAA;AAAA,MACjD,cAAA,EAAgB;AAAA,KACjB,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,CAAC,MAAM,OAAO,QAAA;AAElB,EAAA,MAAM,cAAA,GAAiB,iBAAA,CAAkB,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,GAAI,EAAE,MAAA,EAAQ,QAAA,EAAU,GAAA,EAAK,YAAA,EAAa,GAAI,EAAC;AAErG,EAAA,uBACE,IAAA,CAAC,QAAK,IAAA,EAAM,IAAA,CAAK,KAAM,GAAG,cAAA,EAAgB,cAAA,EAAc,OAAA,EAAS,SAAA,EAC9D,QAAA,EAAA;AAAA,IAAA,IAAA,CAAK,IAAA;AAAA,oBACN,GAAA,CAAC,mBAAA,EAAA,EAAoB,KAAA,EAAe,QAAA,EAAA,IAAA,CAAK,IAAA,EAAK,CAAA;AAAA,IAC7C;AAAA,GAAA,EACH,CAAA;AAEJ;AAEA,SAAS,eAAA,CAAgB,MAA2B,WAAA,EAAsB;AACxE,EAAA,IAAI,CAAC,MAAM,OAAO,MAAA;AAClB,EAAA,IAAI,IAAA,CAAK,UAAA,EAAY,OAAO,WAAA,GAAc,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,GAAA,EAAM,IAAA,CAAK,UAAU,CAAA,CAAA,GAAK,IAAA,CAAK,UAAA;AACrF,EAAA,OAAO,WAAA,GAAc,KAAK,IAAA,GAAO,MAAA;AACnC;AAEA,SAAS,aAAA,CAAc,EAAE,KAAA,EAAO,QAAA,EAAS,EAAkD;AACzF,EAAA,IAAI,CAACA,cAAA,CAAM,cAAA,CAAe,QAAQ,GAAG,OAAO,QAAA;AAE5C,EAAA,uBACE,IAAA,CAAC,OAAA,EAAA,EAAQ,QAAA,EAAU,CAAC,KAAA,EAClB,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,cAAA,EAAA,EAAe,QAAQ,QAAA,EAAU,CAAA;AAAA,IACjC,KAAA,mBACC,GAAA,CAAC,cAAA,EAAA,EAAe,IAAA,EAAK,OAAA,EAAQ,OAAM,QAAA,EAAS,UAAA,EAAY,EAAA,EACrD,QAAA,EAAA,KAAA,EACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,MAAA;AAAA,EACA,gBAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,IAAI,CAAC,QAAQ,OAAO,QAAA;AAEpB,EAAA,4BACG,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,gCAAA,EAAkC,gBAAgB,CAAA,EAClE,QAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA;AAAA,GAAA,EACH,CAAA;AAEJ;;ACnLO,SAAS,mBAAmB,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,OAAM,EAA4B;AAC7F,EAAA,uBACE,GAAA,CAAC,QAAG,SAAA,EAAW,EAAA,CAAG,qEAAqE,SAAS,CAAA,EAAI,GAAG,KAAA,EACpG,QAAA,EACH,CAAA;AAEJ;;ACIO,SAAS,sBAAsB,EAAE,SAAA,EAAW,QAAA,EAAU,GAAG,OAAM,EAA+B;AACnG,EAAA,uBACE,GAAA,CAAC,aAAQ,SAAA,EAAW,EAAA,CAAG,sEAAsE,SAAS,CAAA,EAAI,GAAG,KAAA,EAC1G,QAAA,EACH,CAAA;AAEJ;;AChBO,SAAS,uBAAA,CAAwB,EAAE,SAAA,EAAW,GAAG,OAAM,EAAiC;AAC7F,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,WAAA;AAAA,MACL,kBAAA,EAAiB,YAAA;AAAA,MACjB,SAAA,EAAW,EAAA;AAAA,QACT,kBAAA;AAAA,QACA,0JAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;;ACDA,MAAM,aAAA,GAAgB,EAAA;AACtB,MAAM,cAAA,GAAiB,CAAA;AAEhB,SAAS,gBAAgB,EAAE,QAAA,EAAU,SAAA,EAAW,UAAA,GAAa,UAAS,EAAyB;AACpG,EAAA,MAAM;AAAA,IACJ,KAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,UAAA;AAAA,IACA,gBAAA;AAAA,IACA,aAAA;AAAA,IACA,sBAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,MACE,cAAA,EAAe;AACnB,EAAA,MAAM,cAAc,KAAA,KAAU,WAAA;AAC9B,EAAA,MAAM,QAAA,GAAW,eAAe,cAAA,KAAmB,CAAA;AAEnD,EAAA,MAAM,UAAA,GAAa,OAAO,KAAK,CAAA;AAC/B,EAAA,MAAM,cAAA,GAAiB,OAA4B,IAAI,CAAA;AAEvD,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,OAAO,MAAM;AACX,MAAA,cAAA,CAAe,OAAA,IAAU;AACzB,MAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,IAC3B,CAAA;AAAA,EACF,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA6C;AAC5C,MAAA,IAAI,KAAA,CAAM,WAAW,CAAA,EAAG;AACxB,MAAA,KAAA,CAAM,cAAA,EAAe;AAErB,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA,gBAAA,CAAiB,IAAI,CAAA;AAErB,MAAA,MAAM,SAAS,KAAA,CAAM,OAAA;AACrB,MAAA,MAAM,SAAS,KAAA,CAAM,aAAA;AACrB,MAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AAExB,MAAA,IAAI;AACF,QAAA,MAAA,CAAO,kBAAkB,SAAS,CAAA;AAAA,MACpC,CAAA,CAAA,MAAQ;AAAA,MAER;AAEA,MAAA,MAAM,YAAY,MAAA,CAAO,aAAA;AACzB,MAAA,MAAM,WAAA,GAAc,SAAA,GAAY,SAAA,CAAU,qBAAA,GAAwB,IAAA,GAAO,CAAA;AAEzE,MAAA,MAAM,UAAA,GAAa,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,MAAA;AACvC,MAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,UAAA;AAE3C,MAAA,MAAM,MAAA,GAAS,CAAC,EAAA,KAAqB;AACnC,QAAA,IAAI,EAAA,CAAG,cAAc,SAAA,EAAW;AAChC,QAAA,MAAM,EAAA,GAAK,GAAG,OAAA,GAAU,MAAA;AACxB,QAAA,IAAI,CAAC,WAAW,OAAA,EAAS;AACvB,UAAA,IAAI,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA,IAAK,cAAA,EAAgB;AACpC,UAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,UAAA,QAAA,CAAS,IAAA,CAAK,MAAM,MAAA,GAAS,YAAA;AAC7B,UAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,MAAA;AAAA,QACnC;AAEA,QAAA,MAAM,WAAA,GAAc,GAAG,OAAA,GAAU,WAAA;AAEjC,QAAA,IAAI,aAAA,GAAgB,CAAA,IAAK,WAAA,GAAc,aAAA,EAAe;AACpD,UAAA,QAAA,EAAS;AACT,UAAA;AAAA,QACF;AACA,QAAA,MAAA,EAAO;AACP,QAAA,QAAA,CAAS,WAAW,CAAA;AAAA,MACtB,CAAA;AACA,MAAA,MAAM,OAAA,GAAU,CAAC,EAAA,KAAsB;AACrC,QAAA,IAAI,EAAA,IAAM,EAAA,CAAG,SAAA,KAAc,SAAA,EAAW;AACtC,QAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,MAAM,CAAA;AAChD,QAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,OAAO,CAAA;AAC/C,QAAA,MAAA,CAAO,mBAAA,CAAoB,iBAAiB,OAAO,CAAA;AACnD,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,MAAA,GAAS,UAAA;AAC7B,QAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,cAAA;AACjC,QAAA,gBAAA,CAAiB,KAAK,CAAA;AACtB,QAAA,MAAA,EAAO;AACP,QAAA,cAAA,CAAe,OAAA,GAAU,IAAA;AAAA,MAC3B,CAAA;AACA,MAAA,cAAA,CAAe,OAAA,GAAU,MAAM,OAAA,EAAQ;AACvC,MAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,MAAM,CAAA;AAC7C,MAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,OAAO,CAAA;AAC5C,MAAA,MAAA,CAAO,gBAAA,CAAiB,iBAAiB,OAAO,CAAA;AAAA,IAClD,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,QAAA,EAAU,MAAA,EAAQ,QAAA,EAAU,QAAQ,gBAAgB;AAAA,GACtE;AAEA,EAAA,MAAM,OAAA,GAAU,YAAY,MAAM;AAChC,IAAA,IAAI,WAAW,OAAA,EAAS;AACtB,MAAA,UAAA,CAAW,OAAA,GAAU,KAAA;AACrB,MAAA;AAAA,IACF;AACA,IAAA,aAAA,EAAc;AAAA,EAChB,CAAA,EAAG,CAAC,aAAa,CAAC,CAAA;AAElB,EAAA,MAAM,SAAA,GAAY,WAAA;AAAA,IAChB,CAAC,KAAA,KAA8C;AAC7C,MAAA,QAAQ,MAAM,GAAA;AAAK,QACjB,KAAK,OAAA;AAAA,QACL,KAAK,GAAA,EAAK;AACR,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,aAAA,EAAc;AACd,UAAA;AAAA,QACF;AAAA,QACA,KAAK,WAAA,EAAa;AAChB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,WAAA,EAAa;AACjB,UAAA,QAAA,CAAS,QAAQ,aAAa,CAAA;AAC9B,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA,QACA,KAAK,YAAA,EAAc;AACjB,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,IAAI,WAAA,EAAa;AACf,YAAA,MAAA,EAAO;AACP,YAAA,MAAA,EAAO;AACP,YAAA;AAAA,UACF;AACA,UAAA,QAAA,CAAS,QAAQ,aAAa,CAAA;AAC9B,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA,QACA,KAAK,MAAA,EAAQ;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAA,EAAO;AACP,UAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA,QACA,KAAK,KAAA,EAAO;AACV,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,MAAA,EAAO;AACP,UAAA,QAAA,CAAS,QAAQ,CAAA;AACjB,UAAA,MAAA,EAAO;AACP,UAAA;AAAA,QACF;AAAA;AACF,IACF,CAAA;AAAA,IACA,CAAC,aAAa,KAAA,EAAO,QAAA,EAAU,UAAU,QAAA,EAAU,MAAA,EAAQ,QAAQ,aAAa;AAAA,GAClF;AAGA,EAAA,MAAM,aAAA,GAAgB,WAAA;AAAA,IACpB,CAAC,KAAA,KAA4C;AAC3C,MAAA,IAAI,EAAE,KAAA,CAAM,MAAA,YAAkB,OAAA,CAAA,EAAU;AACxC,MAAA,MAAM,MAAA,GAAS,KAAA,CAAM,MAAA,CAAO,OAAA,CAA2B,GAAG,CAAA;AAC1D,MAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,CAAO,YAAA,CAAa,MAAM,CAAA,EAAG;AAE7C,MAAA,IAAI,KAAA,CAAM,MAAA,KAAW,CAAA,IAAK,KAAA,CAAM,OAAA,IAAW,MAAM,OAAA,IAAW,KAAA,CAAM,QAAA,IAAY,KAAA,CAAM,MAAA,EAAQ;AAE5F,MAAA,IAAI,OAAO,MAAA,KAAW,QAAA,IAAY,MAAA,CAAO,YAAA,CAAa,UAAU,CAAA,EAAG;AACnE,MAAA,aAAA,CAAc,KAAK,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,aAAa;AAAA,GAChB;AAEA,EAAA,IAAI,QAAA,EAAU;AACZ,IAAA,uBACE,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,MAAA;AAAA,QACL,IAAA,EAAM,UAAA;AAAA,QACN,YAAA,EAAc,aAAA;AAAA,QACd,sBAAsB,CAAA,IAAA,KAAQ;AAC5B,UAAA,IAAI,CAAC,IAAA,EAAM,sBAAA,CAAuB,KAAK,CAAA;AAAA,QACzC,CAAA;AAAA,QAEA,QAAA,kBAAA,IAAA;AAAA,UAAC,aAAA;AAAA,UAAA;AAAA,YACC,kBAAA,EAAkB,UAAA;AAAA,YAClB,UAAA,EAAY,gBAAA;AAAA,YACZ,iBAAiB,UAAA,KAAe,QAAA;AAAA,YAChC,SAAA,EAAW,EAAA;AAAA,cACT,qCAAA;AAAA,cACA,UAAA,KAAe,aACX,+IAAA,GACA,mEAAA;AAAA,cACJ;AAAA,aACF;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,UAAA,KAAe,UAAA,mBACd,GAAA,CAAC,WAAA,EAAA,EAAY,OAAA,EAAO,IAAA,EAClB,QAAA,kBAAA,GAAA;AAAA,gBAAC,QAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,QAAA;AAAA,kBACL,YAAA,EAAW,OAAA;AAAA,kBACX,SAAA,EAAU,yOAAA;AAAA,kBAEV,QAAA,kBAAA,GAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,mBAAA;AAAA,wBACA,qBAAA;AAAA,wBACA,2BAAA;AAAA,wBACA;AAAA,uBACF;AAAA,sBAEA,QAAA,kBAAA,GAAA,CAAC,QAAA,EAAA,EAAS,SAAA,EAAU,QAAA,EAAS;AAAA;AAAA;AAC/B;AAAA,iBAEJ,CAAA,GACE,IAAA;AAAA,kCACH,cAAA,EAAA,EAAe,OAAA,EAAO,MACrB,QAAA,kBAAA,GAAA,CAAC,WAAA,EAAA,EAAY,wBAAU,CAAA,EACzB,CAAA;AAAA,kCACC,cAAA,EAAA,EAAe,OAAA,EAAO,MACrB,QAAA,kBAAA,GAAA,CAAC,iBAAA,EAAA,EAAkB,4CAA8B,CAAA,EACnD,CAAA;AAAA,8BACA,GAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,OAAA,EAAS,aAAA;AAAA,kBACT,SAAA,EAAW,EAAA;AAAA,oBACT,mDAAA;AAAA,oBACA,UAAA,KAAe,aAAa,MAAA,GAAS;AAAA,mBACvC;AAAA,kBAEC;AAAA;AAAA;AACH;AAAA;AAAA;AACF;AAAA,KACF;AAAA,EAEJ;AAEA,EAAA,MAAM,YAAA,GAAe,cAAc,cAAA,GAAiB,KAAA;AACpD,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,yGAAA;AAAA,QACA,qBAAA;AAAA,QACA,kDAAA;AAAA,QACA,SAAA;AAAA,QAEA,QAAA,IAAY;AAAA,OACd;AAAA,MAEA,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,8CAAA;AAAA,cACA,+DAAA;AAAA,cACA,MAAA;AAAA,cACA,QAAA,IAAY;AAAA,aACd;AAAA,YAEC;AAAA;AAAA,SACH;AAAA,wBAEA,GAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,WAAA;AAAA,YACL,kBAAA,EAAiB,UAAA;AAAA,YAEjB,eAAA,EAAe,cAAc,MAAA,GAAY,YAAA;AAAA,YACzC,eAAA,EAAe,cAAc,MAAA,GAAY,QAAA;AAAA,YACzC,eAAA,EAAe,cAAc,MAAA,GAAY,QAAA;AAAA,YACzC,gBAAA,EAAgB,WAAA,GAAc,WAAA,GAAc,CAAA,EAAG,YAAY,CAAA,OAAA,CAAA;AAAA,YAC3D,YAAA,EAAY,CAAA,+CAAA,EAAkD,WAAA,GAAc,QAAA,GAAW,UAAU,CAAA,CAAA,CAAA;AAAA,YACjG,QAAA,EAAU,CAAA;AAAA,YACV,aAAA;AAAA,YACA,OAAA;AAAA,YACA,SAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,4EAAA;AAAA,cACA,kCAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,QAAA,kBAAA,GAAA;AAAA,cAAC,qBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,2CAAA;AAAA,kBACA,sEAAA;AAAA,kBACA;AAAA;AACF;AAAA;AACF;AAAA;AACF;AAAA;AAAA,GACF;AAEJ;;AChSO,SAAS,mBAAmB,EAAE,SAAA,EAAW,OAAA,EAAS,GAAG,OAAM,EAA4B;AAC5F,EAAA,MAAM,EAAE,YAAA,EAAc,aAAA,EAAc,GAAI,cAAA,EAAe;AACvD,EAAA,MAAM,cAAc,YAAA,KAAiB,WAAA;AAErC,EAAA,4BACG,OAAA,EAAA,EACC,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,cAAA;AAAA,MAAA;AAAA,QACC,MAAA,kBACE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,IAAA,EAAK,QAAA;AAAA,YACL,YAAA,EAAW,gBAAA;AAAA,YACX,iBAAe,CAAC,WAAA;AAAA,YACf,GAAG,KAAA;AAAA,YACJ,SAAS,CAAA,KAAA,KAAS;AAChB,cAAA,OAAA,GAAU,KAAK,CAAA;AACf,cAAA,IAAI,CAAC,KAAA,CAAM,gBAAA,EAAkB,aAAA,EAAc;AAAA,YAC7C,CAAA;AAAA,YACA,SAAA,EAAW,EAAA;AAAA,cACT,mEAAA;AAAA,cACA,QAAA;AAAA,cACA,CAAC,WAAA,IAAe,SAAA;AAAA,cAChB,4CAAA;AAAA,cACA,iFAAA;AAAA,cACA,SAAA;AAAA,cACA,4EAAA;AAAA,cACA;AAAA,aACF;AAAA,YAEA,8BAAC,aAAA,EAAA,EAAc;AAAA;AAAA;AACjB;AAAA,KAEJ;AAAA,oBAEA,GAAA,CAAC,cAAA,EAAA,EACC,QAAA,kBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,kCAAA,EAAmC,QAAA,EAAA;AAAA,MAAA,gBAAA;AAAA,0BAEhD,GAAA,EAAA,EAAI,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,kCAAiC,QAAA,EAAA,GAAA,EAE1D;AAAA,KAAA,EACF,CAAA,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;;AC3CA,MAAM,iBAAA,GAAoB,eAAA;AAC1B,MAAM,iBAAA,GAAoB,eAAA;AAE1B,MAAM,iBAAA,GAAoB,iBAAA;AAsC1B,MAAM,KAAA,GAAQ,CAAC,CAAA,EAAW,EAAA,EAAY,EAAA,KAAe,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,IAAA,CAAK,GAAA,CAAI,EAAA,EAAI,CAAC,CAAC,CAAA;AAEjF,MAAM,qBAAqB,OAAO,MAAA,KAAW,WAAA,GAAcA,cAAA,CAAM,kBAAkBA,cAAA,CAAM,SAAA;AAElF,SAAS,mBAAA,CAAoB;AAAA,EAClC,QAAA;AAAA,EACA,YAAA,GAAe,SAAA;AAAA,EACf,YAAA,GAAe,GAAA;AAAA,EACf,QAAA,GAAW,GAAA;AAAA,EACX,QAAA,GAAW,GAAA;AAAA,EACX,aAAA;AAAA,EACA,cAAA,GAAiB,EAAA;AAAA,EACjB,uBAAA,GAA0B,IAAA;AAAA,EAC1B,UAAA;AAAA,EACA,gBAAA,GAAmB,IAAA;AAAA,EACnB,WAAA,GAAc,GAAA;AAAA,EACd;AACF,CAAA,EAA6B;AAE3B,EAAA,MAAM,OAAA,GAAU,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,QAAA,EAAU,QAAQ,CAAC,CAAA;AACxD,EAAA,MAAM,OAAA,GAAU,IAAA,CAAK,GAAA,CAAI,OAAA,EAAS,QAAQ,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,cAAA,EAAgB,OAAO,CAAC,CAAA;AACnE,EAAA,MAAM,WAAA,GAAc,KAAA,CAAM,YAAA,EAAc,OAAA,EAAS,OAAO,CAAA;AAIxD,EAAA,MAAM,oBAAoB,aAAA,IAAiB,OAAA;AAE3C,EAAA,MAAM,kBAAkB,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAA,GAAK,iBAAA;AAC5E,EAAA,MAAM,kBAAkB,UAAA,GAAa,CAAA,EAAG,UAAU,CAAA,CAAA,EAAI,iBAAiB,CAAA,CAAA,GAAK,iBAAA;AAI5E,EAAA,MAAM,cAAc,MAA2B;AAC7C,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa,OAAO,EAAE,KAAA,EAAO,YAAA,EAAc,OAAO,WAAA,EAAY;AACpF,IAAA,IAAI;AACF,MAAA,IAAI,SAAA,GAA0B,YAAA;AAC9B,MAAA,IAAI,SAAA,GAAY,WAAA;AAChB,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAe,CAAA;AAC/D,MAAA,IAAI,WAAA,KAAgB,WAAA,IAAe,WAAA,KAAgB,SAAA,EAAW,SAAA,GAAY,WAAA;AAC1E,MAAA,MAAM,WAAA,GAAc,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAe,CAAA;AAC/D,MAAA,IAAI,gBAAgB,IAAA,EAAM;AACxB,QAAA,MAAM,MAAA,GAAS,OAAO,WAAW,CAAA;AACjC,QAAA,IAAI,MAAA,CAAO,SAAS,MAAM,CAAA,cAAe,KAAA,CAAM,MAAA,EAAQ,SAAS,OAAO,CAAA;AAAA,MACzE;AACA,MAAA,OAAO,EAAE,KAAA,EAAO,SAAA,EAAW,KAAA,EAAO,SAAA,EAAU;AAAA,IAC9C,CAAA,CAAA,MAAQ;AACN,MAAA,OAAO,EAAE,KAAA,EAAO,YAAA,EAAc,KAAA,EAAO,WAAA,EAAY;AAAA,IACnD;AAAA,EACF,CAAA;AACA,EAAA,MAAM,UAAA,GAAaA,cAAA,CAAM,MAAA,CAAmC,IAAI,CAAA;AAChE,EAAA,IAAI,UAAA,CAAW,OAAA,KAAY,IAAA,EAAM,UAAA,CAAW,UAAU,WAAA,EAAY;AAClE,EAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAE3B,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,IAAIA,cAAA,CAAM,QAAA,CAAuB,QAAQ,KAAK,CAAA;AACpE,EAAA,MAAM,CAAC,KAAA,EAAO,aAAa,IAAIA,cAAA,CAAM,QAAA,CAAiB,QAAQ,KAAK,CAAA;AACnE,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAIA,cAAA,CAAM,SAAS,KAAK,CAAA;AACpD,EAAA,MAAM,CAAC,UAAA,EAAY,kBAAkB,CAAA,GAAIA,cAAA,CAAM,SAAS,KAAK,CAAA;AAC7D,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,cAAA,CAAM,SAAS,KAAK,CAAA;AAC1E,EAAA,MAAM,aAAA,GAAgBA,cAAA,CAAM,MAAA,CAAO,KAAK,CAAA;AACxC,EAAA,MAAM,gBAAA,GAAmBA,cAAA,CAAM,MAAA,CAAiC,IAAI,CAAA;AACpE,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAAe,OAAA,CAAQ,KAAK,CAAA;AACnD,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAAqB,OAAA,CAAQ,KAAK,CAAA;AACzD,EAAA,QAAA,CAAS,OAAA,GAAU,KAAA;AAEnB,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,MAAA,CAA8B,IAAI,CAAA;AAGzD,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,OAAO,WAAW,WAAA,EAAa;AACnC,IAAA,MAAM,KAAK,MAAA,CAAO,UAAA,CAAW,CAAA,YAAA,EAAe,gBAAA,GAAmB,CAAC,CAAA,GAAA,CAAK,CAAA;AACrE,IAAA,MAAM,MAAA,GAAS,MAAM,WAAA,CAAY,EAAA,CAAG,OAAO,CAAA;AAC3C,IAAA,MAAA,EAAO;AACP,IAAA,EAAA,CAAG,gBAAA,CAAiB,UAAU,MAAM,CAAA;AACpC,IAAA,OAAO,MAAM,EAAA,CAAG,mBAAA,CAAoB,QAAA,EAAU,MAAM,CAAA;AAAA,EACtD,CAAA,EAAG,CAAC,gBAAgB,CAAC,CAAA;AAErB,EAAA,MAAM,aAAA,GAAgBA,cAAA,CAAM,WAAA,CAAY,CAAC,IAAA,KAAkB;AACzD,IAAA,aAAA,CAAc,OAAA,GAAU,IAAA;AACxB,IAAA,IAAI,IAAA,yBAA6B,IAAI,CAAA;AACrC,IAAA,kBAAA,CAAmB,IAAI,CAAA;AAAA,EACzB,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,CAAC,YAAY,UAAA,EAAY;AAC3B,MAAA,aAAA,CAAc,KAAK,CAAA;AACnB,MAAA,sBAAA,CAAuB,KAAK,CAAA;AAAA,IAC9B;AAAA,EACF,CAAA,EAAG,CAAC,QAAA,EAAU,UAAA,EAAY,aAAa,CAAC,CAAA;AAExC,EAAA,MAAM,WAAA,GAAcA,cAAA,CAAM,WAAA,CAAY,CAAC,EAAA,KAAe;AACpD,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,IAAA,IAAI,IAAI,EAAA,CAAG,KAAA,CAAM,YAAY,iBAAA,EAAmB,CAAA,EAAG,EAAE,CAAA,EAAA,CAAI,CAAA;AAAA,EAC3D,CAAA,EAAG,EAAE,CAAA;AAGL,EAAA,kBAAA,CAAmB,MAAM;AACvB,IAAA,WAAA,CAAY,KAAA,KAAU,WAAA,GAAc,aAAA,GAAgB,QAAA,CAAS,OAAO,CAAA;AAAA,EACtE,CAAA,EAAG,CAAC,KAAA,EAAO,aAAA,EAAe,WAAW,CAAC,CAAA;AAEtC,EAAA,MAAM,eAAeA,cAAA,CAAM,WAAA;AAAA,IACzB,CAAC,IAAA,KAAuB;AACtB,MAAA,IAAI;AACF,QAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAA,EAAiB,IAAI,CAAA;AAAA,MACnD,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX,CAAA;AAAA,IACA,CAAC,eAAe;AAAA,GAClB;AAEA,EAAA,MAAM,aAAA,GAAgBA,cAAA,CAAM,WAAA,CAAY,MAAM;AAC5C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,aAAA,CAAc,CAAC,cAAc,OAAO,CAAA;AACpC,MAAA;AAAA,IACF;AACA,IAAA,QAAA,CAAS,CAAA,IAAA,KAAQ;AACf,MAAA,MAAM,IAAA,GAAO,IAAA,KAAS,SAAA,GAAY,WAAA,GAAc,SAAA;AAGhD,MAAA,QAAA,CAAS,OAAA,GAAU,IAAA;AACnB,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,OAAO,IAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH,CAAA,EAAG,CAAC,QAAA,EAAU,YAAA,EAAc,aAAa,CAAC,CAAA;AAE1C,EAAA,MAAM,WAAWA,cAAA,CAAM,WAAA;AAAA,IACrB,CAAC,IAAA,KAAiB;AAChB,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,IAAA,EAAM,OAAA,EAAS,OAAO,CAAA;AAC5C,MAAA,QAAA,CAAS,OAAA,GAAU,OAAA;AACnB,MAAA,WAAA,CAAY,OAAO,CAAA;AAAA,IACrB,CAAA;AAAA,IACA,CAAC,OAAA,EAAS,OAAA,EAAS,WAAW;AAAA,GAChC;AAEA,EAAA,MAAM,QAAA,GAAWA,cAAA,CAAM,WAAA,CAAY,MAAM;AACvC,IAAA,QAAA,CAAS,OAAA,GAAU,WAAA;AACnB,IAAA,YAAA,CAAa,WAAW,CAAA;AACxB,IAAA,QAAA,CAAS,WAAW,CAAA;AAAA,EACtB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AACjB,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,WAAA,CAAY,MAAM;AACrC,IAAA,QAAA,CAAS,OAAA,GAAU,SAAA;AACnB,IAAA,YAAA,CAAa,SAAS,CAAA;AACtB,IAAA,QAAA,CAAS,SAAS,CAAA;AAAA,EACpB,CAAA,EAAG,CAAC,YAAY,CAAC,CAAA;AAEjB,EAAA,MAAM,MAAA,GAASA,cAAA,CAAM,WAAA,CAAY,MAAM;AACrC,IAAA,aAAA,CAAc,SAAS,OAAO,CAAA;AAC9B,IAAA,IAAI;AACF,MAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,eAAA,EAAiB,QAAA,CAAS,OAAO,CAAA;AAC7D,MAAA,MAAA,CAAO,aAAa,OAAA,CAAQ,eAAA,EAAiB,MAAA,CAAO,QAAA,CAAS,OAAO,CAAC,CAAA;AAAA,IACvE,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX,CAAA,EAAG,CAAC,eAAA,EAAiB,eAAe,CAAC,CAAA;AAErC,EAAA,MAAM,gBAAA,GAAmBA,cAAA,CAAM,WAAA,CAAY,CAAC,MAAA,KAAoB;AAC9D,IAAA,MAAM,KAAK,QAAA,CAAS,OAAA;AACpB,IAAA,IAAI,CAAC,EAAA,EAAI;AACT,IAAA,IAAI,MAAA,EAAQ,EAAA,CAAG,YAAA,CAAa,sBAAA,EAAwB,QAAQ,CAAA;AAAA,SACvD,EAAA,CAAG,gBAAgB,sBAAsB,CAAA;AAAA,EAChD,CAAA,EAAG,EAAE,CAAA;AAGL,EAAAA,cAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,uBAAA,EAAyB;AAC7B,IAAA,MAAM,SAAA,GAAY,CAAC,EAAA,KAAsB;AAEvC,MAAA,IAAI,EAAA,CAAG,SAAS,MAAA,EAAQ;AACxB,MAAA,IAAI,EAAE,EAAA,CAAG,OAAA,IAAW,EAAA,CAAG,OAAA,CAAA,EAAU;AACjC,MAAA,IAAI,EAAA,CAAG,MAAA,IAAU,EAAA,CAAG,QAAA,EAAU;AAC9B,MAAA,IAAI,EAAA,CAAG,kBAAkB,WAAA,EAAa;AACpC,QAAA,MAAM,GAAA,GAAM,GAAG,MAAA,CAAO,OAAA;AACtB,QAAA,IAAI,GAAA,KAAQ,OAAA,IAAW,GAAA,KAAQ,UAAA,IAAc,QAAQ,QAAA,EAAU;AAC/D,QAAA,IAAI,EAAA,CAAG,OAAO,iBAAA,EAAmB;AAAA,MACnC;AACA,MAAA,EAAA,CAAG,cAAA,EAAe;AAClB,MAAA,aAAA,EAAc;AAAA,IAChB,CAAA;AACA,IAAA,MAAA,CAAO,gBAAA,CAAiB,WAAW,SAAS,CAAA;AAC5C,IAAA,OAAO,MAAM,MAAA,CAAO,mBAAA,CAAoB,SAAA,EAAW,SAAS,CAAA;AAAA,EAC9D,CAAA,EAAG,CAAC,uBAAA,EAAyB,aAAa,CAAC,CAAA;AAE3C,EAAA,MAAM,cAAA,GAA+B,WAAW,SAAA,GAAY,KAAA;AAE5D,EAAA,MAAM,eAAeA,cAAA,CAAM,OAAA;AAAA,IACzB,OAAO;AAAA,MACL,KAAA,EAAO,cAAA;AAAA,MACP,YAAA,EAAc,KAAA;AAAA,MACd,KAAA;AAAA,MACA,QAAA,EAAU,OAAA;AAAA,MACV,QAAA,EAAU,OAAA;AAAA,MACV,aAAA,EAAe,iBAAA;AAAA,MACf,cAAA,EAAgB,aAAA;AAAA,MAChB,QAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA,KACF,CAAA;AAAA,IACA;AAAA,MACE,cAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,iBAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,aAAA;AAAA,MACA,QAAA;AAAA,MACA,QAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAA;AAAA,MACA,gBAAA;AAAA,MACA;AAAA;AACF,GACF;AAEA,EAAA,MAAM,cAAcA,cAAA,CAAM,OAAA;AAAA,IACxB,OAAO,EAAE,UAAA,EAAY,gBAAA,EAAkB,eAAe,sBAAA,EAAuB,CAAA;AAAA,IAC7E,CAAC,YAAY,aAAa;AAAA,GAC5B;AAIA,EAAA,MAAM,UAAA,GAAgC;AAAA,IACpC,CAAC,iBAAiB,GAAG,CAAA,EAAG,QAAQ,KAAA,KAAU,WAAA,GAAc,aAAA,GAAgB,OAAA,CAAQ,KAAK,CAAA,EAAA,CAAA;AAAA,IACrF,wBAAA,EAA0B,GAAG,WAAW,CAAA,EAAA,CAAA;AAAA,IACxC,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,QAAA;AAAA,MACL,oBAAA,EAAkB,IAAA;AAAA,MAClB,oBAAA,EAAoB,KAAA;AAAA,MACpB,qBAAA,EAAqB,WAAW,MAAA,GAAS,OAAA;AAAA,MACzC,6BAAA,EAA6B,sBAAsB,MAAA,GAAS,OAAA;AAAA,MAC5D,KAAA,EAAO,UAAA;AAAA,MACP,wBAAA,EAAwB,IAAA;AAAA,MAExB,QAAA,kBAAA,GAAA,CAAC,kBAAA,CAAmB,QAAA,EAAnB,EAA4B,KAAA,EAAO,YAAA,EAClC,QAAA,kBAAA,GAAA,CAAC,mBAAA,CAAoB,QAAA,EAApB,EAA6B,KAAA,EAAO,WAAA,EAAc,UAAS,CAAA,EAC9D;AAAA;AAAA,GACF;AAEJ;;ACnSO,SAAS,eAAA,CAAgB,IAAA,EAAe,QAAA,EAAkB,QAAA,GAAsB,EAAC,EAAY;AAClG,EAAA,MAAM,OAAA,GAAU,CAAC,GAAA,KAAgB,QAAA,KAAa,OAAO,QAAA,CAAS,UAAA,CAAW,MAAM,GAAG,CAAA;AAClF,EAAA,MAAM,YAAA,GAAe,CAAC,KAAA,KACpB,KAAA,CAAM,QAAQ,CAAA,IAAA,KAAQ,CAAC,IAAA,EAAM,GAAG,aAAa,IAAA,CAAK,QAAA,IAAY,EAAE,CAAC,CAAC,CAAA;AAEpE,EAAA,IAAI,CAAC,OAAA,CAAQ,IAAA,CAAK,GAAG,GAAG,OAAO,KAAA;AAC/B,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAG,YAAA,CAAa,IAAA,CAAK,QAAA,IAAY,EAAE,CAAA,EAAG,GAAG,YAAA,CAAa,QAAQ,CAAC,CAAA;AACvF,EAAA,OAAO,CAAC,cAAA,CAAe,IAAA;AAAA,IACrB,CAAA,KAAA,KAAS,KAAA,CAAM,GAAA,KAAQ,IAAA,CAAK,GAAA,IAAO,KAAA,CAAM,GAAA,CAAI,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,MAAA,IAAU,OAAA,CAAQ,MAAM,GAAG;AAAA,GAC5F;AACF;;;;"}