🎨 Update color palette (#613)

Use more saturated colors and increase contrast to improve readability
This commit is contained in:
Luke Vella 2023-03-27 11:46:33 +01:00 committed by GitHub
parent 029d130a4d
commit a2481b3bbd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
71 changed files with 198 additions and 119 deletions

View file

@ -1,15 +1,25 @@
<img src="./docs/images/logo.png" alt="Rallly" />
<div align="center">
[![Actions Status](https://github.com/lukevella/rallly/workflows/ci/badge.svg?branch=main)](https://github.com/lukevella/rallly/actions) [![Actions Status](https://github.com/lukevella/rallly/workflows/ci/badge.svg?branch=main)](https://github.com/lukevella/rallly/actions)
[![Crowdin](https://badges.crowdin.net/rallly/localized.svg)](https://crowdin.com/project/rallly) [![Crowdin](https://badges.crowdin.net/rallly/localized.svg)](https://crowdin.com/project/rallly)
[![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-orange.svg)](https://www.gnu.org/licenses/agpl-3.0) [![License: AGPL v3](https://img.shields.io/badge/License-AGPL_v3-orange.svg)](https://www.gnu.org/licenses/agpl-3.0)
[![Discord](https://img.shields.io/badge/-Join%20Chat-7289DA?logo=discord&logoColor=white)](https://discord.gg/uzg4ZcHbuM) [![Discord](https://img.shields.io/badge/-Join%20Chat-7289DA?logo=discord&logoColor=white)](https://discord.gg/uzg4ZcHbuM)
[![Donate](https://img.shields.io/badge/-Donate%20with%20Paypal-white?logo=paypal)](https://www.paypal.com/donate/?hosted_button_id=7QXP2CUBLY88E) [![Donate](https://img.shields.io/badge/-Donate%20with%20Paypal-white?logo=paypal)](https://www.paypal.com/donate/?hosted_button_id=7QXP2CUBLY88E)
![hero](./docs/images/hero-image.png) </div>
Schedule group meetings with friends, colleagues and teams. Create meeting polls to find the best date and time to organize an event based on your participants' availability. Save time and avoid back-and-forth emails. Schedule group meetings with friends, colleagues and teams. Create meeting polls to find the best date and time to organize an event based on your participants' availability. Save time and avoid back-and-forth emails.
Built with [Next.js](https://github.com/vercel/next.js/), [Prisma](https://github.com/prisma/prisma), [tRPC](https://github.com/trpc/trpc) & [TailwindCSS](https://github.com/tailwindlabs/tailwindcss) Built with [Next.js](https://github.com/vercel/next.js/), [Prisma](https://github.com/prisma/prisma), [tRPC](https://github.com/trpc/trpc) & [TailwindCSS](https://github.com/tailwindlabs/tailwindcss)
<div align="center">
<img src="./docs/images/poll-image.png" alt="Rallly" />
</div>
## Self-hosting ## Self-hosting
Check out the [self-hosting repo](https://github.com/lukevella/rallly-selfhosted) for more information on running your own instance of Rallly. Check out the [self-hosting repo](https://github.com/lukevella/rallly-selfhosted) for more information on running your own instance of Rallly.
@ -92,8 +102,8 @@ Big thanks to these folks for sponsoring the project!
And thanks to these companies for providing their services to host and run [rallly.co](https://rallly.co). And thanks to these companies for providing their services to host and run [rallly.co](https://rallly.co).
<a href="https://vercel.com/?utm_source=rallly&utm_campaign=oss"><img src="/apps/web/public/vercel-logotype-dark.svg" alt="Powered by Vercel" height="30" /></a> <a href="https://vercel.com/?utm_source=rallly&utm_campaign=oss"><img src="./apps/web/public/vercel-logotype-dark.svg" alt="Powered by Vercel" height="30" /></a>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<a href="https://m.do.co/c/f91efc9c9e50"><img src="/apps/web/public/digitalocean.svg" alt="Digital Ocean" height="30" /></a> <a href="https://m.do.co/c/f91efc9c9e50"><img src="./apps/web/public/digitalocean.svg" alt="Digital Ocean" height="30" /></a>
&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<a href="https://sentry.io"><img src="/apps/web/public/sentry.svg" alt="Sentry" height="30" /></a> <a href="https://sentry.io"><img src="./apps/web/public/sentry.svg" alt="Sentry" height="30" /></a>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 955 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,015 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 386 B

After

Width:  |  Height:  |  Size: 388 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 566 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Before After
Before After

View file

@ -17,7 +17,7 @@
"mobileFriendlyDescription": "Works great on mobile devices so participants can respond to polls wherever they may be.", "mobileFriendlyDescription": "Works great on mobile devices so participants can respond to polls wherever they may be.",
"new": "New", "new": "New",
"noLoginRequired": "No login required", "noLoginRequired": "No login required",
"noLoginRequiredDescription": "You don't need to login to create or participate in a poll", "noLoginRequiredDescription": "You don't need to login to create or participate in a poll.",
"notifications": "Notifications", "notifications": "Notifications",
"notificationsDescription": "Keep track of who's responded. Get notified when participants vote or comment on your poll.", "notificationsDescription": "Keep track of who's responded. Get notified when participants vote or comment on your poll.",
"openSource": "Open-source", "openSource": "Open-source",
@ -33,7 +33,7 @@
"principles": "Principles", "principles": "Principles",
"principlesSubheading": "We're not like the others", "principlesSubheading": "We're not like the others",
"selfHostable": "Self-hostable", "selfHostable": "Self-hostable",
"selfHostableDescription": "Run it on your own server to take full control of your data", "selfHostableDescription": "Run it on your own server to take full control of your data.",
"timeSlots": "Time slots", "timeSlots": "Time slots",
"timeSlotsDescription": "Set individual start and end times for each option in your poll. Times can be automatically adjusted to each participant's timezone or they can be set to ignore timezones completely." "timeSlotsDescription": "Set individual start and end times for each option in your poll. Times can be automatically adjusted to each participant's timezone or they can be set to ignore timezones completely."
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 921 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Before After
Before After

View file

@ -7,8 +7,8 @@ export const AuthLayout = ({ children }: { children?: React.ReactNode }) => {
<div className="h-full bg-gray-100 p-3 sm:p-8"> <div className="h-full bg-gray-100 p-3 sm:p-8">
<div className="flex h-full items-start justify-center"> <div className="flex h-full items-start justify-center">
<div className="w-[480px] max-w-full overflow-hidden rounded-lg border bg-white shadow-sm"> <div className="w-[480px] max-w-full overflow-hidden rounded-lg border bg-white shadow-sm">
<div className="bg-pattern border-t-primary-500 border-b border-t-4 bg-slate-500/5 p-4 text-center sm:p-8"> <div className="bg-pattern border-t-primary-600 border-b border-t-4 bg-slate-500/5 p-4 text-center sm:p-8">
<Logo className="text-primary-500 inline-block h-7" /> <Logo className="text-primary-600 inline-block h-7" />
</div> </div>
<div className="p-4 sm:p-6">{children}</div> <div className="p-4 sm:p-6">{children}</div>
</div> </div>

View file

@ -94,7 +94,7 @@ const VerifyCode: React.FunctionComponent<{
{formState.errors.code.message} {formState.errors.code.message}
</p> </p>
) : null} ) : null}
<p className="mt-2 text-sm text-slate-400"> <p className="mt-2 text-sm text-slate-500">
{t("verificationCodeHelp")} {t("verificationCodeHelp")}
</p> </p>
</fieldset> </fieldset>

View file

@ -17,7 +17,7 @@ export const LoginModal: React.FunctionComponent<{
data-testid="login-modal" data-testid="login-modal"
className="w-[420px] max-w-full overflow-hidden bg-white shadow-sm" className="w-[420px] max-w-full overflow-hidden bg-white shadow-sm"
> >
<div className="bg-pattern border-t-primary-500 border-b border-t-4 bg-slate-500/5 p-4 text-center sm:p-8"> <div className="bg-pattern border-t-primary-600 border-b border-t-4 bg-slate-500/5 p-4 text-center sm:p-8">
<Logo className="text-2xl" /> <Logo className="text-2xl" />
</div> </div>
<div className="p-4 sm:p-6"> <div className="p-4 sm:p-6">

View file

@ -17,7 +17,7 @@ const CompactButton: React.FunctionComponent<CompactButtonProps> = ({
return ( return (
<button <button
type="button" type="button"
className="inline-flex h-5 w-5 items-center justify-center rounded-full bg-slate-100 text-slate-400 transition-colors hover:bg-slate-200 active:bg-slate-300 active:text-slate-500" className="inline-flex h-5 w-5 items-center justify-center rounded-full bg-slate-100 text-slate-500 transition-colors hover:bg-slate-200 active:bg-slate-300 active:text-slate-500"
onClick={onClick} onClick={onClick}
> >
{Icon ? <Icon className="h-3 w-3" /> : children} {Icon ? <Icon className="h-3 w-3" /> : children}

View file

@ -40,7 +40,7 @@ const CookieConsentPopover: React.FunctionComponent = () => {
<div className="flex items-center space-x-6"> <div className="flex items-center space-x-6">
<Link <Link
href="/privacy-policy" href="/privacy-policy"
className="hover:text-primary-500 text-slate-400" className="hover:text-primary-600 text-slate-500"
> >
Privacy Policy Privacy Policy
</Link> </Link>
@ -49,7 +49,7 @@ const CookieConsentPopover: React.FunctionComponent = () => {
Cookies.set("rallly_cookie_consent", "1", { expires: 365 }); Cookies.set("rallly_cookie_consent", "1", { expires: 365 });
setVisible(false); setVisible(false);
}} }}
className="bg-primary-500 hover:bg-primary-500/90 focus:ring-primary-200 active:bg-primary-600/90 grow rounded-md px-5 py-1 font-semibold text-white shadow-sm transition-all focus:ring-2" className="bg-primary-600 hover:bg-primary-600/90 focus:ring-primary-200 active:bg-primary-600/90 grow rounded-md px-5 py-1 font-semibold text-white shadow-sm transition-all focus:ring-2"
> >
OK OK
</button> </button>

View file

@ -173,7 +173,7 @@ const Page: React.FunctionComponent = () => {
); );
} }
})()} })()}
<div className="flex w-full justify-end space-x-3 border-t bg-slate-50 px-4 py-3"> <div className="flex w-full justify-end space-x-3 border-t bg-gray-50 p-3">
{currentStepIndex > 0 ? ( {currentStepIndex > 0 ? (
<Button <Button
disabled={isBusy} disabled={isBusy}

View file

@ -28,7 +28,7 @@ const DateCard: React.FunctionComponent<DateCardProps> = ({
) : null} ) : null}
<div> <div>
{dow ? ( {dow ? (
<div className="-mt-3 bg-white text-center text-xs text-slate-400"> <div className="-mt-3 bg-white text-center text-xs text-slate-500">
{dow} {dow}
</div> </div>
) : null} ) : null}

View file

@ -102,7 +102,7 @@ const Discussion: React.FunctionComponent = () => {
isYou={session.ownsObject(comment)} isYou={session.ownsObject(comment)}
/> />
<div className="mb-1"> <div className="mb-1">
<span className="mr-1 text-slate-400">&bull;</span> <span className="mr-1 text-slate-500">&bull;</span>
<span className="text-sm text-slate-500"> <span className="text-sm text-slate-500">
{dayjs(new Date(comment.createdAt)).fromNow()} {dayjs(new Date(comment.createdAt)).fromNow()}
</span> </span>

View file

@ -25,8 +25,8 @@ const ErrorPage: React.FunctionComponent<ComponentProps> = ({
</Head> </Head>
<div className="flex items-start"> <div className="flex items-start">
<div className="text-center"> <div className="text-center">
<Icon className="mb-4 inline-block w-24 text-slate-400" /> <Icon className="mb-4 inline-block w-24 text-slate-500" />
<div className="text-primary-500 mb-2 text-3xl font-bold "> <div className="text-primary-600 mb-2 text-3xl font-bold ">
{title} {title}
</div> </div>
<p>{description}</p> <p>{description}</p>

View file

@ -104,7 +104,7 @@ const MonthCalendar: React.FunctionComponent<DateTimePickerProps> = ({
return ( return (
<div <div
key={dayOfWeek} key={dayOfWeek}
className="flex items-center justify-center pb-2 text-sm font-medium text-slate-400" className="flex items-center justify-center pb-2 text-sm font-medium text-slate-500"
> >
{dayOfWeek.substring(0, 2)} {dayOfWeek.substring(0, 2)}
</div> </div>
@ -163,9 +163,9 @@ const MonthCalendar: React.FunctionComponent<DateTimePickerProps> = ({
className={clsx( className={clsx(
"relative flex h-full w-full items-center justify-center text-sm hover:bg-slate-50 focus:z-10 focus:rounded active:bg-slate-100", "relative flex h-full w-full items-center justify-center text-sm hover:bg-slate-50 focus:z-10 focus:rounded active:bg-slate-100",
{ {
"bg-slate-50 text-slate-400": day.outOfMonth, "bg-slate-50 text-slate-500": day.outOfMonth,
"font-bold": day.today, "font-bold": day.today,
"text-primary-500": day.today && !day.selected, "text-primary-600": day.today && !day.selected,
"font-normal text-white after:absolute after:-z-0 after:h-8 after:w-8 after:rounded-full after:bg-green-500 after:content-['']": "font-normal text-white after:absolute after:-z-0 after:h-8 after:w-8 after:rounded-full after:bg-green-500 after:content-['']":
day.selected, day.selected,
}, },
@ -192,7 +192,7 @@ const MonthCalendar: React.FunctionComponent<DateTimePickerProps> = ({
<div className="flex items-center space-x-3 p-3 sm:p-4"> <div className="flex items-center space-x-3 p-3 sm:p-4">
<div className="grow"> <div className="grow">
<div className="font-medium">{t("specifyTimes")}</div> <div className="font-medium">{t("specifyTimes")}</div>
<div className="text-sm text-slate-400"> <div className="text-sm text-slate-500">
{t("specifyTimesDescription")} {t("specifyTimesDescription")}
</div> </div>
</div> </div>

View file

@ -14,7 +14,7 @@ const FullPageLoader: React.FunctionComponent<FullPageLoaderProps> = ({
}) => { }) => {
return ( return (
<div className={clsx("flex h-full items-center justify-center", className)}> <div className={clsx("flex h-full items-center justify-center", className)}>
<div className="bg-primary-500 flex items-center rounded-lg px-4 py-3 text-sm text-white shadow-sm"> <div className="bg-primary-600 flex items-center rounded-lg px-4 py-3 text-sm text-white shadow-sm">
<Spinner className="mr-3 h-5 animate-spin" /> <Spinner className="mr-3 h-5 animate-spin" />
{children} {children}
</div> </div>

View file

@ -14,7 +14,7 @@ const Features: React.FunctionComponent = () => {
<p className="subheading">{t("featuresSubheading")}</p> <p className="subheading">{t("featuresSubheading")}</p>
<div className="grid grid-cols-2 gap-12"> <div className="grid grid-cols-2 gap-12">
<div className="col-span-2 md:col-span-1"> <div className="col-span-2 md:col-span-1">
<div className="mb-4 inline-block rounded-2xl bg-green-100/50 p-3 text-green-400"> <div className="mb-4 inline-block rounded-2xl bg-green-100/50 p-3 text-green-500">
<Clock className="h-8 w-8" /> <Clock className="h-8 w-8" />
</div> </div>
<h3 className="heading-sm flex items-center"> <h3 className="heading-sm flex items-center">
@ -26,21 +26,21 @@ const Features: React.FunctionComponent = () => {
<p className="text">{t("timeSlotsDescription")}</p> <p className="text">{t("timeSlotsDescription")}</p>
</div> </div>
<div className="col-span-2 md:col-span-1"> <div className="col-span-2 md:col-span-1">
<div className="mb-4 inline-block rounded-2xl bg-cyan-100/50 p-3 text-cyan-400"> <div className="mb-4 inline-block rounded-2xl bg-cyan-100/50 p-3 text-cyan-500">
<DeviceMobile className="h-8 w-8" /> <DeviceMobile className="h-8 w-8" />
</div> </div>
<h3 className="heading-sm">{t("mobileFriendly")}</h3> <h3 className="heading-sm">{t("mobileFriendly")}</h3>
<p className="text">{t("mobileFriendlyDescription")}</p> <p className="text">{t("mobileFriendlyDescription")}</p>
</div> </div>
<div className="col-span-2 md:col-span-1"> <div className="col-span-2 md:col-span-1">
<div className="mb-4 inline-block rounded-2xl bg-rose-100/50 p-3 text-rose-400"> <div className="mb-4 inline-block rounded-2xl bg-rose-100/50 p-3 text-rose-500">
<Bell className="h-8 w-8" /> <Bell className="h-8 w-8" />
</div> </div>
<h3 className="heading-sm">{t("notifications")}</h3> <h3 className="heading-sm">{t("notifications")}</h3>
<p className="text">{t("notificationsDescription")}</p> <p className="text">{t("notificationsDescription")}</p>
</div> </div>
<div className="col-span-2 md:col-span-1"> <div className="col-span-2 md:col-span-1">
<div className="mb-4 inline-block rounded-2xl bg-yellow-100/50 p-3 text-yellow-400"> <div className="mb-4 inline-block rounded-2xl bg-yellow-100/50 p-3 text-yellow-500">
<Chat className="h-8 w-8" /> <Chat className="h-8 w-8" />
</div> </div>
<h3 className="heading-sm">{t("comments")}</h3> <h3 className="heading-sm">{t("comments")}</h3>

View file

@ -1,5 +1,5 @@
/* eslint-disable @next/next/no-html-link-for-pages */
import { m } from "framer-motion"; import { m } from "framer-motion";
import Link from "next/link";
import { Trans, useTranslation } from "next-i18next"; import { Trans, useTranslation } from "next-i18next";
import * as React from "react"; import * as React from "react";
@ -21,25 +21,25 @@ const Hero: React.FunctionComponent = () => {
i18nKey="heroText" i18nKey="heroText"
components={{ components={{
br: <br />, br: <br />,
s: <span className="text-primary-500 whitespace-nowrap" />, s: <span className="text-primary-600 whitespace-nowrap" />,
}} }}
/> />
</h1> </h1>
<div className="mb-12 text-xl text-gray-400">{t("heroSubText")}</div> <div className="mb-12 text-xl text-slate-500">{t("heroSubText")}</div>
<div className="space-x-3"> <div className="space-x-3">
<a <Link
href="/new" href="/new"
className="bg-primary-500 hover:bg-primary-500/90 active:bg-primary-600/90 rounded-lg px-5 py-3 font-semibold text-white shadow-sm transition-all hover:text-white hover:no-underline hover:shadow-md" className="bg-primary-600 hover:bg-primary-600/90 active:bg-primary-600/90 rounded-md px-5 py-3 font-semibold text-white shadow-sm transition-all hover:text-white hover:no-underline hover:shadow-md"
> >
{t("getStarted")} {t("getStarted")}
</a> </Link>
<a <Link
href="/demo" href="/demo"
className="rounded-lg bg-slate-500 px-5 py-3 font-semibold text-white shadow-sm transition-all hover:bg-slate-500/90 hover:text-white hover:no-underline hover:shadow-md active:bg-slate-600/90" className="rounded-md bg-slate-500 px-5 py-3 font-semibold text-white shadow-sm transition-all hover:bg-slate-500/90 hover:text-white hover:no-underline hover:shadow-md active:bg-slate-600/90"
rel="nofollow" rel="nofollow"
> >
{t("liveDemo")} {t("liveDemo")}
</a> </Link>
</div> </div>
</div> </div>
<div className="pointer-events-none mt-24 hidden h-[380px] select-none items-end justify-center md:flex lg:mt-8 lg:ml-8"> <div className="pointer-events-none mt-24 hidden h-[380px] select-none items-end justify-center md:flex lg:mt-8 lg:ml-8">
@ -47,13 +47,13 @@ const Hero: React.FunctionComponent = () => {
<DayjsProvider> <DayjsProvider>
<div className="relative inline-block"> <div className="relative inline-block">
<m.div <m.div
className="border-primary-500 bg-primary-200/10 absolute z-20 h-full rounded-2xl border-4 shadow-md" className="border-primary-600 bg-primary-200/10 absolute z-20 h-full rounded-2xl border-4 shadow-md"
initial={{ opacity: 0, width: 100, scale: 1.1, x: 480 }} initial={{ opacity: 0, width: 100, scale: 1.1, x: 480 }}
animate={{ opacity: 1, x: 381 }} animate={{ opacity: 1, x: 381 }}
transition={{ type: "spring", delay: 1 }} transition={{ type: "spring", delay: 1 }}
/> />
<m.div <m.div
className="bg-primary-500 absolute z-20 rounded-full py-1 px-3 text-sm text-slate-100" className="bg-primary-600 absolute z-20 rounded-full py-1 px-3 text-sm text-slate-100"
initial={{ initial={{
opacity: 0, opacity: 0,
right: 190, right: 190,
@ -64,7 +64,7 @@ const Hero: React.FunctionComponent = () => {
transition={{ type: "spring", delay: 2 }} transition={{ type: "spring", delay: 2 }}
> >
{t("perfect")} 🤩 {t("perfect")} 🤩
<ScribbleArrow className="absolute -right-8 top-3 text-slate-400" /> <ScribbleArrow className="absolute -right-8 top-3 text-slate-500" />
</m.div> </m.div>
<m.div <m.div
className="rounded-lg" className="rounded-lg"

View file

@ -11,22 +11,22 @@ const columnWidth = 100;
const participants = [ const participants = [
{ {
name: "Reed", name: "Reed",
color: "bg-sky-400", color: "bg-sky-500",
votes: [0, 2], votes: [0, 2],
}, },
{ {
name: "Susan", name: "Susan",
color: "bg-blue-400", color: "bg-blue-500",
votes: [0, 1, 2], votes: [0, 1, 2],
}, },
{ {
name: "Johnny", name: "Johnny",
color: "bg-primary-400", color: "bg-primary-500",
votes: [2, 3], votes: [2, 3],
}, },
{ {
name: "Ben", name: "Ben",
color: "bg-purple-400", color: "bg-purple-500",
votes: [0, 1, 2, 3], votes: [0, 1, 2, 3],
}, },
]; ];
@ -44,7 +44,7 @@ const PollDemo: React.FunctionComponent = () => {
> >
<div className="flex"> <div className="flex">
<div <div
className="flex shrink-0 items-center py-2 pl-4 pr-2 font-medium" className="flex shrink-0 items-center pt-2 pb-4 pl-4 pr-2 font-medium"
style={{ width: sidebarWidth }} style={{ width: sidebarWidth }}
> >
<div className="flex h-full grow items-end"> <div className="flex h-full grow items-end">
@ -62,7 +62,7 @@ const PollDemo: React.FunctionComponent = () => {
return ( return (
<div <div
key={i} key={i}
className="shrink-0 space-y-3 py-2 pt-3 text-center transition-colors" className="shrink-0 space-y-3 py-2 pt-3 pb-4 text-center transition-colors"
style={{ width: columnWidth }} style={{ width: columnWidth }}
> >
<div> <div>

View file

@ -26,7 +26,7 @@ const Menu: React.FunctionComponent<{ className: string }> = ({
<Link <Link
href="/" href="/"
className={clsx( className={clsx(
"hover:text-primary-500 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2", "hover:text-primary-600 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2",
{ {
"pointer-events-none font-bold text-gray-600": pathname === "/home", "pointer-events-none font-bold text-gray-600": pathname === "/home",
}, },
@ -37,20 +37,20 @@ const Menu: React.FunctionComponent<{ className: string }> = ({
<Link <Link
href="https://blog.rallly.co" href="https://blog.rallly.co"
className={clsx( className={clsx(
"hover:text-primary-500 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2", "hover:text-primary-600 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2",
)} )}
> >
{t("blog")} {t("blog")}
</Link> </Link>
<a <a
href="https://support.rallly.co" href="https://support.rallly.co"
className="hover:text-primary-500 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2" className="hover:text-primary-600 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2"
> >
{t("support")} {t("support")}
</a> </a>
<Link <Link
href="https://github.com/lukevella/rallly" href="https://github.com/lukevella/rallly"
className="hover:text-primary-500 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2" className="hover:text-primary-600 rounded text-gray-400 transition-colors hover:no-underline hover:underline-offset-2"
> >
<Github className="w-6" /> <Github className="w-6" />
</Link> </Link>
@ -67,7 +67,7 @@ const PageLayout: React.FunctionComponent<PageLayoutProps> = ({ children }) => {
<div className="grow"> <div className="grow">
<div className="relative inline-block"> <div className="relative inline-block">
<Link className="inline-block rounded" href="/"> <Link className="inline-block rounded" href="/">
<Logo className="text-primary-500 w-40" alt="Rallly" /> <Logo className="text-primary-600 w-40" alt="Rallly" />
</Link> </Link>
<span className="absolute -bottom-6 right-0 text-sm text-slate-400 transition-colors"> <span className="absolute -bottom-6 right-0 text-sm text-slate-400 transition-colors">
<Trans t={t} i18nKey="3Ls" components={{ e: <em /> }} /> <Trans t={t} i18nKey="3Ls" components={{ e: <em /> }} />
@ -77,7 +77,7 @@ const PageLayout: React.FunctionComponent<PageLayoutProps> = ({ children }) => {
<Menu className="hidden items-center space-x-8 sm:flex" /> <Menu className="hidden items-center space-x-8 sm:flex" />
<Popover> <Popover>
<PopoverTrigger asChild={true}> <PopoverTrigger asChild={true}>
<button className="hover:text-primary-500 text-gray-400 transition-colors hover:no-underline hover:underline-offset-2 sm:hidden"> <button className="hover:text-primary-600 text-gray-400 transition-colors hover:no-underline hover:underline-offset-2 sm:hidden">
<DotsVertical className="w-5" /> <DotsVertical className="w-5" />
</button> </button>
</PopoverTrigger> </PopoverTrigger>

View file

@ -30,7 +30,7 @@ const Footer: React.FunctionComponent = () => {
components={{ components={{
a: ( a: (
<a <a
className="font-normal leading-loose text-slate-400 underline hover:text-slate-800 hover:underline" className="font-normal leading-loose text-slate-500 underline hover:text-slate-800 hover:underline"
href="https://www.paypal.com/donate/?hosted_button_id=7QXP2CUBLY88E" href="https://www.paypal.com/donate/?hosted_button_id=7QXP2CUBLY88E"
/> />
), ),
@ -44,7 +44,7 @@ const Footer: React.FunctionComponent = () => {
components={{ components={{
a: ( a: (
<a <a
className="font-normal leading-loose text-slate-400 underline hover:text-slate-800 hover:underline" className="font-normal leading-loose text-slate-500 underline hover:text-slate-800 hover:underline"
href="https://twitter.com/imlukevella" href="https://twitter.com/imlukevella"
/> />
), ),
@ -55,19 +55,19 @@ const Footer: React.FunctionComponent = () => {
<div className="mb-8 flex items-center space-x-6"> <div className="mb-8 flex items-center space-x-6">
<a <a
href="https://twitter.com/ralllyco" href="https://twitter.com/ralllyco"
className="hover:text-primary-500 text-sm text-slate-400 transition-colors hover:no-underline" className="hover:text-primary-600 text-sm text-slate-500 transition-colors hover:no-underline"
> >
<Twitter className="h-5 w-5" /> <Twitter className="h-5 w-5" />
</a> </a>
<a <a
href="https://discord.gg/uzg4ZcHbuM" href="https://discord.gg/uzg4ZcHbuM"
className="hover:text-primary-500 text-sm text-slate-400 transition-colors hover:no-underline" className="hover:text-primary-600 text-sm text-slate-500 transition-colors hover:no-underline"
> >
<Discord className="h-5 w-5" /> <Discord className="h-5 w-5" />
</a> </a>
<a <a
href="https://github.com/lukevella/rallly" href="https://github.com/lukevella/rallly"
className="hover:bg-primary-500 focus:ring-primary-500 active:bg-primary-600 inline-flex h-8 items-center rounded-full bg-slate-100 pl-2 pr-3 text-sm text-slate-400 transition-colors hover:text-white hover:no-underline focus:ring-2 focus:ring-offset-1" className="hover:bg-primary-600 focus:ring-primary-600 active:bg-primary-600 inline-flex h-8 items-center rounded-full bg-slate-100 pl-2 pr-3 text-sm text-slate-500 transition-colors hover:text-white hover:no-underline focus:ring-2 focus:ring-offset-1"
> >
<Star className="mr-2 inline-block w-5" /> <Star className="mr-2 inline-block w-5" />
<span>{t("starOnGithub")}</span> <span>{t("starOnGithub")}</span>
@ -79,7 +79,7 @@ const Footer: React.FunctionComponent = () => {
<ul className="space-y-2"> <ul className="space-y-2">
<li> <li>
<a <a
className="inline-block font-normal text-slate-400 hover:text-slate-800 hover:no-underline" className="inline-block font-normal text-slate-500 hover:text-slate-800 hover:no-underline"
href="https://github.com/lukevella/rallly/discussions" href="https://github.com/lukevella/rallly/discussions"
> >
{t("discussions")} {t("discussions")}
@ -88,7 +88,7 @@ const Footer: React.FunctionComponent = () => {
<li> <li>
<Link <Link
href="https://blog.rallly.co" href="https://blog.rallly.co"
className="inline-block font-normal text-slate-400 hover:text-slate-800 hover:no-underline" className="inline-block font-normal text-slate-500 hover:text-slate-800 hover:no-underline"
> >
{t("blog")} {t("blog")}
</Link> </Link>
@ -96,7 +96,7 @@ const Footer: React.FunctionComponent = () => {
<li> <li>
<a <a
href="https://support.rallly.co" href="https://support.rallly.co"
className="inline-block font-normal text-slate-400 hover:text-slate-800 hover:no-underline" className="inline-block font-normal text-slate-500 hover:text-slate-800 hover:no-underline"
> >
{t("support")} {t("support")}
</a> </a>
@ -104,7 +104,7 @@ const Footer: React.FunctionComponent = () => {
<li> <li>
<Link <Link
href="/privacy-policy" href="/privacy-policy"
className="inline-block font-normal text-slate-400 hover:text-slate-800 hover:no-underline" className="inline-block font-normal text-slate-500 hover:text-slate-800 hover:no-underline"
> >
{t("privacyPolicy")} {t("privacyPolicy")}
</Link> </Link>
@ -144,7 +144,7 @@ const Footer: React.FunctionComponent = () => {
/> />
<a <a
href="https://github.com/lukevella/rallly/wiki/Guide-for-translators" href="https://github.com/lukevella/rallly/wiki/Guide-for-translators"
className="hover:border-primary-500 hover:text-primary-500 inline-flex items-center rounded-md border px-3 py-2 text-xs text-slate-500" className="hover:border-primary-600 hover:text-primary-600 inline-flex items-center rounded-md border px-3 py-2 text-xs text-slate-500"
> >
<Translate className="mr-2 h-5 w-5" /> <Translate className="mr-2 h-5 w-5" />
{t("volunteerTranslator")} &rarr; {t("volunteerTranslator")} &rarr;

View file

@ -14,7 +14,7 @@ const Feedback = dynamic(() => import("../feedback"), { ssr: false });
const appVersion = process.env.NEXT_PUBLIC_APP_VERSION const appVersion = process.env.NEXT_PUBLIC_APP_VERSION
? `v${process.env.NEXT_PUBLIC_APP_VERSION}` ? `v${process.env.NEXT_PUBLIC_APP_VERSION}`
: null; : "v2.8.0";
const AppVersion = () => { const AppVersion = () => {
if (!appVersion) return null; if (!appVersion) return null;
@ -22,7 +22,7 @@ const AppVersion = () => {
return ( return (
<Link <Link
href="https://github.com/lukevella/rallly/releases" href="https://github.com/lukevella/rallly/releases"
className="fixed bottom-0 left-0 hidden rounded-none rounded-tr px-2 py-1 text-xs text-slate-400 lg:block" className="fixed bottom-2 left-2 hidden p-1 text-xs tabular-nums text-slate-400 lg:block"
> >
{appVersion} {appVersion}
</Link> </Link>

View file

@ -5,7 +5,7 @@ import Logo from "~/public/logo.svg";
export const HomeLink = (props: { className?: string }) => { export const HomeLink = (props: { className?: string }) => {
return ( return (
<Link href="/" className={props.className}> <Link href="/" className={props.className}>
<Logo className="text-primary-500 active:text-primary-600 inline-block w-28 transition-colors lg:w-32" /> <Logo className="text-primary-600 active:text-primary-600 inline-block w-28 transition-colors lg:w-32" />
</Link> </Link>
); );
}; };

View file

@ -65,7 +65,7 @@ export const MobileNavigation = (props: { className?: string }) => {
type="button" type="button"
className="group flex items-center rounded px-2 py-1 font-medium text-slate-600 transition-colors hover:bg-gray-200 hover:text-slate-600 hover:no-underline active:bg-gray-300" className="group flex items-center rounded px-2 py-1 font-medium text-slate-600 transition-colors hover:bg-gray-200 hover:text-slate-600 hover:no-underline active:bg-gray-300"
> >
<Menu className="group-hover:text-primary-500 mr-2 w-5" /> <Menu className="group-hover:text-primary-600 mr-2 w-5" />
<Logo /> <Logo />
</button> </button>
} }
@ -119,7 +119,7 @@ export const MobileNavigation = (props: { className?: string }) => {
)} )}
> >
<div className="relative shrink-0"> <div className="relative shrink-0">
<UserCircle className="group-hover:text-primary-500 w-5 opacity-75 group-hover:opacity-100" /> <UserCircle className="group-hover:text-primary-600 w-5 opacity-75 group-hover:opacity-100" />
</div> </div>
<div className="xs:block max-w-[120px] truncate font-medium"> <div className="xs:block max-w-[120px] truncate font-medium">
{user.isGuest ? t("app:guest") : user.shortName} {user.isGuest ? t("app:guest") : user.shortName}
@ -136,7 +136,7 @@ export const MobileNavigation = (props: { className?: string }) => {
type="button" type="button"
className="group flex items-center whitespace-nowrap rounded px-2 py-1 font-medium text-slate-600 transition-colors hover:bg-gray-200 hover:text-slate-600 hover:no-underline active:bg-gray-300" className="group flex items-center whitespace-nowrap rounded px-2 py-1 font-medium text-slate-600 transition-colors hover:bg-gray-200 hover:text-slate-600 hover:no-underline active:bg-gray-300"
> >
<Adjustments className="group-hover:text-primary-500 h-5 opacity-75" /> <Adjustments className="group-hover:text-primary-600 h-5 opacity-75" />
<span className="ml-2 hidden sm:block"> <span className="ml-2 hidden sm:block">
{t("app:preferences")} {t("app:preferences")}
</span> </span>

View file

@ -34,7 +34,7 @@ export const UserDropdown: React.FunctionComponent<DropdownProps> = ({
content: ( content: (
<div className="w-96 max-w-full p-6 pt-28"> <div className="w-96 max-w-full p-6 pt-28">
<div className="absolute left-0 -top-8 w-full text-center"> <div className="absolute left-0 -top-8 w-full text-center">
<div className="to-primary-500 inline-flex h-20 w-20 items-center justify-center rounded-full border-8 border-white bg-gradient-to-b from-purple-400"> <div className="to-primary-600 inline-flex h-20 w-20 items-center justify-center rounded-full border-8 border-white bg-gradient-to-b from-purple-400">
<User className="h-7 text-white" /> <User className="h-7 text-white" />
</div> </div>
<div className=""> <div className="">

View file

@ -8,7 +8,7 @@ export const Logo = (props: { className?: string; color?: boolean }) => {
className={clsx( className={clsx(
"font-semibold uppercase tracking-widest", "font-semibold uppercase tracking-widest",
{ {
"text-primary-500": color, "text-primary-600": color,
}, },
props.className, props.className,
)} )}

View file

@ -11,7 +11,7 @@ const Maintenance: React.FunctionComponent = () => {
</Head> </Head>
<div className="w-96 rounded-lg border bg-white p-8 text-center shadow-sm"> <div className="w-96 rounded-lg border bg-white p-8 text-center shadow-sm">
<div className="mb-4"> <div className="mb-4">
<Clock className="text-primary-500 inline-block h-20" /> <Clock className="text-primary-600 inline-block h-20" />
</div> </div>
<div className=""> <div className="">
The site is currently down for some maintenance and will be back The site is currently down for some maintenance and will be back

View file

@ -73,7 +73,7 @@ const Modal: React.FunctionComponent<ModalProps> = ({
{showClose ? ( {showClose ? (
<button <button
role="button" role="button"
className="absolute top-1 right-1 z-10 rounded p-2 text-slate-400 transition-colors hover:bg-slate-500/10 hover:text-slate-500 focus:ring-0 focus:ring-offset-0 active:bg-slate-500/20" className="absolute top-1 right-1 z-10 rounded p-2 text-slate-500 transition-colors hover:bg-slate-500/10 hover:text-slate-500 focus:ring-0 focus:ring-offset-0 active:bg-slate-500/20"
onClick={onCancel} onClick={onCancel}
> >
<X className="h-4" /> <X className="h-4" />

View file

@ -21,25 +21,25 @@ const OpenBeta = () => {
<ul className="grid grid-cols-1 gap-4 md:grid-cols-2"> <ul className="grid grid-cols-1 gap-4 md:grid-cols-2">
<a <a
href="https://github.com/lukevella/rallly/issues/new?assignees=&labels=bug&template=---bug-report.md&title=" href="https://github.com/lukevella/rallly/issues/new?assignees=&labels=bug&template=---bug-report.md&title="
className="hover:text-primary-500 rounded border p-3" className="hover:text-primary-600 rounded border p-3"
> >
🐞 Submit a bug report 🐞 Submit a bug report
</a> </a>
<a <a
href="https://github.com/lukevella/rallly/discussions/new/choose" href="https://github.com/lukevella/rallly/discussions/new/choose"
className="hover:text-primary-500 rounded border p-3" className="hover:text-primary-600 rounded border p-3"
> >
📢 Open a discussion with the community 📢 Open a discussion with the community
</a> </a>
<a <a
href="https://discord.gg/uzg4ZcHbuM" href="https://discord.gg/uzg4ZcHbuM"
className="hover:text-primary-500 rounded border p-3" className="hover:text-primary-600 rounded border p-3"
> >
💬 Chat on Discord 💬 Chat on Discord
</a> </a>
<a <a
href="mailto:feedback@rallly.co" href="mailto:feedback@rallly.co"
className="hover:text-primary-500 rounded border p-3" className="hover:text-primary-600 rounded border p-3"
> >
Send an email Send an email
</a> </a>

View file

@ -155,7 +155,7 @@ const ChangeNameModal = (props: {
{errors.name ? ( {errors.name ? (
<div className="text-sm text-rose-500">{errors.name.message}</div> <div className="text-sm text-rose-500">{errors.name.message}</div>
) : null} ) : null}
<div className="mt-2 text-sm text-slate-400">{t("changeNameInfo")}</div> <div className="mt-2 text-sm text-slate-500">{t("changeNameInfo")}</div>
</fieldset> </fieldset>
<div className="flex gap-2 "> <div className="flex gap-2 ">
<Button disabled={formState.isSubmitting} onClick={props.onDone}> <Button disabled={formState.isSubmitting} onClick={props.onDone}>

View file

@ -129,7 +129,7 @@ const Poll: React.FunctionComponent = () => {
</div> </div>
{poll.closed ? null : ( {poll.closed ? null : (
<button <button
className="hover:text-primary-500 rounded" className="hover:text-primary-600 rounded"
onClick={() => { onClick={() => {
setEditingParticipantId(null); setEditingParticipantId(null);
setShouldShowNewParticipantForm(true); setShouldShowNewParticipantForm(true);

View file

@ -21,7 +21,7 @@ const TimeRange: React.FunctionComponent<{
)} )}
> >
<div>{startTime}</div> <div>{startTime}</div>
<div className="text-slate-400">{endTime}</div> <div className="text-slate-500">{endTime}</div>
</div> </div>
); );
}; };

View file

@ -93,7 +93,7 @@ const PollOptionVoteSummary: React.FunctionComponent<{ optionId: string }> = ({
> >
<div> <div>
{noVotes ? ( {noVotes ? (
<div className="rounded-lg bg-slate-50 p-2 text-center text-slate-400"> <div className="rounded-lg bg-slate-50 p-2 text-center text-slate-500">
{t("noVotes")} {t("noVotes")}
</div> </div>
) : ( ) : (
@ -190,7 +190,7 @@ const PollOption: React.FunctionComponent<PollOptionProps> = ({
return ( return (
<div <div
className={clsx("space-y-4 overflow-hidden p-3", { className={clsx("space-y-4 overflow-hidden p-3", {
"bg-slate-400/5": editable && active, "bg-slate-500/5": editable && active,
})} })}
onTouchStart={() => setActive(editable)} onTouchStart={() => setActive(editable)}
onTouchEnd={() => setActive(false)} onTouchEnd={() => setActive(false)}
@ -218,7 +218,7 @@ const PollOption: React.FunctionComponent<PollOptionProps> = ({
) : null} ) : null}
<ChevronDown <ChevronDown
className={clsx( className={clsx(
"h-5 shrink-0 text-slate-400 transition-transform", "h-5 shrink-0 text-slate-500 transition-transform",
{ {
"-rotate-180": expanded, "-rotate-180": expanded,
}, },

View file

@ -19,7 +19,7 @@ const TimeSlotOption: React.FunctionComponent<TimeSlotOptionProps> = ({
<PollOption {...rest}> <PollOption {...rest}>
<div className="grow"> <div className="grow">
<div className="h-7">{`${startTime}`}</div> <div className="h-7">{`${startTime}`}</div>
<div className="flex grow items-center text-sm text-slate-400"> <div className="flex grow items-center text-sm text-slate-500">
<Clock className="leading- mr-1 inline w-4" /> <Clock className="leading- mr-1 inline w-4" />
{duration} {duration}
</div> </div>

View file

@ -35,7 +35,7 @@ export const ScoreSummary: React.FunctionComponent<PopularityScoreProps> =
className={clsx( className={clsx(
"flex select-none items-center gap-1 px-2 text-sm font-bold tabular-nums", "flex select-none items-center gap-1 px-2 text-sm font-bold tabular-nums",
{ {
"rounded-full bg-green-50 text-green-400": highlight, "rounded-full bg-green-50 text-green-500": highlight,
}, },
{ "text-slate-400": !highlight }, { "text-slate-400": !highlight },
)} )}

View file

@ -20,14 +20,14 @@ const UserAvatarContext = React.createContext<
>(null); >(null);
const colors = [ const colors = [
"bg-violet-400", "bg-violet-500",
"bg-sky-400", "bg-sky-500",
"bg-cyan-400", "bg-cyan-500",
"bg-blue-400", "bg-blue-500",
"bg-indigo-400", "bg-indigo-500",
"bg-purple-400", "bg-purple-500",
"bg-fuchsia-400", "bg-fuchsia-500",
"bg-pink-400", "bg-pink-500",
]; ];
const defaultColor = "bg-slate-400"; const defaultColor = "bg-slate-400";

View file

@ -16,7 +16,7 @@ const VoteIcon: React.FunctionComponent<{
case "yes": case "yes":
return ( return (
<CheckCircle <CheckCircle
className={clsx("text-green-400", className, { className={clsx("text-green-500", className, {
"h-5": size === "md", "h-5": size === "md",
"h-3": size === "sm", "h-3": size === "sm",
})} })}
@ -26,7 +26,7 @@ const VoteIcon: React.FunctionComponent<{
case "ifNeedBe": case "ifNeedBe":
return ( return (
<IfNeedBe <IfNeedBe
className={clsx("text-amber-300", className, { className={clsx("text-amber-400", className, {
"h-5": size === "md", "h-5": size === "md",
"h-3": size === "sm", "h-3": size === "sm",
})} })}
@ -36,7 +36,7 @@ const VoteIcon: React.FunctionComponent<{
case "no": case "no":
return ( return (
<X <X
className={clsx("text-slate-300", className, { className={clsx("text-slate-400", className, {
"h-5": size === "md", "h-5": size === "md",
"h-3": size === "sm", "h-3": size === "sm",
})} })}

View file

@ -48,7 +48,7 @@ export const Profile: React.FunctionComponent = () => {
</Head> </Head>
<div className="flex gap-4 rounded-md border bg-white p-3 shadow-sm"> <div className="flex gap-4 rounded-md border bg-white p-3 shadow-sm">
<div className="border-primary-200/50 bg-primary-50 inline-flex h-12 w-12 items-center justify-center rounded border"> <div className="border-primary-200/50 bg-primary-50 inline-flex h-12 w-12 items-center justify-center rounded border">
<User className="text-primary-500 h-7" /> <User className="text-primary-600 h-7" />
</div> </div>
<div> <div>
<div <div
@ -92,7 +92,7 @@ export const Profile: React.FunctionComponent = () => {
> >
<span className="flex gap-4"> <span className="flex gap-4">
<span> <span>
<Calendar className="text-primary-500 w-10" /> <Calendar className="text-primary-600 w-10" />
</span> </span>
<span> <span>
<span className="flex items-center gap-2"> <span className="flex items-center gap-2">

View file

@ -36,7 +36,7 @@ const Sharing: React.FunctionComponent<SharingProps> = ({
</div> </div>
<button <button
onClick={onHide} onClick={onHide}
className="h-8 items-center justify-center rounded-md px-3 text-slate-400 transition-colors hover:bg-slate-500/10 hover:text-slate-500 active:bg-slate-500/20" className="h-8 items-center justify-center rounded-md px-3 text-slate-500 transition-colors hover:bg-slate-500/10 hover:text-slate-500 active:bg-slate-500/20"
> >
{t("hide")} {t("hide")}
</button> </button>

View file

@ -20,7 +20,7 @@ export const TextInput = React.forwardRef<HTMLInputElement, TextInputProps>(
ref={ref} ref={ref}
type="text" type="text"
className={clsx( className={clsx(
"appearance-none rounded border border-gray-300 text-slate-700 placeholder:text-slate-400", "appearance-none rounded border border-gray-300 text-slate-700 placeholder:text-slate-500",
className, className,
{ {
"px-2 py-1": size === "md", "px-2 py-1": size === "md",

View file

@ -6,23 +6,92 @@ export default function Document() {
<Html> <Html>
<Head> <Head>
<link <link
rel="apple-touch-icon" rel="apple-touch-icon-precomposed"
sizes="180x180" sizes="57x57"
href="/apple-touch-icon.png" href="apple-touch-icon-57x57.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="114x114"
href="apple-touch-icon-114x114.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="72x72"
href="apple-touch-icon-72x72.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="144x144"
href="apple-touch-icon-144x144.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="60x60"
href="apple-touch-icon-60x60.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="120x120"
href="apple-touch-icon-120x120.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="76x76"
href="apple-touch-icon-76x76.png"
/>
<link
rel="apple-touch-icon-precomposed"
sizes="152x152"
href="apple-touch-icon-152x152.png"
/> />
<link <link
rel="icon" rel="icon"
type="image/png" type="image/png"
href="favicon-196x196.png"
sizes="196x196"
/>
<link
rel="icon"
type="image/png"
href="favicon-96x96.png"
sizes="96x96"
/>
<link
rel="icon"
type="image/png"
href="favicon-32x32.png"
sizes="32x32" sizes="32x32"
href="/favicon-32x32.png"
/> />
<link <link
rel="icon" rel="icon"
type="image/png" type="image/png"
href="favicon-16x16.png"
sizes="16x16" sizes="16x16"
href="/favicon-16x16.png"
/> />
<link rel="icon" href="/favicon.svg" type="image/svg+xml" /> <link
rel="icon"
type="image/png"
href="favicon-128.png"
sizes="128x128"
/>
<meta name="application-name" content="Rallly" />
<meta name="msapplication-TileColor" content="#FFFFFF" />
<meta name="msapplication-TileImage" content="mstile-144x144.png" />
<meta name="msapplication-square70x70logo" content="mstile-70x70.png" />
<meta
name="msapplication-square150x150logo"
content="mstile-150x150.png"
/>
<meta
name="msapplication-wide310x150logo"
content="mstile-310x150.png"
/>
<meta
name="msapplication-square310x310logo"
content="mstile-310x310.png"
/>
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="manifest" href="/site.webmanifest" /> <link rel="manifest" href="/site.webmanifest" />
<meta name="theme-color" content="#f9fafb" /> <meta name="theme-color" content="#f9fafb" />
</Head> </Head>

View file

@ -45,7 +45,7 @@ const Redirect = () => {
<div className="flex h-10 items-center justify-center gap-4"> <div className="flex h-10 items-center justify-center gap-4">
{enabled ? ( {enabled ? (
<CheckCircle <CheckCircle
className={clsx("animate-popIn h-10 text-green-400", { className={clsx("animate-popIn h-10 text-green-500", {
"opacity-0": !enabled, "opacity-0": !enabled,
})} })}
/> />

View file

@ -4,7 +4,7 @@
@layer base { @layer base {
html { html {
@apply h-full bg-slate-50 font-sans text-base text-slate-600; @apply h-full bg-gray-50 font-sans text-base text-slate-800;
} }
body, body,
#__next { #__next {
@ -18,7 +18,7 @@
h3, h3,
h4, h4,
h5 { h5 {
@apply mb-4 font-sans font-semibold text-slate-700; @apply mb-4 font-sans font-semibold text-slate-800;
} }
h1 { h1 {
@apply text-2xl; @apply text-2xl;
@ -51,13 +51,13 @@
@layer components { @layer components {
.text-link { .text-link {
@apply rounded font-medium text-primary-500 outline-none hover:text-primary-500 hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-1; @apply text-primary-600 hover:text-primary-600 focus-visible:ring-primary-600 rounded font-medium outline-none hover:underline focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-1;
} }
.formField { .formField {
@apply mb-4; @apply mb-4;
} }
.input { .input {
@apply appearance-none border px-2 py-1 text-slate-700 placeholder:text-slate-400; @apply appearance-none border px-2 py-1 text-slate-800 placeholder:text-slate-500;
} }
input.input { input.input {
@apply h-9; @apply h-9;
@ -69,7 +69,7 @@
@apply focus:ring-rose-500; @apply focus:ring-rose-500;
} }
.checkbox { .checkbox {
@apply h-4 w-4 rounded border-slate-300 text-primary-500 shadow-sm focus:ring-primary-500; @apply text-primary-600 focus:ring-primary-600 h-4 w-4 rounded border-slate-300 shadow-sm;
} }
.btn { .btn {
@apply inline-flex h-9 select-none items-center justify-center whitespace-nowrap border px-3 font-medium shadow-sm; @apply inline-flex h-9 select-none items-center justify-center whitespace-nowrap border px-3 font-medium shadow-sm;
@ -79,17 +79,17 @@
} }
.btn-default { .btn-default {
@apply btn bg-white text-slate-700 hover:bg-gray-50 active:bg-gray-100; @apply btn bg-white text-slate-800 hover:bg-gray-50 active:bg-gray-100;
} }
a.btn-default { a.btn-default {
@apply hover:text-primary-500; @apply hover:text-primary-600;
} }
.btn-danger { .btn-danger {
@apply btn border-rose-600 bg-rose-500 text-white hover:bg-rose-600 focus-visible:ring-rose-500; @apply btn border-rose-600 bg-rose-500 text-white hover:bg-rose-600 focus-visible:ring-rose-500;
} }
.btn-link { .btn-link {
@apply inline-flex items-center text-primary-500 underline; @apply text-primary-600 inline-flex items-center underline;
} }
.btn.btn-disabled { .btn.btn-disabled {
text-shadow: none; text-shadow: none;
@ -97,7 +97,7 @@
} }
.btn-primary { .btn-primary {
text-shadow: rgb(0 0 0 / 20%) 0px 1px 1px; text-shadow: rgb(0 0 0 / 20%) 0px 1px 1px;
@apply btn border-primary-600 bg-primary-500 text-white hover:bg-opacity-90 active:bg-primary-600; @apply btn border-primary-600 bg-primary-600 active:bg-primary-600 text-white hover:bg-opacity-90;
} }
a.btn-primary { a.btn-primary {
@ -139,13 +139,13 @@
@layer components { @layer components {
.heading { .heading {
@apply text-xl text-primary-500; @apply text-primary-600 text-xl;
} }
.subheading { .subheading {
@apply mb-16 text-4xl font-bold text-slate-800; @apply mb-16 text-4xl font-bold text-slate-800;
} }
.heading-sm { .heading-sm {
@apply text-xl font-bold text-slate-700; @apply text-xl font-bold text-slate-800;
} }
.text { .text {
@apply text-lg leading-relaxed text-slate-500; @apply text-lg leading-relaxed text-slate-500;
@ -201,7 +201,7 @@
} }
.rbc-header a { .rbc-header a {
@apply block h-full w-full p-1 no-underline hover:text-gray-700; @apply block h-full w-full p-1 no-underline hover:text-slate-800;
} }
.rbc-day-slot .rbc-events-container { .rbc-day-slot .rbc-events-container {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 613 KiB

BIN
docs/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

BIN
docs/images/poll-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

View file

@ -40,7 +40,7 @@ export const Button = (props: ButtonProps) => {
<UnstyledButton <UnstyledButton
{...props} {...props}
className={clsx( className={clsx(
"bg-primary-500 rounded px-3 py-2 font-sans text-white", "bg-primary-600 rounded px-3 py-2 font-sans text-white",
props.className, props.className,
)} )}
/> />
@ -51,7 +51,7 @@ export const Link = (props: LinkProps) => {
return ( return (
<UnstyledLink <UnstyledLink
{...props} {...props}
className={clsx("text-primary-500", props.className)} className={clsx("text-primary-600", props.className)}
/> />
); );
}; };