summaryrefslogtreecommitdiff
path: root/extension/react-app/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'extension/react-app/src/components')
-rw-r--r--extension/react-app/src/components/CodeBlock.tsx6
-rw-r--r--extension/react-app/src/components/ComboBox.tsx15
-rw-r--r--extension/react-app/src/components/PillButton.tsx15
-rw-r--r--extension/react-app/src/components/RingLoader.tsx39
-rw-r--r--extension/react-app/src/components/StepContainer.tsx30
-rw-r--r--extension/react-app/src/components/UserInputContainer.tsx6
6 files changed, 87 insertions, 24 deletions
diff --git a/extension/react-app/src/components/CodeBlock.tsx b/extension/react-app/src/components/CodeBlock.tsx
index f51b7d9f..9909db0f 100644
--- a/extension/react-app/src/components/CodeBlock.tsx
+++ b/extension/react-app/src/components/CodeBlock.tsx
@@ -52,12 +52,12 @@ function CopyButton(props: { textToCopy: string; visible: boolean }) {
}}
>
{clicked ? (
- <CheckCircleIcon color="#00ff00" width="1.5em" height="1.5em" />
+ <CheckCircleIcon color="#00ff00" width="1.4em" height="1.4em" />
) : (
<ClipboardIcon
color={hovered ? "#00ff00" : "white"}
- width="1.5em"
- height="1.5em"
+ width="1.4em"
+ height="1.4em"
/>
)}
</StyledCopyButton>
diff --git a/extension/react-app/src/components/ComboBox.tsx b/extension/react-app/src/components/ComboBox.tsx
index 9017f19c..df3f970c 100644
--- a/extension/react-app/src/components/ComboBox.tsx
+++ b/extension/react-app/src/components/ComboBox.tsx
@@ -32,7 +32,9 @@ const SEARCH_INDEX_NAME = "continue_context_items";
const mainInputFontSize = 13;
const EmptyPillDiv = styled.div`
- padding: 8px;
+ padding: 4px;
+ padding-left: 8px;
+ padding-right: 8px;
border-radius: ${defaultBorderRadius};
border: 1px dashed ${lightGray};
color: ${lightGray};
@@ -273,6 +275,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
{props.selectedContextItems.map((item, idx) => {
return (
<PillButton
+ areMultipleItems={props.selectedContextItems.length > 1}
key={`${item.description.id.item_id}${idx}`}
item={item}
warning={
@@ -301,7 +304,7 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
props.onToggleAddContext();
}}
>
- <DocumentPlusIcon width="1.5em" height="1.5em" />
+ <DocumentPlusIcon width="1.4em" height="1.4em" />
</HeaderButtonWithText>
))}
</div>
@@ -378,6 +381,14 @@ const ComboBox = React.forwardRef((props: ComboBoxProps, ref) => {
Math.min(prev + 1, history.length)
);
setCurrentlyInContextQuery(false);
+ } else if (event.key === "Escape") {
+ setCurrentlyInContextQuery(false);
+ if (downshiftProps.isOpen) {
+ downshiftProps.closeMenu();
+ } else {
+ // Move cursor back over to the editor
+ postVscMessage("focusEditor", {});
+ }
}
},
onClick: () => {
diff --git a/extension/react-app/src/components/PillButton.tsx b/extension/react-app/src/components/PillButton.tsx
index 8e5f896e..edef808e 100644
--- a/extension/react-app/src/components/PillButton.tsx
+++ b/extension/react-app/src/components/PillButton.tsx
@@ -28,8 +28,11 @@ const Button = styled.button`
color: ${vscForeground};
background-color: ${secondaryDark};
border-radius: ${defaultBorderRadius};
- padding: 8px;
+ padding: 4px;
+ padding-left: 8px;
+ padding-right: 8px;
overflow: hidden;
+ font-size: 13px;
cursor: pointer;
`;
@@ -50,7 +53,6 @@ const GridDiv = styled.div`
const ButtonDiv = styled.div<{ backgroundColor: string }>`
background-color: ${secondaryDark};
- padding: 3px;
height: 100%;
display: flex;
align-items: center;
@@ -81,6 +83,7 @@ interface PillButtonProps {
warning?: string;
index: number;
addingHighlightedCode?: boolean;
+ areMultipleItems?: boolean;
}
const PillButton = (props: PillButtonProps) => {
@@ -100,8 +103,8 @@ const PillButton = (props: PillButtonProps) => {
<pre>
<code
style={{
- fontSize: "11px",
- backgroundColor: vscBackground,
+ fontSize: "12px",
+ backgroundColor: "transparent",
color: vscForeground,
whiteSpace: "pre-wrap",
wordWrap: "break-word",
@@ -134,8 +137,8 @@ const PillButton = (props: PillButtonProps) => {
position: "relative",
borderColor: props.warning
? "red"
- : props.item.editing
- ? "#8800aa"
+ : props.item.editing && props.areMultipleItems
+ ? vscForeground
: "transparent",
borderWidth: "1px",
borderStyle: "solid",
diff --git a/extension/react-app/src/components/RingLoader.tsx b/extension/react-app/src/components/RingLoader.tsx
new file mode 100644
index 00000000..5eb8a60f
--- /dev/null
+++ b/extension/react-app/src/components/RingLoader.tsx
@@ -0,0 +1,39 @@
+import React from "react";
+import styled, { keyframes } from "styled-components";
+import { buttonColor, vscBackground, vscForeground } from ".";
+
+const rotate = keyframes`
+ 0% {
+ stroke-dashoffset: 100;
+ }
+ 100% {
+ stroke-dashoffset: 12;
+ }
+`;
+
+const LoaderSvg = styled.svg`
+ transform: rotate(-90deg);
+ width: 40px;
+ height: 40px;
+ opacity: 50%;
+
+ circle {
+ fill: none;
+ stroke: ${vscForeground};
+ stroke-width: 2;
+ stroke-dasharray: 100;
+ stroke-dashoffset: 0;
+ animation: ${rotate} 6s ease-out infinite;
+ stroke-linecap: round;
+ }
+`;
+
+const RingLoader = () => (
+ <div className="m-auto w-full text-center">
+ <LoaderSvg viewBox="0 0 32 32">
+ <circle cx="16" cy="16" r="14" />
+ </LoaderSvg>
+ </div>
+);
+
+export default RingLoader;
diff --git a/extension/react-app/src/components/StepContainer.tsx b/extension/react-app/src/components/StepContainer.tsx
index 19cdd2e1..1f999892 100644
--- a/extension/react-app/src/components/StepContainer.tsx
+++ b/extension/react-app/src/components/StepContainer.tsx
@@ -63,6 +63,14 @@ const HeaderDiv = styled.div<{ error: boolean; loading: boolean }>`
padding-right: 8px;
`;
+const LeftHeaderSubDiv = styled.div`
+ margin: 8px;
+ display: grid;
+ grid-template-columns: auto 1fr;
+ align-items: center;
+ grid-gap: 2px;
+`;
+
const ContentDiv = styled.div<{ isUserInput: boolean }>`
padding: 8px;
background-color: ${(props) =>
@@ -167,16 +175,16 @@ function StepContainer(props: StepContainerProps) {
loading={(props.historyNode.active as boolean) || false}
error={props.historyNode.observation?.error ? true : false}
>
- <div className="m-2 flex items-center">
+ <LeftHeaderSubDiv>
{!isUserInput &&
(props.open ? (
- <ChevronDownIcon width="1.5em" height="1.5em" />
+ <ChevronDownIcon width="1.4em" height="1.4em" />
) : (
- <ChevronRightIcon width="1.5em" height="1.5em" />
+ <ChevronRightIcon width="1.4em" height="1.4em" />
))}
{props.historyNode.observation?.title ||
(props.historyNode.step.name as any)}
- </div>
+ </LeftHeaderSubDiv>
{/* <HeaderButton
onClick={(e) => {
e.stopPropagation();
@@ -195,7 +203,7 @@ function StepContainer(props: StepContainerProps) {
client?.showLogsAtIndex(props.index);
}}
>
- <MagnifyingGlassIcon width="1.5em" height="1.5em" />
+ <MagnifyingGlassIcon width="1.4em" height="1.4em" />
</HeaderButtonWithText>
)}
<HeaderButtonWithText
@@ -211,14 +219,14 @@ function StepContainer(props: StepContainerProps) {
>
{props.historyNode.active ? (
<StopCircleIcon
- width="1.5em"
- height="1.5em"
+ width="1.4em"
+ height="1.4em"
onClick={props.onDelete}
/>
) : (
<XMarkIcon
- width="1.5em"
- height="1.5em"
+ width="1.4em"
+ height="1.4em"
onClick={props.onDelete}
/>
)}
@@ -232,8 +240,8 @@ function StepContainer(props: StepContainerProps) {
}}
>
<ArrowPathIcon
- width="1.5em"
- height="1.5em"
+ width="1.4em"
+ height="1.4em"
onClick={props.onRetry}
/>
</HeaderButtonWithText>
diff --git a/extension/react-app/src/components/UserInputContainer.tsx b/extension/react-app/src/components/UserInputContainer.tsx
index 25f836de..7e964ad9 100644
--- a/extension/react-app/src/components/UserInputContainer.tsx
+++ b/extension/react-app/src/components/UserInputContainer.tsx
@@ -21,6 +21,8 @@ const StyledDiv = styled.div`
align-items: center;
border-bottom: 1px solid ${vscBackground};
padding: 8px;
+ padding-top: 4px;
+ padding-bottom: 4px;
`;
const DeleteButtonDiv = styled.div`
@@ -35,7 +37,7 @@ const UserInputContainer = (props: UserInputContainerProps) => {
<StyledMarkdownPreview
light={true}
source={props.children}
- className="mr-5"
+ className="mr-6"
/>
{/* <ReactMarkdown children={props.children} className="w-fit mr-10" /> */}
<DeleteButtonDiv>
@@ -46,7 +48,7 @@ const UserInputContainer = (props: UserInputContainerProps) => {
}}
text="Delete"
>
- <XMarkIcon width="1.5em" height="1.5em" />
+ <XMarkIcon width="1.4em" height="1.4em" />
</HeaderButtonWithText>
</DeleteButtonDiv>
</StyledDiv>