Skip to content

Commit d6f2c11

Browse files
authored
fix(toolkit): tool list and switch design fixes (#718)
* fix tool list styling * update switch styling with on/off * use changes in create assistant flow
1 parent 28d16a9 commit d6f2c11

File tree

4 files changed

+57
-26
lines changed

4 files changed

+57
-26
lines changed

src/interfaces/assistants_web/src/components/AgentSettingsForm/ToolsStep.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ const ToolRow: React.FC<{
5757
handleSwitch: (checked: boolean) => void;
5858
}> = ({ name, description, icon, checked, handleSwitch }) => {
5959
return (
60-
<div className="flex flex-col space-y-4 rounded-md border p-4 dark:border-volcanic-300 dark:bg-volcanic-100">
60+
<div className="flex flex-col space-y-1 rounded-md border p-4 dark:border-volcanic-300 dark:bg-volcanic-100">
6161
<div className="flex justify-between">
6262
<div className="flex items-center space-x-2">
6363
<div className="flex h-5 w-5 items-center justify-center rounded-sm bg-marble-800 dark:bg-volcanic-200">
@@ -70,6 +70,7 @@ const ToolRow: React.FC<{
7070
<Switch
7171
checked={checked}
7272
onChange={(checked: boolean) => !!name && handleSwitch(checked)}
73+
showCheckedState
7374
/>
7475
</div>
7576
<Text className="dark:text-marble-800">{description}</Text>

src/interfaces/assistants_web/src/components/Composer/DataSourceMenu.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ export const DataSourceMenu: React.FC<Props> = ({ agent, tools }) => {
113113
theme="evolved-blue"
114114
checked={!!paramsTools?.find((t) => t.name === tool.name)}
115115
onChange={(checked) => handleToggle(tool.name!, checked)}
116+
showCheckedState
116117
/>
117118
)}
118119
</div>

src/interfaces/assistants_web/src/components/UI/Switch.tsx

Lines changed: 49 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type Props = {
1919
label?: string;
2020
name?: string;
2121
theme?: COHERE_BRANDED_COLORS;
22+
showCheckedState?: boolean;
2223
className?: string;
2324
};
2425

@@ -30,8 +31,30 @@ export const Switch: React.FC<Props> = ({
3031
tooltip,
3132
theme = 'evolved-green',
3233
name,
34+
showCheckedState = false,
3335
className = '',
3436
}) => {
37+
const themeColors: Partial<Record<COHERE_BRANDED_COLORS, string>> = {
38+
blue: 'bg-blue-500 group-hover:bg-blue-400',
39+
'evolved-green': 'bg-evolved-green-700 group-hover:bg-evolved-green-500',
40+
quartz: 'bg-quartz-500 group-hover:bg-quartz-400',
41+
green: 'bg-green-250 group-hover:bg-green-200',
42+
mushroom: 'bg-mushroom-600 group-hover:bg-mushroom-500',
43+
coral: 'bg-coral-600 group-hover:bg-coral-500',
44+
'evolved-blue': 'bg-evolved-blue-500 group-hover:bg-blue-400',
45+
'evolved-mushroom': 'bg-evolved-mushroom-500 group-hover:bg-evolved-mushroom-600',
46+
'evolved-quartz': 'bg-evolved-quartz-500 group-hover:bg-evolved-quartz-700',
47+
};
48+
49+
const checkedColor = checked
50+
? themeColors[theme]
51+
: 'bg-mushroom-900 hover:bg-mushroom-800 dark:bg-volcanic-500 dark:group-hover:bg-volcanic-400';
52+
53+
const toggleTextClassNames = cn(
54+
'pointer-events-none absolute',
55+
'pt-0.5 font-variable text-[6px] font-medium uppercase',
56+
'transform transition-all duration-300 ease-in-out'
57+
);
3558
return (
3659
<div className="group flex w-10 items-center">
3760
<Field>
@@ -47,34 +70,41 @@ export const Switch: React.FC<Props> = ({
4770
checked={checked}
4871
onChange={onChange}
4972
className={cn(
50-
'relative inline-flex h-5 w-10 shrink-0 cursor-pointer rounded border-2 border-transparent',
73+
'relative inline-flex h-4 w-[30px] shrink-0 cursor-pointer rounded border-2 border-transparent',
5174
'transition-colors duration-300 ease-in-out',
5275
'focus-visible:outline focus-visible:outline-offset-4 focus-visible:outline-volcanic-500',
53-
{
54-
'bg-mushroom-900 hover:bg-mushroom-800 dark:bg-volcanic-500 dark:group-hover:bg-volcanic-400':
55-
!checked,
56-
'bg-blue-500 group-hover:bg-blue-400': checked && theme === 'blue',
57-
'bg-evolved-green-700 group-hover:bg-evolved-green-500':
58-
checked && theme === 'evolved-green',
59-
'bg-quartz-500 group-hover:bg-quartz-400': checked && theme === 'quartz',
60-
'bg-green-250 group-hover:bg-green-200': checked && theme === 'green',
61-
'bg-mushroom-600 group-hover:bg-mushroom-500': checked && theme === 'mushroom',
62-
'bg-coral-600 group-hover:bg-coral-500': checked && theme === 'coral',
63-
'bg-evolved-blue-500 group-hover:bg-blue-400': checked && theme === 'evolved-blue',
64-
'bg-evolved-mushroom-500 group-hover:bg-evolved-mushroom-600':
65-
checked && theme === 'evolved-mushroom',
66-
'bg-evolved-quartz-500 group-hover:bg-evolved-quartz-700':
67-
checked && theme === 'evolved-quartz',
68-
}
76+
checkedColor
6977
)}
7078
>
79+
{showCheckedState && (
80+
<>
81+
<Text
82+
aria-hidden="true"
83+
className={cn(toggleTextClassNames, {
84+
'translate-x-[3px] opacity-100': checked,
85+
'translate-x-[14px] opacity-0': !checked,
86+
})}
87+
>
88+
On
89+
</Text>
90+
<Text
91+
aria-hidden="true"
92+
className={cn(toggleTextClassNames, 'text-mushroom-700 dark:text-volcanic-800', {
93+
'translate-x-[14px] opacity-100': !checked,
94+
'translate-x-0 opacity-0': checked,
95+
})}
96+
>
97+
Off
98+
</Text>
99+
</>
100+
)}
71101
<span
72102
aria-hidden="true"
73103
className={cn(
74-
'pointer-events-none inline-block h-4 w-5 rounded shadow-lg',
104+
'pointer-events-none absolute h-3 w-3 rounded shadow-lg',
75105
'transform transition-all duration-300 ease-in-out',
76106
{
77-
'translate-x-4': checked,
107+
'translate-x-[14px]': checked,
78108
'translate-x-0': !checked,
79109
'bg-mushroom-700 dark:bg-volcanic-800': !checked,
80110
'bg-marble-950': checked,

src/interfaces/assistants_web/src/components/UI/ToggleCard.tsx

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -43,23 +43,21 @@ export const ToggleCard: React.FC<Props> = ({
4343
return (
4444
<div className="flex flex-col rounded-md border border-volcanic-800 bg-volcanic-950 p-4 dark:border-volcanic-300 dark:bg-volcanic-150">
4545
<div className="flex items-start gap-x-6">
46-
<div className="flex flex-grow flex-col gap-y-2">
46+
<div className="flex flex-grow flex-col gap-y-1">
4747
<div className="flex items-center gap-x-2">
48-
<div className="flex size-6 items-center justify-center rounded bg-volcanic-900 dark:bg-volcanic-200">
48+
<div className="flex size-5 items-center justify-center rounded bg-volcanic-900 dark:bg-volcanic-200">
4949
<Icon
5050
name={icon}
5151
kind="outline"
52-
size="sm"
52+
size="xs"
5353
className="fill-volcanic-300 dark:fill-marble-950"
5454
/>
5555
</div>
5656
<Text styleAs="label" as="span" className="font-medium">
5757
{label}
5858
</Text>
5959
</div>
60-
<Text styleAs="p-sm" className="text-mushroom-300 dark:text-marble-800">
61-
{description}
62-
</Text>
60+
<Text className="text-mushroom-300 dark:text-marble-800">{description}</Text>
6361
{errorMessage && (
6462
<Text styleAs="p-sm" className="text-danger-350">
6563
Error: {errorMessage}
@@ -72,6 +70,7 @@ export const ToggleCard: React.FC<Props> = ({
7270
onChange={onToggle}
7371
className="flex-shrink-0 gap-0"
7472
theme={theme}
73+
showCheckedState
7574
/>
7675
)}
7776
</div>

0 commit comments

Comments
 (0)