new features
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
# Generate Component (gc)
|
||||
|
||||
Generate an FSD component using the project's generator script.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/gc <layer> <ComponentName>
|
||||
```
|
||||
|
||||
**Arguments:**
|
||||
- `$ARGUMENTS` — expects `<layer> <ComponentName>`, e.g. `shared Button`, `entity ProjectCard`, `feature CreateProjectModal`
|
||||
|
||||
## Layers
|
||||
|
||||
| Alias | Path |
|
||||
|-------|------|
|
||||
| `shared` | `src/shared/ui/` |
|
||||
| `entity` / `entities` | `src/entities/` |
|
||||
| `feature` / `features` | `src/features/` |
|
||||
| `widget` / `widgets` | `src/widgets/` |
|
||||
| `page` / `pages` | `src/pages/` |
|
||||
|
||||
## Instructions
|
||||
|
||||
1. Parse `$ARGUMENTS` to extract `<layer>` and `<ComponentName>`. If arguments are missing or unclear, ask the user.
|
||||
|
||||
2. Run the generator:
|
||||
```bash
|
||||
bun run gc <layer> <ComponentName>
|
||||
```
|
||||
|
||||
3. This creates 4 files:
|
||||
- `index.ts` — re-exports the component
|
||||
- `<ComponentName>.tsx` — component implementation with `FunctionComponent`, `JSX.Element`, SCSS module import, `data-testid`
|
||||
- `<ComponentName>.d.ts` — props interface `I<ComponentName>Props` with `className?: string`
|
||||
- `<ComponentName>.module.scss` — empty `.root {}` class
|
||||
|
||||
4. After generation, report the created files and the full path.
|
||||
|
||||
5. If the user provides additional context about what the component should do or look like, modify the generated files accordingly:
|
||||
- Add props to the `.d.ts` file
|
||||
- Implement the component logic in `.tsx`
|
||||
- Add styles to `.module.scss`
|
||||
- Use existing project patterns: `classnames` as `cs`, typography/mixin includes from auto-injected SCSS partials, Radix UI primitives or Themes where appropriate, `lucide-react` icons
|
||||
|
||||
## Project Conventions
|
||||
|
||||
- Props interface: `I<ComponentName>Props` in a `.d.ts` file
|
||||
- Import types with `import type { ... }`
|
||||
- Import order: types → react/libs → path aliases (`@shared/`, `@entities/`, etc.) → local
|
||||
- Use `cs()` from `classnames` for combining classes
|
||||
- Root element gets `className={styles.root}` and `data-testid="<ComponentName>"`
|
||||
- SCSS auto-injected namespaces: `variables`, `breakpoints`, `typography`, `mixins`
|
||||
- Use `"use client"` directive only when component uses hooks or browser APIs
|
||||
Reference in New Issue
Block a user