Use approved icon colors
16
web/public/Confluence.svg
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M4.87273 21.5569C4.61902 21.9559 4.32905 22.4274 4.11158 22.7901C3.89411 23.1528 4.00285 23.6243 4.3653 23.8419L9.33088 26.8884C9.69333 27.106 10.1645 26.9972 10.382 26.6345C10.5632 26.3081 10.8169 25.8729 11.1069 25.4014C13.0641 22.1735 15.0576 22.5362 18.6096 24.2408L23.539 26.562C23.9377 26.7434 24.3726 26.562 24.5538 26.1993L26.9098 20.8678C27.091 20.5052 26.9098 20.0337 26.5473 19.8523C25.4962 19.3808 23.4302 18.4016 21.618 17.4949C14.9126 14.267 9.22215 14.4846 4.87273 21.5569Z" fill="url(#paint0_linear)"/>
|
||||||
|
<path d="M27.1274 9.44314C27.3812 9.04419 27.6711 8.57269 27.8886 8.21001C28.1061 7.84732 27.9973 7.37583 27.6349 7.15822L22.6693 4.11165C22.3068 3.89404 21.8356 4.00285 21.6182 4.36553C21.437 4.69195 21.1832 5.12718 20.8933 5.59867C18.936 8.82657 16.9426 8.46389 13.3905 6.75926L8.46118 4.43807C8.06248 4.25673 7.62754 4.43807 7.44632 4.80076L5.09038 10.1322C4.90916 10.4949 5.09038 10.9664 5.45283 11.1478C6.50394 11.6193 8.56992 12.5985 10.3822 13.5052C17.0875 16.6969 22.778 16.5155 27.1274 9.44314Z" fill="url(#paint1_linear)"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear" x1="26.7906" y1="28.4674" x2="11.7924" y2="19.8546" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#0052CC"/>
|
||||||
|
<stop offset="0.9182" stop-color="#2380FB"/>
|
||||||
|
<stop offset="1" stop-color="#2684FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear" x1="5.20945" y1="2.52323" x2="20.2079" y2="11.1361" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#0052CC"/>
|
||||||
|
<stop offset="0.9182" stop-color="#2380FB"/>
|
||||||
|
<stop offset="1" stop-color="#2684FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.6 KiB |
BIN
web/public/Github.png
Normal file
After Width: | Height: | Size: 4.7 KiB |
BIN
web/public/GoogleDrive.png
Normal file
After Width: | Height: | Size: 259 KiB |
15
web/public/Jira.svg
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M27.0055 4H15.4512C15.4512 6.88 17.7826 9.21143 20.6626 9.21143H22.7883V11.2686C22.7883 14.1486 25.1197 16.48 27.9997 16.48V4.99429C27.9997 4.44571 27.554 4 27.0055 4Z" fill="#2684FF"/>
|
||||||
|
<path d="M21.2799 9.76001H9.72559C9.72559 12.64 12.057 14.9714 14.937 14.9714H17.0627V17.0286C17.0627 19.9086 19.3942 22.24 22.2742 22.24V10.7543C22.2742 10.2057 21.8284 9.76001 21.2799 9.76001Z" fill="url(#paint0_linear)"/>
|
||||||
|
<path d="M15.5543 15.52H4C4 18.4 6.33143 20.7314 9.21143 20.7314H11.3371V22.7886C11.3371 25.6686 13.6686 28 16.5486 28V16.5143C16.5486 15.9657 16.1029 15.52 15.5543 15.52Z" fill="url(#paint1_linear)"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear" x1="22.0343" y1="9.77256" x2="17.1181" y2="14.8424" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.176" stop-color="#0052CC"/>
|
||||||
|
<stop offset="1" stop-color="#2684FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<linearGradient id="paint1_linear" x1="16.6411" y1="15.5637" x2="10.9568" y2="21.0943" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0.176" stop-color="#0052CC"/>
|
||||||
|
<stop offset="1" stop-color="#2684FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
BIN
web/public/Notion.png
Normal file
After Width: | Height: | Size: 11 KiB |
BIN
web/public/Productboard.webp
Normal file
After Width: | Height: | Size: 718 B |
BIN
web/public/SlabLogo.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB |
BIN
web/public/Slack.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
@ -237,7 +237,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<BookstackIcon size="32" />
|
<BookstackIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">BookStack</h1>
|
<h1 className="text-3xl font-bold pl-2">BookStack</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -271,7 +271,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<ConfluenceIcon size="32" />
|
<ConfluenceIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Confluence</h1>
|
<h1 className="text-3xl font-bold pl-2">Confluence</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -75,7 +75,7 @@ export default function File() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
||||||
<FileIcon size="32" />
|
<FileIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">File</h1>
|
<h1 className="text-3xl font-bold pl-2">File</h1>
|
||||||
</div>
|
</div>
|
||||||
{popup && <Popup message={popup.message} type={popup.type} />}
|
{popup && <Popup message={popup.message} type={popup.type} />}
|
||||||
|
@ -220,7 +220,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<GithubIcon size="32" />
|
<GithubIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Github PRs</h1>
|
<h1 className="text-3xl font-bold pl-2">Github PRs</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -497,7 +497,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<GoogleDriveIcon size="32" />
|
<GoogleDriveIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Google Drive</h1>
|
<h1 className="text-3xl font-bold pl-2">Google Drive</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -264,7 +264,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<JiraIcon size="32" />
|
<JiraIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Jira</h1>
|
<h1 className="text-3xl font-bold pl-2">Jira</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -220,7 +220,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<NotionIcon size="32" />
|
<NotionIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Notion</h1>
|
<h1 className="text-3xl font-bold pl-2">Notion</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -230,7 +230,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<ProductboardIcon size="32" />
|
<ProductboardIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Productboard</h1>
|
<h1 className="text-3xl font-bold pl-2">Productboard</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -255,7 +255,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<SlabIcon size="32" />
|
<SlabIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Slab</h1>
|
<h1 className="text-3xl font-bold pl-2">Slab</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -206,7 +206,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<SlackIcon size="32" />
|
<SlackIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Slack</h1>
|
<h1 className="text-3xl font-bold pl-2">Slack</h1>
|
||||||
</div>
|
</div>
|
||||||
<MainSection />
|
<MainSection />
|
||||||
|
@ -37,7 +37,7 @@ export default function Web() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
||||||
<GlobeIcon size="32" />
|
<GlobeIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Web</h1>
|
<h1 className="text-3xl font-bold pl-2">Web</h1>
|
||||||
</div>
|
</div>
|
||||||
<h2 className="font-bold mb-2 mt-6 ml-auto mr-auto">
|
<h2 className="font-bold mb-2 mt-6 ml-auto mr-auto">
|
||||||
|
@ -106,7 +106,7 @@ function Main() {
|
|||||||
if (connectorIndexingStatus.connector.disabled) {
|
if (connectorIndexingStatus.connector.disabled) {
|
||||||
statusDisplay = (
|
statusDisplay = (
|
||||||
<div className="text-red-600 flex">
|
<div className="text-red-600 flex">
|
||||||
<XSquareIcon className="my-auto mr-1" size="18" />
|
<XSquareIcon className="my-auto mr-1" size={18} />
|
||||||
Disabled
|
Disabled
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
@ -135,7 +135,7 @@ function Main() {
|
|||||||
className="text-blue-500 flex"
|
className="text-blue-500 flex"
|
||||||
href={sourceMetadata.adminPageLink}
|
href={sourceMetadata.adminPageLink}
|
||||||
>
|
>
|
||||||
{sourceMetadata.icon({ size: "20" })}
|
{sourceMetadata.icon({ size: 20 })}
|
||||||
<div className="ml-1">
|
<div className="ml-1">
|
||||||
{getSourceDisplay(connectorIndexingStatus)}
|
{getSourceDisplay(connectorIndexingStatus)}
|
||||||
</div>
|
</div>
|
||||||
@ -184,7 +184,7 @@ export default function Status() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
||||||
<NotebookIcon size="32" />
|
<NotebookIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Indexing Status</h1>
|
<h1 className="text-3xl font-bold pl-2">Indexing Status</h1>
|
||||||
</div>
|
</div>
|
||||||
<Main />
|
<Main />
|
||||||
|
@ -50,7 +50,7 @@ const Page = () => {
|
|||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
<div className="border-solid border-gray-600 border-b pb-2 mb-4 flex">
|
||||||
<KeyIcon size="32" />
|
<KeyIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">OpenAI Keys</h1>
|
<h1 className="text-3xl font-bold pl-2">OpenAI Keys</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<NotebookIcon size="18" />
|
<NotebookIcon size={18} />
|
||||||
<div className="ml-1">Status</div>
|
<div className="ml-1">Status</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -62,7 +62,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<SlackIcon size="16" />
|
<SlackIcon size={16} />
|
||||||
<div className="ml-1">Slack</div>
|
<div className="ml-1">Slack</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -71,7 +71,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<GithubIcon size="16" />
|
<GithubIcon size={16} />
|
||||||
<div className="ml-1">Github</div>
|
<div className="ml-1">Github</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -80,7 +80,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<GoogleDriveIcon size="16" />
|
<GoogleDriveIcon size={16} />
|
||||||
<div className="ml-1">Google Drive</div>
|
<div className="ml-1">Google Drive</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -89,16 +89,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<BookstackIcon size="16" />
|
<ConfluenceIcon size={16} />
|
||||||
<div className="ml-1">BookStack</div>
|
|
||||||
</div>
|
|
||||||
),
|
|
||||||
link: "/admin/connectors/bookstack",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: (
|
|
||||||
<div className="flex">
|
|
||||||
<ConfluenceIcon size="16" />
|
|
||||||
<div className="ml-1">Confluence</div>
|
<div className="ml-1">Confluence</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -107,7 +98,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<JiraIcon size="16" />
|
<JiraIcon size={16} />
|
||||||
<div className="ml-1">Jira</div>
|
<div className="ml-1">Jira</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -116,7 +107,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<ProductboardIcon size="16" />
|
<ProductboardIcon size={16} />
|
||||||
<div className="ml-1">Productboard</div>
|
<div className="ml-1">Productboard</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -125,7 +116,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<SlabIcon size="16" />
|
<SlabIcon size={16} />
|
||||||
<div className="ml-1">Slab</div>
|
<div className="ml-1">Slab</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -134,7 +125,25 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<GlobeIcon size="16" />
|
<NotionIcon size={16} />
|
||||||
|
<div className="ml-1">Notion</div>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
link: "/admin/connectors/notion",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: (
|
||||||
|
<div className="flex">
|
||||||
|
<BookstackIcon size={16} />
|
||||||
|
<div className="ml-1">BookStack</div>
|
||||||
|
</div>
|
||||||
|
),
|
||||||
|
link: "/admin/connectors/bookstack",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: (
|
||||||
|
<div className="flex">
|
||||||
|
<GlobeIcon size={16} />
|
||||||
<div className="ml-1">Web</div>
|
<div className="ml-1">Web</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
@ -143,21 +152,12 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<FileIcon size="16" />
|
<FileIcon size={16} />
|
||||||
<div className="ml-1">File</div>
|
<div className="ml-1">File</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
link: "/admin/connectors/file",
|
link: "/admin/connectors/file",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: (
|
|
||||||
<div className="flex">
|
|
||||||
<NotionIcon size="16" />
|
|
||||||
<div className="ml-1">Notion</div>
|
|
||||||
</div>
|
|
||||||
),
|
|
||||||
link: "/admin/connectors/notion",
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -166,7 +166,7 @@ export default async function AdminLayout({
|
|||||||
{
|
{
|
||||||
name: (
|
name: (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<KeyIcon size="18" />
|
<KeyIcon size={18} />
|
||||||
<div className="ml-1">OpenAI</div>
|
<div className="ml-1">OpenAI</div>
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
|
@ -31,7 +31,7 @@ export const GoogleDriveCard = ({
|
|||||||
return (
|
return (
|
||||||
<div className="border rounded border-gray-700 p-3 w-80">
|
<div className="border rounded border-gray-700 p-3 w-80">
|
||||||
<div className="flex items-center">
|
<div className="flex items-center">
|
||||||
<GoogleDriveIcon size="20" />{" "}
|
<GoogleDriveIcon size={20} />{" "}
|
||||||
<b className="ml-2 text-xl">Google Drive</b>
|
<b className="ml-2 text-xl">Google Drive</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ export default function Page() {
|
|||||||
<HealthCheckBanner />
|
<HealthCheckBanner />
|
||||||
</div>
|
</div>
|
||||||
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
<div className="border-solid border-gray-600 border-b mb-4 pb-2 flex">
|
||||||
<PlugIcon size="32" />
|
<PlugIcon size={32} />
|
||||||
<h1 className="text-3xl font-bold pl-2">Personal Connectors</h1>
|
<h1 className="text-3xl font-bold pl-2">Personal Connectors</h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -1,14 +1,4 @@
|
|||||||
import { Header } from "@/components/Header";
|
import { Header } from "@/components/Header";
|
||||||
import { Sidebar } from "@/components/admin/connectors/Sidebar";
|
|
||||||
import {
|
|
||||||
NotebookIcon,
|
|
||||||
GithubIcon,
|
|
||||||
GlobeIcon,
|
|
||||||
GoogleDriveIcon,
|
|
||||||
SlackIcon,
|
|
||||||
KeyIcon,
|
|
||||||
ConfluenceIcon,
|
|
||||||
} from "@/components/icons/icons";
|
|
||||||
import { DISABLE_AUTH } from "@/lib/constants";
|
import { DISABLE_AUTH } from "@/lib/constants";
|
||||||
import { getCurrentUserSS } from "@/lib/userSS";
|
import { getCurrentUserSS } from "@/lib/userSS";
|
||||||
import { redirect } from "next/navigation";
|
import { redirect } from "next/navigation";
|
||||||
|
@ -11,132 +11,102 @@ import {
|
|||||||
Plug,
|
Plug,
|
||||||
Brain,
|
Brain,
|
||||||
} from "@phosphor-icons/react";
|
} from "@phosphor-icons/react";
|
||||||
import {
|
import { SiBookstack } from "react-icons/si";
|
||||||
SiBookstack,
|
|
||||||
SiConfluence,
|
|
||||||
SiGithub,
|
|
||||||
SiGoogledrive,
|
|
||||||
SiJira,
|
|
||||||
SiNotion,
|
|
||||||
SiSlack,
|
|
||||||
} from "react-icons/si";
|
|
||||||
import { FaFile, FaGlobe } from "react-icons/fa";
|
import { FaFile, FaGlobe } from "react-icons/fa";
|
||||||
import Image from "next/image";
|
import Image from "next/image";
|
||||||
|
import jiraSVG from "../../../public/Jira.svg";
|
||||||
|
import confluenceSVG from "../../../public/Confluence.svg";
|
||||||
|
|
||||||
interface IconProps {
|
interface IconProps {
|
||||||
size?: string;
|
size?: number;
|
||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
const defaultTailwindCSS = "text-blue-400 my-auto flex flex-shrink-0";
|
const defaultTailwindCSS = "my-auto flex flex-shrink-0 text-blue-400";
|
||||||
|
|
||||||
export const PlugIcon = ({
|
export const PlugIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <Plug size={size} className={className} />;
|
return <Plug size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const NotebookIcon = ({
|
export const NotebookIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <Notebook size={size} className={className} />;
|
return <Notebook size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const KeyIcon = ({
|
export const KeyIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <Key size={size} className={className} />;
|
return <Key size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TrashIcon = ({
|
export const TrashIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <Trash size={size} className={className} />;
|
return <Trash size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const LinkBreakIcon = ({
|
export const LinkBreakIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <LinkBreak size={size} className={className} />;
|
return <LinkBreak size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const LinkIcon = ({
|
export const LinkIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <Link size={size} className={className} />;
|
return <Link size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const XSquareIcon = ({
|
export const XSquareIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <XSquare size={size} className={className} />;
|
return <XSquare size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GlobeIcon = ({
|
export const GlobeIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <FaGlobe size={size} className={className} />;
|
return <FaGlobe size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const FileIcon = ({
|
export const FileIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <FaFile size={size} className={className} />;
|
return <FaFile size={size} className={className} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export const InfoIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return <Info size={size} className={className} />;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const BrainIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return <Brain size={size} className={className} />;
|
||||||
|
};
|
||||||
|
|
||||||
|
//
|
||||||
|
// COMPANY LOGOS
|
||||||
|
//
|
||||||
|
|
||||||
export const SlackIcon = ({
|
export const SlackIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <SiSlack size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const GithubIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <SiGithub size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const GoogleDriveIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <SiGoogledrive size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const BookstackIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <SiBookstack size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const ConfluenceIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <SiConfluence size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const JiraIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <SiJira size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const ProductboardIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return (
|
return (
|
||||||
@ -144,47 +114,110 @@ export const ProductboardIcon = ({
|
|||||||
style={{ width: `${size}px`, height: `${size}px` }}
|
style={{ width: `${size}px`, height: `${size}px` }}
|
||||||
className={`w-[${size}px] h-[${size}px] ` + className}
|
className={`w-[${size}px] h-[${size}px] ` + className}
|
||||||
>
|
>
|
||||||
<svg viewBox="0 0 162 108">
|
<Image src="/Slack.png" alt="Logo" width="96" height="96" />
|
||||||
<path
|
</div>
|
||||||
fill="#60A5FA"
|
);
|
||||||
d="M108.001 0L162 54l-54.001 54-53.996-54L108 0z"
|
};
|
||||||
></path>
|
|
||||||
<path fill="#60A5FA" d="M107.997 0L53.999 54 0 0h107.997z"></path>
|
export const GithubIcon = ({
|
||||||
<path fill="#60A5FA" d="M53.999 54l53.998 54H0l53.999-54z"></path>
|
size = 16,
|
||||||
</svg>
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{ width: `${size}px`, height: `${size}px` }}
|
||||||
|
className={`w-[${size}px] h-[${size}px] ` + className}
|
||||||
|
>
|
||||||
|
<Image src="/Github.png" alt="Logo" width="96" height="96" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const GoogleDriveIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{ width: `${size}px`, height: `${size}px` }}
|
||||||
|
className={`w-[${size}px] h-[${size}px] ` + className}
|
||||||
|
>
|
||||||
|
<Image src="/GoogleDrive.png" alt="Logo" width="96" height="96" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const BookstackIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return <SiBookstack size={size} className={className + " text-[#0288D1]"} />;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const ConfluenceIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{ width: `${size + 4}px`, height: `${size + 4}px` }}
|
||||||
|
className={`w-[${size + 4}px] h-[${size + 4}px] -m-0.5 ` + className}
|
||||||
|
>
|
||||||
|
<Image src={confluenceSVG} alt="Logo" width="96" height="96" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export const JiraIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
// Jira Icon has a bit more surrounding whitespace than other icons, which is why we need to adjust it here
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{ width: `${size + 4}px`, height: `${size + 4}px` }}
|
||||||
|
className={`w-[${size + 4}px] h-[${size + 4}px] -m-0.5 ` + className}
|
||||||
|
>
|
||||||
|
<Image src={jiraSVG} alt="Logo" width="96" height="96" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
export const ProductboardIcon = ({
|
||||||
|
size = 16,
|
||||||
|
className = defaultTailwindCSS,
|
||||||
|
}: IconProps) => {
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{ width: `${size}px`, height: `${size}px` }}
|
||||||
|
className={`w-[${size}px] h-[${size}px] ` + className}
|
||||||
|
>
|
||||||
|
<Image src="/Productboard.webp" alt="Logo" width="96" height="96" />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SlabIcon = ({
|
export const SlabIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => (
|
}: IconProps) => (
|
||||||
<div
|
<div
|
||||||
style={{ width: `${size}px`, height: `${size}px` }}
|
style={{ width: `${size}px`, height: `${size}px` }}
|
||||||
className={`w-[${size}px] h-[${size}px] ` + className}
|
className={`w-[${size}px] h-[${size}px] ` + className}
|
||||||
>
|
>
|
||||||
<Image src="/SlabLogoBlue.png" alt="Logo" width="96" height="96" />
|
<Image src="/SlabLogo.png" alt="Logo" width="96" height="96" />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
||||||
export const InfoIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <Info size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const BrainIcon = ({
|
|
||||||
size = "16",
|
|
||||||
className = defaultTailwindCSS,
|
|
||||||
}: IconProps) => {
|
|
||||||
return <Brain size={size} className={className} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const NotionIcon = ({
|
export const NotionIcon = ({
|
||||||
size = "16",
|
size = 16,
|
||||||
className = defaultTailwindCSS,
|
className = defaultTailwindCSS,
|
||||||
}: IconProps) => {
|
}: IconProps) => {
|
||||||
return <SiNotion size={size} className={className} />;
|
return (
|
||||||
|
<div
|
||||||
|
style={{ width: `${size}px`, height: `${size}px` }}
|
||||||
|
className={`w-[${size}px] h-[${size}px] ` + className}
|
||||||
|
>
|
||||||
|
<Image src="/Notion.png" alt="Logo" width="96" height="96" />
|
||||||
|
</div>
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
@ -60,7 +60,7 @@ export function SourceSelector({
|
|||||||
}
|
}
|
||||||
onClick={() => handleSelect(source)}
|
onClick={() => handleSelect(source)}
|
||||||
>
|
>
|
||||||
{getSourceIcon(source.internalName, "16")}
|
{getSourceIcon(source.internalName, 16)}
|
||||||
<span className="ml-2 text-sm text-gray-200">
|
<span className="ml-2 text-sm text-gray-200">
|
||||||
{source.displayName}
|
{source.displayName}
|
||||||
</span>
|
</span>
|
||||||
|
@ -130,7 +130,7 @@ export const SearchHelper: React.FC<Props> = (props) => {
|
|||||||
return (
|
return (
|
||||||
<div className="border border-gray-800 rounded p-3 text-sm">
|
<div className="border border-gray-800 rounded p-3 text-sm">
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<BrainIcon size="20" />
|
<BrainIcon size={20} />
|
||||||
<b className="ml-2">AI Assistant</b>
|
<b className="ml-2">AI Assistant</b>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -98,7 +98,7 @@ export const SearchResultsDisplay: React.FC<SearchResultsDisplayProps> = ({
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
{getSourceIcon(quoteInfo.source_type, "20")}
|
{getSourceIcon(quoteInfo.source_type, 20)}
|
||||||
<p className="truncate break-all ml-2">
|
<p className="truncate break-all ml-2">
|
||||||
{quoteInfo.semantic_identifier ||
|
{quoteInfo.semantic_identifier ||
|
||||||
quoteInfo.document_id}
|
quoteInfo.document_id}
|
||||||
@ -108,7 +108,7 @@ export const SearchResultsDisplay: React.FC<SearchResultsDisplayProps> = ({
|
|||||||
) : (
|
) : (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<InfoIcon
|
<InfoIcon
|
||||||
size="20"
|
size={20}
|
||||||
className="text-red-500 my-auto flex flex-shrink-0"
|
className="text-red-500 my-auto flex flex-shrink-0"
|
||||||
/>
|
/>
|
||||||
<div className="text-red-500 text-sm my-auto ml-1">
|
<div className="text-red-500 text-sm my-auto ml-1">
|
||||||
@ -130,7 +130,7 @@ export const SearchResultsDisplay: React.FC<SearchResultsDisplayProps> = ({
|
|||||||
shouldDisplayQA && (
|
shouldDisplayQA && (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<InfoIcon
|
<InfoIcon
|
||||||
size="20"
|
size={20}
|
||||||
className="text-red-500 my-auto flex flex-shrink-0"
|
className="text-red-500 my-auto flex flex-shrink-0"
|
||||||
/>
|
/>
|
||||||
<div className="text-red-500 text-xs my-auto ml-1">
|
<div className="text-red-500 text-xs my-auto ml-1">
|
||||||
@ -158,7 +158,7 @@ export const SearchResultsDisplay: React.FC<SearchResultsDisplayProps> = ({
|
|||||||
target="_blank"
|
target="_blank"
|
||||||
rel="noopener noreferrer"
|
rel="noopener noreferrer"
|
||||||
>
|
>
|
||||||
{getSourceIcon(doc.source_type, "20")}
|
{getSourceIcon(doc.source_type, 20)}
|
||||||
<p className="truncate break-all ml-2">
|
<p className="truncate break-all ml-2">
|
||||||
{doc.semantic_identifier || doc.document_id}
|
{doc.semantic_identifier || doc.document_id}
|
||||||
</p>
|
</p>
|
||||||
|
@ -14,7 +14,7 @@ import {
|
|||||||
} from "./icons/icons";
|
} from "./icons/icons";
|
||||||
|
|
||||||
interface SourceMetadata {
|
interface SourceMetadata {
|
||||||
icon: React.FC<{ size?: string; className?: string }>;
|
icon: React.FC<{ size?: number; className?: string }>;
|
||||||
displayName: string;
|
displayName: string;
|
||||||
adminPageLink: string;
|
adminPageLink: string;
|
||||||
}
|
}
|
||||||
@ -92,7 +92,7 @@ export const getSourceMetadata = (sourceType: ValidSources): SourceMetadata => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const getSourceIcon = (sourceType: ValidSources, iconSize: string) => {
|
export const getSourceIcon = (sourceType: ValidSources, iconSize: number) => {
|
||||||
return getSourceMetadata(sourceType).icon({
|
return getSourceMetadata(sourceType).icon({
|
||||||
size: iconSize,
|
size: iconSize,
|
||||||
});
|
});
|
||||||
|