Skip to main content

v9-component

Scaffold a new v9 component with all required files following Fluent UI patterns (hook, styles, render, types, tests, stories, conformance)

Informations de source

Dépôt
microsoft/fluentui
Dernière activité de la source
20 avril 2026 à 14:10
Langue détectée de SKILL.md
anglais
Étoiles
20 324
Forks
2 947

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
v9-component
description
Scaffold a new v9 component with all required files following Fluent UI patterns (hook, styles, render, types, tests, stories, conformance)
disable-model-invocation
true
argument-hint
<ComponentName>
allowed-tools
Read Write Bash Glob Grep
# Scaffold a V9 Component Create a new v9 component named **$ARGUMENTS** using the repo's Nx generators. ## Steps ### Adding a component to an existing package Use the `react-component` generator: ```bash yarn nx g @fluentui/workspace-plugin:react-component --name $ARGUMENTS --project <project-name> ``` Where `<project-name>` is the Nx project (e.g., `react-button`). This generates all required files: component, types, hook, styles, render, index barrel, and conformance test. ### Creating a new package + component Use the `react-library` generator first, then add the component: ```bash # Create the package (will prompt for owner team) yarn create-package # Or non-interactively: yarn nx g @fluentui/workspace-plugin:react-library --name <package-name> --owner "<team>" # Then add the component inside it: yarn nx g @fluentui/workspace-plugin:react-component --name $ARGUMENTS --project <package-name> ``` ### After scaffolding 1. **Review generated files** against [docs/architecture/component-patterns.md](../../../docs/architecture/component-patterns.md) and fill in component-specific logic. 2. **Add styles** in `use${ARGUMENTS}Styles.styles.ts` using design tokens: ```tsx import { makeStyles } from '@griffel/react'; import { tokens } from '@fluentui/react-theme'; ``` 3. **Create a default story** at the appropriate stories package location if not generated. 4. **Update API docs** after adding exports: ```bash yarn nx run <project>:generate-api ``` ## Critical Rules - Always use `ForwardRefComponent` with `React.forwardRef` — never `React.FC` - Always use design tokens from `@fluentui/react-theme` — never hardcoded colors/spacing/typography - Always preserve user `className` as the LAST argument in `mergeClasses()` - Use `_unstable` suffix on exported hooks: `use$ARGUMENTS_unstable`, `use${ARGUMENTS}Styles_unstable`, `render${ARGUMENTS}_unstable` - Guard any `window`/`document`/`navigator` access with `canUseDOM()` from `@fluentui/react-utilities` - Do not add dependencies on other Tier 3 component packages (see [docs/architecture/layers.md](../../../docs/architecture/layers.md)) ## Available Generators Reference | Generator | Command | Purpose | | --------------------------------- | ---------------------------------------------------------------------- | --------------------------------------------------- | | `react-component` | `yarn nx g @fluentui/workspace-plugin:react-component` | Add component to existing package | | `react-library` | `yarn nx g @fluentui/workspace-plugin:react-library` | Create new v9 package | | `recipe-generator` | `yarn nx g @fluentui/workspace-plugin:recipe-generator` | Create a v9 recipe | | `prepare-initial-release` | `yarn nx g @fluentui/workspace-plugin:prepare-initial-release` | Prepare package for release (compat/preview/stable) | | `bundle-size-configuration` | `yarn nx g @fluentui/workspace-plugin:bundle-size-configuration` | Setup bundle-size tracking | | `cypress-component-configuration` | `yarn nx g @fluentui/workspace-plugin:cypress-component-configuration` | Setup Cypress component tests |
Voir sur GitHub