courthive-components 4.3.0 → 4.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -23,7 +23,7 @@ export type { ScheduleInspectorPanelOptions } from './ui/inspectorPanel';
23
23
  export { buildCourtGridSlot } from './ui/courtGridSlot';
24
24
  export { buildSchedulePageLayout } from './ui/schedulePageLayout';
25
25
  export { buildActiveStripPanel } from './ui/activeStrip';
26
- export type { ActiveStripPanel, ActiveStripPanelCallbacks, ActiveStripPanelData, ActiveStripPanelOptions, ActiveStripCourtMeta, ActiveStripCourtBlock } from './ui/activeStrip';
26
+ export type { ActiveStripPanel, ActiveStripPanelCallbacks, ActiveStripPanelData, ActiveStripPanelOptions, ActiveStripCourtMeta, ActiveStripCourtBlock, ActiveStripUpcomingBlock } from './ui/activeStrip';
27
27
  export { buildScheduleGridCell, mapMatchUpToCellData, DEFAULT_SCHEDULE_CELL_CONFIG } from './ui/scheduleGridCell';
28
28
  export { activateScheduleCellTypeAhead } from './ui/scheduleCellTypeAhead';
29
29
  export type { ScheduleCellTypeAheadOptions } from './ui/scheduleCellTypeAhead';
@@ -22,6 +22,22 @@ export interface ActiveStripCourtBlock {
22
22
  /** Optional short note (block.reason, registrant name from a future practice-registration system, etc.). */
23
23
  detail?: string;
24
24
  }
25
+ /**
26
+ * A block that has not started yet on a court that is free right now.
27
+ *
28
+ * Distinct from `ActiveStripCourtBlock`, which is a block in force. This one is
29
+ * about the runway left before it: the question a director asks of an idle court
30
+ * is "can I still put something on it", and the answer is a duration, not a
31
+ * banner.
32
+ */
33
+ export interface ActiveStripUpcomingBlock {
34
+ /** Block type, for the colour — same vocabulary as `ActiveStripCourtBlock.type`. */
35
+ type: string;
36
+ /** Pre-formatted by the consumer, e.g. "40m → MAINTENANCE". */
37
+ label: string;
38
+ /** Hover text — the consumer owns the wording. */
39
+ title?: string;
40
+ }
25
41
  export interface ActiveStripPanelData {
26
42
  /** Court columns, in display order. The strip computes one cell per column. */
27
43
  grid: ActiveStripGrid;
@@ -31,6 +47,23 @@ export interface ActiveStripPanelData {
31
47
  * moves with the clock.
32
48
  */
33
49
  dueMatchUpIds?: readonly string[];
50
+ /**
51
+ * courtId → the block bearing down on a court that is currently FREE. The
52
+ * consumer decides when one is worth showing; the strip only paints it.
53
+ *
54
+ * Ignored for a court that has a block in force (`courtBlocks` wins — a banner
55
+ * about now beats a countdown to later) and for one with a matchUp on it,
56
+ * where `courtBlockEdges` carries the same fact in the form that suits an
57
+ * occupied court.
58
+ */
59
+ courtUpcomingBlocks?: Record<string, ActiveStripUpcomingBlock>;
60
+ /**
61
+ * courtId → a block that will come into force while the matchUp currently on
62
+ * that court is still expected to be playing. Painted as a top-edge stripe:
63
+ * a separate axis from the left-border state language, so a LIVE match on a
64
+ * court about to close shows both rather than one hiding the other.
65
+ */
66
+ courtBlockEdges?: Record<string, ActiveStripUpcomingBlock>;
34
67
  /** Optional display labels per courtId. Falls back to courtId. */
35
68
  courts?: ActiveStripCourtMeta[];
36
69
  /**