@opengeni/react 6.5.2-canary.41607687019001 → 6.7.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 (1154) hide show
  1. package/dist/app/app-state.d.ts +4 -0
  2. package/dist/app/app-state.js +19 -14
  3. package/dist/app/components/Composer.js +25 -23
  4. package/dist/app/components/agent/agent-capability-picker.js +10 -8
  5. package/dist/app/components/artifacts/artifact-browse-controls.js +4 -4
  6. package/dist/app/components/artifacts/artifact-library.js +21 -19
  7. package/dist/app/components/artifacts/artifact-page-chrome.js +3 -3
  8. package/dist/app/components/artifacts/artifact-viewer.js +23 -22
  9. package/dist/app/components/artifacts/artifact-viewer.js.map +1 -1
  10. package/dist/app/components/artifacts/chat-interactive-block.js +12 -12
  11. package/dist/app/components/artifacts/copy-artifact-link.js +7 -5
  12. package/dist/app/components/artifacts/file-reach-dialog.js +11 -9
  13. package/dist/app/components/artifacts/inline-chat-image.js +18 -18
  14. package/dist/app/components/artifacts/retained-file-preview.js +24 -23
  15. package/dist/app/components/artifacts/retained-text-preview.js +3 -3
  16. package/dist/app/components/artifacts/site-audience.js +6 -5
  17. package/dist/app/components/artifacts/site-conversations.js +16 -14
  18. package/dist/app/components/artifacts/site-data.js +18 -16
  19. package/dist/app/components/artifacts/site-public-link.js +3 -2
  20. package/dist/app/components/artifacts/site-publishing-page.js +39 -37
  21. package/dist/app/components/artifacts/site-publishing.js +34 -32
  22. package/dist/app/components/artifacts/site-settings.js +38 -36
  23. package/dist/app/components/artifacts/site-version-menu.js +8 -7
  24. package/dist/app/components/billing-class-mark.js +3 -3
  25. package/dist/app/components/bots/bot-launch-strip.js +17 -17
  26. package/dist/app/components/bots/bot-template-dialog.js +30 -28
  27. package/dist/app/components/bots/bot-template-shortcuts.js +19 -19
  28. package/dist/app/components/bots/bot-templates-page.js +38 -36
  29. package/dist/app/components/bots/bot-templates-page.js.map +1 -1
  30. package/dist/app/components/capabilities/capability-detail-sheet.js +13 -11
  31. package/dist/app/components/capabilities/capability-logo-source.js +13 -13
  32. package/dist/app/components/capabilities/capability-logo.js +4 -3
  33. package/dist/app/components/capabilities/connector-tool-permissions.js +8 -6
  34. package/dist/app/components/capabilities/native-connect-setup.js +14 -14
  35. package/dist/app/components/capabilities/own-logins-shared-heads-up.js +7 -6
  36. package/dist/app/components/capabilities/perform-capability-action.js +7 -6
  37. package/dist/app/components/capabilities/prepared-mcp-setup-card.js +17 -17
  38. package/dist/app/components/capabilities/session-capability-card.js +72 -70
  39. package/dist/app/components/capabilities/session-capability-card.js.map +1 -1
  40. package/dist/app/components/capabilities/session-chrome-card.js +28 -26
  41. package/dist/app/components/capabilities/session-connection-accounts.js +4 -3
  42. package/dist/app/components/capabilities/session-custom-mcp-card.js +20 -19
  43. package/dist/app/components/capabilities/session-github-card.js +22 -20
  44. package/dist/app/components/capabilities/session-machine-card.js +27 -25
  45. package/dist/app/components/capabilities/session-personal-github-card.js +16 -16
  46. package/dist/app/components/capabilities/session-plugin-card.js +10 -9
  47. package/dist/app/components/capabilities/use-capabilities-catalog.js +4 -3
  48. package/dist/app/components/capabilities/use-connection-accounts.js +5 -4
  49. package/dist/app/components/command-menu/chat-status.js +15 -13
  50. package/dist/app/components/command-menu/chat-switcher.js +35 -33
  51. package/dist/app/components/command-menu/chat-switcher.js.map +1 -1
  52. package/dist/app/components/command-menu/command-menu.js +53 -50
  53. package/dist/app/components/command-menu/command-menu.js.map +1 -1
  54. package/dist/app/components/command-menu/shortcut-sheet.js +18 -16
  55. package/dist/app/components/command-menu/shortcut-sheet.js.map +1 -1
  56. package/dist/app/components/common.js +4 -3
  57. package/dist/app/components/composer-capabilities-menu-body.js +4 -4
  58. package/dist/app/components/composer-mobile-plus-panel.js +8 -8
  59. package/dist/app/components/composer-mobile-plus.js +1 -1
  60. package/dist/app/components/credit-required-gate.js +3 -3
  61. package/dist/app/components/credit-required-prompt.js +10 -8
  62. package/dist/app/components/credit-required-prompt.js.map +1 -1
  63. package/dist/app/components/credits/checkout-credits-celebration.js +3 -2
  64. package/dist/app/components/credits/checkout-return.js +3 -2
  65. package/dist/app/components/credits/checkout-return.js.map +1 -1
  66. package/dist/app/components/credits/coupon-redeem.js +5 -4
  67. package/dist/app/components/credits/credit-refusal-notice.js +7 -5
  68. package/dist/app/components/cross-slot-deep-link-recovery.js +5 -4
  69. package/dist/app/components/desktop/app-shots.js +13 -11
  70. package/dist/app/components/desktop/computer-use.js +6 -4
  71. package/dist/app/components/desktop/this-computer.js +9 -7
  72. package/dist/app/components/feedback.js +5 -4
  73. package/dist/app/components/follow-up-repository-menu-body.js +8 -6
  74. package/dist/app/components/follow-up-repository-menu-body.js.map +1 -1
  75. package/dist/app/components/follow-up-repository-picker.js +1 -1
  76. package/dist/app/components/github-app-connect-launcher.js +5 -4
  77. package/dist/app/components/in-app-help-link.js +3 -3
  78. package/dist/app/components/knowledge/agent-learning-settings.js +3 -2
  79. package/dist/app/components/knowledge/agent-learning-settings.js.map +1 -1
  80. package/dist/app/components/machines/connect-machine-dialog.js +18 -16
  81. package/dist/app/components/manual-repository-editor.js +3 -2
  82. package/dist/app/components/markdown.js +6 -6
  83. package/dist/app/components/models/models-ui.js +12 -10
  84. package/dist/app/components/my-things.js +12 -10
  85. package/dist/app/components/my-things.js.map +1 -1
  86. package/dist/app/components/new-session-starters.js +3 -3
  87. package/dist/app/components/own-where-it-works.js +9 -7
  88. package/dist/app/components/personal-resource-attachment-surface.js +4 -4
  89. package/dist/app/components/pickers.js +5 -5
  90. package/dist/app/components/rail/channel-create-dialog.js +7 -5
  91. package/dist/app/components/rail/project-glyph.js +17 -17
  92. package/dist/app/components/rail/project-profile.js +31 -29
  93. package/dist/app/components/rail/rail-context.js +3 -3
  94. package/dist/app/components/rail/rail-sections.js +68 -66
  95. package/dist/app/components/rail/session-header.js +59 -57
  96. package/dist/app/components/rail/session-list.js +66 -64
  97. package/dist/app/components/rail/session-row-content.js +4 -4
  98. package/dist/app/components/rail/session-row-hover-details.js +14 -12
  99. package/dist/app/components/rail/session-shell.js +90 -88
  100. package/dist/app/components/rail/site-session-group-heading.js +8 -8
  101. package/dist/app/components/repository-picker.js +8 -6
  102. package/dist/app/components/secrets/session-secrets-panel.js +4 -3
  103. package/dist/app/components/secrets/vault-model.js +3 -2
  104. package/dist/app/components/session/agent-configuration-panel.js +25 -23
  105. package/dist/app/components/session/agent-configuration-panel.js.map +1 -1
  106. package/dist/app/components/session/artifact-link-boundary.js +3 -3
  107. package/dist/app/components/session/artifact-session-page.js +11 -9
  108. package/dist/app/components/session/banners.js +8 -8
  109. package/dist/app/components/session/codex-usage-notice.js +5 -3
  110. package/dist/app/components/session/console-new-conversation.js +42 -40
  111. package/dist/app/components/session/context-text-reader.js +3 -2
  112. package/dist/app/components/session/descendant-requests.js +39 -37
  113. package/dist/app/components/session/descendant-requests.js.map +1 -1
  114. package/dist/app/components/session/editable-artifacts-workspace.js +36 -34
  115. package/dist/app/components/session/editable-artifacts-workspace.js.map +1 -1
  116. package/dist/app/components/session/failed-session-banner.js +13 -11
  117. package/dist/app/components/session/failed-session-banner.js.map +1 -1
  118. package/dist/app/components/session/failure-recovery-boundary.js +3 -3
  119. package/dist/app/components/session/human-input-delegation-record.js +2 -2
  120. package/dist/app/components/session/human-input.js +33 -31
  121. package/dist/app/components/session/inspector.js +57 -55
  122. package/dist/app/components/session/inspector.js.map +1 -1
  123. package/dist/app/components/session/message-actions.js +5 -4
  124. package/dist/app/components/session/message-actions.js.map +1 -1
  125. package/dist/app/components/session/message-resource-attachments.js +12 -11
  126. package/dist/app/components/session/message-resource-attachments.js.map +1 -1
  127. package/dist/app/components/session/model-context-inspector.js +6 -4
  128. package/dist/app/components/session/model-recovery-notice.js +3 -3
  129. package/dist/app/components/session/new-session-settings-menu.js +11 -9
  130. package/dist/app/components/session/new-session-setup-strip.js +18 -18
  131. package/dist/app/components/session/sandbox-recovery-actions.js +3 -3
  132. package/dist/app/components/session/sandbox-switcher.js +10 -9
  133. package/dist/app/components/session/sandbox-workspace.js +47 -46
  134. package/dist/app/components/session/search-markdown-highlight.js +7 -7
  135. package/dist/app/components/session/search-results-view.js +8 -8
  136. package/dist/app/components/session/session-admin-access.js +13 -11
  137. package/dist/app/components/session/session-admission-notice.js +7 -5
  138. package/dist/app/components/session/session-avatar-picker.js +22 -20
  139. package/dist/app/components/session/session-avatar.js +16 -16
  140. package/dist/app/components/session/session-machine-access-notice.js +7 -5
  141. package/dist/app/components/session/session-profile-dialog.js +29 -27
  142. package/dist/app/components/session/session-profile-editor.js +30 -28
  143. package/dist/app/components/session/session-retention.js +10 -8
  144. package/dist/app/components/session/session-search-dialog.js +10 -10
  145. package/dist/app/components/session/session-skill-reviews.js +2 -1
  146. package/dist/app/components/session/session-skill-reviews.js.map +1 -1
  147. package/dist/app/components/session/session-tenancy-control.js +13 -11
  148. package/dist/app/components/session/session-tenancy-control.js.map +1 -1
  149. package/dist/app/components/session/session-unattended-setting.js +7 -5
  150. package/dist/app/components/session/session-usage-limit-section.js +11 -9
  151. package/dist/app/components/session/share-chat-dialog.js +9 -7
  152. package/dist/app/components/session/site-origin-link.js +3 -3
  153. package/dist/app/components/session/subagents.js +8 -8
  154. package/dist/app/components/session/subscription-account-indicator.js +6 -6
  155. package/dist/app/components/session-connectors-menu-body.js +4 -3
  156. package/dist/app/components/session-connectors-menu-body.js.map +1 -1
  157. package/dist/app/components/settings/row-select.js +7 -5
  158. package/dist/app/components/toaster.js +3 -2
  159. package/dist/app/components/transcription-settings.js +11 -9
  160. package/dist/app/components/ui/destructive-confirm.js +11 -9
  161. package/dist/app/components/usage/usage-entry.js +5 -5
  162. package/dist/app/components/window-bar.js +16 -14
  163. package/dist/app/components/workspace-composer-plus.js +22 -21
  164. package/dist/app/components/workspace-reach.js +6 -4
  165. package/dist/app/components/workspace-tenant-boundary.js +5 -4
  166. package/dist/app/embed/memory-navigation.js +3 -3
  167. package/dist/app/embed/session-app.js +211 -209
  168. package/dist/app/lib/actions/actions-provider.js +15 -13
  169. package/dist/app/lib/agent-capabilities.js +3 -3
  170. package/dist/app/lib/app-surfaces.js +7 -6
  171. package/dist/app/lib/archive-session.d.ts +9 -4
  172. package/dist/app/lib/archive-session.js +4 -2
  173. package/dist/app/lib/bot-templates.js +3 -2
  174. package/dist/app/lib/capabilities.js +3 -2
  175. package/dist/app/lib/codex-usage-query.js +2 -2
  176. package/dist/app/lib/composer-connectors.js +17 -16
  177. package/dist/app/lib/console-site.js +2 -2
  178. package/dist/app/lib/console-text.js +2 -2
  179. package/dist/app/lib/events.js +9 -9
  180. package/dist/app/lib/failed-session-copy.js +3 -3
  181. package/dist/app/lib/inbox.js +4 -2
  182. package/dist/app/lib/model-access-onboarding.js +3 -3
  183. package/dist/app/lib/move-chat-to-machine.js +3 -3
  184. package/dist/app/lib/navigation.js +2 -2
  185. package/dist/app/lib/session-branch-cache.js +6 -6
  186. package/dist/app/lib/session-create.js +4 -4
  187. package/dist/app/lib/session-group-pagination.js +6 -6
  188. package/dist/app/lib/session-hover-facts.js +13 -11
  189. package/dist/app/lib/session-model.js +2 -2
  190. package/dist/app/lib/session-rail.js +3 -3
  191. package/dist/app/lib/session-rename.js +3 -3
  192. package/dist/app/lib/session-restart-operation-controller.js +4 -3
  193. package/dist/app/lib/session-tenancy.js +3 -2
  194. package/dist/app/lib/session-usage-limit.js +3 -2
  195. package/dist/app/lib/sessions-group.js +5 -5
  196. package/dist/app/lib/site-publishing.js +3 -2
  197. package/dist/app/lib/site-tool-consent-dialog.js +9 -7
  198. package/dist/app/lib/site-tool-consent-dialog.js.map +1 -1
  199. package/dist/app/lib/site-tool-consent.js +1 -1
  200. package/dist/app/lib/subscription-plans.js +3 -2
  201. package/dist/app/lib/toast.js +2 -1
  202. package/dist/app/lib/turn-failure-analytics.js +4 -4
  203. package/dist/app/lib/use-duplicate-site.js +6 -5
  204. package/dist/app/lib/use-follow-up-repositories.js +6 -5
  205. package/dist/app/lib/use-workspace-integrations.js +4 -3
  206. package/dist/app/lib/use-workspace-machines.js +4 -4
  207. package/dist/app/lib/use-workspace-model-catalog.js +5 -4
  208. package/dist/app/lib/use-workspace-rigs.js +2 -2
  209. package/dist/app/lib/workspace-navigation-preference.js +4 -4
  210. package/dist/app/lib/workspace-scope-context.js +3 -3
  211. package/dist/app/routes/artifacts.js +67 -66
  212. package/dist/app/routes/artifacts.js.map +1 -1
  213. package/dist/app/routes/retained-artifact.js +42 -40
  214. package/dist/app/routes/retained-artifact.js.map +1 -1
  215. package/dist/app/routes/session-unavailable.js +8 -7
  216. package/dist/app/routes/session.js +119 -117
  217. package/dist/app/routes/sessions-index-hydration.js +5 -5
  218. package/dist/app/routes/sessions-index.js +104 -102
  219. package/dist/app/routes/site-view.js +67 -65
  220. package/dist/app/routes/site-view.js.map +1 -1
  221. package/dist/artifacts-document.js +4 -4
  222. package/dist/artifacts-presentation.js +4 -4
  223. package/dist/artifacts-spreadsheet.js +4 -4
  224. package/dist/artifacts.js +10 -10
  225. package/dist/automations.js +17 -15
  226. package/dist/automations.js.map +1 -1
  227. package/dist/browser-viewer-TC27OCIP.js +23 -0
  228. package/dist/chat-interactive-block-RWPQBHVS.js +18 -0
  229. package/dist/chunk-2BDT3UZQ.js +229 -0
  230. package/dist/chunk-2CLNIEK4.js +373 -0
  231. package/dist/chunk-2FSBSCZJ.js +451 -0
  232. package/dist/chunk-2I7HDP53.js +199 -0
  233. package/dist/chunk-2INLDVK3.js +15 -0
  234. package/dist/chunk-2KALVELR.js +126 -0
  235. package/dist/chunk-2M3J7ZWQ.js +418 -0
  236. package/dist/chunk-2OP6WLGV.js +708 -0
  237. package/dist/chunk-2RG7NIAS.js +2936 -0
  238. package/dist/chunk-2STUPWEL.js +135 -0
  239. package/dist/chunk-2YUOVM3G.js +271 -0
  240. package/dist/chunk-2Z3NQNTM.js +3670 -0
  241. package/dist/chunk-3CPWWGNK.js +920 -0
  242. package/dist/chunk-3ED2U6XE.js +37 -0
  243. package/dist/chunk-3GZA4BUW.js +216 -0
  244. package/dist/chunk-3IK6UYO6.js +1022 -0
  245. package/dist/chunk-3PZ7JZI2.js +431 -0
  246. package/dist/chunk-4DVJ6ONS.js +50 -0
  247. package/dist/chunk-4DVNUCRR.js +2386 -0
  248. package/dist/chunk-4DVNUCRR.js.map +1 -0
  249. package/dist/chunk-4E3ZJRTZ.js +41 -0
  250. package/dist/chunk-4SAWSRAA.js +141 -0
  251. package/dist/chunk-53AGXXZM.js +307 -0
  252. package/dist/chunk-54YW6SZZ.js +818 -0
  253. package/dist/chunk-57AZS3IE.js +2317 -0
  254. package/dist/chunk-5CPEEAFD.js +143 -0
  255. package/dist/chunk-5EWSRZ2Y.js +340 -0
  256. package/dist/chunk-5IE76VCY.js +387 -0
  257. package/dist/chunk-5NWEKLDZ.js +170 -0
  258. package/dist/chunk-5O2FCCHZ.js +198 -0
  259. package/dist/chunk-5QAY6K77.js +399 -0
  260. package/dist/chunk-5YKW2K6I.js +625 -0
  261. package/dist/chunk-5YKW2K6I.js.map +1 -0
  262. package/dist/chunk-6BCXNDEI.js +4116 -0
  263. package/dist/chunk-6BCXNDEI.js.map +1 -0
  264. package/dist/chunk-6DK6Z4UN.js +2599 -0
  265. package/dist/chunk-6DVCC7QS.js +702 -0
  266. package/dist/chunk-6JHU2UBS.js +2058 -0
  267. package/dist/chunk-6PZ7OBYU.js +490 -0
  268. package/dist/chunk-6WD2INST.js +539 -0
  269. package/dist/chunk-6WD2INST.js.map +1 -0
  270. package/dist/chunk-6WGRDRMA.js +163 -0
  271. package/dist/chunk-77WAKEAH.js +186 -0
  272. package/dist/chunk-7T2ZE3VT.js +5558 -0
  273. package/dist/chunk-7T2ZE3VT.js.map +1 -0
  274. package/dist/chunk-7TDO3CUM.js +393 -0
  275. package/dist/chunk-7TIX2UAR.js +247 -0
  276. package/dist/chunk-7V5REBCP.js +148 -0
  277. package/dist/chunk-7VMZGLYI.js +339 -0
  278. package/dist/chunk-7W37NS3I.js +236 -0
  279. package/dist/chunk-7X6SDK2C.js +111 -0
  280. package/dist/chunk-7ZNUHRP5.js +95 -0
  281. package/dist/chunk-A36PZALD.js +84 -0
  282. package/dist/chunk-AUI6VA63.js +107 -0
  283. package/dist/chunk-AW2MQB37.js +24 -0
  284. package/dist/chunk-AWKES45Y.js +198 -0
  285. package/dist/chunk-AXHZYXUV.js +132 -0
  286. package/dist/chunk-BHNSJVBC.js +129 -0
  287. package/dist/chunk-BJEJFISW.js +50 -0
  288. package/dist/chunk-BJFH6JI5.js +422 -0
  289. package/dist/chunk-BMICEQZQ.js +960 -0
  290. package/dist/chunk-BTLBYBLU.js +29 -0
  291. package/dist/chunk-BXBDYNRP.js +89 -0
  292. package/dist/chunk-C372BFOV.js +357 -0
  293. package/dist/chunk-C43KRXGA.js +234 -0
  294. package/dist/chunk-C43KRXGA.js.map +1 -0
  295. package/dist/chunk-CMKGILJK.js +4824 -0
  296. package/dist/chunk-CRAOSVHC.js +50 -0
  297. package/dist/chunk-CRU35QQH.js +281 -0
  298. package/dist/chunk-CUIWCGMA.js +172 -0
  299. package/dist/chunk-D5TWNFFE.js +38 -0
  300. package/dist/chunk-DF5EAHDN.js +4461 -0
  301. package/dist/chunk-DJAXC5OK.js +56 -0
  302. package/dist/chunk-DXBYWSL5.js +3550 -0
  303. package/dist/chunk-DXR5PDFP.js +84 -0
  304. package/dist/chunk-DZWARC4M.js +267 -0
  305. package/dist/chunk-DZXEDSQI.js +106 -0
  306. package/dist/chunk-E7XERZWC.js +48 -0
  307. package/dist/chunk-ECJBYNLJ.js +79 -0
  308. package/dist/chunk-EDI6SJ2N.js +43 -0
  309. package/dist/chunk-EWSOC6WF.js +114 -0
  310. package/dist/chunk-F2OPHAUN.js +103 -0
  311. package/dist/chunk-F4ISQGGM.js +81 -0
  312. package/dist/chunk-FO4LYKJL.js +197 -0
  313. package/dist/chunk-FPXASDG5.js +73 -0
  314. package/dist/chunk-FSOQDUCG.js +117 -0
  315. package/dist/chunk-FSOQDUCG.js.map +1 -0
  316. package/dist/chunk-FVXBNBHO.js +157 -0
  317. package/dist/chunk-FYWT2O76.js +34 -0
  318. package/dist/chunk-FYWT2O76.js.map +1 -0
  319. package/dist/chunk-FZC5N55X.js +981 -0
  320. package/dist/chunk-GAVYGBFI.js +99 -0
  321. package/dist/chunk-GFIMOUDT.js +846 -0
  322. package/dist/chunk-GFIMOUDT.js.map +1 -0
  323. package/dist/chunk-GKVJIDHF.js +33 -0
  324. package/dist/chunk-GVN5SZLX.js +212 -0
  325. package/dist/chunk-H3T7IWNA.js +134 -0
  326. package/dist/chunk-HAX4LCR5.js +261 -0
  327. package/dist/chunk-HC4JFZVU.js +121 -0
  328. package/dist/chunk-HEFPPMBQ.js +581 -0
  329. package/dist/chunk-HGKTHF2U.js +1356 -0
  330. package/dist/chunk-HGKTHF2U.js.map +1 -0
  331. package/dist/chunk-HNLR7Q4Z.js +83 -0
  332. package/dist/chunk-HSOXMJOT.js +12 -0
  333. package/dist/chunk-I4MRDSUF.js +281 -0
  334. package/dist/chunk-I4QEJ62Y.js +202 -0
  335. package/dist/chunk-I5B5L6Q4.js +56 -0
  336. package/dist/chunk-I5QZJODL.js +264 -0
  337. package/dist/chunk-I7ITSXSJ.js +603 -0
  338. package/dist/chunk-I7XIZRFD.js +390 -0
  339. package/dist/chunk-IDANQPRH.js +82 -0
  340. package/dist/chunk-IFB3WJ36.js +212 -0
  341. package/dist/chunk-IHTAKKTK.js +264 -0
  342. package/dist/chunk-IKXNLWAL.js +205 -0
  343. package/dist/chunk-IKXNLWAL.js.map +1 -0
  344. package/dist/chunk-ILDXWY37.js +173 -0
  345. package/dist/chunk-IMDQUHBJ.js +570 -0
  346. package/dist/chunk-IMZCQBOT.js +119 -0
  347. package/dist/chunk-IXPTECSC.js +403 -0
  348. package/dist/chunk-J255A3N5.js +71 -0
  349. package/dist/chunk-J5F5HPPW.js +141 -0
  350. package/dist/chunk-JDTGRRNU.js +5045 -0
  351. package/dist/chunk-JDTGRRNU.js.map +1 -0
  352. package/dist/chunk-JEA3QDX7.js +2469 -0
  353. package/dist/chunk-JEUPAVYY.js +156 -0
  354. package/dist/chunk-JKHKLL5W.js +194 -0
  355. package/dist/chunk-JQL7ZH6C.js +650 -0
  356. package/dist/chunk-JWB44UGJ.js +57 -0
  357. package/dist/chunk-JZ4NLCAP.js +333 -0
  358. package/dist/chunk-K2A5PXQ5.js +412 -0
  359. package/dist/chunk-K56XV3C3.js +623 -0
  360. package/dist/chunk-K6GAXXVA.js +23 -0
  361. package/dist/chunk-KCBMFSMS.js +199 -0
  362. package/dist/chunk-KF2FV3ZJ.js +268 -0
  363. package/dist/chunk-KJD65EJP.js +278 -0
  364. package/dist/chunk-KLEUWIMZ.js +386 -0
  365. package/dist/chunk-KODELWYT.js +309 -0
  366. package/dist/chunk-KRDR5RJD.js +83 -0
  367. package/dist/chunk-KUDGXAF7.js +914 -0
  368. package/dist/chunk-KY2R73CG.js +171 -0
  369. package/dist/chunk-KY2R73CG.js.map +1 -0
  370. package/dist/chunk-KYS77RPN.js +85 -0
  371. package/dist/chunk-L7YTNTIK.js +368 -0
  372. package/dist/chunk-LHPNABDH.js +686 -0
  373. package/dist/chunk-MFROMEKA.js +401 -0
  374. package/dist/chunk-MIHN76LX.js +2656 -0
  375. package/dist/chunk-MIYFS2XN.js +42 -0
  376. package/dist/chunk-MJUCFQMS.js +65 -0
  377. package/dist/chunk-MM4FNWI4.js +3064 -0
  378. package/dist/chunk-MNZG4OHU.js +790 -0
  379. package/dist/chunk-MVW6HNPI.js +250 -0
  380. package/dist/chunk-MVW6HNPI.js.map +1 -0
  381. package/dist/chunk-N6AACDUW.js +200 -0
  382. package/dist/chunk-NC55IFN3.js +781 -0
  383. package/dist/chunk-NC7PVOEK.js +98 -0
  384. package/dist/chunk-NCYMNCJO.js +70 -0
  385. package/dist/chunk-ND2BXV3P.js +259 -0
  386. package/dist/chunk-NDBTFUO6.js +272 -0
  387. package/dist/chunk-NDQJZ7HF.js +206 -0
  388. package/dist/chunk-NGJJJPZZ.js +162 -0
  389. package/dist/chunk-NJTSNNE7.js +251 -0
  390. package/dist/chunk-NPGISCU6.js +4159 -0
  391. package/dist/chunk-NPGISCU6.js.map +1 -0
  392. package/dist/chunk-NRTE7DNV.js +1270 -0
  393. package/dist/chunk-NULUNM7H.js +290 -0
  394. package/dist/chunk-NUNZS36W.js +227 -0
  395. package/dist/chunk-NW53H5RW.js +2424 -0
  396. package/dist/chunk-NXCMHIKI.js +263 -0
  397. package/dist/chunk-O3LKCBP5.js +159 -0
  398. package/dist/chunk-O4EA4F3W.js +103 -0
  399. package/dist/chunk-O4EA4F3W.js.map +1 -0
  400. package/dist/chunk-O4OOG3D6.js +116 -0
  401. package/dist/chunk-O4OOG3D6.js.map +1 -0
  402. package/dist/chunk-O6N4ABCA.js +376 -0
  403. package/dist/chunk-O732GAFC.js +112 -0
  404. package/dist/chunk-OF4TIKYC.js +690 -0
  405. package/dist/chunk-OMPVOMPP.js +70 -0
  406. package/dist/chunk-OPJJSKUK.js +118 -0
  407. package/dist/chunk-OPWCMA4D.js +196 -0
  408. package/dist/chunk-ORJPS5VN.js +1193 -0
  409. package/dist/chunk-OSY5K7L7.js +187 -0
  410. package/dist/chunk-OV6QJRT4.js +45 -0
  411. package/dist/chunk-OVKYVZMW.js +108 -0
  412. package/dist/chunk-OZCBM3UC.js +171 -0
  413. package/dist/chunk-P3A2EINJ.js +61 -0
  414. package/dist/chunk-PTAG4PDC.js +27 -0
  415. package/dist/chunk-PTF5B7TJ.js +298 -0
  416. package/dist/chunk-Q3DPEYX4.js +848 -0
  417. package/dist/chunk-Q6CGOPJD.js +215 -0
  418. package/dist/chunk-Q6CGOPJD.js.map +1 -0
  419. package/dist/chunk-QB2KMIDP.js +100 -0
  420. package/dist/chunk-QCSJ4CWE.js +1067 -0
  421. package/dist/chunk-QIOQ2NPQ.js +414 -0
  422. package/dist/chunk-QK5EFEUT.js +353 -0
  423. package/dist/chunk-QPQBLYQJ.js +41 -0
  424. package/dist/chunk-QPSGCC5D.js +184 -0
  425. package/dist/chunk-QZAAUQRN.js +474 -0
  426. package/dist/chunk-QZM6YDJW.js +489 -0
  427. package/dist/chunk-QZM6YDJW.js.map +1 -0
  428. package/dist/chunk-RGBI63KJ.js +188 -0
  429. package/dist/chunk-RLBKLAEY.js +138 -0
  430. package/dist/chunk-RMFKVOM7.js +304 -0
  431. package/dist/chunk-ROKQU7WG.js +258 -0
  432. package/dist/chunk-RPVREAU7.js +251 -0
  433. package/dist/chunk-RQKLF42C.js +723 -0
  434. package/dist/chunk-SC6RRD2D.js +38 -0
  435. package/dist/chunk-SC6RRD2D.js.map +1 -0
  436. package/dist/chunk-SEO7TICN.js +94 -0
  437. package/dist/chunk-SHHJCL7X.js +432 -0
  438. package/dist/chunk-SIRLACNZ.js +114 -0
  439. package/dist/chunk-SKPHMYAA.js +237 -0
  440. package/dist/chunk-SODC7T6L.js +1583 -0
  441. package/dist/chunk-SQJIKMN3.js +366 -0
  442. package/dist/chunk-SVINDKVW.js +26 -0
  443. package/dist/chunk-SYCDHPZF.js +335 -0
  444. package/dist/chunk-T2QX3FDP.js +133 -0
  445. package/dist/chunk-T3OWFVMS.js +1187 -0
  446. package/dist/chunk-T6XI5FLY.js +61 -0
  447. package/dist/chunk-T7OXJZCX.js +62 -0
  448. package/dist/chunk-TAT5USZN.js +353 -0
  449. package/dist/chunk-TPQTRNER.js +172 -0
  450. package/dist/chunk-TUIN4MB7.js +266 -0
  451. package/dist/chunk-TX3VECZU.js +71 -0
  452. package/dist/chunk-TXLIEOJX.js +9624 -0
  453. package/dist/chunk-U3DN4HEY.js +27 -0
  454. package/dist/chunk-U7XM7CB4.js +191 -0
  455. package/dist/chunk-UJK53QFL.js +140 -0
  456. package/dist/chunk-UMTXA2TH.js +319 -0
  457. package/dist/chunk-UPDSXFK5.js +199 -0
  458. package/dist/chunk-UTIAXH52.js +269 -0
  459. package/dist/chunk-UVN5TMHU.js +1184 -0
  460. package/dist/chunk-V4Z4B2E3.js +52 -0
  461. package/dist/chunk-V4Z4B2E3.js.map +1 -0
  462. package/dist/chunk-VGYXW3VG.js +246 -0
  463. package/dist/chunk-VS7AHPCZ.js +255 -0
  464. package/dist/chunk-VTTAJOQ7.js +121 -0
  465. package/dist/chunk-VWPOLUAO.js +99 -0
  466. package/dist/chunk-X3MWB2QU.js +3851 -0
  467. package/dist/chunk-X6KAJI3V.js +211 -0
  468. package/dist/chunk-XBLRHV5R.js +50 -0
  469. package/dist/chunk-XDFP2LMW.js +605 -0
  470. package/dist/chunk-XEQMZB3C.js +525 -0
  471. package/dist/chunk-XEYLT5VA.js +223 -0
  472. package/dist/chunk-XHIQ5I6N.js +918 -0
  473. package/dist/chunk-XLH7QY2R.js +378 -0
  474. package/dist/chunk-XWFAMUZQ.js +113 -0
  475. package/dist/chunk-Y4BB2KS2.js +294 -0
  476. package/dist/chunk-Y4BB2KS2.js.map +1 -0
  477. package/dist/chunk-Y4OBB2VN.js +84 -0
  478. package/dist/chunk-YCVD6CI3.js +234 -0
  479. package/dist/chunk-YENLNISG.js +270 -0
  480. package/dist/chunk-YIRVLKAX.js +351 -0
  481. package/dist/chunk-YL73CVNK.js +390 -0
  482. package/dist/chunk-YLS6QE5G.js +288 -0
  483. package/dist/chunk-YNF2OC54.js +366 -0
  484. package/dist/chunk-YNF2OC54.js.map +1 -0
  485. package/dist/chunk-YPWU5KPE.js +147 -0
  486. package/dist/chunk-YQXTDZSU.js +2984 -0
  487. package/dist/chunk-YSJEAAOL.js +178 -0
  488. package/dist/chunk-YWIFM7D7.js +499 -0
  489. package/dist/chunk-YWVI6ZMK.js +103 -0
  490. package/dist/chunk-Z4FMAFNH.js +847 -0
  491. package/dist/chunk-Z654FWNU.js +136 -0
  492. package/dist/chunk-Z7Y523PS.js +130 -0
  493. package/dist/chunk-ZD67RM6G.js +60 -0
  494. package/dist/chunk-ZEG4VPBL.js +187 -0
  495. package/dist/chunk-ZHDFQITM.js +283 -0
  496. package/dist/chunk-ZHDFQITM.js.map +1 -0
  497. package/dist/chunk-ZLYCOBHW.js +75 -0
  498. package/dist/chunk-ZNJ5MTXV.js +89 -0
  499. package/dist/chunk-ZSGY3H53.js +155 -0
  500. package/dist/chunk-ZTPXACWB.js +1788 -0
  501. package/dist/chunk-ZUA3JMI6.js +107 -0
  502. package/dist/chunk-ZYAZUPPV.js +559 -0
  503. package/dist/composer.js +8 -8
  504. package/dist/computer-viewer-TDDO25AV.js +21 -0
  505. package/dist/connect.js +12 -12
  506. package/dist/desktop-dictation.js +12 -10
  507. package/dist/desktop-dictation.js.map +1 -1
  508. package/dist/desktop.js +2 -2
  509. package/dist/editor.js +2 -2
  510. package/dist/embedded-new-voice-2G3VLPVQ.js +24 -0
  511. package/dist/embedded-voice-T5IWOWGD.js +24 -0
  512. package/dist/fleet-decision-row-WM64KXP3.js +361 -0
  513. package/dist/in-chat-connect-model.js +5 -5
  514. package/dist/index.js +51 -51
  515. package/dist/interaction.js +5 -5
  516. package/dist/machines.js +3 -3
  517. package/dist/meetings-recorder.js +1 -1
  518. package/dist/meetings.js +40 -32
  519. package/dist/meetings.js.map +1 -1
  520. package/dist/messages/en.d.ts +3 -0
  521. package/dist/messages.js +1 -1
  522. package/dist/model-policy-picker-menu-SMC6J6QN.js +22 -0
  523. package/dist/payment-page-card-G4U63KUV.js +223 -0
  524. package/dist/platform-activity-row-BUZGZAKZ.js +128 -0
  525. package/dist/queue-surface-implementation-4KUZ4PJV.js +908 -0
  526. package/dist/realtime.js +4 -4
  527. package/dist/recorder-host-WF2RRR56.js +69 -0
  528. package/dist/recorder-host-WF2RRR56.js.map +1 -0
  529. package/dist/recordings.js +3 -3
  530. package/dist/sandbox-files-ESDMOFSD.js +27 -0
  531. package/dist/session-app.js +211 -209
  532. package/dist/session-connect-cards-Q53KMMYY.js +25 -0
  533. package/dist/session-list-model.js +2 -2
  534. package/dist/session-realtime-CF3I35WJ.js +30 -0
  535. package/dist/session-realtime.js +2 -2
  536. package/dist/session-ui.js +33 -31
  537. package/dist/session.js +5 -5
  538. package/dist/sites.js +2 -2
  539. package/dist/terminal.js +2 -2
  540. package/dist/this-computer.js +3 -3
  541. package/dist/timeline-annotation-markers-CJK4RYZ4.js +157 -0
  542. package/dist/timeline-annotation-selection-67GF5H26.js +208 -0
  543. package/dist/timeline-annotations-dialog-ONJPQDJQ.js +283 -0
  544. package/dist/ui/access-list.js +11 -9
  545. package/dist/ui/access-list.js.map +1 -1
  546. package/dist/ui/api-error.d.ts +6 -3
  547. package/dist/ui/api-error.js +2 -1
  548. package/dist/ui/cadence-picker.js +6 -4
  549. package/dist/ui/choice-cards.js +5 -3
  550. package/dist/ui/confirm-dialog.js +2 -2
  551. package/dist/ui/copy-field.js +5 -3
  552. package/dist/ui/detail-page.js +2 -2
  553. package/dist/ui/detail-sheet.js +2 -2
  554. package/dist/ui/diff-view.js +4 -3
  555. package/dist/ui/disclosure.js +3 -3
  556. package/dist/ui/email-chips-input.js +5 -3
  557. package/dist/ui/error-message.js +2 -1
  558. package/dist/ui/error-reference.d.ts +15 -0
  559. package/dist/ui/error-text.d.ts +10 -0
  560. package/dist/ui/error-text.js +9 -0
  561. package/dist/ui/error-text.js.map +1 -0
  562. package/dist/ui/field.js +4 -2
  563. package/dist/ui/flush-form-page.js +8 -6
  564. package/dist/ui/form-dialog.js +7 -5
  565. package/dist/ui/list-row.js +3 -3
  566. package/dist/ui/load-failure.js +3 -2
  567. package/dist/ui/load-failure.js.map +1 -1
  568. package/dist/ui/notice.js +3 -1
  569. package/dist/ui/relative-time.js +2 -2
  570. package/dist/ui/revision-history.js +9 -7
  571. package/dist/ui/revision-history.js.map +1 -1
  572. package/dist/ui/role-select.js +10 -8
  573. package/dist/ui/segmented-control.js +4 -2
  574. package/dist/ui/select-menu.js +5 -3
  575. package/dist/ui/setting-row.js +3 -1
  576. package/dist/ui/switch.js +4 -2
  577. package/dist/ui/usage-meter.js +3 -3
  578. package/dist/ui/word-list-row.js +4 -2
  579. package/dist/usage.js +2 -2
  580. package/dist/workbench.js +4 -4
  581. package/package.json +5 -6
  582. package/src/app/app-state.tsx +126 -14
  583. package/src/app/components/artifacts/site-data.tsx +2 -2
  584. package/src/app/components/artifacts/site-settings.tsx +2 -2
  585. package/src/app/components/rail/session-list.tsx +7 -8
  586. package/src/app/components/rail/session-shell.tsx +3 -3
  587. package/src/app/components/repository-picker.tsx +8 -1
  588. package/src/app/components/session/model-context-inspector.tsx +2 -1
  589. package/src/app/components/session/session-admin-access.tsx +2 -2
  590. package/src/app/lib/actions/chat-operations.ts +4 -4
  591. package/src/app/lib/archive-session.test.tsx +265 -2
  592. package/src/app/lib/archive-session.tsx +175 -9
  593. package/src/app/lib/copy-link.ts +2 -2
  594. package/src/app/lib/inbox.tsx +2 -2
  595. package/src/app/lib/session-failure-toasts.ts +3 -2
  596. package/src/app/lib/toast.test.tsx +215 -0
  597. package/src/app/lib/toast.tsx +67 -2
  598. package/src/app/personal-github-reconnect.test.tsx +356 -0
  599. package/src/app/routes/artifacts.tsx +1 -2
  600. package/src/components/tool-action-review.tsx +14 -1
  601. package/src/meetings/delete-meeting-dialog.tsx +2 -1
  602. package/src/meetings/meeting-ask.tsx +2 -1
  603. package/src/meetings/meeting-detail-page.tsx +2 -1
  604. package/src/meetings/meeting-notes.tsx +2 -1
  605. package/src/meetings/meeting-settings.tsx +4 -1
  606. package/src/meetings/meeting-transcript.tsx +4 -1
  607. package/src/meetings/recorder-context.tsx +10 -0
  608. package/src/meetings/recorder-host.test.tsx +60 -2
  609. package/src/meetings/recorder-host.tsx +16 -3
  610. package/src/meetings/recorder-panel.tsx +2 -1
  611. package/src/meetings/recorder-workspace.test.tsx +26 -1
  612. package/src/messages/en.ts +6 -0
  613. package/src/ui/api-error.test.ts +29 -5
  614. package/src/ui/api-error.tsx +10 -4
  615. package/src/ui/error-message.tsx +8 -0
  616. package/src/ui/error-reference.test.ts +54 -0
  617. package/src/ui/error-reference.ts +51 -0
  618. package/src/ui/error-text.test.tsx +66 -0
  619. package/src/ui/error-text.tsx +49 -0
  620. package/src/ui/field.tsx +4 -1
  621. package/src/ui/notice.tsx +7 -2
  622. package/src/ui/setting-row.tsx +4 -1
  623. package/styles/app.css +12 -0
  624. package/styles/compiled.css +9 -0
  625. package/dist/browser-viewer-NOP5EAUO.js +0 -23
  626. package/dist/chat-interactive-block-G7O44JHR.js +0 -18
  627. package/dist/chunk-26RWVLRD.js +0 -135
  628. package/dist/chunk-2AHTY7OT.js +0 -247
  629. package/dist/chunk-2GDNWKSC.js +0 -3670
  630. package/dist/chunk-2JENKGCE.js +0 -339
  631. package/dist/chunk-2KYQC4T5.js +0 -155
  632. package/dist/chunk-2RREGDQH.js +0 -708
  633. package/dist/chunk-2T7DX6KR.js +0 -353
  634. package/dist/chunk-2VB2O4FQ.js +0 -920
  635. package/dist/chunk-2VTTKH23.js +0 -94
  636. package/dist/chunk-2XNG2KNT.js +0 -172
  637. package/dist/chunk-2YC6JQRO.js +0 -399
  638. package/dist/chunk-2ZVRJRXC.js +0 -27
  639. package/dist/chunk-35737UT4.js +0 -162
  640. package/dist/chunk-366XZ4PM.js +0 -41
  641. package/dist/chunk-36MIDGAH.js +0 -199
  642. package/dist/chunk-3FD76LXM.js +0 -212
  643. package/dist/chunk-3OVIXY4O.js +0 -213
  644. package/dist/chunk-3OVIXY4O.js.map +0 -1
  645. package/dist/chunk-3QNRBEYH.js +0 -432
  646. package/dist/chunk-3QX55WLC.js +0 -15
  647. package/dist/chunk-3USJPT2S.js +0 -1022
  648. package/dist/chunk-42CMQ5VR.js +0 -251
  649. package/dist/chunk-4LPOWQJY.js +0 -42
  650. package/dist/chunk-4NBTZRKT.js +0 -79
  651. package/dist/chunk-4OXI6HCV.js +0 -118
  652. package/dist/chunk-4SZZAFYQ.js +0 -2317
  653. package/dist/chunk-4TQL3WP2.js +0 -140
  654. package/dist/chunk-4Y6BK7IU.js +0 -196
  655. package/dist/chunk-4YD7YZC5.js +0 -373
  656. package/dist/chunk-5DTST3TP.js +0 -81
  657. package/dist/chunk-5FH5LQVS.js +0 -130
  658. package/dist/chunk-5KWMYPJV.js +0 -847
  659. package/dist/chunk-5MUJDC6C.js +0 -84
  660. package/dist/chunk-5QM2WPKV.js +0 -41
  661. package/dist/chunk-5WUN7XPD.js +0 -1184
  662. package/dist/chunk-64PO2WXU.js +0 -1067
  663. package/dist/chunk-6AHATAAY.js +0 -431
  664. package/dist/chunk-6ED2YWBT.js +0 -56
  665. package/dist/chunk-6GXVYAGR.js +0 -170
  666. package/dist/chunk-6H4SJBPE.js +0 -85
  667. package/dist/chunk-6MT3HHUB.js +0 -84
  668. package/dist/chunk-6UHCBH4G.js +0 -198
  669. package/dist/chunk-6WLX3NR3.js +0 -198
  670. package/dist/chunk-73NXYYWE.js +0 -112
  671. package/dist/chunk-76ERNKIZ.js +0 -603
  672. package/dist/chunk-776QZ573.js +0 -57
  673. package/dist/chunk-7BYWOFVH.js +0 -171
  674. package/dist/chunk-7O5CGGIQ.js +0 -108
  675. package/dist/chunk-7QOHRZ67.js +0 -251
  676. package/dist/chunk-7WIDB4PL.js +0 -2058
  677. package/dist/chunk-7WKP3DYJ.js +0 -37
  678. package/dist/chunk-7XOVTPDI.js +0 -227
  679. package/dist/chunk-AB5MBIXY.js +0 -281
  680. package/dist/chunk-ADNMXBCX.js +0 -1193
  681. package/dist/chunk-AFBJTUFK.js +0 -202
  682. package/dist/chunk-ALVRWCXE.js +0 -61
  683. package/dist/chunk-AOHU6O3M.js +0 -247
  684. package/dist/chunk-AOHU6O3M.js.map +0 -1
  685. package/dist/chunk-APW4T4SW.js +0 -270
  686. package/dist/chunk-AXBSYWKX.js +0 -2656
  687. package/dist/chunk-B2I5ZW35.js +0 -422
  688. package/dist/chunk-B3LMRTRF.js +0 -223
  689. package/dist/chunk-BE2XENG2.js +0 -292
  690. package/dist/chunk-BE2XENG2.js.map +0 -1
  691. package/dist/chunk-BF4SADKX.js +0 -29
  692. package/dist/chunk-BKP43KK4.js +0 -1788
  693. package/dist/chunk-BM3NEZ6X.js +0 -781
  694. package/dist/chunk-BT3BAGB5.js +0 -216
  695. package/dist/chunk-BTSYDIVJ.js +0 -357
  696. package/dist/chunk-BUBNGKWG.js +0 -70
  697. package/dist/chunk-BVUJV5WR.js +0 -126
  698. package/dist/chunk-BZO5ZMUP.js +0 -27
  699. package/dist/chunk-C3HUF3M2.js +0 -157
  700. package/dist/chunk-C5QCAOES.js +0 -264
  701. package/dist/chunk-CGK6ALQU.js +0 -159
  702. package/dist/chunk-CPYGO76Q.js +0 -335
  703. package/dist/chunk-CQH4FWYA.js +0 -490
  704. package/dist/chunk-CZP5QXNB.js +0 -234
  705. package/dist/chunk-D2TOWEYH.js +0 -266
  706. package/dist/chunk-D6L4GHRH.js +0 -340
  707. package/dist/chunk-DKT3N37I.js +0 -50
  708. package/dist/chunk-DMMJIFKA.js +0 -84
  709. package/dist/chunk-DO74DQC7.js +0 -26
  710. package/dist/chunk-DOFJZ2JU.js +0 -83
  711. package/dist/chunk-DSXVY5WZ.js +0 -119
  712. package/dist/chunk-E337C2VK.js +0 -82
  713. package/dist/chunk-E6NRSRBE.js +0 -114
  714. package/dist/chunk-E6SQKHAU.js +0 -114
  715. package/dist/chunk-E7UIVD7F.js +0 -236
  716. package/dist/chunk-EGBII4CP.js +0 -229
  717. package/dist/chunk-EILSAQVJ.js +0 -200
  718. package/dist/chunk-ELL6HSYR.js +0 -307
  719. package/dist/chunk-EUBGLFFR.js +0 -73
  720. package/dist/chunk-EW6RNWSH.js +0 -212
  721. package/dist/chunk-EYUT5Y6V.js +0 -2599
  722. package/dist/chunk-F7U3QPZ3.js +0 -304
  723. package/dist/chunk-FBTJKSTM.js +0 -1270
  724. package/dist/chunk-FC2FTSK3.js +0 -2424
  725. package/dist/chunk-FOGNA3BU.js +0 -148
  726. package/dist/chunk-FQFKHNC7.js +0 -650
  727. package/dist/chunk-FTCHM755.js +0 -50
  728. package/dist/chunk-FXSHP4JZ.js +0 -3550
  729. package/dist/chunk-G6ZZC543.js +0 -818
  730. package/dist/chunk-G7FU6PUA.js +0 -100
  731. package/dist/chunk-GA4YEAMX.js +0 -3851
  732. package/dist/chunk-GE33BGB7.js +0 -12
  733. package/dist/chunk-GQ67HSJY.js +0 -570
  734. package/dist/chunk-GXXZ3WAK.js +0 -106
  735. package/dist/chunk-H2TCRX3H.js +0 -237
  736. package/dist/chunk-HLL4PBO7.js +0 -60
  737. package/dist/chunk-HLOEPV5C.js +0 -259
  738. package/dist/chunk-HUAGBS4O.js +0 -56
  739. package/dist/chunk-I36GSRUJ.js +0 -211
  740. package/dist/chunk-I6VBHT7S.js +0 -261
  741. package/dist/chunk-ICNNNOXE.js +0 -333
  742. package/dist/chunk-ICX64J4U.js +0 -172
  743. package/dist/chunk-ID36Y46W.js +0 -5046
  744. package/dist/chunk-ID36Y46W.js.map +0 -1
  745. package/dist/chunk-IGVVXLKJ.js +0 -559
  746. package/dist/chunk-IKJLSBUI.js +0 -2984
  747. package/dist/chunk-IKMUFDVS.js +0 -50
  748. package/dist/chunk-IKUNOX7F.js +0 -255
  749. package/dist/chunk-ILKDYBON.js +0 -288
  750. package/dist/chunk-IVYJX3OY.js +0 -187
  751. package/dist/chunk-JCY4CMDH.js +0 -107
  752. package/dist/chunk-JJZPLGIP.js +0 -474
  753. package/dist/chunk-JW33RV4V.js +0 -143
  754. package/dist/chunk-JWPA6ZPZ.js +0 -351
  755. package/dist/chunk-JZ4QXS6D.js +0 -50
  756. package/dist/chunk-K42OUZQ3.js +0 -386
  757. package/dist/chunk-K5TOVX5A.js +0 -206
  758. package/dist/chunk-K63HGHZX.js +0 -99
  759. package/dist/chunk-K6R5T44I.js +0 -75
  760. package/dist/chunk-KHJ5PXFM.js +0 -914
  761. package/dist/chunk-KJZRQ55O.js +0 -2319
  762. package/dist/chunk-KJZRQ55O.js.map +0 -1
  763. package/dist/chunk-KKI55ZMW.js +0 -65
  764. package/dist/chunk-KRPLAAFP.js +0 -199
  765. package/dist/chunk-KVFEZDBO.js +0 -134
  766. package/dist/chunk-L4I665WK.js +0 -45
  767. package/dist/chunk-L4OF77LE.js +0 -110
  768. package/dist/chunk-L4OF77LE.js.map +0 -1
  769. package/dist/chunk-LA5T52RM.js +0 -70
  770. package/dist/chunk-LM2W5YAT.js +0 -401
  771. package/dist/chunk-LQ62ECE6.js +0 -390
  772. package/dist/chunk-LQDUHU3Y.js +0 -71
  773. package/dist/chunk-LRJIYTZW.js +0 -4157
  774. package/dist/chunk-LRJIYTZW.js.map +0 -1
  775. package/dist/chunk-LRN6GYAZ.js +0 -138
  776. package/dist/chunk-M4SDVTKJ.js +0 -790
  777. package/dist/chunk-MA6O7CM6.js +0 -99
  778. package/dist/chunk-MBIBB6GI.js +0 -197
  779. package/dist/chunk-MF3ZFB4H.js +0 -199
  780. package/dist/chunk-MJJGJMYJ.js +0 -98
  781. package/dist/chunk-MLJADQFI.js +0 -4824
  782. package/dist/chunk-MQG7RV3B.js +0 -62
  783. package/dist/chunk-MTTGSQA5.js +0 -186
  784. package/dist/chunk-MW7Y3T55.js +0 -525
  785. package/dist/chunk-MYUFMVCH.js +0 -121
  786. package/dist/chunk-N3OARGH2.js +0 -61
  787. package/dist/chunk-NB2HMRT2.js +0 -353
  788. package/dist/chunk-NFDFYWMV.js +0 -141
  789. package/dist/chunk-NWGNFN3N.js +0 -1187
  790. package/dist/chunk-NWJRPDIO.js +0 -840
  791. package/dist/chunk-NWJRPDIO.js.map +0 -1
  792. package/dist/chunk-NXWBBZJV.js +0 -267
  793. package/dist/chunk-NY2QWROL.js +0 -71
  794. package/dist/chunk-O2IOPP3R.js +0 -848
  795. package/dist/chunk-O2UWH5RG.js +0 -141
  796. package/dist/chunk-O5YWDLYF.js +0 -393
  797. package/dist/chunk-OBMCZO7E.js +0 -121
  798. package/dist/chunk-OD3DCCCB.js +0 -132
  799. package/dist/chunk-OMH7R6I3.js +0 -390
  800. package/dist/chunk-OSA5EQG5.js +0 -113
  801. package/dist/chunk-OSJ3MUTZ.js +0 -2936
  802. package/dist/chunk-OWAYJ2OV.js +0 -368
  803. package/dist/chunk-OYXBFSGK.js +0 -269
  804. package/dist/chunk-PC2EBA5G.js +0 -4116
  805. package/dist/chunk-PC2EBA5G.js.map +0 -1
  806. package/dist/chunk-PC2MVXIP.js +0 -363
  807. package/dist/chunk-PC2MVXIP.js.map +0 -1
  808. package/dist/chunk-PENGLDR5.js +0 -309
  809. package/dist/chunk-PSMAWRPL.js +0 -191
  810. package/dist/chunk-PW4IMTYR.js +0 -702
  811. package/dist/chunk-PW54V7T5.js +0 -387
  812. package/dist/chunk-Q2EXYSMO.js +0 -24
  813. package/dist/chunk-Q2XJK5I4.js +0 -51
  814. package/dist/chunk-Q2XJK5I4.js.map +0 -1
  815. package/dist/chunk-Q4EFRI6X.js +0 -258
  816. package/dist/chunk-Q52CXW6C.js +0 -48
  817. package/dist/chunk-Q6XQ2R37.js +0 -184
  818. package/dist/chunk-QAJ53XBW.js +0 -23
  819. package/dist/chunk-QDTKECT4.js +0 -129
  820. package/dist/chunk-QE3ZFGI3.js +0 -43
  821. package/dist/chunk-QHHSUR2Y.js +0 -298
  822. package/dist/chunk-QHNVNR7B.js +0 -173
  823. package/dist/chunk-QIK2Q6N5.js +0 -376
  824. package/dist/chunk-QWL4L366.js +0 -38
  825. package/dist/chunk-R3J2PTVQ.js +0 -690
  826. package/dist/chunk-RBRX5ZS3.js +0 -319
  827. package/dist/chunk-REX6JIC7.js +0 -33
  828. package/dist/chunk-RGZ7EEC3.js +0 -537
  829. package/dist/chunk-RGZ7EEC3.js.map +0 -1
  830. package/dist/chunk-RIPS7GFR.js +0 -960
  831. package/dist/chunk-RTBZNFNV.js +0 -1354
  832. package/dist/chunk-RTBZNFNV.js.map +0 -1
  833. package/dist/chunk-SKMNW4SW.js +0 -187
  834. package/dist/chunk-SRFARKXC.js +0 -623
  835. package/dist/chunk-SWIHWCTW.js +0 -4461
  836. package/dist/chunk-TA5CFTO4.js +0 -103
  837. package/dist/chunk-TF4ZVJLI.js +0 -156
  838. package/dist/chunk-TG7DADJR.js +0 -9624
  839. package/dist/chunk-TI4R2ZD5.js +0 -623
  840. package/dist/chunk-TI4R2ZD5.js.map +0 -1
  841. package/dist/chunk-TNKWOUWP.js +0 -412
  842. package/dist/chunk-TNUSPXPW.js +0 -5555
  843. package/dist/chunk-TNUSPXPW.js.map +0 -1
  844. package/dist/chunk-TNYFHKVV.js +0 -366
  845. package/dist/chunk-TPMZBOFH.js +0 -178
  846. package/dist/chunk-TW3LKRJF.js +0 -263
  847. package/dist/chunk-TZAO65I4.js +0 -83
  848. package/dist/chunk-U5EFEMYU.js +0 -89
  849. package/dist/chunk-U6M4LS3M.js +0 -378
  850. package/dist/chunk-UI4HI5QK.js +0 -918
  851. package/dist/chunk-UJDOWCQ3.js +0 -272
  852. package/dist/chunk-UJUQ2QOX.js +0 -581
  853. package/dist/chunk-UQ3IM6FY.js +0 -133
  854. package/dist/chunk-UYE47LO6.js +0 -246
  855. package/dist/chunk-VADHIT26.js +0 -89
  856. package/dist/chunk-VFQ3H6CO.js +0 -163
  857. package/dist/chunk-VGUN6VB2.js +0 -188
  858. package/dist/chunk-VGWWEVSD.js +0 -723
  859. package/dist/chunk-VIEFJ2DM.js +0 -2469
  860. package/dist/chunk-VLXM36VS.js +0 -268
  861. package/dist/chunk-W3BFRR2G.js +0 -499
  862. package/dist/chunk-W5MPXR3A.js +0 -981
  863. package/dist/chunk-W5OWKVZG.js +0 -136
  864. package/dist/chunk-W6FRORMX.js +0 -486
  865. package/dist/chunk-W6FRORMX.js.map +0 -1
  866. package/dist/chunk-W7XROSZO.js +0 -232
  867. package/dist/chunk-W7XROSZO.js.map +0 -1
  868. package/dist/chunk-WEZ5PXZP.js +0 -403
  869. package/dist/chunk-WHWUWN2X.js +0 -197
  870. package/dist/chunk-WHWUWN2X.js.map +0 -1
  871. package/dist/chunk-WLEDGIVS.js +0 -114
  872. package/dist/chunk-WLEDGIVS.js.map +0 -1
  873. package/dist/chunk-WNDAKLHG.js +0 -281
  874. package/dist/chunk-WTJ4PLMU.js +0 -103
  875. package/dist/chunk-WV2KPJUW.js +0 -107
  876. package/dist/chunk-X3VY5EGY.js +0 -277
  877. package/dist/chunk-X3VY5EGY.js.map +0 -1
  878. package/dist/chunk-XDBYWVCW.js +0 -418
  879. package/dist/chunk-XF7MA4U5.js +0 -36
  880. package/dist/chunk-XF7MA4U5.js.map +0 -1
  881. package/dist/chunk-XOSQP3YA.js +0 -605
  882. package/dist/chunk-XYBV4ZJQ.js +0 -271
  883. package/dist/chunk-YBKVGLQR.js +0 -147
  884. package/dist/chunk-YDCUBUWH.js +0 -1583
  885. package/dist/chunk-YG6NARQY.js +0 -51
  886. package/dist/chunk-YG6NARQY.js.map +0 -1
  887. package/dist/chunk-YSVD5HI4.js +0 -278
  888. package/dist/chunk-YT3WGNG6.js +0 -290
  889. package/dist/chunk-YYICQDK4.js +0 -414
  890. package/dist/chunk-YYLMZLI6.js +0 -686
  891. package/dist/chunk-ZAMTKG5U.js +0 -95
  892. package/dist/chunk-ZDLYSXKN.js +0 -111
  893. package/dist/chunk-ZG447FSS.js +0 -194
  894. package/dist/chunk-ZIT5KD4Q.js +0 -264
  895. package/dist/chunk-ZUDOVDKR.js +0 -3064
  896. package/dist/chunk-ZW2ECJ3A.js +0 -451
  897. package/dist/computer-viewer-LPZ763KF.js +0 -21
  898. package/dist/embedded-new-voice-YVMKSLKJ.js +0 -24
  899. package/dist/embedded-voice-BJPQFXSU.js +0 -24
  900. package/dist/fleet-decision-row-AA4H5CDT.js +0 -361
  901. package/dist/model-policy-picker-menu-HSMWVO4P.js +0 -22
  902. package/dist/payment-page-card-3LTSFJGN.js +0 -223
  903. package/dist/platform-activity-row-5VYV6TX4.js +0 -128
  904. package/dist/queue-surface-implementation-NXHZUKD2.js +0 -908
  905. package/dist/recorder-host-ZKRWTDBM.js +0 -57
  906. package/dist/recorder-host-ZKRWTDBM.js.map +0 -1
  907. package/dist/sandbox-files-YCMLQUFU.js +0 -27
  908. package/dist/session-connect-cards-KSQLMRM5.js +0 -25
  909. package/dist/session-realtime-ZR6JLG3Y.js +0 -30
  910. package/dist/timeline-annotation-markers-YAHDPWVG.js +0 -157
  911. package/dist/timeline-annotation-selection-KHXNCEJP.js +0 -208
  912. package/dist/timeline-annotations-dialog-Y4XD3N7B.js +0 -283
  913. /package/dist/{browser-viewer-NOP5EAUO.js.map → browser-viewer-TC27OCIP.js.map} +0 -0
  914. /package/dist/{chat-interactive-block-G7O44JHR.js.map → chat-interactive-block-RWPQBHVS.js.map} +0 -0
  915. /package/dist/{chunk-EGBII4CP.js.map → chunk-2BDT3UZQ.js.map} +0 -0
  916. /package/dist/{chunk-4YD7YZC5.js.map → chunk-2CLNIEK4.js.map} +0 -0
  917. /package/dist/{chunk-ZW2ECJ3A.js.map → chunk-2FSBSCZJ.js.map} +0 -0
  918. /package/dist/{chunk-KRPLAAFP.js.map → chunk-2I7HDP53.js.map} +0 -0
  919. /package/dist/{chunk-3QX55WLC.js.map → chunk-2INLDVK3.js.map} +0 -0
  920. /package/dist/{chunk-BVUJV5WR.js.map → chunk-2KALVELR.js.map} +0 -0
  921. /package/dist/{chunk-XDBYWVCW.js.map → chunk-2M3J7ZWQ.js.map} +0 -0
  922. /package/dist/{chunk-2RREGDQH.js.map → chunk-2OP6WLGV.js.map} +0 -0
  923. /package/dist/{chunk-OSJ3MUTZ.js.map → chunk-2RG7NIAS.js.map} +0 -0
  924. /package/dist/{chunk-26RWVLRD.js.map → chunk-2STUPWEL.js.map} +0 -0
  925. /package/dist/{chunk-XYBV4ZJQ.js.map → chunk-2YUOVM3G.js.map} +0 -0
  926. /package/dist/{chunk-2GDNWKSC.js.map → chunk-2Z3NQNTM.js.map} +0 -0
  927. /package/dist/{chunk-2VB2O4FQ.js.map → chunk-3CPWWGNK.js.map} +0 -0
  928. /package/dist/{chunk-7WKP3DYJ.js.map → chunk-3ED2U6XE.js.map} +0 -0
  929. /package/dist/{chunk-BT3BAGB5.js.map → chunk-3GZA4BUW.js.map} +0 -0
  930. /package/dist/{chunk-3USJPT2S.js.map → chunk-3IK6UYO6.js.map} +0 -0
  931. /package/dist/{chunk-6AHATAAY.js.map → chunk-3PZ7JZI2.js.map} +0 -0
  932. /package/dist/{chunk-JZ4QXS6D.js.map → chunk-4DVJ6ONS.js.map} +0 -0
  933. /package/dist/{chunk-5QM2WPKV.js.map → chunk-4E3ZJRTZ.js.map} +0 -0
  934. /package/dist/{chunk-NFDFYWMV.js.map → chunk-4SAWSRAA.js.map} +0 -0
  935. /package/dist/{chunk-ELL6HSYR.js.map → chunk-53AGXXZM.js.map} +0 -0
  936. /package/dist/{chunk-G6ZZC543.js.map → chunk-54YW6SZZ.js.map} +0 -0
  937. /package/dist/{chunk-4SZZAFYQ.js.map → chunk-57AZS3IE.js.map} +0 -0
  938. /package/dist/{chunk-JW33RV4V.js.map → chunk-5CPEEAFD.js.map} +0 -0
  939. /package/dist/{chunk-D6L4GHRH.js.map → chunk-5EWSRZ2Y.js.map} +0 -0
  940. /package/dist/{chunk-PW54V7T5.js.map → chunk-5IE76VCY.js.map} +0 -0
  941. /package/dist/{chunk-6GXVYAGR.js.map → chunk-5NWEKLDZ.js.map} +0 -0
  942. /package/dist/{chunk-6UHCBH4G.js.map → chunk-5O2FCCHZ.js.map} +0 -0
  943. /package/dist/{chunk-2YC6JQRO.js.map → chunk-5QAY6K77.js.map} +0 -0
  944. /package/dist/{chunk-EYUT5Y6V.js.map → chunk-6DK6Z4UN.js.map} +0 -0
  945. /package/dist/{chunk-PW4IMTYR.js.map → chunk-6DVCC7QS.js.map} +0 -0
  946. /package/dist/{chunk-7WIDB4PL.js.map → chunk-6JHU2UBS.js.map} +0 -0
  947. /package/dist/{chunk-CQH4FWYA.js.map → chunk-6PZ7OBYU.js.map} +0 -0
  948. /package/dist/{chunk-VFQ3H6CO.js.map → chunk-6WGRDRMA.js.map} +0 -0
  949. /package/dist/{chunk-MTTGSQA5.js.map → chunk-77WAKEAH.js.map} +0 -0
  950. /package/dist/{chunk-O5YWDLYF.js.map → chunk-7TDO3CUM.js.map} +0 -0
  951. /package/dist/{chunk-2AHTY7OT.js.map → chunk-7TIX2UAR.js.map} +0 -0
  952. /package/dist/{chunk-FOGNA3BU.js.map → chunk-7V5REBCP.js.map} +0 -0
  953. /package/dist/{chunk-2JENKGCE.js.map → chunk-7VMZGLYI.js.map} +0 -0
  954. /package/dist/{chunk-E7UIVD7F.js.map → chunk-7W37NS3I.js.map} +0 -0
  955. /package/dist/{chunk-ZDLYSXKN.js.map → chunk-7X6SDK2C.js.map} +0 -0
  956. /package/dist/{chunk-ZAMTKG5U.js.map → chunk-7ZNUHRP5.js.map} +0 -0
  957. /package/dist/{chunk-DMMJIFKA.js.map → chunk-A36PZALD.js.map} +0 -0
  958. /package/dist/{chunk-WV2KPJUW.js.map → chunk-AUI6VA63.js.map} +0 -0
  959. /package/dist/{chunk-Q2EXYSMO.js.map → chunk-AW2MQB37.js.map} +0 -0
  960. /package/dist/{chunk-6WLX3NR3.js.map → chunk-AWKES45Y.js.map} +0 -0
  961. /package/dist/{chunk-OD3DCCCB.js.map → chunk-AXHZYXUV.js.map} +0 -0
  962. /package/dist/{chunk-QDTKECT4.js.map → chunk-BHNSJVBC.js.map} +0 -0
  963. /package/dist/{chunk-FTCHM755.js.map → chunk-BJEJFISW.js.map} +0 -0
  964. /package/dist/{chunk-B2I5ZW35.js.map → chunk-BJFH6JI5.js.map} +0 -0
  965. /package/dist/{chunk-RIPS7GFR.js.map → chunk-BMICEQZQ.js.map} +0 -0
  966. /package/dist/{chunk-BF4SADKX.js.map → chunk-BTLBYBLU.js.map} +0 -0
  967. /package/dist/{chunk-U5EFEMYU.js.map → chunk-BXBDYNRP.js.map} +0 -0
  968. /package/dist/{chunk-BTSYDIVJ.js.map → chunk-C372BFOV.js.map} +0 -0
  969. /package/dist/{chunk-MLJADQFI.js.map → chunk-CMKGILJK.js.map} +0 -0
  970. /package/dist/{chunk-DKT3N37I.js.map → chunk-CRAOSVHC.js.map} +0 -0
  971. /package/dist/{chunk-WNDAKLHG.js.map → chunk-CRU35QQH.js.map} +0 -0
  972. /package/dist/{chunk-2XNG2KNT.js.map → chunk-CUIWCGMA.js.map} +0 -0
  973. /package/dist/{chunk-QWL4L366.js.map → chunk-D5TWNFFE.js.map} +0 -0
  974. /package/dist/{chunk-SWIHWCTW.js.map → chunk-DF5EAHDN.js.map} +0 -0
  975. /package/dist/{chunk-HUAGBS4O.js.map → chunk-DJAXC5OK.js.map} +0 -0
  976. /package/dist/{chunk-FXSHP4JZ.js.map → chunk-DXBYWSL5.js.map} +0 -0
  977. /package/dist/{chunk-5MUJDC6C.js.map → chunk-DXR5PDFP.js.map} +0 -0
  978. /package/dist/{chunk-NXWBBZJV.js.map → chunk-DZWARC4M.js.map} +0 -0
  979. /package/dist/{chunk-GXXZ3WAK.js.map → chunk-DZXEDSQI.js.map} +0 -0
  980. /package/dist/{chunk-Q52CXW6C.js.map → chunk-E7XERZWC.js.map} +0 -0
  981. /package/dist/{chunk-4NBTZRKT.js.map → chunk-ECJBYNLJ.js.map} +0 -0
  982. /package/dist/{chunk-QE3ZFGI3.js.map → chunk-EDI6SJ2N.js.map} +0 -0
  983. /package/dist/{chunk-E6NRSRBE.js.map → chunk-EWSOC6WF.js.map} +0 -0
  984. /package/dist/{chunk-TA5CFTO4.js.map → chunk-F2OPHAUN.js.map} +0 -0
  985. /package/dist/{chunk-5DTST3TP.js.map → chunk-F4ISQGGM.js.map} +0 -0
  986. /package/dist/{chunk-MBIBB6GI.js.map → chunk-FO4LYKJL.js.map} +0 -0
  987. /package/dist/{chunk-EUBGLFFR.js.map → chunk-FPXASDG5.js.map} +0 -0
  988. /package/dist/{chunk-C3HUF3M2.js.map → chunk-FVXBNBHO.js.map} +0 -0
  989. /package/dist/{chunk-W5MPXR3A.js.map → chunk-FZC5N55X.js.map} +0 -0
  990. /package/dist/{chunk-MA6O7CM6.js.map → chunk-GAVYGBFI.js.map} +0 -0
  991. /package/dist/{chunk-REX6JIC7.js.map → chunk-GKVJIDHF.js.map} +0 -0
  992. /package/dist/{chunk-EW6RNWSH.js.map → chunk-GVN5SZLX.js.map} +0 -0
  993. /package/dist/{chunk-KVFEZDBO.js.map → chunk-H3T7IWNA.js.map} +0 -0
  994. /package/dist/{chunk-I6VBHT7S.js.map → chunk-HAX4LCR5.js.map} +0 -0
  995. /package/dist/{chunk-OBMCZO7E.js.map → chunk-HC4JFZVU.js.map} +0 -0
  996. /package/dist/{chunk-UJUQ2QOX.js.map → chunk-HEFPPMBQ.js.map} +0 -0
  997. /package/dist/{chunk-DOFJZ2JU.js.map → chunk-HNLR7Q4Z.js.map} +0 -0
  998. /package/dist/{chunk-GE33BGB7.js.map → chunk-HSOXMJOT.js.map} +0 -0
  999. /package/dist/{chunk-AB5MBIXY.js.map → chunk-I4MRDSUF.js.map} +0 -0
  1000. /package/dist/{chunk-AFBJTUFK.js.map → chunk-I4QEJ62Y.js.map} +0 -0
  1001. /package/dist/{chunk-6ED2YWBT.js.map → chunk-I5B5L6Q4.js.map} +0 -0
  1002. /package/dist/{chunk-C5QCAOES.js.map → chunk-I5QZJODL.js.map} +0 -0
  1003. /package/dist/{chunk-76ERNKIZ.js.map → chunk-I7ITSXSJ.js.map} +0 -0
  1004. /package/dist/{chunk-OMH7R6I3.js.map → chunk-I7XIZRFD.js.map} +0 -0
  1005. /package/dist/{chunk-E337C2VK.js.map → chunk-IDANQPRH.js.map} +0 -0
  1006. /package/dist/{chunk-3FD76LXM.js.map → chunk-IFB3WJ36.js.map} +0 -0
  1007. /package/dist/{chunk-ZIT5KD4Q.js.map → chunk-IHTAKKTK.js.map} +0 -0
  1008. /package/dist/{chunk-QHNVNR7B.js.map → chunk-ILDXWY37.js.map} +0 -0
  1009. /package/dist/{chunk-GQ67HSJY.js.map → chunk-IMDQUHBJ.js.map} +0 -0
  1010. /package/dist/{chunk-DSXVY5WZ.js.map → chunk-IMZCQBOT.js.map} +0 -0
  1011. /package/dist/{chunk-WEZ5PXZP.js.map → chunk-IXPTECSC.js.map} +0 -0
  1012. /package/dist/{chunk-NY2QWROL.js.map → chunk-J255A3N5.js.map} +0 -0
  1013. /package/dist/{chunk-O2UWH5RG.js.map → chunk-J5F5HPPW.js.map} +0 -0
  1014. /package/dist/{chunk-VIEFJ2DM.js.map → chunk-JEA3QDX7.js.map} +0 -0
  1015. /package/dist/{chunk-TF4ZVJLI.js.map → chunk-JEUPAVYY.js.map} +0 -0
  1016. /package/dist/{chunk-ZG447FSS.js.map → chunk-JKHKLL5W.js.map} +0 -0
  1017. /package/dist/{chunk-FQFKHNC7.js.map → chunk-JQL7ZH6C.js.map} +0 -0
  1018. /package/dist/{chunk-776QZ573.js.map → chunk-JWB44UGJ.js.map} +0 -0
  1019. /package/dist/{chunk-ICNNNOXE.js.map → chunk-JZ4NLCAP.js.map} +0 -0
  1020. /package/dist/{chunk-TNKWOUWP.js.map → chunk-K2A5PXQ5.js.map} +0 -0
  1021. /package/dist/{chunk-SRFARKXC.js.map → chunk-K56XV3C3.js.map} +0 -0
  1022. /package/dist/{chunk-QAJ53XBW.js.map → chunk-K6GAXXVA.js.map} +0 -0
  1023. /package/dist/{chunk-MF3ZFB4H.js.map → chunk-KCBMFSMS.js.map} +0 -0
  1024. /package/dist/{chunk-VLXM36VS.js.map → chunk-KF2FV3ZJ.js.map} +0 -0
  1025. /package/dist/{chunk-YSVD5HI4.js.map → chunk-KJD65EJP.js.map} +0 -0
  1026. /package/dist/{chunk-K42OUZQ3.js.map → chunk-KLEUWIMZ.js.map} +0 -0
  1027. /package/dist/{chunk-PENGLDR5.js.map → chunk-KODELWYT.js.map} +0 -0
  1028. /package/dist/{chunk-TZAO65I4.js.map → chunk-KRDR5RJD.js.map} +0 -0
  1029. /package/dist/{chunk-KHJ5PXFM.js.map → chunk-KUDGXAF7.js.map} +0 -0
  1030. /package/dist/{chunk-6H4SJBPE.js.map → chunk-KYS77RPN.js.map} +0 -0
  1031. /package/dist/{chunk-OWAYJ2OV.js.map → chunk-L7YTNTIK.js.map} +0 -0
  1032. /package/dist/{chunk-YYLMZLI6.js.map → chunk-LHPNABDH.js.map} +0 -0
  1033. /package/dist/{chunk-LM2W5YAT.js.map → chunk-MFROMEKA.js.map} +0 -0
  1034. /package/dist/{chunk-AXBSYWKX.js.map → chunk-MIHN76LX.js.map} +0 -0
  1035. /package/dist/{chunk-4LPOWQJY.js.map → chunk-MIYFS2XN.js.map} +0 -0
  1036. /package/dist/{chunk-KKI55ZMW.js.map → chunk-MJUCFQMS.js.map} +0 -0
  1037. /package/dist/{chunk-ZUDOVDKR.js.map → chunk-MM4FNWI4.js.map} +0 -0
  1038. /package/dist/{chunk-M4SDVTKJ.js.map → chunk-MNZG4OHU.js.map} +0 -0
  1039. /package/dist/{chunk-EILSAQVJ.js.map → chunk-N6AACDUW.js.map} +0 -0
  1040. /package/dist/{chunk-BM3NEZ6X.js.map → chunk-NC55IFN3.js.map} +0 -0
  1041. /package/dist/{chunk-MJJGJMYJ.js.map → chunk-NC7PVOEK.js.map} +0 -0
  1042. /package/dist/{chunk-LA5T52RM.js.map → chunk-NCYMNCJO.js.map} +0 -0
  1043. /package/dist/{chunk-HLOEPV5C.js.map → chunk-ND2BXV3P.js.map} +0 -0
  1044. /package/dist/{chunk-UJDOWCQ3.js.map → chunk-NDBTFUO6.js.map} +0 -0
  1045. /package/dist/{chunk-K5TOVX5A.js.map → chunk-NDQJZ7HF.js.map} +0 -0
  1046. /package/dist/{chunk-35737UT4.js.map → chunk-NGJJJPZZ.js.map} +0 -0
  1047. /package/dist/{chunk-42CMQ5VR.js.map → chunk-NJTSNNE7.js.map} +0 -0
  1048. /package/dist/{chunk-FBTJKSTM.js.map → chunk-NRTE7DNV.js.map} +0 -0
  1049. /package/dist/{chunk-YT3WGNG6.js.map → chunk-NULUNM7H.js.map} +0 -0
  1050. /package/dist/{chunk-7XOVTPDI.js.map → chunk-NUNZS36W.js.map} +0 -0
  1051. /package/dist/{chunk-FC2FTSK3.js.map → chunk-NW53H5RW.js.map} +0 -0
  1052. /package/dist/{chunk-TW3LKRJF.js.map → chunk-NXCMHIKI.js.map} +0 -0
  1053. /package/dist/{chunk-CGK6ALQU.js.map → chunk-O3LKCBP5.js.map} +0 -0
  1054. /package/dist/{chunk-QIK2Q6N5.js.map → chunk-O6N4ABCA.js.map} +0 -0
  1055. /package/dist/{chunk-73NXYYWE.js.map → chunk-O732GAFC.js.map} +0 -0
  1056. /package/dist/{chunk-R3J2PTVQ.js.map → chunk-OF4TIKYC.js.map} +0 -0
  1057. /package/dist/{chunk-BUBNGKWG.js.map → chunk-OMPVOMPP.js.map} +0 -0
  1058. /package/dist/{chunk-4OXI6HCV.js.map → chunk-OPJJSKUK.js.map} +0 -0
  1059. /package/dist/{chunk-4Y6BK7IU.js.map → chunk-OPWCMA4D.js.map} +0 -0
  1060. /package/dist/{chunk-ADNMXBCX.js.map → chunk-ORJPS5VN.js.map} +0 -0
  1061. /package/dist/{chunk-SKMNW4SW.js.map → chunk-OSY5K7L7.js.map} +0 -0
  1062. /package/dist/{chunk-L4I665WK.js.map → chunk-OV6QJRT4.js.map} +0 -0
  1063. /package/dist/{chunk-7O5CGGIQ.js.map → chunk-OVKYVZMW.js.map} +0 -0
  1064. /package/dist/{chunk-7BYWOFVH.js.map → chunk-OZCBM3UC.js.map} +0 -0
  1065. /package/dist/{chunk-ALVRWCXE.js.map → chunk-P3A2EINJ.js.map} +0 -0
  1066. /package/dist/{chunk-BZO5ZMUP.js.map → chunk-PTAG4PDC.js.map} +0 -0
  1067. /package/dist/{chunk-QHHSUR2Y.js.map → chunk-PTF5B7TJ.js.map} +0 -0
  1068. /package/dist/{chunk-O2IOPP3R.js.map → chunk-Q3DPEYX4.js.map} +0 -0
  1069. /package/dist/{chunk-G7FU6PUA.js.map → chunk-QB2KMIDP.js.map} +0 -0
  1070. /package/dist/{chunk-64PO2WXU.js.map → chunk-QCSJ4CWE.js.map} +0 -0
  1071. /package/dist/{chunk-YYICQDK4.js.map → chunk-QIOQ2NPQ.js.map} +0 -0
  1072. /package/dist/{chunk-NB2HMRT2.js.map → chunk-QK5EFEUT.js.map} +0 -0
  1073. /package/dist/{chunk-366XZ4PM.js.map → chunk-QPQBLYQJ.js.map} +0 -0
  1074. /package/dist/{chunk-Q6XQ2R37.js.map → chunk-QPSGCC5D.js.map} +0 -0
  1075. /package/dist/{chunk-JJZPLGIP.js.map → chunk-QZAAUQRN.js.map} +0 -0
  1076. /package/dist/{chunk-VGUN6VB2.js.map → chunk-RGBI63KJ.js.map} +0 -0
  1077. /package/dist/{chunk-LRN6GYAZ.js.map → chunk-RLBKLAEY.js.map} +0 -0
  1078. /package/dist/{chunk-F7U3QPZ3.js.map → chunk-RMFKVOM7.js.map} +0 -0
  1079. /package/dist/{chunk-Q4EFRI6X.js.map → chunk-ROKQU7WG.js.map} +0 -0
  1080. /package/dist/{chunk-7QOHRZ67.js.map → chunk-RPVREAU7.js.map} +0 -0
  1081. /package/dist/{chunk-VGWWEVSD.js.map → chunk-RQKLF42C.js.map} +0 -0
  1082. /package/dist/{chunk-2VTTKH23.js.map → chunk-SEO7TICN.js.map} +0 -0
  1083. /package/dist/{chunk-3QNRBEYH.js.map → chunk-SHHJCL7X.js.map} +0 -0
  1084. /package/dist/{chunk-E6SQKHAU.js.map → chunk-SIRLACNZ.js.map} +0 -0
  1085. /package/dist/{chunk-H2TCRX3H.js.map → chunk-SKPHMYAA.js.map} +0 -0
  1086. /package/dist/{chunk-YDCUBUWH.js.map → chunk-SODC7T6L.js.map} +0 -0
  1087. /package/dist/{chunk-TNYFHKVV.js.map → chunk-SQJIKMN3.js.map} +0 -0
  1088. /package/dist/{chunk-DO74DQC7.js.map → chunk-SVINDKVW.js.map} +0 -0
  1089. /package/dist/{chunk-CPYGO76Q.js.map → chunk-SYCDHPZF.js.map} +0 -0
  1090. /package/dist/{chunk-UQ3IM6FY.js.map → chunk-T2QX3FDP.js.map} +0 -0
  1091. /package/dist/{chunk-NWGNFN3N.js.map → chunk-T3OWFVMS.js.map} +0 -0
  1092. /package/dist/{chunk-N3OARGH2.js.map → chunk-T6XI5FLY.js.map} +0 -0
  1093. /package/dist/{chunk-MQG7RV3B.js.map → chunk-T7OXJZCX.js.map} +0 -0
  1094. /package/dist/{chunk-2T7DX6KR.js.map → chunk-TAT5USZN.js.map} +0 -0
  1095. /package/dist/{chunk-ICX64J4U.js.map → chunk-TPQTRNER.js.map} +0 -0
  1096. /package/dist/{chunk-D2TOWEYH.js.map → chunk-TUIN4MB7.js.map} +0 -0
  1097. /package/dist/{chunk-LQDUHU3Y.js.map → chunk-TX3VECZU.js.map} +0 -0
  1098. /package/dist/{chunk-TG7DADJR.js.map → chunk-TXLIEOJX.js.map} +0 -0
  1099. /package/dist/{chunk-2ZVRJRXC.js.map → chunk-U3DN4HEY.js.map} +0 -0
  1100. /package/dist/{chunk-PSMAWRPL.js.map → chunk-U7XM7CB4.js.map} +0 -0
  1101. /package/dist/{chunk-4TQL3WP2.js.map → chunk-UJK53QFL.js.map} +0 -0
  1102. /package/dist/{chunk-RBRX5ZS3.js.map → chunk-UMTXA2TH.js.map} +0 -0
  1103. /package/dist/{chunk-36MIDGAH.js.map → chunk-UPDSXFK5.js.map} +0 -0
  1104. /package/dist/{chunk-OYXBFSGK.js.map → chunk-UTIAXH52.js.map} +0 -0
  1105. /package/dist/{chunk-5WUN7XPD.js.map → chunk-UVN5TMHU.js.map} +0 -0
  1106. /package/dist/{chunk-UYE47LO6.js.map → chunk-VGYXW3VG.js.map} +0 -0
  1107. /package/dist/{chunk-IKUNOX7F.js.map → chunk-VS7AHPCZ.js.map} +0 -0
  1108. /package/dist/{chunk-MYUFMVCH.js.map → chunk-VTTAJOQ7.js.map} +0 -0
  1109. /package/dist/{chunk-K63HGHZX.js.map → chunk-VWPOLUAO.js.map} +0 -0
  1110. /package/dist/{chunk-GA4YEAMX.js.map → chunk-X3MWB2QU.js.map} +0 -0
  1111. /package/dist/{chunk-I36GSRUJ.js.map → chunk-X6KAJI3V.js.map} +0 -0
  1112. /package/dist/{chunk-IKMUFDVS.js.map → chunk-XBLRHV5R.js.map} +0 -0
  1113. /package/dist/{chunk-XOSQP3YA.js.map → chunk-XDFP2LMW.js.map} +0 -0
  1114. /package/dist/{chunk-MW7Y3T55.js.map → chunk-XEQMZB3C.js.map} +0 -0
  1115. /package/dist/{chunk-B3LMRTRF.js.map → chunk-XEYLT5VA.js.map} +0 -0
  1116. /package/dist/{chunk-UI4HI5QK.js.map → chunk-XHIQ5I6N.js.map} +0 -0
  1117. /package/dist/{chunk-U6M4LS3M.js.map → chunk-XLH7QY2R.js.map} +0 -0
  1118. /package/dist/{chunk-OSA5EQG5.js.map → chunk-XWFAMUZQ.js.map} +0 -0
  1119. /package/dist/{chunk-6MT3HHUB.js.map → chunk-Y4OBB2VN.js.map} +0 -0
  1120. /package/dist/{chunk-CZP5QXNB.js.map → chunk-YCVD6CI3.js.map} +0 -0
  1121. /package/dist/{chunk-APW4T4SW.js.map → chunk-YENLNISG.js.map} +0 -0
  1122. /package/dist/{chunk-JWPA6ZPZ.js.map → chunk-YIRVLKAX.js.map} +0 -0
  1123. /package/dist/{chunk-LQ62ECE6.js.map → chunk-YL73CVNK.js.map} +0 -0
  1124. /package/dist/{chunk-ILKDYBON.js.map → chunk-YLS6QE5G.js.map} +0 -0
  1125. /package/dist/{chunk-YBKVGLQR.js.map → chunk-YPWU5KPE.js.map} +0 -0
  1126. /package/dist/{chunk-IKJLSBUI.js.map → chunk-YQXTDZSU.js.map} +0 -0
  1127. /package/dist/{chunk-TPMZBOFH.js.map → chunk-YSJEAAOL.js.map} +0 -0
  1128. /package/dist/{chunk-W3BFRR2G.js.map → chunk-YWIFM7D7.js.map} +0 -0
  1129. /package/dist/{chunk-WTJ4PLMU.js.map → chunk-YWVI6ZMK.js.map} +0 -0
  1130. /package/dist/{chunk-5KWMYPJV.js.map → chunk-Z4FMAFNH.js.map} +0 -0
  1131. /package/dist/{chunk-W5OWKVZG.js.map → chunk-Z654FWNU.js.map} +0 -0
  1132. /package/dist/{chunk-5FH5LQVS.js.map → chunk-Z7Y523PS.js.map} +0 -0
  1133. /package/dist/{chunk-HLL4PBO7.js.map → chunk-ZD67RM6G.js.map} +0 -0
  1134. /package/dist/{chunk-IVYJX3OY.js.map → chunk-ZEG4VPBL.js.map} +0 -0
  1135. /package/dist/{chunk-K6R5T44I.js.map → chunk-ZLYCOBHW.js.map} +0 -0
  1136. /package/dist/{chunk-VADHIT26.js.map → chunk-ZNJ5MTXV.js.map} +0 -0
  1137. /package/dist/{chunk-2KYQC4T5.js.map → chunk-ZSGY3H53.js.map} +0 -0
  1138. /package/dist/{chunk-BKP43KK4.js.map → chunk-ZTPXACWB.js.map} +0 -0
  1139. /package/dist/{chunk-JCY4CMDH.js.map → chunk-ZUA3JMI6.js.map} +0 -0
  1140. /package/dist/{chunk-IGVVXLKJ.js.map → chunk-ZYAZUPPV.js.map} +0 -0
  1141. /package/dist/{computer-viewer-LPZ763KF.js.map → computer-viewer-TDDO25AV.js.map} +0 -0
  1142. /package/dist/{embedded-new-voice-YVMKSLKJ.js.map → embedded-new-voice-2G3VLPVQ.js.map} +0 -0
  1143. /package/dist/{embedded-voice-BJPQFXSU.js.map → embedded-voice-T5IWOWGD.js.map} +0 -0
  1144. /package/dist/{fleet-decision-row-AA4H5CDT.js.map → fleet-decision-row-WM64KXP3.js.map} +0 -0
  1145. /package/dist/{model-policy-picker-menu-HSMWVO4P.js.map → model-policy-picker-menu-SMC6J6QN.js.map} +0 -0
  1146. /package/dist/{payment-page-card-3LTSFJGN.js.map → payment-page-card-G4U63KUV.js.map} +0 -0
  1147. /package/dist/{platform-activity-row-5VYV6TX4.js.map → platform-activity-row-BUZGZAKZ.js.map} +0 -0
  1148. /package/dist/{queue-surface-implementation-NXHZUKD2.js.map → queue-surface-implementation-4KUZ4PJV.js.map} +0 -0
  1149. /package/dist/{sandbox-files-YCMLQUFU.js.map → sandbox-files-ESDMOFSD.js.map} +0 -0
  1150. /package/dist/{session-connect-cards-KSQLMRM5.js.map → session-connect-cards-Q53KMMYY.js.map} +0 -0
  1151. /package/dist/{session-realtime-ZR6JLG3Y.js.map → session-realtime-CF3I35WJ.js.map} +0 -0
  1152. /package/dist/{timeline-annotation-markers-YAHDPWVG.js.map → timeline-annotation-markers-CJK4RYZ4.js.map} +0 -0
  1153. /package/dist/{timeline-annotation-selection-KHXNCEJP.js.map → timeline-annotation-selection-67GF5H26.js.map} +0 -0
  1154. /package/dist/{timeline-annotations-dialog-Y4XD3N7B.js.map → timeline-annotations-dialog-ONJPQDJQ.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/access-list.tsx"],"sourcesContent":["/* ----------------------------------------------------------------------------\n AccessList - the one membership editor, used everywhere access is edited:\n Workspace Access, the person sheet, the workspace sheet and the invite\n dialog. Same rows, verbs and role definitions in all four places.\n\n Roles come from the server's role catalog (see RoleSelect). You and owners\n are always listed. Service accounts sit in their own subgroup.\n\n Variants:\n - \"inline\" (default): avatar, name and email, a role select that saves\n immediately, and a menu with Remove.\n - \"text\": quieter rows with the role as text; the whole row opens the\n person sheet, where the role is changed.\n - \"matrix\": people by workspaces, one role per cell. Only for a few\n workspaces.\n -------------------------------------------------------------------------- */\n\nimport { useId, type ReactNode } from \"react\";\nimport {\n BotIcon,\n ChevronRightIcon,\n MailIcon,\n MoreHorizontalIcon,\n RotateCcwIcon,\n SlidersHorizontalIcon,\n UserMinusIcon,\n XIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Avatar, AvatarFallback } from \"./avatar\";\nimport { Button } from \"./button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\nimport { MetaChip } from \"./meta-chip\";\nimport { failedLoadParts, type FailedLoad } from \"./diff-view\";\nimport { ErrorMessage } from \"./error-message\";\nimport { InlineDisabledReason } from \"./select-menu\";\nimport { Skeleton } from \"./skeleton\";\nimport { StatusBadge } from \"./status-badge\";\nimport { RoleSelect, roleLabel, type RoleOption, type RoleValue } from \"./role-select\";\n\nexport type AccessMemberStatus = \"active\" | \"invited\" | \"invite_failed\" | \"suspended\";\n\nexport interface AccessMember<R extends string = string> {\n id: string;\n name: string;\n /** Service accounts have none. */\n email?: string | null | undefined;\n initials: string;\n kind?: \"person\" | \"service\" | undefined;\n isYou?: boolean | undefined;\n /**\n * The viewer administers this list from above (an organization owner or\n * admin on the organization's workspace page), so their own row stays\n * editable: they set and remove their own access like anyone else's.\n */\n managesOwnAccess?: boolean | undefined;\n /** Owners are always listed and can't be removed here. */\n isOwner?: boolean | undefined;\n /** A small tag after the name, for example \"Only owner\". */\n tag?: string | undefined;\n status?: AccessMemberStatus | undefined;\n /** \"Invited · expires in 5 days\". Shown only when not active. */\n statusLabel?: string | undefined;\n /** The role in this list's scope. */\n role: RoleValue<R>;\n /** For a legacy custom grant: the role \"Reset to role\" goes back to. */\n resetRole?: R | undefined;\n /** Why this person's role can't be changed here. */\n roleLockedReason?: string | undefined;\n /** Why this person can't be removed here. Owners and You never can. */\n removeLockedReason?: string | undefined;\n /** Matrix variant: the role per scope id (null is no access). */\n grants?: Record<string, RoleValue<R>> | undefined;\n}\n\nexport interface AccessScope {\n id: string;\n /** \"Platform engineering\". */\n label: string;\n}\n\nexport type AccessListVariant = \"inline\" | \"text\" | \"matrix\";\n\nexport interface AccessListProps<R extends string = string> {\n members: readonly AccessMember<R>[];\n /** From the server's role catalog, least to most access. */\n roles: readonly RoleOption<R>[];\n variant?: AccessListVariant | undefined;\n /** Accessible name for the list: \"People with access to Platform engineering\". */\n label: string;\n /** Matrix columns. */\n scopes?: readonly AccessScope[] | undefined;\n /** Saves a role. Return a promise to show the saving state. */\n onRoleChange?: (\n member: AccessMember<R>,\n role: R | null,\n scopeId?: string,\n ) => void | Promise<unknown>;\n onRemove?: ((member: AccessMember<R>) => void) | undefined;\n /**\n * Opens the hand-picked permission editor (\"Custom permissions…\" in the ⋯\n * menu). Optional: most places only offer roles.\n */\n onCustomize?: ((member: AccessMember<R>) => void) | undefined;\n /** Replaces a legacy custom grant with `member.resetRole`. */\n onResetToRole?: ((member: AccessMember<R>) => void | Promise<unknown>) | undefined;\n /** Text variant: opens the person sheet. */\n onOpen?: ((member: AccessMember<R>) => void) | undefined;\n onResendInvite?: ((member: AccessMember<R>) => void) | undefined;\n onRevokeInvite?: ((member: AccessMember<R>) => void) | undefined;\n /** When set, nothing can be changed and this line says why. */\n readOnlyReason?: string | undefined;\n loading?: boolean | undefined;\n /** Skeleton rows while loading. Default 4. */\n loadingRows?: number | undefined;\n /** What happened, what to do next, and an optional retry. Replaces the list. */\n error?: FailedLoad | undefined;\n /** Members whose role is being saved elsewhere, shown with a spinner. */\n savingIds?: readonly string[] | undefined;\n /** Shown when only you have access. */\n emptyMessage?: ReactNode | undefined;\n /** \"Remove from workspace\" or \"Remove from organization\". */\n removeLabel?: string | undefined;\n /** What the list sits on, so the matrix's sticky column matches. Default \"bg\". */\n canvas?: \"bg\" | \"surface\" | undefined;\n /** Adds \"No access\" to role choices (matrix, person sheet). */\n noAccessLabel?: string | undefined;\n className?: string | undefined;\n}\n\n/** Service accounts go in their own subgroup, after the people. */\nexport function groupAccessMembers<R extends string>(\n members: readonly AccessMember<R>[],\n): { people: AccessMember<R>[]; services: AccessMember<R>[] } {\n const people = members.filter((member) => member.kind !== \"service\");\n const services = members.filter((member) => member.kind === \"service\");\n // You first, then owners, then everyone else in the order the server sent.\n const rank = (member: AccessMember<R>) => (member.isYou ? 0 : member.isOwner ? 1 : 2);\n return {\n people: people\n .map((member, index) => ({ member, index }))\n .sort((a, b) => rank(a.member) - rank(b.member) || a.index - b.index)\n .map(({ member }) => member),\n services,\n };\n}\n\n/** Why a member can't be removed, or null when they can. */\nexport function removeBlockedReason(member: AccessMember): string | null {\n if (member.removeLockedReason) return member.removeLockedReason;\n if (member.isYou && !member.managesOwnAccess) return \"You can't remove yourself here.\";\n if (member.isOwner) return \"Owners always have access.\";\n return null;\n}\n\nfunction isInvite(member: AccessMember): boolean {\n return member.status === \"invited\" || member.status === \"invite_failed\";\n}\n\n/* ---------------------------------------------------------------- pieces */\n\nfunction MemberAvatar({ member }: { member: AccessMember }) {\n if (member.kind === \"service\") {\n return (\n <span\n aria-hidden=\"true\"\n className=\"grid size-8 shrink-0 place-items-center rounded-[10px] border border-border bg-surface-2 text-fg-muted\"\n >\n <BotIcon className=\"size-4\" />\n </span>\n );\n }\n // Someone who hasn't joined yet: a dashed outline, the same initials.\n const pending = isInvite(member);\n return (\n <Avatar aria-hidden=\"true\">\n <AvatarFallback\n className={cn(\n \"text-xs font-semibold\",\n pending\n ? \"border border-dashed border-border-strong bg-transparent text-fg-subtle\"\n : \"bg-surface-2 text-fg-muted\",\n )}\n >\n {member.initials}\n </AvatarFallback>\n </Avatar>\n );\n}\n\nfunction MemberIdentity({\n member,\n roles,\n onResetToRole,\n readOnly,\n}: {\n member: AccessMember<string>;\n roles: readonly RoleOption<string>[];\n onResetToRole?: ((member: AccessMember<string>) => void | Promise<unknown>) | undefined;\n readOnly: boolean;\n}) {\n const showStatus = member.status && member.status !== \"active\" && member.statusLabel;\n const secondary = member.kind === \"service\" ? \"Service account\" : member.email;\n const resetTo =\n member.role === \"custom\" && member.resetRole ? roleLabel(roles, member.resetRole) : null;\n return (\n <div className=\"min-w-0\">\n {/* One line: the name truncates before the chip wraps. */}\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"min-w-0 truncate text-sm leading-5 font-medium text-fg\">\n {member.name}\n </span>\n {member.isYou ? <MetaChip variant=\"outline\">You</MetaChip> : null}\n </div>\n {secondary || member.tag ? (\n // Like a ListRow meta line: the separator trails its item, so a\n // wrapped tag (\"Only owner\") starts its own line cleanly.\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 text-xs leading-4.5 text-fg-muted\">\n {secondary ? (\n <span className=\"inline-flex max-w-full min-w-0 items-center gap-1.5\">\n <span className=\"min-w-0 truncate\">{secondary}</span>\n {member.tag ? (\n <span aria-hidden=\"true\" className=\"text-fg-subtle\">\n ·\n </span>\n ) : null}\n </span>\n ) : null}\n {member.tag ? <span className=\"whitespace-nowrap\">{member.tag}</span> : null}\n </div>\n ) : null}\n {showStatus ? (\n <div className=\"mt-0.5 flex min-w-0\">\n <StatusBadge variant=\"dot\" status={member.status} className=\"min-w-0\">\n {member.statusLabel}\n </StatusBadge>\n </div>\n ) : null}\n {member.role === \"custom\" ? (\n // The reset link carries its own icon, so it needs no separator (and no\n // dot is left dangling when it wraps under the text on narrow rows).\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-2 text-xs leading-4.5 text-fg-muted\">\n <span className=\"whitespace-nowrap\">Hand-picked permissions</span>\n {resetTo && onResetToRole && !readOnly ? (\n <button\n type=\"button\"\n onClick={() => void onResetToRole(member)}\n className=\"inline-flex items-center gap-1 rounded-[6px] font-medium whitespace-nowrap og-link pointer-coarse:min-h-11\"\n >\n <RotateCcwIcon aria-hidden=\"true\" className=\"size-3\" />\n Reset to {resetTo}\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction RowMenu({\n member,\n removeLabel,\n onRemove,\n onCustomize,\n onResetToRole,\n onResendInvite,\n onRevokeInvite,\n roles,\n}: {\n member: AccessMember<string>;\n removeLabel: string;\n onRemove?: ((member: AccessMember<string>) => void) | undefined;\n onCustomize?: ((member: AccessMember<string>) => void) | undefined;\n onResetToRole?: ((member: AccessMember<string>) => void | Promise<unknown>) | undefined;\n onResendInvite?: ((member: AccessMember<string>) => void) | undefined;\n onRevokeInvite?: ((member: AccessMember<string>) => void) | undefined;\n roles: readonly RoleOption<string>[];\n}) {\n const invite = isInvite(member);\n const blocked = removeBlockedReason(member);\n const canReset = member.role === \"custom\" && member.resetRole && onResetToRole;\n // Custom permissions follow the same rule as the role: never your own.\n const canCustomize =\n Boolean(onCustomize) && (!member.isYou || member.managesOwnAccess) && !member.isOwner;\n const hasItems = invite\n ? Boolean(onResendInvite || onRevokeInvite)\n : Boolean((onRemove && !blocked) || canReset || canCustomize);\n if (!hasItems) return <span aria-hidden=\"true\" className=\"size-8\" />;\n return (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n aria-label={`More actions for ${member.name}`}\n className=\"grid size-8 shrink-0 place-items-center rounded-[10px] text-fg-subtle transition-colors duration-[120ms] outline-hidden hover:bg-surface-3 hover:text-fg focus-visible:ring-2 focus-visible:ring-brand/55 data-[state=open]:bg-surface-3 data-[state=open]:text-fg pointer-coarse:size-11\"\n >\n <MoreHorizontalIcon aria-hidden=\"true\" className=\"size-4\" />\n </button>\n </DropdownMenuTrigger>\n {/* Same menu as a ListRow's ⋯: default content, icon + verb per item. */}\n <DropdownMenuContent align=\"end\" className=\"min-w-44\">\n {invite ? (\n <>\n {onResendInvite ? (\n <DropdownMenuItem onSelect={() => onResendInvite(member)}>\n <MailIcon />\n Resend invitation\n </DropdownMenuItem>\n ) : null}\n {onRevokeInvite ? (\n <DropdownMenuItem variant=\"destructive\" onSelect={() => onRevokeInvite(member)}>\n <XIcon />\n Revoke invitation\n </DropdownMenuItem>\n ) : null}\n </>\n ) : (\n <>\n {canReset ? (\n <DropdownMenuItem onSelect={() => void onResetToRole!(member)}>\n <RotateCcwIcon />\n Reset to {roleLabel(roles, member.resetRole!)}\n </DropdownMenuItem>\n ) : null}\n {canCustomize ? (\n <DropdownMenuItem onSelect={() => onCustomize!(member)}>\n <SlidersHorizontalIcon />\n Custom permissions…\n </DropdownMenuItem>\n ) : null}\n {(canReset || canCustomize) && onRemove && !blocked ? <DropdownMenuSeparator /> : null}\n {onRemove && !blocked ? (\n <DropdownMenuItem variant=\"destructive\" onSelect={() => onRemove(member)}>\n <UserMinusIcon />\n {removeLabel}\n </DropdownMenuItem>\n ) : null}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction roleLockReason(\n member: AccessMember,\n readOnlyReason: string | undefined,\n): string | undefined {\n if (readOnlyReason) return undefined; // read-only lists show text, not locked controls\n if (member.roleLockedReason) return member.roleLockedReason;\n if (member.isYou && !member.managesOwnAccess) {\n return \"You can't change your own role. Ask another admin.\";\n }\n return undefined;\n}\n\n/* ---------------------------------------------------------------- states */\n\nfunction LoadingRows({ rows, variant }: { rows: number; variant: AccessListVariant }) {\n return (\n <ul aria-hidden=\"true\" className=\"flex flex-col divide-y divide-border\">\n {Array.from({ length: rows }, (_, index) => (\n // oxlint-disable-next-line react/no-array-index-key -- static placeholders\n <li key={index} className=\"flex min-h-14 items-center gap-3 px-3 py-3\">\n <Skeleton className=\"size-8 shrink-0 rounded-full bg-surface-3\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <Skeleton className=\"h-3.5 w-36 max-w-[60%] rounded-full bg-surface-3\" />\n <Skeleton className=\"h-3 w-48 max-w-[80%] rounded-full bg-surface-3\" />\n </div>\n {variant === \"inline\" ? (\n <Skeleton className=\"hidden h-8 w-[12.5rem] shrink-0 rounded-[10px] bg-surface-3 @md/access:block\" />\n ) : (\n <Skeleton className=\"h-3.5 w-20 shrink-0 rounded-full bg-surface-3\" />\n )}\n </li>\n ))}\n </ul>\n );\n}\n\nfunction ErrorState({ error }: { error: NonNullable<AccessListProps[\"error\"]> }) {\n const failure = failedLoadParts(error);\n return (\n <ErrorMessage\n title={error.message}\n details={failure.details}\n align=\"center\"\n announce\n action={\n error.onRetry ? (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={error.onRetry}>\n Try again\n </Button>\n ) : undefined\n }\n >\n {failure.detail}\n </ErrorMessage>\n );\n}\n\n/* ---------------------------------------------------------------- variants */\n\ninterface RowProps {\n member: AccessMember<string>;\n props: AccessListProps<string>;\n}\n\nfunction InlineRow({ member, props }: RowProps) {\n const { roles, onRoleChange, readOnlyReason, noAccessLabel } = props;\n const readOnly = Boolean(readOnlyReason);\n const lockReason = roleLockReason(member, readOnlyReason);\n return (\n <li className=\"grid min-h-14 grid-cols-[2rem_minmax(0,1fr)_auto] items-center gap-x-3 gap-y-2 px-3 py-3 @md/access:grid-cols-[2rem_minmax(0,1fr)_12.5rem_2rem]\">\n <div className=\"row-start-1 self-start @md/access:self-center\">\n <MemberAvatar member={member} />\n </div>\n <div className=\"row-start-1 min-w-0\">\n <MemberIdentity\n member={member}\n roles={roles}\n onResetToRole={props.onResetToRole}\n readOnly={readOnly}\n />\n </div>\n <div className=\"col-span-2 col-start-2 row-start-2 min-w-0 @md/access:col-span-1 @md/access:col-start-3 @md/access:row-start-1\">\n {readOnly ? (\n <RoleSelect\n variant=\"text\"\n roles={roles}\n value={member.role}\n noAccessLabel={noAccessLabel}\n />\n ) : (\n <RoleSelect\n roles={roles}\n value={member.role}\n subjectName={member.name}\n noAccessLabel={noAccessLabel}\n disabledReason={lockReason}\n pending={props.savingIds?.includes(member.id)}\n onValueChange={onRoleChange ? (role) => onRoleChange(member, role) : undefined}\n className=\"w-full max-w-[12.5rem] @md/access:max-w-none\"\n />\n )}\n </div>\n <div className=\"col-start-3 row-start-1 flex justify-end @md/access:col-start-4\">\n {readOnly ? null : (\n <RowMenu\n member={member}\n roles={roles}\n removeLabel={props.removeLabel ?? \"Remove from workspace\"}\n onRemove={props.onRemove}\n onCustomize={props.onCustomize}\n onResetToRole={props.onResetToRole}\n onResendInvite={props.onResendInvite}\n onRevokeInvite={props.onRevokeInvite}\n />\n )}\n </div>\n </li>\n );\n}\n\nfunction TextRow({ member, props }: RowProps) {\n const { roles, onOpen, noAccessLabel } = props;\n const content = (\n <>\n <MemberAvatar member={member} />\n <div className=\"min-w-0 flex-1\">\n <MemberIdentity member={member} roles={roles} readOnly />\n </div>\n <span\n className={cn(\n \"shrink-0 text-sm\",\n member.role === null ? \"text-fg-subtle\" : \"text-fg-muted\",\n )}\n >\n {roleLabel(roles, member.role, { noAccessLabel })}\n </span>\n {onOpen ? (\n <ChevronRightIcon aria-hidden=\"true\" className=\"size-4 shrink-0 text-fg-subtle\" />\n ) : null}\n </>\n );\n return (\n <li className=\"min-w-0\">\n {onOpen ? (\n <button\n type=\"button\"\n onClick={() => onOpen(member)}\n aria-label={`${member.name}, ${roleLabel(roles, member.role, { noAccessLabel })}`}\n className=\"flex min-h-14 w-full min-w-0 items-center gap-3 px-3 py-3 text-left transition-colors duration-[120ms] outline-hidden hover:bg-surface-2 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-brand/55\"\n >\n {content}\n </button>\n ) : (\n <div className=\"flex min-h-14 min-w-0 items-center gap-3 px-3 py-3\">{content}</div>\n )}\n </li>\n );\n}\n\nfunction ListVariant({ props }: { props: AccessListProps<string> }) {\n const { people, services } = groupAccessMembers(props.members);\n const servicesId = useId();\n const Row = props.variant === \"text\" ? TextRow : InlineRow;\n // Both list layouts use the resource row's hairlines (see ListRow).\n const listClass = \"flex min-w-0 flex-col divide-y divide-border\";\n const onlyYou = people.length <= 1 && services.length === 0;\n return (\n <>\n <ul aria-label={props.label} className={listClass}>\n {people.map((member) => (\n <Row key={member.id} member={member} props={props} />\n ))}\n </ul>\n {onlyYou && props.emptyMessage ? (\n <p className=\"border-t border-border px-3 pt-3 text-sm text-fg-muted\">\n {props.emptyMessage}\n </p>\n ) : null}\n {services.length > 0 ? (\n <div className=\"border-t border-border pt-4\">\n <h3 id={servicesId} className=\"px-3 text-xs leading-4.5 font-medium text-fg\">\n Service accounts\n </h3>\n <ul aria-labelledby={servicesId} className={cn(listClass, \"mt-1\")}>\n {services.map((member) => (\n <Row key={member.id} member={member} props={props} />\n ))}\n </ul>\n </div>\n ) : null}\n </>\n );\n}\n\nfunction MatrixVariant({ props }: { props: AccessListProps<string> }) {\n const { roles, scopes = [], onRoleChange, readOnlyReason, noAccessLabel = \"No access\" } = props;\n const { people, services } = groupAccessMembers(props.members);\n const readOnly = Boolean(readOnlyReason);\n const cellClass = \"border-b border-border px-1.5 py-1.5 align-middle\";\n // Sticky cells need an opaque fill that matches what the list sits on.\n const sticky = props.canvas === \"surface\" ? \"bg-surface\" : \"bg-bg\";\n const renderRow = (member: AccessMember<string>) => {\n const lockReason = roleLockReason(member, readOnlyReason);\n return (\n <tr key={member.id}>\n <th\n scope=\"row\"\n className={cn(cellClass, sticky, \"sticky left-0 z-10 pr-4 pl-0 text-left font-normal\")}\n >\n <div className=\"flex min-w-0 items-center gap-3\">\n <MemberAvatar member={member} />\n <MemberIdentity member={member} roles={roles} readOnly />\n </div>\n </th>\n {scopes.map((scope) => {\n const value = member.grants?.[scope.id] ?? null;\n return (\n <td key={scope.id} className={cellClass}>\n {readOnly ? (\n <span className=\"px-2\">\n <RoleSelect\n variant=\"text\"\n roles={roles}\n value={value}\n noAccessLabel={noAccessLabel}\n />\n </span>\n ) : (\n <RoleSelect\n variant=\"cell\"\n roles={roles}\n value={value}\n noAccessLabel={noAccessLabel}\n subjectName={member.name}\n aria-label={`${member.name} in ${scope.label}`}\n disabledReason={lockReason}\n align=\"start\"\n onValueChange={\n onRoleChange ? (role) => onRoleChange(member, role, scope.id) : undefined\n }\n />\n )}\n </td>\n );\n })}\n </tr>\n );\n };\n return (\n <div\n role=\"region\"\n aria-label={props.label}\n // A scrollable region must be reachable by keyboard.\n tabIndex={0}\n className=\"-mx-1 min-w-0 overflow-x-auto px-1 pb-1\"\n >\n <table\n className=\"w-full table-fixed border-separate border-spacing-0 text-sm\"\n style={{ minWidth: `${16 + scopes.length * 11}rem` }}\n >\n <colgroup>\n <col className=\"w-52 @md/access:w-64\" />\n {scopes.map((scope) => (\n <col key={scope.id} className=\"w-44\" />\n ))}\n </colgroup>\n <thead>\n <tr>\n <th\n scope=\"col\"\n className={cn(\n sticky,\n \"sticky left-0 z-10 border-b border-border pr-4 pb-2 text-left text-xs leading-4.5 font-medium text-fg-subtle\",\n )}\n >\n Person\n </th>\n {scopes.map((scope) => (\n <th\n key={scope.id}\n scope=\"col\"\n className=\"truncate border-b border-border px-3.5 pb-2 text-left text-xs leading-4.5 font-medium text-fg-subtle\"\n >\n {scope.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {people.map(renderRow)}\n {services.length > 0 ? (\n <tr>\n <th\n scope=\"colgroup\"\n colSpan={scopes.length + 1}\n className={cn(\n sticky,\n \"border-b border-border pt-4 pb-1.5 text-left text-xs leading-4.5 font-medium text-fg-subtle\",\n )}\n >\n Service accounts\n </th>\n </tr>\n ) : null}\n {services.map(renderRow)}\n </tbody>\n </table>\n </div>\n );\n}\n\n/** Who has access, with one role each. */\nexport function AccessList<R extends string>(props: AccessListProps<R>) {\n const { variant = \"inline\", loading, loadingRows = 4, error, readOnlyReason, className } = props;\n // Rows are generic over the role id; internally they only pass ids through.\n const erased = { ...props, variant } as unknown as AccessListProps<string>;\n return (\n <div\n data-variant={variant}\n aria-busy={loading || undefined}\n className={cn(\"@container/access min-w-0\", className)}\n >\n {readOnlyReason && !loading && !error ? (\n <p className=\"mb-1 flex min-w-0 px-3\">\n <InlineDisabledReason>{readOnlyReason}</InlineDisabledReason>\n </p>\n ) : null}\n {loading ? (\n <>\n <span className=\"sr-only\">Loading who has access</span>\n <LoadingRows rows={loadingRows} variant={variant} />\n </>\n ) : error ? (\n <ErrorState error={error} />\n ) : variant === \"matrix\" ? (\n <MatrixVariant props={erased} />\n ) : (\n <ListVariant props={erased} />\n )}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/ui/access-list.tsx"],"sourcesContent":["/* ----------------------------------------------------------------------------\n AccessList - the one membership editor, used everywhere access is edited:\n Workspace Access, the person sheet, the workspace sheet and the invite\n dialog. Same rows, verbs and role definitions in all four places.\n\n Roles come from the server's role catalog (see RoleSelect). You and owners\n are always listed. Service accounts sit in their own subgroup.\n\n Variants:\n - \"inline\" (default): avatar, name and email, a role select that saves\n immediately, and a menu with Remove.\n - \"text\": quieter rows with the role as text; the whole row opens the\n person sheet, where the role is changed.\n - \"matrix\": people by workspaces, one role per cell. Only for a few\n workspaces.\n -------------------------------------------------------------------------- */\n\nimport { useId, type ReactNode } from \"react\";\nimport {\n BotIcon,\n ChevronRightIcon,\n MailIcon,\n MoreHorizontalIcon,\n RotateCcwIcon,\n SlidersHorizontalIcon,\n UserMinusIcon,\n XIcon,\n} from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Avatar, AvatarFallback } from \"./avatar\";\nimport { Button } from \"./button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from \"./dropdown-menu\";\nimport { MetaChip } from \"./meta-chip\";\nimport { failedLoadParts, type FailedLoad } from \"./diff-view\";\nimport { ErrorMessage } from \"./error-message\";\nimport { InlineDisabledReason } from \"./select-menu\";\nimport { Skeleton } from \"./skeleton\";\nimport { StatusBadge } from \"./status-badge\";\nimport { RoleSelect, roleLabel, type RoleOption, type RoleValue } from \"./role-select\";\n\nexport type AccessMemberStatus = \"active\" | \"invited\" | \"invite_failed\" | \"suspended\";\n\nexport interface AccessMember<R extends string = string> {\n id: string;\n name: string;\n /** Service accounts have none. */\n email?: string | null | undefined;\n initials: string;\n kind?: \"person\" | \"service\" | undefined;\n isYou?: boolean | undefined;\n /**\n * The viewer administers this list from above (an organization owner or\n * admin on the organization's workspace page), so their own row stays\n * editable: they set and remove their own access like anyone else's.\n */\n managesOwnAccess?: boolean | undefined;\n /** Owners are always listed and can't be removed here. */\n isOwner?: boolean | undefined;\n /** A small tag after the name, for example \"Only owner\". */\n tag?: string | undefined;\n status?: AccessMemberStatus | undefined;\n /** \"Invited · expires in 5 days\". Shown only when not active. */\n statusLabel?: string | undefined;\n /** The role in this list's scope. */\n role: RoleValue<R>;\n /** For a legacy custom grant: the role \"Reset to role\" goes back to. */\n resetRole?: R | undefined;\n /** Why this person's role can't be changed here. */\n roleLockedReason?: string | undefined;\n /** Why this person can't be removed here. Owners and You never can. */\n removeLockedReason?: string | undefined;\n /** Matrix variant: the role per scope id (null is no access). */\n grants?: Record<string, RoleValue<R>> | undefined;\n}\n\nexport interface AccessScope {\n id: string;\n /** \"Platform engineering\". */\n label: string;\n}\n\nexport type AccessListVariant = \"inline\" | \"text\" | \"matrix\";\n\nexport interface AccessListProps<R extends string = string> {\n members: readonly AccessMember<R>[];\n /** From the server's role catalog, least to most access. */\n roles: readonly RoleOption<R>[];\n variant?: AccessListVariant | undefined;\n /** Accessible name for the list: \"People with access to Platform engineering\". */\n label: string;\n /** Matrix columns. */\n scopes?: readonly AccessScope[] | undefined;\n /** Saves a role. Return a promise to show the saving state. */\n onRoleChange?: (\n member: AccessMember<R>,\n role: R | null,\n scopeId?: string,\n ) => void | Promise<unknown>;\n onRemove?: ((member: AccessMember<R>) => void) | undefined;\n /**\n * Opens the hand-picked permission editor (\"Custom permissions…\" in the ⋯\n * menu). Optional: most places only offer roles.\n */\n onCustomize?: ((member: AccessMember<R>) => void) | undefined;\n /** Replaces a legacy custom grant with `member.resetRole`. */\n onResetToRole?: ((member: AccessMember<R>) => void | Promise<unknown>) | undefined;\n /** Text variant: opens the person sheet. */\n onOpen?: ((member: AccessMember<R>) => void) | undefined;\n onResendInvite?: ((member: AccessMember<R>) => void) | undefined;\n onRevokeInvite?: ((member: AccessMember<R>) => void) | undefined;\n /** When set, nothing can be changed and this line says why. */\n readOnlyReason?: string | undefined;\n loading?: boolean | undefined;\n /** Skeleton rows while loading. Default 4. */\n loadingRows?: number | undefined;\n /** What happened, what to do next, and an optional retry. Replaces the list. */\n error?: FailedLoad | undefined;\n /** Members whose role is being saved elsewhere, shown with a spinner. */\n savingIds?: readonly string[] | undefined;\n /** Shown when only you have access. */\n emptyMessage?: ReactNode | undefined;\n /** \"Remove from workspace\" or \"Remove from organization\". */\n removeLabel?: string | undefined;\n /** What the list sits on, so the matrix's sticky column matches. Default \"bg\". */\n canvas?: \"bg\" | \"surface\" | undefined;\n /** Adds \"No access\" to role choices (matrix, person sheet). */\n noAccessLabel?: string | undefined;\n className?: string | undefined;\n}\n\n/** Service accounts go in their own subgroup, after the people. */\nexport function groupAccessMembers<R extends string>(\n members: readonly AccessMember<R>[],\n): { people: AccessMember<R>[]; services: AccessMember<R>[] } {\n const people = members.filter((member) => member.kind !== \"service\");\n const services = members.filter((member) => member.kind === \"service\");\n // You first, then owners, then everyone else in the order the server sent.\n const rank = (member: AccessMember<R>) => (member.isYou ? 0 : member.isOwner ? 1 : 2);\n return {\n people: people\n .map((member, index) => ({ member, index }))\n .sort((a, b) => rank(a.member) - rank(b.member) || a.index - b.index)\n .map(({ member }) => member),\n services,\n };\n}\n\n/** Why a member can't be removed, or null when they can. */\nexport function removeBlockedReason(member: AccessMember): string | null {\n if (member.removeLockedReason) return member.removeLockedReason;\n if (member.isYou && !member.managesOwnAccess) return \"You can't remove yourself here.\";\n if (member.isOwner) return \"Owners always have access.\";\n return null;\n}\n\nfunction isInvite(member: AccessMember): boolean {\n return member.status === \"invited\" || member.status === \"invite_failed\";\n}\n\n/* ---------------------------------------------------------------- pieces */\n\nfunction MemberAvatar({ member }: { member: AccessMember }) {\n if (member.kind === \"service\") {\n return (\n <span\n aria-hidden=\"true\"\n className=\"grid size-8 shrink-0 place-items-center rounded-[10px] border border-border bg-surface-2 text-fg-muted\"\n >\n <BotIcon className=\"size-4\" />\n </span>\n );\n }\n // Someone who hasn't joined yet: a dashed outline, the same initials.\n const pending = isInvite(member);\n return (\n <Avatar aria-hidden=\"true\">\n <AvatarFallback\n className={cn(\n \"text-xs font-semibold\",\n pending\n ? \"border border-dashed border-border-strong bg-transparent text-fg-subtle\"\n : \"bg-surface-2 text-fg-muted\",\n )}\n >\n {member.initials}\n </AvatarFallback>\n </Avatar>\n );\n}\n\nfunction MemberIdentity({\n member,\n roles,\n onResetToRole,\n readOnly,\n}: {\n member: AccessMember<string>;\n roles: readonly RoleOption<string>[];\n onResetToRole?: ((member: AccessMember<string>) => void | Promise<unknown>) | undefined;\n readOnly: boolean;\n}) {\n const showStatus = member.status && member.status !== \"active\" && member.statusLabel;\n const secondary = member.kind === \"service\" ? \"Service account\" : member.email;\n const resetTo =\n member.role === \"custom\" && member.resetRole ? roleLabel(roles, member.resetRole) : null;\n return (\n <div className=\"min-w-0\">\n {/* One line: the name truncates before the chip wraps. */}\n <div className=\"flex min-w-0 items-center gap-2\">\n <span className=\"min-w-0 truncate text-sm leading-5 font-medium text-fg\">\n {member.name}\n </span>\n {member.isYou ? <MetaChip variant=\"outline\">You</MetaChip> : null}\n </div>\n {secondary || member.tag ? (\n // Like a ListRow meta line: the separator trails its item, so a\n // wrapped tag (\"Only owner\") starts its own line cleanly.\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-1.5 text-xs leading-4.5 text-fg-muted\">\n {secondary ? (\n <span className=\"inline-flex max-w-full min-w-0 items-center gap-1.5\">\n <span className=\"min-w-0 truncate\">{secondary}</span>\n {member.tag ? (\n <span aria-hidden=\"true\" className=\"text-fg-subtle\">\n ·\n </span>\n ) : null}\n </span>\n ) : null}\n {member.tag ? <span className=\"whitespace-nowrap\">{member.tag}</span> : null}\n </div>\n ) : null}\n {showStatus ? (\n <div className=\"mt-0.5 flex min-w-0\">\n <StatusBadge variant=\"dot\" status={member.status} className=\"min-w-0\">\n {member.statusLabel}\n </StatusBadge>\n </div>\n ) : null}\n {member.role === \"custom\" ? (\n // The reset link carries its own icon, so it needs no separator (and no\n // dot is left dangling when it wraps under the text on narrow rows).\n <div className=\"flex min-w-0 flex-wrap items-center gap-x-2 text-xs leading-4.5 text-fg-muted\">\n <span className=\"whitespace-nowrap\">Hand-picked permissions</span>\n {resetTo && onResetToRole && !readOnly ? (\n <button\n type=\"button\"\n onClick={() => void onResetToRole(member)}\n className=\"inline-flex items-center gap-1 rounded-[6px] font-medium whitespace-nowrap og-link pointer-coarse:min-h-11\"\n >\n <RotateCcwIcon aria-hidden=\"true\" className=\"size-3\" />\n Reset to {resetTo}\n </button>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nfunction RowMenu({\n member,\n removeLabel,\n onRemove,\n onCustomize,\n onResetToRole,\n onResendInvite,\n onRevokeInvite,\n roles,\n}: {\n member: AccessMember<string>;\n removeLabel: string;\n onRemove?: ((member: AccessMember<string>) => void) | undefined;\n onCustomize?: ((member: AccessMember<string>) => void) | undefined;\n onResetToRole?: ((member: AccessMember<string>) => void | Promise<unknown>) | undefined;\n onResendInvite?: ((member: AccessMember<string>) => void) | undefined;\n onRevokeInvite?: ((member: AccessMember<string>) => void) | undefined;\n roles: readonly RoleOption<string>[];\n}) {\n const invite = isInvite(member);\n const blocked = removeBlockedReason(member);\n const canReset = member.role === \"custom\" && member.resetRole && onResetToRole;\n // Custom permissions follow the same rule as the role: never your own.\n const canCustomize =\n Boolean(onCustomize) && (!member.isYou || member.managesOwnAccess) && !member.isOwner;\n const hasItems = invite\n ? Boolean(onResendInvite || onRevokeInvite)\n : Boolean((onRemove && !blocked) || canReset || canCustomize);\n if (!hasItems) return <span aria-hidden=\"true\" className=\"size-8\" />;\n return (\n <DropdownMenu modal={false}>\n <DropdownMenuTrigger asChild>\n <button\n type=\"button\"\n aria-label={`More actions for ${member.name}`}\n className=\"grid size-8 shrink-0 place-items-center rounded-[10px] text-fg-subtle transition-colors duration-[120ms] outline-hidden hover:bg-surface-3 hover:text-fg focus-visible:ring-2 focus-visible:ring-brand/55 data-[state=open]:bg-surface-3 data-[state=open]:text-fg pointer-coarse:size-11\"\n >\n <MoreHorizontalIcon aria-hidden=\"true\" className=\"size-4\" />\n </button>\n </DropdownMenuTrigger>\n {/* Same menu as a ListRow's ⋯: default content, icon + verb per item. */}\n <DropdownMenuContent align=\"end\" className=\"min-w-44\">\n {invite ? (\n <>\n {onResendInvite ? (\n <DropdownMenuItem onSelect={() => onResendInvite(member)}>\n <MailIcon />\n Resend invitation\n </DropdownMenuItem>\n ) : null}\n {onRevokeInvite ? (\n <DropdownMenuItem variant=\"destructive\" onSelect={() => onRevokeInvite(member)}>\n <XIcon />\n Revoke invitation\n </DropdownMenuItem>\n ) : null}\n </>\n ) : (\n <>\n {canReset ? (\n <DropdownMenuItem onSelect={() => void onResetToRole!(member)}>\n <RotateCcwIcon />\n Reset to {roleLabel(roles, member.resetRole!)}\n </DropdownMenuItem>\n ) : null}\n {canCustomize ? (\n <DropdownMenuItem onSelect={() => onCustomize!(member)}>\n <SlidersHorizontalIcon />\n Custom permissions…\n </DropdownMenuItem>\n ) : null}\n {(canReset || canCustomize) && onRemove && !blocked ? <DropdownMenuSeparator /> : null}\n {onRemove && !blocked ? (\n <DropdownMenuItem variant=\"destructive\" onSelect={() => onRemove(member)}>\n <UserMinusIcon />\n {removeLabel}\n </DropdownMenuItem>\n ) : null}\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n\nfunction roleLockReason(\n member: AccessMember,\n readOnlyReason: string | undefined,\n): string | undefined {\n if (readOnlyReason) return undefined; // read-only lists show text, not locked controls\n if (member.roleLockedReason) return member.roleLockedReason;\n if (member.isYou && !member.managesOwnAccess) {\n return \"You can't change your own role. Ask another admin.\";\n }\n return undefined;\n}\n\n/* ---------------------------------------------------------------- states */\n\nfunction LoadingRows({ rows, variant }: { rows: number; variant: AccessListVariant }) {\n return (\n <ul aria-hidden=\"true\" className=\"flex flex-col divide-y divide-border\">\n {Array.from({ length: rows }, (_, index) => (\n // oxlint-disable-next-line react/no-array-index-key -- static placeholders\n <li key={index} className=\"flex min-h-14 items-center gap-3 px-3 py-3\">\n <Skeleton className=\"size-8 shrink-0 rounded-full bg-surface-3\" />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <Skeleton className=\"h-3.5 w-36 max-w-[60%] rounded-full bg-surface-3\" />\n <Skeleton className=\"h-3 w-48 max-w-[80%] rounded-full bg-surface-3\" />\n </div>\n {variant === \"inline\" ? (\n <Skeleton className=\"hidden h-8 w-[12.5rem] shrink-0 rounded-[10px] bg-surface-3 @md/access:block\" />\n ) : (\n <Skeleton className=\"h-3.5 w-20 shrink-0 rounded-full bg-surface-3\" />\n )}\n </li>\n ))}\n </ul>\n );\n}\n\nfunction ErrorState({ error }: { error: NonNullable<AccessListProps[\"error\"]> }) {\n const failure = failedLoadParts(error);\n return (\n <ErrorMessage\n title={error.message}\n details={failure.details}\n align=\"center\"\n announce\n action={\n error.onRetry ? (\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={error.onRetry}>\n Try again\n </Button>\n ) : undefined\n }\n >\n {failure.detail}\n </ErrorMessage>\n );\n}\n\n/* ---------------------------------------------------------------- variants */\n\ninterface RowProps {\n member: AccessMember<string>;\n props: AccessListProps<string>;\n}\n\nfunction InlineRow({ member, props }: RowProps) {\n const { roles, onRoleChange, readOnlyReason, noAccessLabel } = props;\n const readOnly = Boolean(readOnlyReason);\n const lockReason = roleLockReason(member, readOnlyReason);\n return (\n <li className=\"grid min-h-14 grid-cols-[2rem_minmax(0,1fr)_auto] items-center gap-x-3 gap-y-2 px-3 py-3 @md/access:grid-cols-[2rem_minmax(0,1fr)_12.5rem_2rem]\">\n <div className=\"row-start-1 self-start @md/access:self-center\">\n <MemberAvatar member={member} />\n </div>\n <div className=\"row-start-1 min-w-0\">\n <MemberIdentity\n member={member}\n roles={roles}\n onResetToRole={props.onResetToRole}\n readOnly={readOnly}\n />\n </div>\n <div className=\"col-span-2 col-start-2 row-start-2 min-w-0 @md/access:col-span-1 @md/access:col-start-3 @md/access:row-start-1\">\n {readOnly ? (\n <RoleSelect\n variant=\"text\"\n roles={roles}\n value={member.role}\n noAccessLabel={noAccessLabel}\n />\n ) : (\n <RoleSelect\n roles={roles}\n value={member.role}\n subjectName={member.name}\n noAccessLabel={noAccessLabel}\n disabledReason={lockReason}\n pending={props.savingIds?.includes(member.id)}\n onValueChange={onRoleChange ? (role) => onRoleChange(member, role) : undefined}\n className=\"w-full max-w-[12.5rem] @md/access:max-w-none\"\n />\n )}\n </div>\n <div className=\"col-start-3 row-start-1 flex justify-end @md/access:col-start-4\">\n {readOnly ? null : (\n <RowMenu\n member={member}\n roles={roles}\n removeLabel={props.removeLabel ?? \"Remove from workspace\"}\n onRemove={props.onRemove}\n onCustomize={props.onCustomize}\n onResetToRole={props.onResetToRole}\n onResendInvite={props.onResendInvite}\n onRevokeInvite={props.onRevokeInvite}\n />\n )}\n </div>\n </li>\n );\n}\n\nfunction TextRow({ member, props }: RowProps) {\n const { roles, onOpen, noAccessLabel } = props;\n const content = (\n <>\n <MemberAvatar member={member} />\n <div className=\"min-w-0 flex-1\">\n <MemberIdentity member={member} roles={roles} readOnly />\n </div>\n <span\n className={cn(\n \"shrink-0 text-sm\",\n member.role === null ? \"text-fg-subtle\" : \"text-fg-muted\",\n )}\n >\n {roleLabel(roles, member.role, { noAccessLabel })}\n </span>\n {onOpen ? (\n <ChevronRightIcon aria-hidden=\"true\" className=\"size-4 shrink-0 text-fg-subtle\" />\n ) : null}\n </>\n );\n return (\n <li className=\"min-w-0\">\n {onOpen ? (\n <button\n type=\"button\"\n onClick={() => onOpen(member)}\n aria-label={`${member.name}, ${roleLabel(roles, member.role, { noAccessLabel })}`}\n className=\"flex min-h-14 w-full min-w-0 items-center gap-3 px-3 py-3 text-left transition-colors duration-[120ms] outline-hidden hover:bg-surface-2 focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-brand/55\"\n >\n {content}\n </button>\n ) : (\n <div className=\"flex min-h-14 min-w-0 items-center gap-3 px-3 py-3\">{content}</div>\n )}\n </li>\n );\n}\n\nfunction ListVariant({ props }: { props: AccessListProps<string> }) {\n const { people, services } = groupAccessMembers(props.members);\n const servicesId = useId();\n const Row = props.variant === \"text\" ? TextRow : InlineRow;\n // Both list layouts use the resource row's hairlines (see ListRow).\n const listClass = \"flex min-w-0 flex-col divide-y divide-border\";\n const onlyYou = people.length <= 1 && services.length === 0;\n return (\n <>\n <ul aria-label={props.label} className={listClass}>\n {people.map((member) => (\n <Row key={member.id} member={member} props={props} />\n ))}\n </ul>\n {onlyYou && props.emptyMessage ? (\n <p className=\"border-t border-border px-3 pt-3 text-sm text-fg-muted\">\n {props.emptyMessage}\n </p>\n ) : null}\n {services.length > 0 ? (\n <div className=\"border-t border-border pt-4\">\n <h3 id={servicesId} className=\"px-3 text-xs leading-4.5 font-medium text-fg\">\n Service accounts\n </h3>\n <ul aria-labelledby={servicesId} className={cn(listClass, \"mt-1\")}>\n {services.map((member) => (\n <Row key={member.id} member={member} props={props} />\n ))}\n </ul>\n </div>\n ) : null}\n </>\n );\n}\n\nfunction MatrixVariant({ props }: { props: AccessListProps<string> }) {\n const { roles, scopes = [], onRoleChange, readOnlyReason, noAccessLabel = \"No access\" } = props;\n const { people, services } = groupAccessMembers(props.members);\n const readOnly = Boolean(readOnlyReason);\n const cellClass = \"border-b border-border px-1.5 py-1.5 align-middle\";\n // Sticky cells need an opaque fill that matches what the list sits on.\n const sticky = props.canvas === \"surface\" ? \"bg-surface\" : \"bg-bg\";\n const renderRow = (member: AccessMember<string>) => {\n const lockReason = roleLockReason(member, readOnlyReason);\n return (\n <tr key={member.id}>\n <th\n scope=\"row\"\n className={cn(cellClass, sticky, \"sticky left-0 z-10 pr-4 pl-0 text-left font-normal\")}\n >\n <div className=\"flex min-w-0 items-center gap-3\">\n <MemberAvatar member={member} />\n <MemberIdentity member={member} roles={roles} readOnly />\n </div>\n </th>\n {scopes.map((scope) => {\n const value = member.grants?.[scope.id] ?? null;\n return (\n <td key={scope.id} className={cellClass}>\n {readOnly ? (\n <span className=\"px-2\">\n <RoleSelect\n variant=\"text\"\n roles={roles}\n value={value}\n noAccessLabel={noAccessLabel}\n />\n </span>\n ) : (\n <RoleSelect\n variant=\"cell\"\n roles={roles}\n value={value}\n noAccessLabel={noAccessLabel}\n subjectName={member.name}\n aria-label={`${member.name} in ${scope.label}`}\n disabledReason={lockReason}\n align=\"start\"\n onValueChange={\n onRoleChange ? (role) => onRoleChange(member, role, scope.id) : undefined\n }\n />\n )}\n </td>\n );\n })}\n </tr>\n );\n };\n return (\n <div\n role=\"region\"\n aria-label={props.label}\n // A scrollable region must be reachable by keyboard.\n tabIndex={0}\n className=\"-mx-1 min-w-0 overflow-x-auto px-1 pb-1\"\n >\n <table\n className=\"w-full table-fixed border-separate border-spacing-0 text-sm\"\n style={{ minWidth: `${16 + scopes.length * 11}rem` }}\n >\n <colgroup>\n <col className=\"w-52 @md/access:w-64\" />\n {scopes.map((scope) => (\n <col key={scope.id} className=\"w-44\" />\n ))}\n </colgroup>\n <thead>\n <tr>\n <th\n scope=\"col\"\n className={cn(\n sticky,\n \"sticky left-0 z-10 border-b border-border pr-4 pb-2 text-left text-xs leading-4.5 font-medium text-fg-subtle\",\n )}\n >\n Person\n </th>\n {scopes.map((scope) => (\n <th\n key={scope.id}\n scope=\"col\"\n className=\"truncate border-b border-border px-3.5 pb-2 text-left text-xs leading-4.5 font-medium text-fg-subtle\"\n >\n {scope.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {people.map(renderRow)}\n {services.length > 0 ? (\n <tr>\n <th\n scope=\"colgroup\"\n colSpan={scopes.length + 1}\n className={cn(\n sticky,\n \"border-b border-border pt-4 pb-1.5 text-left text-xs leading-4.5 font-medium text-fg-subtle\",\n )}\n >\n Service accounts\n </th>\n </tr>\n ) : null}\n {services.map(renderRow)}\n </tbody>\n </table>\n </div>\n );\n}\n\n/** Who has access, with one role each. */\nexport function AccessList<R extends string>(props: AccessListProps<R>) {\n const { variant = \"inline\", loading, loadingRows = 4, error, readOnlyReason, className } = props;\n // Rows are generic over the role id; internally they only pass ids through.\n const erased = { ...props, variant } as unknown as AccessListProps<string>;\n return (\n <div\n data-variant={variant}\n aria-busy={loading || undefined}\n className={cn(\"@container/access min-w-0\", className)}\n >\n {readOnlyReason && !loading && !error ? (\n <p className=\"mb-1 flex min-w-0 px-3\">\n <InlineDisabledReason>{readOnlyReason}</InlineDisabledReason>\n </p>\n ) : null}\n {loading ? (\n <>\n <span className=\"sr-only\">Loading who has access</span>\n <LoadingRows rows={loadingRows} variant={variant} />\n </>\n ) : error ? (\n <ErrorState error={error} />\n ) : variant === \"matrix\" ? (\n <MatrixVariant props={erased} />\n ) : (\n <ListVariant props={erased} />\n )}\n </div>\n );\n}\n"],"mappings":"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","names":[]}
@@ -25,9 +25,12 @@ export declare function isPermissionDenied(error: unknown): boolean;
25
25
  export declare function apiErrorAdvice(error: unknown): string;
26
26
  /**
27
27
  * The text to show for a failed action where only one line fits (a toast
28
- * description, a form error). API errors become advice, followed by the
29
- * request reference for support; an error the app wrote itself keeps its own
30
- * message. Next to Technical details (which already show the reference), use
28
+ * description, a form error). API errors become advice; an error the app
29
+ * wrote itself keeps its own message. An expected refusal (a 4xx) is only
30
+ * what to do. An unexpected failure ends with "Reference: <id>." for support,
31
+ * which the toast and the shared error renderers turn into a discreet "Copy
32
+ * details" or Technical details instead of printing it. Next to Technical
33
+ * details (which already show the reference), use
31
34
  * `userErrorTextWithoutReference`.
32
35
  */
33
36
  export declare function userErrorText(error: unknown, fallback?: string): string;
@@ -9,7 +9,8 @@ import {
9
9
  userErrorText,
10
10
  userErrorTextWithoutReference,
11
11
  userFacingError
12
- } from "../chunk-L4OF77LE.js";
12
+ } from "../chunk-O4OOG3D6.js";
13
+ import "../chunk-FYWT2O76.js";
13
14
  export {
14
15
  apiErrorAdvice,
15
16
  apiErrorDetails,
@@ -26,16 +26,18 @@ import {
26
26
  validateCadence,
27
27
  zonedParts,
28
28
  zonedTimeToUtc
29
- } from "../chunk-7WIDB4PL.js";
30
- import "../chunk-2VB2O4FQ.js";
29
+ } from "../chunk-6JHU2UBS.js";
30
+ import "../chunk-3CPWWGNK.js";
31
31
  import "../chunk-5OTQA7CM.js";
32
- import "../chunk-AOHU6O3M.js";
32
+ import "../chunk-MVW6HNPI.js";
33
+ import "../chunk-V4Z4B2E3.js";
34
+ import "../chunk-FYWT2O76.js";
33
35
  import "../chunk-USG4XNMA.js";
34
36
  import "../chunk-EDYVC3U3.js";
35
37
  import "../chunk-UD6AAZSC.js";
36
38
  import "../chunk-XEA5BCMA.js";
37
39
  import "../chunk-TXS65BB2.js";
38
- import "../chunk-TNUSPXPW.js";
40
+ import "../chunk-7T2ZE3VT.js";
39
41
  export {
40
42
  CadencePicker,
41
43
  CadencePreview,
@@ -7,12 +7,14 @@ import {
7
7
  SELECTED_SURFACE_CLASS,
8
8
  SelectedCheck,
9
9
  selectableSurface
10
- } from "../chunk-APW4T4SW.js";
11
- import "../chunk-AOHU6O3M.js";
10
+ } from "../chunk-YENLNISG.js";
11
+ import "../chunk-MVW6HNPI.js";
12
12
  import "../chunk-ZMBJPN4T.js";
13
+ import "../chunk-V4Z4B2E3.js";
14
+ import "../chunk-FYWT2O76.js";
13
15
  import "../chunk-EDYVC3U3.js";
14
16
  import "../chunk-TXS65BB2.js";
15
- import "../chunk-TNUSPXPW.js";
17
+ import "../chunk-7T2ZE3VT.js";
16
18
  export {
17
19
  ChoiceCard,
18
20
  ChoiceCards,
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  ConfirmDialog,
4
4
  destructiveActionFocusTarget
5
- } from "../chunk-E6SQKHAU.js";
5
+ } from "../chunk-SIRLACNZ.js";
6
6
  import "../chunk-ZQCND77P.js";
7
7
  import "../chunk-HD5X76TP.js";
8
8
  import "../chunk-7QQN3KNP.js";
9
9
  import "../chunk-UD6AAZSC.js";
10
10
  import "../chunk-XEA5BCMA.js";
11
11
  import "../chunk-TXS65BB2.js";
12
- import "../chunk-TNUSPXPW.js";
12
+ import "../chunk-7T2ZE3VT.js";
13
13
  export {
14
14
  ConfirmDialog,
15
15
  destructiveActionFocusTarget
@@ -4,14 +4,16 @@ import {
4
4
  copyText,
5
5
  truncateMiddle,
6
6
  useCopyToClipboard
7
- } from "../chunk-XYBV4ZJQ.js";
8
- import "../chunk-AOHU6O3M.js";
7
+ } from "../chunk-2YUOVM3G.js";
8
+ import "../chunk-MVW6HNPI.js";
9
+ import "../chunk-V4Z4B2E3.js";
10
+ import "../chunk-FYWT2O76.js";
9
11
  import "../chunk-7QQN3KNP.js";
10
12
  import "../chunk-EDYVC3U3.js";
11
13
  import "../chunk-UD6AAZSC.js";
12
14
  import "../chunk-XEA5BCMA.js";
13
15
  import "../chunk-TXS65BB2.js";
14
- import "../chunk-TNUSPXPW.js";
16
+ import "../chunk-7T2ZE3VT.js";
15
17
  export {
16
18
  CopyField,
17
19
  copyText,
@@ -9,7 +9,7 @@ import {
9
9
  import {
10
10
  BackLink,
11
11
  DetailPage
12
- } from "../chunk-CQH4FWYA.js";
12
+ } from "../chunk-6PZ7OBYU.js";
13
13
  import "../chunk-ZBIXBQNI.js";
14
14
  import "../chunk-K4DHWGCT.js";
15
15
  import "../chunk-HJO32O7Z.js";
@@ -21,7 +21,7 @@ import "../chunk-7QQN3KNP.js";
21
21
  import "../chunk-UD6AAZSC.js";
22
22
  import "../chunk-XEA5BCMA.js";
23
23
  import "../chunk-TXS65BB2.js";
24
- import "../chunk-TNUSPXPW.js";
24
+ import "../chunk-7T2ZE3VT.js";
25
25
  export {
26
26
  BackLink,
27
27
  DetailAside,
@@ -16,7 +16,7 @@ import {
16
16
  DetailSheetTrigger,
17
17
  DetailSkeleton,
18
18
  useDetailPresentation
19
- } from "../chunk-CQH4FWYA.js";
19
+ } from "../chunk-6PZ7OBYU.js";
20
20
  import "../chunk-ZBIXBQNI.js";
21
21
  import "../chunk-K4DHWGCT.js";
22
22
  import "../chunk-HJO32O7Z.js";
@@ -28,7 +28,7 @@ import "../chunk-7QQN3KNP.js";
28
28
  import "../chunk-UD6AAZSC.js";
29
29
  import "../chunk-XEA5BCMA.js";
30
30
  import "../chunk-TXS65BB2.js";
31
- import "../chunk-TNUSPXPW.js";
31
+ import "../chunk-7T2ZE3VT.js";
32
32
  export {
33
33
  BackLink,
34
34
  DetailBody,
@@ -6,11 +6,12 @@ import {
6
6
  diffStats,
7
7
  diffWords,
8
8
  failedLoadParts
9
- } from "../chunk-SRFARKXC.js";
10
- import "../chunk-WHWUWN2X.js";
11
- import "../chunk-L4OF77LE.js";
9
+ } from "../chunk-K56XV3C3.js";
10
+ import "../chunk-IKXNLWAL.js";
11
+ import "../chunk-O4OOG3D6.js";
12
12
  import "../chunk-HJO32O7Z.js";
13
13
  import "../chunk-ZMBJPN4T.js";
14
+ import "../chunk-FYWT2O76.js";
14
15
  import "../chunk-7QQN3KNP.js";
15
16
  import "../chunk-TXS65BB2.js";
16
17
  export {
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import {
3
3
  Disclosure
4
- } from "../chunk-AB5MBIXY.js";
4
+ } from "../chunk-I4MRDSUF.js";
5
5
  import "../chunk-NKFTYEON.js";
6
- import "../chunk-CQH4FWYA.js";
6
+ import "../chunk-6PZ7OBYU.js";
7
7
  import "../chunk-ZBIXBQNI.js";
8
8
  import "../chunk-K4DHWGCT.js";
9
9
  import "../chunk-HJO32O7Z.js";
@@ -15,7 +15,7 @@ import "../chunk-7QQN3KNP.js";
15
15
  import "../chunk-UD6AAZSC.js";
16
16
  import "../chunk-XEA5BCMA.js";
17
17
  import "../chunk-TXS65BB2.js";
18
- import "../chunk-TNUSPXPW.js";
18
+ import "../chunk-7T2ZE3VT.js";
19
19
  export {
20
20
  Disclosure
21
21
  };
@@ -1,11 +1,13 @@
1
1
  "use client";
2
2
  import {
3
3
  EmailChipsInput
4
- } from "../chunk-73NXYYWE.js";
5
- import "../chunk-AOHU6O3M.js";
4
+ } from "../chunk-O732GAFC.js";
5
+ import "../chunk-MVW6HNPI.js";
6
+ import "../chunk-V4Z4B2E3.js";
7
+ import "../chunk-FYWT2O76.js";
6
8
  import "../chunk-EDYVC3U3.js";
7
9
  import "../chunk-TXS65BB2.js";
8
- import "../chunk-TNUSPXPW.js";
10
+ import "../chunk-7T2ZE3VT.js";
9
11
  export {
10
12
  EmailChipsInput
11
13
  };
@@ -2,8 +2,9 @@
2
2
  import {
3
3
  ErrorMessage,
4
4
  TechnicalDetails
5
- } from "../chunk-WHWUWN2X.js";
5
+ } from "../chunk-IKXNLWAL.js";
6
6
  import "../chunk-ZMBJPN4T.js";
7
+ import "../chunk-FYWT2O76.js";
7
8
  import "../chunk-TXS65BB2.js";
8
9
  export {
9
10
  ErrorMessage,
@@ -0,0 +1,15 @@
1
+ export interface ErrorTextParts {
2
+ /** The text without an "API 409:" prefix or the reference. */
3
+ text: string;
4
+ /** The request reference, for an unexpected failure only. */
5
+ reference: string | undefined;
6
+ }
7
+ /** True for a 4xx: the request was refused for a reason the person can act on. */
8
+ export declare function isExpectedApiStatus(status: number | undefined): boolean;
9
+ /** The status in a raw "API 409: ..." message, if it has one. */
10
+ export declare function apiStatusInText(text: string): number | undefined;
11
+ /**
12
+ * Splits text meant for a person into what to show and the reference to offer
13
+ * discreetly. A raw "API 4xx: ..." message loses its prefix and its reference.
14
+ */
15
+ export declare function splitErrorText(text: string): ErrorTextParts;
@@ -0,0 +1,10 @@
1
+ import { type ReactNode } from "react";
2
+ /**
3
+ * One line of error text from `userErrorText`. An unexpected failure's
4
+ * "Reference: <id>." becomes a small "Copy details" instead of printed text,
5
+ * and a raw "API 409:" prefix never shows. Anything that is not a string
6
+ * renders as is.
7
+ */
8
+ export declare function ErrorText({ children }: {
9
+ children?: ReactNode;
10
+ }): import("react").JSX.Element;
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import {
3
+ ErrorText
4
+ } from "../chunk-V4Z4B2E3.js";
5
+ import "../chunk-FYWT2O76.js";
6
+ export {
7
+ ErrorText
8
+ };
9
+ //# sourceMappingURL=error-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/dist/ui/field.js CHANGED
@@ -8,10 +8,12 @@ import {
8
8
  TextInput,
9
9
  useField,
10
10
  useFieldControlProps
11
- } from "../chunk-AOHU6O3M.js";
11
+ } from "../chunk-MVW6HNPI.js";
12
+ import "../chunk-V4Z4B2E3.js";
13
+ import "../chunk-FYWT2O76.js";
12
14
  import "../chunk-EDYVC3U3.js";
13
15
  import "../chunk-TXS65BB2.js";
14
- import "../chunk-TNUSPXPW.js";
16
+ import "../chunk-7T2ZE3VT.js";
15
17
  export {
16
18
  Checkbox,
17
19
  CheckboxField,
@@ -3,19 +3,21 @@ import {
3
3
  FLUSH_DETAIL_PAGE_CLASS,
4
4
  FLUSH_FORM_PAGE_CLASS,
5
5
  FlushFormPage
6
- } from "../chunk-5QM2WPKV.js";
7
- import "../chunk-IGVVXLKJ.js";
8
- import "../chunk-WHWUWN2X.js";
9
- import "../chunk-L4OF77LE.js";
6
+ } from "../chunk-4E3ZJRTZ.js";
7
+ import "../chunk-ZYAZUPPV.js";
8
+ import "../chunk-IKXNLWAL.js";
9
+ import "../chunk-O4OOG3D6.js";
10
10
  import "../chunk-HJO32O7Z.js";
11
11
  import "../chunk-HD5X76TP.js";
12
12
  import "../chunk-ZMBJPN4T.js";
13
- import "../chunk-WLEDGIVS.js";
13
+ import "../chunk-FSOQDUCG.js";
14
+ import "../chunk-V4Z4B2E3.js";
15
+ import "../chunk-FYWT2O76.js";
14
16
  import "../chunk-7QQN3KNP.js";
15
17
  import "../chunk-UD6AAZSC.js";
16
18
  import "../chunk-XEA5BCMA.js";
17
19
  import "../chunk-TXS65BB2.js";
18
- import "../chunk-TNUSPXPW.js";
20
+ import "../chunk-7T2ZE3VT.js";
19
21
  export {
20
22
  FLUSH_DETAIL_PAGE_CLASS,
21
23
  FLUSH_FORM_PAGE_CLASS,
@@ -7,18 +7,20 @@ import {
7
7
  FormPage,
8
8
  firstFormField,
9
9
  useFormOverlay
10
- } from "../chunk-IGVVXLKJ.js";
11
- import "../chunk-WHWUWN2X.js";
12
- import "../chunk-L4OF77LE.js";
10
+ } from "../chunk-ZYAZUPPV.js";
11
+ import "../chunk-IKXNLWAL.js";
12
+ import "../chunk-O4OOG3D6.js";
13
13
  import "../chunk-HJO32O7Z.js";
14
14
  import "../chunk-HD5X76TP.js";
15
15
  import "../chunk-ZMBJPN4T.js";
16
- import "../chunk-WLEDGIVS.js";
16
+ import "../chunk-FSOQDUCG.js";
17
+ import "../chunk-V4Z4B2E3.js";
18
+ import "../chunk-FYWT2O76.js";
17
19
  import "../chunk-7QQN3KNP.js";
18
20
  import "../chunk-UD6AAZSC.js";
19
21
  import "../chunk-XEA5BCMA.js";
20
22
  import "../chunk-TXS65BB2.js";
21
- import "../chunk-TNUSPXPW.js";
23
+ import "../chunk-7T2ZE3VT.js";
22
24
  export {
23
25
  FormDialog,
24
26
  FormDialogChromeProvider,
@@ -5,11 +5,11 @@ import {
5
5
  RowIndicator,
6
6
  RowList,
7
7
  useRowListVariant
8
- } from "../chunk-G6ZZC543.js";
8
+ } from "../chunk-54YW6SZZ.js";
9
9
  import "../chunk-GM3LG6BG.js";
10
10
  import "../chunk-K4DHWGCT.js";
11
11
  import "../chunk-HJO32O7Z.js";
12
- import "../chunk-ELL6HSYR.js";
12
+ import "../chunk-53AGXXZM.js";
13
13
  import "../chunk-5OTQA7CM.js";
14
14
  import "../chunk-ZMBJPN4T.js";
15
15
  import "../chunk-UX3XHFRX.js";
@@ -17,7 +17,7 @@ import "../chunk-X5NTDJIO.js";
17
17
  import "../chunk-UD6AAZSC.js";
18
18
  import "../chunk-XEA5BCMA.js";
19
19
  import "../chunk-TXS65BB2.js";
20
- import "../chunk-TNUSPXPW.js";
20
+ import "../chunk-7T2ZE3VT.js";
21
21
  export {
22
22
  ListRow,
23
23
  ListRowSkeleton,
@@ -1,11 +1,12 @@
1
1
  "use client";
2
2
  import {
3
3
  ErrorMessage
4
- } from "../chunk-WHWUWN2X.js";
4
+ } from "../chunk-IKXNLWAL.js";
5
5
  import {
6
6
  apiErrorFacts
7
- } from "../chunk-L4OF77LE.js";
7
+ } from "../chunk-O4OOG3D6.js";
8
8
  import "../chunk-ZMBJPN4T.js";
9
+ import "../chunk-FYWT2O76.js";
9
10
  import {
10
11
  Button
11
12
  } from "../chunk-7QQN3KNP.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/load-failure.tsx"],"sourcesContent":["import { RotateCcwIcon } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { ErrorMessage } from \"./error-message\";\nimport { apiErrorFacts } from \"./api-error\";\n\n/** A page or section that could not load, with its server facts and one retry action. */\nexport function LoadFailure({\n title,\n error,\n onRetry,\n}: {\n title: string;\n error: unknown;\n onRetry: () => void;\n}) {\n const { status, reference, serverMessage } = apiErrorFacts(error);\n let message = serverMessage ?? \"\";\n if (message && !/[.!?]$/u.test(message)) message = `${message}.`;\n if (message) message = message.charAt(0).toUpperCase() + message.slice(1);\n return (\n <ErrorMessage\n variant=\"block\"\n align=\"center\"\n title={title}\n reference={reference}\n details={[\n ...(status ? [{ label: \"Status\", value: String(status) }] : []),\n { label: \"Message\", value: message || \"Something went wrong. Try again.\" },\n ]}\n action={\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onRetry}>\n <RotateCcwIcon aria-hidden=\"true\" />\n Try again\n </Button>\n }\n >\n Check your connection, then try again.\n </ErrorMessage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AA8BtB,SACE,KADF;AAxBD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,QAAQ,WAAW,cAAc,IAAI,cAAc,KAAK;AAChE,MAAI,UAAU,iBAAiB;AAC/B,MAAI,WAAW,CAAC,UAAU,KAAK,OAAO,EAAG,WAAU,GAAG,OAAO;AAC7D,MAAI,QAAS,WAAU,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,GAAI,SAAS,CAAC,EAAE,OAAO,UAAU,OAAO,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC;AAAA,QAC7D,EAAE,OAAO,WAAW,OAAO,WAAW,mCAAmC;AAAA,MAC3E;AAAA,MACA,QACE,qBAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,MAAK,MAAK,SAAS,SACzD;AAAA,4BAAC,iBAAc,eAAY,QAAO;AAAA,QAAE;AAAA,SAEtC;AAAA,MAEH;AAAA;AAAA,EAED;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/ui/load-failure.tsx"],"sourcesContent":["import { RotateCcwIcon } from \"lucide-react\";\nimport { Button } from \"./button\";\nimport { ErrorMessage } from \"./error-message\";\nimport { apiErrorFacts } from \"./api-error\";\n\n/** A page or section that could not load, with its server facts and one retry action. */\nexport function LoadFailure({\n title,\n error,\n onRetry,\n}: {\n title: string;\n error: unknown;\n onRetry: () => void;\n}) {\n const { status, reference, serverMessage } = apiErrorFacts(error);\n let message = serverMessage ?? \"\";\n if (message && !/[.!?]$/u.test(message)) message = `${message}.`;\n if (message) message = message.charAt(0).toUpperCase() + message.slice(1);\n return (\n <ErrorMessage\n variant=\"block\"\n align=\"center\"\n title={title}\n reference={reference}\n details={[\n ...(status ? [{ label: \"Status\", value: String(status) }] : []),\n { label: \"Message\", value: message || \"Something went wrong. Try again.\" },\n ]}\n action={\n <Button type=\"button\" variant=\"outline\" size=\"sm\" onClick={onRetry}>\n <RotateCcwIcon aria-hidden=\"true\" />\n Try again\n </Button>\n }\n >\n Check your connection, then try again.\n </ErrorMessage>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,qBAAqB;AA8BtB,SACE,KADF;AAxBD,SAAS,YAAY;AAAA,EAC1B;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,EAAE,QAAQ,WAAW,cAAc,IAAI,cAAc,KAAK;AAChE,MAAI,UAAU,iBAAiB;AAC/B,MAAI,WAAW,CAAC,UAAU,KAAK,OAAO,EAAG,WAAU,GAAG,OAAO;AAC7D,MAAI,QAAS,WAAU,QAAQ,OAAO,CAAC,EAAE,YAAY,IAAI,QAAQ,MAAM,CAAC;AACxE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,SAAQ;AAAA,MACR,OAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,GAAI,SAAS,CAAC,EAAE,OAAO,UAAU,OAAO,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC;AAAA,QAC7D,EAAE,OAAO,WAAW,OAAO,WAAW,mCAAmC;AAAA,MAC3E;AAAA,MACA,QACE,qBAAC,UAAO,MAAK,UAAS,SAAQ,WAAU,MAAK,MAAK,SAAS,SACzD;AAAA,4BAAC,iBAAc,eAAY,QAAO;AAAA,QAAE;AAAA,SAEtC;AAAA,MAEH;AAAA;AAAA,EAED;AAEJ;","names":[]}
package/dist/ui/notice.js CHANGED
@@ -1,7 +1,9 @@
1
1
  "use client";
2
2
  import {
3
3
  Notice
4
- } from "../chunk-WLEDGIVS.js";
4
+ } from "../chunk-FSOQDUCG.js";
5
+ import "../chunk-V4Z4B2E3.js";
6
+ import "../chunk-FYWT2O76.js";
5
7
  import "../chunk-TXS65BB2.js";
6
8
  export {
7
9
  Notice
@@ -11,12 +11,12 @@ import {
11
11
  timeZoneLabel,
12
12
  toDate,
13
13
  useMinuteNow
14
- } from "../chunk-ELL6HSYR.js";
14
+ } from "../chunk-53AGXXZM.js";
15
15
  import "../chunk-UX3XHFRX.js";
16
16
  import "../chunk-UD6AAZSC.js";
17
17
  import "../chunk-XEA5BCMA.js";
18
18
  import "../chunk-TXS65BB2.js";
19
- import "../chunk-TNUSPXPW.js";
19
+ import "../chunk-7T2ZE3VT.js";
20
20
  export {
21
21
  RelativeTime,
22
22
  RelativeTimeDefaultsContext,