feat(generators): core-ui-component template files (component + stories + test + barrel)
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
import type { Meta, StoryObj } from "@storybook/react";
|
||||||
|
import { {{pascalCase name}} } from "./{{kebabCase name}}";
|
||||||
|
|
||||||
|
const meta = {
|
||||||
|
title: "{{tierTitle}}/{{pascalCase name}}",
|
||||||
|
component: {{pascalCase name}},
|
||||||
|
tags: ["autodocs"],
|
||||||
|
} satisfies Meta<typeof {{pascalCase name}}>;
|
||||||
|
export default meta;
|
||||||
|
|
||||||
|
type Story = StoryObj<typeof meta>;
|
||||||
|
|
||||||
|
export const Default: Story = { args: {} };
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { describe, it, expect } from "vitest";
|
||||||
|
import { createRef } from "react";
|
||||||
|
import { renderWithProviders } from "@repo/core-testing/react";
|
||||||
|
import { screen } from "@testing-library/react";
|
||||||
|
import { {{pascalCase name}} } from "./{{kebabCase name}}";
|
||||||
|
|
||||||
|
describe("{{pascalCase name}}", () => {
|
||||||
|
it("renders without crashing", () => {
|
||||||
|
renderWithProviders(<{{pascalCase name}} data-testid="root" />);
|
||||||
|
expect(screen.getByTestId("root")).toBeInTheDocument();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("applies a passed className alongside its own", () => {
|
||||||
|
renderWithProviders(<{{pascalCase name}} data-testid="root" className="custom" />);
|
||||||
|
expect(screen.getByTestId("root")).toHaveClass("custom");
|
||||||
|
});
|
||||||
|
|
||||||
|
it("forwards ref to the underlying element", () => {
|
||||||
|
const ref = createRef<HTMLDivElement>();
|
||||||
|
renderWithProviders(<{{pascalCase name}} ref={ref} />);
|
||||||
|
expect(ref.current).toBeInstanceOf(HTMLDivElement);
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
import { forwardRef, type HTMLAttributes } from "react";
|
||||||
|
import { cn } from "../../lib/utils";
|
||||||
|
|
||||||
|
export interface {{pascalCase name}}Props extends HTMLAttributes<HTMLDivElement> {}
|
||||||
|
|
||||||
|
export const {{pascalCase name}} = forwardRef<HTMLDivElement, {{pascalCase name}}Props>(
|
||||||
|
({ className, ...props }, ref) => (
|
||||||
|
<div ref={ref} className={cn("", className)} {...props} />
|
||||||
|
),
|
||||||
|
);
|
||||||
|
{{pascalCase name}}.displayName = "{{pascalCase name}}";
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
export { {{pascalCase name}}, type {{pascalCase name}}Props } from "./{{kebabCase name}}";
|
||||||
Reference in New Issue
Block a user