summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/components/prompt-input/context-items.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/app/src/components/prompt-input/context-items.tsx')
-rw-r--r--packages/app/src/components/prompt-input/context-items.tsx109
1 files changed, 58 insertions, 51 deletions
diff --git a/packages/app/src/components/prompt-input/context-items.tsx b/packages/app/src/components/prompt-input/context-items.tsx
index a843e109d..b575c3961 100644
--- a/packages/app/src/components/prompt-input/context-items.tsx
+++ b/packages/app/src/components/prompt-input/context-items.tsx
@@ -20,61 +20,68 @@ export const PromptContextItems: Component<ContextItemsProps> = (props) => {
<Show when={props.items.length > 0}>
<div class="flex flex-nowrap items-start gap-2 p-2 overflow-x-auto no-scrollbar">
<For each={props.items}>
- {(item) => (
- <Tooltip
- value={
- <span class="flex max-w-[300px]">
- <span class="text-text-invert-base truncate-start [unicode-bidi:plaintext] min-w-0">
- {getDirectory(item.path)}
+ {(item) => {
+ const directory = getDirectory(item.path)
+ const filename = getFilename(item.path)
+ const label = getFilenameTruncated(item.path, 14)
+ const selected = props.active(item)
+
+ return (
+ <Tooltip
+ value={
+ <span class="flex max-w-[300px]">
+ <span class="text-text-invert-base truncate-start [unicode-bidi:plaintext] min-w-0">
+ {directory}
+ </span>
+ <span class="shrink-0">{filename}</span>
</span>
- <span class="shrink-0">{getFilename(item.path)}</span>
- </span>
- }
- placement="top"
- openDelay={2000}
- >
- <div
- classList={{
- "group shrink-0 flex flex-col rounded-[6px] pl-2 pr-1 py-1 max-w-[200px] h-12 transition-all transition-transform shadow-xs-border hover:shadow-xs-border-hover": true,
- "cursor-pointer hover:bg-surface-interactive-weak": !!item.commentID && !props.active(item),
- "cursor-pointer bg-surface-interactive-hover hover:bg-surface-interactive-hover shadow-xs-border-hover":
- props.active(item),
- "bg-background-stronger": !props.active(item),
- }}
- onClick={() => props.openComment(item)}
+ }
+ placement="top"
+ openDelay={2000}
>
- <div class="flex items-center gap-1.5">
- <FileIcon node={{ path: item.path, type: "file" }} class="shrink-0 size-3.5" />
- <div class="flex items-center text-11-regular min-w-0 font-medium">
- <span class="text-text-strong whitespace-nowrap">{getFilenameTruncated(item.path, 14)}</span>
- <Show when={item.selection}>
- {(sel) => (
- <span class="text-text-weak whitespace-nowrap shrink-0">
- {sel().startLine === sel().endLine
- ? `:${sel().startLine}`
- : `:${sel().startLine}-${sel().endLine}`}
- </span>
- )}
- </Show>
+ <div
+ classList={{
+ "group shrink-0 flex flex-col rounded-[6px] pl-2 pr-1 py-1 max-w-[200px] h-12 transition-all transition-transform shadow-xs-border hover:shadow-xs-border-hover": true,
+ "cursor-pointer hover:bg-surface-interactive-weak": !!item.commentID && !selected,
+ "cursor-pointer bg-surface-interactive-hover hover:bg-surface-interactive-hover shadow-xs-border-hover":
+ selected,
+ "bg-background-stronger": !selected,
+ }}
+ onClick={() => props.openComment(item)}
+ >
+ <div class="flex items-center gap-1.5">
+ <FileIcon node={{ path: item.path, type: "file" }} class="shrink-0 size-3.5" />
+ <div class="flex items-center text-11-regular min-w-0 font-medium">
+ <span class="text-text-strong whitespace-nowrap">{label}</span>
+ <Show when={item.selection}>
+ {(sel) => (
+ <span class="text-text-weak whitespace-nowrap shrink-0">
+ {sel().startLine === sel().endLine
+ ? `:${sel().startLine}`
+ : `:${sel().startLine}-${sel().endLine}`}
+ </span>
+ )}
+ </Show>
+ </div>
+ <IconButton
+ type="button"
+ icon="close-small"
+ variant="ghost"
+ class="ml-auto size-3.5 text-text-weak hover:text-text-strong transition-all"
+ onClick={(e) => {
+ e.stopPropagation()
+ props.remove(item)
+ }}
+ aria-label={props.t("prompt.context.removeFile")}
+ />
</div>
- <IconButton
- type="button"
- icon="close-small"
- variant="ghost"
- class="ml-auto size-3.5 text-text-weak hover:text-text-strong transition-all"
- onClick={(e) => {
- e.stopPropagation()
- props.remove(item)
- }}
- aria-label={props.t("prompt.context.removeFile")}
- />
+ <Show when={item.comment}>
+ {(comment) => <div class="text-12-regular text-text-strong ml-5 pr-1 truncate">{comment()}</div>}
+ </Show>
</div>
- <Show when={item.comment}>
- {(comment) => <div class="text-12-regular text-text-strong ml-5 pr-1 truncate">{comment()}</div>}
- </Show>
- </div>
- </Tooltip>
- )}
+ </Tooltip>
+ )
+ }}
</For>
</div>
</Show>