eai-frontend-components 2.0.13 → 2.0.15

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/components/ui/accordion.d.ts +8 -0
  2. package/dist/components/ui/accordion.d.ts.map +1 -0
  3. package/dist/components/ui/accordion.js +13 -0
  4. package/dist/components/ui/alert-dialog.d.ts +25 -0
  5. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  6. package/dist/components/ui/alert-dialog.js +27 -0
  7. package/dist/components/ui/alert.d.ts +9 -0
  8. package/dist/components/ui/alert.d.ts.map +1 -0
  9. package/dist/components/ui/alert.js +22 -0
  10. package/dist/components/ui/avatar.d.ts +7 -0
  11. package/dist/components/ui/avatar.d.ts.map +1 -0
  12. package/dist/components/ui/avatar.js +11 -0
  13. package/dist/components/ui/badge.d.ts +10 -0
  14. package/dist/components/ui/badge.d.ts.map +1 -0
  15. package/dist/components/ui/badge.js +26 -0
  16. package/dist/components/ui/breadcrumb.d.ts +20 -0
  17. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  18. package/dist/components/ui/breadcrumb.js +23 -0
  19. package/dist/components/ui/button.d.ts +12 -0
  20. package/dist/components/ui/button.d.ts.map +1 -0
  21. package/dist/components/ui/button.js +33 -0
  22. package/dist/components/ui/calendar.d.ts +9 -0
  23. package/dist/components/ui/calendar.d.ts.map +1 -0
  24. package/dist/components/ui/calendar.js +70 -0
  25. package/dist/components/ui/card.d.ts +9 -0
  26. package/dist/components/ui/card.d.ts.map +1 -0
  27. package/dist/components/ui/card.js +16 -0
  28. package/dist/components/ui/carousel.d.ts +19 -0
  29. package/dist/components/ui/carousel.d.ts.map +1 -0
  30. package/dist/components/ui/carousel.js +98 -0
  31. package/dist/components/ui/chart.d.ts +63 -0
  32. package/dist/components/ui/chart.d.ts.map +1 -0
  33. package/dist/components/ui/chart.js +132 -0
  34. package/dist/components/ui/checkbox.d.ts +5 -0
  35. package/dist/components/ui/checkbox.d.ts.map +1 -0
  36. package/dist/components/ui/checkbox.js +8 -0
  37. package/dist/components/ui/collapsible.d.ts +6 -0
  38. package/dist/components/ui/collapsible.d.ts.map +1 -0
  39. package/dist/components/ui/collapsible.js +5 -0
  40. package/dist/components/ui/command.d.ts +81 -0
  41. package/dist/components/ui/command.d.ts.map +1 -0
  42. package/dist/components/ui/command.js +28 -0
  43. package/dist/components/ui/context-menu.d.ts +28 -0
  44. package/dist/components/ui/context-menu.d.ts.map +1 -0
  45. package/dist/components/ui/context-menu.js +33 -0
  46. package/dist/components/ui/custom/date-picker.d.ts +12 -0
  47. package/dist/components/ui/custom/date-picker.d.ts.map +1 -0
  48. package/dist/components/ui/custom/date-picker.js +35 -0
  49. package/dist/components/ui/custom/form/checkbox.d.ts +13 -0
  50. package/dist/components/ui/custom/form/checkbox.d.ts.map +1 -0
  51. package/dist/components/ui/custom/form/checkbox.js +15 -0
  52. package/dist/components/ui/custom/form/color.d.ts +15 -0
  53. package/dist/components/ui/custom/form/color.d.ts.map +1 -0
  54. package/dist/components/ui/custom/form/color.js +40 -0
  55. package/dist/components/ui/custom/form/combobox.d.ts +37 -0
  56. package/dist/components/ui/custom/form/combobox.d.ts.map +1 -0
  57. package/dist/components/ui/custom/form/combobox.js +82 -0
  58. package/dist/components/ui/custom/form/cpf-cnpj.d.ts +16 -0
  59. package/dist/components/ui/custom/form/cpf-cnpj.d.ts.map +1 -0
  60. package/dist/components/ui/custom/form/cpf-cnpj.js +32 -0
  61. package/dist/components/ui/custom/form/currency.d.ts +14 -0
  62. package/dist/components/ui/custom/form/currency.d.ts.map +1 -0
  63. package/dist/components/ui/custom/form/currency.js +15 -0
  64. package/dist/components/ui/custom/form/date-range.d.ts +16 -0
  65. package/dist/components/ui/custom/form/date-range.d.ts.map +1 -0
  66. package/dist/components/ui/custom/form/date-range.js +24 -0
  67. package/dist/components/ui/custom/form/date.d.ts +16 -0
  68. package/dist/components/ui/custom/form/date.d.ts.map +1 -0
  69. package/dist/components/ui/custom/form/date.js +35 -0
  70. package/dist/components/ui/custom/form/decimal.d.ts +14 -0
  71. package/dist/components/ui/custom/form/decimal.d.ts.map +1 -0
  72. package/dist/components/ui/custom/form/decimal.js +15 -0
  73. package/dist/components/ui/custom/form/file.d.ts +15 -0
  74. package/dist/components/ui/custom/form/file.d.ts.map +1 -0
  75. package/dist/components/ui/custom/form/file.js +18 -0
  76. package/dist/components/ui/custom/form/form-help-text.d.ts +3 -0
  77. package/dist/components/ui/custom/form/form-help-text.d.ts.map +1 -0
  78. package/dist/components/ui/custom/form/form-help-text.js +7 -0
  79. package/dist/components/ui/custom/form/form-label.d.ts +7 -0
  80. package/dist/components/ui/custom/form/form-label.d.ts.map +1 -0
  81. package/dist/components/ui/custom/form/form-label.js +9 -0
  82. package/dist/components/ui/custom/form/form-message.d.ts +5 -0
  83. package/dist/components/ui/custom/form/form-message.d.ts.map +1 -0
  84. package/dist/components/ui/custom/form/form-message.js +5 -0
  85. package/dist/components/ui/custom/form/ghost.d.ts +8 -0
  86. package/dist/components/ui/custom/form/ghost.d.ts.map +1 -0
  87. package/dist/components/ui/custom/form/ghost.js +8 -0
  88. package/dist/components/ui/custom/form/input.d.ts +18 -0
  89. package/dist/components/ui/custom/form/input.d.ts.map +1 -0
  90. package/dist/components/ui/custom/form/input.js +14 -0
  91. package/dist/components/ui/custom/form/mask.d.ts +19 -0
  92. package/dist/components/ui/custom/form/mask.d.ts.map +1 -0
  93. package/dist/components/ui/custom/form/mask.js +19 -0
  94. package/dist/components/ui/custom/form/multi-select.d.ts +26 -0
  95. package/dist/components/ui/custom/form/multi-select.d.ts.map +1 -0
  96. package/dist/components/ui/custom/form/multi-select.js +66 -0
  97. package/dist/components/ui/custom/form/password.d.ts +16 -0
  98. package/dist/components/ui/custom/form/password.d.ts.map +1 -0
  99. package/dist/components/ui/custom/form/password.js +14 -0
  100. package/dist/components/ui/custom/form/percent.d.ts +14 -0
  101. package/dist/components/ui/custom/form/percent.d.ts.map +1 -0
  102. package/dist/components/ui/custom/form/percent.js +15 -0
  103. package/dist/components/ui/custom/form/phone.d.ts +16 -0
  104. package/dist/components/ui/custom/form/phone.d.ts.map +1 -0
  105. package/dist/components/ui/custom/form/phone.js +23 -0
  106. package/dist/components/ui/custom/form/radio-group.d.ts +23 -0
  107. package/dist/components/ui/custom/form/radio-group.d.ts.map +1 -0
  108. package/dist/components/ui/custom/form/radio-group.js +15 -0
  109. package/dist/components/ui/custom/form/select.d.ts +20 -0
  110. package/dist/components/ui/custom/form/select.d.ts.map +1 -0
  111. package/dist/components/ui/custom/form/select.js +12 -0
  112. package/dist/components/ui/custom/form/step-new-form.d.ts +10 -0
  113. package/dist/components/ui/custom/form/step-new-form.d.ts.map +1 -0
  114. package/dist/components/ui/custom/form/step-new-form.js +13 -0
  115. package/dist/components/ui/custom/form/switch.d.ts +13 -0
  116. package/dist/components/ui/custom/form/switch.d.ts.map +1 -0
  117. package/dist/components/ui/custom/form/switch.js +16 -0
  118. package/dist/components/ui/custom/form/text.d.ts +18 -0
  119. package/dist/components/ui/custom/form/text.d.ts.map +1 -0
  120. package/dist/components/ui/custom/form/text.js +14 -0
  121. package/dist/components/ui/custom/form/textarea.d.ts +16 -0
  122. package/dist/components/ui/custom/form/textarea.d.ts.map +1 -0
  123. package/dist/components/ui/custom/form/textarea.js +19 -0
  124. package/dist/components/ui/custom/form/utils.d.ts +18 -0
  125. package/dist/components/ui/custom/form/utils.d.ts.map +1 -0
  126. package/dist/components/ui/custom/form/utils.js +88 -0
  127. package/dist/components/ui/custom/header.d.ts +11 -0
  128. package/dist/components/ui/custom/header.d.ts.map +1 -0
  129. package/dist/components/ui/custom/header.js +74 -0
  130. package/dist/components/ui/custom/label.d.ts +13 -0
  131. package/dist/components/ui/custom/label.d.ts.map +1 -0
  132. package/dist/components/ui/custom/label.js +20 -0
  133. package/dist/components/ui/custom/not-found.d.ts +3 -0
  134. package/dist/components/ui/custom/not-found.d.ts.map +1 -0
  135. package/dist/components/ui/custom/not-found.js +9 -0
  136. package/dist/components/ui/custom/sidebar/module-switcher.d.ts +9 -0
  137. package/dist/components/ui/custom/sidebar/module-switcher.d.ts.map +1 -0
  138. package/dist/components/ui/custom/sidebar/module-switcher.js +20 -0
  139. package/dist/components/ui/custom/sidebar/nav-footer.d.ts +7 -0
  140. package/dist/components/ui/custom/sidebar/nav-footer.d.ts.map +1 -0
  141. package/dist/components/ui/custom/sidebar/nav-footer.js +13 -0
  142. package/dist/components/ui/custom/sidebar/nav-main.d.ts +7 -0
  143. package/dist/components/ui/custom/sidebar/nav-main.d.ts.map +1 -0
  144. package/dist/components/ui/custom/sidebar/nav-main.js +27 -0
  145. package/dist/components/ui/custom/sidebar/nav-submenu-collapsible.d.ts +9 -0
  146. package/dist/components/ui/custom/sidebar/nav-submenu-collapsible.d.ts.map +1 -0
  147. package/dist/components/ui/custom/sidebar/nav-submenu-collapsible.js +18 -0
  148. package/dist/components/ui/custom/sidebar/nav-submenu-dropdown.d.ts +10 -0
  149. package/dist/components/ui/custom/sidebar/nav-submenu-dropdown.d.ts.map +1 -0
  150. package/dist/components/ui/custom/sidebar/nav-submenu-dropdown.js +10 -0
  151. package/dist/components/ui/custom/sidebar/nav-user.d.ts +9 -0
  152. package/dist/components/ui/custom/sidebar/nav-user.d.ts.map +1 -0
  153. package/dist/components/ui/custom/sidebar/nav-user.js +24 -0
  154. package/dist/components/ui/custom/sidebar/sidebar-button.d.ts +9 -0
  155. package/dist/components/ui/custom/sidebar/sidebar-button.d.ts.map +1 -0
  156. package/dist/components/ui/custom/sidebar/sidebar-button.js +7 -0
  157. package/dist/components/ui/custom/sidebar/sidebar-item-two-lines.d.ts +12 -0
  158. package/dist/components/ui/custom/sidebar/sidebar-item-two-lines.d.ts.map +1 -0
  159. package/dist/components/ui/custom/sidebar/sidebar-item-two-lines.js +5 -0
  160. package/dist/components/ui/custom/sidebar/sidebar-item.d.ts +9 -0
  161. package/dist/components/ui/custom/sidebar/sidebar-item.d.ts.map +1 -0
  162. package/dist/components/ui/custom/sidebar/sidebar-item.js +7 -0
  163. package/dist/components/ui/custom/sidebar/types/sidebar.d.ts +29 -0
  164. package/dist/components/ui/custom/sidebar/types/sidebar.d.ts.map +1 -0
  165. package/dist/components/ui/custom/sidebar/types/sidebar.js +5 -0
  166. package/dist/components/ui/custom/table/data-table-export.d.ts +8 -0
  167. package/dist/components/ui/custom/table/data-table-export.d.ts.map +1 -0
  168. package/dist/components/ui/custom/table/data-table-export.js +65 -0
  169. package/dist/components/ui/custom/table/data-table-footer.d.ts +25 -0
  170. package/dist/components/ui/custom/table/data-table-footer.d.ts.map +1 -0
  171. package/dist/components/ui/custom/table/data-table-footer.js +39 -0
  172. package/dist/components/ui/custom/table/data-table-header.d.ts +9 -0
  173. package/dist/components/ui/custom/table/data-table-header.d.ts.map +1 -0
  174. package/dist/components/ui/custom/table/data-table-header.js +11 -0
  175. package/dist/components/ui/custom/table/data-table-rows.d.ts +13 -0
  176. package/dist/components/ui/custom/table/data-table-rows.d.ts.map +1 -0
  177. package/dist/components/ui/custom/table/data-table-rows.js +25 -0
  178. package/dist/components/ui/custom/table/data-table.d.ts +35 -0
  179. package/dist/components/ui/custom/table/data-table.d.ts.map +1 -0
  180. package/dist/components/ui/custom/table/data-table.js +99 -0
  181. package/dist/components/ui/custom/table/types/data-table.d.ts +29 -0
  182. package/dist/components/ui/custom/table/types/data-table.d.ts.map +1 -0
  183. package/dist/components/ui/custom/table/types/data-table.js +1 -0
  184. package/dist/components/ui/custom/theme-provider.d.ts +24 -0
  185. package/dist/components/ui/custom/theme-provider.d.ts.map +1 -0
  186. package/dist/components/ui/custom/theme-provider.js +79 -0
  187. package/dist/components/ui/dateRangePicker.d.ts +3 -0
  188. package/dist/components/ui/dateRangePicker.d.ts.map +1 -0
  189. package/dist/components/ui/dateRangePicker.js +15 -0
  190. package/dist/components/ui/dialog.d.ts +23 -0
  191. package/dist/components/ui/dialog.d.ts.map +1 -0
  192. package/dist/components/ui/dialog.js +23 -0
  193. package/dist/components/ui/drawer.d.ts +23 -0
  194. package/dist/components/ui/drawer.d.ts.map +1 -0
  195. package/dist/components/ui/drawer.js +22 -0
  196. package/dist/components/ui/dropdown-menu.d.ts +28 -0
  197. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  198. package/dist/components/ui/dropdown-menu.js +32 -0
  199. package/dist/components/ui/form.d.ts +24 -0
  200. package/dist/components/ui/form.d.ts.map +1 -0
  201. package/dist/components/ui/form.js +60 -0
  202. package/dist/components/ui/hover-card.d.ts +7 -0
  203. package/dist/components/ui/hover-card.d.ts.map +1 -0
  204. package/dist/components/ui/hover-card.js +9 -0
  205. package/dist/components/ui/input.d.ts +24 -0
  206. package/dist/components/ui/input.d.ts.map +1 -0
  207. package/dist/components/ui/input.js +71 -0
  208. package/dist/components/ui/label.d.ts +6 -0
  209. package/dist/components/ui/label.d.ts.map +1 -0
  210. package/dist/components/ui/label.js +9 -0
  211. package/dist/components/ui/masks.d.ts +17 -0
  212. package/dist/components/ui/masks.d.ts.map +1 -0
  213. package/dist/components/ui/masks.js +25 -0
  214. package/dist/components/ui/pagination.d.ts +30 -0
  215. package/dist/components/ui/pagination.d.ts.map +1 -0
  216. package/dist/components/ui/pagination.js +23 -0
  217. package/dist/components/ui/popover.d.ts +7 -0
  218. package/dist/components/ui/popover.d.ts.map +1 -0
  219. package/dist/components/ui/popover.js +11 -0
  220. package/dist/components/ui/progress.d.ts +5 -0
  221. package/dist/components/ui/progress.d.ts.map +1 -0
  222. package/dist/components/ui/progress.js +7 -0
  223. package/dist/components/ui/radio-group.d.ts +6 -0
  224. package/dist/components/ui/radio-group.d.ts.map +1 -0
  225. package/dist/components/ui/radio-group.js +14 -0
  226. package/dist/components/ui/scroll-area.d.ts +6 -0
  227. package/dist/components/ui/scroll-area.d.ts.map +1 -0
  228. package/dist/components/ui/scroll-area.js +11 -0
  229. package/dist/components/ui/select.d.ts +14 -0
  230. package/dist/components/ui/select.d.ts.map +1 -0
  231. package/dist/components/ui/select.js +24 -0
  232. package/dist/components/ui/separator.d.ts +5 -0
  233. package/dist/components/ui/separator.d.ts.map +1 -0
  234. package/dist/components/ui/separator.js +7 -0
  235. package/dist/components/ui/sheet.d.ts +26 -0
  236. package/dist/components/ui/sheet.d.ts.map +1 -0
  237. package/dist/components/ui/sheet.js +37 -0
  238. package/dist/components/ui/sidebar.d.ts +67 -0
  239. package/dist/components/ui/sidebar.d.ts.map +1 -0
  240. package/dist/components/ui/sidebar.js +221 -0
  241. package/dist/components/ui/skeleton.d.ts +3 -0
  242. package/dist/components/ui/skeleton.d.ts.map +1 -0
  243. package/dist/components/ui/skeleton.js +6 -0
  244. package/dist/components/ui/slider.d.ts +5 -0
  245. package/dist/components/ui/slider.d.ts.map +1 -0
  246. package/dist/components/ui/slider.js +7 -0
  247. package/dist/components/ui/switch.d.ts +5 -0
  248. package/dist/components/ui/switch.d.ts.map +1 -0
  249. package/dist/components/ui/switch.js +7 -0
  250. package/dist/components/ui/table.d.ts +11 -0
  251. package/dist/components/ui/table.d.ts.map +1 -0
  252. package/dist/components/ui/table.js +20 -0
  253. package/dist/components/ui/tabs.d.ts +8 -0
  254. package/dist/components/ui/tabs.d.ts.map +1 -0
  255. package/dist/components/ui/tabs.js +12 -0
  256. package/dist/components/ui/textarea.d.ts +4 -0
  257. package/dist/components/ui/textarea.d.ts.map +1 -0
  258. package/dist/components/ui/textarea.js +14 -0
  259. package/dist/components/ui/toast.d.ts +16 -0
  260. package/dist/components/ui/toast.d.ts.map +1 -0
  261. package/dist/components/ui/toast.js +34 -0
  262. package/dist/components/ui/toaster.d.ts +2 -0
  263. package/dist/components/ui/toaster.d.ts.map +1 -0
  264. package/dist/components/ui/toaster.js +21 -0
  265. package/dist/components/ui/tooltip.d.ts +8 -0
  266. package/dist/components/ui/tooltip.d.ts.map +1 -0
  267. package/dist/components/ui/tooltip.js +10 -0
  268. package/dist/components/ui/use-calendar.d.ts +7 -0
  269. package/dist/components/ui/use-calendar.d.ts.map +1 -0
  270. package/dist/components/ui/use-calendar.js +23 -0
  271. package/dist/components/ui/use-toast.d.ts +46 -0
  272. package/dist/components/ui/use-toast.d.ts.map +1 -0
  273. package/dist/components/ui/use-toast.js +125 -0
  274. package/dist/hooks/use-mobile.d.ts +2 -0
  275. package/dist/hooks/use-mobile.d.ts.map +1 -0
  276. package/dist/hooks/use-mobile.js +15 -0
  277. package/dist/index.d.ts +9 -9
  278. package/dist/index.d.ts.map +1 -0
  279. package/dist/index.esm.js +7 -7
  280. package/dist/index.esm.js.map +1 -1
  281. package/dist/index.js +7 -7
  282. package/dist/index.js.map +1 -1
  283. package/dist/lib/help/date-utils.d.ts +7 -0
  284. package/dist/lib/help/date-utils.d.ts.map +1 -0
  285. package/dist/lib/help/date-utils.js +34 -0
  286. package/dist/lib/help/format.d.ts +22 -0
  287. package/dist/lib/help/format.d.ts.map +1 -0
  288. package/dist/lib/help/format.js +140 -0
  289. package/dist/lib/help/theme.d.ts +291 -0
  290. package/dist/lib/help/theme.d.ts.map +1 -0
  291. package/dist/lib/help/theme.js +340 -0
  292. package/dist/lib/help/uuid.d.ts +2 -0
  293. package/dist/lib/help/uuid.d.ts.map +1 -0
  294. package/dist/lib/help/uuid.js +4 -0
  295. package/dist/lib/utils.d.ts +3 -0
  296. package/dist/lib/utils.d.ts.map +1 -0
  297. package/dist/lib/utils.js +5 -0
  298. package/package.json +1 -1
@@ -0,0 +1,74 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useRef } from 'react';
3
+ import { useNavigate } from 'react-router-dom';
4
+ import LoadingBar from 'react-top-loading-bar';
5
+ import { getTailwindColorShades } from '../../../lib/help/theme';
6
+ import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from '../breadcrumb';
7
+ import { SidebarTrigger } from '../sidebar';
8
+ import { DEFAULT_THEME_DATA, useTheme } from './theme-provider';
9
+ const Header = ({ splittedPath, modules, pages, isLoading, combobox, }) => {
10
+ const { portalDefinitions } = useTheme();
11
+ const navigate = useNavigate();
12
+ const refProgressLoading = useRef(null);
13
+ const lastPage = splittedPath[splittedPath.length - 1];
14
+ useEffect(() => {
15
+ isLoading ? refProgressLoading.current?.start() : refProgressLoading.current?.complete();
16
+ }, [isLoading]);
17
+ const setRouter = (path) => {
18
+ navigate(path);
19
+ };
20
+ const getPath = (index) => {
21
+ let path = '';
22
+ for (let i = 0; i <= index; i++) {
23
+ path += `/${splittedPath[i]}`;
24
+ }
25
+ return path;
26
+ };
27
+ const getLinkSidebar = (index) => {
28
+ return pages.find((item) => item.path === getPath(index));
29
+ };
30
+ const getSubMenuItem = (index) => {
31
+ return pages.flatMap((item) => item.subMenuItems || []).find((sub) => sub.path === getPath(index));
32
+ };
33
+ const getModule = (page) => {
34
+ const module = modules.find((mod) => mod.value === page);
35
+ if (!module) {
36
+ return page;
37
+ }
38
+ return module?.title;
39
+ };
40
+ const getTitle = (index) => {
41
+ const linkSidebar = getLinkSidebar(index);
42
+ const subMenuItem = getSubMenuItem(index);
43
+ if (subMenuItem) {
44
+ return subMenuItem.label;
45
+ }
46
+ return linkSidebar?.title;
47
+ };
48
+ const renderBreadcrumbPage = (index) => {
49
+ return _jsx(BreadcrumbPage, { children: getTitle(index) });
50
+ };
51
+ const renderBreadcrumbLink = (page, index) => {
52
+ const linkSidebar = getLinkSidebar(index);
53
+ return linkSidebar?.subMenuType ? (renderBreadcrumbPage(index)) : (_jsx(BreadcrumbLink, { onClick: () => setRouter(getPath(index)), className: 'cursor-pointer', children: index === 0 ? getModule(page) : getTitle(index) }));
54
+ };
55
+ const renderBreadcrumbItens = () => {
56
+ const breadcrumbItems = [];
57
+ splittedPath.map((page, index) => {
58
+ breadcrumbItems.push(_jsx(BreadcrumbItem, { children: page === lastPage ? renderBreadcrumbPage(index) : renderBreadcrumbLink(page, index) }, `breadcrumb-item-${index}`));
59
+ if (page !== lastPage) {
60
+ breadcrumbItems.push(_jsx(BreadcrumbSeparator, { className: 'mt-[1px]' }, `breadcrumb-separator-${index}`));
61
+ }
62
+ });
63
+ return breadcrumbItems;
64
+ };
65
+ const getColorLoadingBar = () => {
66
+ const colorShades = getTailwindColorShades();
67
+ const tailwindColor = portalDefinitions?.mvnoPrimaryColor || DEFAULT_THEME_DATA.mvnoPrimaryColor;
68
+ const isValidColor = (color) => color in colorShades;
69
+ const colorPallete = isValidColor(tailwindColor) ? colorShades[tailwindColor] : colorShades.violet;
70
+ return colorPallete[900];
71
+ };
72
+ return (_jsxs("header", { className: 'flex flex-col justify-between items-center w-full', children: [_jsxs("div", { className: 'flex justify-between items-center py-3 px-5 w-full', children: [_jsxs("div", { className: 'flex items-center gap-x-2 h-[40px]', children: [_jsx(SidebarTrigger, { className: 'p-5' }), _jsx("div", { className: 'p-2', children: _jsx(Breadcrumb, { children: _jsx(BreadcrumbList, { children: renderBreadcrumbItens() }) }) })] }), _jsx("div", { className: 'flex items-center', children: combobox })] }), _jsx(LoadingBar, { ref: refProgressLoading, color: getColorLoadingBar(), height: 7 })] }));
73
+ };
74
+ export default Header;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ interface LabelWithTitleProps {
3
+ title: string;
4
+ value: string;
5
+ value2?: string;
6
+ required?: boolean;
7
+ showCopyIcon?: boolean;
8
+ className?: string;
9
+ isLoading?: boolean;
10
+ }
11
+ declare const LabelWithTitle: React.FC<LabelWithTitleProps>;
12
+ export default LabelWithTitle;
13
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/custom/label.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,UAAU,mBAAmB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0DjD,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Copy } from 'lucide-react';
3
+ import { cn } from '../../../lib/utils';
4
+ import { Button } from '../button';
5
+ import { Skeleton } from '../skeleton';
6
+ import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../tooltip';
7
+ import { toast } from '../use-toast';
8
+ const LabelWithTitle = ({ title, value, value2, required, showCopyIcon = false, className, isLoading }) => {
9
+ const handleCopy = () => {
10
+ if (showCopyIcon && value) {
11
+ navigator.clipboard.writeText(`${value}${value2 ?? ''}`);
12
+ toast({
13
+ title: `"${value}${value2 ?? ''}" foi copiado para a área de transferência.`,
14
+ variant: 'success',
15
+ });
16
+ }
17
+ };
18
+ return (_jsx("div", { className: cn('flex group', className), children: _jsx("div", { className: cn('flex flex-col text-sm w-full', showCopyIcon ? 'p-1 rounded-md transition-colors group-hover:bg-sidebar-accent' : 'p-1'), children: _jsxs("div", { className: 'relative', children: [_jsxs("div", { className: 'flex items-center text-sm font-medium gap-0.5', children: [_jsx("label", { className: 'text-default truncate', children: title }), required && _jsx("div", { className: 'text-red-500 truncate', children: "*" })] }), _jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? _jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : _jsx("div", { className: 'text-zinc-500 truncate', children: value }) }), value2 && (_jsx("div", { className: 'grid flex-1 items-center pt-1', children: isLoading ? _jsx(Skeleton, { className: 'h-5 w-full rounded-lg' }) : _jsx("div", { className: 'text-zinc-500 truncate', children: value2 }) })), _jsx("div", { className: cn('pr-1 absolute top-1/2 right-0 -translate-y-1/2 opacity-0 transition-opacity', showCopyIcon && 'group-hover:opacity-100'), children: _jsx(TooltipProvider, { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: _jsx(Button, { variant: 'ghost', type: 'button', className: cn('p-1 h-8', !showCopyIcon && 'cursor-default'), onClick: handleCopy, children: _jsx(Copy, { size: 16 }) }) }), _jsx(TooltipContent, { children: "Copiar" })] }) }) })] }) }) }));
19
+ };
20
+ export default LabelWithTitle;
@@ -0,0 +1,3 @@
1
+ declare const NotFound: () => import("react/jsx-runtime").JSX.Element;
2
+ export default NotFound;
3
+ //# sourceMappingURL=not-found.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-found.d.ts","sourceRoot":"","sources":["../../../../src/components/ui/custom/not-found.tsx"],"names":[],"mappings":"AAGA,QAAA,MAAM,QAAQ,+CAyBb,CAAC;AACF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { BarChart2 } from 'lucide-react';
3
+ import { Button } from '../button';
4
+ const NotFound = () => {
5
+ return (_jsx("div", { className: "flex flex-col items-center justify-center h-screen bg-[url('/imgs/404.png')] bg-cover bg-no-repeat bg-center", children: _jsxs("div", { className: 'flex flex-col items-center justify-center gap-8 w-[424px]', children: [_jsxs("div", { className: 'flex flex-col items-center w-full', children: [_jsx("div", { className: 'text-5xl font-extrabold', children: "404" }), _jsx("div", { className: 'text-3xl font-semibold', children: "P\u00E1gina Indispon\u00EDvel" })] }), _jsx("div", { className: 'flex text-center text-xl font-semibold text-zinc-500', children: "A p\u00E1gina que voc\u00EA est\u00E1 tentando acessar se encontra indispon\u00EDvel no momento, tente novamente mais tarde" }), _jsx("div", { className: 'flex justify-center w-full', children: _jsxs(Button, { onClick: () => {
6
+ window.location.href = '/';
7
+ }, className: '[&_svg]:size-5', children: [_jsx(BarChart2, {}), "Voltar Para Inicial"] }) })] }) }));
8
+ };
9
+ export default NotFound;
@@ -0,0 +1,9 @@
1
+ import { Module } from './types/sidebar';
2
+ interface ModuleSwitcherProps {
3
+ modules: Module[];
4
+ activeModule: Module | undefined;
5
+ onModuleChange: (module: Module) => void;
6
+ }
7
+ declare const ModuleSwitcher: ({ modules, activeModule, onModuleChange, }: ModuleSwitcherProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default ModuleSwitcher;
9
+ //# sourceMappingURL=module-switcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-switcher.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/module-switcher.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,UAAU,mBAAmB;IAC5B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,QAAA,MAAM,cAAc,GAAI,4CAIrB,mBAAmB,4CAuCrB,CAAC;AAEF,eAAe,cAAc,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Check, ChevronsUpDown } from 'lucide-react';
3
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../../dropdown-menu';
4
+ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../sidebar';
5
+ import SidebarItemTwoLines from './sidebar-item-two-lines';
6
+ const ModuleSwitcher = ({ modules, activeModule, onModuleChange, }) => {
7
+ const { isMobile } = useSidebar();
8
+ return (_jsx(SidebarMenu, { children: _jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: _jsx(SidebarItemTwoLines, { item: {
9
+ iconLeft: (_jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: activeModule?.icon })),
10
+ title: activeModule?.title ?? '',
11
+ subTitle: activeModule?.subTitle ?? '',
12
+ iconRight: _jsx(ChevronsUpDown, { size: 16 }),
13
+ } }) }) }), _jsx(DropdownMenuContent, { className: 'w-[250px] rounded-lg', align: 'start', side: isMobile ? 'bottom' : 'right', sideOffset: 4, children: modules.map((module) => (_jsx(DropdownMenuItem, { onClick: () => onModuleChange?.(module), className: 'gap-2 p-2', children: _jsx(SidebarItemTwoLines, { item: {
14
+ iconLeft: _jsx("div", { className: 'flex p-[7.6px] items-center rounded-md bg-background-primary', children: module.icon }),
15
+ title: module.title,
16
+ subTitle: module.subTitle,
17
+ iconRight: activeModule?.value === module.value ? _jsx(Check, { size: 16 }) : null,
18
+ } }) }, `module-switcher-${module.value}`))) })] }) }) }));
19
+ };
20
+ export default ModuleSwitcher;
@@ -0,0 +1,7 @@
1
+ import { SidebarPage } from './types/sidebar';
2
+ interface NavFooterProps {
3
+ pages: SidebarPage[];
4
+ }
5
+ declare const NavFooter: ({ pages }: NavFooterProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default NavFooter;
7
+ //# sourceMappingURL=nav-footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-footer.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/nav-footer.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,UAAU,cAAc;IACvB,KAAK,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,QAAA,MAAM,SAAS,GAAI,WAAS,cAAc,4CAuBzC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useLocation, useNavigate } from 'react-router-dom';
3
+ import { SidebarGroup, SidebarGroupContent, SidebarMenu } from '../../sidebar';
4
+ import SidebarItem from './sidebar-item';
5
+ const NavFooter = ({ pages }) => {
6
+ const navigate = useNavigate();
7
+ const location = useLocation();
8
+ const selectedRoutePath = location.pathname;
9
+ return (_jsx(SidebarGroup, { className: 'p-0', children: _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: pages.map((item) => {
10
+ return (_jsx(SidebarItem, { item: item, selectedRoute: selectedRoutePath, onClick: () => navigate(item.path) }, `sidebar-menu-main-${item.path}`));
11
+ }) }) }) }));
12
+ };
13
+ export default NavFooter;
@@ -0,0 +1,7 @@
1
+ import { SidebarPage } from './types/sidebar';
2
+ interface NavMainProps {
3
+ pages: SidebarPage[];
4
+ }
5
+ declare const NavMain: ({ pages }: NavMainProps) => import("react/jsx-runtime").JSX.Element;
6
+ export default NavMain;
7
+ //# sourceMappingURL=nav-main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-main.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/nav-main.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAElE,UAAU,YAAY;IACrB,KAAK,EAAE,WAAW,EAAE,CAAC;CACrB;AAED,QAAA,MAAM,OAAO,GAAI,WAAS,YAAY,4CAiDrC,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useIsMobile } from '@/hooks/use-mobile';
3
+ import { useLocation, useNavigate } from 'react-router-dom';
4
+ import { SidebarGroup, SidebarGroupContent, SidebarMenu } from '../../sidebar';
5
+ import NavSubmenuCollapsible from './nav-submenu-collapsible';
6
+ import NavSubmenuDropdown from './nav-submenu-dropdown';
7
+ import SidebarItem from './sidebar-item';
8
+ import { SidebarSubmenuType } from './types/sidebar';
9
+ const NavMain = ({ pages }) => {
10
+ const navigate = useNavigate();
11
+ const location = useLocation();
12
+ const isMobile = useIsMobile();
13
+ const selectedRoutePath = location.pathname;
14
+ return (_jsx(SidebarGroup, { children: _jsx(SidebarGroupContent, { children: _jsx(SidebarMenu, { children: pages.map((item) => {
15
+ if (item.subMenuType) {
16
+ if (item.subMenuType === SidebarSubmenuType.COLLAPSIBLE || isMobile) {
17
+ return (_jsx(NavSubmenuCollapsible, { item: item, selectedRoute: selectedRoutePath, onClick: (path) => navigate(path) }, `sidebar-submenu-collapsible-${item.path}`));
18
+ }
19
+ // Deprecated: Use COLLAPSIBLE instead
20
+ if (item.subMenuType === SidebarSubmenuType.DROPDOWN) {
21
+ return (_jsx(NavSubmenuDropdown, { item: item, selectedRoute: selectedRoutePath, onClick: (path) => navigate(path), cols: 3 }, `sidebar-submenu-dropdown-${item.path}`));
22
+ }
23
+ }
24
+ return (_jsx(SidebarItem, { item: item, selectedRoute: selectedRoutePath, onClick: () => navigate(item.path) }, `sidebar-menu-main-${item.path}`));
25
+ }) }) }) }));
26
+ };
27
+ export default NavMain;
@@ -0,0 +1,9 @@
1
+ import { SidebarPage } from './types/sidebar';
2
+ interface NavSubmenuCollapsibleProps {
3
+ item: SidebarPage;
4
+ selectedRoute: string | null;
5
+ onClick: (path: string) => void;
6
+ }
7
+ declare const NavSubmenuCollapsible: ({ item, selectedRoute, onClick }: NavSubmenuCollapsibleProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default NavSubmenuCollapsible;
9
+ //# sourceMappingURL=nav-submenu-collapsible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-submenu-collapsible.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/nav-submenu-collapsible.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,UAAU,0BAA0B;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,QAAA,MAAM,qBAAqB,GAAI,kCAAkC,0BAA0B,4CA6C1F,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronRight } from 'lucide-react';
3
+ import { cn } from '../../../../lib/utils';
4
+ import { Collapsible, CollapsibleContent, CollapsibleTrigger } from '../../collapsible';
5
+ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar } from '../../sidebar';
6
+ const NavSubmenuCollapsible = ({ item, selectedRoute, onClick }) => {
7
+ const { open, toggleSidebar } = useSidebar();
8
+ const isOpen = () => {
9
+ return selectedRoute?.includes(item.path) ?? false;
10
+ };
11
+ const handleToggleSidebar = () => {
12
+ if (!open)
13
+ toggleSidebar();
14
+ };
15
+ return (_jsx(SidebarMenu, { children: _jsx(Collapsible, { asChild: true, defaultOpen: isOpen(), children: _jsxs(SidebarMenuItem, { children: [_jsx(CollapsibleTrigger, { asChild: true, className: 'group/collapsible', children: _jsxs(SidebarMenuButton, { tooltip: item.title, className: 'px-2 py-5 gap-3', onClick: () => handleToggleSidebar(), children: [item.icon, _jsx("span", { children: item.title }), _jsx(ChevronRight, { className: 'ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90' })] }) }), _jsx(CollapsibleContent, { children: _jsx(SidebarMenuSub, { children: item.subMenuItems
16
+ ?.map((subItem) => (_jsx(SidebarMenuSubItem, { children: _jsx(SidebarMenuSubButton, { asChild: true, onClick: () => onClick(subItem.path), "aria-disabled": subItem.disabled, children: _jsx("div", { className: cn('cursor-pointer px-2 py-1 items-center self-stretch', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), children: _jsx("span", { children: subItem.label }) }) }) }, subItem.label))) }) })] }) }, item.title) }));
17
+ };
18
+ export default NavSubmenuCollapsible;
@@ -0,0 +1,10 @@
1
+ import { SidebarPage } from './types/sidebar';
2
+ interface NavSubmenuDropdownProps {
3
+ cols?: number;
4
+ item: SidebarPage;
5
+ selectedRoute: string | null;
6
+ onClick: (path: string) => void;
7
+ }
8
+ declare const NavSubmenuDropdown: ({ cols, item, selectedRoute, onClick }: NavSubmenuDropdownProps) => import("react/jsx-runtime").JSX.Element;
9
+ export default NavSubmenuDropdown;
10
+ //# sourceMappingURL=nav-submenu-dropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-submenu-dropdown.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/nav-submenu-dropdown.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,UAAU,uBAAuB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC;AAED,QAAA,MAAM,kBAAkB,GAAI,wCAAwC,uBAAuB,4CAwC1F,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronRight } from 'lucide-react';
3
+ import { cn } from '../../../../lib/utils';
4
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from '../../dropdown-menu';
5
+ import { SidebarMenuButton, SidebarMenuItem } from '../../sidebar';
6
+ const NavSubmenuDropdown = ({ cols, item, selectedRoute, onClick }) => {
7
+ return (_jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(SidebarMenuButton, { asChild: true, className: cn('data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground hover:bg-sidebar-accent px-2 py-5 gap-3 cursor-pointer', selectedRoute?.includes(item.path) ? 'bg-sidebar-accent' : ''), tooltip: item.title, children: _jsxs("div", { children: [item.icon, _jsx("span", { children: item.title }), _jsx(ChevronRight, { className: 'ml-auto' })] }) }) }), _jsx(DropdownMenuContent, { className: `grid grid-cols-${cols ?? '1'} gap-4 p-4`, align: 'start', side: 'right', sideOffset: 4, children: item.subMenuItems
8
+ ?.map((subItem, index) => (_jsxs(DropdownMenuItem, { className: cn('flex flex-col items-start text-left max-w-[220px] gap-1 cursor-pointer', selectedRoute === subItem.path ? 'bg-sidebar-accent' : ''), onClick: () => onClick(subItem.path), disabled: subItem.disabled, children: [_jsx("div", { className: 'text-sm font-semibold', children: subItem.label }), _jsx("div", { className: 'text-sm text-muted-foreground', children: subItem.description })] }, `${index}`))) })] }) }));
9
+ };
10
+ export default NavSubmenuDropdown;
@@ -0,0 +1,9 @@
1
+ interface NavUserProps {
2
+ userName: string;
3
+ userEmail: string;
4
+ userInitials: string;
5
+ callbackLogout: () => void;
6
+ }
7
+ declare const NavUser: ({ userName, userEmail, userInitials, callbackLogout }: NavUserProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default NavUser;
9
+ //# sourceMappingURL=nav-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-user.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/nav-user.tsx"],"names":[],"mappings":"AAOA,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,QAAA,MAAM,OAAO,GAAI,uDAAqD,YAAY,4CA4DjF,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { LoaderCircle, LogOut } from 'lucide-react';
3
+ import { useState } from 'react';
4
+ import { Avatar, AvatarFallback, AvatarImage } from '../../avatar';
5
+ import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuTrigger } from '../../dropdown-menu';
6
+ import { SidebarMenu, SidebarMenuButton, SidebarMenuItem, useSidebar } from '../../sidebar';
7
+ import SidebarItemTwoLines from './sidebar-item-two-lines';
8
+ const NavUser = ({ userName, userEmail, userInitials, callbackLogout }) => {
9
+ const [isLoggingOut, setIsLoggingOut] = useState(false);
10
+ const { isMobile } = useSidebar();
11
+ const handleLogout = () => {
12
+ setIsLoggingOut(true);
13
+ setTimeout(() => {
14
+ callbackLogout();
15
+ }, 1000);
16
+ };
17
+ return (_jsx(SidebarMenu, { children: _jsx(SidebarMenuItem, { children: _jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(SidebarMenuButton, { size: 'lg', className: 'data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground', children: _jsx(SidebarItemTwoLines, { item: {
18
+ iconLeft: (_jsxs(Avatar, { className: 'h-[31px] w-[31px] rounded-md', children: [_jsx(AvatarImage, { src: userInitials, alt: userName }), _jsx(AvatarFallback, { className: 'rounded-md bg-background-primary text-white', children: userInitials })] })),
19
+ title: isLoggingOut ? 'Saindo...' : userName,
20
+ subTitle: isLoggingOut ? '' : userEmail,
21
+ iconRight: isLoggingOut ? (_jsx(LoaderCircle, { size: 16, className: 'text-sidebar-foreground animate-spin mr-2' })) : (_jsx(LogOut, { size: 16, className: 'text-sidebar-foreground' })),
22
+ } }) }) }), _jsxs(DropdownMenuContent, { className: 'w-[250px] rounded-lg', side: isMobile ? 'bottom' : 'right', align: 'end', sideOffset: 4, children: [_jsx(DropdownMenuLabel, { className: 'p-0 font-normal', children: _jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [_jsxs(Avatar, { className: 'h-8 w-8 rounded-lg', children: [_jsx(AvatarImage, { src: userInitials, alt: userName }), _jsx(AvatarFallback, { className: 'rounded-lg bg-background-primary text-white', children: userInitials })] }), _jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [_jsx("span", { className: 'truncate font-semibold', children: userName }), _jsx("span", { className: 'truncate text-xs', children: userEmail })] })] }) }), _jsx(DropdownMenuItem, { className: 'p-0 font-normal cursor-pointer', onClick: () => handleLogout(), children: _jsxs("div", { className: 'flex items-center gap-2 px-1 py-1.5 text-left text-sm', children: [_jsx("div", { className: 'flex w-8 h-8 p-2 items-center rounded-md', children: _jsx(LogOut, { size: 16 }) }), "Log out"] }) })] })] }) }) }));
23
+ };
24
+ export default NavUser;
@@ -0,0 +1,9 @@
1
+ import { Module, SidebarPage } from './types/sidebar';
2
+ interface SidebarItemProps {
3
+ item: SidebarPage;
4
+ selectedRoute: string | null;
5
+ onClick?: (module: Module | null, path: string) => void;
6
+ }
7
+ declare const SidebarButton: ({ item, selectedRoute, onClick }: SidebarItemProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default SidebarButton;
9
+ //# sourceMappingURL=sidebar-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-button.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/sidebar-button.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,gBAAgB;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED,QAAA,MAAM,aAAa,GAAI,kCAAkC,gBAAgB,4CAiBxE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { cn } from '../../../../lib/utils';
3
+ import { SidebarMenuButton } from '../../sidebar';
4
+ const SidebarButton = ({ item, selectedRoute, onClick }) => {
5
+ return (_jsx(SidebarMenuButton, { asChild: true, className: cn('data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground hover:bg-sidebar-accent px-2 py-5 gap-3 cursor-pointer', selectedRoute?.includes(item.path) ? 'bg-sidebar-accent' : ''), tooltip: item.title, onClick: () => onClick?.(item.module ?? null, item.path), children: _jsxs("div", { children: [_jsx("div", { className: '[&_svg]:size-4 text-sidebar-foreground', children: item.icon }), _jsx("span", { children: item.title })] }) }));
6
+ };
7
+ export default SidebarButton;
@@ -0,0 +1,12 @@
1
+ import * as React from 'react';
2
+ interface SidebarItemTwoLinesProps {
3
+ item: {
4
+ iconLeft: React.ReactNode;
5
+ title: string;
6
+ subTitle: string;
7
+ iconRight?: React.ReactNode | null;
8
+ };
9
+ }
10
+ declare const SidebarItemTwoLines: ({ item }: SidebarItemTwoLinesProps) => import("react/jsx-runtime").JSX.Element;
11
+ export default SidebarItemTwoLines;
12
+ //# sourceMappingURL=sidebar-item-two-lines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-item-two-lines.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/sidebar-item-two-lines.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,UAAU,wBAAwB;IACjC,IAAI,EAAE;QACL,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1B,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;KACnC,CAAC;CACF;AAED,QAAA,MAAM,mBAAmB,GAAI,UAAU,wBAAwB,4CAW9D,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ const SidebarItemTwoLines = ({ item }) => {
3
+ return (_jsxs(_Fragment, { children: [_jsx("div", { className: '[&_svg]:size-4 text-white', children: item.iconLeft }), _jsxs("div", { className: 'grid flex-1 text-left text-sm leading-tight', children: [_jsx("span", { className: 'truncate font-semibold', children: item.title }), _jsx("span", { className: 'truncate text-xs text-foreground', children: item.subTitle })] }), item.iconRight] }));
4
+ };
5
+ export default SidebarItemTwoLines;
@@ -0,0 +1,9 @@
1
+ import { Module, SidebarPage } from './types/sidebar';
2
+ interface SidebarItemProps {
3
+ item: SidebarPage;
4
+ selectedRoute: string | null;
5
+ onClick?: (module: Module | null, path: string) => void;
6
+ }
7
+ declare const SidebarItem: ({ item, selectedRoute, onClick }: SidebarItemProps) => import("react/jsx-runtime").JSX.Element;
8
+ export default SidebarItem;
9
+ //# sourceMappingURL=sidebar-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar-item.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/sidebar/sidebar-item.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,gBAAgB;IACzB,IAAI,EAAE,WAAW,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACxD;AAED,QAAA,MAAM,WAAW,GAAI,kCAAkC,gBAAgB,4CAMtE,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { SidebarMenuItem } from '../../sidebar';
3
+ import SidebarButton from './sidebar-button';
4
+ const SidebarItem = ({ item, selectedRoute, onClick }) => {
5
+ return (_jsx(SidebarMenuItem, { children: _jsx(SidebarButton, { item: item, selectedRoute: selectedRoute, onClick: onClick }) }));
6
+ };
7
+ export default SidebarItem;
@@ -0,0 +1,29 @@
1
+ export declare const SidebarSubmenuType: {
2
+ readonly COLLAPSIBLE: "collapsible";
3
+ readonly DROPDOWN: "dropdown";
4
+ };
5
+ export type SidebarSubmenuType = (typeof SidebarSubmenuType)[keyof typeof SidebarSubmenuType];
6
+ export interface Module {
7
+ value: string;
8
+ path: string;
9
+ title: string;
10
+ icon: React.ReactNode;
11
+ subTitle: string;
12
+ }
13
+ export interface SidebarPage {
14
+ module: Module;
15
+ path: string;
16
+ icon?: React.ReactNode;
17
+ title: string;
18
+ hideSidebar: boolean;
19
+ displayOnlyresellerIsAdm?: boolean;
20
+ subMenuType?: SidebarSubmenuType;
21
+ subMenuItems?: {
22
+ label: string;
23
+ description?: string;
24
+ path: string;
25
+ displayOnlyresellerIsAdm?: boolean;
26
+ disabled?: boolean;
27
+ }[];
28
+ }
29
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/custom/sidebar/types/sidebar.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB;;;CAIrB,CAAC;AACX,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE9F,MAAM,WAAW,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,YAAY,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,wBAAwB,CAAC,EAAE,OAAO,CAAC;QACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;KACnB,EAAE,CAAC;CACJ"}
@@ -0,0 +1,5 @@
1
+ export const SidebarSubmenuType = {
2
+ COLLAPSIBLE: 'collapsible',
3
+ // Deprecated: Use COLLAPSIBLE instead
4
+ DROPDOWN: 'dropdown',
5
+ };
@@ -0,0 +1,8 @@
1
+ import { ExportDataTable } from './types/data-table';
2
+ interface DataTableExportProps {
3
+ exportData?: ExportDataTable;
4
+ totalRows: number;
5
+ }
6
+ export declare function DataTableExport({ exportData, totalRows }: DataTableExportProps): import("react/jsx-runtime").JSX.Element | null | undefined;
7
+ export {};
8
+ //# sourceMappingURL=data-table-export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-export.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/table/data-table-export.tsx"],"names":[],"mappings":"AAQA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,UAAU,oBAAoB;IAC7B,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,oBAAoB,8DA8G9E"}
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { zodResolver } from '@hookform/resolvers/zod';
3
+ import { useForm } from 'react-hook-form';
4
+ import { z } from 'zod';
5
+ import { Button } from '../../button';
6
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger } from '../../dialog';
7
+ import { Form } from '../../form';
8
+ import { toast } from '../../use-toast';
9
+ import { FormRadioGroup } from '../form/radio-group';
10
+ export function DataTableExport({ exportData, totalRows }) {
11
+ const exportXlSX = () => {
12
+ if (!exportData)
13
+ return;
14
+ if (totalRows === 0) {
15
+ toast({
16
+ title: 'Não há dados para exportar.',
17
+ variant: 'destructive',
18
+ });
19
+ return {};
20
+ }
21
+ const params = new URLSearchParams(exportData.params).toString();
22
+ window.open(`${exportData.url}?${params}`, '_blank');
23
+ };
24
+ const renderExport = () => {
25
+ if (!exportData)
26
+ return null;
27
+ if (exportData.type === 'xlsx') {
28
+ return (_jsx(Button, { variant: 'secondary', onClick: exportXlSX, children: "Exportar" }));
29
+ }
30
+ if (exportData.type === 'dialog') {
31
+ const ExportDataSchema = z.object({
32
+ model: z.string(),
33
+ format: z.string(),
34
+ });
35
+ const form = useForm({
36
+ mode: 'onTouched',
37
+ resolver: zodResolver(ExportDataSchema),
38
+ });
39
+ const { control, trigger, handleSubmit } = form;
40
+ const onSubmit = async (values) => {
41
+ await trigger();
42
+ toast({
43
+ title: 'Em desenvolvimento.',
44
+ variant: 'destructive',
45
+ });
46
+ };
47
+ const onError = async (errors) => {
48
+ toast({
49
+ title: 'Erro ao salvar',
50
+ description: 'Verifique os campos obrigatórios',
51
+ variant: 'destructive',
52
+ });
53
+ };
54
+ return (_jsx(Form, { ...form, onSubmit: handleSubmit(onSubmit, onError), children: _jsxs(Dialog, { children: [_jsx(DialogTrigger, { asChild: true, children: _jsx(Button, { variant: 'secondary', children: "Exportar" }) }), _jsxs(DialogContent, { hideClose: true, className: 'fixed p-6 rounded-lg w-[451px]', children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { children: "Exportar" }), _jsx(DialogDescription, {})] }), _jsxs("div", { className: 'flex flex-col gap-6', children: [_jsx(FormRadioGroup, { control: control, name: 'model', label: 'Selecione o modelo de visualiza\u00E7\u00E3o', options: [
55
+ { value: '0', label: 'Resumido' },
56
+ { value: '1', label: 'Detalhado' },
57
+ ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' }), _jsx(FormRadioGroup, { control: control, name: 'format', label: 'Selecione o formato desejado para exporta\u00E7\u00E3o', options: [
58
+ { value: '0', label: 'PDF' },
59
+ { value: '1', label: 'XLSX' },
60
+ ], className: 'text-sm font-normal', classNameOptions: 'flex flex-col gap-4 mt-4 text-sm font-normal' })] }), _jsxs(DialogFooter, { className: 'sm:justify-end gap-2', children: [_jsx(Button, { type: 'button', variant: 'secondary', children: "Fechar" }), _jsx(Button, { type: 'button', variant: 'default', onClick: () => exportXlSX(), children: "Exportar" })] })] })] }) }));
61
+ }
62
+ return null;
63
+ };
64
+ return exportData && renderExport();
65
+ }
@@ -0,0 +1,25 @@
1
+ import { PaginationState } from '@tanstack/react-table';
2
+ import { ExportDataTable } from './types/data-table';
3
+ interface DataTableFooterProps<TData> {
4
+ hidePagination?: boolean;
5
+ disablePagination?: boolean;
6
+ isLoading?: boolean;
7
+ totalRows: number;
8
+ totalPages: number;
9
+ currentPage: number;
10
+ pagination: PaginationState;
11
+ handlePageSize: (value: number) => void;
12
+ handlePage: (value: number) => void;
13
+ previousPage: {
14
+ action: () => void;
15
+ disabled: boolean;
16
+ };
17
+ nextPage: {
18
+ action: () => void;
19
+ disabled: boolean;
20
+ };
21
+ exportData?: ExportDataTable;
22
+ }
23
+ export declare function DataTableFooter<TData>({ isLoading, totalRows, totalPages, currentPage, hidePagination, disablePagination, pagination, handlePageSize, handlePage, previousPage, nextPage, exportData, }: DataTableFooterProps<TData>): false | import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=data-table-footer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table-footer.d.ts","sourceRoot":"","sources":["../../../../../src/components/ui/custom/table/data-table-footer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAaxD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,UAAU,oBAAoB,CAAC,KAAK;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,eAAe,CAAC;IAC5B,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,YAAY,EAAE;QACb,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,QAAQ,EAAE;QACT,MAAM,EAAE,MAAM,IAAI,CAAC;QACnB,QAAQ,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,UAAU,CAAC,EAAE,eAAe,CAAC;CAC7B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,EACtC,SAAS,EACT,SAAS,EACT,UAAU,EACV,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,UAAU,EACV,YAAY,EACZ,QAAQ,EACR,UAAU,GACV,EAAE,oBAAoB,CAAC,KAAK,CAAC,mDAkG7B"}