Make small embeds into cards (#976)
* Fix embed style (adjust input, strikethrough) * Turn small embeds into contract cards * Use media query instead of conditional render * Open embed card clicks in new tab
This commit is contained in:
parent
758dbfe398
commit
0ffd6c129a
|
@ -38,8 +38,8 @@ export function AmountInput(props: {
|
|||
return (
|
||||
<>
|
||||
<Col className={className}>
|
||||
<label className="font-sm md:font-lg">
|
||||
<span className={clsx('text-greyscale-4 absolute ml-2 mt-[9px]')}>
|
||||
<label className="font-sm md:font-lg relative">
|
||||
<span className="text-greyscale-4 absolute top-1/2 my-auto ml-2 -translate-y-1/2">
|
||||
{label}
|
||||
</span>
|
||||
<input
|
||||
|
|
|
@ -46,6 +46,7 @@ export function ContractCard(props: {
|
|||
hideGroupLink?: boolean
|
||||
trackingPostfix?: string
|
||||
noLinkAvatar?: boolean
|
||||
newTab?: boolean
|
||||
}) {
|
||||
const {
|
||||
showTime,
|
||||
|
@ -56,6 +57,7 @@ export function ContractCard(props: {
|
|||
hideGroupLink,
|
||||
trackingPostfix,
|
||||
noLinkAvatar,
|
||||
newTab,
|
||||
} = props
|
||||
const contract = useContractWithPreload(props.contract) ?? props.contract
|
||||
const { question, outcomeType } = contract
|
||||
|
@ -189,6 +191,7 @@ export function ContractCard(props: {
|
|||
}
|
||||
)}
|
||||
className="absolute top-0 left-0 right-0 bottom-0"
|
||||
target={newTab ? '_blank' : '_self'}
|
||||
/>
|
||||
</Link>
|
||||
)}
|
||||
|
@ -211,7 +214,9 @@ export function BinaryResolutionOrChance(props: {
|
|||
const probChanged = before !== after
|
||||
|
||||
return (
|
||||
<Col className={clsx(large ? 'text-4xl' : 'text-3xl', className)}>
|
||||
<Col
|
||||
className={clsx('items-end', large ? 'text-4xl' : 'text-3xl', className)}
|
||||
>
|
||||
{resolution ? (
|
||||
<>
|
||||
<div
|
||||
|
|
|
@ -114,11 +114,7 @@ const BinaryOverview = (props: { contract: BinaryContract; bets: Bet[] }) => {
|
|||
<ContractDetails contract={contract} />
|
||||
<Row className="justify-between gap-4">
|
||||
<OverviewQuestion text={contract.question} />
|
||||
<BinaryResolutionOrChance
|
||||
className="flex items-end"
|
||||
contract={contract}
|
||||
large
|
||||
/>
|
||||
<BinaryResolutionOrChance contract={contract} large />
|
||||
</Row>
|
||||
</Col>
|
||||
<SizedContractChart
|
||||
|
|
|
@ -6,6 +6,7 @@ import { BetInline } from 'web/components/bet-inline'
|
|||
import { Button } from 'web/components/button'
|
||||
import {
|
||||
BinaryResolutionOrChance,
|
||||
ContractCard,
|
||||
FreeResponseResolutionOrChance,
|
||||
NumericResolutionOrExpectation,
|
||||
PseudoNumericResolutionOrExpectation,
|
||||
|
@ -64,10 +65,13 @@ export default function ContractEmbedPage(props: {
|
|||
return <ContractEmbed contract={contract} bets={bets} />
|
||||
}
|
||||
|
||||
export function ContractEmbed(props: { contract: Contract; bets: Bet[] }) {
|
||||
const { contract, bets } = props
|
||||
const { question, outcomeType } = contract
|
||||
interface EmbedProps {
|
||||
contract: Contract
|
||||
bets: Bet[]
|
||||
}
|
||||
|
||||
export function ContractEmbed(props: EmbedProps) {
|
||||
const { contract } = props
|
||||
useEffect(() => {
|
||||
track('view market embed', {
|
||||
slug: contract.slug,
|
||||
|
@ -77,6 +81,27 @@ export function ContractEmbed(props: { contract: Contract; bets: Bet[] }) {
|
|||
})
|
||||
}, [contract.creatorId, contract.id, contract.slug])
|
||||
|
||||
// return (height < 250px) ? Card : SmolView
|
||||
return (
|
||||
<>
|
||||
<div className="contents [@media(min-height:250px)]:hidden">
|
||||
<ContractCard
|
||||
contract={contract}
|
||||
className="h-screen"
|
||||
noLinkAvatar
|
||||
newTab
|
||||
/>
|
||||
</div>
|
||||
<div className="hidden [@media(min-height:250px)]:contents">
|
||||
<ContractSmolView {...props} />
|
||||
</div>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
function ContractSmolView({ contract, bets }: EmbedProps) {
|
||||
const { question, outcomeType } = contract
|
||||
|
||||
const isBinary = outcomeType === 'BINARY'
|
||||
const isPseudoNumeric = outcomeType === 'PSEUDO_NUMERIC'
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user