@adecore/agents-react 0.31.11 → 0.32.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 (404) hide show
  1. package/dist/agents/AccountDot.js +57 -6
  2. package/dist/agents/AgentIcon.js +88 -12
  3. package/dist/agents/ModelOptionControl.js +153 -18
  4. package/dist/agents/ProviderLogo.js +49 -4
  5. package/dist/agents/account-limits.js +17 -14
  6. package/dist/agents/accounts.js +99 -67
  7. package/dist/agents/agent-marks.js +5 -3
  8. package/dist/agents/model-name.js +42 -31
  9. package/dist/agents/model-options.js +8 -8
  10. package/dist/agents/model-requirement.js +17 -14
  11. package/dist/agents/option-words.d.ts +7 -0
  12. package/dist/agents/option-words.js +35 -0
  13. package/dist/agents/provider-paths.js +6 -6
  14. package/dist/agents/status-look.js +32 -12
  15. package/dist/chat/account-choice.d.ts +13 -0
  16. package/dist/chat/account-choice.js +90 -20
  17. package/dist/chat/actions.js +126 -59
  18. package/dist/chat/activity.js +5 -5
  19. package/dist/chat/attachments.js +74 -53
  20. package/dist/chat/bookmarks.js +58 -48
  21. package/dist/chat/chat-client.js +344 -263
  22. package/dist/chat/chat-references.js +3 -3
  23. package/dist/chat/composer-effort.d.ts +5 -0
  24. package/dist/chat/composer-effort.js +26 -0
  25. package/dist/chat/composer-send.js +13 -13
  26. package/dist/chat/drafts.js +115 -79
  27. package/dist/chat/forks.js +81 -24
  28. package/dist/chat/guards.js +15 -43
  29. package/dist/chat/index.d.ts +3 -1
  30. package/dist/chat/index.js +3 -2
  31. package/dist/chat/logic/ansi.js +170 -167
  32. package/dist/chat/logic/answers.js +2 -2
  33. package/dist/chat/logic/bookmarks.js +19 -19
  34. package/dist/chat/logic/command-looks.js +138 -96
  35. package/dist/chat/logic/context-usage.js +13 -9
  36. package/dist/chat/logic/continue-after-stop.js +15 -19
  37. package/dist/chat/logic/effort.d.ts +14 -0
  38. package/dist/chat/logic/effort.js +34 -0
  39. package/dist/chat/logic/embedded-code.js +387 -326
  40. package/dist/chat/logic/fork.js +134 -110
  41. package/dist/chat/logic/generated-image.js +54 -23
  42. package/dist/chat/logic/goal.js +28 -20
  43. package/dist/chat/logic/handback.js +6 -6
  44. package/dist/chat/logic/json.js +2 -2
  45. package/dist/chat/logic/limit.js +46 -30
  46. package/dist/chat/logic/picker-entries.d.ts +5 -3
  47. package/dist/chat/logic/picker-entries.js +83 -43
  48. package/dist/chat/logic/resume-compaction.d.ts +14 -1
  49. package/dist/chat/logic/resume-compaction.js +93 -24
  50. package/dist/chat/logic/scrubber.js +188 -136
  51. package/dist/chat/logic/thought.js +13 -16
  52. package/dist/chat/logic/thread-cards.js +60 -48
  53. package/dist/chat/logic/timeline-copy.js +30 -38
  54. package/dist/chat/logic/timeline-target.js +92 -63
  55. package/dist/chat/logic/timeline.js +499 -355
  56. package/dist/chat/logic/tool-catalog.js +54 -34
  57. package/dist/chat/logic/tools.js +106 -82
  58. package/dist/chat/logic/visual-height.js +18 -18
  59. package/dist/chat/logic/visual-viewport.js +6 -3
  60. package/dist/chat/logic/welcome.js +9 -9
  61. package/dist/chat/logic/workflow.js +45 -34
  62. package/dist/chat/mentions.js +149 -109
  63. package/dist/chat/persisted-json.js +51 -54
  64. package/dist/chat/preferences.d.ts +4 -0
  65. package/dist/chat/preferences.js +162 -84
  66. package/dist/chat/prompt-hold.js +9 -9
  67. package/dist/chat/quote.js +21 -30
  68. package/dist/chat/reading-width.js +12 -10
  69. package/dist/chat/recent-messages.js +34 -21
  70. package/dist/chat/resume-compaction-dismissals.js +25 -5
  71. package/dist/chat/runtime-modes.js +3 -3
  72. package/dist/chat/send-key.js +11 -7
  73. package/dist/chat/stash.js +89 -69
  74. package/dist/chat/subagent-conversation.js +181 -139
  75. package/dist/chat/subagent-list.js +65 -67
  76. package/dist/chat/subagent-support.js +12 -7
  77. package/dist/chat/subagent-view.js +132 -44
  78. package/dist/chat/thumbnails.js +88 -60
  79. package/dist/chat/timeline-flash.js +24 -12
  80. package/dist/chat/timeline-scroll.js +116 -86
  81. package/dist/chat/ui/AccountPill.js +126 -15
  82. package/dist/chat/ui/AnsiOutput.js +62 -6
  83. package/dist/chat/ui/BookmarkMarker.js +231 -41
  84. package/dist/chat/ui/BookmarkSubmenu.js +165 -18
  85. package/dist/chat/ui/ChatActivity.js +649 -70
  86. package/dist/chat/ui/ChatReferenceChip.js +104 -9
  87. package/dist/chat/ui/CodeBlock.js +132 -58
  88. package/dist/chat/ui/Composer.js +866 -132
  89. package/dist/chat/ui/ComposerInput.js +309 -120
  90. package/dist/chat/ui/DiffPool.js +75 -14
  91. package/dist/chat/ui/EditDiff.js +160 -21
  92. package/dist/chat/ui/FadingWords.js +32 -3
  93. package/dist/chat/ui/GoalDock.js +235 -42
  94. package/dist/chat/ui/ImageView.js +617 -61
  95. package/dist/chat/ui/LimitState.js +446 -72
  96. package/dist/chat/ui/Markdown.js +991 -173
  97. package/dist/chat/ui/MermaidBlock.js +238 -68
  98. package/dist/chat/ui/MessageActions.js +251 -39
  99. package/dist/chat/ui/ModelMarks.js +55 -5
  100. package/dist/chat/ui/Pickers.js +664 -113
  101. package/dist/chat/ui/PromptComposer.js +281 -51
  102. package/dist/chat/ui/QuoteButton.js +151 -57
  103. package/dist/chat/ui/ResumeCompactionDock.d.ts +6 -2
  104. package/dist/chat/ui/ResumeCompactionDock.js +141 -6
  105. package/dist/chat/ui/RowTime.js +59 -5
  106. package/dist/chat/ui/RunSettings.js +1744 -154
  107. package/dist/chat/ui/Scrubber.js +517 -88
  108. package/dist/chat/ui/ShellCommand.js +183 -107
  109. package/dist/chat/ui/SubagentControls.js +212 -24
  110. package/dist/chat/ui/SubagentInfo.js +170 -13
  111. package/dist/chat/ui/SubagentStopButton.js +115 -24
  112. package/dist/chat/ui/SubagentTimeline.js +357 -91
  113. package/dist/chat/ui/Timeline.js +988 -476
  114. package/dist/chat/ui/TimelineMenu.js +552 -37
  115. package/dist/chat/ui/UnifiedDiff.js +234 -27
  116. package/dist/chat/ui/UploadThumb.js +37 -7
  117. package/dist/chat/ui/VisualDialogs.js +251 -20
  118. package/dist/chat/ui/VisualFrame.js +321 -95
  119. package/dist/chat/ui/Welcome.js +72 -7
  120. package/dist/chat/ui/chips.js +1 -1
  121. package/dist/chat/ui/code-lines.js +36 -36
  122. package/dist/chat/ui/code-streaming.js +1 -1
  123. package/dist/chat/ui/code-theme.js +7 -7
  124. package/dist/chat/ui/composer/ComposerControls.js +329 -21
  125. package/dist/chat/ui/composer/ComposerMenu.js +358 -30
  126. package/dist/chat/ui/composer/DraftParts.js +185 -11
  127. package/dist/chat/ui/composer/QueuedMessages.js +138 -13
  128. package/dist/chat/ui/composer/chips.js +29 -19
  129. package/dist/chat/ui/composer/editor.js +79 -63
  130. package/dist/chat/ui/composer/insert.js +26 -12
  131. package/dist/chat/ui/composer/key-handler.js +180 -127
  132. package/dist/chat/ui/composer/keys.js +90 -73
  133. package/dist/chat/ui/composer/menu-aria.js +18 -9
  134. package/dist/chat/ui/composer/placeholder.js +78 -31
  135. package/dist/chat/ui/composer/surface.js +13 -37
  136. package/dist/chat/ui/composer/use-chat-controls.js +230 -90
  137. package/dist/chat/ui/composer/use-compaction-offer.js +50 -18
  138. package/dist/chat/ui/composer/use-composer-draft.js +65 -34
  139. package/dist/chat/ui/composer/use-composer-menus.js +478 -193
  140. package/dist/chat/ui/composer/use-composer-submit.js +251 -109
  141. package/dist/chat/ui/composer/use-continuable-turn.js +33 -6
  142. package/dist/chat/ui/composer/use-draft-files.js +245 -93
  143. package/dist/chat/ui/composer/use-effort-stepper.d.ts +13 -0
  144. package/dist/chat/ui/composer/use-effort-stepper.js +88 -0
  145. package/dist/chat/ui/composer/use-notice.js +61 -16
  146. package/dist/chat/ui/composer/use-pending-requests.js +38 -17
  147. package/dist/chat/ui/composer/use-prompt-history.js +117 -45
  148. package/dist/chat/ui/composer/use-prompt-hold.js +119 -35
  149. package/dist/chat/ui/composer/use-take-back.js +94 -72
  150. package/dist/chat/ui/diff/ApprovalReview.js +101 -23
  151. package/dist/chat/ui/diff/DiffFallbackBoundary.js +21 -13
  152. package/dist/chat/ui/diff/DiffOmitted.js +56 -6
  153. package/dist/chat/ui/diff/DiffStack.js +92 -8
  154. package/dist/chat/ui/diff/DiffUnavailable.js +56 -6
  155. package/dist/chat/ui/diff/EditorEditDiff.js +263 -51
  156. package/dist/chat/ui/diff/EditorPatchDiff.js +39 -14
  157. package/dist/chat/ui/diff/LegacyDiffPool.js +27 -10
  158. package/dist/chat/ui/diff/LegacyEditDiff.js +97 -20
  159. package/dist/chat/ui/diff/LegacyUnifiedDiff.js +172 -42
  160. package/dist/chat/ui/diff/RawDiff.js +65 -5
  161. package/dist/chat/ui/diff/ReviewDiff.js +77 -5
  162. package/dist/chat/ui/diff/diff-props.js +1 -1
  163. package/dist/chat/ui/diff/diff-source-budget.js +46 -35
  164. package/dist/chat/ui/diff/editor-edit-model.js +18 -14
  165. package/dist/chat/ui/diff/review-plan.js +63 -40
  166. package/dist/chat/ui/diff/review-settle.js +24 -9
  167. package/dist/chat/ui/diff/syntax-runtime.js +236 -201
  168. package/dist/chat/ui/diff/use-review-stack.js +146 -25
  169. package/dist/chat/ui/diff-syntax.js +70 -58
  170. package/dist/chat/ui/diff-theme.js +31 -12
  171. package/dist/chat/ui/file-links.js +39 -10
  172. package/dist/chat/ui/find-reveal.js +29 -8
  173. package/dist/chat/ui/full-diff.js +17 -12
  174. package/dist/chat/ui/highlighter.js +143 -113
  175. package/dist/chat/ui/icons.js +16 -7
  176. package/dist/chat/ui/index.js +1 -1
  177. package/dist/chat/ui/intelligent-ui/UiBlockFrame.js +556 -82
  178. package/dist/chat/ui/intelligent-ui/UiFallbackPart.js +73 -5
  179. package/dist/chat/ui/intelligent-ui/UiReply.js +666 -262
  180. package/dist/chat/ui/intelligent-ui/block-local.js +59 -31
  181. package/dist/chat/ui/intelligent-ui/chart-data.js +77 -67
  182. package/dist/chat/ui/intelligent-ui/node-text.js +77 -91
  183. package/dist/chat/ui/intelligent-ui/registry.js +46 -46
  184. package/dist/chat/ui/intelligent-ui/render-context.js +1 -1
  185. package/dist/chat/ui/intelligent-ui/renderers/base-land.js +1 -1
  186. package/dist/chat/ui/intelligent-ui/renderers/binding.js +3 -3
  187. package/dist/chat/ui/intelligent-ui/renderers/chart.js +1223 -123
  188. package/dist/chat/ui/intelligent-ui/renderers/choices.js +312 -34
  189. package/dist/chat/ui/intelligent-ui/renderers/content.js +1241 -86
  190. package/dist/chat/ui/intelligent-ui/renderers/data.js +619 -54
  191. package/dist/chat/ui/intelligent-ui/renderers/inputs.js +868 -67
  192. package/dist/chat/ui/intelligent-ui/renderers/links.js +366 -62
  193. package/dist/chat/ui/intelligent-ui/renderers/map-slots.js +118 -60
  194. package/dist/chat/ui/intelligent-ui/renderers/map-style.js +85 -78
  195. package/dist/chat/ui/intelligent-ui/renderers/map-view.js +282 -217
  196. package/dist/chat/ui/intelligent-ui/renderers/map.js +621 -69
  197. package/dist/chat/ui/intelligent-ui/renderers/place-point.js +15 -8
  198. package/dist/chat/ui/intelligent-ui/renderers/structure.js +262 -20
  199. package/dist/chat/ui/intelligent-ui/renderers/text.js +674 -49
  200. package/dist/chat/ui/intelligent-ui/reply-parts.js +24 -15
  201. package/dist/chat/ui/intelligent-ui/table-data.js +97 -57
  202. package/dist/chat/ui/intelligent-ui/tones.js +31 -31
  203. package/dist/chat/ui/intelligent-ui/use-in-view.js +30 -12
  204. package/dist/chat/ui/intelligent-ui/use-later.js +28 -13
  205. package/dist/chat/ui/intelligent-ui/use-truncated.js +45 -21
  206. package/dist/chat/ui/intelligent-ui/use-ui-links.js +296 -109
  207. package/dist/chat/ui/intelligent-ui/use-ui-queries.js +256 -246
  208. package/dist/chat/ui/markdown-blocks.js +296 -262
  209. package/dist/chat/ui/mermaid.js +60 -72
  210. package/dist/chat/ui/quote-selection.js +32 -29
  211. package/dist/chat/ui/rehype-chips.js +35 -23
  212. package/dist/chat/ui/rehype-fade.js +28 -17
  213. package/dist/chat/ui/remark-html-as-text.js +22 -15
  214. package/dist/chat/ui/reply-context.js +1 -1
  215. package/dist/chat/ui/reveal.js +161 -72
  216. package/dist/chat/ui/rows/ForksRow.js +226 -24
  217. package/dist/chat/ui/rows/GeneratedImageRow.js +541 -87
  218. package/dist/chat/ui/rows/MessageRows.js +1706 -159
  219. package/dist/chat/ui/rows/RowContainer.js +57 -7
  220. package/dist/chat/ui/rows/Rows.js +463 -54
  221. package/dist/chat/ui/rows/SubagentRow.js +577 -60
  222. package/dist/chat/ui/rows/TaskRow.js +359 -40
  223. package/dist/chat/ui/rows/VisualRow.js +233 -11
  224. package/dist/chat/ui/rows/WorkRows.js +1946 -163
  225. package/dist/chat/ui/rows/WorkflowRow.js +293 -34
  226. package/dist/chat/ui/rows/row-rhythm.js +27 -17
  227. package/dist/chat/ui/theme-watch.js +26 -23
  228. package/dist/chat/ui/timestamp-format.js +4 -1
  229. package/dist/chat/ui/use-diff-source-tokens.js +70 -34
  230. package/dist/chat/ui/useToggleSet.js +51 -19
  231. package/dist/chat/ui/visual-theme.js +153 -128
  232. package/dist/chat/visual-bridge.js +123 -123
  233. package/dist/chat/visual-viewport.js +94 -83
  234. package/dist/chat/visuals.js +13 -5
  235. package/dist/host-hooks.d.ts +29 -0
  236. package/dist/host-hooks.js +78 -0
  237. package/dist/host.js +120 -48
  238. package/dist/index.js +1 -1
  239. package/dist/lazy.js +38 -32
  240. package/dist/locales/en/agent-chat.d.ts +35 -0
  241. package/dist/locales/en/agent-chat.js +747 -712
  242. package/dist/locales/en/agent-prompts.js +42 -42
  243. package/dist/locales/en/agent-providers.d.ts +1 -0
  244. package/dist/locales/en/agent-providers.js +166 -165
  245. package/dist/locales/en/agent-usage.d.ts +6 -0
  246. package/dist/locales/en/agent-usage.js +129 -123
  247. package/dist/locales/nl/agent-chat.d.ts +35 -0
  248. package/dist/locales/nl/agent-chat.js +747 -712
  249. package/dist/locales/nl/agent-prompts.js +42 -42
  250. package/dist/locales/nl/agent-providers.d.ts +1 -0
  251. package/dist/locales/nl/agent-providers.js +166 -165
  252. package/dist/locales/nl/agent-usage.d.ts +6 -0
  253. package/dist/locales/nl/agent-usage.js +129 -123
  254. package/dist/locales.js +14 -14
  255. package/dist/mounted-registry.js +31 -30
  256. package/dist/port-transport.js +122 -111
  257. package/dist/prompts/index.js +1 -1
  258. package/dist/prompts/logic/focus.js +15 -14
  259. package/dist/prompts/logic/keys.js +93 -59
  260. package/dist/prompts/logic/prompts.js +27 -14
  261. package/dist/prompts/logic/subjects.js +60 -46
  262. package/dist/prompts/logic/useFocusAfterAnswer.js +60 -20
  263. package/dist/prompts/logic/usePromptSession.js +88 -77
  264. package/dist/prompts/ui/ApprovalBody.js +246 -25
  265. package/dist/prompts/ui/PromptActions.js +215 -9
  266. package/dist/prompts/ui/PromptCard.js +215 -36
  267. package/dist/prompts/ui/PromptView.js +372 -34
  268. package/dist/prompts/ui/QuestionBody.js +269 -73
  269. package/dist/providers/AccountColors.js +36 -5
  270. package/dist/providers/AccountDetail.js +683 -50
  271. package/dist/providers/AccountVariables.js +139 -32
  272. package/dist/providers/AddAccountForm.js +125 -38
  273. package/dist/providers/CliDetail.js +343 -36
  274. package/dist/providers/InstallPage.js +644 -59
  275. package/dist/providers/ProviderList.d.ts +2 -1
  276. package/dist/providers/ProviderList.js +215 -23
  277. package/dist/providers/ProvidersPane.d.ts +4 -2
  278. package/dist/providers/ProvidersPane.js +244 -64
  279. package/dist/providers/account-actions.js +54 -30
  280. package/dist/providers/index.js +1 -1
  281. package/dist/providers/install-steps.js +12 -9
  282. package/dist/providers/pane-target.d.ts +3 -0
  283. package/dist/providers/pane-target.js +34 -13
  284. package/dist/providers/parts.js +62 -12
  285. package/dist/providers/provider-abilities.js +5 -5
  286. package/dist/providers/provider-groups.js +75 -40
  287. package/dist/providers/variables.js +73 -39
  288. package/dist/scope.js +6 -6
  289. package/dist/settings/sections.js +18 -18
  290. package/dist/state/chats.d.ts +1 -0
  291. package/dist/state/chats.js +408 -192
  292. package/dist/state/index.js +1 -1
  293. package/dist/state/provider-accounts.js +70 -47
  294. package/dist/state/providers.js +45 -16
  295. package/dist/state/usage.js +154 -77
  296. package/dist/storage.js +69 -68
  297. package/dist/testing/index.js +1 -1
  298. package/dist/testing/prompts.js +105 -67
  299. package/dist/transport.js +10 -10
  300. package/dist/ui/PlainTextarea.js +27 -3
  301. package/dist/usage/LimitsList.js +646 -40
  302. package/dist/usage/UsageBreakdown.js +879 -38
  303. package/dist/usage/UsageChart.js +311 -32
  304. package/dist/usage/UsageDialog.js +46 -4
  305. package/dist/usage/UsageLimits.js +467 -34
  306. package/dist/usage/UsageLimitsCard.js +95 -11
  307. package/dist/usage/UsagePage.js +817 -96
  308. package/dist/usage/UsagePane.js +164 -10
  309. package/dist/usage/UsageSummary.js +151 -6
  310. package/dist/usage/UsageTiles.js +164 -14
  311. package/dist/usage/format.js +32 -32
  312. package/dist/usage/index.d.ts +1 -1
  313. package/dist/usage/index.js +2 -1
  314. package/dist/usage/limit-groups.d.ts +2 -0
  315. package/dist/usage/limit-groups.js +77 -59
  316. package/dist/usage/limits.js +78 -43
  317. package/dist/usage/money.js +20 -4
  318. package/dist/usage/summary.js +85 -64
  319. package/package.json +8 -8
  320. package/src/agents/ModelOptionControl.tsx +3 -1
  321. package/src/agents/option-words.ts +27 -0
  322. package/src/chat/account-choice.ts +41 -1
  323. package/src/chat/composer-effort.ts +32 -0
  324. package/src/chat/forks.ts +4 -5
  325. package/src/chat/index.ts +3 -1
  326. package/src/chat/logic/effort.ts +32 -0
  327. package/src/chat/logic/picker-entries.ts +45 -10
  328. package/src/chat/logic/resume-compaction.ts +95 -17
  329. package/src/chat/logic/timeline.ts +11 -3
  330. package/src/chat/preferences.ts +35 -0
  331. package/src/chat/subagent-view.ts +2 -3
  332. package/src/chat/ui/AnsiOutput.tsx +1 -2
  333. package/src/chat/ui/BookmarkSubmenu.tsx +3 -3
  334. package/src/chat/ui/ChatActivity.tsx +14 -22
  335. package/src/chat/ui/ChatReferenceChip.tsx +2 -3
  336. package/src/chat/ui/Composer.tsx +15 -7
  337. package/src/chat/ui/EditDiff.tsx +2 -3
  338. package/src/chat/ui/LimitState.tsx +2 -2
  339. package/src/chat/ui/Markdown.tsx +10 -8
  340. package/src/chat/ui/MermaidBlock.tsx +2 -3
  341. package/src/chat/ui/Pickers.tsx +49 -29
  342. package/src/chat/ui/PromptComposer.tsx +7 -9
  343. package/src/chat/ui/ResumeCompactionDock.tsx +16 -4
  344. package/src/chat/ui/RunSettings.tsx +67 -28
  345. package/src/chat/ui/Scrubber.tsx +3 -3
  346. package/src/chat/ui/ShellCommand.tsx +2 -0
  347. package/src/chat/ui/SubagentInfo.tsx +2 -3
  348. package/src/chat/ui/SubagentTimeline.tsx +12 -16
  349. package/src/chat/ui/Timeline.tsx +6 -6
  350. package/src/chat/ui/UnifiedDiff.tsx +3 -4
  351. package/src/chat/ui/VisualFrame.tsx +5 -8
  352. package/src/chat/ui/code-theme.ts +4 -4
  353. package/src/chat/ui/composer/placeholder.ts +2 -2
  354. package/src/chat/ui/composer/use-compaction-offer.ts +36 -16
  355. package/src/chat/ui/composer/use-composer-menus.ts +4 -9
  356. package/src/chat/ui/composer/use-composer-submit.ts +2 -1
  357. package/src/chat/ui/composer/use-effort-stepper.ts +56 -0
  358. package/src/chat/ui/composer/use-notice.ts +2 -2
  359. package/src/chat/ui/diff/EditorEditDiff.tsx +9 -13
  360. package/src/chat/ui/diff/LegacyEditDiff.tsx +12 -17
  361. package/src/chat/ui/diff/LegacyUnifiedDiff.tsx +13 -21
  362. package/src/chat/ui/diff/use-review-stack.ts +4 -4
  363. package/src/chat/ui/diff-theme.ts +3 -3
  364. package/src/chat/ui/file-links.ts +2 -2
  365. package/src/chat/ui/intelligent-ui/UiReply.tsx +2 -0
  366. package/src/chat/ui/intelligent-ui/renderers/chart.tsx +3 -3
  367. package/src/chat/ui/intelligent-ui/renderers/content.tsx +5 -6
  368. package/src/chat/ui/intelligent-ui/renderers/map-view.tsx +2 -1
  369. package/src/chat/ui/intelligent-ui/renderers/map.tsx +2 -1
  370. package/src/chat/ui/intelligent-ui/use-truncated.ts +16 -19
  371. package/src/chat/ui/intelligent-ui/use-ui-links.ts +3 -3
  372. package/src/chat/ui/rows/ForksRow.tsx +3 -5
  373. package/src/chat/ui/rows/GeneratedImageRow.tsx +2 -1
  374. package/src/chat/ui/rows/MessageRows.tsx +12 -21
  375. package/src/chat/ui/rows/SubagentRow.tsx +3 -3
  376. package/src/chat/ui/rows/TaskRow.tsx +1 -1
  377. package/src/chat/ui/rows/WorkRows.tsx +20 -7
  378. package/src/chat/ui/useToggleSet.ts +15 -18
  379. package/src/chat/ui/visual-theme.ts +2 -3
  380. package/src/host-hooks.ts +113 -0
  381. package/src/lazy.tsx +2 -0
  382. package/src/locales/en/agent-chat.ts +135 -108
  383. package/src/locales/en/agent-prompts.ts +7 -7
  384. package/src/locales/en/agent-providers.ts +35 -34
  385. package/src/locales/en/agent-usage.ts +26 -20
  386. package/src/locales/nl/agent-chat.ts +127 -100
  387. package/src/locales/nl/agent-prompts.ts +5 -5
  388. package/src/locales/nl/agent-providers.ts +33 -32
  389. package/src/locales/nl/agent-usage.ts +25 -20
  390. package/src/prompts/ui/ApprovalBody.tsx +3 -1
  391. package/src/providers/CliDetail.tsx +2 -1
  392. package/src/providers/InstallPage.tsx +2 -4
  393. package/src/providers/ProviderList.tsx +12 -2
  394. package/src/providers/ProvidersPane.tsx +45 -15
  395. package/src/providers/pane-target.ts +20 -4
  396. package/src/state/chats.ts +7 -2
  397. package/src/usage/LimitsList.tsx +12 -13
  398. package/src/usage/UsageBreakdown.tsx +17 -6
  399. package/src/usage/UsageLimits.tsx +2 -1
  400. package/src/usage/UsagePage.tsx +3 -3
  401. package/src/usage/index.ts +1 -1
  402. package/src/usage/limit-groups.ts +12 -0
  403. package/src/usage/limits.ts +2 -2
  404. package/src/usage/money.ts +1 -2
@@ -1,87 +1,643 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { c as _c } from "react/compiler-runtime";
2
2
  import { useRef, useState } from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import clsx from 'clsx';
5
5
  import { ImageOff, Minus, Plus, RotateCcw } from 'lucide-react';
6
6
  import { ButtonGroup, CloseButton, Dialog, Icon, IconButton, Tooltip } from '@adecore/ui';
7
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
7
8
  const MIN_SCALE = 1;
8
9
  const MAX_SCALE = 8;
9
10
  // One wheel notch, small enough that a trackpad flick does not jump past the detail it aimed at.
10
11
  const WHEEL_STEP = 1.0015;
11
12
  const BUTTON_STEP = 1.5;
12
- const START = { scale: 1, x: 0, y: 0 };
13
+ const START = {
14
+ scale: 1,
15
+ x: 0,
16
+ y: 0
17
+ };
13
18
  /*
14
19
  * Zooms around a point, which is what makes a wheel over a detail feel like a magnifier instead of
15
20
  * a slider. The pixel under the pointer stays where it is while everything else moves away from it.
16
21
  * `x` and `y` are offsets from the middle of the frame, so a scale of 1 is always centered.
17
22
  */
18
23
  function zoomed(view, factor, pointX, pointY) {
19
- const scale = Math.min(MAX_SCALE, Math.max(MIN_SCALE, view.scale * factor));
20
- if (scale === MIN_SCALE) {
21
- return START;
22
- }
23
- const ratio = scale / view.scale;
24
- return { scale, x: pointX - (pointX - view.x) * ratio, y: pointY - (pointY - view.y) * ratio };
24
+ const scale = Math.min(MAX_SCALE, Math.max(MIN_SCALE, view.scale * factor));
25
+ if (scale === MIN_SCALE) {
26
+ return START;
27
+ }
28
+ const ratio = scale / view.scale;
29
+ return {
30
+ scale,
31
+ x: pointX - (pointX - view.x) * ratio,
32
+ y: pointY - (pointY - view.y) * ratio
33
+ };
25
34
  }
26
35
  /* An image on its own, large: the wheel and the buttons zoom, dragging pans, Escape closes. */
27
- function Lightbox({ src, alt, open, onOpenChange, actions }) {
28
- const { t } = useTranslation('agent-chat');
29
- const [view, setView] = useState(START);
30
- // The alt of an image an agent read is its path; the header shows the file and keeps the path on a tooltip.
31
- const name = alt.slice(alt.lastIndexOf('/') + 1);
32
- const title = _jsx("span", { className: "min-w-0 truncate text-xs text-text", children: name });
33
- const frameRef = useRef(null);
34
- const dragRef = useRef(null);
35
- if (!open && view !== START) {
36
- setView(START);
37
- }
38
- /* Where the pointer sits against the middle of the frame, which is what the transform counts from. */
39
- const pointIn = (event) => {
40
- const rect = frameRef.current?.getBoundingClientRect();
41
- if (!rect) {
42
- return { x: 0, y: 0 };
43
- }
44
- return { x: event.clientX - rect.left - rect.width / 2, y: event.clientY - rect.top - rect.height / 2 };
36
+ function Lightbox(t0) {
37
+ const $ = _c(83);
38
+ const {
39
+ src,
40
+ alt,
41
+ open,
42
+ onOpenChange,
43
+ actions
44
+ } = t0;
45
+ const {
46
+ t
47
+ } = useTranslation("agent-chat");
48
+ const [view, setView] = useState(START);
49
+ let t1;
50
+ if ($[0] !== alt) {
51
+ t1 = alt.slice(alt.lastIndexOf("/") + 1);
52
+ $[0] = alt;
53
+ $[1] = t1;
54
+ } else {
55
+ t1 = $[1];
56
+ }
57
+ const name = t1;
58
+ let t2;
59
+ if ($[2] !== name) {
60
+ t2 = /*#__PURE__*/_jsx("span", {
61
+ className: "min-w-0 truncate text-xs text-text",
62
+ children: name
63
+ });
64
+ $[2] = name;
65
+ $[3] = t2;
66
+ } else {
67
+ t2 = $[3];
68
+ }
69
+ const title = t2;
70
+ const frameRef = useRef(null);
71
+ const dragRef = useRef(null);
72
+ if (!open && view !== START) {
73
+ setView(START);
74
+ }
75
+ let t3;
76
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
77
+ t3 = event => {
78
+ const rect = frameRef.current?.getBoundingClientRect();
79
+ if (!rect) {
80
+ return {
81
+ x: 0,
82
+ y: 0
83
+ };
84
+ }
85
+ return {
86
+ x: event.clientX - rect.left - rect.width / 2,
87
+ y: event.clientY - rect.top - rect.height / 2
88
+ };
89
+ };
90
+ $[4] = t3;
91
+ } else {
92
+ t3 = $[4];
93
+ }
94
+ const pointIn = t3;
95
+ let t4;
96
+ if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
97
+ t4 = factor => setView(current => zoomed(current, factor, 0, 0));
98
+ $[5] = t4;
99
+ } else {
100
+ t4 = $[5];
101
+ }
102
+ const zoomButton = t4;
103
+ let t5;
104
+ if ($[6] !== alt) {
105
+ t5 = /*#__PURE__*/_jsx(Dialog.Title, {
106
+ className: "sr-only",
107
+ children: alt
108
+ });
109
+ $[6] = alt;
110
+ $[7] = t5;
111
+ } else {
112
+ t5 = $[7];
113
+ }
114
+ let t6;
115
+ if ($[8] !== alt || $[9] !== name || $[10] !== title) {
116
+ t6 = name === alt ? title : /*#__PURE__*/_jsx(Tooltip, {
117
+ label: alt,
118
+ children: title
119
+ });
120
+ $[8] = alt;
121
+ $[9] = name;
122
+ $[10] = title;
123
+ $[11] = t6;
124
+ } else {
125
+ t6 = $[11];
126
+ }
127
+ let t7;
128
+ if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
129
+ t7 = /*#__PURE__*/_jsx("span", {
130
+ className: "grow"
131
+ });
132
+ $[12] = t7;
133
+ } else {
134
+ t7 = $[12];
135
+ }
136
+ let t8;
137
+ if ($[13] !== view.scale) {
138
+ t8 = Math.round(view.scale * 100);
139
+ $[13] = view.scale;
140
+ $[14] = t8;
141
+ } else {
142
+ t8 = $[14];
143
+ }
144
+ let t9;
145
+ if ($[15] !== t8) {
146
+ t9 = /*#__PURE__*/_jsxs("span", {
147
+ className: "tabular-nums text-xs text-text-faint",
148
+ children: [t8, "%"]
149
+ });
150
+ $[15] = t8;
151
+ $[16] = t9;
152
+ } else {
153
+ t9 = $[16];
154
+ }
155
+ let t10;
156
+ if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
157
+ t10 = /*#__PURE__*/_jsx("span", {});
158
+ $[17] = t10;
159
+ } else {
160
+ t10 = $[17];
161
+ }
162
+ let t11;
163
+ if ($[18] !== t) {
164
+ t11 = t("image.zoomOut");
165
+ $[18] = t;
166
+ $[19] = t11;
167
+ } else {
168
+ t11 = $[19];
169
+ }
170
+ const t12 = view.scale <= MIN_SCALE;
171
+ let t13;
172
+ if ($[20] === Symbol.for("react.memo_cache_sentinel")) {
173
+ t13 = () => zoomButton(1 / BUTTON_STEP);
174
+ $[20] = t13;
175
+ } else {
176
+ t13 = $[20];
177
+ }
178
+ let t14;
179
+ if ($[21] !== t11 || $[22] !== t12) {
180
+ t14 = /*#__PURE__*/_jsx(IconButton, {
181
+ icon: Minus,
182
+ size: "sm",
183
+ label: t11,
184
+ disabled: t12,
185
+ onClick: t13
186
+ });
187
+ $[21] = t11;
188
+ $[22] = t12;
189
+ $[23] = t14;
190
+ } else {
191
+ t14 = $[23];
192
+ }
193
+ let t15;
194
+ if ($[24] !== t) {
195
+ t15 = t("image.zoomIn");
196
+ $[24] = t;
197
+ $[25] = t15;
198
+ } else {
199
+ t15 = $[25];
200
+ }
201
+ const t16 = view.scale >= MAX_SCALE;
202
+ let t17;
203
+ if ($[26] === Symbol.for("react.memo_cache_sentinel")) {
204
+ t17 = () => zoomButton(BUTTON_STEP);
205
+ $[26] = t17;
206
+ } else {
207
+ t17 = $[26];
208
+ }
209
+ let t18;
210
+ if ($[27] !== t15 || $[28] !== t16) {
211
+ t18 = /*#__PURE__*/_jsx(IconButton, {
212
+ icon: Plus,
213
+ size: "sm",
214
+ label: t15,
215
+ disabled: t16,
216
+ onClick: t17
217
+ });
218
+ $[27] = t15;
219
+ $[28] = t16;
220
+ $[29] = t18;
221
+ } else {
222
+ t18 = $[29];
223
+ }
224
+ let t19;
225
+ if ($[30] !== t) {
226
+ t19 = t("image.reset");
227
+ $[30] = t;
228
+ $[31] = t19;
229
+ } else {
230
+ t19 = $[31];
231
+ }
232
+ const t20 = view.scale === MIN_SCALE;
233
+ let t21;
234
+ if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
235
+ t21 = () => setView(START);
236
+ $[32] = t21;
237
+ } else {
238
+ t21 = $[32];
239
+ }
240
+ let t22;
241
+ if ($[33] !== t19 || $[34] !== t20) {
242
+ t22 = /*#__PURE__*/_jsx(IconButton, {
243
+ icon: RotateCcw,
244
+ size: "sm",
245
+ label: t19,
246
+ disabled: t20,
247
+ onClick: t21
248
+ });
249
+ $[33] = t19;
250
+ $[34] = t20;
251
+ $[35] = t22;
252
+ } else {
253
+ t22 = $[35];
254
+ }
255
+ let t23;
256
+ if ($[36] !== t14 || $[37] !== t18 || $[38] !== t22) {
257
+ t23 = /*#__PURE__*/_jsxs(ButtonGroup, {
258
+ render: t10,
259
+ children: [t14, t18, t22]
260
+ });
261
+ $[36] = t14;
262
+ $[37] = t18;
263
+ $[38] = t22;
264
+ $[39] = t23;
265
+ } else {
266
+ t23 = $[39];
267
+ }
268
+ let t24;
269
+ if ($[40] !== t) {
270
+ t24 = t("common.action.close");
271
+ $[40] = t;
272
+ $[41] = t24;
273
+ } else {
274
+ t24 = $[41];
275
+ }
276
+ let t25;
277
+ if ($[42] !== t24) {
278
+ t25 = /*#__PURE__*/_jsx(CloseButton, {
279
+ label: t24,
280
+ kbd: "esc",
281
+ className: "ml-1",
282
+ dialog: true
283
+ });
284
+ $[42] = t24;
285
+ $[43] = t25;
286
+ } else {
287
+ t25 = $[43];
288
+ }
289
+ let t26;
290
+ if ($[44] !== actions || $[45] !== t23 || $[46] !== t25 || $[47] !== t6 || $[48] !== t9) {
291
+ t26 = /*#__PURE__*/_jsxs("div", {
292
+ className: "flex h-11 shrink-0 items-center gap-2 border-b border-border pr-2 pl-3",
293
+ children: [t6, t7, t9, t23, actions, t25]
294
+ });
295
+ $[44] = actions;
296
+ $[45] = t23;
297
+ $[46] = t25;
298
+ $[47] = t6;
299
+ $[48] = t9;
300
+ $[49] = t26;
301
+ } else {
302
+ t26 = $[49];
303
+ }
304
+ const t27 = view.scale > MIN_SCALE && "cursor-grab";
305
+ let t28;
306
+ if ($[50] !== t27) {
307
+ t28 = clsx("lightbox-frame grid place-items-center overflow-hidden bg-surface-sunken", t27);
308
+ $[50] = t27;
309
+ $[51] = t28;
310
+ } else {
311
+ t28 = $[51];
312
+ }
313
+ let t29;
314
+ let t30;
315
+ if ($[52] === Symbol.for("react.memo_cache_sentinel")) {
316
+ t29 = e => {
317
+ const point = pointIn(e);
318
+ setView(current_0 => zoomed(current_0, WHEEL_STEP ** -e.deltaY, point.x, point.y));
319
+ };
320
+ t30 = e_0 => {
321
+ const point_0 = pointIn(e_0);
322
+ setView(current_1 => current_1.scale > MIN_SCALE ? START : zoomed(current_1, 2, point_0.x, point_0.y));
323
+ };
324
+ $[52] = t29;
325
+ $[53] = t30;
326
+ } else {
327
+ t29 = $[52];
328
+ t30 = $[53];
329
+ }
330
+ let t31;
331
+ if ($[54] !== view.scale || $[55] !== view.x || $[56] !== view.y) {
332
+ t31 = e_1 => {
333
+ if (view.scale <= MIN_SCALE) {
334
+ return;
335
+ }
336
+ e_1.currentTarget.setPointerCapture(e_1.pointerId);
337
+ dragRef.current = {
338
+ pointerId: e_1.pointerId,
339
+ x: e_1.clientX - view.x,
340
+ y: e_1.clientY - view.y
341
+ };
342
+ };
343
+ $[54] = view.scale;
344
+ $[55] = view.x;
345
+ $[56] = view.y;
346
+ $[57] = t31;
347
+ } else {
348
+ t31 = $[57];
349
+ }
350
+ let t32;
351
+ let t33;
352
+ let t34;
353
+ if ($[58] === Symbol.for("react.memo_cache_sentinel")) {
354
+ t32 = e_2 => {
355
+ const drag = dragRef.current;
356
+ if (drag?.pointerId === e_2.pointerId) {
357
+ setView(current_2 => ({
358
+ ...current_2,
359
+ x: e_2.clientX - drag.x,
360
+ y: e_2.clientY - drag.y
361
+ }));
362
+ }
363
+ };
364
+ t33 = () => {
365
+ dragRef.current = null;
45
366
  };
46
- const zoomButton = (factor) => setView((current) => zoomed(current, factor, 0, 0));
47
- return (_jsx(Dialog.Root, { open: open, onOpenChange: onOpenChange, children: _jsxs(Dialog.Popup, { backdropClassName: "lightbox-backdrop", className: "flex min-w-72 flex-col", children: [_jsx(Dialog.Title, { className: "sr-only", children: alt }), _jsxs("div", { className: "flex h-11 shrink-0 items-center gap-2 border-b border-border pr-2 pl-3", children: [name === alt ? title : _jsx(Tooltip, { label: alt, children: title }), _jsx("span", { className: "grow" }), _jsxs("span", { className: "tabular-nums text-xs text-text-faint", children: [Math.round(view.scale * 100), "%"] }), _jsxs(ButtonGroup, { render: _jsx("span", {}), children: [_jsx(IconButton, { icon: Minus, size: "sm", label: t('image.zoomOut'), disabled: view.scale <= MIN_SCALE, onClick: () => zoomButton(1 / BUTTON_STEP) }), _jsx(IconButton, { icon: Plus, size: "sm", label: t('image.zoomIn'), disabled: view.scale >= MAX_SCALE, onClick: () => zoomButton(BUTTON_STEP) }), _jsx(IconButton, { icon: RotateCcw, size: "sm", label: t('image.reset'), disabled: view.scale === MIN_SCALE, onClick: () => setView(START) })] }), actions, _jsx(CloseButton, { label: t('common.action.close'), kbd: "esc", className: "ml-1", dialog: true })] }), _jsx("div", { ref: frameRef, className: clsx('lightbox-frame grid place-items-center overflow-hidden bg-surface-sunken', view.scale > MIN_SCALE && 'cursor-grab'), onWheel: (e) => {
48
- const point = pointIn(e);
49
- setView((current) => zoomed(current, WHEEL_STEP ** -e.deltaY, point.x, point.y));
50
- }, onDoubleClick: (e) => {
51
- const point = pointIn(e);
52
- setView((current) => (current.scale > MIN_SCALE ? START : zoomed(current, 2, point.x, point.y)));
53
- }, onPointerDown: (e) => {
54
- if (view.scale <= MIN_SCALE) {
55
- return;
56
- }
57
- e.currentTarget.setPointerCapture(e.pointerId);
58
- dragRef.current = { pointerId: e.pointerId, x: e.clientX - view.x, y: e.clientY - view.y };
59
- }, onPointerMove: (e) => {
60
- const drag = dragRef.current;
61
- if (drag?.pointerId === e.pointerId) {
62
- setView((current) => ({ ...current, x: e.clientX - drag.x, y: e.clientY - drag.y }));
63
- }
64
- }, onPointerUp: () => {
65
- dragRef.current = null;
66
- }, onPointerCancel: () => {
67
- dragRef.current = null;
68
- }, children: _jsx("img", { src: src, alt: alt, draggable: false, className: "select-none", style: { transform: `translate(${Math.round(view.x)}px, ${Math.round(view.y)}px) scale(${view.scale})` } }) })] }) }));
367
+ t34 = () => {
368
+ dragRef.current = null;
369
+ };
370
+ $[58] = t32;
371
+ $[59] = t33;
372
+ $[60] = t34;
373
+ } else {
374
+ t32 = $[58];
375
+ t33 = $[59];
376
+ t34 = $[60];
377
+ }
378
+ let t35;
379
+ if ($[61] !== view.x) {
380
+ t35 = Math.round(view.x);
381
+ $[61] = view.x;
382
+ $[62] = t35;
383
+ } else {
384
+ t35 = $[62];
385
+ }
386
+ let t36;
387
+ if ($[63] !== view.y) {
388
+ t36 = Math.round(view.y);
389
+ $[63] = view.y;
390
+ $[64] = t36;
391
+ } else {
392
+ t36 = $[64];
393
+ }
394
+ const t37 = `translate(${t35}px, ${t36}px) scale(${view.scale})`;
395
+ let t38;
396
+ if ($[65] !== t37) {
397
+ t38 = {
398
+ transform: t37
399
+ };
400
+ $[65] = t37;
401
+ $[66] = t38;
402
+ } else {
403
+ t38 = $[66];
404
+ }
405
+ let t39;
406
+ if ($[67] !== alt || $[68] !== src || $[69] !== t38) {
407
+ t39 = /*#__PURE__*/_jsx("img", {
408
+ src: src,
409
+ alt: alt,
410
+ draggable: false,
411
+ className: "select-none",
412
+ style: t38
413
+ });
414
+ $[67] = alt;
415
+ $[68] = src;
416
+ $[69] = t38;
417
+ $[70] = t39;
418
+ } else {
419
+ t39 = $[70];
420
+ }
421
+ let t40;
422
+ if ($[71] !== t28 || $[72] !== t31 || $[73] !== t39) {
423
+ t40 = /*#__PURE__*/_jsx("div", {
424
+ ref: frameRef,
425
+ className: t28,
426
+ onWheel: t29,
427
+ onDoubleClick: t30,
428
+ onPointerDown: t31,
429
+ onPointerMove: t32,
430
+ onPointerUp: t33,
431
+ onPointerCancel: t34,
432
+ children: t39
433
+ });
434
+ $[71] = t28;
435
+ $[72] = t31;
436
+ $[73] = t39;
437
+ $[74] = t40;
438
+ } else {
439
+ t40 = $[74];
440
+ }
441
+ let t41;
442
+ if ($[75] !== t26 || $[76] !== t40 || $[77] !== t5) {
443
+ t41 = /*#__PURE__*/_jsxs(Dialog.Popup, {
444
+ backdropClassName: "lightbox-backdrop",
445
+ className: "flex min-w-72 flex-col",
446
+ children: [t5, t26, t40]
447
+ });
448
+ $[75] = t26;
449
+ $[76] = t40;
450
+ $[77] = t5;
451
+ $[78] = t41;
452
+ } else {
453
+ t41 = $[78];
454
+ }
455
+ let t42;
456
+ if ($[79] !== onOpenChange || $[80] !== open || $[81] !== t41) {
457
+ t42 = /*#__PURE__*/_jsx(Dialog.Root, {
458
+ open: open,
459
+ onOpenChange: onOpenChange,
460
+ children: t41
461
+ });
462
+ $[79] = onOpenChange;
463
+ $[80] = open;
464
+ $[81] = t41;
465
+ $[82] = t42;
466
+ } else {
467
+ t42 = $[82];
468
+ }
469
+ return t42;
69
470
  }
70
471
  /*
71
472
  * A thumbnail that opens the same image large. The button is the picture, so there is nothing to aim at.
72
473
  * The image is bytes where the host keeps them; until they are here a quiet square stands in for it.
73
474
  */
74
- export function ImageThumb({ source, alt, className, aspect, actions, open: openProp, onOpenChange }) {
75
- const [ownOpen, setOwnOpen] = useState(false);
76
- const open = openProp ?? ownOpen;
77
- const setOpen = (next) => {
78
- setOwnOpen(next);
79
- onOpenChange?.(next);
475
+ export function ImageThumb(t0) {
476
+ const $ = _c(37);
477
+ const {
478
+ source,
479
+ alt,
480
+ className,
481
+ aspect,
482
+ actions,
483
+ open: openProp,
484
+ onOpenChange
485
+ } = t0;
486
+ const [ownOpen, setOwnOpen] = useState(false);
487
+ const open = openProp ?? ownOpen;
488
+ let t1;
489
+ if ($[0] !== onOpenChange) {
490
+ t1 = next => {
491
+ setOwnOpen(next);
492
+ onOpenChange?.(next);
493
+ };
494
+ $[0] = onOpenChange;
495
+ $[1] = t1;
496
+ } else {
497
+ t1 = $[1];
498
+ }
499
+ const setOpen = t1;
500
+ const {
501
+ url: src,
502
+ failure
503
+ } = source;
504
+ let t2;
505
+ if ($[2] !== aspect) {
506
+ t2 = aspect === undefined ? undefined : {
507
+ aspectRatio: aspect
80
508
  };
81
- const { url: src, failure } = source;
82
- const ratio = aspect === undefined ? undefined : { aspectRatio: aspect };
83
- if (src === null) {
84
- return (_jsx("span", { className: clsx('grid place-items-center rounded-lg border border-border bg-surface-sunken text-text-faint', aspect === undefined ? 'size-16' : 'w-full'), style: ratio, children: failure !== null && (_jsx(Tooltip, { label: failure, children: _jsx(Icon, { icon: ImageOff, size: 14 }) })) }));
509
+ $[2] = aspect;
510
+ $[3] = t2;
511
+ } else {
512
+ t2 = $[3];
513
+ }
514
+ const ratio = t2;
515
+ if (src === null) {
516
+ const t3 = aspect === undefined ? "size-16" : "w-full";
517
+ let t4;
518
+ if ($[4] !== t3) {
519
+ t4 = clsx("grid place-items-center rounded-lg border border-border bg-surface-sunken text-text-faint", t3);
520
+ $[4] = t3;
521
+ $[5] = t4;
522
+ } else {
523
+ t4 = $[5];
85
524
  }
86
- return (_jsxs(_Fragment, { children: [_jsx("button", { type: "button", className: clsx('block overflow-hidden rounded-lg border border-border', aspect !== undefined && 'w-full'), style: ratio, onClick: () => setOpen(true), children: _jsx("img", { src: src, alt: alt, className: clsx(aspect !== undefined && 'size-full object-contain', className) }) }), _jsx(Lightbox, { src: src, alt: alt, open: open, onOpenChange: setOpen, actions: actions })] }));
87
- }
525
+ let t5;
526
+ if ($[6] !== failure) {
527
+ t5 = failure !== null && /*#__PURE__*/_jsx(Tooltip, {
528
+ label: failure,
529
+ children: /*#__PURE__*/_jsx(Icon, {
530
+ icon: ImageOff,
531
+ size: 14
532
+ })
533
+ });
534
+ $[6] = failure;
535
+ $[7] = t5;
536
+ } else {
537
+ t5 = $[7];
538
+ }
539
+ let t6;
540
+ if ($[8] !== ratio || $[9] !== t4 || $[10] !== t5) {
541
+ t6 = /*#__PURE__*/_jsx("span", {
542
+ className: t4,
543
+ style: ratio,
544
+ children: t5
545
+ });
546
+ $[8] = ratio;
547
+ $[9] = t4;
548
+ $[10] = t5;
549
+ $[11] = t6;
550
+ } else {
551
+ t6 = $[11];
552
+ }
553
+ return t6;
554
+ }
555
+ const t3 = aspect !== undefined && "w-full";
556
+ let t4;
557
+ if ($[12] !== t3) {
558
+ t4 = clsx("block overflow-hidden rounded-lg border border-border", t3);
559
+ $[12] = t3;
560
+ $[13] = t4;
561
+ } else {
562
+ t4 = $[13];
563
+ }
564
+ let t5;
565
+ if ($[14] !== setOpen) {
566
+ t5 = () => setOpen(true);
567
+ $[14] = setOpen;
568
+ $[15] = t5;
569
+ } else {
570
+ t5 = $[15];
571
+ }
572
+ const t6 = aspect !== undefined && "size-full object-contain";
573
+ let t7;
574
+ if ($[16] !== className || $[17] !== t6) {
575
+ t7 = clsx(t6, className);
576
+ $[16] = className;
577
+ $[17] = t6;
578
+ $[18] = t7;
579
+ } else {
580
+ t7 = $[18];
581
+ }
582
+ let t8;
583
+ if ($[19] !== alt || $[20] !== src || $[21] !== t7) {
584
+ t8 = /*#__PURE__*/_jsx("img", {
585
+ src: src,
586
+ alt: alt,
587
+ className: t7
588
+ });
589
+ $[19] = alt;
590
+ $[20] = src;
591
+ $[21] = t7;
592
+ $[22] = t8;
593
+ } else {
594
+ t8 = $[22];
595
+ }
596
+ let t9;
597
+ if ($[23] !== ratio || $[24] !== t4 || $[25] !== t5 || $[26] !== t8) {
598
+ t9 = /*#__PURE__*/_jsx("button", {
599
+ type: "button",
600
+ className: t4,
601
+ style: ratio,
602
+ onClick: t5,
603
+ children: t8
604
+ });
605
+ $[23] = ratio;
606
+ $[24] = t4;
607
+ $[25] = t5;
608
+ $[26] = t8;
609
+ $[27] = t9;
610
+ } else {
611
+ t9 = $[27];
612
+ }
613
+ let t10;
614
+ if ($[28] !== actions || $[29] !== alt || $[30] !== open || $[31] !== setOpen || $[32] !== src) {
615
+ t10 = /*#__PURE__*/_jsx(Lightbox, {
616
+ src: src,
617
+ alt: alt,
618
+ open: open,
619
+ onOpenChange: setOpen,
620
+ actions: actions
621
+ });
622
+ $[28] = actions;
623
+ $[29] = alt;
624
+ $[30] = open;
625
+ $[31] = setOpen;
626
+ $[32] = src;
627
+ $[33] = t10;
628
+ } else {
629
+ t10 = $[33];
630
+ }
631
+ let t11;
632
+ if ($[34] !== t10 || $[35] !== t9) {
633
+ t11 = /*#__PURE__*/_jsxs(_Fragment, {
634
+ children: [t9, t10]
635
+ });
636
+ $[34] = t10;
637
+ $[35] = t9;
638
+ $[36] = t11;
639
+ } else {
640
+ t11 = $[36];
641
+ }
642
+ return t11;
643
+ }