npm package: @gadagi/types
Description: Shared TypeScript types for adi micro-frontends
Author: Gavi Team
Latest version: 1.0.2

# Gadagi Types - Shared Type Definitions

Shared TypeScript type definitions for the Gadagi platform micro-frontend architecture.

## Overview

This package contains common TypeScript interfaces and types used across all Gadagi micro-frontends, ensuring type consistency and reducing duplication.

## Installation

```bash
npm install @gadagi/types
```

## Available Types

### User Types

```typescript
interface User {
  id: string;
  email: string;
  firstName: string;
  lastName: string;
  avatar?: string;
  preferences: UserPreferences;
}

interface UserPreferences {
  theme: 'light' | 'dark';
  language: string;
  timezone: string;
  notifications: NotificationSettings;
}
```

### Authentication Types

```typescript
interface AuthState {
  isAuthenticated: boolean;
  isLoading: boolean;
  user: User | null;
  error: string | null;
}

interface LoginCredentials {
  email: string;
  password: string;
  rememberMe?: boolean;
}

interface AuthResponse {
  user: User;
  token: string;
  refreshToken: string;
}
```

### Navigation Types

```typescript
interface NavItem {
  id: string;
  label: string;
  path: string;
  icon?: React.ReactNode;
  badge?: number;
  children?: NavItem[];
}
```

### API Types

```typescript
interface ApiResponse<T> {
  data: T;
  success: boolean;
  message?: string;
  errors?: string[];
}

interface PaginationMeta {
  page: number;
  limit: number;
  total: number;
  totalPages: number;
}
```

## Usage

```typescript
import { User, AuthState, NavItem, ApiResponse } from '@gadagi/types';

// Component props
interface UserProfileProps {
  user: User;
  onUpdate: (user: Partial<User>) => void;
}

// Hook return types
const useAuth = (): AuthState => {
  // Implementation
};

// Navigation configuration
const navigationItems: NavItem[] = [
  {
    id: 'dashboard',
    label: 'Dashboard',
    path: '/dashboard'
  }
];

// API response handling
const handleUserResponse = (response: ApiResponse<User>) => {
  if (response.success) {
    console.log(response.data);
  }
};
```

## Type Safety Benefits

- **Consistency**: Same types across all micro-frontends
- **IntelliSense**: Full autocomplete and type checking
- **Refactoring**: Safe cross-project refactoring
- **Documentation**: Self-documenting code with clear interfaces

## Versioning

This package follows semantic versioning:
- **Major**: Breaking changes to existing types
- **Minor**: New types or optional properties added
- **Patch**: Bug fixes or documentation updates

## Development

```bash
# Install dependencies
npm install

# Build the package
npm run build

# Watch for changes during development
npm run dev
```

## Publishing

This package is configured to publish to the public npm registry.

```bash
# Build and publish
npm run publish
```

## Contributing

When adding new types:

1. Consider if they're truly shared across multiple apps
2. Use clear, descriptive names
3. Add JSDoc comments for complex interfaces
4. Update this README
5. Increment version appropriately

## Dependencies

- **TypeScript**: 5.0.0+
- **No runtime dependencies** - types only

## License

MIT © Gadagi Team

## Repository

https://github.com/gavimg/adi-types