75 lines
1.5 KiB
TypeScript
Executable File
75 lines
1.5 KiB
TypeScript
Executable File
import type { AvatarProps } from '@nuxt/ui'
|
|
|
|
export type UserStatus = 'subscribed' | 'unsubscribed' | 'bounced'
|
|
export type SaleStatus = 'paid' | 'failed' | 'refunded'
|
|
|
|
export interface User {
|
|
id: number
|
|
name: string
|
|
email: string
|
|
avatar?: AvatarProps
|
|
status: UserStatus
|
|
location: string
|
|
}
|
|
|
|
export interface SearchFiles {
|
|
youtube?: string
|
|
video?: string
|
|
audio?: string
|
|
booklet?: string
|
|
simple?: string
|
|
}
|
|
|
|
export interface MatchPosition { start: number, length: number }
|
|
|
|
export interface SearchHit {
|
|
_id: string | number
|
|
id?: string | number
|
|
title: string
|
|
slug?: string
|
|
date?: number | string
|
|
isodate?: string
|
|
activity?: string
|
|
conference?: string
|
|
place?: string
|
|
city?: string
|
|
state?: string
|
|
country?: string
|
|
body?: string
|
|
thumbnail?: string
|
|
type?: string
|
|
files?: SearchFiles
|
|
unread?: boolean
|
|
_formatted?: Record<string, unknown>
|
|
_matchesPosition?: Record<string, MatchPosition[]>
|
|
[key: string]: unknown
|
|
}
|
|
|
|
// Backwards-compatible alias used by InboxList / InboxActivity
|
|
export type Activity = SearchHit
|
|
|
|
export interface Member {
|
|
name: string
|
|
username: string
|
|
role: 'member' | 'owner'
|
|
avatar: AvatarProps
|
|
}
|
|
|
|
declare global {
|
|
interface Window {
|
|
grecaptcha: {
|
|
ready: (callback: () => void) => void
|
|
execute: (siteKey: string, options: { action: string }) => Promise<string>
|
|
render: (container: string | HTMLElement, options: Record<string, unknown>) => void
|
|
}
|
|
}
|
|
}
|
|
|
|
export interface Notification {
|
|
id: number
|
|
unread?: boolean
|
|
sender: User
|
|
body: string
|
|
date: string
|
|
}
|