Bridge React
Overview
React components for bridge card game UI.
@workspace/bridge-react provides domain-specific React components for building bridge game interfaces. Components are organized into sub-path exports by domain module.
Quick Start
import { BridgeProvider } from '@workspace/bridge-react/bridge-context/bridge-provider';
import { SuitDisplay } from '@workspace/bridge-react/suit/suit-display';
import { CardDisplay } from '@workspace/bridge-react/card/card-display';
function App() {
return (
<BridgeProvider>
<SuitDisplay suit="S" />
<CardDisplay card="SA" />
</BridgeProvider>
);
}Sub-path Exports
| Import Path | Description |
|---|---|
| Bridge Context | |
@workspace/bridge-react/bridge-context/bridge-provider | BridgeProvider |
@workspace/bridge-react/bridge-context/use-bridge-engine | useBridgeEngine |
@workspace/bridge-react/bridge-context/with-bridge-context | withBridgeContext |
| Suit | |
@workspace/bridge-react/suit/suit-display | SuitDisplay |
@workspace/bridge-react/suit/suit-icons | SpadeSuit, HeartSuit, DiamondSuit, ClubSuit, PetitBridgeSuit |
| Rank | |
@workspace/bridge-react/rank/rank-display | RankDisplay |
| Card | |
@workspace/bridge-react/card/card-display | CardDisplay |
| Bid | |
@workspace/bridge-react/bid/bid-display | BidDisplay |
@workspace/bridge-react/bid/bid-button | BidButton |
@workspace/bridge-react/bid/bid-pad | BidPad |
@workspace/bridge-react/bid/bid-suit-display | BidSuitDisplay |
| Contract | |
@workspace/bridge-react/contract/contract-display | ContractDisplay |
@workspace/bridge-react/contract/contract-label | ContractLabel |
@workspace/bridge-react/contract/contract-pill | ContractPill |
@workspace/bridge-react/contract/declarer-pill | DeclarerPill |
| Player | |
@workspace/bridge-react/player/player-label | PlayerLabel |
@workspace/bridge-react/player/player-position-icon | PlayerPositionIcon, PlayerSideIcon |
@workspace/bridge-react/player/player-position-display | PlayerPositionDisplay |
@workspace/bridge-react/player/player-side-display | PlayerSideDisplay |
@workspace/bridge-react/player/player-selector | PlayerSelector |
| Hand | |
@workspace/bridge-react/hand/hand | Hand compound component |
@workspace/bridge-react/hand/context | useHandContext |
@workspace/bridge-react/hand/compact-hand | CompactHand |
@workspace/bridge-react/hand/hands-pill | HandsPill |
@workspace/bridge-react/hand/hands-action-buttons | HandsActionButtons |
@workspace/bridge-react/hand/editors/hands-editor | HandsEditor |
| Board | |
@workspace/bridge-react/board/board | Board compound (Layout, Position, Center) |
@workspace/bridge-react/board/deal-board-preview | DealBoardPreview |
| Bidding | |
@workspace/bridge-react/bidding/table/bidding-table | BiddingTable compound component |
@workspace/bridge-react/bidding/table/utils | groupBidsIntoRows, getColumnOrder |
@workspace/bridge-react/bidding/table/context | useBiddingTable |
@workspace/bridge-react/bidding/table/bid-comments-list | BidCommentsList |
@workspace/bridge-react/bidding/auction-preview-table | AuctionPreviewTable |
@workspace/bridge-react/bidding/auction-comments-display | AuctionComments |
@workspace/bridge-react/bidding/declarer-alert | AuctionDeclarerAlert |
@workspace/bridge-react/bidding/comment/bid-comment-form | BidCommentForm |
@workspace/bridge-react/bidding/comment/bid-comment-popover | BidCommentPopover |
@workspace/bridge-react/bidding/comment/rich-bid-comment-popover | RichBidCommentPopover |
@workspace/bridge-react/bidding/editors/auction-editor | AuctionEditor |
| Play | |
@workspace/bridge-react/play/inputs/play-inputs | PlayInputs (interactive card play) |
@workspace/bridge-react/play/play-input | PlayInput (textarea) |
@workspace/bridge-react/play/tricks-display | TricksDisplay |
@workspace/bridge-react/play/play-comments-display | PlayComments |
@workspace/bridge-react/play/play-annotations | PlayAnnotations |
@workspace/bridge-react/play/play-errors | PlayErrors |
@workspace/bridge-react/play/play-help | PlayHelp |
@workspace/bridge-react/play/incomplete-hands-callout | IncompleteHandsCallout |
@workspace/bridge-react/play/lead-pill | LeadPill |
@workspace/bridge-react/play/play-sequence-preview | PlaySequencePreview |
@workspace/bridge-react/play/editors/play-editor | PlayEditor |
| Form | |
@workspace/bridge-react/form/dealer-select | DealerSelect |
@workspace/bridge-react/form/vulnerability-select | VulnerabilitySelect |
@workspace/bridge-react/form/scoring-select | ScoringSelect |
@workspace/bridge-react/form/pedagogy-mode-select | PedagogyModeSelect |
@workspace/bridge-react/form/result-expected-select | ResultExpectedSelect |
| Misc | |
@workspace/bridge-react/misc/scoring-label | ScoringLabel |
@workspace/bridge-react/misc/vulnerability-label | VulnerabilityLabel |
@workspace/bridge-react/misc/teaching-mode-label | TeachingModeLabel |
@workspace/bridge-react/misc/scoring-badge | ScoringBadge |
@workspace/bridge-react/misc/vulnerability-badge | VulnerabilityBadge |
@workspace/bridge-react/misc/teaching-mode-badge | TeachingModeBadge |
@workspace/bridge-react/misc/final-comment-display | FinalComment |
@workspace/bridge-react/misc/preview-card | PreviewCard |
@workspace/bridge-react/misc/key-value-preview | KeyValuePreview |
@workspace/bridge-react/misc/deal-selector | DealSelector |
@workspace/bridge-react/misc/file-upload-button | FileUploadButton |
@workspace/bridge-react/misc/import-pbn-file | ImportPBNFile |
@workspace/bridge-react/misc/import-deal-selector-dialog | ImportDealSelectorDialog |
@workspace/bridge-react/misc/import-confirm-override-dialog | ImportConfirmOverrideDialog |
| Hooks | |
@workspace/bridge-react/hooks/* | Shared hooks (useHandInputState, useContractResult, useTrump, etc.) |
| Rich Editor | |
@workspace/bridge-react/rich-editor/types | Rich text editor types |
@workspace/bridge-react/rich-editor/components/* | Rich editor components |
@workspace/bridge-react/rich-editor/context/* | Rich editor context providers |
@workspace/bridge-react/rich-editor/hooks/* | Rich editor hooks |
@workspace/bridge-react/rich-editor/serialization/* | Rich editor serialization utilities |
@workspace/bridge-react/rich-editor/i18n | Rich editor translations |
| Lib | |
@workspace/bridge-react/lib/* | Utility functions (cn, format, play-parsing, rank-parsing, etc.) |
| i18n | |
@workspace/bridge-react/i18n | Primitives translation resources for all supported languages |
| Styles | |
@workspace/bridge-react/styles.css | CSS custom properties for suit colors and variants |
Architecture
Most display components follow a pattern:
- BridgeProvider wraps the app to provide engine context (rules + notation)
- Components use
useBridgeEngine()internally for variant-specific rendering (notation, display config) - Components that need translations use
useTranslation()fromreact-i18next - Compound components (Hand, BiddingTable) provide their own context via a Root component
Package Structure
index.ts
index.ts