init
This commit is contained in:
commit
d69342b2e9
160 changed files with 28681 additions and 0 deletions
128
studio/src/types.ts
Normal file
128
studio/src/types.ts
Normal file
|
|
@ -0,0 +1,128 @@
|
|||
export interface Post {
|
||||
id: string
|
||||
slug: string
|
||||
title: string
|
||||
description: string
|
||||
cover_image?: string
|
||||
content?: string
|
||||
date: string
|
||||
draft: boolean
|
||||
members_only: boolean
|
||||
tags: string[]
|
||||
created_at: string
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
export interface Settings {
|
||||
site_name?: string
|
||||
site_description?: string
|
||||
author_name?: string
|
||||
author_role?: string
|
||||
author_bio?: string
|
||||
author_photo?: string
|
||||
twitter_handle?: string
|
||||
github_handle?: string
|
||||
linkedin_handle?: string
|
||||
email?: string
|
||||
show_powered_by?: string
|
||||
accent_color?: string
|
||||
code_theme?: string
|
||||
font?: string
|
||||
layout?: string
|
||||
compactness?: 'compact' | 'cozy' | 'spacious'
|
||||
custom_css?: string
|
||||
}
|
||||
|
||||
export interface InteractionConfig {
|
||||
comments_enabled: boolean
|
||||
reactions_enabled: boolean
|
||||
reaction_mode: string
|
||||
reaction_emojis: string
|
||||
upvote_icon: string
|
||||
reactions_require_auth: boolean
|
||||
}
|
||||
|
||||
export interface Asset {
|
||||
id: string
|
||||
filename: string
|
||||
url: string
|
||||
content_type: string
|
||||
size: number
|
||||
created_at: string
|
||||
}
|
||||
|
||||
export interface APIKey {
|
||||
key: string
|
||||
name: string
|
||||
created_at: string
|
||||
last_used_at: string | null
|
||||
}
|
||||
|
||||
export interface AnalyticsSummary {
|
||||
total_views: number
|
||||
total_page_views: number
|
||||
unique_visitors: number
|
||||
total_bandwidth: number
|
||||
views_change: number
|
||||
top_pages: { path: string; views: number }[]
|
||||
top_referrers: { referrer: string; views: number }[]
|
||||
views_by_day: { date: string; views: number; visitors: number }[]
|
||||
browsers: { name: string; count: number }[]
|
||||
os: { name: string; count: number }[]
|
||||
devices: { name: string; count: number }[]
|
||||
countries: { name: string; count: number }[]
|
||||
}
|
||||
|
||||
export type WebhookEvent = 'post.published' | 'post.updated' | 'post.deleted'
|
||||
|
||||
export interface Webhook {
|
||||
id: string
|
||||
name: string
|
||||
url: string
|
||||
events: WebhookEvent[]
|
||||
secret?: string
|
||||
enabled: boolean
|
||||
created_at: string
|
||||
last_triggered_at: string | null
|
||||
last_status: 'success' | 'failed' | null
|
||||
}
|
||||
|
||||
export interface WebhookDelivery {
|
||||
id: number
|
||||
webhook_id: string
|
||||
event: string
|
||||
payload: string
|
||||
status: 'success' | 'failed'
|
||||
response_code: number | null
|
||||
response_body: string | null
|
||||
attempts: number
|
||||
created_at: string
|
||||
}
|
||||
|
||||
export type Tier = 'free' | 'pro'
|
||||
|
||||
export interface TierConfig {
|
||||
name: string
|
||||
description: string
|
||||
monthly_price: number
|
||||
annual_price: number
|
||||
custom_domain: boolean
|
||||
badge_required: boolean
|
||||
analytics_retention: number
|
||||
api_rate_limit: number
|
||||
max_webhooks: number
|
||||
webhook_deliveries: number
|
||||
max_plugins: number
|
||||
plugin_executions: number
|
||||
}
|
||||
|
||||
export interface Usage {
|
||||
webhooks: number
|
||||
plugins: number
|
||||
}
|
||||
|
||||
export interface BillingInfo {
|
||||
current_tier: Tier
|
||||
tiers: Record<Tier, TierConfig>
|
||||
usage: Usage
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue