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)

معلومات المصدر

المستودع
microsoft/fluentui
آخر نشاط في المصدر
٢٠ أبريل ٢٠٢٦ في ١٤:١٠
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٢٠٬٤٠٠
التفرعات
٢٬٩٥٩

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
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 |
عرض على GitHub