# PortalCash Shared Library

Una librería de componentes Vue 3 reutilizables, servicios y utilidades para aplicaciones PortalCash.

## 🚀 Instalación

```bash
npm install portalcash-shared
# o
yarn add portalcash-shared
# o
bun add portalcash-shared
```

## 📦 Características

- ✅ Componentes Vue 3 con TypeScript
- ✅ Stores Pinia integrados
- ✅ Servicios y utilidades reutilizables
- ✅ Composables para funcionalidades comunes
- ✅ Soporte completo para TypeScript
- ✅ Tree-shaking optimizado
- ✅ CSS incluido

## 🛠️ Uso Básico

### Importar Componentes

```typescript
import { CustomButton, CustomInput, MainCard } from 'portalcash-shared'
```

### Importar Stores

```typescript
import { useAuthStore, useAccountsStore } from 'portalcash-shared'
```

### Importar Composables

```typescript
import { useFeatureFlags, useFormatPrice } from 'portalcash-shared'
```

### Importar Utilidades

```typescript
import { base64Transformer, validation } from 'portalcash-shared'
```

## 📋 Componentes Disponibles

### Componentes UI
- `CustomButton` - Botón personalizado
- `CustomInput` - Campo de entrada personalizado
- `CustomSelect` - Selector personalizado
- `CustomCheckBox` - Checkbox personalizado
- `CustomDatePicker` - Selector de fecha
- `CustomDialog` - Modal de diálogo
- `CustomFileUpload` - Subida de archivos
- `MainCard` - Tarjeta principal
- `MainTable` - Tabla principal
- Y muchos más...

### Componentes de Operaciones
- `BalanceCard` - Tarjeta de balance
- `DetailsCard` - Tarjeta de detalles
- `ObservationCard` - Tarjeta de observaciones
- `PaymentDocument` - Documento de pago
- `ThirdPartyCard` - Tarjeta de terceros

## 🏪 Stores Disponibles

- `useAuthStore` - Gestión de autenticación
- `useAccountsStore` - Gestión de cuentas
- `useClientTypeStore` - Tipos de cliente
- `useCompanyStore` - Gestión de empresas
- `useCurrencyTypeStore` - Tipos de moneda
- `useThemeStore` - Gestión de temas

## 🔧 Configuración

### Dependencias Peer

Esta librería requiere las siguientes dependencias peer:

```json
{
  "vue": "^3.4.0",
  "pinia": "^2.1.0",
  "primevue": "^4.0.0",
  "@primevue/themes": "^4.0.0"
}
```

### Instalación de Dependencias Opcionales

```bash
# FontAwesome (opcional)
npm install @fortawesome/fontawesome-svg-core @fortawesome/vue-fontawesome @fortawesome/free-solid-svg-icons
```

## 💡 Ejemplo de Uso Completo

```vue
<template>
  <div>
    <MainCard title="Mi Aplicación">
      <CustomButton 
        label="Guardar" 
        @click="handleSave"
        :loading="isLoading"
      />
      <CustomInput 
        v-model="formData.name"
        placeholder="Nombre"
      />
    </MainCard>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { CustomButton, CustomInput, MainCard, useAuthStore } from 'portalcash-shared'

const authStore = useAuthStore()
const isLoading = ref(false)
const formData = ref({ name: '' })

const handleSave = () => {
  isLoading.value = true
  // Lógica de guardado
}
</script>
```

## 🔨 Desarrollo

### Requisitos
- Node.js 18+
- Bun (recomendado) o npm/yarn

### Scripts Disponibles

```bash
# Instalar dependencias
bun install

# Desarrollo
bun dev

# Build de la librería
bun run build-lib

# Build para desarrollo
bun run build-dev

# Type checking
bun run type-check

# Tests
bun test:unit
```

## 📄 Licencia

MIT

## 🤝 Contribución

Las contribuciones son bienvenidas. Por favor, abre un issue o pull request para sugerencias y mejoras.

## 📞 Soporte

Para soporte técnico, contacta al equipo de desarrollo de PortalCash.
