diff --git a/src/components/ExpressionCard/ExpressionCard.stories.tsx b/src/components/ExpressionCard/ExpressionCard.stories.tsx new file mode 100644 index 0000000..a028758 --- /dev/null +++ b/src/components/ExpressionCard/ExpressionCard.stories.tsx @@ -0,0 +1,30 @@ +import '../../styles/globals.css' +import '../../styles/components.css' + +import React from 'react'; +import { ComponentStory, ComponentMeta } from '@storybook/react'; + +import { ExpressionCard } from './ExpressionCard'; + +export default { + title: 'Components/Expression Card', + component: ExpressionCard, +} as ComponentMeta; + +const Template: ComponentStory = (args) => ; + +export const Hidden = Template.bind({}); +Hidden.args = { + categories: ["category_A", "category_B"], + description: "Description of this noun", + prompt: "The noun", + show_description: false +} + +export const Revealed = Template.bind({}); +Revealed.args = { + categories: ["category_A", "category_B"], + description: "Description of this noun", + prompt: "The noun", + show_description: true +} diff --git a/src/components/ExpressionCard/ExpressionCard.tsx b/src/components/ExpressionCard/ExpressionCard.tsx new file mode 100644 index 0000000..26b459a --- /dev/null +++ b/src/components/ExpressionCard/ExpressionCard.tsx @@ -0,0 +1,18 @@ +import { ReactNode } from "react"; + +export interface ExpressionCardProps { + prompt: string; + categories: string[]; + description: ReactNode; + show_description?: boolean; +} + +export function ExpressionCard({ prompt, categories, description, show_description }: ExpressionCardProps) { + return ( +
+

{prompt}

+

{categories.join(", ")}

+ {show_description &&
{description}
} +
+ ); +} \ No newline at end of file diff --git a/src/components/ExpressionCard/index.ts b/src/components/ExpressionCard/index.ts new file mode 100644 index 0000000..ad6d194 --- /dev/null +++ b/src/components/ExpressionCard/index.ts @@ -0,0 +1 @@ +export * from './ExpressionCard'; diff --git a/src/components/index.ts b/src/components/index.ts new file mode 100644 index 0000000..1a2b2c6 --- /dev/null +++ b/src/components/index.ts @@ -0,0 +1 @@ +export * from './ExpressionCard' \ No newline at end of file diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 3f5c9d5..f5c3376 100755 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -1,4 +1,5 @@ import '../styles/globals.css' +import '../styles/components.css' import type { AppProps } from 'next/app' function MyApp({ Component, pageProps }: AppProps) { diff --git a/src/styles/components.css b/src/styles/components.css new file mode 100644 index 0000000..4eb4bb1 --- /dev/null +++ b/src/styles/components.css @@ -0,0 +1,51 @@ +.expression-card { + display: flex; + flex-direction: column; + + background-color: lavender; + border: 1px solid darkslategray; + box-shadow: 0px 5px 5px -5px darkslategray; + padding: 16px; + word-wrap: break-word; + +} + +.expression-card-prompt { + color: darkslategray; + font-size: 18px; + font-weight: bold; + margin: 10px 0px; +} + +.expression-card-categories { + color: slategray; + font-family: monospace; + font-size: 12px; + margin: 10px 0px; +} + +.expression-card-details { + color: darkslategray; + font-size: 15px; + margin: 20px 0px 10px; + overflow-y: auto; +} + +.expression-card-details::-webkit-scrollbar-track +{ + background-color: lightslategray; + border-radius: 4px; +} + +.expression-card-details::-webkit-scrollbar +{ + border-radius: 4px; + width: 8px; + padding-left: 14px; +} + +.expression-card-details::-webkit-scrollbar-thumb +{ + border-radius: 4px; + background-color: darkslategray; +}