@loafmarkets/ui 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +63 -43
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +63 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/portfolio-summary.tsx","../src/components/house-position-slider.tsx","../src/components/orderbook.tsx","../src/components/property-tour.tsx","../src/components/property-news-updates.tsx","../src/components/property-compare-bar.tsx","../src/components/your-orders.tsx","../src/components/price-chart.tsx","../src/components/property-hero-header.tsx","../src/components/property-subheader.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","React3","React4","formatCurrency","formatPercent","jsxs","React5","clamp","React6","Fragment","React7","React8","Newspaper","React9","React10","React11","createChart","formatPrice","React12","BedDouble","Bath","CarFront","React13"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n primary: \"bg-teal-500 text-slate-950 hover:bg-teal-400 focus-visible:ring-teal-200\",\n accent:\n \"bg-[var(--color-accent,#e6c87e)] text-black hover:bg-[var(--color-accent-hover,#f8d12f)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n accentOutline:\n \"border border-[var(--color-accent,#e6c87e)] bg-transparent text-[var(--color-accent,#e6c87e)] hover:bg-[rgba(230,200,126,0.10)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n media:\n \"border border-white/10 bg-transparent text-white/90 hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n outline:\n \"border border-slate-800/20 bg-white text-slate-900 hover:border-slate-800/40 focus-visible:ring-slate-200\",\n ghost:\n \"bg-transparent text-slate-900 hover:bg-slate-900/5 focus-visible:ring-slate-200\",\n danger: \"bg-rose-500 text-white hover:bg-rose-400 focus-visible:ring-rose-200\",\n },\n size: {\n sm: \"h-9 px-4 text-sm\",\n md: \"h-11 px-6 text-base\",\n lg: \"h-12 px-7 text-lg\",\n icon: \"h-10 w-10\",\n },\n radius: {\n pill: \"rounded-full\",\n md: \"rounded\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"pill\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, radius, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, radius }), className)}\n {...props}\n />\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-3 py-1 text-xs font-semibold uppercase tracking-wide transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-slate-900 text-white focus-visible:ring-slate-300\",\n muted:\n \"border-transparent bg-slate-100 text-slate-600 focus-visible:ring-slate-200\",\n outline: \"border-slate-200 bg-white text-slate-600 focus-visible:ring-slate-200\",\n success:\n \"border-transparent bg-teal-500/15 text-teal-600 focus-visible:ring-teal-200\",\n active:\n \"border-transparent bg-[rgba(14,203,129,0.25)] text-[#0ecb81] focus-visible:ring-[rgba(14,203,129,0.35)]\",\n pending:\n \"border-transparent bg-white/10 text-white/60 focus-visible:ring-white/20\",\n rejected:\n \"border-transparent bg-[rgba(246,70,93,0.20)] text-[#f6465d] focus-visible:ring-[rgba(246,70,93,0.30)]\",\n },\n size: {\n sm: \"px-2.5 py-0.5 text-[11px]\",\n md: \"px-3 py-1 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props} />\n )\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:shadow-md\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-xl font-semibold tracking-tight text-slate-900\", className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-slate-500\", className)} {...props} />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-6 pb-6 pt-2 text-sm text-slate-600\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center border-t border-slate-100 px-6 py-4\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./card\";\n\nconst defaultFormatCurrency = (value: number) =>\n new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value);\n\nconst defaultFormatPercent = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${Math.abs(value).toFixed(2)}%`;\n};\n\nconst defaultFormatSignedCurrency = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${defaultFormatCurrency(Math.abs(value))}`;\n};\n\nexport interface PortfolioSummaryProps extends React.HTMLAttributes<HTMLDivElement> {\n availableCash: number;\n portfolioValue: number;\n totalReturnPercent: number;\n unrealizedPnl: number;\n onResetAccount?: () => void;\n positionsHeading?: string;\n emptyPositionsText?: string;\n formatCurrency?: (value: number) => string;\n formatPercent?: (value: number) => string;\n formatSignedCurrency?: (value: number) => string;\n children?: React.ReactNode;\n}\n\nexport const PortfolioSummary = React.forwardRef<HTMLDivElement, PortfolioSummaryProps>(\n (\n {\n availableCash,\n portfolioValue,\n totalReturnPercent,\n unrealizedPnl,\n onResetAccount,\n positionsHeading = \"Current Positions\",\n emptyPositionsText = \"No positions yet. Start trading to build your portfolio!\",\n formatCurrency = defaultFormatCurrency,\n formatPercent = defaultFormatPercent,\n formatSignedCurrency = defaultFormatSignedCurrency,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const totalReturnClassName = totalReturnPercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n const pnlClassName = unrealizedPnl >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[560px] rounded-[12px] border border-white/10 bg-black/30 p-6 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"p-0 pb-4\">\n <div className=\"flex items-center justify-between gap-4\">\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">Portfolio Summary</CardTitle>\n {onResetAccount ? (\n <button\n type=\"button\"\n onClick={onResetAccount}\n className=\"cursor-pointer rounded-[6px] border border-white/20 bg-white/10 px-[0.7rem] py-[0.35rem] text-xs text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n Reset Account\n </button>\n ) : null}\n </div>\n <div className=\"mt-3 h-px w-full bg-white/10\" />\n </CardHeader>\n\n <CardContent className=\"p-0 pt-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Available Cash</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(availableCash)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Portfolio Value</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(portfolioValue)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Total Return</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", totalReturnClassName)}>\n {formatPercent(totalReturnPercent)}\n </p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Unrealized P&L</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", pnlClassName)}>\n {formatSignedCurrency(unrealizedPnl)}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <p className=\"m-0 text-[0.9rem] font-medium text-white/70\">{positionsHeading}</p>\n <div className=\"mt-3\">\n {children ? (\n children\n ) : (\n <p className=\"py-4 text-center text-[0.85rem] text-white/40\">{emptyPositionsText}</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n }\n);\n\nPortfolioSummary.displayName = \"PortfolioSummary\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { type OrderbookLevel } from \"./orderbook\";\n\nexport type HousePositionPendingOrder = {\n type: \"buy\" | \"sell\";\n tokens: number;\n value: number;\n price: number;\n};\n\nexport type HousePositionSliderOrderPayload = {\n side: \"buy\" | \"sell\";\n orderType: \"market\" | \"limit\";\n tokenId: string;\n tokenSymbol: string;\n price: number;\n deltaTokens: number;\n deltaValue: number;\n targetOwnership: number;\n targetTokens: number;\n targetValue: number;\n};\n\nexport type HousePositionOrderbook = {\n bids?: OrderbookLevel[];\n asks?: OrderbookLevel[];\n};\n\nexport interface HousePositionSliderProps extends React.HTMLAttributes<HTMLDivElement> {\n tokenId: string;\n tokenSymbol: string;\n totalTokens: number;\n currentPrice: number;\n availableCash: number;\n tokensHeld: number;\n pendingOrders?: HousePositionPendingOrder[];\n defaultOrderType?: \"market\" | \"limit\";\n orderbook?: HousePositionOrderbook;\n ownershipPercentOverride?: number;\n onConfirmOrder?: (payload: HousePositionSliderOrderPayload) => void;\n}\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\nconst fmt0 = (v: number) => Math.abs(v).toLocaleString(undefined, { maximumFractionDigits: 0 });\n\ntype MarketFillResult = {\n tokens: number;\n value: number;\n avgPrice: number | null;\n};\n\nconst normalizeLevels = (levels: OrderbookLevel[] = []) =>\n levels.filter((level) => Number.isFinite(level.price) && level.price > 0 && Number.isFinite(level.amount) && level.amount > 0);\n\nconst estimateMarketBuyFromUsd = (levels: OrderbookLevel[] = [], usdAmount: number): MarketFillResult => {\n if (!Number.isFinite(usdAmount) || usdAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingUsd = usdAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingUsd <= 0) break;\n const levelValueCapacity = level.amount * level.price;\n const usdToSpend = Math.min(remainingUsd, levelValueCapacity);\n const tokensFromLevel = usdToSpend / level.price;\n tokensFilled += tokensFromLevel;\n spent += usdToSpend;\n remainingUsd -= usdToSpend;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketBuyFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n spent += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketSellFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const bids = normalizeLevels(levels).sort((a, b) => b.price - a.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let received = 0;\n\n for (const level of bids) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n received += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: received,\n avgPrice: tokensFilled > 0 ? received / tokensFilled : null,\n };\n};\n\nexport function HousePositionSlider({\n tokenId,\n tokenSymbol,\n totalTokens,\n currentPrice,\n availableCash,\n tokensHeld,\n pendingOrders = [],\n defaultOrderType = \"market\",\n orderbook,\n ownershipPercentOverride,\n onConfirmOrder,\n className,\n ...props\n}: HousePositionSliderProps) {\n const [orderMode, setOrderMode] = React.useState<\"none\" | \"buy\" | \"sell\">(\"none\");\n const [buyTrackingMode, setBuyTrackingMode] = React.useState<\"dollars\" | \"tokens\">(\"dollars\");\n const [deltaDollars, setDeltaDollars] = React.useState(0);\n const [deltaTokensBuy, setDeltaTokensBuy] = React.useState(0);\n const [deltaTokensSell, setDeltaTokensSell] = React.useState(0);\n const [isDragging, setIsDragging] = React.useState(false);\n const [visualTargetPct, setVisualTargetPct] = React.useState<number | null>(null);\n\n const [orderType, setOrderType] = React.useState<\"market\" | \"limit\">(defaultOrderType);\n const [limitPrice, setLimitPrice] = React.useState(currentPrice);\n const [limitPriceInput, setLimitPriceInput] = React.useState(currentPrice.toFixed(2));\n const [limitPriceDirty, setLimitPriceDirty] = React.useState(false);\n\n const [ownershipInput, setOwnershipInput] = React.useState(\"\");\n const [tokenAmountInput, setTokenAmountInput] = React.useState(\"\");\n\n const houseRef = React.useRef<HTMLDivElement | null>(null);\n\n const asks = orderbook?.asks ?? [];\n const bids = orderbook?.bids ?? [];\n\n React.useEffect(() => {\n if (orderType !== \"limit\") return;\n if (limitPriceDirty) return;\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n }, [currentPrice, limitPriceDirty, orderType]);\n\n const effectivePrice = orderType === \"limit\" ? limitPrice : currentPrice;\n const pendingBuyValue = pendingOrders.filter((o) => o.type === \"buy\").reduce((s, o) => s + o.value, 0);\n const pendingSellTokens = pendingOrders.filter((o) => o.type === \"sell\").reduce((s, o) => s + Math.abs(o.tokens), 0);\n\n const effectiveAvailableCash = Math.max(0, availableCash - pendingBuyValue);\n const effectiveTokensHeld = Math.max(0, tokensHeld - pendingSellTokens);\n\n const holdingsValue = tokensHeld * effectivePrice;\n const safeTotalTokens = totalTokens > 0 ? totalTokens : 1;\n const baselineOwnershipActual = clamp((effectiveTokensHeld / safeTotalTokens) * 100, 0, 100);\n\n let deltaTokens = 0;\n let deltaValue = 0;\n let marketAvgPrice: number | null = null;\n let targetTokens = tokensHeld;\n let targetValue = holdingsValue;\n\n const limitPriceSafe = limitPrice > 0 ? limitPrice : currentPrice || 1;\n\n if (orderMode === \"buy\") {\n if (orderType === \"market\") {\n if (buyTrackingMode === \"tokens\") {\n const desiredTokens = Math.max(0, deltaTokensBuy);\n const result = estimateMarketBuyFromTokens(asks, desiredTokens);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n const result = estimateMarketBuyFromUsd(asks, notional);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n }\n } else {\n if (buyTrackingMode === \"tokens\") {\n deltaTokens = deltaTokensBuy;\n deltaValue = deltaTokensBuy * limitPriceSafe;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n deltaValue = notional;\n deltaTokens = notional / limitPriceSafe;\n }\n }\n } else if (orderMode === \"sell\") {\n if (orderType === \"market\") {\n const tokensToSell = Math.abs(deltaTokensSell);\n const result = estimateMarketSellFromTokens(bids, tokensToSell);\n deltaTokens = -result.tokens;\n deltaValue = -result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n deltaTokens = deltaTokensSell;\n deltaValue = deltaTokensSell * limitPriceSafe;\n }\n }\n\n targetTokens = tokensHeld + deltaTokens;\n targetValue = targetTokens * effectivePrice;\n\n const sliderTargetTokens = clamp(effectiveTokensHeld + deltaTokens, 0, safeTotalTokens);\n const normalizedTargetPct = (sliderTargetTokens / safeTotalTokens) * 100;\n\n const isIncrease = orderMode === \"buy\";\n const hasChange = orderMode !== \"none\" && (Math.abs(deltaTokens) > 0.001 || Math.abs(deltaValue) > 0.01);\n\n const currentOwnership = totalTokens <= 0 ? 0 : clamp((tokensHeld / totalTokens) * 100, 0, 100);\n const targetOwnership = totalTokens <= 0 ? 0 : clamp((targetTokens / totalTokens) * 100, 0, 100);\n\n const ownershipOverrideValue =\n typeof ownershipPercentOverride === \"number\" && Number.isFinite(ownershipPercentOverride)\n ? clamp(ownershipPercentOverride, 0, 100)\n : null;\n const ownershipShift = ownershipOverrideValue != null ? ownershipOverrideValue - baselineOwnershipActual : 0;\n const baselinePct = clamp(ownershipOverrideValue ?? baselineOwnershipActual, 0, 100);\n const impliedTargetPct = clamp(normalizedTargetPct + ownershipShift, 0, 100);\n const displayTargetPct = visualTargetPct ?? impliedTargetPct;\n const targetPct = displayTargetPct;\n const displayCurrentOwnership = clamp(ownershipOverrideValue ?? currentOwnership, 0, 100);\n const impliedDisplayTargetOwnership = clamp(targetOwnership + ownershipShift, 0, 100);\n const displayTargetOwnership = visualTargetPct ?? impliedDisplayTargetOwnership;\n\n const estFeeTokens = (Math.abs(deltaValue) * 0.005) / (effectivePrice || 1);\n\n const resetOrder = React.useCallback(() => {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(null);\n }, []);\n\n const updateOrderFromTargetValue = React.useCallback(\n (newTargetValue: number) => {\n const newDeltaValue = newTargetValue - holdingsValue;\n\n if (newDeltaValue > 0) {\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(Math.min(newDeltaValue, effectiveAvailableCash));\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (newDeltaValue < 0) {\n const newDeltaTokens = newTargetValue / (effectivePrice || 1) - tokensHeld;\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(newDeltaTokens, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, holdingsValue, resetOrder, tokensHeld]\n );\n\n const updateOrderFromOwnership = React.useCallback(\n (newOwnershipPercent: number) => {\n const nextOwnership = clamp(newOwnershipPercent, 0, 100);\n const newTargetTokens = (nextOwnership / 100) * totalTokens;\n updateOrderFromTargetValue(newTargetTokens * effectivePrice);\n setVisualTargetPct(nextOwnership);\n },\n [effectivePrice, totalTokens, updateOrderFromTargetValue]\n );\n\n const updateOrderFromTokenAmount = React.useCallback(\n (tokenAmountSigned: number) => {\n if (tokenAmountSigned > 0) {\n const maxTokens = effectiveAvailableCash / (effectivePrice || 1);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"tokens\");\n setDeltaTokensBuy(Math.min(tokenAmountSigned, maxTokens));\n setDeltaDollars(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (tokenAmountSigned < 0) {\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(tokenAmountSigned, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, resetOrder]\n );\n\n const updateOrderFromSlider = React.useCallback(\n (pct: number) => {\n const normalized = (pct - 50) / 50;\n const magnitude = Math.min(Math.abs(normalized), 1);\n if (magnitude < 0.02) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n if (normalized > 0) {\n const notional = clamp(magnitude * effectiveAvailableCash, 0, effectiveAvailableCash);\n if (notional <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(notional);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n if (normalized < 0) {\n const tokensToSell = clamp(magnitude * effectiveTokensHeld, 0, effectiveTokensHeld);\n if (tokensToSell <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(-tokensToSell);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n resetOrder();\n setVisualTargetPct(null);\n },\n [effectiveAvailableCash, effectiveTokensHeld, resetOrder]\n );\n\n const handleDragAtClientY = React.useCallback(\n (clientY: number) => {\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const y = clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n updateOrderFromSlider(pct);\n },\n [updateOrderFromSlider]\n );\n\n const onMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n setIsDragging(true);\n\n const onMove = (ev: MouseEvent) => handleDragAtClientY(ev.clientY);\n const onUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n const onTouchStart = () => {\n setIsDragging(true);\n\n const onMove = (ev: TouchEvent) => {\n const touch = ev.touches[0];\n if (!touch) return;\n handleDragAtClientY(touch.clientY);\n };\n const onEnd = () => {\n setIsDragging(false);\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onEnd);\n };\n\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onEnd);\n };\n\n const handleCancel = () => {\n resetOrder();\n };\n\n const handleOrderTypeSelection = (next: \"market\" | \"limit\") => {\n setOrderType(next);\n if (next === \"limit\") {\n setLimitPriceDirty(false);\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n } else {\n setLimitPriceDirty(false);\n }\n };\n\n const handleConfirm = () => {\n if (!hasChange) return;\n const priceToUse = orderType === \"market\" ? marketAvgPrice ?? currentPrice : limitPrice;\n onConfirmOrder?.({\n side: isIncrease ? \"buy\" : \"sell\",\n orderType,\n tokenId,\n tokenSymbol,\n price: priceToUse,\n deltaTokens,\n deltaValue,\n targetOwnership,\n targetTokens,\n targetValue,\n });\n handleCancel();\n };\n\n const rectTop = 10;\n const rectBottom = 150;\n const totalFillableHeight = rectBottom - rectTop;\n const baselineFillHeight = (baselinePct / 100) * totalFillableHeight;\n const targetFillHeight = (targetPct / 100) * totalFillableHeight;\n const baselineFillY = rectBottom - baselineFillHeight;\n const targetFillY = rectBottom - targetFillHeight;\n\n const showIncrease = targetPct > baselinePct;\n const showDecrease = targetPct < baselinePct;\n\n const valueLabel = orderType === \"limit\" ? `${tokenSymbol} Owned at Limit` : `${tokenSymbol} Owned`;\n const deltaSign = deltaValue > 0 ? \"+\" : deltaValue < 0 ? \"-\" : \"\";\n const percentMarkers = [100, 50, 25, 0];\n\n return (\n <div className={cn(\"relative flex w-full flex-col items-center gap-6 rounded-[12px] bg-black/20 px-8 pb-6 pt-12\", className)} {...props}>\n <div className=\"absolute left-4 top-4 text-[1.1rem] font-semibold tracking-[0.5px] text-white\">Place Order</div>\n\n {hasChange ? (\n <button\n type=\"button\"\n onClick={handleCancel}\n className=\"absolute right-3 top-3 rounded-[6px] border border-white/20 bg-white/10 px-2.5 py-1.5 text-[0.7rem] text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n ✕ Cancel\n </button>\n ) : null}\n\n <div className=\"text-center\">\n <div className=\"mb-2 text-xs uppercase tracking-[1px] text-[#888]\">{valueLabel}</div>\n <div className=\"flex items-baseline justify-center gap-3\">\n <span\n className={cn(\n \"text-[2.2rem] font-semibold\",\n deltaValue >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n {deltaSign}${fmt0(deltaValue)}\n </span>\n <span className=\"text-lg font-semibold text-white/60\">${fmt0(targetValue)}</span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <div className=\"flex h-[200px] flex-col justify-between text-xs text-white/40\">\n {percentMarkers.map((marker) => (\n <span key={marker}>{marker}%</span>\n ))}\n </div>\n <div\n ref={houseRef}\n className=\"h-[200px] w-[160px] select-none touch-none\"\n style={{ cursor: \"ns-resize\" }}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n >\n <svg viewBox=\"0 0 120 160\" className=\"h-full w-full overflow-visible\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"rgba(255,255,255,0.04)\" stroke=\"rgba(255,255,255,0.10)\" />\n <clipPath id=\"loaf-clip\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" />\n </clipPath>\n <g clipPath=\"url(#loaf-clip)\">\n <rect x=\"10\" y={showDecrease ? targetFillY : baselineFillY} width=\"100\" height={showDecrease ? targetFillHeight : baselineFillHeight} fill=\"rgba(220,175,120,0.7)\" />\n {showIncrease ? (\n <rect x=\"10\" y={targetFillY} width=\"100\" height={targetFillHeight - baselineFillHeight} fill=\"rgba(14,203,129,0.35)\" />\n ) : null}\n {showDecrease ? (\n <rect x=\"10\" y={baselineFillY} width=\"100\" height={baselineFillHeight - targetFillHeight} fill=\"rgba(246,70,93,0.35)\" />\n ) : null}\n <line x1=\"12\" y1={targetFillY} x2=\"108\" y2={targetFillY} stroke={showIncrease ? \"#0ecb81\" : showDecrease ? \"#f6465d\" : \"rgba(234,217,162,1)\"} strokeWidth=\"2\" strokeLinecap=\"round\" />\n </g>\n </svg>\n </div>\n </div>\n\n <button\n type=\"button\"\n disabled={!hasChange}\n onClick={handleConfirm}\n className={cn(\n \"w-full rounded-[10px] px-4 py-4 text-base font-semibold transition\",\n !hasChange\n ? \"cursor-not-allowed bg-white/10 text-white/30\"\n : isIncrease\n ? \"bg-[#0ecb81] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(14,203,129,0.3)]\"\n : \"bg-[#f6465d] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(246,70,93,0.3)]\"\n )}\n >\n {!hasChange ? \"Adjust Position\" : isIncrease ? `Buy $${fmt0(deltaValue)}` : `Sell $${fmt0(deltaValue)}`}\n </button>\n\n <div className=\"w-full border-t border-white/10 py-4 text-[0.85rem]\">\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{tokenSymbol} Ownership</span>\n <span className=\"text-white\">\n {displayCurrentOwnership.toFixed(2)}%\n <span className=\"mx-1.5 text-white/50\">→</span>\n <input\n type=\"text\"\n value={ownershipInput || displayTargetOwnership.toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setOwnershipInput(val);\n }}\n onFocus={() => setOwnershipInput(displayTargetOwnership.toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(ownershipInput);\n if (Number.isFinite(num)) updateOrderFromOwnership(num);\n setOwnershipInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[70px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n displayTargetOwnership >= displayCurrentOwnership\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n </span>\n </div>\n\n {orderType === \"market\" ? null : (\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{isIncrease ? \"Buying\" : \"Selling\"}</span>\n <span className=\"inline-flex items-center gap-1\">\n {orderMode === \"buy\" && buyTrackingMode === \"dollars\" ? <span className=\"mr-1 text-[#0ecb81]\">~</span> : null}\n <input\n type=\"text\"\n value={tokenAmountInput || Math.abs(deltaTokens).toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setTokenAmountInput(val);\n }}\n onFocus={() => setTokenAmountInput(Math.abs(deltaTokens).toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(tokenAmountInput);\n if (Number.isFinite(num) && num >= 0) {\n const signed = isIncrease || orderMode === \"none\" ? num : -num;\n updateOrderFromTokenAmount(signed);\n }\n setTokenAmountInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[90px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n isIncrease\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n <span className={cn(\"font-semibold\", isIncrease ? \"text-[#0ecb81]\" : \"text-[#f6465d]\")}>tokens</span>\n </span>\n </div>\n )}\n\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">Est. Fee</span>\n <span className=\"text-white\">{estFeeTokens.toFixed(6)} {tokenSymbol}</span>\n </div>\n </div>\n\n <div className=\"w-full\">\n <div className=\"mb-4 flex w-full rounded-[8px] bg-white/5 p-[3px]\">\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"market\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"market\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Market\n </button>\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"limit\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"limit\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Limit\n </button>\n </div>\n\n {orderType === \"limit\" ? (\n <div className=\"relative mb-4\">\n <input\n type=\"text\"\n value={limitPriceInput}\n onChange={(e) => {\n const input = e.target.value;\n if (input === \"\" || /^[0-9]*\\.?[0-9]*$/.test(input)) {\n setLimitPriceDirty(true);\n setLimitPriceInput(input);\n const num = Number.parseFloat(input);\n if (Number.isFinite(num) && num > 0) setLimitPrice(num);\n }\n }}\n onBlur={() => {\n const num = Number.parseFloat(limitPriceInput);\n if (Number.isFinite(num) && num > 0) {\n setLimitPriceInput(num.toFixed(2));\n setLimitPrice(num);\n } else {\n setLimitPriceInput(limitPrice.toFixed(2));\n }\n }}\n placeholder=\"Price\"\n className=\"w-full rounded-[8px] border border-white/10 bg-black/30 px-4 py-3 pr-14 text-[0.95rem] text-white outline-none focus:border-[#f0b90b]\"\n />\n <span className=\"absolute right-4 top-1/2 -translate-y-1/2 text-[0.8rem] text-white/50\">USD</span>\n </div>\n ) : null}\n\n <div className=\"flex items-center justify-between text-xs text-white/50\">\n <span>Available: ${availableCash.toLocaleString()}</span>\n <button type=\"button\" className=\"text-[#f0b90b] hover:underline\">\n Add Funds\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\n\nexport type OrderbookSide = \"ask\" | \"bid\";\n\nexport type OrderbookLevel = {\n price: number;\n amount: number;\n depth?: number;\n};\n\nexport type OrderbookTrade = {\n type: \"buy\" | \"sell\";\n price: number;\n amount: number;\n time?: string;\n tradeId?: number;\n};\n\nexport interface OrderbookProps extends React.HTMLAttributes<HTMLDivElement> {\n asks: OrderbookLevel[];\n bids: OrderbookLevel[];\n midPrice: number;\n midChangePercent?: number;\n trades?: OrderbookTrade[];\n priceLabel?: string;\n amountLabel?: string;\n precision?: number;\n amountPrecision?: number;\n defaultTab?: \"orderbook\" | \"trades\";\n onTabChange?: (tab: \"orderbook\" | \"trades\") => void;\n rightHeader?: React.ReactNode;\n}\n\nconst formatNumber = (value: number, precision: number) => value.toFixed(precision);\n\nfunction DepthRow({\n side,\n price,\n amount,\n depthPct,\n precision,\n amountPrecision,\n}: {\n side: OrderbookSide;\n price: number;\n amount: number;\n depthPct: number;\n precision: number;\n amountPrecision: number;\n}) {\n const isAsk = side === \"ask\";\n\n return (\n <div className=\"relative grid grid-cols-2 items-center gap-3 px-3 py-1.5\">\n <div\n className={cn(\n \"absolute inset-y-0 right-0\",\n isAsk ? \"bg-rose-900/30\" : \"bg-emerald-900/30\"\n )}\n style={{ width: `${clamp(depthPct, 0, 100)}%` }}\n />\n\n <div className={cn(\"relative z-[1] tabular-nums\", isAsk ? \"text-[#f6465d]\" : \"text-[#0ecb81]\")}\n >\n ${formatNumber(price, precision)}\n </div>\n <div className=\"relative z-[1] text-right tabular-nums text-white/90\">{formatNumber(amount, amountPrecision)}</div>\n </div>\n );\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\nconst LEVEL_ROWS_VISIBLE = 6;\nconst DEPTH_ROW_HEIGHT_PX = 34;\nconst SECTION_HEIGHT = LEVEL_ROWS_VISIBLE * DEPTH_ROW_HEIGHT_PX;\n\nexport const Orderbook = React.forwardRef<HTMLDivElement, OrderbookProps>(\n (\n {\n asks,\n bids,\n midPrice,\n midChangePercent,\n trades = [],\n priceLabel = \"Price (USD)\",\n amountLabel = \"Amount\",\n precision = 2,\n amountPrecision = 2,\n defaultTab = \"orderbook\",\n onTabChange,\n rightHeader,\n className,\n ...props\n },\n ref\n ) => {\n const [tab, setTab] = React.useState<\"orderbook\" | \"trades\">(defaultTab);\n const [tradeFilter, setTradeFilter] = React.useState<\"all\" | \"buy\" | \"sell\">(\"all\");\n\n React.useEffect(() => {\n setTab(defaultTab);\n }, [defaultTab]);\n\n const handleTab = (next: \"orderbook\" | \"trades\") => {\n setTab(next);\n onTabChange?.(next);\n };\n\n const maxAskDepth = Math.max(1, ...asks.map((l) => l.depth ?? l.amount));\n const maxBidDepth = Math.max(1, ...bids.map((l) => l.depth ?? l.amount));\n\n const midClass =\n midChangePercent == null\n ? \"text-white\"\n : midChangePercent >= 0\n ? \"text-[#0ecb81]\"\n : \"text-[#f6465d]\";\n\n const tradeFiltered = trades.filter((t) => tradeFilter === \"all\" || t.type === tradeFilter);\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[520px] overflow-hidden rounded-[12px] border border-white/10 bg-black/30 text-white shadow-md\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between px-4 pt-4\">\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => handleTab(\"orderbook\")}\n className={cn(\n \"relative pb-2 text-sm font-semibold\",\n tab === \"orderbook\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Orderbook\n {tab === \"orderbook\" ? <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" /> : null}\n </button>\n <button\n type=\"button\"\n onClick={() => handleTab(\"trades\")}\n className={cn(\n \"relative pb-2 text-sm font-medium\",\n tab === \"trades\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Trades\n {tab === \"trades\" ? <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" /> : null}\n </button>\n </div>\n\n {tab === \"trades\" ? (\n <div className=\"flex items-center gap-1 text-xs\">\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"all\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"all\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n All\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"buy\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"buy\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Buy\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"sell\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"sell\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Sell\n </button>\n </div>\n ) : (\n <div className=\"flex items-center gap-3\">{rightHeader}</div>\n )}\n </div>\n\n <div className=\"px-4 pb-3 pt-2\">\n <div className=\"grid grid-cols-2 gap-3 px-3 py-2 text-xs text-white/60\">\n <div>{priceLabel}</div>\n <div className=\"text-right\">{amountLabel}</div>\n </div>\n\n {tab === \"trades\" ? (\n <div\n className=\"max-h-[380px] overflow-y-auto overflow-x-hidden\"\n style={{ scrollbarGutter: \"stable\" }}\n >\n {tradeFiltered.length === 0 ? (\n <div className=\"px-3 py-10 text-center text-sm text-white/50\">No trades</div>\n ) : (\n <div className=\"divide-y divide-white/5\">\n {tradeFiltered.map((trade, i) => (\n <div key={`${trade.type}-${trade.price}-${trade.amount}-${trade.time ?? i}`} className=\"grid grid-cols-2 items-center gap-3 px-3 py-1.5\">\n <div\n className={cn(\n \"tabular-nums\",\n trade.type === \"buy\" ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n ${formatNumber(trade.price, precision)}\n </div>\n <div className=\"text-right tabular-nums text-white/90\">{formatNumber(trade.amount, amountPrecision)}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n ) : (\n <>\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${SECTION_HEIGHT}px`, scrollbarGutter: \"stable\" }}\n >\n {asks.map((l, idx) => (\n <DepthRow\n key={`ask-${idx}-${l.price}-${l.amount}`}\n side=\"ask\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxAskDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n\n <div className=\"mt-2 grid grid-cols-2 items-center gap-3 bg-[#0b1a24] px-3 py-2\">\n <div className={cn(\"text-lg font-semibold tabular-nums\", midClass)}>\n ${formatNumber(midPrice, precision)}\n {midChangePercent == null ? null : (\n <span className=\"ml-2 text-sm font-semibold\">{midChangePercent >= 0 ? \"+\" : \"\"}{midChangePercent.toFixed(2)}%</span>\n )}\n </div>\n <div />\n </div>\n\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${SECTION_HEIGHT}px`, scrollbarGutter: \"stable\" }}\n >\n {bids.map((l, idx) => (\n <DepthRow\n key={`bid-${idx}-${l.price}-${l.amount}`}\n side=\"bid\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxBidDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n </>\n )}\n </div>\n </Card>\n );\n }\n);\n\nOrderbook.displayName = \"Orderbook\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PropertyTourProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title: string;\n src: string;\n poster?: string;\n autoPlay?: boolean;\n muted?: boolean;\n loop?: boolean;\n controls?: boolean;\n playsInline?: boolean;\n};\n\ntype FullscreenDocument = Document & {\n webkitFullscreenElement?: Element | null;\n mozFullScreenElement?: Element | null;\n msFullscreenElement?: Element | null;\n};\n\nexport const PropertyTour = React.forwardRef<HTMLDivElement, PropertyTourProps>(\n (\n {\n className,\n title,\n src,\n poster,\n autoPlay = true,\n muted = true,\n loop = true,\n controls = true,\n playsInline = true,\n ...props\n },\n ref\n ) => {\n const videoRef = React.useRef<HTMLVideoElement | null>(null);\n\n React.useEffect(() => {\n const video = videoRef.current;\n if (!video) return;\n\n const handleFullscreenChange = () => {\n const d = document as FullscreenDocument;\n const isFullscreen = !!(\n d.fullscreenElement ||\n d.webkitFullscreenElement ||\n d.mozFullScreenElement ||\n d.msFullscreenElement\n );\n\n if (isFullscreen) {\n video.style.objectFit = \"contain\";\n video.style.width = \"100vw\";\n video.style.height = \"100vh\";\n video.style.position = \"fixed\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"9999\";\n } else {\n video.style.objectFit = \"cover\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.position = \"absolute\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"auto\";\n }\n };\n\n video.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n return () => {\n video.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n };\n }, []);\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[820px] rounded-[12px] border border-white/10 bg-black/30 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"px-6 pb-0 pt-6\">\n <CardTitle className=\"m-0 text-lg font-semibold text-white\">{title}</CardTitle>\n </CardHeader>\n\n <div className=\"px-6 pb-6 pt-5\">\n <div className=\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\">\n <video\n ref={videoRef}\n className=\"absolute inset-0 h-full w-full object-cover object-center\"\n controls={controls}\n loop={loop}\n autoPlay={autoPlay}\n muted={muted}\n playsInline={playsInline}\n poster={poster}\n >\n <source src={src} />\n Your browser does not support the video tag.\n </video>\n </div>\n </div>\n </Card>\n );\n }\n);\n\nPropertyTour.displayName = \"PropertyTour\";\n","import * as React from \"react\";\n\nimport { Newspaper } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyNewsType = \"property\" | \"market\" | (string & {});\n\nexport type PropertyNewsItem = {\n id?: string;\n title: string;\n date: string | Date;\n type?: PropertyNewsType;\n displayId?: string;\n isNew?: boolean;\n};\n\nexport interface PropertyNewsUpdatesProps extends React.HTMLAttributes<HTMLDivElement> {\n items: PropertyNewsItem[];\n heading?: string;\n subheading?: string;\n emptyState?: React.ReactNode;\n highlightFirst?: boolean;\n}\n\nconst ITEMS_PER_PAGE = 4;\nconst ROW_HEIGHT_PX = 86;\n\nconst ensureAnimationsInjected = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(\"property-news-updates-animations\")) return;\n const style = document.createElement(\"style\");\n style.id = \"property-news-updates-animations\";\n style.textContent = `\n @keyframes propertyNewsPulse {\n 0% { opacity: 0.6; transform: scale(0.9); }\n 50% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0.6; transform: scale(0.9); }\n }\n\n @keyframes propertyNewsSlideIn {\n from { transform: translateY(-6px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n};\n\nconst categoryStyles = {\n property: {\n label: \"Property Update\",\n backgroundColor: \"rgba(14, 203, 129, 0.15)\",\n borderColor: \"rgba(14, 203, 129, 0.45)\",\n color: \"#0ecb81\",\n },\n market: {\n label: \"Market News\",\n backgroundColor: \"rgba(248, 209, 47, 0.15)\",\n borderColor: \"rgba(248, 209, 47, 0.45)\",\n color: \"#f8d12f\",\n },\n} as const;\n\nconst formatDate = (value: string | Date) => {\n if (typeof value === \"string\") return value;\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) return \"\";\n return value.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n};\n\nexport const PropertyNewsUpdates = React.forwardRef<HTMLDivElement, PropertyNewsUpdatesProps>(\n (\n {\n className,\n heading = \"Property News & Headlines\",\n subheading,\n items,\n emptyState,\n highlightFirst = true,\n ...props\n },\n ref\n ) => {\n const [page, setPage] = React.useState(0);\n\n React.useEffect(() => {\n ensureAnimationsInjected();\n }, []);\n\n const hasItems = Array.isArray(items) && items.length > 0;\n const totalPages = React.useMemo(() => (hasItems ? Math.max(1, Math.ceil(items.length / ITEMS_PER_PAGE)) : 1), [hasItems, items.length]);\n\n React.useEffect(() => {\n setPage((prev) => Math.min(prev, totalPages - 1));\n }, [totalPages]);\n\n const paginatedItems = hasItems\n ? items.slice(page * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE + ITEMS_PER_PAGE)\n : [];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-[840px] rounded-2xl border border-white/10 bg-[#0b0e10] p-5 text-white shadow-[0_20px_40px_rgba(0,0,0,0.35)]\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-lg font-semibold text-white\">{heading}</p>\n {subheading ? <p className=\"text-sm text-white/60\">{subheading}</p> : null}\n </div>\n <div\n className=\"inline-flex items-center font-semibold uppercase text-emerald-300\"\n style={{ gap: \"0.35rem\", fontSize: \"0.8rem\", letterSpacing: \"0.15em\" }}\n >\n <span\n style={{\n display: \"inline-block\",\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n backgroundColor: \"#34d399\",\n animation: \"propertyNewsPulse 2s infinite\",\n }}\n />\n LIVE\n </div>\n </div>\n\n <div\n className=\"mt-4 flex flex-col gap-3\"\n style={{ minHeight: `${ITEMS_PER_PAGE * ROW_HEIGHT_PX}px` }}\n >\n {hasItems\n ? paginatedItems.map((item, index) => {\n const absoluteIndex = page * ITEMS_PER_PAGE + index;\n const key = item.displayId ?? item.id ?? `${item.title}-${absoluteIndex}`;\n const styles =\n categoryStyles[item.type as keyof typeof categoryStyles] ?? categoryStyles.market;\n const dateLabel =\n (item.isNew ?? (highlightFirst && absoluteIndex === 0))\n ? \"Just now\"\n : typeof item.date === \"string\" && item.date.trim().length > 0\n ? item.date\n : formatDate(item.date);\n const isHighlighted = item.isNew ?? (highlightFirst && absoluteIndex === 0);\n\n return (\n <div\n key={key}\n style={{\n padding: \"0.75rem\",\n borderRadius: \"6px\",\n backgroundColor: isHighlighted ? \"rgba(14, 203, 129, 0.1)\" : \"transparent\",\n border: \"1px solid transparent\",\n transition: \"background-color 0.2s\",\n animation: item.isNew ? \"propertyNewsSlideIn 0.5s ease-out\" : undefined,\n }}\n >\n <p style={{ fontSize: \"0.9375rem\", fontWeight: 500, marginBottom: \"0.35rem\" }}>\n {item.title}\n </p>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.75rem\",\n color: \"#b5b8c5\",\n }}\n >\n <span style={{ color: isHighlighted ? \"#0ecb81\" : \"inherit\" }}>{dateLabel}</span>\n <span\n style={{\n padding: \"0.25rem 0.6rem\",\n borderRadius: \"4px\",\n border: `1px solid ${styles.borderColor}`,\n backgroundColor: styles.backgroundColor,\n color: styles.color,\n fontSize: \"0.68rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n }}\n >\n {item.type === \"property\" ? styles.label : \"Market News\"}\n </span>\n </div>\n </div>\n );\n })\n : emptyState ?? (\n <div className=\"flex flex-col items-center justify-center rounded-2xl border border-dashed border-white/20 px-6 py-10 text-center text-sm text-white/60\">\n <Newspaper className=\"mb-3 h-8 w-8 text-white/40\" />\n No property news yet. Updates will land here as soon as we receive new intelligence.\n </div>\n )}\n </div>\n\n {hasItems && totalPages > 1 ? (\n <div className=\"mt-4 flex items-center justify-between text-xs text-white/60\">\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.max(0, prev - 1))}\n disabled={page === 0}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page === 0 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Prev\n </button>\n <span className=\"font-medium text-white/70\">\n Page {page + 1} / {totalPages}\n </span>\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.min(totalPages - 1, prev + 1))}\n disabled={page >= totalPages - 1}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page >= totalPages - 1 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Next\n </button>\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertyNewsUpdates.displayName = \"PropertyNewsUpdates\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\n\nexport type PropertyAddressOption = {\n id: string;\n label: string;\n};\n\nexport type PropertyCompareBarProps = React.HTMLAttributes<HTMLDivElement> & {\n addresses: (PropertyAddressOption | string)[];\n selectedAddressId?: string;\n onSelectAddress?: (addressId: string) => void;\n compareLabel?: string;\n onCompareClick?: () => void;\n compareIcon?: React.ReactNode;\n};\n\nexport const PropertyCompareBar = React.forwardRef<HTMLDivElement, PropertyCompareBarProps>(\n (\n {\n className,\n addresses,\n selectedAddressId,\n onSelectAddress,\n compareLabel = \"Compare\",\n onCompareClick,\n compareIcon,\n ...props\n },\n ref\n ) => {\n const normalizedAddresses = React.useMemo<PropertyAddressOption[]>(() => {\n return addresses.map((option) =>\n typeof option === \"string\" ? { id: option, label: option } : option\n );\n }, [addresses]);\n\n const hasAddresses = normalizedAddresses.length > 0;\n const firstAddressId = normalizedAddresses[0]?.id;\n\n const isControlled = selectedAddressId !== undefined;\n\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(() =>\n isControlled ? undefined : firstAddressId\n );\n\n const resolvedSelectedId = isControlled ? selectedAddressId : internalSelectedId;\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalSelectedId((current) => {\n if (current != null && normalizedAddresses.some((option) => option.id === current)) {\n return current;\n }\n\n return firstAddressId;\n });\n }\n }, [firstAddressId, isControlled, normalizedAddresses]);\n\n const selectedOption =\n normalizedAddresses.find((option) => option.id === resolvedSelectedId) ?? normalizedAddresses[0];\n\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!isDropdownOpen) return;\n\n const handleClick = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsDropdownOpen(false);\n }\n };\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsDropdownOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [isDropdownOpen]);\n\n const defaultCompareIcon = (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4 4h7v7H4V4zm0 9h7v7H4v-7zm9-9h7v7h-7V4zm0 9h7v7h-7v-7z\" />\n </svg>\n );\n\n const handleAddressSelect = (addressId: string) => {\n if (!isControlled) {\n setInternalSelectedId(addressId);\n }\n onSelectAddress?.(addressId);\n setIsDropdownOpen(false);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col gap-3 border border-white/10 px-4 py-3 text-white shadow-[0_18px_40px_rgba(0,0,0,0.55)] md:flex-row md:items-center md:justify-between md:gap-4\",\n className\n )}\n style={{ borderRadius: \"16px\" }}\n {...props}\n >\n <div className=\"relative w-auto\" ref={dropdownRef}>\n <button\n type=\"button\"\n disabled={!hasAddresses}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n className={cn(\n \"flex h-[42px] w-auto items-center gap-2 rounded-[12px] border border-transparent bg-transparent px-0 text-left text-[15px] font-semibold text-white transition hover:text-white/80 focus-visible:outline-none\",\n !hasAddresses && \"text-white/40\"\n )}\n >\n <span className=\"truncate\">\n {selectedOption ? selectedOption.label : hasAddresses ? \"Select address\" : \"No addresses available\"}\n </span>\n <span className=\"ml-3 flex items-center text-white/60 transition-transform\" aria-hidden>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"transition-transform\", isDropdownOpen && \"rotate-180\")}\n >\n <path d=\"M7 10l5 5 5-5H7z\" />\n </svg>\n </span>\n </button>\n\n {isDropdownOpen && hasAddresses ? (\n <div className=\"absolute left-0 top-[calc(100%+8px)] z-20 w-full rounded-[12px] border border-white/10 py-1 shadow-[0_25px_55px_rgba(0,0,0,0.6)] bg-black\">\n {normalizedAddresses.map((option) => {\n const active = option.id === resolvedSelectedId;\n return (\n <button\n key={option.id}\n type=\"button\"\n className={cn(\n \"flex w-full items-center px-4 py-2 text-left text-[14px] text-white/80 transition hover:bg-white/5 hover:text-white\",\n active && \"text-white\"\n )}\n onClick={() => handleAddressSelect(option.id)}\n >\n {option.label}\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n\n <Button\n variant=\"accentOutline\"\n size=\"sm\"\n className=\"flex items-center justify-center gap-2 rounded-[10px] border-[var(--color-accent,#e6c87e)] bg-transparent px-4 py-2 text-[14px] font-semibold text-[var(--color-accent,#e6c87e)] transition hover:bg-[rgba(230,200,126,0.08)] md:ml-auto\"\n onClick={onCompareClick}\n disabled={!hasAddresses}\n >\n <span className=\"text-base\">{compareIcon ?? defaultCompareIcon}</span>\n {compareLabel}\n </Button>\n </div>\n );\n }\n);\n\nPropertyCompareBar.displayName = \"PropertyCompareBar\";\n","import * as React from \"react\";\n\nexport type YourOrderSide = \"buy\" | \"sell\";\n\nexport type YourOrder = {\n id: string;\n asset: string;\n side?: YourOrderSide;\n date?: string;\n price: number;\n amount: number;\n total: number;\n filledPercent?: number;\n status?: string;\n propertyPercent?: number;\n portfolioSharePercent?: number;\n avgEntryPrice?: number;\n pnlValue?: number;\n pnlPercent?: number;\n holdingLabel?: string;\n value?: number;\n currentPrice?: number;\n priceChangePercent?: number;\n priceChangePositive?: boolean;\n};\n\nexport type YourOrdersProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: string;\n orders: YourOrder[];\n renderOrderActions?: (order: YourOrder) => React.ReactNode;\n};\n\nconst TABS = [\n { id: \"portfolio\", label: \"Portfolio\" },\n { id: \"openOrders\", label: \"Open Orders\" },\n { id: \"tradeHistory\", label: \"Trade History\" },\n { id: \"orderHistory\", label: \"Order History\" },\n] as const;\n\nconst panelStyle: React.CSSProperties = {\n width: \"100%\",\n borderRadius: \"16px\",\n backgroundColor: \"#111111\",\n border: \"1px solid rgba(255,255,255,0.08)\",\n color: \"#ffffff\",\n display: \"flex\",\n flexDirection: \"column\",\n};\n\nconst headerStyle: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 0.5rem\",\n};\n\nconst titleStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"1.1rem\",\n fontWeight: 600,\n};\n\nconst tabsRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: \"0.5rem\",\n padding: \"0 1.5rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst tabButtonBase: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n color: \"rgba(255,255,255,0.5)\",\n fontSize: \"0.9rem\",\n fontWeight: 400,\n padding: \"0.75rem 1rem\",\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"color 0.2s ease\",\n};\n\nconst tabContentWrapper: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 1.5rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.75rem\",\n flex: 1,\n};\n\nconst tableHeaderStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n paddingBottom: \"0.75rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.1)\",\n minWidth: \"700px\",\n};\n\nconst tableHeaderCell: React.CSSProperties = {\n fontSize: \"0.7rem\",\n fontWeight: 700,\n color: \"#ffffff\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.3px\",\n};\n\nconst emptyStateStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n color: \"rgba(255,255,255,0.6)\",\n fontSize: \"0.95rem\",\n border: \"1px dashed rgba(255,255,255,0.12)\",\n borderRadius: \"8px\",\n minHeight: \"220px\",\n};\n\nconst rowStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n minWidth: \"700px\",\n padding: \"0.75rem 0\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst formatCurrency = (value?: number) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `$${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\nconst formatPercent = (value?: number, fractionDigits = 2) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `${value.toFixed(fractionDigits)}%`;\n};\n\nexport const YourOrders = React.forwardRef<HTMLDivElement, YourOrdersProps>(\n ({ className, title = \"Portfolio Holdings (Demo)\", orders, renderOrderActions, ...props }, ref) => {\n const [activeTab, setActiveTab] = React.useState<(typeof TABS)[number][\"id\"]>(\"portfolio\");\n\n const hasOrders = Array.isArray(orders) && orders.length > 0;\n\n const renderPortfolio = () => {\n if (!hasOrders) {\n return <div style={emptyStateStyle}>No holdings yet. Start trading to build your portfolio.</div>;\n }\n\n return (\n <>\n <div style={tableHeaderStyle}>\n <div style={tableHeaderCell}>Property</div>\n <div style={tableHeaderCell}>Value</div>\n <div style={tableHeaderCell}>Holding</div>\n <div style={tableHeaderCell}>% of Property</div>\n <div style={tableHeaderCell}>Avg Price</div>\n <div style={tableHeaderCell}>P&L</div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.65rem\" }}>\n {orders.map((order) => {\n const propertyName = order.asset;\n const holding =\n order.holdingLabel ??\n `${order.amount.toLocaleString(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })} ${propertyName}`;\n const value = order.value ?? order.total;\n const portfolioShare =\n order.portfolioSharePercent != null\n ? `${order.portfolioSharePercent.toFixed(1)}% of portfolio`\n : undefined;\n const propertyPercent = order.propertyPercent;\n const avgPrice = order.avgEntryPrice ?? order.price;\n const pnlValue = order.pnlValue;\n const pnlPercent = order.pnlPercent;\n const pnlPositive = pnlValue != null ? pnlValue >= 0 : (pnlPercent ?? 0) >= 0;\n const currentPrice = order.currentPrice ?? order.price;\n const priceChangePercent = order.priceChangePercent ?? order.pnlPercent;\n const priceChangePositive =\n order.priceChangePositive ?? (priceChangePercent != null ? priceChangePercent >= 0 : undefined);\n\n return (\n <div key={order.id} style={{ ...rowStyle, gridTemplateColumns: renderOrderActions ? \"1.8fr 0.8fr 0.7fr 0.8fr 0.8fr 0.9fr 0.8fr\" : \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\" }}>\n <div style={{ display: \"flex\", gap: \"1rem\", alignItems: \"center\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.15rem\" }}>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500 }}>{propertyName}</div>\n {portfolioShare ? (\n <div style={{ fontSize: \"0.72rem\", color: \"rgba(255,255,255,0.5)\" }}>{portfolioShare}</div>\n ) : null}\n </div>\n {currentPrice != null ? (\n <div>\n <div\n style={{\n fontSize: \"0.9rem\",\n color: \"var(--color-text, #ffffff)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n }}\n >\n {priceChangePositive != null ? (\n <span\n style={{\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n fontSize: \"0.7em\",\n }}\n >\n {priceChangePositive ? \"▲\" : \"▼\"}\n </span>\n ) : null}\n {formatCurrency(currentPrice)}\n </div>\n {priceChangePercent != null ? (\n <div\n style={{\n fontSize: \"0.7rem\",\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n ({priceChangePositive ? \"+\" : \"\"}\n {priceChangePercent.toFixed(2)}%)\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500, color: \"#D4AF37\" }}>{formatCurrency(value)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.92)\" }}>{holding}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.8)\" }}>{formatPercent(propertyPercent, 3)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.9)\" }}>{formatCurrency(avgPrice)}</div>\n <div\n style={{\n fontSize: \"0.9rem\",\n fontWeight: 500,\n color: pnlPositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n {pnlValue != null ? `${pnlPositive ? \"+\" : \"-\"}${formatCurrency(Math.abs(pnlValue))}` : formatCurrency(pnlValue)}\n {pnlPercent != null ? (\n <span style={{ marginLeft: \"0.35rem\", fontSize: \"0.75rem\", color: \"rgba(255,255,255,0.6)\" }}>\n ({pnlPositive ? \"+\" : \"\"}\n {pnlPercent.toFixed(1)}%)\n </span>\n ) : null}\n </div>\n {renderOrderActions ? <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>{renderOrderActions(order)}</div> : null}\n </div>\n );\n })}\n </div>\n </>\n );\n };\n\n const renderOtherTab = (label: string) => (\n <div style={emptyStateStyle}>{`No ${label.toLowerCase()} data available.`}</div>\n );\n\n let tabContent: React.ReactNode = null;\n switch (activeTab) {\n case \"portfolio\":\n tabContent = renderPortfolio();\n break;\n case \"openOrders\":\n tabContent = renderOtherTab(\"Open Orders\");\n break;\n case \"tradeHistory\":\n tabContent = renderOtherTab(\"Trade History\");\n break;\n case \"orderHistory\":\n tabContent = renderOtherTab(\"Order History\");\n break;\n default:\n tabContent = null;\n }\n\n return (\n <div ref={ref} style={panelStyle} className={className} {...props}>\n <div style={headerStyle}>\n <h3 style={titleStyle}>{title}</h3>\n </div>\n\n <div style={tabsRowStyle}>\n {TABS.map((tab) => {\n const isActive = activeTab === tab.id;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n style={{\n ...tabButtonBase,\n color: isActive ? \"#ffffff\" : \"rgba(255,255,255,0.55)\",\n fontWeight: isActive ? 600 : 400,\n }}\n >\n {tab.label}\n {isActive ? (\n <div\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n left: 0,\n right: 0,\n height: \"2px\",\n background: \"#f0b90b\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div style={tabContentWrapper}>{tabContent}</div>\n </div>\n );\n }\n);\n\nYourOrders.displayName = \"YourOrders\";\n","import * as React from \"react\";\nimport {\n createChart,\n type IChartApi,\n type IPriceLine,\n type ISeriesApi,\n type Time,\n} from \"lightweight-charts\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PriceChartRange = \"1D\" | \"1W\" | \"1M\" | \"3M\" | \"1Y\";\n\nexport type PriceChartCandle = {\n time: Time;\n open: number;\n high: number;\n low: number;\n close: number;\n};\n\nexport type PriceChartProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title?: string;\n ranges?: PriceChartRange[];\n selectedRange?: PriceChartRange;\n onRangeChange?: (range: PriceChartRange) => void;\n data: PriceChartCandle[];\n price?: number;\n changePercent?: number;\n currencySymbol?: string;\n height?: number;\n};\n\nconst defaultRanges: PriceChartRange[] = [\"1D\", \"1W\", \"1M\", \"3M\", \"1Y\"];\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\nexport const PriceChart = React.forwardRef<HTMLDivElement, PriceChartProps>(\n (\n {\n className,\n title = \"Price Chart\",\n ranges = defaultRanges,\n selectedRange,\n onRangeChange,\n data,\n price,\n changePercent,\n currencySymbol = \"$\",\n height = 301.52,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const chartRef = React.useRef<IChartApi | null>(null);\n const seriesRef = React.useRef<ISeriesApi<\"Candlestick\"> | null>(null);\n const priceLineRef = React.useRef<IPriceLine | null>(null);\n const [hoveredRange, setHoveredRange] = React.useState<PriceChartRange | null>(null);\n\n const resolvedPrice = React.useMemo(() => {\n if (price != null) return price;\n const last = data.at(-1);\n return last?.close;\n }, [data, price]);\n\n const inferredChangePercent = React.useMemo(() => {\n if (changePercent != null) return changePercent;\n const first = data[0]?.open;\n const last = data.at(-1)?.close;\n if (first == null || last == null || first === 0) return undefined;\n return ((last - first) / first) * 100;\n }, [changePercent, data]);\n\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const chart = createChart(el, {\n autoSize: true,\n layout: {\n background: { color: \"transparent\" },\n textColor: \"rgba(255,255,255,0.55)\",\n fontFamily: \"inherit\",\n },\n grid: {\n vertLines: { color: \"rgba(255,255,255,0.06)\" },\n horzLines: { color: \"rgba(255,255,255,0.06)\" },\n },\n rightPriceScale: {\n borderColor: \"rgba(230, 200, 126, 0.25)\",\n textColor: \"rgba(230, 200, 126, 0.7)\",\n },\n timeScale: {\n borderColor: \"rgba(255,255,255,0.06)\",\n timeVisible: true,\n secondsVisible: false,\n },\n crosshair: {\n vertLine: { color: \"rgba(255,255,255,0.12)\" },\n horzLine: { color: \"rgba(255,255,255,0.12)\" },\n },\n });\n\n const series = chart.addCandlestickSeries({\n upColor: \"#0ecb81\",\n downColor: \"#f6465d\",\n borderVisible: false,\n wickUpColor: \"#0ecb81\",\n wickDownColor: \"#f6465d\",\n });\n\n chartRef.current = chart;\n seriesRef.current = series;\n\n return () => {\n chartRef.current = null;\n seriesRef.current = null;\n chart.remove();\n };\n }, []);\n\n React.useEffect(() => {\n const chart = chartRef.current;\n const series = seriesRef.current;\n if (!chart || !series) return;\n\n series.setData(data);\n\n if (priceLineRef.current) {\n series.removePriceLine(priceLineRef.current);\n priceLineRef.current = null;\n }\n\n if (resolvedPrice != null) {\n const priceLineColor = \"rgba(230, 200, 126, 0.9)\";\n\n priceLineRef.current = series.createPriceLine({\n price: resolvedPrice,\n color: priceLineColor,\n lineWidth: 1,\n lineStyle: 2,\n axisLabelVisible: true,\n title: resolvedPrice.toFixed(2),\n });\n }\n\n chart.timeScale().fitContent();\n }, [data, resolvedPrice]);\n\n const sign = inferredChangePercent == null ? null : inferredChangePercent >= 0 ? \"+\" : \"\";\n const changeClass =\n inferredChangePercent == null ? \"\" : inferredChangePercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n const badgeClass =\n inferredChangePercent == null\n ? \"\"\n : inferredChangePercent >= 0\n ? \"bg-[#0ecb81]/15 text-[#0ecb81]\"\n : \"bg-[#f6465d]/15 text-[#f6465d]\";\n\n const btnBaseStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-card-dark, rgba(255, 255, 255, 0.05))\",\n borderColor: \"var(--color-border, rgba(255, 255, 255, 0.12))\",\n color: \"var(--color-text-secondary, rgba(255, 255, 255, 0.7))\",\n };\n\n const btnHoverStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent-dark, rgba(230, 200, 126, 0.15))\",\n color: \"var(--color-text, #ffffff)\",\n };\n\n const btnActiveStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent, #e6c87e)\",\n borderColor: \"var(--color-accent, #e6c87e)\",\n color: \"#000000\",\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full min-h-[450px] rounded-lg border border-white/10 bg-black/30 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"flex flex-row items-start justify-between gap-4 px-6 pb-2 pt-6\">\n <div>\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">{title}</CardTitle>\n <div className=\"mt-3 flex items-center gap-2\">\n {ranges.map((r) => {\n const active = r === selectedRange;\n const hovered = hoveredRange === r;\n const style: React.CSSProperties = {\n ...btnBaseStyle,\n ...(hovered ? btnHoverStyle : null),\n ...(active ? btnActiveStyle : null),\n };\n return (\n <button\n key={r}\n type=\"button\"\n onClick={() => onRangeChange?.(r)}\n onMouseEnter={() => setHoveredRange(r)}\n onMouseLeave={() => setHoveredRange((prev) => (prev === r ? null : prev))}\n style={style}\n className={cn(\n \"rounded border px-3 py-1 text-[0.85rem] font-medium transition-all duration-200\"\n )}\n >\n {r}\n </button>\n );\n })}\n </div>\n </div>\n\n <div className=\"flex items-center gap-3\">\n {resolvedPrice == null ? null : (\n <div className={cn(\"text-xl font-semibold tabular-nums\", changeClass)}>\n {formatPrice(resolvedPrice, currencySymbol)}\n </div>\n )}\n {inferredChangePercent == null ? null : (\n <div className={cn(\"rounded-md px-2 py-1 text-xs font-semibold tabular-nums\", badgeClass)}>\n {sign}\n {inferredChangePercent?.toFixed(2)}%\n </div>\n )}\n </div>\n </CardHeader>\n\n <div className=\"px-6 pb-6 pt-2\">\n <div\n ref={containerRef}\n className=\"w-full overflow-hidden rounded-lg\"\n style={{ height }}\n />\n </div>\n </Card>\n );\n }\n);\n\nPriceChart.displayName = \"PriceChart\";\n","import * as React from \"react\";\n\nimport { BedDouble, Bath, CarFront } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyHeroHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n imageUrl: string;\n imageAlt?: string;\n name: string;\n location: string;\n price?: number;\n currencySymbol?: string;\n changePercent?: number;\n beds?: number;\n baths?: number;\n cars?: number;\n propertyTypeLabel?: string;\n onTrade?: () => void;\n onMakeOffer?: () => void;\n};\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 3,\n maximumFractionDigits: 3,\n })}`;\n};\n\nexport const PropertyHeroHeader = React.forwardRef<HTMLDivElement, PropertyHeroHeaderProps>(\n (\n {\n className,\n imageUrl,\n imageAlt,\n name,\n location,\n price,\n currencySymbol = \"$\",\n changePercent,\n beds,\n baths,\n cars,\n propertyTypeLabel,\n onTrade,\n onMakeOffer,\n ...props\n },\n ref\n ) => {\n const isPositive = changePercent == null ? undefined : changePercent >= 0;\n const accentColor = \"#e6c87e\";\n const tradeHoverColor = \"#f5dd9a\";\n const [isTradeInteracting, setIsTradeInteracting] = React.useState(false);\n const [isOfferInteracting, setIsOfferInteracting] = React.useState(false);\n\n const makeOfferHighlight = \"rgba(230, 200, 126, 0.15)\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative w-full overflow-hidden bg-black h-[500px] rounded-[12px] max-[768px]:h-[400px] max-[768px]:rounded-lg max-[480px]:h-[350px] max-[480px]:rounded-md\",\n className\n )}\n {...props}\n >\n <img\n src={imageUrl}\n alt={imageAlt ?? name}\n className=\"h-full w-full object-cover object-center block max-w-none min-w-[120%] min-h-[120%]\"\n style={{ transform: \"scale(1.0)\", transformOrigin: \"center\" }}\n />\n\n <div className=\"absolute bottom-0 left-0 right-0 flex w-full items-end justify-between p-8 max-[768px]:flex-col max-[768px]:items-start max-[768px]:gap-4 max-[768px]:p-6 max-[480px]:p-4\">\n <div className=\"inline-block w-auto max-w-[70%] rounded-lg bg-black/15 px-4 py-3 text-white shadow-[0px_1px_1px_rgba(0,0,0,0.3)] backdrop-blur-[3px] max-[768px]:w-full max-[768px]:max-w-full max-[768px]:px-3 max-[768px]:py-3 max-[480px]:px-3 max-[480px]:py-2\">\n <h1 className=\"mb-2 text-[2.5rem] leading-tight text-white [text-shadow:0_2px_4px_rgba(0,0,0,0.3)] max-[768px]:mb-[0.4rem] max-[768px]:text-[2rem] max-[480px]:mb-[0.3rem] max-[480px]:text-[1.75rem]\">\n {name}\n </h1>\n\n <div className=\"mb-3 flex flex-wrap items-center text-[1.25rem] text-white/90 max-[768px]:mb-[0.6rem] max-[768px]:text-[1.1rem] max-[480px]:mb-[0.5rem] max-[480px]:text-[1rem]\">\n <span>{location}</span>\n {price == null ? null : (\n <span\n className=\"ml-4 flex items-center border-l border-white/30 pl-4 font-semibold\"\n style={{ color: \"var(--color-accent, #e6c87e)\" }}\n >\n {formatPrice(price, currencySymbol)}\n {changePercent == null ? null : (\n <span\n className={cn(\n \"ml-2 flex items-center text-[0.875rem] font-medium\",\n isPositive ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"mr-[0.15rem]\"\n >\n <path d={isPositive ? \"M7 14l5-5 5 5H7z\" : \"M7 10l5 5 5-5H7z\"} />\n </svg>\n {Math.abs(changePercent).toFixed(2)}%\n </span>\n )}\n </span>\n )}\n </div>\n\n <div className=\"flex items-center gap-6 text-[0.95rem] text-white/90 max-[768px]:hidden\">\n {beds == null ? null : (\n <div className=\"flex items-center\">\n <BedDouble className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{beds} Beds</span>\n </div>\n )}\n {baths == null ? null : (\n <div className=\"flex items-center\">\n <Bath className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{baths} Baths</span>\n </div>\n )}\n {cars == null ? null : (\n <div className=\"flex items-center\">\n <CarFront className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{cars} Cars</span>\n </div>\n )}\n {propertyTypeLabel == null ? null : <div>{propertyTypeLabel}</div>}\n </div>\n </div>\n\n <div className=\"flex flex-wrap items-center gap-3 max-[768px]:w-full max-[768px]:justify-between max-[768px]:gap-2 max-[480px]:gap-2\">\n <button\n type=\"button\"\n onClick={onTrade}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isTradeInteracting ? tradeHoverColor : accentColor,\n color: \"black\",\n width: \"88.06px\",\n height: \"43px\",\n minWidth: \"88.06px\",\n borderColor: isTradeInteracting ? accentColor : \"transparent\",\n boxShadow: isTradeInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsTradeInteracting(true)}\n onMouseLeave={() => setIsTradeInteracting(false)}\n onMouseDown={() => setIsTradeInteracting(true)}\n onMouseUp={() => setIsTradeInteracting(false)}\n onFocus={() => setIsTradeInteracting(true)}\n onBlur={() => setIsTradeInteracting(false)}\n onTouchStart={() => setIsTradeInteracting(true)}\n onTouchEnd={() => setIsTradeInteracting(false)}\n >\n Trade\n </button>\n\n <button\n type=\"button\"\n onClick={onMakeOffer}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isOfferInteracting ? accentColor : \"transparent\",\n borderColor: accentColor,\n color: isOfferInteracting ? \"black\" : accentColor,\n width: \"127.14px\",\n height: \"43px\",\n minWidth: \"127.14px\",\n boxShadow: isOfferInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsOfferInteracting(true)}\n onMouseLeave={() => setIsOfferInteracting(false)}\n onMouseDown={() => setIsOfferInteracting(true)}\n onMouseUp={() => setIsOfferInteracting(false)}\n onFocus={() => setIsOfferInteracting(true)}\n onBlur={() => setIsOfferInteracting(false)}\n onTouchStart={() => setIsOfferInteracting(true)}\n onTouchEnd={() => setIsOfferInteracting(false)}\n >\n Make Offer\n </button>\n </div>\n </div>\n </div>\n );\n }\n);\n\nPropertyHeroHeader.displayName = \"PropertyHeroHeader\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertySubheaderTab = {\n id: string;\n label: string;\n hasNotification?: boolean;\n notificationColor?: string;\n};\n\nexport type PropertySubheaderAction = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n};\n\nexport type PropertySubheaderProps = React.HTMLAttributes<HTMLDivElement> & {\n tabs: PropertySubheaderTab[];\n activeTabId: string;\n onTabChange?: (tabId: string) => void;\n actions?: PropertySubheaderAction[];\n};\n\nexport const PropertySubheader = React.forwardRef<HTMLDivElement, PropertySubheaderProps>(\n ({ className, tabs, activeTabId, onTabChange, actions, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full font-normal\",\n \"flex flex-col gap-3\",\n \"md:flex-row md:items-center md:justify-between\",\n className\n )}\n {...props}\n >\n <div\n className={cn(\n \"flex items-center border-b border-white/10\",\n \"overflow-x-auto md:overflow-visible\",\n \"[-webkit-overflow-scrolling:touch]\",\n \"[scrollbar-width:none]\",\n \"[scroll-behavior:smooth]\",\n \"[touch-action:pan-x]\",\n \"md:border-b-0\"\n )}\n style={{ WebkitTapHighlightColor: \"transparent\" }}\n >\n <div className=\"flex min-w-max\">\n {tabs.map((tab) => {\n const active = tab.id === activeTabId;\n\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => onTabChange?.(tab.id)}\n className={cn(\n \"relative whitespace-nowrap\",\n \"px-6 py-4\",\n \"font-normal\",\n \"transition-colors\",\n \"max-[768px]:px-[1.2rem] max-[768px]:py-[0.8rem]\",\n \"max-[480px]:px-4 max-[480px]:py-[0.7rem] max-[480px]:text-[0.9rem]\",\n active\n ? \"font-semibold text-[var(--color-accent,#e6c87e)]\"\n : \"text-white/60 hover:text-white\"\n )}\n style={{\n borderBottom: active ? \"2px solid var(--color-accent, #e6c87e)\" : \"2px solid transparent\",\n minWidth: \"80px\",\n touchAction: \"manipulation\",\n }}\n >\n {tab.label}\n\n {tab.hasNotification ? (\n <span\n className=\"absolute right-[10px] top-[10px] h-2 w-2 rounded-full animate-pulse\"\n style={{\n backgroundColor: tab.notificationColor ?? \"#f6465d\",\n boxShadow: \"0 0 0 0 rgba(246, 70, 93, 0.7)\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n </div>\n\n {actions != null && actions.length > 0 ? (\n <div\n className={cn(\n \"flex items-center gap-[10px]\",\n \"overflow-x-auto md:overflow-visible\",\n \"[scrollbar-width:none]\",\n \"md:justify-end\",\n \"max-[768px]:w-full max-[768px]:justify-center max-[768px]:pb-2 max-[768px]:mb-4\"\n )}\n >\n {actions.map((action) => (\n <button\n key={action.id}\n type=\"button\"\n onClick={action.onClick}\n className={cn(\n \"flex shrink-0 items-center gap-[5px] whitespace-nowrap\",\n \"rounded\",\n \"border border-white/10\",\n \"bg-transparent\",\n \"px-3 py-1.5 text-[14px] font-normal\",\n \"transition-all\",\n \"max-[768px]:px-2.5 max-[768px]:py-[5px] max-[768px]:text-[13px]\",\n \"hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)]\"\n )}\n >\n {action.icon}\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertySubheader.displayName = \"PropertySubheader\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/cn.ts","../src/components/button.tsx","../src/components/badge.tsx","../src/components/card.tsx","../src/components/portfolio-summary.tsx","../src/components/house-position-slider.tsx","../src/components/orderbook.tsx","../src/components/property-tour.tsx","../src/components/property-news-updates.tsx","../src/components/property-compare-bar.tsx","../src/components/your-orders.tsx","../src/components/price-chart.tsx","../src/components/property-hero-header.tsx","../src/components/property-subheader.tsx"],"names":["twMerge","clsx","cva","React","Slot","jsx","React2","React3","React4","formatCurrency","formatPercent","jsxs","React5","clamp","React6","Fragment","React7","React8","Newspaper","React9","React10","React11","createChart","formatPrice","React12","BedDouble","Bath","CarFront","React13"],"mappings":"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","file":"index.js","sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const buttonVariants = cva(\n \"inline-flex items-center justify-center font-semibold transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n primary: \"bg-teal-500 text-slate-950 hover:bg-teal-400 focus-visible:ring-teal-200\",\n accent:\n \"bg-[var(--color-accent,#e6c87e)] text-black hover:bg-[var(--color-accent-hover,#f8d12f)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n accentOutline:\n \"border border-[var(--color-accent,#e6c87e)] bg-transparent text-[var(--color-accent,#e6c87e)] hover:bg-[rgba(230,200,126,0.10)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n media:\n \"border border-white/10 bg-transparent text-white/90 hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)] focus-visible:ring-[var(--color-accent,#e6c87e)]\",\n outline:\n \"border border-slate-800/20 bg-white text-slate-900 hover:border-slate-800/40 focus-visible:ring-slate-200\",\n ghost:\n \"bg-transparent text-slate-900 hover:bg-slate-900/5 focus-visible:ring-slate-200\",\n danger: \"bg-rose-500 text-white hover:bg-rose-400 focus-visible:ring-rose-200\",\n },\n size: {\n sm: \"h-9 px-4 text-sm\",\n md: \"h-11 px-6 text-base\",\n lg: \"h-12 px-7 text-lg\",\n icon: \"h-10 w-10\",\n },\n radius: {\n pill: \"rounded-full\",\n md: \"rounded\",\n },\n },\n defaultVariants: {\n variant: \"primary\",\n size: \"md\",\n radius: \"pill\",\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, radius, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n ref={ref}\n className={cn(buttonVariants({ variant, size, radius }), className)}\n {...props}\n />\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../lib/cn\";\n\nexport const badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-3 py-1 text-xs font-semibold uppercase tracking-wide transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\",\n {\n variants: {\n variant: {\n default: \"border-transparent bg-slate-900 text-white focus-visible:ring-slate-300\",\n muted:\n \"border-transparent bg-slate-100 text-slate-600 focus-visible:ring-slate-200\",\n outline: \"border-slate-200 bg-white text-slate-600 focus-visible:ring-slate-200\",\n success:\n \"border-transparent bg-teal-500/15 text-teal-600 focus-visible:ring-teal-200\",\n active:\n \"border-transparent bg-[rgba(14,203,129,0.25)] text-[#0ecb81] focus-visible:ring-[rgba(14,203,129,0.35)]\",\n pending:\n \"border-transparent bg-white/10 text-white/60 focus-visible:ring-white/20\",\n rejected:\n \"border-transparent bg-[rgba(246,70,93,0.20)] text-[#f6465d] focus-visible:ring-[rgba(246,70,93,0.30)]\",\n },\n size: {\n sm: \"px-2.5 py-0.5 text-[11px]\",\n md: \"px-3 py-1 text-xs\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {}\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant, size, ...props }, ref) => (\n <span ref={ref} className={cn(badgeVariants({ variant, size }), className)} {...props} />\n )\n);\n\nBadge.displayName = \"Badge\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-3xl border border-slate-200 bg-white shadow-sm transition hover:shadow-md\",\n className\n )}\n {...props}\n />\n));\nCard.displayName = \"Card\";\n\nexport interface CardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardHeader = React.forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex flex-col space-y-1.5 p-6\", className)} {...props} />\n )\n);\nCardHeader.displayName = \"CardHeader\";\n\nexport interface CardTitleProps extends React.HTMLAttributes<HTMLHeadingElement> {}\nexport const CardTitle = React.forwardRef<HTMLHeadingElement, CardTitleProps>(\n ({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"text-xl font-semibold tracking-tight text-slate-900\", className)}\n {...props}\n />\n )\n);\nCardTitle.displayName = \"CardTitle\";\n\nexport interface CardDescriptionProps extends React.HTMLAttributes<HTMLParagraphElement> {}\nexport const CardDescription = React.forwardRef<HTMLParagraphElement, CardDescriptionProps>(\n ({ className, ...props }, ref) => (\n <p ref={ref} className={cn(\"text-sm text-slate-500\", className)} {...props} />\n )\n);\nCardDescription.displayName = \"CardDescription\";\n\nexport interface CardContentProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardContent = React.forwardRef<HTMLDivElement, CardContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"px-6 pb-6 pt-2 text-sm text-slate-600\", className)} {...props} />\n )\n);\nCardContent.displayName = \"CardContent\";\n\nexport interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\nexport const CardFooter = React.forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center border-t border-slate-100 px-6 py-4\", className)} {...props} />\n )\n);\nCardFooter.displayName = \"CardFooter\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\nimport { Card, CardContent, CardHeader, CardTitle } from \"./card\";\n\nconst defaultFormatCurrency = (value: number) =>\n new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n }).format(value);\n\nconst defaultFormatPercent = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${Math.abs(value).toFixed(2)}%`;\n};\n\nconst defaultFormatSignedCurrency = (value: number) => {\n const sign = value >= 0 ? \"+\" : \"-\";\n return `${sign}${defaultFormatCurrency(Math.abs(value))}`;\n};\n\nexport interface PortfolioSummaryProps extends React.HTMLAttributes<HTMLDivElement> {\n availableCash: number;\n portfolioValue: number;\n totalReturnPercent: number;\n unrealizedPnl: number;\n onResetAccount?: () => void;\n positionsHeading?: string;\n emptyPositionsText?: string;\n formatCurrency?: (value: number) => string;\n formatPercent?: (value: number) => string;\n formatSignedCurrency?: (value: number) => string;\n children?: React.ReactNode;\n}\n\nexport const PortfolioSummary = React.forwardRef<HTMLDivElement, PortfolioSummaryProps>(\n (\n {\n availableCash,\n portfolioValue,\n totalReturnPercent,\n unrealizedPnl,\n onResetAccount,\n positionsHeading = \"Current Positions\",\n emptyPositionsText = \"No positions yet. Start trading to build your portfolio!\",\n formatCurrency = defaultFormatCurrency,\n formatPercent = defaultFormatPercent,\n formatSignedCurrency = defaultFormatSignedCurrency,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const totalReturnClassName = totalReturnPercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n const pnlClassName = unrealizedPnl >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[560px] rounded-[12px] border border-white/10 bg-black/30 p-6 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"p-0 pb-4\">\n <div className=\"flex items-center justify-between gap-4\">\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">Portfolio Summary</CardTitle>\n {onResetAccount ? (\n <button\n type=\"button\"\n onClick={onResetAccount}\n className=\"cursor-pointer rounded-[6px] border border-white/20 bg-white/10 px-[0.7rem] py-[0.35rem] text-xs text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n Reset Account\n </button>\n ) : null}\n </div>\n <div className=\"mt-3 h-px w-full bg-white/10\" />\n </CardHeader>\n\n <CardContent className=\"p-0 pt-4\">\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Available Cash</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(availableCash)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Portfolio Value</p>\n <p className=\"mt-1 text-[1.25rem] font-semibold text-white\">{formatCurrency(portfolioValue)}</p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Total Return</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", totalReturnClassName)}>\n {formatPercent(totalReturnPercent)}\n </p>\n </div>\n <div>\n <p className=\"text-xs uppercase tracking-[0.5px] text-white/50\">Unrealized P&L</p>\n <p className={cn(\"mt-1 text-[1.25rem] font-semibold\", pnlClassName)}>\n {formatSignedCurrency(unrealizedPnl)}\n </p>\n </div>\n </div>\n\n <div className=\"mt-6\">\n <p className=\"m-0 text-[0.9rem] font-medium text-white/70\">{positionsHeading}</p>\n <div className=\"mt-3\">\n {children ? (\n children\n ) : (\n <p className=\"py-4 text-center text-[0.85rem] text-white/40\">{emptyPositionsText}</p>\n )}\n </div>\n </div>\n </CardContent>\n </Card>\n );\n }\n);\n\nPortfolioSummary.displayName = \"PortfolioSummary\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { type OrderbookLevel } from \"./orderbook\";\n\nexport type HousePositionPendingOrder = {\n type: \"buy\" | \"sell\";\n tokens: number;\n value: number;\n price: number;\n};\n\nexport type HousePositionSliderOrderPayload = {\n side: \"buy\" | \"sell\";\n orderType: \"market\" | \"limit\";\n tokenId: string;\n tokenSymbol: string;\n price: number;\n deltaTokens: number;\n deltaValue: number;\n targetOwnership: number;\n targetTokens: number;\n targetValue: number;\n};\n\nexport type HousePositionOrderbook = {\n bids?: OrderbookLevel[];\n asks?: OrderbookLevel[];\n};\n\nexport interface HousePositionSliderProps extends React.HTMLAttributes<HTMLDivElement> {\n tokenId: string;\n tokenSymbol: string;\n totalTokens: number;\n currentPrice: number;\n availableCash: number;\n tokensHeld: number;\n pendingOrders?: HousePositionPendingOrder[];\n defaultOrderType?: \"market\" | \"limit\";\n orderbook?: HousePositionOrderbook;\n ownershipPercentOverride?: number;\n onConfirmOrder?: (payload: HousePositionSliderOrderPayload) => void;\n}\n\nconst clamp = (v: number, min: number, max: number) => Math.min(max, Math.max(min, v));\nconst fmt0 = (v: number) => Math.abs(v).toLocaleString(undefined, { maximumFractionDigits: 0 });\n\ntype MarketFillResult = {\n tokens: number;\n value: number;\n avgPrice: number | null;\n};\n\nconst normalizeLevels = (levels: OrderbookLevel[] = []) =>\n levels.filter((level) => Number.isFinite(level.price) && level.price > 0 && Number.isFinite(level.amount) && level.amount > 0);\n\nconst estimateMarketBuyFromUsd = (levels: OrderbookLevel[] = [], usdAmount: number): MarketFillResult => {\n if (!Number.isFinite(usdAmount) || usdAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingUsd = usdAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingUsd <= 0) break;\n const levelValueCapacity = level.amount * level.price;\n const usdToSpend = Math.min(remainingUsd, levelValueCapacity);\n const tokensFromLevel = usdToSpend / level.price;\n tokensFilled += tokensFromLevel;\n spent += usdToSpend;\n remainingUsd -= usdToSpend;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketBuyFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const asks = normalizeLevels(levels).sort((a, b) => a.price - b.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let spent = 0;\n\n for (const level of asks) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n spent += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: spent,\n avgPrice: tokensFilled > 0 ? spent / tokensFilled : null,\n };\n};\n\nconst estimateMarketSellFromTokens = (levels: OrderbookLevel[] = [], tokenAmount: number): MarketFillResult => {\n if (!Number.isFinite(tokenAmount) || tokenAmount <= 0) return { tokens: 0, value: 0, avgPrice: null };\n const bids = normalizeLevels(levels).sort((a, b) => b.price - a.price);\n let remainingTokens = tokenAmount;\n let tokensFilled = 0;\n let received = 0;\n\n for (const level of bids) {\n if (remainingTokens <= 0) break;\n const tokensFromLevel = Math.min(remainingTokens, level.amount);\n received += tokensFromLevel * level.price;\n tokensFilled += tokensFromLevel;\n remainingTokens -= tokensFromLevel;\n }\n\n return {\n tokens: tokensFilled,\n value: received,\n avgPrice: tokensFilled > 0 ? received / tokensFilled : null,\n };\n};\n\nexport function HousePositionSlider({\n tokenId,\n tokenSymbol,\n totalTokens,\n currentPrice,\n availableCash,\n tokensHeld,\n pendingOrders = [],\n defaultOrderType = \"market\",\n orderbook,\n ownershipPercentOverride,\n onConfirmOrder,\n className,\n ...props\n}: HousePositionSliderProps) {\n const [orderMode, setOrderMode] = React.useState<\"none\" | \"buy\" | \"sell\">(\"none\");\n const [buyTrackingMode, setBuyTrackingMode] = React.useState<\"dollars\" | \"tokens\">(\"dollars\");\n const [deltaDollars, setDeltaDollars] = React.useState(0);\n const [deltaTokensBuy, setDeltaTokensBuy] = React.useState(0);\n const [deltaTokensSell, setDeltaTokensSell] = React.useState(0);\n const [isDragging, setIsDragging] = React.useState(false);\n const [visualTargetPct, setVisualTargetPct] = React.useState<number | null>(null);\n\n const [orderType, setOrderType] = React.useState<\"market\" | \"limit\">(defaultOrderType);\n const [limitPrice, setLimitPrice] = React.useState(currentPrice);\n const [limitPriceInput, setLimitPriceInput] = React.useState(currentPrice.toFixed(2));\n const [limitPriceDirty, setLimitPriceDirty] = React.useState(false);\n\n const [ownershipInput, setOwnershipInput] = React.useState(\"\");\n const [tokenAmountInput, setTokenAmountInput] = React.useState(\"\");\n\n const houseRef = React.useRef<HTMLDivElement | null>(null);\n\n const asks = orderbook?.asks ?? [];\n const bids = orderbook?.bids ?? [];\n\n React.useEffect(() => {\n if (orderType !== \"limit\") return;\n if (limitPriceDirty) return;\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n }, [currentPrice, limitPriceDirty, orderType]);\n\n const effectivePrice = orderType === \"limit\" ? limitPrice : currentPrice;\n const pendingBuyValue = pendingOrders.filter((o) => o.type === \"buy\").reduce((s, o) => s + o.value, 0);\n const pendingSellTokens = pendingOrders.filter((o) => o.type === \"sell\").reduce((s, o) => s + Math.abs(o.tokens), 0);\n\n const effectiveAvailableCash = Math.max(0, availableCash - pendingBuyValue);\n const effectiveTokensHeld = Math.max(0, tokensHeld - pendingSellTokens);\n\n const holdingsValue = tokensHeld * effectivePrice;\n const safeTotalTokens = totalTokens > 0 ? totalTokens : 1;\n const baselineOwnershipActual = clamp((effectiveTokensHeld / safeTotalTokens) * 100, 0, 100);\n\n let deltaTokens = 0;\n let deltaValue = 0;\n let marketAvgPrice: number | null = null;\n let targetTokens = tokensHeld;\n let targetValue = holdingsValue;\n\n const limitPriceSafe = limitPrice > 0 ? limitPrice : currentPrice || 1;\n\n if (orderMode === \"buy\") {\n if (orderType === \"market\") {\n if (buyTrackingMode === \"tokens\") {\n const desiredTokens = Math.max(0, deltaTokensBuy);\n const result = estimateMarketBuyFromTokens(asks, desiredTokens);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n const result = estimateMarketBuyFromUsd(asks, notional);\n deltaTokens = result.tokens;\n deltaValue = result.value;\n marketAvgPrice = result.avgPrice;\n }\n } else {\n if (buyTrackingMode === \"tokens\") {\n deltaTokens = deltaTokensBuy;\n deltaValue = deltaTokensBuy * limitPriceSafe;\n } else {\n const notional = Math.min(Math.max(0, deltaDollars), effectiveAvailableCash);\n deltaValue = notional;\n deltaTokens = notional / limitPriceSafe;\n }\n }\n } else if (orderMode === \"sell\") {\n if (orderType === \"market\") {\n const tokensToSell = Math.abs(deltaTokensSell);\n const result = estimateMarketSellFromTokens(bids, tokensToSell);\n deltaTokens = -result.tokens;\n deltaValue = -result.value;\n marketAvgPrice = result.avgPrice;\n } else {\n deltaTokens = deltaTokensSell;\n deltaValue = deltaTokensSell * limitPriceSafe;\n }\n }\n\n targetTokens = tokensHeld + deltaTokens;\n targetValue = targetTokens * effectivePrice;\n\n const sliderTargetTokens = clamp(effectiveTokensHeld + deltaTokens, 0, safeTotalTokens);\n const normalizedTargetPct = (sliderTargetTokens / safeTotalTokens) * 100;\n\n const isIncrease = orderMode === \"buy\";\n const hasChange = orderMode !== \"none\" && (Math.abs(deltaTokens) > 0.001 || Math.abs(deltaValue) > 0.01);\n\n const currentOwnership = totalTokens <= 0 ? 0 : clamp((tokensHeld / totalTokens) * 100, 0, 100);\n const targetOwnership = totalTokens <= 0 ? 0 : clamp((targetTokens / totalTokens) * 100, 0, 100);\n\n const ownershipOverrideValue =\n typeof ownershipPercentOverride === \"number\" && Number.isFinite(ownershipPercentOverride)\n ? clamp(ownershipPercentOverride, 0, 100)\n : null;\n const ownershipShift = ownershipOverrideValue != null ? ownershipOverrideValue - baselineOwnershipActual : 0;\n const baselinePct = clamp(ownershipOverrideValue ?? baselineOwnershipActual, 0, 100);\n const impliedTargetPct = clamp(normalizedTargetPct + ownershipShift, 0, 100);\n const displayTargetPct = visualTargetPct ?? impliedTargetPct;\n const targetPct = displayTargetPct;\n const displayCurrentOwnership = clamp(ownershipOverrideValue ?? currentOwnership, 0, 100);\n const impliedDisplayTargetOwnership = clamp(targetOwnership + ownershipShift, 0, 100);\n const displayTargetOwnership = visualTargetPct ?? impliedDisplayTargetOwnership;\n\n const estFeeTokens = (Math.abs(deltaValue) * 0.005) / (effectivePrice || 1);\n\n const resetOrder = React.useCallback(() => {\n setOrderMode(\"none\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(null);\n }, []);\n\n const updateOrderFromTargetValue = React.useCallback(\n (newTargetValue: number) => {\n const newDeltaValue = newTargetValue - holdingsValue;\n\n if (newDeltaValue > 0) {\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(Math.min(newDeltaValue, effectiveAvailableCash));\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (newDeltaValue < 0) {\n const newDeltaTokens = newTargetValue / (effectivePrice || 1) - tokensHeld;\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(newDeltaTokens, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, holdingsValue, resetOrder, tokensHeld]\n );\n\n const updateOrderFromOwnership = React.useCallback(\n (newOwnershipPercent: number) => {\n const nextOwnership = clamp(newOwnershipPercent, 0, 100);\n const newTargetTokens = (nextOwnership / 100) * totalTokens;\n updateOrderFromTargetValue(newTargetTokens * effectivePrice);\n setVisualTargetPct(nextOwnership);\n },\n [effectivePrice, totalTokens, updateOrderFromTargetValue]\n );\n\n const updateOrderFromTokenAmount = React.useCallback(\n (tokenAmountSigned: number) => {\n if (tokenAmountSigned > 0) {\n const maxTokens = effectiveAvailableCash / (effectivePrice || 1);\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"tokens\");\n setDeltaTokensBuy(Math.min(tokenAmountSigned, maxTokens));\n setDeltaDollars(0);\n setDeltaTokensSell(0);\n return;\n }\n\n if (tokenAmountSigned < 0) {\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(Math.max(tokenAmountSigned, -effectiveTokensHeld));\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n return;\n }\n\n resetOrder();\n },\n [effectiveAvailableCash, effectivePrice, effectiveTokensHeld, resetOrder]\n );\n\n const updateOrderFromSlider = React.useCallback(\n (pct: number) => {\n const normalized = (pct - 50) / 50;\n const magnitude = Math.min(Math.abs(normalized), 1);\n if (magnitude < 0.02) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n if (normalized > 0) {\n const notional = clamp(magnitude * effectiveAvailableCash, 0, effectiveAvailableCash);\n if (notional <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"buy\");\n setBuyTrackingMode(\"dollars\");\n setDeltaDollars(notional);\n setDeltaTokensBuy(0);\n setDeltaTokensSell(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n if (normalized < 0) {\n const tokensToSell = clamp(magnitude * effectiveTokensHeld, 0, effectiveTokensHeld);\n if (tokensToSell <= 0) {\n resetOrder();\n setVisualTargetPct(null);\n return;\n }\n setOrderMode(\"sell\");\n setBuyTrackingMode(\"dollars\");\n setDeltaTokensSell(-tokensToSell);\n setDeltaDollars(0);\n setDeltaTokensBuy(0);\n setVisualTargetPct(clamp(pct, 0, 100));\n return;\n }\n resetOrder();\n setVisualTargetPct(null);\n },\n [effectiveAvailableCash, effectiveTokensHeld, resetOrder]\n );\n\n const handleDragAtClientY = React.useCallback(\n (clientY: number) => {\n if (!houseRef.current) return;\n const rect = houseRef.current.getBoundingClientRect();\n const y = clientY - rect.top;\n const pct = clamp(100 - (y / rect.height) * 100, 0, 100);\n updateOrderFromSlider(pct);\n },\n [updateOrderFromSlider]\n );\n\n const onMouseDown = (e: React.MouseEvent) => {\n e.preventDefault();\n setIsDragging(true);\n\n const onMove = (ev: MouseEvent) => handleDragAtClientY(ev.clientY);\n const onUp = () => {\n setIsDragging(false);\n document.removeEventListener(\"mousemove\", onMove);\n document.removeEventListener(\"mouseup\", onUp);\n };\n\n document.addEventListener(\"mousemove\", onMove);\n document.addEventListener(\"mouseup\", onUp);\n };\n\n const onTouchStart = () => {\n setIsDragging(true);\n\n const onMove = (ev: TouchEvent) => {\n const touch = ev.touches[0];\n if (!touch) return;\n handleDragAtClientY(touch.clientY);\n };\n const onEnd = () => {\n setIsDragging(false);\n document.removeEventListener(\"touchmove\", onMove);\n document.removeEventListener(\"touchend\", onEnd);\n };\n\n document.addEventListener(\"touchmove\", onMove);\n document.addEventListener(\"touchend\", onEnd);\n };\n\n const handleCancel = () => {\n resetOrder();\n };\n\n const handleOrderTypeSelection = (next: \"market\" | \"limit\") => {\n setOrderType(next);\n if (next === \"limit\") {\n setLimitPriceDirty(false);\n setLimitPrice(currentPrice);\n setLimitPriceInput(currentPrice.toFixed(2));\n } else {\n setLimitPriceDirty(false);\n }\n };\n\n const handleConfirm = () => {\n if (!hasChange) return;\n const priceToUse = orderType === \"market\" ? marketAvgPrice ?? currentPrice : limitPrice;\n onConfirmOrder?.({\n side: isIncrease ? \"buy\" : \"sell\",\n orderType,\n tokenId,\n tokenSymbol,\n price: priceToUse,\n deltaTokens,\n deltaValue,\n targetOwnership,\n targetTokens,\n targetValue,\n });\n handleCancel();\n };\n\n const rectTop = 10;\n const rectBottom = 150;\n const totalFillableHeight = rectBottom - rectTop;\n const baselineFillHeight = (baselinePct / 100) * totalFillableHeight;\n const targetFillHeight = (targetPct / 100) * totalFillableHeight;\n const baselineFillY = rectBottom - baselineFillHeight;\n const targetFillY = rectBottom - targetFillHeight;\n\n const showIncrease = targetPct > baselinePct;\n const showDecrease = targetPct < baselinePct;\n\n const valueLabel = orderType === \"limit\" ? `${tokenSymbol} Owned at Limit` : `${tokenSymbol} Owned`;\n const deltaSign = deltaValue > 0 ? \"+\" : deltaValue < 0 ? \"-\" : \"\";\n const percentMarkers = [100, 50, 25, 0];\n\n return (\n <div className={cn(\"relative flex w-full flex-col items-center gap-6 rounded-[12px] bg-black/20 px-8 pb-6 pt-12\", className)} {...props}>\n <div className=\"absolute left-4 top-4 text-[1.1rem] font-semibold tracking-[0.5px] text-white\">Place Order</div>\n\n {hasChange ? (\n <button\n type=\"button\"\n onClick={handleCancel}\n className=\"absolute right-3 top-3 rounded-[6px] border border-white/20 bg-white/10 px-2.5 py-1.5 text-[0.7rem] text-[#888] transition-all duration-150 hover:border-white/30 hover:bg-white/[0.15] hover:text-white\"\n >\n ✕ Cancel\n </button>\n ) : null}\n\n <div className=\"text-center\">\n <div className=\"mb-2 text-xs uppercase tracking-[1px] text-[#888]\">{valueLabel}</div>\n <div className=\"flex items-baseline justify-center gap-3\">\n <span\n className={cn(\n \"text-[2.2rem] font-semibold\",\n deltaValue >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n {deltaSign}${fmt0(deltaValue)}\n </span>\n <span className=\"text-lg font-semibold text-white/60\">${fmt0(targetValue)}</span>\n </div>\n </div>\n\n <div className=\"flex items-center gap-4\">\n <div className=\"flex h-[200px] flex-col justify-between text-xs text-white/40\">\n {percentMarkers.map((marker) => (\n <span key={marker}>{marker}%</span>\n ))}\n </div>\n <div\n ref={houseRef}\n className=\"h-[200px] w-[160px] select-none touch-none\"\n style={{ cursor: \"ns-resize\" }}\n onMouseDown={onMouseDown}\n onTouchStart={onTouchStart}\n >\n <svg viewBox=\"0 0 120 160\" className=\"h-full w-full overflow-visible\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" fill=\"rgba(255,255,255,0.04)\" stroke=\"rgba(255,255,255,0.10)\" />\n <clipPath id=\"loaf-clip\">\n <rect x=\"10\" y=\"10\" width=\"100\" height=\"140\" rx=\"8\" />\n </clipPath>\n <g clipPath=\"url(#loaf-clip)\">\n <rect x=\"10\" y={showDecrease ? targetFillY : baselineFillY} width=\"100\" height={showDecrease ? targetFillHeight : baselineFillHeight} fill=\"rgba(220,175,120,0.7)\" />\n {showIncrease ? (\n <rect x=\"10\" y={targetFillY} width=\"100\" height={targetFillHeight - baselineFillHeight} fill=\"rgba(14,203,129,0.35)\" />\n ) : null}\n {showDecrease ? (\n <rect x=\"10\" y={baselineFillY} width=\"100\" height={baselineFillHeight - targetFillHeight} fill=\"rgba(246,70,93,0.35)\" />\n ) : null}\n <line x1=\"12\" y1={targetFillY} x2=\"108\" y2={targetFillY} stroke={showIncrease ? \"#0ecb81\" : showDecrease ? \"#f6465d\" : \"rgba(234,217,162,1)\"} strokeWidth=\"2\" strokeLinecap=\"round\" />\n </g>\n </svg>\n </div>\n </div>\n\n <button\n type=\"button\"\n disabled={!hasChange}\n onClick={handleConfirm}\n className={cn(\n \"w-full rounded-[10px] px-4 py-4 text-base font-semibold transition\",\n !hasChange\n ? \"cursor-not-allowed bg-white/10 text-white/30\"\n : isIncrease\n ? \"bg-[#0ecb81] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(14,203,129,0.3)]\"\n : \"bg-[#f6465d] text-white hover:-translate-y-[1px] hover:shadow-[0_4px_12px_rgba(246,70,93,0.3)]\"\n )}\n >\n {!hasChange ? \"Adjust Position\" : isIncrease ? `Buy $${fmt0(deltaValue)}` : `Sell $${fmt0(deltaValue)}`}\n </button>\n\n <div className=\"w-full border-t border-white/10 py-4 text-[0.85rem]\">\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{tokenSymbol} Ownership</span>\n <span className=\"text-white\">\n {displayCurrentOwnership.toFixed(2)}%\n <span className=\"mx-1.5 text-white/50\">→</span>\n <input\n type=\"text\"\n value={ownershipInput || displayTargetOwnership.toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setOwnershipInput(val);\n }}\n onFocus={() => setOwnershipInput(displayTargetOwnership.toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(ownershipInput);\n if (Number.isFinite(num)) updateOrderFromOwnership(num);\n setOwnershipInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[70px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n displayTargetOwnership >= displayCurrentOwnership\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n </span>\n </div>\n\n {orderType === \"market\" ? null : (\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">{isIncrease ? \"Buying\" : \"Selling\"}</span>\n <span className=\"inline-flex items-center gap-1\">\n {orderMode === \"buy\" && buyTrackingMode === \"dollars\" ? <span className=\"mr-1 text-[#0ecb81]\">~</span> : null}\n <input\n type=\"text\"\n value={tokenAmountInput || Math.abs(deltaTokens).toFixed(2)}\n onChange={(e) => {\n const val = e.target.value;\n if (val === \"\" || /^[0-9]*\\.?[0-9]*$/.test(val)) setTokenAmountInput(val);\n }}\n onFocus={() => setTokenAmountInput(Math.abs(deltaTokens).toFixed(2))}\n onBlur={() => {\n const num = Number.parseFloat(tokenAmountInput);\n if (Number.isFinite(num) && num >= 0) {\n const signed = isIncrease || orderMode === \"none\" ? num : -num;\n updateOrderFromTokenAmount(signed);\n }\n setTokenAmountInput(\"\");\n }}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") (e.target as HTMLInputElement).blur();\n }}\n className={cn(\n \"w-[90px] rounded-[4px] border bg-white/10 px-2 py-1 text-right font-semibold outline-none\",\n isIncrease\n ? \"border-[rgba(14,203,129,0.3)] text-[#0ecb81] focus:border-[#0ecb81]\"\n : \"border-[rgba(246,70,93,0.3)] text-[#f6465d] focus:border-[#f6465d]\"\n )}\n />\n <span className={cn(\"font-semibold\", isIncrease ? \"text-[#0ecb81]\" : \"text-[#f6465d]\")}>tokens</span>\n </span>\n </div>\n )}\n\n <div className=\"flex items-center justify-between py-2\">\n <span className=\"text-white/50\">Est. Fee</span>\n <span className=\"text-white\">{estFeeTokens.toFixed(6)} {tokenSymbol}</span>\n </div>\n </div>\n\n <div className=\"w-full\">\n <div className=\"mb-4 flex w-full rounded-[8px] bg-white/5 p-[3px]\">\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"market\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"market\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Market\n </button>\n <button\n type=\"button\"\n onClick={() => handleOrderTypeSelection(\"limit\")}\n className={cn(\n \"flex-1 rounded-[6px] px-3 py-2 text-[0.8rem] font-medium transition\",\n orderType === \"limit\" ? \"bg-[rgba(201,162,39,0.2)] text-[#C9A227]\" : \"text-white/50 hover:bg-white/5\"\n )}\n >\n Limit\n </button>\n </div>\n\n {orderType === \"limit\" ? (\n <div className=\"relative mb-4\">\n <input\n type=\"text\"\n value={limitPriceInput}\n onChange={(e) => {\n const input = e.target.value;\n if (input === \"\" || /^[0-9]*\\.?[0-9]*$/.test(input)) {\n setLimitPriceDirty(true);\n setLimitPriceInput(input);\n const num = Number.parseFloat(input);\n if (Number.isFinite(num) && num > 0) setLimitPrice(num);\n }\n }}\n onBlur={() => {\n const num = Number.parseFloat(limitPriceInput);\n if (Number.isFinite(num) && num > 0) {\n setLimitPriceInput(num.toFixed(2));\n setLimitPrice(num);\n } else {\n setLimitPriceInput(limitPrice.toFixed(2));\n }\n }}\n placeholder=\"Price\"\n className=\"w-full rounded-[8px] border border-white/10 bg-black/30 px-4 py-3 pr-14 text-[0.95rem] text-white outline-none focus:border-[#f0b90b]\"\n />\n <span className=\"absolute right-4 top-1/2 -translate-y-1/2 text-[0.8rem] text-white/50\">USD</span>\n </div>\n ) : null}\n\n <div className=\"flex items-center justify-between text-xs text-white/50\">\n <span>Available: ${availableCash.toLocaleString()}</span>\n <button type=\"button\" className=\"text-[#f0b90b] hover:underline\">\n Add Funds\n </button>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card } from \"./card\";\n\nexport type OrderbookSide = \"ask\" | \"bid\";\n\nexport type OrderbookLevel = {\n price: number;\n amount: number;\n depth?: number;\n};\n\nexport type OrderbookTrade = {\n type: \"buy\" | \"sell\";\n price: number;\n amount: number;\n time?: string;\n tradeId?: number;\n};\n\nexport interface OrderbookProps extends React.HTMLAttributes<HTMLDivElement> {\n asks: OrderbookLevel[];\n bids: OrderbookLevel[];\n midPrice: number;\n midChangePercent?: number;\n trades?: OrderbookTrade[];\n priceLabel?: string;\n amountLabel?: string;\n precision?: number;\n amountPrecision?: number;\n defaultTab?: \"orderbook\" | \"trades\";\n onTabChange?: (tab: \"orderbook\" | \"trades\") => void;\n rightHeader?: React.ReactNode;\n}\n\nconst formatNumber = (value: number, precision: number) => value.toFixed(precision);\n\nfunction DepthRow({\n side,\n price,\n amount,\n depthPct,\n precision,\n amountPrecision,\n}: {\n side: OrderbookSide;\n price: number;\n amount: number;\n depthPct: number;\n precision: number;\n amountPrecision: number;\n}) {\n const isAsk = side === \"ask\";\n\n return (\n <div className=\"relative grid grid-cols-2 items-center gap-3 px-3 py-1.5\">\n <div\n className={cn(\n \"absolute inset-y-0 right-0\",\n isAsk ? \"bg-rose-900/30\" : \"bg-emerald-900/30\"\n )}\n style={{ width: `${clamp(depthPct, 0, 100)}%` }}\n />\n\n <div className={cn(\"relative z-[1] tabular-nums\", isAsk ? \"text-[#f6465d]\" : \"text-[#0ecb81]\")}\n >\n ${formatNumber(price, precision)}\n </div>\n <div className=\"relative z-[1] text-right tabular-nums text-white/90\">{formatNumber(amount, amountPrecision)}</div>\n </div>\n );\n}\n\nconst clamp = (value: number, min: number, max: number) => Math.min(max, Math.max(min, value));\nconst LEVEL_ROWS_VISIBLE = 6;\nconst DEPTH_ROW_HEIGHT_PX = 34;\nconst SECTION_HEIGHT = LEVEL_ROWS_VISIBLE * DEPTH_ROW_HEIGHT_PX;\n\nexport const Orderbook = React.forwardRef<HTMLDivElement, OrderbookProps>(\n (\n {\n asks,\n bids,\n midPrice,\n midChangePercent,\n trades = [],\n priceLabel = \"Price (USD)\",\n amountLabel = \"Amount\",\n precision = 2,\n amountPrecision = 2,\n defaultTab = \"orderbook\",\n onTabChange,\n rightHeader,\n className,\n ...props\n },\n ref\n ) => {\n const [tab, setTab] = React.useState<\"orderbook\" | \"trades\">(defaultTab);\n const [tradeFilter, setTradeFilter] = React.useState<\"all\" | \"buy\" | \"sell\">(\"all\");\n\n React.useEffect(() => {\n setTab(defaultTab);\n }, [defaultTab]);\n\n const handleTab = (next: \"orderbook\" | \"trades\") => {\n setTab(next);\n onTabChange?.(next);\n };\n\n const maxAskDepth = Math.max(1, ...asks.map((l) => l.depth ?? l.amount));\n const maxBidDepth = Math.max(1, ...bids.map((l) => l.depth ?? l.amount));\n\n const midClass =\n midChangePercent == null\n ? \"text-white\"\n : midChangePercent >= 0\n ? \"text-[#0ecb81]\"\n : \"text-[#f6465d]\";\n\n const tradeFiltered = trades.filter((t) => tradeFilter === \"all\" || t.type === tradeFilter);\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[520px] overflow-hidden rounded-[12px] border border-white/10 bg-black/30 text-white shadow-md\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between px-4 pt-4\">\n <div className=\"flex items-center gap-4\">\n <button\n type=\"button\"\n onClick={() => handleTab(\"orderbook\")}\n className={cn(\n \"relative pb-2 text-sm font-semibold\",\n tab === \"orderbook\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Orderbook\n {tab === \"orderbook\" ? <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" /> : null}\n </button>\n <button\n type=\"button\"\n onClick={() => handleTab(\"trades\")}\n className={cn(\n \"relative pb-2 text-sm font-medium\",\n tab === \"trades\" ? \"text-white\" : \"text-white/60\"\n )}\n >\n Trades\n {tab === \"trades\" ? <span className=\"absolute -bottom-px left-0 h-[2px] w-full bg-[#C9A227]\" /> : null}\n </button>\n </div>\n\n {tab === \"trades\" ? (\n <div className=\"flex items-center gap-1 text-xs\">\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"all\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"all\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n All\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"buy\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"buy\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Buy\n </button>\n <button\n type=\"button\"\n onClick={() => setTradeFilter(\"sell\")}\n className={cn(\n \"rounded-md px-2 py-1 transition\",\n tradeFilter === \"sell\" ? \"bg-white/10 text-white\" : \"text-white/70 hover:bg-white/10\"\n )}\n >\n Sell\n </button>\n </div>\n ) : (\n <div className=\"flex items-center gap-3\">{rightHeader}</div>\n )}\n </div>\n\n <div className=\"px-4 pb-3 pt-2\">\n <div className=\"grid grid-cols-2 gap-3 px-3 py-2 text-xs text-white/60\">\n <div>{priceLabel}</div>\n <div className=\"text-right\">{amountLabel}</div>\n </div>\n\n {tab === \"trades\" ? (\n <div\n className=\"max-h-[380px] overflow-y-auto overflow-x-hidden\"\n style={{ scrollbarGutter: \"stable\" }}\n >\n {tradeFiltered.length === 0 ? (\n <div className=\"px-3 py-10 text-center text-sm text-white/50\">No trades</div>\n ) : (\n <div className=\"divide-y divide-white/5\">\n {tradeFiltered.map((trade, i) => (\n <div key={`${trade.type}-${trade.price}-${trade.amount}-${trade.time ?? i}`} className=\"grid grid-cols-2 items-center gap-3 px-3 py-1.5\">\n <div\n className={cn(\n \"tabular-nums\",\n trade.type === \"buy\" ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n ${formatNumber(trade.price, precision)}\n </div>\n <div className=\"text-right tabular-nums text-white/90\">{formatNumber(trade.amount, amountPrecision)}</div>\n </div>\n ))}\n </div>\n )}\n </div>\n ) : (\n <>\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${SECTION_HEIGHT}px`, scrollbarGutter: \"stable\" }}\n >\n {asks.map((l, idx) => (\n <DepthRow\n key={`ask-${idx}-${l.price}-${l.amount}`}\n side=\"ask\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxAskDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n\n <div className=\"mt-2 grid grid-cols-2 items-center gap-3 bg-[#0b1a24] px-3 py-2\">\n <div className={cn(\"text-lg font-semibold tabular-nums\", midClass)}>\n ${formatNumber(midPrice, precision)}\n {midChangePercent == null ? null : (\n <span className=\"ml-2 text-sm font-semibold\">{midChangePercent >= 0 ? \"+\" : \"\"}{midChangePercent.toFixed(2)}%</span>\n )}\n </div>\n <div />\n </div>\n\n <div\n className=\"divide-y divide-white/5 overflow-y-auto\"\n style={{ height: `${SECTION_HEIGHT}px`, scrollbarGutter: \"stable\" }}\n >\n {bids.map((l, idx) => (\n <DepthRow\n key={`bid-${idx}-${l.price}-${l.amount}`}\n side=\"bid\"\n price={l.price}\n amount={l.amount}\n depthPct={((l.depth ?? l.amount) / maxBidDepth) * 100}\n precision={precision}\n amountPrecision={amountPrecision}\n />\n ))}\n </div>\n </>\n )}\n </div>\n </Card>\n );\n }\n);\n\nOrderbook.displayName = \"Orderbook\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PropertyTourProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title: string;\n src: string;\n poster?: string;\n autoPlay?: boolean;\n muted?: boolean;\n loop?: boolean;\n controls?: boolean;\n playsInline?: boolean;\n};\n\ntype FullscreenDocument = Document & {\n webkitFullscreenElement?: Element | null;\n mozFullScreenElement?: Element | null;\n msFullscreenElement?: Element | null;\n};\n\nexport const PropertyTour = React.forwardRef<HTMLDivElement, PropertyTourProps>(\n (\n {\n className,\n title,\n src,\n poster,\n autoPlay = true,\n muted = true,\n loop = true,\n controls = true,\n playsInline = true,\n ...props\n },\n ref\n ) => {\n const videoRef = React.useRef<HTMLVideoElement | null>(null);\n\n React.useEffect(() => {\n const video = videoRef.current;\n if (!video) return;\n\n const handleFullscreenChange = () => {\n const d = document as FullscreenDocument;\n const isFullscreen = !!(\n d.fullscreenElement ||\n d.webkitFullscreenElement ||\n d.mozFullScreenElement ||\n d.msFullscreenElement\n );\n\n if (isFullscreen) {\n video.style.objectFit = \"contain\";\n video.style.width = \"100vw\";\n video.style.height = \"100vh\";\n video.style.position = \"fixed\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"9999\";\n } else {\n video.style.objectFit = \"cover\";\n video.style.width = \"100%\";\n video.style.height = \"100%\";\n video.style.position = \"absolute\";\n video.style.top = \"0\";\n video.style.left = \"0\";\n video.style.transform = \"none\";\n video.style.zIndex = \"auto\";\n }\n };\n\n video.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.addEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.addEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n return () => {\n video.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n video.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n\n document.removeEventListener(\"fullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"webkitfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"mozfullscreenchange\", handleFullscreenChange);\n document.removeEventListener(\"MSFullscreenChange\", handleFullscreenChange);\n };\n }, []);\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full max-w-[820px] rounded-[12px] border border-white/10 bg-black/30 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"px-6 pb-0 pt-6\">\n <CardTitle className=\"m-0 text-lg font-semibold text-white\">{title}</CardTitle>\n </CardHeader>\n\n <div className=\"px-6 pb-6 pt-5\">\n <div className=\"relative aspect-video w-full overflow-hidden rounded-lg bg-black\">\n <video\n ref={videoRef}\n className=\"absolute inset-0 h-full w-full object-cover object-center\"\n controls={controls}\n loop={loop}\n autoPlay={autoPlay}\n muted={muted}\n playsInline={playsInline}\n poster={poster}\n >\n <source src={src} />\n Your browser does not support the video tag.\n </video>\n </div>\n </div>\n </Card>\n );\n }\n);\n\nPropertyTour.displayName = \"PropertyTour\";\n","import * as React from \"react\";\n\nimport { Newspaper } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyNewsType = \"property\" | \"market\" | (string & {});\n\nexport type PropertyNewsItem = {\n id?: string;\n title: string;\n date: string | Date;\n type?: PropertyNewsType;\n displayId?: string;\n isNew?: boolean;\n};\n\nexport interface PropertyNewsUpdatesProps extends React.HTMLAttributes<HTMLDivElement> {\n items: PropertyNewsItem[];\n heading?: string;\n subheading?: string;\n emptyState?: React.ReactNode;\n highlightFirst?: boolean;\n}\n\nconst ITEMS_PER_PAGE = 4;\nconst ROW_HEIGHT_PX = 86;\n\nconst ensureAnimationsInjected = () => {\n if (typeof document === \"undefined\") return;\n if (document.getElementById(\"property-news-updates-animations\")) return;\n const style = document.createElement(\"style\");\n style.id = \"property-news-updates-animations\";\n style.textContent = `\n @keyframes propertyNewsPulse {\n 0% { opacity: 0.6; transform: scale(0.9); }\n 50% { opacity: 1; transform: scale(1); }\n 100% { opacity: 0.6; transform: scale(0.9); }\n }\n\n @keyframes propertyNewsSlideIn {\n from { transform: translateY(-6px); opacity: 0; }\n to { transform: translateY(0); opacity: 1; }\n }\n `;\n document.head.appendChild(style);\n};\n\nconst categoryStyles = {\n property: {\n label: \"Property Update\",\n backgroundColor: \"rgba(14, 203, 129, 0.15)\",\n borderColor: \"rgba(14, 203, 129, 0.45)\",\n color: \"#0ecb81\",\n },\n market: {\n label: \"Market News\",\n backgroundColor: \"rgba(248, 209, 47, 0.15)\",\n borderColor: \"rgba(248, 209, 47, 0.45)\",\n color: \"#f8d12f\",\n },\n} as const;\n\nconst formatDate = (value: string | Date) => {\n if (typeof value === \"string\") return value;\n if (!(value instanceof Date) || Number.isNaN(value.getTime())) return \"\";\n return value.toLocaleDateString(undefined, {\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n};\n\nexport const PropertyNewsUpdates = React.forwardRef<HTMLDivElement, PropertyNewsUpdatesProps>(\n (\n {\n className,\n heading = \"Property News & Headlines\",\n subheading,\n items,\n emptyState,\n highlightFirst = true,\n ...props\n },\n ref\n ) => {\n const [page, setPage] = React.useState(0);\n\n React.useEffect(() => {\n ensureAnimationsInjected();\n }, []);\n\n const hasItems = Array.isArray(items) && items.length > 0;\n const totalPages = React.useMemo(() => (hasItems ? Math.max(1, Math.ceil(items.length / ITEMS_PER_PAGE)) : 1), [hasItems, items.length]);\n\n React.useEffect(() => {\n setPage((prev) => Math.min(prev, totalPages - 1));\n }, [totalPages]);\n\n const paginatedItems = hasItems\n ? items.slice(page * ITEMS_PER_PAGE, page * ITEMS_PER_PAGE + ITEMS_PER_PAGE)\n : [];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full max-w-[840px] rounded-2xl border border-white/10 bg-[#0b0e10] p-5 text-white shadow-[0_20px_40px_rgba(0,0,0,0.35)]\",\n className\n )}\n {...props}\n >\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"text-lg font-semibold text-white\">{heading}</p>\n {subheading ? <p className=\"text-sm text-white/60\">{subheading}</p> : null}\n </div>\n <div\n className=\"inline-flex items-center font-semibold uppercase text-emerald-300\"\n style={{ gap: \"0.35rem\", fontSize: \"0.8rem\", letterSpacing: \"0.15em\" }}\n >\n <span\n style={{\n display: \"inline-block\",\n width: \"6px\",\n height: \"6px\",\n borderRadius: \"50%\",\n backgroundColor: \"#34d399\",\n animation: \"propertyNewsPulse 2s infinite\",\n }}\n />\n LIVE\n </div>\n </div>\n\n <div\n className=\"mt-4 flex flex-col gap-3\"\n style={{ minHeight: `${ITEMS_PER_PAGE * ROW_HEIGHT_PX}px` }}\n >\n {hasItems\n ? paginatedItems.map((item, index) => {\n const absoluteIndex = page * ITEMS_PER_PAGE + index;\n const key = item.displayId ?? item.id ?? `${item.title}-${absoluteIndex}`;\n const styles =\n categoryStyles[item.type as keyof typeof categoryStyles] ?? categoryStyles.market;\n const dateLabel =\n (item.isNew ?? (highlightFirst && absoluteIndex === 0))\n ? \"Just now\"\n : typeof item.date === \"string\" && item.date.trim().length > 0\n ? item.date\n : formatDate(item.date);\n const isHighlighted = item.isNew ?? (highlightFirst && absoluteIndex === 0);\n\n return (\n <div\n key={key}\n style={{\n padding: \"0.75rem\",\n borderRadius: \"6px\",\n backgroundColor: isHighlighted ? \"rgba(14, 203, 129, 0.1)\" : \"transparent\",\n border: \"1px solid transparent\",\n transition: \"background-color 0.2s\",\n animation: item.isNew ? \"propertyNewsSlideIn 0.5s ease-out\" : undefined,\n }}\n >\n <p style={{ fontSize: \"0.9375rem\", fontWeight: 500, marginBottom: \"0.35rem\" }}>\n {item.title}\n </p>\n <div\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n fontSize: \"0.75rem\",\n color: \"#b5b8c5\",\n }}\n >\n <span style={{ color: isHighlighted ? \"#0ecb81\" : \"inherit\" }}>{dateLabel}</span>\n <span\n style={{\n padding: \"0.25rem 0.6rem\",\n borderRadius: \"4px\",\n border: `1px solid ${styles.borderColor}`,\n backgroundColor: styles.backgroundColor,\n color: styles.color,\n fontSize: \"0.68rem\",\n fontWeight: 600,\n textTransform: \"uppercase\",\n }}\n >\n {item.type === \"property\" ? styles.label : \"Market News\"}\n </span>\n </div>\n </div>\n );\n })\n : emptyState ?? (\n <div className=\"flex flex-col items-center justify-center rounded-2xl border border-dashed border-white/20 px-6 py-10 text-center text-sm text-white/60\">\n <Newspaper className=\"mb-3 h-8 w-8 text-white/40\" />\n No property news yet. Updates will land here as soon as we receive new intelligence.\n </div>\n )}\n </div>\n\n {hasItems && totalPages > 1 ? (\n <div className=\"mt-4 flex items-center justify-between text-xs text-white/60\">\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.max(0, prev - 1))}\n disabled={page === 0}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page === 0 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Prev\n </button>\n <span className=\"font-medium text-white/70\">\n Page {page + 1} / {totalPages}\n </span>\n <button\n type=\"button\"\n onClick={() => setPage((prev) => Math.min(totalPages - 1, prev + 1))}\n disabled={page >= totalPages - 1}\n className={cn(\n \"rounded-full border border-white/15 px-3 py-1 uppercase tracking-[0.2em]\",\n page >= totalPages - 1 ? \"opacity-40 cursor-not-allowed\" : \"hover:border-white/40\"\n )}\n >\n Next\n </button>\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertyNewsUpdates.displayName = \"PropertyNewsUpdates\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\nimport { Button } from \"./button\";\n\nexport type PropertyAddressOption = {\n id: string;\n label: string;\n};\n\nexport type PropertyCompareBarProps = React.HTMLAttributes<HTMLDivElement> & {\n addresses: (PropertyAddressOption | string)[];\n selectedAddressId?: string;\n onSelectAddress?: (addressId: string) => void;\n compareLabel?: string;\n onCompareClick?: () => void;\n compareIcon?: React.ReactNode;\n};\n\nexport const PropertyCompareBar = React.forwardRef<HTMLDivElement, PropertyCompareBarProps>(\n (\n {\n className,\n addresses,\n selectedAddressId,\n onSelectAddress,\n compareLabel = \"Compare\",\n onCompareClick,\n compareIcon,\n ...props\n },\n ref\n ) => {\n const normalizedAddresses = React.useMemo<PropertyAddressOption[]>(() => {\n return addresses.map((option) =>\n typeof option === \"string\" ? { id: option, label: option } : option\n );\n }, [addresses]);\n\n const hasAddresses = normalizedAddresses.length > 0;\n const firstAddressId = normalizedAddresses[0]?.id;\n\n const isControlled = selectedAddressId !== undefined;\n\n const [internalSelectedId, setInternalSelectedId] = React.useState<string | undefined>(() =>\n isControlled ? undefined : firstAddressId\n );\n\n const resolvedSelectedId = isControlled ? selectedAddressId : internalSelectedId;\n\n React.useEffect(() => {\n if (!isControlled) {\n setInternalSelectedId((current) => {\n if (current != null && normalizedAddresses.some((option) => option.id === current)) {\n return current;\n }\n\n return firstAddressId;\n });\n }\n }, [firstAddressId, isControlled, normalizedAddresses]);\n\n const selectedOption =\n normalizedAddresses.find((option) => option.id === resolvedSelectedId) ?? normalizedAddresses[0];\n\n const [isDropdownOpen, setIsDropdownOpen] = React.useState(false);\n\n const dropdownRef = React.useRef<HTMLDivElement | null>(null);\n\n React.useEffect(() => {\n if (!isDropdownOpen) return;\n\n const handleClick = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsDropdownOpen(false);\n }\n };\n\n const handleKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setIsDropdownOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClick);\n document.addEventListener(\"keydown\", handleKey);\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n document.removeEventListener(\"keydown\", handleKey);\n };\n }, [isDropdownOpen]);\n\n const defaultCompareIcon = (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M4 4h7v7H4V4zm0 9h7v7H4v-7zm9-9h7v7h-7V4zm0 9h7v7h-7v-7z\" />\n </svg>\n );\n\n const handleAddressSelect = (addressId: string) => {\n if (!isControlled) {\n setInternalSelectedId(addressId);\n }\n onSelectAddress?.(addressId);\n setIsDropdownOpen(false);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col gap-3 border border-white/10 px-4 py-3 text-white shadow-[0_18px_40px_rgba(0,0,0,0.55)] md:flex-row md:items-center md:justify-between md:gap-4\",\n className\n )}\n style={{ borderRadius: \"16px\" }}\n {...props}\n >\n <div className=\"relative w-auto\" ref={dropdownRef}>\n <button\n type=\"button\"\n disabled={!hasAddresses}\n onClick={() => setIsDropdownOpen((prev) => !prev)}\n className={cn(\n \"flex h-[42px] w-auto items-center gap-2 rounded-[12px] border border-transparent bg-transparent px-0 text-left text-[15px] font-semibold text-white transition hover:text-white/80 focus-visible:outline-none\",\n !hasAddresses && \"text-white/40\"\n )}\n >\n <span className=\"truncate\">\n {selectedOption ? selectedOption.label : hasAddresses ? \"Select address\" : \"No addresses available\"}\n </span>\n <span className=\"ml-3 flex items-center text-white/60 transition-transform\" aria-hidden>\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(\"transition-transform\", isDropdownOpen && \"rotate-180\")}\n >\n <path d=\"M7 10l5 5 5-5H7z\" />\n </svg>\n </span>\n </button>\n\n {isDropdownOpen && hasAddresses ? (\n <div className=\"absolute left-0 top-[calc(100%+8px)] z-20 w-full rounded-[12px] border border-white/10 py-1 shadow-[0_25px_55px_rgba(0,0,0,0.6)] bg-black\">\n {normalizedAddresses.map((option) => {\n const active = option.id === resolvedSelectedId;\n return (\n <button\n key={option.id}\n type=\"button\"\n className={cn(\n \"flex w-full items-center px-4 py-2 text-left text-[14px] text-white/80 transition hover:bg-white/5 hover:text-white\",\n active && \"text-white\"\n )}\n onClick={() => handleAddressSelect(option.id)}\n >\n {option.label}\n </button>\n );\n })}\n </div>\n ) : null}\n </div>\n\n <Button\n variant=\"accentOutline\"\n size=\"sm\"\n className=\"flex items-center justify-center gap-2 rounded-[10px] border-[var(--color-accent,#e6c87e)] bg-transparent px-4 py-2 text-[14px] font-semibold text-[var(--color-accent,#e6c87e)] transition hover:bg-[rgba(230,200,126,0.08)] md:ml-auto\"\n onClick={onCompareClick}\n disabled={!hasAddresses}\n >\n <span className=\"text-base\">{compareIcon ?? defaultCompareIcon}</span>\n {compareLabel}\n </Button>\n </div>\n );\n }\n);\n\nPropertyCompareBar.displayName = \"PropertyCompareBar\";\n","import * as React from \"react\";\n\nexport type YourOrderSide = \"buy\" | \"sell\";\n\nexport type YourOrder = {\n id: string;\n asset: string;\n side?: YourOrderSide;\n date?: string;\n price: number;\n amount: number;\n total: number;\n filledPercent?: number;\n status?: string;\n propertyPercent?: number;\n portfolioSharePercent?: number;\n avgEntryPrice?: number;\n pnlValue?: number;\n pnlPercent?: number;\n holdingLabel?: string;\n value?: number;\n currentPrice?: number;\n priceChangePercent?: number;\n priceChangePositive?: boolean;\n};\n\nexport type YourOrdersProps = React.HTMLAttributes<HTMLDivElement> & {\n title?: string;\n orders: YourOrder[];\n renderOrderActions?: (order: YourOrder) => React.ReactNode;\n};\n\nconst TABS = [\n { id: \"portfolio\", label: \"Portfolio\" },\n { id: \"openOrders\", label: \"Open Orders\" },\n { id: \"tradeHistory\", label: \"Trade History\" },\n { id: \"orderHistory\", label: \"Order History\" },\n] as const;\n\nconst panelStyle: React.CSSProperties = {\n width: \"100%\",\n borderRadius: \"16px\",\n backgroundColor: \"#111111\",\n border: \"1px solid rgba(255,255,255,0.08)\",\n color: \"#ffffff\",\n display: \"flex\",\n flexDirection: \"column\",\n};\n\nconst headerStyle: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 0.5rem\",\n};\n\nconst titleStyle: React.CSSProperties = {\n margin: 0,\n fontSize: \"1.1rem\",\n fontWeight: 600,\n};\n\nconst tabsRowStyle: React.CSSProperties = {\n display: \"flex\",\n gap: \"0.5rem\",\n padding: \"0 1.5rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst tabButtonBase: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n color: \"rgba(255,255,255,0.5)\",\n fontSize: \"0.9rem\",\n fontWeight: 400,\n padding: \"0.75rem 1rem\",\n cursor: \"pointer\",\n position: \"relative\",\n transition: \"color 0.2s ease\",\n};\n\nconst tabContentWrapper: React.CSSProperties = {\n padding: \"1.25rem 1.5rem 1.5rem\",\n display: \"flex\",\n flexDirection: \"column\",\n gap: \"0.75rem\",\n flex: 1,\n};\n\nconst tableHeaderStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n paddingBottom: \"0.75rem\",\n borderBottom: \"1px solid rgba(255,255,255,0.1)\",\n minWidth: \"700px\",\n};\n\nconst tableHeaderCell: React.CSSProperties = {\n fontSize: \"0.7rem\",\n fontWeight: 700,\n color: \"#ffffff\",\n textTransform: \"uppercase\",\n letterSpacing: \"0.3px\",\n};\n\nconst emptyStateStyle: React.CSSProperties = {\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n textAlign: \"center\",\n color: \"rgba(255,255,255,0.6)\",\n fontSize: \"0.95rem\",\n border: \"1px dashed rgba(255,255,255,0.12)\",\n borderRadius: \"8px\",\n minHeight: \"220px\",\n};\n\nconst rowStyle: React.CSSProperties = {\n display: \"grid\",\n gridTemplateColumns: \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\",\n gap: \"0.5rem\",\n alignItems: \"center\",\n minWidth: \"700px\",\n padding: \"0.75rem 0\",\n borderBottom: \"1px solid rgba(255,255,255,0.08)\",\n};\n\nconst formatCurrency = (value?: number) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `$${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\nconst formatPercent = (value?: number, fractionDigits = 2) => {\n if (value == null || Number.isNaN(value)) return \"—\";\n return `${value.toFixed(fractionDigits)}%`;\n};\n\nexport const YourOrders = React.forwardRef<HTMLDivElement, YourOrdersProps>(\n ({ className, title = \"Portfolio Holdings (Demo)\", orders, renderOrderActions, ...props }, ref) => {\n const [activeTab, setActiveTab] = React.useState<(typeof TABS)[number][\"id\"]>(\"portfolio\");\n\n const hasOrders = Array.isArray(orders) && orders.length > 0;\n\n const renderPortfolio = () => {\n if (!hasOrders) {\n return <div style={emptyStateStyle}>No holdings yet. Start trading to build your portfolio.</div>;\n }\n\n return (\n <>\n <div style={tableHeaderStyle}>\n <div style={tableHeaderCell}>Property</div>\n <div style={tableHeaderCell}>Value</div>\n <div style={tableHeaderCell}>Holding</div>\n <div style={tableHeaderCell}>% of Property</div>\n <div style={tableHeaderCell}>Avg Price</div>\n <div style={tableHeaderCell}>P&L</div>\n </div>\n\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.65rem\" }}>\n {orders.map((order) => {\n const propertyName = order.asset;\n const holding =\n order.holdingLabel ??\n `${order.amount.toLocaleString(undefined, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n })} ${propertyName}`;\n const value = order.value ?? order.total;\n const portfolioShare =\n order.portfolioSharePercent != null\n ? `${order.portfolioSharePercent.toFixed(1)}% of portfolio`\n : undefined;\n const propertyPercent = order.propertyPercent;\n const avgPrice = order.avgEntryPrice ?? order.price;\n const pnlValue = order.pnlValue;\n const pnlPercent = order.pnlPercent;\n const pnlPositive = pnlValue != null ? pnlValue >= 0 : (pnlPercent ?? 0) >= 0;\n const currentPrice = order.currentPrice ?? order.price;\n const priceChangePercent = order.priceChangePercent ?? order.pnlPercent;\n const priceChangePositive =\n order.priceChangePositive ?? (priceChangePercent != null ? priceChangePercent >= 0 : undefined);\n\n return (\n <div key={order.id} style={{ ...rowStyle, gridTemplateColumns: renderOrderActions ? \"1.8fr 0.8fr 0.7fr 0.8fr 0.8fr 0.9fr 0.8fr\" : \"1.8fr 0.9fr 0.7fr 0.8fr 0.8fr 1fr\" }}>\n <div style={{ display: \"flex\", gap: \"1rem\", alignItems: \"center\" }}>\n <div style={{ display: \"flex\", flexDirection: \"column\", gap: \"0.15rem\" }}>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500 }}>{propertyName}</div>\n {portfolioShare ? (\n <div style={{ fontSize: \"0.72rem\", color: \"rgba(255,255,255,0.5)\" }}>{portfolioShare}</div>\n ) : null}\n </div>\n {currentPrice != null ? (\n <div>\n <div\n style={{\n fontSize: \"0.9rem\",\n color: \"var(--color-text, #ffffff)\",\n display: \"flex\",\n alignItems: \"center\",\n gap: \"0.25rem\",\n }}\n >\n {priceChangePositive != null ? (\n <span\n style={{\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n fontSize: \"0.7em\",\n }}\n >\n {priceChangePositive ? \"▲\" : \"▼\"}\n </span>\n ) : null}\n {formatCurrency(currentPrice)}\n </div>\n {priceChangePercent != null ? (\n <div\n style={{\n fontSize: \"0.7rem\",\n color: priceChangePositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n ({priceChangePositive ? \"+\" : \"\"}\n {priceChangePercent.toFixed(2)}%)\n </div>\n ) : null}\n </div>\n ) : null}\n </div>\n <div style={{ fontSize: \"0.9rem\", fontWeight: 500, color: \"#D4AF37\" }}>{formatCurrency(value)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.92)\" }}>{holding}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.8)\" }}>{formatPercent(propertyPercent, 3)}</div>\n <div style={{ fontSize: \"0.9rem\", color: \"rgba(255,255,255,0.9)\" }}>{formatCurrency(avgPrice)}</div>\n <div\n style={{\n fontSize: \"0.9rem\",\n fontWeight: 500,\n color: pnlPositive ? \"#0ecb81\" : \"#f6465d\",\n }}\n >\n {pnlValue != null ? `${pnlPositive ? \"+\" : \"-\"}${formatCurrency(Math.abs(pnlValue))}` : formatCurrency(pnlValue)}\n {pnlPercent != null ? (\n <span style={{ marginLeft: \"0.35rem\", fontSize: \"0.75rem\", color: \"rgba(255,255,255,0.6)\" }}>\n ({pnlPositive ? \"+\" : \"\"}\n {pnlPercent.toFixed(1)}%)\n </span>\n ) : null}\n </div>\n {renderOrderActions ? <div style={{ display: \"flex\", justifyContent: \"flex-end\" }}>{renderOrderActions(order)}</div> : null}\n </div>\n );\n })}\n </div>\n </>\n );\n };\n\n const renderOtherTab = (label: string) => (\n <div style={emptyStateStyle}>{`No ${label.toLowerCase()} data available.`}</div>\n );\n\n let tabContent: React.ReactNode = null;\n switch (activeTab) {\n case \"portfolio\":\n tabContent = renderPortfolio();\n break;\n case \"openOrders\":\n tabContent = renderOtherTab(\"Open Orders\");\n break;\n case \"tradeHistory\":\n tabContent = renderOtherTab(\"Trade History\");\n break;\n case \"orderHistory\":\n tabContent = renderOtherTab(\"Order History\");\n break;\n default:\n tabContent = null;\n }\n\n return (\n <div ref={ref} style={panelStyle} className={className} {...props}>\n <div style={headerStyle}>\n <h3 style={titleStyle}>{title}</h3>\n </div>\n\n <div style={tabsRowStyle}>\n {TABS.map((tab) => {\n const isActive = activeTab === tab.id;\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => setActiveTab(tab.id)}\n style={{\n ...tabButtonBase,\n color: isActive ? \"#ffffff\" : \"rgba(255,255,255,0.55)\",\n fontWeight: isActive ? 600 : 400,\n }}\n >\n {tab.label}\n {isActive ? (\n <div\n style={{\n position: \"absolute\",\n bottom: \"-1px\",\n left: 0,\n right: 0,\n height: \"2px\",\n background: \"#f0b90b\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n\n <div style={tabContentWrapper}>{tabContent}</div>\n </div>\n );\n }\n);\n\nYourOrders.displayName = \"YourOrders\";\n","import * as React from \"react\";\nimport {\n createChart,\n type IChartApi,\n type IPriceLine,\n type ISeriesApi,\n type Time,\n} from \"lightweight-charts\";\n\nimport { cn } from \"../lib/cn\";\nimport { Card, CardHeader, CardTitle } from \"./card\";\n\nexport type PriceChartRange = \"1D\" | \"1W\" | \"1M\" | \"3M\" | \"1Y\";\n\nexport type PriceChartCandle = {\n time: Time;\n open: number;\n high: number;\n low: number;\n close: number;\n};\n\nexport type PriceChartProps = Omit<React.ComponentPropsWithoutRef<typeof Card>, \"title\"> & {\n title?: string;\n ranges?: PriceChartRange[];\n selectedRange?: PriceChartRange;\n onRangeChange?: (range: PriceChartRange) => void;\n data: PriceChartCandle[];\n price?: number;\n changePercent?: number;\n currencySymbol?: string;\n height?: number;\n};\n\nconst defaultRanges: PriceChartRange[] = [\"1D\", \"1W\", \"1M\", \"3M\", \"1Y\"];\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n};\n\nexport const PriceChart = React.forwardRef<HTMLDivElement, PriceChartProps>(\n (\n {\n className,\n title = \"Price Chart\",\n ranges = defaultRanges,\n selectedRange,\n onRangeChange,\n data,\n price,\n changePercent,\n currencySymbol = \"$\",\n height = 301.52,\n ...props\n },\n ref\n ) => {\n const containerRef = React.useRef<HTMLDivElement | null>(null);\n const chartRef = React.useRef<IChartApi | null>(null);\n const seriesRef = React.useRef<ISeriesApi<\"Candlestick\"> | null>(null);\n const priceLineRef = React.useRef<IPriceLine | null>(null);\n const [hoveredRange, setHoveredRange] = React.useState<PriceChartRange | null>(null);\n\n const resolvedPrice = React.useMemo(() => {\n if (price != null) return price;\n const last = data.at(-1);\n return last?.close;\n }, [data, price]);\n\n const inferredChangePercent = React.useMemo(() => {\n if (changePercent != null) return changePercent;\n const first = data[0]?.open;\n const last = data.at(-1)?.close;\n if (first == null || last == null || first === 0) return undefined;\n return ((last - first) / first) * 100;\n }, [changePercent, data]);\n\n React.useEffect(() => {\n const el = containerRef.current;\n if (!el) return;\n\n const chart = createChart(el, {\n autoSize: true,\n layout: {\n background: { color: \"transparent\" },\n textColor: \"rgba(255,255,255,0.55)\",\n fontFamily: \"inherit\",\n },\n grid: {\n vertLines: { color: \"rgba(255,255,255,0.06)\" },\n horzLines: { color: \"rgba(255,255,255,0.06)\" },\n },\n rightPriceScale: {\n borderColor: \"rgba(230, 200, 126, 0.25)\",\n textColor: \"rgba(230, 200, 126, 0.7)\",\n },\n timeScale: {\n borderColor: \"rgba(255,255,255,0.06)\",\n timeVisible: true,\n secondsVisible: false,\n },\n crosshair: {\n vertLine: { color: \"rgba(255,255,255,0.12)\" },\n horzLine: { color: \"rgba(255,255,255,0.12)\" },\n },\n });\n\n const series = chart.addCandlestickSeries({\n upColor: \"#0ecb81\",\n downColor: \"#f6465d\",\n borderVisible: false,\n wickUpColor: \"#0ecb81\",\n wickDownColor: \"#f6465d\",\n });\n\n chartRef.current = chart;\n seriesRef.current = series;\n\n return () => {\n chartRef.current = null;\n seriesRef.current = null;\n chart.remove();\n };\n }, []);\n\n React.useEffect(() => {\n const chart = chartRef.current;\n const series = seriesRef.current;\n if (!chart || !series) return;\n\n series.setData(data);\n\n if (priceLineRef.current) {\n series.removePriceLine(priceLineRef.current);\n priceLineRef.current = null;\n }\n\n if (resolvedPrice != null) {\n const priceLineColor = \"rgba(230, 200, 126, 0.9)\";\n\n priceLineRef.current = series.createPriceLine({\n price: resolvedPrice,\n color: priceLineColor,\n lineWidth: 1,\n lineStyle: 2,\n axisLabelVisible: true,\n title: resolvedPrice.toFixed(2),\n });\n }\n\n chart.timeScale().fitContent();\n }, [data, resolvedPrice]);\n\n const sign = inferredChangePercent == null ? null : inferredChangePercent >= 0 ? \"+\" : \"\";\n const changeClass =\n inferredChangePercent == null ? \"\" : inferredChangePercent >= 0 ? \"text-[#0ecb81]\" : \"text-[#f6465d]\";\n const badgeClass =\n inferredChangePercent == null\n ? \"\"\n : inferredChangePercent >= 0\n ? \"bg-[#0ecb81]/15 text-[#0ecb81]\"\n : \"bg-[#f6465d]/15 text-[#f6465d]\";\n\n const btnBaseStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-card-dark, rgba(255, 255, 255, 0.05))\",\n borderColor: \"var(--color-border, rgba(255, 255, 255, 0.12))\",\n color: \"var(--color-text-secondary, rgba(255, 255, 255, 0.7))\",\n };\n\n const btnHoverStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent-dark, rgba(230, 200, 126, 0.15))\",\n color: \"var(--color-text, #ffffff)\",\n };\n\n const btnActiveStyle: React.CSSProperties = {\n backgroundColor: \"var(--color-accent, #e6c87e)\",\n borderColor: \"var(--color-accent, #e6c87e)\",\n color: \"#000000\",\n };\n\n return (\n <Card\n ref={ref}\n className={cn(\n \"w-full min-h-[450px] rounded-lg border border-white/10 bg-black/30 text-white backdrop-blur-md\",\n className\n )}\n {...props}\n >\n <CardHeader className=\"flex flex-row items-start justify-between gap-4 px-6 pb-2 pt-6\">\n <div>\n <CardTitle className=\"m-0 text-[1.1rem] font-semibold text-white\">{title}</CardTitle>\n <div className=\"mt-3 flex items-center gap-2\">\n {ranges.map((r) => {\n const active = r === selectedRange;\n const hovered = hoveredRange === r;\n const style: React.CSSProperties = {\n ...btnBaseStyle,\n ...(hovered ? btnHoverStyle : null),\n ...(active ? btnActiveStyle : null),\n };\n return (\n <button\n key={r}\n type=\"button\"\n onClick={() => onRangeChange?.(r)}\n onMouseEnter={() => setHoveredRange(r)}\n onMouseLeave={() => setHoveredRange((prev) => (prev === r ? null : prev))}\n style={style}\n className={cn(\n \"rounded border px-3 py-1 text-[0.85rem] font-medium transition-all duration-200\"\n )}\n >\n {r}\n </button>\n );\n })}\n </div>\n </div>\n\n <div className=\"flex items-center gap-3\">\n {resolvedPrice == null ? null : (\n <div className={cn(\"text-xl font-semibold tabular-nums\", changeClass)}>\n {formatPrice(resolvedPrice, currencySymbol)}\n </div>\n )}\n {inferredChangePercent == null ? null : (\n <div className={cn(\"rounded-md px-2 py-1 text-xs font-semibold tabular-nums\", badgeClass)}>\n {sign}\n {inferredChangePercent?.toFixed(2)}%\n </div>\n )}\n </div>\n </CardHeader>\n\n <div className=\"px-6 pb-6 pt-2\">\n <div\n ref={containerRef}\n className=\"w-full overflow-hidden rounded-lg\"\n style={{ height }}\n />\n </div>\n </Card>\n );\n }\n);\n\nPriceChart.displayName = \"PriceChart\";\n","import * as React from \"react\";\n\nimport { BedDouble, Bath, CarFront } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertyHeroHeaderProps = React.HTMLAttributes<HTMLDivElement> & {\n imageUrl: string;\n imageAlt?: string;\n name: string;\n location: string;\n price?: number;\n currencySymbol?: string;\n changePercent?: number;\n beds?: number;\n baths?: number;\n cars?: number;\n propertyTypeLabel?: string;\n onTrade?: () => void;\n onMakeOffer?: () => void;\n};\n\nconst formatPrice = (value: number, currencySymbol: string) => {\n return `${currencySymbol}${value.toLocaleString(undefined, {\n minimumFractionDigits: 3,\n maximumFractionDigits: 3,\n })}`;\n};\n\nexport const PropertyHeroHeader = React.forwardRef<HTMLDivElement, PropertyHeroHeaderProps>(\n (\n {\n className,\n imageUrl,\n imageAlt,\n name,\n location,\n price,\n currencySymbol = \"$\",\n changePercent,\n beds,\n baths,\n cars,\n propertyTypeLabel,\n onTrade,\n onMakeOffer,\n ...props\n },\n ref\n ) => {\n const isPositive = changePercent == null ? undefined : changePercent >= 0;\n const accentColor = \"#e6c87e\";\n const tradeHoverColor = \"#f5dd9a\";\n const [isTradeInteracting, setIsTradeInteracting] = React.useState(false);\n const [isOfferInteracting, setIsOfferInteracting] = React.useState(false);\n\n const makeOfferHighlight = \"rgba(230, 200, 126, 0.15)\";\n const headingStyle: React.CSSProperties = {\n fontSize: \"2.5rem\",\n marginBottom: \"0.5rem\",\n color: \"#ffffff\",\n textShadow: \"0 2px 4px rgba(0, 0, 0, 0.3)\",\n fontWeight: 600,\n lineHeight: 1.2,\n };\n const priceBlockStyle: React.CSSProperties = {\n fontSize: \"1.25rem\",\n fontWeight: 600,\n color: \"var(--color-accent, #f0b90b)\",\n marginLeft: \"1rem\",\n paddingLeft: \"1rem\",\n borderLeft: \"1px solid rgba(255, 255, 255, 0.3)\",\n display: \"flex\",\n alignItems: \"center\",\n };\n const locationStyle: React.CSSProperties = {\n fontSize: \"1.25rem\",\n color: \"rgba(255, 255, 255, 0.9)\",\n marginBottom: \"0.75rem\",\n display: \"flex\",\n alignItems: \"center\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative w-[1200px] h-[500px] overflow-hidden bg-black rounded-[12px]\",\n className\n )}\n {...props}\n >\n <img\n src={imageUrl}\n alt={imageAlt ?? name}\n className=\"absolute inset-0 block h-full w-full object-cover object-center\"\n style={{ transform: \"scale(1.20)\", transformOrigin: \"center\" }}\n />\n\n <div className=\"absolute bottom-0 left-0 right-0 z-10 flex w-full items-end justify-between gap-4 p-8 max-[768px]:flex-col max-[768px]:items-start max-[768px]:gap-4 max-[768px]:p-6 max-[480px]:p-4\">\n <div className=\"inline-block w-full rounded-lg bg-black/15 px-4 py-3 text-white shadow-[0px_1px_1px_rgba(0,0,0,0.3)] backdrop-blur-[3px] max-[768px]:w-full max-[768px]:px-3 max-[768px]:py-3 max-[480px]:px-3 max-[480px]:py-2 min-[769px]:flex-1 min-[769px]:min-w-0\">\n <div className=\"min-w-0 space-y-2\">\n <h1 style={headingStyle} className=\"break-words\">\n {name}\n </h1>\n\n <div className=\"mb-3 flex flex-wrap items-center max-[768px]:mb-[0.6rem] max-[768px]:text-[1.1rem] max-[480px]:mb-[0.5rem] max-[480px]:text-[1rem]\">\n <span style={locationStyle}>{location}</span>\n {price == null ? null : (\n <span style={priceBlockStyle}>\n {formatPrice(price, currencySymbol)}\n {changePercent == null ? null : (\n <span\n className={cn(\n \"ml-2 flex items-center text-[0.875rem] font-medium\",\n isPositive ? \"text-[#0ecb81]\" : \"text-[#f6465d]\"\n )}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className=\"mr-[0.15rem]\"\n >\n <path d={isPositive ? \"M7 14l5-5 5 5H7z\" : \"M7 10l5 5 5-5H7z\"} />\n </svg>\n {Math.abs(changePercent).toFixed(2)}%\n </span>\n )}\n </span>\n )}\n </div>\n </div>\n <div className=\"flex items-center gap-6 text-[0.95rem] text-white/90 max-[768px]:hidden\">\n {beds == null ? null : (\n <div className=\"flex items-center\">\n <BedDouble className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{beds} Beds</span>\n </div>\n )}\n {baths == null ? null : (\n <div className=\"flex items-center\">\n <Bath className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{baths} Baths</span>\n </div>\n )}\n {cars == null ? null : (\n <div className=\"flex items-center\">\n <CarFront className=\"mr-2 h-[18px] w-[18px]\" />\n <span>{cars} Cars</span>\n </div>\n )}\n {propertyTypeLabel == null ? null : <div>{propertyTypeLabel}</div>}\n </div>\n </div>\n\n <div className=\"flex shrink-0 flex-wrap items-center gap-3 max-[768px]:w-full max-[768px]:justify-between max-[768px]:gap-2 max-[480px]:gap-2\">\n <button\n type=\"button\"\n onClick={onTrade}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isTradeInteracting ? tradeHoverColor : accentColor,\n color: \"black\",\n width: \"88.06px\",\n height: \"43px\",\n minWidth: \"88.06px\",\n borderColor: isTradeInteracting ? accentColor : \"transparent\",\n boxShadow: isTradeInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsTradeInteracting(true)}\n onMouseLeave={() => setIsTradeInteracting(false)}\n onMouseDown={() => setIsTradeInteracting(true)}\n onMouseUp={() => setIsTradeInteracting(false)}\n onFocus={() => setIsTradeInteracting(true)}\n onBlur={() => setIsTradeInteracting(false)}\n onTouchStart={() => setIsTradeInteracting(true)}\n onTouchEnd={() => setIsTradeInteracting(false)}\n >\n Trade\n </button>\n\n <button\n type=\"button\"\n onClick={onMakeOffer}\n className=\"flex items-center justify-center rounded border font-semibold transition-all duration-200 hover:-translate-y-0.5 hover:shadow-[0_4px_8px_rgba(0,0,0,0.2)] active:translate-y-0 active:shadow-[0_2px_4px_rgba(0,0,0,0.1)] text-[0.95rem] max-[480px]:text-[0.9rem]\"\n style={{\n backgroundColor: isOfferInteracting ? accentColor : \"transparent\",\n borderColor: accentColor,\n color: isOfferInteracting ? \"black\" : accentColor,\n width: \"127.14px\",\n height: \"43px\",\n minWidth: \"127.14px\",\n boxShadow: isOfferInteracting ? `0 0 0 2px rgba(0,0,0,0.4), 0 0 0 4px ${accentColor}` : \"none\",\n }}\n onMouseEnter={() => setIsOfferInteracting(true)}\n onMouseLeave={() => setIsOfferInteracting(false)}\n onMouseDown={() => setIsOfferInteracting(true)}\n onMouseUp={() => setIsOfferInteracting(false)}\n onFocus={() => setIsOfferInteracting(true)}\n onBlur={() => setIsOfferInteracting(false)}\n onTouchStart={() => setIsOfferInteracting(true)}\n onTouchEnd={() => setIsOfferInteracting(false)}\n >\n Make Offer\n </button>\n </div>\n </div>\n </div>\n );\n }\n);\n\nPropertyHeroHeader.displayName = \"PropertyHeroHeader\";\n","import * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport type PropertySubheaderTab = {\n id: string;\n label: string;\n hasNotification?: boolean;\n notificationColor?: string;\n};\n\nexport type PropertySubheaderAction = {\n id: string;\n label: string;\n icon?: React.ReactNode;\n onClick?: () => void;\n};\n\nexport type PropertySubheaderProps = React.HTMLAttributes<HTMLDivElement> & {\n tabs: PropertySubheaderTab[];\n activeTabId: string;\n onTabChange?: (tabId: string) => void;\n actions?: PropertySubheaderAction[];\n};\n\nexport const PropertySubheader = React.forwardRef<HTMLDivElement, PropertySubheaderProps>(\n ({ className, tabs, activeTabId, onTabChange, actions, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full font-normal\",\n \"flex flex-col gap-3\",\n \"md:flex-row md:items-center md:justify-between\",\n className\n )}\n {...props}\n >\n <div\n className={cn(\n \"flex items-center border-b border-white/10\",\n \"overflow-x-auto md:overflow-visible\",\n \"[-webkit-overflow-scrolling:touch]\",\n \"[scrollbar-width:none]\",\n \"[scroll-behavior:smooth]\",\n \"[touch-action:pan-x]\",\n \"md:border-b-0\"\n )}\n style={{ WebkitTapHighlightColor: \"transparent\" }}\n >\n <div className=\"flex min-w-max\">\n {tabs.map((tab) => {\n const active = tab.id === activeTabId;\n\n return (\n <button\n key={tab.id}\n type=\"button\"\n onClick={() => onTabChange?.(tab.id)}\n className={cn(\n \"relative whitespace-nowrap\",\n \"px-6 py-4\",\n \"font-normal\",\n \"transition-colors\",\n \"max-[768px]:px-[1.2rem] max-[768px]:py-[0.8rem]\",\n \"max-[480px]:px-4 max-[480px]:py-[0.7rem] max-[480px]:text-[0.9rem]\",\n active\n ? \"font-semibold text-[var(--color-accent,#e6c87e)]\"\n : \"text-white/60 hover:text-white\"\n )}\n style={{\n borderBottom: active ? \"2px solid var(--color-accent, #e6c87e)\" : \"2px solid transparent\",\n minWidth: \"80px\",\n touchAction: \"manipulation\",\n }}\n >\n {tab.label}\n\n {tab.hasNotification ? (\n <span\n className=\"absolute right-[10px] top-[10px] h-2 w-2 rounded-full animate-pulse\"\n style={{\n backgroundColor: tab.notificationColor ?? \"#f6465d\",\n boxShadow: \"0 0 0 0 rgba(246, 70, 93, 0.7)\",\n }}\n />\n ) : null}\n </button>\n );\n })}\n </div>\n </div>\n\n {actions != null && actions.length > 0 ? (\n <div\n className={cn(\n \"flex items-center gap-[10px]\",\n \"overflow-x-auto md:overflow-visible\",\n \"[scrollbar-width:none]\",\n \"md:justify-end\",\n \"max-[768px]:w-full max-[768px]:justify-center max-[768px]:pb-2 max-[768px]:mb-4\"\n )}\n >\n {actions.map((action) => (\n <button\n key={action.id}\n type=\"button\"\n onClick={action.onClick}\n className={cn(\n \"flex shrink-0 items-center gap-[5px] whitespace-nowrap\",\n \"rounded\",\n \"border border-white/10\",\n \"bg-transparent\",\n \"px-3 py-1.5 text-[14px] font-normal\",\n \"transition-all\",\n \"max-[768px]:px-2.5 max-[768px]:py-[5px] max-[768px]:text-[13px]\",\n \"hover:bg-white/5 hover:border-[var(--color-accent,#e6c87e)] hover:text-[var(--color-accent,#e6c87e)]\"\n )}\n >\n {action.icon}\n {action.label}\n </button>\n ))}\n </div>\n ) : null}\n </div>\n );\n }\n);\n\nPropertySubheader.displayName = \"PropertySubheader\";\n"]}
|