feat: adição de novos ícones SVG e configuração do ambiente

- Adicionados ícones SVG para ChatGPT, Claude, Gemini e OpenRouter
- Implementados ícones para modos claro e escuro do ChatGPT
- Criado script de inicialização para PostgreSQL com extensão pgcrypto
- Adicionado script de configuração de ambiente que faz backup do .env
- Configurado tsconfig.json para TypeScript com opções de compilação
This commit is contained in:
Felipe Coutinho
2025-11-15 15:49:36 -03:00
commit ea0b8618e0
441 changed files with 53569 additions and 0 deletions

55
hooks/use-form-state.ts Normal file
View File

@@ -0,0 +1,55 @@
import { useCallback, useState } from "react";
/**
* Hook for managing form state with type-safe field updates
*
* @param initialValues - Initial form values
* @returns Object with formState, updateField, resetForm, setFormState
*
* @example
* ```tsx
* const { formState, updateField, resetForm } = useFormState({
* name: '',
* email: ''
* });
*
* updateField('name', 'John');
* ```
*/
export function useFormState<T extends Record<string, any>>(
initialValues: T
) {
const [formState, setFormState] = useState<T>(initialValues);
/**
* Updates a single field in the form state
*/
const updateField = useCallback(<K extends keyof T>(
field: K,
value: T[K]
) => {
setFormState((prev) => ({ ...prev, [field]: value }));
}, []);
/**
* Resets form to initial values
*/
const resetForm = useCallback(() => {
setFormState(initialValues);
}, [initialValues]);
/**
* Updates multiple fields at once
*/
const updateFields = useCallback((updates: Partial<T>) => {
setFormState((prev) => ({ ...prev, ...updates }));
}, []);
return {
formState,
updateField,
updateFields,
resetForm,
setFormState,
};
}