diff --git a/__snapshots__/quote--quote-sample-chromium.png b/__snapshots__/quote--quote-sample-chromium.png new file mode 100644 index 00000000..3e0c189d Binary files /dev/null and b/__snapshots__/quote--quote-sample-chromium.png differ diff --git a/__snapshots__/quote--quote-sample-firefox.png b/__snapshots__/quote--quote-sample-firefox.png new file mode 100644 index 00000000..1aeb701a Binary files /dev/null and b/__snapshots__/quote--quote-sample-firefox.png differ diff --git a/__snapshots__/quote--quote-sample-webkit.png b/__snapshots__/quote--quote-sample-webkit.png new file mode 100644 index 00000000..1464bd68 Binary files /dev/null and b/__snapshots__/quote--quote-sample-webkit.png differ diff --git a/src/components/card/Card.style.scss b/src/components/card/Card.style.scss index 54ecde64..d785cba1 100644 --- a/src/components/card/Card.style.scss +++ b/src/components/card/Card.style.scss @@ -2,10 +2,10 @@ .card { padding: .5rem; + position: relative; overflow: hidden; - > * { - + * { &.card__section > img { border-radius: .5rem; diff --git a/src/components/quote/Quote.stories.tsx b/src/components/quote/Quote.stories.tsx new file mode 100644 index 00000000..59f68697 --- /dev/null +++ b/src/components/quote/Quote.stories.tsx @@ -0,0 +1,61 @@ +import {Meta, StoryObj} from "@storybook/react"; +import {Quote} from "./Quote"; +import React from "react"; +import {Colors} from "../../utils/types"; + +const meta: Meta = { + title: "Quote", + component: Quote, + argTypes: { + color: { + options: Colors, + control: {type: "radio"} + }, + variant: { + options: ['none', 'normal', 'filled', 'outlined'], + control: {type: 'radio'}, + }, + gradient: { + type: "boolean" + }, + gradientPosition: { + options: ["top-left", "top-right", "bottom-right", "bottom-left"], + control: {type: 'radio'}, + }, + outline: { + type: "boolean" + }, + inlineBorder: { + type: "boolean" + } + } +} + +export default meta; + +type QuoteStory = StoryObj; + + +export const QuoteSample: QuoteStory = { + render: (args) => { + return + My favorite UX feedback from customers is: + "How is the app so fast?" + Because we’ve built on Next.js and Vercel since day one, our pages load in an instant, + which is important when it comes to mission-critical software. + + }, + args: { + variant: "outlined", + color: "secondary", + outline: false, + gradient: true, + gradientPosition: "bottom-left", + inlineBorder: true + } +} + + diff --git a/src/components/quote/Quote.style.scss b/src/components/quote/Quote.style.scss new file mode 100644 index 00000000..bc8013c2 --- /dev/null +++ b/src/components/quote/Quote.style.scss @@ -0,0 +1,17 @@ +.quote { + + position: relative; + + &__text { + &:before, &:after { + position: relative; + content: "\”"; + } + } + + &__img { + width: 20%; + max-width: 100px; + filter: brightness(0) invert(1); + } +} \ No newline at end of file diff --git a/src/components/quote/Quote.tsx b/src/components/quote/Quote.tsx new file mode 100644 index 00000000..d576b26a --- /dev/null +++ b/src/components/quote/Quote.tsx @@ -0,0 +1,34 @@ +import React from "react"; +import {TablerIconsProps} from "@tabler/icons-react"; +import Card, {CardType} from "../card/Card"; +import "./Quote.style.scss" +import Text from "../FontSizes/Text"; + +export interface QuoteType extends Omit { + children: string + logo: string + name: string + position: string + // defaults to true + inlineBorder?: boolean +} + +export const Quote: React.FC = (props) => { + const {logo, name, position, inlineBorder = true, children, ...args} = props; + return +
+ +
+ {children} +
+
+ + {"logo + + + {name}
+ {position} +
+
+
+} \ No newline at end of file