analytica-frontend-lib 1.0.91 → 1.0.93

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 (298) hide show
  1. package/dist/Accordation/index.d.mts +12 -0
  2. package/dist/Accordation/index.d.ts +12 -1
  3. package/dist/Accordation/index.js +1 -0
  4. package/dist/Accordation/index.js.map +1 -0
  5. package/dist/Accordation/index.mjs +1 -0
  6. package/dist/Accordation/index.mjs.map +1 -0
  7. package/dist/Alert/index.d.mts +13 -0
  8. package/dist/Alert/index.d.ts +13 -1
  9. package/dist/Alert/index.js +1 -0
  10. package/dist/Alert/index.js.map +1 -0
  11. package/dist/Alert/index.mjs +1 -0
  12. package/dist/Alert/index.mjs.map +1 -0
  13. package/dist/AlertDialog/index.d.mts +36 -0
  14. package/dist/AlertDialog/index.d.ts +36 -1
  15. package/dist/AlertDialog/index.js +1 -0
  16. package/dist/AlertDialog/index.js.map +1 -0
  17. package/dist/AlertDialog/index.mjs +1 -0
  18. package/dist/AlertDialog/index.mjs.map +1 -0
  19. package/dist/Alternative/index.d.mts +81 -0
  20. package/dist/Alternative/index.d.ts +81 -1
  21. package/dist/Alternative/index.js +1 -0
  22. package/dist/Alternative/index.js.map +1 -0
  23. package/dist/Alternative/index.mjs +1 -0
  24. package/dist/Alternative/index.mjs.map +1 -0
  25. package/dist/Auth/AuthProvider/index.d.mts +3 -0
  26. package/dist/Auth/AuthProvider/index.d.ts +3 -1
  27. package/dist/Auth/AuthProvider/index.js +1 -0
  28. package/dist/Auth/AuthProvider/index.js.map +1 -0
  29. package/dist/Auth/AuthProvider/index.mjs +1 -0
  30. package/dist/Auth/AuthProvider/index.mjs.map +1 -0
  31. package/dist/Auth/ProtectedRoute/index.d.mts +3 -0
  32. package/dist/Auth/ProtectedRoute/index.d.ts +3 -1
  33. package/dist/Auth/ProtectedRoute/index.js +1 -0
  34. package/dist/Auth/ProtectedRoute/index.js.map +1 -0
  35. package/dist/Auth/ProtectedRoute/index.mjs +1 -0
  36. package/dist/Auth/ProtectedRoute/index.mjs.map +1 -0
  37. package/dist/Auth/PublicRoute/index.d.mts +3 -0
  38. package/dist/Auth/PublicRoute/index.d.ts +3 -1
  39. package/dist/Auth/PublicRoute/index.js +1 -0
  40. package/dist/Auth/PublicRoute/index.js.map +1 -0
  41. package/dist/Auth/PublicRoute/index.mjs +1 -0
  42. package/dist/Auth/PublicRoute/index.mjs.map +1 -0
  43. package/dist/Auth/getRootDomain/index.d.mts +3 -0
  44. package/dist/Auth/getRootDomain/index.d.ts +3 -1
  45. package/dist/Auth/getRootDomain/index.js +1 -0
  46. package/dist/Auth/getRootDomain/index.js.map +1 -0
  47. package/dist/Auth/getRootDomain/index.mjs +1 -0
  48. package/dist/Auth/getRootDomain/index.mjs.map +1 -0
  49. package/dist/Auth/index.d.mts +312 -0
  50. package/dist/Auth/index.d.ts +312 -1
  51. package/dist/Auth/index.js +1 -0
  52. package/dist/Auth/index.js.map +1 -0
  53. package/dist/Auth/index.mjs +1 -0
  54. package/dist/Auth/index.mjs.map +1 -0
  55. package/dist/Auth/useApiConfig/index.d.mts +43 -0
  56. package/dist/Auth/useApiConfig/index.d.ts +43 -1
  57. package/dist/Auth/useApiConfig/index.js +1 -0
  58. package/dist/Auth/useApiConfig/index.js.map +1 -0
  59. package/dist/Auth/useApiConfig/index.mjs +1 -0
  60. package/dist/Auth/useApiConfig/index.mjs.map +1 -0
  61. package/dist/Auth/useAuth/index.d.mts +3 -0
  62. package/dist/Auth/useAuth/index.d.ts +3 -1
  63. package/dist/Auth/useAuth/index.js +1 -0
  64. package/dist/Auth/useAuth/index.js.map +1 -0
  65. package/dist/Auth/useAuth/index.mjs +1 -0
  66. package/dist/Auth/useAuth/index.mjs.map +1 -0
  67. package/dist/Auth/useAuthGuard/index.d.mts +3 -0
  68. package/dist/Auth/useAuthGuard/index.d.ts +3 -1
  69. package/dist/Auth/useAuthGuard/index.js +1 -0
  70. package/dist/Auth/useAuthGuard/index.js.map +1 -0
  71. package/dist/Auth/useAuthGuard/index.mjs +1 -0
  72. package/dist/Auth/useAuthGuard/index.mjs.map +1 -0
  73. package/dist/Auth/useRouteAuth/index.d.mts +3 -0
  74. package/dist/Auth/useRouteAuth/index.d.ts +3 -1
  75. package/dist/Auth/useRouteAuth/index.js +1 -0
  76. package/dist/Auth/useRouteAuth/index.js.map +1 -0
  77. package/dist/Auth/useRouteAuth/index.mjs +1 -0
  78. package/dist/Auth/useRouteAuth/index.mjs.map +1 -0
  79. package/dist/Auth/useUrlAuthentication/index.d.mts +58 -0
  80. package/dist/Auth/useUrlAuthentication/index.d.ts +58 -1
  81. package/dist/Auth/useUrlAuthentication/index.js +1 -0
  82. package/dist/Auth/useUrlAuthentication/index.js.map +1 -0
  83. package/dist/Auth/useUrlAuthentication/index.mjs +1 -0
  84. package/dist/Auth/useUrlAuthentication/index.mjs.map +1 -0
  85. package/dist/Auth/withAuth/index.d.mts +3 -0
  86. package/dist/Auth/withAuth/index.d.ts +3 -1
  87. package/dist/Auth/withAuth/index.js +1 -0
  88. package/dist/Auth/withAuth/index.js.map +1 -0
  89. package/dist/Auth/withAuth/index.mjs +1 -0
  90. package/dist/Auth/withAuth/index.mjs.map +1 -0
  91. package/dist/Auth/zustandAuthAdapter/index.d.mts +75 -0
  92. package/dist/Auth/zustandAuthAdapter/index.d.ts +75 -1
  93. package/dist/Auth/zustandAuthAdapter/index.js +1 -0
  94. package/dist/Auth/zustandAuthAdapter/index.js.map +1 -0
  95. package/dist/Auth/zustandAuthAdapter/index.mjs +1 -0
  96. package/dist/Auth/zustandAuthAdapter/index.mjs.map +1 -0
  97. package/dist/Badge/index.d.mts +46 -0
  98. package/dist/Badge/index.d.ts +46 -1
  99. package/dist/Badge/index.js +1 -0
  100. package/dist/Badge/index.js.map +1 -0
  101. package/dist/Badge/index.mjs +1 -0
  102. package/dist/Badge/index.mjs.map +1 -0
  103. package/dist/Button/index.d.mts +45 -0
  104. package/dist/Button/index.d.ts +45 -1
  105. package/dist/Button/index.js +1 -0
  106. package/dist/Button/index.js.map +1 -0
  107. package/dist/Button/index.mjs +1 -0
  108. package/dist/Button/index.mjs.map +1 -0
  109. package/dist/Calendar/index.d.mts +60 -0
  110. package/dist/Calendar/index.d.ts +60 -1
  111. package/dist/Calendar/index.js +1 -0
  112. package/dist/Calendar/index.js.map +1 -0
  113. package/dist/Calendar/index.mjs +1 -0
  114. package/dist/Calendar/index.mjs.map +1 -0
  115. package/dist/Card/index.d.mts +150 -0
  116. package/dist/Card/index.d.ts +150 -1
  117. package/dist/Card/index.js +1 -0
  118. package/dist/Card/index.js.map +1 -0
  119. package/dist/Card/index.mjs +1 -0
  120. package/dist/Card/index.mjs.map +1 -0
  121. package/dist/CheckBox/index.d.mts +74 -0
  122. package/dist/CheckBox/index.d.ts +74 -1
  123. package/dist/CheckBox/index.js +1 -0
  124. package/dist/CheckBox/index.js.map +1 -0
  125. package/dist/CheckBox/index.mjs +1 -0
  126. package/dist/CheckBox/index.mjs.map +1 -0
  127. package/dist/Chips/index.d.mts +41 -0
  128. package/dist/Chips/index.d.ts +41 -1
  129. package/dist/Chips/index.js +1 -0
  130. package/dist/Chips/index.js.map +1 -0
  131. package/dist/Chips/index.mjs +1 -0
  132. package/dist/Chips/index.mjs.map +1 -0
  133. package/dist/Divider/index.d.mts +32 -0
  134. package/dist/Divider/index.d.ts +32 -1
  135. package/dist/Divider/index.js +1 -0
  136. package/dist/Divider/index.js.map +1 -0
  137. package/dist/Divider/index.mjs +1 -0
  138. package/dist/Divider/index.mjs.map +1 -0
  139. package/dist/DropdownMenu/index.d.mts +68 -0
  140. package/dist/DropdownMenu/index.d.ts +68 -1
  141. package/dist/DropdownMenu/index.js +1 -0
  142. package/dist/DropdownMenu/index.js.map +1 -0
  143. package/dist/DropdownMenu/index.mjs +1 -0
  144. package/dist/DropdownMenu/index.mjs.map +1 -0
  145. package/dist/IconButton/index.d.mts +76 -0
  146. package/dist/IconButton/index.d.ts +76 -1
  147. package/dist/IconButton/index.js +1 -0
  148. package/dist/IconButton/index.js.map +1 -0
  149. package/dist/IconButton/index.mjs +1 -0
  150. package/dist/IconButton/index.mjs.map +1 -0
  151. package/dist/IconRoundedButton/index.d.mts +34 -0
  152. package/dist/IconRoundedButton/index.d.ts +34 -1
  153. package/dist/IconRoundedButton/index.js +1 -0
  154. package/dist/IconRoundedButton/index.js.map +1 -0
  155. package/dist/IconRoundedButton/index.mjs +1 -0
  156. package/dist/IconRoundedButton/index.mjs.map +1 -0
  157. package/dist/Input/index.d.mts +27 -0
  158. package/dist/Input/index.d.ts +27 -1
  159. package/dist/Input/index.js +1 -0
  160. package/dist/Input/index.js.map +1 -0
  161. package/dist/Input/index.mjs +1 -0
  162. package/dist/Input/index.mjs.map +1 -0
  163. package/dist/Menu/index.d.mts +48 -0
  164. package/dist/Menu/index.d.ts +48 -1
  165. package/dist/Menu/index.js +1 -0
  166. package/dist/Menu/index.js.map +1 -0
  167. package/dist/Menu/index.mjs +1 -0
  168. package/dist/Menu/index.mjs.map +1 -0
  169. package/dist/Modal/index.d.mts +66 -0
  170. package/dist/Modal/index.d.ts +66 -1
  171. package/dist/Modal/index.js +1 -0
  172. package/dist/Modal/index.js.map +1 -0
  173. package/dist/Modal/index.mjs +1 -0
  174. package/dist/Modal/index.mjs.map +1 -0
  175. package/dist/MultipleChoice/index.d.mts +20 -0
  176. package/dist/MultipleChoice/index.d.ts +20 -1
  177. package/dist/MultipleChoice/index.js +1 -0
  178. package/dist/MultipleChoice/index.js.map +1 -0
  179. package/dist/MultipleChoice/index.mjs +1 -0
  180. package/dist/MultipleChoice/index.mjs.map +1 -0
  181. package/dist/NavButton/index.d.mts +57 -0
  182. package/dist/NavButton/index.d.ts +57 -1
  183. package/dist/NavButton/index.js +1 -0
  184. package/dist/NavButton/index.js.map +1 -0
  185. package/dist/NavButton/index.mjs +1 -0
  186. package/dist/NavButton/index.mjs.map +1 -0
  187. package/dist/NotFound/index.d.mts +58 -0
  188. package/dist/NotFound/index.d.ts +58 -1
  189. package/dist/NotFound/index.js +1 -0
  190. package/dist/NotFound/index.js.map +1 -0
  191. package/dist/NotFound/index.mjs +1 -0
  192. package/dist/NotFound/index.mjs.map +1 -0
  193. package/dist/ProgressBar/index.d.mts +95 -0
  194. package/dist/ProgressBar/index.d.ts +95 -1
  195. package/dist/ProgressBar/index.js +1 -0
  196. package/dist/ProgressBar/index.js.map +1 -0
  197. package/dist/ProgressBar/index.mjs +1 -0
  198. package/dist/ProgressBar/index.mjs.map +1 -0
  199. package/dist/ProgressCircle/index.d.mts +60 -0
  200. package/dist/ProgressCircle/index.d.ts +60 -1
  201. package/dist/ProgressCircle/index.js +1 -0
  202. package/dist/ProgressCircle/index.js.map +1 -0
  203. package/dist/ProgressCircle/index.mjs +1 -0
  204. package/dist/ProgressCircle/index.mjs.map +1 -0
  205. package/dist/Quiz/index.d.mts +57 -0
  206. package/dist/Quiz/index.d.ts +57 -1
  207. package/dist/Quiz/index.js +3 -2
  208. package/dist/Quiz/index.js.map +1 -0
  209. package/dist/Quiz/index.mjs +3 -2
  210. package/dist/Quiz/index.mjs.map +1 -0
  211. package/dist/Quiz/useQuizStore/index.d.mts +139 -0
  212. package/dist/Quiz/useQuizStore/index.d.ts +139 -1
  213. package/dist/Quiz/useQuizStore/index.js +1 -0
  214. package/dist/Quiz/useQuizStore/index.js.map +1 -0
  215. package/dist/Quiz/useQuizStore/index.mjs +1 -0
  216. package/dist/Quiz/useQuizStore/index.mjs.map +1 -0
  217. package/dist/Radio/index.d.mts +203 -0
  218. package/dist/Radio/index.d.ts +203 -1
  219. package/dist/Radio/index.js +1 -0
  220. package/dist/Radio/index.js.map +1 -0
  221. package/dist/Radio/index.mjs +1 -0
  222. package/dist/Radio/index.mjs.map +1 -0
  223. package/dist/Select/index.d.mts +58 -0
  224. package/dist/Select/index.d.ts +58 -1
  225. package/dist/Select/index.js +1 -0
  226. package/dist/Select/index.js.map +1 -0
  227. package/dist/Select/index.mjs +1 -0
  228. package/dist/Select/index.mjs.map +1 -0
  229. package/dist/SelectionButton/index.d.mts +57 -0
  230. package/dist/SelectionButton/index.d.ts +57 -1
  231. package/dist/SelectionButton/index.js +1 -0
  232. package/dist/SelectionButton/index.js.map +1 -0
  233. package/dist/SelectionButton/index.mjs +1 -0
  234. package/dist/SelectionButton/index.mjs.map +1 -0
  235. package/dist/Skeleton/index.d.mts +40 -0
  236. package/dist/Skeleton/index.d.ts +40 -1
  237. package/dist/Skeleton/index.js +1 -0
  238. package/dist/Skeleton/index.js.map +1 -0
  239. package/dist/Skeleton/index.mjs +1 -0
  240. package/dist/Skeleton/index.mjs.map +1 -0
  241. package/dist/Stepper/index.d.mts +169 -0
  242. package/dist/Stepper/index.d.ts +169 -1
  243. package/dist/Stepper/index.js +1 -0
  244. package/dist/Stepper/index.js.map +1 -0
  245. package/dist/Stepper/index.mjs +1 -0
  246. package/dist/Stepper/index.mjs.map +1 -0
  247. package/dist/Table/index.d.mts +17 -0
  248. package/dist/Table/index.d.ts +17 -1
  249. package/dist/Table/index.js +1 -0
  250. package/dist/Table/index.js.map +1 -0
  251. package/dist/Table/index.mjs +1 -0
  252. package/dist/Table/index.mjs.map +1 -0
  253. package/dist/Text/index.d.mts +58 -0
  254. package/dist/Text/index.d.ts +58 -1
  255. package/dist/Text/index.js +1 -0
  256. package/dist/Text/index.js.map +1 -0
  257. package/dist/Text/index.mjs +1 -0
  258. package/dist/Text/index.mjs.map +1 -0
  259. package/dist/TextArea/index.d.mts +70 -0
  260. package/dist/TextArea/index.d.ts +70 -1
  261. package/dist/TextArea/index.js +1 -0
  262. package/dist/TextArea/index.js.map +1 -0
  263. package/dist/TextArea/index.mjs +1 -0
  264. package/dist/TextArea/index.mjs.map +1 -0
  265. package/dist/Toast/ToastStore/index.d.mts +19 -0
  266. package/dist/Toast/ToastStore/index.d.ts +19 -1
  267. package/dist/Toast/ToastStore/index.js +1 -0
  268. package/dist/Toast/ToastStore/index.js.map +1 -0
  269. package/dist/Toast/ToastStore/index.mjs +1 -0
  270. package/dist/Toast/ToastStore/index.mjs.map +1 -0
  271. package/dist/Toast/Toaster/index.d.mts +16 -0
  272. package/dist/Toast/Toaster/index.d.ts +16 -1
  273. package/dist/Toast/Toaster/index.js +1 -0
  274. package/dist/Toast/Toaster/index.js.map +1 -0
  275. package/dist/Toast/Toaster/index.mjs +1 -0
  276. package/dist/Toast/Toaster/index.mjs.map +1 -0
  277. package/dist/Toast/index.d.mts +17 -0
  278. package/dist/Toast/index.d.ts +17 -1
  279. package/dist/Toast/index.js +1 -0
  280. package/dist/Toast/index.js.map +1 -0
  281. package/dist/Toast/index.mjs +1 -0
  282. package/dist/Toast/index.mjs.map +1 -0
  283. package/dist/index.css +5 -4
  284. package/dist/index.css.map +1 -0
  285. package/dist/index.d.mts +42 -2142
  286. package/dist/index.d.ts +42 -2142
  287. package/dist/index.js +3 -23
  288. package/dist/index.js.map +1 -0
  289. package/dist/index.mjs +3 -20
  290. package/dist/index.mjs.map +1 -0
  291. package/dist/styles.css +5 -4
  292. package/dist/styles.css.map +1 -0
  293. package/dist/styles.d.mts +2 -0
  294. package/dist/styles.d.ts +2 -0
  295. package/package.json +4 -5
  296. package/dist/CheckBox/CheckboxList/index.d.ts +0 -1
  297. package/dist/CheckBox/CheckboxList/index.js +0 -429
  298. package/dist/CheckBox/CheckboxList/index.mjs +0 -415
@@ -0,0 +1,57 @@
1
+ import * as react from 'react';
2
+ import { ReactNode, ButtonHTMLAttributes } from 'react';
3
+
4
+ /**
5
+ * SelectionButton component for Analytica Ensino platforms
6
+ *
7
+ * Um botão com ícone e texto para ações e navegação com estado de seleção.
8
+ * Ideal para filtros, tags, categorias, seleção de tipos, etc.
9
+ * Suporta forwardRef para acesso programático ao elemento DOM.
10
+ *
11
+ * @param icon - O ícone a ser exibido no botão
12
+ * @param label - O texto/label a ser exibido
13
+ * @param selected - Estado de seleção do botão
14
+ * @param className - Classes CSS adicionais
15
+ * @param props - Todos os outros atributos HTML padrão de button
16
+ * @returns Um elemento button estilizado
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <SelectionButton
21
+ * icon={<TagIcon />}
22
+ * label="Categoria"
23
+ * selected={false}
24
+ * onClick={() => handleSelection()}
25
+ * />
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * // Usando ref para foco programático
31
+ * const buttonRef = useRef<HTMLButtonElement>(null);
32
+ *
33
+ * const handleFocus = () => {
34
+ * buttonRef.current?.focus();
35
+ * };
36
+ *
37
+ * <SelectionButton
38
+ * ref={buttonRef}
39
+ * icon={<TagIcon />}
40
+ * label="Categoria"
41
+ * selected={isSelected}
42
+ * onClick={() => setSelected(!isSelected)}
43
+ * />
44
+ * ```
45
+ */
46
+ declare const SelectionButton: react.ForwardRefExoticComponent<{
47
+ /** Ícone a ser exibido no botão */
48
+ icon: ReactNode;
49
+ /** Texto/label a ser exibido ao lado do ícone */
50
+ label: string;
51
+ /** Estado de seleção do botão */
52
+ selected?: boolean;
53
+ /** Additional CSS classes to apply */
54
+ className?: string;
55
+ } & ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
56
+
57
+ export { SelectionButton as default };
@@ -1 +1,57 @@
1
- export * from '../index';
1
+ import * as react from 'react';
2
+ import { ReactNode, ButtonHTMLAttributes } from 'react';
3
+
4
+ /**
5
+ * SelectionButton component for Analytica Ensino platforms
6
+ *
7
+ * Um botão com ícone e texto para ações e navegação com estado de seleção.
8
+ * Ideal para filtros, tags, categorias, seleção de tipos, etc.
9
+ * Suporta forwardRef para acesso programático ao elemento DOM.
10
+ *
11
+ * @param icon - O ícone a ser exibido no botão
12
+ * @param label - O texto/label a ser exibido
13
+ * @param selected - Estado de seleção do botão
14
+ * @param className - Classes CSS adicionais
15
+ * @param props - Todos os outros atributos HTML padrão de button
16
+ * @returns Um elemento button estilizado
17
+ *
18
+ * @example
19
+ * ```tsx
20
+ * <SelectionButton
21
+ * icon={<TagIcon />}
22
+ * label="Categoria"
23
+ * selected={false}
24
+ * onClick={() => handleSelection()}
25
+ * />
26
+ * ```
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * // Usando ref para foco programático
31
+ * const buttonRef = useRef<HTMLButtonElement>(null);
32
+ *
33
+ * const handleFocus = () => {
34
+ * buttonRef.current?.focus();
35
+ * };
36
+ *
37
+ * <SelectionButton
38
+ * ref={buttonRef}
39
+ * icon={<TagIcon />}
40
+ * label="Categoria"
41
+ * selected={isSelected}
42
+ * onClick={() => setSelected(!isSelected)}
43
+ * />
44
+ * ```
45
+ */
46
+ declare const SelectionButton: react.ForwardRefExoticComponent<{
47
+ /** Ícone a ser exibido no botão */
48
+ icon: ReactNode;
49
+ /** Texto/label a ser exibido ao lado do ícone */
50
+ label: string;
51
+ /** Estado de seleção do botão */
52
+ selected?: boolean;
53
+ /** Additional CSS classes to apply */
54
+ className?: string;
55
+ } & ButtonHTMLAttributes<HTMLButtonElement> & react.RefAttributes<HTMLButtonElement>>;
56
+
57
+ export { SelectionButton as default };
@@ -85,3 +85,4 @@ var SelectionButton = (0, import_react.forwardRef)(
85
85
  );
86
86
  SelectionButton.displayName = "SelectionButton";
87
87
  var SelectionButton_default = SelectionButton;
88
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/SelectionButton/SelectionButton.tsx","../../src/utils/utils.ts"],"sourcesContent":["import { ButtonHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport { cn } from '../../utils/utils';\n\n/**\n * SelectionButton component props interface\n */\ntype SelectionButtonProps = {\n /** Ícone a ser exibido no botão */\n icon: ReactNode;\n /** Texto/label a ser exibido ao lado do ícone */\n label: string;\n /** Estado de seleção do botão */\n selected?: boolean;\n /** Additional CSS classes to apply */\n className?: string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * SelectionButton component for Analytica Ensino platforms\n *\n * Um botão com ícone e texto para ações e navegação com estado de seleção.\n * Ideal para filtros, tags, categorias, seleção de tipos, etc.\n * Suporta forwardRef para acesso programático ao elemento DOM.\n *\n * @param icon - O ícone a ser exibido no botão\n * @param label - O texto/label a ser exibido\n * @param selected - Estado de seleção do botão\n * @param className - Classes CSS adicionais\n * @param props - Todos os outros atributos HTML padrão de button\n * @returns Um elemento button estilizado\n *\n * @example\n * ```tsx\n * <SelectionButton\n * icon={<TagIcon />}\n * label=\"Categoria\"\n * selected={false}\n * onClick={() => handleSelection()}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Usando ref para foco programático\n * const buttonRef = useRef<HTMLButtonElement>(null);\n *\n * const handleFocus = () => {\n * buttonRef.current?.focus();\n * };\n *\n * <SelectionButton\n * ref={buttonRef}\n * icon={<TagIcon />}\n * label=\"Categoria\"\n * selected={isSelected}\n * onClick={() => setSelected(!isSelected)}\n * />\n * ```\n */\nconst SelectionButton = forwardRef<HTMLButtonElement, SelectionButtonProps>(\n (\n { icon, label, selected = false, className = '', disabled, ...props },\n ref\n ) => {\n // Classes base para todos os estados\n const baseClasses = [\n 'inline-flex',\n 'items-center',\n 'justify-start',\n 'gap-2',\n 'p-4',\n 'rounded-xl',\n 'cursor-pointer',\n 'border',\n 'border-border-50',\n 'bg-background',\n 'text-sm',\n 'text-text-700',\n 'font-bold',\n 'shadow-soft-shadow-1',\n 'hover:bg-background-100',\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-indicator-info',\n 'focus-visible:ring-offset-0',\n 'focus-visible:shadow-none',\n 'active:ring-2',\n 'active:ring-primary-950',\n 'active:ring-offset-0',\n 'active:shadow-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n ];\n\n const stateClasses = selected\n ? ['ring-primary-950', 'ring-2', 'ring-offset-0', 'shadow-none']\n : [];\n\n const allClasses = [...baseClasses, ...stateClasses].join(' ');\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(allClasses, className)}\n disabled={disabled}\n aria-pressed={selected}\n {...props}\n >\n <span className=\"flex items-center justify-center w-6 h-6\">{icon}</span>\n <span>{label}</span>\n </button>\n );\n }\n);\n\nSelectionButton.displayName = 'SelectionButton';\n\nexport default SelectionButton;\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA4D;;;ACA5D,kBAAsC;AACtC,4BAAwB;AAEjB,SAAS,MAAM,QAAsB;AAC1C,aAAO,mCAAQ,kBAAK,MAAM,CAAC;AAC7B;;;ADgGM;AA1CN,IAAM,sBAAkB;AAAA,EACtB,CACE,EAAE,MAAM,OAAO,WAAW,OAAO,YAAY,IAAI,UAAU,GAAG,MAAM,GACpE,QACG;AAEH,UAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,eAAe,WACjB,CAAC,oBAAoB,UAAU,iBAAiB,aAAa,IAC7D,CAAC;AAEL,UAAM,aAAa,CAAC,GAAG,aAAa,GAAG,YAAY,EAAE,KAAK,GAAG;AAE7D,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,WAAW,GAAG,YAAY,SAAS;AAAA,QACnC;AAAA,QACA,gBAAc;AAAA,QACb,GAAG;AAAA,QAEJ;AAAA,sDAAC,UAAK,WAAU,4CAA4C,gBAAK;AAAA,UACjE,4CAAC,UAAM,iBAAM;AAAA;AAAA;AAAA,IACf;AAAA,EAEJ;AACF;AAEA,gBAAgB,cAAc;AAE9B,IAAO,0BAAQ;","names":[]}
@@ -64,3 +64,4 @@ var SelectionButton_default = SelectionButton;
64
64
  export {
65
65
  SelectionButton_default as default
66
66
  };
67
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/SelectionButton/SelectionButton.tsx","../../src/utils/utils.ts"],"sourcesContent":["import { ButtonHTMLAttributes, ReactNode, forwardRef } from 'react';\nimport { cn } from '../../utils/utils';\n\n/**\n * SelectionButton component props interface\n */\ntype SelectionButtonProps = {\n /** Ícone a ser exibido no botão */\n icon: ReactNode;\n /** Texto/label a ser exibido ao lado do ícone */\n label: string;\n /** Estado de seleção do botão */\n selected?: boolean;\n /** Additional CSS classes to apply */\n className?: string;\n} & ButtonHTMLAttributes<HTMLButtonElement>;\n\n/**\n * SelectionButton component for Analytica Ensino platforms\n *\n * Um botão com ícone e texto para ações e navegação com estado de seleção.\n * Ideal para filtros, tags, categorias, seleção de tipos, etc.\n * Suporta forwardRef para acesso programático ao elemento DOM.\n *\n * @param icon - O ícone a ser exibido no botão\n * @param label - O texto/label a ser exibido\n * @param selected - Estado de seleção do botão\n * @param className - Classes CSS adicionais\n * @param props - Todos os outros atributos HTML padrão de button\n * @returns Um elemento button estilizado\n *\n * @example\n * ```tsx\n * <SelectionButton\n * icon={<TagIcon />}\n * label=\"Categoria\"\n * selected={false}\n * onClick={() => handleSelection()}\n * />\n * ```\n *\n * @example\n * ```tsx\n * // Usando ref para foco programático\n * const buttonRef = useRef<HTMLButtonElement>(null);\n *\n * const handleFocus = () => {\n * buttonRef.current?.focus();\n * };\n *\n * <SelectionButton\n * ref={buttonRef}\n * icon={<TagIcon />}\n * label=\"Categoria\"\n * selected={isSelected}\n * onClick={() => setSelected(!isSelected)}\n * />\n * ```\n */\nconst SelectionButton = forwardRef<HTMLButtonElement, SelectionButtonProps>(\n (\n { icon, label, selected = false, className = '', disabled, ...props },\n ref\n ) => {\n // Classes base para todos os estados\n const baseClasses = [\n 'inline-flex',\n 'items-center',\n 'justify-start',\n 'gap-2',\n 'p-4',\n 'rounded-xl',\n 'cursor-pointer',\n 'border',\n 'border-border-50',\n 'bg-background',\n 'text-sm',\n 'text-text-700',\n 'font-bold',\n 'shadow-soft-shadow-1',\n 'hover:bg-background-100',\n 'focus-visible:outline-none',\n 'focus-visible:ring-2',\n 'focus-visible:ring-indicator-info',\n 'focus-visible:ring-offset-0',\n 'focus-visible:shadow-none',\n 'active:ring-2',\n 'active:ring-primary-950',\n 'active:ring-offset-0',\n 'active:shadow-none',\n 'disabled:opacity-50',\n 'disabled:cursor-not-allowed',\n ];\n\n const stateClasses = selected\n ? ['ring-primary-950', 'ring-2', 'ring-offset-0', 'shadow-none']\n : [];\n\n const allClasses = [...baseClasses, ...stateClasses].join(' ');\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(allClasses, className)}\n disabled={disabled}\n aria-pressed={selected}\n {...props}\n >\n <span className=\"flex items-center justify-center w-6 h-6\">{icon}</span>\n <span>{label}</span>\n </button>\n );\n }\n);\n\nSelectionButton.displayName = 'SelectionButton';\n\nexport default SelectionButton;\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";AAAA,SAA0C,kBAAkB;;;ACA5D,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;;;ADgGM,SAQE,KARF;AA1CN,IAAM,kBAAkB;AAAA,EACtB,CACE,EAAE,MAAM,OAAO,WAAW,OAAO,YAAY,IAAI,UAAU,GAAG,MAAM,GACpE,QACG;AAEH,UAAM,cAAc;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,UAAM,eAAe,WACjB,CAAC,oBAAoB,UAAU,iBAAiB,aAAa,IAC7D,CAAC;AAEL,UAAM,aAAa,CAAC,GAAG,aAAa,GAAG,YAAY,EAAE,KAAK,GAAG;AAE7D,WACE;AAAA,MAAC;AAAA;AAAA,QACC;AAAA,QACA,MAAK;AAAA,QACL,WAAW,GAAG,YAAY,SAAS;AAAA,QACnC;AAAA,QACA,gBAAc;AAAA,QACb,GAAG;AAAA,QAEJ;AAAA,8BAAC,UAAK,WAAU,4CAA4C,gBAAK;AAAA,UACjE,oBAAC,UAAM,iBAAM;AAAA;AAAA;AAAA,IACf;AAAA,EAEJ;AACF;AAEA,gBAAgB,cAAc;AAE9B,IAAO,0BAAQ;","names":[]}
@@ -0,0 +1,40 @@
1
+ import * as react from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
5
+ variant?: 'text' | 'circular' | 'rectangular' | 'rounded';
6
+ width?: string | number;
7
+ height?: string | number;
8
+ animation?: 'pulse' | 'none';
9
+ lines?: number;
10
+ spacing?: 'none' | 'small' | 'medium' | 'large';
11
+ }
12
+ declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
13
+ declare const SkeletonText: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
14
+ declare const SkeletonCircle: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
15
+ declare const SkeletonRectangle: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
16
+ declare const SkeletonRounded: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
17
+ interface SkeletonCardProps extends HTMLAttributes<HTMLDivElement> {
18
+ showAvatar?: boolean;
19
+ showTitle?: boolean;
20
+ showDescription?: boolean;
21
+ showActions?: boolean;
22
+ lines?: number;
23
+ }
24
+ declare const SkeletonCard: react.ForwardRefExoticComponent<SkeletonCardProps & react.RefAttributes<HTMLDivElement>>;
25
+ interface SkeletonListProps extends HTMLAttributes<HTMLDivElement> {
26
+ items?: number;
27
+ showAvatar?: boolean;
28
+ showTitle?: boolean;
29
+ showDescription?: boolean;
30
+ lines?: number;
31
+ }
32
+ declare const SkeletonList: react.ForwardRefExoticComponent<SkeletonListProps & react.RefAttributes<HTMLDivElement>>;
33
+ interface SkeletonTableProps extends HTMLAttributes<HTMLDivElement> {
34
+ rows?: number;
35
+ columns?: number;
36
+ showHeader?: boolean;
37
+ }
38
+ declare const SkeletonTable: react.ForwardRefExoticComponent<SkeletonTableProps & react.RefAttributes<HTMLDivElement>>;
39
+
40
+ export { Skeleton, SkeletonCard, SkeletonCircle, SkeletonList, SkeletonRectangle, SkeletonRounded, SkeletonTable, SkeletonText };
@@ -1 +1,40 @@
1
- export * from '../index';
1
+ import * as react from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {
5
+ variant?: 'text' | 'circular' | 'rectangular' | 'rounded';
6
+ width?: string | number;
7
+ height?: string | number;
8
+ animation?: 'pulse' | 'none';
9
+ lines?: number;
10
+ spacing?: 'none' | 'small' | 'medium' | 'large';
11
+ }
12
+ declare const Skeleton: react.ForwardRefExoticComponent<SkeletonProps & react.RefAttributes<HTMLDivElement>>;
13
+ declare const SkeletonText: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
14
+ declare const SkeletonCircle: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
15
+ declare const SkeletonRectangle: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
16
+ declare const SkeletonRounded: react.ForwardRefExoticComponent<Omit<SkeletonProps, "variant"> & react.RefAttributes<HTMLDivElement>>;
17
+ interface SkeletonCardProps extends HTMLAttributes<HTMLDivElement> {
18
+ showAvatar?: boolean;
19
+ showTitle?: boolean;
20
+ showDescription?: boolean;
21
+ showActions?: boolean;
22
+ lines?: number;
23
+ }
24
+ declare const SkeletonCard: react.ForwardRefExoticComponent<SkeletonCardProps & react.RefAttributes<HTMLDivElement>>;
25
+ interface SkeletonListProps extends HTMLAttributes<HTMLDivElement> {
26
+ items?: number;
27
+ showAvatar?: boolean;
28
+ showTitle?: boolean;
29
+ showDescription?: boolean;
30
+ lines?: number;
31
+ }
32
+ declare const SkeletonList: react.ForwardRefExoticComponent<SkeletonListProps & react.RefAttributes<HTMLDivElement>>;
33
+ interface SkeletonTableProps extends HTMLAttributes<HTMLDivElement> {
34
+ rows?: number;
35
+ columns?: number;
36
+ showHeader?: boolean;
37
+ }
38
+ declare const SkeletonTable: react.ForwardRefExoticComponent<SkeletonTableProps & react.RefAttributes<HTMLDivElement>>;
39
+
40
+ export { Skeleton, SkeletonCard, SkeletonCircle, SkeletonList, SkeletonRectangle, SkeletonRounded, SkeletonTable, SkeletonText };
@@ -200,3 +200,4 @@ var SkeletonTable = (0, import_react.forwardRef)(
200
200
  SkeletonTable,
201
201
  SkeletonText
202
202
  });
203
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Skeleton/Skeleton.tsx","../../src/utils/utils.ts"],"sourcesContent":["import { forwardRef, HTMLAttributes, CSSProperties } from 'react';\nimport { cn } from '../../utils/utils';\n\ninterface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'text' | 'circular' | 'rectangular' | 'rounded';\n width?: string | number;\n height?: string | number;\n animation?: 'pulse' | 'none';\n lines?: number;\n spacing?: 'none' | 'small' | 'medium' | 'large';\n}\n\nconst SKELETON_ANIMATION_CLASSES = {\n pulse: 'animate-pulse',\n none: '',\n};\n\nconst SKELETON_VARIANT_CLASSES = {\n text: 'h-4 bg-background-200 rounded',\n circular: 'bg-background-200 rounded-full',\n rectangular: 'bg-background-200',\n rounded: 'bg-background-200 rounded-lg',\n};\n\nconst SPACING_CLASSES = {\n none: '',\n small: 'space-y-1',\n medium: 'space-y-2',\n large: 'space-y-3',\n};\n\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'text',\n width,\n height,\n animation = 'pulse',\n lines = 1,\n spacing = 'none',\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const animationClass = SKELETON_ANIMATION_CLASSES[animation];\n const variantClass = SKELETON_VARIANT_CLASSES[variant];\n const spacingClass = SPACING_CLASSES[spacing];\n\n const style: CSSProperties = {\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n };\n\n // Se for múltiplas linhas de texto\n if (variant === 'text' && lines > 1) {\n return (\n <div\n ref={ref}\n className={cn('flex flex-col', spacingClass, className)}\n {...props}\n >\n {Array.from({ length: lines }, (_, index) => (\n <div\n key={index}\n className={cn(variantClass, animationClass)}\n style={index === lines - 1 ? { width: '60%' } : undefined}\n />\n ))}\n </div>\n );\n }\n\n // Se for um único elemento\n return (\n <div\n ref={ref}\n className={cn(variantClass, animationClass, className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\n// Componentes específicos para casos comuns\nconst SkeletonText = forwardRef<HTMLDivElement, Omit<SkeletonProps, 'variant'>>(\n (props, ref) => <Skeleton ref={ref} variant=\"text\" {...props} />\n);\n\nconst SkeletonCircle = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, 'variant'>\n>((props, ref) => <Skeleton ref={ref} variant=\"circular\" {...props} />);\n\nconst SkeletonRectangle = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, 'variant'>\n>((props, ref) => <Skeleton ref={ref} variant=\"rectangular\" {...props} />);\n\nconst SkeletonRounded = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, 'variant'>\n>((props, ref) => <Skeleton ref={ref} variant=\"rounded\" {...props} />);\n\n// Componente para card skeleton\ninterface SkeletonCardProps extends HTMLAttributes<HTMLDivElement> {\n showAvatar?: boolean;\n showTitle?: boolean;\n showDescription?: boolean;\n showActions?: boolean;\n lines?: number;\n}\n\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showAvatar = true,\n showTitle = true,\n showDescription = true,\n showActions = true,\n lines = 2,\n className = '',\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full p-4 bg-background border border-border-200 rounded-lg',\n className\n )}\n {...props}\n >\n <div className=\"flex items-start space-x-3\">\n {showAvatar && <SkeletonCircle width={40} height={40} />}\n\n <div className=\"flex-1 space-y-2\">\n {showTitle && <SkeletonText width=\"60%\" height={20} />}\n\n {showDescription && <SkeletonText lines={lines} spacing=\"small\" />}\n </div>\n </div>\n\n {showActions && (\n <div className=\"flex justify-end space-x-2 mt-4\">\n <SkeletonRectangle width={80} height={32} />\n <SkeletonRectangle width={80} height={32} />\n </div>\n )}\n </div>\n );\n }\n);\n\n// Componente para lista skeleton\ninterface SkeletonListProps extends HTMLAttributes<HTMLDivElement> {\n items?: number;\n showAvatar?: boolean;\n showTitle?: boolean;\n showDescription?: boolean;\n lines?: number;\n}\n\nconst SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(\n (\n {\n items = 3,\n showAvatar = true,\n showTitle = true,\n showDescription = true,\n lines = 1,\n className = '',\n ...props\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }, (_, index) => (\n <div key={index} className=\"flex items-start space-x-3 p-3\">\n {showAvatar && <SkeletonCircle width={32} height={32} />}\n\n <div className=\"flex-1 space-y-2\">\n {showTitle && <SkeletonText width=\"40%\" height={16} />}\n\n {showDescription && (\n <SkeletonText lines={lines} spacing=\"small\" />\n )}\n </div>\n </div>\n ))}\n </div>\n );\n }\n);\n\n// Componente para tabela skeleton\ninterface SkeletonTableProps extends HTMLAttributes<HTMLDivElement> {\n rows?: number;\n columns?: number;\n showHeader?: boolean;\n}\n\nconst SkeletonTable = forwardRef<HTMLDivElement, SkeletonTableProps>(\n (\n { rows = 5, columns = 4, showHeader = true, className = '', ...props },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n {showHeader && (\n <div className=\"flex space-x-2 mb-3\">\n {Array.from({ length: columns }, (_, index) => (\n <SkeletonText\n key={index}\n width={`${100 / columns}%`}\n height={20}\n />\n ))}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {Array.from({ length: rows }, (_, rowIndex) => (\n <div key={rowIndex} className=\"flex space-x-2\">\n {Array.from({ length: columns }, (_, colIndex) => (\n <SkeletonText\n key={colIndex}\n width={`${100 / columns}%`}\n height={16}\n />\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nexport {\n Skeleton,\n SkeletonText,\n SkeletonCircle,\n SkeletonRectangle,\n SkeletonRounded,\n SkeletonCard,\n SkeletonList,\n SkeletonTable,\n};\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"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","names":["_"]}
@@ -168,3 +168,4 @@ export {
168
168
  SkeletonTable,
169
169
  SkeletonText
170
170
  };
171
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/components/Skeleton/Skeleton.tsx","../../src/utils/utils.ts"],"sourcesContent":["import { forwardRef, HTMLAttributes, CSSProperties } from 'react';\nimport { cn } from '../../utils/utils';\n\ninterface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'text' | 'circular' | 'rectangular' | 'rounded';\n width?: string | number;\n height?: string | number;\n animation?: 'pulse' | 'none';\n lines?: number;\n spacing?: 'none' | 'small' | 'medium' | 'large';\n}\n\nconst SKELETON_ANIMATION_CLASSES = {\n pulse: 'animate-pulse',\n none: '',\n};\n\nconst SKELETON_VARIANT_CLASSES = {\n text: 'h-4 bg-background-200 rounded',\n circular: 'bg-background-200 rounded-full',\n rectangular: 'bg-background-200',\n rounded: 'bg-background-200 rounded-lg',\n};\n\nconst SPACING_CLASSES = {\n none: '',\n small: 'space-y-1',\n medium: 'space-y-2',\n large: 'space-y-3',\n};\n\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'text',\n width,\n height,\n animation = 'pulse',\n lines = 1,\n spacing = 'none',\n className = '',\n children,\n ...props\n },\n ref\n ) => {\n const animationClass = SKELETON_ANIMATION_CLASSES[animation];\n const variantClass = SKELETON_VARIANT_CLASSES[variant];\n const spacingClass = SPACING_CLASSES[spacing];\n\n const style: CSSProperties = {\n width: typeof width === 'number' ? `${width}px` : width,\n height: typeof height === 'number' ? `${height}px` : height,\n };\n\n // Se for múltiplas linhas de texto\n if (variant === 'text' && lines > 1) {\n return (\n <div\n ref={ref}\n className={cn('flex flex-col', spacingClass, className)}\n {...props}\n >\n {Array.from({ length: lines }, (_, index) => (\n <div\n key={index}\n className={cn(variantClass, animationClass)}\n style={index === lines - 1 ? { width: '60%' } : undefined}\n />\n ))}\n </div>\n );\n }\n\n // Se for um único elemento\n return (\n <div\n ref={ref}\n className={cn(variantClass, animationClass, className)}\n style={style}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\n// Componentes específicos para casos comuns\nconst SkeletonText = forwardRef<HTMLDivElement, Omit<SkeletonProps, 'variant'>>(\n (props, ref) => <Skeleton ref={ref} variant=\"text\" {...props} />\n);\n\nconst SkeletonCircle = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, 'variant'>\n>((props, ref) => <Skeleton ref={ref} variant=\"circular\" {...props} />);\n\nconst SkeletonRectangle = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, 'variant'>\n>((props, ref) => <Skeleton ref={ref} variant=\"rectangular\" {...props} />);\n\nconst SkeletonRounded = forwardRef<\n HTMLDivElement,\n Omit<SkeletonProps, 'variant'>\n>((props, ref) => <Skeleton ref={ref} variant=\"rounded\" {...props} />);\n\n// Componente para card skeleton\ninterface SkeletonCardProps extends HTMLAttributes<HTMLDivElement> {\n showAvatar?: boolean;\n showTitle?: boolean;\n showDescription?: boolean;\n showActions?: boolean;\n lines?: number;\n}\n\nconst SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n (\n {\n showAvatar = true,\n showTitle = true,\n showDescription = true,\n showActions = true,\n lines = 2,\n className = '',\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'w-full p-4 bg-background border border-border-200 rounded-lg',\n className\n )}\n {...props}\n >\n <div className=\"flex items-start space-x-3\">\n {showAvatar && <SkeletonCircle width={40} height={40} />}\n\n <div className=\"flex-1 space-y-2\">\n {showTitle && <SkeletonText width=\"60%\" height={20} />}\n\n {showDescription && <SkeletonText lines={lines} spacing=\"small\" />}\n </div>\n </div>\n\n {showActions && (\n <div className=\"flex justify-end space-x-2 mt-4\">\n <SkeletonRectangle width={80} height={32} />\n <SkeletonRectangle width={80} height={32} />\n </div>\n )}\n </div>\n );\n }\n);\n\n// Componente para lista skeleton\ninterface SkeletonListProps extends HTMLAttributes<HTMLDivElement> {\n items?: number;\n showAvatar?: boolean;\n showTitle?: boolean;\n showDescription?: boolean;\n lines?: number;\n}\n\nconst SkeletonList = forwardRef<HTMLDivElement, SkeletonListProps>(\n (\n {\n items = 3,\n showAvatar = true,\n showTitle = true,\n showDescription = true,\n lines = 1,\n className = '',\n ...props\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('space-y-3', className)} {...props}>\n {Array.from({ length: items }, (_, index) => (\n <div key={index} className=\"flex items-start space-x-3 p-3\">\n {showAvatar && <SkeletonCircle width={32} height={32} />}\n\n <div className=\"flex-1 space-y-2\">\n {showTitle && <SkeletonText width=\"40%\" height={16} />}\n\n {showDescription && (\n <SkeletonText lines={lines} spacing=\"small\" />\n )}\n </div>\n </div>\n ))}\n </div>\n );\n }\n);\n\n// Componente para tabela skeleton\ninterface SkeletonTableProps extends HTMLAttributes<HTMLDivElement> {\n rows?: number;\n columns?: number;\n showHeader?: boolean;\n}\n\nconst SkeletonTable = forwardRef<HTMLDivElement, SkeletonTableProps>(\n (\n { rows = 5, columns = 4, showHeader = true, className = '', ...props },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('w-full', className)} {...props}>\n {showHeader && (\n <div className=\"flex space-x-2 mb-3\">\n {Array.from({ length: columns }, (_, index) => (\n <SkeletonText\n key={index}\n width={`${100 / columns}%`}\n height={20}\n />\n ))}\n </div>\n )}\n\n <div className=\"space-y-2\">\n {Array.from({ length: rows }, (_, rowIndex) => (\n <div key={rowIndex} className=\"flex space-x-2\">\n {Array.from({ length: columns }, (_, colIndex) => (\n <SkeletonText\n key={colIndex}\n width={`${100 / columns}%`}\n height={16}\n />\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n }\n);\n\nexport {\n Skeleton,\n SkeletonText,\n SkeletonCircle,\n SkeletonRectangle,\n SkeletonRounded,\n SkeletonCard,\n SkeletonList,\n SkeletonTable,\n};\n","import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"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","names":["_"]}
@@ -0,0 +1,169 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /**
4
+ * Stepper size variants
5
+ */
6
+ type StepperSize = 'small' | 'medium' | 'large' | 'extraLarge';
7
+ /**
8
+ * Step state variants
9
+ */
10
+ type StepState = 'pending' | 'current' | 'completed';
11
+ /**
12
+ * Individual step data interface
13
+ */
14
+ interface StepData {
15
+ /** Unique identifier for the step */
16
+ id: string;
17
+ /** Label text for the step */
18
+ label: string;
19
+ /** Current state of the step */
20
+ state: StepState;
21
+ }
22
+ /**
23
+ * Size configurations - Following design system pattern from CSS specifications
24
+ * Small size based on exact CSS: width 58px, height 38px, gap 8px
25
+ */
26
+ declare const SIZE_CLASSES: {
27
+ readonly small: {
28
+ readonly container: "gap-2";
29
+ readonly stepWidth: "w-[58px]";
30
+ readonly stepHeight: "h-[38px]";
31
+ readonly indicator: "w-5 h-5";
32
+ readonly progressBar: "h-0.5";
33
+ readonly indicatorTextSize: "2xs";
34
+ readonly labelTextSize: "xs";
35
+ readonly iconSize: "w-3 h-3";
36
+ };
37
+ readonly medium: {
38
+ readonly container: "gap-3";
39
+ readonly stepWidth: "w-[110px]";
40
+ readonly stepHeight: "h-[48px]";
41
+ readonly indicator: "w-6 h-6";
42
+ readonly progressBar: "h-0.5";
43
+ readonly indicatorTextSize: "2xs";
44
+ readonly labelTextSize: "xs";
45
+ readonly iconSize: "w-3.5 h-3.5";
46
+ };
47
+ readonly large: {
48
+ readonly container: "gap-4";
49
+ readonly stepWidth: "w-[160px]";
50
+ readonly stepHeight: "h-[58px]";
51
+ readonly indicator: "w-7 h-7";
52
+ readonly progressBar: "h-1";
53
+ readonly indicatorTextSize: "xs";
54
+ readonly labelTextSize: "sm";
55
+ readonly iconSize: "w-4 h-4";
56
+ };
57
+ readonly extraLarge: {
58
+ readonly container: "gap-5";
59
+ readonly stepWidth: "w-[200px]";
60
+ readonly stepHeight: "h-[68px]";
61
+ readonly indicator: "w-8 h-8";
62
+ readonly progressBar: "h-1";
63
+ readonly indicatorTextSize: "xs";
64
+ readonly labelTextSize: "sm";
65
+ readonly iconSize: "w-[18px] h-[18px]";
66
+ };
67
+ };
68
+ /**
69
+ * State configurations using exact colors from CSS specs
70
+ * pending: #A3A3A3 = text-400 (etapa ainda não iniciada)
71
+ * current: #1C61B2 = primary-800 (etapa atual sendo preenchida) - baseado no CSS fornecido
72
+ * completed: #1C61B2 = primary-800 (etapa concluída)
73
+ * text color: #FEFEFF = text
74
+ */
75
+ declare const STATE_CLASSES: {
76
+ readonly pending: {
77
+ readonly progressBar: "bg-text-400";
78
+ readonly indicator: "bg-text-400";
79
+ readonly indicatorText: "text-white";
80
+ readonly label: "text-text-400";
81
+ };
82
+ readonly current: {
83
+ readonly progressBar: "bg-primary-800";
84
+ readonly indicator: "bg-primary-800";
85
+ readonly indicatorText: "text-white";
86
+ readonly label: "text-primary-800";
87
+ };
88
+ readonly completed: {
89
+ readonly progressBar: "bg-primary-400";
90
+ readonly indicator: "bg-primary-400";
91
+ readonly indicatorText: "text-white";
92
+ readonly label: "text-primary-400";
93
+ };
94
+ };
95
+ /**
96
+ * Type for size classes
97
+ */
98
+ type SizeClassType = (typeof SIZE_CLASSES)[keyof typeof SIZE_CLASSES];
99
+ /**
100
+ * Type for state classes
101
+ */
102
+ type StateClassType = (typeof STATE_CLASSES)[keyof typeof STATE_CLASSES];
103
+ /**
104
+ * Props for individual step component
105
+ */
106
+ interface StepProps {
107
+ step: StepData;
108
+ index: number;
109
+ size: StepperSize;
110
+ sizeClasses: SizeClassType;
111
+ stateClasses: StateClassType;
112
+ isLast: boolean;
113
+ className?: string;
114
+ }
115
+ /**
116
+ * Individual Step component - Based on exact design specifications
117
+ * Layout: flex-column with progress bar at top, then icon+label row
118
+ * Fully responsive for mobile, tablets, and laptops
119
+ */
120
+ declare const Step: ({ step, index, size: _size, sizeClasses, stateClasses, isLast: _isLast, className, }: StepProps) => react_jsx_runtime.JSX.Element;
121
+ /**
122
+ * Stepper component props interface
123
+ */
124
+ type StepperProps = {
125
+ /** Array of step data */
126
+ steps: StepData[];
127
+ /** Size variant of the stepper */
128
+ size?: StepperSize;
129
+ /** Current active step index */
130
+ currentStep?: number;
131
+ /** Additional CSS classes */
132
+ className?: string;
133
+ /** Step container CSS classes */
134
+ stepClassName?: string;
135
+ /** Progress indicator (e.g., "Etapa 2 de 4") */
136
+ showProgress?: boolean;
137
+ /** Custom progress text */
138
+ progressText?: string;
139
+ /** Make stepper responsive (vertical on mobile) */
140
+ responsive?: boolean;
141
+ };
142
+ /**
143
+ * Stepper component for Analytica Ensino platforms
144
+ *
145
+ * A progress stepper component that displays a sequence of steps with different states.
146
+ * Follows the exact design specifications with proper spacing, colors, and layout.
147
+ * Fully responsive for mobile, tablets, and laptops.
148
+ *
149
+ * Design specifications:
150
+ * - Based on exact CSS specifications from Figma design
151
+ * - Fully responsive: mobile (320px+) -> tablets (640px+) -> laptops (1024px+)
152
+ * - Progressive sizing with responsive breakpoints that adapt to device type
153
+ * - Consistent gaps that scale with screen size and device capabilities
154
+ * - Consistent color scheme: pending (gray), current (dark blue), completed (light blue)
155
+ * - Responsive design with overflow scroll on smaller devices
156
+ * - Optimized text sizing and layout for each device category
157
+ *
158
+ * @example
159
+ * ```tsx
160
+ * // Basic stepper - automatically responsive for all devices
161
+ * <Stepper steps={steps} currentStep={1} />
162
+ *
163
+ * // Custom styling with full responsive behavior
164
+ * <Stepper steps={steps} size="medium" showProgress responsive />
165
+ * ```
166
+ */
167
+ declare const Stepper: ({ steps: initialSteps, size, currentStep, className, stepClassName, showProgress, progressText, responsive, }: StepperProps) => react_jsx_runtime.JSX.Element;
168
+
169
+ export { Step, type StepData, type StepperProps, Stepper as default };
@@ -1 +1,169 @@
1
- export * from '../index';
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+
3
+ /**
4
+ * Stepper size variants
5
+ */
6
+ type StepperSize = 'small' | 'medium' | 'large' | 'extraLarge';
7
+ /**
8
+ * Step state variants
9
+ */
10
+ type StepState = 'pending' | 'current' | 'completed';
11
+ /**
12
+ * Individual step data interface
13
+ */
14
+ interface StepData {
15
+ /** Unique identifier for the step */
16
+ id: string;
17
+ /** Label text for the step */
18
+ label: string;
19
+ /** Current state of the step */
20
+ state: StepState;
21
+ }
22
+ /**
23
+ * Size configurations - Following design system pattern from CSS specifications
24
+ * Small size based on exact CSS: width 58px, height 38px, gap 8px
25
+ */
26
+ declare const SIZE_CLASSES: {
27
+ readonly small: {
28
+ readonly container: "gap-2";
29
+ readonly stepWidth: "w-[58px]";
30
+ readonly stepHeight: "h-[38px]";
31
+ readonly indicator: "w-5 h-5";
32
+ readonly progressBar: "h-0.5";
33
+ readonly indicatorTextSize: "2xs";
34
+ readonly labelTextSize: "xs";
35
+ readonly iconSize: "w-3 h-3";
36
+ };
37
+ readonly medium: {
38
+ readonly container: "gap-3";
39
+ readonly stepWidth: "w-[110px]";
40
+ readonly stepHeight: "h-[48px]";
41
+ readonly indicator: "w-6 h-6";
42
+ readonly progressBar: "h-0.5";
43
+ readonly indicatorTextSize: "2xs";
44
+ readonly labelTextSize: "xs";
45
+ readonly iconSize: "w-3.5 h-3.5";
46
+ };
47
+ readonly large: {
48
+ readonly container: "gap-4";
49
+ readonly stepWidth: "w-[160px]";
50
+ readonly stepHeight: "h-[58px]";
51
+ readonly indicator: "w-7 h-7";
52
+ readonly progressBar: "h-1";
53
+ readonly indicatorTextSize: "xs";
54
+ readonly labelTextSize: "sm";
55
+ readonly iconSize: "w-4 h-4";
56
+ };
57
+ readonly extraLarge: {
58
+ readonly container: "gap-5";
59
+ readonly stepWidth: "w-[200px]";
60
+ readonly stepHeight: "h-[68px]";
61
+ readonly indicator: "w-8 h-8";
62
+ readonly progressBar: "h-1";
63
+ readonly indicatorTextSize: "xs";
64
+ readonly labelTextSize: "sm";
65
+ readonly iconSize: "w-[18px] h-[18px]";
66
+ };
67
+ };
68
+ /**
69
+ * State configurations using exact colors from CSS specs
70
+ * pending: #A3A3A3 = text-400 (etapa ainda não iniciada)
71
+ * current: #1C61B2 = primary-800 (etapa atual sendo preenchida) - baseado no CSS fornecido
72
+ * completed: #1C61B2 = primary-800 (etapa concluída)
73
+ * text color: #FEFEFF = text
74
+ */
75
+ declare const STATE_CLASSES: {
76
+ readonly pending: {
77
+ readonly progressBar: "bg-text-400";
78
+ readonly indicator: "bg-text-400";
79
+ readonly indicatorText: "text-white";
80
+ readonly label: "text-text-400";
81
+ };
82
+ readonly current: {
83
+ readonly progressBar: "bg-primary-800";
84
+ readonly indicator: "bg-primary-800";
85
+ readonly indicatorText: "text-white";
86
+ readonly label: "text-primary-800";
87
+ };
88
+ readonly completed: {
89
+ readonly progressBar: "bg-primary-400";
90
+ readonly indicator: "bg-primary-400";
91
+ readonly indicatorText: "text-white";
92
+ readonly label: "text-primary-400";
93
+ };
94
+ };
95
+ /**
96
+ * Type for size classes
97
+ */
98
+ type SizeClassType = (typeof SIZE_CLASSES)[keyof typeof SIZE_CLASSES];
99
+ /**
100
+ * Type for state classes
101
+ */
102
+ type StateClassType = (typeof STATE_CLASSES)[keyof typeof STATE_CLASSES];
103
+ /**
104
+ * Props for individual step component
105
+ */
106
+ interface StepProps {
107
+ step: StepData;
108
+ index: number;
109
+ size: StepperSize;
110
+ sizeClasses: SizeClassType;
111
+ stateClasses: StateClassType;
112
+ isLast: boolean;
113
+ className?: string;
114
+ }
115
+ /**
116
+ * Individual Step component - Based on exact design specifications
117
+ * Layout: flex-column with progress bar at top, then icon+label row
118
+ * Fully responsive for mobile, tablets, and laptops
119
+ */
120
+ declare const Step: ({ step, index, size: _size, sizeClasses, stateClasses, isLast: _isLast, className, }: StepProps) => react_jsx_runtime.JSX.Element;
121
+ /**
122
+ * Stepper component props interface
123
+ */
124
+ type StepperProps = {
125
+ /** Array of step data */
126
+ steps: StepData[];
127
+ /** Size variant of the stepper */
128
+ size?: StepperSize;
129
+ /** Current active step index */
130
+ currentStep?: number;
131
+ /** Additional CSS classes */
132
+ className?: string;
133
+ /** Step container CSS classes */
134
+ stepClassName?: string;
135
+ /** Progress indicator (e.g., "Etapa 2 de 4") */
136
+ showProgress?: boolean;
137
+ /** Custom progress text */
138
+ progressText?: string;
139
+ /** Make stepper responsive (vertical on mobile) */
140
+ responsive?: boolean;
141
+ };
142
+ /**
143
+ * Stepper component for Analytica Ensino platforms
144
+ *
145
+ * A progress stepper component that displays a sequence of steps with different states.
146
+ * Follows the exact design specifications with proper spacing, colors, and layout.
147
+ * Fully responsive for mobile, tablets, and laptops.
148
+ *
149
+ * Design specifications:
150
+ * - Based on exact CSS specifications from Figma design
151
+ * - Fully responsive: mobile (320px+) -> tablets (640px+) -> laptops (1024px+)
152
+ * - Progressive sizing with responsive breakpoints that adapt to device type
153
+ * - Consistent gaps that scale with screen size and device capabilities
154
+ * - Consistent color scheme: pending (gray), current (dark blue), completed (light blue)
155
+ * - Responsive design with overflow scroll on smaller devices
156
+ * - Optimized text sizing and layout for each device category
157
+ *
158
+ * @example
159
+ * ```tsx
160
+ * // Basic stepper - automatically responsive for all devices
161
+ * <Stepper steps={steps} currentStep={1} />
162
+ *
163
+ * // Custom styling with full responsive behavior
164
+ * <Stepper steps={steps} size="medium" showProgress responsive />
165
+ * ```
166
+ */
167
+ declare const Stepper: ({ steps: initialSteps, size, currentStep, className, stepClassName, showProgress, progressText, responsive, }: StepperProps) => react_jsx_runtime.JSX.Element;
168
+
169
+ export { Step, type StepData, type StepperProps, Stepper as default };
@@ -387,3 +387,4 @@ var Stepper_default = Stepper;
387
387
  0 && (module.exports = {
388
388
  Step
389
389
  });
390
+ //# sourceMappingURL=index.js.map