From dd346d4d26a1a64d974cadfaea699dc2a34169e5 Mon Sep 17 00:00:00 2001 From: Ryan Hopper-Lowe <46546486+ryanhopperlowe@users.noreply.github.com> Date: Thu, 24 Oct 2024 08:36:36 -0500 Subject: [PATCH] UI Feat: Show OAuth Providers in tile view (#291) * chore: move oauth apps to primary sidebar list - removes the need for a footer Signed-off-by: Ryan Hopper-Lowe * chore: update Oauth apps header to match other page headers Signed-off-by: Ryan Hopper-Lowe * feat: add google oauth card - rearrange oauth app display - add google logo Signed-off-by: Ryan Hopper-Lowe * feat: add microsoft 365 oauth card Signed-off-by: Ryan Hopper-Lowe * UI feat: add slack oauth card Signed-off-by: Ryan Hopper-Lowe * UI feat: add notion oauth app Signed-off-by: Ryan Hopper-Lowe * feat: increase bg lightness in dialogs in dark mode * fix: add OAuth provider icons --------- Signed-off-by: Ryan Hopper-Lowe --- .../components/oauth-apps/OAuthAppList.tsx | 16 +++-- .../components/oauth-apps/OAuthAppTile.tsx | 36 ++++++++-- .../oauth-apps/OAuthAppTypeIcon.tsx | 7 +- ui/admin/app/components/sidebar/Sidebar.tsx | 67 +++++++++++------- ui/admin/app/components/ui/dialog.tsx | 4 +- ui/admin/app/lib/model/oauthApps/index.ts | 10 ++- .../app/lib/model/oauthApps/oauth-helpers.ts | 7 ++ .../model/oauthApps/{ => providers}/github.ts | 3 +- .../lib/model/oauthApps/providers/google.ts | 20 ++++++ .../model/oauthApps/providers/microsoft365.ts | 20 ++++++ .../lib/model/oauthApps/providers/notion.ts | 21 ++++++ .../lib/model/oauthApps/providers/slack.ts | 21 ++++++ ui/admin/app/tailwind.css | 4 ++ ui/admin/public/assets/google_logo.png | Bin 0 -> 16690 bytes ui/admin/public/assets/notion_logo.png | Bin 0 -> 7329 bytes ui/admin/public/assets/office365_logo.svg | 1 + ui/admin/public/assets/slack_logo_dark.png | Bin 0 -> 16023 bytes ui/admin/public/assets/slack_logo_light.png | Bin 0 -> 14501 bytes ui/admin/tailwind.config.ts | 4 ++ 19 files changed, 199 insertions(+), 42 deletions(-) rename ui/admin/app/lib/model/oauthApps/{ => providers}/github.ts (95%) create mode 100644 ui/admin/app/lib/model/oauthApps/providers/google.ts create mode 100644 ui/admin/app/lib/model/oauthApps/providers/microsoft365.ts create mode 100644 ui/admin/app/lib/model/oauthApps/providers/notion.ts create mode 100644 ui/admin/app/lib/model/oauthApps/providers/slack.ts create mode 100644 ui/admin/public/assets/google_logo.png create mode 100644 ui/admin/public/assets/notion_logo.png create mode 100644 ui/admin/public/assets/office365_logo.svg create mode 100644 ui/admin/public/assets/slack_logo_dark.png create mode 100644 ui/admin/public/assets/slack_logo_light.png diff --git a/ui/admin/app/components/oauth-apps/OAuthAppList.tsx b/ui/admin/app/components/oauth-apps/OAuthAppList.tsx index d7e85439..ecbf950f 100644 --- a/ui/admin/app/components/oauth-apps/OAuthAppList.tsx +++ b/ui/admin/app/components/oauth-apps/OAuthAppList.tsx @@ -1,4 +1,4 @@ -import { TypographyH3, TypographyP } from "~/components/Typography"; +import { TypographyH2, TypographyP } from "~/components/Typography"; import { useOAuthAppList } from "~/hooks/oauthApps/useOAuthApps"; import { OAuthAppTile } from "./OAuthAppTile"; @@ -7,9 +7,11 @@ export function OAuthAppList() { const apps = useOAuthAppList(); return ( -
+
- Supported OAuth Apps + + Supported OAuth Apps + These are the currently supported OAuth apps for Otto. These @@ -18,9 +20,13 @@ export function OAuthAppList() {
-
+
{apps.map(({ type }) => ( - + ))}
diff --git a/ui/admin/app/components/oauth-apps/OAuthAppTile.tsx b/ui/admin/app/components/oauth-apps/OAuthAppTile.tsx index da83fc55..911687a1 100644 --- a/ui/admin/app/components/oauth-apps/OAuthAppTile.tsx +++ b/ui/admin/app/components/oauth-apps/OAuthAppTile.tsx @@ -1,12 +1,21 @@ import { OAuthProvider } from "~/lib/model/oauthApps/oauth-helpers"; +import { cn } from "~/lib/utils"; +import { useTheme } from "~/components/theme"; import { Card } from "~/components/ui/card"; import { useOAuthAppInfo } from "~/hooks/oauthApps/useOAuthApps"; import { OAuthAppDetail } from "./OAuthAppDetail"; -export function OAuthAppTile({ type }: { type: OAuthProvider }) { +export function OAuthAppTile({ + type, + className, +}: { + type: OAuthProvider; + className?: string; +}) { const info = useOAuthAppInfo(type); + const { isDark } = useTheme(); if (!info) { console.error(`OAuth app ${type} not found`); @@ -15,15 +24,32 @@ export function OAuthAppTile({ type }: { type: OAuthProvider }) { const { displayName } = info; + const getSrc = () => { + if (isDark) return info.darkLogo ?? info.logo; + return info.logo; + }; + return ( - + {displayName} - + {!info.disableConfiguration && ( + + )} ); } diff --git a/ui/admin/app/components/oauth-apps/OAuthAppTypeIcon.tsx b/ui/admin/app/components/oauth-apps/OAuthAppTypeIcon.tsx index 75bbf259..28cdcea3 100644 --- a/ui/admin/app/components/oauth-apps/OAuthAppTypeIcon.tsx +++ b/ui/admin/app/components/oauth-apps/OAuthAppTypeIcon.tsx @@ -1,11 +1,16 @@ +import { NotionLogoIcon } from "@radix-ui/react-icons"; import { KeyIcon } from "lucide-react"; -import { FaGithub } from "react-icons/fa"; +import { FaGithub, FaGoogle, FaMicrosoft, FaSlack } from "react-icons/fa"; import { OAuthProvider } from "~/lib/model/oauthApps/oauth-helpers"; import { cn } from "~/lib/utils"; const IconMap = { [OAuthProvider.GitHub]: FaGithub, + [OAuthProvider.Slack]: FaSlack, + [OAuthProvider.Google]: FaGoogle, + [OAuthProvider.Microsoft365]: FaMicrosoft, + [OAuthProvider.Notion]: NotionLogoIcon, }; export function OAuthAppTypeIcon({ diff --git a/ui/admin/app/components/sidebar/Sidebar.tsx b/ui/admin/app/components/sidebar/Sidebar.tsx index 83963c35..345e09be 100644 --- a/ui/admin/app/components/sidebar/Sidebar.tsx +++ b/ui/admin/app/components/sidebar/Sidebar.tsx @@ -55,6 +55,11 @@ const items = [ url: $path("/users"), icon: User, }, + { + title: "OAuth Apps", + url: $path("/oauth-apps"), + icon: KeyIcon, + }, ]; export function AppSidebar() { @@ -80,8 +85,8 @@ export function AppSidebar() { @@ -110,31 +115,39 @@ export function AppSidebar() { - - - - - Settings - - - - - - - ); } + +// disabling this because this will inevitably be used in the future +// eslint-disable-next-line @typescript-eslint/no-unused-vars +function AppSidebarFooter() { + const { state } = useSidebar(); + return ( + + + + + Settings + + + + + + + + ); +} diff --git a/ui/admin/app/components/ui/dialog.tsx b/ui/admin/app/components/ui/dialog.tsx index 8b81af38..9f5459c3 100644 --- a/ui/admin/app/components/ui/dialog.tsx +++ b/ui/admin/app/components/ui/dialog.tsx @@ -19,7 +19,7 @@ const DialogOverlay = React.forwardRef< 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 IRP3Mp5020|NdN!< literal 0 HcmV?d00001 diff --git a/ui/admin/public/assets/notion_logo.png b/ui/admin/public/assets/notion_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f1e0cbe41b64a3e0374318485eeda2235edb2c2c GIT binary patch literal 7329 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 \ No newline at end of file diff --git a/ui/admin/public/assets/slack_logo_dark.png b/ui/admin/public/assets/slack_logo_dark.png new file mode 100644 index 0000000000000000000000000000000000000000..2f71f2ea3ff5b04a7103f93ef8221476aa55d584 GIT binary patch literal 16023 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 Qe~YtaBo#pw;zl9=4~Z{-<^TWy literal 0 HcmV?d00001 diff --git a/ui/admin/public/assets/slack_logo_light.png b/ui/admin/public/assets/slack_logo_light.png new file mode 100644 index 0000000000000000000000000000000000000000..cabd24d72d22f6690355127eacf2d641d074cba6 GIT binary patch literal 14501 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%0AA-PH}su ziYLcK_)F$yNZz6XW1)440mmd#jw$Ag5&PfgI}*+OLjwiGxxv6^Y&BfRH-8~$?j)~z z42O1vhGdH~6sm=#Nw?FLG%Zqe4K2~eaH|OngInHTd|9PBrSONbOEi*UWe!HSPMJ`0 zhYGgGsYuHmS}Lt$JoSpU4^kLtSAFs;0A@pBQ*5>V^BSfRz4PJ9DHW;HCvDX92D9;@ zHfd6y@>W+(&-TLg3G0T8`D6jYf_jUUUq@p>^GMq<8wLCXZpY(Dcql0(`zU6_>NK3Q zbVt|Xtc-rQyk$nsW|L4Mfg3k+N|zH#HqcWl>sh;^3p1{272`uzZr`*{%8?Hm^JsCIl(dp12Ksb!t&mU@`J^QM z{WVb=_c~>S1m+Ls^;At-ZA|IPV+e}NM@HG`59!seBPe+|S^TK>+R8S&Mb31K77WbW zE;owoeIL@j3b_I-1C+92viEP&v7(&k$tUF|(oVjjys)&4ieH5%JPsG&jZ$X3?s`VnAiVrK%2CPQTyYA~}v`f!V;&Z;Y=+h=AjuGPuc zo8kU5@BCItGF+;&1c`V&nSE)%WV}0W<>yANW7ogsDa={{M*g12NUAtDs<}P*F$fwQ zFHmsU^t|52CGQcKoHXgs${dw^r6XEEIi#l9_-8vXU;;%l*byYfLz`M{=7{Jkz!%Y+ zs|X&S6jLd1gELjBgco;3G>xu%=CMpyzfWG(ufP3*|8Z8t6~j4KP33NHhy{0Mpb!=A zzZ!yzhe_FtgS6)NUCij_xZ@a(EiJ5dsHNNRQwv&=Ax%w8 zXrZ36aOF=^ifd2Q(~hTpsUwQebW8Bmp{+Ee4mG{kqODHdK6AJ#46IP&r72NRB()o| ztOJ^1!Bw`alA=2@PTJ};??J%{9jQ!S&3lSd$wxGIqh8?fpz%M@c)rsoUDm4>zN#(E zltY78`y=Vu2jV4RzYr;J)-7}j)<%tv>Y9(i_Jsa!JiRdGoG3c03g)XgTuh7xL zdC#Xp_s^neo99$N04@=B(u*TDV?WW=rR+=;b5&odK$A12UMV^AtjqSLO@%qp@n@zm zhl6~k@%tf|{W-%-#8o65!$LSkNEV2hAt*PFjtB|?4-TDw&4+ko>jIu4LuiK1qk@evac|uZOiUL82LT)7Y)Dj4%;R~b2q%=GUpP~_V!A{IO}qR zwz0dbk>@t#8F#P9#ELa)p?#)Kx@%nXb%kk&w-2rn_cDh)AAJfGyGqo&GySX}EoNot zKhSRr1@Et~(7LLV>y$TlMimMo1r5l~Td6N}O^Pbv|o!T`TzV^p6X&1R1 z7ONjNJvy!mufi~oXmYTZpcK!dl+mlrdvipIf$Yf$E9H~FU#)~iFYlXXDt=*qIAjCi4}j*imBZf@ubIYK`% zcVh1nh)SSc4*BzoN_6caN4~n4>ZsT%AHi{v26wqV^3C+sm|70K7n{jO4x>eq zrQT>La)=uiiwCJIVFQxzzOQ|tJ@k;w63$V^0KsMY@n9C;2o-TZ~S`DX~rSI|k~0tI?;}o~fjb z4ZT8+g8HgOv8@}=B-S~8hGc$7aFM#d$rs^&%;ph{`lliXmqkv0WdcY$(r{F#l*9-3 z7}h$5t2TND3|3bHs za?L|kiTtH}Y!xPag11sGvUzR%o9(t4`t_O6!nhJOGlkSyzud7%in*cMf+>;2xJqqe zkpv62a9T_}^{FN&4=M)N=MZ@`$TWUr0%yBvUIyi| zhn(_wCo_WKYd_PpAlIBwuu$U|Z$#3CIp#AhQudPMCKjXtc2$4oPrzGON;>xnFEI@n zrLAYFs1{_w*Qar~;5k${xDpZ8;5l=pNmX-pb#`yU$H2T(N!m96&3>AhX+dY_R<{b6 z&8v?&JM0qYd!x<`l52^7`lMbgo1u>Wz$g*>dIiG<4eFysNjRQB#XI6daw0X*JDk8s taH>Y_