mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
- Remove nested git repository from bugulma/frontend/.git - Add all frontend files to main repository tracking - Convert from separate frontend/backend repos to unified monorepo - Preserve all frontend code and development history as tracked files - Eliminate nested repository complexity for simpler development workflow This creates a proper monorepo structure with frontend and backend coexisting in the same repository for easier development and deployment.
54 lines
1.1 KiB
TypeScript
54 lines
1.1 KiB
TypeScript
import { useCallback, useState } from 'react';
|
|
|
|
/**
|
|
* Hook for managing modal state with common patterns
|
|
*/
|
|
export function useModal(initialOpen = false) {
|
|
const [isOpen, setIsOpen] = useState(initialOpen);
|
|
|
|
const open = useCallback(() => setIsOpen(true), []);
|
|
const close = useCallback(() => setIsOpen(false), []);
|
|
const toggle = useCallback(() => setIsOpen(prev => !prev), []);
|
|
|
|
return {
|
|
isOpen,
|
|
open,
|
|
close,
|
|
toggle,
|
|
setIsOpen,
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Hook for managing modal state with data payload
|
|
*/
|
|
export function useModalWithData<T>(initialOpen = false) {
|
|
const [isOpen, setIsOpen] = useState(initialOpen);
|
|
const [data, setData] = useState<T | null>(null);
|
|
|
|
const open = useCallback((modalData?: T) => {
|
|
setData(modalData || null);
|
|
setIsOpen(true);
|
|
}, []);
|
|
|
|
const close = useCallback(() => {
|
|
setIsOpen(false);
|
|
setData(null);
|
|
}, []);
|
|
|
|
const toggle = useCallback(() => {
|
|
setIsOpen(prev => !prev);
|
|
if (!isOpen) setData(null);
|
|
}, [isOpen]);
|
|
|
|
return {
|
|
isOpen,
|
|
data,
|
|
open,
|
|
close,
|
|
toggle,
|
|
setIsOpen,
|
|
setData,
|
|
};
|
|
}
|