courthive-components 1.5.0 → 1.7.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.
Files changed (70) hide show
  1. package/dist/components/competitivenessBar/aggregateCompetitiveness.d.ts +3 -0
  2. package/dist/components/competitivenessBar/buildCompetitivenessBar.d.ts +6 -0
  3. package/dist/components/competitivenessBar/buildCompetitivenessDonut.d.ts +6 -0
  4. package/dist/components/competitivenessBar/index.d.ts +7 -0
  5. package/dist/components/competitivenessBar/types.d.ts +6 -0
  6. package/dist/components/composition-editor/compositionEditorStore.d.ts +5 -3
  7. package/dist/components/composition-editor/compositionEditorTypes.d.ts +4 -2
  8. package/dist/components/composition-editor/sections/colorsSection.d.ts +3 -0
  9. package/dist/components/court-card/buildCourtCard.d.ts +2 -0
  10. package/dist/components/court-card/buildSkeletonCard.d.ts +2 -0
  11. package/dist/components/court-card/defaultConfig.d.ts +3 -0
  12. package/dist/components/court-card/index.d.ts +6 -0
  13. package/dist/components/court-card/mapCourt.d.ts +7 -0
  14. package/dist/components/court-card/styles.d.ts +18 -0
  15. package/dist/components/court-card/types.d.ts +31 -0
  16. package/dist/components/draw-card/buildDrawCard.d.ts +2 -0
  17. package/dist/components/draw-card/buildSkeletonCard.d.ts +2 -0
  18. package/dist/components/draw-card/defaultConfig.d.ts +3 -0
  19. package/dist/components/draw-card/index.d.ts +6 -0
  20. package/dist/components/draw-card/mapDraw.d.ts +18 -0
  21. package/dist/components/draw-card/styles.d.ts +18 -0
  22. package/dist/components/draw-card/types.d.ts +59 -0
  23. package/dist/components/event-card/buildEventCard.d.ts +2 -0
  24. package/dist/components/event-card/buildSkeletonCard.d.ts +2 -0
  25. package/dist/components/event-card/defaultConfig.d.ts +6 -0
  26. package/dist/components/event-card/index.d.ts +8 -0
  27. package/dist/components/event-card/mapEvent.d.ts +14 -0
  28. package/dist/components/event-card/statusResolver.d.ts +14 -0
  29. package/dist/components/event-card/styles.d.ts +22 -0
  30. package/dist/components/event-card/types.d.ts +49 -0
  31. package/dist/components/schedule-page/index.d.ts +1 -1
  32. package/dist/components/schedule-page/types.d.ts +24 -0
  33. package/dist/components/schedule-page/ui/courtGridSlot.d.ts +9 -0
  34. package/dist/components/schedule-page/ui/styles.d.ts +1 -0
  35. package/dist/components/scheduling-profile/types.d.ts +4 -0
  36. package/dist/components/scheduling-profile/ui/styles.d.ts +1 -0
  37. package/dist/components/scheduling-profile/ui/venueBoard.d.ts +4 -0
  38. package/dist/components/tournament-card/buildSkeletonCard.d.ts +2 -0
  39. package/dist/components/tournament-card/buildTournamentCard.d.ts +2 -0
  40. package/dist/components/tournament-card/defaultConfig.d.ts +7 -0
  41. package/dist/components/tournament-card/feeFormatter.d.ts +2 -0
  42. package/dist/components/tournament-card/index.d.ts +9 -0
  43. package/dist/components/tournament-card/mapTournament.d.ts +7 -0
  44. package/dist/components/tournament-card/statusResolver.d.ts +9 -0
  45. package/dist/components/tournament-card/styles.d.ts +23 -0
  46. package/dist/components/tournament-card/types.d.ts +57 -0
  47. package/dist/components/venue-card/buildSkeletonCard.d.ts +2 -0
  48. package/dist/components/venue-card/buildVenueCard.d.ts +2 -0
  49. package/dist/components/venue-card/defaultConfig.d.ts +3 -0
  50. package/dist/components/venue-card/index.d.ts +6 -0
  51. package/dist/components/venue-card/mapVenue.d.ts +7 -0
  52. package/dist/components/venue-card/styles.d.ts +19 -0
  53. package/dist/components/venue-card/types.d.ts +44 -0
  54. package/dist/compositions/resolvePublishedComposition.d.ts +12 -1
  55. package/dist/courthive-components.css +1 -1
  56. package/dist/courthive-components.es.js +6732 -5129
  57. package/dist/courthive-components.umd.js +42 -42
  58. package/dist/helpers/cards/buildCardSkeleton.d.ts +28 -0
  59. package/dist/helpers/cards/formatAddress.d.ts +3 -0
  60. package/dist/helpers/cards/formatDateRange.d.ts +10 -0
  61. package/dist/helpers/cards/index.d.ts +12 -0
  62. package/dist/helpers/cards/resourceExtraction.d.ts +4 -0
  63. package/dist/helpers/cards/types.d.ts +24 -0
  64. package/dist/helpers/searchClearButton.d.ts +16 -0
  65. package/dist/index.d.ts +16 -1
  66. package/dist/styles/applyCompositionColors.d.ts +9 -0
  67. package/dist/styles/themes/index.d.ts +1 -0
  68. package/dist/styles/themes/typtiTheme.d.ts +1 -0
  69. package/dist/types.d.ts +25 -0
  70. package/package.json +9 -9
@@ -0,0 +1,57 @@
1
+ import { CourtSport } from '../courts/courtSvgUtil';
2
+ export type TournamentStatusKind = 'cancelled' | 'completed' | 'live' | 'closing-soon' | 'registration-opens' | 'registration-open';
3
+ export interface TournamentStatusPill {
4
+ kind: TournamentStatusKind;
5
+ label: string;
6
+ }
7
+ export interface TournamentEntryFee {
8
+ amount: number;
9
+ currencyCode?: string;
10
+ category?: string;
11
+ eventType?: string;
12
+ }
13
+ export interface TournamentCardData {
14
+ tournamentId: string;
15
+ tournamentName: string;
16
+ /** ISO date */
17
+ startDate?: string;
18
+ /** ISO date */
19
+ endDate?: string;
20
+ /** Pre-formatted date range (e.g. "May 22 – May 24, 2026"). Mapper provides; consumer may override. */
21
+ dateRangeFormatted?: string;
22
+ /** "City, REGION, Country" or similar — already formatted */
23
+ location?: string;
24
+ /** URL pointing to a hosted tournament image (preferred over court SVG). */
25
+ tournamentImageURL?: string;
26
+ /** Court sport identifier — used to render a court SVG when no URL image is present. */
27
+ courtSvgSport?: CourtSport;
28
+ /** Number of registered participants */
29
+ participantCount?: number;
30
+ /** Number of events (for table view; not in default card) */
31
+ eventCount?: number;
32
+ /** Organizer / club name (for table view; not in default card) */
33
+ organizerName?: string;
34
+ /** Pre-resolved status pill (mapper computes — consumer may override) */
35
+ status?: TournamentStatusPill | null;
36
+ /** Pre-formatted fee string (e.g. "USD $40 – $85") */
37
+ feeFormatted?: string | null;
38
+ /** ISO last-updated timestamp (for table view) */
39
+ updatedAt?: string;
40
+ /** When true, render an offline/local indicator */
41
+ offline?: boolean;
42
+ }
43
+ export type TournamentCardField = 'title' | 'location' | 'dateRange' | 'feeBadge' | 'playerCount' | 'eventCount' | 'organizerName' | 'updatedAt';
44
+ export type TournamentCardCornerField = 'status' | 'offline';
45
+ export interface TournamentCardConfig {
46
+ /** Whether to render the image zone. Defaults to true. */
47
+ showImage?: boolean;
48
+ /** Corner badges anchored over the image (top-left). */
49
+ cornerBadges: TournamentCardCornerField[];
50
+ /** Body fields (rendered in order, between image and footer). */
51
+ body: TournamentCardField[];
52
+ /** Footer fields (rendered as a row at the bottom). */
53
+ footer: TournamentCardField[];
54
+ }
55
+ export interface TournamentCardCallbacks {
56
+ onClick?: (data: TournamentCardData) => void;
57
+ }
@@ -0,0 +1,2 @@
1
+ import { VenueCardConfig } from './types';
2
+ export declare function buildVenueSkeletonCard(config?: Partial<VenueCardConfig>): HTMLElement;
@@ -0,0 +1,2 @@
1
+ import { VenueCardCallbacks, VenueCardConfig, VenueCardData } from './types';
2
+ export declare function buildVenueCard(data: VenueCardData, config?: Partial<VenueCardConfig>, callbacks?: VenueCardCallbacks): HTMLElement;
@@ -0,0 +1,3 @@
1
+ import { VenueCardConfig } from './types';
2
+ export declare const DEFAULT_VENUE_CARD_CONFIG: VenueCardConfig;
3
+ export declare function mergeVenueCardConfig(override?: Partial<VenueCardConfig>): VenueCardConfig;
@@ -0,0 +1,6 @@
1
+ export { buildVenueCard } from './buildVenueCard';
2
+ export { buildVenueSkeletonCard } from './buildSkeletonCard';
3
+ export { mapVenueToCardData } from './mapVenue';
4
+ export { DEFAULT_VENUE_CARD_CONFIG, mergeVenueCardConfig } from './defaultConfig';
5
+ export type { MapVenueOptions } from './mapVenue';
6
+ export type { VenueCardCallbacks, VenueCardConfig, VenueCardCornerField, VenueCardData, VenueCardField } from './types';
@@ -0,0 +1,7 @@
1
+ import { CourtSport } from '../courts/courtSvgUtil';
2
+ import { VenueCardData } from './types';
3
+ export interface MapVenueOptions {
4
+ /** Parent tournament's resolved sport — used for the court-SVG fallback. */
5
+ sport?: CourtSport;
6
+ }
7
+ export declare function mapVenueToCardData(venue: any, options?: MapVenueOptions): VenueCardData;
@@ -0,0 +1,19 @@
1
+ export declare const vcCardStyle: () => string;
2
+ export declare const vcCardClickableStyle: () => string;
3
+ export declare const vcImageStyle: () => string;
4
+ export declare const vcImageImgStyle: () => string;
5
+ export declare const vcImageSvgStyle: () => string;
6
+ export declare const vcImageMapStyle: () => string;
7
+ export declare const vcImagePlaceholderStyle: () => string;
8
+ export declare const vcCornerBadgesStyle: () => string;
9
+ export declare const vcPrimaryBadgeStyle: () => string;
10
+ export declare const vcBodyStyle: () => string;
11
+ export declare const vcTitleStyle: () => string;
12
+ export declare const vcAddressStyle: () => string;
13
+ export declare const vcCourtBreakdownStyle: () => string;
14
+ export declare const vcFooterStyle: () => string;
15
+ export declare const vcAmenityRowStyle: () => string;
16
+ export declare const vcAmenityStyle: () => string;
17
+ export declare const vcSkeletonStyle: () => string;
18
+ export declare const vcSkeletonLineStyle: () => string;
19
+ export declare const vcSkeletonBlockStyle: () => string;
@@ -0,0 +1,44 @@
1
+ import { CourtSport } from '../courts/courtSvgUtil';
2
+ export interface VenueCardData {
3
+ venueId: string;
4
+ venueName: string;
5
+ venueAbbreviation?: string;
6
+ /** Pre-formatted "City, REGION, Country" */
7
+ addressFormatted?: string;
8
+ /** GPS coordinates — when present, the image zone renders a map by default. */
9
+ latitude?: number;
10
+ longitude?: number;
11
+ /** Number of courts attached to this venue. */
12
+ courtCount?: number;
13
+ /** Pre-formatted "6 outdoor hard, 2 indoor" string. */
14
+ courtBreakdown?: string;
15
+ /** Subset signals for the amenity row. */
16
+ indoorCount?: number;
17
+ outdoorCount?: number;
18
+ floodlitCount?: number;
19
+ /** True when this is the primary/default venue for its parent tournament. */
20
+ isPrimary?: boolean;
21
+ /** Hosted image URL (preferred over map / court-SVG fallback). */
22
+ venueImageURL?: string;
23
+ /** Sport identifier for the court-SVG fallback (caller supplies). */
24
+ courtSvgSport?: CourtSport;
25
+ /** Free-form notes (rendered as title tooltip on the venue name). */
26
+ notes?: string;
27
+ }
28
+ export type VenueCardField = 'title' | 'address' | 'courtBreakdown' | 'amenityRow' | 'venueAbbreviation';
29
+ export type VenueCardCornerField = 'primaryBadge';
30
+ export interface VenueCardConfig {
31
+ /** Whether to render the image zone. Defaults to true. */
32
+ showImage?: boolean;
33
+ /** Whether to use OSM map preview when venue has lat/lng. Defaults to true. */
34
+ showMap?: boolean;
35
+ /** Corner badges anchored over the image. */
36
+ cornerBadges: VenueCardCornerField[];
37
+ /** Body fields (rendered in order). */
38
+ body: VenueCardField[];
39
+ /** Footer fields. */
40
+ footer: VenueCardField[];
41
+ }
42
+ export interface VenueCardCallbacks {
43
+ onClick?: (data: VenueCardData) => void;
44
+ }
@@ -1,12 +1,23 @@
1
- import { Composition, Configuration } from '../types';
1
+ import { Composition, CompositionColors, Configuration } from '../types';
2
2
  export interface DisplayExtensionValue {
3
3
  compositionName?: string;
4
4
  theme?: string;
5
5
  configuration?: Partial<Configuration>;
6
+ /** Per-composition color overrides snapshot. When present, wins over the
7
+ * named-composition's theme defaults. Set by TMX when applying a user
8
+ * composition so the colors travel with published draws even when the
9
+ * `compositionName` isn't a builtin known to this package. */
10
+ colors?: CompositionColors;
6
11
  }
7
12
  /**
8
13
  * Resolves a published composition from a DISPLAY extension value.
9
14
  * Returns a new composition object (never mutates the built-in singletons).
10
15
  * Falls back to 'National' if the named composition is not found.
16
+ *
17
+ * For user compositions (names not in the builtin map), the named lookup
18
+ * falls back to the default, but `display.theme`, `display.configuration`,
19
+ * and `display.colors` from the extension still apply — so TMX-side custom
20
+ * compositions render correctly in courthive-public as long as TMX persists
21
+ * the full snapshot.
11
22
  */
12
23
  export declare function resolvePublishedComposition(display?: DisplayExtensionValue, fallbackName?: string): Composition;