From 1154d6737adbacb2f410a944e279b24bf20b3dd4 Mon Sep 17 00:00:00 2001 From: mwgiannini <89871491+mwgiannini@users.noreply.github.com> Date: Fri, 17 Feb 2023 22:51:32 +0000 Subject: [PATCH] Create ManageServerCard component --- .../components/ManageServerCard.stories.tsx | 28 +++++++++ .../ui/src/components/ManageServerCard.tsx | 58 +++++++++++++++++++ packages/ui/src/components/index.ts | 1 + 3 files changed, 87 insertions(+) create mode 100644 packages/ui/src/components/ManageServerCard.stories.tsx create mode 100644 packages/ui/src/components/ManageServerCard.tsx diff --git a/packages/ui/src/components/ManageServerCard.stories.tsx b/packages/ui/src/components/ManageServerCard.stories.tsx new file mode 100644 index 000000000..bd2245ede --- /dev/null +++ b/packages/ui/src/components/ManageServerCard.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryFn } from "@storybook/react"; +import { mockServer } from "~ui/test/props"; +import { ManageServerCard, ManageServerCardProps } from "./ManageServerCard"; +export default { + component: ManageServerCard, +} as Meta; + +//👇 We create a “template” of how args map to rendering +const Template: StoryFn = (args: ManageServerCardProps) => ( + +); + +//👇 Each story then reuses that template +export const Primary = Template.bind({}); +Primary.args = { + server: mockServer(), + role: "Test Role", +}; + +export const WithImage = Template.bind({}); +WithImage.args = { + server: mockServer({ + name: "AnswerOverflow", + id: "952724385238761475", + icon: "4e610bdea5aacf259013ed8cada0bc1d", + }), + role: "Test Role", +}; diff --git a/packages/ui/src/components/ManageServerCard.tsx b/packages/ui/src/components/ManageServerCard.tsx new file mode 100644 index 000000000..137981c4f --- /dev/null +++ b/packages/ui/src/components/ManageServerCard.tsx @@ -0,0 +1,58 @@ +import type { ServerPublic } from "@answeroverflow/api"; +import Link from "next/link"; +import { Button } from "./primitives/Button"; +import { ServerIcon } from "./ServerIcon"; +import Image from "next/image"; + +export type ManageServerCardProps = { + server: ServerPublic; + role: string; +}; + +export function ManageServerCard({ server, role }: ManageServerCardProps) { + const ServerNameAndRole = () => ( +
+ {server.name} + {role} +
+ ); + + const ServerIconWithBlurredBackground = () => { + return ( +
+ {server.icon && ( + {server.name} + )} +
+
+ +
+
+ ); + }; + + return ( +
+
+ +
+
+ +
+
+
+ + + +
+
+
+ ); +} diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index d110561c9..205ad6091 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -11,3 +11,4 @@ export * from "./ServerInviteDriver"; export * from "./Pricing"; export * from "./AOHead"; export * from "./analytics/Chart"; +export * from "./ManageServerCard";