138 lines
2.7 KiB
TypeScript
138 lines
2.7 KiB
TypeScript
// begin Alert.tsx
|
|
export type MessageType = "info" | "danger" | "success" | "warning" | "dark";
|
|
|
|
export interface AlertProps {
|
|
children: React.ReactNode;
|
|
type?: "info" | "danger" | "success" | "warning" | "dark";
|
|
message?: string;
|
|
}
|
|
|
|
// begin Button.tsx
|
|
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
children: React.ReactNode;
|
|
extra?: string;
|
|
active?: boolean;
|
|
}
|
|
|
|
// begin Route
|
|
export interface Route {
|
|
id: number;
|
|
path: string;
|
|
name: string;
|
|
}
|
|
|
|
// begin MobileMenu.tsx
|
|
export interface MobileMenuProps {
|
|
isOpen: boolean;
|
|
toggleMenu: () => void;
|
|
routes: Route[];
|
|
}
|
|
|
|
// begin MobileMenuButton.tsx
|
|
export interface MobileMenuButtonProps {
|
|
isOpen: boolean;
|
|
onClick: () => void;
|
|
}
|
|
|
|
// begin NavbarLink.tsx
|
|
import { NavLinkProps } from "react-router-dom";
|
|
|
|
export interface NavbarLinkProps {
|
|
to: string;
|
|
children: React.ReactNode;
|
|
onClick?: () => void;
|
|
}
|
|
|
|
export interface NavData {
|
|
isActive: boolean;
|
|
isPending: boolean;
|
|
}
|
|
|
|
// begin ListTutorial.tsx
|
|
import React, {
|
|
ButtonHTMLAttributes,
|
|
Component,
|
|
Dispatch,
|
|
InputHTMLAttributes,
|
|
ReactNode,
|
|
SetStateAction,
|
|
} from "react";
|
|
|
|
export type TutorialList = { id: number; name: string }[];
|
|
|
|
export interface ListTutorialsProps {
|
|
tutorialList: TutorialList;
|
|
activeTutorial: number;
|
|
setActiveTutorial: SetStateAction;
|
|
}
|
|
|
|
export type LearnProps = {
|
|
activeTutorial: number;
|
|
tutorialList: TutorialList;
|
|
};
|
|
|
|
// begin TypeWriter.tsx
|
|
export interface TypewriterProps {
|
|
text: string;
|
|
speed?: number; // سرعت تایپ در میلیثانیه
|
|
}
|
|
|
|
export interface ButtonListProps {
|
|
ProductsList: { id: number; title: string }[];
|
|
activeId: number;
|
|
setActiveId: SetStateAction;
|
|
}
|
|
|
|
export interface ProductBoxProps {
|
|
title: string;
|
|
space: number;
|
|
users: number;
|
|
price: string;
|
|
btnText: string;
|
|
variant: number;
|
|
}
|
|
|
|
export interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
label?: string;
|
|
id?: string;
|
|
type: string;
|
|
name?: string;
|
|
placeholder?: string;
|
|
labelStyle?: string;
|
|
extra?: string;
|
|
}
|
|
|
|
export interface MuiModalProps {
|
|
isOpenModal: boolean;
|
|
setIsOpenModal: SetStateAction;
|
|
title?: string;
|
|
nameService?: string;
|
|
submitText: string;
|
|
submitOnClick?: () => void;
|
|
children: React.ReactNode;
|
|
}
|
|
|
|
export interface ConfigItemProps {
|
|
dateBuy: string;
|
|
configName: string;
|
|
isDisabled: boolean;
|
|
}
|
|
|
|
// نوع Item برای آیتمهای داخل Dropdown
|
|
export interface DropdownItem {
|
|
label: string;
|
|
value: string;
|
|
onClick: () => void;
|
|
}
|
|
|
|
export interface DropdownProps {
|
|
isOpen: boolean;
|
|
setIsOpen: Dispatch<SetStateAction<boolean>>;
|
|
children: ReactNode | ReactNode[];
|
|
}
|
|
|
|
export interface ProgressSpaceProps {
|
|
startSpace: number;
|
|
endSpace: number | "ultimate";
|
|
}
|