From 350529f1e2e6b5178497e7b7e649e01b0c1988b6 Mon Sep 17 00:00:00 2001 From: siriwatknp Date: Mon, 16 Sep 2024 13:35:21 +0700 Subject: [PATCH] block: add select-shadcn --- blocks/select-shadcn/SelectShadcn.stories.tsx | 28 ++++ blocks/select-shadcn/SelectShadcn.tsx | 128 ++++++++++++++++++ blocks/select-shadcn/index.ts | 1 + blocks/select-shadcn/usage.mdx | 14 ++ 4 files changed, 171 insertions(+) create mode 100644 blocks/select-shadcn/SelectShadcn.stories.tsx create mode 100644 blocks/select-shadcn/SelectShadcn.tsx create mode 100644 blocks/select-shadcn/index.ts create mode 100644 blocks/select-shadcn/usage.mdx diff --git a/blocks/select-shadcn/SelectShadcn.stories.tsx b/blocks/select-shadcn/SelectShadcn.stories.tsx new file mode 100644 index 00000000..f6cd6734 --- /dev/null +++ b/blocks/select-shadcn/SelectShadcn.stories.tsx @@ -0,0 +1,28 @@ +import React from "react"; +import type { Meta, StoryObj } from "@storybook/react"; +import googleFont from "../../.storybook/decorators/googleFont"; +import storyDialog from "../../.storybook/decorators/storyDialog"; +import { SelectShadcn } from "./index"; +import Usage from "./usage.mdx"; + +const meta = { + title: "Select/Shadcn", + component: SelectShadcn, + parameters: { + layout: "centered", + githubUsername: "siriwatknp", // (optional) Your github username. If provided, your avatar will be displayed in the story toolbar + }, + decorators: [storyDialog(Usage), googleFont([])], +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Shadcn: Story = { + render: () => ( +
+ + +
+ ), +}; diff --git a/blocks/select-shadcn/SelectShadcn.tsx b/blocks/select-shadcn/SelectShadcn.tsx new file mode 100644 index 00000000..f47a47fe --- /dev/null +++ b/blocks/select-shadcn/SelectShadcn.tsx @@ -0,0 +1,128 @@ +import React from "react"; +import MenuItem from "@mui/material/MenuItem"; +import TextField, { TextFieldProps } from "@mui/material/TextField"; + +export function SelectShadcn(props: TextFieldProps) { + return ( + ({ + "--radius": "0.5rem", + "--border": "var(--mui-palette-divider)", + "& .MuiPaper-root": { + borderRadius: "calc(var(--radius) - 2px)", + boxShadow: + "0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)", + my: 1, + border: "1px solid", + borderColor: "var(--border)", + }, + "& .MuiList-root": { + p: 0.5, + }, + "& .MuiMenuItem-root": { + borderRadius: "calc(var(--radius) - 4px)", + py: 0.875, + pl: 4, + pr: 1, + "&.Mui-focusVisible": { + background: "var(--mui-palette-action-hover)", + "&.Mui-selected": { + background: "var(--mui-palette-action-hover)", + }, + }, + "&.Mui-selected": { + background: "transparent", + "&:hover": { + background: "var(--mui-palette-action-hover)", + }, + "&::before": { + content: '""', + display: "block", + position: "absolute", + left: "0.5rem", + width: 16, + height: 16, + background: `url('data:image/svg+xml,')`, + ...theme.applyStyles("dark", { + background: `url('data:image/svg+xml,')`, + }), + }, + }, + }, + }), + }, + }, + }} + {...props} + > + + Select a fruit + + Apple + Banana + Blueberry + Grapes + + ); +} diff --git a/blocks/select-shadcn/index.ts b/blocks/select-shadcn/index.ts new file mode 100644 index 00000000..47193034 --- /dev/null +++ b/blocks/select-shadcn/index.ts @@ -0,0 +1 @@ +export * from "./SelectShadcn"; diff --git a/blocks/select-shadcn/usage.mdx b/blocks/select-shadcn/usage.mdx new file mode 100644 index 00000000..6633be05 --- /dev/null +++ b/blocks/select-shadcn/usage.mdx @@ -0,0 +1,14 @@ +import { Meta, Source } from "@storybook/blocks"; +import raw from "./SelectShadcn?raw"; + + + +## CLI + +```sh +npx mui-treasury@latest clone select-shadcn +``` + +## SelectShadcn + +