diff --git a/apps/landing/src/components/home/color-hash.ts b/apps/landing/src/components/home/color-hash.ts
deleted file mode 100644
index 93721495bb0..00000000000
--- a/apps/landing/src/components/home/color-hash.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-import ColorHash from "color-hash";
-
-export const colorHash = new ColorHash({
- hue: [{ min: 185, max: 320 }],
- lightness: [0.65],
- saturation: 0.8,
-});
-
-type RGBColor = [number, number, number];
-
-const avatarBackgroundColors: RGBColor[] = [
- [255, 135, 160],
- [255, 179, 71],
- [255, 95, 95],
- [240, 128, 128],
- [255, 160, 122],
- [255, 192, 203],
- [230, 230, 250],
- [173, 216, 230],
- [176, 224, 230],
- [106, 90, 205],
- [123, 104, 238],
- [147, 112, 219],
- [138, 43, 226],
- [148, 0, 211],
- [153, 50, 204],
- [139, 0, 139],
- [75, 0, 130],
- [72, 61, 139],
- [219, 39, 119],
- [236, 72, 153],
-];
-
-function isBright(color: RGBColor): boolean {
- const [r, g, b] = color;
- const L = (0.2126 * r) / 255 + (0.7152 * g) / 255 + (0.0722 * b) / 255;
- return L > 0.6 ? true : false;
-}
-
-export const getRandomAvatarColor = (str: string) => {
- const strSum = str.split("").reduce((acc, val) => acc + val.charCodeAt(0), 0);
- const randomIndex = strSum % avatarBackgroundColors.length;
- const color = avatarBackgroundColors[randomIndex] as RGBColor;
- const [r, g, b] = color;
- return { color: `rgb(${r}, ${g}, ${b})`, requiresDarkText: isBright(color) };
-};
-
-export const generateGradient = (s: string): string => {
- const s1 = s.substring(0, s.length / 2);
- const s2 = s.substring(s.length / 2);
- const c1 = colorHash.hex(s1);
- const c2 = colorHash.hex(s2);
-
- return `linear-gradient(45deg, ${c1}, ${c2})`;
-};
diff --git a/apps/web/src/components/badge.tsx b/apps/web/src/components/badge.tsx
deleted file mode 100644
index 29e455163d9..00000000000
--- a/apps/web/src/components/badge.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-import clsx from "clsx";
-import React from "react";
-
-const Badge: React.FunctionComponent<{
- children?: React.ReactNode;
- color?: "gray" | "amber" | "green" | "red" | "blue";
- className?: string;
-}> = ({ children, color = "gray", className }) => {
- return (
-
- {children}
-
- );
-};
-
-export default Badge;
diff --git a/apps/web/src/components/button.tsx b/apps/web/src/components/button.tsx
deleted file mode 100644
index a0b2362f22e..00000000000
--- a/apps/web/src/components/button.tsx
+++ /dev/null
@@ -1,52 +0,0 @@
-import { Button as NewButton } from "@rallly/ui/button";
-import * as React from "react";
-
-export interface ButtonProps
- extends Omit<
- React.DetailedHTMLProps<
- React.ButtonHTMLAttributes,
- HTMLButtonElement
- >,
- "type" | "ref"
- > {
- children?: React.ReactNode;
- className?: string;
- disabled?: boolean;
- loading?: boolean;
- icon?: React.ReactElement;
- htmlType?: React.ButtonHTMLAttributes["type"];
- type?: "default" | "primary" | "danger";
- form?: string;
- title?: string;
- onClick?: React.MouseEventHandler;
-}
-
-export const LegacyButton = React.forwardRef(
- function Button(
- {
- children,
- loading,
- type = "default",
- htmlType = "button",
- icon,
- disabled,
- ...passThroughProps
- },
- ref,
- ) {
- return (
-
- {icon ? React.cloneElement(icon, { className: "size-5 mr-1.5" }) : null}
- {children}
-
- );
- },
-);
diff --git a/apps/web/src/components/card.tsx b/apps/web/src/components/card.tsx
deleted file mode 100644
index 54fa930572b..00000000000
--- a/apps/web/src/components/card.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-import { cn } from "@rallly/ui";
-
-export const Card = (
- props: React.PropsWithChildren<{
- className?: string;
- fullWidthOnMobile?: boolean;
- }>,
-) => {
- return (
-
- {props.children}
-
- );
-};
diff --git a/apps/web/src/components/data-table.tsx b/apps/web/src/components/data-table.tsx
deleted file mode 100644
index 328e1eed931..00000000000
--- a/apps/web/src/components/data-table.tsx
+++ /dev/null
@@ -1,79 +0,0 @@
-"use client";
-
-import {
- Table,
- TableBody,
- TableCell,
- TableHead,
- TableHeader,
- TableRow,
-} from "@rallly/ui/table";
-import {
- ColumnDef,
- flexRender,
- getCoreRowModel,
- useReactTable,
-} from "@tanstack/react-table";
-
-interface DataTableProps {
- columns: ColumnDef[];
- data: TData[];
-}
-
-export function DataTable({
- columns,
- data,
-}: DataTableProps) {
- const table = useReactTable({
- data,
- columns,
- getCoreRowModel: getCoreRowModel(),
- });
-
- return (
-
-
-
- {table.getHeaderGroups().map((headerGroup) => (
-
- {headerGroup.headers.map((header) => {
- return (
-
- {header.isPlaceholder
- ? null
- : flexRender(
- header.column.columnDef.header,
- header.getContext(),
- )}
-
- );
- })}
-
- ))}
-
-
- {table.getRowModel().rows?.length ? (
- table.getRowModel().rows.map((row) => (
-
- {row.getVisibleCells().map((cell) => (
-
- {flexRender(cell.column.columnDef.cell, cell.getContext())}
-
- ))}
-
- ))
- ) : (
-
-
- No results.
-
-
- )}
-
-
-
- );
-}
diff --git a/apps/web/src/components/menu-styles.ts b/apps/web/src/components/menu-styles.ts
deleted file mode 100644
index 3aa8baccee9..00000000000
--- a/apps/web/src/components/menu-styles.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import clsx from "clsx";
-
-export const styleMenuItem = ({
- active,
- selected,
-}: {
- active: boolean;
- selected: boolean;
-}) =>
- clsx("menu-item text-sm", {
- "font-medium": selected,
- "bg-blue-50": active,
- });
diff --git a/apps/web/src/components/no-ssr.tsx b/apps/web/src/components/no-ssr.tsx
deleted file mode 100644
index 7939e473836..00000000000
--- a/apps/web/src/components/no-ssr.tsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import dynamic from "next/dynamic";
-import React from "react";
-
-const NoSsr = (props: { children?: React.ReactNode }) => (
- {props.children}
-);
-
-export default dynamic(() => Promise.resolve(NoSsr), {
- ssr: false,
-});
diff --git a/apps/web/src/components/pay-wall.tsx b/apps/web/src/components/pay-wall.tsx
deleted file mode 100644
index 43f13afb72a..00000000000
--- a/apps/web/src/components/pay-wall.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import { Badge } from "@rallly/ui/badge";
-import { Button } from "@rallly/ui/button";
-import { m } from "framer-motion";
-import Link from "next/link";
-import { useParams } from "next/navigation";
-import React from "react";
-
-import { Trans } from "@/components/trans";
-import { usePlan } from "@/contexts/plan";
-
-const Teaser = () => {
- const params = useParams();
-
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-};
-
-export const PayWall = ({ children }: React.PropsWithChildren) => {
- const isPaid = usePlan() === "paid";
-
- if (isPaid) {
- return <>{children}>;
- }
- return (
-
- );
-};
-
-export const PayWallTeaser = ({ children }: React.PropsWithChildren) => {
- return {children}
;
-};
diff --git a/apps/web/src/contexts/current-event.ts b/apps/web/src/contexts/current-event.ts
deleted file mode 100644
index 720556443fb..00000000000
--- a/apps/web/src/contexts/current-event.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import React from "react";
-import { createStateContext } from "react-use";
-
-import { trpc } from "@/utils/trpc/client";
-
-export const [usePollId, PollIdProvider] = createStateContext("");
-
-const useCurrentEventId = () => {
- const [pollId] = usePollId();
- return pollId;
-};
-
-export const useCurrentPollResponses = () => {
- const pollId = useCurrentEventId();
- return trpc.polls.participants.list.useQuery({ pollId });
-};
-
-export const useCurrentEvent = () => {
- const pollId = useCurrentEventId();
- return trpc.polls.get.useQuery({ urlId: pollId });
-};
-
-export type OptionScore = {
- yes: string[];
- ifNeedBe: string[];
- no: string[];
-};
-
-export const useCreatePollLink = () => {
- const pollId = useCurrentEventId();
- const basePath = `/poll/${pollId}`;
- return React.useCallback(
- (path?: string) => (path ? `${basePath}/${path}` : basePath),
- [basePath],
- );
-};
-
-export const useScore = (optionId: string) => {
- const { data: participants = [] } = useCurrentPollResponses();
- return participants.reduce(
- (acc, participant) => {
- for (const vote of participant.votes) {
- if (vote.optionId === optionId) {
- acc[vote.type]++;
- }
- }
- return acc;
- },
- {
- yes: 0,
- ifNeedBe: 0,
- no: 0,
- },
- );
-};
-
-// export const useDateFormatter = () => {
-// const { dayjs } = useDayjs();
-// const { preferredTimeZone } = useUserPreferences();
-// const { data: event } = useCurrentEvent();
-
-// return React.useCallback(
-// (date: string | number | Date, format: string) => {
-// let d = dayjs(date).utc();
-// if (event?.timeZone) {
-// d = d.tz(event.timeZone, true).tz(preferredTimeZone);
-// }
-// return d.format(format);
-// },
-// [dayjs, event?.timeZone, preferredTimeZone],
-// );
-// };
diff --git a/packages/ui/src/helpers/input-attributes.ts b/packages/ui/src/helpers/input-attributes.ts
deleted file mode 100644
index 8a3aa2c81ec..00000000000
--- a/packages/ui/src/helpers/input-attributes.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attributes
-
-type InputAttributes =
- | "accept"
- | "alt"
- | "autocapitalize"
- | "autocomplete"
- | "capture"
- | "checked"
- | "defaultChecked"
- | "defaultValue"
- | "disabled"
- | "form"
- | "formaction"
- | "formenctype"
- | "formmethod"
- | "formnovalidate"
- | "formtarget"
- | "height"
- | "list"
- | "max"
- | "maxlength"
- | "min"
- | "minlength"
- | "multiple"
- | "name"
- | "pattern"
- | "placeholder"
- | "popovertarget"
- | "popovertargetaction"
- | "readonly"
- | "required"
- | "size"
- | "src"
- | "step"
- | "type"
- | "value"
- | "width";
-
-// Includes all text-like inputs, e.g. text, email, password, number, date, etc.
-type InputTextualAttributes =
- | "autoCapitalize"
- | "autoComplete"
- | "defaultValue"
- | "disabled"
- | "form"
- | "list"
- | "maxLength"
- | "minLength"
- | "min"
- | "multiple"
- | "max"
- | "name"
- | "pattern"
- | "placeholder"
- | "readOnly"
- | "required"
- | "size"
- | "step"
- | "type"
- | "value";
-
-type InputRadioAttributes =
- | "checked"
- | "defaultChecked"
- | "defaultValue"
- | "disabled"
- | "form"
- | "name"
- | "required"
- | "value";
-
-type NotInputRadioAttributes = Exclude;
-type NotInputTextualAttributes = Exclude<
- InputAttributes,
- InputTextualAttributes
->;
-
-export type {
- InputAttributes,
- InputRadioAttributes,
- InputTextualAttributes,
- NotInputRadioAttributes,
- NotInputTextualAttributes,
-};
diff --git a/packages/ui/src/types.ts b/packages/ui/src/types.ts
deleted file mode 100644
index e69de29bb2d..00000000000