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