Busflow Docs

Internal documentation portal

Skip to content

@busflow/ui-domain

Heavy, domain-specific components isolated from ui-core to prevent large dependencies (PDF.js, canvas libraries) from leaking into lightweight consumer apps like app-booking or app-wallet.

Reference Documents

  • [frontend-architecture.md](file:///Users/julianbruning/Projekte/busflow/busflow/docs/2-areas/architecture/frontend.md) — Package boundaries
  • [config-tailwind](file:///Users/julianbruning/Projekte/busflow/busflow/packages/config-tailwind/README.md) — Visual identity, design tokens
  • [guidelines.md](file:///Users/julianbruning/Projekte/busflow/busflow/docs/2-areas/process/guidelines.md) — Documentation standards

Package Rules

  • Isolated from ui-core — separate dependency tree
  • May include heavy third-party libraries
  • Shares @busflow/config-tailwind tokens for visual consistency
  • Same authoring conventions as ui-core (see its README)

Component Inventory

ComponentDependenciesUsed ByDescription
SeatMapCanvas / SVG renderingapp-booking, app-adminInteractive visual seat selection for buses
PdfVisualizerPDF.jsapp-adminPDF rendering for "Magic Upload" tour plan parsing
TripCardapp-wallet, app-adminRich trip summary with status, dates, passengers
TicketQrQR code generatorapp-wallet, app-driverDigital ticket with QR code for check-in scan
PassengerListapp-driver, app-adminLive passenger manifest with check-in states
ScheduleTimelineapp-adminVisual timeline for fleet/route scheduling
ThemeProvider@busflow/ui-coreAll appsRenderless wrapper applying role theme + color mode classes on <html>
ThemeToggle@busflow/ui-coreworkspace, passengerLight/Dark/System dropdown toggle. Auto-hides when dark mode is unsupported
useTheme()All appsComposable to access the injected theme context (via ThemeProvider)

Consumer Matrix

AppComponents Used
app-adminAll (SeatMap, PdfVisualizer, TripCard, PassengerList, ScheduleTimeline, ThemeProvider, ThemeToggle)
app-bookingSeatMap, ThemeProvider
app-walletTripCard, TicketQr, ThemeProvider
app-driverTicketQr, PassengerList, ThemeProvider
app-landing / app-marketingNone

File Structure

text
packages/ui-domain/
├── src/
│   ├── components/
│   │   ├── PassengerList/
│   │   │   ├── PassengerList.vue
│   │   │   ├── PassengerList.story.vue
│   │   │   └── index.ts
│   │   ├── PdfVisualizer/
│   │   │   ├── PdfVisualizer.vue
│   │   │   ├── PdfVisualizer.story.vue
│   │   │   └── index.ts
│   │   ├── ScheduleTimeline/
│   │   │   ├── ScheduleTimeline.vue
│   │   │   ├── ScheduleTimeline.story.vue
│   │   │   └── index.ts
│   │   ├── SeatMap/
│   │   │   ├── SeatMap.vue
│   │   │   ├── SeatMap.story.vue
│   │   │   └── index.ts
│   │   ├── ThemeProvider/
│   │   │   ├── ThemeProvider.vue
│   │   │   ├── ThemeToggle.vue
│   │   │   ├── ThemeToggle.story.vue
│   │   │   ├── themeRegistry.ts
│   │   │   ├── useTheme.ts
│   │   │   └── index.ts
│   │   ├── TicketQr/
│   │   │   ├── TicketQr.vue
│   │   │   ├── TicketQr.story.vue
│   │   │   └── index.ts
│   │   ├── TripCard/
│   │   │   ├── TripCard.vue
│   │   │   ├── TripCard.story.vue
│   │   │   └── index.ts
│   └── index.ts
├── package.json
├── tsconfig.json
└── README.md

Usage

vue
<script setup lang="ts">
import { SeatMap } from '@busflow/ui-domain'
</script>

<template>
  <SeatMap
    :layout="busLayout"
    :selected-seats="selectedSeats"
    @seat-select="onSeatSelect"
  />
</template>

Internal documentation — Busflow