Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | 1x | /**
* Types for React code generation
*/
import type { ComponentMetadata, GeneratedCode, GeneratorOptions } from '@fds-uif/generator-base/browser';
/**
* Options for React component generation
*/
export interface ReactGeneratorOptions extends Partial<GeneratorOptions> {
/** Include React import statement (default: true) */
includeReactImport?: boolean;
/** Use named export instead of default (default: false) */
namedExport?: boolean;
/** Generate forwardRef wrapper (default: false) */
forwardRef?: boolean;
/** Include prop-types for runtime validation (default: false) */
includePropTypes?: boolean;
/** Output directory for generated files */
outputDir?: string;
/** File extension for output (default: '.tsx') */
fileExtension?: '.tsx' | '.jsx';
/** Skip Prettier formatting (for debugging) */
skipFormat?: boolean;
}
/**
* Result of React code generation
*/
export interface ReactGeneratedCode extends GeneratedCode {
/** The component metadata used for generation */
metadata: ComponentMetadata;
/** Generated React-specific artifacts */
artifacts: {
/** Component file content */
component: string;
/** Props interface content */
propsInterface: string;
/** Import statements */
imports: string[];
};
}
/**
* Context passed through generation stages
*/
export interface GenerationContext {
/** Component metadata from analyzer */
metadata: ComponentMetadata;
/** Generator options */
options: ReactGeneratorOptions;
/** Indentation level */
indent: number;
/** Collected import statements */
imports: Set<string>;
/** Collected type imports */
typeImports: Set<string>;
}
/**
* Default generator options
*/
export const DEFAULT_OPTIONS: Required<
Pick<ReactGeneratorOptions, 'includeReactImport' | 'namedExport' | 'forwardRef' | 'includePropTypes' | 'fileExtension'>
> = {
includeReactImport: true,
namedExport: false,
forwardRef: false,
includePropTypes: false,
fileExtension: '.tsx',
};
|