@fayz-ai/core 0.10.0 → 0.12.0
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/chunk-7GJTLBG3.js +566 -0
- package/dist/chunk-7GJTLBG3.js.map +1 -0
- package/dist/chunk-ED6NBH6U.js +348 -0
- package/dist/chunk-ED6NBH6U.js.map +1 -0
- package/dist/chunk-EWKX4VUM.js +429 -0
- package/dist/chunk-EWKX4VUM.js.map +1 -0
- package/dist/chunk-IKZR3WSK.js +289 -0
- package/dist/chunk-IKZR3WSK.js.map +1 -0
- package/dist/chunk-KFBEKFII.js +320 -0
- package/dist/chunk-KFBEKFII.js.map +1 -0
- package/dist/{chunk-732GZEUI.js → chunk-RRYFXUQX.js} +22 -367
- package/dist/chunk-RRYFXUQX.js.map +1 -0
- package/dist/chunk-S5FOFKR4.js +1618 -0
- package/dist/chunk-S5FOFKR4.js.map +1 -0
- package/dist/{chunk-M27JPX3K.js → chunk-U3252GZO.js} +366 -24
- package/dist/chunk-U3252GZO.js.map +1 -0
- package/dist/connector-runtime/index.d.ts +15 -0
- package/dist/connector-runtime/index.d.ts.map +1 -0
- package/dist/connector-runtime/index.js +3 -0
- package/dist/connector-runtime/index.js.map +1 -0
- package/dist/data/archetype.d.ts.map +1 -1
- package/dist/data/bulk.d.ts +24 -0
- package/dist/data/bulk.d.ts.map +1 -1
- package/dist/data/cached.d.ts +5 -1
- package/dist/data/cached.d.ts.map +1 -1
- package/dist/data/custom-fields.d.ts +5 -0
- package/dist/data/custom-fields.d.ts.map +1 -0
- package/dist/data/errors.d.ts +44 -0
- package/dist/data/errors.d.ts.map +1 -0
- package/dist/data/index.d.ts +10 -1
- package/dist/data/index.d.ts.map +1 -1
- package/dist/data/index.js +3 -1
- package/dist/data/mock.d.ts.map +1 -1
- package/dist/data/offline.d.ts +45 -0
- package/dist/data/offline.d.ts.map +1 -0
- package/dist/data/platform-api.d.ts.map +1 -1
- package/dist/data/query.d.ts +91 -0
- package/dist/data/query.d.ts.map +1 -0
- package/dist/data/resolve.d.ts.map +1 -1
- package/dist/data/supabase.d.ts.map +1 -1
- package/dist/data/types.d.ts +21 -0
- package/dist/data/types.d.ts.map +1 -1
- package/dist/events/bus.d.ts +12 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/index.d.ts +3 -11
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/log.d.ts.map +1 -1
- package/dist/fields/store.d.ts +45 -0
- package/dist/fields/store.d.ts.map +1 -0
- package/dist/i18n/index.d.ts.map +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/shell-translations.en.d.ts.map +1 -1
- package/dist/i18n/shell-translations.pt-br.d.ts.map +1 -1
- package/dist/index.d.ts +35 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +326 -252
- package/dist/index.js.map +1 -1
- package/dist/integrations/events.d.ts +7 -0
- package/dist/integrations/events.d.ts.map +1 -0
- package/dist/integrations/index.d.ts +663 -0
- package/dist/integrations/index.d.ts.map +1 -0
- package/dist/integrations/index.js +3 -1
- package/dist/integrations/permissions.d.ts +132 -0
- package/dist/integrations/permissions.d.ts.map +1 -0
- package/dist/integrations/request.d.ts +170 -0
- package/dist/integrations/request.d.ts.map +1 -0
- package/dist/integrations/runtime-token.d.ts +33 -0
- package/dist/integrations/runtime-token.d.ts.map +1 -0
- package/dist/integrations/runtime.d.ts +398 -0
- package/dist/integrations/runtime.d.ts.map +1 -0
- package/dist/integrations/settings.d.ts +102 -0
- package/dist/integrations/settings.d.ts.map +1 -0
- package/dist/integrations/store.d.ts +145 -0
- package/dist/integrations/store.d.ts.map +1 -0
- package/dist/lib/cache-idb.d.ts +54 -0
- package/dist/lib/cache-idb.d.ts.map +1 -0
- package/dist/lib/cache.d.ts +2 -0
- package/dist/lib/cache.d.ts.map +1 -1
- package/dist/plugin/index.js +2 -1
- package/dist/plugin/runtime.d.ts.map +1 -1
- package/dist/registry/entities.d.ts +41 -15
- package/dist/registry/entities.d.ts.map +1 -1
- package/dist/registry/index.d.ts +2 -2
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/search/engine.d.ts.map +1 -1
- package/dist/search/types.d.ts +7 -0
- package/dist/search/types.d.ts.map +1 -1
- package/dist/{shell-translations.pt-br-2GWRQRRP.js → shell-translations.pt-br-ANQ64XTT.js} +75 -3
- package/dist/shell-translations.pt-br-ANQ64XTT.js.map +1 -0
- package/dist/telemetry/errors.d.ts +87 -0
- package/dist/telemetry/errors.d.ts.map +1 -0
- package/dist/testing/index.js +4 -1
- package/dist/testing.d.ts +2 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/types/analytics.d.ts +39 -0
- package/dist/types/analytics.d.ts.map +1 -1
- package/dist/types/crud.d.ts +35 -1
- package/dist/types/crud.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +94 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +7 -3
- package/dist/chunk-6RBW2Y5K.js +0 -42
- package/dist/chunk-6RBW2Y5K.js.map +0 -1
- package/dist/chunk-732GZEUI.js.map +0 -1
- package/dist/chunk-CPMHCTX3.js +0 -77
- package/dist/chunk-CPMHCTX3.js.map +0 -1
- package/dist/chunk-JO7Z2AOE.js +0 -863
- package/dist/chunk-JO7Z2AOE.js.map +0 -1
- package/dist/chunk-M27JPX3K.js.map +0 -1
- package/dist/integrations.d.ts +0 -159
- package/dist/integrations.d.ts.map +0 -1
- package/dist/shell-translations.pt-br-2GWRQRRP.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18n/shell-translations.pt-br.ts"],"names":[],"mappings":"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","file":"shell-translations.pt-br-ANQ64XTT.js","sourcesContent":["// Shared shell/CRUD/framework translations — pt-BR locale.\n// Split per-locale so only the active locale ships in the bundle: 'en' is the\n// eager fallback; other locales load via dynamic import in i18n/index.ts.\nexport const shellTranslationsPtBr: Record<string, string> = {\n \"common.save\": \"Salvar\",\n \"common.saveChanges\": \"Salvar Alterações\",\n \"common.saving\": \"Salvando...\",\n \"common.cancel\": \"Cancelar\",\n \"common.delete\": \"Excluir\",\n \"common.edit\": \"Editar\",\n \"common.close\": \"Fechar\",\n \"common.confirm\": \"Confirmar\",\n \"common.back\": \"Voltar\",\n \"common.add\": \"Adicionar\",\n \"common.loading\": \"Carregando...\",\n \"common.error\": \"Algo deu errado\",\n \"common.noResults\": \"Nenhum resultado encontrado.\",\n \"common.search\": \"Buscar\",\n \"common.actions\": \"Ações\",\n \"common.continue\": \"Continuar\",\n \"common.done\": \"Pronto\",\n \"common.yes\": \"Sim\",\n \"common.no\": \"Não\",\n \"common.active\": \"Ativo\",\n \"common.inactive\": \"Inativo\",\n \"common.overview\": \"Visão Geral\",\n \"common.notFound\": \"Não Encontrado\",\n \"common.untitled\": \"Sem título\",\n \"common.noContentYet\": \"Nenhum conteúdo ainda\",\n \"common.selectDate\": \"Selecionar data\",\n \"common.plugins\": \"Plugins\",\n \"auth.login.title\": \"Entrar\",\n \"auth.login.titleCentered\": \"Bem-vindo de Volta\",\n \"auth.login.subtitle\": \"Insira suas credenciais para acessar sua conta\",\n \"auth.login.emailLabel\": \"E-mail\",\n \"auth.login.emailPlaceholder\": \"voce@exemplo.com\",\n \"auth.login.passwordLabel\": \"Senha\",\n \"auth.login.passwordPlaceholder\": \"Digite sua senha\",\n \"auth.login.forgotPassword\": \"Esqueceu a senha?\",\n \"auth.login.submit\": \"Entrar\",\n \"auth.login.submitting\": \"Entrando...\",\n \"auth.login.error\": \"Falha ao entrar. Tente novamente.\",\n \"auth.login.oauthDivider\": \"ou continue com\",\n \"auth.login.noAccount\": \"Não tem uma conta?\",\n \"auth.login.noAccountCentered\": \"Ainda não tem uma conta?\",\n \"auth.login.signUpLink\": \"Cadastre-se\",\n \"auth.login.socialProof\": \"Junte-se a milhares de empresas que já usam {{appName}}\",\n \"auth.signup.title\": \"Criar conta\",\n \"auth.signup.titleCentered\": \"Criar Conta\",\n \"auth.signup.subtitle\": \"Comece com sua nova conta\",\n \"auth.signup.nameLabel\": \"Nome completo\",\n \"auth.signup.namePlaceholder\": \"João Silva\",\n \"auth.signup.emailLabel\": \"E-mail\",\n \"auth.signup.emailPlaceholder\": \"voce@exemplo.com\",\n \"auth.signup.passwordLabel\": \"Senha\",\n \"auth.signup.passwordPlaceholder\": \"Pelo menos 8 caracteres\",\n \"auth.signup.confirmPasswordLabel\": \"Confirmar senha\",\n \"auth.signup.confirmPasswordPlaceholder\": \"Repita sua senha\",\n \"auth.signup.termsPrefix\": \"Ao criar uma conta, você concorda com nossos\",\n \"auth.signup.termsOfService\": \"Termos de Serviço\",\n \"auth.signup.privacyPolicy\": \"Política de Privacidade\",\n \"auth.signup.submit\": \"Criar conta\",\n \"auth.signup.submitting\": \"Criando conta...\",\n \"auth.signup.error\": \"Falha ao criar conta. Tente novamente.\",\n \"auth.signup.passwordMismatch\": \"As senhas não conferem.\",\n \"auth.signup.passwordTooShort\": \"A senha deve ter pelo menos 8 caracteres.\",\n \"auth.signup.success\": \"Conta criada para {{email}}. Verifique sua caixa de entrada para confirmar seu e-mail.\",\n \"auth.signup.hasAccount\": \"Já tem uma conta?\",\n \"auth.signup.signInLink\": \"Entrar\",\n \"auth.recovery.title\": \"Redefinir senha\",\n \"auth.recovery.titleCentered\": \"Redefinir Senha\",\n \"auth.recovery.instruction\": \"Insira seu e-mail e enviaremos um link para redefinir sua senha.\",\n \"auth.recovery.subtitle\": \"Enviaremos um link de redefinição\",\n \"auth.recovery.emailLabel\": \"E-mail\",\n \"auth.recovery.emailPlaceholder\": \"voce@exemplo.com\",\n \"auth.recovery.submit\": \"Enviar link\",\n \"auth.recovery.submitting\": \"Enviando...\",\n \"auth.recovery.error\": \"Falha ao enviar e-mail. Tente novamente.\",\n \"auth.recovery.successHeading\": \"Verifique seu e-mail\",\n \"auth.recovery.successMessage\": \"Enviamos um link de redefinição para {{email}}. Verifique sua caixa de entrada e siga as instruções.\",\n \"auth.recovery.backToLogin\": \"Voltar ao login\",\n \"auth.oauth.continueWith\": \"Continuar com {{provider}}\",\n \"auth.signIn\": \"Entrar\",\n \"auth.signUp\": \"Cadastrar\",\n \"auth.signOut\": \"Sair\",\n \"auth.email\": \"E-mail\",\n \"auth.password\": \"Senha\",\n \"auth.forgotPassword\": \"Esqueceu a Senha?\",\n \"crud.list.empty\": \"Nenhum(a) {{entities}} ainda\",\n \"crud.list.addFirst\": \"Adicione seu(sua) primeiro(a) {{entity}}\",\n \"crud.list.totalCount\": \"{{count}} {{entities}} no total\",\n \"crud.list.searchPlaceholder\": \"Buscar {{entities}}...\",\n \"crud.list.allFacet\": \"Todos\",\n \"crud.list.addButton\": \"+ Adicionar {{entity}}\",\n \"crud.list.rangeCount\": \"{{from}}–{{to}} de {{total}} {{entities}}\",\n \"crud.list.pageOf\": \"{{page}} / {{pages}}\",\n \"crud.list.prevPage\": \"Página anterior\",\n \"crud.list.nextPage\": \"Próxima página\",\n \"crud.list.emptyFiltered\": \"Nenhum resultado em {{entities}} para esta busca\",\n \"crud.list.emptyHint\": \"Os seus {{entities}} aparecem aqui depois de cadastrados.\",\n \"crud.list.loadFailed\": \"Não foi possível carregar os {{entities}}\",\n \"crud.list.refresh\": \"Atualizar\",\n \"crud.list.refreshCached\": \"Dados locais (cache) — clique para atualizar da rede\",\n \"crud.list.sort\": \"Ordenar\",\n \"crud.list.sortBy\": \"Ordenar por\",\n \"crud.list.sortAsc\": \"Crescente\",\n \"crud.list.sortDesc\": \"Decrescente\",\n \"crud.list.sortCreatedAt\": \"Criado em\",\n \"crud.list.sortUpdatedAt\": \"Última edição\",\n \"crud.list.selectRow\": \"Selecionar linha\",\n \"crud.list.selectAllRows\": \"Selecionar todas as linhas\",\n \"crud.list.selectedOne\": \"1 selecionado\",\n \"crud.list.selectedMany\": \"{{count}} selecionados\",\n \"crud.list.selectAllCount\": \"Selecionar todos os {{total}}\",\n \"crud.list.deselectAll\": \"Limpar seleção\",\n \"crud.list.bulkActions\": \"Ações para a seleção\",\n \"crud.list.moreActions\": \"Mais ações\",\n \"crud.list.bulkDelete\": \"Excluir\",\n \"crud.list.bulkDeleteTitle\": \"Excluir {{count}} {{entities}}?\",\n \"crud.list.bulkDeleteConfirm\": \"Os {{count}} registros selecionados serão excluídos. Esta ação não pode ser desfeita.\",\n \"crud.list.bulkDeleteDone\": \"{{count}} excluídos\",\n \"crud.list.bulkDeleteFailed\": \"{{count}} não puderam ser excluídos\",\n \"crud.detail.notFound\": \"{{entity}} não encontrado(a).\",\n \"crud.detail.backTo\": \"Voltar para {{entities}}\",\n \"crud.detail.createdAt\": \"Criado em {{date}}\",\n \"crud.detail.createdBy\": \"por {{user}}\",\n \"crud.detail.updatedAt\": \"Última edição {{date}}\",\n \"crud.form.addTitle\": \"Adicionar {{entity}}\",\n \"crud.form.editTitle\": \"Editar {{entity}}\",\n \"crud.form.createSubtitle\": \"Criar um(a) novo(a) {{entity}}.\",\n \"crud.form.editSubtitle\": \"Atualizar detalhes de {{entity}}.\",\n \"crud.form.newBreadcrumb\": \"Novo(a) {{entity}}\",\n \"crud.form.selectPlaceholder\": \"Selecione {{label}}...\",\n \"crud.form.saveError\": \"Falha ao salvar {{entity}}\",\n \"crud.form.saving\": \"Salvando...\",\n \"crud.form.changeImage\": \"Trocar imagem\",\n \"crud.form.imageAfterSave\": \"Foto depois de salvar\",\n \"crud.delete.title\": \"Excluir {{entity}}?\",\n \"crud.delete.confirmNamed\": \"Tem certeza que deseja excluir \\\"{{displayValue}}\\\"? Esta ação não pode ser desfeita.\",\n \"crud.delete.confirmGeneric\": \"Tem certeza que deseja excluir este(a) {{entity}}? Esta ação não pode ser desfeita.\",\n \"crud.delete.cancel\": \"Cancelar\",\n \"crud.delete.delete\": \"Excluir\",\n \"crud.tabs.access\": \"Acesso\",\n \"crud.tabs.schedule\": \"Agenda\",\n \"crud.tabs.documents\": \"Documentos\",\n \"crud.tabs.financial\": \"Extrato\",\n \"crud.tabs.activity\": \"Atividade\",\n \"crud.tabs.inventory\": \"Estoque\",\n \"crud.tabs.suppliers\": \"Fornecedores\",\n \"crud.tabs.pricing\": \"Preços\",\n \"crud.tabs.members\": \"Equipe\",\n \"crud.tabs.stats\": \"Estatísticas\",\n \"crud.tabs.availability\": \"Disponibilidade\",\n \"crud.tabs.orders\": \"Pedidos\",\n \"crud.orders.all\": \"Todos\",\n \"crud.orders.columnDate\": \"Data\",\n \"crud.orders.columnStage\": \"Etapa\",\n \"crud.orders.columnDescription\": \"Descrição\",\n \"crud.orders.columnAmount\": \"Valor\",\n \"crud.orders.searchPlaceholder\": \"Buscar pedidos...\",\n \"crud.orders.noDocuments\": \"Nenhum pedido ainda\",\n \"crud.orders.stage.draft\": \"Rascunho\",\n \"crud.orders.stage.quoted\": \"Orçado\",\n \"crud.orders.stage.booked\": \"Agendado\",\n \"crud.orders.stage.invoiced\": \"Faturado\",\n \"crud.orders.stage.paid\": \"Pago\",\n \"crud.orders.stage.partial\": \"Parcial\",\n \"crud.orders.stage.overdue\": \"Vencido\",\n \"crud.orders.stage.cancelled\": \"Cancelado\",\n \"crud.orders.stage.no_show\": \"Não Compareceu\",\n \"crud.orders.stage.completed\": \"Concluído\",\n \"layout.userMenu.profile\": \"Perfil\",\n \"layout.userMenu.settings\": \"Configurações\",\n \"layout.userMenu.billing\": \"Faturamento\",\n \"layout.userMenu.help\": \"Ajuda\",\n \"layout.userMenu.lightMode\": \"Modo claro\",\n \"layout.userMenu.darkMode\": \"Modo escuro\",\n \"layout.userMenu.systemMode\": \"Sistema\",\n \"layout.userMenu.language\": \"Idioma\",\n \"layout.userMenu.selectLocation\": \"Selecionar local\",\n \"layout.switchingLocation\": \"Trocando de local…\",\n \"layout.userMenu.signOut\": \"Sair\",\n \"layout.topbar.searchPlaceholder\": \"Buscar...\",\n \"layout.sidebar.collapse\": \"Recolher barra lateral\",\n \"layout.sidebar.expand\": \"Expandir barra lateral\",\n \"layout.commandPalette.placeholder\": \"Buscar páginas, pessoas, produtos, serviços...\",\n \"layout.commandPalette.resultsCount\": \"{{count}} resultado{{plural}}\",\n \"layout.commandPalette.noResults\": \"Nenhum resultado encontrado.\",\n \"layout.commandPalette.searching\": \"Buscando…\",\n \"layout.commandPalette.refreshCached\": \"Resultados do cache — buscar de novo\",\n \"layout.commandPalette.refresh\": \"Atualizar resultados\",\n \"billing.title\": \"Faturamento\",\n \"billing.subtitle\": \"Gerencie sua assinatura e faturamento.\",\n \"billing.currentPlan\": \"Plano Atual\",\n \"billing.subscription.title\": \"Assinatura\",\n \"billing.subscription.subtitle\": \"Gerencie seu plano e desbloqueie mais recursos.\",\n \"billing.changeToPlan\": \"Mudar para este plano\",\n \"billing.featureMatrix\": \"Comparativo de recursos\",\n \"billing.changePlanConfirmTitle\": \"Mudar de plano?\",\n \"billing.changePlanConfirmBody\": \"Você está mudando para o plano {{plan}}.\",\n \"billing.changePlanConfirm\": \"Mudar de plano\",\n \"billing.planChanged\": \"Agora você está no plano {{plan}}.\",\n \"billing.planChangeFailed\": \"Não foi possível mudar seu plano. Tente novamente.\",\n \"billing.noPlans\": \"Nenhum plano configurado.\",\n \"billing.pro\": \"Pro\",\n \"billing.upgrade\": \"Fazer Upgrade\",\n \"billing.downgrade\": \"Fazer Downgrade\",\n \"billing.monthly\": \"Mensal\",\n \"billing.yearly\": \"Anual\",\n \"billing.yearlySave\": \"Economize 20%\",\n \"billing.free\": \"Gratuito\",\n \"billing.cancelSubscription\": \"Cancelar Assinatura\",\n \"billing.canceling\": \"Cancelando...\",\n \"billing.resumeSubscription\": \"Retomar Assinatura\",\n \"billing.resuming\": \"Retomando...\",\n \"billing.features\": \"Recursos\",\n \"billing.perMonth\": \"/mês\",\n \"billing.perYear\": \"/ano\",\n \"billing.getStarted\": \"Começar\",\n \"billing.processing\": \"Processando...\",\n \"billing.mostPopular\": \"Mais Popular\",\n \"billing.nextBilling\": \"Próxima cobrança: {{date}}\",\n \"billing.cancelsOn\": \"Cancela em {{date}}\",\n \"billing.trialEnds\": \"Período de teste termina em {{date}}\",\n \"billing.pastDueWarning\": \"Seu pagamento está atrasado. Atualize seu método de pagamento para evitar interrupção do serviço.\",\n \"billing.status.active\": \"Ativo\",\n \"billing.status.trialing\": \"Período de Teste\",\n \"billing.status.pastDue\": \"Atrasado\",\n \"billing.status.canceled\": \"Cancelado\",\n \"billing.status.paused\": \"Pausado\",\n \"organization.invite\": \"Convidar\",\n \"organization.members\": \"Membros\",\n \"organization.memberCount\": \"{{count}} membro{{plural}} nesta organização.\",\n \"organization.role\": \"Função\",\n \"organization.emailPlaceholder\": \"equipe@exemplo.com\",\n \"organization.sendInvites\": \"Enviar Convites\",\n \"organization.sending\": \"Enviando...\",\n \"organization.pending\": \"Convites Pendentes\",\n \"organization.remove\": \"Remover membro\",\n \"organization.resend\": \"Reenviar\",\n \"organization.revoke\": \"Revogar\",\n \"organization.inviteTitle\": \"Convidar Membros da Equipe\",\n \"organization.inviteDescription\": \"Envie convites para entrar na sua organização.\",\n \"organization.inviteSent\": \"Convites enviados\",\n \"organization.inviteSentDescription\": \"Seus membros receberão um e-mail com instruções para entrar.\",\n \"organization.emailAddresses\": \"Endereços de e-mail\",\n \"organization.addAnother\": \"Adicionar outro\",\n \"organization.selectRole\": \"Selecione uma função\",\n \"organization.you\": \"(você)\",\n \"organization.joined\": \"Entrou\",\n \"organization.onboarding.title\": \"Configure seu espaço de trabalho\",\n \"organization.onboarding.namePrompt\": \"Como devemos chamar seu espaço de trabalho?\",\n \"organization.onboarding.preferencesPrompt\": \"Preferências regionais\",\n \"organization.onboarding.workspaceName\": \"Nome do espaço de trabalho\",\n \"organization.onboarding.workspaceNamePlaceholder\": \"Minha Empresa\",\n \"organization.onboarding.timezone\": \"Fuso horário\",\n \"organization.onboarding.currency\": \"Moeda\",\n \"organization.onboarding.creating\": \"Configurando seu espaço de trabalho\",\n \"organization.onboarding.creatingDescription\": \"Isso levará apenas um momento...\",\n \"organization.onboarding.createWorkspace\": \"Criar Espaço de Trabalho\",\n \"settings.title\": \"Configurações\",\n \"settings.subtitle\": \"Gerencie sua conta e preferências da organização.\",\n \"settings.backToHome\": \"Voltar para o início\",\n \"settings.navLinks\": \"Links de configuração\",\n \"settings.general\": \"Geral\",\n \"settings.properties\": \"Propriedades\",\n \"settings.profile\": \"Perfil\",\n \"settings.branding\": \"Marca\",\n \"settings.security\": \"Segurança\",\n \"settings.sites\": \"Sites\",\n \"settings.connectors\": \"Conectores\",\n \"settings.subscription\": \"Assinatura\",\n \"upgrade.title\": \"Recurso premium\",\n \"upgrade.description\": \"Este recurso está disponível em um plano superior. Faça upgrade para liberá-lo.\",\n \"upgrade.descriptionFeature\": \"O recurso {feature} está disponível em um plano superior. Faça upgrade para liberá-lo.\",\n \"contactPicker.search\": \"Buscar contato...\",\n \"contactPicker.newContact\": \"Novo contato\",\n \"contactPicker.name\": \"Nome\",\n \"contactPicker.phone\": \"Telefone\",\n \"contactPicker.emailOptional\": \"E-mail (opcional)\",\n \"contactPicker.create\": \"Cadastrar\",\n \"contactPicker.creating\": \"Cadastrando...\",\n \"contactPicker.cancel\": \"Cancelar\",\n \"contactPicker.clear\": \"Remover contato\",\n \"contactPicker.createFailed\": \"Não foi possível cadastrar o contato\",\n \"contactPicker.addField\": \"Adicionar {label}\",\n \"upgrade.includes\": \"Inclui {feature}\",\n \"upgrade.cta\": \"Ver planos\",\n \"upgrade.badgeTooltip\": \"Disponível em um plano superior\",\n \"upgrade.unlock\": \"Desbloqueie {feature}\",\n \"upgrade.currentPlan\": \"Seu plano: {plan}\",\n \"upgrade.recommended\": \"Recomendado\",\n \"upgrade.ctaUpgrade\": \"Fazer upgrade\",\n \"upgrade.ctaUpgradeTo\": \"Fazer upgrade para {plan}\",\n \"upgrade.compareAll\": \"Comparar todos os planos\",\n \"upgrade.valueGeneric\": \"Tudo o que você precisa para crescer — incluso nos planos abaixo.\",\n \"upgrade.value.marketing\": \"Campanhas, funil e conteúdo para crescer sua base de clientes.\",\n \"upgrade.value.reports\": \"Relatórios avançados e insights para decidir com mais precisão.\",\n \"upgrade.value.fin_reconciliation\": \"Concilie pagamentos e mantenha seu fluxo de caixa sob controle.\",\n \"upgrade.value.assistant\": \"Seu copiloto de operações — pergunte, analise e aja com IA.\",\n \"upgrade.feature.assistant\": \"Assistente de IA\",\n \"billing.unlimited\": \"Ilimitado\",\n \"billing.upTo\": \"Até {count}\",\n \"limit.label.clients\": \"clientes\",\n \"limit.label.users\": \"membros da equipe\",\n \"limit.label.locations\": \"locais\",\n \"limit.label.bookings_month\": \"agendamentos mensais\",\n \"limit.label.leads\": \"leads\",\n \"limit.label.quotes\": \"orçamentos\",\n \"limit.label.conversations_month\": \"conversas mensais\",\n \"limit.label.ai_credits_month\": \"créditos de IA por mês\",\n \"limit.label.recipes\": \"receitas\",\n \"limit.label.form_templates\": \"modelos de formulário\",\n \"limit.label.documents_month\": \"documentos mensais\",\n \"limit.label.content_posts_month\": \"posts de conteúdo mensais\",\n \"limit.label.blog_posts\": \"posts de blog\",\n \"limit.label.products\": \"produtos\",\n \"limit.label.students\": \"alunos\",\n \"limit.label.courses\": \"cursos\",\n \"limit.label.contacts\": \"contatos\",\n \"limit.label.deals\": \"negócios\",\n \"limit.label.menu_items\": \"itens do cardápio\",\n \"limit.label.orders_month\": \"pedidos mensais\",\n \"limit.label.connected_banks\": \"bancos conectados\",\n \"limit.label.movements_month\": \"movimentações mensais\",\n \"settings.team\": \"Equipe\",\n \"settings.permissions\": \"Permissões\",\n \"settings.locations\": \"Locais\",\n \"settings.holidays\": \"Feriados\",\n \"settings.fieldRules\": \"Regras de Campos\",\n \"settings.notifications\": \"Notificações\",\n \"settings.save\": \"Salvar Alterações\",\n \"settings.saving\": \"Salvando...\",\n \"settings.companyInfo\": \"Informações da Empresa\",\n \"settings.companyInfoDescription\": \"Atualize os dados da sua organização e preferências regionais.\",\n \"settings.companyName\": \"Nome da Empresa\",\n \"settings.companyNamePlaceholder\": \"Minha Empresa LTDA\",\n \"settings.timezone\": \"Fuso Horário\",\n \"settings.timezonePlaceholder\": \"Selecione o fuso horário\",\n \"settings.currency\": \"Moeda\",\n \"settings.currencyPlaceholder\": \"Selecione a moeda\",\n \"settings.locale\": \"Idioma\",\n \"settings.localePlaceholder\": \"Selecione o idioma\",\n \"settings.uploadLogo\": \"Enviar Logo\",\n \"settings.uiLanguage\": \"Idioma da Interface\",\n \"settings.uiLanguageDescription\": \"Escolha o idioma da interface. Aplica-se apenas à sua sessão.\",\n \"notifications.title\": \"Notificações\",\n \"notifications.markAllRead\": \"Marcar todas como lidas\",\n \"notifications.empty\": \"Sem notificações\",\n \"notifications.whatsNew\": \"Novidades\",\n \"notifications.inbox\": \"Caixa de Entrada\",\n \"app.notFound.title\": \"404\",\n \"app.notFound.heading\": \"Página não encontrada\",\n \"app.notFound.message\": \"A página que você procura não existe ou foi movida.\",\n \"app.notFound.goToDashboard\": \"Ir para o Painel\",\n \"app.accessDenied.heading\": \"Acesso Negado\",\n \"app.accessDenied.message\": \"Você não tem permissão para acessar esta página.\",\n \"shell.accessDenied.title\": \"Acesso restrito\",\n \"shell.accessDenied.message\": \"Você não tem permissão para acessar esta página.\",\n \"shell.error.title\": \"Não foi possível carregar esta tela\",\n \"shell.error.message\": \"Algo deu errado do nosso lado. O resto do sistema continua funcionando — você pode voltar e tentar de novo.\",\n \"shell.error.retry\": \"Tentar de novo\",\n \"shell.error.copy\": \"Copiar detalhes do erro\",\n \"shell.error.copied\": \"Copiado\",\n \"shell.error.reference\": \"Informe este código ao falar com o suporte\",\n \"organization.workspaces\": \"Áreas de trabalho\",\n \"organization.onlyWorkspace\": \"Esta é a sua única área de trabalho.\",\n \"crud.form.requiredIndicator\": \"*\",\n \"crud.form.createDescription\": \"Criar um(a) novo(a) {{entity}}.\",\n \"crud.form.editDescription\": \"Atualizar detalhes de {{entity}}.\",\n \"crud.form.failedToSave\": \"Falha ao salvar {{entity}}\",\n \"crud.form.saveChanges\": \"Salvar Alterações\",\n \"crud.form.select\": \"Selecione {{field}}...\",\n \"crud.list.addEntity\": \"+ Adicionar {{entity}}\",\n \"crud.list.search\": \"Buscar {{entities}}...\",\n \"crud.import.action\": \"Importar\",\n \"crud.import.title\": \"Importar {{entity}}\",\n \"crud.import.step.download\": \"Modelo\",\n \"crud.import.step.upload\": \"Upload\",\n \"crud.import.step.mapping\": \"Mapeamento\",\n \"crud.import.step.importing\": \"Importar\",\n \"crud.import.downloadTitle\": \"Baixe o modelo\",\n \"crud.import.downloadDescription\": \"Baixe um modelo CSV com todos os campos disponíveis para {{entity}}. Preencha e envie no próximo passo.\",\n \"crud.import.downloadTemplate\": \"Baixar modelo CSV\",\n \"crud.import.downloadHint\": \"{{count}} campos disponíveis\",\n \"crud.import.alreadyHaveFile\": \"Já tenho um arquivo\",\n \"crud.import.uploadTitle\": \"Arraste seu arquivo CSV aqui ou clique para buscar\",\n \"crud.import.uploadHint\": \"Apenas arquivos .csv são aceitos\",\n \"crud.import.invalidFile\": \"Envie um arquivo .csv.\",\n \"crud.import.emptyFile\": \"O arquivo parece estar vazio.\",\n \"crud.import.noRows\": \"O arquivo tem cabeçalho mas nenhuma linha de dados.\",\n \"crud.import.mappingTitle\": \"Mapeie suas colunas\",\n \"crud.import.mappingDescription\": \"{{file}} — {{columns}} colunas, {{rows}} linhas\",\n \"crud.import.mappedCount\": \"{{count}} de {{total}} mapeados\",\n \"crud.import.csvColumn\": \"Coluna CSV\",\n \"crud.import.mapsTo\": \"Mapeia para\",\n \"crud.import.preview\": \"Prévia\",\n \"crud.import.skip\": \"— Ignorar esta coluna\",\n \"crud.import.startImport\": \"Iniciar importação\",\n \"crud.import.importing\": \"Importando...\",\n \"crud.import.importingHint\": \"Processando {{count}} linhas\",\n \"crud.import.progressCount\": \"{{processed}} de {{total}} linhas processadas\",\n \"crud.import.doneSuccess\": \"Importação concluída!\",\n \"crud.import.doneWithErrors\": \"Importação concluída com erros\",\n \"crud.import.doneCount\": \"{{success}} de {{total}} linhas importadas com sucesso\",\n \"crud.import.rowNumber\": \"Linha {{row}}:\",\n \"crud.import.toastSuccess\": \"{{count}} registros importados\",\n \"crud.import.noConnection\": \"Sem conexão com o banco de dados. A importação requer uma conexão ativa.\",\n \"crud.import.limitExceeded\": \"Esta importação excede o limite do seu plano. Faça upgrade ou importe menos linhas.\",\n \"crud.export.action\": \"Exportar\",\n \"crud.export.noData\": \"Sem dados para exportar.\",\n \"crud.export.toastSuccess\": \"{{count}} registros exportados\",\n \"layout.topbar.keyboardShortcut\": \"⌘K\",\n \"layout.topbar.search\": \"Buscar...\",\n \"layout.commandPalette.commandsCount\": \"{{count}} comando{{plural}}\",\n \"layout.commandPalette.navigate\": \"navegar\",\n \"layout.commandPalette.open\": \"abrir\",\n \"layout.commandPalette.commandCount\": \"{{count}} comando{{plural}}\",\n \"layout.commandPalette.description\": \"Buscar páginas, ações, pessoas, produtos e serviços\",\n \"layout.commandPalette.resultCount\": \"{{count}} resultado{{plural}}\",\n \"layout.commandPalette.title\": \"Paleta de comandos\",\n \"layout.bottomNav.chat\": \"Chat\",\n \"layout.mobileDrawer.description\": \"Links de navegação do aplicativo\",\n \"layout.mobileDrawer.title\": \"Menu de navegação\",\n \"organization.sent\": \"Enviado {{date}}\",\n \"organization.failedInvites\": \"Falha ao enviar convites\",\n \"organization.onboarding.failedCreate\": \"Falha ao criar espaço de trabalho\",\n \"organization.createOrg\": \"Criar organização\",\n \"organization.createOrgDescription\": \"Crie um novo espaço de trabalho para sua equipe.\",\n \"organization.createOrgTitle\": \"Criar Organização\",\n \"organization.creating\": \"Criando...\",\n \"organization.orgNamePlaceholder\": \"Nome da organização\",\n \"organization.onboarding.oneMoment\": \"Isso levará apenas um momento...\",\n \"organization.onboarding.preferences\": \"Preferências regionais\",\n \"organization.onboarding.settingUp\": \"Configurando seu espaço de trabalho\",\n \"organization.onboarding.setupWorkspace\": \"Configure seu espaço de trabalho\",\n \"organization.onboarding.whatName\": \"Como devemos chamar seu espaço de trabalho?\",\n \"organization.invite.addAnother\": \"Adicionar outro\",\n \"organization.invite.description\": \"Envie convites para entrar na sua organização.\",\n \"organization.invite.emailLabel\": \"Endereços de e-mail\",\n \"organization.invite.roleLabel\": \"Função\",\n \"organization.invite.rolePlaceholder\": \"Selecione uma função\",\n \"organization.invite.sendInvites\": \"Enviar Convites\",\n \"organization.invite.sending\": \"Enviando...\",\n \"organization.invite.sent\": \"Convites enviados\",\n \"organization.invite.sentDescription\": \"Seus membros receberão um e-mail com instruções para entrar.\",\n \"organization.invite.title\": \"Convidar Membros da Equipe\",\n \"organization.permissions.createCustom\": \"Criar Perfil Personalizado\",\n \"organization.permissions.createProfile\": \"Criar Perfil\",\n \"organization.permissions.duplicate\": \"Duplicar\",\n \"organization.permissions.copyName\": \"{{name}} (cópia)\",\n \"organization.permissions.description\": \"Descrição\",\n \"organization.permissions.descriptionPlaceholder\": \"Descrição opcional\",\n \"organization.permissions.editProfile\": \"Editar: {{name}}\",\n \"organization.permissions.manageBilling\": \"Gerenciar Faturamento\",\n \"organization.permissions.managePermissions\": \"Gerenciar Permissões\",\n \"organization.permissions.manageSettings\": \"Gerenciar Configurações\",\n \"organization.permissions.manageTeam\": \"Gerenciar Equipe\",\n \"organization.permissions.memberCount\": \"{{count}} membro{{plural}}\",\n \"organization.permissions.previewAs\": \"Visualizar como\",\n \"organization.permissions.previewingAs\": \"Visualizando como\",\n \"organization.permissions.exitPreview\": \"Sair da Visualização\",\n \"organization.permissions.searchFeatures\": \"Buscar recursos...\",\n \"organization.permissions.profileName\": \"Nome do Perfil\",\n \"organization.permissions.profileNamePlaceholder\": \"ex.: Função Personalizada\",\n \"organization.permissions.subtitle\": \"Gerencie funções e suas permissões.\",\n \"organization.permissions.system\": \"Sistema\",\n \"organization.permissions.systemPermissions\": \"Permissões do Sistema\",\n \"organization.permissions.title\": \"Perfis de Permissão\",\n \"organization.permissions.updateProfile\": \"Atualizar Perfil\",\n \"organization.team.invite\": \"Convidar\",\n \"organization.team.joined\": \"Entrou\",\n \"organization.team.member\": \"Membro\",\n \"organization.team.memberCount\": \"{{count}} membro{{plural}} nesta organização.\",\n \"organization.team.pendingInvites\": \"Convites Pendentes\",\n \"organization.team.removeMember\": \"Remover membro\",\n \"organization.team.resend\": \"Reenviar\",\n \"organization.team.revoke\": \"Revogar\",\n \"organization.team.inviteResent\": \"Convite reenviado\",\n \"organization.team.inviteRevoked\": \"Convite revogado\",\n \"organization.team.inviteActionFailed\": \"Não foi possível concluir\",\n \"organization.team.role\": \"Função\",\n \"organization.team.sent\": \"Enviado {{date}}\",\n \"organization.team.title\": \"Membros\",\n \"organization.team.you\": \"(você)\",\n \"user.profile\": \"Perfil\",\n \"user.settings\": \"Configurações\",\n \"user.help\": \"Ajuda\",\n \"user.shortcuts\": \"Atalhos de Teclado\",\n \"user.theme\": \"Tema\",\n \"user.themeLight\": \"Claro\",\n \"user.themeDark\": \"Escuro\",\n \"user.themeSystem\": \"Sistema\",\n \"notifications.noUpdates\": \"Nenhuma atualização ainda\",\n \"common.create\": \"Criar\",\n \"common.feature\": \"Recurso\",\n \"common.message\": \"Mensagem...\",\n \"common.more\": \"Mais\",\n \"common.noContent\": \"Nenhum conteúdo ainda\",\n \"chat.defaultTitle\": \"Assistente\",\n \"assistant.invite.placeholder\": \"Pergunte sobre o seu negócio...\",\n \"assistant.invite.dismiss\": \"Agora não\",\n \"assistant.invite.suggested\": \"Sugestões\",\n \"chat.tryAsking\": \"Experimente perguntar\",\n \"chat.fab.tryIt\": \"Experimente\",\n \"chat.fab.dismiss\": \"Não mostrar sugestões aqui\",\n \"chat.fab.open\": \"Abrir assistente\",\n \"chat.fab.close\": \"Fechar assistente\",\n \"chat.messagePlaceholder\": \"Como posso ajudar?\",\n \"chat.send\": \"Enviar mensagem\",\n \"chat.notConfigured\": \"Assistente não configurado — defina chat.apiEndpoint para habilitar conversas.\",\n \"chat.unavailable\": \"Assistente indisponível\",\n \"chat.greeting\": \"Como posso ajudar?\",\n \"chat.greetingNamed\": \"Oi {{name}}, como posso ajudar?\",\n \"chat.greetingHint\": \"Peça com suas palavras, ou toque no microfone e fale.\",\n \"chat.status.ready\": \"Pronto\",\n \"chat.status.working\": \"Trabalhando nisso...\",\n \"chat.status.offline\": \"Sem conexão\",\n \"chat.jumpToLatest\": \"Ir para o fim\",\n \"chat.confirmAction.title\": \"Confirmar esta ação?\",\n \"chat.confirmAction.confirm\": \"Confirmar\",\n \"chat.confirmAction.cancel\": \"Cancelar\",\n \"chat.confirmAction.always\": \"Sempre permitir\",\n \"chat.confirmAction.alwaysSession\": \"Permitir nesta sessão\",\n \"chat.confirmAction.alwaysHint\": \"Parar de perguntar antes de \\\"{{label}}\\\"\",\n \"chat.confirmAction.autoApproved\": \"auto\",\n \"chat.confirmAction.autoApprovedHint\": \"Executado sem perguntar — você liberou esta ação\",\n \"chat.confirmAction.blocked\": \"Responda a confirmação acima primeiro\",\n \"chat.confirmAction.fillRequired\": \"Preencha para continuar: {{fields}}\",\n \"chat.confirmAction.showAll\": \"Preencher mais campos ({{count}})\",\n \"chat.confirmAction.showLess\": \"Mostrar menos campos\",\n \"chat.tool.createAppointment\": \"Marcar horário\",\n \"chat.tool.createRecord\": \"Criar registro\",\n \"chat.tool.updateRecord\": \"Atualizar registro\",\n \"chat.tool.deleteRecord\": \"Excluir registro\",\n \"chat.tool.createOrder\": \"Criar pedido\",\n \"chat.tool.createInvoice\": \"Emitir cobrança\",\n \"chat.tool.markPaymentReceived\": \"Marcar pagamento como recebido\",\n \"chat.tool.createCampaign\": \"Criar campanha\",\n \"chat.tool.sendMessage\": \"Enviar mensagem\",\n \"chat.tool.seatGuests\": \"Acomodar clientes\",\n \"chat.tool.toggleMenuItemAvailability\": \"Alterar disponibilidade do item\",\n \"chat.autoApprovals.title\": \"Ações liberadas\",\n \"chat.autoApprovals.revoke\": \"Voltar a perguntar\",\n \"chat.autoApprovals.revokeAll\": \"Perguntar sempre\",\n \"chat.suggestions.show\": \"Mostrar sugestões\",\n \"chat.suggestions.hide\": \"Ocultar sugestões\",\n \"chat.voice.start\": \"Falar\",\n \"chat.voice.stop\": \"Parar gravação\",\n \"chat.voice.listening\": \"Ouvindo — pode falar\",\n \"chat.voice.transcribing\": \"Transcrevendo...\",\n \"chat.voice.denied\": \"Microfone bloqueado. Libere o acesso nas configurações do navegador.\",\n \"chat.voice.network\": \"Não consegui falar com o serviço de transcrição.\",\n \"chat.voice.failed\": \"Não consegui entender — tente de novo.\",\n \"chat.voice.speakOn\": \"Responder em voz alta\",\n \"chat.voice.speakOff\": \"Silenciar respostas faladas\",\n \"chat.signingIn\": \"Um instante — ainda estou confirmando sua sessão.\",\n \"chat.history\": \"Conversas anteriores\",\n \"chat.history.search\": \"Buscar conversas\",\n \"chat.history.empty\": \"Nenhuma conversa encontrada.\",\n \"chat.history.today\": \"Hoje\",\n \"chat.history.yesterday\": \"Ontem\",\n \"chat.history.week\": \"Últimos 7 dias\",\n \"chat.history.older\": \"Mais antigas\",\n \"chat.newConversation\": \"Nova conversa\",\n \"chat.untitledConversation\": \"Conversa sem título\",\n \"chat.recentConversations\": \"Recentes\",\n \"chat.backToConversations\": \"Voltar para as conversas\",\n \"chat.renameConversation\": \"Renomear\",\n \"chat.saveTitle\": \"Salvar título\",\n \"chat.toolsAvailable\": \"{{count}} ferramentas disponíveis\",\n \"chat.suggestion.dashboard.kpi-summary.0\": \"Como está meu negócio hoje?\",\n \"chat.suggestion.dashboard.kpi-summary.1\": \"Qual o faturamento de hoje?\",\n \"chat.suggestion.dashboard.kpi-summary.2\": \"Me dê um resumo do dia\",\n \"chat.suggestion.agenda.list-appointments.0\": \"O que tem na agenda hoje?\",\n \"chat.suggestion.agenda.list-appointments.1\": \"Mostre os agendamentos de amanhã\",\n \"chat.suggestion.agenda.list-appointments.2\": \"Quem tem mais atendimentos esta semana?\",\n \"chat.suggestion.agenda.create-appointment.0\": \"Agende um corte para Sarah amanhã às 10h\",\n \"chat.suggestion.agenda.check-availability.0\": \"Quando Ana está disponível amanhã?\",\n \"chat.suggestion.agenda.check-availability.1\": \"Encontre um horário de 90 minutos para Carlos esta semana\",\n \"chat.suggestion.financial.get-revenue.0\": \"Quanto faturamos hoje?\",\n \"chat.suggestion.financial.get-revenue.1\": \"Qual o faturamento deste mês?\",\n \"chat.suggestion.financial.get-revenue.2\": \"Compare o faturamento desta semana com a anterior\",\n \"chat.suggestion.financial.create-invoice.0\": \"Crie uma fatura para um novo cliente\",\n \"chat.suggestion.financial.list-payables.0\": \"Mostre as contas em atraso\",\n \"chat.suggestion.financial.list-payables.1\": \"Quais contas vencem esta semana?\",\n \"chat.suggestion.inventory.low-stock.0\": \"Quais produtos estão com estoque baixo?\",\n \"chat.suggestion.inventory.low-stock.1\": \"Mostre um resumo do estoque\",\n \"chat.suggestion.inventory.low-stock.2\": \"Quais são os produtos mais usados?\",\n \"chat.suggestion.crm.count-customers.0\": \"Quantos clientes temos?\",\n \"chat.suggestion.crm.count-customers.1\": \"Quem são meus melhores clientes?\",\n \"chat.suggestion.crm.list-leads.0\": \"Mostre os leads novos desta semana\",\n \"chat.suggestion.crm.list-leads.1\": \"Quais leads precisam de follow-up?\",\n \"chat.suggestion.crm.list-leads.2\": \"Qual nossa taxa de conversão?\",\n \"chat.suggestion.custom_forms.list-templates.0\": \"Quais formulários temos?\",\n \"chat.suggestion.custom_forms.list-templates.1\": \"Mostre os modelos de anamnese\",\n \"chat.suggestion.custom_forms.list-documents.0\": \"Mostre os documentos deste cliente\",\n \"billing.invoice.amount\": \"Valor\",\n \"billing.invoice.date\": \"Data\",\n \"billing.invoice.invoice\": \"Fatura\",\n \"billing.invoice.noInvoices\": \"Nenhuma fatura ainda\",\n \"billing.invoice.status\": \"Status\",\n \"billing.paywall.notAvailable\": \"Este recurso não está disponível no seu plano atual.\",\n \"billing.paywall.requiresPlan\": \"Este recurso requer o plano {{plan}} ou superior.\",\n \"billing.paywall.upgradeRequired\": \"Upgrade Necessário\",\n \"billing.paywall.viewPlans\": \"Ver Planos\",\n \"auth.login.enterCredentials\": \"Insira suas credenciais para acessar sua conta\",\n \"auth.login.failedDefault\": \"Falha ao entrar. Tente novamente.\",\n \"auth.login.failedWithProvider\": \"Falha ao entrar com {{provider}}.\",\n \"auth.login.orContinueWith\": \"ou continue com\",\n \"auth.login.placeholder.email\": \"voce@exemplo.com\",\n \"auth.login.placeholder.password\": \"Digite sua senha\",\n \"auth.login.signingIn\": \"Entrando...\",\n \"auth.login.welcomeBack\": \"Bem-vindo de Volta\",\n \"auth.login.welcomeTo\": \"Bem-vindo ao {{appName}}\",\n \"auth.recovery.checkEmail\": \"Verifique seu e-mail\",\n \"auth.recovery.description\": \"Insira seu e-mail e enviaremos um link para redefinir sua senha.\",\n \"auth.recovery.failedDefault\": \"Falha ao enviar e-mail. Tente novamente.\",\n \"auth.recovery.resetLinkSent\": \"Enviamos um link de redefinição para <strong>{{email}}</strong>. Verifique sua caixa de entrada e siga as instruções.\",\n \"auth.recovery.sendResetLink\": \"Enviar link de redefinição\",\n \"auth.recovery.sending\": \"Enviando...\",\n \"auth.signup.confirmPassword\": \"Confirmar senha\",\n \"auth.signup.creating\": \"Criando conta...\",\n \"auth.signup.emailVerification\": \"Conta criada para {{email}}. Verifique sua caixa de entrada para confirmar seu e-mail.\",\n \"auth.signup.failedDefault\": \"Falha ao criar conta. Tente novamente.\",\n \"auth.signup.fullName\": \"Nome completo\",\n \"auth.signup.getStarted\": \"Comece com sua nova conta\",\n \"auth.signup.passwordMinLength\": \"A senha deve ter pelo menos 8 caracteres.\",\n \"auth.signup.passwordsMismatch\": \"As senhas não conferem.\",\n \"auth.signup.placeholder.confirm\": \"Repita sua senha\",\n \"auth.signup.placeholder.name\": \"João Silva\",\n \"auth.signup.placeholder.password\": \"Pelo menos 8 caracteres\",\n \"auth.signup.termsAgreement\": \"Ao criar uma conta, você concorda com nossos\",\n \"settings.branding.accentColor\": \"Cor de Destaque\",\n \"settings.branding.chooseFile\": \"Escolher Arquivo\",\n \"settings.branding.favicon\": \"Favicon\",\n \"settings.branding.faviconHint\": \"Recomendado: 32x32px, PNG ou ICO\",\n \"settings.branding.logo\": \"Logo\",\n \"settings.branding.logoHint\": \"Recomendado: 200x50px, PNG ou SVG\",\n \"settings.branding.preview\": \"Pré-visualização\",\n \"settings.branding.primaryColor\": \"Cor Primária\",\n \"settings.branding.saveBranding\": \"Salvar Marca\",\n \"settings.branding.subtitle\": \"Personalize a aparência do seu espaço de trabalho.\",\n \"settings.branding.title\": \"Marca\",\n \"settings.company.currency\": \"Moeda\",\n \"settings.company.currencyPlaceholder\": \"Selecione a moeda\",\n \"settings.company.locale\": \"Idioma\",\n \"settings.company.localePlaceholder\": \"Selecione o idioma\",\n \"settings.company.name\": \"Nome da Empresa\",\n \"settings.company.subtitle\": \"Atualize os dados da sua organização e preferências regionais.\",\n \"settings.company.timezone\": \"Fuso Horário\",\n \"settings.company.timezonePlaceholder\": \"Selecione o fuso horário\",\n \"settings.company.title\": \"Informações da Empresa\",\n \"settings.holidays.addHoliday\": \"Adicionar Feriado\",\n \"settings.holidays.annual\": \"Anual\",\n \"settings.holidays.descriptionPlaceholder\": \"Descrição (opcional)\",\n \"settings.holidays.empty\": \"Nenhum feriado configurado ainda.\",\n \"settings.holidays.namePlaceholder\": \"Nome do feriado *\",\n \"settings.holidays.newHoliday\": \"Novo Feriado\",\n \"settings.holidays.recurringAnnually\": \"Recorrente anualmente\",\n \"settings.holidays.subtitle\": \"Dias não úteis e feriados recorrentes.\",\n \"settings.holidays.title\": \"Feriados\",\n \"settings.fieldRules.subtitle\": \"Configure quais campos são obrigatórios ou visíveis para cada tipo de cadastro.\",\n \"settings.fieldRules.required\": \"Obrigatório\",\n \"settings.fieldRules.inForm\": \"Formulário\",\n \"settings.fieldRules.inTable\": \"Tabela\",\n \"settings.fieldRules.inDetail\": \"Detalhe\",\n \"settings.fieldRules.field\": \"Campo\",\n \"settings.fieldRules.resetDefaults\": \"Restaurar Padrões\",\n \"settings.fieldRules.resetConfirm\": \"Restaurar todas as regras de campos de {{entity}} para seus padrões?\",\n \"settings.fieldRules.saved\": \"Regras de campos salvas\",\n \"settings.fieldRules.saveFailed\": \"Falha ao salvar regras de campos\",\n \"settings.fieldRules.modified\": \"{{count}} modificado(s)\",\n \"settings.fieldRules.searchPlaceholder\": \"Buscar tipos de cadastro...\",\n \"settings.fieldRules.noEntities\": \"Nenhum tipo de cadastro disponível.\",\n \"settings.fieldRules.coreRegisters\": \"Tipos de Cadastro\",\n \"settings.fieldRules.otherRegisters\": \"Outros\",\n \"settings.fieldRules.showMore\": \"{{count}} tipos de cadastro a mais...\",\n \"settings.fieldRules.showLess\": \"Mostrar menos\",\n \"settings.locations.addFirst\": \"Adicione seu primeiro local\",\n \"settings.locations.addLocation\": \"Adicionar Local\",\n \"settings.locations.adding\": \"Adicionando...\",\n \"settings.locations.addressPlaceholder\": \"Endereço\",\n \"settings.locations.cityPlaceholder\": \"Cidade\",\n \"settings.locations.countDescription\": \"{{count}} local{{plural}} cadastrado(s).\",\n \"settings.locations.countryPlaceholder\": \"País\",\n \"settings.locations.empty\": \"Nenhum local foi adicionado a esta organização ainda.\",\n \"settings.locations.headquarters\": \"Sede\",\n \"settings.locations.namePlaceholder\": \"Nome do local *\",\n \"settings.locations.newLocation\": \"Novo Local\",\n \"settings.locations.noLocations\": \"Nenhum local configurado ainda.\",\n \"settings.locations.phonePlaceholder\": \"Telefone\",\n \"settings.locations.statePlaceholder\": \"Estado\",\n \"settings.locations.title\": \"Locais\",\n \"settings.profile.email\": \"E-mail\",\n \"settings.profile.emailHelp\": \"O e-mail não pode ser alterado diretamente. Entre em contato com o suporte.\",\n \"settings.profile.fullName\": \"Nome Completo\",\n \"settings.profile.saveProfile\": \"Salvar Perfil\",\n \"settings.profile.subtitle\": \"Gerencie suas informações pessoais e configurações da conta.\",\n \"settings.profile.title\": \"Perfil\",\n \"settings.security.inviteOnly\": \"Acesso Apenas por Convite\",\n \"settings.security.inviteOnlyDescription\": \"Novos usuários só podem entrar nesta organização via convite.\",\n \"settings.security.linkSent\": \"Link Enviado\",\n \"settings.security.orgSecuritySubtitle\": \"Políticas de segurança aplicadas a todos os membros desta organização.\",\n \"settings.security.orgSecurityTitle\": \"Segurança da Organização\",\n \"settings.security.passwordSubtitle\": \"Gerencie a senha da sua conta. Um link de redefinição será enviado para seu e-mail.\",\n \"settings.security.passwordTitle\": \"Senha\",\n \"settings.security.require2FA\": \"Exigir Autenticação de Dois Fatores\",\n \"settings.security.require2FADescription\": \"Todos os membros devem ativar 2FA para acessar esta organização.\",\n \"settings.security.resetLinkDescription\": \"Enviar um link de redefinição de senha para seu e-mail.\",\n \"settings.security.resetLinkSent\": \"Link de redefinição enviado — verifique sua caixa de entrada.\",\n \"settings.security.resetPassword\": \"Redefinir Senha\",\n \"settings.security.sessionTimeout\": \"Tempo Limite da Sessão\",\n \"settings.security.sessionTimeoutDescription\": \"Desconectar automaticamente usuários inativos após este período.\",\n \"settings.plugin.agenda\": \"Agenda\",\n \"settings.plugin.financial\": \"Financeiro\",\n \"settings.plugin.inventory\": \"Estoque\",\n \"settings.plugin.crm\": \"Vendas & CRM\",\n \"crud.archetype.comingSoon\": \"Em Breve\",\n \"crud.archetype.access.title\": \"Acesso e Permissões\",\n \"crud.archetype.access.description\": \"Gerencie credenciais de login, atribua perfis de permissão e controle o que esta pessoa pode acessar no sistema.\",\n \"crud.access.accountStatus\": \"Status da Conta\",\n \"crud.access.statusLinked\": \"Ativo\",\n \"crud.access.statusPending\": \"Convite pendente\",\n \"crud.access.statusAccepted\": \"Aceito\",\n \"crud.access.statusExpired\": \"Convite expirado\",\n \"crud.access.statusRevoked\": \"Revogado\",\n \"crud.access.acceptedAt\": \"Aceito em {{date}}\",\n \"crud.access.revokedDesc\": \"O acesso foi revogado. Você pode enviar um novo convite.\",\n \"crud.access.grantAccess\": \"Conceder Acesso\",\n \"crud.access.account\": \"Conta\",\n \"crud.access.accountDesc\": \"Credenciais de login e status da conta desta pessoa.\",\n \"crud.access.resetPassword\": \"Redefinir Senha\",\n \"crud.access.passwordResetSent\": \"E-mail de redefinição de senha enviado.\",\n \"crud.access.profileUpdated\": \"Perfil de permissão atualizado.\",\n \"crud.access.inviteResent\": \"Convite reenviado.\",\n \"crud.access.inviteRevoked\": \"Convite revogado.\",\n \"crud.access.accessRemoved\": \"Acesso removido.\",\n \"crud.access.dangerZone\": \"Zona de Perigo\",\n \"crud.access.dangerZoneDesc\": \"Ações irreversíveis que afetam o acesso desta pessoa ao sistema.\",\n \"crud.access.removeAccess\": \"Remover Acesso\",\n \"crud.access.revokeInvite\": \"Revogar Convite\",\n \"crud.access.confirmRemoveTitle\": \"Tem certeza?\",\n \"crud.access.confirmRemoveDesc\": \"Esta pessoa perderá todo o acesso ao sistema imediatamente. Esta ação não pode ser desfeita.\",\n \"crud.access.accountLinked\": \"Conta vinculada\",\n \"crud.access.noAccount\": \"Nenhuma conta vinculada\",\n \"crud.access.noAccountDesc\": \"Esta pessoa não possui uma conta de acesso e não pode entrar no sistema.\",\n \"crud.access.setupDesc\": \"Configure o acesso ao sistema para esta pessoa informando o e-mail e escolhendo um perfil de permissão.\",\n \"crud.access.emailPlaceholder\": \"pessoa@exemplo.com\",\n \"crud.access.sendInvite\": \"Enviar Convite\",\n \"crud.access.invitePending\": \"Convite pendente\",\n \"crud.access.inviteSent\": \"Convite enviado em {{date}}\",\n \"crud.access.permissionProfile\": \"Perfil de Permissão\",\n \"crud.access.profileDesc\": \"Defina o que esta pessoa pode acessar e fazer no sistema.\",\n \"crud.access.systemAccess\": \"Acesso ao Sistema\",\n \"crud.access.effectivePermissions\": \"Permissões Efetivas\",\n \"crud.access.effectiveDesc\": \"O que esta pessoa pode fazer com base no perfil atribuído.\",\n \"crud.access.feature\": \"Funcionalidade\",\n \"crud.access.joined\": \"Entrou em {{date}}\",\n \"crud.access.noEmail\": \"Sem endereço de e-mail\",\n \"crud.access.noEmailDesc\": \"Adicione um endereço de e-mail a esta pessoa para vinculá-la a uma conta do sistema.\",\n \"crud.access.manageTeam\": \"Gerenciar Equipe\",\n \"crud.access.manageBilling\": \"Gerenciar Faturamento\",\n \"crud.access.manageSettings\": \"Gerenciar Configurações\",\n \"crud.access.managePermissions\": \"Gerenciar Permissões\",\n \"crud.archetype.activity.title\": \"Linha do Tempo\",\n \"crud.archetype.activity.description\": \"Veja um registro cronológico de todas as ações, alterações e eventos relacionados a esta pessoa.\",\n \"crud.archetype.documents.title\": \"Documentos\",\n \"crud.archetype.documents.description\": \"Anexe e gerencie arquivos, contratos, certificações e outros documentos desta pessoa.\",\n \"crud.archetype.addresses.add\": \"Adicionar endereço\",\n \"crud.archetype.addresses.addTitle\": \"Novo endereço\",\n \"crud.archetype.addresses.editTitle\": \"Editar endereço\",\n \"crud.archetype.addresses.formDescription\": \"CEP, rua e cidade são obrigatórios; o resto é opcional.\",\n \"crud.archetype.addresses.emptyTitle\": \"Nenhum endereço cadastrado\",\n \"crud.archetype.addresses.emptyDescription\": \"Cadastre onde esta pessoa recebe entregas, é coletada ou é cobrada.\",\n \"crud.archetype.addresses.fallbackLabel\": \"Endereço\",\n \"crud.archetype.addresses.labelPlaceholder\": \"Casa, Trabalho…\",\n \"crud.archetype.addresses.default\": \"Padrão\",\n \"crud.archetype.addresses.setDefault\": \"Usar como endereço padrão\",\n \"crud.archetype.addresses.kind.both\": \"Entrega e cobrança\",\n \"crud.archetype.addresses.kind.shipping\": \"Entrega\",\n \"crud.archetype.addresses.kind.billing\": \"Cobrança\",\n \"crud.archetype.addresses.field.label\": \"Identificação\",\n \"crud.archetype.addresses.field.kind\": \"Uso\",\n \"crud.archetype.addresses.field.postalCode\": \"CEP\",\n \"crud.archetype.addresses.field.street\": \"Rua\",\n \"crud.archetype.addresses.field.number\": \"Número\",\n \"crud.archetype.addresses.field.complement\": \"Complemento\",\n \"crud.archetype.addresses.field.district\": \"Bairro\",\n \"crud.archetype.addresses.field.city\": \"Cidade\",\n \"crud.archetype.addresses.field.state\": \"UF\",\n \"crud.archetype.addresses.field.recipient\": \"Quem recebe\",\n \"crud.archetype.addresses.field.phone\": \"Telefone\",\n \"crud.archetype.addresses.created\": \"Endereço adicionado\",\n \"crud.archetype.addresses.updated\": \"Endereço atualizado\",\n \"crud.archetype.addresses.deleted\": \"Endereço removido\",\n \"crud.archetype.addresses.deleteTitle\": \"Remover este endereço?\",\n \"crud.archetype.addresses.loadFailed\": \"Não foi possível carregar os endereços.\",\n \"crud.archetype.addresses.saveFailed\": \"Não foi possível salvar o endereço.\",\n \"crud.archetype.addresses.deleteFailed\": \"Não foi possível remover o endereço.\",\n \"crud.archetype.addresses.noTenant\": \"Nenhuma organização ativa — recarregue a página e tente de novo.\",\n \"crud.archetype.schedule.title\": \"Agenda\",\n \"crud.archetype.schedule.description\": \"Visualize e gerencie compromissos, turnos e disponibilidade desta pessoa.\",\n \"crud.archetype.inventory.title\": \"Estoque\",\n \"crud.archetype.inventory.description\": \"Acompanhe níveis de estoque, histórico de movimentação, alertas de reposição e gerencie o inventário entre locais.\",\n \"crud.archetype.suppliers.title\": \"Fornecedores\",\n \"crud.archetype.suppliers.description\": \"Veja e gerencie quais fornecedores oferecem este produto, compare custos e acompanhe pedidos de compra.\",\n \"crud.archetype.pricing.title\": \"Histórico de Preços\",\n \"crud.archetype.pricing.description\": \"Veja alterações de preço ao longo do tempo, gerencie preços promocionais e defina preços por local.\",\n \"crud.archetype.productActivity.title\": \"Atividade\",\n \"crud.archetype.productActivity.description\": \"Veja um registro de todas as alterações, ajustes de estoque e eventos relacionados a este produto.\",\n \"crud.archetype.availability.title\": \"Disponibilidade\",\n \"crud.archetype.availability.description\": \"Configure quando este serviço pode ser agendado, defina regras de duração e gerencie limites de capacidade.\",\n \"crud.archetype.servicePricing.title\": \"Faixas de Preço\",\n \"crud.archetype.servicePricing.description\": \"Gerencie faixas de preço, descontos para membros e preços por local para este serviço.\",\n \"crud.archetype.serviceActivity.title\": \"Atividade\",\n \"crud.archetype.serviceActivity.description\": \"Veja um registro de todos os agendamentos, alterações e eventos relacionados a este serviço.\",\n \"crud.archetype.members.title\": \"Equipe\",\n \"crud.archetype.members.description\": \"Veja e gerencie a equipe atribuída a este local, seus cargos e horários.\",\n \"crud.archetype.locationSchedule.title\": \"Horário de Funcionamento\",\n \"crud.archetype.locationSchedule.description\": \"Defina horário comercial, feriados e horários especiais para este local.\",\n \"crud.archetype.locationStats.title\": \"Estatísticas\",\n \"crud.archetype.locationStats.description\": \"Veja métricas de desempenho, faturamento e atividade deste local.\",\n \"crud.archetype.locationActivity.title\": \"Atividade\",\n \"crud.archetype.locationActivity.description\": \"Veja um registro de todos os eventos, alterações e operações neste local.\",\n \"crud.archetype.owner.noOwner\": \"Nenhum responsável atribuído\",\n \"crud.archetype.owner.assignHint\": \"Edite este registro para atribuir um responsável.\",\n \"crud.archetype.owner.name\": \"Nome\",\n \"crud.archetype.owner.phone\": \"Telefone\",\n \"crud.archetype.owner.email\": \"E-mail\",\n \"crud.archetype.owner.document\": \"Documento\",\n \"crud.archetype.owner.address\": \"Endereço\",\n \"crud.archetype.owner.active\": \"Ativo\",\n \"crud.archetype.owner.inactive\": \"Inativo\",\n \"crud.archetype.history.title\": \"Histórico\",\n \"crud.archetype.history.description\": \"Veja o histórico de visitas, relatórios anteriores, tratamentos e linha do tempo de eventos.\",\n \"crud.archetype.subjectDocuments.title\": \"Documentos\",\n \"crud.archetype.subjectDocuments.description\": \"Anexe e gerencie arquivos, resultados de exames, imagens e certificados.\",\n \"schedule.days.sun\": \"Dom\",\n \"schedule.days.mon\": \"Seg\",\n \"schedule.days.tue\": \"Ter\",\n \"schedule.days.wed\": \"Qua\",\n \"schedule.days.thu\": \"Qui\",\n \"schedule.days.fri\": \"Sex\",\n \"schedule.days.sat\": \"Sáb\",\n \"schedule.editor.weeklyTitle\": \"Horário de Trabalho Semanal\",\n \"schedule.editor.weeklyDescription\": \"Defina quando este profissional está regularmente disponível\",\n \"schedule.editor.unavailable\": \"Indisponível\",\n \"schedule.editor.newInterval\": \"Novo intervalo para {{day}}\",\n \"schedule.editor.addHoursFor\": \"Adicionar horários para {{day}}\",\n \"schedule.editor.removeInterval\": \"Remover intervalo\",\n \"schedule.editor.copyToAll\": \"Copiar para todos os dias\",\n \"schedule.editor.bufferTooltip\": \"Tempo de intervalo entre atendimentos\",\n \"schedule.editor.min\": \"min\",\n \"schedule.editor.exceptionsTitle\": \"Exceções de Data\",\n \"schedule.editor.exceptionsDescription\": \"Substituir horário de trabalho para datas específicas\",\n \"schedule.editor.addException\": \"Adicionar Exceção\",\n \"schedule.editor.noExceptions\": \"Nenhuma exceção de data configurada\",\n \"schedule.editor.startDate\": \"Data de início\",\n \"schedule.editor.endDate\": \"Data de término\",\n \"schedule.editor.type\": \"Tipo\",\n \"schedule.editor.customHours\": \"Horário personalizado\",\n \"schedule.editor.workingHours\": \"Horário de trabalho\",\n \"schedule.editor.to\": \"até\",\n \"schedule.editor.addTimeBlock\": \"Adicionar bloco de horário\",\n \"schedule.editor.notes\": \"Observações\",\n \"schedule.editor.notesPlaceholder\": \"ex. Férias, Feriado, Treinamento...\",\n \"schedule.editor.saveException\": \"Salvar Exceção\",\n \"schedule.editor.removeException\": \"Remover exceção\",\n \"schedule.editor.failedToLoad\": \"Falha ao carregar agenda\",\n \"schedule.editor.saved\": \"Horário de trabalho salvo\",\n \"schedule.editor.failedToSave\": \"Falha ao salvar\",\n \"schedule.editor.selectStartDate\": \"Selecione uma data de início\",\n \"schedule.editor.endDateAfterStart\": \"A data de término deve ser posterior à data de início\",\n \"schedule.editor.exceptionAdded\": \"Exceção adicionada\",\n \"schedule.editor.failedToSaveException\": \"Falha ao salvar exceção\",\n \"schedule.editor.exceptionRemoved\": \"Exceção removida\",\n \"schedule.editor.failedToDelete\": \"Falha ao excluir\",\n \"schedule.blockSettings.title\": \"Configurações do Bloco\",\n \"schedule.blockSettings.location\": \"Local\",\n \"schedule.blockSettings.noLocation\": \"Sem local\",\n \"schedule.blockSettings.maxConcurrent\": \"Máx. simultâneos\",\n \"schedule.blockSettings.minAdvance\": \"Antecedência mín.\",\n \"schedule.blockSettings.maxAdvance\": \"Antecedência máx.\",\n \"schedule.blockSettings.hrs\": \"hrs\",\n \"schedule.blockSettings.days\": \"dias\",\n \"schedule.blockSettings.label\": \"Rótulo\",\n \"schedule.blockSettings.labelPlaceholder\": \"ex. Manhã – Apenas cortes\",\n \"schedule.blockSettings.allowedServices\": \"Serviços permitidos\",\n \"schedule.blockSettings.allServices\": \"Todos os serviços\",\n \"schedule.blockSettings.oneService\": \"1 serviço\",\n \"schedule.blockSettings.nServices\": \"{{count}} serviços\",\n \"registry.suppliers\": \"Fornecedor\",\n \"registry.suppliers.description\": \"Gerencie seus fornecedores de produtos e materiais\",\n \"registry.product-categories\": \"Categoria de Produto\",\n \"registry.product-categories.description\": \"Categorias de produtos para organização\",\n \"registry.stock-locations\": \"Local de Estoque\",\n \"registry.stock-locations.description\": \"Locais físicos de armazenamento do estoque\",\n \"registry.measurement-units\": \"Unidade de Medida\",\n \"registry.measurement-units.description\": \"Unidades padrão de medida\",\n \"registry.payment-methods\": \"Método de Pagamento\",\n \"registry.chart-of-accounts\": \"Plano de Contas\",\n \"registry.cost-centers\": \"Centro de Custo\",\n \"registry.bank-accounts\": \"Conta Bancária\",\n \"registry.commission-rules\": \"Regra de Comissão\",\n \"registry.price-tables\": \"Tabela de Preços\",\n \"registry.price-variations\": \"Variação de Preço\",\n \"registry.payment-method-types\": \"Tipo de Pagamento\",\n \"registry.card-brands\": \"Bandeira de Cartão\",\n \"registry.lead-sources\": \"Origem de Lead\",\n \"registry.tags\": \"Tag\",\n \"registry.activity-types\": \"Tipo de Atividade\",\n \"org.connectionError.title\": \"Falha na conexão\",\n \"org.connectionError.description\": \"Não foi possível conectar ao servidor. Verifique sua conexão com a internet e tente novamente.\",\n \"org.connectionError.retry\": \"Tentar novamente\",\n \"app.mockMode.banner\": \"Você está no modo offline. Os dados exibidos podem não estar atualizados.\",\n\n // Barra de controles das Análises — período, comparação e filtros.\n \"analytics.range.today\": \"Hoje\",\n \"analytics.range.yesterday\": \"Ontem\",\n \"analytics.range.last_7_days\": \"Últimos 7 dias\",\n \"analytics.range.last_30_days\": \"Últimos 30 dias\",\n \"analytics.range.last_90_days\": \"Últimos 90 dias\",\n \"analytics.range.this_month\": \"Este mês\",\n \"analytics.range.last_month\": \"Mês passado\",\n \"analytics.range.this_quarter\": \"Este trimestre\",\n \"analytics.range.this_year\": \"Este ano\",\n \"analytics.range.custom\": \"Período personalizado\",\n \"analytics.range.label\": \"Período\",\n \"analytics.range.from\": \"De\",\n \"analytics.range.to\": \"Até\",\n \"analytics.compare.previous_period\": \"Período anterior\",\n \"analytics.compare.previous_year\": \"Ano anterior\",\n \"analytics.compare.none\": \"Sem comparação\",\n \"analytics.compare.label\": \"Comparar\",\n \"analytics.filters\": \"Filtros\",\n \"analytics.filters.search\": \"Buscar filtros\",\n \"analytics.filters.none\": \"Nenhum filtro encontrado\",\n \"analytics.filters.noOptions\": \"Nenhuma opção disponível\",\n \"analytics.filters.apply\": \"Aplicar\",\n \"analytics.filters.clear\": \"Limpar\",\n \"analytics.filters.general\": \"Geral\",\n \"analytics.filters.selected\": \"{{count}} selecionados\",\n \"analytics.filters.remove\": \"Remover filtro\",\n \"analytics.refresh\": \"Atualizar\",\n}\n"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/** Where the error came from — the dimension worth splitting dashboards on. */
|
|
2
|
+
export type AppErrorSource =
|
|
3
|
+
/** A React subtree threw during render (caught by an error boundary). */
|
|
4
|
+
'render'
|
|
5
|
+
/** window.onerror — script errors outside React. */
|
|
6
|
+
| 'window'
|
|
7
|
+
/** unhandledrejection — a promise nobody caught. */
|
|
8
|
+
| 'promise'
|
|
9
|
+
/** An explicit reportAppError() from a catch block. */
|
|
10
|
+
| 'manual';
|
|
11
|
+
export interface AppErrorContext {
|
|
12
|
+
source?: AppErrorSource;
|
|
13
|
+
/** Route pattern when known ('/settings/custom_forms/templates/:id'), so the
|
|
14
|
+
* grouping does not explode into one bucket per record id. */
|
|
15
|
+
route?: string | null;
|
|
16
|
+
/** The concrete URL/hash the user was on. */
|
|
17
|
+
location?: string | null;
|
|
18
|
+
componentStack?: string | null;
|
|
19
|
+
tenantId?: string | null;
|
|
20
|
+
userId?: string | null;
|
|
21
|
+
/** Anything the caller knows and the funnel cannot guess. */
|
|
22
|
+
extra?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface AppErrorReport {
|
|
25
|
+
/** Short correlation id. It is shown on the error screen and travels with the
|
|
26
|
+
* event, so a user reading "ERR-7F3A21" out loud lands on the exact record. */
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
message: string;
|
|
30
|
+
stack?: string;
|
|
31
|
+
source: AppErrorSource;
|
|
32
|
+
route?: string | null;
|
|
33
|
+
location?: string | null;
|
|
34
|
+
componentStack?: string | null;
|
|
35
|
+
tenantId?: string | null;
|
|
36
|
+
userId?: string | null;
|
|
37
|
+
occurredAt: string;
|
|
38
|
+
userAgent?: string;
|
|
39
|
+
extra?: Record<string, unknown>;
|
|
40
|
+
/** The original throw, for reporters that want the real object (Sentry needs
|
|
41
|
+
* it to symbolicate). Never serialize this field. */
|
|
42
|
+
error: unknown;
|
|
43
|
+
}
|
|
44
|
+
export type ErrorReporter = (report: AppErrorReport) => void;
|
|
45
|
+
/** The event key every reporter and the event log can subscribe to. */
|
|
46
|
+
export declare const APP_ERROR_EVENT = "app.error";
|
|
47
|
+
/**
|
|
48
|
+
* Registers a sink for frontend errors. Returns the unsubscribe.
|
|
49
|
+
*
|
|
50
|
+
* The host app wires its vendor here, once, at boot:
|
|
51
|
+
*
|
|
52
|
+
* import * as Sentry from '@sentry/react'
|
|
53
|
+
* Sentry.init({ dsn: import.meta.env.VITE_SENTRY_DSN })
|
|
54
|
+
* registerErrorReporter(createVendorReporter(Sentry))
|
|
55
|
+
*/
|
|
56
|
+
export declare function registerErrorReporter(reporter: ErrorReporter): () => void;
|
|
57
|
+
export declare function clearErrorReporters(): void;
|
|
58
|
+
/** Test seam — the dedupe window is global state that would leak across specs. */
|
|
59
|
+
export declare function resetErrorDedupe(): void;
|
|
60
|
+
/**
|
|
61
|
+
* The single entry point. Builds the report, fans it out to every registered
|
|
62
|
+
* reporter, and emits it as a domain event so the existing bus/event-log
|
|
63
|
+
* consumers see it without a second wiring.
|
|
64
|
+
*
|
|
65
|
+
* Returns the report so a caller (the error screen) can show the id.
|
|
66
|
+
*/
|
|
67
|
+
export declare function reportAppError(error: unknown, context?: AppErrorContext): AppErrorReport;
|
|
68
|
+
/** Idempotent: calling it twice does not double-report. Returns the uninstall. */
|
|
69
|
+
export declare function installGlobalErrorHandlers(): () => void;
|
|
70
|
+
/** The slice of Sentry/PostHog/Bugsnag this SDK needs. Structural on purpose —
|
|
71
|
+
* it keeps the vendor package out of the SDK's dependency tree. */
|
|
72
|
+
export interface ErrorVendorClient {
|
|
73
|
+
captureException: (error: unknown, hint?: Record<string, unknown>) => unknown;
|
|
74
|
+
/** Optional: Sentry's setTag/setContext live on the scope, not the client, so
|
|
75
|
+
* everything we know travels in the hint's `extra`/`tags` instead. */
|
|
76
|
+
captureMessage?: (message: string, hint?: Record<string, unknown>) => unknown;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Wraps a vendor client as an ErrorReporter, mapping the report onto the
|
|
80
|
+
* tags/extra shape Sentry (and anything Sentry-shaped) expects.
|
|
81
|
+
*
|
|
82
|
+
* Tags are the low-cardinality dimensions you filter dashboards by; the rest
|
|
83
|
+
* goes to extra. `errorId` is a tag on purpose — it is what a user reads to
|
|
84
|
+
* support, and it has to be searchable.
|
|
85
|
+
*/
|
|
86
|
+
export declare function createVendorReporter(client: ErrorVendorClient): ErrorReporter;
|
|
87
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/telemetry/errors.ts"],"names":[],"mappings":"AAoBA,+EAA+E;AAC/E,MAAM,MAAM,cAAc;AACxB,yEAAyE;AACvE,QAAQ;AACV,oDAAoD;GAClD,QAAQ;AACV,oDAAoD;GAClD,SAAS;AACX,uDAAuD;GACrD,QAAQ,CAAA;AAEZ,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB;mEAC+D;IAC/D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,6DAA6D;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B;oFACgF;IAChF,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B;0DACsD;IACtD,KAAK,EAAE,OAAO,CAAA;CACf;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAA;AAE5D,uEAAuE;AACvE,eAAO,MAAM,eAAe,cAAc,CAAA;AAI1C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI,CAGzE;AAED,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAwCD,kFAAkF;AAClF,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,GAAE,eAAoB,GAAG,cAAc,CAkD5F;AASD,kFAAkF;AAClF,wBAAgB,0BAA0B,IAAI,MAAM,IAAI,CAuBvD;AAMD;oEACoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;IAC7E;2EACuE;IACvE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;CAC9E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,aAAa,CA0B7E"}
|
package/dist/testing/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
-
export { PluginContractError, assertConnectorContract, assertPluginManifestContract } from '../chunk-
|
|
1
|
+
export { PluginContractError, assertConnectorContract, assertPluginManifestContract, bespokeConnectorTables } from '../chunk-IKZR3WSK.js';
|
|
2
|
+
import '../chunk-7GJTLBG3.js';
|
|
3
|
+
import '../chunk-ED6NBH6U.js';
|
|
4
|
+
import '../chunk-KFBEKFII.js';
|
|
2
5
|
//# sourceMappingURL=index.js.map
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
package/dist/testing.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export declare class PluginContractError extends Error {
|
|
|
9
9
|
* and id uniqueness. Throws PluginContractError on the first problem.
|
|
10
10
|
*/
|
|
11
11
|
export declare function assertPluginManifestContract(manifest: PluginManifest): void;
|
|
12
|
+
/** Table names a CREATE TABLE in this SQL would bring back. Empty = conformant. */
|
|
13
|
+
export declare function bespokeConnectorTables(sql: unknown): string[];
|
|
12
14
|
/**
|
|
13
15
|
* Assert an integration Connector descriptor is well-formed: identity present,
|
|
14
16
|
* a known auth kind, and at least one capability with a valid direction +
|
package/dist/testing.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAgB/C,qBAAa,mBAAoB,SAAQ,KAAK;gBAChC,OAAO,EAAE,MAAM;CAI5B;AAUD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAsN3E;AAiID,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAK7D;AAYD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAiBlE"}
|
|
@@ -15,6 +15,22 @@ export interface AnalyticsDimension {
|
|
|
15
15
|
/** Bucket a timestamp column instead of grouping on its raw value. */
|
|
16
16
|
grain?: AnalyticsGrain;
|
|
17
17
|
format?: AnalyticsFormat;
|
|
18
|
+
/**
|
|
19
|
+
* Render this dimension as a person, not as text: the table cell becomes the
|
|
20
|
+
* hoverable PersonLink card. `idKey` names the row column holding the UUID —
|
|
21
|
+
* declare it as a `hidden` dimension so the engine actually returns it.
|
|
22
|
+
* `kind` picks which registry the popover reads from ('shop_customer').
|
|
23
|
+
*/
|
|
24
|
+
person?: {
|
|
25
|
+
idKey: string;
|
|
26
|
+
kind?: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Grouped on and returned, never rendered as a column. What lets a card group
|
|
30
|
+
* by an id while showing the name — which is also what stops two customers
|
|
31
|
+
* with the same name from collapsing into one row.
|
|
32
|
+
*/
|
|
33
|
+
hidden?: boolean;
|
|
18
34
|
}
|
|
19
35
|
export type AnalyticsAgg = 'sum' | 'avg' | 'count' | 'count_distinct' | 'min' | 'max' | 'ratio';
|
|
20
36
|
export interface AnalyticsMeasure {
|
|
@@ -113,6 +129,12 @@ export interface AnalyticsColumnDef {
|
|
|
113
129
|
currency?: string;
|
|
114
130
|
/** For type 'person': the row key holding the person UUID. */
|
|
115
131
|
idKey?: string;
|
|
132
|
+
/**
|
|
133
|
+
* For type 'person': which person registry the popover and the profile link
|
|
134
|
+
* resolve against ('shop_customer'). Absent falls back to the core `people`
|
|
135
|
+
* archetype, where a plugin's own customer does not exist.
|
|
136
|
+
*/
|
|
137
|
+
personKind?: string;
|
|
116
138
|
renderCell?: (value: unknown, row: AnalyticsRow) => React.ReactNode;
|
|
117
139
|
/** Export-only when false. Default: true. */
|
|
118
140
|
visible?: boolean;
|
|
@@ -190,7 +212,24 @@ export interface AnalyticsResult {
|
|
|
190
212
|
summary?: AnalyticsSummary;
|
|
191
213
|
};
|
|
192
214
|
}
|
|
215
|
+
export interface AnalyticsBatchRequest {
|
|
216
|
+
card: AnalyticsCardDef;
|
|
217
|
+
state: AnalyticsQueryState;
|
|
218
|
+
}
|
|
193
219
|
export interface AnalyticsProvider {
|
|
194
220
|
run(card: AnalyticsCardDef, state: AnalyticsQueryState): Promise<AnalyticsResult>;
|
|
221
|
+
/**
|
|
222
|
+
* Answer several cards in ONE round trip, in order.
|
|
223
|
+
*
|
|
224
|
+
* Optional because it is a transport concern, not a semantic one: a provider
|
|
225
|
+
* without it still works, the surface just issues N calls. It exists because
|
|
226
|
+
* a card fetching itself is the right ownership and the wrong number of
|
|
227
|
+
* requests — an overview of twenty-two cards, most also asking for a
|
|
228
|
+
* comparison window, is forty-one POSTs that all repeat on every date change.
|
|
229
|
+
*
|
|
230
|
+
* A rejected element must be returned in place, not thrown: one bad card
|
|
231
|
+
* blanking the other twenty-one is a worse failure than the bad card.
|
|
232
|
+
*/
|
|
233
|
+
runMany?(requests: AnalyticsBatchRequest[]): Promise<Array<AnalyticsResult | Error>>;
|
|
195
234
|
}
|
|
196
235
|
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAgBlH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AAE9F;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAA;AAE5F,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAMlD,MAAM,WAAW,kBAAkB;IACjC,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,sEAAsE;IACtE,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,MAAM,CAAC,EAAE,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/types/analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/types/crud.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { EntityArchetype } from './entities';
|
|
3
|
-
export type FieldType = 'text' | 'email' | 'phone' | 'url' | 'image' | 'number' | 'currency' | 'select' | 'multiselect' | 'segmented' | 'relation' | 'date' | 'datetime' | 'time' | 'boolean' | 'textarea' | 'markdown' | 'color' | 'computed';
|
|
3
|
+
export type FieldType = 'text' | 'email' | 'phone' | 'url' | 'image' | 'number' | 'currency' | 'select' | 'multiselect' | 'segmented' | 'relation' | 'date' | 'datetime' | 'time' | 'boolean' | 'textarea' | 'markdown' | 'color' | 'computed' | 'custom';
|
|
4
4
|
/** Foreign-key source for a `relation` field: the option list is loaded from a
|
|
5
5
|
* table at runtime ({value→label}) so the stored value is a real id (e.g. a
|
|
6
6
|
* uuid), not a static string. Use for FK columns the user must pick from a
|
|
@@ -61,6 +61,20 @@ export interface FieldDef {
|
|
|
61
61
|
/** Derives a read-only value from the other form values (for `computed`
|
|
62
62
|
* fields, e.g. margin). Returns null to render an em-dash. */
|
|
63
63
|
compute?: (values: Record<string, unknown>) => ComputedFieldValue | null;
|
|
64
|
+
/** Renders the INPUT for a `custom` field. Code escape hatch; a serializable
|
|
65
|
+
* EntityDef in an AppManifest cannot carry one. */
|
|
66
|
+
renderInput?: (ctx: {
|
|
67
|
+
value: unknown;
|
|
68
|
+
onChange: (next: unknown) => void;
|
|
69
|
+
values: Record<string, unknown>;
|
|
70
|
+
}) => React.ReactNode;
|
|
71
|
+
/**
|
|
72
|
+
* Hide the field when the rest of the form says it is meaningless. Shopify
|
|
73
|
+
* hides the whole shipping section behind "Physical product" for a reason:
|
|
74
|
+
* asking the weight of an e-book is not a harmless extra input, it is an
|
|
75
|
+
* invitation to fill it in and pay freight on a download.
|
|
76
|
+
*/
|
|
77
|
+
visibleWhen?: (values: Record<string, unknown>) => boolean;
|
|
64
78
|
defaultValue?: unknown;
|
|
65
79
|
group?: string;
|
|
66
80
|
span?: 1 | 2;
|
|
@@ -105,6 +119,19 @@ export interface DetailTab {
|
|
|
105
119
|
requiresWidgetZone?: string;
|
|
106
120
|
}
|
|
107
121
|
export type FormLayout = 'person' | 'product' | 'service' | 'location' | 'order' | 'subject' | 'generic';
|
|
122
|
+
/**
|
|
123
|
+
* What an entity's READ path does when the network is unreachable.
|
|
124
|
+
*
|
|
125
|
+
* - `'online'` (default) — nothing changes; a failed read is a failed read.
|
|
126
|
+
* - `'cache'` — the last persisted response for the same query answers instead
|
|
127
|
+
* of throwing. Cheap, and only ever covers queries the user already ran.
|
|
128
|
+
* - `'replica'` — a full row snapshot is kept on the device and lists are
|
|
129
|
+
* answered from it with search/sort/paging applied locally, so a query the
|
|
130
|
+
* user never ran before still works. Costs a background sync and disk.
|
|
131
|
+
*
|
|
132
|
+
* Writes are unaffected: they still fail offline.
|
|
133
|
+
*/
|
|
134
|
+
export type OfflinePolicy = 'online' | 'cache' | 'replica';
|
|
108
135
|
/**
|
|
109
136
|
* Makes a field group's `imageSlot` functional. Without this the slot renders as
|
|
110
137
|
* a decorative placeholder — it always did, which is why product forms showed an
|
|
@@ -153,6 +180,13 @@ export interface EntityDef<T = Record<string, unknown>> {
|
|
|
153
180
|
filters?: Record<string, string>;
|
|
154
181
|
defaults?: Record<string, unknown>;
|
|
155
182
|
cacheTTL?: number;
|
|
183
|
+
/**
|
|
184
|
+
* Offline read policy for this entity. Default `'online'`.
|
|
185
|
+
* See {@link OfflinePolicy} — `'replica'` is for the handful of small,
|
|
186
|
+
* reference-shaped tables a user must be able to browse in a dead zone
|
|
187
|
+
* (services, products, clients), not for an event log.
|
|
188
|
+
*/
|
|
189
|
+
offline?: OfflinePolicy;
|
|
156
190
|
};
|
|
157
191
|
defaultSort?: string;
|
|
158
192
|
defaultSortDir?: 'asc' | 'desc';
|
package/dist/types/crud.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/types/crud.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,MAAM,MAAM,SAAS,GACjB,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAC5C,QAAQ,GAAG,UAAU,GACrB,QAAQ,GAAG,aAAa,GAAG,WAAW,GACtC,UAAU,GACV,MAAM,GAAG,UAAU,GAAG,MAAM,GAC5B,SAAS,GAAG,UAAU,GAAG,UAAU,GACnC,OAAO,GAAG,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../../src/types/crud.ts"],"names":[],"mappings":"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"}
|