add standard ruleset docs
3
bun.lock
@@ -68,6 +68,7 @@
|
|||||||
"recharts": "^2.15.2",
|
"recharts": "^2.15.2",
|
||||||
"remeda": "^2.21.2",
|
"remeda": "^2.21.2",
|
||||||
"server-only": "^0.0.1",
|
"server-only": "^0.0.1",
|
||||||
|
"slugify": "^1.6.6",
|
||||||
"sonner": "^2.0.3",
|
"sonner": "^2.0.3",
|
||||||
"superjson": "^2.2.1",
|
"superjson": "^2.2.1",
|
||||||
"tailwind-merge": "^3.1.0",
|
"tailwind-merge": "^3.1.0",
|
||||||
@@ -1033,6 +1034,8 @@
|
|||||||
|
|
||||||
"simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="],
|
"simple-swizzle": ["simple-swizzle@0.2.2", "", { "dependencies": { "is-arrayish": "^0.3.1" } }, "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg=="],
|
||||||
|
|
||||||
|
"slugify": ["slugify@1.6.6", "", {}, "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw=="],
|
||||||
|
|
||||||
"sonner": ["sonner@2.0.3", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-njQ4Hht92m0sMqqHVDL32V2Oun9W1+PHO9NDv9FHfJjT3JT22IG4Jpo3FPQy+mouRKCXFWO+r67v6MrHX2zeIA=="],
|
"sonner": ["sonner@2.0.3", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-njQ4Hht92m0sMqqHVDL32V2Oun9W1+PHO9NDv9FHfJjT3JT22IG4Jpo3FPQy+mouRKCXFWO+r67v6MrHX2zeIA=="],
|
||||||
|
|
||||||
"source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="],
|
"source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"title": "Getting Started",
|
"title": "Getting Started",
|
||||||
"pages": ["installation", "multiplayer-balance-changes", "faq"],
|
"pages": ["installation", "faq"],
|
||||||
"defaultOpen": true
|
"defaultOpen": true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,10 @@
|
|||||||
{
|
{
|
||||||
"title": "Advanced",
|
"pages": [
|
||||||
"pages": ["index", "getting-started", "advanced"],
|
"index",
|
||||||
|
"getting-started",
|
||||||
|
"rulesets",
|
||||||
|
"ranked-matchmaking",
|
||||||
|
"advanced"
|
||||||
|
],
|
||||||
"defaultOpen": true
|
"defaultOpen": true
|
||||||
}
|
}
|
||||||
|
|||||||
335
content/docs/rulesets/standard.mdx
Normal file
@@ -0,0 +1,335 @@
|
|||||||
|
---
|
||||||
|
title: Standard
|
||||||
|
description: The standard ruleset includes Multiplayer cards and changes to the base game to fit the Multiplayer meta.
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
## Jokers
|
||||||
|
|
||||||
|
### Multiplayer Jokers
|
||||||
|
|
||||||
|
There are **10 added multiplayer jokers**. All jokers added in the multiplayer mod are designed
|
||||||
|
to **interact with your opponent** and will not show up in single player games.
|
||||||
|
|
||||||
|
<div className={'relative overflow-auto'}>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className={'text-center'}>Joker</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Defensive Joker [toc]
|
||||||
|
<JokerCard name={'Defensive Joker'} img={'/cards/j_defensive_joker.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<Chips>+125</Chips> Chips for every life less than your Nemesis.
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
There is a bug where this joker might appear in single player mode. To fix this, disable the multiplayer
|
||||||
|
mod when playing single player.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Skip-Off [toc]
|
||||||
|
<JokerCard name={'Skip-Off'} img={'/cards/j_skip_off.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<Hands>+1</Hands> Hands and <Hands>+1</Hands> Discards per additional blind skipped compared to your
|
||||||
|
Nemesis.
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Let's Go Gambling [toc]
|
||||||
|
<JokerCard name={'Let\'s Go Gambling'} img={'/cards/j_lets_go_gambling.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div className={'flex flex-col gap-1'}>
|
||||||
|
<span><Chance>1 in 4</Chance> chance for <Xmult>X4</Xmult> Mult and <Money>$10</Money></span>
|
||||||
|
<span><Chance>1 in 8</Chance> chance to give your Nemesis <Money>$5</Money></span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
The effect applies on each hand played.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Speedrun [toc]
|
||||||
|
<JokerCard name={'Speedrun'} img={'/cards/j_speedrun.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
If you reach a <Hands>PvP Blind</Hands> before your Nemesis, create a
|
||||||
|
random <Spectral>Spectral</Spectral> card. Must have room.
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
There is a bug where the spectral card might not be created, but is is very rare. We're working on a
|
||||||
|
fix.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Conjoined Joker [toc]
|
||||||
|
<JokerCard name={'Conjoined Joker'} img={'/cards/j_conjoined_joker.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
While in a <Hands>PvP Blind</Hands>, gain
|
||||||
|
<Xmult>X1</Xmult> Mult for every <Hands>Hand</Hands>
|
||||||
|
your Nemesis has left
|
||||||
|
(Max <Xmult>X5</Xmult> Mult)
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Penny Pincher [toc]
|
||||||
|
<JokerCard name={'Penny Pincher'} img={'/cards/j_penny_pincher.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
At start of shop, gain
|
||||||
|
<Money>$1</Money> for every <Money>$3</Money> your Nemesis spent last shop
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Taxes [toc]
|
||||||
|
<JokerCard name={'Taxes'} img={'/cards/j_taxes.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
This Joker gains <Mult>+5</Mult> Mult each time your Nemesis sells a card
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Magnet [toc]
|
||||||
|
<JokerCard name={'Magnet'} img={'/cards/j_magnet.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
After <Hands>2</Hands> rounds, sell this card to Copy your Nemesis' highest sell cost Joker. Does not
|
||||||
|
copy Joker state.
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
If your Nemesis has multiple Jokers that have the highest sell cost, a random one will be copied.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Pizza [toc]
|
||||||
|
<JokerCard name={'Pizza'} img={'/cards/j_pizza.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div className={'flex flex-col gap-1'}>
|
||||||
|
<span><Mult>+6</Mult> Discards for all players</span>
|
||||||
|
<span><Mult>-1</Mult> Discard when any player selects a blind</span>
|
||||||
|
<span>Eaten when your Nemesis skips</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Pacifist [toc]
|
||||||
|
<JokerCard name={'Pacifist'} img={'/cards/j_pacifist.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div className={'flex flex-col gap-1'}>
|
||||||
|
<Xmult>X10</Xmult> Mult while not in a <Hands>PvP Blind</Hands>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<Callout>
|
||||||
|
These jokers can be removed by unchecking the **"Enable Multiplayer Cards"** option in the lobby options.
|
||||||
|
</Callout>
|
||||||
|
|
||||||
|
### Disabled Jokers
|
||||||
|
The following jokers are **unavailable** in multiplayer due to their interaction with boss blinds:
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className={'text-center'}>Joker</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Chicot [toc]
|
||||||
|
<JokerCard name={'Chicot'} img={'/cards/j_chicot.png'} h={4}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Disables effect of every <Hands>Boss Blind</Hands>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Matador [toc]
|
||||||
|
<JokerCard name={'Matador'} img={'/cards/j_matador.png'} h={4}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Earn <Money>$8</Money> if played hand triggers the <Hands>Boss Blind</Hands> ability
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Mr. Bones [toc]
|
||||||
|
<JokerCard name={'Mr. Bones'} img={'/cards/j_mr_bones.png'} h={4}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Prevents Death if chips scored are at least <Hands>25%</Hands> of required chips.
|
||||||
|
<Mult>Self destructs</Mult>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Luchador [toc]
|
||||||
|
<JokerCard name={'Luchador'} img={'/cards/j_luchador.png'} h={4}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Sell this card to disable the current <Hands>Boss Blind</Hands>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
### Modified Jokers
|
||||||
|
|
||||||
|
These jokers are modified versions of the original jokers.
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className={'text-center'}>Joker</th>
|
||||||
|
<th>Description</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
#### Hanging Chad [toc]
|
||||||
|
<JokerCard name={'Hanging Chad'} img={'/cards/j_hanging_chad.png'} h={4}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Retrigger <Hands>first</Hands> and <Hands>second</Hands> played cards used in
|
||||||
|
scoring <Hands>1</Hands> additional time
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Planet cards
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className={'text-center'}>Card</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
### Asteroid [toc]
|
||||||
|
<JokerCard name={'Asteroid'} img={'/cards/c_asteroid.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Removes <Hands>one level</Hands> from your Nemesis' highest level <Hands>poker hand</Hands>.
|
||||||
|
</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## Tarot Cards
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className={'text-center'}>Card</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
### Justice [toc]
|
||||||
|
<JokerCard name={'Justice'} img={'/cards/t_justice.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
This card is **not available** in the standard ruleset.
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Glass cards can only be found in
|
||||||
|
- Standard packs
|
||||||
|
- Spectral cards that spawn cards (Grim, Incantation, and Familiar)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## Enhancements
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className={'text-center'}>Card</th>
|
||||||
|
<th>Description</th>
|
||||||
|
<th>Notes</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
### Glass Card [toc]
|
||||||
|
<JokerCard name={'Glass Card'} img={'/cards/e_glass.png'}/>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<div className={'flex flex-col gap-1'}>
|
||||||
|
<span><Xmult>X1.5</Xmult> Mult</span>
|
||||||
|
<span><Chance>1 in 4</Chance> chance to <Hands>destroy</Hands> card after all scoring is finished</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
Glass cards can only be found in
|
||||||
|
- Standard packs
|
||||||
|
- Spectral cards that spawn cards (Grim, Incantation, and Familiar)
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
### Glass Cards
|
||||||
|
|
||||||
|
Glass cards are now **1.5x** instead of 2x multiplier and can **only** be found in:
|
||||||
|
|
||||||
|
- Standard packs
|
||||||
|
- Spectral cards that spawn cards (Grim, Incantation, and Familiar)
|
||||||
@@ -83,6 +83,7 @@
|
|||||||
"recharts": "^2.15.2",
|
"recharts": "^2.15.2",
|
||||||
"remeda": "^2.21.2",
|
"remeda": "^2.21.2",
|
||||||
"server-only": "^0.0.1",
|
"server-only": "^0.0.1",
|
||||||
|
"slugify": "^1.6.6",
|
||||||
"sonner": "^2.0.3",
|
"sonner": "^2.0.3",
|
||||||
"superjson": "^2.2.1",
|
"superjson": "^2.2.1",
|
||||||
"tailwind-merge": "^3.1.0",
|
"tailwind-merge": "^3.1.0",
|
||||||
|
|||||||
BIN
public/cards/c_asteroid.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
public/cards/c_asteroid_ru.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/cards/e_glass.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
public/cards/j_chicot.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
public/cards/j_conjoined_joker.png
Normal file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
public/cards/j_copycat.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
public/cards/j_defensive_joker.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
public/cards/j_hanging_chad.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
public/cards/j_lets_go_gambling.png
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
public/cards/j_luchador.png
Normal file
|
After Width: | Height: | Size: 1000 B |
BIN
public/cards/j_magnet.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
public/cards/j_matador.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
public/cards/j_mr_bones.png
Normal file
|
After Width: | Height: | Size: 896 B |
BIN
public/cards/j_pacifist.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
public/cards/j_penny_pincher.png
Normal file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
public/cards/j_pizza.png
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
BIN
public/cards/j_skip_off.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
public/cards/j_speedrun.png
Normal file
|
After Width: | Height: | Size: 816 B |
BIN
public/cards/j_taxes.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
public/cards/modicon.png
Normal file
|
After Width: | Height: | Size: 435 B |
BIN
public/cards/player_blind_row.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
public/cards/sticker_balanced.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
public/cards/sticker_nemesis.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
public/cards/t_justice.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
7
src/app/_components/chance.tsx
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Chance({ className, ...props }: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span className={cn('font-medium text-[#35bd86]', className)} {...props} />
|
||||||
|
)
|
||||||
|
}
|
||||||
9
src/app/_components/chips.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Chips({ className, ...props }: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span className={cn('font-medium text-[#0093ff]', className)} {...props} />
|
||||||
|
)
|
||||||
|
}
|
||||||
9
src/app/_components/hands.tsx
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Hands({ className, ...props }: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span className={cn('font-medium text-[#ff8f00]', className)} {...props} />
|
||||||
|
)
|
||||||
|
}
|
||||||
27
src/app/_components/joker-card.tsx
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import type { ElementType } from 'react'
|
||||||
|
import slugify from 'slugify'
|
||||||
|
|
||||||
|
type JokerCardProps = {
|
||||||
|
name: string
|
||||||
|
img: string
|
||||||
|
h?: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export function JokerCard({ name, img, h = 3 }: JokerCardProps) {
|
||||||
|
const Heading = `h${h}` as ElementType
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
className={'flex scroll-mt-36 flex-col items-center gap-2'}
|
||||||
|
id={`${slugify(name, { lower: true, strict: true })}-toc`}
|
||||||
|
>
|
||||||
|
<img src={img} alt={name} className={'!m-0 max-w-24 rounded-md'} />
|
||||||
|
<div className={'flex flex-col gap-1'}>
|
||||||
|
<Heading className={'!m-0 text-nowrap font-medium text-sm'}>
|
||||||
|
{name}
|
||||||
|
</Heading>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
7
src/app/_components/money.tsx
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Money({ className, ...props }: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span className={cn('font-medium text-[#f5b244]', className)} {...props} />
|
||||||
|
)
|
||||||
|
}
|
||||||
7
src/app/_components/mult.tsx
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Mult({ className, ...props }: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span className={cn('font-medium text-[#ff4c40]', className)} {...props} />
|
||||||
|
)
|
||||||
|
}
|
||||||
10
src/app/_components/spectral.tsx
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Spectral({
|
||||||
|
className,
|
||||||
|
...props
|
||||||
|
}: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span className={cn('font-medium text-[#2e76fd]', className)} {...props} />
|
||||||
|
)
|
||||||
|
}
|
||||||
15
src/app/_components/xmult.tsx
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
'use client'
|
||||||
|
|
||||||
|
import { cn } from '@/lib/utils'
|
||||||
|
|
||||||
|
export function Xmult({ className, ...props }: React.ComponentProps<'span'>) {
|
||||||
|
return (
|
||||||
|
<span
|
||||||
|
className={cn(
|
||||||
|
'rounded-md bg-[#ff4c40] px-1 font-medium text-white',
|
||||||
|
className
|
||||||
|
)}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -1,3 +1,11 @@
|
|||||||
|
import { Chance } from '@/app/_components/chance'
|
||||||
|
import { Chips } from '@/app/_components/chips'
|
||||||
|
import { Hands } from '@/app/_components/hands'
|
||||||
|
import { JokerCard } from '@/app/_components/joker-card'
|
||||||
|
import { Money } from '@/app/_components/money'
|
||||||
|
import { Mult } from '@/app/_components/mult'
|
||||||
|
import { Spectral } from '@/app/_components/spectral'
|
||||||
|
import { Xmult } from '@/app/_components/xmult'
|
||||||
import { Button } from '@/components/ui/button'
|
import { Button } from '@/components/ui/button'
|
||||||
import { ImageZoom } from 'fumadocs-ui/components/image-zoom'
|
import { ImageZoom } from 'fumadocs-ui/components/image-zoom'
|
||||||
import defaultMdxComponents from 'fumadocs-ui/mdx'
|
import defaultMdxComponents from 'fumadocs-ui/mdx'
|
||||||
@@ -21,7 +29,13 @@ export default async function Page(props: {
|
|||||||
const MDX = page.data.body
|
const MDX = page.data.body
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DocsPage toc={page.data.toc} full={page.data.full}>
|
<DocsPage
|
||||||
|
toc={page.data.toc}
|
||||||
|
tableOfContent={{
|
||||||
|
style: 'clerk',
|
||||||
|
}}
|
||||||
|
full={page.data.full}
|
||||||
|
>
|
||||||
<DocsTitle>{page.data.title}</DocsTitle>
|
<DocsTitle>{page.data.title}</DocsTitle>
|
||||||
<DocsDescription>{page.data.description}</DocsDescription>
|
<DocsDescription>{page.data.description}</DocsDescription>
|
||||||
<DocsBody>
|
<DocsBody>
|
||||||
@@ -30,6 +44,14 @@ export default async function Page(props: {
|
|||||||
...defaultMdxComponents,
|
...defaultMdxComponents,
|
||||||
img: (props) => <ImageZoom {...(props as any)} />,
|
img: (props) => <ImageZoom {...(props as any)} />,
|
||||||
Button: (props) => <Button {...(props as any)} />,
|
Button: (props) => <Button {...(props as any)} />,
|
||||||
|
JokerCard: (props) => <JokerCard {...(props as any)} />,
|
||||||
|
Chips: (props) => <Chips {...(props as any)} />,
|
||||||
|
Hands: (props) => <Hands {...(props as any)} />,
|
||||||
|
Chance: (props) => <Chance {...(props as any)} />,
|
||||||
|
Money: (props) => <Money {...(props as any)} />,
|
||||||
|
Xmult: (props) => <Xmult {...(props as any)} />,
|
||||||
|
Spectral: (props) => <Spectral {...(props as any)} />,
|
||||||
|
Mult: (props) => <Mult {...(props as any)} />,
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</DocsBody>
|
</DocsBody>
|
||||||
|
|||||||