From be71a1947b3eba2e426e4272f93431aad96b84ef Mon Sep 17 00:00:00 2001 From: Marco Beretta <81851188+Berry-13@users.noreply.github.com> Date: Tue, 3 Oct 2023 16:28:19 +0200 Subject: [PATCH] style: adjust icon scale, favicon, azure icon; chore: convert files to TSX; ci: unit tests for generation buttons (#987) * some jsx to tsx and added 3 new test * test(stop) * new librechat and azure icon, small fix * fix(tsc error) * fix(tsc error) Endpoint Item --- client/public/assets/favicon-16x16.png | Bin 828 -> 709 bytes client/public/assets/favicon-32x32.png | Bin 1565 -> 1712 bytes .../{DeleteButton.jsx => DeleteButton.tsx} | 2 +- .../components/Conversations/RenameButton.jsx | 16 -------- .../components/Conversations/RenameButton.tsx | 28 ++++++++++++++ client/src/components/Endpoints/Icon.tsx | 12 +++--- .../Input/EndpointMenu/EndpointItem.tsx | 1 + .../{EndpointItems.jsx => EndpointItems.tsx} | 9 ++++- .../Input/EndpointMenu/PresetItem.tsx | 1 + .../Generations/__tests__/Button.spec.tsx | 30 +++++++++++++++ .../Generations/__tests__/Continue.spec.tsx | 22 +++++++++++ .../Generations/__tests__/Regenerate.spec.tsx | 22 +++++++++++ .../Input/Generations/__tests__/Stop.spec.tsx | 22 +++++++++++ client/src/components/Messages/Message.tsx | 3 +- client/src/components/Nav/ClearConvos.tsx | 2 + .../Nav/{MobileNav.jsx => MobileNav.tsx} | 0 client/src/components/Nav/NavLink.jsx | 25 ------------- client/src/components/Nav/NavLink.tsx | 35 ++++++++++++++++++ .../Nav/{NavLinks.jsx => NavLinks.tsx} | 0 .../Nav/{NewChat.jsx => NewChat.tsx} | 0 .../src/components/svg/AzureMinimalIcon.tsx | 13 ++++--- 21 files changed, 187 insertions(+), 56 deletions(-) rename client/src/components/Conversations/{DeleteButton.jsx => DeleteButton.tsx} (95%) delete mode 100644 client/src/components/Conversations/RenameButton.jsx create mode 100644 client/src/components/Conversations/RenameButton.tsx rename client/src/components/Input/EndpointMenu/{EndpointItems.jsx => EndpointItems.tsx} (57%) create mode 100644 client/src/components/Input/Generations/__tests__/Button.spec.tsx create mode 100644 client/src/components/Input/Generations/__tests__/Continue.spec.tsx create mode 100644 client/src/components/Input/Generations/__tests__/Regenerate.spec.tsx create mode 100644 client/src/components/Input/Generations/__tests__/Stop.spec.tsx rename client/src/components/Nav/{MobileNav.jsx => MobileNav.tsx} (100%) delete mode 100644 client/src/components/Nav/NavLink.jsx create mode 100644 client/src/components/Nav/NavLink.tsx rename client/src/components/Nav/{NavLinks.jsx => NavLinks.tsx} (100%) rename client/src/components/Nav/{NewChat.jsx => NewChat.tsx} (100%) diff --git a/client/public/assets/favicon-16x16.png b/client/public/assets/favicon-16x16.png index 16f72e5ff1e1d05590658135a1a788bf390f7d0f..03975d8ec0b68c2fb128eded0dcb7d013e890580 100644 GIT binary patch delta 696 zcmV;p0!RJ42E_%C8Gi-<001BJ|6u?C010qNS#tmY4#WTe4#WYKD-Ig~00MVOL_t(I zjg6B_NR&|&$N%U1zI*4JaT>=NB@xOV^b|yjLd`;I5d;|oEnG$j_J9^HB4`s9R8+KR zk*k8BMUl{=mqLk!NQntyEzH0qd(32Mau+2xw8d7)qhD}U?*g{6Vbaffx-0o@Hpu5Voc*ewoPKK8mKD=An(a2A3UBs6AP8=+U0 zeYSjXWi|!D%5@lB;m|p&04RZImaI1BE9XP6D~DbY2D#o7^7AHl_B*6e5UlH@6{#B3=Jjw-t_c7($kX;dZNW$3*co&k@?%CM%c+wEz ek=Lj3m-P#8Oe6jM-{;~00000 delta 816 zcmV-01JC@$1-u538Gix*005AYXf^-<00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000SaNLh0L01m?d01m?e$8V@)0008fNkl0_Zo09eDy+z36OmmXeZvUUCLlh7kn{$0N)LY=b~R=naSVXcC%>Pc4N*gNw5@sd-f? z*_pBNJ7Z!;y?-uV5^=cBiCh4DERz%y+h9G?;OMLGe#VO;4!{?$YhuMyo@i+ebpQBYAbgF-dpbzU88Kl%QN zRcm;de{9$@Z|iJKj?q|DT1McYoSKoaC}V`hQYFct8%{2D>MqX-JAK(POW^(wMd u=qVK?(a(hiQ9x}JBuzma_1eH-81@&B3{VQzg3-(X0000RtlKR#uVg8#2wO?r(3TLQqC|_uKxhJJ+>j^`HC7Ug z6g4E)m}sJnf0(L>kf@+XfV4a2kKcOV1y{2nm+qL!N2F<17LFpRKQC|R{}WrkrBA8=b;pH_BKn-twLt4 zz*%C+fWQEy(0||eyQ$K#>8WtI&x3@MFy4X)nDY%7PJPQ6Onm9vhLcYc%$-DhIY23* z=zZhL>GJ4Eza|m{l{abXwChbS+7ndv>4&ZVp&nSBdNAKZ7yZit|H4sSVjwVTVPNB{ zfK^~rpo=pieQAc;DX@Wg|LlE^GxYaN-){ylh``$91AnVLI0p=LwNVR>K^YMs*T}?# zZ2n^)1AydJfR>ZPFre$0`~%s(-(K-w5xCyply_nF7)XC@r$z;B3e@`q@D0dO5QpO+ z?k8wGRxf5sJeTd;)=`Nz0_zfAb3B+QBJd8NH8LtuA1vl>91(^E90gE)kBowCZI0AP z{4tgOZhsqITNY%Hy${e)s}dPZ6+{YXY&Zo73Xp;nI5(1);+o4DB@q%i1J4sxg$XK= zG6aw+0KOsNUisA`@Q1DneBK@N9q8u9j%A+wjd<7k$OX=>zXs$0@C_3O&%&j3WB{jJ zjC~Uu6#@qRD3|@I)0Kcv?rn~0f5T`sKu!~&29*)8- z6q>>mkw@O)+)Z5xxQY!;J8e~<#Rum`^B@P2`HY>01VwTwM@EpCnQg2w-%G@|cJ+XP zy-t`6g&%O1H*KaaNiwP8efwhVH>5CyE=PJVI}L^(jwbM!bk&VXo+0(Ax0@%iE`fSD!&HKR38ieJv_ zn_as?PTswS-N}N$C}1>1Ft>&L?4My3RDTJPIdYs8(qS{v8UowyfjKSA^iV>e%8h() zj$dUUBNN~M43nz}mi00P3WWCen($T<^VM2aWDXw_w^CsX)2JJ<0&!ib7VSHQHV^EU z=jKT5q-m+~_4vW!?FT;%n|0?oUuN{&>4!P#ZXriOj$-ltgDrKV#RD21nJPXKwto?b zvOxB=*7({&GoKrh!kSB%97H+qD4^v{+}nFQJpMS0A~pG*WZ!z1n+
j~@&^D&#! zP&L?T;NI0*f(zD!^%ENW?x4T^)21~A`GNH2XP9|FXM_}M^^$x z6rbrudIE~&HRGMw_z7{Qil{8lM1P}20V@+Io%sf5`*uJm4OOHMosdN@A7ueI>PA~O z$#_XlJ>RVQy!IN7%BSeEGX``E0hqk=YI$SpdREtHF~115CqYo1(^Basc&RaR+`FIv zS;5Mm>{f5KNbO%r06-uD1mV4}7k~anR{{XA0{yRL;IBJAwkm({*Eh2gp?^HsOJT+* zFojwwZv=Rd5{X|zBa~%NyeR$8k29#2IRM2EwP!&7a-jI*AGYGP9mm`84_Uqa@rP$_ zzVfr+=;*aM7g{CJ4=Q6YsFIg>R6~G7kv=>nD<1nN#{q6CSTzr*%6N!itQD&x0RWi( z;_wieC_%_5AP6I`Qfi53&4m$SQvDY<1g{-G6}3M_`!-;h(fv z{uO6Z+hELUXj~Jll&|{U(?^#6ZG1>!{8;v~62Ga+FDPN>X_?-;H+)9U2M)ykY;Bjk zz2_Q}%dV$nVl#;9|9Be6xO@=YJuz_Y{yYux2!>Nagje)XaZ*n#2yj6J7X9pg4ku2c z_nUY0o573L!tkXC>?EPeD~JDj@`kan)0_)!{{hUvYuRCoDJ=j1002ovPDHLkV1k<7 BDhL1o delta 1559 zcmV+y2I%>)4V?^-8Gi!+002a!ipBr{00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z00P!fOjJb>qkj&fehs314WfPzqkjpYdm5*NC98`csfP@reF&g>52Jnxp?podpt0fA z=l1gV{QK_s_QB`gWW%frp?sCr#{d8S&+X;3;@8RQ;{5*owSVK+C98@asD~b?h6kT| zlGVjPwV5cajP3aK@A>w~>f&_DwHc;_0-kq7x0}oB;|8C49jJzd(7y5d_~7&JzvkV= z>EQGG`O@y^G_jHrq<~Ahp2zCpMYx;?pn7J+t>g6Y*zoFJ!KoLfgA1X3kkrHA^X?|B ziwvQC2%vj9vwxP;?&w3eoAUbje9gH5op%JDd3wyaqukD`-_rH_`XQ=_?D+Md+RQ4g zjRKx{J++s$0iRB6{Ug$o_HgwiJRET<@NFH`1W{-9Z^*L!{{AkmkL&mJ ze9XDg?dI_L_s;C)K(?78s)&)*#Qy*O+wtsNz^D2Jp`272% z+|D?&mA2#9L${g{qkrP`@E4_mAgPDF<=X_Fcv!!sXvMDc`uT;>y%?s10-bk$&APhe z+O6QzH-EB}8>fXFsD?SSl}oyxa>=t)y`!n#(NeskUBReNyP?(Z=!Vd~6r_RX_VV8I z?h~YeLAIHl*~<^2eu2)rc+0ox_wyE|g75kF!sy;py`u%6d79YC`2GB@;M6UyjyAHB zyXD#(sD;$-=*;Wmo7u|H?dJOZ{mSd(cFML?y?>-myP#~xv1`V#^!xei`1Nl!$1fO}P-O%Rs@+7N@;`Hw= zu8$F;fXM3MW5cYf-_kO$ku$K8&FtjY@aiwGk7>oPx#Zg3^6lO7?QqDmvEkNp$+TL( zr+>5J)|1x7388#WX)Zhf000SaNLh0L01m?d01m?e$8V@)0008eNklYGqwQ{YjE7q0Dedh`}lXD3nB=>#a_kG{z ze_*rYczLZKynlM0`MzJ@*E8RP`ag)oNq;IH9YNEzYCF5Q%Eas65T;IDw|e#6Jt(;o zagc{lo2;_32)OD?KoQ6J_3;)qL^r(j_9P}#VADyotpt&!lS!}Af{WCR-k!4Hh&KB zzf#amgV8-fE$9-_L!T7eGdV@Wx)85ksbUI}mX6*TO0_~C+B;L*Co92#zQ%spM)Vi# z0yh8ywa)&7IDP%W5~I>IBxk4@VZ(-Fgu*V+$s5X!^V*zTguiL=0il{3PQok4t9K?U!;Yj^Yyfl}-N)Z;3PHGB8%uYWpF4Z}fl z$oB4e7I(QQ1mG}mWJ>d*lB35G>KY9}#8gnBP$5e!1ltlS)p7Wr@Ezc0I$5kT*9ca2 zIZlb)P@G2l?EEusID78ARm)sRvcNyGt;~QA_8R^H;g}4o?jsQCWk9b_ zjH3lBFXzeUFP+R`Ut7EWYXN1#w~AVnLaeZ32>I7;I)tLW1Dnyqj}W$K@Mi!3002ov JPDHLkV1n{5Z;t=~ diff --git a/client/src/components/Conversations/DeleteButton.jsx b/client/src/components/Conversations/DeleteButton.tsx similarity index 95% rename from client/src/components/Conversations/DeleteButton.jsx rename to client/src/components/Conversations/DeleteButton.tsx index fec6a6d246..4d0545cd93 100644 --- a/client/src/components/Conversations/DeleteButton.jsx +++ b/client/src/components/Conversations/DeleteButton.tsx @@ -22,7 +22,7 @@ export default function DeleteButton({ conversationId, renaming, retainView, tit useEffect(() => { if (deleteConvoMutation.isSuccess) { - if (currentConversation?.conversationId == conversationId) { + if ((currentConversation as { conversationId?: string }).conversationId == conversationId) { newConversation(); } diff --git a/client/src/components/Conversations/RenameButton.jsx b/client/src/components/Conversations/RenameButton.jsx deleted file mode 100644 index b3e5be470a..0000000000 --- a/client/src/components/Conversations/RenameButton.jsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; -import RenameIcon from '../svg/RenameIcon'; -import CheckMark from '../svg/CheckMark'; - -export default function RenameButton({ renaming, renameHandler, onRename, twcss }) { - const handler = renaming ? onRename : renameHandler; - const classProp = { className: 'p-1 hover:text-white' }; - if (twcss) { - classProp.className = twcss; - } - return ( - - ); -} diff --git a/client/src/components/Conversations/RenameButton.tsx b/client/src/components/Conversations/RenameButton.tsx new file mode 100644 index 0000000000..cd6dcba306 --- /dev/null +++ b/client/src/components/Conversations/RenameButton.tsx @@ -0,0 +1,28 @@ +import React, { ReactElement } from 'react'; +import RenameIcon from '../svg/RenameIcon'; +import CheckMark from '../svg/CheckMark'; + +interface RenameButtonProps { + renaming: boolean; + renameHandler: () => void; + onRename: () => void; + twcss?: string; +} + +export default function RenameButton({ + renaming, + renameHandler, + onRename, + twcss, +}: RenameButtonProps): ReactElement { + const handler = renaming ? onRename : renameHandler; + const classProp: { className?: string } = { className: 'p-1 hover:text-white' }; + if (twcss) { + classProp.className = twcss; + } + return ( + + ); +} diff --git a/client/src/components/Endpoints/Icon.tsx b/client/src/components/Endpoints/Icon.tsx index bba80ae50e..9966d1988f 100644 --- a/client/src/components/Endpoints/Icon.tsx +++ b/client/src/components/Endpoints/Icon.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { Plugin, GPTIcon, AnthropicIcon } from '~/components/svg'; +import { Plugin, GPTIcon, AnthropicIcon, AzureMinimalIcon } from '~/components/svg'; import { useAuthContext } from '~/hooks'; import { cn } from '~/utils'; import { IconProps } from '~/common'; @@ -34,12 +34,12 @@ const Icon: React.FC = (props) => { } else { const endpointIcons = { azureOpenAI: { - icon: , + icon: , bg: 'linear-gradient(0.375turn, #61bde2, #4389d0)', name: 'ChatGPT', }, openAI: { - icon: , + icon: , bg: typeof model === 'string' && model.toLowerCase().includes('gpt-4') ? '#AB68FF' @@ -52,7 +52,7 @@ const Icon: React.FC = (props) => { name: 'Plugins', }, google: { icon: Palm Icon, name: 'PaLM2' }, - anthropic: { icon: , bg: '#d09a74', name: 'Claude' }, + anthropic: { icon: , bg: '#d09a74', name: 'Claude' }, bingAI: { icon: jailbreak ? ( Bing Icon @@ -62,7 +62,7 @@ const Icon: React.FC = (props) => { name: jailbreak ? 'Sydney' : 'BingAI', }, chatGPTBrowser: { - icon: , + icon: , bg: typeof model === 'string' && model.toLowerCase().includes('gpt-4') ? '#AB68FF' @@ -73,7 +73,7 @@ const Icon: React.FC = (props) => { default: { icon: , bg: 'grey', name: 'UNKNOWN' }, }; - const { icon, bg, name } = endpointIcons[endpoint ?? ''] ?? endpointIcons.default; + const { icon, bg, name } = endpointIcons[endpoint ?? 'default']; return (
void; + selectedEndpoint: string; +} + +export default function EndpointItems({ endpoints, selectedEndpoint }: EndpointItemsProps) { return ( <> {endpoints.map((endpoint) => ( @@ -8,7 +14,6 @@ export default function EndpointItems({ endpoints, onSelect, selectedEndpoint }) isSelected={selectedEndpoint === endpoint} key={endpoint} value={endpoint} - onSelect={onSelect} endpoint={endpoint} /> ))} diff --git a/client/src/components/Input/EndpointMenu/PresetItem.tsx b/client/src/components/Input/EndpointMenu/PresetItem.tsx index a3f7686379..297363d786 100644 --- a/client/src/components/Input/EndpointMenu/PresetItem.tsx +++ b/client/src/components/Input/EndpointMenu/PresetItem.tsx @@ -17,6 +17,7 @@ export default function PresetItem({ model: preset?.model, error: false, className: 'mr-2', + isCreatedByUser: false, }); const getPresetTitle = () => { diff --git a/client/src/components/Input/Generations/__tests__/Button.spec.tsx b/client/src/components/Input/Generations/__tests__/Button.spec.tsx new file mode 100644 index 0000000000..77c71a1353 --- /dev/null +++ b/client/src/components/Input/Generations/__tests__/Button.spec.tsx @@ -0,0 +1,30 @@ +import { render, fireEvent } from '@testing-library/react'; +import Button from '../Button'; + +describe('Button', () => { + it('renders with the correct type and children', () => { + const { getByTestId, getByText } = render( + , + ); + expect(getByTestId('regenerate-generation-button')).toBeInTheDocument(); + expect(getByText('Regenerate')).toBeInTheDocument(); + }); + + it('calls onClick when clicked', () => { + const handleClick = jest.fn(); + const { getByText } = render( + , + ); + fireEvent.click(getByText('Continue')); + expect(handleClick).toHaveBeenCalledTimes(1); + }); +}); diff --git a/client/src/components/Input/Generations/__tests__/Continue.spec.tsx b/client/src/components/Input/Generations/__tests__/Continue.spec.tsx new file mode 100644 index 0000000000..e9ac7beebb --- /dev/null +++ b/client/src/components/Input/Generations/__tests__/Continue.spec.tsx @@ -0,0 +1,22 @@ +import { render, fireEvent } from '@testing-library/react'; +import Continue from '../Continue'; + +describe('Continue', () => { + it('should render the Continue button', () => { + const { getByText } = render( + { + (''); + }} + />, + ); + expect(getByText('Continue')).toBeInTheDocument(); + }); + + it('should call onClick when the button is clicked', () => { + const handleClick = jest.fn(); + const { getByText } = render(); + fireEvent.click(getByText('Continue')); + expect(handleClick).toHaveBeenCalledTimes(1); + }); +}); diff --git a/client/src/components/Input/Generations/__tests__/Regenerate.spec.tsx b/client/src/components/Input/Generations/__tests__/Regenerate.spec.tsx new file mode 100644 index 0000000000..7cf4f5b1d5 --- /dev/null +++ b/client/src/components/Input/Generations/__tests__/Regenerate.spec.tsx @@ -0,0 +1,22 @@ +import { render, fireEvent } from '@testing-library/react'; +import Regenerate from '../Regenerate'; + +describe('Regenerate', () => { + it('should render the Regenerate button', () => { + const { getByText } = render( + { + (''); + }} + />, + ); + expect(getByText('Regenerate')).toBeInTheDocument(); + }); + + it('should call onClick when the button is clicked', () => { + const handleClick = jest.fn(); + const { getByText } = render(); + fireEvent.click(getByText('Regenerate')); + expect(handleClick).toHaveBeenCalledTimes(1); + }); +}); diff --git a/client/src/components/Input/Generations/__tests__/Stop.spec.tsx b/client/src/components/Input/Generations/__tests__/Stop.spec.tsx new file mode 100644 index 0000000000..fd85c60b79 --- /dev/null +++ b/client/src/components/Input/Generations/__tests__/Stop.spec.tsx @@ -0,0 +1,22 @@ +import { render, fireEvent } from '@testing-library/react'; +import Stop from '../Stop'; + +describe('Stop', () => { + it('should render the Stop button', () => { + const { getByText } = render( + { + (''); + }} + />, + ); + expect(getByText('Stop')).toBeInTheDocument(); + }); + + it('should call onClick when the button is clicked', () => { + const handleClick = jest.fn(); + const { getByText } = render(); + fireEvent.click(getByText('Stop')); + expect(handleClick).toHaveBeenCalledTimes(1); + }); +}); diff --git a/client/src/components/Messages/Message.tsx b/client/src/components/Messages/Message.tsx index 1938128f25..876cdb34f6 100644 --- a/client/src/components/Messages/Message.tsx +++ b/client/src/components/Messages/Message.tsx @@ -94,6 +94,7 @@ export default function Message({ ...conversation, ...message, model: message?.model ?? conversation?.model, + size: 38, }); if (message?.bg && searchResult) { @@ -135,7 +136,7 @@ export default function Message({ <>
-
+
{typeof icon === 'string' && /[^\\x00-\\x7F]+/.test(icon as string) ? ( {icon} ) : ( diff --git a/client/src/components/Nav/ClearConvos.tsx b/client/src/components/Nav/ClearConvos.tsx index 0d76d8bb98..bdefb4c53d 100644 --- a/client/src/components/Nav/ClearConvos.tsx +++ b/client/src/components/Nav/ClearConvos.tsx @@ -12,6 +12,7 @@ const ClearConvos = ({ open, onOpenChange }) => { const [confirmClear, setConfirmClear] = useState(false); const localize = useLocalize(); + // Clear all conversations const clearConvos = useCallback(() => { if (confirmClear) { console.log('Clearing conversations...'); @@ -22,6 +23,7 @@ const ClearConvos = ({ open, onOpenChange }) => { } }, [confirmClear, clearConvosMutation]); + // Refresh conversations after clearing useEffect(() => { if (clearConvosMutation.isSuccess) { refreshConversations(); diff --git a/client/src/components/Nav/MobileNav.jsx b/client/src/components/Nav/MobileNav.tsx similarity index 100% rename from client/src/components/Nav/MobileNav.jsx rename to client/src/components/Nav/MobileNav.tsx diff --git a/client/src/components/Nav/NavLink.jsx b/client/src/components/Nav/NavLink.jsx deleted file mode 100644 index 38b6f6a2d6..0000000000 --- a/client/src/components/Nav/NavLink.jsx +++ /dev/null @@ -1,25 +0,0 @@ -import { forwardRef } from 'react'; -import { cn } from '~/utils/'; - -const NavLink = forwardRef((props, ref) => { - const { svg, text, clickHandler, className = '' } = props; - const defaultProps = {}; - - defaultProps.className = cn( - 'flex cursor-pointer items-center gap-3 rounded-md py-3 px-3 text-sm text-white transition-colors duration-200 hover:bg-gray-500/10', - className, - ); - - if (clickHandler) { - defaultProps.onClick = clickHandler; - } - - return ( - - {svg()} - {text} - - ); -}); - -export default NavLink; diff --git a/client/src/components/Nav/NavLink.tsx b/client/src/components/Nav/NavLink.tsx new file mode 100644 index 0000000000..519e274226 --- /dev/null +++ b/client/src/components/Nav/NavLink.tsx @@ -0,0 +1,35 @@ +import { FC, forwardRef } from 'react'; +import { cn } from '~/utils/'; + +interface Props { + svg: () => JSX.Element; + text: string; + clickHandler?: () => void; + className?: string; +} + +const NavLink: FC = forwardRef((props, ref) => { + const { svg, text, clickHandler, className = '' } = props; + const defaultProps: { + className: string; + onClick?: () => void; + } = { + className: cn( + 'flex cursor-pointer items-center gap-3 rounded-md py-3 px-3 text-sm text-white transition-colors duration-200 hover:bg-gray-500/10', + className, + ), + }; + + if (clickHandler) { + defaultProps.onClick = clickHandler; + } + + return ( + + {svg()} + {text} + + ); +}); + +export default NavLink; diff --git a/client/src/components/Nav/NavLinks.jsx b/client/src/components/Nav/NavLinks.tsx similarity index 100% rename from client/src/components/Nav/NavLinks.jsx rename to client/src/components/Nav/NavLinks.tsx diff --git a/client/src/components/Nav/NewChat.jsx b/client/src/components/Nav/NewChat.tsx similarity index 100% rename from client/src/components/Nav/NewChat.jsx rename to client/src/components/Nav/NewChat.tsx diff --git a/client/src/components/svg/AzureMinimalIcon.tsx b/client/src/components/svg/AzureMinimalIcon.tsx index 21797d6871..50c3af8ff2 100644 --- a/client/src/components/svg/AzureMinimalIcon.tsx +++ b/client/src/components/svg/AzureMinimalIcon.tsx @@ -1,7 +1,10 @@ /* eslint-disable indent */ -import React from 'react'; +import { cn } from '~/utils/'; + +export default function AzureMinimalIcon({ size = 25, className = 'h-4 w-4' }) { + const height = size; + const width = size; -export default function AzureMinimalIcon() { return (