diff --git a/website/package-lock.json b/website/package-lock.json
index 0d38e98c..71177bf5 100644
--- a/website/package-lock.json
+++ b/website/package-lock.json
@@ -33,6 +33,7 @@
"focus-visible": "^5.2.0",
"framer-motion": "^6.5.1",
"install": "^0.13.0",
+ "lucide-react": "^0.105.0",
"next": "13.0.6",
"next-auth": "^4.18.6",
"next-i18next": "^13.0.3",
@@ -45,7 +46,6 @@
"react-feature-flags": "^1.0.0",
"react-hook-form": "^7.42.1",
"react-i18next": "^12.1.4",
- "react-icons": "^4.7.1",
"react-table": "^7.8.0",
"sharp": "^0.31.3",
"swr": "^2.0.0",
@@ -26726,6 +26726,14 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.105.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.105.0.tgz",
+ "integrity": "sha512-iHaIkd4Wq6aNIVrFMXt3If8E/+2lnJd4WlCyntoJNIzZ8nWhdSSHWpsw7XM4rlw2319LZ2t4WLdnM8Z0ECDTOQ==",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0"
+ }
+ },
"node_modules/lz-string": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
@@ -32657,14 +32665,6 @@
}
}
},
- "node_modules/react-icons": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.7.1.tgz",
- "integrity": "sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==",
- "peerDependencies": {
- "react": "*"
- }
- },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -57914,6 +57914,12 @@
"yallist": "^3.0.2"
}
},
+ "lucide-react": {
+ "version": "0.105.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.105.0.tgz",
+ "integrity": "sha512-iHaIkd4Wq6aNIVrFMXt3If8E/+2lnJd4WlCyntoJNIzZ8nWhdSSHWpsw7XM4rlw2319LZ2t4WLdnM8Z0ECDTOQ==",
+ "requires": {}
+ },
"lz-string": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz",
@@ -62143,12 +62149,6 @@
"html-parse-stringify": "^3.0.1"
}
},
- "react-icons": {
- "version": "4.7.1",
- "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.7.1.tgz",
- "integrity": "sha512-yHd3oKGMgm7zxo3EA7H2n7vxSoiGmHk5t6Ou4bXsfcgWyhfDKMpyKfhHR6Bjnn63c+YXBLBPUql9H4wPJM6sXw==",
- "requires": {}
- },
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
diff --git a/website/package.json b/website/package.json
index e4fb8319..f2499920 100644
--- a/website/package.json
+++ b/website/package.json
@@ -50,6 +50,7 @@
"focus-visible": "^5.2.0",
"framer-motion": "^6.5.1",
"install": "^0.13.0",
+ "lucide-react": "^0.105.0",
"next": "13.0.6",
"next-auth": "^4.18.6",
"next-i18next": "^13.0.3",
@@ -62,7 +63,6 @@
"react-feature-flags": "^1.0.0",
"react-hook-form": "^7.42.1",
"react-i18next": "^12.1.4",
- "react-icons": "^4.7.1",
"react-table": "^7.8.0",
"sharp": "^0.31.3",
"swr": "^2.0.0",
diff --git a/website/src/components/CallToAction.tsx b/website/src/components/CallToAction.tsx
index e374a471..3b132797 100644
--- a/website/src/components/CallToAction.tsx
+++ b/website/src/components/CallToAction.tsx
@@ -1,9 +1,10 @@
import { Box, Link, Text, useColorMode } from "@chakra-ui/react";
+import { Github } from "lucide-react";
import { useTranslation } from "next-i18next";
import { useId } from "react";
-import { FaDiscord, FaGithub } from "react-icons/fa";
import { Container } from "./Container";
+import { Discord } from "./Icons/Discord";
const CIRCLE_HEIGHT = 558;
const CIRCLE_WIDTH = 558;
@@ -70,7 +71,7 @@ export function CallToAction() {
type="button"
className="mb-2 ml-6 flex items-center rounded-md border border-transparent bg-blue-600 px-6 py-3 text-base font-medium text-white shadow-sm hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
>
-
+
{t("discord")}
@@ -81,7 +82,7 @@ export function CallToAction() {
type="button"
className="mb-2 ml-6 flex items-center rounded-md border border-transparent bg-blue-600 px-6 py-3 text-base font-medium text-white shadow-sm hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
>
-
+
{t("github")}
diff --git a/website/src/components/DataTable.tsx b/website/src/components/DataTable.tsx
index f9ef4e49..466393eb 100644
--- a/website/src/components/DataTable.tsx
+++ b/website/src/components/DataTable.tsx
@@ -25,8 +25,8 @@ import {
useDisclosure,
} from "@chakra-ui/react";
import { ColumnDef, flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table";
+import { Filter } from "lucide-react";
import { ChangeEvent, ReactNode } from "react";
-import { FaFilter } from "react-icons/fa";
import { useDebouncedCallback } from "use-debounce";
export type DataTableColumnDef = ColumnDef & {
@@ -148,7 +148,7 @@ const FilterModal = ({
-
+
diff --git a/website/src/components/EmptyState.tsx b/website/src/components/EmptyState.tsx
index 51e51a00..a9f29bc2 100644
--- a/website/src/components/EmptyState.tsx
+++ b/website/src/components/EmptyState.tsx
@@ -1,11 +1,10 @@
import { Box, Text, useColorModeValue } from "@chakra-ui/react";
+import { AlertTriangle, LucideIcon } from "lucide-react";
import NextLink from "next/link";
-import { FiAlertTriangle } from "react-icons/fi";
-import { IconType } from "react-icons/lib";
type EmptyStateProps = {
text: string;
- icon: IconType;
+ icon: LucideIcon;
};
export const EmptyState = (props: EmptyStateProps) => {
@@ -25,5 +24,5 @@ export const EmptyState = (props: EmptyStateProps) => {
};
export const TaskEmptyState = () => {
- return ;
+ return ;
};
diff --git a/website/src/components/FlaggableElement.tsx b/website/src/components/FlaggableElement.tsx
index 7e28f2c2..58c7559f 100644
--- a/website/src/components/FlaggableElement.tsx
+++ b/website/src/components/FlaggableElement.tsx
@@ -22,8 +22,8 @@ import {
} from "@chakra-ui/react";
import { QuestionMarkCircleIcon } from "@heroicons/react/20/solid";
import clsx from "clsx";
+import { AlertCircle } from "lucide-react";
import { useEffect, useReducer } from "react";
-import { FiAlertCircle } from "react-icons/fi";
import { get, post } from "src/lib/api";
import { colors } from "src/styles/Theme/colors";
import { Message } from "src/types/Conversation";
@@ -154,7 +154,7 @@ export const FlaggableElement = (props: FlaggableElementProps) => {
-
+
diff --git a/website/src/components/Header/Header.tsx b/website/src/components/Header/Header.tsx
index 64614578..0d70a442 100644
--- a/website/src/components/Header/Header.tsx
+++ b/website/src/components/Header/Header.tsx
@@ -1,10 +1,10 @@
import { Box, Button, Flex, Text } from "@chakra-ui/react";
+import { User } from "lucide-react";
import Image from "next/image";
import Link from "next/link";
import { useSession } from "next-auth/react";
import { useTranslation } from "next-i18next";
import { Flags } from "react-feature-flags";
-import { FaUser } from "react-icons/fa";
import { LanguageSelector } from "src/components/LanguageSelector";
import { UserMenu } from "./UserMenu";
@@ -17,7 +17,7 @@ function AccountButton() {
return (
- }>
+ }>
Sign in
diff --git a/website/src/components/Header/UserMenu.tsx b/website/src/components/Header/UserMenu.tsx
index 6fdde69e..bc2a377e 100644
--- a/website/src/components/Header/UserMenu.tsx
+++ b/website/src/components/Header/UserMenu.tsx
@@ -11,11 +11,11 @@ import {
Text,
useColorModeValue,
} from "@chakra-ui/react";
+import { AlertTriangle, Layout, LogOut, Settings, Shield } from "lucide-react";
import NextLink from "next/link";
import { signOut, useSession } from "next-auth/react";
import { useTranslation } from "next-i18next";
import React, { ElementType, useCallback } from "react";
-import { FiAlertTriangle, FiLayout, FiLogOut, FiSettings, FiShield } from "react-icons/fi";
interface MenuOption {
name: string;
@@ -41,21 +41,21 @@ export function UserMenu() {
name: t("dashboard"),
href: "/dashboard",
desc: t("dashboard"),
- icon: FiLayout,
+ icon: Layout,
isExternal: false,
},
{
name: t("account_settings"),
href: "/account",
desc: t("account_settings"),
- icon: FiSettings,
+ icon: Settings,
isExternal: false,
},
{
name: t("report_a_bug"),
href: "https://github.com/LAION-AI/Open-Assistant/issues/new/choose",
desc: t("report_a_bug"),
- icon: FiAlertTriangle,
+ icon: AlertTriangle,
isExternal: true,
},
];
@@ -65,7 +65,7 @@ export function UserMenu() {
name: t("admin_dashboard"),
href: "/admin",
desc: t("admin_dashboard"),
- icon: FiShield,
+ icon: Shield,
isExternal: false,
});
}
@@ -98,7 +98,7 @@ export function UserMenu() {
_hover={{ textDecoration: "none" }}
>
-
+
{item.name}
@@ -106,7 +106,7 @@ export function UserMenu() {
-
+
{t("sign_out")}
diff --git a/website/src/components/Icons/Discord.tsx b/website/src/components/Icons/Discord.tsx
new file mode 100644
index 00000000..ea1118fb
--- /dev/null
+++ b/website/src/components/Icons/Discord.tsx
@@ -0,0 +1,16 @@
+import { LucideIcon } from "lucide-react";
+
+export const Discord: LucideIcon = ({ size = 24, ...rest }) => {
+ return (
+
+
+
+ );
+};
diff --git a/website/src/components/Layout.tsx b/website/src/components/Layout.tsx
index 55085550..1b5bf430 100644
--- a/website/src/components/Layout.tsx
+++ b/website/src/components/Layout.tsx
@@ -1,8 +1,8 @@
// https://nextjs.org/docs/basic-features/layouts
import { Box, Grid } from "@chakra-ui/react";
+import { Activity, BarChart2, Layout, MessageSquare, Users } from "lucide-react";
import type { NextPage } from "next";
-import { FiBarChart2, FiLayout, FiMessageSquare, FiUsers, FiActivity } from "react-icons/fi";
import { Header } from "src/components/Header";
import { SlimFooter } from "./Dashboard/SlimFooter";
@@ -38,19 +38,19 @@ export const getDashboardLayout = (page: React.ReactElement) => (
label: "Dashboard",
pathname: "/dashboard",
desc: "Dashboard Home",
- icon: FiLayout,
+ icon: Layout,
},
{
label: "Messages",
pathname: "/messages",
desc: "Messages Dashboard",
- icon: FiMessageSquare,
+ icon: MessageSquare,
},
{
label: "Leaderboard",
pathname: "/leaderboard",
desc: "User Leaderboard",
- icon: FiBarChart2,
+ icon: BarChart2,
},
]}
>
@@ -73,13 +73,13 @@ export const getAdminLayout = (page: React.ReactElement) => (
label: "Users",
pathname: "/admin",
desc: "Users Dashboard",
- icon: FiUsers,
+ icon: Users,
},
{
label: "Status",
pathname: "/admin/status",
desc: "Status Dashboard",
- icon: FiActivity,
+ icon: Activity,
},
]}
>
diff --git a/website/src/components/SideMenu.tsx b/website/src/components/SideMenu.tsx
index 3722eaa8..10e83ce4 100644
--- a/website/src/components/SideMenu.tsx
+++ b/website/src/components/SideMenu.tsx
@@ -1,15 +1,14 @@
import { Box, Button, Text, Tooltip, useColorMode } from "@chakra-ui/react";
+import { LucideIcon, Sun } from "lucide-react";
import Link from "next/link";
import { useRouter } from "next/router";
-import { FiSun } from "react-icons/fi";
-import { IconType } from "react-icons/lib";
import { colors } from "styles/Theme/colors";
export interface MenuButtonOption {
label: string;
pathname: string;
desc: string;
- icon: IconType;
+ icon: LucideIcon;
}
export interface SideMenuProps {
@@ -47,7 +46,7 @@ export function SideMenu(props: SideMenuProps) {
bg={router.pathname === item.pathname ? "blue.500" : null}
_hover={router.pathname === item.pathname ? { bg: "blue.600" } : null}
>
-
+
-
+
{colorMode === "light" ? "Dark Mode" : "Light Mode"}
diff --git a/website/src/components/Sortable/SortableItem.tsx b/website/src/components/Sortable/SortableItem.tsx
index ca6176c1..615bfb3f 100644
--- a/website/src/components/Sortable/SortableItem.tsx
+++ b/website/src/components/Sortable/SortableItem.tsx
@@ -1,8 +1,8 @@
import { Box, useColorModeValue } from "@chakra-ui/react";
import { useSortable } from "@dnd-kit/sortable";
import { CSS } from "@dnd-kit/utilities";
+import { GripVertical } from "lucide-react";
import { PropsWithChildren, useState } from "react";
-import { RxDragHandleDots2 } from "react-icons/rx";
export const SortableItem = ({
children,
@@ -45,7 +45,7 @@ export const SortableItem = ({
style={style}
shadow="base"
>
- {isEditable ? : `${index + 1}.`}
+ {isEditable ? : `${index + 1}.`}
{children}
);
diff --git a/website/src/components/Survey/TaskControls.tsx b/website/src/components/Survey/TaskControls.tsx
index c45b5ce0..81c8df2a 100644
--- a/website/src/components/Survey/TaskControls.tsx
+++ b/website/src/components/Survey/TaskControls.tsx
@@ -1,5 +1,5 @@
import { Box, Flex, IconButton, Tooltip, useColorModeValue } from "@chakra-ui/react";
-import { FiEdit2 } from "react-icons/fi";
+import { Edit2 } from "lucide-react";
import { SkipButton } from "src/components/Buttons/Skip";
import { SubmitButton } from "src/components/Buttons/Submit";
import { TaskInfo } from "src/components/TaskInfo/TaskInfo";
@@ -36,7 +36,13 @@ export const TaskControls = (props: TaskControlsProps) => {
{props.taskStatus === "REVIEW" || props.taskStatus === "SUBMITTED" ? (
<>
- } />
+ }
+ />
{
{taskType.label}
- } />
+ } />
diff --git a/website/src/components/UserTable.tsx b/website/src/components/UserTable.tsx
index df412bbc..5e5828ea 100644
--- a/website/src/components/UserTable.tsx
+++ b/website/src/components/UserTable.tsx
@@ -1,8 +1,8 @@
import { IconButton } from "@chakra-ui/react";
import { createColumnHelper } from "@tanstack/react-table";
+import { Pencil } from "lucide-react";
import Link from "next/link";
import { memo, useState } from "react";
-import { FaPen } from "react-icons/fa";
import { get } from "src/lib/api";
import { FetchUsersResponse } from "src/lib/oasst_api_client";
import type { User } from "src/types/Users";
@@ -49,7 +49,7 @@ const columns: DataTableColumnDef[] = [
as={Link}
href={`/admin/manage_user/${getValue()}`}
aria-label="Manage"
- icon={ }
+ icon={ }
>
),
header: "Update",
diff --git a/website/src/pages/404.tsx b/website/src/pages/404.tsx
index d4c58b54..0af430b0 100644
--- a/website/src/pages/404.tsx
+++ b/website/src/pages/404.tsx
@@ -1,6 +1,6 @@
import { Box, Button, Center, Link, Text } from "@chakra-ui/react";
+import { AlertTriangle } from "lucide-react";
import Head from "next/head";
-import { FiAlertTriangle } from "react-icons/fi";
import { EmptyState } from "src/components/EmptyState";
import { getTransparentHeaderLayout } from "src/components/Layout";
export { getDefaultStaticProps as getStaticProps } from "src/lib/default_static_props";
@@ -13,12 +13,12 @@ function Error() {
-
+
If you were trying to contribute data but ended up here, please file a bug.
}
+ leftIcon={ }
variant="solid"
size="xs"
>
diff --git a/website/src/pages/500.tsx b/website/src/pages/500.tsx
index 378bdfff..cb326168 100644
--- a/website/src/pages/500.tsx
+++ b/website/src/pages/500.tsx
@@ -1,6 +1,6 @@
import { Box, Button, Center, Link, Text } from "@chakra-ui/react";
+import { AlertTriangle } from "lucide-react";
import Head from "next/head";
-import { FiAlertTriangle } from "react-icons/fi";
import { EmptyState } from "src/components/EmptyState";
import { getTransparentHeaderLayout } from "src/components/Layout";
export { getDefaultStaticProps as getStaticProps } from "src/lib/default_static_props";
@@ -13,15 +13,12 @@ function ServerError() {
-
+
If you were trying to contribute data but ended up here, please file a bug.
}
+ leftIcon={ }
variant="solid"
size="xs"
>
diff --git a/website/src/pages/account/index.tsx b/website/src/pages/account/index.tsx
index 88964b3b..25d28bd0 100644
--- a/website/src/pages/account/index.tsx
+++ b/website/src/pages/account/index.tsx
@@ -1,10 +1,10 @@
-import { Button, Divider, Flex, Grid, Icon, Text } from "@chakra-ui/react";
+import { Divider, Flex, Grid, Icon, Text } from "@chakra-ui/react";
import Head from "next/head";
import Link from "next/link";
import { useSession } from "next-auth/react";
import React from "react";
export { getDefaultStaticProps as getStaticProps } from "src/lib/default_static_props";
-import { MdOutlineEdit } from "react-icons/md";
+import { Pencil } from "lucide-react";
import { SurveyCard } from "src/components/Survey/SurveyCard";
export default function Account() {
@@ -34,7 +34,7 @@ export default function Account() {
{session.user.name ?? "(No username)"}
-
+
Email
diff --git a/website/src/pages/auth/signin.tsx b/website/src/pages/auth/signin.tsx
index e3757190..d171182d 100644
--- a/website/src/pages/auth/signin.tsx
+++ b/website/src/pages/auth/signin.tsx
@@ -1,17 +1,18 @@
import { Button, ButtonProps, Input, Stack, useColorModeValue } from "@chakra-ui/react";
import { useColorMode } from "@chakra-ui/react";
+import { Bug, Github, Mail } from "lucide-react";
import { GetServerSideProps } from "next";
import Head from "next/head";
import Link from "next/link";
import { useRouter } from "next/router";
import { ClientSafeProvider, getProviders, signIn } from "next-auth/react";
import { serverSideTranslations } from "next-i18next/serverSideTranslations";
-import React, { useEffect, useRef, useState } from "react";
+import React, { useEffect, useState } from "react";
import { useForm } from "react-hook-form";
-import { FaBug, FaDiscord, FaEnvelope, FaGithub } from "react-icons/fa";
import { AuthLayout } from "src/components/AuthLayout";
import { Footer } from "src/components/Footer";
import { Header } from "src/components/Header";
+import { Discord } from "src/components/Icons/Discord";
import { Role, RoleSelect } from "src/components/RoleSelect";
export type SignInErrorTypes =
@@ -89,7 +90,7 @@ function Signin({ providers }: SigninProps) {
placeholder="Email Address"
{...register("email")}
/>
- }>
+ }>
Continue with Email
@@ -103,7 +104,7 @@ function Signin({ providers }: SigninProps) {
bg: "#454FBF",
}}
size="lg"
- leftIcon={ }
+ leftIcon={ }
color="white"
onClick={() => signIn(discord.id, { callbackUrl: "/" })}
// isDisabled="false"
@@ -119,7 +120,7 @@ function Signin({ providers }: SigninProps) {
bg: "#101010",
}}
size={"lg"}
- leftIcon={ }
+ leftIcon={ }
colorScheme="blue"
// isDisabled="false"
>
@@ -165,7 +166,7 @@ const SigninButton = (props: ButtonProps) => {
return (
}
+ leftIcon={ }
type="submit"
colorScheme={buttonColorScheme}
color="white"
@@ -203,7 +204,7 @@ const DebugSigninForm = ({ credentials, bgColorClass }: { credentials: ClientSaf
- }>Continue with Debug User
+ }>Continue with Debug User
);