fix: make code button flash, fix mcp icon color (#7848)
* Added new animation * Use animation on code button and make it appear just once * fix tests * Fix Mcp Icon * Fix fill on white mode * fixed tests * Fixed mcp color on dark mode
This commit is contained in:
parent
e1608d143f
commit
fce1a5887d
7 changed files with 23 additions and 13 deletions
|
|
@ -132,7 +132,7 @@ export default function PublishDropdown() {
|
||||||
>
|
>
|
||||||
<IconComponent
|
<IconComponent
|
||||||
name="Mcp"
|
name="Mcp"
|
||||||
className={`${groupStyle} icon-size mr-2 fill-muted-foreground group-hover:fill-white`}
|
className={`${groupStyle} icon-size mr-2 fill-muted-foreground group-hover:fill-foreground`}
|
||||||
/>
|
/>
|
||||||
<span>MCP Server</span>
|
<span>MCP Server</span>
|
||||||
<IconComponent
|
<IconComponent
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ const SvgMcpIcon = (props) => {
|
||||||
width="16"
|
width="16"
|
||||||
height="16"
|
height="16"
|
||||||
viewBox="0 0 16 16"
|
viewBox="0 0 16 16"
|
||||||
fill="none"
|
fill={props.isdark ? "white" : "black"}
|
||||||
{...props}
|
{...props}
|
||||||
>
|
>
|
||||||
<g clip-path="url(#clip0_93_974)">
|
<g clip-path="url(#clip0_93_974)">
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
|
import { useDarkStore } from "@/stores/darkStore";
|
||||||
import React, { forwardRef } from "react";
|
import React, { forwardRef } from "react";
|
||||||
import SvgMcpIcon from "./McpIcon";
|
import SvgMcpIcon from "./McpIcon";
|
||||||
|
|
||||||
export const McpIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
export const McpIcon = forwardRef<SVGSVGElement, React.PropsWithChildren<{}>>(
|
||||||
(props, ref) => {
|
(props, ref) => {
|
||||||
return <SvgMcpIcon ref={ref} {...props} />;
|
const isdark = useDarkStore((state) => state.dark);
|
||||||
|
return <SvgMcpIcon ref={ref} isdark={isdark} {...props} />;
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -436,15 +436,19 @@ const NodeToolbarComponent = memo(
|
||||||
};
|
};
|
||||||
|
|
||||||
const isCustomComponent = useMemo(() => {
|
const isCustomComponent = useMemo(() => {
|
||||||
return data.type === "CustomComponent" && !data.node?.edited;
|
const isCustom = data.type === "CustomComponent" && !data.node?.edited;
|
||||||
}, [data.type, data.node?.edited]);
|
if (isCustom) {
|
||||||
|
data.node.edited = true;
|
||||||
|
}
|
||||||
|
return isCustom;
|
||||||
|
}, [data.type, data.node]);
|
||||||
|
|
||||||
const renderToolbarButtons = useMemo(
|
const renderToolbarButtons = useMemo(
|
||||||
() => (
|
() => (
|
||||||
<>
|
<>
|
||||||
{hasCode && (
|
{hasCode && (
|
||||||
<ToolbarButton
|
<ToolbarButton
|
||||||
className={isCustomComponent ? "!bg-accent-pink" : ""}
|
className={isCustomComponent ? "animate-pulse-pink" : ""}
|
||||||
icon="Code"
|
icon="Code"
|
||||||
label="Code"
|
label="Code"
|
||||||
onClick={() => setOpenModal(true)}
|
onClick={() => setOpenModal(true)}
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
--accent-indigo: 226 100% 94%; /* hsl(226, 100%, 94%) */
|
--accent-indigo: 226 100% 94%; /* hsl(226, 100%, 94%) */
|
||||||
--accent-indigo-foreground: 243 75% 59%; /* hsl(243, 75%, 59%) */
|
--accent-indigo-foreground: 243 75% 59%; /* hsl(243, 75%, 59%) */
|
||||||
|
|
||||||
--accent-pink: 326 78% 95%; /* hsl(326, 78%, 95%) */
|
--accent-pink: 326, 78%, 95%; /* hsl(326, 78%, 95%) */
|
||||||
--accent-pink-foreground: 333 71% 51%; /* hsl(333, 71%, 51%) */
|
--accent-pink-foreground: 333 71% 51%; /* hsl(333, 71%, 51%) */
|
||||||
--tooltip: 0 0% 0%; /* hsl(0, 0%, 0%) */
|
--tooltip: 0 0% 0%; /* hsl(0, 0%, 0%) */
|
||||||
--tooltip-foreground: 0 0% 100%; /* hsl(0, 0%, 100%) */
|
--tooltip-foreground: 0 0% 100%; /* hsl(0, 0%, 100%) */
|
||||||
|
|
@ -229,7 +229,7 @@
|
||||||
--accent-emerald-hover: 163.1 88.1% 19.8%; /* hsl(163.1, 88.1%, 19.8%) */
|
--accent-emerald-hover: 163.1 88.1% 19.8%; /* hsl(163.1, 88.1%, 19.8%) */
|
||||||
--accent-indigo: 242 25% 34%; /* hsl(242, 25%, 34%) */
|
--accent-indigo: 242 25% 34%; /* hsl(242, 25%, 34%) */
|
||||||
--accent-indigo-foreground: 234 89% 74%; /* hsl(234, 89%, 74%) */
|
--accent-indigo-foreground: 234 89% 74%; /* hsl(234, 89%, 74%) */
|
||||||
--accent-pink: 336 69% 30%; /* hsl(336, 69%, 30%) */
|
--accent-pink: 336, 69%, 30%; /* hsl(336, 69%, 30%) */
|
||||||
--accent-pink-foreground: 329 86% 70%; /* hsl(329, 86%, 70%) */
|
--accent-pink-foreground: 329 86% 70%; /* hsl(329, 86%, 70%) */
|
||||||
--tooltip: 0 0% 100%; /* hsl(0, 0%, 100%) */
|
--tooltip: 0 0% 100%; /* hsl(0, 0%, 100%) */
|
||||||
|
|
||||||
|
|
@ -348,7 +348,6 @@
|
||||||
--selected: #0369a1;
|
--selected: #0369a1;
|
||||||
--discord-color: #5765f2;
|
--discord-color: #5765f2;
|
||||||
|
|
||||||
|
|
||||||
--filter-foreground: #eef2ff;
|
--filter-foreground: #eef2ff;
|
||||||
--filter-background: #4e46e599;
|
--filter-background: #4e46e599;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -91,6 +91,10 @@ const config = {
|
||||||
"offset-distance": "100%",
|
"offset-distance": "100%",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"pulse-pink": {
|
||||||
|
"0%, 100%": { backgroundColor: "hsla(var(--accent-pink), 1)" },
|
||||||
|
"50%": { backgroundColor: "hsla(var(--accent-pink), 0.4)" },
|
||||||
|
},
|
||||||
},
|
},
|
||||||
animation: {
|
animation: {
|
||||||
// Animation definitions
|
// Animation definitions
|
||||||
|
|
@ -99,6 +103,7 @@ const config = {
|
||||||
contentShow: "contentShow 400ms cubic-bezier(0.16, 1, 0.3, 1)",
|
contentShow: "contentShow 400ms cubic-bezier(0.16, 1, 0.3, 1)",
|
||||||
contentHide: "contentHide 500ms cubic-bezier(0.16, 1, 0.3, 1)",
|
contentHide: "contentHide 500ms cubic-bezier(0.16, 1, 0.3, 1)",
|
||||||
wiggle: "wiggle 150ms ease-in-out 1",
|
wiggle: "wiggle 150ms ease-in-out 1",
|
||||||
|
"pulse-pink": "pulse-pink 2s linear infinite",
|
||||||
"slow-wiggle": "wiggle 500ms ease-in-out 1",
|
"slow-wiggle": "wiggle 500ms ease-in-out 1",
|
||||||
"border-beam": "border-beam calc(var(--duration)*1s) infinite linear",
|
"border-beam": "border-beam calc(var(--duration)*1s) infinite linear",
|
||||||
},
|
},
|
||||||
|
|
@ -343,8 +348,8 @@ const config = {
|
||||||
999: "999",
|
999: "999",
|
||||||
},
|
},
|
||||||
fontSize: {
|
fontSize: {
|
||||||
"xxs": "11px",
|
xxs: "11px",
|
||||||
"mmd": "13px",
|
mmd: "13px",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ test(
|
||||||
});
|
});
|
||||||
|
|
||||||
await expect(page.getByTestId("code-button-modal")).toHaveClass(
|
await expect(page.getByTestId("code-button-modal")).toHaveClass(
|
||||||
/!bg-accent-pink/,
|
/animate-pulse-pink/,
|
||||||
);
|
);
|
||||||
|
|
||||||
await page.getByTestId("code-button-modal").last().click();
|
await page.getByTestId("code-button-modal").last().click();
|
||||||
|
|
@ -66,7 +66,7 @@ class CustomComponent(Component):
|
||||||
await page.getByText("Check & Save").last().click();
|
await page.getByText("Check & Save").last().click();
|
||||||
|
|
||||||
await expect(page.getByTestId("code-button-modal")).not.toHaveClass(
|
await expect(page.getByTestId("code-button-modal")).not.toHaveClass(
|
||||||
/!bg-accent-pink/,
|
/animate-pulse-pink/,
|
||||||
{ timeout: 3000 },
|
{ timeout: 3000 },
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue