@arbidocs/blocks 0.3.185 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (598) hide show
  1. package/README.md +100 -0
  2. package/dist/agents/approvals/AuthorizeAgentParts.d.ts +79 -0
  3. package/dist/agents/approvals/ConsentPage.d.ts +76 -0
  4. package/dist/agents/approvals/ConsentParts.d.ts +37 -0
  5. package/dist/agents/approvals/index.d.ts +3 -0
  6. package/dist/agents/config/ConfigField.d.ts +43 -0
  7. package/dist/agents/config/ConfigForm.d.ts +35 -0
  8. package/dist/agents/config/TupleArrayField.d.ts +32 -0
  9. package/dist/agents/config/index.d.ts +4 -0
  10. package/dist/agents/config/schema-utils.d.ts +28 -0
  11. package/dist/agents/definitions/AgentCard.d.ts +63 -0
  12. package/dist/agents/definitions/AgentCreator.d.ts +118 -0
  13. package/dist/agents/definitions/AgentEditorParts.d.ts +63 -0
  14. package/dist/agents/definitions/AgentGallery.d.ts +29 -0
  15. package/dist/agents/definitions/index.d.ts +4 -0
  16. package/dist/agents/index.cjs +595 -0
  17. package/dist/agents/index.cjs.map +1 -0
  18. package/dist/agents/index.d.ts +7 -0
  19. package/dist/agents/index.js +14 -0
  20. package/dist/agents/index.js.map +1 -0
  21. package/dist/agents/runs/AgentBar.d.ts +103 -0
  22. package/dist/agents/runs/AgentSteps.d.ts +157 -0
  23. package/dist/agents/runs/SubagentRoster.d.ts +37 -0
  24. package/dist/agents/runs/index.d.ts +3 -0
  25. package/dist/agents/skills/SkillBrowserParts.d.ts +70 -0
  26. package/dist/agents/skills/SkillCard.d.ts +48 -0
  27. package/dist/agents/skills/SkillForms.d.ts +64 -0
  28. package/dist/agents/skills/SkillParts.d.ts +31 -0
  29. package/dist/agents/skills/SkillRow.d.ts +34 -0
  30. package/dist/agents/skills/index.d.ts +5 -0
  31. package/dist/agents/tasks/LiveRunsBanner.d.ts +26 -0
  32. package/dist/agents/tasks/RecurrenceBuilder.d.ts +36 -0
  33. package/dist/agents/tasks/TaskComposer.d.ts +108 -0
  34. package/dist/agents/tasks/TaskPlan.d.ts +78 -0
  35. package/dist/agents/tasks/TaskRowActions.d.ts +43 -0
  36. package/dist/agents/tasks/TaskRunsDialog.d.ts +45 -0
  37. package/dist/agents/tasks/TasksChrome.d.ts +36 -0
  38. package/dist/agents/tasks/UploadTaskItem.d.ts +39 -0
  39. package/dist/agents/tasks/UploadTaskList.d.ts +35 -0
  40. package/dist/agents/tasks/elapsed.d.ts +2 -0
  41. package/dist/agents/tasks/index.d.ts +13 -0
  42. package/dist/agents/tasks/rrule.d.ts +36 -0
  43. package/dist/agents/tasks/taskColumns.d.ts +68 -0
  44. package/dist/agents/tasks/taskLabels.d.ts +26 -0
  45. package/dist/agents/workflows/AgentSelect.d.ts +33 -0
  46. package/dist/agents/workflows/SchemaForm.d.ts +37 -0
  47. package/dist/agents/workflows/WorkflowConfigDialog.d.ts +73 -0
  48. package/dist/agents/workflows/WorkflowLauncher.d.ts +38 -0
  49. package/dist/agents/workflows/index.d.ts +6 -0
  50. package/dist/agents/workflows/types.d.ts +125 -0
  51. package/dist/agents/workflows/workflow.d.ts +62 -0
  52. package/dist/auth/AuthFooter.d.ts +56 -0
  53. package/dist/auth/AuthForm.d.ts +105 -0
  54. package/dist/auth/AuthLayout.d.ts +46 -0
  55. package/dist/auth/PasswordStrengthInput.d.ts +44 -0
  56. package/dist/auth/RecoveryDialogs.d.ts +90 -0
  57. package/dist/auth/SsoLoginButton.d.ts +19 -0
  58. package/dist/auth/index.cjs +123 -0
  59. package/dist/auth/index.cjs.map +1 -0
  60. package/dist/auth/index.d.ts +6 -0
  61. package/dist/auth/index.js +6 -0
  62. package/dist/auth/index.js.map +1 -0
  63. package/dist/builder/AgentsPanel.d.ts +9 -0
  64. package/dist/builder/ModuleManager.d.ts +6 -0
  65. package/dist/builder/VerticalBuilder.d.ts +32 -0
  66. package/dist/builder/agents/store.d.ts +21 -0
  67. package/dist/builder/export.d.ts +30 -0
  68. package/dist/builder/modules/registry.d.ts +11 -0
  69. package/dist/builder/modules/store.d.ts +29 -0
  70. package/dist/builder/modules/types.d.ts +29 -0
  71. package/dist/builder/types.d.ts +28 -0
  72. package/dist/chat/BranchControls.d.ts +33 -0
  73. package/dist/chat/Composer.d.ts +156 -0
  74. package/dist/chat/ContextChip.d.ts +19 -0
  75. package/dist/chat/ContextPanel.d.ts +108 -0
  76. package/dist/chat/ConversationEmpty.d.ts +53 -0
  77. package/dist/chat/ConversationLayout.d.ts +40 -0
  78. package/dist/chat/ConversationParts.d.ts +62 -0
  79. package/dist/chat/ConversationSearchView.d.ts +57 -0
  80. package/dist/chat/LabelPinRow.d.ts +30 -0
  81. package/dist/chat/Message.d.ts +189 -0
  82. package/dist/chat/MessageAlert.d.ts +25 -0
  83. package/dist/chat/MessageList.d.ts +102 -0
  84. package/dist/chat/ModelPicker.d.ts +103 -0
  85. package/dist/chat/PendingAnswerBar.d.ts +36 -0
  86. package/dist/chat/PinnedDocChip.d.ts +22 -0
  87. package/dist/chat/SlashMenu.d.ts +57 -0
  88. package/dist/chat/ThreadMap.d.ts +45 -0
  89. package/dist/chat/index.cjs +423 -0
  90. package/dist/chat/index.cjs.map +1 -0
  91. package/dist/chat/index.d.ts +21 -0
  92. package/dist/chat/index.js +6 -0
  93. package/dist/chat/index.js.map +1 -0
  94. package/dist/chat/test-id.d.ts +16 -0
  95. package/dist/chat/useStreamAnnouncement.d.ts +19 -0
  96. package/dist/chunk-223D4727.cjs +50 -0
  97. package/dist/chunk-223D4727.cjs.map +1 -0
  98. package/dist/chunk-4EZVCGRL.js +803 -0
  99. package/dist/chunk-4EZVCGRL.js.map +1 -0
  100. package/dist/chunk-54Q3RNJU.cjs +516 -0
  101. package/dist/chunk-54Q3RNJU.cjs.map +1 -0
  102. package/dist/chunk-5B4PXAKI.cjs +287 -0
  103. package/dist/chunk-5B4PXAKI.cjs.map +1 -0
  104. package/dist/chunk-5TYEJOXY.js +1762 -0
  105. package/dist/chunk-5TYEJOXY.js.map +1 -0
  106. package/dist/chunk-6ALISABK.cjs +677 -0
  107. package/dist/chunk-6ALISABK.cjs.map +1 -0
  108. package/dist/chunk-6HIPFEID.cjs +574 -0
  109. package/dist/chunk-6HIPFEID.cjs.map +1 -0
  110. package/dist/chunk-76JDDMSP.js +31 -0
  111. package/dist/chunk-76JDDMSP.js.map +1 -0
  112. package/dist/chunk-7F6CBP3Z.js +12 -0
  113. package/dist/chunk-7F6CBP3Z.js.map +1 -0
  114. package/dist/chunk-7G2LJMUG.cjs +45 -0
  115. package/dist/chunk-7G2LJMUG.cjs.map +1 -0
  116. package/dist/chunk-7G3JNSJB.cjs +1809 -0
  117. package/dist/chunk-7G3JNSJB.cjs.map +1 -0
  118. package/dist/chunk-A2YAC22G.js +93 -0
  119. package/dist/chunk-A2YAC22G.js.map +1 -0
  120. package/dist/chunk-ADOKTJHV.cjs +262 -0
  121. package/dist/chunk-ADOKTJHV.cjs.map +1 -0
  122. package/dist/chunk-AXIZ2MDV.js +751 -0
  123. package/dist/chunk-AXIZ2MDV.js.map +1 -0
  124. package/dist/chunk-AZQDNYH4.js +2865 -0
  125. package/dist/chunk-AZQDNYH4.js.map +1 -0
  126. package/dist/chunk-C54XEN5T.cjs +34 -0
  127. package/dist/chunk-C54XEN5T.cjs.map +1 -0
  128. package/dist/chunk-CQCC7LE7.js +210 -0
  129. package/dist/chunk-CQCC7LE7.js.map +1 -0
  130. package/dist/chunk-CRIKTUEU.cjs +47 -0
  131. package/dist/chunk-CRIKTUEU.cjs.map +1 -0
  132. package/dist/chunk-CTZ5745I.js +564 -0
  133. package/dist/chunk-CTZ5745I.js.map +1 -0
  134. package/dist/chunk-DPLRHEJZ.js +78 -0
  135. package/dist/chunk-DPLRHEJZ.js.map +1 -0
  136. package/dist/chunk-DVLEQURC.js +672 -0
  137. package/dist/chunk-DVLEQURC.js.map +1 -0
  138. package/dist/chunk-ELR74ME6.cjs +68 -0
  139. package/dist/chunk-ELR74ME6.cjs.map +1 -0
  140. package/dist/{chunk-DBAUZD7A.cjs → chunk-FZQJ2S6P.cjs} +244 -1123
  141. package/dist/chunk-FZQJ2S6P.cjs.map +1 -0
  142. package/dist/chunk-G3G7LZPM.cjs +205 -0
  143. package/dist/chunk-G3G7LZPM.cjs.map +1 -0
  144. package/dist/chunk-GDFWJ73C.cjs +2973 -0
  145. package/dist/chunk-GDFWJ73C.cjs.map +1 -0
  146. package/dist/chunk-ITGHMJOM.js +5528 -0
  147. package/dist/chunk-ITGHMJOM.js.map +1 -0
  148. package/dist/chunk-K4BGOPGG.js +79 -0
  149. package/dist/chunk-K4BGOPGG.js.map +1 -0
  150. package/dist/chunk-KUA3BCT2.cjs +272 -0
  151. package/dist/chunk-KUA3BCT2.cjs.map +1 -0
  152. package/dist/chunk-LGBAZD37.js +341 -0
  153. package/dist/chunk-LGBAZD37.js.map +1 -0
  154. package/dist/chunk-MHVNT4J3.cjs +15 -0
  155. package/dist/chunk-MHVNT4J3.cjs.map +1 -0
  156. package/dist/chunk-MMYCZRKT.cjs +168 -0
  157. package/dist/chunk-MMYCZRKT.cjs.map +1 -0
  158. package/dist/chunk-NBV56SGU.js +42 -0
  159. package/dist/chunk-NBV56SGU.js.map +1 -0
  160. package/dist/chunk-NPLYHR2E.js +13 -0
  161. package/dist/chunk-NPLYHR2E.js.map +1 -0
  162. package/dist/chunk-NUNKSZKU.js +203 -0
  163. package/dist/chunk-NUNKSZKU.js.map +1 -0
  164. package/dist/chunk-OB5F4577.cjs +40 -0
  165. package/dist/chunk-OB5F4577.cjs.map +1 -0
  166. package/dist/chunk-OUW6G4O2.cjs +96 -0
  167. package/dist/chunk-OUW6G4O2.cjs.map +1 -0
  168. package/dist/chunk-OVEQERPO.js +66 -0
  169. package/dist/chunk-OVEQERPO.js.map +1 -0
  170. package/dist/chunk-P6GHJSLR.js +34 -0
  171. package/dist/chunk-P6GHJSLR.js.map +1 -0
  172. package/dist/chunk-PCB2BPN3.cjs +41 -0
  173. package/dist/chunk-PCB2BPN3.cjs.map +1 -0
  174. package/dist/chunk-PPCATBOY.cjs +15 -0
  175. package/dist/chunk-PPCATBOY.cjs.map +1 -0
  176. package/dist/chunk-QN42OA5J.js +887 -0
  177. package/dist/chunk-QN42OA5J.js.map +1 -0
  178. package/dist/{chunk-FZ2S6VAZ.js → chunk-RBXZYNVB.js} +223 -1102
  179. package/dist/chunk-RBXZYNVB.js.map +1 -0
  180. package/dist/chunk-RC6VTY2H.js +47 -0
  181. package/dist/chunk-RC6VTY2H.js.map +1 -0
  182. package/dist/chunk-RFIBUWLF.cjs +232 -0
  183. package/dist/chunk-RFIBUWLF.cjs.map +1 -0
  184. package/dist/chunk-S5T7ZTX2.js +266 -0
  185. package/dist/chunk-S5T7ZTX2.js.map +1 -0
  186. package/dist/chunk-S7PSMMRG.js +38 -0
  187. package/dist/chunk-S7PSMMRG.js.map +1 -0
  188. package/dist/chunk-SCFYPAG6.cjs +18 -0
  189. package/dist/chunk-SCFYPAG6.cjs.map +1 -0
  190. package/dist/chunk-SYDHKKRZ.cjs +818 -0
  191. package/dist/chunk-SYDHKKRZ.cjs.map +1 -0
  192. package/dist/chunk-TX2ZICS7.js +139 -0
  193. package/dist/chunk-TX2ZICS7.js.map +1 -0
  194. package/dist/chunk-TYZUCAT7.js +787 -0
  195. package/dist/chunk-TYZUCAT7.js.map +1 -0
  196. package/dist/chunk-U2E3WT3J.js +45 -0
  197. package/dist/chunk-U2E3WT3J.js.map +1 -0
  198. package/dist/chunk-UBNVIIBT.js +284 -0
  199. package/dist/chunk-UBNVIIBT.js.map +1 -0
  200. package/dist/chunk-UFHMLHIR.cjs +66 -0
  201. package/dist/chunk-UFHMLHIR.cjs.map +1 -0
  202. package/dist/chunk-UJE32SST.js +39 -0
  203. package/dist/chunk-UJE32SST.js.map +1 -0
  204. package/dist/chunk-ULWRNGGE.cjs +146 -0
  205. package/dist/chunk-ULWRNGGE.cjs.map +1 -0
  206. package/dist/chunk-UTWX2X2A.js +165 -0
  207. package/dist/chunk-UTWX2X2A.js.map +1 -0
  208. package/dist/chunk-UWGIB3VQ.js +64 -0
  209. package/dist/chunk-UWGIB3VQ.js.map +1 -0
  210. package/dist/chunk-V4ISCZJ7.cjs +207 -0
  211. package/dist/chunk-V4ISCZJ7.cjs.map +1 -0
  212. package/dist/chunk-VFUWWH52.cjs +83 -0
  213. package/dist/chunk-VFUWWH52.cjs.map +1 -0
  214. package/dist/chunk-VILAPTCB.js +259 -0
  215. package/dist/chunk-VILAPTCB.js.map +1 -0
  216. package/dist/chunk-VLCY46K6.cjs +82 -0
  217. package/dist/chunk-VLCY46K6.cjs.map +1 -0
  218. package/dist/chunk-VPPX5XUF.cjs +813 -0
  219. package/dist/chunk-VPPX5XUF.cjs.map +1 -0
  220. package/dist/chunk-WJMEXTVD.cjs +122 -0
  221. package/dist/chunk-WJMEXTVD.cjs.map +1 -0
  222. package/dist/chunk-WTNMWEBC.js +504 -0
  223. package/dist/chunk-WTNMWEBC.js.map +1 -0
  224. package/dist/chunk-WW6EOVZA.js +112 -0
  225. package/dist/chunk-WW6EOVZA.js.map +1 -0
  226. package/dist/chunk-XNBAXRY7.cjs +5673 -0
  227. package/dist/chunk-XNBAXRY7.cjs.map +1 -0
  228. package/dist/chunk-XQ7PKKDY.cjs +787 -0
  229. package/dist/chunk-XQ7PKKDY.cjs.map +1 -0
  230. package/dist/chunk-XZIYRKLW.cjs +347 -0
  231. package/dist/chunk-XZIYRKLW.cjs.map +1 -0
  232. package/dist/chunk-YBXCZEWS.js +187 -0
  233. package/dist/chunk-YBXCZEWS.js.map +1 -0
  234. package/dist/chunk-YDHO4AVL.js +16 -0
  235. package/dist/chunk-YDHO4AVL.js.map +1 -0
  236. package/dist/chunk-ZORQ5M3W.cjs +934 -0
  237. package/dist/chunk-ZORQ5M3W.cjs.map +1 -0
  238. package/dist/chunk-ZW6FPIFC.cjs +36 -0
  239. package/dist/chunk-ZW6FPIFC.cjs.map +1 -0
  240. package/dist/citations/CitationEditor.d.ts +58 -0
  241. package/dist/citations/PassagePill.d.ts +49 -0
  242. package/dist/citations/QuietMarks.d.ts +81 -0
  243. package/dist/citations/index.cjs +47 -0
  244. package/dist/citations/index.cjs.map +1 -0
  245. package/dist/citations/index.d.ts +3 -0
  246. package/dist/citations/index.js +6 -0
  247. package/dist/citations/index.js.map +1 -0
  248. package/dist/collaboration/contacts/AddContactsParts.d.ts +46 -0
  249. package/dist/collaboration/contacts/index.d.ts +1 -0
  250. package/dist/collaboration/direct-messages/DirectMessages.d.ts +33 -0
  251. package/dist/collaboration/direct-messages/DmParts.d.ts +139 -0
  252. package/dist/collaboration/direct-messages/index.d.ts +2 -0
  253. package/dist/collaboration/index.cjs +141 -0
  254. package/dist/collaboration/index.cjs.map +1 -0
  255. package/dist/collaboration/index.d.ts +5 -0
  256. package/dist/collaboration/index.js +8 -0
  257. package/dist/collaboration/index.js.map +1 -0
  258. package/dist/collaboration/mail/MailFolderTree.d.ts +34 -0
  259. package/dist/collaboration/mail/index.d.ts +2 -0
  260. package/dist/collaboration/mail/mailFolders.d.ts +25 -0
  261. package/dist/collaboration/members/WorkspaceMembers.d.ts +74 -0
  262. package/dist/collaboration/members/index.d.ts +1 -0
  263. package/dist/collaboration/sharing/ShareControl.d.ts +38 -0
  264. package/dist/collaboration/sharing/index.d.ts +1 -0
  265. package/dist/components/Accordion.d.ts +12 -0
  266. package/dist/components/ActionLink.d.ts +18 -0
  267. package/dist/components/AskBar.d.ts +48 -0
  268. package/dist/components/AvatarBlock.d.ts +9 -0
  269. package/dist/components/Banner.d.ts +12 -0
  270. package/dist/components/BlockImage.d.ts +18 -0
  271. package/dist/components/CTABanner.d.ts +17 -0
  272. package/dist/components/Callout.d.ts +9 -0
  273. package/dist/components/Chart.d.ts +27 -0
  274. package/dist/components/CollectionDetail.d.ts +23 -0
  275. package/dist/components/Columns.d.ts +11 -0
  276. package/dist/components/ContactForm.d.ts +42 -0
  277. package/dist/components/Container.d.ts +11 -0
  278. package/dist/components/DataTable.d.ts +47 -0
  279. package/dist/components/DataTableBlock.d.ts +26 -0
  280. package/dist/components/EmptyState.d.ts +11 -0
  281. package/dist/components/EntityChip.d.ts +24 -0
  282. package/dist/components/EntityIdentityBar.d.ts +90 -0
  283. package/dist/components/EntityTooltip.d.ts +43 -0
  284. package/dist/components/FAQ.d.ts +14 -0
  285. package/dist/components/FeatureGrid.d.ts +18 -0
  286. package/dist/components/Footer.d.ts +25 -0
  287. package/dist/components/Gallery.d.ts +15 -0
  288. package/dist/components/Hero.d.ts +35 -0
  289. package/dist/components/ListBlock.d.ts +10 -0
  290. package/dist/components/LogoCloud.d.ts +12 -0
  291. package/dist/components/MediaText.d.ts +15 -0
  292. package/dist/components/MemberAvatarStack.d.ts +36 -0
  293. package/dist/components/MetricCard.d.ts +28 -0
  294. package/dist/components/Navbar.d.ts +39 -0
  295. package/dist/components/PageHeader.d.ts +15 -0
  296. package/dist/components/PricingTable.d.ts +19 -0
  297. package/dist/components/RichTextBlock.d.ts +10 -0
  298. package/dist/components/SectionHeading.d.ts +11 -0
  299. package/dist/components/Spacer.d.ts +7 -0
  300. package/dist/components/StatGroup.d.ts +12 -0
  301. package/dist/components/Steps.d.ts +12 -0
  302. package/dist/components/Tabs.d.ts +15 -0
  303. package/dist/components/TeamGrid.d.ts +18 -0
  304. package/dist/components/Testimonial.d.ts +9 -0
  305. package/dist/components/TestimonialGrid.d.ts +13 -0
  306. package/dist/components/ToneBadge.d.ts +18 -0
  307. package/dist/components/Toolbar.d.ts +11 -0
  308. package/dist/components/UsageMeter.d.ts +21 -0
  309. package/dist/components/VideoEmbed.d.ts +16 -0
  310. package/dist/components/assetImage.d.ts +16 -0
  311. package/dist/components/assetResolver.d.ts +57 -0
  312. package/dist/components/blockLink.d.ts +26 -0
  313. package/dist/components/tones.d.ts +14 -0
  314. package/dist/connect/index.cjs +65 -0
  315. package/dist/connect/index.cjs.map +1 -0
  316. package/dist/connect/index.d.ts +8 -0
  317. package/dist/connect/index.js +28 -0
  318. package/dist/connect/index.js.map +1 -0
  319. package/dist/connection/ArbiAppProvider.d.ts +16 -0
  320. package/dist/connection/ConnectionProvider.d.ts +50 -0
  321. package/dist/connection/ai.d.ts +99 -0
  322. package/dist/connection/types.d.ts +54 -0
  323. package/dist/connection/useImageGen.d.ts +22 -0
  324. package/dist/facts/FactComposer.d.ts +75 -0
  325. package/dist/facts/FactDateInput.d.ts +34 -0
  326. package/dist/facts/FactLabelsCell.d.ts +35 -0
  327. package/dist/facts/FactPassages.d.ts +52 -0
  328. package/dist/facts/FactRowActions.d.ts +18 -0
  329. package/dist/facts/FactSearchParts.d.ts +80 -0
  330. package/dist/facts/FactSourceGroup.d.ts +26 -0
  331. package/dist/facts/FactTimelineViews.d.ts +37 -0
  332. package/dist/facts/FactsBulkBar.d.ts +53 -0
  333. package/dist/facts/FactsEmptyState.d.ts +38 -0
  334. package/dist/facts/FactsFieldsButton.d.ts +21 -0
  335. package/dist/facts/FactsFilterInput.d.ts +46 -0
  336. package/dist/facts/FactsTable.d.ts +28 -0
  337. package/dist/facts/FactsToolbar.d.ts +53 -0
  338. package/dist/facts/FactsViewToggle.d.ts +36 -0
  339. package/dist/facts/fact-date.d.ts +22 -0
  340. package/dist/facts/fact-text.d.ts +14 -0
  341. package/dist/facts/factColumns.d.ts +88 -0
  342. package/dist/facts/index.cjs +2372 -0
  343. package/dist/facts/index.cjs.map +1 -0
  344. package/dist/facts/index.d.ts +34 -0
  345. package/dist/facts/index.js +2316 -0
  346. package/dist/facts/index.js.map +1 -0
  347. package/dist/facts/timezone.d.ts +4 -0
  348. package/dist/files/AiReviewDialog.d.ts +77 -0
  349. package/dist/files/DocStatusIcon.d.ts +12 -0
  350. package/dist/files/DocumentGrid.d.ts +27 -0
  351. package/dist/files/Explorer.d.ts +10 -0
  352. package/dist/files/ExplorerSurface.d.ts +34 -0
  353. package/dist/files/ExplorerTile.d.ts +142 -0
  354. package/dist/files/ExportParts.d.ts +114 -0
  355. package/dist/files/FieldParts.d.ts +64 -0
  356. package/dist/files/FilesPage.d.ts +20 -0
  357. package/dist/files/FilesToolbar.d.ts +59 -0
  358. package/dist/files/FolderPicker.d.ts +82 -0
  359. package/dist/files/GridView.d.ts +59 -0
  360. package/dist/files/HtmlViewerParts.d.ts +183 -0
  361. package/dist/files/MoveToFolderDialog.d.ts +32 -0
  362. package/dist/files/RedlineParts.d.ts +72 -0
  363. package/dist/files/SelectionBar.d.ts +65 -0
  364. package/dist/files/StatusPill.d.ts +23 -0
  365. package/dist/files/TagPassagePanel.d.ts +60 -0
  366. package/dist/files/UploadDropzone.d.ts +33 -0
  367. package/dist/files/UploadFooter.d.ts +59 -0
  368. package/dist/files/UploadParts.d.ts +78 -0
  369. package/dist/files/UploadSources.d.ts +77 -0
  370. package/dist/files/VersionTimeline.d.ts +60 -0
  371. package/dist/files/ViewToggle.d.ts +49 -0
  372. package/dist/files/ViewerChrome.d.ts +155 -0
  373. package/dist/files/ViewerLayout.d.ts +32 -0
  374. package/dist/files/ViewerParts.d.ts +62 -0
  375. package/dist/files/bulk/BulkActionsBar.d.ts +76 -0
  376. package/dist/files/bulk/FolderFilterButton.d.ts +35 -0
  377. package/dist/files/bulk/index.d.ts +2 -0
  378. package/dist/files/cells/DocumentNameCell.d.ts +31 -0
  379. package/dist/files/cells/FolderCell.d.ts +25 -0
  380. package/dist/files/cells/HoverIconCell.d.ts +21 -0
  381. package/dist/files/cells/LabelMultiSelect.d.ts +50 -0
  382. package/dist/files/cells/RelatedDocsCell.d.ts +22 -0
  383. package/dist/files/cells/TagColumnParts.d.ts +29 -0
  384. package/dist/files/cells/index.d.ts +6 -0
  385. package/dist/files/documentGridLayout.d.ts +31 -0
  386. package/dist/files/grid-test-ids.d.ts +18 -0
  387. package/dist/files/import/CalendarImportRow.d.ts +26 -0
  388. package/dist/files/import/ImportParts.d.ts +114 -0
  389. package/dist/files/import/TaskSection.d.ts +51 -0
  390. package/dist/files/import/UrlInputDialogView.d.ts +63 -0
  391. package/dist/files/import/VendorLogo.d.ts +15 -0
  392. package/dist/files/import/index.d.ts +5 -0
  393. package/dist/files/index.cjs +7589 -0
  394. package/dist/files/index.cjs.map +1 -0
  395. package/dist/files/index.d.ts +34 -0
  396. package/dist/files/index.js +7374 -0
  397. package/dist/files/index.js.map +1 -0
  398. package/dist/files/page/FilesAddMenu.d.ts +30 -0
  399. package/dist/files/page/FilesPageParts.d.ts +24 -0
  400. package/dist/files/page/FilesPageTitle.d.ts +24 -0
  401. package/dist/files/page/index.d.ts +3 -0
  402. package/dist/files/tags/BulkTagEditor.d.ts +136 -0
  403. package/dist/files/tags/DocTagPopover.d.ts +113 -0
  404. package/dist/files/tags/TagManager.d.ts +54 -0
  405. package/dist/files/tags/index.d.ts +3 -0
  406. package/dist/files/views/FieldsEditorParts.d.ts +151 -0
  407. package/dist/files/views/FieldsManagerParts.d.ts +17 -0
  408. package/dist/files/views/TagFormParts.d.ts +109 -0
  409. package/dist/files/views/ViewSelectorMenu.d.ts +66 -0
  410. package/dist/files/views/fieldsEditorModel.d.ts +43 -0
  411. package/dist/files/views/index.d.ts +5 -0
  412. package/dist/home/ActionMenuDialog.d.ts +26 -0
  413. package/dist/home/AddFilesFirst.d.ts +22 -0
  414. package/dist/home/CardHeaderBar.d.ts +40 -0
  415. package/dist/home/CollapsibleSection.d.ts +43 -0
  416. package/dist/home/CreateTile.d.ts +17 -0
  417. package/dist/home/DashboardParts.d.ts +32 -0
  418. package/dist/home/FactsStrip.d.ts +41 -0
  419. package/dist/home/FoldSection.d.ts +19 -0
  420. package/dist/home/GettingStartedStrip.d.ts +49 -0
  421. package/dist/home/Greeting.d.ts +18 -0
  422. package/dist/home/HomeLayout.d.ts +28 -0
  423. package/dist/home/KeyValueRow.d.ts +43 -0
  424. package/dist/home/ProjectBandParts.d.ts +70 -0
  425. package/dist/home/QuickActionDialogHeader.d.ts +21 -0
  426. package/dist/home/RecentList.d.ts +48 -0
  427. package/dist/home/ScopePicker.d.ts +65 -0
  428. package/dist/home/StartTiles.d.ts +33 -0
  429. package/dist/home/index.cjs +854 -0
  430. package/dist/home/index.cjs.map +1 -0
  431. package/dist/home/index.d.ts +37 -0
  432. package/dist/home/index.js +763 -0
  433. package/dist/home/index.js.map +1 -0
  434. package/dist/home/sections.d.ts +33 -0
  435. package/dist/index.cjs +1932 -5547
  436. package/dist/index.cjs.map +1 -1
  437. package/dist/index.d.ts +71 -1716
  438. package/dist/index.js +142 -5316
  439. package/dist/index.js.map +1 -1
  440. package/dist/lib/balanced-columns.d.ts +8 -0
  441. package/dist/lib/format.d.ts +37 -0
  442. package/dist/lib/observe-resize.d.ts +6 -0
  443. package/dist/lib/password-strength.d.ts +24 -0
  444. package/dist/lib/sidebar-mode.d.ts +46 -0
  445. package/dist/lib/testid.d.ts +7 -0
  446. package/dist/lib/use-drawer.d.ts +11 -0
  447. package/dist/lib/useControllableState.d.ts +5 -0
  448. package/dist/lib/useDismissibleCard.d.ts +15 -0
  449. package/dist/lib/useListKeyNav.d.ts +42 -0
  450. package/dist/lib/useLongPaste.d.ts +15 -0
  451. package/dist/lib/useRestoreFocus.d.ts +11 -0
  452. package/dist/lib/useScopeSelection.d.ts +34 -0
  453. package/dist/nav/types.d.ts +19 -0
  454. package/dist/provider/BlocksProvider.d.ts +20 -0
  455. package/dist/provider/TooltipScope.d.ts +9 -0
  456. package/dist/record/index.cjs +2 -4
  457. package/dist/record/index.cjs.map +1 -1
  458. package/dist/record/index.d.ts +12 -16
  459. package/dist/record/index.js +2 -4
  460. package/dist/record/index.js.map +1 -1
  461. package/dist/retrieval/HighlightText.d.ts +21 -0
  462. package/dist/retrieval/SearchEmptyState.d.ts +39 -0
  463. package/dist/retrieval/SearchGroupHeader.d.ts +21 -0
  464. package/dist/retrieval/SearchHit.d.ts +36 -0
  465. package/dist/retrieval/SearchPage.d.ts +187 -0
  466. package/dist/retrieval/SearchPagination.d.ts +21 -0
  467. package/dist/retrieval/highlight.d.ts +21 -0
  468. package/dist/retrieval/index.cjs +160 -0
  469. package/dist/retrieval/index.cjs.map +1 -0
  470. package/dist/retrieval/index.d.ts +7 -0
  471. package/dist/retrieval/index.js +7 -0
  472. package/dist/retrieval/index.js.map +1 -0
  473. package/dist/settings/AccountDialogs.d.ts +89 -0
  474. package/dist/settings/AvatarPicker.d.ts +25 -0
  475. package/dist/settings/Billing.d.ts +113 -0
  476. package/dist/settings/ConfigSwitcherBar.d.ts +46 -0
  477. package/dist/settings/ConfirmDialog.d.ts +28 -0
  478. package/dist/settings/ConnectionCard.d.ts +58 -0
  479. package/dist/settings/ConversationSettingsParts.d.ts +53 -0
  480. package/dist/settings/DocumentPicker.d.ts +57 -0
  481. package/dist/settings/EmailWorkspaceDialogView.d.ts +60 -0
  482. package/dist/settings/ErrorDialog.d.ts +36 -0
  483. package/dist/settings/FloatingPanel.d.ts +32 -0
  484. package/dist/settings/JsonTree.d.ts +24 -0
  485. package/dist/settings/LogoutDialog.d.ts +51 -0
  486. package/dist/settings/ModalBreadcrumbHeader.d.ts +32 -0
  487. package/dist/settings/ModalScaffold.d.ts +60 -0
  488. package/dist/settings/MultiSelect.d.ts +111 -0
  489. package/dist/settings/NotificationCategoryList.d.ts +26 -0
  490. package/dist/settings/PanelFrame.d.ts +47 -0
  491. package/dist/settings/PasswordChangeDialog.d.ts +64 -0
  492. package/dist/settings/PlanBadge.d.ts +14 -0
  493. package/dist/settings/PlanCard.d.ts +97 -0
  494. package/dist/settings/PremiumModelsFrame.d.ts +17 -0
  495. package/dist/settings/ProfileCard.d.ts +67 -0
  496. package/dist/settings/Projects.d.ts +108 -0
  497. package/dist/settings/QuotaMeter.d.ts +31 -0
  498. package/dist/settings/ReferralCredit.d.ts +46 -0
  499. package/dist/settings/SegmentedControl.d.ts +20 -0
  500. package/dist/settings/ServerConnectionControls.d.ts +31 -0
  501. package/dist/settings/SettingsPanel.d.ts +61 -0
  502. package/dist/settings/SettingsSwitchRow.d.ts +21 -0
  503. package/dist/settings/SubscriptionParts.d.ts +215 -0
  504. package/dist/settings/SupportPanel.d.ts +32 -0
  505. package/dist/settings/SyncDialogParts.d.ts +155 -0
  506. package/dist/settings/ThreadPreviewDialog.d.ts +18 -0
  507. package/dist/settings/TipsEditorDialog.d.ts +94 -0
  508. package/dist/settings/TriStateFilterMenu.d.ts +66 -0
  509. package/dist/settings/Usage.d.ts +102 -0
  510. package/dist/settings/WelcomeDialog.d.ts +79 -0
  511. package/dist/settings/index.cjs +5131 -0
  512. package/dist/settings/index.cjs.map +1 -0
  513. package/dist/settings/index.d.ts +38 -0
  514. package/dist/settings/index.js +4922 -0
  515. package/dist/settings/index.js.map +1 -0
  516. package/dist/shell/ActionCluster.d.ts +28 -0
  517. package/dist/shell/AskField.d.ts +71 -0
  518. package/dist/shell/InfoBar.d.ts +20 -0
  519. package/dist/shell/MobileBars.d.ts +47 -0
  520. package/dist/shell/OfflinePill.d.ts +28 -0
  521. package/dist/shell/RemoteControlPill.d.ts +23 -0
  522. package/dist/shell/Shell.d.ts +123 -0
  523. package/dist/shell/Sidebar.d.ts +104 -0
  524. package/dist/shell/SidebarBadgeRow.d.ts +29 -0
  525. package/dist/shell/SidebarRowAction.d.ts +24 -0
  526. package/dist/shell/StatusRow.d.ts +20 -0
  527. package/dist/shell/TabHeader.d.ts +70 -0
  528. package/dist/shell/TipCard.d.ts +46 -0
  529. package/dist/shell/ToolButton.d.ts +12 -0
  530. package/dist/shell/Workspace.d.ts +90 -0
  531. package/dist/shell/index.cjs +187 -0
  532. package/dist/shell/index.cjs.map +1 -0
  533. package/dist/shell/index.d.ts +20 -0
  534. package/dist/shell/index.js +10 -0
  535. package/dist/shell/index.js.map +1 -0
  536. package/dist/shell/sidebar-context.d.ts +19 -0
  537. package/dist/shell/types.d.ts +48 -0
  538. package/dist/site/index.cjs +113 -90
  539. package/dist/site/index.d.ts +59 -4
  540. package/dist/site/index.js +8 -1
  541. package/dist/studio/PageRenderer.d.ts +35 -0
  542. package/dist/studio/Section.d.ts +24 -0
  543. package/dist/studio/StudioEditor.d.ts +32 -0
  544. package/dist/studio/aiFields.d.ts +17 -0
  545. package/dist/studio/blockKit.d.ts +36 -0
  546. package/dist/studio/blocksConfig.d.ts +42 -0
  547. package/dist/studio/imageFields.d.ts +14 -0
  548. package/dist/studio/index.cjs +3353 -0
  549. package/dist/studio/index.cjs.map +1 -0
  550. package/dist/studio/index.d.ts +32 -0
  551. package/dist/studio/index.js +3297 -0
  552. package/dist/studio/index.js.map +1 -0
  553. package/dist/studio/liveData.d.ts +4 -0
  554. package/dist/studio/liveWidgetRuntime.d.ts +41 -0
  555. package/dist/studio/persistence.d.ts +38 -0
  556. package/dist/studio/publish.d.ts +39 -0
  557. package/dist/studio/siteBlocks.d.ts +14 -0
  558. package/dist/studio/types.d.ts +46 -0
  559. package/dist/studio/websiteBlocks.d.ts +4 -0
  560. package/dist/studio/widgets.d.ts +20 -0
  561. package/dist/theme/ThemeEditor.d.ts +16 -0
  562. package/dist/theme/fontPairings.d.ts +48 -0
  563. package/dist/theme/store.d.ts +53 -0
  564. package/dist/theme/tokens.d.ts +105 -0
  565. package/dist/timeline/Timeline.d.ts +27 -0
  566. package/dist/timeline/TimelineCalendar.d.ts +54 -0
  567. package/dist/timeline/TimelineGantt.d.ts +71 -0
  568. package/dist/timeline/TimelineZoomControl.d.ts +17 -0
  569. package/dist/timeline/index.cjs +50 -0
  570. package/dist/timeline/index.cjs.map +1 -0
  571. package/dist/timeline/index.d.ts +13 -0
  572. package/dist/timeline/index.js +5 -0
  573. package/dist/timeline/index.js.map +1 -0
  574. package/dist/timeline/span.d.ts +29 -0
  575. package/dist/timeline/types.d.ts +30 -0
  576. package/dist/workspaces/WorkspaceBadges.d.ts +27 -0
  577. package/dist/workspaces/WorkspaceCard.d.ts +142 -0
  578. package/dist/workspaces/WorkspaceFormParts.d.ts +98 -0
  579. package/dist/workspaces/WorkspaceGroup.d.ts +31 -0
  580. package/dist/workspaces/WorkspaceSettingsParts.d.ts +70 -0
  581. package/dist/workspaces/index.cjs +690 -0
  582. package/dist/workspaces/index.cjs.map +1 -0
  583. package/dist/workspaces/index.d.ts +9 -0
  584. package/dist/workspaces/index.js +661 -0
  585. package/dist/workspaces/index.js.map +1 -0
  586. package/package.json +154 -9
  587. package/src/blocks.css +348 -0
  588. package/src/components/grid.css +60 -107
  589. package/src/source.css +20 -0
  590. package/src/studio/studio.css +3 -3
  591. package/src/tokens.css +226 -0
  592. package/dist/chunk-DBAUZD7A.cjs.map +0 -1
  593. package/dist/chunk-FZ2S6VAZ.js.map +0 -1
  594. package/dist/index-DduoEosi.d.cts +0 -846
  595. package/dist/index-DduoEosi.d.ts +0 -846
  596. package/dist/index.d.cts +0 -1717
  597. package/dist/record/index.d.cts +0 -96
  598. package/dist/site/index.d.cts +0 -4
@@ -0,0 +1,1809 @@
1
+ "use client";
2
+ 'use strict';
3
+
4
+ var chunkOB5F4577_cjs = require('./chunk-OB5F4577.cjs');
5
+ var chunkSCFYPAG6_cjs = require('./chunk-SCFYPAG6.cjs');
6
+ var chunkMHVNT4J3_cjs = require('./chunk-MHVNT4J3.cjs');
7
+ var react = require('react');
8
+ var lucideReact = require('lucide-react');
9
+ var ui = require('@arbidocs/react/ui');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+ var shell = require('@arbidocs/react/shell');
12
+
13
+ var FOCUSABLE = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])';
14
+ function focusableIn(container) {
15
+ return Array.from(container.querySelectorAll(FOCUSABLE)).filter(
16
+ (el) => !el.closest("[inert]") && el.getAttribute("aria-hidden") !== "true"
17
+ );
18
+ }
19
+ function useDrawerBehavior(isOpen, onClose, containerRef) {
20
+ const onCloseRef = react.useRef(onClose);
21
+ react.useEffect(() => {
22
+ onCloseRef.current = onClose;
23
+ });
24
+ react.useEffect(() => {
25
+ if (!isOpen) return;
26
+ const previousOverflow = document.body.style.overflow;
27
+ const opener = document.activeElement instanceof HTMLElement ? document.activeElement : null;
28
+ document.body.style.overflow = "hidden";
29
+ const container = containerRef?.current ?? null;
30
+ if (container) {
31
+ const first = focusableIn(container)[0];
32
+ if (first) first.focus();
33
+ else {
34
+ if (!container.hasAttribute("tabindex")) container.setAttribute("tabindex", "-1");
35
+ container.focus();
36
+ }
37
+ }
38
+ const onKey = (e) => {
39
+ if (e.key === "Escape") {
40
+ onCloseRef.current();
41
+ return;
42
+ }
43
+ if (e.key !== "Tab" || !container) return;
44
+ const items = focusableIn(container);
45
+ if (items.length === 0) {
46
+ e.preventDefault();
47
+ return;
48
+ }
49
+ const firstItem = items[0];
50
+ const lastItem = items[items.length - 1];
51
+ const active = document.activeElement;
52
+ if (!container.contains(active)) {
53
+ e.preventDefault();
54
+ firstItem.focus();
55
+ } else if (e.shiftKey && active === firstItem) {
56
+ e.preventDefault();
57
+ lastItem.focus();
58
+ } else if (!e.shiftKey && active === lastItem) {
59
+ e.preventDefault();
60
+ firstItem.focus();
61
+ }
62
+ };
63
+ window.addEventListener("keydown", onKey);
64
+ return () => {
65
+ document.body.style.overflow = previousOverflow;
66
+ window.removeEventListener("keydown", onKey);
67
+ if (opener?.isConnected) opener.focus();
68
+ };
69
+ }, [isOpen, containerRef]);
70
+ }
71
+ var DEFAULT_OVERLAY_ZONE_ID = "app-overlay-zone";
72
+ var OverlayZoneContext = react.createContext(DEFAULT_OVERLAY_ZONE_ID);
73
+ function useOverlayZoneId() {
74
+ return react.useContext(OverlayZoneContext);
75
+ }
76
+ function ShellRoot({
77
+ banner,
78
+ topbar,
79
+ sidebar,
80
+ tabBar,
81
+ aside,
82
+ overlays,
83
+ children,
84
+ className,
85
+ "data-testid": testId
86
+ }) {
87
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkSCFYPAG6_cjs.BlocksTooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(
88
+ "div",
89
+ {
90
+ "data-slot": "shell",
91
+ "data-testid": testId,
92
+ className: ui.cn("flex h-screen flex-col", className),
93
+ children: [
94
+ banner,
95
+ topbar,
96
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative flex flex-1 overflow-hidden", children: [
97
+ sidebar,
98
+ children,
99
+ aside,
100
+ overlays
101
+ ] }),
102
+ tabBar
103
+ ]
104
+ }
105
+ ) });
106
+ }
107
+ function ShellContent({
108
+ children,
109
+ scrollRef,
110
+ onClick,
111
+ overlayZoneId = DEFAULT_OVERLAY_ZONE_ID,
112
+ className
113
+ }) {
114
+ return /* @__PURE__ */ jsxRuntime.jsx(
115
+ "div",
116
+ {
117
+ "data-slot": "shell-content",
118
+ className: ui.cn("flex min-w-0 flex-1 flex-col", className),
119
+ onClick,
120
+ children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "relative min-h-0 flex-1", children: [
121
+ /* @__PURE__ */ jsxRuntime.jsx(OverlayZoneContext.Provider, { value: overlayZoneId, children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: scrollRef, className: "h-full overflow-auto", children }) }),
122
+ /* @__PURE__ */ jsxRuntime.jsx("div", { id: overlayZoneId, "data-slot": "overlay-zone" })
123
+ ] })
124
+ }
125
+ );
126
+ }
127
+ function ShellTopbar({ children, actions, className }) {
128
+ return (
129
+ // `relative z-30` keeps dropdowns the header opens above the page region (a later sibling).
130
+ /* @__PURE__ */ jsxRuntime.jsxs(
131
+ "div",
132
+ {
133
+ "data-slot": "shell-topbar",
134
+ className: ui.cn("relative z-30 flex h-14 shrink-0 items-center bg-background px-2", className),
135
+ children: [
136
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mx-auto flex w-full max-w-6xl items-center", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "hidden min-w-0 flex-1 px-6 sm:block", children }) }),
137
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute right-4 top-1/2 flex -translate-y-1/2 items-center gap-1", children: actions })
138
+ ]
139
+ }
140
+ )
141
+ );
142
+ }
143
+ function ShellDock({
144
+ isOpen,
145
+ onOpenChange,
146
+ width = "24rem",
147
+ isMobile = false,
148
+ label,
149
+ closeLabel = "Close",
150
+ children,
151
+ className,
152
+ "data-testid": testId
153
+ }) {
154
+ const mobileRef = react.useRef(null);
155
+ const closeMobile = react.useCallback(() => onOpenChange?.(false), [onOpenChange]);
156
+ useDrawerBehavior(isOpen && isMobile, closeMobile, mobileRef);
157
+ if (!isOpen) return null;
158
+ if (isMobile) {
159
+ return /* @__PURE__ */ jsxRuntime.jsxs(
160
+ "div",
161
+ {
162
+ ref: mobileRef,
163
+ role: "dialog",
164
+ "aria-modal": "true",
165
+ "aria-label": label,
166
+ "data-slot": "shell-dock",
167
+ "data-state": "open",
168
+ "data-mobile": "true",
169
+ "data-testid": testId,
170
+ className: ui.cn("fixed inset-0 z-40 flex flex-col bg-background", className),
171
+ children: [
172
+ onOpenChange && /* @__PURE__ */ jsxRuntime.jsx(
173
+ "button",
174
+ {
175
+ type: "button",
176
+ onClick: () => onOpenChange(false),
177
+ "aria-label": closeLabel,
178
+ className: "absolute right-2 top-2 z-10 rounded-md p-2 text-muted-foreground hover:bg-muted",
179
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-5" })
180
+ }
181
+ ),
182
+ children
183
+ ]
184
+ }
185
+ );
186
+ }
187
+ return /* @__PURE__ */ jsxRuntime.jsx(
188
+ "aside",
189
+ {
190
+ "aria-label": label,
191
+ "data-slot": "shell-dock",
192
+ "data-state": "open",
193
+ "data-testid": testId,
194
+ style: { width },
195
+ className: ui.cn(
196
+ "flex shrink-0 flex-col overflow-hidden border-l border-border bg-background",
197
+ className
198
+ ),
199
+ children
200
+ }
201
+ );
202
+ }
203
+ var Shell = {
204
+ Root: ShellRoot,
205
+ Content: ShellContent,
206
+ Topbar: ShellTopbar,
207
+ Dock: ShellDock
208
+ };
209
+ var DEFAULT_PAGE_CONTAINER_PADDING = "px-4 sm:px-6 lg:px-8";
210
+ function PageContainer({
211
+ children,
212
+ wide = false,
213
+ minScreen = false,
214
+ maxWidth = "max-w-6xl",
215
+ padding = DEFAULT_PAGE_CONTAINER_PADDING,
216
+ innerClassName,
217
+ className
218
+ }) {
219
+ return /* @__PURE__ */ jsxRuntime.jsx(
220
+ "div",
221
+ {
222
+ "data-slot": "page-container",
223
+ className: ui.cn(
224
+ "bg-background pb-safe",
225
+ minScreen ? "min-h-screen" : "h-full min-h-0",
226
+ className
227
+ ),
228
+ children: /* @__PURE__ */ jsxRuntime.jsx(
229
+ "div",
230
+ {
231
+ className: ui.cn(
232
+ "flex h-full w-full flex-col pb-safe",
233
+ padding,
234
+ !wide && ui.cn("mx-auto", maxWidth),
235
+ innerClassName
236
+ ),
237
+ children
238
+ }
239
+ )
240
+ }
241
+ );
242
+ }
243
+ var DEFAULT_SIDEBAR_TOGGLE_BUTTON_LABELS = {
244
+ closeSidebar: "Close sidebar",
245
+ openSidebar: "Open sidebar"
246
+ };
247
+ function SidebarToggleButton({
248
+ isOpen,
249
+ onToggle,
250
+ labels,
251
+ "data-testid": testId = "tabheader-sidebar-toggle"
252
+ }) {
253
+ const l = { ...DEFAULT_SIDEBAR_TOGGLE_BUTTON_LABELS, ...labels };
254
+ const label = isOpen ? l.closeSidebar : l.openSidebar;
255
+ return /* @__PURE__ */ jsxRuntime.jsx(
256
+ "button",
257
+ {
258
+ type: "button",
259
+ onClick: onToggle,
260
+ className: "rounded-md p-1 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground pointer-coarse:p-2.5",
261
+ "aria-label": label,
262
+ title: label,
263
+ "data-testid": testId,
264
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeft, { className: "size-5" })
265
+ }
266
+ );
267
+ }
268
+ var DEFAULT_SIDEBAR_LABELS = {
269
+ mainNavigation: "Main navigation",
270
+ hideSidebar: "Hide sidebar",
271
+ showSidebar: "Show sidebar",
272
+ closeNavigationMenu: "Close navigation menu"
273
+ };
274
+ var SidebarContext = react.createContext({
275
+ expanded: true,
276
+ labels: DEFAULT_SIDEBAR_LABELS
277
+ });
278
+ var useSidebarContext = () => react.useContext(SidebarContext);
279
+ var SidebarRowHoverContext = react.createContext(false);
280
+ var SidebarBadgeRow = react.forwardRef(
281
+ function SidebarBadgeRow2({ icon, label, count, ariaLabel, variant, badgeTestId, className, type = "button", ...rest }, ref) {
282
+ const { expanded } = useSidebarContext();
283
+ const resolved = variant ?? (expanded ? "row" : "icon");
284
+ const hasCount = count !== void 0 && count > 0;
285
+ const badgeText = hasCount ? count > 9 ? "9+" : String(count) : null;
286
+ const name = ariaLabel ?? (hasCount ? `${label}, ${count}` : label);
287
+ if (resolved === "row") {
288
+ return /* @__PURE__ */ jsxRuntime.jsxs(
289
+ "button",
290
+ {
291
+ ref,
292
+ type,
293
+ "aria-label": name,
294
+ "data-slot": "sidebar-badge-row",
295
+ "data-variant": "row",
296
+ className: ui.cn(
297
+ "group flex h-9 w-full cursor-pointer items-center rounded-md px-3 text-left text-sm font-medium text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:h-11",
298
+ className
299
+ ),
300
+ ...rest,
301
+ children: [
302
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-5 flex-shrink-0 items-center justify-center", "aria-hidden": true, children: icon }),
303
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-3 min-w-0 truncate", "aria-hidden": true, children: label }),
304
+ badgeText && /* @__PURE__ */ jsxRuntime.jsx(
305
+ "span",
306
+ {
307
+ "aria-hidden": true,
308
+ "data-testid": badgeTestId,
309
+ className: "ml-auto inline-flex min-w-5 flex-shrink-0 items-center justify-center rounded-full bg-primary px-1.5 text-xs font-semibold leading-5 tabular-nums text-primary-foreground",
310
+ children: badgeText
311
+ }
312
+ )
313
+ ]
314
+ }
315
+ );
316
+ }
317
+ const iconButton = /* @__PURE__ */ jsxRuntime.jsxs(
318
+ "button",
319
+ {
320
+ ref,
321
+ type,
322
+ "aria-label": name,
323
+ "data-slot": "sidebar-badge-row",
324
+ "data-variant": "icon",
325
+ title: variant === "icon" ? label : void 0,
326
+ className: ui.cn(
327
+ "relative m-0 flex h-9 w-12 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:h-11",
328
+ className
329
+ ),
330
+ ...rest,
331
+ children: [
332
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "flex size-5 items-center justify-center", "aria-hidden": true, children: icon }),
333
+ badgeText && /* @__PURE__ */ jsxRuntime.jsx(
334
+ "span",
335
+ {
336
+ "aria-hidden": true,
337
+ "data-testid": badgeTestId,
338
+ className: "absolute right-1 top-0.5 flex min-w-4 items-center justify-center rounded-full bg-primary px-1 text-xs font-semibold leading-4 tabular-nums text-primary-foreground",
339
+ children: badgeText
340
+ }
341
+ )
342
+ ]
343
+ }
344
+ );
345
+ if (variant === "icon") return iconButton;
346
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { delayDuration: 50, children: [
347
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: iconButton }),
348
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "right", sideOffset: 8, children: label })
349
+ ] });
350
+ }
351
+ );
352
+ var noop = () => {
353
+ };
354
+ var COLLAPSED_WIDTH = "64px";
355
+ var EXPANDED_WIDTH = "256px";
356
+ function SidebarRoot({
357
+ mode,
358
+ expanded,
359
+ isHovering = false,
360
+ isPeeking = false,
361
+ onBackdropClick,
362
+ hasRailBackdrop = false,
363
+ onMouseEnter,
364
+ onMouseLeave,
365
+ children,
366
+ className,
367
+ "aria-label": ariaLabelProp,
368
+ labels,
369
+ "data-testid": testId,
370
+ backdropTestId
371
+ }) {
372
+ const mergedLabels = react.useMemo(() => ({ ...DEFAULT_SIDEBAR_LABELS, ...labels }), [labels]);
373
+ const drawerRef = react.useRef(null);
374
+ const isDrawer = mode === "drawer";
375
+ useDrawerBehavior(isDrawer, onBackdropClick ?? noop, drawerRef);
376
+ const ariaLabel = ariaLabelProp ?? mergedLabels.mainNavigation;
377
+ const contextValue = react.useMemo(() => ({ expanded, labels: mergedLabels }), [expanded, mergedLabels]);
378
+ const navBase = "group/sidebar bg-sidebar border-r border-border text-foreground flex flex-col h-full overflow-y-auto overflow-x-hidden pb-safe pt-3 transition-all duration-300 ease-in-out";
379
+ const common = {
380
+ "aria-label": ariaLabel,
381
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "sidebar" }),
382
+ "data-slot": "sidebar",
383
+ "data-mode": mode
384
+ };
385
+ const fixedWidth = { width: EXPANDED_WIDTH, minWidth: EXPANDED_WIDTH };
386
+ let body;
387
+ if (mode === "drawer") {
388
+ body = /* @__PURE__ */ jsxRuntime.jsxs(
389
+ "div",
390
+ {
391
+ ref: drawerRef,
392
+ role: "dialog",
393
+ "aria-modal": "true",
394
+ "aria-label": ariaLabel,
395
+ "data-slot": "sidebar-drawer",
396
+ className: "fixed inset-0 z-50",
397
+ children: [
398
+ /* @__PURE__ */ jsxRuntime.jsx(
399
+ "div",
400
+ {
401
+ className: "absolute inset-0 bg-black/50",
402
+ onClick: onBackdropClick,
403
+ "aria-hidden": "true",
404
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(backdropTestId, { testId: "sidebar-backdrop" })
405
+ }
406
+ ),
407
+ /* @__PURE__ */ jsxRuntime.jsx(
408
+ "nav",
409
+ {
410
+ ...common,
411
+ className: ui.cn(navBase, "!px-3 absolute left-0 top-0 pt-safe shadow-xl", className),
412
+ style: fixedWidth,
413
+ children
414
+ }
415
+ )
416
+ ]
417
+ }
418
+ );
419
+ } else if (mode === "collapsed") {
420
+ body = /* @__PURE__ */ jsxRuntime.jsx(
421
+ "nav",
422
+ {
423
+ ...common,
424
+ className: ui.cn(navBase, "absolute left-0 top-0 z-[45]", isPeeking && "shadow-xl", className),
425
+ style: {
426
+ width: isPeeking ? EXPANDED_WIDTH : "0px",
427
+ minWidth: 0,
428
+ paddingLeft: isPeeking ? "0.75rem" : 0,
429
+ paddingRight: isPeeking ? "0.75rem" : 0,
430
+ borderRightWidth: isPeeking ? void 0 : 0,
431
+ pointerEvents: isPeeking ? "auto" : "none"
432
+ },
433
+ inert: !isPeeking,
434
+ onMouseEnter,
435
+ onMouseLeave,
436
+ children
437
+ }
438
+ );
439
+ } else if (mode === "pinned") {
440
+ body = /* @__PURE__ */ jsxRuntime.jsx(
441
+ "nav",
442
+ {
443
+ ...common,
444
+ className: ui.cn(navBase, "!px-3 relative flex-shrink-0", className),
445
+ style: fixedWidth,
446
+ onMouseEnter,
447
+ onMouseLeave,
448
+ children
449
+ }
450
+ );
451
+ } else {
452
+ body = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
453
+ /* @__PURE__ */ jsxRuntime.jsx(
454
+ "div",
455
+ {
456
+ className: "bg-sidebar border-r border-border flex flex-col h-full relative px-0 pb-safe flex-shrink-0",
457
+ style: { width: COLLAPSED_WIDTH, minWidth: COLLAPSED_WIDTH },
458
+ "aria-hidden": "true"
459
+ }
460
+ ),
461
+ isHovering && hasRailBackdrop && /* @__PURE__ */ jsxRuntime.jsx(
462
+ "div",
463
+ {
464
+ className: "fixed inset-0 z-[44] bg-black/40",
465
+ onClick: onBackdropClick,
466
+ "aria-hidden": "true",
467
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(backdropTestId, { testId: "sidebar-backdrop" })
468
+ }
469
+ ),
470
+ /* @__PURE__ */ jsxRuntime.jsx(
471
+ "nav",
472
+ {
473
+ ...common,
474
+ className: ui.cn(
475
+ navBase,
476
+ isHovering ? "!px-3 shadow-xl" : "!px-2",
477
+ "absolute left-0 top-0 z-[45]",
478
+ className
479
+ ),
480
+ style: {
481
+ width: isHovering ? EXPANDED_WIDTH : COLLAPSED_WIDTH,
482
+ minWidth: isHovering ? EXPANDED_WIDTH : COLLAPSED_WIDTH
483
+ },
484
+ onMouseEnter,
485
+ onMouseLeave,
486
+ children
487
+ }
488
+ )
489
+ ] });
490
+ }
491
+ return /* @__PURE__ */ jsxRuntime.jsx(SidebarContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsxRuntime.jsx(chunkSCFYPAG6_cjs.BlocksTooltipProvider, { children: body }) });
492
+ }
493
+ function SidebarHeader({ children, className, "data-testid": testId }) {
494
+ return /* @__PURE__ */ jsxRuntime.jsx(
495
+ "div",
496
+ {
497
+ "data-slot": "sidebar-header",
498
+ "data-testid": testId,
499
+ className: ui.cn("flex flex-shrink-0 flex-col gap-3 pb-3", className),
500
+ children
501
+ }
502
+ );
503
+ }
504
+ function SidebarNav({ items, children, className, "data-testid": testId }) {
505
+ const { expanded } = useSidebarContext();
506
+ return /* @__PURE__ */ jsxRuntime.jsxs(
507
+ "div",
508
+ {
509
+ "data-slot": "sidebar-nav",
510
+ "data-testid": testId,
511
+ className: ui.cn("flex flex-shrink-0 flex-col gap-0.5", !expanded && "items-center", className),
512
+ children: [
513
+ items?.map((item) => /* @__PURE__ */ jsxRuntime.jsx(SidebarNavItem, { ...item }, item.id)),
514
+ children
515
+ ]
516
+ }
517
+ );
518
+ }
519
+ function SidebarGroup({
520
+ label,
521
+ ariaLabel,
522
+ children,
523
+ className,
524
+ "data-testid": testId
525
+ }) {
526
+ const { expanded } = useSidebarContext();
527
+ return /* @__PURE__ */ jsxRuntime.jsxs(
528
+ "div",
529
+ {
530
+ role: "group",
531
+ "aria-label": ariaLabel ?? (typeof label === "string" ? label : void 0),
532
+ "data-slot": "sidebar-group",
533
+ "data-testid": testId,
534
+ className: ui.cn("flex flex-shrink-0 flex-col gap-0.5", !expanded && "items-center", className),
535
+ children: [
536
+ label && (expanded ? /* @__PURE__ */ jsxRuntime.jsx(SidebarGroupLabel, { children: label }) : /* @__PURE__ */ jsxRuntime.jsx(
537
+ "div",
538
+ {
539
+ role: "separator",
540
+ "data-slot": "sidebar-group-divider",
541
+ className: "my-1 h-px w-6 bg-border"
542
+ }
543
+ )),
544
+ children
545
+ ]
546
+ }
547
+ );
548
+ }
549
+ function SidebarGroupLabel({ children, className }) {
550
+ return /* @__PURE__ */ jsxRuntime.jsx(
551
+ "div",
552
+ {
553
+ "data-slot": "sidebar-group-label",
554
+ className: ui.cn(
555
+ "px-2 pb-0.5 pt-2 text-xs font-medium uppercase tracking-wide text-muted-foreground",
556
+ className
557
+ ),
558
+ children
559
+ }
560
+ );
561
+ }
562
+ function SidebarFooter({ children, className, "data-testid": testId }) {
563
+ const { expanded } = useSidebarContext();
564
+ return /* @__PURE__ */ jsxRuntime.jsx(
565
+ "div",
566
+ {
567
+ "data-slot": "sidebar-footer",
568
+ "data-testid": testId,
569
+ className: ui.cn(
570
+ "mt-auto flex flex-shrink-0 flex-col gap-2 pt-3 pb-3",
571
+ !expanded && "items-center",
572
+ className
573
+ ),
574
+ children
575
+ }
576
+ );
577
+ }
578
+ function SidebarNavItem({
579
+ label,
580
+ icon,
581
+ active = false,
582
+ onSelect,
583
+ href,
584
+ count,
585
+ countIcon,
586
+ testId,
587
+ disabled = false,
588
+ trailing,
589
+ className,
590
+ tooltip
591
+ }) {
592
+ const { expanded } = useSidebarContext();
593
+ const [isRowActive, setIsRowActive] = react.useState(false);
594
+ const tip = expanded ? void 0 : tooltip ?? label;
595
+ if (!expanded) {
596
+ const railButton = /* @__PURE__ */ jsxRuntime.jsx(
597
+ chunkOB5F4577_cjs.ActionLink,
598
+ {
599
+ href,
600
+ onSelect,
601
+ disabled,
602
+ "aria-label": label,
603
+ "aria-current": active ? "page" : void 0,
604
+ "data-slot": "sidebar-nav-item",
605
+ "data-testid": testId,
606
+ className: ui.cn(
607
+ "m-0 flex h-9 w-12 items-center justify-center rounded-md transition-colors pointer-coarse:h-11",
608
+ active ? "bg-accent text-accent-foreground" : "text-muted-foreground hover:bg-muted hover:text-foreground",
609
+ disabled && "pointer-events-none cursor-not-allowed opacity-30",
610
+ className
611
+ ),
612
+ children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-5 items-center justify-center", children: icon })
613
+ }
614
+ );
615
+ if (!tip) return railButton;
616
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { delayDuration: 50, children: [
617
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, children: railButton }),
618
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "right", sideOffset: 8, children: tip })
619
+ ] });
620
+ }
621
+ const rowClass = ui.cn(
622
+ "group flex h-9 w-full cursor-pointer items-center rounded-md px-3 text-sm transition-colors pointer-coarse:h-11",
623
+ active ? "bg-accent font-semibold text-accent-foreground" : "font-medium text-muted-foreground hover:bg-muted hover:text-foreground",
624
+ disabled && "pointer-events-none cursor-not-allowed opacity-30",
625
+ className
626
+ );
627
+ const countNode = count !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(
628
+ "span",
629
+ {
630
+ className: ui.cn(
631
+ "ml-auto inline-flex flex-shrink-0 items-center gap-0.5 pl-2 text-xs font-normal tabular-nums",
632
+ active ? "text-accent-foreground" : "text-muted-foreground"
633
+ ),
634
+ children: [
635
+ countIcon,
636
+ count
637
+ ]
638
+ }
639
+ );
640
+ if (href && !disabled && !trailing) {
641
+ return /* @__PURE__ */ jsxRuntime.jsxs(
642
+ chunkOB5F4577_cjs.ActionLink,
643
+ {
644
+ href,
645
+ onSelect,
646
+ "aria-current": active ? "page" : void 0,
647
+ "data-slot": "sidebar-nav-item",
648
+ "data-testid": testId,
649
+ className: rowClass,
650
+ children: [
651
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-5 flex-shrink-0 items-center justify-center", children: icon }),
652
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-3 min-w-0 truncate text-left", children: label }),
653
+ countNode
654
+ ]
655
+ }
656
+ );
657
+ }
658
+ if (href && !disabled) {
659
+ return /* @__PURE__ */ jsxRuntime.jsxs(
660
+ "div",
661
+ {
662
+ onMouseEnter: () => setIsRowActive(true),
663
+ onMouseLeave: () => setIsRowActive(false),
664
+ onFocusCapture: () => setIsRowActive(true),
665
+ onBlurCapture: (e) => {
666
+ if (!e.currentTarget.contains(e.relatedTarget)) setIsRowActive(false);
667
+ },
668
+ "data-slot": "sidebar-nav-item",
669
+ "data-testid": testId,
670
+ className: ui.cn(rowClass, "relative"),
671
+ children: [
672
+ /* @__PURE__ */ jsxRuntime.jsx(
673
+ chunkOB5F4577_cjs.ActionLink,
674
+ {
675
+ href,
676
+ onSelect,
677
+ "aria-label": label,
678
+ "aria-current": active ? "page" : void 0,
679
+ className: "absolute inset-0 rounded-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
680
+ }
681
+ ),
682
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "pointer-events-none flex min-w-0 flex-1 items-center", children: [
683
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-5 flex-shrink-0 items-center justify-center", children: icon }),
684
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-3 min-w-0 truncate text-left", children: label }),
685
+ countNode
686
+ ] }),
687
+ /* @__PURE__ */ jsxRuntime.jsx(SidebarRowHoverContext.Provider, { value: isRowActive, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "relative ml-2 flex flex-shrink-0 items-center", children: trailing }) })
688
+ ]
689
+ }
690
+ );
691
+ }
692
+ return /* @__PURE__ */ jsxRuntime.jsxs(
693
+ "div",
694
+ {
695
+ role: "button",
696
+ tabIndex: disabled ? -1 : 0,
697
+ "aria-current": active ? "page" : void 0,
698
+ onClick: disabled ? void 0 : onSelect,
699
+ onMouseEnter: () => setIsRowActive(true),
700
+ onMouseLeave: () => setIsRowActive(false),
701
+ onFocusCapture: () => setIsRowActive(true),
702
+ onBlurCapture: (e) => {
703
+ if (!e.currentTarget.contains(e.relatedTarget)) setIsRowActive(false);
704
+ },
705
+ onKeyDown: disabled ? void 0 : (e) => {
706
+ if (e.key === "Enter" || e.key === " ") {
707
+ e.preventDefault();
708
+ onSelect();
709
+ }
710
+ },
711
+ "data-slot": "sidebar-nav-item",
712
+ "data-testid": testId,
713
+ className: rowClass,
714
+ children: [
715
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex size-5 flex-shrink-0 items-center justify-center", children: icon }),
716
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-3 min-w-0 truncate text-left", children: label }),
717
+ countNode,
718
+ trailing && /* @__PURE__ */ jsxRuntime.jsx(SidebarRowHoverContext.Provider, { value: isRowActive, children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-2 flex flex-shrink-0 items-center", children: trailing }) })
719
+ ]
720
+ }
721
+ );
722
+ }
723
+ function SidebarPinToggle({
724
+ isPinned,
725
+ onToggle,
726
+ className,
727
+ "data-testid": testId
728
+ }) {
729
+ const { expanded, labels } = useSidebarContext();
730
+ const label = isPinned ? labels.hideSidebar : labels.showSidebar;
731
+ return /* @__PURE__ */ jsxRuntime.jsx(
732
+ "button",
733
+ {
734
+ type: "button",
735
+ onClick: onToggle,
736
+ title: label,
737
+ "aria-label": label,
738
+ "aria-pressed": isPinned,
739
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "sidebar-pin-button" }),
740
+ className: ui.cn(
741
+ "flex flex-shrink-0 items-center justify-center rounded-md text-muted-foreground transition-[opacity,colors] hover:bg-muted hover:text-foreground pointer-coarse:size-11",
742
+ "pointer-events-none opacity-0 group-hover/sidebar:pointer-events-auto group-hover/sidebar:opacity-100",
743
+ "group-focus-within/sidebar:pointer-events-auto group-focus-within/sidebar:opacity-100",
744
+ "pointer-coarse:pointer-events-auto pointer-coarse:opacity-100 focus-visible:pointer-events-auto focus-visible:opacity-100",
745
+ expanded ? "size-9" : "h-9 w-12",
746
+ className
747
+ ),
748
+ children: isPinned ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeftClose, { className: "size-5" }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.PanelLeftOpen, { className: "size-5" })
749
+ }
750
+ );
751
+ }
752
+ function SidebarDrawerHeader({
753
+ logo,
754
+ onClose,
755
+ closeLabel: closeLabelProp,
756
+ "data-testid": testId
757
+ }) {
758
+ const { labels } = useSidebarContext();
759
+ const closeLabel = closeLabelProp ?? labels.closeNavigationMenu;
760
+ return /* @__PURE__ */ jsxRuntime.jsxs(
761
+ "div",
762
+ {
763
+ "data-slot": "sidebar-drawer-header",
764
+ className: "flex flex-shrink-0 items-center justify-between pb-2",
765
+ children: [
766
+ logo,
767
+ /* @__PURE__ */ jsxRuntime.jsx(
768
+ "button",
769
+ {
770
+ type: "button",
771
+ onClick: onClose,
772
+ "aria-label": closeLabel,
773
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "mobile-nav-close" }),
774
+ className: "flex size-11 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
775
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-5" })
776
+ }
777
+ )
778
+ ]
779
+ }
780
+ );
781
+ }
782
+ var Sidebar = {
783
+ Root: SidebarRoot,
784
+ Header: SidebarHeader,
785
+ Nav: SidebarNav,
786
+ Group: SidebarGroup,
787
+ GroupLabel: SidebarGroupLabel,
788
+ NavItem: SidebarNavItem,
789
+ Footer: SidebarFooter,
790
+ PinToggle: SidebarPinToggle,
791
+ BadgeRow: SidebarBadgeRow,
792
+ DrawerHeader: SidebarDrawerHeader
793
+ };
794
+ var PULSE_STYLES = {
795
+ active: "animate-pulse-attention text-primary",
796
+ success: "animate-pulse-attention text-green-text",
797
+ // Steady (not animated) so a failure stays put and reads as a standing alert.
798
+ error: "text-red-text opacity-100"
799
+ };
800
+ function SidebarRowAction({
801
+ active = false,
802
+ onClick,
803
+ label,
804
+ pressed,
805
+ pulse = null,
806
+ "data-testid": testId,
807
+ children
808
+ }) {
809
+ const rowHovered = react.useContext(SidebarRowHoverContext);
810
+ const tone = active ? "text-accent-foreground hover:bg-background/60" : pulse ? `${PULSE_STYLES[pulse]} hover:bg-muted` : ui.cn(
811
+ "text-muted-foreground hover:bg-muted hover:text-foreground",
812
+ rowHovered ? "opacity-100" : "opacity-70"
813
+ );
814
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkSCFYPAG6_cjs.BlocksTooltipProvider, { children: /* @__PURE__ */ jsxRuntime.jsxs(ui.Tooltip, { children: [
815
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipTrigger, { asChild: true, onFocusCapture: (e) => e.stopPropagation(), children: /* @__PURE__ */ jsxRuntime.jsx(
816
+ "button",
817
+ {
818
+ type: "button",
819
+ onClick: (e) => {
820
+ e.stopPropagation();
821
+ onClick?.();
822
+ },
823
+ "aria-label": label,
824
+ "aria-pressed": pressed,
825
+ "data-slot": "sidebar-row-action",
826
+ "data-testid": testId,
827
+ className: ui.cn("rounded-md p-1 transition-colors pointer-coarse:p-2.5", tone),
828
+ children
829
+ }
830
+ ) }),
831
+ /* @__PURE__ */ jsxRuntime.jsx(ui.TooltipContent, { side: "right", children: label })
832
+ ] }) });
833
+ }
834
+ var DEFAULT_WORKSPACE_KIND_LABELS = {
835
+ common: "Common",
836
+ shared: "Shared",
837
+ private: "Private"
838
+ };
839
+ function workspaceKindMeta(kind, labels) {
840
+ const l = { ...DEFAULT_WORKSPACE_KIND_LABELS, ...labels };
841
+ if (kind === "common")
842
+ return { Icon: lucideReact.Globe, label: l.common, fill: "bg-muted text-muted-foreground" };
843
+ if (kind === "shared")
844
+ return { Icon: lucideReact.Users, label: l.shared, fill: "bg-accent text-accent-foreground" };
845
+ return { Icon: lucideReact.Lock, label: l.private, fill: "bg-primary text-primary-foreground" };
846
+ }
847
+ function workspaceKindColor(kind) {
848
+ if (kind === "common") return "var(--color-muted-foreground)";
849
+ if (kind === "shared") return "var(--color-secondary)";
850
+ return "var(--color-primary)";
851
+ }
852
+ function WorkspaceIdentity({
853
+ workspace,
854
+ expanded,
855
+ isActive = false,
856
+ labels,
857
+ testIds
858
+ }) {
859
+ const kind = workspaceKindMeta(workspace.kind, labels);
860
+ const badge = /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative flex flex-shrink-0", title: kind.label, children: [
861
+ /* @__PURE__ */ jsxRuntime.jsx(
862
+ "span",
863
+ {
864
+ "aria-hidden": "true",
865
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.initial, { testId: "sidebar-workspace-card-initial" }),
866
+ className: ui.cn(
867
+ "flex size-7 flex-shrink-0 items-center justify-center rounded-md text-sm font-semibold leading-none",
868
+ kind.fill
869
+ ),
870
+ children: workspace.name.charAt(0).toUpperCase()
871
+ }
872
+ ),
873
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -bottom-1 -right-1 flex size-3.5 items-center justify-center rounded-full bg-background ring-1 ring-border", children: /* @__PURE__ */ jsxRuntime.jsx(
874
+ kind.Icon,
875
+ {
876
+ "aria-label": kind.label,
877
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.type, { testId: "sidebar-workspace-card-type" }),
878
+ className: "size-2.5 text-muted-foreground"
879
+ }
880
+ ) })
881
+ ] });
882
+ if (!expanded)
883
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-shrink-0 items-center justify-center", children: badge });
884
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
885
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-shrink-0 items-center justify-center", children: badge }),
886
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-2.5 flex min-w-0 flex-1 flex-col text-left", children: [
887
+ /* @__PURE__ */ jsxRuntime.jsx(
888
+ "span",
889
+ {
890
+ className: ui.cn(
891
+ "min-w-0 truncate text-left text-sm font-semibold capitalize leading-tight transition-colors duration-100",
892
+ isActive ? "text-accent-foreground" : "text-foreground"
893
+ ),
894
+ children: workspace.name
895
+ }
896
+ ),
897
+ !workspace.projectName && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mt-0.5 truncate text-xs text-muted-foreground", children: kind.label }),
898
+ workspace.projectName && /* @__PURE__ */ jsxRuntime.jsx(
899
+ "span",
900
+ {
901
+ className: "mt-0.5 flex min-w-0",
902
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.projectName, {
903
+ testId: "sidebar-workspace-card-project-name"
904
+ }),
905
+ children: workspace.projectLine ?? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-xs text-muted-foreground", children: workspace.projectName })
906
+ }
907
+ )
908
+ ] })
909
+ ] });
910
+ }
911
+ var DEFAULT_WORKSPACE_SWITCHER_LABELS = {
912
+ ...DEFAULT_WORKSPACE_KIND_LABELS,
913
+ plural: "workspaces",
914
+ singular: "workspace",
915
+ switchWorkspace: (name, plural) => `${name} \u2014 switch ${plural}`,
916
+ allWorkspaces: (plural) => `All ${plural}`,
917
+ newWorkspace: (singular) => `New ${singular}`,
918
+ recentWorkspaces: (plural) => `Recent ${plural}`
919
+ };
920
+ function WorkspaceSwitcher({
921
+ workspace,
922
+ recent = [],
923
+ compact = false,
924
+ variant = "sidebar",
925
+ onSwitch,
926
+ onGoToList,
927
+ onNewWorkspace,
928
+ labels,
929
+ className,
930
+ testId,
931
+ testIds,
932
+ identityTestIds
933
+ }) {
934
+ const l = { ...DEFAULT_WORKSPACE_SWITCHER_LABELS, ...labels };
935
+ const plural = l.plural.toLowerCase();
936
+ const singular = l.singular.charAt(0).toUpperCase() + l.singular.slice(1);
937
+ return /* @__PURE__ */ jsxRuntime.jsxs(ui.DropdownMenu, { children: [
938
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(
939
+ "button",
940
+ {
941
+ type: "button",
942
+ "data-slot": "workspace-switcher",
943
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "workspace-switcher-trigger" }),
944
+ "aria-label": l.switchWorkspace(workspace.name, plural),
945
+ className: ui.cn(
946
+ "group flex min-w-0 items-center rounded-md transition-colors duration-100 hover:bg-muted focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring",
947
+ variant === "appbar" ? "h-11 max-w-full gap-1 px-2" : compact ? "h-12 w-12 justify-center" : "h-12 w-full px-2",
948
+ className
949
+ ),
950
+ children: [
951
+ variant === "appbar" ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 truncate text-base font-semibold text-foreground", children: workspace.name }) : /* @__PURE__ */ jsxRuntime.jsx(
952
+ WorkspaceIdentity,
953
+ {
954
+ workspace,
955
+ expanded: !compact,
956
+ labels: l,
957
+ testIds: identityTestIds
958
+ }
959
+ ),
960
+ !(compact && variant === "sidebar") && /* @__PURE__ */ jsxRuntime.jsx(
961
+ lucideReact.ChevronDown,
962
+ {
963
+ "aria-hidden": "true",
964
+ className: "ml-auto size-4 flex-shrink-0 text-muted-foreground transition-transform duration-150 group-data-[state=open]:rotate-180"
965
+ }
966
+ )
967
+ ]
968
+ }
969
+ ) }),
970
+ /* @__PURE__ */ jsxRuntime.jsxs(
971
+ ui.DropdownMenuContent,
972
+ {
973
+ align: "start",
974
+ className: "w-64 max-w-[calc(100vw-1.5rem)]",
975
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.menu, { testId: "workspace-switcher-menu" }),
976
+ children: [
977
+ /* @__PURE__ */ jsxRuntime.jsxs(
978
+ ui.DropdownMenuItem,
979
+ {
980
+ onClick: onGoToList,
981
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.all, { testId: "workspace-switcher-all" }),
982
+ className: "gap-2",
983
+ children: [
984
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LayoutGrid, { className: "size-4 flex-shrink-0 text-muted-foreground" }),
985
+ l.allWorkspaces(plural)
986
+ ]
987
+ }
988
+ ),
989
+ /* @__PURE__ */ jsxRuntime.jsxs(
990
+ ui.DropdownMenuItem,
991
+ {
992
+ onClick: onNewWorkspace,
993
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.new, { testId: "workspace-switcher-new" }),
994
+ className: "gap-2",
995
+ children: [
996
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Plus, { className: "size-4 flex-shrink-0 text-muted-foreground" }),
997
+ l.newWorkspace(singular)
998
+ ]
999
+ }
1000
+ ),
1001
+ recent.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1002
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuSeparator, {}),
1003
+ /* @__PURE__ */ jsxRuntime.jsx(ui.DropdownMenuLabel, { className: "text-xs font-normal text-muted-foreground", children: l.recentWorkspaces(plural) }),
1004
+ recent.map((w) => {
1005
+ const kind = workspaceKindMeta(w.kind, l);
1006
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1007
+ ui.DropdownMenuItem,
1008
+ {
1009
+ onClick: () => onSwitch(w),
1010
+ "data-testid": chunkMHVNT4J3_cjs.prefixedTestId(testIds?.switchItem, w.id, {
1011
+ testId: `workspace-switch-${w.id}`
1012
+ }),
1013
+ className: "gap-2",
1014
+ children: [
1015
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "relative flex flex-shrink-0", title: kind.label, children: [
1016
+ /* @__PURE__ */ jsxRuntime.jsx(
1017
+ "span",
1018
+ {
1019
+ "aria-hidden": "true",
1020
+ className: ui.cn(
1021
+ "flex size-6 flex-shrink-0 items-center justify-center rounded text-xs font-semibold leading-none",
1022
+ kind.fill
1023
+ ),
1024
+ children: w.name.charAt(0).toUpperCase()
1025
+ }
1026
+ ),
1027
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -bottom-1 -right-1 flex size-3 items-center justify-center rounded-full bg-background ring-1 ring-border", children: /* @__PURE__ */ jsxRuntime.jsx(
1028
+ kind.Icon,
1029
+ {
1030
+ "aria-label": kind.label,
1031
+ "data-testid": chunkMHVNT4J3_cjs.prefixedTestId(testIds?.type, w.id, {
1032
+ testId: `workspace-type-${w.id}`
1033
+ }),
1034
+ className: "size-2 text-muted-foreground"
1035
+ }
1036
+ ) })
1037
+ ] }),
1038
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate capitalize", children: w.name }),
1039
+ w.lastSeen && /* @__PURE__ */ jsxRuntime.jsx(
1040
+ "span",
1041
+ {
1042
+ className: "ml-2 flex-shrink-0 text-xs tabular-nums text-muted-foreground",
1043
+ "data-testid": chunkMHVNT4J3_cjs.prefixedTestId(testIds?.lastSeen, w.id, {
1044
+ testId: `workspace-last-seen-${w.id}`
1045
+ }),
1046
+ children: w.lastSeen
1047
+ }
1048
+ )
1049
+ ]
1050
+ },
1051
+ w.id
1052
+ );
1053
+ })
1054
+ ] })
1055
+ ]
1056
+ }
1057
+ )
1058
+ ] });
1059
+ }
1060
+ var DEFAULT_ASK_FIELD_LABELS = {
1061
+ placeholder: "Ask or search\u2026",
1062
+ inputLabel: "Ask AI or search your documents",
1063
+ search: "Search",
1064
+ askAi: "Ask AI",
1065
+ askOrSearch: "Ask AI or search",
1066
+ closeSearch: "Close search"
1067
+ };
1068
+ function AskField({
1069
+ value,
1070
+ onValueChange,
1071
+ onAsk,
1072
+ onSearch,
1073
+ onInputKeyDown,
1074
+ menu,
1075
+ inputRef,
1076
+ inputProps,
1077
+ placeholder,
1078
+ labels,
1079
+ autoFocus = false,
1080
+ className,
1081
+ "data-testid": testIdProp
1082
+ }) {
1083
+ const testId = chunkMHVNT4J3_cjs.testIdOr(testIdProp, { testId: "workspace-ask-bar" });
1084
+ const l = { ...DEFAULT_ASK_FIELD_LABELS, ...labels };
1085
+ const isEmpty = !value.trim();
1086
+ const submit = (handler) => {
1087
+ const text = value.trim();
1088
+ if (text) handler(text);
1089
+ };
1090
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ui.cn("relative", className), "data-slot": "ask-field", "data-testid": testId, children: [
1091
+ menu && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "absolute inset-x-0 top-9 z-30", children: menu }),
1092
+ /* @__PURE__ */ jsxRuntime.jsxs(
1093
+ "div",
1094
+ {
1095
+ role: "search",
1096
+ className: "flex h-9 items-center gap-0.5 rounded-md border border-border bg-background pl-2.5 pr-0.5 transition-colors focus-within:ring-1 focus-within:ring-ring pointer-coarse:h-11",
1097
+ children: [
1098
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { "aria-hidden": "true", className: "size-4 shrink-0 text-ai-ink" }),
1099
+ /* @__PURE__ */ jsxRuntime.jsx(
1100
+ "input",
1101
+ {
1102
+ ...inputProps,
1103
+ ref: inputRef,
1104
+ type: "text",
1105
+ value,
1106
+ onChange: (e) => onValueChange(e.target.value),
1107
+ onKeyDown: (e) => {
1108
+ onInputKeyDown?.(e);
1109
+ if (e.defaultPrevented) return;
1110
+ if (e.key === "Enter" && !e.nativeEvent.isComposing) {
1111
+ e.preventDefault();
1112
+ submit(onAsk);
1113
+ }
1114
+ },
1115
+ placeholder: placeholder ?? l.placeholder,
1116
+ "aria-label": l.inputLabel,
1117
+ autoFocus,
1118
+ className: "ml-1.5 h-8 min-w-0 flex-1 bg-transparent pointer-coarse:h-11 text-sm text-foreground outline-none placeholder:text-muted-foreground",
1119
+ "data-testid": `${testId}-input`
1120
+ }
1121
+ ),
1122
+ /* @__PURE__ */ jsxRuntime.jsx(
1123
+ ui.Button,
1124
+ {
1125
+ type: "button",
1126
+ variant: "ghost",
1127
+ size: "icon",
1128
+ disabled: isEmpty,
1129
+ onClick: () => submit(onSearch),
1130
+ title: l.search,
1131
+ "aria-label": l.search,
1132
+ className: "size-7 shrink-0 text-muted-foreground hover:text-foreground pointer-coarse:size-10",
1133
+ "data-testid": `${testId}-search`,
1134
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-4" })
1135
+ }
1136
+ ),
1137
+ /* @__PURE__ */ jsxRuntime.jsx(
1138
+ ui.Button,
1139
+ {
1140
+ type: "button",
1141
+ variant: "ghost",
1142
+ size: "icon",
1143
+ disabled: isEmpty,
1144
+ onClick: () => submit(onAsk),
1145
+ title: l.askAi,
1146
+ "aria-label": l.askAi,
1147
+ className: "!inline-flex size-7 shrink-0 text-ai-ink hover:bg-ai-soft hover:text-ai-ink pointer-coarse:size-10",
1148
+ "data-testid": `${testId}-submit`,
1149
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowUp, { className: "size-4" })
1150
+ }
1151
+ )
1152
+ ]
1153
+ }
1154
+ )
1155
+ ] });
1156
+ }
1157
+ function AskTrigger({
1158
+ onClick,
1159
+ variant = "rail",
1160
+ onSearch,
1161
+ labels,
1162
+ "data-testid": testId,
1163
+ searchTestId,
1164
+ askTestId
1165
+ }) {
1166
+ const text = labels?.askOrSearch ?? DEFAULT_ASK_FIELD_LABELS.askOrSearch;
1167
+ if (variant === "split") {
1168
+ const searchText = labels?.search ?? DEFAULT_ASK_FIELD_LABELS.search;
1169
+ const askText = labels?.askAi ?? DEFAULT_ASK_FIELD_LABELS.askAi;
1170
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1171
+ "div",
1172
+ {
1173
+ role: "group",
1174
+ "aria-label": text,
1175
+ "data-slot": "ask-trigger",
1176
+ "data-variant": "split",
1177
+ "data-testid": testId,
1178
+ className: "inline-flex items-center rounded-md border border-border bg-background",
1179
+ children: [
1180
+ /* @__PURE__ */ jsxRuntime.jsx(
1181
+ "button",
1182
+ {
1183
+ type: "button",
1184
+ onClick: onSearch,
1185
+ title: searchText,
1186
+ "aria-label": searchText,
1187
+ "data-testid": searchTestId ?? (testId ? `${testId}-search` : void 0),
1188
+ className: "flex h-9 w-9 items-center justify-center rounded-l-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground pointer-coarse:h-11 pointer-coarse:w-11",
1189
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Search, { className: "size-4" })
1190
+ }
1191
+ ),
1192
+ /* @__PURE__ */ jsxRuntime.jsx(
1193
+ "button",
1194
+ {
1195
+ type: "button",
1196
+ onClick,
1197
+ title: askText,
1198
+ "aria-label": askText,
1199
+ "data-testid": askTestId ?? (testId ? `${testId}-ask` : void 0),
1200
+ className: "flex h-9 w-9 items-center justify-center rounded-r-md border-l border-border text-ai-ink transition-colors hover:bg-ai-soft pointer-coarse:h-11 pointer-coarse:w-11",
1201
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: "size-4" })
1202
+ }
1203
+ )
1204
+ ]
1205
+ }
1206
+ );
1207
+ }
1208
+ return /* @__PURE__ */ jsxRuntime.jsx(
1209
+ "button",
1210
+ {
1211
+ type: "button",
1212
+ onClick,
1213
+ title: text,
1214
+ "aria-label": text,
1215
+ "data-slot": "ask-trigger",
1216
+ "data-testid": testId,
1217
+ className: ui.cn(
1218
+ "flex items-center justify-center rounded-md text-ai-ink transition-colors hover:bg-ai-soft",
1219
+ variant === "rail" ? "h-9 w-12 border border-border bg-background pointer-coarse:h-11" : "size-11"
1220
+ ),
1221
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Sparkles, { className: variant === "rail" ? "size-4" : "size-5" })
1222
+ }
1223
+ );
1224
+ }
1225
+ function AskRow({
1226
+ children,
1227
+ onClose,
1228
+ labels,
1229
+ "data-testid": testId,
1230
+ collapseTestId
1231
+ }) {
1232
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1233
+ "div",
1234
+ {
1235
+ className: "flex h-14 flex-shrink-0 items-center gap-1 bg-background px-3 pt-safe",
1236
+ "data-slot": "ask-row",
1237
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "workspace-ask-bar-expanded" }),
1238
+ onKeyDown: (e) => {
1239
+ if (e.key === "Escape" && !e.defaultPrevented) onClose();
1240
+ },
1241
+ children: [
1242
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1", children }),
1243
+ /* @__PURE__ */ jsxRuntime.jsx(
1244
+ "button",
1245
+ {
1246
+ type: "button",
1247
+ onClick: onClose,
1248
+ "aria-label": labels?.closeSearch ?? DEFAULT_ASK_FIELD_LABELS.closeSearch,
1249
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(collapseTestId, { testId: "workspace-ask-bar-collapse" }),
1250
+ className: "flex size-11 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
1251
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-5" })
1252
+ }
1253
+ )
1254
+ ]
1255
+ }
1256
+ );
1257
+ }
1258
+ var DEFAULT_MOBILE_BARS_LABELS = {
1259
+ openNavigationMenu: "Open navigation menu",
1260
+ workspaceSections: "Workspace sections"
1261
+ };
1262
+ function MobileAppBar({
1263
+ showMenu = true,
1264
+ onMenu,
1265
+ title,
1266
+ logo,
1267
+ actions,
1268
+ menuLabel,
1269
+ labels,
1270
+ className,
1271
+ "data-testid": testId,
1272
+ menuTestId
1273
+ }) {
1274
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1275
+ "div",
1276
+ {
1277
+ "data-slot": "mobile-app-bar",
1278
+ "data-testid": testId,
1279
+ className: ui.cn(
1280
+ "sm:hidden flex h-14 flex-shrink-0 items-center gap-1 bg-background pl-1 pr-2 pt-safe",
1281
+ className
1282
+ ),
1283
+ children: [
1284
+ showMenu && /* @__PURE__ */ jsxRuntime.jsx(
1285
+ "button",
1286
+ {
1287
+ type: "button",
1288
+ onClick: onMenu,
1289
+ className: "flex size-11 shrink-0 items-center justify-center rounded-md text-foreground transition-colors hover:bg-muted",
1290
+ "aria-label": menuLabel ?? labels?.openNavigationMenu ?? DEFAULT_MOBILE_BARS_LABELS.openNavigationMenu,
1291
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(menuTestId, { testId: "mobile-nav-toggle" }),
1292
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Menu, { className: "size-5" })
1293
+ }
1294
+ ),
1295
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: ui.cn("flex min-w-0 flex-1 items-center", !showMenu && "pl-3"), children: title ?? logo }),
1296
+ actions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex shrink-0 items-center gap-0.5", children: actions })
1297
+ ]
1298
+ }
1299
+ );
1300
+ }
1301
+ function MobileTabBar({
1302
+ items,
1303
+ label,
1304
+ labels,
1305
+ testIdPrefix,
1306
+ className,
1307
+ "data-testid": testId
1308
+ }) {
1309
+ return /* @__PURE__ */ jsxRuntime.jsx(
1310
+ "nav",
1311
+ {
1312
+ "aria-label": label ?? labels?.workspaceSections ?? DEFAULT_MOBILE_BARS_LABELS.workspaceSections,
1313
+ "data-slot": "mobile-tab-bar",
1314
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "mobile-tab-bar" }),
1315
+ className: ui.cn(
1316
+ "flex h-16 flex-shrink-0 items-stretch bg-sidebar px-2 pb-safe sm:hidden",
1317
+ className
1318
+ ),
1319
+ children: items.map((item) => /* @__PURE__ */ jsxRuntime.jsxs(
1320
+ chunkOB5F4577_cjs.ActionLink,
1321
+ {
1322
+ href: item.href,
1323
+ onSelect: item.onSelect,
1324
+ disabled: item.disabled,
1325
+ "aria-current": item.active ? "page" : void 0,
1326
+ className: ui.cn(
1327
+ "flex min-h-12 min-w-0 flex-1 flex-col items-center justify-center gap-0.5 rounded-md text-xs transition-colors",
1328
+ item.active ? "font-semibold text-primary" : "font-medium text-muted-foreground hover:text-foreground"
1329
+ ),
1330
+ "data-testid": chunkMHVNT4J3_cjs.prefixedTestId(testIdPrefix, item.id, { testId: `mobile-tab-${item.id}` }),
1331
+ children: [
1332
+ item.icon,
1333
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "max-w-full truncate px-1", children: item.label })
1334
+ ]
1335
+ },
1336
+ item.id
1337
+ ))
1338
+ }
1339
+ );
1340
+ }
1341
+ function ActionCluster({
1342
+ layout = "bar",
1343
+ status,
1344
+ bell,
1345
+ contacts,
1346
+ account,
1347
+ "data-testid": testId = "sidebar-actions"
1348
+ }) {
1349
+ const stop = (e) => e.stopPropagation();
1350
+ if (layout === "sidebar" || layout === "rail" || layout === "drawer") {
1351
+ const rail = layout === "rail";
1352
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1353
+ "div",
1354
+ {
1355
+ className: rail ? "flex flex-col items-center gap-0.5" : "flex flex-col gap-0.5",
1356
+ onClick: stop,
1357
+ "data-slot": "action-cluster",
1358
+ "data-layout": layout,
1359
+ "data-testid": testId,
1360
+ children: [
1361
+ bell,
1362
+ contacts,
1363
+ account && layout !== "drawer" && /* @__PURE__ */ jsxRuntime.jsx("div", { className: rail ? "mt-1" : "mt-1 min-w-0", children: account })
1364
+ ]
1365
+ }
1366
+ );
1367
+ }
1368
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-1", onClick: stop, "data-slot": "action-cluster", children: [
1369
+ status,
1370
+ bell,
1371
+ contacts,
1372
+ account
1373
+ ] });
1374
+ }
1375
+ function ToolButton({
1376
+ onClick,
1377
+ label,
1378
+ active = false,
1379
+ "data-testid": testId,
1380
+ children
1381
+ }) {
1382
+ return /* @__PURE__ */ jsxRuntime.jsx(
1383
+ "button",
1384
+ {
1385
+ type: "button",
1386
+ onClick,
1387
+ title: label,
1388
+ "aria-label": label,
1389
+ "data-slot": "tool-button",
1390
+ "data-testid": testId,
1391
+ className: ui.cn(
1392
+ "relative flex size-9 shrink-0 items-center justify-center rounded-md transition-colors hover:bg-accent hover:text-accent-foreground pointer-coarse:size-11",
1393
+ active ? "bg-accent text-accent-foreground" : "text-muted-foreground"
1394
+ ),
1395
+ children
1396
+ }
1397
+ );
1398
+ }
1399
+ var TONES = {
1400
+ progress: { className: "bg-muted text-foreground", Icon: lucideReact.Loader2, spin: true },
1401
+ success: { className: "bg-green-bg text-green-text", Icon: lucideReact.CheckCircle2 },
1402
+ error: { className: "bg-red-bg text-red-text", Icon: lucideReact.TriangleAlert }
1403
+ };
1404
+ function StatusRow({
1405
+ tone,
1406
+ label,
1407
+ onClick,
1408
+ compact = false,
1409
+ icon,
1410
+ "data-testid": testId
1411
+ }) {
1412
+ const { className, Icon, spin } = TONES[tone];
1413
+ return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "status", "data-slot": "status-row", className: ui.cn(compact && "flex justify-center"), children: /* @__PURE__ */ jsxRuntime.jsxs(
1414
+ "button",
1415
+ {
1416
+ type: "button",
1417
+ onClick,
1418
+ "aria-label": label,
1419
+ title: label,
1420
+ "data-testid": testId,
1421
+ "data-tone": tone,
1422
+ className: ui.cn(
1423
+ "flex items-center gap-2 rounded-md text-sm font-medium transition-colors hover:brightness-95 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:min-h-11",
1424
+ compact ? "size-9 justify-center pointer-coarse:size-11" : "w-full px-2.5 py-1.5",
1425
+ className
1426
+ ),
1427
+ children: [
1428
+ icon ?? /* @__PURE__ */ jsxRuntime.jsx(
1429
+ Icon,
1430
+ {
1431
+ className: ui.cn("size-4 shrink-0", spin && "animate-spin motion-reduce:animate-none")
1432
+ }
1433
+ ),
1434
+ !compact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate text-left", children: label })
1435
+ ]
1436
+ }
1437
+ ) });
1438
+ }
1439
+ var DEFAULT_OFFLINE_PILL_LABELS = {
1440
+ reconnect: "Reconnect"
1441
+ };
1442
+ var TONES2 = {
1443
+ offline: { className: "bg-yellow-bg text-yellow-text", Icon: lucideReact.WifiOff },
1444
+ failed: { className: "bg-red-bg text-red-text", Icon: lucideReact.TriangleAlert },
1445
+ syncing: { className: "bg-blue-bg text-blue-text", Icon: lucideReact.RefreshCw }
1446
+ };
1447
+ function OfflinePill({
1448
+ tone,
1449
+ label,
1450
+ compact = false,
1451
+ onOpen,
1452
+ onReconnect,
1453
+ labels,
1454
+ "data-testid": testId,
1455
+ reconnectTestId
1456
+ }) {
1457
+ const { className, Icon } = TONES2[tone];
1458
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1459
+ "div",
1460
+ {
1461
+ className: ui.cn("flex items-center gap-1", compact && "justify-center"),
1462
+ "data-slot": "offline-pill",
1463
+ children: [
1464
+ /* @__PURE__ */ jsxRuntime.jsxs(
1465
+ "button",
1466
+ {
1467
+ type: "button",
1468
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "offline-sync-status" }),
1469
+ "aria-label": label,
1470
+ title: label,
1471
+ onClick: onOpen,
1472
+ className: ui.cn(
1473
+ "flex min-w-0 flex-1 items-center gap-2 rounded-md px-2.5 py-1.5 text-sm font-medium transition-colors hover:brightness-95 pointer-coarse:min-h-11",
1474
+ compact && "flex-none justify-center",
1475
+ className
1476
+ ),
1477
+ children: [
1478
+ /* @__PURE__ */ jsxRuntime.jsx(Icon, { className: ui.cn("size-4 shrink-0", tone === "syncing" && "animate-spin") }),
1479
+ !compact && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: label })
1480
+ ]
1481
+ }
1482
+ ),
1483
+ !compact && onReconnect && // Forced visible (context true): there is no row to hover.
1484
+ /* @__PURE__ */ jsxRuntime.jsx(SidebarRowHoverContext.Provider, { value: true, children: /* @__PURE__ */ jsxRuntime.jsx(
1485
+ SidebarRowAction,
1486
+ {
1487
+ label: labels?.reconnect ?? DEFAULT_OFFLINE_PILL_LABELS.reconnect,
1488
+ onClick: onReconnect,
1489
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(reconnectTestId, { testId: "offline-reconnect-button" }),
1490
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.RefreshCw, { className: "size-5" })
1491
+ }
1492
+ ) })
1493
+ ]
1494
+ }
1495
+ );
1496
+ }
1497
+ var DEFAULT_REMOTE_CONTROL_PILL_LABELS = {
1498
+ turnOffRemoteControl: "Turn off remote control"
1499
+ };
1500
+ function RemoteControlPill({
1501
+ isActive,
1502
+ label,
1503
+ onDisable,
1504
+ disableLabel: disableLabelProp,
1505
+ labels,
1506
+ "data-testid": testId,
1507
+ disableTestId
1508
+ }) {
1509
+ const disableLabel = disableLabelProp ?? labels?.turnOffRemoteControl ?? DEFAULT_REMOTE_CONTROL_PILL_LABELS.turnOffRemoteControl;
1510
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1511
+ "div",
1512
+ {
1513
+ "data-slot": "remote-control-pill",
1514
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "remote-control-indicator" }),
1515
+ className: ui.cn(
1516
+ "flex min-w-0 max-w-full items-center gap-1.5 rounded-full py-1 pl-2.5 pr-1 text-xs font-medium",
1517
+ isActive ? "bg-accent text-accent-foreground" : "bg-muted text-muted-foreground"
1518
+ ),
1519
+ children: [
1520
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.MousePointerClick, { className: ui.cn("size-3.5 shrink-0", isActive && "animate-pulse") }),
1521
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 max-w-[16rem] truncate", children: label }),
1522
+ /* @__PURE__ */ jsxRuntime.jsx(
1523
+ "button",
1524
+ {
1525
+ type: "button",
1526
+ onClick: onDisable,
1527
+ title: disableLabel,
1528
+ "aria-label": disableLabel,
1529
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(disableTestId, { testId: "remote-control-indicator-disable" }),
1530
+ className: "flex size-5 shrink-0 items-center justify-center rounded-full transition-colors hover:bg-foreground/10 hover:text-foreground pointer-coarse:size-8",
1531
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-3.5" })
1532
+ }
1533
+ )
1534
+ ]
1535
+ }
1536
+ );
1537
+ }
1538
+ var DEFAULT_TIP_CARD_LABELS = {
1539
+ showMe: "Show me",
1540
+ previousTip: "Previous tip",
1541
+ nextTip: "Next tip",
1542
+ editTip: "Edit tip",
1543
+ tip: "Tip",
1544
+ hideTips: "Hide tips",
1545
+ position: (index, count) => `${index} of ${count}`
1546
+ };
1547
+ var ICON_BUTTON = "flex size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring pointer-coarse:size-11";
1548
+ function TipCard({
1549
+ message,
1550
+ index = 0,
1551
+ count = 1,
1552
+ onPrev,
1553
+ onNext,
1554
+ ctaLabel,
1555
+ onCta,
1556
+ onDismiss,
1557
+ onEdit,
1558
+ onHoverChange,
1559
+ labels,
1560
+ className,
1561
+ testId,
1562
+ testIds
1563
+ }) {
1564
+ const l = { ...DEFAULT_TIP_CARD_LABELS, ...labels };
1565
+ const hasMany = count > 1;
1566
+ return /* @__PURE__ */ jsxRuntime.jsxs(
1567
+ "section",
1568
+ {
1569
+ "data-slot": "tip-card",
1570
+ "aria-label": l.tip,
1571
+ className: ui.cn("min-w-0 rounded-lg bg-muted p-3 text-sm", className),
1572
+ onMouseEnter: () => onHoverChange?.(true),
1573
+ onMouseLeave: () => onHoverChange?.(false),
1574
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testId, { testId: "tip-row" }),
1575
+ children: [
1576
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "-my-1 flex items-center gap-1.5 text-xs font-medium text-muted-foreground", children: [
1577
+ /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Lightbulb, { className: "size-4 shrink-0 text-primary", "aria-hidden": true }),
1578
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: l.tip }),
1579
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "-mr-1.5 ml-auto flex items-center", children: [
1580
+ onEdit && /* @__PURE__ */ jsxRuntime.jsx(
1581
+ "button",
1582
+ {
1583
+ type: "button",
1584
+ onClick: onEdit,
1585
+ "aria-label": l.editTip,
1586
+ title: l.editTip,
1587
+ className: ui.cn(ICON_BUTTON, "text-red-text hover:bg-red-bg hover:text-red-text"),
1588
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.edit, { testId: "tip-edit" }),
1589
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Pencil, { className: "size-3.5" })
1590
+ }
1591
+ ),
1592
+ onDismiss && /* @__PURE__ */ jsxRuntime.jsx(
1593
+ "button",
1594
+ {
1595
+ type: "button",
1596
+ onClick: onDismiss,
1597
+ "aria-label": l.hideTips,
1598
+ title: l.hideTips,
1599
+ className: ICON_BUTTON,
1600
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.dismiss, { testId: "tip-dismiss" }),
1601
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-4" })
1602
+ }
1603
+ )
1604
+ ] })
1605
+ ] }),
1606
+ /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-foreground", children: message }),
1607
+ (onCta || hasMany) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 flex items-center justify-between gap-2", children: [
1608
+ onCta ? /* @__PURE__ */ jsxRuntime.jsx(
1609
+ ui.Button,
1610
+ {
1611
+ type: "button",
1612
+ variant: "outline",
1613
+ size: "sm",
1614
+ onClick: onCta,
1615
+ className: "font-medium text-primary",
1616
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.cta, { testId: "page-header-info-cta" }),
1617
+ children: ctaLabel ?? l.showMe
1618
+ }
1619
+ ) : /* @__PURE__ */ jsxRuntime.jsx("span", {}),
1620
+ hasMany && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "-mr-1.5 flex items-center text-xs text-muted-foreground", children: [
1621
+ /* @__PURE__ */ jsxRuntime.jsx(
1622
+ "button",
1623
+ {
1624
+ type: "button",
1625
+ onClick: onPrev,
1626
+ "aria-label": l.previousTip,
1627
+ title: l.previousTip,
1628
+ className: ICON_BUTTON,
1629
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.prev, { testId: "tip-prev" }),
1630
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronLeft, { className: "size-4" })
1631
+ }
1632
+ ),
1633
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-10 text-center tabular-nums", "aria-live": "polite", children: l.position(index + 1, count) }),
1634
+ /* @__PURE__ */ jsxRuntime.jsx(
1635
+ "button",
1636
+ {
1637
+ type: "button",
1638
+ onClick: onNext,
1639
+ "aria-label": l.nextTip,
1640
+ title: l.nextTip,
1641
+ className: ICON_BUTTON,
1642
+ "data-testid": chunkMHVNT4J3_cjs.testIdOr(testIds?.next, { testId: "tip-next" }),
1643
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronRight, { className: "size-4" })
1644
+ }
1645
+ )
1646
+ ] })
1647
+ ] })
1648
+ ]
1649
+ }
1650
+ );
1651
+ }
1652
+ function resolveSidebarLayout(input) {
1653
+ const { isSmallScreen, isDrawerRequested, isCollapsed, isPinned, isHovering } = input;
1654
+ const isPeeking = input.isPeeking ?? false;
1655
+ const canPin = isPinned && !isSmallScreen && !input.isNarrow;
1656
+ const drawerOpen = isSmallScreen && isDrawerRequested;
1657
+ const effectiveCollapsed = isCollapsed || isSmallScreen && !drawerOpen;
1658
+ const hovering = isHovering && !isSmallScreen;
1659
+ let mode;
1660
+ if (drawerOpen) mode = "drawer";
1661
+ else if (effectiveCollapsed) mode = "collapsed";
1662
+ else if (canPin) mode = "pinned";
1663
+ else mode = "rail";
1664
+ const expanded = drawerOpen || canPin || !isCollapsed && isHovering || isCollapsed && isPeeking;
1665
+ return { mode, expanded, hidden: isSmallScreen && !drawerOpen, hovering };
1666
+ }
1667
+ function useSidebarSettle(expanded, settleMs = 300) {
1668
+ const [labelsExpanded, setLabelsExpanded] = react.useState(expanded);
1669
+ const [tipsVisible, setTipsVisible] = react.useState(expanded);
1670
+ const labelsTimer = react.useRef(null);
1671
+ const tipsTimer = react.useRef(null);
1672
+ react.useEffect(() => {
1673
+ if (labelsTimer.current) clearTimeout(labelsTimer.current);
1674
+ if (expanded) setLabelsExpanded(true);
1675
+ else labelsTimer.current = setTimeout(() => setLabelsExpanded(false), settleMs);
1676
+ return () => {
1677
+ if (labelsTimer.current) clearTimeout(labelsTimer.current);
1678
+ };
1679
+ }, [expanded, settleMs]);
1680
+ react.useEffect(() => {
1681
+ if (tipsTimer.current) clearTimeout(tipsTimer.current);
1682
+ if (expanded) tipsTimer.current = setTimeout(() => setTipsVisible(true), settleMs);
1683
+ else setTipsVisible(false);
1684
+ return () => {
1685
+ if (tipsTimer.current) clearTimeout(tipsTimer.current);
1686
+ };
1687
+ }, [expanded, settleMs]);
1688
+ return { labelsExpanded, tipsVisible };
1689
+ }
1690
+ var VARIANT_TONE = {
1691
+ info: "bg-blue-bg text-primary border-blue-border",
1692
+ warning: "bg-yellow-bg text-yellow-text border-yellow-border",
1693
+ success: "bg-green-bg text-green-text border-green-border",
1694
+ hint: "bg-blue-bg text-foreground border-blue-border"
1695
+ };
1696
+ function InfoBar({
1697
+ message,
1698
+ variant = "info",
1699
+ hideIcon,
1700
+ rightSlot,
1701
+ cta,
1702
+ onDismiss,
1703
+ dismissLabel = "Dismiss",
1704
+ className
1705
+ }) {
1706
+ const VariantIcon = variant === "hint" ? lucideReact.Lightbulb : lucideReact.Info;
1707
+ return /* @__PURE__ */ jsxRuntime.jsx(
1708
+ "div",
1709
+ {
1710
+ className: ui.cn("relative z-10 flex w-full items-center pt-1", className),
1711
+ "data-slot": "info-bar",
1712
+ children: /* @__PURE__ */ jsxRuntime.jsxs(
1713
+ "div",
1714
+ {
1715
+ className: ui.cn(
1716
+ "flex w-full flex-wrap items-center gap-3 rounded-md border px-3 py-[7px]",
1717
+ VARIANT_TONE[variant]
1718
+ ),
1719
+ "data-testid": "page-header-info-box",
1720
+ children: [
1721
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-w-0 flex-1 items-center gap-3", children: [
1722
+ !hideIcon && /* @__PURE__ */ jsxRuntime.jsx(VariantIcon, { className: "hidden size-4 shrink-0 sm:block" }),
1723
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-w-0 flex-1 text-sm", children: message })
1724
+ ] }),
1725
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex w-full items-center gap-2 sm:ml-auto sm:w-auto", children: [
1726
+ rightSlot,
1727
+ cta && /* @__PURE__ */ jsxRuntime.jsxs(
1728
+ ui.Button,
1729
+ {
1730
+ variant: "outline",
1731
+ size: "sm",
1732
+ onClick: cta.onClick,
1733
+ className: "h-8 flex-1 shrink-0 sm:flex-initial pointer-coarse:h-11",
1734
+ "data-testid": "page-header-info-cta",
1735
+ children: [
1736
+ cta.icon && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "mr-1", children: cta.icon }),
1737
+ cta.label
1738
+ ]
1739
+ }
1740
+ ),
1741
+ onDismiss && /* @__PURE__ */ jsxRuntime.jsx(
1742
+ ui.Button,
1743
+ {
1744
+ variant: "ghost",
1745
+ size: "sm",
1746
+ onClick: onDismiss,
1747
+ "aria-label": dismissLabel,
1748
+ className: "size-8 shrink-0 p-0 hover:bg-foreground/5 pointer-coarse:size-11",
1749
+ "data-testid": "page-header-info-dismiss",
1750
+ children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.X, { className: "size-4" })
1751
+ }
1752
+ )
1753
+ ] })
1754
+ ]
1755
+ }
1756
+ )
1757
+ }
1758
+ );
1759
+ }
1760
+
1761
+ Object.defineProperty(exports, "UserMenu", {
1762
+ enumerable: true,
1763
+ get: function () { return ui.UserMenu; }
1764
+ });
1765
+ Object.defineProperty(exports, "NotificationBell", {
1766
+ enumerable: true,
1767
+ get: function () { return shell.NotificationBell; }
1768
+ });
1769
+ exports.ActionCluster = ActionCluster;
1770
+ exports.AskField = AskField;
1771
+ exports.AskRow = AskRow;
1772
+ exports.AskTrigger = AskTrigger;
1773
+ exports.DEFAULT_ASK_FIELD_LABELS = DEFAULT_ASK_FIELD_LABELS;
1774
+ exports.DEFAULT_MOBILE_BARS_LABELS = DEFAULT_MOBILE_BARS_LABELS;
1775
+ exports.DEFAULT_OFFLINE_PILL_LABELS = DEFAULT_OFFLINE_PILL_LABELS;
1776
+ exports.DEFAULT_OVERLAY_ZONE_ID = DEFAULT_OVERLAY_ZONE_ID;
1777
+ exports.DEFAULT_PAGE_CONTAINER_PADDING = DEFAULT_PAGE_CONTAINER_PADDING;
1778
+ exports.DEFAULT_REMOTE_CONTROL_PILL_LABELS = DEFAULT_REMOTE_CONTROL_PILL_LABELS;
1779
+ exports.DEFAULT_SIDEBAR_LABELS = DEFAULT_SIDEBAR_LABELS;
1780
+ exports.DEFAULT_SIDEBAR_TOGGLE_BUTTON_LABELS = DEFAULT_SIDEBAR_TOGGLE_BUTTON_LABELS;
1781
+ exports.DEFAULT_TIP_CARD_LABELS = DEFAULT_TIP_CARD_LABELS;
1782
+ exports.DEFAULT_WORKSPACE_KIND_LABELS = DEFAULT_WORKSPACE_KIND_LABELS;
1783
+ exports.DEFAULT_WORKSPACE_SWITCHER_LABELS = DEFAULT_WORKSPACE_SWITCHER_LABELS;
1784
+ exports.InfoBar = InfoBar;
1785
+ exports.MobileAppBar = MobileAppBar;
1786
+ exports.MobileTabBar = MobileTabBar;
1787
+ exports.OfflinePill = OfflinePill;
1788
+ exports.PageContainer = PageContainer;
1789
+ exports.RemoteControlPill = RemoteControlPill;
1790
+ exports.Shell = Shell;
1791
+ exports.Sidebar = Sidebar;
1792
+ exports.SidebarBadgeRow = SidebarBadgeRow;
1793
+ exports.SidebarRowAction = SidebarRowAction;
1794
+ exports.SidebarRowHoverContext = SidebarRowHoverContext;
1795
+ exports.SidebarToggleButton = SidebarToggleButton;
1796
+ exports.StatusRow = StatusRow;
1797
+ exports.TipCard = TipCard;
1798
+ exports.ToolButton = ToolButton;
1799
+ exports.WorkspaceIdentity = WorkspaceIdentity;
1800
+ exports.WorkspaceSwitcher = WorkspaceSwitcher;
1801
+ exports.resolveSidebarLayout = resolveSidebarLayout;
1802
+ exports.useDrawerBehavior = useDrawerBehavior;
1803
+ exports.useOverlayZoneId = useOverlayZoneId;
1804
+ exports.useSidebarContext = useSidebarContext;
1805
+ exports.useSidebarSettle = useSidebarSettle;
1806
+ exports.workspaceKindColor = workspaceKindColor;
1807
+ exports.workspaceKindMeta = workspaceKindMeta;
1808
+ //# sourceMappingURL=chunk-7G3JNSJB.cjs.map
1809
+ //# sourceMappingURL=chunk-7G3JNSJB.cjs.map