import { createContext, useCallback, useContext, useEffect, useMemo, useState, type ReactNode } from 'react'; import type { Route, TabName } from './routes'; /** * ناوبریِ پشته‌ای، هماهنگ با تاریخچه‌ی مرورگر. * * هر push یک ورودی به history اضافه می‌کند، پس دکمه‌ی back گوشی یا مرورگر * یک صفحه عقب می‌رود به‌جای بیرون انداختنِ کاربر از اپ. تعویضِ تب پشته را * از نو می‌سازد (مثلِ اپ‌های بومی). */ interface Nav { route: Route; /** تبی که ریشه‌ی پشته‌ی فعلی است؛ برای روشن کردنِ نوارِ پایین. */ tab: TabName | null; canGoBack: boolean; push: (route: Route) => void; /** صفحه‌ی فعلی را عوض می‌کند بدونِ اضافه کردن به تاریخچه. */ replace: (route: Route) => void; back: () => void; switchTab: (tab: TabName) => void; } const NavContext = createContext