@fayz-ai/admin 0.30.3 → 0.33.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.
Files changed (131) hide show
  1. package/dist/ScheduleEditor-AWG3QNDS.js +7 -0
  2. package/dist/{ScheduleEditor-YE42HL7P.js.map → ScheduleEditor-AWG3QNDS.js.map} +1 -1
  3. package/dist/SubscriptionPage-WQBBD35Q.js +9 -0
  4. package/dist/{SubscriptionPage-TVAEOFNC.js.map → SubscriptionPage-WQBBD35Q.js.map} +1 -1
  5. package/dist/app/AdminShell.d.ts +14 -0
  6. package/dist/app/AdminShell.d.ts.map +1 -1
  7. package/dist/app/admin-app.d.ts.map +1 -1
  8. package/dist/app/rail-preset.d.ts.map +1 -1
  9. package/dist/app/scaffold.d.ts.map +1 -1
  10. package/dist/app/useAppPreset.d.ts +13 -0
  11. package/dist/app/useAppPreset.d.ts.map +1 -1
  12. package/dist/billing/index.js +2 -2
  13. package/dist/{chunk-ZUM3Y7VB.js → chunk-4YF6R7T3.js} +13 -7
  14. package/dist/chunk-4YF6R7T3.js.map +1 -0
  15. package/dist/{chunk-KSUIF56I.js → chunk-IDOTNT43.js} +5 -5
  16. package/dist/chunk-IDOTNT43.js.map +1 -0
  17. package/dist/{chunk-ZOUIXHKI.js → chunk-IUCDHAAB.js} +3 -3
  18. package/dist/{chunk-ZOUIXHKI.js.map → chunk-IUCDHAAB.js.map} +1 -1
  19. package/dist/{chunk-W5IBKM3K.js → chunk-QOS6UAQ4.js} +7 -2
  20. package/dist/chunk-QOS6UAQ4.js.map +1 -0
  21. package/dist/{chunk-XDYY5PLH.js → chunk-VUWBGUIH.js} +40 -6
  22. package/dist/chunk-VUWBGUIH.js.map +1 -0
  23. package/dist/{chunk-U6LV4GIH.js → chunk-WML2RLDF.js} +5 -5
  24. package/dist/{chunk-U6LV4GIH.js.map → chunk-WML2RLDF.js.map} +1 -1
  25. package/dist/chunk-WXNTUCX3.js +270 -0
  26. package/dist/chunk-WXNTUCX3.js.map +1 -0
  27. package/dist/components/RightRail.d.ts.map +1 -1
  28. package/dist/components/auth/LoginForm.d.ts.map +1 -1
  29. package/dist/components/chat/ChatConversation.d.ts.map +1 -1
  30. package/dist/components/chat/ConfirmActionCard.d.ts.map +1 -1
  31. package/dist/components/plugins/PluginSettingsPanel.d.ts +2 -2
  32. package/dist/components/plugins/PluginSettingsPanel.d.ts.map +1 -1
  33. package/dist/components/plugins/SettingsTabs.d.ts.map +1 -1
  34. package/dist/components/settings/BrandingSettings.d.ts.map +1 -1
  35. package/dist/components/settings/LocationsCrudPage.d.ts.map +1 -1
  36. package/dist/components/settings/SettingsPage.d.ts +3 -0
  37. package/dist/components/settings/SettingsPage.d.ts.map +1 -1
  38. package/dist/components/settings/module-catalog.d.ts +12 -0
  39. package/dist/components/settings/module-catalog.d.ts.map +1 -1
  40. package/dist/crud/AddressField.d.ts +7 -0
  41. package/dist/crud/AddressField.d.ts.map +1 -0
  42. package/dist/crud/AttachedFieldSection.d.ts +32 -0
  43. package/dist/crud/AttachedFieldSection.d.ts.map +1 -0
  44. package/dist/crud/BankField.d.ts +6 -0
  45. package/dist/crud/BankField.d.ts.map +1 -0
  46. package/dist/crud/CrudCardGrid.d.ts +3 -1
  47. package/dist/crud/CrudCardGrid.d.ts.map +1 -1
  48. package/dist/crud/CrudDetailPage.d.ts +30 -1
  49. package/dist/crud/CrudDetailPage.d.ts.map +1 -1
  50. package/dist/crud/CrudFormPage.d.ts +7 -0
  51. package/dist/crud/CrudFormPage.d.ts.map +1 -1
  52. package/dist/crud/CrudListView.d.ts +13 -1
  53. package/dist/crud/CrudListView.d.ts.map +1 -1
  54. package/dist/crud/CrudPage.d.ts +3 -1
  55. package/dist/crud/CrudPage.d.ts.map +1 -1
  56. package/dist/crud/DeleteConfirmDialog.d.ts +8 -1
  57. package/dist/crud/DeleteConfirmDialog.d.ts.map +1 -1
  58. package/dist/crud/EntityOverview.d.ts.map +1 -1
  59. package/dist/crud/RelatedListTab.d.ts.map +1 -1
  60. package/dist/crud/RelatedSection.d.ts +8 -0
  61. package/dist/crud/RelatedSection.d.ts.map +1 -0
  62. package/dist/crud/SubForm.d.ts +9 -0
  63. package/dist/crud/SubForm.d.ts.map +1 -0
  64. package/dist/crud/TagsField.d.ts +13 -0
  65. package/dist/crud/TagsField.d.ts.map +1 -0
  66. package/dist/crud/archetype-lookup.d.ts +22 -0
  67. package/dist/crud/archetype-lookup.d.ts.map +1 -1
  68. package/dist/crud/archetypes/AddressesTab.d.ts +22 -2
  69. package/dist/crud/archetypes/AddressesTab.d.ts.map +1 -1
  70. package/dist/crud/archetypes/LocationFormLayout.d.ts +4 -1
  71. package/dist/crud/archetypes/LocationFormLayout.d.ts.map +1 -1
  72. package/dist/crud/archetypes/OrderDetailView.d.ts +12 -0
  73. package/dist/crud/archetypes/OrderDetailView.d.ts.map +1 -1
  74. package/dist/crud/archetypes/OrderFormView.d.ts +12 -0
  75. package/dist/crud/archetypes/OrderFormView.d.ts.map +1 -1
  76. package/dist/crud/archetypes/PayeeAccountsSection.d.ts +5 -0
  77. package/dist/crud/archetypes/PayeeAccountsSection.d.ts.map +1 -0
  78. package/dist/crud/archetypes/PersonDetailTabs.d.ts +56 -5
  79. package/dist/crud/archetypes/PersonDetailTabs.d.ts.map +1 -1
  80. package/dist/crud/archetypes/PersonFormLayout.d.ts +4 -1
  81. package/dist/crud/archetypes/PersonFormLayout.d.ts.map +1 -1
  82. package/dist/crud/archetypes/useCatalogedItemTypes.d.ts +9 -0
  83. package/dist/crud/archetypes/useCatalogedItemTypes.d.ts.map +1 -0
  84. package/dist/crud/createCrudPage.d.ts +2 -0
  85. package/dist/crud/createCrudPage.d.ts.map +1 -1
  86. package/dist/crud/fieldToColumn.d.ts +12 -0
  87. package/dist/crud/fieldToColumn.d.ts.map +1 -1
  88. package/dist/crud/navTabRegistry.d.ts +23 -0
  89. package/dist/crud/navTabRegistry.d.ts.map +1 -0
  90. package/dist/crud/relation-field.d.ts.map +1 -1
  91. package/dist/crud/tab-counts.d.ts +23 -0
  92. package/dist/crud/tab-counts.d.ts.map +1 -0
  93. package/dist/hooks/useChat.d.ts +4 -0
  94. package/dist/hooks/useChat.d.ts.map +1 -1
  95. package/dist/hooks/useNotifications.d.ts.map +1 -1
  96. package/dist/index.d.ts +10 -6
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +3234 -2025
  99. package/dist/index.js.map +1 -1
  100. package/dist/lib/agent-staff.d.ts +20 -1
  101. package/dist/lib/agent-staff.d.ts.map +1 -1
  102. package/dist/lib/fayz-agent.d.ts +16 -0
  103. package/dist/lib/fayz-agent.d.ts.map +1 -1
  104. package/dist/org/adapters/supabase.d.ts +12 -1
  105. package/dist/org/adapters/supabase.d.ts.map +1 -1
  106. package/dist/org/context.d.ts.map +1 -1
  107. package/dist/org/index.js +3 -3
  108. package/dist/org/store.d.ts +16 -0
  109. package/dist/org/store.d.ts.map +1 -1
  110. package/dist/theme/light.d.ts.map +1 -1
  111. package/dist/theme/utils.d.ts.map +1 -1
  112. package/dist/timeline/PersonTimeline.d.ts.map +1 -1
  113. package/dist/timeline/TimelineList.d.ts +32 -0
  114. package/dist/timeline/TimelineList.d.ts.map +1 -0
  115. package/dist/timeline/index.d.ts +2 -1
  116. package/dist/timeline/index.d.ts.map +1 -1
  117. package/dist/timeline-LECYQ4IA.js +3 -0
  118. package/dist/timeline-LECYQ4IA.js.map +1 -0
  119. package/dist/types/crud.d.ts +13 -2
  120. package/dist/types/crud.d.ts.map +1 -1
  121. package/dist/units/index.d.ts +2 -0
  122. package/dist/units/index.d.ts.map +1 -1
  123. package/dist/units/useUnitFilter.d.ts +46 -0
  124. package/dist/units/useUnitFilter.d.ts.map +1 -0
  125. package/package.json +6 -6
  126. package/dist/ScheduleEditor-YE42HL7P.js +0 -7
  127. package/dist/SubscriptionPage-TVAEOFNC.js +0 -9
  128. package/dist/chunk-KSUIF56I.js.map +0 -1
  129. package/dist/chunk-W5IBKM3K.js.map +0 -1
  130. package/dist/chunk-XDYY5PLH.js.map +0 -1
  131. package/dist/chunk-ZUM3Y7VB.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/timeline/registry.ts","../src/timeline/usePersonTimeline.ts","../src/timeline/TimelineList.tsx","../src/timeline/PersonTimeline.tsx"],"names":["sources","useState","jsx","jsxs","Card","CardContent"],"mappings":"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","file":"chunk-WXNTUCX3.js","sourcesContent":["import type { TimelineSource } from './types'\n\n/**\n * Quem contribui para a linha do tempo de uma pessoa.\n *\n * Registro de módulo, e não contexto de React: os plugins registram no momento\n * em que a fábrica deles roda (`createScribePlugin(...)` dentro do\n * `defineSaas`), que é antes de qualquer árvore montar. Um contexto obrigaria\n * cada app a lembrar de embrulhar a aba num provider — e \"funciona se você\n * lembrou\" é o oposto do que este registro existe para dar.\n */\nconst sources = new Map<string, TimelineSource>()\n\nexport function registerTimelineSource(source: TimelineSource): void {\n // Idempotente: em dev o módulo do plugin recarrega com o HMR, e uma segunda\n // fonte com o mesmo id duplicaria cada evento na tela.\n sources.set(source.id, source)\n}\n\nexport function unregisterTimelineSource(id: string): void {\n sources.delete(id)\n}\n\nexport function getTimelineSources(): TimelineSource[] {\n return Array.from(sources.values())\n}\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { getActiveTenantId } from '@fayz-ai/core'\nimport { getTimelineSources } from './registry'\nimport type { TimelineItem, TimelineSource } from './types'\n\nconst DEFAULT_PAGE_SIZE = 20\n\nfunction newestFirst(a: TimelineItem, b: TimelineItem): number {\n return new Date(b.occurredAt).getTime() - new Date(a.occurredAt).getTime()\n}\n\nexport interface UsePersonTimelineResult {\n items: TimelineItem[]\n sources: TimelineSource[]\n loading: boolean\n loadingMore: boolean\n hasMore: boolean\n loadMore: () => void\n reload: () => void\n}\n\n/**\n * Intercala as fontes registradas numa lista só, em ordem.\n *\n * O ponto todo é a paginação. A versão ingênua pede N de cada fonte e corta o\n * resultado — e aí a fonte volumosa esconde a outra: com 30 agendamentos e um\n * pagamento de hoje, o pagamento não aparece, porque o corte veio depois de os\n * agendamentos já terem enchido a lista. Aqui cada página pergunta a TODAS as\n * fontes \"o que você tem antes deste instante\", junta, ordena e corta; a\n * próxima página repete a pergunta a partir da data do último item mostrado.\n * Assim nenhuma fonte esconde a outra, por mais desbalanceadas que sejam.\n */\nexport function usePersonTimeline({\n personId,\n pageSize = DEFAULT_PAGE_SIZE,\n activeSourceIds,\n}: {\n personId: string\n pageSize?: number\n /** Filtro por tipo. Ausente = todas. */\n activeSourceIds?: string[]\n}): UsePersonTimelineResult {\n const allSources = useMemo(() => getTimelineSources(), [])\n const sources = useMemo(\n () => (activeSourceIds ? allSources.filter((s) => activeSourceIds.includes(s.id)) : allSources),\n [allSources, activeSourceIds],\n )\n\n const [items, setItems] = useState<TimelineItem[]>([])\n const [loading, setLoading] = useState(true)\n const [loadingMore, setLoadingMore] = useState(false)\n const [hasMore, setHasMore] = useState(false)\n\n // Cortar por data faz o mesmo evento poder voltar na página seguinte (dois\n // eventos no mesmo instante, relógios diferentes). O id é o que decide.\n const seen = useRef<Set<string>>(new Set())\n // Muda a cada recarga: uma resposta de uma busca abandonada não pode\n // sobrescrever a lista da busca atual.\n const runId = useRef(0)\n\n const tenantId = getActiveTenantId() ?? ''\n\n const fetchPage = useCallback(\n async (before: string | undefined, run: number): Promise<{ page: TimelineItem[]; more: boolean }> => {\n // `limit + 1` para saber se ainda tem, sem uma segunda ida ao banco.\n const wanted = pageSize + 1\n const results = await Promise.all(\n sources.map((source) =>\n source\n .fetch({ personId, tenantId, before, limit: wanted })\n // Uma fonte que falha vira lista vazia: a linha do tempo inteira não\n // pode sumir porque um plugin quebrou.\n .catch((err) => {\n console.warn(`[timeline] source \"${source.id}\" failed`, err)\n return [] as TimelineItem[]\n }),\n ),\n )\n\n if (run !== runId.current) return { page: [], more: false }\n\n const merged = results\n .flat()\n .filter((item) => item.occurredAt && !seen.current.has(item.id))\n .sort(newestFirst)\n\n const page = merged.slice(0, pageSize)\n for (const item of page) seen.current.add(item.id)\n\n // Ainda tem se sobrou no bolo já lido, OU se alguma fonte devolveu o\n // limite cheio (sinal de que ela tem mais atrás).\n const more = merged.length > page.length || results.some((r) => r.length >= wanted)\n return { page, more }\n },\n [sources, personId, tenantId, pageSize],\n )\n\n const reload = useCallback(() => {\n const run = ++runId.current\n seen.current = new Set()\n setLoading(true)\n void fetchPage(undefined, run).then(({ page, more }) => {\n if (run !== runId.current) return\n setItems(page)\n setHasMore(more)\n setLoading(false)\n })\n }, [fetchPage])\n\n useEffect(() => {\n if (!personId || !tenantId || sources.length === 0) {\n setItems([])\n setHasMore(false)\n setLoading(false)\n return\n }\n reload()\n }, [personId, tenantId, sources, reload])\n\n const loadMore = useCallback(() => {\n const last = items[items.length - 1]\n if (!last || loadingMore) return\n const run = runId.current\n setLoadingMore(true)\n void fetchPage(last.occurredAt, run).then(({ page, more }) => {\n if (run !== runId.current) return\n setItems((prev) => [...prev, ...page])\n setHasMore(more && page.length > 0)\n setLoadingMore(false)\n })\n }, [items, loadingMore, fetchPage])\n\n return { items, sources: allSources, loading, loadingMore, hasMore, loadMore, reload }\n}\n","import React from 'react'\nimport * as LucideIcons from 'lucide-react'\nimport type { LucideIcon } from 'lucide-react'\nimport { ChevronRight } from 'lucide-react'\nimport { Badge, Card, CardContent } from '@fayz-ai/ui'\nimport type { TimelineItem, TimelineTone } from './types'\n\n// ---------------------------------------------------------------------------\n// O DESENHO da linha do tempo, sem de onde os itens vieram.\n//\n// Separado da `PersonTimeline` porque o desenho passou a ter DOIS consumidores:\n// a aba Atividade (que intercala sete fontes) e a aba Registros (que lista as\n// respostas de formulário da própria pessoa). Uma ficha clínica que mostrasse\n// duas listas com formas diferentes para a mesma pergunta — \"o que aconteceu,\n// em ordem\" — obrigaria a reaprender a leitura ao trocar de aba.\n//\n// Aqui não há consulta, paginação nem filtro: quem monta a lista é quem sabe de\n// onde ela vem.\n// ---------------------------------------------------------------------------\n\n// Tom → tokens do tema. Um lugar só: é isto que faz uma fonte nova herdar\n// claro/escuro e a paleta do app sem escrever uma cor.\nconst TONE_CLASSES: Record<TimelineTone, string> = {\n neutral: 'bg-muted text-muted-foreground',\n info: 'bg-info-soft text-info-soft-foreground',\n success: 'bg-success-soft text-success-soft-foreground',\n warning: 'bg-warning-soft text-warning-soft-foreground',\n magic: 'bg-magic-soft text-magic-soft-foreground',\n primary: 'bg-primary/10 text-primary',\n rose: 'bg-destructive-soft text-destructive-soft-foreground',\n}\n\nfunction resolveIcon(name?: string): LucideIcon {\n const icons = LucideIcons as unknown as Record<string, LucideIcon | undefined>\n const icon = name ? icons[name] : undefined\n return (typeof icon === 'function' || typeof icon === 'object' ? icon : undefined) ?? LucideIcons.CircleDashed\n}\n\nfunction formatWhen(value: string): string {\n try {\n return new Intl.DateTimeFormat(undefined, {\n day: '2-digit',\n month: 'short',\n year: 'numeric',\n hour: '2-digit',\n minute: '2-digit',\n }).format(new Date(value))\n } catch {\n return value\n }\n}\n\n/**\n * O trilho + a bolha, numa coluna fixa à esquerda. Mesma grade no esqueleto e\n * no item real, para a chegada do conteúdo ser troca de cinza por texto e não a\n * lista mudando de forma.\n *\n * Flex com largura fixa, e não `grid-cols-[…]`: uma utility arbitrária que só\n * existe neste arquivo não chega a ser gerada no CSS do app, e o sintoma não é\n * erro nenhum — é a linha do tempo empilhada, bolha centrada e cartão embaixo.\n * O trilho vira segmento de flex pela mesma razão: nada de posição absoluta\n * dependendo de uma coluna que pode não existir.\n */\nfunction Rail({ first, last, children }: { first: boolean; last: boolean; children: React.ReactNode }) {\n return (\n <div className=\"flex w-11 shrink-0 flex-col items-center\">\n {/* Invisível no primeiro: o espaço continua, para todas as bolhas\n começarem na mesma altura do cartão ao lado. */}\n <span className={`h-4 w-px ${first ? '' : 'bg-border'}`} aria-hidden />\n <div className=\"flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background shadow-sm\">\n {children}\n </div>\n {!last && <span className=\"w-px flex-1 bg-border\" aria-hidden />}\n </div>\n )\n}\n\nfunction TimelineSkeleton() {\n return (\n <ol className=\"space-y-0\" aria-hidden>\n {[0, 1, 2].map((row, index) => (\n <li key={row} className=\"flex gap-4\">\n <Rail first={index === 0} last={index === 2}>\n <div className=\"h-7 w-7 animate-pulse rounded-full bg-muted\" />\n </Rail>\n <Card className={`min-w-0 flex-1 ${index === 2 ? 'mb-0' : 'mb-4'}`}>\n <CardContent className=\"p-4\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"min-w-0 flex-1 space-y-2\">\n <div className=\"h-5 w-20 animate-pulse rounded-full bg-muted\" />\n {/* Larguras diferentes por linha: três barras idênticas leem\n como padrão gráfico, não como texto carregando. */}\n <div className={`h-4 animate-pulse rounded bg-muted ${index === 1 ? 'w-1/2' : 'w-2/3'}`} />\n </div>\n <div className=\"h-3 w-24 shrink-0 animate-pulse rounded bg-muted\" />\n </div>\n </CardContent>\n </Card>\n </li>\n ))}\n </ol>\n )\n}\n\nfunction TimelineRow({\n item,\n tone,\n href,\n onSelect,\n actions,\n preview,\n first,\n last,\n}: {\n item: TimelineItem\n tone: TimelineTone\n href?: string\n onSelect?: (item: TimelineItem) => void\n actions?: React.ReactNode\n /** O conteúdo do registro, aberto DENTRO do cartão. Ver `renderPreview`. */\n preview?: React.ReactNode\n first: boolean\n last: boolean\n}) {\n const clickable = Boolean(href) || Boolean(onSelect)\n const Icon = resolveIcon(item.icon)\n const card = (\n <Card\n className={`group ${last ? 'mb-0' : 'mb-4'} ${\n // O cursor e a sombra só existem quando há para onde ir: é o que\n // distingue, ANTES do clique, o que é atalho do que é só registro.\n clickable ? 'cursor-pointer transition-shadow hover:shadow-md' : ''\n }`}\n {...(!href && onSelect ? { onClick: () => onSelect(item) } : {})}\n >\n <div className=\"flex items-stretch\">\n <CardContent className=\"min-w-0 flex-1 p-4\">\n <div className=\"flex min-w-0 flex-col gap-3 sm:flex-row sm:items-start sm:justify-between\">\n <div className=\"min-w-0\">\n {item.badge && <Badge variant=\"secondary\">{item.badge}</Badge>}\n <h3 className={`truncate text-sm font-semibold text-foreground ${item.badge ? 'mt-2' : ''}`}>\n {item.title}\n </h3>\n </div>\n <div className=\"flex shrink-0 items-center gap-1\">\n <time className=\"text-xs font-medium text-muted-foreground\">{formatWhen(item.occurredAt)}</time>\n {/* Os verbos da linha aparecem no hover, como no resto do SDK: uma\n fileira de ícones sempre visível transforma a lista num painel\n de botões e rouba a leitura do que aconteceu. */}\n {actions && (\n <div className=\"flex gap-0.5 opacity-0 transition-opacity group-hover:opacity-100 focus-within:opacity-100\">\n {actions}\n </div>\n )}\n </div>\n </div>\n {item.description && (\n <p className=\"mt-2 whitespace-pre-wrap text-sm leading-6 text-muted-foreground\">{item.description}</p>\n )}\n {/* O conteúdo, aberto no lugar. Separado por uma régua porque sem ela\n o corpo do formulário encosta no título e os dois viram um bloco\n só de texto. */}\n {preview && (\n <div\n className=\"mt-3 border-t border-border pt-3\"\n // O cartão inteiro é clicável; o conteúdo dentro dele não pode\n // abrir a tela cheia ao encostar numa palavra — nem impedir que se\n // selecione um trecho para copiar.\n onClick={(e) => e.stopPropagation()}\n >\n {preview}\n </div>\n )}\n </CardContent>\n\n {/* A SETA que promete o clique.\n Estava em cima, na fileira de ações, como mais um ícone entre outros —\n e um botão \"abrir\" ao lado de um \"ocultar\" faz o leitor escolher entre\n dois verbos quando o gesto natural é clicar no cartão. À direita e no\n meio da altura, ela diz o que o cartão inteiro faz, em vez de\n concorrer com ele. O espaço fica reservado sempre: aparecer no hover\n empurrando o texto seria pior do que não aparecer. */}\n {clickable && (\n <div className=\"flex shrink-0 items-center pr-4 opacity-0 transition-opacity group-hover:opacity-100\">\n <ChevronRight className=\"h-6 w-6 text-muted-foreground\" aria-hidden />\n </div>\n )}\n </div>\n </Card>\n )\n\n return (\n <li className=\"flex gap-4\">\n <Rail first={first} last={last}>\n <div className={`flex h-7 w-7 items-center justify-center rounded-full ${TONE_CLASSES[tone]}`}>\n <Icon className=\"h-4 w-4\" />\n </div>\n </Rail>\n <div className=\"min-w-0 flex-1\">\n {/* `<a>` de verdade, e não um onClick: o clique do meio abre em outra\n aba, o hover mostra o destino na barra de status, e o teclado alcança\n sem nada além do HTML. */}\n {href ? <a href={href} className=\"block no-underline\">{card}</a> : card}\n </div>\n </li>\n )\n}\n\n\n/**\n * A lista: trilho, bolha e cartão, do jeito que a ficha inteira mostra\n * histórico.\n *\n * `renderActions` é a única costura que a aba Registros precisou: ver e\n * arquivar um documento são verbos DAQUELA aba, e a Atividade — que é leitura —\n * não tem nenhum.\n */\nexport function TimelineList({\n items,\n toneFor,\n hrefFor,\n onSelect,\n renderActions,\n renderPreview,\n expandedIds,\n}: {\n items: TimelineItem[]\n /** Tom da bolha quando o item não declara o seu. */\n toneFor?: (item: TimelineItem) => TimelineTone\n hrefFor?: (item: TimelineItem) => string | undefined\n /** Clique no cartão quando ele não é um link — o caso da aba Registros, que\n * abre o documento na própria aba em vez de navegar. */\n onSelect?: (item: TimelineItem) => void\n renderActions?: (item: TimelineItem) => React.ReactNode\n /**\n * O conteúdo do item, aberto dentro do cartão — para ler sem clicar.\n *\n * Só é chamado para o que `expandedIds` mandar abrir: montar o corpo de cem\n * formulários para esconder noventa e nove custa a rolagem inteira.\n */\n renderPreview?: (item: TimelineItem) => React.ReactNode\n /** Quais itens estão abertos. Ausente = nenhum. */\n expandedIds?: ReadonlySet<string>\n}) {\n return (\n <ol className=\"space-y-0\">\n {items.map((item, index) => (\n <TimelineRow\n key={item.id}\n item={item}\n // Item ganha do padrão: um evento que foge da regra da fonte dele\n // (uma exclusão dentro de \"Cadastro\") pode dizer o seu.\n tone={item.tone ?? toneFor?.(item) ?? 'neutral'}\n href={hrefFor?.(item)}\n onSelect={onSelect}\n actions={renderActions?.(item)}\n preview={expandedIds?.has(item.id) ? renderPreview?.(item) : undefined}\n first={index === 0}\n last={index === items.length - 1}\n />\n ))}\n </ol>\n )\n}\n\nexport { TimelineSkeleton }\n","import React, { useState } from 'react'\nimport { Button, Card, CardContent } from '@fayz-ai/ui'\nimport { usePersonTimeline } from './usePersonTimeline'\nimport { TimelineList, TimelineSkeleton } from './TimelineList'\nimport type { TimelineItem } from './types'\n\n/**\n * A linha do tempo de uma pessoa, montada a partir das fontes registradas.\n *\n * Genérico de propósito, em `packages/admin` e não no app: \"o que aconteceu com\n * esta pessoa\" não é específico de salão — a mesma tela serve aluno, paciente e\n * cliente. O app só monta.\n */\nexport function PersonTimeline({\n personId,\n pageSize,\n recordPath,\n}: {\n personId: string\n pageSize?: number\n /**\n * A rota da ficha desta pessoa (`/clients/8e48…`), que é o app quem sabe.\n *\n * Com ela, cada item vira atalho para a aba onde o evento mora — clicar num\n * pagamento abre o Extrato, clicar numa gravação abre Gravações. Sem ela a\n * linha do tempo funciona igual, só não navega: é degradação, não erro.\n */\n recordPath?: string\n}) {\n const [activeSourceIds, setActiveSourceIds] = useState<string[] | undefined>(undefined)\n const { items, sources, loading, loadingMore, hasMore, loadMore } = usePersonTimeline({\n personId,\n pageSize,\n activeSourceIds,\n })\n\n const toneBySource = React.useMemo(\n () => new Map(sources.map((s) => [s.id, s.tone ?? 'neutral'] as const)),\n [sources],\n )\n\n const hrefFor = React.useCallback(\n (item: TimelineItem): string | undefined => {\n if (item.href) return item.href\n if (!recordPath || !item.targetTab) return undefined\n // Mesma forma de rota que o CrudDetailPage usa ao trocar de aba, para o\n // link cair exatamente onde a aba clicada à mão cairia.\n return `#${recordPath}/${item.targetTab}`\n },\n [recordPath],\n )\n\n // Com seis fontes numa base antiga, a lista única fica ilegível. As pastilhas\n // são de seleção ÚNICA (Tudo, ou um tipo): multi-seleção pareceria mais\n // poderosa e na prática vira um estado que ninguém consegue ler de relance.\n const filters = sources.length > 1 && (\n <div className=\"flex flex-wrap gap-1.5\">\n {[{ id: undefined, label: 'Tudo' }, ...sources.map((s) => ({ id: s.id as string | undefined, label: s.label }))].map(\n (chip) => {\n const active = chip.id\n ? activeSourceIds?.length === 1 && activeSourceIds[0] === chip.id\n : !activeSourceIds\n return (\n <button\n key={chip.id ?? '__all__'}\n type=\"button\"\n onClick={() => setActiveSourceIds(chip.id ? [chip.id] : undefined)}\n className={`rounded-full border px-2.5 py-1 text-xs transition-colors ${\n active\n ? 'border-primary bg-primary/10 text-primary'\n : 'border-border text-muted-foreground hover:bg-muted hover:text-foreground'\n }`}\n >\n {chip.label}\n </button>\n )\n },\n )}\n </div>\n )\n\n return (\n <div className=\"space-y-4\">\n {filters}\n\n {loading ? (\n <TimelineSkeleton />\n ) : items.length === 0 ? (\n <Card>\n <CardContent className=\"flex min-h-40 items-center justify-center p-6 text-sm text-muted-foreground\">\n {activeSourceIds\n ? 'Nada deste tipo no histórico desta pessoa.'\n : 'Ainda não há histórico para esta pessoa.'}\n </CardContent>\n </Card>\n ) : (\n <>\n <TimelineList\n items={items}\n // Item ganha da fonte: um evento que foge da regra dela (uma\n // exclusão dentro de \"Cadastro\") pode dizer o seu — o próprio\n // TimelineList resolve essa precedência.\n toneFor={(item) => toneBySource.get(item.sourceId) ?? 'neutral'}\n hrefFor={hrefFor}\n />\n {hasMore && (\n <div className=\"flex justify-center\">\n <Button variant=\"outline\" size=\"sm\" disabled={loadingMore} onClick={loadMore}>\n {loadingMore ? 'Carregando…' : 'Carregar mais'}\n </Button>\n </div>\n )}\n </>\n )}\n </div>\n )\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"RightRail.d.ts","sourceRoot":"","sources":["../../src/components/RightRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsB9B;;;;;;;;;oBASoB;AACpB,wBAAgB,SAAS,CAAC,EAAE,KAAY,EAAE,QAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,4BAgVnG"}
1
+ {"version":3,"file":"RightRail.d.ts","sourceRoot":"","sources":["../../src/components/RightRail.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsB9B;;;;;;;;;oBASoB;AACpB,wBAAgB,SAAS,CAAC,EAAE,KAAY,EAAE,QAAe,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,4BAqVnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoginForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/LoginForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,gBAAgB,EAChB,SAAiB,EACjB,cAAqC,EACrC,eAAe,EACf,SAAS,GACV,EAAE,cAAc,qBA4GhB"}
1
+ {"version":3,"file":"LoginForm.d.ts","sourceRoot":"","sources":["../../../src/components/auth/LoginForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAMvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,UAAU,cAAc;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IACjD,+CAA+C;IAC/C,eAAe,CAAC,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,CAAA;IAClD,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,SAAS,CAAC,EACxB,SAAS,EACT,gBAAgB,EAChB,SAAiB,EACjB,cAAqC,EACrC,eAAe,EACf,SAAS,GACV,EAAE,cAAc,qBA2HhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatConversation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsC9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAsBvD;;gCAEgC;AAChC,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,qBAwhBvB"}
1
+ {"version":3,"file":"ChatConversation.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ChatConversation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAsC9B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAsBvD;;gCAEgC;AAChC,MAAM,WAAW,qBAAqB;IACpC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAA;IACzC,KAAK,CAAC,EAAE,eAAe,CAAA;IACvB,gFAAgF;IAChF,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAID,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,YAAY,EACZ,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,qBAAqB,qBAkiBvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmActionCard.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ConfirmActionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EAAE,kBAAkB,EAAsB,MAAM,yBAAyB,CAAA;AAErF;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,EACT,cAAkB,EAClB,YAAY,GACb,EAAE;IACD,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACxE,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,qBAuSA;AAyGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBjE"}
1
+ {"version":3,"file":"ConfirmActionCard.d.ts","sourceRoot":"","sources":["../../../src/components/chat/ConfirmActionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAQ9B,OAAO,KAAK,EAAE,kBAAkB,EAAsB,MAAM,yBAAyB,CAAA;AAErF;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,MAAM,EACN,SAAS,EACT,cAAkB,EAClB,YAAY,GACb,EAAE;IACD,MAAM,EAAE,kBAAkB,CAAA;IAC1B,SAAS,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACxE,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,wDAAwD;IACxD,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAA;CAC3C,qBA8TA;AAyGD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBjE"}
@@ -12,7 +12,7 @@ export declare function RegistryCrudView({ registry, basePath, embedded }: {
12
12
  /**
13
13
  * Este cadastro é UMA SEÇÃO de outra tela, não a tela.
14
14
  *
15
- * Em Propriedades ele É a tela — as pastilhas escolhem QUAL cadastro, e só um
15
+ * Na aba dele o cadastro É a tela — a tira de cima escolhe QUAL, e só um
16
16
  * aparece por vez —, então as ações sobem para a barra como em qualquer
17
17
  * lista. Já um cadastro montado no meio de uma aba, ao lado de outros blocos
18
18
  * (Embalagens dentro de Entrega), não pode reivindicar a barra: ela nomeia a
@@ -29,7 +29,7 @@ export declare function PluginSettingsPanel({ title, generalSettings, registries
29
29
  title: string;
30
30
  /** General preferences component */
31
31
  generalSettings?: React.ReactNode;
32
- /** CRUD registries — grouped under a "Properties" tab */
32
+ /** CRUD registries — cada um vira uma aba própria da tira. */
33
33
  registries?: PluginRegistryDef[];
34
34
  /** Additional custom tabs (e.g., Pipeline config for CRM) */
35
35
  customTabs?: SettingsPanelTab[];
@@ -1 +1 @@
1
- {"version":3,"file":"PluginSettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/plugins/PluginSettingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAMhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAY5D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AASD,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IACjE,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,qBAIA;AAyGD,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IAC/G;;;;+BAI2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACjC,yDAAyD;IACzD,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC/B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,qBA6GA"}
1
+ {"version":3,"file":"PluginSettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/components/plugins/PluginSettingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAMhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAY5D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;CACzB;AASD,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE;IACjE,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,qBAIA;AAkCD,wBAAgB,mBAAmB,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IAC/G;;;;+BAI2B;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,eAAe,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACjC,8DAA8D;IAC9D,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAChC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC/B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAA;IACjB,qGAAqG;IACrG,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,qBAqKA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsTabs.d.ts","sourceRoot":"","sources":["../../../src/components/plugins/SettingsTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;4CACwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE;IACnF,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,qBAmBA"}
1
+ {"version":3,"file":"SettingsTabs.d.ts","sourceRoot":"","sources":["../../../src/components/plugins/SettingsTabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,oBAAoB;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;4CACwC;IACxC,QAAQ,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACvD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,EAAE;IACnF,IAAI,EAAE,aAAa,CAAC,cAAc,CAAC,CAAA;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,8CAA8C;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,qBAsBA"}
@@ -1 +1 @@
1
- {"version":3,"file":"BrandingSettings.d.ts","sourceRoot":"","sources":["../../../src/components/settings/BrandingSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAiBpF,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B;yDACqD;IACrD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;QAC9C,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;QACtB,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAC1B,KAAK,IAAI,CAAA;CACX;AA2VD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,qBAAqB,qBA+PxE"}
1
+ {"version":3,"file":"BrandingSettings.d.ts","sourceRoot":"","sources":["../../../src/components/settings/BrandingSettings.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAO9B,OAAO,EAAoC,KAAK,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAmBpF,UAAU,qBAAqB;IAC7B,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B;yDACqD;IACrD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;QAC9C,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;QACtB,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAA;KAC1B,KAAK,IAAI,CAAA;CACX;AAiXD,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,qBAAqB,qBA2QxE"}
@@ -1 +1 @@
1
- {"version":3,"file":"LocationsCrudPage.d.ts","sourceRoot":"","sources":["../../../src/components/settings/LocationsCrudPage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAE9C,eAAO,MAAM,iBAAiB,EAAE,SAkE/B,CAAA;AAED,eAAO,MAAM,iBAAiB;;CAAoC,CAEjE"}
1
+ {"version":3,"file":"LocationsCrudPage.d.ts","sourceRoot":"","sources":["../../../src/components/settings/LocationsCrudPage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAG9C,eAAO,MAAM,iBAAiB,EAAE,SA6E/B,CAAA;AAED,eAAO,MAAM,iBAAiB;;CAAoC,CAEjE"}
@@ -11,6 +11,9 @@ export interface SettingsTab {
11
11
  isPlugin?: boolean;
12
12
  /** Heading within the plugins run, from `PluginSettingsTab.group`. */
13
13
  group?: string;
14
+ /** De que plugin veio a aba. Usado para perguntar ao catálogo de módulos que
15
+ * ofício a oferece, e daí a rubrica sob a qual ela é filada. */
16
+ pluginId?: string;
14
17
  }
15
18
  /** The core (non-plugin, non-org) settings tabs. Exported so the shell can
16
19
  * build the same list for the contextual /settings sidebar. */
@@ -1 +1 @@
1
- {"version":3,"file":"SettingsPage.d.ts","sourceRoot":"","sources":["../../../src/components/settings/SettingsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB;wEACoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;gEACgE;AAChE,wBAAgB,mBAAmB,CAAC,EAClC,WAAkB,EAClB,YAAmB,GACpB,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,WAAW,EAAE,CAkBxE;AAED,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B;;+BAE2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;yCACqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;+EAE2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;gFAK4E;IAC5E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;kDAG8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;4EACwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,SAAS,EACT,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAkB,EAClB,YAAmB,EACnB,OAAe,EACf,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,iBAAiB,qBAmOnB"}
1
+ {"version":3,"file":"SettingsPage.d.ts","sourceRoot":"","sources":["../../../src/components/settings/SettingsPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB;wEACoE;IACpE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;qEACiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;gEACgE;AAChE,wBAAgB,mBAAmB,CAAC,EAClC,WAAkB,EAClB,YAAmB,GACpB,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,WAAW,EAAE,CAkBxE;AAED,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,WAAW,EAAE,CAAA;IACpB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAA;IACzB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC9B;;+BAE2B;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;yCACqC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB;;+EAE2E;IAC3E,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;;;gFAK4E;IAC5E,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;;;kDAG8C;IAC9C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;4EACwE;IACxE,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,SAAS,EACT,UAAU,EACV,SAAS,EACT,aAAa,EACb,YAAY,EACZ,WAAkB,EAClB,YAAmB,EACnB,OAAe,EACf,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,iBAAiB,qBAkQnB"}
@@ -46,6 +46,18 @@ export declare function verticalLabel(verticalId: string): string;
46
46
  * Dois ofícios no mínimo, para que a rubrica signifique alguma coisa: num pool
47
47
  * com um ofício só, "todos os negócios" e o ofício seriam a mesma lista.
48
48
  */
49
+ /**
50
+ * De que ofício é cada módulo, UMA resposta por módulo.
51
+ *
52
+ * O mesmo corte de `buildCategories` — maioria estrita dos ofícios quer dizer
53
+ * "de todos", e aí a resposta é `null` —, com uma diferença: lá um módulo
54
+ * oferecido por dois ofícios aparece nas duas rubricas, porque a tela é um
55
+ * catálogo e repetir INFORMA. Aqui é um cabeçalho de lista, e uma linha não
56
+ * pode estar em duas: ganha o ofício da própria conta quando ele está entre os
57
+ * que oferecem, senão o primeiro em ordem alfabética — estável entre sessões,
58
+ * que é o que um menu precisa ser.
59
+ */
60
+ export declare function pluginVerticalIndex(catalog: CatalogApp[]): Map<string, string | null>;
49
61
  export declare function buildCategories(catalog: CatalogApp[], rows: ModuleRow[]): ModuleCategory[];
50
62
  /**
51
63
  * Lê `app_catalog()` uma vez por conta.
@@ -1 +1 @@
1
- {"version":3,"file":"module-catalog.d.ts","sourceRoot":"","sources":["../../../src/components/settings/module-catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAA;CACd;AAmBD,8EAA8E;AAC9E,eAAO,MAAM,aAAa,QAAQ,CAAA;AAElC,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,SAAS,EAAE,CAAA;CAClB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAiD1F;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,EAAE,CAkB/C"}
1
+ {"version":3,"file":"module-catalog.d.ts","sourceRoot":"","sources":["../../../src/components/settings/module-catalog.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,8EAA8E;IAC9E,IAAI,EAAE,OAAO,CAAA;CACd;AAmBD,8EAA8E;AAC9E,eAAO,MAAM,aAAa,QAAQ,CAAA;AAElC,MAAM,WAAW,cAAc;IAC7B,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,0EAA0E;IAC1E,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,SAAS,EAAE,CAAA;CAClB;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAyBrF;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAiD1F;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,EAAE,CAkB/C"}
@@ -0,0 +1,7 @@
1
+ import type { AddressValue } from '@fayz-ai/core';
2
+ export declare function AddressField({ value, onChange, invalid, }: {
3
+ value: AddressValue | undefined;
4
+ onChange: (next: AddressValue) => void;
5
+ invalid?: boolean;
6
+ }): import("react").JSX.Element;
7
+ //# sourceMappingURL=AddressField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddressField.d.ts","sourceRoot":"","sources":["../../src/crud/AddressField.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAoBjD,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE;IACD,KAAK,EAAE,YAAY,GAAG,SAAS,CAAA;IAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,+BAmGA"}
@@ -0,0 +1,32 @@
1
+ import type { LucideIcon } from 'lucide-react';
2
+ export interface AttachedSectionChrome {
3
+ title?: string;
4
+ description?: string;
5
+ }
6
+ export declare const AttachedSectionProvider: import("react").Provider<AttachedSectionChrome>;
7
+ /** O campo é uma linha anexa, e por isso desenha a própria seção. */
8
+ export declare function isAttachedFieldType(type: string): boolean;
9
+ export declare function AttachedFieldSection({ present, addLabel, emptyLabel, emptyHint, emptyIcon: EmptyIcon, onAdd, children, }: {
10
+ /**
11
+ * O campo TEM um valor — nem que seja um objeto em branco.
12
+ *
13
+ * O «aberto» mora aqui, e não num `useState` local, porque a árvore deste
14
+ * formulário remonta: na ficha de edição a aba Endereços carrega depois e
15
+ * leva os irmãos junto, e a seção que o operador acabou de abrir fechava
16
+ * sozinha, apagando o que ele tinha digitado. O valor do formulário não
17
+ * remonta — então é ele quem lembra.
18
+ */
19
+ present: boolean;
20
+ /** «Adicionar endereço», «Adicionar conta bancária». */
21
+ addLabel: string;
22
+ /** O título do vazio: «Nenhum endereço cadastrado». */
23
+ emptyLabel: string;
24
+ /** A linha embaixo dele, que diz para que serve preencher. */
25
+ emptyHint?: string;
26
+ /** O ícone do vazio — o mesmo que a seção da ficha usa. */
27
+ emptyIcon?: LucideIcon;
28
+ /** Cria a linha em branco — é o clique no «+». */
29
+ onAdd: () => void;
30
+ children: React.ReactNode;
31
+ }): import("react").JSX.Element;
32
+ //# sourceMappingURL=AttachedFieldSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AttachedFieldSection.d.ts","sourceRoot":"","sources":["../../src/crud/AttachedFieldSection.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAsB9C,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAID,eAAO,MAAM,uBAAuB,iDAAyB,CAAA;AAE7D,qEAAqE;AACrE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,QAAQ,EACR,UAAU,EACV,SAAS,EACT,SAAS,EAAE,SAAS,EACpB,KAAK,EACL,QAAQ,GACT,EAAE;IACD;;;;;;;;OAQG;IACH,OAAO,EAAE,OAAO,CAAA;IAChB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAA;IAChB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,kDAAkD;IAClD,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,+BA8CA"}
@@ -0,0 +1,6 @@
1
+ import type { BankAccountValue } from '@fayz-ai/core';
2
+ export declare function BankField({ value, onChange, }: {
3
+ value: BankAccountValue | undefined;
4
+ onChange: (next: BankAccountValue) => void;
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=BankField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BankField.d.ts","sourceRoot":"","sources":["../../src/crud/BankField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAqBrD,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAA;CAC3C,+BAsBA"}
@@ -5,9 +5,11 @@ interface CrudCardGridProps<T> {
5
5
  entityDef: EntityDef<T>;
6
6
  onEdit: (item: T) => void;
7
7
  onDelete: (item: T) => void;
8
+ /** Abre o registro já em EDIÇÃO. Ausente = sem lápis (lista só de leitura). */
9
+ onEditRecord?: (item: T) => void;
8
10
  }
9
11
  export declare function CrudCardGrid<T extends {
10
12
  id: string;
11
- }>({ items, entityDef, onEdit, onDelete }: CrudCardGridProps<T>): React.JSX.Element;
13
+ }>({ items, entityDef, onEdit, onDelete, onEditRecord }: CrudCardGridProps<T>): React.JSX.Element;
12
14
  export {};
13
15
  //# sourceMappingURL=CrudCardGrid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrudCardGrid.d.ts","sourceRoot":"","sources":["../../src/crud/CrudCardGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,eAAe,CAAA;AAGxD,UAAU,iBAAiB,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;CAC5B;AAyBD,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBAsDlH"}
1
+ {"version":3,"file":"CrudCardGrid.d.ts","sourceRoot":"","sources":["../../src/crud/CrudCardGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,eAAe,CAAA;AAGxD,UAAU,iBAAiB,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,EAAE,CAAA;IACV,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;IAC3B,+EAA+E;IAC/E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;CACjC;AA0CD,wBAAgB,YAAY,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,qBA4I/H"}
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { LucideIcon } from 'lucide-react';
3
3
  import { type PageAction } from '../plugins/PageActions';
4
- import type { EntityDef, FormLayout, DetailTab } from '@fayz-ai/core';
4
+ import type { EntityDef, FieldDef, FormLayout, DetailTab } from '@fayz-ai/core';
5
5
  interface CrudDetailPageProps {
6
6
  entityDef: EntityDef;
7
7
  item: Record<string, any>;
@@ -40,8 +40,37 @@ interface CrudDetailPageProps {
40
40
  * this page does not. */
41
41
  extraActions?: PageAction[];
42
42
  }
43
+ /**
44
+ * Os campos que a ficha mostra deste registro.
45
+ *
46
+ * `visibleWhen` vale na ficha tanto quanto no formulário. O formulário já não
47
+ * pergunta Agência num caixa físico; a ficha do mesmo registro listava os dez
48
+ * campos e mostrava «Agência —», «Dia de fechamento —» para todo tipo de
49
+ * conta. Um traço não é informação: é uma pergunta sem resposta ocupando a
50
+ * linha, e quem lê não sabe se está vazio ou se não se aplica. O predicado é o
51
+ * mesmo, lido sobre o registro gravado em vez do rascunho.
52
+ *
53
+ * @internal exportado para teste.
54
+ */
55
+ export declare function visibleDetailFields(entityDef: EntityDef, item: Record<string, any>): FieldDef[];
43
56
  /** @internal exportado para teste — a resolução das abas do arquétipo. */
44
57
  export declare function getArchetypeTabs(layout?: FormLayout, archetypeKind?: string): DetailTab[];
58
+ /**
59
+ * The filters that depend on the RUNTIME rather than on the archetype.
60
+ *
61
+ * `visibleFor` above answers "what kind of record is this", which the definition
62
+ * already states and can be decided with no app running. These three interrogate
63
+ * the app they are inside: which plugins contributed, whether this account works
64
+ * with units, and what the entity asked to hide. They live together and outside
65
+ * the component because a filter that only runs inside JSX is a filter nobody
66
+ * tests — the tab set is a product decision and deserves assertions.
67
+ *
68
+ * @internal exported for tests.
69
+ */
70
+ export declare function filterRuntimeTabs(tabs: DetailTab[], ctx: {
71
+ hasWidget: (zone: string) => boolean;
72
+ unitMode: boolean;
73
+ }): DetailTab[];
45
74
  /** @internal exportado para teste — resolve `DetailTab.icon` contra o lucide. */
46
75
  export declare function resolveTabIcon(name: string): LucideIcon | null;
47
76
  export declare function CrudDetailPage({ entityDef, item, namePlural, basePath, initialTab, tabPath, onBack, onEdit, onDelete, feature, embedded, onFieldSave, badges, onImageChange, extraActions, }: CrudDetailPageProps): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"CrudDetailPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudDetailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAoB9C,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAcrE,OAAO,KAAK,EAAgB,SAAS,EAAwB,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzG,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;mCAC+B;IAC/B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACnE;;;6DAGyD;IACzD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB;;kDAE8C;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpD;;8BAE0B;IAC1B,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;CAC5B;AAiWD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAgCzF;AAmCD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAK9D;AAiBD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,GACb,EAAE,mBAAmB,qBAsWrB"}
1
+ {"version":3,"file":"CrudDetailPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudDetailPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAoB9C,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAoBrE,OAAO,KAAK,EAAgB,SAAS,EAAE,QAAQ,EAAc,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzG,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8FAA8F;IAC9F,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;mCAC+B;IAC/B,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACnE;;;6DAGyD;IACzD,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB;;kDAE8C;IAC9C,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;IACpD;;8BAE0B;IAC1B,YAAY,CAAC,EAAE,UAAU,EAAE,CAAA;CAC5B;AAmUD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,EAAE,CAM/F;AA2HD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,EAAE,CAgCzF;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,EAAE,EACjB,GAAG,EAAE;IAAE,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAC/D,SAAS,EAAE,CAKb;AAmCD,iFAAiF;AACjF,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAK9D;AAiBD,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,OAAO,EACP,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,WAAW,EACX,MAAM,EACN,aAAa,EACb,YAAY,GACb,EAAE,mBAAmB,qBA0arB"}
@@ -62,6 +62,13 @@ export declare function isEmptyValue(value: unknown): boolean;
62
62
  * the merchant cannot see is not one they can be asked to fill.
63
63
  */
64
64
  export declare function missingRequiredFields(fields: FieldDef[], values: Record<string, unknown>): FieldDef[];
65
+ export declare function FormFieldItem({ field, value, onChange, allValues, invalid }: {
66
+ field: FieldDef;
67
+ value: any;
68
+ onChange: (val: any) => void;
69
+ allValues?: Record<string, any>;
70
+ invalid?: boolean;
71
+ }): React.JSX.Element | null;
65
72
  export declare function CrudFormPage({ entityDef, mode, initialData, onSubmit, onCancel, namePlural, embedded, hideBreadcrumb, formId, hideActions, essentialFirst, noForm, submitRef }: CrudFormPageProps): React.JSX.Element;
66
73
  export {};
67
74
  //# sourceMappingURL=CrudFormPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrudFormPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudFormPage.tsx"],"names":[],"mappings":"AACA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAmBlD,OAAO,KAAK,EAAE,QAAQ,EAAc,SAAS,EAAE,MAAM,eAAe,CAAA;AA2CpE,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;CACxD;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,QAAQ,EAAE,CAOZ;AAsdD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,iBAAiB,qBAuUjM"}
1
+ {"version":3,"file":"CrudFormPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudFormPage.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAyBlD,OAAO,KAAK,EAAE,QAAQ,EAAc,SAAS,EAAE,MAAM,eAAe,CAAA;AA2CpE,UAAU,iBAAiB;IACzB,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7D,QAAQ,EAAE,MAAM,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB;iFAC6E;IAC7E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;CACxD;AAaD;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKpD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,QAAQ,EAAE,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,QAAQ,EAAE,CAcZ;AA+SD,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE;IAAE,KAAK,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,4BAqC9L;AA+OD,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,iBAAiB,qBAkYjM"}
@@ -92,6 +92,18 @@ export interface CrudListViewProps<T extends {
92
92
  onNew?: () => void;
93
93
  addLabel?: string;
94
94
  onRowClick?: (row: T) => void;
95
+ /**
96
+ * A frase do vazio, quando a entidade tem uma melhor que a genérica.
97
+ *
98
+ * O texto padrão («O que você cadastrar aparece aqui») descreve o
99
+ * mecanismo; uma lista relacionada costuma saber dizer a CONSEQUÊNCIA —
100
+ * «sem regra, esta tela não recebe nada». Declarada em
101
+ * `RelatedList.emptyHint`, e até aqui era descartada quando a lista
102
+ * aparecia como ABA, porque só a seção a lia.
103
+ */
104
+ emptyHint?: string;
105
+ /** Abre o registro já em EDIÇÃO — o lápis do cartão. */
106
+ onEditRecord?: (row: T) => void;
95
107
  /** Delete action for the card grid (table actions live in the columns). */
96
108
  onDelete?: (row: T) => void;
97
109
  /** Actions offered for a selection of rows. Their presence is what turns the
@@ -150,5 +162,5 @@ export interface CrudListViewProps<T extends {
150
162
  */
151
163
  export declare function CrudListView<T extends {
152
164
  id: string;
153
- }>({ entityDef, columns, items, total, totalIsEstimate, page, pageSize, onPageChange, display, search, onSearchChange, searchPlaceholder, facets, activeFilters, onFacetChange, onNew, addLabel, onRowClick, onDelete, bulkActions, onBulkDelete, onImport, onExport, aiCreate, feature, readOnly, embedded, emptyMessage, navTabs, activeNavTab, headerActions, stats, onRefresh, refreshFromCache, onSort, onSortField, onSortDir, sortBy, sortDir, error, }: CrudListViewProps<T>): React.JSX.Element;
165
+ }>({ entityDef, columns, items, total, totalIsEstimate, page, pageSize, onPageChange, display, search, onSearchChange, searchPlaceholder, facets, activeFilters, onFacetChange, onNew, addLabel, onRowClick, onEditRecord, emptyHint, onDelete, bulkActions, onBulkDelete, onImport, onExport, aiCreate, feature, readOnly, embedded, emptyMessage, navTabs, activeNavTab, headerActions, stats, onRefresh, refreshFromCache, onSort, onSortField, onSortDir, sortBy, sortDir, error, }: CrudListViewProps<T>): React.JSX.Element;
154
166
  //# sourceMappingURL=CrudListView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrudListView.d.ts","sourceRoot":"","sources":["../../src/crud/CrudListView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CrudListView.d.ts","sourceRoot":"","sources":["../../src/crud/CrudListView.tsx"],"names":[],"mappings":"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"}
@@ -33,9 +33,11 @@ interface CrudPageProps<T extends {
33
33
  /** Este CRUD é uma SEÇÃO de outra tela (um cadastro dentro de uma aba de
34
34
  * configurações). Ver CrudListView.embedded. */
35
35
  embedded?: boolean;
36
+ /** Ver `CrudListView.emptyHint`. */
37
+ emptyHint?: string;
36
38
  }
37
39
  export declare function CrudPage<T extends {
38
40
  id: string;
39
- }>({ entityDef: rawEntityDef, useStore, basePath, display, feature, readOnly, navTabs, activeNavTab, stats, embedded, aiCreate }: CrudPageProps<T>): React.JSX.Element;
41
+ }>({ entityDef: rawEntityDef, useStore, basePath, display, feature, readOnly, navTabs, activeNavTab, stats, embedded, emptyHint, aiCreate }: CrudPageProps<T>): React.JSX.Element;
40
42
  export {};
41
43
  //# sourceMappingURL=CrudPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CrudPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAUhF,OAAO,EAAgB,KAAK,YAAY,EAAkB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAgB/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAG1D,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,CAAA;AAYpC,UAAU,aAAa,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC9C,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,QAAQ,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAA;IAC5D;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB;qDACiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAmID,wBAAgB,QAAQ,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,qBA8ejM"}
1
+ {"version":3,"file":"CrudPage.d.ts","sourceRoot":"","sources":["../../src/crud/CrudPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAUhF,OAAO,EAAgB,KAAK,YAAY,EAAkB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAEjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAgB/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAG1D,KAAK,WAAW,GAAG,OAAO,GAAG,OAAO,CAAA;AAYpC,UAAU,aAAa,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE;IAC9C,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAA;IACvB,QAAQ,EAAE,MAAM,SAAS,CAAC,CAAC,CAAC,CAAA;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,UAAU,EAAE,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,KAAK,YAAY,EAAE,CAAA;IAC5D;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,YAAY,CAAA;IACvB;qDACiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oCAAoC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAmID,wBAAgB,QAAQ,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,qBAyjB5M"}
@@ -5,7 +5,14 @@ interface DeleteConfirmDialogProps {
5
5
  onConfirm: () => void;
6
6
  entityName: string;
7
7
  displayValue?: string;
8
+ /**
9
+ * `deactivate` é o que a lixeira de um CADASTRO faz. A palavra importa: o
10
+ * diálogo de excluir promete que «não pode ser desfeita», e desligar pode —
11
+ * prometer o pior assusta quem só queria tirar da lista, e ensina a não
12
+ * confiar no aviso quando ele for verdade.
13
+ */
14
+ mode?: 'delete' | 'deactivate';
8
15
  }
9
- export declare function DeleteConfirmDialog({ open, onClose, onConfirm, entityName, displayValue }: DeleteConfirmDialogProps): React.JSX.Element;
16
+ export declare function DeleteConfirmDialog({ open, onClose, onConfirm, entityName, displayValue, mode }: DeleteConfirmDialogProps): React.JSX.Element;
10
17
  export {};
11
18
  //# sourceMappingURL=DeleteConfirmDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteConfirmDialog.d.ts","sourceRoot":"","sources":["../../src/crud/DeleteConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,UAAU,wBAAwB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,wBAAwB,qBAoBnH"}
1
+ {"version":3,"file":"DeleteConfirmDialog.d.ts","sourceRoot":"","sources":["../../src/crud/DeleteConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAYzB,UAAU,wBAAwB;IAChC,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,IAAI,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAA;CAC/B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,IAAe,EAAE,EAAE,wBAAwB,qBAwBpI"}
@@ -1 +1 @@
1
- {"version":3,"file":"EntityOverview.d.ts","sourceRoot":"","sources":["../../src/crud/EntityOverview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAc,MAAM,eAAe,CAAA;AAOpE,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAsCrG;AA8GD,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IACjD,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,mBAAmB,qBA6D9F"}
1
+ {"version":3,"file":"EntityOverview.d.ts","sourceRoot":"","sources":["../../src/crud/EntityOverview.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAIvC,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAc,MAAM,eAAe,CAAA;AAOpE,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,KAAK,CAAC,SAAS,CAiDrG;AA8GD,UAAU,mBAAmB;IAC3B,SAAS,EAAE,SAAS,CAAA;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACzB,+EAA+E;IAC/E,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAA;IACjD,gDAAgD;IAChD,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,mBAAmB,qBA6D9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"RelatedListTab.d.ts","sourceRoot":"","sources":["../../src/crud/RelatedListTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AA+BrE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,4BA6C9G;AAqBD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"RelatedListTab.d.ts","sourceRoot":"","sources":["../../src/crud/RelatedListTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,SAAS,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AA+BrE,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,WAAW,CAAA;CAAE,4BAkD9G;AAqBD,8EAA8E;AAC9E,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,8 @@
1
+ import * as React from 'react';
2
+ import type { RelatedList } from '@fayz-ai/core';
3
+ export declare function RelatedSection({ parentId, related, compact }: {
4
+ parentId: string;
5
+ related: RelatedList;
6
+ compact?: boolean;
7
+ }): React.JSX.Element;
8
+ //# sourceMappingURL=RelatedSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RelatedSection.d.ts","sourceRoot":"","sources":["../../src/crud/RelatedSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAuB,WAAW,EAAE,MAAM,eAAe,CAAA;AA4BrE,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,qBAmHA"}
@@ -0,0 +1,9 @@
1
+ import type { FieldDef } from '@fayz-ai/core';
2
+ export declare function SubForm({ fields, values, onChange, columns, invalidKeys, }: {
3
+ fields: FieldDef[];
4
+ values: Record<string, any>;
5
+ onChange: (next: Record<string, any>) => void;
6
+ columns?: 1 | 2 | 3;
7
+ invalidKeys?: ReadonlySet<string>;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=SubForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubForm.d.ts","sourceRoot":"","sources":["../../src/crud/SubForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAiB7C,wBAAgB,OAAO,CAAC,EACtB,MAAM,EACN,MAAM,EACN,QAAQ,EACR,OAAW,EACX,WAAW,GACZ,EAAE;IACD,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,IAAI,CAAA;IAC7C,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAClC,+BAqBA"}
@@ -0,0 +1,13 @@
1
+ export declare function tagTone(tag: string): string;
2
+ export declare function TagChip({ tag, onRemove }: {
3
+ tag: string;
4
+ onRemove?: () => void;
5
+ }): import("react").JSX.Element;
6
+ export declare function TagsField({ value, onChange, table, placeholder, }: {
7
+ value: string[] | undefined;
8
+ onChange: (next: string[]) => void;
9
+ /** De onde vêm as sugestões — a tabela do próprio cadastro. */
10
+ table?: string;
11
+ placeholder?: string;
12
+ }): import("react").JSX.Element;
13
+ //# sourceMappingURL=TagsField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TagsField.d.ts","sourceRoot":"","sources":["../../src/crud/TagsField.tsx"],"names":[],"mappings":"AAmEA,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI3C;AAED,wBAAgB,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,+BAWhF;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC3B,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAA;IAClC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,+BA2FA"}
@@ -18,6 +18,15 @@ export interface EntityLookup {
18
18
  search(query: string): Promise<EntityLookupResult[]>;
19
19
  getById(id: string): Promise<EntityLookupResult | null>;
20
20
  list?(): Promise<EntityLookupResult[]>;
21
+ /**
22
+ * How many rows this lookup can offer at all.
23
+ *
24
+ * A document offers "Product" and "Service" as the kinds of line it accepts,
25
+ * and a house that sells only services has nothing behind one of them: the
26
+ * pill opens a search over an empty catalog. Counting once is what lets a
27
+ * screen drop the choice instead of offering a dead end.
28
+ */
29
+ count?(): Promise<number>;
21
30
  /**
22
31
  * Create on the spot, without leaving the document.
23
32
  *
@@ -84,6 +93,19 @@ interface ArchetypeLookupConfig {
84
93
  * que falta seria trocar um incômodo por uma tela vazia.
85
94
  */
86
95
  bookableOnly?: boolean;
96
+ /**
97
+ * Só o que a casa VENDE.
98
+ *
99
+ * `products` guarda o que entra e o que sai pela mesma porta: o insumo, o
100
+ * intermediário e o bem de uso ficam ao lado da mercadoria. Num orçamento
101
+ * isso oferece "Óleo de motor 20L — uso interno" como linha para o cliente.
102
+ *
103
+ * `productType` ausente conta como venda: é o padrão do provider de estoque
104
+ * (`meta.productType ?? 'sale'`), e é o caso da maioria das linhas migradas
105
+ * do V1 — esconder o catálogo inteiro por uma chave que falta no metadata
106
+ * seria trocar um incômodo por uma tela vazia.
107
+ */
108
+ sellableOnly?: boolean;
87
109
  }
88
110
  /**
89
111
  * Create an EntityLookup that queries a core archetype table via Supabase.
@@ -1 +1 @@
1
- {"version":3,"file":"archetype-lookup.d.ts","sourceRoot":"","sources":["../../src/crud/archetype-lookup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAE1D;oFACoF;AACpF,MAAM,MAAM,iBAAiB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAE1E,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACpD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAA;IACvD,IAAI,CAAC,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAA;IACtC;;;;;OAKG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAC9D,8EAA8E;IAC9E,IAAI,CAAC,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAAA;IAC1D,iFAAiF;IACjF,MAAM,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChF;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAA;AAYzE,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAA;AAI9D,kEAAkE;AAClE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAEnF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAEvE;AAuED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,aAAa,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB;;;;;4EAKwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;+EAC2E;IAC3E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB;oDACgD;IAChD,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAA;IAC5B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAiFD;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,YAAY,CAmOjF"}
1
+ {"version":3,"file":"archetype-lookup.d.ts","sourceRoot":"","sources":["../../src/crud/archetype-lookup.ts"],"names":[],"mappings":"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"}