diff --git a/.eslintrc.json b/.eslintrc.json index d746c1644..4d7af7256 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -1,6 +1,7 @@ { "extends": ["next/core-web-vitals", "turbo"], "plugins": ["simple-import-sort", "@typescript-eslint"], + "ignorePatterns": ["**/playwright-report/*.js"], "overrides": [ { "files": ["**/*.ts", "**/*.tsx"], diff --git a/apps/web/package.json b/apps/web/package.json index 1fdcc1632..4a3d4472e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -16,14 +16,15 @@ "docker:start": "./scripts/docker-start.sh" }, "dependencies": { - "@rallly/backend": "*", - "@rallly/database": "*", - "@rallly/languages":"*", - "@rallly/tailwind-config": "*", "@floating-ui/react-dom-interactions": "^0.13.3", "@headlessui/react": "^1.7.7", "@next/bundle-analyzer": "^12.3.4", "@radix-ui/react-popover": "^1.0.3", + "@rallly/backend": "*", + "@rallly/database": "*", + "@rallly/icons": "*", + "@rallly/languages": "*", + "@rallly/tailwind-config": "*", "@sentry/nextjs": "^7.33.0", "@svgr/webpack": "^6.5.1", "@tailwindcss/typography": "^0.5.9", @@ -42,7 +43,6 @@ "next-seo": "^5.15.0", "postcss": "^8.4.21", "posthog-js": "^1.51.3", - "react": "^18.2.0", "react-big-calendar": "^1.5.0", "react-dom": "^18.2.0", "react-hook-form": "^7.42.1", @@ -50,11 +50,12 @@ "react-i18next": "^12.1.4", "react-linkify": "^1.0.0-alpha", "react-use": "^17.4.0", + "react": "^18.2.0", "smoothscroll-polyfill": "^0.4.4", "spacetime": "^7.1.4", "superjson": "^1.12.2", - "tailwindcss": "^3.2.4", "tailwindcss-animate": "^1.0.5", + "tailwindcss": "^3.2.4", "timezone-soft": "^1.3.1", "typescript": "^4.9.4", "zod": "^3.20.2" diff --git a/apps/web/src/components/admin-control.tsx b/apps/web/src/components/admin-control.tsx index 0b17c0a70..ffe1a411a 100644 --- a/apps/web/src/components/admin-control.tsx +++ b/apps/web/src/components/admin-control.tsx @@ -1,9 +1,9 @@ +import Share from "@rallly/icons/share.svg"; import { AnimatePresence, m } from "framer-motion"; import { useTranslation } from "next-i18next"; import React from "react"; import { Button } from "@/components/button"; -import Share from "@/components/icons/share.svg"; import { useParticipants } from "./participants-provider"; import ManagePoll from "./poll/manage-poll"; diff --git a/apps/web/src/components/button.tsx b/apps/web/src/components/button.tsx index 27c3e98a8..5efccc67a 100644 --- a/apps/web/src/components/button.tsx +++ b/apps/web/src/components/button.tsx @@ -1,8 +1,7 @@ +import SpinnerIcon from "@rallly/icons/spinner.svg"; import clsx from "clsx"; import * as React from "react"; -import SpinnerIcon from "@/components/icons/spinner.svg"; - export interface ButtonProps extends Omit< React.DetailedHTMLProps< diff --git a/apps/web/src/components/crisp-chat.tsx b/apps/web/src/components/crisp-chat.tsx index 1894b11c0..eb5b5d218 100644 --- a/apps/web/src/components/crisp-chat.tsx +++ b/apps/web/src/components/crisp-chat.tsx @@ -1,7 +1,6 @@ +import Chat from "@rallly/icons/chat.svg"; import * as React from "react"; -import Chat from "@/components/icons/chat.svg"; - import { Button } from "./button"; const crispWebsiteId = process.env.NEXT_PUBLIC_CRISP_WEBSITE_ID; diff --git a/apps/web/src/components/discussion/discussion.tsx b/apps/web/src/components/discussion/discussion.tsx index 2ed7be99b..db6196ca7 100644 --- a/apps/web/src/components/discussion/discussion.tsx +++ b/apps/web/src/components/discussion/discussion.tsx @@ -1,4 +1,6 @@ import { trpc } from "@rallly/backend"; +import DotsHorizontal from "@rallly/icons/dots-horizontal.svg"; +import Trash from "@rallly/icons/trash.svg"; import clsx from "clsx"; import { useTranslation } from "next-i18next"; import * as React from "react"; @@ -11,8 +13,6 @@ import { requiredString } from "../../utils/form-validation"; import { Button } from "../button"; import CompactButton from "../compact-button"; import Dropdown, { DropdownItem } from "../dropdown"; -import DotsHorizontal from "../icons/dots-horizontal.svg"; -import Trash from "../icons/trash.svg"; import NameInput from "../name-input"; import TruncatedLinkify from "../poll/truncated-linkify"; import UserAvatar from "../poll/user-avatar"; diff --git a/apps/web/src/components/error-page.tsx b/apps/web/src/components/error-page.tsx index ae3100501..d6c0e5692 100644 --- a/apps/web/src/components/error-page.tsx +++ b/apps/web/src/components/error-page.tsx @@ -1,10 +1,9 @@ +import EmojiSad from "@rallly/icons/emoji-sad.svg"; import Head from "next/head"; import Link from "next/link"; import { useTranslation } from "next-i18next"; import * as React from "react"; -import EmojiSad from "@/components/icons/emoji-sad.svg"; - export interface ComponentProps { icon?: React.ComponentType<{ className?: string }>; title: string; diff --git a/apps/web/src/components/feedback.tsx b/apps/web/src/components/feedback.tsx index 2165ffaa4..0f5045d27 100644 --- a/apps/web/src/components/feedback.tsx +++ b/apps/web/src/components/feedback.tsx @@ -1,11 +1,11 @@ import { trpc } from "@rallly/backend"; +import CheckCircle from "@rallly/icons/check-circle.svg"; +import Speakerphone from "@rallly/icons/speakerphone.svg"; import Link from "next/link"; import { Trans, useTranslation } from "next-i18next"; import { useForm } from "react-hook-form"; import { Button } from "@/components/button"; -import CheckCircle from "@/components/icons/check-circle.svg"; -import Speakerphone from "@/components/icons/speakerphone.svg"; import { Logo } from "@/components/logo"; import { useModalState } from "@/components/modal/use-modal"; import Tooltip from "@/components/tooltip"; diff --git a/apps/web/src/components/forms/poll-options-form/date-navigation-toolbar.tsx b/apps/web/src/components/forms/poll-options-form/date-navigation-toolbar.tsx index ae6c05360..e936b9ba5 100644 --- a/apps/web/src/components/forms/poll-options-form/date-navigation-toolbar.tsx +++ b/apps/web/src/components/forms/poll-options-form/date-navigation-toolbar.tsx @@ -1,9 +1,8 @@ +import ChevronLeft from "@rallly/icons/chevron-left.svg"; +import ChevronRight from "@rallly/icons/chevron-right.svg"; import { useTranslation } from "next-i18next"; import * as React from "react"; -import ChevronLeft from "../../icons/chevron-left.svg"; -import ChevronRight from "../../icons/chevron-right.svg"; - export interface DateNavigationToolbarProps { year: number; label: string; diff --git a/apps/web/src/components/forms/poll-options-form/month-calendar/month-calendar.tsx b/apps/web/src/components/forms/poll-options-form/month-calendar/month-calendar.tsx index a3fd5733f..7e46af929 100644 --- a/apps/web/src/components/forms/poll-options-form/month-calendar/month-calendar.tsx +++ b/apps/web/src/components/forms/poll-options-form/month-calendar/month-calendar.tsx @@ -1,3 +1,11 @@ +import Calendar from "@rallly/icons/calendar.svg"; +import ChevronLeft from "@rallly/icons/chevron-left.svg"; +import ChevronRight from "@rallly/icons/chevron-right.svg"; +import DotsHorizontal from "@rallly/icons/dots-horizontal.svg"; +import Magic from "@rallly/icons/magic.svg"; +import PlusSm from "@rallly/icons/plus-sm.svg"; +import Trash from "@rallly/icons/trash.svg"; +import X from "@rallly/icons/x.svg"; import clsx from "clsx"; import { useTranslation } from "next-i18next"; import * as React from "react"; @@ -13,14 +21,6 @@ import CompactButton from "../../../compact-button"; import DateCard from "../../../date-card"; import Dropdown, { DropdownItem } from "../../../dropdown"; import { useHeadlessDatePicker } from "../../../headless-date-picker"; -import Calendar from "../../../icons/calendar.svg"; -import ChevronLeft from "../../../icons/chevron-left.svg"; -import ChevronRight from "../../../icons/chevron-right.svg"; -import DotsHorizontal from "../../../icons/dots-horizontal.svg"; -import Magic from "../../../icons/magic.svg"; -import PlusSm from "../../../icons/plus-sm.svg"; -import Trash from "../../../icons/trash.svg"; -import X from "../../../icons/x.svg"; import Switch from "../../../switch"; import { DateTimeOption } from ".."; import { DateTimePickerProps } from "../types"; diff --git a/apps/web/src/components/forms/poll-options-form/month-calendar/time-picker.tsx b/apps/web/src/components/forms/poll-options-form/month-calendar/time-picker.tsx index afe77496c..ad015a940 100644 --- a/apps/web/src/components/forms/poll-options-form/month-calendar/time-picker.tsx +++ b/apps/web/src/components/forms/poll-options-form/month-calendar/time-picker.tsx @@ -6,6 +6,7 @@ import { useFloating, } from "@floating-ui/react-dom-interactions"; import { Listbox } from "@headlessui/react"; +import ChevronDown from "@rallly/icons/chevron-down.svg"; import clsx from "clsx"; import * as React from "react"; @@ -13,7 +14,6 @@ import { getDuration } from "@/utils/date-time-utils"; import { stopPropagation } from "@/utils/stop-propagation"; import { useDayjs } from "../../../../utils/dayjs"; -import ChevronDown from "../../../icons/chevron-down.svg"; import { styleMenuItem } from "../../../menu-styles"; export interface TimePickerProps { diff --git a/apps/web/src/components/forms/poll-options-form/poll-options-form.tsx b/apps/web/src/components/forms/poll-options-form/poll-options-form.tsx index 80ba8a5a0..652ad80b0 100644 --- a/apps/web/src/components/forms/poll-options-form/poll-options-form.tsx +++ b/apps/web/src/components/forms/poll-options-form/poll-options-form.tsx @@ -1,3 +1,5 @@ +import Calendar from "@rallly/icons/calendar.svg"; +import Table from "@rallly/icons/table.svg"; import clsx from "clsx"; import { useTranslation } from "next-i18next"; import * as React from "react"; @@ -5,8 +7,6 @@ import { Controller, useForm } from "react-hook-form"; import { getBrowserTimeZone } from "../../../utils/date-time-utils"; import FullPageLoader from "../../full-page-loader"; -import Calendar from "../../icons/calendar.svg"; -import Table from "../../icons/table.svg"; import { useModal } from "../../modal"; import TimeZonePicker from "../../time-zone-picker"; import { PollFormProps } from "../types"; diff --git a/apps/web/src/components/full-page-loader.tsx b/apps/web/src/components/full-page-loader.tsx index d09ece01d..59f222a57 100644 --- a/apps/web/src/components/full-page-loader.tsx +++ b/apps/web/src/components/full-page-loader.tsx @@ -1,8 +1,7 @@ +import Spinner from "@rallly/icons/spinner.svg"; import clsx from "clsx"; import * as React from "react"; -import Spinner from "./icons/spinner.svg"; - interface FullPageLoaderProps { className?: string; children?: React.ReactNode; diff --git a/apps/web/src/components/home/bonus.tsx b/apps/web/src/components/home/bonus.tsx index 0cb9dce25..62b8ccbb2 100644 --- a/apps/web/src/components/home/bonus.tsx +++ b/apps/web/src/components/home/bonus.tsx @@ -1,10 +1,9 @@ +import Code from "@rallly/icons/code.svg"; +import CursorClick from "@rallly/icons/cursor-click.svg"; +import Server from "@rallly/icons/server.svg"; import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; -import Code from "@/components/icons/code.svg"; -import CursorClick from "@/components/icons/cursor-click.svg"; -import Server from "@/components/icons/server.svg"; - import Ban from "./ban-ads.svg"; const Bonus: React.FunctionComponent = () => { diff --git a/apps/web/src/components/home/features.tsx b/apps/web/src/components/home/features.tsx index 908e6a777..05b1054b3 100644 --- a/apps/web/src/components/home/features.tsx +++ b/apps/web/src/components/home/features.tsx @@ -1,11 +1,10 @@ +import Bell from "@rallly/icons/bell.svg"; +import Chat from "@rallly/icons/chat.svg"; +import Clock from "@rallly/icons/clock.svg"; +import DeviceMobile from "@rallly/icons/device-mobile.svg"; import { useTranslation } from "next-i18next"; import * as React from "react"; -import Bell from "@/components/icons/bell.svg"; -import Chat from "@/components/icons/chat.svg"; -import Clock from "@/components/icons/clock.svg"; -import DeviceMobile from "@/components/icons/device-mobile.svg"; - const Features: React.FunctionComponent = () => { const { t } = useTranslation("homepage"); return ( diff --git a/apps/web/src/components/layouts/page-layout.tsx b/apps/web/src/components/layouts/page-layout.tsx index ef59579f3..a929220d2 100644 --- a/apps/web/src/components/layouts/page-layout.tsx +++ b/apps/web/src/components/layouts/page-layout.tsx @@ -1,3 +1,5 @@ +import DotsVertical from "@rallly/icons/dots-vertical.svg"; +import Github from "@rallly/icons/github.svg"; import clsx from "clsx"; import { domAnimation, LazyMotion } from "framer-motion"; import Link from "next/link"; @@ -5,8 +7,6 @@ import { useRouter } from "next/router"; import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; -import DotsVertical from "@/components/icons/dots-vertical.svg"; -import Github from "@/components/icons/github.svg"; import Logo from "~//logo.svg"; import { Popover, PopoverContent, PopoverTrigger } from "../popover"; diff --git a/apps/web/src/components/layouts/page-layout/footer.tsx b/apps/web/src/components/layouts/page-layout/footer.tsx index fa0de43e0..0a8b835e5 100644 --- a/apps/web/src/components/layouts/page-layout/footer.tsx +++ b/apps/web/src/components/layouts/page-layout/footer.tsx @@ -1,12 +1,12 @@ +import Discord from "@rallly/icons/discord.svg"; +import Star from "@rallly/icons/star.svg"; +import Translate from "@rallly/icons/translate.svg"; +import Twitter from "@rallly/icons/twitter.svg"; import Link from "next/link"; import { useRouter } from "next/router"; import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; -import Discord from "@/components/icons/discord.svg"; -import Star from "@/components/icons/star.svg"; -import Translate from "@/components/icons/translate.svg"; -import Twitter from "@/components/icons/twitter.svg"; import DigitalOcean from "~//digitalocean.svg"; import Logo from "~//logo.svg"; import Sentry from "~//sentry.svg"; diff --git a/apps/web/src/components/layouts/standard-layout/mobile-navigation.tsx b/apps/web/src/components/layouts/standard-layout/mobile-navigation.tsx index d233fe5b2..97d8d07ef 100644 --- a/apps/web/src/components/layouts/standard-layout/mobile-navigation.tsx +++ b/apps/web/src/components/layouts/standard-layout/mobile-navigation.tsx @@ -1,17 +1,17 @@ +import Adjustments from "@rallly/icons/adjustments.svg"; +import Beaker from "@rallly/icons/beaker.svg"; +import Home from "@rallly/icons/home.svg"; +import Login from "@rallly/icons/login.svg"; +import Menu from "@rallly/icons/menu.svg"; +import Pencil from "@rallly/icons/pencil.svg"; +import Support from "@rallly/icons/support.svg"; +import UserCircle from "@rallly/icons/user-circle.svg"; import clsx from "clsx"; import { AnimatePresence } from "framer-motion"; import { useTranslation } from "next-i18next"; import React from "react"; import { LoginLink } from "@/components/auth/login-modal"; -import Adjustments from "@/components/icons/adjustments.svg"; -import Beaker from "@/components/icons/beaker.svg"; -import Home from "@/components/icons/home.svg"; -import Login from "@/components/icons/login.svg"; -import Menu from "@/components/icons/menu.svg"; -import Pencil from "@/components/icons/pencil.svg"; -import Support from "@/components/icons/support.svg"; -import UserCircle from "@/components/icons/user-circle.svg"; import { Popover, PopoverContent, PopoverTrigger } from "@/components/popover"; import Preferences from "@/components/preferences"; import { useUser } from "@/components/user-provider"; diff --git a/apps/web/src/components/layouts/standard-layout/user-dropdown.tsx b/apps/web/src/components/layouts/standard-layout/user-dropdown.tsx index 5335444b8..aeeb60d46 100644 --- a/apps/web/src/components/layouts/standard-layout/user-dropdown.tsx +++ b/apps/web/src/components/layouts/standard-layout/user-dropdown.tsx @@ -1,12 +1,12 @@ +import Login from "@rallly/icons/login.svg"; +import Logout from "@rallly/icons/logout.svg"; +import Question from "@rallly/icons/question-mark-circle.svg"; +import User from "@rallly/icons/user.svg"; import { useTranslation } from "next-i18next"; import React from "react"; import { useLoginModal } from "@/components/auth/login-modal"; import Dropdown, { DropdownItem, DropdownProps } from "@/components/dropdown"; -import Login from "@/components/icons/login.svg"; -import Logout from "@/components/icons/logout.svg"; -import Question from "@/components/icons/question-mark-circle.svg"; -import User from "@/components/icons/user.svg"; import { useModalContext } from "@/components/modal/modal-provider"; import { useUser } from "@/components/user-provider"; diff --git a/apps/web/src/components/maintenance.tsx b/apps/web/src/components/maintenance.tsx index a51a0b3f7..02e67621a 100644 --- a/apps/web/src/components/maintenance.tsx +++ b/apps/web/src/components/maintenance.tsx @@ -1,7 +1,6 @@ +import Clock from "@rallly/icons/clock.svg"; import Head from "next/head"; -import Clock from "@/components/icons/clock.svg"; - import Logo from "../../public/logo.svg"; const Maintenance: React.FunctionComponent = () => { diff --git a/apps/web/src/components/modal/modal.tsx b/apps/web/src/components/modal/modal.tsx index 78ba31e67..f8d634d68 100644 --- a/apps/web/src/components/modal/modal.tsx +++ b/apps/web/src/components/modal/modal.tsx @@ -1,9 +1,8 @@ import { Dialog } from "@headlessui/react"; +import X from "@rallly/icons/x.svg"; import { AnimatePresence, m } from "framer-motion"; import * as React from "react"; -import X from "@/components/icons/x.svg"; - import { Button, ButtonProps } from "../button"; export interface ModalProps { diff --git a/apps/web/src/components/participant-dropdown.tsx b/apps/web/src/components/participant-dropdown.tsx index d98d868ae..9ac683c37 100644 --- a/apps/web/src/components/participant-dropdown.tsx +++ b/apps/web/src/components/participant-dropdown.tsx @@ -1,4 +1,8 @@ import { trpc } from "@rallly/backend"; +import DotsHorizontal from "@rallly/icons/dots-horizontal.svg"; +import Pencil from "@rallly/icons/pencil-alt.svg"; +import Tag from "@rallly/icons/tag.svg"; +import Trash from "@rallly/icons/trash.svg"; import { useTranslation } from "next-i18next"; import React from "react"; import { SubmitHandler, useForm } from "react-hook-form"; @@ -6,10 +10,6 @@ import { useMount } from "react-use"; import { Button } from "@/components/button"; import Dropdown, { DropdownItem } from "@/components/dropdown"; -import DotsHorizontal from "@/components/icons/dots-horizontal.svg"; -import Pencil from "@/components/icons/pencil-alt.svg"; -import Tag from "@/components/icons/tag.svg"; -import Trash from "@/components/icons/trash.svg"; import Modal from "@/components/modal/modal"; import { useModalState } from "@/components/modal/use-modal"; import { useDeleteParticipantModal } from "@/components/poll/use-delete-participant-modal"; diff --git a/apps/web/src/components/poll-context.tsx b/apps/web/src/components/poll-context.tsx index 9d740ddbc..b0055865b 100644 --- a/apps/web/src/components/poll-context.tsx +++ b/apps/web/src/components/poll-context.tsx @@ -1,9 +1,9 @@ import { Participant, Vote, VoteType } from "@rallly/database"; +import Trash from "@rallly/icons/trash.svg"; import { keyBy } from "lodash"; import { useTranslation } from "next-i18next"; import React from "react"; -import Trash from "@/components/icons/trash.svg"; import { decodeOptions, getBrowserTimeZone, diff --git a/apps/web/src/components/poll.tsx b/apps/web/src/components/poll.tsx index c1c1f8485..09d9e2181 100644 --- a/apps/web/src/components/poll.tsx +++ b/apps/web/src/components/poll.tsx @@ -1,9 +1,9 @@ +import Exclamation from "@rallly/icons/exclamation.svg"; +import LockClosed from "@rallly/icons/lock-closed.svg"; import { useTranslation } from "next-i18next"; import React from "react"; import Discussion from "@/components/discussion"; -import Exclamation from "@/components/icons/exclamation.svg"; -import LockClosed from "@/components/icons/lock-closed.svg"; import DesktopPoll from "@/components/poll/desktop-poll"; import MobilePoll from "@/components/poll/mobile-poll"; import { preventWidows } from "@/utils/prevent-widows"; diff --git a/apps/web/src/components/poll/desktop-poll.tsx b/apps/web/src/components/poll/desktop-poll.tsx index 4420da296..5b605cf86 100644 --- a/apps/web/src/components/poll/desktop-poll.tsx +++ b/apps/web/src/components/poll/desktop-poll.tsx @@ -1,10 +1,9 @@ +import ArrowLeft from "@rallly/icons/arrow-left.svg"; +import ArrowRight from "@rallly/icons/arrow-right.svg"; import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; import { useMeasure } from "react-use"; -import ArrowLeft from "@/components/icons/arrow-left.svg"; -import ArrowRight from "@/components/icons/arrow-right.svg"; - import { Button } from "../button"; import { useNewParticipantModal } from "../new-participant-modal"; import { useParticipants } from "../participants-provider"; diff --git a/apps/web/src/components/poll/language-selector.tsx b/apps/web/src/components/poll/language-selector.tsx index d31a38fe0..8ef0de400 100644 --- a/apps/web/src/components/poll/language-selector.tsx +++ b/apps/web/src/components/poll/language-selector.tsx @@ -1,10 +1,9 @@ +import ChevronDown from "@rallly/icons/chevron-down.svg"; import languages from "@rallly/languages"; import clsx from "clsx"; import Cookies from "js-cookie"; import { useTranslation } from "next-i18next"; -import ChevronDown from "@/components/icons/chevron-down.svg"; - export const LanguageSelect: React.FunctionComponent<{ className?: string; onChange?: (language: string) => void; diff --git a/apps/web/src/components/poll/legacy-poll-notice.tsx b/apps/web/src/components/poll/legacy-poll-notice.tsx index 69adcfb69..aadf6505e 100644 --- a/apps/web/src/components/poll/legacy-poll-notice.tsx +++ b/apps/web/src/components/poll/legacy-poll-notice.tsx @@ -1,8 +1,7 @@ +import Speakerphone from "@rallly/icons/speakerphone.svg"; import Cookies from "js-cookie"; import * as React from "react"; -import Speakerphone from "@/components/icons/speakerphone.svg"; - const cookieName = "legacy-poll-notice"; const LegacyPollNotice: React.FunctionComponent<{ show?: boolean }> = ({ diff --git a/apps/web/src/components/poll/manage-poll.tsx b/apps/web/src/components/poll/manage-poll.tsx index 5b1951317..066528d18 100644 --- a/apps/web/src/components/poll/manage-poll.tsx +++ b/apps/web/src/components/poll/manage-poll.tsx @@ -1,16 +1,16 @@ import { Placement } from "@floating-ui/react-dom-interactions"; +import Cog from "@rallly/icons/cog.svg"; +import LockClosed from "@rallly/icons/lock-closed.svg"; +import LockOpen from "@rallly/icons/lock-open.svg"; +import Pencil from "@rallly/icons/pencil-alt.svg"; +import Save from "@rallly/icons/save.svg"; +import Table from "@rallly/icons/table.svg"; +import Trash from "@rallly/icons/trash.svg"; import dayjs from "dayjs"; import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; import { Button } from "@/components/button"; -import Cog from "@/components/icons/cog.svg"; -import LockClosed from "@/components/icons/lock-closed.svg"; -import LockOpen from "@/components/icons/lock-open.svg"; -import Pencil from "@/components/icons/pencil-alt.svg"; -import Save from "@/components/icons/save.svg"; -import Table from "@/components/icons/table.svg"; -import Trash from "@/components/icons/trash.svg"; import { encodeDateOption } from "@/utils/date-time-utils"; import Dropdown, { DropdownItem } from "../dropdown"; diff --git a/apps/web/src/components/poll/manage-poll/delete-poll-form.tsx b/apps/web/src/components/poll/manage-poll/delete-poll-form.tsx index 0e22a2cf5..243ecd2c6 100644 --- a/apps/web/src/components/poll/manage-poll/delete-poll-form.tsx +++ b/apps/web/src/components/poll/manage-poll/delete-poll-form.tsx @@ -1,11 +1,11 @@ import { trpc } from "@rallly/backend"; +import Exclamation from "@rallly/icons/exclamation.svg"; import clsx from "clsx"; import { Trans, useTranslation } from "next-i18next"; import * as React from "react"; import { useForm } from "react-hook-form"; import { Button } from "@/components/button"; -import Exclamation from "@/components/icons/exclamation.svg"; import { usePostHog } from "@/utils/posthog"; const confirmText = "delete-me"; diff --git a/apps/web/src/components/poll/mobile-poll.tsx b/apps/web/src/components/poll/mobile-poll.tsx index 21be22972..0bc7cd4f8 100644 --- a/apps/web/src/components/poll/mobile-poll.tsx +++ b/apps/web/src/components/poll/mobile-poll.tsx @@ -1,12 +1,12 @@ import { Listbox } from "@headlessui/react"; +import ChevronDown from "@rallly/icons/chevron-down.svg"; +import PlusCircle from "@rallly/icons/plus-circle.svg"; import { AnimatePresence, m } from "framer-motion"; import { useTranslation } from "next-i18next"; import * as React from "react"; import { FormProvider, useForm } from "react-hook-form"; import smoothscroll from "smoothscroll-polyfill"; -import ChevronDown from "@/components/icons/chevron-down.svg"; -import PlusCircle from "@/components/icons/plus-circle.svg"; import { ParticipantDropdown } from "@/components/participant-dropdown"; import { usePoll } from "@/components/poll-context"; import { You } from "@/components/you"; diff --git a/apps/web/src/components/poll/mobile-poll/poll-option.tsx b/apps/web/src/components/poll/mobile-poll/poll-option.tsx index 5262451d2..52b85b7b1 100644 --- a/apps/web/src/components/poll/mobile-poll/poll-option.tsx +++ b/apps/web/src/components/poll/mobile-poll/poll-option.tsx @@ -1,11 +1,10 @@ import { Participant, VoteType } from "@rallly/database"; +import ChevronDown from "@rallly/icons/chevron-down.svg"; import clsx from "clsx"; import { AnimatePresence, m } from "framer-motion"; import { useTranslation } from "next-i18next"; import * as React from "react"; -import ChevronDown from "@/components/icons/chevron-down.svg"; - import { useParticipants } from "../../participants-provider"; import { ConnectedScoreSummary } from "../score-summary"; import UserAvatar from "../user-avatar"; diff --git a/apps/web/src/components/poll/mobile-poll/time-slot-option.tsx b/apps/web/src/components/poll/mobile-poll/time-slot-option.tsx index 286eef5f9..8dcb0f789 100644 --- a/apps/web/src/components/poll/mobile-poll/time-slot-option.tsx +++ b/apps/web/src/components/poll/mobile-poll/time-slot-option.tsx @@ -1,7 +1,6 @@ +import Clock from "@rallly/icons/clock.svg"; import * as React from "react"; -import Clock from "@/components/icons/clock.svg"; - import PollOption, { PollOptionProps } from "./poll-option"; export interface TimeSlotOptionProps extends PollOptionProps { diff --git a/apps/web/src/components/poll/notifications-toggle.tsx b/apps/web/src/components/poll/notifications-toggle.tsx index 97a42b33b..aa463e5a9 100644 --- a/apps/web/src/components/poll/notifications-toggle.tsx +++ b/apps/web/src/components/poll/notifications-toggle.tsx @@ -1,11 +1,11 @@ import { trpc } from "@rallly/backend"; +import Bell from "@rallly/icons/bell.svg"; +import BellCrossed from "@rallly/icons/bell-crossed.svg"; import { useTranslation } from "next-i18next"; import * as React from "react"; import { useLoginModal } from "@/components/auth/login-modal"; import { Button } from "@/components/button"; -import Bell from "@/components/icons/bell.svg"; -import BellCrossed from "@/components/icons/bell-crossed.svg"; import { useUser } from "@/components/user-provider"; import { usePostHog } from "@/utils/posthog"; import { usePollByAdmin } from "@/utils/trpc/hooks"; diff --git a/apps/web/src/components/poll/score-summary.tsx b/apps/web/src/components/poll/score-summary.tsx index a6df24468..4116997bf 100644 --- a/apps/web/src/components/poll/score-summary.tsx +++ b/apps/web/src/components/poll/score-summary.tsx @@ -1,9 +1,9 @@ +import CheckCircle from "@rallly/icons/check-circle.svg"; import clsx from "clsx"; import { AnimatePresence, m } from "framer-motion"; import * as React from "react"; import { usePrevious } from "react-use"; -import CheckCircle from "@/components/icons/check-circle.svg"; import { usePoll } from "@/components/poll-context"; export interface PopularityScoreProps { diff --git a/apps/web/src/components/poll/vote-icon.tsx b/apps/web/src/components/poll/vote-icon.tsx index 9602f032d..e2fd02b56 100644 --- a/apps/web/src/components/poll/vote-icon.tsx +++ b/apps/web/src/components/poll/vote-icon.tsx @@ -1,12 +1,11 @@ import { VoteType } from "@rallly/database"; +import CheckCircle from "@rallly/icons/check-circle.svg"; +import IfNeedBe from "@rallly/icons/if-need-be.svg"; +import QuestionMark from "@rallly/icons/question-mark.svg"; +import X from "@rallly/icons/x-circle.svg"; import clsx from "clsx"; import * as React from "react"; -import CheckCircle from "@/components/icons/check-circle.svg"; -import IfNeedBe from "@/components/icons/if-need-be.svg"; -import QuestionMark from "@/components/icons/question-mark.svg"; -import X from "@/components/icons/x-circle.svg"; - const VoteIcon: React.FunctionComponent<{ type?: VoteType; size?: "sm" | "md"; diff --git a/apps/web/src/components/profile.tsx b/apps/web/src/components/profile.tsx index dd31d92ab..bc1e33861 100644 --- a/apps/web/src/components/profile.tsx +++ b/apps/web/src/components/profile.tsx @@ -1,4 +1,8 @@ import { trpc } from "@rallly/backend"; +import Calendar from "@rallly/icons/calendar.svg"; +import LockClosed from "@rallly/icons/lock-closed.svg"; +import Pencil from "@rallly/icons/pencil.svg"; +import User from "@rallly/icons/user.svg"; import Head from "next/head"; import Link from "next/link"; import { useRouter } from "next/router"; @@ -6,10 +10,6 @@ import { useTranslation } from "next-i18next"; import * as React from "react"; import Badge from "@/components/badge"; -import Calendar from "@/components/icons/calendar.svg"; -import LockClosed from "@/components/icons/lock-closed.svg"; -import Pencil from "@/components/icons/pencil.svg"; -import User from "@/components/icons/user.svg"; import Tooltip from "@/components/tooltip"; import { useDayjs } from "../utils/dayjs"; diff --git a/apps/web/src/components/spinner.tsx b/apps/web/src/components/spinner.tsx index 420db541f..6280f05d0 100644 --- a/apps/web/src/components/spinner.tsx +++ b/apps/web/src/components/spinner.tsx @@ -1,7 +1,6 @@ +import SpinnerSvg from "@rallly/icons/spinner.svg"; import clsx from "clsx"; -import SpinnerSvg from "@/components/icons/spinner.svg"; - export const Spinner = (props: { className?: string }) => { return (