use tailwind_fuse::{AsTailwindClass, TwVariant};
pub const TERMINAL_ROOT: &str = "grid w-full grid-cols-1 gap-px bg-border text-ink text-sm \
lg:h-[calc(100dvh-var(--ev-shell-offset,0px))] lg:grid-cols-[minmax(0,1fr)_18rem_20rem] \
lg:grid-rows-[auto_minmax(0,1fr)_14rem]";
pub const TERMINAL_PANE: &str = "flex min-h-0 min-w-0 flex-col overflow-hidden bg-card";
pub const TERMINAL_PANE_HEADER: &str = "flex h-9 shrink-0 items-center gap-2 border-b border-border px-3 text-xs font-medium text-ink-mid";
pub const TERMINAL_PANE_BODY: &str = "flex min-h-0 flex-1 flex-col overflow-auto";
pub const TERMINAL_CHART: &str = "relative min-h-[18rem] flex-1 overflow-hidden";
pub const TERMINAL_TICKER: &str = "flex min-w-0 items-center gap-6 overflow-x-auto bg-card px-4 py-2 whitespace-nowrap";
pub const TERMINAL_TICKER_STAT: &str = "flex shrink-0 flex-col gap-0.5";
pub const TERMINAL_TICKER_LABEL: &str = "text-[11px] uppercase tracking-wide text-ink-soft";
pub const TERMINAL_TICKER_VALUE: &str = "font-mono text-sm tabular-nums text-ink";
pub const ORDER_BOOK: &str = "flex min-h-0 flex-1 flex-col font-mono text-xs tabular-nums";
pub const ORDER_BOOK_HEAD: &str = "grid shrink-0 grid-cols-3 gap-2 px-3 py-1.5 text-right text-[11px] text-ink-soft [&>*:first-child]:text-left";
pub const ORDER_BOOK_ROW: &str = "relative isolate grid cursor-pointer grid-cols-3 gap-2 px-3 py-0.5 text-right leading-5 hover:bg-hover";
pub const ORDER_BOOK_PRICE: &str = "text-left";
pub const ORDER_BOOK_DEPTH: &str = "pointer-events-none absolute inset-y-0 right-0 -z-10";
pub const ORDER_BOOK_SPREAD: &str = "flex shrink-0 items-center justify-between gap-2 border-y border-border bg-muted/50 px-3 py-1 text-ink-mid";
pub const TRADES_TAPE_ROW: &str = "grid grid-cols-3 gap-2 px-3 py-0.5 text-right font-mono text-xs leading-5 tabular-nums hover:bg-hover";
pub const ORDER_FORM: &str = "flex flex-col gap-3 p-3 text-sm";
pub const ORDER_FORM_ROW: &str = "flex items-center justify-between gap-2 text-xs";
pub const ORDER_FORM_LABEL: &str = "text-ink-soft";
pub const ORDER_FORM_VALUE: &str = "font-mono tabular-nums text-ink";
pub const ORDER_FORM_SUBMIT_BASE: &str = "inline-flex h-10 w-full shrink-0 cursor-pointer items-center justify-center rounded-[var(--control-radius)] \
text-sm font-semibold transition-colors outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50 \
disabled:pointer-events-none disabled:opacity-50";
pub const OPEN_ORDERS_EMPTY: &str = "flex flex-1 items-center justify-center p-6 text-sm text-ink-soft";
#[derive(Debug, PartialEq, TwVariant, strum::AsRefStr, strum::EnumIter)]
#[strum(serialize_all = "kebab-case")]
pub enum TerminalArea {
#[tw(default, class = "lg:col-span-3 lg:row-start-1")]
Ticker,
#[tw(class = "lg:col-start-1 lg:row-start-2")]
Chart,
#[tw(class = "lg:col-start-2 lg:row-start-2")]
Book,
#[tw(class = "lg:col-start-3 lg:row-start-2")]
Form,
#[tw(class = "lg:col-span-3 lg:row-start-3")]
Orders,
}
#[derive(Debug, PartialEq, TwVariant, strum::AsRefStr, strum::EnumIter)]
#[strum(serialize_all = "kebab-case")]
pub enum BookSide {
#[tw(default, class = "text-positive")]
Bid,
#[tw(class = "text-accent-error")]
Ask,
}
pub fn book_depth_class(side: BookSide) -> &'static str {
match side {
BookSide::Bid => "bg-positive/15",
BookSide::Ask => "bg-accent-error/15",
}
}
#[derive(Debug, PartialEq, TwVariant, strum::AsRefStr, strum::EnumIter)]
#[strum(serialize_all = "kebab-case")]
pub enum OrderSide {
#[tw(default, class = "bg-positive text-on-positive hover:bg-positive/90")]
Buy,
#[tw(class = "bg-accent-error text-on-accent-error hover:bg-accent-error/90")]
Sell,
}