{"version":3,"sources":["../../src/components/Accordation/Accordation.tsx","../../src/components/Card/Card.tsx","../../src/utils/utils.ts","../../src/components/Button/Button.tsx","../../src/components/Badge/Badge.tsx","../../src/components/Text/Text.tsx","../../src/components/ProgressBar/ProgressBar.tsx"],"sourcesContent":["import {\n  forwardRef,\n  HTMLAttributes,\n  KeyboardEvent,\n  ReactNode,\n  useId,\n  useState,\n} from 'react';\nimport { CardBase } from '../Card/Card';\nimport { CaretRight } from 'phosphor-react';\nimport { cn } from '../../utils/utils';\n\ninterface CardAccordationProps extends HTMLAttributes<HTMLDivElement> {\n  trigger: ReactNode;\n  children: ReactNode;\n  defaultExpanded?: boolean;\n  onToggleExpanded?: (isExpanded: boolean) => void;\n}\n\nconst CardAccordation = forwardRef<HTMLDivElement, CardAccordationProps>(\n  (\n    {\n      trigger,\n      children,\n      className,\n      defaultExpanded = false,\n      onToggleExpanded,\n      ...props\n    },\n    ref\n  ) => {\n    const [isExpanded, setIsExpanded] = useState(defaultExpanded);\n    const contentId = useId();\n\n    const handleToggle = () => {\n      const newExpanded = !isExpanded;\n      setIsExpanded(newExpanded);\n      onToggleExpanded?.(newExpanded);\n    };\n\n    const handleKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n      if (event.key === 'Enter' || event.key === ' ') {\n        event.preventDefault();\n        handleToggle();\n      }\n    };\n\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"vertical\"\n        padding=\"none\"\n        minHeight=\"none\"\n        className={cn('overflow-hidden', className)}\n        {...props}\n      >\n        {/* Clickable header */}\n        <button\n          onClick={handleToggle}\n          onKeyDown={handleKeyDown}\n          className=\"w-full cursor-pointer text-text-950 not-aria-expanded:rounded-xl aria-expanded:rounded-t-xl p-4 flex items-center justify-between gap-3 text-left transition-colors duration-200 focus:outline-none focus:border-2 focus:border-primary-950 focus:ring-inset\"\n          aria-expanded={isExpanded}\n          aria-controls=\"accordion-content\"\n        >\n          {trigger}\n\n          <CaretRight\n            size={20}\n            className={cn(\n              'text-text-700 transition-transform duration-200 flex-shrink-0',\n              isExpanded ? 'rotate-90' : 'rotate-0'\n            )}\n            data-testid=\"accordion-caret\"\n          />\n        </button>\n\n        {/* Expandable content */}\n        <div\n          id={contentId}\n          className={cn(\n            'transition-all duration-300 ease-in-out overflow-hidden',\n            isExpanded ? 'max-h-screen opacity-100' : 'max-h-0 opacity-0'\n          )}\n          data-testid=\"accordion-content\"\n        >\n          <div className=\"p-4 pt-0 border-border-50\">{children}</div>\n        </div>\n      </CardBase>\n    );\n  }\n);\n\nexport { CardAccordation };\n","import {\n  forwardRef,\n  Fragment,\n  HTMLAttributes,\n  ReactNode,\n  useState,\n  useRef,\n  MouseEvent,\n  ChangeEvent,\n  KeyboardEvent,\n  Ref,\n} from 'react';\nimport Button from '../Button/Button';\nimport Badge from '../Badge/Badge';\nimport ProgressBar from '../ProgressBar/ProgressBar';\nimport {\n  CaretRight,\n  ChatCircleText,\n  CheckCircle,\n  Clock,\n  DotsThreeVertical,\n  Play,\n  SpeakerHigh,\n  SpeakerLow,\n  SpeakerSimpleX,\n  XCircle,\n} from 'phosphor-react';\nimport Text from '../Text/Text';\nimport { cn } from '../../utils/utils';\n\n// Componente base reutilizável para todos os cards\ninterface CardBaseProps extends HTMLAttributes<HTMLDivElement> {\n  children: ReactNode;\n  variant?: 'default' | 'compact' | 'minimal';\n  layout?: 'horizontal' | 'vertical';\n  padding?: 'none' | 'small' | 'medium' | 'large';\n  minHeight?: 'none' | 'small' | 'medium' | 'large';\n  cursor?: 'default' | 'pointer';\n}\n\nconst CARD_BASE_CLASSES = {\n  default: 'w-full bg-background border border-border-50 rounded-xl',\n  compact: 'w-full bg-background border border-border-50 rounded-lg',\n  minimal: 'w-full bg-background border border-border-100 rounded-md',\n};\n\nconst CARD_PADDING_CLASSES = {\n  none: '',\n  small: 'p-2',\n  medium: 'p-4',\n  large: 'p-6',\n};\n\nconst CARD_MIN_HEIGHT_CLASSES = {\n  none: '',\n  small: 'min-h-16',\n  medium: 'min-h-20',\n  large: 'min-h-24',\n};\n\nconst CARD_LAYOUT_CLASSES = {\n  horizontal: 'flex flex-row',\n  vertical: 'flex flex-col',\n};\n\nconst CARD_CURSOR_CLASSES = {\n  default: '',\n  pointer: 'cursor-pointer',\n};\n\nconst CardBase = forwardRef<HTMLDivElement, CardBaseProps>(\n  (\n    {\n      children,\n      variant = 'default',\n      layout = 'horizontal',\n      padding = 'medium',\n      minHeight = 'medium',\n      cursor = 'default',\n      className = '',\n      ...props\n    },\n    ref\n  ) => {\n    const baseClasses = CARD_BASE_CLASSES[variant];\n    const paddingClasses = CARD_PADDING_CLASSES[padding];\n    const minHeightClasses = CARD_MIN_HEIGHT_CLASSES[minHeight];\n    const layoutClasses = CARD_LAYOUT_CLASSES[layout];\n    const cursorClasses = CARD_CURSOR_CLASSES[cursor];\n\n    const combinedClasses = [\n      baseClasses,\n      paddingClasses,\n      minHeightClasses,\n      layoutClasses,\n      cursorClasses,\n      className,\n    ]\n      .filter(Boolean)\n      .join(' ');\n\n    return (\n      <div ref={ref} className={combinedClasses} {...props}>\n        {children}\n      </div>\n    );\n  }\n);\n\ninterface CardActivitiesResultsProps extends HTMLAttributes<HTMLDivElement> {\n  icon: ReactNode;\n  title: string;\n  subTitle: string;\n  header: string;\n  description?: string;\n  extended?: boolean;\n  action?: 'warning' | 'success' | 'error' | 'info';\n}\n\nconst ACTION_CARD_CLASSES = {\n  warning: 'bg-warning-background',\n  success: 'bg-success-300',\n  error: 'bg-error-100',\n  info: 'bg-info-background',\n};\n\nconst ACTION_ICON_CLASSES = {\n  warning: 'bg-warning-300 text-text',\n  success: 'bg-yellow-300 text-text-950',\n  error: 'bg-error-500 text-text',\n  info: 'bg-info-500 text-text',\n};\n\nconst ACTION_SUBTITLE_CLASSES = {\n  warning: 'text-warning-600',\n  success: 'text-success-700',\n  error: 'text-error-700',\n  info: 'text-info-700',\n};\n\nconst ACTION_HEADER_CLASSES = {\n  warning: 'text-warning-300',\n  success: 'text-success-300',\n  error: 'text-error-300',\n  info: 'text-info-300',\n};\n\nconst CardActivitiesResults = forwardRef<\n  HTMLDivElement,\n  CardActivitiesResultsProps\n>(\n  (\n    {\n      icon,\n      title,\n      subTitle,\n      header,\n      extended = false,\n      action = 'success',\n      description,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const actionCardClasses = ACTION_CARD_CLASSES[action];\n    const actionIconClasses = ACTION_ICON_CLASSES[action];\n    const actionSubTitleClasses = ACTION_SUBTITLE_CLASSES[action];\n    const actionHeaderClasses = ACTION_HEADER_CLASSES[action];\n\n    return (\n      <div\n        ref={ref}\n        className={cn(\n          'w-full flex flex-col border border-border-50  bg-background rounded-xl',\n          className\n        )}\n        {...props}\n      >\n        <div\n          className={cn(\n            'flex flex-col gap-1 items-center justify-center p-4',\n            actionCardClasses,\n            extended ? 'rounded-t-xl' : 'rounded-xl'\n          )}\n        >\n          <span\n            className={cn(\n              'size-7.5 rounded-full flex items-center justify-center',\n              actionIconClasses\n            )}\n          >\n            {icon}\n          </span>\n\n          <Text\n            size=\"2xs\"\n            weight=\"medium\"\n            className=\"text-text-800 uppercase truncate\"\n          >\n            {title}\n          </Text>\n\n          <p\n            className={cn('text-lg font-bold truncate', actionSubTitleClasses)}\n          >\n            {subTitle}\n          </p>\n        </div>\n\n        {extended && (\n          <div className=\"flex flex-col items-center gap-2.5 pb-9.5 pt-2.5\">\n            <p\n              className={cn(\n                'text-2xs font-medium uppercase truncate',\n                actionHeaderClasses\n              )}\n            >\n              {header}\n            </p>\n            <Badge size=\"large\" action=\"info\">\n              {description}\n            </Badge>\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\ninterface CardQuestionProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  state?: 'done' | 'undone';\n  onClickButton?: (valueButton?: unknown) => void;\n  valueButton?: unknown;\n}\n\nconst CardQuestions = forwardRef<HTMLDivElement, CardQuestionProps>(\n  (\n    {\n      header,\n      state = 'undone',\n      className,\n      onClickButton,\n      valueButton,\n      ...props\n    },\n    ref\n  ) => {\n    const isDone = state === 'done';\n    const stateLabel = isDone ? 'Realizado' : 'Não Realizado';\n    const buttonLabel = isDone ? 'Ver Questão' : 'Responder';\n\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"medium\"\n        className={cn('justify-between gap-4', className)}\n        {...props}\n      >\n        <section className=\"flex flex-col gap-1 flex-1 min-w-0\">\n          <p className=\"font-bold text-xs text-text-950 truncate\">{header}</p>\n\n          <div className=\"flex flex-row gap-6 items-center\">\n            <Badge\n              size=\"medium\"\n              variant=\"solid\"\n              action={isDone ? 'success' : 'error'}\n            >\n              {stateLabel}\n            </Badge>\n\n            <span className=\"flex flex-row items-center gap-1 text-text-700 text-xs\">\n              {isDone ? 'Nota' : 'Sem nota'}\n              {isDone && (\n                <Badge size=\"medium\" action=\"success\">\n                  00\n                </Badge>\n              )}\n            </span>\n          </div>\n        </section>\n\n        <span className=\"flex-shrink-0\">\n          <Button\n            size=\"extra-small\"\n            onClick={() => onClickButton?.(valueButton)}\n            className=\"min-w-fit\"\n          >\n            {buttonLabel}\n          </Button>\n        </span>\n      </CardBase>\n    );\n  }\n);\n\ninterface CardProgressProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  subhead?: string;\n  initialDate?: string;\n  endDate?: string;\n  progress?: number;\n  direction?: 'horizontal' | 'vertical';\n  icon: ReactNode;\n  color?: string;\n  progressVariant?: 'blue' | 'green';\n  showDates?: boolean;\n}\n\nconst CardProgress = forwardRef<HTMLDivElement, CardProgressProps>(\n  (\n    {\n      header,\n      subhead,\n      initialDate,\n      endDate,\n      progress = 0,\n      direction = 'horizontal',\n      icon,\n      color = '#B7DFFF',\n      progressVariant = 'blue',\n      showDates = true,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const isHorizontal = direction === 'horizontal';\n    const contentComponent = {\n      horizontal: (\n        <>\n          {showDates && (\n            <div className=\"flex flex-row gap-6 items-center\">\n              {initialDate && (\n                <span className=\"flex flex-row gap-1 items-center text-2xs\">\n                  <p className=\"text-text-800 font-semibold\">Início</p>\n                  <p className=\"text-text-600\">{initialDate}</p>\n                </span>\n              )}\n              {endDate && (\n                <span className=\"flex flex-row gap-1 items-center text-2xs\">\n                  <p className=\"text-text-800 font-semibold\">Fim</p>\n                  <p className=\"text-text-600\">{endDate}</p>\n                </span>\n              )}\n            </div>\n          )}\n          <span className=\"grid grid-cols-[1fr_auto] items-center gap-2\">\n            <ProgressBar\n              size=\"small\"\n              value={progress}\n              variant={progressVariant}\n              data-testid=\"progress-bar\"\n            />\n\n            <Text\n              size=\"xs\"\n              weight=\"medium\"\n              className={cn(\n                'text-text-950 leading-none tracking-normal text-center flex-none'\n              )}\n            >\n              {Math.round(progress)}%\n            </Text>\n          </span>\n        </>\n      ),\n      vertical: <p className=\"text-sm text-text-800\">{subhead}</p>,\n    };\n\n    return (\n      <CardBase\n        ref={ref}\n        layout={isHorizontal ? 'horizontal' : 'vertical'}\n        padding=\"none\"\n        minHeight=\"medium\"\n        cursor=\"pointer\"\n        className={cn(isHorizontal ? 'h-20' : '', className)}\n        {...props}\n      >\n        <div\n          className={cn(\n            'flex justify-center items-center [&>svg]:size-6 text-text-950',\n            isHorizontal\n              ? 'min-w-[80px] min-h-[80px] rounded-l-xl'\n              : 'min-h-[50px] w-full rounded-t-xl',\n            !color.startsWith('#') ? `bg-${color}` : ''\n          )}\n          style={color.startsWith('#') ? { backgroundColor: color } : undefined}\n          data-testid=\"icon-container\"\n        >\n          {icon}\n        </div>\n\n        <div\n          className={cn(\n            'p-4 flex flex-col justify-between w-full h-full',\n            !isHorizontal && 'gap-4'\n          )}\n        >\n          <Text size=\"sm\" weight=\"bold\" className=\"text-text-950 truncate\">\n            {header}\n          </Text>\n          {contentComponent[direction]}\n        </div>\n      </CardBase>\n    );\n  }\n);\n\ninterface CardTopicProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  subHead?: string[];\n  progress: number;\n  showPercentage?: boolean;\n  progressVariant?: 'blue' | 'green';\n}\n\nconst CardTopic = forwardRef<HTMLDivElement, CardTopicProps>(\n  (\n    {\n      header,\n      subHead,\n      progress,\n      showPercentage = false,\n      progressVariant = 'blue',\n      className = '',\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"vertical\"\n        padding=\"small\"\n        minHeight=\"medium\"\n        cursor=\"pointer\"\n        className={cn('justify-center gap-2  py-2 px-4', className)}\n        {...props}\n      >\n        {subHead && (\n          <span className=\"text-text-600 text-2xs flex flex-row gap-1\">\n            {subHead.map((text, index) => (\n              <Fragment key={`${text} - ${index}`}>\n                <p>{text}</p>\n                {index < subHead.length - 1 && <p>•</p>}\n              </Fragment>\n            ))}\n          </span>\n        )}\n\n        <p className=\"text-sm text-text-950 font-bold truncate\">{header}</p>\n\n        <span className=\"grid grid-cols-[1fr_auto] items-center gap-2\">\n          <ProgressBar\n            size=\"small\"\n            value={progress}\n            variant={progressVariant}\n            data-testid=\"progress-bar\"\n          />\n          {showPercentage && (\n            <Text\n              size=\"xs\"\n              weight=\"medium\"\n              className={cn(\n                'text-text-950 leading-none tracking-normal text-center flex-none'\n              )}\n            >\n              {Math.round(progress)}%\n            </Text>\n          )}\n        </span>\n      </CardBase>\n    );\n  }\n);\n\ninterface CardPerformanceProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  description?: string;\n  progress?: number;\n  labelProgress?: string;\n  actionVariant?: 'button' | 'caret';\n  progressVariant?: 'blue' | 'green';\n  onClickButton?: (valueButton?: unknown) => void;\n  valueButton?: unknown;\n}\n\nconst CardPerformance = forwardRef<HTMLDivElement, CardPerformanceProps>(\n  (\n    {\n      header,\n      progress,\n      description = 'Sem dados ainda! Você ainda não fez um questionário neste assunto.',\n      actionVariant = 'button',\n      progressVariant = 'blue',\n      labelProgress = '',\n      className = '',\n      onClickButton,\n      valueButton,\n      ...props\n    },\n    ref\n  ) => {\n    const hasProgress = progress !== undefined;\n\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"none\"\n        className={cn(\n          actionVariant == 'caret' ? 'cursor-pointer' : '',\n          className\n        )}\n        onClick={() => actionVariant == 'caret' && onClickButton?.(valueButton)}\n        {...props}\n      >\n        <div className=\"w-full flex flex-col justify-between gap-2\">\n          <div className=\"flex flex-row justify-between items-center gap-2\">\n            <p className=\"text-lg font-bold text-text-950 truncate flex-1 min-w-0\">\n              {header}\n            </p>\n            {actionVariant === 'button' && (\n              <Button\n                variant=\"outline\"\n                size=\"extra-small\"\n                onClick={() => onClickButton?.(valueButton)}\n                className=\"min-w-fit flex-shrink-0\"\n              >\n                Ver Aula\n              </Button>\n            )}\n          </div>\n\n          <div className=\"w-full\">\n            {hasProgress ? (\n              <ProgressBar\n                value={progress}\n                label={`${progress}% ${labelProgress}`}\n                variant={progressVariant}\n              />\n            ) : (\n              <p className=\"text-xs text-text-600 truncate\">{description}</p>\n            )}\n          </div>\n        </div>\n\n        {actionVariant == 'caret' && (\n          <CaretRight\n            className=\"size-4.5 text-text-800 cursor-pointer\"\n            data-testid=\"caret-icon\"\n          />\n        )}\n      </CardBase>\n    );\n  }\n);\n\ninterface CardResultsProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  icon: ReactNode;\n  correct_answers: number;\n  incorrect_answers: number;\n  direction?: 'row' | 'col';\n  color?: string;\n}\n\nconst CardResults = forwardRef<HTMLDivElement, CardResultsProps>(\n  (\n    {\n      header,\n      correct_answers,\n      incorrect_answers,\n      icon,\n      direction = 'col',\n      color = '#B7DFFF',\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const isRow = direction == 'row';\n\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"none\"\n        minHeight=\"medium\"\n        className={cn('items-center cursor-pointer pr-4', className)}\n        {...props}\n      >\n        <div\n          className={cn(\n            'flex justify-center items-center [&>svg]:size-8 text-text-950 min-w-20 max-w-20 min-h-20 h-full rounded-l-xl'\n          )}\n          style={{\n            backgroundColor: color,\n          }}\n        >\n          {icon}\n        </div>\n\n        <div\n          className={cn(\n            'p-4 flex justify-between w-full h-full',\n            isRow ? 'flex-row items-center gap-2' : 'flex-col'\n          )}\n        >\n          <p className=\"text-sm font-bold text-text-950 truncate flex-1 min-w-0\">\n            {header}\n          </p>\n          <span className=\"flex flex-row gap-1 items-center\">\n            <Badge\n              action=\"success\"\n              variant=\"solid\"\n              size=\"large\"\n              iconLeft={<CheckCircle />}\n            >\n              {correct_answers} Corretas\n            </Badge>\n\n            <Badge\n              action=\"error\"\n              variant=\"solid\"\n              size=\"large\"\n              iconLeft={<XCircle />}\n            >\n              {incorrect_answers} Incorretas\n            </Badge>\n          </span>\n        </div>\n\n        <CaretRight className=\"min-w-6 min-h-6 text-text-800\" />\n      </CardBase>\n    );\n  }\n);\n\ninterface CardStatusProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  status?: 'correct' | 'incorrect';\n  label?: string;\n}\n\nconst CardStatus = forwardRef<HTMLDivElement, CardStatusProps>(\n  ({ header, className, status, label, ...props }, ref) => {\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"medium\"\n        className={cn('items-center cursor-pointer', className)}\n        {...props}\n      >\n        <div className=\"flex justify-between w-full h-full flex-row items-center gap-2\">\n          <p className=\"text-sm font-bold text-text-950 truncate flex-1 min-w-0\">\n            {header}\n          </p>\n          <span className=\"flex flex-row gap-1 items-center flex-shrink-0\">\n            {status && (\n              <Badge\n                action={status == 'correct' ? 'success' : 'error'}\n                variant=\"solid\"\n                size=\"medium\"\n                iconLeft={<CheckCircle />}\n              >\n                {status == 'correct' ? 'Correta' : 'Incorreta'}\n              </Badge>\n            )}\n            {label && <p className=\"text-sm text-text-800\">{label}</p>}\n          </span>\n          <CaretRight className=\"min-w-6 min-h-6 text-text-800 cursor-pointer flex-shrink-0 ml-2\" />\n        </div>\n      </CardBase>\n    );\n  }\n);\n\ninterface CardSettingsProps extends HTMLAttributes<HTMLDivElement> {\n  icon: ReactNode;\n  header: string;\n}\n\nconst CardSettings = forwardRef<HTMLDivElement, CardSettingsProps>(\n  ({ header, className, icon, ...props }, ref) => {\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"small\"\n        minHeight=\"none\"\n        className={cn(\n          'border-none items-center gap-2 text-text-700',\n          className\n        )}\n        {...props}\n      >\n        <span className=\"[&>svg]:size-6\">{icon}</span>\n\n        <p className=\"w-full text-sm truncate\">{header}</p>\n\n        <CaretRight size={24} className=\"cursor-pointer\" />\n      </CardBase>\n    );\n  }\n);\n\ninterface CardSupportProps extends HTMLAttributes<HTMLDivElement> {\n  header: string;\n  direction?: 'row' | 'col';\n  children: ReactNode;\n}\n\nconst CardSupport = forwardRef<HTMLDivElement, CardSupportProps>(\n  ({ header, className, direction = 'col', children, ...props }, ref) => {\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"none\"\n        className={cn(\n          'border-none items-center gap-2 text-text-700',\n          className\n        )}\n        {...props}\n      >\n        <div\n          className={cn(\n            'w-full flex',\n            direction == 'col' ? 'flex-col' : 'flex-row items-center'\n          )}\n        >\n          <span className=\"w-full min-w-0\">\n            <p className=\"text-sm text-text-950 font-bold truncate\">{header}</p>\n          </span>\n          <span className=\"flex flex-row gap-1\">{children}</span>\n        </div>\n\n        <CaretRight className=\"text-text-800 cursor-pointer\" size={24} />\n      </CardBase>\n    );\n  }\n);\n\ninterface CardForumProps<T = unknown> extends HTMLAttributes<HTMLDivElement> {\n  title: string;\n  content: string;\n  comments: number;\n  date: string;\n  hour: string;\n  onClickComments?: (value?: T) => void;\n  valueComments?: T;\n  onClickProfile?: (profile?: T) => void;\n  valueProfile?: T;\n}\n\nconst CardForum = forwardRef<HTMLDivElement, CardForumProps>(\n  (\n    {\n      title,\n      content,\n      comments,\n      onClickComments,\n      valueComments,\n      onClickProfile,\n      valueProfile,\n      className = '',\n      date,\n      hour,\n      ...props\n    },\n    ref\n  ) => {\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"none\"\n        variant=\"minimal\"\n        className={cn('w-auto h-auto gap-3', className)}\n        {...props}\n      >\n        <button\n          type=\"button\"\n          aria-label=\"Ver perfil\"\n          onClick={() => onClickProfile?.(valueProfile)}\n          className=\"min-w-8 h-8 rounded-full bg-background-950\"\n        />\n\n        <div className=\"flex flex-col gap-2 flex-1 min-w-0\">\n          <div className=\"flex flex-row gap-1 items-center flex-wrap\">\n            <p className=\"text-xs font-semibold text-primary-700 truncate\">\n              {title}\n            </p>\n            <p className=\"text-xs text-text-600\">\n              • {date} • {hour}\n            </p>\n          </div>\n\n          <p className=\"text-text-950 text-sm line-clamp-2 truncate\">\n            {content}\n          </p>\n\n          <button\n            type=\"button\"\n            aria-label=\"Ver comentários\"\n            onClick={() => onClickComments?.(valueComments)}\n            className=\"text-text-600 flex flex-row gap-2 items-center\"\n          >\n            <ChatCircleText aria-hidden=\"true\" size={16} />\n            <p className=\"text-xs\">{comments} respostas</p>\n          </button>\n        </div>\n      </CardBase>\n    );\n  }\n);\n\ninterface CardAudioProps extends HTMLAttributes<HTMLDivElement> {\n  src?: string;\n  title?: string;\n  onPlay?: () => void;\n  onPause?: () => void;\n  onEnded?: () => void;\n  onAudioTimeUpdate?: (currentTime: number, duration: number) => void;\n  loop?: boolean;\n  preload?: 'none' | 'metadata' | 'auto';\n  tracks?: Array<{\n    kind: 'subtitles' | 'captions' | 'descriptions' | 'chapters' | 'metadata';\n    src: string;\n    srcLang: string;\n    label: string;\n    default?: boolean;\n  }>;\n}\n\nconst CardAudio = forwardRef<HTMLDivElement, CardAudioProps>(\n  (\n    {\n      src,\n      title,\n      onPlay,\n      onPause,\n      onEnded,\n      onAudioTimeUpdate,\n      loop = false,\n      preload = 'metadata',\n      tracks,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const [isPlaying, setIsPlaying] = useState(false);\n    const [currentTime, setCurrentTime] = useState(0);\n    const [duration, setDuration] = useState(0);\n    const [volume, setVolume] = useState(1);\n    const [showVolumeControl, setShowVolumeControl] = useState(false);\n    const audioRef = useRef<HTMLAudioElement>(null);\n\n    const formatTime = (time: number) => {\n      const minutes = Math.floor(time / 60);\n      const seconds = Math.floor(time % 60);\n      return `${minutes}:${seconds.toString().padStart(2, '0')}`;\n    };\n\n    const handlePlayPause = () => {\n      if (isPlaying) {\n        audioRef.current?.pause();\n        setIsPlaying(false);\n        onPause?.();\n      } else {\n        audioRef.current?.play();\n        setIsPlaying(true);\n        onPlay?.();\n      }\n    };\n\n    const handleTimeUpdate = () => {\n      const current = audioRef.current?.currentTime ?? 0;\n      const total = audioRef.current?.duration ?? 0;\n\n      setCurrentTime(current);\n      setDuration(total);\n      onAudioTimeUpdate?.(current, total);\n    };\n\n    const handleLoadedMetadata = () => {\n      setDuration(audioRef.current?.duration ?? 0);\n    };\n\n    const handleEnded = () => {\n      setIsPlaying(false);\n      setCurrentTime(0);\n      onEnded?.();\n    };\n\n    const handleProgressClick = (e: MouseEvent<HTMLButtonElement>) => {\n      const rect = e.currentTarget.getBoundingClientRect();\n      const clickX = e.clientX - rect.left;\n      const width = rect.width;\n      const percentage = clickX / width;\n      const newTime = percentage * duration;\n\n      if (audioRef.current) {\n        audioRef.current.currentTime = newTime;\n      }\n      setCurrentTime(newTime);\n    };\n\n    const handleVolumeChange = (e: ChangeEvent<HTMLInputElement>) => {\n      const newVolume = parseFloat(e.target.value);\n      setVolume(newVolume);\n      if (audioRef.current) {\n        audioRef.current.volume = newVolume;\n      }\n    };\n\n    const toggleVolumeControl = () => {\n      setShowVolumeControl(!showVolumeControl);\n    };\n\n    const getVolumeIcon = () => {\n      if (volume === 0) {\n        return <SpeakerSimpleX />;\n      }\n      if (volume < 0.5) {\n        return <SpeakerLow />;\n      }\n      return <SpeakerHigh />;\n    };\n\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"none\"\n        className={cn('w-auto h-14 items-center gap-2', className)}\n        {...props}\n      >\n        {/* Audio element */}\n        <audio\n          ref={audioRef}\n          src={src}\n          loop={loop}\n          preload={preload}\n          onTimeUpdate={handleTimeUpdate}\n          onLoadedMetadata={handleLoadedMetadata}\n          onEnded={handleEnded}\n          data-testid=\"audio-element\"\n          aria-label={title}\n        >\n          {tracks ? (\n            tracks.map((track) => (\n              <track\n                key={track.src}\n                kind={track.kind}\n                src={track.src}\n                srcLang={track.srcLang}\n                label={track.label}\n                default={track.default}\n              />\n            ))\n          ) : (\n            <track\n              kind=\"captions\"\n              src=\"data:text/vtt;base64,\"\n              srcLang=\"pt\"\n              label=\"Sem legendas disponíveis\"\n            />\n          )}\n        </audio>\n\n        {/* Play/Pause Button */}\n        <button\n          type=\"button\"\n          onClick={handlePlayPause}\n          disabled={!src}\n          className=\"cursor-pointer text-text-950 hover:text-primary-600 disabled:text-text-400 disabled:cursor-not-allowed\"\n          aria-label={isPlaying ? 'Pausar' : 'Reproduzir'}\n        >\n          {isPlaying ? (\n            <div className=\"w-6 h-6 flex items-center justify-center\">\n              <div className=\"flex gap-0.5\">\n                <div className=\"w-1 h-4 bg-current rounded-sm\"></div>\n                <div className=\"w-1 h-4 bg-current rounded-sm\"></div>\n              </div>\n            </div>\n          ) : (\n            <Play size={24} />\n          )}\n        </button>\n\n        {/* Current Time */}\n        <p className=\"text-text-800 text-sm font-medium min-w-[2.5rem]\">\n          {formatTime(currentTime)}\n        </p>\n\n        {/* Progress Bar */}\n        <div className=\"flex-1 relative\" data-testid=\"progress-bar\">\n          <button\n            type=\"button\"\n            className=\"w-full h-2 bg-border-100 rounded-full cursor-pointer\"\n            onClick={handleProgressClick}\n            onKeyDown={(e) => {\n              if (e.key === 'Enter' || e.key === ' ') {\n                e.preventDefault();\n                handleProgressClick(\n                  e as unknown as MouseEvent<HTMLButtonElement>\n                );\n              }\n            }}\n            aria-label=\"Barra de progresso do áudio\"\n          >\n            <div\n              className=\"h-full bg-primary-600 rounded-full transition-all duration-100\"\n              style={{\n                width:\n                  duration > 0 ? `${(currentTime / duration) * 100}%` : '0%',\n              }}\n            />\n          </button>\n        </div>\n\n        {/* Duration */}\n        <p className=\"text-text-800 text-sm font-medium min-w-[2.5rem]\">\n          {formatTime(duration)}\n        </p>\n\n        {/* Volume Control */}\n        <div className=\"relative\">\n          <button\n            type=\"button\"\n            onClick={toggleVolumeControl}\n            className=\"cursor-pointer text-text-950 hover:text-primary-600\"\n            aria-label=\"Controle de volume\"\n          >\n            <div className=\"w-6 h-6 flex items-center justify-center\">\n              {getVolumeIcon()}\n            </div>\n          </button>\n\n          {showVolumeControl && (\n            <button\n              type=\"button\"\n              className=\"absolute bottom-full right-0 mb-2 p-2 bg-background border border-border-100 rounded-lg shadow-lg focus:outline-none focus:ring-2 focus:ring-primary-500\"\n              onKeyDown={(e) => {\n                if (e.key === 'Escape') {\n                  setShowVolumeControl(false);\n                }\n              }}\n            >\n              <input\n                type=\"range\"\n                min=\"0\"\n                max=\"1\"\n                step=\"0.1\"\n                value={volume}\n                onChange={handleVolumeChange}\n                onKeyDown={(e) => {\n                  if (e.key === 'ArrowUp' || e.key === 'ArrowRight') {\n                    e.preventDefault();\n                    const newVolume = Math.min(\n                      1,\n                      Math.round((volume + 0.1) * 10) / 10\n                    );\n                    setVolume(newVolume);\n                    if (audioRef.current) audioRef.current.volume = newVolume;\n                  } else if (e.key === 'ArrowDown' || e.key === 'ArrowLeft') {\n                    e.preventDefault();\n                    const newVolume = Math.max(\n                      0,\n                      Math.round((volume - 0.1) * 10) / 10\n                    );\n                    setVolume(newVolume);\n                    if (audioRef.current) audioRef.current.volume = newVolume;\n                  }\n                }}\n                className=\"w-20 h-2 bg-border-100 rounded-lg appearance-none cursor-pointer\"\n                style={{\n                  background: `linear-gradient(to right, #3b82f6 0%, #3b82f6 ${volume * 100}%, #e5e7eb ${volume * 100}%, #e5e7eb 100%)`,\n                }}\n                aria-label=\"Volume\"\n                aria-valuenow={Math.round(volume * 100)}\n                aria-valuemin={0}\n                aria-valuemax={100}\n              />\n            </button>\n          )}\n        </div>\n\n        {/* Menu Button */}\n        <DotsThreeVertical\n          size={24}\n          className=\"text-text-950 cursor-pointer hover:text-primary-600\"\n        />\n      </CardBase>\n    );\n  }\n);\n\ninterface CardSimuladoProps extends HTMLAttributes<HTMLDivElement> {\n  title: string;\n  duration?: string;\n  info: string;\n  backgroundColor: 'enem' | 'prova' | 'simuladao' | 'vestibular';\n}\n\nconst SIMULADO_BACKGROUND_CLASSES = {\n  enem: 'bg-exam-1',\n  prova: 'bg-exam-2',\n  simuladao: 'bg-exam-3',\n  vestibular: 'bg-exam-4',\n};\n\nconst CardSimulado = forwardRef<HTMLDivElement, CardSimuladoProps>(\n  ({ title, duration, info, backgroundColor, className, ...props }, ref) => {\n    const backgroundClass = SIMULADO_BACKGROUND_CLASSES[backgroundColor];\n\n    return (\n      <CardBase\n        ref={ref}\n        layout=\"horizontal\"\n        padding=\"medium\"\n        minHeight=\"none\"\n        cursor=\"pointer\"\n        className={cn(\n          `${backgroundClass} hover:shadow-soft-shadow-2 transition-shadow duration-200`,\n          className\n        )}\n        {...props}\n      >\n        <div className=\"flex justify-between items-center w-full gap-4\">\n          <div className=\"flex flex-col gap-1 flex-1 min-w-0\">\n            <Text size=\"lg\" weight=\"bold\" className=\"text-text-950 truncate\">\n              {title}\n            </Text>\n\n            <div className=\"flex items-center gap-4 text-text-700\">\n              {duration && (\n                <div className=\"flex items-center gap-1\">\n                  <Clock size={16} className=\"flex-shrink-0\" />\n                  <Text size=\"sm\">{duration}</Text>\n                </div>\n              )}\n\n              <Text size=\"sm\" className=\"truncate\">\n                {info}\n              </Text>\n            </div>\n          </div>\n\n          <CaretRight\n            size={24}\n            className=\"text-text-800 flex-shrink-0\"\n            data-testid=\"caret-icon\"\n          />\n        </div>\n      </CardBase>\n    );\n  }\n);\n\ninterface CardTestProps extends Omit<HTMLAttributes<HTMLElement>, 'onSelect'> {\n  title: string;\n  duration?: string;\n  questionsCount?: number;\n  additionalInfo?: string;\n  selected?: boolean;\n  onSelect?: (selected: boolean) => void;\n}\n\nconst CardTest = forwardRef<HTMLElement, CardTestProps>(\n  (\n    {\n      title,\n      duration,\n      questionsCount,\n      additionalInfo,\n      selected = false,\n      onSelect,\n      className = '',\n      ...props\n    },\n    ref\n  ) => {\n    const handleClick = () => {\n      if (onSelect) {\n        onSelect(!selected);\n      }\n    };\n\n    const handleKeyDown = (event: KeyboardEvent<HTMLElement>) => {\n      if ((event.key === 'Enter' || event.key === ' ') && onSelect) {\n        event.preventDefault();\n        onSelect(!selected);\n      }\n    };\n\n    const isSelectable = !!onSelect;\n    const getQuestionsText = (count: number) => {\n      const singular = count === 1 ? 'questão' : 'questões';\n      return `${count} ${singular}`;\n    };\n\n    const displayInfo = questionsCount\n      ? getQuestionsText(questionsCount)\n      : additionalInfo || '';\n    const baseClasses =\n      'flex flex-row items-center p-4 gap-2 w-full max-w-full bg-background shadow-soft-shadow-1 rounded-xl isolate border-0 text-left';\n    const interactiveClasses = isSelectable\n      ? 'cursor-pointer focus:outline-none focus:ring-2 focus:ring-primary-950 focus:ring-offset-2'\n      : '';\n    const selectedClasses = selected\n      ? 'ring-2 ring-primary-950 ring-offset-2'\n      : '';\n\n    if (isSelectable) {\n      return (\n        <button\n          ref={ref as Ref<HTMLButtonElement>}\n          type=\"button\"\n          className={cn(\n            `${baseClasses} ${interactiveClasses} ${selectedClasses} ${className}`.trim()\n          )}\n          onClick={handleClick}\n          onKeyDown={handleKeyDown}\n          aria-pressed={selected}\n          {...(props as HTMLAttributes<HTMLButtonElement>)}\n        >\n          <div className=\"flex flex-col justify-between gap-[27px] flex-grow min-h-[67px] w-full min-w-0\">\n            <Text\n              size=\"md\"\n              weight=\"bold\"\n              className=\"text-text-950 tracking-[0.2px] leading-[19px] truncate\"\n            >\n              {title}\n            </Text>\n\n            <div className=\"flex flex-row justify-start items-end gap-4 w-full\">\n              {duration && (\n                <div className=\"flex flex-row items-center gap-1 flex-shrink-0\">\n                  <Clock size={16} className=\"text-text-700\" />\n                  <Text\n                    size=\"sm\"\n                    className=\"text-text-700 leading-[21px] whitespace-nowrap\"\n                  >\n                    {duration}\n                  </Text>\n                </div>\n              )}\n\n              <Text\n                size=\"sm\"\n                className=\"text-text-700 leading-[21px] flex-grow truncate\"\n              >\n                {displayInfo}\n              </Text>\n            </div>\n          </div>\n        </button>\n      );\n    }\n\n    return (\n      <div\n        ref={ref as Ref<HTMLDivElement>}\n        className={cn(`${baseClasses} ${className}`.trim())}\n        {...(props as HTMLAttributes<HTMLDivElement>)}\n      >\n        <div className=\"flex flex-col justify-between gap-[27px] flex-grow min-h-[67px] w-full min-w-0\">\n          <Text\n            size=\"md\"\n            weight=\"bold\"\n            className=\"text-text-950 tracking-[0.2px] leading-[19px] truncate\"\n          >\n            {title}\n          </Text>\n\n          <div className=\"flex flex-row justify-start items-end gap-4 w-full\">\n            {duration && (\n              <div className=\"flex flex-row items-center gap-1 flex-shrink-0\">\n                <Clock size={16} className=\"text-text-700\" />\n                <Text\n                  size=\"sm\"\n                  className=\"text-text-700 leading-[21px] whitespace-nowrap\"\n                >\n                  {duration}\n                </Text>\n              </div>\n            )}\n\n            <Text\n              size=\"sm\"\n              className=\"text-text-700 leading-[21px] flex-grow truncate min-w-0\"\n            >\n              {displayInfo}\n            </Text>\n          </div>\n        </div>\n      </div>\n    );\n  }\n);\n\ninterface SimulationItem {\n  id: string;\n  title: string;\n  type: 'enem' | 'prova' | 'simulado' | 'vestibular';\n  info: string;\n}\n\ninterface SimulationHistoryData {\n  date: string;\n  simulations: SimulationItem[];\n}\n\ninterface CardSimulationHistoryProps extends HTMLAttributes<HTMLDivElement> {\n  data: SimulationHistoryData[];\n  onSimulationClick?: (simulation: SimulationItem) => void;\n}\n\nconst SIMULATION_TYPE_STYLES = {\n  enem: {\n    background: 'bg-exam-1',\n    badge: 'exam1' as const,\n    text: 'Enem',\n  },\n  prova: {\n    background: 'bg-exam-2',\n    badge: 'exam2' as const,\n    text: 'Prova',\n  },\n  simulado: {\n    background: 'bg-exam-3',\n    badge: 'exam3' as const,\n    text: 'Simulado',\n  },\n  vestibular: {\n    background: 'bg-exam-4',\n    badge: 'exam4' as const,\n    text: 'Vestibular',\n  },\n};\n\nconst CardSimulationHistory = forwardRef<\n  HTMLDivElement,\n  CardSimulationHistoryProps\n>(({ data, onSimulationClick, className, ...props }, ref) => {\n  return (\n    <div\n      ref={ref}\n      className={cn('w-full max-w-[992px] h-auto', className)}\n      {...props}\n    >\n      {/* Content */}\n      <div className=\"flex flex-col gap-0\">\n        {data.map((section, sectionIndex) => (\n          <div key={section.date} className=\"flex flex-col\">\n            {/* Seção com data */}\n            <div\n              className={cn(\n                'flex flex-row justify-center items-start px-4 py-6 gap-2 w-full bg-white',\n                sectionIndex === 0 ? 'rounded-t-3xl' : ''\n              )}\n            >\n              <Text\n                size=\"xs\"\n                weight=\"bold\"\n                className=\"text-text-800 w-11 flex-shrink-0\"\n              >\n                {section.date}\n              </Text>\n\n              <div className=\"flex flex-col gap-2 flex-1\">\n                {section.simulations.map((simulation) => {\n                  const typeStyles = SIMULATION_TYPE_STYLES[simulation.type];\n\n                  return (\n                    <CardBase\n                      key={simulation.id}\n                      layout=\"horizontal\"\n                      padding=\"medium\"\n                      minHeight=\"none\"\n                      cursor=\"pointer\"\n                      className={cn(\n                        `${typeStyles.background} rounded-xl hover:shadow-soft-shadow-2 \n                          transition-shadow duration-200 h-auto min-h-[61px]`\n                      )}\n                      onClick={() => onSimulationClick?.(simulation)}\n                    >\n                      <div className=\"flex justify-between items-center w-full gap-2\">\n                        <div className=\"flex flex-col gap-2 flex-1 min-w-0\">\n                          <Text\n                            size=\"lg\"\n                            weight=\"bold\"\n                            className=\"text-text-950 truncate\"\n                          >\n                            {simulation.title}\n                          </Text>\n\n                          <div className=\"flex items-center gap-2\">\n                            <Badge\n                              variant=\"examsOutlined\"\n                              action={typeStyles.badge}\n                              size=\"medium\"\n                            >\n                              {typeStyles.text}\n                            </Badge>\n\n                            <Text size=\"sm\" className=\"text-text-800 truncate\">\n                              {simulation.info}\n                            </Text>\n                          </div>\n                        </div>\n\n                        <CaretRight\n                          size={24}\n                          className=\"text-text-800 flex-shrink-0\"\n                          data-testid=\"caret-icon\"\n                        />\n                      </div>\n                    </CardBase>\n                  );\n                })}\n              </div>\n            </div>\n          </div>\n        ))}\n\n        {/* Footer rounded */}\n        {data.length > 0 && (\n          <div className=\"w-full h-6 bg-white rounded-b-3xl\" />\n        )}\n      </div>\n    </div>\n  );\n});\n\nexport {\n  CardBase,\n  CardActivitiesResults,\n  CardQuestions,\n  CardProgress,\n  CardTopic,\n  CardPerformance,\n  CardResults,\n  CardStatus,\n  CardSettings,\n  CardSupport,\n  CardForum,\n  CardAudio,\n  CardSimulado,\n  CardTest,\n  CardSimulationHistory,\n};\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs));\n}\n","import { ButtonHTMLAttributes, ReactNode } from 'react';\nimport { cn } from '../../utils/utils';\n\n/**\n * Lookup table for variant and action class combinations\n */\nconst VARIANT_ACTION_CLASSES = {\n  solid: {\n    primary:\n      'bg-primary-950 text-text border border-primary-950 hover:bg-primary-800 hover:border-primary-800 focus-visible:outline-none focus-visible:bg-primary-950 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:bg-primary-700 active:border-primary-700 disabled:bg-primary-500 disabled:border-primary-500 disabled:opacity-40 disabled:cursor-not-allowed',\n    positive:\n      'bg-success-500 text-text border border-success-500 hover:bg-success-600 hover:border-success-600 focus-visible:outline-none focus-visible:bg-success-500 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:bg-success-700 active:border-success-700 disabled:bg-success-500 disabled:border-success-500 disabled:opacity-40 disabled:cursor-not-allowed',\n    negative:\n      'bg-error-500 text-text border border-error-500 hover:bg-error-600 hover:border-error-600 focus-visible:outline-none focus-visible:bg-error-500 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:bg-error-700 active:border-error-700 disabled:bg-error-500 disabled:border-error-500 disabled:opacity-40 disabled:cursor-not-allowed',\n  },\n  outline: {\n    primary:\n      'bg-transparent text-primary-950 border border-primary-950 hover:bg-background-50 hover:text-primary-400 hover:border-primary-400 focus-visible:border-0 focus-visible:outline-none focus-visible:text-primary-600 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:text-primary-700 active:border-primary-700 disabled:opacity-40 disabled:cursor-not-allowed',\n    positive:\n      'bg-transparent text-success-500 border border-success-300 hover:bg-background-50 hover:text-success-400 hover:border-success-400 focus-visible:border-0 focus-visible:outline-none focus-visible:text-success-600 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:text-success-700 active:border-success-700 disabled:opacity-40 disabled:cursor-not-allowed',\n    negative:\n      'bg-transparent text-error-500 border border-error-300 hover:bg-background-50 hover:text-error-400 hover:border-error-400 focus-visible:border-0 focus-visible:outline-none focus-visible:text-error-600 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:text-error-700 active:border-error-700 disabled:opacity-40 disabled:cursor-not-allowed',\n  },\n  link: {\n    primary:\n      'bg-transparent text-primary-950 hover:text-primary-400 focus-visible:outline-none focus-visible:text-primary-600 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:text-primary-700 disabled:opacity-40 disabled:cursor-not-allowed',\n    positive:\n      'bg-transparent text-success-500 hover:text-success-400 focus-visible:outline-none focus-visible:text-success-600 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:text-success-700 disabled:opacity-40 disabled:cursor-not-allowed',\n    negative:\n      'bg-transparent text-error-500 hover:text-error-400 focus-visible:outline-none focus-visible:text-error-600 focus-visible:ring-2 focus-visible:ring-offset-0 focus-visible:ring-indicator-info active:text-error-700 disabled:opacity-40 disabled:cursor-not-allowed',\n  },\n} as const;\n\n/**\n * Lookup table for size classes\n */\nconst SIZE_CLASSES = {\n  'extra-small': 'text-xs px-3.5 py-2',\n  small: 'text-sm px-4 py-2.5',\n  medium: 'text-md px-5 py-2.5',\n  large: 'text-lg px-6 py-3',\n  'extra-large': 'text-lg px-7 py-3.5',\n} as const;\n\n/**\n * Button component props interface\n */\ntype ButtonProps = {\n  /** Content to be displayed inside the button */\n  children: ReactNode;\n  /** Ícone à esquerda do texto */\n  iconLeft?: ReactNode;\n  /** Ícone à direita do texto */\n  iconRight?: ReactNode;\n  /** Size of the button */\n  size?: 'extra-small' | 'small' | 'medium' | 'large' | 'extra-large';\n  /** Visual variant of the button */\n  variant?: 'solid' | 'outline' | 'link';\n  /** Action type of the button */\n  action?: 'primary' | 'positive' | 'negative';\n  /** Additional CSS classes to apply */\n  className?: string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * Button component for Analytica Ensino platforms\n *\n * A flexible button component with multiple variants, sizes and actions.\n *\n * @param children - The content to display inside the button\n * @param size - The size variant (extra-small, small, medium, large, extra-large)\n * @param variant - The visual style variant (solid, outline, link)\n * @param action - The action type (primary, positive, negative)\n * @param className - Additional CSS classes\n * @param props - All other standard button HTML attributes\n * @returns A styled button element\n *\n * @example\n * ```tsx\n * <Button variant=\"solid\" action=\"primary\" size=\"medium\" onClick={() => console.log('clicked')}>\n *   Click me\n * </Button>\n * ```\n */\nconst Button = ({\n  children,\n  iconLeft,\n  iconRight,\n  size = 'medium',\n  variant = 'solid',\n  action = 'primary',\n  className = '',\n  disabled,\n  type = 'button',\n  ...props\n}: ButtonProps) => {\n  // Get classes from lookup tables\n  const sizeClasses = SIZE_CLASSES[size];\n  const variantClasses = VARIANT_ACTION_CLASSES[variant][action];\n\n  const baseClasses =\n    'inline-flex items-center justify-center rounded-full cursor-pointer font-medium';\n\n  return (\n    <button\n      className={cn(baseClasses, variantClasses, sizeClasses, className)}\n      disabled={disabled}\n      type={type}\n      {...props}\n    >\n      {iconLeft && <span className=\"mr-2 flex items-center\">{iconLeft}</span>}\n      {children}\n      {iconRight && <span className=\"ml-2 flex items-center\">{iconRight}</span>}\n    </button>\n  );\n};\n\nexport default Button;\n","import { HTMLAttributes, ReactNode } from 'react';\nimport { Bell } from 'phosphor-react';\nimport { cn } from '../../utils/utils';\n\n/**\n * Lookup table for variant and action class combinations\n */\nconst VARIANT_ACTION_CLASSES = {\n  solid: {\n    error: 'bg-error-background text-error-700 focus-visible:outline-none',\n    warning: 'bg-warning text-warning-800 focus-visible:outline-none',\n    success: 'bg-success text-success-800 focus-visible:outline-none',\n    info: 'bg-info text-info-800 focus-visible:outline-none',\n    muted: 'bg-background-muted text-background-800 focus-visible:outline-none',\n  },\n  outlined: {\n    error:\n      'bg-error text-error-700 border border-error-300 focus-visible:outline-none',\n    warning:\n      'bg-warning text-warning-800 border border-warning-300 focus-visible:outline-none',\n    success:\n      'bg-success text-success-800 border border-success-300 focus-visible:outline-none',\n    info: 'bg-info text-info-800 border border-info-300 focus-visible:outline-none',\n    muted:\n      'bg-background-muted text-background-800 border border-border-300 focus-visible:outline-none',\n  },\n  exams: {\n    exam1: 'bg-exam-1 text-info-700 focus-visible:outline-none',\n    exam2: 'bg-exam-2 text-typography-1 focus-visible:outline-none',\n    exam3: 'bg-exam-3 text-typography-2 focus-visible:outline-none',\n    exam4: 'bg-exam-4 text-success-700 focus-visible:outline-none',\n  },\n  examsOutlined: {\n    exam1:\n      'bg-exam-1 text-info-700 border border-info-700 focus-visible:outline-none',\n    exam2:\n      'bg-exam-2 text-typography-1 border border-typography-1 focus-visible:outline-none',\n    exam3:\n      'bg-exam-3 text-typography-2 border border-typography-2 focus-visible:outline-none',\n    exam4:\n      'bg-exam-4 text-success-700 border border-success-700 focus-visible:outline-none',\n  },\n  resultStatus: {\n    negative: 'bg-error text-error-800 focus-visible:outline-none',\n    positive: 'bg-success text-success-800 focus-visible:outline-none',\n  },\n  notification: 'text-primary',\n} as const;\n\n/**\n * Lookup table for size classes\n */\nconst SIZE_CLASSES = {\n  small: 'text-2xs px-2 py-1',\n  medium: 'text-xs px-2 py-1',\n  large: 'text-sm px-2 py-1',\n} as const;\n\nconst SIZE_CLASSES_ICON = {\n  small: 'size-3',\n  medium: 'size-3.5',\n  large: 'size-4',\n} as const;\n\n/**\n * Badge component props interface\n */\ntype BadgeProps = {\n  /** Content to be displayed inside the badge */\n  children?: ReactNode;\n  /** Ícone à direita do texto */\n  iconRight?: ReactNode;\n  /** Ícone à esquerda do texto */\n  iconLeft?: ReactNode;\n  /** Size of the badge */\n  size?: 'small' | 'medium' | 'large';\n  /** Visual variant of the badge */\n  variant?:\n    | 'solid'\n    | 'outlined'\n    | 'exams'\n    | 'examsOutlined'\n    | 'resultStatus'\n    | 'notification';\n  /** Action type of the badge  */\n  action?:\n    | 'error'\n    | 'warning'\n    | 'success'\n    | 'info'\n    | 'muted'\n    | 'exam1'\n    | 'exam2'\n    | 'exam3'\n    | 'exam4'\n    | 'positive'\n    | 'negative';\n  /** Additional CSS classes to apply */\n  className?: string;\n  notificationActive?: boolean;\n} & HTMLAttributes<HTMLDivElement>;\n\n/**\n * Badge component for Analytica Ensino platforms\n *\n * A flexible button component with multiple variants, sizes and actions.\n *\n * @param children - The content to display inside the badge\n * @param size - The size variant (extra-small, small, medium, large, extra-large)\n * @param variant - The visual style variant (solid, outline, link)\n * @param action - The action type (primary, positive, negative)\n * @param className - Additional CSS classes\n * @param props - All other standard div HTML attributes\n * @returns A styled badge element\n *\n * @example\n * ```tsx\n * <Badge variant=\"solid\" action=\"info\" size=\"medium\">\n *   Information\n * </Badge>\n * ```\n */\nconst Badge = ({\n  children,\n  iconLeft,\n  iconRight,\n  size = 'medium',\n  variant = 'solid',\n  action = 'error',\n  className = '',\n  notificationActive = false,\n  ...props\n}: BadgeProps) => {\n  // Get classes from lookup tables\n  const sizeClasses = SIZE_CLASSES[size];\n  const sizeClassesIcon = SIZE_CLASSES_ICON[size];\n  const variantActionMap = VARIANT_ACTION_CLASSES[variant] || {};\n  const variantClasses =\n    typeof variantActionMap === 'string'\n      ? variantActionMap\n      : ((variantActionMap as Record<string, string>)[action] ??\n        (variantActionMap as Record<string, string>).muted ??\n        '');\n\n  const baseClasses =\n    'inline-flex items-center justify-center rounded-xs font-normal gap-1 relative';\n\n  const baseClassesIcon = 'flex items-center';\n  if (variant === 'notification') {\n    return (\n      <div\n        className={cn(baseClasses, variantClasses, sizeClasses, className)}\n        {...props}\n      >\n        <Bell size={24} className=\"text-current\" aria-hidden=\"true\" />\n\n        {notificationActive && (\n          <span\n            data-testid=\"notification-dot\"\n            className=\"absolute top-[5px] right-[10px] block h-2 w-2 rounded-full bg-indicator-error ring-2 ring-white\"\n          />\n        )}\n      </div>\n    );\n  }\n  return (\n    <div\n      className={cn(baseClasses, variantClasses, sizeClasses, className)}\n      {...props}\n    >\n      {iconLeft && (\n        <span className={cn(baseClassesIcon, sizeClassesIcon)}>{iconLeft}</span>\n      )}\n      {children}\n      {iconRight && (\n        <span className={cn(baseClassesIcon, sizeClassesIcon)}>\n          {iconRight}\n        </span>\n      )}\n    </div>\n  );\n};\n\nexport default Badge;\n","import { ComponentPropsWithoutRef, ElementType, ReactNode } from 'react';\nimport { cn } from '../../utils/utils';\n\n/**\n * Base text component props\n */\ntype BaseTextProps = {\n  /** Content to be displayed */\n  children?: ReactNode;\n  /** Text size variant */\n  size?:\n    | '2xs'\n    | 'xs'\n    | 'sm'\n    | 'md'\n    | 'lg'\n    | 'xl'\n    | '2xl'\n    | '3xl'\n    | '4xl'\n    | '5xl'\n    | '6xl';\n  /** Font weight variant */\n  weight?:\n    | 'hairline'\n    | 'light'\n    | 'normal'\n    | 'medium'\n    | 'semibold'\n    | 'bold'\n    | 'extrabold'\n    | 'black';\n  /** Color variant - white for light backgrounds, black for dark backgrounds */\n  color?: string;\n  /** Additional CSS classes to apply */\n  className?: string;\n};\n\n/**\n * Polymorphic text component props that ensures type safety based on the 'as' prop\n */\ntype TextProps<T extends ElementType = 'p'> = BaseTextProps & {\n  /** HTML tag to render */\n  as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof BaseTextProps>;\n\n/**\n * Text component for Analytica Ensino platforms\n *\n * A flexible polymorphic text component with multiple sizes, weights, and colors.\n * Automatically adapts to dark and light themes with full type safety.\n *\n * @param children - The content to display\n * @param size - The text size variant (2xs, xs, sm, md, lg, xl, 2xl, 3xl, 4xl, 5xl, 6xl)\n * @param weight - The font weight variant (hairline, light, normal, medium, semibold, bold, extrabold, black)\n * @param color - The color variant - adapts to theme\n * @param as - The HTML tag to render - determines allowed attributes via TypeScript\n * @param className - Additional CSS classes\n * @param props - HTML attributes valid for the chosen tag only\n * @returns A styled text element with type-safe attributes\n *\n * @example\n * ```tsx\n * <Text size=\"lg\" weight=\"bold\" color=\"text-info-800\">\n *   This is a large, bold text\n * </Text>\n *\n * <Text as=\"a\" href=\"/link\" target=\"_blank\">\n *   Link with type-safe anchor attributes\n * </Text>\n *\n * <Text as=\"button\" onClick={handleClick} disabled>\n *   Button with type-safe button attributes\n * </Text>\n * ```\n */\nconst Text = <T extends ElementType = 'p'>({\n  children,\n  size = 'md',\n  weight = 'normal',\n  color = 'text-text-950',\n  as,\n  className = '',\n  ...props\n}: TextProps<T>) => {\n  let sizeClasses = '';\n  let weightClasses = '';\n\n  // Text size classes mapping\n  const sizeClassMap = {\n    '2xs': 'text-2xs',\n    xs: 'text-xs',\n    sm: 'text-sm',\n    md: 'text-md',\n    lg: 'text-lg',\n    xl: 'text-xl',\n    '2xl': 'text-2xl',\n    '3xl': 'text-3xl',\n    '4xl': 'text-4xl',\n    '5xl': 'text-5xl',\n    '6xl': 'text-6xl',\n  } as const;\n\n  sizeClasses = sizeClassMap[size] ?? sizeClassMap.md;\n\n  // Font weight classes mapping\n  const weightClassMap = {\n    hairline: 'font-hairline',\n    light: 'font-light',\n    normal: 'font-normal',\n    medium: 'font-medium',\n    semibold: 'font-semibold',\n    bold: 'font-bold',\n    extrabold: 'font-extrabold',\n    black: 'font-black',\n  } as const;\n\n  weightClasses = weightClassMap[weight] ?? weightClassMap.normal;\n\n  const baseClasses = 'font-primary';\n  const Component = as ?? ('p' as ElementType);\n\n  return (\n    <Component\n      className={cn(baseClasses, sizeClasses, weightClasses, color, className)}\n      {...props}\n    >\n      {children}\n    </Component>\n  );\n};\n\nexport default Text;\n","import { ReactNode } from 'react';\nimport Text from '../Text/Text';\nimport { cn } from '../../utils/utils';\n\n/**\n * Progress bar size variants\n */\ntype ProgressBarSize = 'small' | 'medium';\n\n/**\n * Progress bar color variants\n */\ntype ProgressBarVariant = 'blue' | 'green';\n\n/**\n * Progress bar layout variants\n */\ntype ProgressBarLayout = 'default' | 'stacked' | 'compact';\n\n/**\n * Size configurations using Tailwind classes\n */\nconst SIZE_CLASSES = {\n  small: {\n    container: 'h-1', // 4px height (h-1 = 4px in Tailwind)\n    bar: 'h-1', // 4px height for the fill bar\n    spacing: 'gap-2', // 8px gap between label and progress bar\n    layout: 'flex-col', // vertical layout for small\n    borderRadius: 'rounded-full', // 9999px border radius\n  },\n  medium: {\n    container: 'h-2', // 8px height (h-2 = 8px in Tailwind)\n    bar: 'h-2', // 8px height for the fill bar\n    spacing: 'gap-2', // 8px gap between progress bar and label\n    layout: 'flex-row items-center', // horizontal layout for medium\n    borderRadius: 'rounded-lg', // 8px border radius\n  },\n} as const;\n\n/**\n * Color configurations using design system colors\n */\nconst VARIANT_CLASSES = {\n  blue: {\n    background: 'bg-background-300', // Background track color (#D5D4D4)\n    fill: 'bg-primary-700', // Blue for activity progress (#2271C4)\n  },\n  green: {\n    background: 'bg-background-300', // Background track color (#D5D4D4)\n    fill: 'bg-success-200', // Green for performance (#84D3A2)\n  },\n} as const;\n\n/**\n * Type for size classes\n */\ntype SizeClassType = (typeof SIZE_CLASSES)[keyof typeof SIZE_CLASSES];\n\n/**\n * Type for variant classes\n */\ntype VariantClassType = (typeof VARIANT_CLASSES)[keyof typeof VARIANT_CLASSES];\n\n/**\n * Common props shared across all layout components\n */\ninterface BaseLayoutProps {\n  className: string;\n  label: ReactNode;\n  showPercentage: boolean;\n  showHitCount: boolean;\n  labelClassName: string;\n  percentageClassName: string;\n  clampedValue: number;\n  max: number;\n  percentage: number;\n  variantClasses: VariantClassType;\n}\n\n/**\n * Dimensions configuration for layouts\n */\ninterface LayoutDimensions {\n  width: string;\n  height: string;\n}\n\n/**\n * Props for StackedLayout component\n */\ninterface StackedLayoutProps extends BaseLayoutProps {\n  dimensions: LayoutDimensions;\n}\n\n/**\n * Props for CompactLayout component\n */\ninterface CompactLayoutProps extends BaseLayoutProps {\n  dimensions: LayoutDimensions;\n}\n\n/**\n * Props for DefaultLayout component\n */\ninterface DefaultLayoutProps {\n  className: string;\n  size: ProgressBarSize;\n  sizeClasses: SizeClassType;\n  variantClasses: VariantClassType;\n  label: ReactNode;\n  showPercentage: boolean;\n  labelClassName: string;\n  percentageClassName: string;\n  clampedValue: number;\n  max: number;\n  percentage: number;\n}\n\n/**\n * ProgressBar component props interface\n */\nexport type ProgressBarProps = {\n  /** Progress value between 0 and 100 */\n  value: number;\n  /** Maximum value (defaults to 100) */\n  max?: number;\n  /** Size variant of the progress bar */\n  size?: ProgressBarSize;\n  /** Color variant of the progress bar */\n  variant?: ProgressBarVariant;\n  /** Layout variant of the progress bar */\n  layout?: ProgressBarLayout;\n  /** Optional label to display */\n  label?: ReactNode;\n  /** Show percentage text */\n  showPercentage?: boolean;\n  /**\n   * Show hit count (e.g., \"28 de 30\") instead of percentage\n   *\n   * PRIORITY: When both showHitCount and showPercentage are true,\n   * showHitCount takes precedence (stacked and compact layouts only).\n   * Default layout does not support showHitCount.\n   */\n  showHitCount?: boolean;\n  /** Additional CSS classes */\n  className?: string;\n  /** Label CSS classes */\n  labelClassName?: string;\n  /** Percentage text CSS classes */\n  percentageClassName?: string;\n  /** Custom width for stacked layout (defaults to w-[380px]) */\n  stackedWidth?: string;\n  /** Custom height for stacked layout (defaults to h-[35px]) */\n  stackedHeight?: string;\n  /** Custom width for compact layout (defaults to w-[131px]) */\n  compactWidth?: string;\n  /** Custom height for compact layout (defaults to h-[24px]) */\n  compactHeight?: string;\n};\n\n/**\n * Helper function to calculate safe progress values\n */\nconst calculateProgressValues = (value: number, max: number) => {\n  const safeValue = isNaN(value) ? 0 : value;\n  const clampedValue = Math.max(0, Math.min(safeValue, max));\n  const percentage = max === 0 ? 0 : (clampedValue / max) * 100;\n\n  return { clampedValue, percentage };\n};\n\n/**\n * Helper function to determine if header content should be shown\n */\nconst shouldShowHeader = (\n  label: ReactNode,\n  showPercentage: boolean,\n  showHitCount: boolean\n): boolean => {\n  return !!(label || showPercentage || showHitCount);\n};\n\n/**\n * Centralized function to determine display priority and content\n *\n * PRIORITY ORDER (consistent across all layouts):\n * 1. showHitCount (highest priority) - displays \"X de Y\" format\n * 2. showPercentage - displays \"X%\" format\n * 3. label (lowest priority) - displays custom label\n *\n * @param showHitCount - Whether to show hit count format\n * @param showPercentage - Whether to show percentage format\n * @param label - Custom label to display\n * @param clampedValue - Current progress value\n * @param max - Maximum progress value\n * @param percentage - Calculated percentage value\n * @returns Object with content type and formatted content\n */\nconst getDisplayPriority = (\n  showHitCount: boolean,\n  showPercentage: boolean,\n  label: ReactNode,\n  clampedValue: number,\n  max: number,\n  percentage: number\n) => {\n  if (showHitCount) {\n    return {\n      type: 'hitCount' as const,\n      content: `${Math.round(clampedValue)} de ${max}`,\n      hasMetrics: true,\n    };\n  }\n\n  if (showPercentage) {\n    return {\n      type: 'percentage' as const,\n      content: `${Math.round(percentage)}%`,\n      hasMetrics: true,\n    };\n  }\n\n  return {\n    type: 'label' as const,\n    content: label,\n    hasMetrics: false,\n  };\n};\n\n/**\n * Parameters for compact layout configuration\n */\ninterface CompactLayoutConfigParams {\n  showPercentage: boolean;\n  showHitCount: boolean;\n  percentage: number;\n  clampedValue: number;\n  max: number;\n  label: ReactNode;\n  percentageClassName: string;\n  labelClassName: string;\n}\n\n/**\n * Helper function to get compact layout configuration\n *\n * PRIORITY ORDER (consistent across all layouts):\n * 1. showHitCount (highest priority) - displays \"X de Y\" format\n * 2. showPercentage - displays \"X%\" format\n * 3. label (lowest priority) - displays custom label\n *\n * When both showHitCount and showPercentage are true, showHitCount takes precedence.\n */\nconst getCompactLayoutConfig = ({\n  showPercentage,\n  showHitCount,\n  percentage,\n  clampedValue,\n  max,\n  label,\n  percentageClassName,\n  labelClassName,\n}: CompactLayoutConfigParams) => {\n  // Use centralized priority logic for consistency\n  const displayPriority = getDisplayPriority(\n    showHitCount,\n    showPercentage,\n    label,\n    clampedValue,\n    max,\n    percentage\n  );\n\n  return {\n    color: displayPriority.hasMetrics ? 'text-primary-600' : 'text-primary-700',\n    className: displayPriority.hasMetrics\n      ? percentageClassName\n      : labelClassName,\n    content: displayPriority.content,\n  };\n};\n\n/**\n * Helper function to get default layout display configuration\n *\n * PRIORITY ORDER for default layout (showHitCount is not supported):\n * 1. showPercentage (when enabled, takes precedence over label)\n * 2. label (shown only when showPercentage is false)\n *\n * Note: Default layout does not support showHitCount feature.\n */\nconst getDefaultLayoutDisplayConfig = (\n  size: ProgressBarSize,\n  label: ReactNode,\n  showPercentage: boolean\n) => ({\n  showHeader: size === 'small' && !!(label || showPercentage),\n  showPercentage: size === 'medium' && showPercentage,\n  showLabel: size === 'medium' && !!label && !showPercentage, // Only show label when percentage is not shown\n});\n\n/**\n * Helper function to render hit count or percentage display for stacked layout\n *\n * PRIORITY ORDER (consistent across all layouts):\n * 1. showHitCount (highest priority) - displays \"X de Y\" format\n * 2. showPercentage - displays \"X%\" format\n *\n * When both showHitCount and showPercentage are true, showHitCount takes precedence.\n */\nconst renderStackedHitCountDisplay = (\n  showHitCount: boolean,\n  showPercentage: boolean,\n  clampedValue: number,\n  max: number,\n  percentage: number,\n  percentageClassName: string\n): ReactNode => {\n  if (!showHitCount && !showPercentage) return null;\n\n  // Use centralized priority logic for consistency\n  const displayPriority = getDisplayPriority(\n    showHitCount,\n    showPercentage,\n    null, // label is not relevant for stacked layout metrics display\n    clampedValue,\n    max,\n    percentage\n  );\n\n  return (\n    <div\n      className={cn(\n        'text-xs font-medium leading-[14px] text-right',\n        percentageClassName\n      )}\n    >\n      {displayPriority.type === 'hitCount' ? (\n        <>\n          <span className=\"text-success-200\">{Math.round(clampedValue)}</span>\n          <span className=\"text-text-600\"> de {max}</span>\n        </>\n      ) : (\n        <Text size=\"xs\" weight=\"medium\" className=\"text-success-200\">\n          {Math.round(percentage)}%\n        </Text>\n      )}\n    </div>\n  );\n};\n\n/**\n * Base progress bar component with common rendering logic\n */\nconst ProgressBarBase = ({\n  clampedValue,\n  max,\n  percentage,\n  label,\n  variantClasses,\n  containerClassName,\n  fillClassName,\n}: {\n  clampedValue: number;\n  max: number;\n  percentage: number;\n  label: ReactNode;\n  variantClasses: VariantClassType;\n  containerClassName: string;\n  fillClassName: string;\n}) => (\n  <div\n    className={cn(\n      containerClassName,\n      variantClasses.background,\n      'overflow-hidden relative'\n    )}\n  >\n    <progress\n      value={clampedValue}\n      max={max}\n      aria-label={\n        typeof label === 'string'\n          ? `${label}: ${Math.round(percentage)}% complete`\n          : `Progress: ${Math.round(percentage)}% of ${max}`\n      }\n      className=\"absolute inset-0 w-full h-full opacity-0\"\n    />\n    <div\n      className={cn(\n        fillClassName,\n        variantClasses.fill,\n        'transition-all duration-300 ease-out'\n      )}\n      style={{ width: `${percentage}%` }}\n    />\n  </div>\n);\n\n/**\n * Stacked layout component\n */\nconst StackedLayout = ({\n  className,\n  label,\n  showPercentage,\n  showHitCount,\n  labelClassName,\n  percentageClassName,\n  clampedValue,\n  max,\n  percentage,\n  variantClasses,\n  dimensions,\n}: StackedLayoutProps) => (\n  <div\n    className={cn(\n      'flex flex-col items-start gap-2',\n      dimensions.width,\n      dimensions.height,\n      className\n    )}\n  >\n    {shouldShowHeader(label, showPercentage, showHitCount) && (\n      <div className=\"flex flex-row justify-between items-center w-full h-[19px]\">\n        {label && (\n          <Text\n            as=\"div\"\n            size=\"md\"\n            weight=\"medium\"\n            className={cn('text-text-600 leading-[19px]', labelClassName)}\n          >\n            {label}\n          </Text>\n        )}\n\n        {renderStackedHitCountDisplay(\n          showHitCount,\n          showPercentage,\n          clampedValue,\n          max,\n          percentage,\n          percentageClassName\n        )}\n      </div>\n    )}\n\n    <ProgressBarBase\n      clampedValue={clampedValue}\n      max={max}\n      percentage={percentage}\n      label={label}\n      variantClasses={variantClasses}\n      containerClassName=\"w-full h-2 rounded-lg\"\n      fillClassName=\"h-2 rounded-lg shadow-hard-shadow-3\"\n    />\n  </div>\n);\n\n/**\n * Compact layout component\n */\nconst CompactLayout = ({\n  className,\n  label,\n  showPercentage,\n  showHitCount,\n  labelClassName,\n  percentageClassName,\n  clampedValue,\n  max,\n  percentage,\n  variantClasses,\n  dimensions,\n}: CompactLayoutProps) => {\n  const {\n    color,\n    className: compactClassName,\n    content,\n  } = getCompactLayoutConfig({\n    showPercentage,\n    showHitCount,\n    percentage,\n    clampedValue,\n    max,\n    label,\n    percentageClassName,\n    labelClassName,\n  });\n\n  return (\n    <div\n      className={cn(\n        'flex flex-col items-start gap-1',\n        dimensions.width,\n        dimensions.height,\n        className\n      )}\n    >\n      {shouldShowHeader(label, showPercentage, showHitCount) && (\n        <Text\n          as=\"div\"\n          size=\"sm\"\n          weight=\"medium\"\n          color={color}\n          className={cn('leading-4 w-full', compactClassName)}\n        >\n          {content}\n        </Text>\n      )}\n\n      <ProgressBarBase\n        clampedValue={clampedValue}\n        max={max}\n        percentage={percentage}\n        label={label}\n        variantClasses={variantClasses}\n        containerClassName=\"w-full h-1 rounded-full\"\n        fillClassName=\"h-1 rounded-full\"\n      />\n    </div>\n  );\n};\n\n/**\n * Default layout component\n */\nconst DefaultLayout = ({\n  className,\n  size,\n  sizeClasses,\n  variantClasses,\n  label,\n  showPercentage,\n  labelClassName,\n  percentageClassName,\n  clampedValue,\n  max,\n  percentage,\n}: DefaultLayoutProps) => {\n  const gapClass = size === 'medium' ? 'gap-2' : sizeClasses.spacing;\n  const progressBarClass = size === 'medium' ? 'flex-grow' : 'w-full';\n  const displayConfig = getDefaultLayoutDisplayConfig(\n    size,\n    label,\n    showPercentage\n  );\n\n  return (\n    <div className={cn('flex', sizeClasses.layout, gapClass, className)}>\n      {displayConfig.showHeader && (\n        <div className=\"flex flex-row items-center justify-between w-full\">\n          {label && (\n            <Text\n              as=\"div\"\n              size=\"xs\"\n              weight=\"medium\"\n              className={cn(\n                'text-text-950 leading-none tracking-normal text-center',\n                labelClassName\n              )}\n            >\n              {label}\n            </Text>\n          )}\n\n          {showPercentage && (\n            <Text\n              size=\"xs\"\n              weight=\"medium\"\n              className={cn(\n                'text-text-950 leading-none tracking-normal text-center',\n                percentageClassName\n              )}\n            >\n              {Math.round(percentage)}%\n            </Text>\n          )}\n        </div>\n      )}\n\n      <ProgressBarBase\n        clampedValue={clampedValue}\n        max={max}\n        percentage={percentage}\n        label={label}\n        variantClasses={variantClasses}\n        containerClassName={cn(\n          progressBarClass,\n          sizeClasses.container,\n          sizeClasses.borderRadius\n        )}\n        fillClassName={cn(\n          sizeClasses.bar,\n          sizeClasses.borderRadius,\n          'shadow-hard-shadow-3'\n        )}\n      />\n\n      {displayConfig.showPercentage && (\n        <Text\n          size=\"xs\"\n          weight=\"medium\"\n          className={cn(\n            'text-text-950 leading-none tracking-normal text-center flex-none',\n            percentageClassName\n          )}\n        >\n          {Math.round(percentage)}%\n        </Text>\n      )}\n\n      {displayConfig.showLabel && (\n        <Text\n          as=\"div\"\n          size=\"xs\"\n          weight=\"medium\"\n          className={cn(\n            'text-text-950 leading-none tracking-normal text-center flex-none',\n            labelClassName\n          )}\n        >\n          {label}\n        </Text>\n      )}\n    </div>\n  );\n};\n\n/**\n * ProgressBar component for Analytica Ensino platforms\n *\n * A progress bar component with size and color variants designed for tracking\n * activity progress (blue) and performance metrics (green).\n * Uses the Analytica Ensino Design System colors from styles.css with automatic\n * light/dark mode support. Includes Text component integration for consistent typography.\n *\n * CONTENT DISPLAY PRIORITY (Consistent across all layouts):\n * 1. showHitCount (highest) - \"X de Y\" format (stacked/compact only)\n * 2. showPercentage - \"X%\" format\n * 3. label (lowest) - Custom label text\n *\n * When multiple display options are enabled, higher priority options take precedence.\n *\n * @example\n * ```tsx\n * // Basic progress bar\n * <ProgressBar value={65} />\n *\n * // Activity progress (blue)\n * <ProgressBar variant=\"blue\" value={45} label=\"Progress\" showPercentage />\n *\n * // Performance metrics (green)\n * <ProgressBar variant=\"green\" size=\"medium\" value={85} label=\"Performance\" />\n *\n * // Small size with custom max value\n * <ProgressBar size=\"small\" value={3} max={5} showPercentage />\n *\n * // Stacked layout with fixed width and hit count\n * <ProgressBar layout=\"stacked\" variant=\"green\" value={28} max={30} label=\"Fáceis\" showHitCount />\n *\n * // Compact layout for small cards\n * <ProgressBar layout=\"compact\" variant=\"blue\" value={70} label=\"Questão 08\" />\n * ```\n */\nconst ProgressBar = ({\n  value,\n  max = 100,\n  size = 'medium',\n  variant = 'blue',\n  layout = 'default',\n  label,\n  showPercentage = false,\n  showHitCount = false,\n  className = '',\n  labelClassName = '',\n  percentageClassName = '',\n  stackedWidth,\n  stackedHeight,\n  compactWidth,\n  compactHeight,\n}: ProgressBarProps) => {\n  const { clampedValue, percentage } = calculateProgressValues(value, max);\n  const sizeClasses = SIZE_CLASSES[size];\n  const variantClasses = VARIANT_CLASSES[variant];\n\n  if (layout === 'stacked') {\n    return (\n      <StackedLayout\n        className={className}\n        label={label}\n        showPercentage={showPercentage}\n        showHitCount={showHitCount}\n        labelClassName={labelClassName}\n        percentageClassName={percentageClassName}\n        clampedValue={clampedValue}\n        max={max}\n        percentage={percentage}\n        variantClasses={variantClasses}\n        dimensions={{\n          width: stackedWidth ?? 'w-[380px]',\n          height: stackedHeight ?? 'h-[35px]',\n        }}\n      />\n    );\n  }\n\n  if (layout === 'compact') {\n    return (\n      <CompactLayout\n        className={className}\n        label={label}\n        showPercentage={showPercentage}\n        showHitCount={showHitCount}\n        labelClassName={labelClassName}\n        percentageClassName={percentageClassName}\n        clampedValue={clampedValue}\n        max={max}\n        percentage={percentage}\n        variantClasses={variantClasses}\n        dimensions={{\n          width: compactWidth ?? 'w-[131px]',\n          height: compactHeight ?? 'h-[24px]',\n        }}\n      />\n    );\n  }\n\n  return (\n    <DefaultLayout\n      className={className}\n      size={size}\n      sizeClasses={sizeClasses}\n      variantClasses={variantClasses}\n      label={label}\n      showPercentage={showPercentage}\n      labelClassName={labelClassName}\n      percentageClassName={percentageClassName}\n      clampedValue={clampedValue}\n      max={max}\n      percentage={percentage}\n    />\n  );\n};\n\nexport default ProgressBar;\n"],"mappings":"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","names":["forwardRef","useState","Fragment","jsx","jsxs","VARIANT_ACTION_CLASSES","SIZE_CLASSES","jsx","jsx","jsxs","SIZE_CLASSES","Fragment","jsx","jsxs","CaretRight","jsx","jsxs","forwardRef","useState","CaretRight"]}