diff --git a/website/package-lock.json b/website/package-lock.json index 9b369be4..18b1fc19 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -85,6 +85,7 @@ "msw-storybook-addon": "^1.7.0", "prettier": "2.8.1", "prisma": "^4.7.1", + "ts-essentials": "^9.3.0", "ts-node": "^10.9.1", "typescript": "^4.9.4" } @@ -36509,6 +36510,15 @@ "node": ">=6.10" } }, + "node_modules/ts-essentials": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz", + "integrity": "sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==", + "dev": true, + "peerDependencies": { + "typescript": ">=4.1.0" + } + }, "node_modules/ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", @@ -66035,6 +66045,13 @@ "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==" }, + "ts-essentials": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-9.3.0.tgz", + "integrity": "sha512-XeiCboEyBG8UqXZtXl59bWEi4ZgOqRsogFDI6WDGIF1LmzbYiAkIwjkXN6zZWWl4re/lsOqMlYfe8KA0XiiEPw==", + "dev": true, + "requires": {} + }, "ts-node": { "version": "10.9.1", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", diff --git a/website/package.json b/website/package.json index bb09c986..5e90432a 100644 --- a/website/package.json +++ b/website/package.json @@ -103,6 +103,7 @@ "msw-storybook-addon": "^1.7.0", "prettier": "2.8.1", "prisma": "^4.7.1", + "ts-essentials": "^9.3.0", "ts-node": "^10.9.1", "typescript": "^4.9.4" }, diff --git a/website/src/components/Icons/Discord.tsx b/website/src/components/Icons/Discord.tsx index ea1118fb..68a0d328 100644 --- a/website/src/components/Icons/Discord.tsx +++ b/website/src/components/Icons/Discord.tsx @@ -1,8 +1,11 @@ -import { LucideIcon } from "lucide-react"; +import { LucideIcon, LucideProps } from "lucide-react"; +import { forwardRef } from "react"; -export const Discord: LucideIcon = ({ size = 24, ...rest }) => { +// eslint-disable-next-line react/display-name +export const Discord: LucideIcon = forwardRef(function ({ size = 24, ...rest }, ref) { return ( { ); -}; +}); diff --git a/website/src/components/Messages/AdminMessageTable.tsx b/website/src/components/Messages/AdminMessageTable.tsx index 90866459..7339d686 100644 --- a/website/src/components/Messages/AdminMessageTable.tsx +++ b/website/src/components/Messages/AdminMessageTable.tsx @@ -8,7 +8,7 @@ import NextLink from "next/link"; import { ROUTES } from "src/lib/routes"; import { Message } from "src/types/Conversation"; import { isKnownEmoji } from "src/types/Emoji"; -import { StrictOmit } from "src/types/utils"; +import { StrictOmit } from "ts-essentials"; import { DataTable, DataTableProps } from "../DataTable/DataTable"; import { DataTableAction } from "../DataTable/DataTableAction"; diff --git a/website/src/components/RoleSelect.tsx b/website/src/components/RoleSelect.tsx index 970ffdce..e5f8e59a 100644 --- a/website/src/components/RoleSelect.tsx +++ b/website/src/components/RoleSelect.tsx @@ -1,9 +1,15 @@ import { Select, SelectProps } from "@chakra-ui/react"; import { forwardRef } from "react"; -import { ElementOf } from "src/types/utils"; +import { ValueOf } from "ts-essentials"; -export const roles = ["general", "admin", "banned", "moderator"] as const; -export type Role = ElementOf; +export const ROLES = { + GERNERAL: "general", + BANNED: "banned", + ADMIN: "admin", + MODERATOR: "moderator", +} as const; + +export type Role = ValueOf; type RoleSelectProps = Omit & { defaultValue?: Role; @@ -13,7 +19,7 @@ type RoleSelectProps = Omit & { export const RoleSelect = forwardRef((props, ref) => { return (