structure + layout header sidebar

This commit is contained in:
hamid zarghami
2025-10-14 13:06:18 +03:30
commit 31967a2ecb
53 changed files with 6362 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
export const Paths = {
home: '/home',
myOrders: '/my-orders',
preFactors: '/pre-factors',
tickets: {
list: '/tickets',
},
announcement: {
list: '/announcement',
},
criticisms: '/criticisms',
learning: '/learning',
auth: {
login: '/auth/login',
},
}
+33
View File
@@ -0,0 +1,33 @@
import axios from "axios";
import { getToken } from "./func";
const instance = axios.create({
baseURL: import.meta.env.VITE_API_URL || "http://localhost:3000/api",
timeout: 10000,
});
instance.interceptors.request.use(
(config) => {
const token = getToken();
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
instance.interceptors.response.use(
(response) => response,
(error) => {
if (error.response?.status === 401) {
// Handle unauthorized
console.log("Unauthorized");
}
return Promise.reject(error);
}
);
export default instance;
+47
View File
@@ -0,0 +1,47 @@
const TOKEN_NAME = import.meta.env.VITE_TOKEN_NAME;
const REFRESH_TOKEN_NAME = import.meta.env.VITE_REFRESH_TOKEN_NAME;
export const getToken = () => {
return localStorage.getItem(TOKEN_NAME);
};
export const setToken = (token: string) => {
localStorage.setItem(TOKEN_NAME, token);
};
export const removeToken = () => {
localStorage.removeItem(TOKEN_NAME);
};
export const getRefreshToken = () => {
return localStorage.getItem(REFRESH_TOKEN_NAME);
};
export const setRefreshToken = (refreshToken: string) => {
localStorage.setItem(REFRESH_TOKEN_NAME, refreshToken);
};
export const removeRefreshToken = () => {
localStorage.removeItem(REFRESH_TOKEN_NAME);
};
export const timeAgo = (dateString: string): string => {
const date = new Date(dateString);
const now = new Date();
const diffInMs = now.getTime() - date.getTime();
const diffInMinutes = Math.floor(diffInMs / (1000 * 60));
const diffInHours = Math.floor(diffInMinutes / 60);
const diffInDays = Math.floor(diffInHours / 24);
if (diffInMinutes < 1) return "همین الان";
if (diffInMinutes < 60) return `${diffInMinutes} دقیقه پیش`;
if (diffInHours < 24) return `${diffInHours} ساعت پیش`;
if (diffInDays < 7) return `${diffInDays} روز پیش`;
return date.toLocaleDateString("fa-IR");
};
export const NumberFormat = (num?: number): string => {
if (!num) return "0";
return num.toLocaleString("fa-IR");
};