Buttons
Last updated
import React from "react";
import { ShopstoryButton } from "@shopstory/core/types";
import css from "./Button.module.css";
export type ButtonProps = {
variant: "dark" | "light" | "dark-outline" | "light-outline"
}
export const Button : ShopstoryButton<ButtonProps> = (props) => {
const { as, variant, ...restProps } = props;
let extraClass = "";
if (variant === "light") {
extraClass = css["Button--light"];
} else if (variant === "dark-outline") {
extraClass = css["Button--outline"];
} else if (variant === "light-outline") {
extraClass = css["Button--light-outline"]
}
return React.createElement(as ?? "div", { ...restProps, className: `${css.Button} ${extraClass}` }, props.label)
}export const shopstoryConfig: Config = {
// ...
buttons: [
{
id: "Button",
label: "Demo Button",
schema: [
{
prop: "variant",
label: "Variant",
type: "select",
options: [
"dark", "light", "dark-outline", "light-outline"
]
}
]
}
],
}import { ShopstoryProvider } from "@shopstory/core/react";
import { CustomComponent } from "../components/CustomComponent/CustomComponent";
import {Button} from "../components/Button/Button";
export const DemoShopstoryProvider : React.FC = ({ children }) => {
return <ShopstoryProvider
components={{
CustomComponent
}}
buttons={{
Button
}}
>
{ children }
</ShopstoryProvider>
}