Files
cannamanage/cannamanage-frontend/src/types.ts
T

115 lines
2.4 KiB
TypeScript

import type { LucideIcon, icons } from "lucide-react"
import type { ComponentType, SVGAttributes } from "react"
export type LayoutType = "vertical" | "horizontal"
export type ModeType = "light" | "dark" | "system"
export type OrientationType = "vertical" | "horizontal"
export type DirectionType = "ltr" | "rtl"
export type LocaleType = "de" | "en"
export type ThemeType = string
export type RadiusType = number
export type SettingsType = {
theme: ThemeType
mode: ModeType
radius: RadiusType
layout: LayoutType
locale: LocaleType
}
export interface IconProps extends SVGAttributes<SVGElement> {
children?: never
color?: string
}
export type IconType = ComponentType<IconProps> | LucideIcon
export type DynamicIconNameType = keyof typeof icons
export interface UserType {
id: string
firstName: string
lastName: string
name: string
username: string
role: string
avatar: string
background: string
status: string
phoneNumber: string
email: string
state: string
country: string
address: string
zipCode: string
language: string
timeZone: string
currency: string
organization: string
twoFactorAuth: boolean
loginAlerts: boolean
accountReoveryOption?: "email" | "sms" | "codes"
connections: number
followers: number
}
export interface NavigationType {
title: string
items: NavigationRootItem[]
}
export type NavigationRootItem =
| NavigationRootItemWithHrefType
| NavigationRootItemWithItemsType
export interface NavigationRootItemBasicType {
title: string
label?: string
iconName: DynamicIconNameType
}
export interface NavigationRootItemWithHrefType
extends NavigationRootItemBasicType {
href: string
items?: never
}
export interface NavigationRootItemWithItemsType
extends NavigationRootItemBasicType {
items: (
| NavigationNestedItemWithHrefType
| NavigationNestedItemWithItemsType
)[]
href?: never
}
export interface NavigationNestedItemBasicType {
title: string
label?: string
}
export interface NavigationNestedItemWithHrefType
extends NavigationNestedItemBasicType {
href: string
items?: never
}
export interface NavigationNestedItemWithItemsType
extends NavigationNestedItemBasicType {
items: (
| NavigationNestedItemWithHrefType
| NavigationNestedItemWithItemsType
)[]
href?: never
}
export type NavigationNestedItem =
| NavigationNestedItemWithHrefType
| NavigationNestedItemWithItemsType