analytica-frontend-lib 1.0.44 → 1.0.46

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.
package/dist/index.mjs CHANGED
@@ -2041,9 +2041,313 @@ var ProgressCircle = ({
2041
2041
  };
2042
2042
  var ProgressCircle_default = ProgressCircle;
2043
2043
 
2044
- // src/components/Calendar/Calendar.tsx
2045
- import { useState as useState5, useMemo as useMemo2, useEffect, useRef } from "react";
2044
+ // src/components/Stepper/Stepper.tsx
2045
+ import { Check as Check3 } from "phosphor-react";
2046
2046
  import { jsx as jsx20, jsxs as jsxs15 } from "react/jsx-runtime";
2047
+ var SIZE_CLASSES9 = {
2048
+ small: {
2049
+ container: "gap-2",
2050
+ // 8px gap as specified in CSS
2051
+ stepWidth: "w-[58px]",
2052
+ // exact 58px from CSS
2053
+ stepHeight: "h-[38px]",
2054
+ // exact 38px from CSS
2055
+ indicator: "w-5 h-5",
2056
+ // 20px as specified
2057
+ progressBar: "h-0.5",
2058
+ // 2px as specified
2059
+ indicatorTextSize: "2xs",
2060
+ // 10px as specified
2061
+ labelTextSize: "xs",
2062
+ // 12px as specified
2063
+ iconSize: "w-3 h-3"
2064
+ // 12px
2065
+ },
2066
+ medium: {
2067
+ container: "gap-3",
2068
+ // 12px (8px + 4px progression)
2069
+ stepWidth: "w-[110px]",
2070
+ // 110px (increased from 90px to fit "Endereço Residencial")
2071
+ stepHeight: "h-[48px]",
2072
+ // 48px (increased from 46px for better proportion)
2073
+ indicator: "w-6 h-6",
2074
+ // 24px (20px + 4px progression)
2075
+ progressBar: "h-0.5",
2076
+ // 2px maintained for consistency
2077
+ indicatorTextSize: "2xs",
2078
+ // 10px maintained for readability
2079
+ labelTextSize: "xs",
2080
+ // 12px maintained
2081
+ iconSize: "w-3.5 h-3.5"
2082
+ // 14px
2083
+ },
2084
+ large: {
2085
+ container: "gap-4",
2086
+ // 16px (12px + 4px progression)
2087
+ stepWidth: "w-[160px]",
2088
+ // 160px (increased from 140px to fit "Endereço Residencial")
2089
+ stepHeight: "h-[58px]",
2090
+ // 58px (increased from 54px for better proportion)
2091
+ indicator: "w-7 h-7",
2092
+ // 28px (24px + 4px progression)
2093
+ progressBar: "h-1",
2094
+ // 4px (increased for better visibility)
2095
+ indicatorTextSize: "xs",
2096
+ // 12px (increased for larger size)
2097
+ labelTextSize: "sm",
2098
+ // 14px (increased for larger size)
2099
+ iconSize: "w-4 h-4"
2100
+ // 16px
2101
+ },
2102
+ extraLarge: {
2103
+ container: "gap-5",
2104
+ // 20px (16px + 4px progression)
2105
+ stepWidth: "w-[200px]",
2106
+ // 200px (increased from 180px to ensure "Endereço Residencial" fits)
2107
+ stepHeight: "h-[68px]",
2108
+ // 68px (increased from 62px for better proportion)
2109
+ indicator: "w-8 h-8",
2110
+ // 32px (28px + 4px progression)
2111
+ progressBar: "h-1",
2112
+ // 4px maintained
2113
+ indicatorTextSize: "xs",
2114
+ // 12px maintained for readability
2115
+ labelTextSize: "sm",
2116
+ // 14px maintained
2117
+ iconSize: "w-[18px] h-[18px]"
2118
+ // 18px
2119
+ }
2120
+ };
2121
+ var STATE_CLASSES6 = {
2122
+ pending: {
2123
+ progressBar: "bg-text-400",
2124
+ // #A3A3A3
2125
+ indicator: "bg-text-400",
2126
+ // #A3A3A3
2127
+ indicatorText: "text-white",
2128
+ // Branco para contraste com background cinza
2129
+ label: "text-text-400"
2130
+ // #A3A3A3
2131
+ },
2132
+ current: {
2133
+ progressBar: "bg-primary-800",
2134
+ // #1C61B2 usando classe Tailwind padrão
2135
+ indicator: "bg-primary-800",
2136
+ // #1C61B2 usando classe Tailwind padrão
2137
+ indicatorText: "text-white",
2138
+ // Branco usando classe Tailwind padrão
2139
+ label: "text-primary-800"
2140
+ // #1C61B2 usando classe Tailwind padrão
2141
+ },
2142
+ completed: {
2143
+ progressBar: "bg-primary-400",
2144
+ // #48A0E8 para barra quando checked (completed)
2145
+ indicator: "bg-primary-400",
2146
+ // #48A0E8 para corresponder à barra de progresso
2147
+ indicatorText: "text-white",
2148
+ // Branco usando classe Tailwind padrão
2149
+ label: "text-primary-400"
2150
+ // #48A0E8 para corresponder à barra de progresso
2151
+ }
2152
+ };
2153
+ var Step = ({
2154
+ step,
2155
+ index,
2156
+ size: _size,
2157
+ sizeClasses,
2158
+ stateClasses,
2159
+ isLast: _isLast,
2160
+ className = ""
2161
+ }) => {
2162
+ const stepNumber = index + 1;
2163
+ const isCompleted = step.state === "completed";
2164
+ const getAriaLabel = () => {
2165
+ let suffix = "";
2166
+ if (step.state === "completed") {
2167
+ suffix = " (conclu\xEDdo)";
2168
+ } else if (step.state === "current") {
2169
+ suffix = " (atual)";
2170
+ }
2171
+ return `${step.label}${suffix}`;
2172
+ };
2173
+ return /* @__PURE__ */ jsxs15(
2174
+ "div",
2175
+ {
2176
+ className: `
2177
+ flex flex-col justify-center items-center pb-2 gap-2
2178
+ ${sizeClasses.stepWidth} ${sizeClasses.stepHeight}
2179
+ flex-none flex-grow
2180
+ ${className}
2181
+ sm:max-w-[100px] md:max-w-[120px] lg:max-w-none xl:max-w-none
2182
+ sm:min-h-[40px] md:min-h-[45px] lg:min-h-none
2183
+ overflow-visible
2184
+ `,
2185
+ children: [
2186
+ /* @__PURE__ */ jsx20(
2187
+ "div",
2188
+ {
2189
+ className: `
2190
+ w-full ${sizeClasses.progressBar} ${stateClasses.progressBar}
2191
+ rounded-sm flex-none
2192
+ `
2193
+ }
2194
+ ),
2195
+ /* @__PURE__ */ jsxs15(
2196
+ "div",
2197
+ {
2198
+ className: `
2199
+ flex flex-col sm:flex-row items-center
2200
+ gap-1 sm:gap-2 w-full sm:w-auto
2201
+ h-auto sm:h-5 flex-none
2202
+ overflow-visible
2203
+ `,
2204
+ children: [
2205
+ /* @__PURE__ */ jsx20(
2206
+ "div",
2207
+ {
2208
+ className: `
2209
+ ${sizeClasses.indicator} ${stateClasses.indicator}
2210
+ rounded-full flex items-center justify-center relative
2211
+ flex-none transition-all duration-300 ease-out
2212
+ w-4 h-4 sm:w-5 sm:h-5 md:w-5 md:h-5 lg:w-6 lg:h-6
2213
+ `,
2214
+ "aria-label": getAriaLabel(),
2215
+ children: isCompleted ? /* @__PURE__ */ jsx20(
2216
+ Check3,
2217
+ {
2218
+ weight: "bold",
2219
+ className: `
2220
+ ${stateClasses.indicatorText}
2221
+ w-2.5 h-2.5 sm:w-3 sm:h-3 md:w-3 md:h-3 lg:w-3.5 lg:h-3.5
2222
+ `
2223
+ }
2224
+ ) : /* @__PURE__ */ jsx20(
2225
+ Text_default,
2226
+ {
2227
+ size: sizeClasses.indicatorTextSize,
2228
+ weight: "medium",
2229
+ color: "",
2230
+ className: `${stateClasses.indicatorText} leading-none text-2xs sm:text-xs`,
2231
+ children: stepNumber
2232
+ }
2233
+ )
2234
+ }
2235
+ ),
2236
+ /* @__PURE__ */ jsx20(
2237
+ Text_default,
2238
+ {
2239
+ size: sizeClasses.labelTextSize,
2240
+ weight: "medium",
2241
+ color: "",
2242
+ className: `
2243
+ ${stateClasses.label} leading-tight flex-none
2244
+ text-center sm:text-left break-words
2245
+ px-1 sm:px-0 max-w-full
2246
+ text-2xs sm:text-xs md:text-xs lg:text-sm
2247
+ whitespace-normal
2248
+ `,
2249
+ children: step.label
2250
+ }
2251
+ )
2252
+ ]
2253
+ }
2254
+ )
2255
+ ]
2256
+ }
2257
+ );
2258
+ };
2259
+ var calculateStepStates = (steps, currentStep) => {
2260
+ return steps.map((step, index) => {
2261
+ let stepState;
2262
+ if (index < currentStep) {
2263
+ stepState = "completed";
2264
+ } else if (index === currentStep) {
2265
+ stepState = "current";
2266
+ } else {
2267
+ stepState = "pending";
2268
+ }
2269
+ return {
2270
+ ...step,
2271
+ state: stepState
2272
+ };
2273
+ });
2274
+ };
2275
+ var getProgressText = (currentStep, totalSteps, customText) => {
2276
+ if (customText) return customText;
2277
+ return `Etapa ${currentStep + 1} de ${totalSteps}`;
2278
+ };
2279
+ var Stepper = ({
2280
+ steps: initialSteps,
2281
+ size = "medium",
2282
+ currentStep,
2283
+ className = "",
2284
+ stepClassName = "",
2285
+ showProgress = false,
2286
+ progressText,
2287
+ responsive = true
2288
+ }) => {
2289
+ const sizeClasses = SIZE_CLASSES9[size];
2290
+ const steps = currentStep !== void 0 ? calculateStepStates(initialSteps, currentStep) : initialSteps;
2291
+ return /* @__PURE__ */ jsxs15(
2292
+ "fieldset",
2293
+ {
2294
+ className: `flex flex-col gap-4 sm:gap-5 md:gap-6 ${className} border-0 p-0 m-0`,
2295
+ children: [
2296
+ /* @__PURE__ */ jsx20("legend", { className: "absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0", children: "Stepper de formul\xE1rio" }),
2297
+ showProgress && currentStep !== void 0 && /* @__PURE__ */ jsx20(
2298
+ Text_default,
2299
+ {
2300
+ size: "sm",
2301
+ weight: "medium",
2302
+ className: "text-text-600 text-center sm:text-left text-xs sm:text-sm",
2303
+ children: getProgressText(currentStep, steps.length, progressText)
2304
+ }
2305
+ ),
2306
+ /* @__PURE__ */ jsx20(
2307
+ "div",
2308
+ {
2309
+ className: `
2310
+ flex items-center
2311
+ ${sizeClasses.container}
2312
+ ${responsive ? "flex-row overflow-x-auto overflow-y-hidden scrollbar-hide justify-start sm:justify-center md:justify-center lg:justify-center" : "flex-row justify-center"}
2313
+ px-2 sm:px-4 md:px-6 lg:px-0
2314
+ max-w-full min-w-0
2315
+ gap-2 sm:gap-3 md:gap-4 lg:gap-4
2316
+ `,
2317
+ role: "tablist",
2318
+ "aria-label": "Progress steps",
2319
+ children: steps.map((step, index) => {
2320
+ const stateClasses = STATE_CLASSES6[step.state];
2321
+ return /* @__PURE__ */ jsx20(
2322
+ Step,
2323
+ {
2324
+ step,
2325
+ index,
2326
+ size,
2327
+ sizeClasses,
2328
+ stateClasses,
2329
+ isLast: index === steps.length - 1,
2330
+ className: stepClassName
2331
+ },
2332
+ step.id
2333
+ );
2334
+ })
2335
+ }
2336
+ )
2337
+ ]
2338
+ }
2339
+ );
2340
+ };
2341
+ var Stepper_default = Stepper;
2342
+
2343
+ // src/components/Calendar/Calendar.tsx
2344
+ import {
2345
+ useState as useState5,
2346
+ useMemo as useMemo2,
2347
+ useEffect,
2348
+ useRef
2349
+ } from "react";
2350
+ import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
2047
2351
  var WEEK_DAYS = ["SEG", "TER", "QUA", "QUI", "SEX", "S\xC1B", "DOM"];
2048
2352
  var WEEK_DAYS_SHORT = ["S", "T", "Q", "Q", "S", "S", "D"];
2049
2353
  var MONTH_NAMES = [
@@ -2066,15 +2370,15 @@ var MonthYearPicker = ({
2066
2370
  currentDate,
2067
2371
  onYearChange,
2068
2372
  onMonthChange
2069
- }) => /* @__PURE__ */ jsxs15(
2373
+ }) => /* @__PURE__ */ jsxs16(
2070
2374
  "div",
2071
2375
  {
2072
2376
  ref: monthPickerRef,
2073
2377
  className: "absolute top-full left-0 z-50 mt-1 bg-white rounded-lg shadow-lg border border-border-200 p-4 min-w-[280px]",
2074
2378
  children: [
2075
- /* @__PURE__ */ jsxs15("div", { className: "mb-4", children: [
2076
- /* @__PURE__ */ jsx20("h3", { className: "text-sm font-medium text-text-700 mb-2", children: "Selecionar Ano" }),
2077
- /* @__PURE__ */ jsx20("div", { className: "grid grid-cols-4 gap-1 max-h-32 overflow-y-auto", children: availableYears.map((year) => /* @__PURE__ */ jsx20(
2379
+ /* @__PURE__ */ jsxs16("div", { className: "mb-4", children: [
2380
+ /* @__PURE__ */ jsx21("h3", { className: "text-sm font-medium text-text-700 mb-2", children: "Selecionar Ano" }),
2381
+ /* @__PURE__ */ jsx21("div", { className: "grid grid-cols-4 gap-1 max-h-32 overflow-y-auto", children: availableYears.map((year) => /* @__PURE__ */ jsx21(
2078
2382
  "button",
2079
2383
  {
2080
2384
  onClick: () => onYearChange(year),
@@ -2087,9 +2391,9 @@ var MonthYearPicker = ({
2087
2391
  year
2088
2392
  )) })
2089
2393
  ] }),
2090
- /* @__PURE__ */ jsxs15("div", { children: [
2091
- /* @__PURE__ */ jsx20("h3", { className: "text-sm font-medium text-text-700 mb-2", children: "Selecionar M\xEAs" }),
2092
- /* @__PURE__ */ jsx20("div", { className: "grid grid-cols-3 gap-1", children: MONTH_NAMES.map((month, index) => /* @__PURE__ */ jsx20(
2394
+ /* @__PURE__ */ jsxs16("div", { children: [
2395
+ /* @__PURE__ */ jsx21("h3", { className: "text-sm font-medium text-text-700 mb-2", children: "Selecionar M\xEAs" }),
2396
+ /* @__PURE__ */ jsx21("div", { className: "grid grid-cols-3 gap-1", children: MONTH_NAMES.map((month, index) => /* @__PURE__ */ jsx21(
2093
2397
  "button",
2094
2398
  {
2095
2399
  onClick: () => onMonthChange(index, currentDate.getFullYear()),
@@ -2112,7 +2416,7 @@ var getDayStyles = (day, variant, showActivities) => {
2112
2416
  dayStyle = "bg-primary-800";
2113
2417
  textStyle = "text-white";
2114
2418
  } else if (day.isToday) {
2115
- textStyle = "text-[#1c61b2]";
2419
+ textStyle = "text-primary-800";
2116
2420
  } else if (variant === "navigation" && showActivities && day.activities?.length) {
2117
2421
  const primaryActivity = day.activities[0];
2118
2422
  if (primaryActivity.status === "near-deadline") {
@@ -2221,28 +2525,28 @@ var Calendar = ({
2221
2525
  onDateSelect?.(day.date);
2222
2526
  };
2223
2527
  if (variant === "navigation") {
2224
- return /* @__PURE__ */ jsxs15("div", { className: `bg-background rounded-xl p-3 ${className}`, children: [
2225
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between mb-4 px-6", children: [
2226
- /* @__PURE__ */ jsxs15("div", { className: "relative", ref: monthPickerContainerRef, children: [
2227
- /* @__PURE__ */ jsxs15(
2528
+ return /* @__PURE__ */ jsxs16("div", { className: `bg-background rounded-xl p-3 ${className}`, children: [
2529
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between mb-4 px-6", children: [
2530
+ /* @__PURE__ */ jsxs16("div", { className: "relative", ref: monthPickerContainerRef, children: [
2531
+ /* @__PURE__ */ jsxs16(
2228
2532
  "button",
2229
2533
  {
2230
2534
  onClick: toggleMonthPicker,
2231
2535
  className: "flex items-center gap-1 hover:bg-background-100 rounded px-2 py-1 transition-colors",
2232
2536
  children: [
2233
- /* @__PURE__ */ jsxs15("span", { className: "text-sm font-medium text-text-600", children: [
2537
+ /* @__PURE__ */ jsxs16("span", { className: "text-sm font-medium text-text-600", children: [
2234
2538
  MONTH_NAMES[currentDate.getMonth()],
2235
2539
  " ",
2236
2540
  currentDate.getFullYear()
2237
2541
  ] }),
2238
- /* @__PURE__ */ jsx20(
2542
+ /* @__PURE__ */ jsx21(
2239
2543
  "svg",
2240
2544
  {
2241
2545
  className: `w-4 h-4 text-primary-950 transition-transform ${isMonthPickerOpen ? "rotate-180" : ""}`,
2242
2546
  fill: "none",
2243
2547
  stroke: "currentColor",
2244
2548
  viewBox: "0 0 24 24",
2245
- children: /* @__PURE__ */ jsx20(
2549
+ children: /* @__PURE__ */ jsx21(
2246
2550
  "path",
2247
2551
  {
2248
2552
  strokeLinecap: "round",
@@ -2256,7 +2560,7 @@ var Calendar = ({
2256
2560
  ]
2257
2561
  }
2258
2562
  ),
2259
- isMonthPickerOpen && /* @__PURE__ */ jsx20(
2563
+ isMonthPickerOpen && /* @__PURE__ */ jsx21(
2260
2564
  MonthYearPicker,
2261
2565
  {
2262
2566
  monthPickerRef,
@@ -2267,21 +2571,21 @@ var Calendar = ({
2267
2571
  }
2268
2572
  )
2269
2573
  ] }),
2270
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-10", children: [
2271
- /* @__PURE__ */ jsx20(
2574
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-10", children: [
2575
+ /* @__PURE__ */ jsx21(
2272
2576
  "button",
2273
2577
  {
2274
2578
  onClick: goToPreviousMonth,
2275
2579
  className: "p-1 rounded hover:bg-background-100 transition-colors",
2276
2580
  "aria-label": "M\xEAs anterior",
2277
- children: /* @__PURE__ */ jsx20(
2581
+ children: /* @__PURE__ */ jsx21(
2278
2582
  "svg",
2279
2583
  {
2280
2584
  className: "w-6 h-6 text-primary-950",
2281
2585
  fill: "none",
2282
2586
  stroke: "currentColor",
2283
2587
  viewBox: "0 0 24 24",
2284
- children: /* @__PURE__ */ jsx20(
2588
+ children: /* @__PURE__ */ jsx21(
2285
2589
  "path",
2286
2590
  {
2287
2591
  strokeLinecap: "round",
@@ -2294,20 +2598,20 @@ var Calendar = ({
2294
2598
  )
2295
2599
  }
2296
2600
  ),
2297
- /* @__PURE__ */ jsx20(
2601
+ /* @__PURE__ */ jsx21(
2298
2602
  "button",
2299
2603
  {
2300
2604
  onClick: goToNextMonth,
2301
2605
  className: "p-1 rounded hover:bg-background-100 transition-colors",
2302
2606
  "aria-label": "Pr\xF3ximo m\xEAs",
2303
- children: /* @__PURE__ */ jsx20(
2607
+ children: /* @__PURE__ */ jsx21(
2304
2608
  "svg",
2305
2609
  {
2306
2610
  className: "w-6 h-6 text-primary-950",
2307
2611
  fill: "none",
2308
2612
  stroke: "currentColor",
2309
2613
  viewBox: "0 0 24 24",
2310
- children: /* @__PURE__ */ jsx20(
2614
+ children: /* @__PURE__ */ jsx21(
2311
2615
  "path",
2312
2616
  {
2313
2617
  strokeLinecap: "round",
@@ -2322,7 +2626,7 @@ var Calendar = ({
2322
2626
  )
2323
2627
  ] })
2324
2628
  ] }),
2325
- /* @__PURE__ */ jsx20("div", { className: "grid grid-cols-7 gap-1 mb-2", children: WEEK_DAYS_SHORT.map((day, index) => /* @__PURE__ */ jsx20(
2629
+ /* @__PURE__ */ jsx21("div", { className: "grid grid-cols-7 gap-1 mb-2", children: WEEK_DAYS_SHORT.map((day, index) => /* @__PURE__ */ jsx21(
2326
2630
  "div",
2327
2631
  {
2328
2632
  className: "h-9 flex items-center justify-center text-xs font-normal text-text-600",
@@ -2330,13 +2634,13 @@ var Calendar = ({
2330
2634
  },
2331
2635
  `${day}-${index}`
2332
2636
  )) }),
2333
- /* @__PURE__ */ jsx20("div", { className: "grid grid-cols-7 gap-1", children: calendarData.map((day) => {
2637
+ /* @__PURE__ */ jsx21("div", { className: "grid grid-cols-7 gap-1", children: calendarData.map((day) => {
2334
2638
  if (!day.isCurrentMonth) {
2335
- return /* @__PURE__ */ jsx20(
2639
+ return /* @__PURE__ */ jsx21(
2336
2640
  "div",
2337
2641
  {
2338
2642
  className: "flex items-center justify-center",
2339
- children: /* @__PURE__ */ jsx20("div", { className: "w-9 h-9" })
2643
+ children: /* @__PURE__ */ jsx21("div", { className: "w-9 h-9" })
2340
2644
  },
2341
2645
  day.date.getTime()
2342
2646
  );
@@ -2348,31 +2652,31 @@ var Calendar = ({
2348
2652
  );
2349
2653
  let spanClass = "";
2350
2654
  if (day.isSelected && day.isToday) {
2351
- spanClass = "h-6 w-6 rounded-full bg-[#1c61b2] text-text";
2655
+ spanClass = "h-6 w-6 rounded-full bg-primary-800 text-text";
2352
2656
  } else if (day.isSelected) {
2353
2657
  spanClass = "h-6 w-6 rounded-full bg-primary-950 text-text";
2354
2658
  }
2355
- return /* @__PURE__ */ jsx20(
2659
+ return /* @__PURE__ */ jsx21(
2356
2660
  "div",
2357
2661
  {
2358
2662
  className: "flex items-center justify-center",
2359
- children: /* @__PURE__ */ jsx20(
2663
+ children: /* @__PURE__ */ jsx21(
2360
2664
  "button",
2361
2665
  {
2362
2666
  className: `
2363
- w-9 h-9
2364
- flex items-center justify-center
2365
- text-md font-normal
2366
- cursor-pointer
2667
+ w-9 h-9
2668
+ flex items-center justify-center
2669
+ text-md font-normal
2670
+ cursor-pointer
2367
2671
  rounded-full
2368
- ${dayStyle}
2672
+ ${dayStyle}
2369
2673
  ${textStyle}
2370
2674
  `,
2371
2675
  onClick: () => handleDateSelect(day),
2372
2676
  "aria-label": `${day.date.getDate()} de ${MONTH_NAMES[day.date.getMonth()]}`,
2373
2677
  "aria-current": day.isToday ? "date" : void 0,
2374
2678
  tabIndex: 0,
2375
- children: /* @__PURE__ */ jsx20("span", { className: spanClass, children: day.date.getDate() })
2679
+ children: /* @__PURE__ */ jsx21("span", { className: spanClass, children: day.date.getDate() })
2376
2680
  }
2377
2681
  )
2378
2682
  },
@@ -2381,28 +2685,28 @@ var Calendar = ({
2381
2685
  }) })
2382
2686
  ] });
2383
2687
  }
2384
- return /* @__PURE__ */ jsxs15("div", { className: `bg-background rounded-xl p-4 ${className}`, children: [
2385
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center justify-between mb-3.5", children: [
2386
- /* @__PURE__ */ jsxs15("div", { className: "relative", ref: monthPickerContainerRef, children: [
2387
- /* @__PURE__ */ jsxs15(
2688
+ return /* @__PURE__ */ jsxs16("div", { className: `bg-background rounded-xl p-4 ${className}`, children: [
2689
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center justify-between mb-3.5", children: [
2690
+ /* @__PURE__ */ jsxs16("div", { className: "relative", ref: monthPickerContainerRef, children: [
2691
+ /* @__PURE__ */ jsxs16(
2388
2692
  "button",
2389
2693
  {
2390
2694
  onClick: toggleMonthPicker,
2391
2695
  className: "flex items-center gap-2 hover:bg-background-100 rounded px-2 py-1 transition-colors",
2392
2696
  children: [
2393
- /* @__PURE__ */ jsxs15("h2", { className: "text-lg font-semibold text-text-950", children: [
2697
+ /* @__PURE__ */ jsxs16("h2", { className: "text-lg font-semibold text-text-950", children: [
2394
2698
  MONTH_NAMES[currentDate.getMonth()],
2395
2699
  " ",
2396
2700
  currentDate.getFullYear()
2397
2701
  ] }),
2398
- /* @__PURE__ */ jsx20(
2702
+ /* @__PURE__ */ jsx21(
2399
2703
  "svg",
2400
2704
  {
2401
2705
  className: `w-4 h-4 text-text-400 transition-transform ${isMonthPickerOpen ? "rotate-180" : ""}`,
2402
2706
  fill: "none",
2403
2707
  stroke: "currentColor",
2404
2708
  viewBox: "0 0 24 24",
2405
- children: /* @__PURE__ */ jsx20(
2709
+ children: /* @__PURE__ */ jsx21(
2406
2710
  "path",
2407
2711
  {
2408
2712
  strokeLinecap: "round",
@@ -2416,7 +2720,7 @@ var Calendar = ({
2416
2720
  ]
2417
2721
  }
2418
2722
  ),
2419
- isMonthPickerOpen && /* @__PURE__ */ jsx20(
2723
+ isMonthPickerOpen && /* @__PURE__ */ jsx21(
2420
2724
  MonthYearPicker,
2421
2725
  {
2422
2726
  monthPickerRef,
@@ -2427,21 +2731,21 @@ var Calendar = ({
2427
2731
  }
2428
2732
  )
2429
2733
  ] }),
2430
- /* @__PURE__ */ jsxs15("div", { className: "flex items-center gap-1", children: [
2431
- /* @__PURE__ */ jsx20(
2734
+ /* @__PURE__ */ jsxs16("div", { className: "flex items-center gap-1", children: [
2735
+ /* @__PURE__ */ jsx21(
2432
2736
  "button",
2433
2737
  {
2434
2738
  onClick: goToPreviousMonth,
2435
2739
  className: "p-1 rounded-md hover:bg-background-100 transition-colors",
2436
2740
  "aria-label": "M\xEAs anterior",
2437
- children: /* @__PURE__ */ jsx20(
2741
+ children: /* @__PURE__ */ jsx21(
2438
2742
  "svg",
2439
2743
  {
2440
2744
  className: "w-6 h-6 text-primary-950",
2441
2745
  fill: "none",
2442
2746
  stroke: "currentColor",
2443
2747
  viewBox: "0 0 24 24",
2444
- children: /* @__PURE__ */ jsx20(
2748
+ children: /* @__PURE__ */ jsx21(
2445
2749
  "path",
2446
2750
  {
2447
2751
  strokeLinecap: "round",
@@ -2454,20 +2758,20 @@ var Calendar = ({
2454
2758
  )
2455
2759
  }
2456
2760
  ),
2457
- /* @__PURE__ */ jsx20(
2761
+ /* @__PURE__ */ jsx21(
2458
2762
  "button",
2459
2763
  {
2460
2764
  onClick: goToNextMonth,
2461
2765
  className: "p-1 rounded-md hover:bg-background-100 transition-colors",
2462
2766
  "aria-label": "Pr\xF3ximo m\xEAs",
2463
- children: /* @__PURE__ */ jsx20(
2767
+ children: /* @__PURE__ */ jsx21(
2464
2768
  "svg",
2465
2769
  {
2466
2770
  className: "w-6 h-6 text-primary-950",
2467
2771
  fill: "none",
2468
2772
  stroke: "currentColor",
2469
2773
  viewBox: "0 0 24 24",
2470
- children: /* @__PURE__ */ jsx20(
2774
+ children: /* @__PURE__ */ jsx21(
2471
2775
  "path",
2472
2776
  {
2473
2777
  strokeLinecap: "round",
@@ -2482,7 +2786,7 @@ var Calendar = ({
2482
2786
  )
2483
2787
  ] })
2484
2788
  ] }),
2485
- /* @__PURE__ */ jsx20("div", { className: "grid grid-cols-7 gap-1 mb-2", children: WEEK_DAYS.map((day) => /* @__PURE__ */ jsx20(
2789
+ /* @__PURE__ */ jsx21("div", { className: "grid grid-cols-7 gap-1 mb-2", children: WEEK_DAYS.map((day) => /* @__PURE__ */ jsx21(
2486
2790
  "div",
2487
2791
  {
2488
2792
  className: "h-4 flex items-center justify-center text-xs font-semibold text-text-500",
@@ -2490,13 +2794,13 @@ var Calendar = ({
2490
2794
  },
2491
2795
  day
2492
2796
  )) }),
2493
- /* @__PURE__ */ jsx20("div", { className: "grid grid-cols-7 gap-1", children: calendarData.map((day) => {
2797
+ /* @__PURE__ */ jsx21("div", { className: "grid grid-cols-7 gap-1", children: calendarData.map((day) => {
2494
2798
  if (!day.isCurrentMonth) {
2495
- return /* @__PURE__ */ jsx20(
2799
+ return /* @__PURE__ */ jsx21(
2496
2800
  "div",
2497
2801
  {
2498
2802
  className: "flex items-center justify-center",
2499
- children: /* @__PURE__ */ jsx20("div", { className: "w-10 h-10" })
2803
+ children: /* @__PURE__ */ jsx21("div", { className: "w-10 h-10" })
2500
2804
  },
2501
2805
  day.date.getTime()
2502
2806
  );
@@ -2506,21 +2810,21 @@ var Calendar = ({
2506
2810
  variant,
2507
2811
  showActivities
2508
2812
  );
2509
- return /* @__PURE__ */ jsx20(
2813
+ return /* @__PURE__ */ jsx21(
2510
2814
  "div",
2511
2815
  {
2512
2816
  className: "flex items-center justify-center",
2513
- children: /* @__PURE__ */ jsx20(
2817
+ children: /* @__PURE__ */ jsx21(
2514
2818
  "button",
2515
2819
  {
2516
2820
  className: `
2517
- w-10 h-10
2518
- flex items-center justify-center
2519
- text-xl font-normal
2520
- cursor-pointer
2821
+ w-10 h-10
2822
+ flex items-center justify-center
2823
+ text-xl font-normal
2824
+ cursor-pointer
2521
2825
  rounded-full
2522
2826
  focus:outline-none focus:ring-2 focus:ring-primary-600 focus:ring-offset-1
2523
- ${dayStyle}
2827
+ ${dayStyle}
2524
2828
  ${textStyle}
2525
2829
  `,
2526
2830
  onClick: () => handleDateSelect(day),
@@ -2538,11 +2842,107 @@ var Calendar = ({
2538
2842
  };
2539
2843
  var Calendar_default = Calendar;
2540
2844
 
2845
+ // src/components/Modal/Modal.tsx
2846
+ import { useEffect as useEffect2 } from "react";
2847
+ import { X as X2 } from "phosphor-react";
2848
+ import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
2849
+ var SIZE_CLASSES10 = {
2850
+ xs: "max-w-[360px]",
2851
+ sm: "max-w-[420px]",
2852
+ md: "max-w-[510px]",
2853
+ lg: "max-w-[640px]",
2854
+ xl: "max-w-[970px]"
2855
+ };
2856
+ var Modal = ({
2857
+ isOpen,
2858
+ onClose,
2859
+ title,
2860
+ children,
2861
+ size = "md",
2862
+ className = "",
2863
+ closeOnBackdropClick = true,
2864
+ closeOnEscape = true,
2865
+ footer,
2866
+ hideCloseButton = false
2867
+ }) => {
2868
+ useEffect2(() => {
2869
+ if (!isOpen || !closeOnEscape) return;
2870
+ const handleEscape = (event) => {
2871
+ if (event.key === "Escape") {
2872
+ onClose();
2873
+ }
2874
+ };
2875
+ document.addEventListener("keydown", handleEscape);
2876
+ return () => document.removeEventListener("keydown", handleEscape);
2877
+ }, [isOpen, closeOnEscape, onClose]);
2878
+ useEffect2(() => {
2879
+ const originalOverflow = document.body.style.overflow;
2880
+ if (isOpen) {
2881
+ document.body.style.overflow = "hidden";
2882
+ } else {
2883
+ document.body.style.overflow = originalOverflow;
2884
+ }
2885
+ return () => {
2886
+ document.body.style.overflow = originalOverflow;
2887
+ };
2888
+ }, [isOpen]);
2889
+ const handleBackdropClick = (event) => {
2890
+ if (closeOnBackdropClick && event.target === event.currentTarget) {
2891
+ onClose();
2892
+ }
2893
+ };
2894
+ const handleBackdropKeyDown = (event) => {
2895
+ if (closeOnBackdropClick && (event.key === "Enter" || event.key === " ")) {
2896
+ onClose();
2897
+ }
2898
+ };
2899
+ if (!isOpen) return null;
2900
+ const sizeClasses = SIZE_CLASSES10[size];
2901
+ const baseClasses = "bg-background rounded-3xl shadow-hard-shadow-2 border border-border-100 w-full mx-4";
2902
+ const modalClasses = `${baseClasses} ${sizeClasses} ${className}`;
2903
+ return /* @__PURE__ */ jsx22(
2904
+ "div",
2905
+ {
2906
+ className: "fixed inset-0 z-50 flex items-center justify-center bg-black/60 backdrop-blur-xs",
2907
+ onClick: handleBackdropClick,
2908
+ onKeyDown: handleBackdropKeyDown,
2909
+ role: "none",
2910
+ "aria-hidden": "true",
2911
+ children: /* @__PURE__ */ jsxs17(
2912
+ "div",
2913
+ {
2914
+ className: modalClasses,
2915
+ role: "dialog",
2916
+ "aria-modal": "true",
2917
+ "aria-labelledby": "modal-title",
2918
+ children: [
2919
+ /* @__PURE__ */ jsxs17("div", { className: "flex items-center justify-between px-6 py-6", children: [
2920
+ /* @__PURE__ */ jsx22("h2", { id: "modal-title", className: "text-lg font-semibold text-text-950", children: title }),
2921
+ !hideCloseButton && /* @__PURE__ */ jsx22(
2922
+ "button",
2923
+ {
2924
+ onClick: onClose,
2925
+ className: "p-1 text-text-500 hover:text-text-700 hover:bg-background-50 rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-indicator-info focus:ring-offset-2",
2926
+ "aria-label": "Fechar modal",
2927
+ children: /* @__PURE__ */ jsx22(X2, { size: 18 })
2928
+ }
2929
+ )
2930
+ ] }),
2931
+ /* @__PURE__ */ jsx22("div", { className: "px-6 pb-6", children: /* @__PURE__ */ jsx22("div", { className: "text-text-500 font-normal text-sm leading-6", children }) }),
2932
+ footer && /* @__PURE__ */ jsx22("div", { className: "flex justify-end gap-3 px-6 pb-6", children: footer })
2933
+ ]
2934
+ }
2935
+ )
2936
+ }
2937
+ );
2938
+ };
2939
+ var Modal_default = Modal;
2940
+
2541
2941
  // src/components/DropdownMenu/DropdownMenu.tsx
2542
2942
  import { SignOut, User } from "phosphor-react";
2543
2943
  import {
2544
2944
  forwardRef as forwardRef9,
2545
- useEffect as useEffect2,
2945
+ useEffect as useEffect3,
2546
2946
  useRef as useRef2,
2547
2947
  isValidElement,
2548
2948
  Children,
@@ -2550,7 +2950,7 @@ import {
2550
2950
  useState as useState6
2551
2951
  } from "react";
2552
2952
  import { create as create2, useStore } from "zustand";
2553
- import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
2953
+ import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
2554
2954
  function createDropdownStore() {
2555
2955
  return create2((set) => ({
2556
2956
  open: false,
@@ -2580,16 +2980,17 @@ var injectStore = (children, store) => {
2580
2980
  return child;
2581
2981
  });
2582
2982
  };
2583
- var DropdownMenu = ({ children, open, onOpenChange }) => {
2983
+ var DropdownMenu = ({
2984
+ children,
2985
+ open: propOpen,
2986
+ onOpenChange
2987
+ }) => {
2584
2988
  const storeRef = useRef2(null);
2585
2989
  storeRef.current ??= createDropdownStore();
2586
2990
  const store = storeRef.current;
2587
- const isControlled = open !== void 0;
2588
- const uncontrolledOpen = useStore(store, (s) => s.open);
2589
- const currentOpen = isControlled ? open : uncontrolledOpen;
2991
+ const { open, setOpen: storeSetOpen } = useStore(store, (s) => s);
2590
2992
  const setOpen = (newOpen) => {
2591
- onOpenChange?.(newOpen);
2592
- if (!isControlled) store.setState({ open: newOpen });
2993
+ storeSetOpen(newOpen);
2593
2994
  };
2594
2995
  const menuRef = useRef2(null);
2595
2996
  const handleArrowDownOrArrowUp = (event) => {
@@ -2625,9 +3026,8 @@ var DropdownMenu = ({ children, open, onOpenChange }) => {
2625
3026
  setOpen(false);
2626
3027
  }
2627
3028
  };
2628
- useEffect2(() => {
2629
- onOpenChange?.(currentOpen);
2630
- if (currentOpen) {
3029
+ useEffect3(() => {
3030
+ if (open) {
2631
3031
  document.addEventListener("mousedown", handleClickOutside);
2632
3032
  document.addEventListener("keydown", handleDownkey);
2633
3033
  }
@@ -2635,13 +3035,17 @@ var DropdownMenu = ({ children, open, onOpenChange }) => {
2635
3035
  document.removeEventListener("mousedown", handleClickOutside);
2636
3036
  document.removeEventListener("keydown", handleDownkey);
2637
3037
  };
2638
- }, [currentOpen]);
2639
- useEffect2(() => {
2640
- if (isControlled) {
2641
- store.setState({ open });
3038
+ }, [open]);
3039
+ useEffect3(() => {
3040
+ setOpen(open);
3041
+ onOpenChange?.(open);
3042
+ }, [open, onOpenChange]);
3043
+ useEffect3(() => {
3044
+ if (propOpen) {
3045
+ setOpen(propOpen);
2642
3046
  }
2643
- }, []);
2644
- return /* @__PURE__ */ jsx21("div", { className: "relative", ref: menuRef, children: injectStore(children, store) });
3047
+ }, [propOpen]);
3048
+ return /* @__PURE__ */ jsx23("div", { className: "relative", ref: menuRef, children: injectStore(children, store) });
2645
3049
  };
2646
3050
  var DropdownMenuTrigger = ({
2647
3051
  className,
@@ -2653,7 +3057,7 @@ var DropdownMenuTrigger = ({
2653
3057
  const store = useDropdownStore(externalStore);
2654
3058
  const open = useStore(store, (s) => s.open);
2655
3059
  const toggleOpen = () => store.setState({ open: !open });
2656
- return /* @__PURE__ */ jsx21(
3060
+ return /* @__PURE__ */ jsx23(
2657
3061
  Button_default,
2658
3062
  {
2659
3063
  variant: "outline",
@@ -2690,7 +3094,7 @@ var MENUCONTENT_VARIANT_CLASSES = {
2690
3094
  profile: "p-6"
2691
3095
  };
2692
3096
  var MenuLabel = forwardRef9(({ className, inset, store: _store, ...props }, ref) => {
2693
- return /* @__PURE__ */ jsx21(
3097
+ return /* @__PURE__ */ jsx23(
2694
3098
  "div",
2695
3099
  {
2696
3100
  ref,
@@ -2714,7 +3118,7 @@ var MenuContent = forwardRef9(
2714
3118
  const store = useDropdownStore(externalStore);
2715
3119
  const open = useStore(store, (s) => s.open);
2716
3120
  const [isVisible, setIsVisible] = useState6(open);
2717
- useEffect2(() => {
3121
+ useEffect3(() => {
2718
3122
  if (open) {
2719
3123
  setIsVisible(true);
2720
3124
  } else {
@@ -2729,7 +3133,7 @@ var MenuContent = forwardRef9(
2729
3133
  return `absolute ${vertical} ${horizontal}`;
2730
3134
  };
2731
3135
  const variantClasses = MENUCONTENT_VARIANT_CLASSES[variant];
2732
- return /* @__PURE__ */ jsx21(
3136
+ return /* @__PURE__ */ jsx23(
2733
3137
  "div",
2734
3138
  {
2735
3139
  ref,
@@ -2788,7 +3192,7 @@ var DropdownMenuItem = forwardRef9(
2788
3192
  const getVariantProps = () => {
2789
3193
  return variant === "profile" ? { "data-variant": "profile" } : {};
2790
3194
  };
2791
- return /* @__PURE__ */ jsxs16(
3195
+ return /* @__PURE__ */ jsxs18(
2792
3196
  "div",
2793
3197
  {
2794
3198
  ref,
@@ -2810,7 +3214,7 @@ var DropdownMenuItem = forwardRef9(
2810
3214
  ...props,
2811
3215
  children: [
2812
3216
  iconLeft,
2813
- /* @__PURE__ */ jsx21("span", { className: "w-full text-md", children }),
3217
+ /* @__PURE__ */ jsx23("span", { className: "w-full text-md", children }),
2814
3218
  iconRight
2815
3219
  ]
2816
3220
  }
@@ -2818,7 +3222,7 @@ var DropdownMenuItem = forwardRef9(
2818
3222
  }
2819
3223
  );
2820
3224
  DropdownMenuItem.displayName = "DropdownMenuItem";
2821
- var DropdownMenuSeparator = forwardRef9(({ className, store: _store, ...props }, ref) => /* @__PURE__ */ jsx21(
3225
+ var DropdownMenuSeparator = forwardRef9(({ className, store: _store, ...props }, ref) => /* @__PURE__ */ jsx23(
2822
3226
  "div",
2823
3227
  {
2824
3228
  ref,
@@ -2831,7 +3235,7 @@ var ProfileMenuTrigger = forwardRef9(({ className, onClick, store: externalStore
2831
3235
  const store = useDropdownStore(externalStore);
2832
3236
  const open = useStore(store, (s) => s.open);
2833
3237
  const toggleOpen = () => store.setState({ open: !open });
2834
- return /* @__PURE__ */ jsx21(
3238
+ return /* @__PURE__ */ jsx23(
2835
3239
  "button",
2836
3240
  {
2837
3241
  ref,
@@ -2843,13 +3247,13 @@ var ProfileMenuTrigger = forwardRef9(({ className, onClick, store: externalStore
2843
3247
  },
2844
3248
  "aria-expanded": open,
2845
3249
  ...props,
2846
- children: /* @__PURE__ */ jsx21("span", { className: "size-6 rounded-full bg-background-100 flex items-center justify-center", children: /* @__PURE__ */ jsx21(User, { className: "text-background-950", size: 18 }) })
3250
+ children: /* @__PURE__ */ jsx23("span", { className: "size-6 rounded-full bg-background-100 flex items-center justify-center", children: /* @__PURE__ */ jsx23(User, { className: "text-background-950", size: 18 }) })
2847
3251
  }
2848
3252
  );
2849
3253
  });
2850
3254
  ProfileMenuTrigger.displayName = "ProfileMenuTrigger";
2851
3255
  var ProfileMenuHeader = forwardRef9(({ className, name, email, store: _store, ...props }, ref) => {
2852
- return /* @__PURE__ */ jsxs16(
3256
+ return /* @__PURE__ */ jsxs18(
2853
3257
  "div",
2854
3258
  {
2855
3259
  ref,
@@ -2860,10 +3264,10 @@ var ProfileMenuHeader = forwardRef9(({ className, name, email, store: _store, ..
2860
3264
  `,
2861
3265
  ...props,
2862
3266
  children: [
2863
- /* @__PURE__ */ jsx21("span", { className: "size-16 bg-background-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx21(User, { size: 34, className: "text-background-950" }) }),
2864
- /* @__PURE__ */ jsxs16("div", { className: "flex flex-col ", children: [
2865
- /* @__PURE__ */ jsx21("p", { className: "text-xl font-bold text-text-950", children: name }),
2866
- /* @__PURE__ */ jsx21("p", { className: "text-md text-text-600", children: email })
3267
+ /* @__PURE__ */ jsx23("span", { className: "size-16 bg-background-100 rounded-full flex items-center justify-center", children: /* @__PURE__ */ jsx23(User, { size: 34, className: "text-background-950" }) }),
3268
+ /* @__PURE__ */ jsxs18("div", { className: "flex flex-col ", children: [
3269
+ /* @__PURE__ */ jsx23("p", { className: "text-xl font-bold text-text-950", children: name }),
3270
+ /* @__PURE__ */ jsx23("p", { className: "text-md text-text-600", children: email })
2867
3271
  ] })
2868
3272
  ]
2869
3273
  }
@@ -2871,7 +3275,7 @@ var ProfileMenuHeader = forwardRef9(({ className, name, email, store: _store, ..
2871
3275
  });
2872
3276
  ProfileMenuHeader.displayName = "ProfileMenuHeader";
2873
3277
  var ProfileMenuSection = forwardRef9(({ className, children, store: _store, ...props }, ref) => {
2874
- return /* @__PURE__ */ jsx21(
3278
+ return /* @__PURE__ */ jsx23(
2875
3279
  "div",
2876
3280
  {
2877
3281
  ref,
@@ -2894,7 +3298,7 @@ var ProfileMenuFooter = ({
2894
3298
  }) => {
2895
3299
  const store = useDropdownStore(externalStore);
2896
3300
  const setOpen = useStore(store, (s) => s.setOpen);
2897
- return /* @__PURE__ */ jsxs16(
3301
+ return /* @__PURE__ */ jsxs18(
2898
3302
  Button_default,
2899
3303
  {
2900
3304
  variant: "outline",
@@ -2906,8 +3310,8 @@ var ProfileMenuFooter = ({
2906
3310
  },
2907
3311
  ...props,
2908
3312
  children: [
2909
- /* @__PURE__ */ jsx21("span", { className: "mr-2 flex items-center", children: /* @__PURE__ */ jsx21(SignOut, {}) }),
2910
- /* @__PURE__ */ jsx21("span", { children: "Sair" })
3313
+ /* @__PURE__ */ jsx23("span", { className: "mr-2 flex items-center", children: /* @__PURE__ */ jsx23(SignOut, {}) }),
3314
+ /* @__PURE__ */ jsx23("span", { children: "Sair" })
2911
3315
  ]
2912
3316
  }
2913
3317
  );
@@ -2918,21 +3322,21 @@ var DropdownMenu_default = DropdownMenu;
2918
3322
  // src/components/Select/Select.tsx
2919
3323
  import { create as create3, useStore as useStore2 } from "zustand";
2920
3324
  import {
2921
- useEffect as useEffect3,
3325
+ useEffect as useEffect4,
2922
3326
  useRef as useRef3,
2923
3327
  forwardRef as forwardRef10,
2924
3328
  isValidElement as isValidElement2,
2925
3329
  Children as Children2,
2926
3330
  cloneElement as cloneElement2
2927
3331
  } from "react";
2928
- import { CaretDown, Check as Check3 } from "phosphor-react";
2929
- import { Fragment as Fragment3, jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
3332
+ import { CaretDown, Check as Check4 } from "phosphor-react";
3333
+ import { Fragment as Fragment3, jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
2930
3334
  var VARIANT_CLASSES4 = {
2931
3335
  outlined: "border-2 rounded-sm focus:border-primary-950",
2932
3336
  underlined: "border-b-2 focus:border-primary-950",
2933
3337
  rounded: "border-2 rounded-4xl focus:border-primary-950"
2934
3338
  };
2935
- var SIZE_CLASSES9 = {
3339
+ var SIZE_CLASSES11 = {
2936
3340
  small: "text-sm",
2937
3341
  medium: "text-md",
2938
3342
  large: "text-lg"
@@ -2972,7 +3376,7 @@ function getLabelAsNode(children) {
2972
3376
  }
2973
3377
  const flattened = Children2.toArray(children);
2974
3378
  if (flattened.length === 1) return flattened[0];
2975
- return /* @__PURE__ */ jsx22(Fragment3, { children: flattened });
3379
+ return /* @__PURE__ */ jsx24(Fragment3, { children: flattened });
2976
3380
  }
2977
3381
  var injectStore2 = (children, store) => {
2978
3382
  return Children2.map(children, (child) => {
@@ -3004,8 +3408,6 @@ var Select = ({
3004
3408
  store,
3005
3409
  (s) => s
3006
3410
  );
3007
- const isControlled = propValue !== void 0;
3008
- const currentValue = isControlled ? propValue : value;
3009
3411
  const findLabelForValue = (children2, targetValue) => {
3010
3412
  let found = null;
3011
3413
  const search = (nodes) => {
@@ -3023,14 +3425,13 @@ var Select = ({
3023
3425
  search(children2);
3024
3426
  return found;
3025
3427
  };
3026
- useEffect3(() => {
3428
+ useEffect4(() => {
3027
3429
  if (!selectedLabel && defaultValue) {
3028
3430
  const label = findLabelForValue(children, defaultValue);
3029
3431
  if (label) store.setState({ selectedLabel: label });
3030
3432
  }
3031
3433
  }, [children, defaultValue, selectedLabel]);
3032
- useEffect3(() => {
3033
- setValue(currentValue);
3434
+ useEffect4(() => {
3034
3435
  const handleClickOutside = (event) => {
3035
3436
  if (selectRef.current && !selectRef.current.contains(event.target)) {
3036
3437
  setOpen(false);
@@ -3065,13 +3466,19 @@ var Select = ({
3065
3466
  document.removeEventListener("keydown", handleArrowKeys);
3066
3467
  };
3067
3468
  }, [open]);
3068
- useEffect3(() => {
3069
- if (onValueChange) {
3070
- onValueChange(value);
3469
+ useEffect4(() => {
3470
+ setValue(value);
3471
+ onValueChange?.(value);
3472
+ }, [value, onValueChange]);
3473
+ useEffect4(() => {
3474
+ if (propValue) {
3475
+ setValue(propValue);
3476
+ const label = findLabelForValue(children, propValue);
3477
+ if (label) store.setState({ selectedLabel: label });
3071
3478
  }
3072
- }, [value]);
3073
- const sizeClasses = SIZE_CLASSES9[size];
3074
- return /* @__PURE__ */ jsx22("div", { className: `relative ${sizeClasses} w-[288px]`, ref: selectRef, children: injectStore2(children, store) });
3479
+ }, [propValue]);
3480
+ const sizeClasses = SIZE_CLASSES11[size];
3481
+ return /* @__PURE__ */ jsx24("div", { className: `relative ${sizeClasses} w-[288px]`, ref: selectRef, children: injectStore2(children, store) });
3075
3482
  };
3076
3483
  var SelectValue = ({
3077
3484
  placeholder,
@@ -3080,7 +3487,7 @@ var SelectValue = ({
3080
3487
  const store = useSelectStore(externalStore);
3081
3488
  const selectedLabel = useStore2(store, (s) => s.selectedLabel);
3082
3489
  const value = useStore2(store, (s) => s.value);
3083
- return /* @__PURE__ */ jsx22("span", { className: "text-inherit", children: selectedLabel || placeholder || value });
3490
+ return /* @__PURE__ */ jsx24("span", { className: "text-inherit", children: selectedLabel || placeholder || value });
3084
3491
  };
3085
3492
  var SelectTrigger = forwardRef10(
3086
3493
  ({
@@ -3095,7 +3502,7 @@ var SelectTrigger = forwardRef10(
3095
3502
  const open = useStore2(store, (s) => s.open);
3096
3503
  const toggleOpen = () => store.setState({ open: !open });
3097
3504
  const variantClasses = VARIANT_CLASSES4[variant];
3098
- return /* @__PURE__ */ jsxs17(
3505
+ return /* @__PURE__ */ jsxs19(
3099
3506
  "button",
3100
3507
  {
3101
3508
  ref,
@@ -3114,7 +3521,7 @@ var SelectTrigger = forwardRef10(
3114
3521
  ...props,
3115
3522
  children: [
3116
3523
  props.children,
3117
- /* @__PURE__ */ jsx22(
3524
+ /* @__PURE__ */ jsx24(
3118
3525
  CaretDown,
3119
3526
  {
3120
3527
  className: `h-[1em] w-[1em] opacity-50 transition-transform ${open ? "rotate-180" : ""}`
@@ -3139,7 +3546,7 @@ var SelectContent = forwardRef10(
3139
3546
  const open = useStore2(store, (s) => s.open);
3140
3547
  if (!open) return null;
3141
3548
  const getPositionClasses = () => `w-full min-w-full absolute ${SIDE_CLASSES2[side]} ${ALIGN_CLASSES2[align]}`;
3142
- return /* @__PURE__ */ jsx22(
3549
+ return /* @__PURE__ */ jsx24(
3143
3550
  "div",
3144
3551
  {
3145
3552
  role: "menu",
@@ -3162,8 +3569,12 @@ var SelectItem = forwardRef10(
3162
3569
  ...props
3163
3570
  }, ref) => {
3164
3571
  const store = useSelectStore(externalStore);
3165
- const selectedValue = useStore2(store, (s) => s.value);
3166
- const { setValue, setSelectedLabel, setOpen } = store.getState();
3572
+ const {
3573
+ value: selectedValue,
3574
+ setValue,
3575
+ setOpen,
3576
+ setSelectedLabel
3577
+ } = useStore2(store, (s) => s);
3167
3578
  const handleClick = (e) => {
3168
3579
  const labelNode = getLabelAsNode(children);
3169
3580
  if (!disabled) {
@@ -3173,7 +3584,7 @@ var SelectItem = forwardRef10(
3173
3584
  }
3174
3585
  props.onClick?.(e);
3175
3586
  };
3176
- return /* @__PURE__ */ jsxs17(
3587
+ return /* @__PURE__ */ jsxs19(
3177
3588
  "div",
3178
3589
  {
3179
3590
  role: "menuitem",
@@ -3193,7 +3604,7 @@ var SelectItem = forwardRef10(
3193
3604
  tabIndex: disabled ? -1 : 0,
3194
3605
  ...props,
3195
3606
  children: [
3196
- /* @__PURE__ */ jsx22("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: selectedValue === value && /* @__PURE__ */ jsx22(Check3, { className: "" }) }),
3607
+ /* @__PURE__ */ jsx24("span", { className: "absolute right-2 flex h-3.5 w-3.5 items-center justify-center", children: selectedValue === value && /* @__PURE__ */ jsx24(Check4, { className: "" }) }),
3197
3608
  children
3198
3609
  ]
3199
3610
  }
@@ -3206,7 +3617,7 @@ var Select_default = Select;
3206
3617
  // src/components/Menu/Menu.tsx
3207
3618
  import { create as create4, useStore as useStore3 } from "zustand";
3208
3619
  import {
3209
- useEffect as useEffect4,
3620
+ useEffect as useEffect5,
3210
3621
  useRef as useRef4,
3211
3622
  forwardRef as forwardRef11,
3212
3623
  isValidElement as isValidElement3,
@@ -3215,7 +3626,7 @@ import {
3215
3626
  useState as useState7
3216
3627
  } from "react";
3217
3628
  import { CaretLeft, CaretRight } from "phosphor-react";
3218
- import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
3629
+ import { jsx as jsx25, jsxs as jsxs20 } from "react/jsx-runtime";
3219
3630
  var createMenuStore = () => create4((set) => ({
3220
3631
  value: "",
3221
3632
  setValue: (value) => set({ value })
@@ -3243,15 +3654,15 @@ var Menu = forwardRef11(
3243
3654
  storeRef.current ??= createMenuStore();
3244
3655
  const store = storeRef.current;
3245
3656
  const { setValue, value } = useStore3(store, (s) => s);
3246
- useEffect4(() => {
3657
+ useEffect5(() => {
3247
3658
  setValue(propValue ?? defaultValue);
3248
3659
  }, [defaultValue, propValue, setValue]);
3249
- useEffect4(() => {
3660
+ useEffect5(() => {
3250
3661
  onValueChange?.(value);
3251
3662
  }, [value, onValueChange]);
3252
3663
  const baseClasses = "w-full flex flex-row items-center gap-2 py-2 px-6";
3253
3664
  const variantClasses = VARIANT_CLASSES5[variant];
3254
- return /* @__PURE__ */ jsx23(
3665
+ return /* @__PURE__ */ jsx25(
3255
3666
  "ul",
3256
3667
  {
3257
3668
  ref,
@@ -3296,7 +3707,7 @@ var MenuItem = forwardRef11(
3296
3707
  ...props
3297
3708
  };
3298
3709
  const variants = {
3299
- menu: /* @__PURE__ */ jsx23(
3710
+ menu: /* @__PURE__ */ jsx25(
3300
3711
  "li",
3301
3712
  {
3302
3713
  "data-variant": "menu",
@@ -3311,7 +3722,7 @@ var MenuItem = forwardRef11(
3311
3722
  children
3312
3723
  }
3313
3724
  ),
3314
- menu2: /* @__PURE__ */ jsx23(
3725
+ menu2: /* @__PURE__ */ jsx25(
3315
3726
  "li",
3316
3727
  {
3317
3728
  "data-variant": "menu2",
@@ -3323,7 +3734,7 @@ var MenuItem = forwardRef11(
3323
3734
  children
3324
3735
  }
3325
3736
  ),
3326
- breadcrumb: /* @__PURE__ */ jsx23(
3737
+ breadcrumb: /* @__PURE__ */ jsx25(
3327
3738
  "li",
3328
3739
  {
3329
3740
  "data-variant": "breadcrumb",
@@ -3334,7 +3745,7 @@ var MenuItem = forwardRef11(
3334
3745
  ${className ?? ""}
3335
3746
  `,
3336
3747
  ...commonProps,
3337
- children: /* @__PURE__ */ jsx23(
3748
+ children: /* @__PURE__ */ jsx25(
3338
3749
  "span",
3339
3750
  {
3340
3751
  className: `
@@ -3352,14 +3763,14 @@ var MenuItem = forwardRef11(
3352
3763
  );
3353
3764
  MenuItem.displayName = "MenuItem";
3354
3765
  var MenuSeparator = forwardRef11(
3355
- ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx23(
3766
+ ({ className, children, ...props }, ref) => /* @__PURE__ */ jsx25(
3356
3767
  "li",
3357
3768
  {
3358
3769
  ref,
3359
3770
  "aria-hidden": "true",
3360
3771
  className: `[&>svg]:w-4 [&>svg]:h-4 text-text-600 ${className ?? ""}`,
3361
3772
  ...props,
3362
- children: children ?? /* @__PURE__ */ jsx23(CaretRight, {})
3773
+ children: children ?? /* @__PURE__ */ jsx25(CaretRight, {})
3363
3774
  }
3364
3775
  )
3365
3776
  );
@@ -3374,11 +3785,426 @@ var injectStore3 = (children, store) => Children3.map(children, (child) => {
3374
3785
  });
3375
3786
  });
3376
3787
  var Menu_default = Menu;
3788
+
3789
+ // src/components/Card/Card.tsx
3790
+ import { forwardRef as forwardRef12, Fragment as Fragment4 } from "react";
3791
+ import { CaretRight as CaretRight2, CheckCircle as CheckCircle3, XCircle as XCircle2 } from "phosphor-react";
3792
+ import { Fragment as Fragment5, jsx as jsx26, jsxs as jsxs21 } from "react/jsx-runtime";
3793
+ var ACTION_CARD_CLASSES = {
3794
+ warning: "bg-warning-background",
3795
+ success: "bg-success-300",
3796
+ error: "bg-error-100",
3797
+ info: "bg-info-background"
3798
+ };
3799
+ var ACTION_ICON_CLASSES = {
3800
+ warning: "bg-warning-300 text-text",
3801
+ success: "bg-yellow-300 text-text-950",
3802
+ error: "bg-error-500 text-text",
3803
+ info: "bg-info-500 text-text"
3804
+ };
3805
+ var ACTION_SUBTITLE_CLASSES = {
3806
+ warning: "text-warning-600",
3807
+ success: "text-success-700",
3808
+ error: "text-error-700",
3809
+ info: "text-info-700"
3810
+ };
3811
+ var ACTION_HEADER_CLASSES = {
3812
+ warning: "text-warning-300",
3813
+ success: "text-success-300",
3814
+ error: "text-error-300",
3815
+ info: "text-info-300"
3816
+ };
3817
+ var CardActivesResults = forwardRef12(
3818
+ ({
3819
+ icon,
3820
+ title,
3821
+ subTitle,
3822
+ header,
3823
+ extended = false,
3824
+ action = "success",
3825
+ description,
3826
+ className,
3827
+ ...props
3828
+ }, ref) => {
3829
+ const actionCardClasses = ACTION_CARD_CLASSES[action];
3830
+ const actionIconClasses = ACTION_ICON_CLASSES[action];
3831
+ const actionSubTitleClasses = ACTION_SUBTITLE_CLASSES[action];
3832
+ const actionHeaderClasses = ACTION_HEADER_CLASSES[action];
3833
+ return /* @__PURE__ */ jsxs21(
3834
+ "div",
3835
+ {
3836
+ ref,
3837
+ className: `w-full flex flex-col border border-border-50 bg-background rounded-xl ${className}`,
3838
+ ...props,
3839
+ children: [
3840
+ /* @__PURE__ */ jsxs21(
3841
+ "div",
3842
+ {
3843
+ className: `
3844
+ flex flex-col gap-1 items-center justify-center p-4
3845
+ ${actionCardClasses}
3846
+ ${extended ? "rounded-t-xl" : "rounded-xl"}`,
3847
+ children: [
3848
+ /* @__PURE__ */ jsx26(
3849
+ "span",
3850
+ {
3851
+ className: `size-7.5 rounded-full flex items-center justify-center ${actionIconClasses}`,
3852
+ children: icon
3853
+ }
3854
+ ),
3855
+ /* @__PURE__ */ jsx26("p", { className: "text-text-800 font-medium uppercase text-2xs", children: title }),
3856
+ /* @__PURE__ */ jsx26("p", { className: `text-lg font-bold ${actionSubTitleClasses}`, children: subTitle })
3857
+ ]
3858
+ }
3859
+ ),
3860
+ extended && /* @__PURE__ */ jsxs21("div", { className: "flex flex-col items-center gap-2.5 pb-9.5 pt-2.5", children: [
3861
+ /* @__PURE__ */ jsx26(
3862
+ "p",
3863
+ {
3864
+ className: `text-2xs font-medium uppercase ${actionHeaderClasses}`,
3865
+ children: header
3866
+ }
3867
+ ),
3868
+ /* @__PURE__ */ jsx26("p", { className: "text-sm text-info-800 text-center", children: description })
3869
+ ] })
3870
+ ]
3871
+ }
3872
+ );
3873
+ }
3874
+ );
3875
+ var CardQuestions = forwardRef12(
3876
+ ({
3877
+ header,
3878
+ state = "undone",
3879
+ className,
3880
+ onClickButton,
3881
+ valueButton,
3882
+ ...props
3883
+ }, ref) => {
3884
+ const isDone = state === "done";
3885
+ const stateLabel = isDone ? "Realizado" : "N\xE3o Realizado";
3886
+ const buttonLabel = isDone ? "Ver Quest\xE3o" : "Responder";
3887
+ return /* @__PURE__ */ jsxs21(
3888
+ "div",
3889
+ {
3890
+ ref,
3891
+ className: `
3892
+ w-full flex flex-row justify-between rounded-xl p-4 gap-4 bg-background border border-border-50
3893
+ ${className}
3894
+ `,
3895
+ ...props,
3896
+ children: [
3897
+ /* @__PURE__ */ jsxs21("section", { className: "flex flex-col gap-1", children: [
3898
+ /* @__PURE__ */ jsx26("p", { className: "font-bold text-xs text-text-950", children: header }),
3899
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-row gap-6 items-center", children: [
3900
+ /* @__PURE__ */ jsx26(
3901
+ Badge_default,
3902
+ {
3903
+ size: "medium",
3904
+ variant: "solid",
3905
+ action: isDone ? "success" : "error",
3906
+ children: stateLabel
3907
+ }
3908
+ ),
3909
+ /* @__PURE__ */ jsxs21("span", { className: "flex flex-row items-center gap-1 text-text-700 text-xs", children: [
3910
+ isDone ? "Nota" : "Sem nota",
3911
+ isDone && /* @__PURE__ */ jsx26(Badge_default, { size: "medium", action: "success", children: "00" })
3912
+ ] })
3913
+ ] })
3914
+ ] }),
3915
+ /* @__PURE__ */ jsx26(Button_default, { size: "extra-small", onClick: () => onClickButton?.(valueButton), children: buttonLabel })
3916
+ ]
3917
+ }
3918
+ );
3919
+ }
3920
+ );
3921
+ var CardProgress = forwardRef12(
3922
+ ({
3923
+ header,
3924
+ subhead,
3925
+ initialDate,
3926
+ endDate,
3927
+ progress = 0,
3928
+ direction = "horizontal",
3929
+ icon,
3930
+ color = "#B7DFFF",
3931
+ className,
3932
+ ...props
3933
+ }, ref) => {
3934
+ const isHorizontal = direction === "horizontal";
3935
+ const contentComponent = {
3936
+ horizontal: /* @__PURE__ */ jsxs21(Fragment5, { children: [
3937
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-row gap-6 items-center", children: [
3938
+ initialDate && /* @__PURE__ */ jsxs21("span", { className: "flex flex-row gap-1 items-center text-2xs", children: [
3939
+ /* @__PURE__ */ jsx26("p", { className: "text-text-800 font-semibold", children: "In\xEDcio" }),
3940
+ /* @__PURE__ */ jsx26("p", { className: "text-text-600", children: initialDate })
3941
+ ] }),
3942
+ endDate && /* @__PURE__ */ jsxs21("span", { className: "flex flex-row gap-1 items-center text-2xs", children: [
3943
+ /* @__PURE__ */ jsx26("p", { className: "text-text-800 font-semibold", children: "Fim" }),
3944
+ /* @__PURE__ */ jsx26("p", { className: "text-text-600", children: endDate })
3945
+ ] })
3946
+ ] }),
3947
+ /* @__PURE__ */ jsx26(
3948
+ ProgressBar_default,
3949
+ {
3950
+ size: "medium",
3951
+ showPercentage: true,
3952
+ value: progress,
3953
+ "data-testid": "progress-bar"
3954
+ }
3955
+ )
3956
+ ] }),
3957
+ vertical: /* @__PURE__ */ jsx26("p", { className: "text-sm text-text-800", children: subhead })
3958
+ };
3959
+ return /* @__PURE__ */ jsxs21(
3960
+ "div",
3961
+ {
3962
+ ref,
3963
+ className: `
3964
+ w-full flex border border-border-50 rounded-xl
3965
+ ${isHorizontal ? "flex-row h-20" : "flex-col"}
3966
+ ${className}
3967
+ `,
3968
+ ...props,
3969
+ children: [
3970
+ /* @__PURE__ */ jsx26(
3971
+ "div",
3972
+ {
3973
+ className: `
3974
+ flex justify-center items-center [&>svg]:size-8 text-text-950
3975
+ ${isHorizontal ? "w-20 h-full rounded-l-xl" : "min-h-[50px] w-full rounded-t-xl"}
3976
+ `,
3977
+ style: {
3978
+ backgroundColor: color
3979
+ },
3980
+ children: icon
3981
+ }
3982
+ ),
3983
+ /* @__PURE__ */ jsxs21(
3984
+ "div",
3985
+ {
3986
+ className: `
3987
+ p-4 flex flex-col justify-between w-full h-full
3988
+ ${!isHorizontal && "gap-4"}
3989
+ `,
3990
+ children: [
3991
+ /* @__PURE__ */ jsx26("p", { className: "text-xs font-bold text-text-950", children: header }),
3992
+ contentComponent[direction]
3993
+ ]
3994
+ }
3995
+ )
3996
+ ]
3997
+ }
3998
+ );
3999
+ }
4000
+ );
4001
+ var CardTopic = forwardRef12(
4002
+ ({
4003
+ header,
4004
+ subHead,
4005
+ progress,
4006
+ showPercentage = false,
4007
+ className = "",
4008
+ ...props
4009
+ }, ref) => {
4010
+ return /* @__PURE__ */ jsxs21(
4011
+ "div",
4012
+ {
4013
+ ref,
4014
+ className: `w-full py-2 px-4 flex flex-col justify-center gap-2 border border-border-50 rounded-xl min-h-20 ${className}`,
4015
+ ...props,
4016
+ children: [
4017
+ subHead && /* @__PURE__ */ jsx26("span", { className: "text-text-600 text-2xs flex flex-row gap-1", children: subHead.map((text, index) => /* @__PURE__ */ jsxs21(Fragment4, { children: [
4018
+ /* @__PURE__ */ jsx26("p", { children: text }),
4019
+ index < subHead.length - 1 && /* @__PURE__ */ jsx26("p", { children: "\u2022" })
4020
+ ] }, `${text} - ${index}`)) }),
4021
+ /* @__PURE__ */ jsx26("p", { className: "text-xs text-text-950 font-bold", children: header }),
4022
+ /* @__PURE__ */ jsx26(ProgressBar_default, { showPercentage, value: progress })
4023
+ ]
4024
+ }
4025
+ );
4026
+ }
4027
+ );
4028
+ var CardPerformance = forwardRef12(
4029
+ ({
4030
+ header,
4031
+ progress,
4032
+ description = "Sem dados ainda! Voc\xEA ainda n\xE3o fez um question\xE1rio neste assunto.",
4033
+ className = "",
4034
+ onClickButton,
4035
+ valueButton,
4036
+ ...props
4037
+ }, ref) => {
4038
+ const hasProgress = progress !== void 0;
4039
+ return /* @__PURE__ */ jsxs21(
4040
+ "div",
4041
+ {
4042
+ ref,
4043
+ className: `w-full h-20.5 flex flex-row justify-between p-4 gap-2 bg-background border border-border-50 ${className}`,
4044
+ ...props,
4045
+ children: [
4046
+ /* @__PURE__ */ jsxs21("div", { className: "w-full flex flex-col justify-between gap-2", children: [
4047
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-row justify-between items-center", children: [
4048
+ /* @__PURE__ */ jsx26("p", { className: "text-md font-bold text-text-950", children: header }),
4049
+ hasProgress && /* @__PURE__ */ jsx26(
4050
+ Button_default,
4051
+ {
4052
+ variant: "outline",
4053
+ size: "extra-small",
4054
+ onClick: () => onClickButton?.(valueButton),
4055
+ children: "Ver Aula"
4056
+ }
4057
+ )
4058
+ ] }),
4059
+ /* @__PURE__ */ jsx26("div", { className: "w-full", children: hasProgress ? /* @__PURE__ */ jsx26(ProgressBar_default, { value: progress, label: `${progress}% corretas` }) : /* @__PURE__ */ jsx26("p", { className: "text-xs text-text-600", children: description }) })
4060
+ ] }),
4061
+ !hasProgress && /* @__PURE__ */ jsx26(
4062
+ CaretRight2,
4063
+ {
4064
+ className: "size-4.5",
4065
+ "data-testid": "caret-icon",
4066
+ onClick: () => onClickButton?.(valueButton)
4067
+ }
4068
+ )
4069
+ ]
4070
+ }
4071
+ );
4072
+ }
4073
+ );
4074
+ var CardResults = forwardRef12(
4075
+ ({
4076
+ header,
4077
+ correct_answers,
4078
+ incorrect_answers,
4079
+ icon,
4080
+ direction = "col",
4081
+ color = "#B7DFFF",
4082
+ className,
4083
+ ...props
4084
+ }, ref) => {
4085
+ const isRow = direction == "row";
4086
+ return /* @__PURE__ */ jsxs21(
4087
+ "div",
4088
+ {
4089
+ ref,
4090
+ className: `
4091
+ w-full flex border border-border-50 rounded-xl min-h-20 flex-row items-center pr-4
4092
+ ${className}
4093
+ `,
4094
+ ...props,
4095
+ children: [
4096
+ /* @__PURE__ */ jsx26(
4097
+ "div",
4098
+ {
4099
+ className: `
4100
+ flex justify-center items-center [&>svg]:size-8 text-text-950 min-w-20 max-w-20 h-full rounded-l-xl
4101
+ `,
4102
+ style: {
4103
+ backgroundColor: color
4104
+ },
4105
+ children: icon
4106
+ }
4107
+ ),
4108
+ /* @__PURE__ */ jsxs21(
4109
+ "div",
4110
+ {
4111
+ className: `
4112
+ p-4 flex justify-between w-full h-full
4113
+ ${isRow ? "flex-row items-center" : "flex-col"}
4114
+ `,
4115
+ children: [
4116
+ /* @__PURE__ */ jsx26("p", { className: "text-xs font-bold text-text-950", children: header }),
4117
+ /* @__PURE__ */ jsxs21("span", { className: "flex flex-row gap-1 items-center", children: [
4118
+ /* @__PURE__ */ jsxs21(
4119
+ Badge_default,
4120
+ {
4121
+ action: "success",
4122
+ variant: "solid",
4123
+ size: "medium",
4124
+ iconLeft: /* @__PURE__ */ jsx26(CheckCircle3, {}),
4125
+ children: [
4126
+ correct_answers,
4127
+ " Corretas"
4128
+ ]
4129
+ }
4130
+ ),
4131
+ /* @__PURE__ */ jsxs21(
4132
+ Badge_default,
4133
+ {
4134
+ action: "error",
4135
+ variant: "solid",
4136
+ size: "medium",
4137
+ iconLeft: /* @__PURE__ */ jsx26(XCircle2, {}),
4138
+ children: [
4139
+ incorrect_answers,
4140
+ " Incorretas"
4141
+ ]
4142
+ }
4143
+ )
4144
+ ] })
4145
+ ]
4146
+ }
4147
+ ),
4148
+ /* @__PURE__ */ jsx26(CaretRight2, { className: "min-w-6 min-h-6" })
4149
+ ]
4150
+ }
4151
+ );
4152
+ }
4153
+ );
4154
+ var CardStatus = forwardRef12(
4155
+ ({ header, className, status, ...props }, ref) => {
4156
+ return /* @__PURE__ */ jsxs21(
4157
+ "div",
4158
+ {
4159
+ ref,
4160
+ className: `
4161
+ w-full flex border border-border-50 rounded-xl min-h-20 flex-row items-center pr-4
4162
+ ${className}
4163
+ `,
4164
+ ...props,
4165
+ children: [
4166
+ /* @__PURE__ */ jsxs21(
4167
+ "div",
4168
+ {
4169
+ className: `
4170
+ p-4 flex justify-between w-full h-full flex-row items-center
4171
+ `,
4172
+ children: [
4173
+ /* @__PURE__ */ jsx26("p", { className: "text-xs font-bold text-text-950", children: header }),
4174
+ /* @__PURE__ */ jsxs21("span", { className: "flex flex-row gap-1 items-center", children: [
4175
+ /* @__PURE__ */ jsx26(
4176
+ Badge_default,
4177
+ {
4178
+ action: status == "correct" ? "success" : "error",
4179
+ variant: "solid",
4180
+ size: "medium",
4181
+ iconLeft: /* @__PURE__ */ jsx26(CheckCircle3, {}),
4182
+ children: status == "correct" ? "Correta" : "Incorreta"
4183
+ }
4184
+ ),
4185
+ /* @__PURE__ */ jsx26("p", { className: "text-sm text-text-800", children: "Respondida" })
4186
+ ] })
4187
+ ]
4188
+ }
4189
+ ),
4190
+ /* @__PURE__ */ jsx26(CaretRight2, { className: "min-w-6 min-h-6" })
4191
+ ]
4192
+ }
4193
+ );
4194
+ }
4195
+ );
3377
4196
  export {
3378
4197
  Alert_default as Alert,
3379
4198
  Badge_default as Badge,
3380
4199
  Button_default as Button,
3381
4200
  Calendar_default as Calendar,
4201
+ CardActivesResults,
4202
+ CardPerformance,
4203
+ CardProgress,
4204
+ CardQuestions,
4205
+ CardResults,
4206
+ CardStatus,
4207
+ CardTopic,
3382
4208
  CheckBox_default as CheckBox,
3383
4209
  Chips_default as Chips,
3384
4210
  Divider_default as Divider,
@@ -3394,6 +4220,7 @@ export {
3394
4220
  MenuItem,
3395
4221
  MenuLabel,
3396
4222
  MenuSeparator,
4223
+ Modal_default as Modal,
3397
4224
  NavButton_default as NavButton,
3398
4225
  ProfileMenuFooter,
3399
4226
  ProfileMenuHeader,
@@ -3408,6 +4235,7 @@ export {
3408
4235
  SelectTrigger,
3409
4236
  SelectValue,
3410
4237
  SelectionButton_default as SelectionButton,
4238
+ Stepper_default as Stepper,
3411
4239
  Table_default as Table,
3412
4240
  Text_default as Text,
3413
4241
  TextArea_default as TextArea,