@veevarts/design-system 1.12.0-alpha.3 → 1.12.0-alpha.4

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.
@@ -0,0 +1,7 @@
1
+ import { JSX } from 'react';
2
+ import { CatalogItemCardProps } from './type';
3
+ export declare const CatalogItemCard: {
4
+ ({ id, title, media, imageUrl, imageAlt, imageClassName, imageAspect, meta, price, action, footer, onPress, isPressable, isDisabled, compact, className, bodyClassName, footerClassName, dataTestId, }: CatalogItemCardProps): JSX.Element;
5
+ displayName: string;
6
+ };
7
+ export default CatalogItemCard;
@@ -0,0 +1,2 @@
1
+ export { default as CatalogItemCard } from './CatalogItemCard';
2
+ export type * from './type';
@@ -0,0 +1,82 @@
1
+ import { ButtonProps } from '../../components';
2
+ /**
3
+ * Metadata row displayed under the card title.
4
+ */
5
+ export interface CatalogItemCardMetaItem {
6
+ /** Iconify icon name for the metadata row. */
7
+ icon: string;
8
+ /** Human-readable metadata value. */
9
+ label: string;
10
+ }
11
+ /**
12
+ * Optional price block shown in the card footer.
13
+ */
14
+ export interface CatalogItemCardPrice {
15
+ /** Optional prefix before the value, typically `From` or `Starts at`. */
16
+ label: string;
17
+ /** Fully formatted amount to render. */
18
+ value: string;
19
+ }
20
+ /**
21
+ * Optional action shown in the card footer.
22
+ */
23
+ export interface CatalogItemCardAction {
24
+ /** Action label for the button. */
25
+ label: string;
26
+ /** Iconify icon name. */
27
+ icon?: string;
28
+ /** Click handler for the action button. */
29
+ onPress?: () => void;
30
+ /** HeroUI button variant. */
31
+ variant?: ButtonProps['variant'];
32
+ /** HeroUI button color. */
33
+ color?: ButtonProps['color'];
34
+ /** HeroUI button size. */
35
+ size?: ButtonProps['size'];
36
+ /** Additional classes for action button. */
37
+ className?: string;
38
+ /** Disabled state for action button. */
39
+ isDisabled?: boolean;
40
+ /** Optional aria label override for action button. */
41
+ ariaLabel?: string;
42
+ }
43
+ export interface CatalogItemCardProps {
44
+ /** Optional card identifier used for data-testid and DOM debugging. */
45
+ id?: string;
46
+ /** Card title. */
47
+ title: string;
48
+ /** Optional custom media node. If not provided, `imageUrl` is used. */
49
+ media?: React.ReactNode;
50
+ /** Optional image URL used when `media` is not set. */
51
+ imageUrl?: string;
52
+ /** Optional image alt text used when `media` is not set. */
53
+ imageAlt?: string;
54
+ /** Optional className for the image wrapper. */
55
+ imageClassName?: string;
56
+ /** Optional aspect ratio class for media wrapper. */
57
+ imageAspect?: string;
58
+ /** Optional list of metadata rows. */
59
+ meta?: CatalogItemCardMetaItem[];
60
+ /** Optional price block. */
61
+ price?: CatalogItemCardPrice;
62
+ /** Optional root action button. */
63
+ action?: CatalogItemCardAction;
64
+ /** Optional custom footer content. If provided, `price` and `action` still render above it. */
65
+ footer?: React.ReactNode;
66
+ /** Set a press handler on the card root. */
67
+ onPress?: () => void;
68
+ /** Enables pressable visual behavior when combined with `onPress`. */
69
+ isPressable?: boolean;
70
+ /** Disable all card interactions. */
71
+ isDisabled?: boolean;
72
+ /** Compact layout mode. */
73
+ compact?: boolean;
74
+ /** Root className for the component. */
75
+ className?: string;
76
+ /** Root className for card body. */
77
+ bodyClassName?: string;
78
+ /** Footer container className. */
79
+ footerClassName?: string;
80
+ /** Optional root test id for QA. */
81
+ dataTestId?: string;
82
+ }
@@ -18,6 +18,8 @@ export interface EventDetailsProps {
18
18
  description?: string;
19
19
  /** @property {string} [classes] - Optional Tailwind CSS utility classes for custom styling. */
20
20
  classes?: string;
21
+ /** @property {boolean} [compact] - Dense spacing mode for compact side layouts. */
22
+ compact?: boolean;
21
23
  /** @property {boolean} [showImage] - Optional flag to show or hide the event image. Defaults to true. */
22
24
  showImage?: boolean;
23
25
  /** @property {'lazy' | 'eager'} [imageLoading] - Optional loading strategy for the event image. Use `'lazy'` for off-screen placements (long lists, below-the-fold). Defaults to `'eager'` since the banner is typically above-the-fold. */
@@ -35,5 +37,5 @@ export interface EventDetailsProps {
35
37
  * @function EventDetails
36
38
  * @description Displays a card with event information such as name, image, date, time, location, and description.
37
39
  */
38
- export declare const EventDetails: ({ classes, name, imageUrl, eventDate, eventTime, location, description, showImage, imageLoading, showMoreButtonClassName, labels, }: EventDetailsProps) => JSX.Element;
40
+ export declare const EventDetails: ({ classes, name, imageUrl, eventDate, eventTime, location, description, showImage, compact, imageLoading, showMoreButtonClassName, labels, }: EventDetailsProps) => JSX.Element;
39
41
  export default EventDetails;
@@ -0,0 +1,23 @@
1
+ import { JSX } from 'react';
2
+ import { EmptyStateProps, ErrorStateProps, FeedbackStateProps, LoadingStateProps, SuccessStateProps } from './type';
3
+ export declare function FeedbackState({ variant, title, titleAs: TitleElement, description, icon, actions, role, ariaLive, iconSize, className, classNames, 'data-testid': dataTestId, }: FeedbackStateProps): JSX.Element;
4
+ export declare namespace FeedbackState {
5
+ var displayName: string;
6
+ }
7
+ export declare function EmptyState(props: EmptyStateProps): JSX.Element;
8
+ export declare namespace EmptyState {
9
+ var displayName: string;
10
+ }
11
+ export declare function ErrorState(props: ErrorStateProps): JSX.Element;
12
+ export declare namespace ErrorState {
13
+ var displayName: string;
14
+ }
15
+ export declare function LoadingState(props: LoadingStateProps): JSX.Element;
16
+ export declare namespace LoadingState {
17
+ var displayName: string;
18
+ }
19
+ export declare function SuccessState(props: SuccessStateProps): JSX.Element;
20
+ export declare namespace SuccessState {
21
+ var displayName: string;
22
+ }
23
+ export default FeedbackState;
@@ -0,0 +1,2 @@
1
+ export { FeedbackState, EmptyState, ErrorState, LoadingState, SuccessState } from './FeedbackState';
2
+ export type * from './type';
@@ -0,0 +1,40 @@
1
+ import { AriaRole, ReactNode } from 'react';
2
+ export type FeedbackStateVariant = 'empty' | 'error' | 'success' | 'loading';
3
+ export interface FeedbackStateClassNames {
4
+ base?: string;
5
+ iconWrapper?: string;
6
+ icon?: string;
7
+ spinner?: string;
8
+ title?: string;
9
+ description?: string;
10
+ actions?: string;
11
+ }
12
+ export interface FeedbackStateProps {
13
+ /** Visual tone and default accessibility role. */
14
+ variant?: FeedbackStateVariant;
15
+ /** Main state message. */
16
+ title: ReactNode;
17
+ /** Semantic element used for the title. Defaults to a paragraph for inline states. */
18
+ titleAs?: 'p' | 'h1' | 'h2' | 'h3' | 'h4' | 'div';
19
+ /** Supporting copy rendered under the title. */
20
+ description?: ReactNode;
21
+ /** Iconify name, custom React node, or false to hide the icon. Loading defaults to a spinner. */
22
+ icon?: string | ReactNode | false;
23
+ /** Optional CTA area; pass buttons, links, or any custom action group. */
24
+ actions?: ReactNode;
25
+ /** Overrides the default role: error => alert, otherwise status. */
26
+ role?: AriaRole;
27
+ /** Overrides the default live-region politeness. */
28
+ ariaLive?: 'off' | 'polite' | 'assertive';
29
+ /** Icon size in pixels when icon is an Iconify name. */
30
+ iconSize?: number;
31
+ /** Root className shortcut. */
32
+ className?: string;
33
+ /** Slot-level className overrides. */
34
+ classNames?: FeedbackStateClassNames;
35
+ 'data-testid'?: string;
36
+ }
37
+ export type EmptyStateProps = Omit<FeedbackStateProps, 'variant'>;
38
+ export type ErrorStateProps = Omit<FeedbackStateProps, 'variant'>;
39
+ export type LoadingStateProps = Omit<FeedbackStateProps, 'variant'>;
40
+ export type SuccessStateProps = Omit<FeedbackStateProps, 'variant'>;
@@ -0,0 +1,6 @@
1
+ import { FilterPopoverProps } from './type';
2
+ export declare const FilterPopover: {
3
+ ({ triggerLabel, triggerAriaLabel, triggerIcon, triggerVariant, triggerColor, triggerSize, triggerClassName, popoverClassName, className, sections, onConfirm, onClear, appliedCount, countAriaLabel, countDisplay, confirmLabel, clearLabel, isOpen, defaultOpen, onOpenChange, isDisabled, closeOnConfirm, keepOpenAfterClear, }: FilterPopoverProps): import("react/jsx-runtime").JSX.Element;
4
+ displayName: string;
5
+ };
6
+ export default FilterPopover;
@@ -0,0 +1,2 @@
1
+ export { default as FilterPopover } from './FilterPopover';
2
+ export type * from './type';
@@ -0,0 +1,85 @@
1
+ import { ButtonProps } from '../../components';
2
+ export interface FilterOption {
3
+ /** Option value used in payload. */
4
+ value: string;
5
+ /** Label for the option. */
6
+ label: string;
7
+ /** Option disabled state. */
8
+ isDisabled?: boolean;
9
+ }
10
+ export interface FilterSectionBase {
11
+ /** Unique identifier for this filter section. */
12
+ id: string;
13
+ /** Section label above its options. */
14
+ label: string;
15
+ }
16
+ export interface CheckboxFilterSection extends FilterSectionBase {
17
+ /** Render options as multi-select checkboxes. */
18
+ type: 'checkbox';
19
+ /** Currently selected values for this section. */
20
+ selectedValues: readonly string[];
21
+ /** Checkbox section options. */
22
+ options: readonly FilterOption[];
23
+ }
24
+ export interface RadioFilterSection extends FilterSectionBase {
25
+ /** Render options as mutually exclusive radio buttons. */
26
+ type: 'radio';
27
+ /** Currently selected value; empty when no option selected. */
28
+ selectedValue: string | null;
29
+ /** Radio section options. */
30
+ options: readonly FilterOption[];
31
+ }
32
+ export type FilterSection = CheckboxFilterSection | RadioFilterSection;
33
+ export type AppliedFilterValues = Record<string, string | string[] | null>;
34
+ export type DraftFilterValues = Record<string, string[]>;
35
+ export interface FilterPopoverProps {
36
+ /** Label for popover trigger button. */
37
+ triggerLabel: string;
38
+ /** Optional accessible label for the popover trigger. */
39
+ triggerAriaLabel?: string;
40
+ /** Optional icon for trigger button. */
41
+ triggerIcon?: string;
42
+ /** Text for confirmation button. */
43
+ confirmLabel?: string;
44
+ /** Text for clear button. */
45
+ clearLabel?: string;
46
+ /** Count badge accessibility label. */
47
+ countAriaLabel?: (count: number) => string;
48
+ /**
49
+ * How to render the applied filter count on the trigger.
50
+ * Defaults to compact badge rendering for buyer-flow toolbar usage.
51
+ */
52
+ countDisplay?: 'summary' | 'badge';
53
+ /** Applied sections to initialize draft state. */
54
+ sections: readonly FilterSection[];
55
+ /** Called with normalized values when user clicks Confirm. */
56
+ onConfirm: (values: AppliedFilterValues) => void | Promise<void>;
57
+ /** Clears all filters. */
58
+ onClear: () => void | Promise<void>;
59
+ /** Optional external count override. */
60
+ appliedCount?: number;
61
+ /** Control popover open state. */
62
+ isOpen?: boolean;
63
+ /** Uncontrolled initial open state. */
64
+ defaultOpen?: boolean;
65
+ /** Controlled open-state change handler. */
66
+ onOpenChange?: (isOpen: boolean) => void;
67
+ /** Trigger variant. */
68
+ triggerVariant?: ButtonProps['variant'];
69
+ /** Trigger color. */
70
+ triggerColor?: ButtonProps['color'];
71
+ /** Trigger size. */
72
+ triggerSize?: ButtonProps['size'];
73
+ /** Trigger button className. */
74
+ triggerClassName?: string;
75
+ /** Popover content className. */
76
+ popoverClassName?: string;
77
+ /** Container className. */
78
+ className?: string;
79
+ /** Disable entire control. */
80
+ isDisabled?: boolean;
81
+ /** Close popover when confirm is clicked. */
82
+ closeOnConfirm?: boolean;
83
+ /** Keep popover open after clearing. */
84
+ keepOpenAfterClear?: boolean;
85
+ }
@@ -3,12 +3,64 @@ export interface ItemCardProps {
3
3
  * Selection key. Pass as `itemKey` in JSX (React reserves `key` and does not forward it).
4
4
  */
5
5
  itemKey: string;
6
+ /**
7
+ * Display name
8
+ */
6
9
  name: string;
10
+ /**
11
+ * Raw price value
12
+ */
7
13
  price: number;
14
+ /**
15
+ * Whether to render the price column.
16
+ * Useful for buyer-flow selection cards where the value is represented by a status badge.
17
+ * @default true
18
+ */
19
+ showPrice?: boolean;
20
+ /**
21
+ * Locale for price formatting
22
+ */
8
23
  locale?: string;
24
+ /**
25
+ * Currency code
26
+ */
9
27
  currency?: string;
28
+ /**
29
+ * Optional type label
30
+ */
10
31
  type?: string;
32
+ /**
33
+ * Whether this item is selected
34
+ */
11
35
  isSelected?: boolean;
36
+ /**
37
+ * Compact rendering mode
38
+ * @default false
39
+ */
40
+ compact?: boolean;
41
+ /**
42
+ * Whether card actions are disabled
43
+ * @default false
44
+ */
45
+ isDisabled?: boolean;
46
+ /**
47
+ * Optional label describing disabled reason
48
+ */
49
+ disabledReason?: string;
50
+ /**
51
+ * Optional status label used in compact/badged states
52
+ */
53
+ statusLabel?: string;
54
+ /**
55
+ * Status tone for disabled state
56
+ */
57
+ statusTone?: 'default' | 'success' | 'warning' | 'danger';
58
+ /**
59
+ * Selection handler, turns card pressable
60
+ */
12
61
  onSelect?: (key: string) => void;
62
+ /**
63
+ * Optional custom class
64
+ */
13
65
  className?: string;
14
66
  }
@@ -6,7 +6,7 @@ import { OfferCardProps } from './types';
6
6
  * Supports slot-based customization for all rendered elements.
7
7
  */
8
8
  export declare const OfferCard: {
9
- ({ offer, quantity: quantityProp, defaultQuantity, onQuantityChange, currency, locale, labels: customLabels, slots, isDisabled, buttonVariant, buttonColor, showCard, showDescription, showPeopleCount, showPrice, classNames, "data-testid": dataTestId, selectedColor, }: OfferCardProps): JSX.Element;
9
+ ({ offer, quantity: quantityProp, defaultQuantity, onQuantityChange, currency, locale, labels: customLabels, slots, isDisabled, buttonVariant, buttonColor, showCard, showDescription, showPeopleCount, showPrice, classNames, "data-testid": dataTestId, selectedColor, compact, isSoldOut: isSoldOutProp, isMaxReached: isMaxReachedProp, isRuleBlocked: isRuleBlockedProp, statusTone: statusToneProp, statusLabel, disabledReason, disabled, }: OfferCardProps): JSX.Element;
10
10
  displayName: string;
11
11
  };
12
12
  export default OfferCard;
@@ -40,6 +40,29 @@ export interface Offer {
40
40
  * Position for sorting offers in a list
41
41
  */
42
42
  position?: number;
43
+ /**
44
+ * Explicit sold-out override for buyer-flow states.
45
+ * When true, the offer is considered unavailable regardless of numeric ticket fields.
46
+ */
47
+ isSoldOut?: boolean;
48
+ /**
49
+ * Explicit max reached override for buyer-flow states.
50
+ * When true, increments are disabled and the max-reached message is shown.
51
+ */
52
+ isMaxReached?: boolean;
53
+ /**
54
+ * Flag used for blocked states (adult-required, business-rule restrictions, etc.).
55
+ * Blocked offers are read-only and render an explanatory status message.
56
+ */
57
+ isRuleBlocked?: boolean;
58
+ /**
59
+ * Optional disabled reason shown when the offer is unavailable.
60
+ */
61
+ disabledReason?: string;
62
+ /**
63
+ * Optional compact rendering mode for list/item layouts.
64
+ */
65
+ compact?: boolean;
43
66
  }
44
67
  /**
45
68
  * Selection state for offers (map of offer ID to quantity)
@@ -69,6 +92,14 @@ export interface OfferCardLabels {
69
92
  * Message when maximum tickets reached (e.g., "Maximum number of tickets allowed reached")
70
93
  */
71
94
  maxReached?: string;
95
+ /**
96
+ * Message for rule-blocked/buying-rule disabled states
97
+ */
98
+ ruleBlocked?: string;
99
+ /**
100
+ * Generic disabled message fallback
101
+ */
102
+ disabled?: string;
72
103
  }
73
104
  /**
74
105
  * Labels for error state
@@ -131,6 +162,14 @@ export interface OfferCardClassNames {
131
162
  * Class for the card footer
132
163
  */
133
164
  footer?: string;
165
+ /**
166
+ * Class for compact mode container
167
+ */
168
+ compact?: string;
169
+ /**
170
+ * Class for compact quantity/status area
171
+ */
172
+ compactFooter?: string;
134
173
  }
135
174
  /**
136
175
  * Class names for OfferCardList
@@ -235,6 +274,10 @@ export interface OfferCardSlots {
235
274
  * Custom render for max reached alert
236
275
  */
237
276
  renderMaxReachedAlert?: (message: string) => React.ReactNode;
277
+ /**
278
+ * Custom render for disabled state (sold out / max reached / rule blocked)
279
+ */
280
+ renderDisabledState?: (kind: 'soldOut' | 'maxReached' | 'ruleBlocked' | 'disabled', label: string) => React.ReactNode;
238
281
  }
239
282
  /**
240
283
  * Props for the OfferCard component
@@ -323,15 +366,53 @@ export interface OfferCardProps {
323
366
  * Class names for styling different parts of the component
324
367
  */
325
368
  classNames?: OfferCardClassNames;
369
+ /**
370
+ * Render in compact visual density mode.
371
+ * @default false
372
+ */
373
+ compact?: boolean;
374
+ /**
375
+ * Explicit sold-out override for this specific card.
376
+ * @default false
377
+ */
378
+ isSoldOut?: boolean;
379
+ /**
380
+ * Explicit max-reached override for this specific card.
381
+ * @default false
382
+ */
383
+ isMaxReached?: boolean;
384
+ /**
385
+ * Rule-blocked state for this specific card.
386
+ * @default false
387
+ */
388
+ isRuleBlocked?: boolean;
389
+ /**
390
+ * Status/tone shown for rule-blocked or max-reached states.
391
+ * @default 'warning'
392
+ */
393
+ statusTone?: 'default' | 'warning' | 'danger';
394
+ /**
395
+ * Optional message to explain why interaction is blocked.
396
+ */
397
+ disabledReason?: string;
398
+ /**
399
+ * Optional override for the disabled state status label.
400
+ */
401
+ statusLabel?: string;
402
+ /**
403
+ * Optional disabled override used by OfferCardList or list-level controls.
404
+ * @default false
405
+ */
406
+ disabled?: boolean;
326
407
  }
327
408
  /**
328
409
  * Props for the OfferCardList component
329
410
  */
330
- export interface OfferCardListProps {
411
+ export interface OfferCardListProps<TOffer = Offer> {
331
412
  /**
332
413
  * Array of offers to display
333
414
  */
334
- offers: Offer[];
415
+ offers: TOffer[];
335
416
  /**
336
417
  * Currently selected quantities (controlled mode)
337
418
  * Map of offer ID to quantity
@@ -401,6 +482,16 @@ export interface OfferCardListProps {
401
482
  * Class names for styling different parts of the component
402
483
  */
403
484
  classNames?: OfferCardListClassNames;
485
+ /**
486
+ * Render the offer list in compact mode
487
+ * @default false
488
+ */
489
+ compact?: boolean;
490
+ /**
491
+ * Map incoming offer-like items to OfferCard props.
492
+ * This supports lightweight adapters for buyer-flow data shapes.
493
+ */
494
+ mapOffer?: (offer: TOffer) => Offer;
404
495
  }
405
496
  /**
406
497
  * Props for the OfferCardSkeleton component
@@ -1,12 +1,12 @@
1
1
  import { JSX } from 'react';
2
- import { OfferCardListProps } from '../types';
2
+ import { OfferCardListProps, Offer } from '../types';
3
3
  /**
4
4
  * OfferCardList component displays a collection of offer cards in a responsive grid.
5
5
  * It manages selection state internally or accepts external control via props.
6
6
  * When animated is true, cards animate in/out using Framer Motion variants.
7
7
  */
8
8
  export declare const OfferCardList: {
9
- ({ offers, selection: selectionProp, defaultSelection, onSelectionChange, onQuantityChange, currency, locale, labels, slots, isDisabled, buttonVariant, buttonColor, showCard, animated, gap, classNames, }: OfferCardListProps): JSX.Element;
9
+ <TOffer = Offer>({ offers, mapOffer, selection: selectionProp, defaultSelection, onSelectionChange, onQuantityChange, currency, locale, labels, slots, isDisabled, buttonVariant, buttonColor, showCard, animated, gap, compact, classNames, }: OfferCardListProps<TOffer>): JSX.Element;
10
10
  displayName: string;
11
11
  };
12
12
  export default OfferCardList;
@@ -0,0 +1,7 @@
1
+ import { JSX } from 'react';
2
+ import { SessionTimelineProps } from './type';
3
+ export declare const SessionTimeline: {
4
+ ({ heading, subheading, days, selectedDate, onDateSelect, quickDates, selectedSessionId, onSessionSelect, emptyStateMessage, statusLabel, statusTone, sessionAriaLabel, dayButtonClassName, calendarSlot, dayGroupAriaLabel, sessionGridAriaLabel, className, headingClassName, subheadingClassName, }: SessionTimelineProps): JSX.Element;
5
+ displayName: string;
6
+ };
7
+ export default SessionTimeline;
@@ -0,0 +1,2 @@
1
+ export { default as SessionTimeline } from './SessionTimeline';
2
+ export type * from './type';
@@ -0,0 +1,76 @@
1
+ export type SessionTimelineStatus = 'available' | 'limited' | 'sold-out' | 'closed';
2
+ export interface SessionTimelineSession {
3
+ /** Unique identifier for the session. */
4
+ id: string;
5
+ /** Human-readable start time text. */
6
+ startTime: string;
7
+ /** Human-readable end time text. */
8
+ endTime: string;
9
+ /** Remaining seats, if applicable. */
10
+ seatsRemaining?: number;
11
+ /** Status used for tone and accessibility text. */
12
+ status?: SessionTimelineStatus;
13
+ /** Whether this session has no capacity cap. */
14
+ isUnlimited?: boolean;
15
+ /** Force-disable regardless of status. */
16
+ isDisabled?: boolean;
17
+ }
18
+ export interface SessionTimelineDay {
19
+ /** Stable day key (ISO date or grouped value). */
20
+ date: string;
21
+ /** Optional custom label for quick controls and cards. */
22
+ label: string;
23
+ /** Sessions available for this day. */
24
+ sessions: SessionTimelineSession[];
25
+ }
26
+ export interface SessionTimelineQuickDate {
27
+ /** Day key from `SessionTimelineDay.date`. */
28
+ date: string;
29
+ /** Label shown for this quick button. */
30
+ label: string;
31
+ /** Disable quick button. */
32
+ isDisabled?: boolean;
33
+ }
34
+ export interface SessionTimelineProps {
35
+ /** Optional section heading. */
36
+ heading: string;
37
+ /** Optional section description. */
38
+ subheading?: string;
39
+ /** All available session days. */
40
+ days: readonly SessionTimelineDay[];
41
+ /** Currently selected day key. */
42
+ selectedDate: string | null;
43
+ /** Day selection callback. */
44
+ onDateSelect: (date: string) => void | Promise<void>;
45
+ /** Optional quick selector buttons rendered above the timeline. */
46
+ quickDates?: readonly SessionTimelineQuickDate[];
47
+ /** Currently selected session id. */
48
+ selectedSessionId?: string | null;
49
+ /** Session selection callback (toggle null to clear). */
50
+ onSessionSelect: (sessionId: string | null) => void | Promise<void>;
51
+ /** Text when the selected day has no sessions. */
52
+ emptyStateMessage?: string;
53
+ /** Custom status label factory. */
54
+ statusLabel?: (session: SessionTimelineSession) => string;
55
+ /** Custom session status tone. */
56
+ statusTone?: (session: SessionTimelineSession) => 'default' | 'success' | 'danger';
57
+ /** Custom session card accessible label factory. */
58
+ sessionAriaLabel?: (session: SessionTimelineSession, state: {
59
+ isSelected: boolean;
60
+ isUnavailable: boolean;
61
+ }) => string;
62
+ /** Custom day selection status class. */
63
+ dayButtonClassName?: string;
64
+ /** Optional additional control slot for a calendar trigger/popover. */
65
+ calendarSlot?: React.ReactNode;
66
+ /** Aria label for day quick switch group. */
67
+ dayGroupAriaLabel?: string;
68
+ /** Aria label for session grid region. */
69
+ sessionGridAriaLabel?: string;
70
+ /** Optional custom root class. */
71
+ className?: string;
72
+ /** Optional custom heading class. */
73
+ headingClassName?: string;
74
+ /** Optional custom subheading class. */
75
+ subheadingClassName?: string;
76
+ }
@@ -29,10 +29,18 @@ export { MembershipSelectCards } from './MembershipSelectCards';
29
29
  export type * from './MembershipSelectCards';
30
30
  export { ItemCard } from './ItemCard';
31
31
  export type * from './ItemCard';
32
+ export { CatalogItemCard } from './CatalogItemCard';
33
+ export type * from './CatalogItemCard';
34
+ export { FeedbackState, EmptyState, ErrorState, LoadingState, SuccessState } from './FeedbackState';
35
+ export type * from './FeedbackState';
32
36
  export { Toggle } from './Toggle';
33
37
  export type * from './Toggle';
34
38
  export { TicketSelection } from './TicketSelection';
35
39
  export type * from './TicketSelection';
40
+ export { FilterPopover } from './FilterPopover';
41
+ export type * from './FilterPopover';
42
+ export { SessionTimeline } from './SessionTimeline';
43
+ export type * from './SessionTimeline';
36
44
  export { CashTenderForm } from './CashTenderForm';
37
45
  export type { CashTenderFormProps, CashTenderValue, CashTenderLabels, } from './CashTenderForm';
38
46
  export { CheckTenderForm } from './CheckTenderForm';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@veevarts/design-system",
3
3
  "private": false,
4
- "version": "1.12.0-alpha.3",
4
+ "version": "1.12.0-alpha.4",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "module": "dist/index.js",