analytica-frontend-lib 1.5.21 → 1.5.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/ActivitiesHistory/index.js +7 -7
  2. package/dist/ActivitiesHistory/index.mjs +6 -6
  3. package/dist/ActivityCardQuestionBanks/index.js +7 -7
  4. package/dist/ActivityCardQuestionBanks/index.mjs +6 -6
  5. package/dist/ActivityCardQuestionPreview/index.js +7 -7
  6. package/dist/ActivityCardQuestionPreview/index.mjs +6 -6
  7. package/dist/ActivityCreate/index.js +7 -7
  8. package/dist/ActivityCreate/index.mjs +6 -6
  9. package/dist/ActivityDetails/index.js +7 -7
  10. package/dist/ActivityDetails/index.mjs +6 -6
  11. package/dist/ActivityFilters/index.js +7 -7
  12. package/dist/ActivityFilters/index.mjs +6 -6
  13. package/dist/ActivityPageLayout/index.js +7 -7
  14. package/dist/ActivityPageLayout/index.mjs +6 -6
  15. package/dist/ActivityPreview/index.js +7 -7
  16. package/dist/ActivityPreview/index.mjs +6 -6
  17. package/dist/AlertManager/index.js +7 -7
  18. package/dist/AlertManager/index.mjs +6 -6
  19. package/dist/CheckBoxGroup/index.js +7 -7
  20. package/dist/CheckBoxGroup/index.mjs +6 -6
  21. package/dist/ExamDetailsLayout/ExamDetailsPage/index.js +7 -7
  22. package/dist/ExamDetailsLayout/ExamDetailsPage/index.mjs +6 -6
  23. package/dist/ExamPageLayout/index.js +7 -7
  24. package/dist/ExamPageLayout/index.mjs +6 -6
  25. package/dist/PrintableUsersTable/index.js +7 -7
  26. package/dist/PrintableUsersTable/index.mjs +6 -6
  27. package/dist/RecommendedLessonCreate/index.js +7 -7
  28. package/dist/RecommendedLessonCreate/index.mjs +6 -6
  29. package/dist/RecommendedLessonsHistory/index.js +7 -7
  30. package/dist/RecommendedLessonsHistory/index.mjs +6 -6
  31. package/dist/SendActivityModal/SendActivityModal.js +7 -7
  32. package/dist/SendActivityModal/SendActivityModal.mjs +6 -6
  33. package/dist/SendActivityModal/index.js +7 -7
  34. package/dist/SendActivityModal/index.mjs +6 -6
  35. package/dist/SendLessonModal/index.js +7 -7
  36. package/dist/SendLessonModal/index.mjs +6 -6
  37. package/dist/SimulatedPerformance/SimulatedPerformanceView/index.js +7 -7
  38. package/dist/SimulatedPerformance/SimulatedPerformanceView/index.mjs +6 -6
  39. package/dist/SimulationsPage/index.js +7 -7
  40. package/dist/SimulationsPage/index.mjs +6 -6
  41. package/dist/TableProvider/index.d.ts.map +1 -1
  42. package/dist/TableProvider/index.js +7 -7
  43. package/dist/TableProvider/index.mjs +6 -6
  44. package/dist/TimeReport/index.d.ts +6 -0
  45. package/dist/TimeReport/index.d.ts.map +1 -1
  46. package/dist/TimeReport/index.js +2 -2
  47. package/dist/TimeReport/index.mjs +1 -1
  48. package/dist/TypeSelector/TypeSelector.types/index.js +3 -3
  49. package/dist/TypeSelector/TypeSelector.types/index.mjs +2 -2
  50. package/dist/TypeSelector/index.js +4 -4
  51. package/dist/TypeSelector/index.mjs +3 -3
  52. package/dist/UnifiedDraftModelPage/index.js +7 -7
  53. package/dist/UnifiedDraftModelPage/index.mjs +6 -6
  54. package/dist/UnifiedHistoryPage/index.js +7 -7
  55. package/dist/UnifiedHistoryPage/index.mjs +6 -6
  56. package/dist/{chunk-CTRJ2BZP.mjs → chunk-3SHJQQCA.mjs} +2 -2
  57. package/dist/{chunk-ZSLJ6ZRR.mjs → chunk-BMJTQFRE.mjs} +59 -11
  58. package/dist/chunk-BMJTQFRE.mjs.map +1 -0
  59. package/dist/{chunk-ZHMW7GGL.js → chunk-CG7GWF5E.js} +60 -12
  60. package/dist/chunk-CG7GWF5E.js.map +1 -0
  61. package/dist/{chunk-CJ7XFBTY.mjs → chunk-DJG7DLCI.mjs} +1 -1
  62. package/dist/chunk-DJG7DLCI.mjs.map +1 -0
  63. package/dist/{chunk-ACKFNDCN.js → chunk-E4AWPRUB.js} +11 -2
  64. package/dist/chunk-E4AWPRUB.js.map +1 -0
  65. package/dist/{chunk-64NVMQCE.js → chunk-HLCT4MJA.js} +3 -3
  66. package/dist/{chunk-64NVMQCE.js.map → chunk-HLCT4MJA.js.map} +1 -1
  67. package/dist/{chunk-RDQN3TL4.js → chunk-KYHVFLN4.js} +3 -3
  68. package/dist/{chunk-RDQN3TL4.js.map → chunk-KYHVFLN4.js.map} +1 -1
  69. package/dist/{chunk-FF664NEZ.mjs → chunk-N26JL24O.mjs} +2 -2
  70. package/dist/{chunk-WUMJ2OIE.mjs → chunk-NTEW5ZW4.mjs} +23 -6
  71. package/dist/chunk-NTEW5ZW4.mjs.map +1 -0
  72. package/dist/{chunk-5H627GRH.mjs → chunk-QD6QSDVH.mjs} +11 -2
  73. package/dist/chunk-QD6QSDVH.mjs.map +1 -0
  74. package/dist/{chunk-CQ6FNWAU.js → chunk-TTSTAOIZ.js} +1 -1
  75. package/dist/chunk-TTSTAOIZ.js.map +1 -0
  76. package/dist/{chunk-4TROUHWW.js → chunk-YFNVFELP.js} +192 -175
  77. package/dist/chunk-YFNVFELP.js.map +1 -0
  78. package/dist/hooks/useActivitiesHistory/index.d.ts +12 -0
  79. package/dist/hooks/useActivitiesHistory/index.d.ts.map +1 -1
  80. package/dist/hooks/useActivitiesHistory/index.js +4 -2
  81. package/dist/hooks/useActivitiesHistory/index.js.map +1 -1
  82. package/dist/hooks/useActivitiesHistory/index.mjs +3 -1
  83. package/dist/hooks/useActivitiesHistory.d.ts +12 -0
  84. package/dist/hooks/useActivitiesHistory.d.ts.map +1 -1
  85. package/dist/hooks/useActivityDrafts/index.js +1 -1
  86. package/dist/hooks/useActivityDrafts/index.mjs +1 -1
  87. package/dist/hooks/useActivityModels/index.js +1 -1
  88. package/dist/hooks/useActivityModels/index.mjs +1 -1
  89. package/dist/hooks/useAppContent/index.js +7 -7
  90. package/dist/hooks/useAppContent/index.mjs +6 -6
  91. package/dist/index.js +7 -7
  92. package/dist/index.mjs +6 -6
  93. package/dist/types/activitiesHistory/index.d.ts +8 -3
  94. package/dist/types/activitiesHistory/index.d.ts.map +1 -1
  95. package/dist/types/activitiesHistory/index.js +2 -2
  96. package/dist/types/activitiesHistory/index.mjs +1 -1
  97. package/dist/types/activitiesHistory.d.ts +8 -3
  98. package/dist/types/activitiesHistory.d.ts.map +1 -1
  99. package/package.json +1 -1
  100. package/dist/chunk-4TROUHWW.js.map +0 -1
  101. package/dist/chunk-5H627GRH.mjs.map +0 -1
  102. package/dist/chunk-ACKFNDCN.js.map +0 -1
  103. package/dist/chunk-CJ7XFBTY.mjs.map +0 -1
  104. package/dist/chunk-CQ6FNWAU.js.map +0 -1
  105. package/dist/chunk-WUMJ2OIE.mjs.map +0 -1
  106. package/dist/chunk-ZHMW7GGL.js.map +0 -1
  107. package/dist/chunk-ZSLJ6ZRR.mjs.map +0 -1
  108. /package/dist/{chunk-CTRJ2BZP.mjs.map → chunk-3SHJQQCA.mjs.map} +0 -0
  109. /package/dist/{chunk-FF664NEZ.mjs.map → chunk-N26JL24O.mjs.map} +0 -0
@@ -41,7 +41,7 @@ var TREND_CONFIG = {
41
41
  }
42
42
  };
43
43
  var TimeCard = ({ data, className, ...props }) => {
44
- const { label, value, icon, trendValue, trendDirection } = data;
44
+ const { label, value, icon, trendValue, trendDirection, subtitle } = data;
45
45
  return /* @__PURE__ */ jsxs(
46
46
  "div",
47
47
  {
@@ -72,6 +72,15 @@ var TimeCard = ({ data, className, ...props }) => {
72
72
  children: value
73
73
  }
74
74
  ),
75
+ subtitle && /* @__PURE__ */ jsx(
76
+ Text_default,
77
+ {
78
+ size: "sm",
79
+ className: "text-text-600 leading-[100%]",
80
+ "data-testid": `subtitle-${data.id}`,
81
+ children: subtitle
82
+ }
83
+ ),
75
84
  trendValue && trendDirection && /* @__PURE__ */ jsxs(
76
85
  "div",
77
86
  {
@@ -132,4 +141,4 @@ export {
132
141
  TimeReport,
133
142
  TimeReport_default
134
143
  };
135
- //# sourceMappingURL=chunk-5H627GRH.mjs.map
144
+ //# sourceMappingURL=chunk-QD6QSDVH.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/TimeReport/TimeReport.tsx"],"sourcesContent":["import { type HTMLAttributes, type ReactNode } from 'react';\nimport { TrendUpIcon } from '@phosphor-icons/react/dist/csr/TrendUp';\nimport { TrendDownIcon } from '@phosphor-icons/react/dist/csr/TrendDown';\nimport dayjs from 'dayjs';\nimport duration from 'dayjs/plugin/duration';\nimport Text from '../Text/Text';\nimport { cn } from '../../utils/utils';\nimport { PROFILE_ROLES } from '../../types/chat';\nimport type { StudentsHighlightPeriod } from '../../hooks/useStudentsHighlight';\nimport { ReportLayout } from '../shared/ReportLayout';\n\ndayjs.extend(duration);\n\n/**\n * API types - reusing existing enums/types from the project\n */\nexport { PROFILE_ROLES } from '../../types/chat';\nexport type { StudentsHighlightPeriod as TimeReportPeriod } from '../../hooks/useStudentsHighlight';\n\nexport interface TimeReportRequest {\n period: StudentsHighlightPeriod;\n profile?: PROFILE_ROLES;\n school_group_ids?: string[];\n school_ids?: string[];\n all_school_groups?: boolean;\n}\n\nexport interface TimeMetric {\n hours: number;\n variation_percent: number | null;\n}\n\nexport interface CountMetric {\n count: number;\n variation_percent: number | null;\n}\n\nexport interface TimeReportData {\n total_platform_time: TimeMetric;\n activity_time: TimeMetric;\n exam_simulation_time?: TimeMetric;\n content_time?: TimeMetric;\n questionnaire_time?: TimeMetric;\n recommended_classes_time: TimeMetric;\n total_access_count?: CountMetric;\n}\n\nexport interface TimeReportResponse {\n message: string;\n data: TimeReportData;\n}\n\n/**\n * Format decimal hours to \"Xh Ymin\" display string\n */\nexport const formatHoursToTime = (hours: number): string => {\n const d = dayjs.duration(hours, 'hours');\n const h = Math.floor(d.asHours());\n const min = d.minutes();\n return `${h}h ${min}min`;\n};\n\n/**\n * Get trend direction from variation percentage\n */\nexport const getTrendDirection = (\n variationPercent: number | null\n): TimeCardTrend | undefined => {\n if (variationPercent === null) return undefined;\n return variationPercent >= 0 ? 'up' : 'down';\n};\n\n/**\n * Format variation percentage to display string (e.g., \"+12.3%\", \"-5.2%\")\n */\nexport const formatVariation = (\n variationPercent: number | null\n): string | undefined => {\n if (variationPercent === null) return undefined;\n const sign = variationPercent >= 0 ? '+' : '';\n return `${sign}${variationPercent}%`;\n};\n\n/**\n * Trend direction for time card indicators\n */\nexport type TimeCardTrend = 'up' | 'down';\n\n/**\n * Data for a single time card\n */\nexport interface TimeCardData {\n /** Unique identifier */\n id: string;\n /** Uppercase label (e.g., \"TEMPO NA PLATAFORMA\") */\n label: string;\n /** Formatted time value (e.g., \"12h 20min\") */\n value: string;\n /** Icon element for the card */\n icon: ReactNode;\n /** Trend percentage string (e.g., \"+10%\", \"-5%\") */\n trendValue?: string;\n /** Trend direction - determines color */\n trendDirection?: TimeCardTrend;\n /**\n * Plain gray line under the value (e.g., \"1 município • 134 escolas\"), for\n * cards whose context is a breakdown rather than a trend. Rendered alongside\n * the trend when both are present.\n */\n subtitle?: string;\n}\n\n/**\n * Tab configuration for the TimeReport component\n */\nexport interface TimeReportTab {\n /** Unique value identifying this tab */\n value: string;\n /** Display label */\n label: string;\n /** Icon element for the tab header */\n icon?: ReactNode;\n /** Cards to display when this tab is active */\n cards: TimeCardData[];\n}\n\n/**\n * Props for the TimeCard component\n */\nexport interface TimeCardProps extends HTMLAttributes<HTMLDivElement> {\n /** Card data */\n data: TimeCardData;\n}\n\n/**\n * Props for the TimeReport component\n */\nexport interface TimeReportProps extends HTMLAttributes<HTMLDivElement> {\n /** Tab configurations with associated card data */\n tabs: TimeReportTab[];\n /** Default active tab value */\n defaultTab?: string;\n /** Controlled active tab value */\n activeTab?: string;\n /** Callback when active tab changes */\n onTabChange?: (value: string) => void;\n}\n\n/**\n * Trend styling configuration\n */\nconst TREND_CONFIG = {\n up: {\n colorClass: 'text-success-500',\n Icon: TrendUpIcon,\n },\n down: {\n colorClass: 'text-error-500',\n Icon: TrendDownIcon,\n },\n} as const;\n\n/**\n * TimeCard component - displays a single time statistic\n */\nexport const TimeCard = ({ data, className, ...props }: TimeCardProps) => {\n const { label, value, icon, trendValue, trendDirection, subtitle } = data;\n\n return (\n <div\n className={cn(\n 'flex flex-col gap-3 p-5 bg-background border border-border-50 rounded-xl',\n className\n )}\n data-testid={`time-card-${data.id}`}\n {...props}\n >\n {/* Icon + Label */}\n <div className=\"flex flex-row items-center gap-2\">\n <span className=\"text-text-600 [&>svg]:w-4 [&>svg]:h-4\">{icon}</span>\n <Text\n weight=\"bold\"\n className=\"text-text-600 uppercase text-[8px] leading-[100%]\"\n >\n {label}\n </Text>\n </div>\n\n {/* Time value */}\n <Text\n size=\"2xl\"\n weight=\"bold\"\n className=\"text-primary-800 leading-[100%] tracking-[0.2px]\"\n >\n {value}\n </Text>\n\n {/* Context line (e.g., \"1 município • 134 escolas\") */}\n {subtitle && (\n <Text\n size=\"sm\"\n className=\"text-text-600 leading-[100%]\"\n data-testid={`subtitle-${data.id}`}\n >\n {subtitle}\n </Text>\n )}\n\n {/* Trend indicator */}\n {trendValue && trendDirection && (\n <div\n className={cn(\n 'flex flex-row items-center gap-1',\n TREND_CONFIG[trendDirection].colorClass\n )}\n data-testid={`trend-${data.id}`}\n >\n {(() => {\n const TrendIcon = TREND_CONFIG[trendDirection].Icon;\n return <TrendIcon size={16} weight=\"bold\" />;\n })()}\n <Text\n size=\"xs\"\n weight=\"bold\"\n color=\"inherit\"\n className=\"leading-[100%] uppercase\"\n >\n {trendValue}\n </Text>\n </div>\n )}\n </div>\n );\n};\n\n/**\n * TimeReport component\n *\n * Displays time statistics organized in tabs, each with configurable cards.\n * Used in the manager report page to show platform access time metrics.\n *\n * @example\n * ```tsx\n * <TimeReport\n * tabs={[\n * {\n * value: 'student',\n * label: 'Estudante',\n * icon: <Student size={17} />,\n * cards: [\n * { id: 'platform', label: 'TEMPO NA PLATAFORMA', value: '12h 20min', icon: <Monitor />, trendValue: '+10%', trendDirection: 'up' },\n * ],\n * },\n * ]}\n * onTabChange={(tab) => console.log(tab)}\n * />\n * ```\n */\nexport const TimeReport = ({\n tabs,\n defaultTab,\n activeTab,\n onTabChange,\n className,\n ...props\n}: TimeReportProps) => (\n <ReportLayout\n tabs={tabs}\n defaultTab={defaultTab}\n activeTab={activeTab}\n onTabChange={onTabChange}\n renderCard={(card) => <TimeCard key={card.id} data={card} />}\n gridTestId=\"time-report-cards\"\n className={className}\n {...props}\n />\n);\n\nexport default TimeReport;\n"],"mappings":";;;;;;;;;;;AACA,SAAS,mBAAmB;AAC5B,SAAS,qBAAqB;AAC9B,OAAO,WAAW;AAClB,OAAO,cAAc;AA8Kf,SACE,KADF;AAvKN,MAAM,OAAO,QAAQ;AA4Cd,IAAM,oBAAoB,CAAC,UAA0B;AAC1D,QAAM,IAAI,MAAM,SAAS,OAAO,OAAO;AACvC,QAAM,IAAI,KAAK,MAAM,EAAE,QAAQ,CAAC;AAChC,QAAM,MAAM,EAAE,QAAQ;AACtB,SAAO,GAAG,CAAC,KAAK,GAAG;AACrB;AAKO,IAAM,oBAAoB,CAC/B,qBAC8B;AAC9B,MAAI,qBAAqB,KAAM,QAAO;AACtC,SAAO,oBAAoB,IAAI,OAAO;AACxC;AAKO,IAAM,kBAAkB,CAC7B,qBACuB;AACvB,MAAI,qBAAqB,KAAM,QAAO;AACtC,QAAM,OAAO,oBAAoB,IAAI,MAAM;AAC3C,SAAO,GAAG,IAAI,GAAG,gBAAgB;AACnC;AAsEA,IAAM,eAAe;AAAA,EACnB,IAAI;AAAA,IACF,YAAY;AAAA,IACZ,MAAM;AAAA,EACR;AAAA,EACA,MAAM;AAAA,IACJ,YAAY;AAAA,IACZ,MAAM;AAAA,EACR;AACF;AAKO,IAAM,WAAW,CAAC,EAAE,MAAM,WAAW,GAAG,MAAM,MAAqB;AACxE,QAAM,EAAE,OAAO,OAAO,MAAM,YAAY,gBAAgB,SAAS,IAAI;AAErE,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACA,eAAa,aAAa,KAAK,EAAE;AAAA,MAChC,GAAG;AAAA,MAGJ;AAAA,6BAAC,SAAI,WAAU,oCACb;AAAA,8BAAC,UAAK,WAAU,yCAAyC,gBAAK;AAAA,UAC9D;AAAA,YAAC;AAAA;AAAA,cACC,QAAO;AAAA,cACP,WAAU;AAAA,cAET;AAAA;AAAA,UACH;AAAA,WACF;AAAA,QAGA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,QAAO;AAAA,YACP,WAAU;AAAA,YAET;AAAA;AAAA,QACH;AAAA,QAGC,YACC;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,eAAa,YAAY,KAAK,EAAE;AAAA,YAE/B;AAAA;AAAA,QACH;AAAA,QAID,cAAc,kBACb;AAAA,UAAC;AAAA;AAAA,YACC,WAAW;AAAA,cACT;AAAA,cACA,aAAa,cAAc,EAAE;AAAA,YAC/B;AAAA,YACA,eAAa,SAAS,KAAK,EAAE;AAAA,YAE3B;AAAA,qBAAM;AACN,sBAAM,YAAY,aAAa,cAAc,EAAE;AAC/C,uBAAO,oBAAC,aAAU,MAAM,IAAI,QAAO,QAAO;AAAA,cAC5C,GAAG;AAAA,cACH;AAAA,gBAAC;AAAA;AAAA,kBACC,MAAK;AAAA,kBACL,QAAO;AAAA,kBACP,OAAM;AAAA,kBACN,WAAU;AAAA,kBAET;AAAA;AAAA,cACH;AAAA;AAAA;AAAA,QACF;AAAA;AAAA;AAAA,EAEJ;AAEJ;AAyBO,IAAM,aAAa,CAAC;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MACE;AAAA,EAAC;AAAA;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY,CAAC,SAAS,oBAAC,YAAuB,MAAM,QAAf,KAAK,EAAgB;AAAA,IAC1D,YAAW;AAAA,IACX;AAAA,IACC,GAAG;AAAA;AACN;AAGF,IAAO,qBAAQ;","names":[]}
@@ -23,4 +23,4 @@ var mapActivityStatusToDisplay = (apiStatus) => _chunkB27BOQ2Ejs.mapApiStatusToD
23
23
 
24
24
 
25
25
  exports.ActivityDraftType = ActivityDraftType; exports.getActivityStatusBadgeAction = getActivityStatusBadgeAction; exports.ACTIVITY_FILTER_STATUS_OPTIONS = ACTIVITY_FILTER_STATUS_OPTIONS; exports.mapActivityStatusToDisplay = mapActivityStatusToDisplay;
26
- //# sourceMappingURL=chunk-CQ6FNWAU.js.map
26
+ //# sourceMappingURL=chunk-TTSTAOIZ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-TTSTAOIZ.js","../src/types/activitiesHistory.ts"],"names":["ActivityDraftType"],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B;AACA;AC+BO,IAAK,kBAAA,kBAAL,CAAA,CAAKA,kBAAAA,EAAAA,GAAL;AACL,EAAAA,kBAAAA,CAAA,QAAA,EAAA,EAAS,QAAA;AACT,EAAAA,kBAAAA,CAAA,UAAA,EAAA,EAAW,UAAA;AAFD,EAAA,OAAAA,kBAAAA;AAAA,CAAA,CAAA,CAAA,kBAAA,GAAA,CAAA,CAAA,CAAA;AAwNL,IAAM,6BAAA,EAA+B,CAC1C,MAAA,EAAA,GACoB,mDAAA,MAA2B,CAAA;AAK1C,IAAM,+BAAA,EAAyD;AAAA,EACpE,EAAE,EAAA,EAAA,yBAAA,EAA+B,IAAA,EAAM,WAAW,CAAA;AAAA,EAClD,EAAE,EAAA,EAAA,uBAAA,EAA8B,IAAA,EAAM,UAAU,CAAA;AAAA,EAChD,EAAE,EAAA,EAAA,2BAAA,EAAgC,IAAA,EAAM,eAAY;AACtD,CAAA;AAOO,IAAM,2BAAA,EAA6B,CACxC,SAAA,EAAA,GACyB,oDAAA,SAA+B,CAAA;AD9P1D;AACA;AACE;AACA;AACA;AACA;AACF,6PAAC","file":"/home/runner/work/analytica-frontend-lib/analytica-frontend-lib/dist/chunk-TTSTAOIZ.js","sourcesContent":[null,"/**\n * Activities History Type Definitions\n * Types and interfaces for activities history and models functionality\n * Based on /activities/history and /activity-drafts endpoints\n */\n\nimport { ActivityType } from '../components/ActivityCreate/ActivityCreate.types';\nimport {\n GenericApiStatus,\n GenericDisplayStatus,\n BadgeActionType,\n getStatusBadgeAction,\n mapApiStatusToDisplay,\n} from './common';\n\n/**\n * Activity status from backend API /activities/history\n * Re-exported from common for backward compatibility\n */\nexport { GenericApiStatus as ActivityApiStatus } from './common';\n\n/**\n * Activity status for display in UI (Badge component)\n * Re-exported from common for backward compatibility\n */\nexport { GenericDisplayStatus as ActivityDisplayStatus } from './common';\n\n/**\n * Badge action types for activity status visualization\n * Re-exported from common for backward compatibility\n */\nexport { BadgeActionType as ActivityBadgeActionType } from './common';\n\n/**\n * Activity draft type enum (matches backend ACTIVITY_DRAFT_TYPE)\n */\nexport enum ActivityDraftType {\n MODELO = 'MODELO',\n RASCUNHO = 'RASCUNHO',\n}\n\n/**\n * Generic entity reference with id and name\n */\ntype EntityRef = { id: string; name: string };\n\n/**\n * Subject object from backend API response\n */\nexport interface ActivitySubject extends EntityRef {\n areaKnowledgeId: string;\n}\n\n/**\n * Breakdown item per school/class for an activity response\n */\nexport interface ActivityBreakdownItem {\n school?: EntityRef | null;\n schoolYear?: EntityRef | null;\n class?: EntityRef | null;\n totalStudents: number;\n answeredStudents: number;\n completionPercentage: number;\n}\n\n/**\n * Activity history response from backend API /activities/history\n */\nexport interface ActivityHistoryResponse {\n id: string;\n title: string;\n startDate: string | null;\n finalDate: string | null;\n status: GenericApiStatus;\n completionPercentage: number;\n subject: ActivitySubject | null;\n creator: EntityRef | null;\n totalStudents?: number;\n answeredStudents?: number;\n breakdown?: ActivityBreakdownItem[];\n}\n\n/**\n * Activity table item interface for activities list table\n */\nexport interface ActivityTableItem extends Record<string, unknown> {\n id: string;\n startDate: string | null;\n deadline: string | null;\n creator: string;\n /** Creator user id, used to gate owner-only actions (e.g. delete) */\n creatorId?: string | null;\n title: string;\n school: string;\n year: string;\n subject: string;\n class: string;\n status: GenericDisplayStatus;\n completionPercentage: number;\n}\n\n/**\n * Pagination info from API\n */\nexport interface ActivityPagination {\n total: number;\n page: number;\n limit: number;\n totalPages: number;\n}\n\n/**\n * Activities history API complete response\n */\nexport interface ActivitiesHistoryApiResponse {\n message: string;\n data: {\n activities: ActivityHistoryResponse[];\n pagination: ActivityPagination;\n };\n}\n\n/**\n * Activity history filters for API query parameters\n */\nexport interface ActivityHistoryFilters {\n page?: number;\n limit?: number;\n type?:\n | 'ATIVIDADE'\n | 'PROVA'\n | 'SIMULADO'\n | 'QUESTIONARIO'\n | 'AULA_RECOMENDADA';\n search?: string;\n sortBy?: 'finalDate' | 'title' | 'completionPercentage';\n sortOrder?: 'asc' | 'desc';\n\n // Raw TableProvider filter keys (arrays of selected ids/values).\n // Remapped to the backend contract by buildActivityHistoryQueryParams.\n status?: string[] | GenericApiStatus;\n subject?: string[];\n school?: string[];\n class?: string[];\n schoolYear?: string[];\n creatorType?: string[];\n\n // Legacy single-value fields, consumed by buildActivityHistoryQueryParams\n // as fallbacks when the raw multi-select keys above are absent.\n startDate?: string;\n finalDate?: string;\n subjectId?: string;\n schoolId?: string;\n classId?: string;\n}\n\n/**\n * Activity draft filters object from backend\n */\nexport interface ActivityDraftFilters {\n questionTypes?: string[];\n questionBanks?: string[];\n subjects?: string[];\n topics?: string[];\n subtopics?: string[];\n contents?: string[];\n}\n\n/**\n * Subject object with icon and color information\n */\nexport interface SubjectData {\n id: string;\n name: string;\n icon: string;\n color: string;\n}\n\n/**\n * Activity model response from backend API (/activity-drafts)\n */\nexport interface ActivityModelResponse {\n id: string;\n type: ActivityDraftType;\n title: string | null;\n creatorUserInstitutionId: string | null;\n subjectId: string | null;\n subject?: SubjectData | null;\n filters: ActivityDraftFilters | null;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Activity model table item for display\n */\nexport interface ActivityModelTableItem extends Record<string, unknown> {\n id: string;\n type: ActivityType;\n title: string;\n savedAt: string;\n subject: SubjectData | null;\n subjectId: string | null;\n}\n\n/**\n * Activity models API response\n */\nexport interface ActivityModelsApiResponse {\n message: string;\n data: {\n activityDrafts: ActivityModelResponse[];\n total: number;\n };\n}\n\n/**\n * Activity model filters for API query\n */\nexport interface ActivityModelFilters {\n page?: number;\n limit?: number;\n search?: string;\n subjectId?: string;\n type?: ActivityDraftType;\n}\n\n/**\n * Filter option for dropdowns\n * Extends with index signature to be compatible with CheckBoxGroup Item type\n */\nexport interface ActivityFilterOption {\n id: string;\n name: string;\n [key: string]: unknown;\n}\n\n/**\n * User data for filter options (schools, classes, subjects)\n */\nexport interface ActivityUserFilterData {\n schools?: Array<{ id: string; name: string }>;\n classes?: Array<{ id: string; name: string; schoolId?: string }>;\n subjects?: Array<{ id: string; name: string }>;\n schoolYears?: Array<{ id: string; name: string }>;\n}\n\n/**\n * Get status badge action based on activity display status\n * @param status - Activity display status\n * @returns Badge action type for styling\n */\nexport const getActivityStatusBadgeAction = (\n status: GenericDisplayStatus\n): BadgeActionType => getStatusBadgeAction(status);\n\n/**\n * Activity status options for filter\n */\nexport const ACTIVITY_FILTER_STATUS_OPTIONS: ActivityFilterOption[] = [\n { id: GenericApiStatus.A_VENCER, name: 'A Vencer' },\n { id: GenericApiStatus.VENCIDA, name: 'Vencida' },\n { id: GenericApiStatus.CONCLUIDA, name: 'Concluída' },\n];\n\n/**\n * Map API status to display status\n * @param apiStatus - Status from backend API\n * @returns Formatted status for UI display\n */\nexport const mapActivityStatusToDisplay = (\n apiStatus: GenericApiStatus\n): GenericDisplayStatus => mapApiStatusToDisplay(apiStatus);\n"]}