Bridge Training
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 PathDescription
Bridge Context
@workspace/bridge-react/bridge-context/bridge-providerBridgeProvider
@workspace/bridge-react/bridge-context/use-bridge-engineuseBridgeEngine
@workspace/bridge-react/bridge-context/with-bridge-contextwithBridgeContext
Suit
@workspace/bridge-react/suit/suit-displaySuitDisplay
@workspace/bridge-react/suit/suit-iconsSpadeSuit, HeartSuit, DiamondSuit, ClubSuit, PetitBridgeSuit
Rank
@workspace/bridge-react/rank/rank-displayRankDisplay
Card
@workspace/bridge-react/card/card-displayCardDisplay
Bid
@workspace/bridge-react/bid/bid-displayBidDisplay
@workspace/bridge-react/bid/bid-buttonBidButton
@workspace/bridge-react/bid/bid-padBidPad
@workspace/bridge-react/bid/bid-suit-displayBidSuitDisplay
Contract
@workspace/bridge-react/contract/contract-displayContractDisplay
@workspace/bridge-react/contract/contract-labelContractLabel
@workspace/bridge-react/contract/contract-pillContractPill
@workspace/bridge-react/contract/declarer-pillDeclarerPill
Player
@workspace/bridge-react/player/player-labelPlayerLabel
@workspace/bridge-react/player/player-position-iconPlayerPositionIcon, PlayerSideIcon
@workspace/bridge-react/player/player-position-displayPlayerPositionDisplay
@workspace/bridge-react/player/player-side-displayPlayerSideDisplay
@workspace/bridge-react/player/player-selectorPlayerSelector
Hand
@workspace/bridge-react/hand/handHand compound component
@workspace/bridge-react/hand/contextuseHandContext
@workspace/bridge-react/hand/compact-handCompactHand
@workspace/bridge-react/hand/hands-pillHandsPill
@workspace/bridge-react/hand/hands-action-buttonsHandsActionButtons
@workspace/bridge-react/hand/editors/hands-editorHandsEditor
Board
@workspace/bridge-react/board/boardBoard compound (Layout, Position, Center)
@workspace/bridge-react/board/deal-board-previewDealBoardPreview
Bidding
@workspace/bridge-react/bidding/table/bidding-tableBiddingTable compound component
@workspace/bridge-react/bidding/table/utilsgroupBidsIntoRows, getColumnOrder
@workspace/bridge-react/bidding/table/contextuseBiddingTable
@workspace/bridge-react/bidding/table/bid-comments-listBidCommentsList
@workspace/bridge-react/bidding/auction-preview-tableAuctionPreviewTable
@workspace/bridge-react/bidding/auction-comments-displayAuctionComments
@workspace/bridge-react/bidding/declarer-alertAuctionDeclarerAlert
@workspace/bridge-react/bidding/comment/bid-comment-formBidCommentForm
@workspace/bridge-react/bidding/comment/bid-comment-popoverBidCommentPopover
@workspace/bridge-react/bidding/comment/rich-bid-comment-popoverRichBidCommentPopover
@workspace/bridge-react/bidding/editors/auction-editorAuctionEditor
Play
@workspace/bridge-react/play/inputs/play-inputsPlayInputs (interactive card play)
@workspace/bridge-react/play/play-inputPlayInput (textarea)
@workspace/bridge-react/play/tricks-displayTricksDisplay
@workspace/bridge-react/play/play-comments-displayPlayComments
@workspace/bridge-react/play/play-annotationsPlayAnnotations
@workspace/bridge-react/play/play-errorsPlayErrors
@workspace/bridge-react/play/play-helpPlayHelp
@workspace/bridge-react/play/incomplete-hands-calloutIncompleteHandsCallout
@workspace/bridge-react/play/lead-pillLeadPill
@workspace/bridge-react/play/play-sequence-previewPlaySequencePreview
@workspace/bridge-react/play/editors/play-editorPlayEditor
Form
@workspace/bridge-react/form/dealer-selectDealerSelect
@workspace/bridge-react/form/vulnerability-selectVulnerabilitySelect
@workspace/bridge-react/form/scoring-selectScoringSelect
@workspace/bridge-react/form/pedagogy-mode-selectPedagogyModeSelect
@workspace/bridge-react/form/result-expected-selectResultExpectedSelect
Misc
@workspace/bridge-react/misc/scoring-labelScoringLabel
@workspace/bridge-react/misc/vulnerability-labelVulnerabilityLabel
@workspace/bridge-react/misc/teaching-mode-labelTeachingModeLabel
@workspace/bridge-react/misc/scoring-badgeScoringBadge
@workspace/bridge-react/misc/vulnerability-badgeVulnerabilityBadge
@workspace/bridge-react/misc/teaching-mode-badgeTeachingModeBadge
@workspace/bridge-react/misc/final-comment-displayFinalComment
@workspace/bridge-react/misc/preview-cardPreviewCard
@workspace/bridge-react/misc/key-value-previewKeyValuePreview
@workspace/bridge-react/misc/deal-selectorDealSelector
@workspace/bridge-react/misc/file-upload-buttonFileUploadButton
@workspace/bridge-react/misc/import-pbn-fileImportPBNFile
@workspace/bridge-react/misc/import-deal-selector-dialogImportDealSelectorDialog
@workspace/bridge-react/misc/import-confirm-override-dialogImportConfirmOverrideDialog
Hooks
@workspace/bridge-react/hooks/*Shared hooks (useHandInputState, useContractResult, useTrump, etc.)
Rich Editor
@workspace/bridge-react/rich-editor/typesRich 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/i18nRich editor translations
Lib
@workspace/bridge-react/lib/*Utility functions (cn, format, play-parsing, rank-parsing, etc.)
i18n
@workspace/bridge-react/i18nPrimitives translation resources for all supported languages
Styles
@workspace/bridge-react/styles.cssCSS custom properties for suit colors and variants

Architecture

Most display components follow a pattern:

  1. BridgeProvider wraps the app to provide engine context (rules + notation)
  2. Components use useBridgeEngine() internally for variant-specific rendering (notation, display config)
  3. Components that need translations use useTranslation() from react-i18next
  4. Compound components (Hand, BiddingTable) provide their own context via a Root component

Package Structure

index.ts
index.ts

On this page