/** Shared frontend limits and timing values. */

// Mirrors the backend RecommendationRequest query max_length bound.
export const QUERY_MAX_LENGTH = 1000

// Mirrors the backend RecommendationRequest history max_length bound.
export const HISTORY_MAX_TURNS = 12

// Mirrors the backend RecommendationRequest prior_recommendations max_length bound.
export const PRIOR_RECOMMENDATIONS_MAX_TRACKS = 50

// Mirrors the backend HistoryTurn content max_length bound.
export const HISTORY_CONTENT_MAX_LENGTH = 2000

// Mirrors the backend PlaylistCreateRequest name max_length bound.
export const PLAYLIST_NAME_MAX_LENGTH = 100

// Keeps the developer event log useful without allowing unbounded growth.
export const EVENT_LOG_MAX_ENTRIES = 100

// Treats the message list as pinned when it is within this distance of the bottom.
export const MESSAGE_LIST_PIN_THRESHOLD_PX = 48

// Matches the composer placeholder switch to the mobile layout breakpoint.
export const NARROW_COMPOSER_MAX_WIDTH_PX = 559

// Keeps routine hover and focus transitions responsive.
export const FAST_TRANSITION_DURATION_MS = 160

// Gives track cards enough time to settle without slowing streamed results.
export const TRACK_CARD_ANIMATION_DURATION_MS = 340

// Makes new conversation turns noticeable without delaying interaction.
export const MESSAGE_ENTRANCE_ANIMATION_DURATION_MS = 300

// Gives playlist confirmation a brief visual acknowledgement.
export const PLAYLIST_SAVED_ANIMATION_DURATION_MS = 260

// Keeps the thinking pulse calm while work is in progress.
export const THINKING_PULSE_ANIMATION_DURATION_MS = 1100

// Separates thinking dots enough to make their sequence legible.
export const THINKING_PULSE_STAGGER_MS = 180

// Retains an effectively instant duration when reduced motion is requested.
export const REDUCED_MOTION_DURATION_MS = 1
