@kortix/ui 0.14.10 → 0.14.12

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 (46) hide show
  1. package/dist/_vendor/shared/runtime-versions.d.ts +9 -0
  2. package/dist/browser/browser-panel.d.ts +2 -1
  3. package/dist/browser/browser-panel.js +12 -2
  4. package/dist/customize/settings/tabs/sandbox-template-form.js +8 -1
  5. package/dist/files/renderers/show-content-renderer.d.ts +2 -2
  6. package/dist/files/renderers/show-content-renderer.js +2 -1
  7. package/dist/i18n/en.d.ts +18 -0
  8. package/dist/i18n/en.js +30 -12
  9. package/dist/i18n/ui-catalog/remaining-ui-translation-keys.generated.js +3 -3
  10. package/dist/internal/branding/branding-provider.js +3 -3
  11. package/dist/internal/hooks/use-notification-center.d.ts +10 -6
  12. package/dist/internal/hooks/use-notification-center.js +32 -10
  13. package/dist/internal/lib/browser-noise/rules/extensions.js +3 -0
  14. package/dist/internal/lib/site-metadata.js +4 -4
  15. package/dist/internal/notifications/notification-bell.js +4 -3
  16. package/dist/internal/notifications/notification-rows.d.ts +1 -1
  17. package/dist/internal/notifications/notification-rows.js +2 -0
  18. package/dist/internal/stores/kortix-computer-store.d.ts +3 -2
  19. package/dist/internal/stores/kortix-computer-store.js +5 -3
  20. package/dist/session/composer/index.d.ts +1 -0
  21. package/dist/session/composer/index.js +1 -0
  22. package/dist/session/composer/send-stop-control.js +8 -3
  23. package/dist/session/header/session-site-header.js +3 -1
  24. package/dist/session/panel/easy/detail-view.js +11 -0
  25. package/dist/session/panel/mobile-tool-drawer.js +10 -4
  26. package/dist/session/panel/open-session-quick-view.js +3 -3
  27. package/dist/session/panel/panel-fallback.js +10 -7
  28. package/dist/session/panel/session-desktop.d.ts +6 -0
  29. package/dist/session/panel/session-desktop.js +74 -0
  30. package/dist/session/panel/session-panel-provider.d.ts +1 -0
  31. package/dist/session/panel/session-panel-provider.js +17 -1
  32. package/dist/session/panel/shared/use-panel-handoffs.d.ts +2 -2
  33. package/dist/session/panel/shared/use-panel-handoffs.js +5 -1
  34. package/dist/session/panel/use-session-panel-layout.js +8 -0
  35. package/dist/session/status/session-tab-title.d.ts +1 -1
  36. package/dist/session/status/session-tab-title.js +1 -1
  37. package/dist/session/thread/session-chat.js +12 -0
  38. package/dist/session/thread/session-context-sub-sessions.js +1 -1
  39. package/dist/session/tool/tools/image-gen-tool.d.ts +1 -1
  40. package/dist/session/tool/tools/image-gen-tool.js +17 -8
  41. package/dist/session/turn/user-message.d.ts +5 -4
  42. package/dist/session/turn/user-message.js +7 -5
  43. package/dist/styles.css +1 -1
  44. package/dist/workspace/session-workspace.js +24 -5
  45. package/package.json +3 -3
  46. package/skills/kortix-ui/references/modules.md +1 -1
@@ -189,7 +189,14 @@ function DesktopSessionLayout({ panel, children }) {
189
189
  // over the detail's toolbar. Elevate to z-[35] while expanded:
190
190
  // above the toggle (30) and the sidebar edge strip (30), still
191
191
  // below the sidebar's hover-peek flyout (40) and fixed overlays.
192
- isExpanded ? 'z-[35]' : 'z-10'), children: _jsxs(ResizablePanelGroup, { direction: "horizontal", className: "h-full gap-0 bg-transparent", style: { transition: 'none' }, children: [_jsx(ResizablePanel, { ref: mainPanelRef, defaultSize: shouldShowPanel ? (isEasy ? 65 : 50) : 100, minSize: shouldShowPanel ? (isAnimating ? 0 : isExpanded ? 0 : 30) : 100, maxSize: shouldShowPanel ? (isAnimating ? 100 : isExpanded ? 0 : 65) : 100, collapsible: isExpanded || isAnimating, className: cn('relative flex w-full flex-col overflow-hidden bg-transparent transition-[padding] duration-300 ease-out', isExpanded && !isAnimating && 'pointer-events-none opacity-0'), children: _jsx("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden", children: children }) }), _jsx(SessionPanelHandle, { panel: panel }), _jsx(SessionPanelSide, { panel: panel })] }) }) }) }));
192
+ isExpanded ? 'z-[35]' : 'z-10'), children: _jsxs(ResizablePanelGroup, { direction: "horizontal", className: "h-full gap-0 bg-transparent", style: { transition: 'none' }, children: [_jsx(ResizablePanel, { ref: mainPanelRef, defaultSize: shouldShowPanel ? (isEasy ? 65 : 50) : 100,
193
+ // Expanded: no constraint, so the frozen split survives the
194
+ // layer covering it (see `SessionPanelSide`).
195
+ minSize: shouldShowPanel ? (isAnimating || isExpanded ? 0 : 30) : 100, maxSize: shouldShowPanel ? (isAnimating || isExpanded ? 100 : 65) : 100, collapsible: isExpanded || isAnimating, className: cn(
196
+ // `isolate`: the chat's own z-indexes (the site header is
197
+ // z-50) stay inside this panel, so the full-screen layer
198
+ // (z-30, `SessionPanelSide`) always paints above all of it.
199
+ 'relative isolate flex w-full flex-col overflow-hidden bg-transparent transition-[padding] duration-(--duration-slow) ease-out', isExpanded && 'pointer-events-none'), "aria-hidden": isExpanded || undefined, children: _jsx("div", { className: "flex min-h-0 flex-1 flex-col overflow-hidden", children: children }) }), _jsx(SessionPanelHandle, { panel: panel }), _jsx(SessionPanelSide, { panel: panel })] }) }) }) }));
193
200
  }
194
201
  function SessionPanelHandle({ panel }) {
195
202
  const { isExpanded, shouldShowPanel } = panel;
@@ -202,16 +209,28 @@ function SessionPanelHandle({ panel }) {
202
209
  // always resizable. The two states collapse into one.
203
210
  const handleEnabled = shouldShowPanel && !isExpanded;
204
211
  const handleVisible = handleEnabled;
205
- return (_jsx(ResizableHandle, { withHandle: handleEnabled, disabled: !handleEnabled, className: cn('z-20 w-0 transition-opacity duration-300', 'after:absolute after:inset-y-0 after:-left-1.5 after:w-3', handleEnabled ? '-right-3' : 'pointer-events-none', handleVisible
212
+ return (_jsx(ResizableHandle, { withHandle: handleEnabled, disabled: !handleEnabled, className: cn('z-20 w-0 transition-opacity duration-(--duration-slow)', 'after:absolute after:inset-y-0 after:-left-1.5 after:w-3', handleEnabled ? '-right-3' : 'pointer-events-none', handleVisible
206
213
  ? 'opacity-100'
207
214
  : 'opacity-0 hover:opacity-100 data-[resize-handle-active]:opacity-100') }));
208
215
  }
209
216
  function SessionPanelSide({ panel }) {
210
217
  const { sidePanelRef, shouldShowPanel, isAnimating, isExpanded, isEasy, effectivePanelHeader, effectivePanelBody, } = panel;
211
- return (_jsx(ResizablePanel, { ref: sidePanelRef, defaultSize: shouldShowPanel ? (isEasy ? 35 : 50) : 0, minSize: shouldShowPanel ? (isAnimating ? 0 : isExpanded ? 100 : 35) : 0, maxSize: shouldShowPanel ? (isAnimating ? 100 : isExpanded ? 100 : 70) : 0, collapsible: !isExpanded || isAnimating, className: cn('bg-background relative overflow-hidden', !shouldShowPanel && 'hidden'), children: _jsx("div", { className: cn('bg-background h-full transition-[padding] duration-300 ease-out'), children: _jsxs("div", { className: cn('border-border flex h-full min-h-0 w-full min-w-0 flex-col overflow-clip',
218
+ return (_jsx(ResizablePanel, { ref: sidePanelRef, defaultSize: shouldShowPanel ? (isEasy ? 35 : 50) : 0, minSize: shouldShowPanel ? (isAnimating || isExpanded ? 0 : 35) : 0, maxSize: shouldShowPanel ? (isAnimating || isExpanded ? 100 : 70) : 0, collapsible: !isExpanded || isAnimating, className: cn('bg-background overflow-hidden',
219
+ // Full screen is a LAYER over the chat, not a split at 100%. The
220
+ // panel drops `relative`, so the content below positions against the
221
+ // panel group instead (the panel's own overflow cannot clip a child
222
+ // whose containing block is outside it). Same nodes, same parent: the
223
+ // open document does not remount. The split behind stays frozen
224
+ // (`usePanelGlide`), so the chat never squeezes under the viewer.
225
+ !isExpanded && 'relative', !shouldShowPanel && 'hidden'), children: _jsx("div", { className: cn('bg-background h-full transition-[padding] duration-(--duration-slow) ease-out',
226
+ // The backdrop fades over the chat while the detail card slides in
227
+ // on top of it (`DetailLayer`) — one layer arriving, nothing resizing.
228
+ isExpanded &&
229
+ 'animate-in fade-in-0 absolute inset-0 z-30 duration-(--duration-normal)'), children: _jsxs("div", { className: cn('border-border flex h-full min-h-0 w-full min-w-0 flex-col overflow-clip',
212
230
  // Easy mode is chrome-free — the cards carry their own
213
- // borders, so a panel border would just box a box.
214
- !isEasy && 'border-l'), children: [effectivePanelHeader, _jsx("div", { className: "min-h-0 flex-1 overflow-clip", children: effectivePanelBody })] }) }) }));
231
+ // borders, so a panel border would just box a box. A full-screen
232
+ // layer has no neighbour to separate from.
233
+ !isEasy && !isExpanded && 'border-l'), children: [effectivePanelHeader, _jsx("div", { className: "min-h-0 flex-1 overflow-clip", children: effectivePanelBody })] }) }) }));
215
234
  }
216
235
  /**
217
236
  * The whole session screen apps/web renders: the thread, and the resizable side
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kortix/ui",
3
- "version": "0.14.10",
3
+ "version": "0.14.12",
4
4
  "description": "Kortix UI: the shared React component library for apps/web, Kortix Apps and SDK hosts. Tailwind v4 classes, themed by CSS variables.",
5
5
  "type": "module",
6
6
  "license": "Elastic-2.0",
@@ -2193,7 +2193,7 @@
2193
2193
  "@extend-ai/react-docx": "^0.7.5",
2194
2194
  "@extend-ai/react-xlsx": "0.13.4",
2195
2195
  "@glideapps/glide-data-grid": "6.0.4-alpha24",
2196
- "@kortix/llm-catalog": "0.14.10",
2196
+ "@kortix/llm-catalog": "0.14.12",
2197
2197
  "@lezer/highlight": "1.2.3",
2198
2198
  "@paper-design/shaders-react": "^0.0.76",
2199
2199
  "@phosphor-icons/react": "2.1.10",
@@ -2285,7 +2285,7 @@
2285
2285
  "zustand": "^5.0.3"
2286
2286
  },
2287
2287
  "peerDependencies": {
2288
- "@kortix/sdk": "^0.14.10",
2288
+ "@kortix/sdk": "^0.14.12",
2289
2289
  "@tanstack/react-query": "^5.75.2",
2290
2290
  "@types/react": ">=18",
2291
2291
  "react": ">=19",
@@ -305,7 +305,7 @@ export function Ask({ projectId, onAsk }: { projectId: string; onAsk: (text: str
305
305
  }
306
306
  ```
307
307
 
308
- Names: `ComposerAboveCard`, `ComposerCard`, `AgentSelector`, `agentDisplayLabel`, `captureAttachmentSubmission`, `runComposerSend`, `AttachmentSubmission`, `COMMAND_CHIP_ATTRIBUTE`, `COMMAND_CHIP_LABEL_ATTRIBUTE`, `COMMAND_CHIP_SELECTOR`, `COMMAND_CHIP_VALUE`, `draftWillRunCommand`, `planCommandAttachments`, `planUnresolvedCommandChip`, `readCommandChipLabel`, `COMPOSER_INPUT_SLOT_CLASS`, `COMPOSER_SHELL_CLASS`, `Composer`, `ComposerChatInput`, `ComposerOptions`, `ComposerDropZone`, `ComposerUnderbar`, `DraftScope`, `ComposerEditor`, `ComposerEditorHandle`, `baseExtensions`, `MentionNode`, `baseSuggestion`, `MenuController`, `ReasoningEffortSelector`, `SessionChatInput`, `SessionChatInputProps`, `useFirstPromptPreviewStore`, `useSessionComposerPrefillStore`, `createSubmitLatch`, `AttachedFile`
308
+ Names: `ComposerAboveCard`, `ComposerCard`, `AgentSelector`, `agentDisplayLabel`, `captureAttachmentSubmission`, `runComposerSend`, `AttachmentSubmission`, `COMMAND_CHIP_ATTRIBUTE`, `COMMAND_CHIP_LABEL_ATTRIBUTE`, `COMMAND_CHIP_SELECTOR`, `COMMAND_CHIP_VALUE`, `draftWillRunCommand`, `planCommandAttachments`, `planUnresolvedCommandChip`, `readCommandChipLabel`, `COMPOSER_INPUT_SLOT_CLASS`, `COMPOSER_SHELL_CLASS`, `Composer`, `ComposerChatInput`, `ComposerOptions`, `ComposerDropZone`, `ComposerUnderbar`, `DraftScope`, `ComposerEditor`, `ComposerEditorHandle`, `baseExtensions`, `MentionChip`, `MentionNode`, `baseSuggestion`, `MenuController`, `ReasoningEffortSelector`, `SessionChatInput`, `SessionChatInputProps`, `useFirstPromptPreviewStore`, `useSessionComposerPrefillStore`, `createSubmitLatch`, `AttachedFile`
309
309
 
310
310
  ## `@kortix/ui/session`
311
311