analytica-frontend-lib 1.0.85 → 1.0.87

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 (291) hide show
  1. package/dist/Accordation/index.js +0 -1
  2. package/dist/Accordation/index.mjs +0 -1
  3. package/dist/Alert/index.js +0 -1
  4. package/dist/Alert/index.mjs +0 -1
  5. package/dist/AlertDialog/index.js +0 -1
  6. package/dist/AlertDialog/index.mjs +0 -1
  7. package/dist/Alternative/index.js +0 -1
  8. package/dist/Alternative/index.mjs +0 -1
  9. package/dist/Auth/AuthProvider/index.js +0 -1
  10. package/dist/Auth/AuthProvider/index.mjs +0 -1
  11. package/dist/Auth/ProtectedRoute/index.js +0 -1
  12. package/dist/Auth/ProtectedRoute/index.mjs +0 -1
  13. package/dist/Auth/PublicRoute/index.js +0 -1
  14. package/dist/Auth/PublicRoute/index.mjs +0 -1
  15. package/dist/Auth/getRootDomain/index.js +0 -1
  16. package/dist/Auth/getRootDomain/index.mjs +0 -1
  17. package/dist/Auth/index.js +0 -1
  18. package/dist/Auth/index.mjs +0 -1
  19. package/dist/Auth/useApiConfig/index.js +0 -1
  20. package/dist/Auth/useApiConfig/index.mjs +0 -1
  21. package/dist/Auth/useAuth/index.js +0 -1
  22. package/dist/Auth/useAuth/index.mjs +0 -1
  23. package/dist/Auth/useAuthGuard/index.js +0 -1
  24. package/dist/Auth/useAuthGuard/index.mjs +0 -1
  25. package/dist/Auth/useRouteAuth/index.js +0 -1
  26. package/dist/Auth/useRouteAuth/index.mjs +0 -1
  27. package/dist/Auth/useUrlAuthentication/index.js +0 -1
  28. package/dist/Auth/useUrlAuthentication/index.mjs +0 -1
  29. package/dist/Auth/withAuth/index.js +0 -1
  30. package/dist/Auth/withAuth/index.mjs +0 -1
  31. package/dist/Auth/zustandAuthAdapter/index.js +0 -1
  32. package/dist/Auth/zustandAuthAdapter/index.mjs +0 -1
  33. package/dist/Badge/index.js +0 -1
  34. package/dist/Badge/index.mjs +0 -1
  35. package/dist/Button/index.js +0 -1
  36. package/dist/Button/index.mjs +0 -1
  37. package/dist/Calendar/index.js +0 -1
  38. package/dist/Calendar/index.mjs +0 -1
  39. package/dist/Card/index.js +0 -1
  40. package/dist/Card/index.mjs +0 -1
  41. package/dist/CheckBox/index.js +0 -1
  42. package/dist/CheckBox/index.mjs +0 -1
  43. package/dist/Chips/index.js +0 -1
  44. package/dist/Chips/index.mjs +0 -1
  45. package/dist/Divider/index.js +0 -1
  46. package/dist/Divider/index.mjs +0 -1
  47. package/dist/DropdownMenu/index.js +0 -1
  48. package/dist/DropdownMenu/index.mjs +0 -1
  49. package/dist/IconButton/index.js +0 -1
  50. package/dist/IconButton/index.mjs +0 -1
  51. package/dist/IconRoundedButton/index.js +0 -1
  52. package/dist/IconRoundedButton/index.mjs +0 -1
  53. package/dist/Input/index.js +0 -1
  54. package/dist/Input/index.mjs +0 -1
  55. package/dist/Menu/index.js +0 -1
  56. package/dist/Menu/index.mjs +0 -1
  57. package/dist/Modal/index.js +0 -1
  58. package/dist/Modal/index.mjs +0 -1
  59. package/dist/MultipleChoice/index.js +660 -0
  60. package/dist/MultipleChoice/index.mjs +647 -0
  61. package/dist/NavButton/index.js +0 -1
  62. package/dist/NavButton/index.mjs +0 -1
  63. package/dist/NotFound/index.js +0 -1
  64. package/dist/NotFound/index.mjs +0 -1
  65. package/dist/ProgressBar/index.js +0 -1
  66. package/dist/ProgressBar/index.mjs +0 -1
  67. package/dist/ProgressCircle/index.js +0 -1
  68. package/dist/ProgressCircle/index.mjs +0 -1
  69. package/dist/Quiz/index.js +957 -298
  70. package/dist/Quiz/index.mjs +974 -297
  71. package/dist/Quiz/useQuizStore/index.js +79 -35
  72. package/dist/Quiz/useQuizStore/index.mjs +79 -35
  73. package/dist/Radio/index.js +0 -1
  74. package/dist/Radio/index.mjs +0 -1
  75. package/dist/Select/index.js +2 -3
  76. package/dist/Select/index.mjs +2 -3
  77. package/dist/SelectionButton/index.js +0 -1
  78. package/dist/SelectionButton/index.mjs +0 -1
  79. package/dist/Skeleton/index.js +0 -1
  80. package/dist/Skeleton/index.mjs +0 -1
  81. package/dist/Stepper/index.js +0 -1
  82. package/dist/Stepper/index.mjs +0 -1
  83. package/dist/Table/index.js +0 -1
  84. package/dist/Table/index.mjs +0 -1
  85. package/dist/Text/index.js +0 -1
  86. package/dist/Text/index.mjs +0 -1
  87. package/dist/TextArea/index.js +0 -1
  88. package/dist/TextArea/index.mjs +0 -1
  89. package/dist/Toast/ToastStore/index.js +0 -1
  90. package/dist/Toast/ToastStore/index.mjs +0 -1
  91. package/dist/Toast/Toaster/index.js +0 -1
  92. package/dist/Toast/Toaster/index.mjs +0 -1
  93. package/dist/Toast/index.js +0 -1
  94. package/dist/Toast/index.mjs +0 -1
  95. package/dist/index.css +46 -1
  96. package/dist/index.js +1399 -937
  97. package/dist/index.mjs +1340 -868
  98. package/dist/styles.css +46 -1
  99. package/package.json +4 -2
  100. package/dist/Accordation/index.d.mts +0 -12
  101. package/dist/Accordation/index.d.ts +0 -12
  102. package/dist/Accordation/index.js.map +0 -1
  103. package/dist/Accordation/index.mjs.map +0 -1
  104. package/dist/Alert/index.d.mts +0 -13
  105. package/dist/Alert/index.d.ts +0 -13
  106. package/dist/Alert/index.js.map +0 -1
  107. package/dist/Alert/index.mjs.map +0 -1
  108. package/dist/AlertDialog/index.d.mts +0 -36
  109. package/dist/AlertDialog/index.d.ts +0 -36
  110. package/dist/AlertDialog/index.js.map +0 -1
  111. package/dist/AlertDialog/index.mjs.map +0 -1
  112. package/dist/Alternative/index.d.mts +0 -81
  113. package/dist/Alternative/index.d.ts +0 -81
  114. package/dist/Alternative/index.js.map +0 -1
  115. package/dist/Alternative/index.mjs.map +0 -1
  116. package/dist/Auth/AuthProvider/index.d.mts +0 -3
  117. package/dist/Auth/AuthProvider/index.d.ts +0 -3
  118. package/dist/Auth/AuthProvider/index.js.map +0 -1
  119. package/dist/Auth/AuthProvider/index.mjs.map +0 -1
  120. package/dist/Auth/ProtectedRoute/index.d.mts +0 -3
  121. package/dist/Auth/ProtectedRoute/index.d.ts +0 -3
  122. package/dist/Auth/ProtectedRoute/index.js.map +0 -1
  123. package/dist/Auth/ProtectedRoute/index.mjs.map +0 -1
  124. package/dist/Auth/PublicRoute/index.d.mts +0 -3
  125. package/dist/Auth/PublicRoute/index.d.ts +0 -3
  126. package/dist/Auth/PublicRoute/index.js.map +0 -1
  127. package/dist/Auth/PublicRoute/index.mjs.map +0 -1
  128. package/dist/Auth/getRootDomain/index.d.mts +0 -3
  129. package/dist/Auth/getRootDomain/index.d.ts +0 -3
  130. package/dist/Auth/getRootDomain/index.js.map +0 -1
  131. package/dist/Auth/getRootDomain/index.mjs.map +0 -1
  132. package/dist/Auth/index.d.mts +0 -312
  133. package/dist/Auth/index.d.ts +0 -312
  134. package/dist/Auth/index.js.map +0 -1
  135. package/dist/Auth/index.mjs.map +0 -1
  136. package/dist/Auth/useApiConfig/index.d.mts +0 -43
  137. package/dist/Auth/useApiConfig/index.d.ts +0 -43
  138. package/dist/Auth/useApiConfig/index.js.map +0 -1
  139. package/dist/Auth/useApiConfig/index.mjs.map +0 -1
  140. package/dist/Auth/useAuth/index.d.mts +0 -3
  141. package/dist/Auth/useAuth/index.d.ts +0 -3
  142. package/dist/Auth/useAuth/index.js.map +0 -1
  143. package/dist/Auth/useAuth/index.mjs.map +0 -1
  144. package/dist/Auth/useAuthGuard/index.d.mts +0 -3
  145. package/dist/Auth/useAuthGuard/index.d.ts +0 -3
  146. package/dist/Auth/useAuthGuard/index.js.map +0 -1
  147. package/dist/Auth/useAuthGuard/index.mjs.map +0 -1
  148. package/dist/Auth/useRouteAuth/index.d.mts +0 -3
  149. package/dist/Auth/useRouteAuth/index.d.ts +0 -3
  150. package/dist/Auth/useRouteAuth/index.js.map +0 -1
  151. package/dist/Auth/useRouteAuth/index.mjs.map +0 -1
  152. package/dist/Auth/useUrlAuthentication/index.d.mts +0 -58
  153. package/dist/Auth/useUrlAuthentication/index.d.ts +0 -58
  154. package/dist/Auth/useUrlAuthentication/index.js.map +0 -1
  155. package/dist/Auth/useUrlAuthentication/index.mjs.map +0 -1
  156. package/dist/Auth/withAuth/index.d.mts +0 -3
  157. package/dist/Auth/withAuth/index.d.ts +0 -3
  158. package/dist/Auth/withAuth/index.js.map +0 -1
  159. package/dist/Auth/withAuth/index.mjs.map +0 -1
  160. package/dist/Auth/zustandAuthAdapter/index.d.mts +0 -75
  161. package/dist/Auth/zustandAuthAdapter/index.d.ts +0 -75
  162. package/dist/Auth/zustandAuthAdapter/index.js.map +0 -1
  163. package/dist/Auth/zustandAuthAdapter/index.mjs.map +0 -1
  164. package/dist/Badge/index.d.mts +0 -46
  165. package/dist/Badge/index.d.ts +0 -46
  166. package/dist/Badge/index.js.map +0 -1
  167. package/dist/Badge/index.mjs.map +0 -1
  168. package/dist/Button/index.d.mts +0 -45
  169. package/dist/Button/index.d.ts +0 -45
  170. package/dist/Button/index.js.map +0 -1
  171. package/dist/Button/index.mjs.map +0 -1
  172. package/dist/Calendar/index.d.mts +0 -60
  173. package/dist/Calendar/index.d.ts +0 -60
  174. package/dist/Calendar/index.js.map +0 -1
  175. package/dist/Calendar/index.mjs.map +0 -1
  176. package/dist/Card/index.d.mts +0 -150
  177. package/dist/Card/index.d.ts +0 -150
  178. package/dist/Card/index.js.map +0 -1
  179. package/dist/Card/index.mjs.map +0 -1
  180. package/dist/CheckBox/index.d.mts +0 -74
  181. package/dist/CheckBox/index.d.ts +0 -74
  182. package/dist/CheckBox/index.js.map +0 -1
  183. package/dist/CheckBox/index.mjs.map +0 -1
  184. package/dist/Chips/index.d.mts +0 -41
  185. package/dist/Chips/index.d.ts +0 -41
  186. package/dist/Chips/index.js.map +0 -1
  187. package/dist/Chips/index.mjs.map +0 -1
  188. package/dist/Divider/index.d.mts +0 -32
  189. package/dist/Divider/index.d.ts +0 -32
  190. package/dist/Divider/index.js.map +0 -1
  191. package/dist/Divider/index.mjs.map +0 -1
  192. package/dist/DropdownMenu/index.d.mts +0 -68
  193. package/dist/DropdownMenu/index.d.ts +0 -68
  194. package/dist/DropdownMenu/index.js.map +0 -1
  195. package/dist/DropdownMenu/index.mjs.map +0 -1
  196. package/dist/IconButton/index.d.mts +0 -76
  197. package/dist/IconButton/index.d.ts +0 -76
  198. package/dist/IconButton/index.js.map +0 -1
  199. package/dist/IconButton/index.mjs.map +0 -1
  200. package/dist/IconRoundedButton/index.d.mts +0 -34
  201. package/dist/IconRoundedButton/index.d.ts +0 -34
  202. package/dist/IconRoundedButton/index.js.map +0 -1
  203. package/dist/IconRoundedButton/index.mjs.map +0 -1
  204. package/dist/Input/index.d.mts +0 -27
  205. package/dist/Input/index.d.ts +0 -27
  206. package/dist/Input/index.js.map +0 -1
  207. package/dist/Input/index.mjs.map +0 -1
  208. package/dist/Menu/index.d.mts +0 -48
  209. package/dist/Menu/index.d.ts +0 -48
  210. package/dist/Menu/index.js.map +0 -1
  211. package/dist/Menu/index.mjs.map +0 -1
  212. package/dist/Modal/index.d.mts +0 -66
  213. package/dist/Modal/index.d.ts +0 -66
  214. package/dist/Modal/index.js.map +0 -1
  215. package/dist/Modal/index.mjs.map +0 -1
  216. package/dist/NavButton/index.d.mts +0 -57
  217. package/dist/NavButton/index.d.ts +0 -57
  218. package/dist/NavButton/index.js.map +0 -1
  219. package/dist/NavButton/index.mjs.map +0 -1
  220. package/dist/NotFound/index.d.mts +0 -58
  221. package/dist/NotFound/index.d.ts +0 -58
  222. package/dist/NotFound/index.js.map +0 -1
  223. package/dist/NotFound/index.mjs.map +0 -1
  224. package/dist/ProgressBar/index.d.mts +0 -95
  225. package/dist/ProgressBar/index.d.ts +0 -95
  226. package/dist/ProgressBar/index.js.map +0 -1
  227. package/dist/ProgressBar/index.mjs.map +0 -1
  228. package/dist/ProgressCircle/index.d.mts +0 -60
  229. package/dist/ProgressCircle/index.d.ts +0 -60
  230. package/dist/ProgressCircle/index.js.map +0 -1
  231. package/dist/ProgressCircle/index.mjs.map +0 -1
  232. package/dist/Quiz/index.d.mts +0 -52
  233. package/dist/Quiz/index.d.ts +0 -52
  234. package/dist/Quiz/index.js.map +0 -1
  235. package/dist/Quiz/index.mjs.map +0 -1
  236. package/dist/Quiz/useQuizStore/index.d.mts +0 -140
  237. package/dist/Quiz/useQuizStore/index.d.ts +0 -140
  238. package/dist/Quiz/useQuizStore/index.js.map +0 -1
  239. package/dist/Quiz/useQuizStore/index.mjs.map +0 -1
  240. package/dist/Radio/index.d.mts +0 -203
  241. package/dist/Radio/index.d.ts +0 -203
  242. package/dist/Radio/index.js.map +0 -1
  243. package/dist/Radio/index.mjs.map +0 -1
  244. package/dist/Select/index.d.mts +0 -58
  245. package/dist/Select/index.d.ts +0 -58
  246. package/dist/Select/index.js.map +0 -1
  247. package/dist/Select/index.mjs.map +0 -1
  248. package/dist/SelectionButton/index.d.mts +0 -57
  249. package/dist/SelectionButton/index.d.ts +0 -57
  250. package/dist/SelectionButton/index.js.map +0 -1
  251. package/dist/SelectionButton/index.mjs.map +0 -1
  252. package/dist/Skeleton/index.d.mts +0 -40
  253. package/dist/Skeleton/index.d.ts +0 -40
  254. package/dist/Skeleton/index.js.map +0 -1
  255. package/dist/Skeleton/index.mjs.map +0 -1
  256. package/dist/Stepper/index.d.mts +0 -169
  257. package/dist/Stepper/index.d.ts +0 -169
  258. package/dist/Stepper/index.js.map +0 -1
  259. package/dist/Stepper/index.mjs.map +0 -1
  260. package/dist/Table/index.d.mts +0 -17
  261. package/dist/Table/index.d.ts +0 -17
  262. package/dist/Table/index.js.map +0 -1
  263. package/dist/Table/index.mjs.map +0 -1
  264. package/dist/Text/index.d.mts +0 -58
  265. package/dist/Text/index.d.ts +0 -58
  266. package/dist/Text/index.js.map +0 -1
  267. package/dist/Text/index.mjs.map +0 -1
  268. package/dist/TextArea/index.d.mts +0 -70
  269. package/dist/TextArea/index.d.ts +0 -70
  270. package/dist/TextArea/index.js.map +0 -1
  271. package/dist/TextArea/index.mjs.map +0 -1
  272. package/dist/Toast/ToastStore/index.d.mts +0 -19
  273. package/dist/Toast/ToastStore/index.d.ts +0 -19
  274. package/dist/Toast/ToastStore/index.js.map +0 -1
  275. package/dist/Toast/ToastStore/index.mjs.map +0 -1
  276. package/dist/Toast/Toaster/index.d.mts +0 -16
  277. package/dist/Toast/Toaster/index.d.ts +0 -16
  278. package/dist/Toast/Toaster/index.js.map +0 -1
  279. package/dist/Toast/Toaster/index.mjs.map +0 -1
  280. package/dist/Toast/index.d.mts +0 -17
  281. package/dist/Toast/index.d.ts +0 -17
  282. package/dist/Toast/index.js.map +0 -1
  283. package/dist/Toast/index.mjs.map +0 -1
  284. package/dist/index.css.map +0 -1
  285. package/dist/index.d.mts +0 -41
  286. package/dist/index.d.ts +0 -41
  287. package/dist/index.js.map +0 -1
  288. package/dist/index.mjs.map +0 -1
  289. package/dist/styles.css.map +0 -1
  290. package/dist/styles.d.mts +0 -2
  291. package/dist/styles.d.ts +0 -2
@@ -0,0 +1,647 @@
1
+ // src/components/MultipleChoice/MultipleChoice.tsx
2
+ import { useEffect as useEffect2, useState as useState2 } from "react";
3
+
4
+ // src/components/CheckBox/CheckboxList.tsx
5
+ import {
6
+ forwardRef as forwardRef2,
7
+ useId as useId2,
8
+ useEffect,
9
+ useRef,
10
+ Children,
11
+ cloneElement,
12
+ isValidElement
13
+ } from "react";
14
+ import { create, useStore } from "zustand";
15
+
16
+ // src/components/CheckBox/CheckBox.tsx
17
+ import {
18
+ forwardRef,
19
+ useState,
20
+ useId
21
+ } from "react";
22
+
23
+ // src/utils/utils.ts
24
+ import { clsx } from "clsx";
25
+ import { twMerge } from "tailwind-merge";
26
+ function cn(...inputs) {
27
+ return twMerge(clsx(inputs));
28
+ }
29
+
30
+ // src/components/Text/Text.tsx
31
+ import { jsx } from "react/jsx-runtime";
32
+ var Text = ({
33
+ children,
34
+ size = "md",
35
+ weight = "normal",
36
+ color = "text-text-950",
37
+ as,
38
+ className = "",
39
+ ...props
40
+ }) => {
41
+ let sizeClasses = "";
42
+ let weightClasses = "";
43
+ const sizeClassMap = {
44
+ "2xs": "text-2xs",
45
+ xs: "text-xs",
46
+ sm: "text-sm",
47
+ md: "text-md",
48
+ lg: "text-lg",
49
+ xl: "text-xl",
50
+ "2xl": "text-2xl",
51
+ "3xl": "text-3xl",
52
+ "4xl": "text-4xl",
53
+ "5xl": "text-5xl",
54
+ "6xl": "text-6xl"
55
+ };
56
+ sizeClasses = sizeClassMap[size] ?? sizeClassMap.md;
57
+ const weightClassMap = {
58
+ hairline: "font-hairline",
59
+ light: "font-light",
60
+ normal: "font-normal",
61
+ medium: "font-medium",
62
+ semibold: "font-semibold",
63
+ bold: "font-bold",
64
+ extrabold: "font-extrabold",
65
+ black: "font-black"
66
+ };
67
+ weightClasses = weightClassMap[weight] ?? weightClassMap.normal;
68
+ const baseClasses = "font-primary";
69
+ const Component = as ?? "p";
70
+ return /* @__PURE__ */ jsx(
71
+ Component,
72
+ {
73
+ className: cn(baseClasses, sizeClasses, weightClasses, color, className),
74
+ ...props,
75
+ children
76
+ }
77
+ );
78
+ };
79
+ var Text_default = Text;
80
+
81
+ // src/components/CheckBox/CheckBox.tsx
82
+ import { Check, Minus } from "phosphor-react";
83
+ import { jsx as jsx2, jsxs } from "react/jsx-runtime";
84
+ var SIZE_CLASSES = {
85
+ small: {
86
+ checkbox: "w-4 h-4",
87
+ // 16px x 16px
88
+ textSize: "sm",
89
+ spacing: "gap-1.5",
90
+ // 6px
91
+ borderWidth: "border-2",
92
+ iconSize: 14,
93
+ // pixels for Phosphor icons
94
+ labelHeight: "h-[21px]"
95
+ },
96
+ medium: {
97
+ checkbox: "w-5 h-5",
98
+ // 20px x 20px
99
+ textSize: "md",
100
+ spacing: "gap-2",
101
+ // 8px
102
+ borderWidth: "border-2",
103
+ iconSize: 16,
104
+ // pixels for Phosphor icons
105
+ labelHeight: "h-6"
106
+ },
107
+ large: {
108
+ checkbox: "w-6 h-6",
109
+ // 24px x 24px
110
+ textSize: "lg",
111
+ spacing: "gap-2",
112
+ // 8px
113
+ borderWidth: "border-[3px]",
114
+ // 3px border
115
+ iconSize: 20,
116
+ // pixels for Phosphor icons
117
+ labelHeight: "h-[27px]"
118
+ }
119
+ };
120
+ var BASE_CHECKBOX_CLASSES = "rounded border cursor-pointer transition-all duration-200 flex items-center justify-center focus:outline-none";
121
+ var STATE_CLASSES = {
122
+ default: {
123
+ unchecked: "border-border-400 bg-background hover:border-border-500",
124
+ checked: "border-primary-950 bg-primary-950 text-text hover:border-primary-800 hover:bg-primary-800"
125
+ },
126
+ hovered: {
127
+ unchecked: "border-border-500 bg-background",
128
+ checked: "border-primary-800 bg-primary-800 text-text"
129
+ },
130
+ focused: {
131
+ unchecked: "border-indicator-info bg-background ring-2 ring-indicator-info/20",
132
+ checked: "border-indicator-info bg-primary-950 text-text ring-2 ring-indicator-info/20"
133
+ },
134
+ invalid: {
135
+ unchecked: "border-error-700 bg-background hover:border-error-600",
136
+ checked: "border-error-700 bg-primary-950 text-text"
137
+ },
138
+ disabled: {
139
+ unchecked: "border-border-400 bg-background cursor-not-allowed opacity-40",
140
+ checked: "border-primary-600 bg-primary-600 text-text cursor-not-allowed opacity-40"
141
+ }
142
+ };
143
+ var CheckBox = forwardRef(
144
+ ({
145
+ label,
146
+ size = "medium",
147
+ state = "default",
148
+ indeterminate = false,
149
+ errorMessage,
150
+ helperText,
151
+ className = "",
152
+ labelClassName = "",
153
+ checked: checkedProp,
154
+ disabled,
155
+ id,
156
+ onChange,
157
+ ...props
158
+ }, ref) => {
159
+ const generatedId = useId();
160
+ const inputId = id ?? `checkbox-${generatedId}`;
161
+ const [internalChecked, setInternalChecked] = useState(false);
162
+ const isControlled = checkedProp !== void 0;
163
+ const checked = isControlled ? checkedProp : internalChecked;
164
+ const handleChange = (event) => {
165
+ if (!isControlled) {
166
+ setInternalChecked(event.target.checked);
167
+ }
168
+ onChange?.(event);
169
+ };
170
+ const currentState = disabled ? "disabled" : state;
171
+ const sizeClasses = SIZE_CLASSES[size];
172
+ const checkVariant = checked || indeterminate ? "checked" : "unchecked";
173
+ const stylingClasses = STATE_CLASSES[currentState][checkVariant];
174
+ const borderWidthClass = state === "focused" || state === "hovered" && size === "large" ? "border-[3px]" : sizeClasses.borderWidth;
175
+ const checkboxClasses = cn(
176
+ BASE_CHECKBOX_CLASSES,
177
+ sizeClasses.checkbox,
178
+ borderWidthClass,
179
+ stylingClasses,
180
+ className
181
+ );
182
+ const renderIcon = () => {
183
+ if (indeterminate) {
184
+ return /* @__PURE__ */ jsx2(
185
+ Minus,
186
+ {
187
+ size: sizeClasses.iconSize,
188
+ weight: "bold",
189
+ color: "currentColor"
190
+ }
191
+ );
192
+ }
193
+ if (checked) {
194
+ return /* @__PURE__ */ jsx2(
195
+ Check,
196
+ {
197
+ size: sizeClasses.iconSize,
198
+ weight: "bold",
199
+ color: "currentColor"
200
+ }
201
+ );
202
+ }
203
+ return null;
204
+ };
205
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
206
+ /* @__PURE__ */ jsxs(
207
+ "div",
208
+ {
209
+ className: cn(
210
+ "flex flex-row items-center",
211
+ sizeClasses.spacing,
212
+ disabled ? "opacity-40" : ""
213
+ ),
214
+ children: [
215
+ /* @__PURE__ */ jsx2(
216
+ "input",
217
+ {
218
+ ref,
219
+ type: "checkbox",
220
+ id: inputId,
221
+ checked,
222
+ disabled,
223
+ onChange: handleChange,
224
+ className: "sr-only",
225
+ ...props
226
+ }
227
+ ),
228
+ /* @__PURE__ */ jsx2("label", { htmlFor: inputId, className: checkboxClasses, children: renderIcon() }),
229
+ label && /* @__PURE__ */ jsx2(
230
+ "div",
231
+ {
232
+ className: cn(
233
+ "flex flex-row items-center",
234
+ sizeClasses.labelHeight
235
+ ),
236
+ children: /* @__PURE__ */ jsx2(
237
+ Text_default,
238
+ {
239
+ as: "label",
240
+ htmlFor: inputId,
241
+ size: sizeClasses.textSize,
242
+ weight: "normal",
243
+ className: cn(
244
+ "cursor-pointer select-none leading-[150%] flex items-center font-roboto",
245
+ labelClassName
246
+ ),
247
+ children: label
248
+ }
249
+ )
250
+ }
251
+ )
252
+ ]
253
+ }
254
+ ),
255
+ errorMessage && /* @__PURE__ */ jsx2(
256
+ Text_default,
257
+ {
258
+ size: "sm",
259
+ weight: "normal",
260
+ className: "mt-1.5",
261
+ color: "text-error-600",
262
+ children: errorMessage
263
+ }
264
+ ),
265
+ helperText && !errorMessage && /* @__PURE__ */ jsx2(
266
+ Text_default,
267
+ {
268
+ size: "sm",
269
+ weight: "normal",
270
+ className: "mt-1.5",
271
+ color: "text-text-500",
272
+ children: helperText
273
+ }
274
+ )
275
+ ] });
276
+ }
277
+ );
278
+ CheckBox.displayName = "CheckBox";
279
+ var CheckBox_default = CheckBox;
280
+
281
+ // src/components/CheckBox/CheckboxList.tsx
282
+ import { jsx as jsx3 } from "react/jsx-runtime";
283
+ var createCheckboxListStore = (name, defaultValues, disabled, onValuesChange) => create((set, get) => ({
284
+ values: defaultValues,
285
+ setValues: (values) => {
286
+ if (!get().disabled) {
287
+ set({ values });
288
+ get().onValuesChange?.(values);
289
+ }
290
+ },
291
+ toggleValue: (value) => {
292
+ if (!get().disabled) {
293
+ const currentValues = get().values;
294
+ const newValues = currentValues.includes(value) ? currentValues.filter((v) => v !== value) : [...currentValues, value];
295
+ set({ values: newValues });
296
+ get().onValuesChange?.(newValues);
297
+ }
298
+ },
299
+ onValuesChange,
300
+ disabled,
301
+ name
302
+ }));
303
+ var useCheckboxListStore = (externalStore) => {
304
+ if (!externalStore) {
305
+ throw new Error("CheckboxListItem must be used within a CheckboxList");
306
+ }
307
+ return externalStore;
308
+ };
309
+ var injectStore = (children, store) => Children.map(children, (child) => {
310
+ if (!isValidElement(child)) return child;
311
+ const typedChild = child;
312
+ const shouldInject = typedChild.type === CheckboxListItem;
313
+ return cloneElement(typedChild, {
314
+ ...shouldInject ? { store } : {},
315
+ ...typedChild.props.children ? { children: injectStore(typedChild.props.children, store) } : {}
316
+ });
317
+ });
318
+ var CheckboxList = forwardRef2(
319
+ ({
320
+ values: propValues,
321
+ defaultValues = [],
322
+ onValuesChange,
323
+ name: propName,
324
+ disabled = false,
325
+ className = "",
326
+ children,
327
+ ...props
328
+ }, ref) => {
329
+ const generatedId = useId2();
330
+ const name = propName || `checkbox-list-${generatedId}`;
331
+ const storeRef = useRef(null);
332
+ storeRef.current ??= createCheckboxListStore(
333
+ name,
334
+ defaultValues,
335
+ disabled,
336
+ onValuesChange
337
+ );
338
+ const store = storeRef.current;
339
+ const { setValues } = useStore(store, (s) => s);
340
+ useEffect(() => {
341
+ const currentValues = store.getState().values;
342
+ if (currentValues.length > 0 && onValuesChange) {
343
+ onValuesChange(currentValues);
344
+ }
345
+ }, []);
346
+ useEffect(() => {
347
+ if (propValues !== void 0) {
348
+ setValues(propValues);
349
+ }
350
+ }, [propValues, setValues]);
351
+ useEffect(() => {
352
+ store.setState({ disabled });
353
+ }, [disabled, store]);
354
+ return /* @__PURE__ */ jsx3(
355
+ "div",
356
+ {
357
+ ref,
358
+ className: cn("flex flex-col gap-2 w-full", className),
359
+ "aria-label": name,
360
+ ...props,
361
+ children: injectStore(children, store)
362
+ }
363
+ );
364
+ }
365
+ );
366
+ CheckboxList.displayName = "CheckboxList";
367
+ var CheckboxListItem = forwardRef2(
368
+ ({
369
+ value,
370
+ store: externalStore,
371
+ disabled: itemDisabled,
372
+ size = "medium",
373
+ state = "default",
374
+ className = "",
375
+ id,
376
+ ...props
377
+ }, ref) => {
378
+ const store = useCheckboxListStore(externalStore);
379
+ const {
380
+ values: groupValues,
381
+ toggleValue,
382
+ disabled: groupDisabled,
383
+ name
384
+ } = useStore(store);
385
+ const generatedId = useId2();
386
+ const inputId = id ?? `checkbox-item-${generatedId}`;
387
+ const isChecked = groupValues.includes(value);
388
+ const isDisabled = groupDisabled || itemDisabled;
389
+ const currentState = isDisabled ? "disabled" : state;
390
+ return /* @__PURE__ */ jsx3(
391
+ CheckBox_default,
392
+ {
393
+ ref,
394
+ id: inputId,
395
+ name,
396
+ value,
397
+ checked: isChecked,
398
+ disabled: isDisabled,
399
+ size,
400
+ state: currentState,
401
+ className,
402
+ onChange: () => {
403
+ if (!isDisabled) {
404
+ toggleValue(value);
405
+ }
406
+ },
407
+ ...props
408
+ }
409
+ );
410
+ }
411
+ );
412
+ CheckboxListItem.displayName = "CheckboxListItem";
413
+ var CheckboxList_default = CheckboxList;
414
+
415
+ // src/components/MultipleChoice/MultipleChoice.tsx
416
+ import { CheckCircle, XCircle, Check as Check2 } from "phosphor-react";
417
+
418
+ // src/components/Badge/Badge.tsx
419
+ import { Bell } from "phosphor-react";
420
+ import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
421
+ var VARIANT_ACTION_CLASSES = {
422
+ solid: {
423
+ error: "bg-error-background text-error-700 focus-visible:outline-none",
424
+ warning: "bg-warning text-warning-800 focus-visible:outline-none",
425
+ success: "bg-success text-success-800 focus-visible:outline-none",
426
+ info: "bg-info text-info-800 focus-visible:outline-none",
427
+ muted: "bg-background-muted text-background-800 focus-visible:outline-none"
428
+ },
429
+ outlined: {
430
+ error: "bg-error text-error-700 border border-error-300 focus-visible:outline-none",
431
+ warning: "bg-warning text-warning-800 border border-warning-300 focus-visible:outline-none",
432
+ success: "bg-success text-success-800 border border-success-300 focus-visible:outline-none",
433
+ info: "bg-info text-info-800 border border-info-300 focus-visible:outline-none",
434
+ muted: "bg-background-muted text-background-800 border border-border-300 focus-visible:outline-none"
435
+ },
436
+ exams: {
437
+ exam1: "bg-exam-1 text-info-700 focus-visible:outline-none",
438
+ exam2: "bg-exam-2 text-typography-1 focus-visible:outline-none",
439
+ exam3: "bg-exam-3 text-typography-2 focus-visible:outline-none",
440
+ exam4: "bg-exam-4 text-success-700 focus-visible:outline-none"
441
+ },
442
+ examsOutlined: {
443
+ exam1: "bg-exam-1 text-info-700 border border-info-700 focus-visible:outline-none",
444
+ exam2: "bg-exam-2 text-typography-1 border border-typography-1 focus-visible:outline-none",
445
+ exam3: "bg-exam-3 text-typography-2 border border-typography-2 focus-visible:outline-none",
446
+ exam4: "bg-exam-4 text-success-700 border border-success-700 focus-visible:outline-none"
447
+ },
448
+ resultStatus: {
449
+ negative: "bg-error text-error-800 focus-visible:outline-none",
450
+ positive: "bg-success text-success-800 focus-visible:outline-none"
451
+ },
452
+ notification: "text-primary"
453
+ };
454
+ var SIZE_CLASSES2 = {
455
+ small: "text-2xs px-2 py-1",
456
+ medium: "text-xs px-2 py-1",
457
+ large: "text-sm px-2 py-1"
458
+ };
459
+ var SIZE_CLASSES_ICON = {
460
+ small: "size-3",
461
+ medium: "size-3.5",
462
+ large: "size-4"
463
+ };
464
+ var Badge = ({
465
+ children,
466
+ iconLeft,
467
+ iconRight,
468
+ size = "medium",
469
+ variant = "solid",
470
+ action = "error",
471
+ className = "",
472
+ notificationActive = false,
473
+ ...props
474
+ }) => {
475
+ const sizeClasses = SIZE_CLASSES2[size];
476
+ const sizeClassesIcon = SIZE_CLASSES_ICON[size];
477
+ const variantActionMap = VARIANT_ACTION_CLASSES[variant] || {};
478
+ const variantClasses = typeof variantActionMap === "string" ? variantActionMap : variantActionMap[action] ?? variantActionMap.muted ?? "";
479
+ const baseClasses = "inline-flex items-center justify-center rounded-xs font-normal gap-1 relative";
480
+ const baseClassesIcon = "flex items-center";
481
+ if (variant === "notification") {
482
+ return /* @__PURE__ */ jsxs2(
483
+ "div",
484
+ {
485
+ className: cn(baseClasses, variantClasses, sizeClasses, className),
486
+ ...props,
487
+ children: [
488
+ /* @__PURE__ */ jsx4(Bell, { size: 24, className: "text-current", "aria-hidden": "true" }),
489
+ notificationActive && /* @__PURE__ */ jsx4(
490
+ "span",
491
+ {
492
+ "data-testid": "notification-dot",
493
+ className: "absolute top-[5px] right-[10px] block h-2 w-2 rounded-full bg-indicator-error ring-2 ring-white"
494
+ }
495
+ )
496
+ ]
497
+ }
498
+ );
499
+ }
500
+ return /* @__PURE__ */ jsxs2(
501
+ "div",
502
+ {
503
+ className: cn(baseClasses, variantClasses, sizeClasses, className),
504
+ ...props,
505
+ children: [
506
+ iconLeft && /* @__PURE__ */ jsx4("span", { className: cn(baseClassesIcon, sizeClassesIcon), children: iconLeft }),
507
+ children,
508
+ iconRight && /* @__PURE__ */ jsx4("span", { className: cn(baseClassesIcon, sizeClassesIcon), children: iconRight })
509
+ ]
510
+ }
511
+ );
512
+ };
513
+ var Badge_default = Badge;
514
+
515
+ // src/components/MultipleChoice/MultipleChoice.tsx
516
+ import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
517
+ var MultipleChoiceList = ({
518
+ disabled = false,
519
+ className = "",
520
+ choices,
521
+ name,
522
+ selectedValues,
523
+ onHandleSelectedValues,
524
+ mode = "interactive"
525
+ }) => {
526
+ const [actualValue, setActualValue] = useState2(selectedValues);
527
+ useEffect2(() => {
528
+ setActualValue(selectedValues);
529
+ }, [selectedValues]);
530
+ const getStatusBadge = (status) => {
531
+ switch (status) {
532
+ case "correct":
533
+ return /* @__PURE__ */ jsx5(Badge_default, { variant: "solid", action: "success", iconLeft: /* @__PURE__ */ jsx5(CheckCircle, {}), children: "Resposta correta" });
534
+ case "incorrect":
535
+ return /* @__PURE__ */ jsx5(Badge_default, { variant: "solid", action: "error", iconLeft: /* @__PURE__ */ jsx5(XCircle, {}), children: "Resposta incorreta" });
536
+ default:
537
+ return null;
538
+ }
539
+ };
540
+ const getStatusStyles = (status) => {
541
+ switch (status) {
542
+ case "correct":
543
+ return "bg-success-background border-success-300";
544
+ case "incorrect":
545
+ return "bg-error-background border-error-300";
546
+ default:
547
+ return `bg-background border-border-100`;
548
+ }
549
+ };
550
+ const renderVisualCheckbox = (isSelected, isDisabled) => {
551
+ const checkboxClasses = cn(
552
+ "w-5 h-5 rounded border-2 cursor-default transition-all duration-200 flex items-center justify-center",
553
+ isSelected ? "border-primary-950 bg-primary-950 text-text" : "border-border-400 bg-background",
554
+ isDisabled && "opacity-40 cursor-not-allowed"
555
+ );
556
+ return /* @__PURE__ */ jsx5("div", { className: checkboxClasses, children: isSelected && /* @__PURE__ */ jsx5(Check2, { size: 16, weight: "bold" }) });
557
+ };
558
+ if (mode === "readonly") {
559
+ return /* @__PURE__ */ jsx5("div", { className: cn("flex flex-col gap-2", className), children: choices.map((choice, i) => {
560
+ const isSelected = actualValue?.includes(choice.value) || false;
561
+ const statusStyles = getStatusStyles(choice.status);
562
+ const statusBadge = getStatusBadge(choice.status);
563
+ return /* @__PURE__ */ jsxs3(
564
+ "div",
565
+ {
566
+ className: cn(
567
+ "flex flex-row justify-between gap-2 items-start p-2 rounded-lg transition-all",
568
+ statusStyles,
569
+ choice.disabled ? "opacity-50 cursor-not-allowed" : ""
570
+ ),
571
+ children: [
572
+ /* @__PURE__ */ jsxs3("div", { className: "flex items-center gap-2 flex-1", children: [
573
+ renderVisualCheckbox(isSelected, choice.disabled || disabled),
574
+ /* @__PURE__ */ jsx5(
575
+ "span",
576
+ {
577
+ className: cn(
578
+ "flex-1",
579
+ isSelected || choice.status && choice.status != "neutral" ? "text-text-950" : "text-text-600",
580
+ choice.disabled || disabled ? "cursor-not-allowed" : "cursor-default"
581
+ ),
582
+ children: choice.label
583
+ }
584
+ )
585
+ ] }),
586
+ statusBadge && /* @__PURE__ */ jsx5("div", { className: "flex-shrink-0", children: statusBadge })
587
+ ]
588
+ },
589
+ `readonly-${choice.value}-${i}`
590
+ );
591
+ }) });
592
+ }
593
+ return /* @__PURE__ */ jsx5(
594
+ "div",
595
+ {
596
+ className: cn(
597
+ "flex flex-row justify-between gap-2 items-start p-2 rounded-lg transition-all",
598
+ disabled ? "opacity-50 cursor-not-allowed" : "",
599
+ className
600
+ ),
601
+ children: /* @__PURE__ */ jsx5(
602
+ CheckboxList_default,
603
+ {
604
+ name,
605
+ values: actualValue,
606
+ onValuesChange: (v) => {
607
+ setActualValue(v);
608
+ onHandleSelectedValues?.(v);
609
+ },
610
+ disabled,
611
+ children: choices.map((choice, i) => /* @__PURE__ */ jsxs3(
612
+ "div",
613
+ {
614
+ className: "flex flex-row gap-2 items-center",
615
+ children: [
616
+ /* @__PURE__ */ jsx5(
617
+ CheckboxListItem,
618
+ {
619
+ value: choice.value,
620
+ id: `interactive-${choice.value}-${i}`,
621
+ disabled: choice.disabled || disabled
622
+ }
623
+ ),
624
+ /* @__PURE__ */ jsx5(
625
+ "label",
626
+ {
627
+ htmlFor: `interactive-${choice.value}-${i}`,
628
+ className: cn(
629
+ "flex-1",
630
+ actualValue?.includes(choice.value) ? "text-text-950" : "text-text-600",
631
+ choice.disabled || disabled ? "cursor-not-allowed" : "cursor-pointer"
632
+ ),
633
+ children: choice.label
634
+ }
635
+ )
636
+ ]
637
+ },
638
+ `interactive-${choice.value}-${i}`
639
+ ))
640
+ }
641
+ )
642
+ }
643
+ );
644
+ };
645
+ export {
646
+ MultipleChoiceList
647
+ };
@@ -80,4 +80,3 @@ var NavButton = (0, import_react.forwardRef)(
80
80
  );
81
81
  NavButton.displayName = "NavButton";
82
82
  var NavButton_default = NavButton;
83
- //# sourceMappingURL=index.js.map
@@ -59,4 +59,3 @@ var NavButton_default = NavButton;
59
59
  export {
60
60
  NavButton_default as default
61
61
  };
62
- //# sourceMappingURL=index.mjs.map
@@ -240,4 +240,3 @@ var NotFound = ({
240
240
  );
241
241
  };
242
242
  var NotFound_default = NotFound;
243
- //# sourceMappingURL=index.js.map
@@ -217,4 +217,3 @@ var NotFound_default = NotFound;
217
217
  export {
218
218
  NotFound_default as default
219
219
  };
220
- //# sourceMappingURL=index.mjs.map
@@ -557,4 +557,3 @@ var ProgressBar = ({
557
557
  );
558
558
  };
559
559
  var ProgressBar_default = ProgressBar;
560
- //# sourceMappingURL=index.js.map
@@ -534,4 +534,3 @@ var ProgressBar_default = ProgressBar;
534
534
  export {
535
535
  ProgressBar_default as default
536
536
  };
537
- //# sourceMappingURL=index.mjs.map
@@ -271,4 +271,3 @@ var ProgressCircle = ({
271
271
  );
272
272
  };
273
273
  var ProgressCircle_default = ProgressCircle;
274
- //# sourceMappingURL=index.js.map
@@ -248,4 +248,3 @@ var ProgressCircle_default = ProgressCircle;
248
248
  export {
249
249
  ProgressCircle_default as default
250
250
  };
251
- //# sourceMappingURL=index.mjs.map