UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

555 lines (507 loc) 32.6 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _chunkFRDMGH3Fjs = require('./chunk-FRDMGH3F.js'); var _chunk7JXDCLY6js = require('./chunk-7JXDCLY6.js'); var _chunkSZD7L65Qjs = require('./chunk-SZD7L65Q.js'); var _chunkQOF47WYZjs = require('./chunk-QOF47WYZ.js'); var _chunkMPQZUD42js = require('./chunk-MPQZUD42.js'); var _chunkHGWU3GUNjs = require('./chunk-HGWU3GUN.js'); var _chunkNEDUOGWUjs = require('./chunk-NEDUOGWU.js'); var _chunkLGPTKTMPjs = require('./chunk-LGPTKTMP.js'); var _chunkBJMKBBN3js = require('./chunk-BJMKBBN3.js'); var _chunkI3SR6N3Ljs = require('./chunk-I3SR6N3L.js'); var _chunk34ST3MKOjs = require('./chunk-34ST3MKO.js'); var _chunkANT66KVKjs = require('./chunk-ANT66KVK.js'); // src/components/Support/Support.tsx var _react = require('react'); var _reacthookform = require('react-hook-form'); var _zod = require('@hookform/resolvers/zod'); var _react3 = require('@phosphor-icons/react'); var _dayjs = require('dayjs'); var _dayjs2 = _interopRequireDefault(_dayjs); // src/components/Support/schema/index.ts var _zod3 = require('zod'); var supportSchema = _zod3.z.object({ // Tipo de problema selecionado problemType: _zod3.z.enum(["tecnico", "acesso", "outros"], { error: () => "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar." }), // Título do problema title: _zod3.z.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(5, "T\xEDtulo deve ter pelo menos 5 caracteres").max(100, "T\xEDtulo deve ter no m\xE1ximo 100 caracteres").trim(), // Descrição do problema description: _zod3.z.string().min(1, "Campo obrigat\xF3rio! Por favor, preencha este campo para continuar.").min(10, "Descri\xE7\xE3o deve ter pelo menos 10 caracteres").max(1e3, "Descri\xE7\xE3o deve ter no m\xE1ximo 1000 caracteres").trim() }); // src/assets/img/suporthistory.png var suporthistory_default = "data:image/png;base64,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"; // src/components/Support/Support.tsx var _jsxruntime = require('react/jsx-runtime'); var TicketCard = ({ ticket, onTicketClick }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "button", { type: "button", className: "flex items-center justify-between p-4 bg-background rounded-xl cursor-pointer w-full text-left hover:bg-background-50 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:ring-offset-2", onClick: () => onTicketClick(ticket), children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "xs", weight: "bold", className: "text-text-900", children: ticket.title }) }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBJMKBBN3js.Badge_default, { variant: "solid", className: "flex items-center gap-1", action: _chunk7JXDCLY6js.getStatusBadgeAction.call(void 0, ticket.status), children: _chunk7JXDCLY6js.getStatusText.call(void 0, ticket.status) } ), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkBJMKBBN3js.Badge_default, { variant: "solid", className: "flex items-center gap-1", action: "muted", children: [ _chunkFRDMGH3Fjs.getCategoryIcon.call(void 0, ticket.category, 18), _chunk7JXDCLY6js.getCategoryText.call(void 0, ticket.category) ] }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.CaretRightIcon, { size: 24, className: "text-text-800" }) ] }) ] }, ticket.id ); var TicketGroup = ({ date, tickets, onTicketClick }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "md", weight: "bold", className: "text-text-900", children: _dayjs2.default.call(void 0, date).format("DD MMM YYYY") }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-3", children: tickets.map((ticket) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketCard, { ticket, onTicketClick }, ticket.id )) }) ] }, date); var EmptyState = ({ imageSrc }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-row justify-center items-center mt-48", children: [ imageSrc && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: imageSrc, alt: "Imagem de suporte" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "3xl", weight: "semibold", children: "Nenhum pedido encontrado." }) ] }); var TicketSkeleton = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-6", children: [0, 1].map((groupIndex) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEDUOGWUjs.SkeletonText, { width: "150px", height: 20 }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-3", children: [0, 1].map((ticketIndex) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNEDUOGWUjs.SkeletonRounded, { width: "100%", height: 72, className: "p-4" }, ticketIndex )) }) ] }, groupIndex)) }); var Support = ({ apiClient, userId, emptyStateImage, title = "Suporte", onTicketCreated, onTicketClosed }) => { const [activeTab, setActiveTab] = _react.useState.call(void 0, "criar-pedido"); const [selectedProblem, setSelectedProblem] = _react.useState.call(void 0, null); const [statusFilter, setStatusFilter] = _react.useState.call(void 0, "todos"); const [categoryFilter, setCategoryFilter] = _react.useState.call(void 0, "todos"); const [selectedTicket, setSelectedTicket] = _react.useState.call(void 0, null ); const [isModalOpen, setIsModalOpen] = _react.useState.call(void 0, false); const [submitError, setSubmitError] = _react.useState.call(void 0, null); const [showSuccessToast, setShowSuccessToast] = _react.useState.call(void 0, false); const [showCloseSuccessToast, setShowCloseSuccessToast] = _react.useState.call(void 0, false); const [showCloseErrorToast, setShowCloseErrorToast] = _react.useState.call(void 0, false); const [allTickets, setAllTickets] = _react.useState.call(void 0, []); const [loadingTickets, setLoadingTickets] = _react.useState.call(void 0, false); const [currentPage, setCurrentPage] = _react.useState.call(void 0, 1); const ITEMS_PER_PAGE = 10; const handlePrevPage = () => { if (currentPage > 1) { setCurrentPage(currentPage - 1); } }; const handleNextPage = () => { const totalPages2 = Math.ceil(filteredTickets.length / ITEMS_PER_PAGE); if (currentPage < totalPages2) { setCurrentPage(currentPage + 1); } }; _react.useEffect.call(void 0, () => { if (activeTab === "historico") { fetchTickets(statusFilter); setCurrentPage(1); } }, [activeTab, statusFilter]); _react.useEffect.call(void 0, () => { setCurrentPage(1); }, [categoryFilter]); const convertApiTicketToComponent = (apiTicket) => { return { id: apiTicket.id, title: apiTicket.subject, status: _chunk7JXDCLY6js.mapApiStatusToInternal.call(void 0, apiTicket.status), createdAt: apiTicket.createdAt, category: apiTicket.type, description: apiTicket.description }; }; const filteredTickets = allTickets.map(convertApiTicketToComponent).filter((ticket) => { const categoryMatch = categoryFilter === "todos" || ticket.category === categoryFilter; return categoryMatch; }).sort( (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime() ); const totalPages = Math.ceil(filteredTickets.length / ITEMS_PER_PAGE); const startIndex = (currentPage - 1) * ITEMS_PER_PAGE; const endIndex = startIndex + ITEMS_PER_PAGE; const paginatedTickets = filteredTickets.slice(startIndex, endIndex); const groupedTickets = paginatedTickets.reduce( (groups, ticket) => { const date = _dayjs2.default.call(void 0, ticket.createdAt).format("YYYY-MM-DD"); if (!groups[date]) { groups[date] = []; } groups[date].push(ticket); return groups; }, {} ); const { register, handleSubmit, setValue, reset, formState: { errors, isSubmitting } } = _reacthookform.useForm.call(void 0, { resolver: _zod.zodResolver.call(void 0, supportSchema), defaultValues: { problemType: void 0, title: "", description: "" } }); const fetchTickets = async (status) => { setLoadingTickets(true); try { const params = new URLSearchParams({ page: "1", limit: "100" // Buscar o máximo permitido pela API }); if (status && status !== "todos") { const apiStatus = _chunk7JXDCLY6js.mapInternalStatusToApi.call(void 0, status); params.append("status", apiStatus); } const response = await apiClient.get( `/support?${params.toString()}` ); setAllTickets(response.data.data.support); } catch (error) { console.error("Erro ao buscar tickets:", error); setAllTickets([]); } finally { setLoadingTickets(false); } }; const handleProblemSelection = (type) => { setSelectedProblem(type); if (type) { setValue("problemType", type, { shouldValidate: true }); } }; const onSubmit = async (data) => { setSubmitError(null); try { const requestData = { subject: data.title, description: data.description, type: data.problemType }; await apiClient.post( "/support", requestData ); setShowSuccessToast(true); setTimeout(() => setShowSuccessToast(false), 4e3); setSelectedProblem(null); reset(); setActiveTab("historico"); fetchTickets(statusFilter); _optionalChain([onTicketCreated, 'optionalCall', _ => _()]); } catch (error) { console.error("Erro ao criar ticket de suporte:", error); setSubmitError("Erro ao criar ticket. Tente novamente."); } }; const handleTicketClick = (ticket) => { setSelectedTicket(ticket); setIsModalOpen(true); }; const handleModalClose = () => { setIsModalOpen(false); setSelectedTicket(null); }; const handleTicketClose = async (ticketId) => { try { await apiClient.patch(`/support/${ticketId}`, { status: _chunk7JXDCLY6js.mapInternalStatusToApi.call(void 0, "encerrado" /* ENCERRADO */) }); setShowCloseSuccessToast(true); setTimeout(() => setShowCloseSuccessToast(false), 4e3); if (activeTab === "historico") { fetchTickets(statusFilter); } _optionalChain([onTicketClosed, 'optionalCall', _2 => _2()]); } catch (error) { console.error("Erro ao encerrar ticket:", error); setShowCloseErrorToast(true); setTimeout(() => setShowCloseErrorToast(false), 4e3); } }; const problemTypes = [ { id: "tecnico" /* TECNICO */, title: "T\xE9cnico", icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.BugIcon, { size: 24 }) }, { id: "acesso" /* ACESSO */, title: "Acesso", icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.KeyIcon, { size: 24 }) }, { id: "outros" /* OUTROS */, title: "Outros", icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.InfoIcon, { size: 24 }) } ]; const emptyImage = emptyStateImage || suporthistory_default; return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col w-full h-full overflow-y-auto", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col w-full h-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full mb-4 flex-row items-center justify-between not-lg:gap-4 lg:gap-6", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h1", { className: "font-bold leading-[28px] tracking-[0.2px] text-text-950 text-xl mt-4 sm:text-2xl sm:flex-1 sm:self-end sm:mt-0", children: title }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "sm:flex-shrink-0 sm:self-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMPQZUD42js.Menu_default, { value: activeTab, defaultValue: "criar-pedido", variant: "menu2", onValueChange: (value) => setActiveTab(value), className: "bg-transparent shadow-none px-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkMPQZUD42js.MenuContent, { variant: "menu2", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMPQZUD42js.MenuItem, { variant: "menu2", value: "criar-pedido", className: "whitespace-nowrap px-17 not-sm:px-5", children: "Criar Pedido" } ), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMPQZUD42js.MenuItem, { variant: "menu2", value: "historico", className: "whitespace-nowrap px-17 not-sm:px-5", children: "Hist\xF3rico" } ) ] }) } ) }) ] }), activeTab === "criar-pedido" && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { as: "h2", size: "md", weight: "bold", className: "text-text-900", children: "Selecione o tipo de problema" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col sm:flex-row gap-2 sm:gap-4", children: problemTypes.map((type) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkI3SR6N3Ljs.SelectionButton_default, { icon: type.icon, label: type.title, selected: selectedProblem === type.id, onClick: () => handleProblemSelection(type.id), className: "w-full p-4" }, type.id )) }), errors.problemType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", className: "text-red-500 mt-1", children: errors.problemType.message }) ] }), selectedProblem && activeTab === "criar-pedido" && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "form", { onSubmit: handleSubmit(onSubmit), className: "space-y-4", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLGPTKTMPjs.Input_default, { size: "large", variant: "rounded", label: "T\xEDtulo", placeholder: "Digite o t\xEDtulo", ...register("title"), errorMessage: _optionalChain([errors, 'access', _3 => _3.title, 'optionalAccess', _4 => _4.message]) } ) }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSZD7L65Qjs.TextArea_default, { size: "large", label: "Descri\xE7\xE3o", placeholder: "Descreva o problema aqui", ...register("description"), errorMessage: _optionalChain([errors, 'access', _5 => _5.description, 'optionalAccess', _6 => _6.message]) } ) }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk34ST3MKOjs.Button_default, { size: "large", className: "float-end mt-10", type: "submit", disabled: isSubmitting, children: isSubmitting ? "Enviando..." : "Enviar Pedido" } ), submitError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-4 p-4 bg-red-100 border border-red-400 text-red-700 rounded", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", className: "text-red-700", children: submitError }) }) ] }), activeTab === "historico" && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6", children: [ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-4", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col flex-1/2 space-y-1", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.Select_default, { label: "Status", size: "large", value: statusFilter, onValueChange: setStatusFilter, children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectTrigger, { variant: "rounded", className: "", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectValue, { placeholder: "Todos" }) }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.SelectContent, { children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "todos", children: "Todos" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "aberto" /* ABERTO */, children: "Aberto" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "respondido" /* RESPONDIDO */, children: "Respondido" }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "encerrado" /* ENCERRADO */, children: "Encerrado" }) ] }) ] } ) }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col flex-1/2 space-y-1", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.Select_default, { label: "Tipo", size: "large", value: categoryFilter, onValueChange: setCategoryFilter, children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectTrigger, { variant: "rounded", className: "", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectValue, { placeholder: "Todos" }) }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.SelectContent, { children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "todos", children: "Todos" }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "tecnico" /* TECNICO */, children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.BugIcon, { size: 16 }), " T\xE9cnico" ] }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "acesso" /* ACESSO */, children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.KeyIcon, { size: 16 }), " Acesso" ] }), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkHGWU3GUNjs.SelectItem, { value: "outros" /* OUTROS */, children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _react3.InfoIcon, { size: 16 }), " Outros" ] }) ] }) ] } ) }) ] }), (() => { if (loadingTickets) { return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketSkeleton, {}); } if (Object.keys(groupedTickets).length === 0) { return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EmptyState, { imageSrc: emptyImage }); } return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-6", children: Object.entries(groupedTickets).sort( ([a], [b]) => new Date(b).getTime() - new Date(a).getTime() ).map(([date, tickets]) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketGroup, { date, tickets, onTicketClick: handleTicketClick }, date )) }); })(), !loadingTickets && totalPages > 1 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex justify-center items-center gap-4 mt-6", children: [ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk34ST3MKOjs.Button_default, { variant: "outline", size: "small", onClick: handlePrevPage, disabled: currentPage === 1, children: "Anterior" } ), /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkANT66KVKjs.Text_default, { size: "sm", className: "text-text-600", children: [ "P\xE1gina ", currentPage, " de ", totalPages ] }), /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk34ST3MKOjs.Button_default, { variant: "outline", size: "small", onClick: handleNextPage, disabled: currentPage === totalPages, children: "Pr\xF3xima" } ) ] }) ] }) ] }) }), selectedTicket && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkFRDMGH3Fjs.TicketModal, { ticket: selectedTicket, isOpen: isModalOpen, onClose: handleModalClose, onTicketClose: handleTicketClose, apiClient, userId } ), showSuccessToast && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "fixed top-4 left-1/2 transform -translate-x-1/2 z-50", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQOF47WYZjs.Toast_default, { title: "Pedido enviado!", description: "Agora voc\xEA pode acompanhar o andamento do seu pedido.", variant: "solid", onClose: () => setShowSuccessToast(false) } ) }), showCloseSuccessToast && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "fixed top-4 left-1/2 transform -translate-x-1/2 z-50", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQOF47WYZjs.Toast_default, { title: "Pedido encerrado!", description: "", variant: "solid", onClose: () => setShowCloseSuccessToast(false) } ) }), showCloseErrorToast && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "fixed top-4 left-1/2 transform -translate-x-1/2 z-50", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQOF47WYZjs.Toast_default, { title: "Erro ao encerrar pedido", description: "N\xE3o foi poss\xEDvel encerrar o pedido. Tente novamente.", variant: "solid", action: "warning", onClose: () => setShowCloseErrorToast(false) } ) }) ] }); }; var Support_default = Support; exports.supportSchema = supportSchema; exports.Support_default = Support_default; //# sourceMappingURL=chunk-WWCHVRKS.js.map