@lincros-ui/components 0.1.2 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as React36 from 'react';
2
2
  import React36__default, { memo, useMemo, useCallback, useState, useRef, useEffect, useContext } from 'react';
3
3
  import * as AccordionPrimitive from '@radix-ui/react-accordion';
4
- import { ChevronDown, ArrowLeft, ArrowRight, Check, X, Search, ChevronRight, Circle, Minimize2, Maximize2, Dot, ChevronUp, PanelLeft, Clock, AlertCircle, CheckCircle, Shield, AlertTriangle, Users, RefreshCw, Home, ExternalLink, LogIn, Server, Key, MoreHorizontal, ChevronLeft, Phone, Video, Info, MoreVertical, Paperclip, Smile, Mic, Send, GripVertical, Monitor, Navigation, Bell, BarChart3, Settings, UserCheck, UserCog, Car, Workflow, MessageCircle, Building2, Database, Bot, LogOut, Loader2, Filter, ChevronsLeft, ChevronsRight, Bold, Italic, List, ListOrdered, Quote, Code, Link2, Image, Plus, ChevronsUpDown, TestTube, Globe, Copy, Play, Pause, Square, RotateCcw, Edit, Trash2, History, CircleSlash, CircleDot, ToggleRight, ToggleLeft, MapPin, HelpCircle, Bug, StepForward, CornerDownRight, Brain, FileJson, XCircle, PauseCircle, GitBranch, Split, Layers, Gauge, PlayCircle, MessageSquare, Variable, Activity, Lightbulb, CheckCircle2, Upload, Download, Hash, StopCircle, Terminal, FileText, Zap, Eye, DollarSign, Expand, Coins, Wrench, Sparkles, Save, Inbox, TrendingUp, TrendingDown, Merge, ChevronsDownUp, PanelLeftClose, Unlock, Lock, Network, Timer, EyeOff, QrCode, User, GitMerge, Tag, Link as Link$1, Building, Box, Wifi, WifiOff, Type, Mail, File, CheckCheck } from 'lucide-react';
4
+ import { ChevronDown, ArrowLeft, ArrowRight, Check, X, Search, ChevronRight, Circle, Minimize2, Maximize2, Dot, ChevronUp, PanelLeft, Clock, AlertCircle, CheckCircle, Shield, AlertTriangle, Users, RefreshCw, Home, ExternalLink, LogIn, Server, Key, MoreHorizontal, ChevronLeft, Phone, Video, Info, MoreVertical, Paperclip, Smile, Mic, Send, GripVertical, Loader2, Filter, ChevronsLeft, ChevronsRight, Bold, Italic, List, ListOrdered, Quote, Code, Link2 as Link2$1, Image, Plus, Building2, ChevronsUpDown, TestTube, Globe, Copy, Play, Pause, Square, RotateCcw, Edit, Trash2, History, CircleSlash, CircleDot, ToggleRight, ToggleLeft, MapPin, HelpCircle, Bug, StepForward, CornerDownRight, Settings, Brain, Bot, FileJson, XCircle, PauseCircle, GitBranch, Split, Layers, Gauge, PlayCircle, MessageSquare, Database, Variable, Activity, Lightbulb, CheckCircle2, Upload, Download, Hash, StopCircle, Terminal, FileText, BarChart3, Zap, Eye, DollarSign, Expand, Coins, Wrench, Sparkles, Save, Inbox, TrendingUp, TrendingDown, MessageCircle, Merge, ChevronsDownUp, PanelLeftClose, Unlock, Lock, Network, Timer, Workflow, EyeOff, QrCode, User, GitMerge, Tag, Link as Link$1, Building, Box, Wifi, WifiOff, Type, Mail, File, CheckCheck } from 'lucide-react';
5
5
  import { clsx } from 'clsx';
6
6
  import { twMerge } from 'tailwind-merge';
7
7
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -41,25 +41,18 @@ import * as SwitchPrimitives from '@radix-ui/react-switch';
41
41
  import * as TabsPrimitive from '@radix-ui/react-tabs';
42
42
  import * as TogglePrimitive from '@radix-ui/react-toggle';
43
43
  import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';
44
- import { sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, arrayMove, useSortable } from '@dnd-kit/sortable';
45
- import { CSS } from '@dnd-kit/utilities';
46
- import { useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
47
- import { getAllUsersUseCase, grantUserUnidadePermissionUseCase, grantBulkUserUnidadePermissionsUseCase, removeUserUnidadePermissionUseCase, getUserUnidadesUseCase, getUnidadeUsersUseCase, createUserUseCase, updateUserUseCase, deleteUserUseCase, activateUserUseCase, deactivateUserUseCase, getUserByIdUseCase } from '@/application/use-cases';
48
- import { AuthContext } from '@/presentation/providers/AuthProvider';
44
+ import { useNavigate, useLocation, Navigate, Link } from 'react-router-dom';
49
45
  import { TenantContext } from '@/presentation/contexts/TenantContext';
50
- import { ROUTE_PATHS } from '@/constants/routes';
51
- import { useLocation, Link, useNavigate, Navigate } from 'react-router-dom';
52
- import { MenuPermissionLevel, canAccessMenu } from '@/lib/menu-permissions';
53
46
  import { tenantService } from '@/services/api/tenant.service';
54
- import '@/types/ErrorType';
55
- import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, closestCenter } from '@dnd-kit/core';
47
+ import { AuthContext } from '@/presentation/providers/AuthProvider';
56
48
  import { useSSOContext } from '@/presentation/contexts/SSOContext';
57
49
  import { getTenantFromSubdomain } from '@/lib/tenant-utils';
58
50
  import { useEditor, EditorContent } from '@tiptap/react';
59
51
  import StarterKit from '@tiptap/starter-kit';
60
52
  import Image2 from '@tiptap/extension-image';
61
- import Link3 from '@tiptap/extension-link';
53
+ import Link2 from '@tiptap/extension-link';
62
54
  import DOMPurify from 'dompurify';
55
+ import { useQueryClient, useQuery, useMutation } from '@tanstack/react-query';
63
56
  import { toast as toast$1 } from 'sonner';
64
57
  import { zodResolver } from '@hookform/resolvers/zod';
65
58
  import * as z2 from 'zod';
@@ -69,6 +62,9 @@ import { UpdateCredentialUseCase } from '@/application/use-cases/credentials/Upd
69
62
  import { ListCredentialsUseCase } from '@/application/use-cases/credentials/ListCredentialsUseCase';
70
63
  import { TestCredentialUseCase } from '@/application/use-cases/credentials/TestCredentialUseCase';
71
64
  import { authService } from '@/services/api/auth.service';
65
+ import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, closestCenter } from '@dnd-kit/core';
66
+ import { sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, arrayMove, useSortable } from '@dnd-kit/sortable';
67
+ import { CSS } from '@dnd-kit/utilities';
72
68
  import { useExecutionStore } from '@/presentation/stores/execution.store';
73
69
  import { ExecutionStatus } from '@/domain/entities/flow-execution';
74
70
  import { useFlowEditorStore } from '@/presentation/stores/flow-editor.store';
@@ -118,6 +114,7 @@ import { flowNodesService } from '@/services/api/flow-nodes.service';
118
114
  import { flowConnectionsService } from '@/services/api/flow-connections.service';
119
115
  import { compositeNodeManager } from '@/services/automation/CompositeNodeManager';
120
116
  import { sendMessageWhatsAppTemplate } from '@/services/automation/templates/sendMessageWhatsApp';
117
+ import { getAllUsersUseCase, grantUserUnidadePermissionUseCase, grantBulkUserUnidadePermissionsUseCase, removeUserUnidadePermissionUseCase, getUserUnidadesUseCase, getUnidadeUsersUseCase, createUserUseCase, updateUserUseCase, deleteUserUseCase, activateUserUseCase, deactivateUserUseCase, getUserByIdUseCase } from '@/application/use-cases';
121
118
  import { perfisUsuarioService } from '@/services/api/perfis-usuario.service';
122
119
  import { unidadesNegocioService } from '@/services/api/unidades-negocio.service';
123
120
  import { httpWebhookRepository } from '@/infrastructure/repositories/HttpWebhookRepository';
@@ -4518,13 +4515,6 @@ var toastHelpers = {
4518
4515
  }
4519
4516
  };
4520
4517
  Object.assign(toast, toastHelpers);
4521
- function useAuthContext() {
4522
- const context = useContext(AuthContext);
4523
- if (context === void 0) {
4524
- throw new Error("useAuthContext must be used within an AuthProvider");
4525
- }
4526
- return context;
4527
- }
4528
4518
  var useTenant = () => {
4529
4519
  const context = useContext(TenantContext);
4530
4520
  if (context === void 0) {
@@ -4532,474 +4522,6 @@ var useTenant = () => {
4532
4522
  }
4533
4523
  return context;
4534
4524
  };
4535
- var STORAGE_KEY = "sidebar-expanded-menus";
4536
- function useSidebarState() {
4537
- const location = useLocation();
4538
- const [expandedMenus, setExpandedMenus] = useState(() => {
4539
- try {
4540
- const saved = localStorage.getItem(STORAGE_KEY);
4541
- return saved ? JSON.parse(saved) : [];
4542
- } catch {
4543
- return [];
4544
- }
4545
- });
4546
- useEffect(() => {
4547
- const userManagementPaths = [
4548
- ROUTE_PATHS.USER_MANAGEMENT,
4549
- ROUTE_PATHS.USER_PROFILES,
4550
- ROUTE_PATHS.PERMISSIONS_MANAGEMENT
4551
- ];
4552
- const whatsAppPaths = [
4553
- ROUTE_PATHS.WHATSAPP,
4554
- ROUTE_PATHS.WHATSAPP_CONFIG,
4555
- ROUTE_PATHS.WHATSAPP_MONITORING,
4556
- ROUTE_PATHS.WHATSAPP_MESSAGES,
4557
- ROUTE_PATHS.WHATSAPP_TEMPLATES
4558
- ];
4559
- const configurationsPaths = [
4560
- ROUTE_PATHS.SETTINGS,
4561
- ROUTE_PATHS.UNIDADES_NEGOCIO,
4562
- ROUTE_PATHS.TENANT_MANAGEMENT,
4563
- ROUTE_PATHS.MOTORISTAS,
4564
- ROUTE_PATHS.CREDENTIALS
4565
- ];
4566
- const isInUsersPage = userManagementPaths.some(
4567
- (path) => location.pathname.includes(path)
4568
- );
4569
- const isInWhatsAppPage = whatsAppPaths.some(
4570
- (path) => location.pathname.includes(path)
4571
- );
4572
- const isInConfigurationsPage = configurationsPaths.some(
4573
- (path) => location.pathname.includes(path)
4574
- ) || isInUsersPage || isInWhatsAppPage;
4575
- setExpandedMenus((prev) => {
4576
- const newExpanded = [...prev];
4577
- let changed = false;
4578
- if (isInUsersPage && !prev.includes("Usu\xE1rios")) {
4579
- newExpanded.push("Usu\xE1rios");
4580
- changed = true;
4581
- }
4582
- if (isInWhatsAppPage && !prev.includes("WhatsApp")) {
4583
- newExpanded.push("WhatsApp");
4584
- changed = true;
4585
- }
4586
- if (isInConfigurationsPage && !prev.includes("Configura\xE7\xF5es")) {
4587
- newExpanded.push("Configura\xE7\xF5es");
4588
- changed = true;
4589
- }
4590
- if (changed) {
4591
- saveToStorage(newExpanded);
4592
- return newExpanded;
4593
- }
4594
- return prev;
4595
- });
4596
- }, [location.pathname]);
4597
- const saveToStorage = (menus) => {
4598
- try {
4599
- localStorage.setItem(STORAGE_KEY, JSON.stringify(menus));
4600
- } catch (error) {
4601
- console.warn("Erro ao salvar estado do menu no localStorage:", error);
4602
- }
4603
- };
4604
- const toggleSubmenu = (menuTitle) => {
4605
- setExpandedMenus((prev) => {
4606
- const newExpanded = prev.includes(menuTitle) ? prev.filter((title) => title !== menuTitle) : [...prev, menuTitle];
4607
- saveToStorage(newExpanded);
4608
- return newExpanded;
4609
- });
4610
- };
4611
- const isMenuExpanded = (menuTitle) => {
4612
- return expandedMenus.includes(menuTitle);
4613
- };
4614
- const isMenuItemActive = (url) => {
4615
- return location.pathname.includes(url);
4616
- };
4617
- const isExactMenuItemActive = (url) => {
4618
- return location.pathname === url;
4619
- };
4620
- return {
4621
- expandedMenus,
4622
- toggleSubmenu,
4623
- isMenuExpanded,
4624
- isMenuItemActive,
4625
- isExactMenuItemActive
4626
- };
4627
- }
4628
- function filterMenuItems(items, user) {
4629
- return items.filter((item) => canAccessMenu(user, item.permission)).map((item) => {
4630
- if (item.subItems) {
4631
- const filteredSubItems = filterMenuItems(
4632
- item.subItems,
4633
- user
4634
- );
4635
- if (filteredSubItems.length === 0) {
4636
- return null;
4637
- }
4638
- return {
4639
- ...item,
4640
- subItems: filteredSubItems
4641
- };
4642
- }
4643
- return item;
4644
- }).filter((item) => item !== null);
4645
- }
4646
- function RenderSubmenu({
4647
- items,
4648
- level,
4649
- isMenuExpanded,
4650
- isMenuItemActive,
4651
- toggleSubmenu
4652
- }) {
4653
- const { state } = useSidebar();
4654
- const isCollapsed = state === "collapsed";
4655
- if (!items) return null;
4656
- return /* @__PURE__ */ jsx(CustomSidebarMenuSub, { level, children: items.map((subItem) => {
4657
- const hasSubItems = subItem.subItems && subItem.subItems.length > 0;
4658
- const paddingLeft = isCollapsed ? 8 : Math.min(level * 8 + 4, 28);
4659
- return /* @__PURE__ */ jsx(CustomSidebarMenuSubItem, { children: hasSubItems ? /* @__PURE__ */ jsxs(Fragment, { children: [
4660
- /* @__PURE__ */ jsxs(Tooltip2, { children: [
4661
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
4662
- CustomSidebarMenuSubButton,
4663
- {
4664
- onClick: () => toggleSubmenu(subItem.title),
4665
- className: "w-full justify-start pr-2",
4666
- style: { paddingLeft: `${paddingLeft}px` },
4667
- children: [
4668
- subItem.icon && /* @__PURE__ */ jsx(subItem.icon, { className: "w-4 h-4 shrink-0 mr-2" }),
4669
- !isCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
4670
- /* @__PURE__ */ jsx("span", { className: "truncate flex-1", children: subItem.title }),
4671
- /* @__PURE__ */ jsx(
4672
- ChevronRight,
4673
- {
4674
- className: `w-4 h-4 shrink-0 transition-transform ${isMenuExpanded(subItem.title) ? "rotate-90" : ""}`
4675
- }
4676
- )
4677
- ] })
4678
- ]
4679
- }
4680
- ) }),
4681
- isCollapsed && /* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: subItem.title })
4682
- ] }),
4683
- isMenuExpanded(subItem.title) && /* @__PURE__ */ jsx(
4684
- RenderSubmenu,
4685
- {
4686
- items: subItem.subItems,
4687
- level: level + 1,
4688
- isMenuExpanded,
4689
- isMenuItemActive,
4690
- toggleSubmenu
4691
- }
4692
- )
4693
- ] }) : /* @__PURE__ */ jsxs(Tooltip2, { children: [
4694
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(CustomSidebarMenuSubButton, { asChild: true, children: /* @__PURE__ */ jsxs(
4695
- Link,
4696
- {
4697
- to: subItem.url || "#",
4698
- className: `justify-start pr-2 ${isMenuItemActive(subItem.url || "") ? "bg-accent text-accent-foreground" : ""}`,
4699
- style: { paddingLeft: `${paddingLeft}px` },
4700
- children: [
4701
- subItem.icon && /* @__PURE__ */ jsx(subItem.icon, { className: "w-4 h-4 shrink-0 mr-2" }),
4702
- !isCollapsed && /* @__PURE__ */ jsx("span", { className: "truncate flex-1", children: subItem.title })
4703
- ]
4704
- }
4705
- ) }) }),
4706
- isCollapsed && /* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: subItem.title })
4707
- ] }) }, subItem.title);
4708
- }) });
4709
- }
4710
- function ControlTowerSidebar({
4711
- currentTime
4712
- }) {
4713
- const { user, logout, getCurrentTenantId } = useAuthContext();
4714
- const {
4715
- toggleSubmenu,
4716
- isMenuExpanded,
4717
- isMenuItemActive,
4718
- isExactMenuItemActive
4719
- } = useSidebarState();
4720
- const { state } = useSidebar();
4721
- const isCollapsed = state === "collapsed";
4722
- const [internalTime, setInternalTime] = React36__default.useState(/* @__PURE__ */ new Date());
4723
- const currentTenantId = getCurrentTenantId();
4724
- console.log(currentTenantId);
4725
- const isMasterTenant = currentTenantId === "master";
4726
- const menuItems = [
4727
- {
4728
- title: "Dashboard",
4729
- url: ROUTE_PATHS.DASHBOARD,
4730
- icon: Monitor,
4731
- permission: MenuPermissionLevel.ALL
4732
- },
4733
- {
4734
- title: "Monitoramento de Rotas",
4735
- url: ROUTE_PATHS.ROUTE_MONITORING,
4736
- icon: Navigation,
4737
- permission: MenuPermissionLevel.MASTER_TENANT_ONLY
4738
- },
4739
- {
4740
- title: "Monitoramento de Rotas",
4741
- url: ROUTE_PATHS.ROUTE_MONITORING,
4742
- icon: Navigation,
4743
- permission: MenuPermissionLevel.ADMIN_ONLY
4744
- },
4745
- {
4746
- title: "Alertas",
4747
- url: ROUTE_PATHS.ALERTS,
4748
- icon: Bell,
4749
- permission: MenuPermissionLevel.ALL
4750
- },
4751
- {
4752
- title: "Relat\xF3rios",
4753
- url: ROUTE_PATHS.REPORTS,
4754
- icon: BarChart3,
4755
- permission: MenuPermissionLevel.ALL
4756
- },
4757
- {
4758
- title: "Configura\xE7\xF5es",
4759
- icon: Settings,
4760
- permission: MenuPermissionLevel.ADMIN_ONLY,
4761
- subItems: [
4762
- {
4763
- title: "Configura\xE7\xF5es Gerais",
4764
- url: ROUTE_PATHS.SETTINGS,
4765
- icon: Settings,
4766
- permission: MenuPermissionLevel.ALL
4767
- },
4768
- {
4769
- title: "Usu\xE1rios",
4770
- icon: Users,
4771
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN,
4772
- subItems: [
4773
- {
4774
- title: "Gest\xE3o de Usu\xE1rios",
4775
- url: ROUTE_PATHS.USER_MANAGEMENT,
4776
- icon: UserCheck,
4777
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4778
- },
4779
- {
4780
- title: "Perfis de Usu\xE1rio",
4781
- url: ROUTE_PATHS.USER_PROFILES,
4782
- icon: UserCog,
4783
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4784
- },
4785
- {
4786
- title: "Permiss\xF5es",
4787
- url: ROUTE_PATHS.PERMISSIONS_MANAGEMENT,
4788
- icon: Shield,
4789
- permission: MenuPermissionLevel.ADMIN_ONLY
4790
- }
4791
- ]
4792
- },
4793
- {
4794
- title: "Motoristas",
4795
- url: ROUTE_PATHS.MOTORISTAS,
4796
- icon: Car,
4797
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4798
- },
4799
- {
4800
- title: "WhatsApp",
4801
- icon: MessageCircle,
4802
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN,
4803
- subItems: [
4804
- {
4805
- title: "Configura\xE7\xF5es",
4806
- url: ROUTE_PATHS.WHATSAPP_CONFIG,
4807
- icon: Settings,
4808
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4809
- },
4810
- {
4811
- title: "Triggers de Fluxo",
4812
- url: ROUTE_PATHS.WHATSAPP_TRIGGERS,
4813
- icon: Workflow,
4814
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4815
- },
4816
- {
4817
- title: "Monitoramento",
4818
- url: ROUTE_PATHS.WHATSAPP_MONITORING,
4819
- icon: Monitor,
4820
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4821
- }
4822
- ]
4823
- },
4824
- ...isMasterTenant ? [] : [{
4825
- title: "Unidades de Neg\xF3cio",
4826
- url: ROUTE_PATHS.UNIDADES_NEGOCIO,
4827
- icon: Building2,
4828
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4829
- }],
4830
- ...isMasterTenant ? [
4831
- {
4832
- title: "Tenants",
4833
- url: ROUTE_PATHS.TENANT_MANAGEMENT,
4834
- icon: Database,
4835
- permission: MenuPermissionLevel.ADMIN_ONLY
4836
- }
4837
- ] : []
4838
- ]
4839
- },
4840
- {
4841
- title: "Automa\xE7\xE3o",
4842
- icon: Bot,
4843
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN,
4844
- subItems: [
4845
- {
4846
- title: "Fluxos de Automa\xE7\xE3o",
4847
- url: ROUTE_PATHS.FLOWS,
4848
- icon: Workflow,
4849
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4850
- },
4851
- {
4852
- title: "Credenciais",
4853
- url: ROUTE_PATHS.CREDENTIALS,
4854
- icon: Key,
4855
- permission: MenuPermissionLevel.MANAGER_OR_ADMIN
4856
- }
4857
- ]
4858
- }
4859
- ];
4860
- React36__default.useEffect(() => {
4861
- if (!currentTime) {
4862
- const timer = setInterval(() => {
4863
- setInternalTime(/* @__PURE__ */ new Date());
4864
- }, 1e3);
4865
- return () => clearInterval(timer);
4866
- }
4867
- }, [currentTime]);
4868
- const displayTime = currentTime || internalTime;
4869
- const filteredMenuItems = filterMenuItems(menuItems, user);
4870
- return /* @__PURE__ */ jsxs(Sidebar, { className: "border-r border-gray-200", collapsible: "icon", children: [
4871
- /* @__PURE__ */ jsxs(SidebarHeader, { className: "border-b border-gray-200", children: [
4872
- /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between px-2 py-2", children: /* @__PURE__ */ jsx(SidebarTrigger, { className: "ml-auto" }) }),
4873
- !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-1 px-2 py-1", children: [
4874
- /* @__PURE__ */ jsx(
4875
- "img",
4876
- {
4877
- src: "/lovable-uploads/632ebc32-3ae3-4944-8e70-0e9c2539494a.png",
4878
- alt: "Lincros Logo",
4879
- className: "w-20 h-20 object-contain"
4880
- }
4881
- ),
4882
- /* @__PURE__ */ jsxs("div", { className: "text-center", children: [
4883
- /* @__PURE__ */ jsx("h2", { className: "font-bold text-lg text-gray-800", children: "Lincros" }),
4884
- /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-500", children: "Torre de Controle 4.0" })
4885
- ] })
4886
- ] }),
4887
- isCollapsed && /* @__PURE__ */ jsx("div", { className: "flex justify-center px-2 py-2", children: /* @__PURE__ */ jsx(
4888
- "img",
4889
- {
4890
- src: "/lovable-uploads/632ebc32-3ae3-4944-8e70-0e9c2539494a.png",
4891
- alt: "Lincros Logo",
4892
- className: "w-8 h-8 object-contain"
4893
- }
4894
- ) })
4895
- ] }),
4896
- /* @__PURE__ */ jsx(SidebarContent, { children: /* @__PURE__ */ jsxs(SidebarGroup, { children: [
4897
- !isCollapsed && /* @__PURE__ */ jsx(SidebarGroupLabel, { children: "Menu Principal" }),
4898
- /* @__PURE__ */ jsx(SidebarGroupContent, { children: /* @__PURE__ */ jsx(SidebarMenu, { children: filteredMenuItems.map((item) => /* @__PURE__ */ jsx(SidebarMenuItem, { children: item.subItems ? /* @__PURE__ */ jsxs(Fragment, { children: [
4899
- /* @__PURE__ */ jsxs(Tooltip2, { children: [
4900
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs(
4901
- SidebarMenuButton,
4902
- {
4903
- onClick: () => toggleSubmenu(item.title),
4904
- className: "w-full justify-start pr-2",
4905
- children: [
4906
- /* @__PURE__ */ jsx(item.icon, { className: "w-4 h-4 shrink-0" }),
4907
- !isCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
4908
- /* @__PURE__ */ jsx("span", { className: "truncate flex-1", children: item.title }),
4909
- /* @__PURE__ */ jsx(
4910
- ChevronRight,
4911
- {
4912
- className: `w-4 h-4 shrink-0 transition-transform ${isMenuExpanded(item.title) ? "rotate-90" : ""}`
4913
- }
4914
- )
4915
- ] })
4916
- ]
4917
- }
4918
- ) }),
4919
- isCollapsed && /* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: item.title })
4920
- ] }),
4921
- isMenuExpanded(item.title) && /* @__PURE__ */ jsx(
4922
- RenderSubmenu,
4923
- {
4924
- items: item.subItems,
4925
- level: 1,
4926
- isMenuExpanded,
4927
- isMenuItemActive,
4928
- toggleSubmenu
4929
- }
4930
- )
4931
- ] }) : /* @__PURE__ */ jsxs(Tooltip2, { children: [
4932
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(SidebarMenuButton, { asChild: true, children: /* @__PURE__ */ jsxs(
4933
- Link,
4934
- {
4935
- to: item.url || "#",
4936
- className: `justify-start pr-2 ${isExactMenuItemActive(item.url || "") ? "bg-accent text-accent-foreground" : ""}`,
4937
- children: [
4938
- /* @__PURE__ */ jsx(item.icon, { className: "w-4 h-4 shrink-0" }),
4939
- !isCollapsed && /* @__PURE__ */ jsx("span", { className: "truncate flex-1", children: item.title })
4940
- ]
4941
- }
4942
- ) }) }),
4943
- isCollapsed && /* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: item.title })
4944
- ] }) }, item.title)) }) })
4945
- ] }) }),
4946
- /* @__PURE__ */ jsx(SidebarFooter, { className: "border-t border-gray-200", children: /* @__PURE__ */ jsxs("div", { className: `p-2 space-y-2 ${isCollapsed ? "px-1" : ""}`, children: [
4947
- user && /* @__PURE__ */ jsx("div", { className: "flex items-center justify-between", children: !isCollapsed ? /* @__PURE__ */ jsxs(Fragment, { children: [
4948
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col min-w-0 flex-1", children: [
4949
- /* @__PURE__ */ jsx("span", { className: "text-sm font-medium text-gray-700 truncate", children: user.login }),
4950
- /* @__PURE__ */ jsx("span", { className: "text-xs text-gray-500 truncate", children: user.email })
4951
- ] }),
4952
- /* @__PURE__ */ jsx(
4953
- Button,
4954
- {
4955
- variant: "ghost",
4956
- size: "sm",
4957
- onClick: () => logout(),
4958
- className: "h-8 w-8 p-0 shrink-0 ml-2",
4959
- title: "Logout",
4960
- children: /* @__PURE__ */ jsx(LogOut, { className: "icon-size" })
4961
- }
4962
- )
4963
- ] }) : /* @__PURE__ */ jsxs(Tooltip2, { children: [
4964
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(
4965
- Button,
4966
- {
4967
- variant: "ghost",
4968
- size: "sm",
4969
- onClick: () => logout(),
4970
- className: "h-8 w-8 p-0",
4971
- children: /* @__PURE__ */ jsx(LogOut, { className: "icon-size" })
4972
- }
4973
- ) }),
4974
- /* @__PURE__ */ jsxs(TooltipContent, { side: "right", className: "font-medium", children: [
4975
- "Logout (",
4976
- user.login,
4977
- ")"
4978
- ] })
4979
- ] }) }),
4980
- !isCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
4981
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4982
- /* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-green-500 rounded-full animate-pulse" }),
4983
- /* @__PURE__ */ jsx("span", { className: "text-xs text-gray-600 font-medium", children: "Sistema Online" })
4984
- ] }),
4985
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
4986
- /* @__PURE__ */ jsx(Clock, { className: "w-3 h-3 text-gray-400" }),
4987
- /* @__PURE__ */ jsx("p", { className: "text-xs text-gray-500", children: displayTime.toLocaleString("pt-BR") })
4988
- ] })
4989
- ] }),
4990
- isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center gap-2", children: [
4991
- /* @__PURE__ */ jsxs(Tooltip2, { children: [
4992
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx("div", { className: "w-2 h-2 bg-green-500 rounded-full animate-pulse" }) }),
4993
- /* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: "Sistema Online" })
4994
- ] }),
4995
- /* @__PURE__ */ jsxs(Tooltip2, { children: [
4996
- /* @__PURE__ */ jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx(Clock, { className: "w-4 h-4 text-gray-400" }) }),
4997
- /* @__PURE__ */ jsx(TooltipContent, { side: "right", className: "font-medium", children: displayTime.toLocaleString("pt-BR") })
4998
- ] })
4999
- ] })
5000
- ] }) })
5001
- ] });
5002
- }
5003
4525
  function EnsureTenant({ children }) {
5004
4526
  const { currentTenant, setCurrentTenant } = useTenant();
5005
4527
  const navigate = useNavigate();
@@ -5334,12 +4856,6 @@ function GenericFilterBar({
5334
4856
  ] }) })
5335
4857
  ] }) });
5336
4858
  }
5337
- function MainLayout({ children }) {
5338
- return /* @__PURE__ */ jsx(SidebarProvider, { children: /* @__PURE__ */ jsxs("div", { className: "h-screen w-full flex", children: [
5339
- /* @__PURE__ */ jsx(ControlTowerSidebar, {}),
5340
- /* @__PURE__ */ jsx("main", { className: "flex-1 overflow-hidden", children: /* @__PURE__ */ jsx("div", { className: "h-full overflow-y-auto", children }) })
5341
- ] }) });
5342
- }
5343
4859
  function PageHeader({ icon: Icon2, title, description, children }) {
5344
4860
  const scrollContainerRef = useRef(null);
5345
4861
  const headerContainerRef = useRef(null);
@@ -5588,6 +5104,13 @@ function PaginationControls({
5588
5104
  ] })
5589
5105
  ] });
5590
5106
  }
5107
+ function useAuthContext() {
5108
+ const context = useContext(AuthContext);
5109
+ if (context === void 0) {
5110
+ throw new Error("useAuthContext must be used within an AuthProvider");
5111
+ }
5112
+ return context;
5113
+ }
5591
5114
  var useSSO = () => {
5592
5115
  return useSSOContext();
5593
5116
  };
@@ -5811,7 +5334,7 @@ function RichTextEditor({ content, onChange, placeholder }) {
5811
5334
  class: "max-w-full h-auto rounded-lg my-2"
5812
5335
  }
5813
5336
  }),
5814
- Link3.configure({
5337
+ Link2.configure({
5815
5338
  openOnClick: false,
5816
5339
  HTMLAttributes: {
5817
5340
  class: "text-primary underline"
@@ -5994,7 +5517,7 @@ function RichTextEditor({ content, onChange, placeholder }) {
5994
5517
  onClick: () => setShowLinkDialog(true),
5995
5518
  className: "h-8 px-2",
5996
5519
  title: "Adicionar link",
5997
- children: /* @__PURE__ */ jsx(Link2, { className: "icon-size" })
5520
+ children: /* @__PURE__ */ jsx(Link2$1, { className: "icon-size" })
5998
5521
  }
5999
5522
  ),
6000
5523
  /* @__PURE__ */ jsx(
@@ -27447,6 +26970,153 @@ function useWebhookSubscriptions() {
27447
26970
  };
27448
26971
  }
27449
26972
 
27450
- export { AIAgentConfigModal, AIAgentNode, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionNode, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, BadgeGroup, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BreakpointIndicator, BreakpointsPanel, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithIcon, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatContainer, ChatHeader, ChatInput, ChatLayout, ChatMessages, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CompositeNode, CompositeNodeConfigModal, ConditionNode, ConditionalBreakpointModal, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, ControlTowerSidebar, CountBadge, CredentialFormModal, CredentialSelector, CustomEdge, CustomEdgeWithTooltip, CustomSidebarMenuSub, CustomSidebarMenuSubButton, CustomSidebarMenuSubItem, DEFAULT_WEBHOOK_CONFIG, DebugControlPanel, DebugModeToggle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogMaximizableContent, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EdgeLabel, EnsureTenant, EventInspector, ExecutableNode, ExecuteFlowModal, ExecutionDataNode, ExecutionDataNodeForm, ExecutionHistorySidebar, ExecutionProgress, ExpandableText, FlowEditor, FlowExecutionPanel, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GenericFilterBar, HoverCard, HoverCardContent, HoverCardTrigger, ImportErrorDisplay, ImportFlowFileModal, ImportFlowsModal, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputWithLabel, JSONSchemaEditor, Label3 as Label, LoopConfigModal, LoopExecutionMonitor, LoopNode, LoopResultsViewer, MCPToolNode, MainLayout, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MergeNode, MessageBubble, MessageHistory, MessageInput, ModelSelector, MotoristaFilters, MotoristaForm, MotoristaStatusBadge, MotoristaTable, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NodeLibraryPanel, NodeOutputViewer, NodePropertiesModal, NotificationBadge, PageHeader, Pagination, PaginationContent, PaginationControls, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParameterInput, Popover, PopoverContent, PopoverTrigger, Progress, PromptEditor, PromptTestModal, ProtectedRoute, QRCodeModal, RadioGroup4 as RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextEditor, RichTextRenderer, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendMessageModal, Separator5 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SplitConfigModal, SplitNode, StandardPageLayout, StatusBadge, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TenantSelectorLazy, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipButton, TooltipContent, TooltipProvider, TooltipTrigger, TriggerNode, TypingIndicator, UnidadeNegocioCombobox, UserCombobox, VariablePicker, WEBHOOK_TEST_EVENTS, WebhookConfigModal, WebhookConfigPanel, WebhookEventCard, WebhookFlowLink, WebhookLogsViewer, WebhookMetricsChart, WebhookTestModal, WebhookTimeline, WebhookTokenManager, WhatsAppHealthMonitor, WhatsAppTriggerConfigModal, WhatsAppTriggerMetricsModal, WhatsAppTriggerNode, WhatsAppTriggerTestModal, badgeVariants, beautifyString, buttonVariants, calculateProcessingTime, capitalizeFirst, cn, formatDate, formatDateTime, formatEventType, formatLocalDate, formatLocalDateTime, formatLocalTime, formatStatus, formatTime, getEventTypeVariant, getMetricColor, getNodeBorderStyles, getNodeIconColor, getNodeIconTextColor, getStatusVariant, getTimelineColor, isValidWebhookPayload, navigationMenuTriggerStyle, sanitizeWebhookUrl, toCamelCase, toSnakeCase, toast, toggleVariants, useAuth, useAuthContext, useEmpresasForSelect, useFlowEditor, useFlows, useFormField, useIsMobile, useMCPNodeValidation, useMCPTools, useMotorista, useMotoristaByCpf, useMotoristaMutations, useMotoristas, useMotoristasbyEmpresa, usePaginatedUsers, usePerfilUsuario, usePerfilUsuarioFilters, usePermissions, usePersistedFilters, useSSO, useSearchMotoristas, useSidebar, useSidebarState, useTenant, useToast, useUnidadesNegocio, useUserById, useUserFilters, useUserUnidades, useUsers, useWebhookEventDetails, useWebhookEventMetrics, useWebhookEvents, useWebhookSubscriptions, useWhatsApp, useWhatsAppConfigs, useWhatsAppHealthMonitor, useWhatsAppQRCode, useWhatsAppTriggerExecutions, useWhatsAppTriggerMetrics, useWhatsAppTriggers, validateUrl };
26973
+ // src/types/mcp.types.ts
26974
+ var MCPCategoryToNodeType = {
26975
+ "Communication": "action",
26976
+ "Data": "action",
26977
+ "AI": "ai_agent",
26978
+ "Logic": "condition",
26979
+ "Integration": "action",
26980
+ "Automation": "action",
26981
+ "Trigger": "trigger"
26982
+ };
26983
+ var MCPSubtypeToIcon = {
26984
+ "send_email": "Mail",
26985
+ "send_sms": "MessageSquare",
26986
+ "send_whatsapp": "MessageSquare",
26987
+ "database_query": "Database",
26988
+ "api_request": "Globe",
26989
+ "file_operation": "File",
26990
+ "ai_completion": "Brain",
26991
+ "ai_analysis": "Brain",
26992
+ "conditional": "GitBranch",
26993
+ "loop": "RefreshCw",
26994
+ "webhook": "Globe",
26995
+ "schedule": "Clock",
26996
+ "manual": "Zap"
26997
+ };
26998
+ var WebhookEventMapper = class _WebhookEventMapper {
26999
+ static toDomain(response) {
27000
+ if (!response) {
27001
+ return _WebhookEventMapper.createEmptyEvent();
27002
+ }
27003
+ return {
27004
+ id: response.id || "",
27005
+ eventId: response.event_id || "",
27006
+ type: response.type || WebhookEventType.MESSAGE_RECEIVED,
27007
+ status: response.status || WebhookEventStatus.PENDING,
27008
+ source: response.source || "unknown",
27009
+ payload: response.payload || {},
27010
+ metadata: response.metadata || {},
27011
+ retryCount: response.retry_count || 0,
27012
+ maxRetries: response.max_retries || 3,
27013
+ error: response.error ? {
27014
+ code: response.error.code,
27015
+ message: response.error.message,
27016
+ details: response.error.details,
27017
+ timestamp: new Date(response.error.timestamp)
27018
+ } : void 0,
27019
+ processedAt: response.processed_at ? new Date(response.processed_at) : void 0,
27020
+ createdAt: response.created_at ? new Date(response.created_at) : /* @__PURE__ */ new Date(),
27021
+ updatedAt: response.updated_at ? new Date(response.updated_at) : /* @__PURE__ */ new Date()
27022
+ };
27023
+ }
27024
+ static createEmptyEvent() {
27025
+ return {
27026
+ id: "",
27027
+ eventId: "",
27028
+ type: WebhookEventType.MESSAGE_RECEIVED,
27029
+ status: WebhookEventStatus.PENDING,
27030
+ source: "unknown",
27031
+ payload: {},
27032
+ metadata: {},
27033
+ retryCount: 0,
27034
+ maxRetries: 3,
27035
+ error: void 0,
27036
+ processedAt: void 0,
27037
+ createdAt: /* @__PURE__ */ new Date(),
27038
+ updatedAt: /* @__PURE__ */ new Date()
27039
+ };
27040
+ }
27041
+ static toResponse(event) {
27042
+ return {
27043
+ id: event.id,
27044
+ event_id: event.eventId,
27045
+ type: event.type,
27046
+ status: event.status,
27047
+ source: event.source,
27048
+ payload: event.payload,
27049
+ metadata: event.metadata,
27050
+ retry_count: event.retryCount,
27051
+ max_retries: event.maxRetries,
27052
+ error: event.error ? {
27053
+ code: event.error.code,
27054
+ message: event.error.message,
27055
+ details: event.error.details,
27056
+ timestamp: event.error.timestamp.toISOString()
27057
+ } : void 0,
27058
+ processed_at: event.processedAt?.toISOString(),
27059
+ created_at: event.createdAt.toISOString(),
27060
+ updated_at: event.updatedAt.toISOString()
27061
+ };
27062
+ }
27063
+ };
27064
+ var WebhookSubscriptionMapper = class {
27065
+ static toDomain(response) {
27066
+ return {
27067
+ id: response.id,
27068
+ url: response.url,
27069
+ events: response.events,
27070
+ active: response.active,
27071
+ secret: response.secret,
27072
+ headers: response.headers,
27073
+ retryPolicy: {
27074
+ maxRetries: response.retry_policy.max_retries,
27075
+ retryDelay: response.retry_policy.retry_delay,
27076
+ backoffMultiplier: response.retry_policy.backoff_multiplier,
27077
+ maxRetryDelay: response.retry_policy.max_retry_delay
27078
+ },
27079
+ createdAt: new Date(response.created_at),
27080
+ updatedAt: new Date(response.updated_at)
27081
+ };
27082
+ }
27083
+ static toResponse(subscription) {
27084
+ return {
27085
+ id: subscription.id,
27086
+ url: subscription.url,
27087
+ events: subscription.events,
27088
+ active: subscription.active,
27089
+ secret: subscription.secret,
27090
+ headers: subscription.headers,
27091
+ retry_policy: {
27092
+ max_retries: subscription.retryPolicy.maxRetries,
27093
+ retry_delay: subscription.retryPolicy.retryDelay,
27094
+ backoff_multiplier: subscription.retryPolicy.backoffMultiplier,
27095
+ max_retry_delay: subscription.retryPolicy.maxRetryDelay
27096
+ },
27097
+ created_at: subscription.createdAt.toISOString(),
27098
+ updated_at: subscription.updatedAt.toISOString()
27099
+ };
27100
+ }
27101
+ };
27102
+ var WebhookMetricsMapper = class {
27103
+ static toDomain(response) {
27104
+ return {
27105
+ total: response.total,
27106
+ success: response.success,
27107
+ failed: response.failed,
27108
+ pending: response.pending,
27109
+ processing: response.processing,
27110
+ retrying: response.retrying,
27111
+ averageProcessingTime: response.average_processing_time,
27112
+ successRate: response.success_rate,
27113
+ failureRate: response.failure_rate,
27114
+ byType: response.by_type,
27115
+ byHour: response.by_hour
27116
+ };
27117
+ }
27118
+ };
27119
+
27120
+ export { AIAgentConfigModal, AIAgentNode, Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActionNode, Alert, AlertDescription, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogOverlay, AlertDialogPortal, AlertDialogTitle, AlertDialogTrigger, AlertTitle, AspectRatio, Avatar, AvatarFallback, AvatarImage, Badge, BadgeGroup, Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BreakpointIndicator, BreakpointsPanel, Button, Calendar, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, CardWithIcon, Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, ChatContainer, ChatHeader, ChatInput, ChatLayout, ChatMessages, Checkbox, Collapsible, CollapsibleContent2 as CollapsibleContent, CollapsibleTrigger2 as CollapsibleTrigger, Command, CommandDialog, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, CommandSeparator, CommandShortcut, CompositeNode, CompositeNodeConfigModal, ConditionNode, ConditionalBreakpointModal, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuShortcut, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CountBadge, CredentialFormModal, CredentialSelector, CustomEdge, CustomEdgeWithTooltip, CustomSidebarMenuSub, CustomSidebarMenuSubButton, CustomSidebarMenuSubItem, DEFAULT_WEBHOOK_CONFIG, DebugControlPanel, DebugModeToggle, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogMaximizableContent, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerOverlay, DrawerPortal, DrawerTitle, DrawerTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EdgeLabel, EnsureTenant, EventInspector, ExecutableNode, ExecuteFlowModal, ExecutionDataNode, ExecutionDataNodeForm, ExecutionHistorySidebar, ExecutionProgress, ExpandableText, FlowEditor, FlowExecutionPanel, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, GenericFilterBar, HoverCard, HoverCardContent, HoverCardTrigger, ImportErrorDisplay, ImportFlowFileModal, ImportFlowsModal, Input, InputOTP, InputOTPGroup, InputOTPSeparator, InputOTPSlot, InputWithLabel, JSONSchemaEditor, Label3 as Label, LoopConfigModal, LoopExecutionMonitor, LoopNode, LoopResultsViewer, MCPCategoryToNodeType, MCPSubtypeToIcon, MCPToolNode, Menubar, MenubarCheckboxItem, MenubarContent, MenubarGroup, MenubarItem, MenubarLabel, MenubarMenu, MenubarPortal, MenubarRadioGroup, MenubarRadioItem, MenubarSeparator, MenubarShortcut, MenubarSub, MenubarSubContent, MenubarSubTrigger, MenubarTrigger, MergeNode, MessageBubble, MessageHistory, MessageInput, ModelSelector, MotoristaFilters, MotoristaForm, MotoristaStatusBadge, MotoristaTable, NavigationMenu, NavigationMenuContent, NavigationMenuIndicator, NavigationMenuItem, NavigationMenuLink, NavigationMenuList, NavigationMenuTrigger, NavigationMenuViewport, NodeLibraryPanel, NodeOutputViewer, NodePropertiesModal, NotificationBadge, PageHeader, Pagination, PaginationContent, PaginationControls, PaginationEllipsis, PaginationItem, PaginationLink, PaginationNext, PaginationPrevious, ParameterInput, Popover, PopoverContent, PopoverTrigger, Progress, PromptEditor, PromptTestModal, ProtectedRoute, QRCodeModal, RadioGroup4 as RadioGroup, RadioGroupItem, ResizableHandle, ResizablePanel, ResizablePanelGroup, RichTextEditor, RichTextRenderer, ScrollArea, ScrollBar, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, SendMessageModal, Separator5 as Separator, Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetOverlay, SheetPortal, SheetTitle, SheetTrigger, Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, Skeleton, Slider, SplitConfigModal, SplitNode, StandardPageLayout, StatusBadge, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, TenantSelectorLazy, Textarea, Toggle, ToggleGroup, ToggleGroupItem, Tooltip2 as Tooltip, TooltipButton, TooltipContent, TooltipProvider, TooltipTrigger, TriggerNode, TypingIndicator, UnidadeNegocioCombobox, UserCombobox, VariablePicker, WEBHOOK_TEST_EVENTS, WebhookConfigModal, WebhookConfigPanel, WebhookEventCard, WebhookEventMapper, WebhookFlowLink, WebhookLogsViewer, WebhookMetricsChart, WebhookMetricsMapper, WebhookSubscriptionMapper, WebhookTestModal, WebhookTimeline, WebhookTokenManager, WhatsAppHealthMonitor, WhatsAppTriggerConfigModal, WhatsAppTriggerMetricsModal, WhatsAppTriggerNode, WhatsAppTriggerTestModal, badgeVariants, beautifyString, buttonVariants, calculateProcessingTime, capitalizeFirst, cn, formatDate, formatDateTime, formatEventType, formatLocalDate, formatLocalDateTime, formatLocalTime, formatStatus, formatTime, getEventTypeVariant, getMetricColor, getNodeBorderStyles, getNodeIconColor, getNodeIconTextColor, getStatusVariant, getTimelineColor, isValidWebhookPayload, navigationMenuTriggerStyle, sanitizeWebhookUrl, toCamelCase, toSnakeCase, toast, toggleVariants, useAuth, useAuthContext, useEmpresasForSelect, useFlowEditor, useFlows, useFormField, useIsMobile, useMCPNodeValidation, useMCPTools, useMotorista, useMotoristaByCpf, useMotoristaMutations, useMotoristas, useMotoristasbyEmpresa, usePaginatedUsers, usePerfilUsuario, usePerfilUsuarioFilters, usePermissions, usePersistedFilters, useSSO, useSearchMotoristas, useSidebar, useTenant, useToast, useUnidadesNegocio, useUserById, useUserFilters, useUserUnidades, useUsers, useWebhookEventDetails, useWebhookEventMetrics, useWebhookEvents, useWebhookSubscriptions, useWhatsApp, useWhatsAppConfigs, useWhatsAppHealthMonitor, useWhatsAppQRCode, useWhatsAppTriggerExecutions, useWhatsAppTriggerMetrics, useWhatsAppTriggers, validateUrl };
27451
27121
  //# sourceMappingURL=index.js.map
27452
27122
  //# sourceMappingURL=index.js.map