@snksergio/design-system 0.30.3 → 0.31.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 (38) hide show
  1. package/dist-lib/chunks/app-shell-78w0pYdP.mjs.map +1 -1
  2. package/dist-lib/chunks/app-shell-Cyh8AUJT.cjs.map +1 -1
  3. package/dist-lib/chunks/app-shell-mocks-kWIVSzLs.mjs.map +1 -1
  4. package/dist-lib/chunks/app-shell-mocks-oO_IV3Gw.cjs.map +1 -1
  5. package/dist-lib/chunks/chat-v2-mocks-BV9Wha_Z.cjs.map +1 -1
  6. package/dist-lib/chunks/chat-v2-mocks-DvZRkhmz.mjs.map +1 -1
  7. package/dist-lib/chunks/page-header-B6XJyIMz.mjs.map +1 -1
  8. package/dist-lib/chunks/page-header-D0rpU0yn.cjs.map +1 -1
  9. package/dist-lib/chunks/{panel-CEkyoGiO.mjs → panel-8FiBxwcI.mjs} +10 -9
  10. package/dist-lib/chunks/panel-8FiBxwcI.mjs.map +1 -0
  11. package/dist-lib/chunks/{panel-B_SSIEDs.cjs → panel-BOrETqXz.cjs} +10 -9
  12. package/dist-lib/chunks/panel-BOrETqXz.cjs.map +1 -0
  13. package/dist-lib/chunks/useTheme-BUPLZBMs.mjs.map +1 -1
  14. package/dist-lib/chunks/useTheme-Dee4mo-A.cjs.map +1 -1
  15. package/dist-lib/index.cjs +1 -1
  16. package/dist-lib/index.cjs.map +1 -1
  17. package/dist-lib/index.mjs +2 -2
  18. package/dist-lib/index.mjs.map +1 -1
  19. package/dist-lib/preview/chat.cjs.map +1 -1
  20. package/dist-lib/preview/chat.mjs.map +1 -1
  21. package/dist-lib/preview/clientes.cjs +1 -1
  22. package/dist-lib/preview/clientes.cjs.map +1 -1
  23. package/dist-lib/preview/clientes.mjs +1 -1
  24. package/dist-lib/preview/clientes.mjs.map +1 -1
  25. package/dist-lib/src/components/ui/TableToolbar/parts/table-toolbar-views.d.ts.map +1 -1
  26. package/dist-lib/src/hooks/useBrand.d.ts +1 -1
  27. package/dist-lib/src/hooks/useBrand.d.ts.map +1 -1
  28. package/dist-lib/tokens/brands/vibrant/primitives/color-palette.d.ts +281 -0
  29. package/dist-lib/tokens/brands/vibrant/primitives/color-palette.d.ts.map +1 -0
  30. package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts +222 -0
  31. package/dist-lib/tokens/brands/vibrant/semantic/color-dark.d.ts.map +1 -0
  32. package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts +220 -0
  33. package/dist-lib/tokens/brands/vibrant/semantic/color-light.d.ts.map +1 -0
  34. package/dist-lib/tokens.cjs.map +1 -1
  35. package/dist-lib/tokens.mjs.map +1 -1
  36. package/package.json +2 -1
  37. package/dist-lib/chunks/panel-B_SSIEDs.cjs.map +0 -1
  38. package/dist-lib/chunks/panel-CEkyoGiO.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell-mocks-kWIVSzLs.mjs","sources":["../../src/preview/mocks/app-shell-mocks.ts"],"sourcesContent":["import {\r\n Inbox,\r\n Contact,\r\n Megaphone,\r\n Brain,\r\n Settings as SettingsIcon,\r\n LayoutGrid,\r\n Target,\r\n Trophy,\r\n Tag,\r\n Reply,\r\n Star,\r\n GraduationCap,\r\n Activity,\r\n AlertCircle,\r\n Plug,\r\n ListOrdered,\r\n Network,\r\n Users,\r\n Ticket,\r\n Plus,\r\n Settings,\r\n UserCheck,\r\n AlertTriangle,\r\n Sparkles,\r\n CreditCard,\r\n Sun,\r\n Moon,\r\n Monitor,\r\n LogOut,\r\n Maximize2,\r\n LayoutPanelLeft,\r\n} from \"lucide-react\";\r\nimport type { SidebarContext } from \"../../components/ui/MenuSidebar\";\r\nimport type {\r\n HeaderCommandGroup,\r\n HeaderMessage,\r\n HeaderNotification,\r\n HeaderThemeOption,\r\n} from \"../../components/ui/Header\";\r\nimport type {\r\n AppShellUser,\r\n AppShellLayoutOption,\r\n} from \"../../components/ui/AppShell\";\r\n\r\n/**\r\n * Mocks compartilhados pelo AppShellDoc + pages de showcase que precisam de uma\r\n * \"casca de app realista\". Em produção, esses dados viriam do backend/contexto da\r\n * app — aqui são estáticos pra demonstração consistente.\r\n */\r\n\r\nexport const APP_SHELL_CONTEXTS: SidebarContext[] = [\r\n {\r\n id: \"inbox\",\r\n label: \"Inbox / Operação\",\r\n icon: Inbox,\r\n items: [\r\n { name: \"Atendimentos\", icon: Inbox, href: \"#atendimentos\", badge: \"8\", badgeKind: \"counter\" },\r\n { name: \"Chat Interno\", icon: ListOrdered, href: \"#chat-interno\", badge: \"2\" },\r\n { name: \"Agendamentos\", icon: LayoutGrid, href: \"#agendamentos\", badge: \"8\" },\r\n {\r\n name: \"Escalation\",\r\n icon: AlertCircle,\r\n subitems: [\r\n { name: \"Dashboard\", href: \"#esc-dash\" },\r\n { name: \"Departamentos\", href: \"#esc-deps\" },\r\n { name: \"Regras\", href: \"#esc-rules\" },\r\n ],\r\n },\r\n ],\r\n sections: [\r\n {\r\n id: \"filtros-rapidos\",\r\n label: \"Filtros rápidos\",\r\n variant: \"bookmark\",\r\n items: [\r\n { color: \"#1cb280\", name: \"Royais — In progress\" },\r\n { color: \"#f6b51e\", name: \"Licenciados — Waiting\" },\r\n { color: \"#8754ec\", name: \"IA — handover pendente\" },\r\n { color: \"#ef4444\", name: \"SLA crítico (> 30min)\" },\r\n ],\r\n },\r\n {\r\n id: \"mensagens-rapidas\",\r\n label: \"Mensagens rápidas\",\r\n variant: \"chat\",\r\n items: [\r\n { name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", status: \"online\" },\r\n { name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", status: \"online\" },\r\n { name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", status: \"offline\" },\r\n { name: \"João Pedro\", initials: \"JP\", color: \"#1cb280\", status: \"online\" },\r\n { name: \"Beatriz Almeida\", initials: \"BA\", color: \"#0088cc\", status: \"online\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"crm\",\r\n label: \"CRM\",\r\n icon: Contact,\r\n items: [\r\n { name: \"Contatos\", icon: Contact, href: \"#contatos\", badge: \"2.1k\" },\r\n { name: \"Segmentos\", icon: Target, href: \"#segmentos\" },\r\n { name: \"Tiers\", icon: Trophy, href: \"#tiers\" },\r\n { name: \"Tags\", icon: Tag, href: \"#tags\" },\r\n { name: \"Respostas Rápidas\", icon: Reply, href: \"#respostas\" },\r\n ],\r\n sections: [\r\n {\r\n id: \"listas-salvas\",\r\n label: \"Listas salvas\",\r\n variant: \"bookmark\",\r\n items: [\r\n { color: \"#0088cc\", name: \"Top 100 ativos\" },\r\n { color: \"#f59e0b\", name: \"Sem cadastro completo\" },\r\n { color: \"#1cb280\", name: \"Convertidos último mês\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"engajamento\",\r\n label: \"Engajamento\",\r\n icon: Megaphone,\r\n items: [\r\n { name: \"Campanhas\", icon: Megaphone, href: \"#campanhas\", badge: \"6\" },\r\n { name: \"Pesquisa Satisfação\", icon: Star, href: \"#csat\", badge: \"CSAT\", badgeKind: \"success\" },\r\n { name: \"Capacitações\", icon: GraduationCap, href: \"#capacitacoes\" },\r\n {\r\n name: \"Green Points\",\r\n icon: Trophy,\r\n subitems: [\r\n { name: \"My Points\", href: \"#gp-my\" },\r\n { name: \"Management\", href: \"#gp-mgmt\" },\r\n { name: \"Periods\", href: \"#gp-periods\" },\r\n { name: \"Configuration\", href: \"#gp-config\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"ia\",\r\n label: \"IA — Agente Sol\",\r\n icon: Brain,\r\n items: [\r\n { name: \"Sol Traces\", icon: Activity, href: \"#sol-traces\", badge: \"94 pgs\" },\r\n { name: \"Central de Alertas\", icon: AlertCircle, href: \"#alertas\", badge: \"1085\", badgeKind: \"counter\" },\r\n {\r\n name: \"AI Rules\",\r\n icon: Brain,\r\n subitems: [\r\n { name: \"Provenance\", href: \"#ai-prov\" },\r\n { name: \"Embeddings Health\", href: \"#ai-emb\" },\r\n { name: \"Few-shots Candidates\", href: \"#ai-fs\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"config\",\r\n label: \"Configuração\",\r\n icon: SettingsIcon,\r\n items: [\r\n { name: \"Conexões\", icon: Plug, href: \"#conexoes\", badge: \"2\" },\r\n { name: \"Filas & Chatbot\", icon: ListOrdered, href: \"#filas-cb\", badge: \"8\" },\r\n { name: \"Regras de Fila\", icon: Network, href: \"#regras-fila\" },\r\n { name: \"Channels\", icon: LayoutGrid, href: \"#channels\", badge: \"2\" },\r\n ],\r\n },\r\n];\r\n\r\nexport const APP_SHELL_COMMANDS: HeaderCommandGroup[] = [\r\n {\r\n heading: \"Navegação rápida\",\r\n items: [\r\n { label: \"Clientes\", icon: Users, onSelect: () => alert(\"→ Clientes\") },\r\n { label: \"Tickets\", icon: Ticket, onSelect: () => alert(\"→ Tickets\") },\r\n { label: \"Configurações\", icon: Settings, shortcut: \"⌘,\", onSelect: () => alert(\"→ Settings\") },\r\n ],\r\n },\r\n {\r\n heading: \"Ações\",\r\n items: [\r\n { label: \"Novo cliente\", icon: Plus, shortcut: \"⌘N\", onSelect: () => alert(\"Novo cliente\") },\r\n { label: \"Sair\", icon: LogOut, shortcut: \"⌘Q\", destructive: true, onSelect: () => alert(\"Sair\") },\r\n ],\r\n },\r\n];\r\n\r\nexport const APP_SHELL_NOTIFICATIONS: HeaderNotification[] = [\r\n {\r\n id: \"n1\",\r\n icon: UserCheck,\r\n color: \"#10B881\",\r\n title: \"Aline Castro mencionou você\",\r\n body: 'em \"Royais — In progress\" comentou: \"@você pode revisar?\"',\r\n time: \"2 min\",\r\n unread: true,\r\n kind: \"mention\",\r\n },\r\n {\r\n id: \"n2\",\r\n icon: AlertTriangle,\r\n color: \"#f59e0b\",\r\n title: \"SLA em risco\",\r\n body: \"Ticket #20260504-00031 sem resposta há 28 minutos\",\r\n time: \"15 min\",\r\n unread: true,\r\n kind: \"alert\",\r\n },\r\n {\r\n id: \"n3\",\r\n icon: Sparkles,\r\n color: \"#8754ec\",\r\n title: \"Sol Traces atualizado\",\r\n body: \"Nova versão com 12 melhorias na qualidade das respostas\",\r\n time: \"1 h\",\r\n unread: true,\r\n kind: \"system\",\r\n },\r\n {\r\n id: \"n4\",\r\n icon: CreditCard,\r\n color: \"#0FC589\",\r\n title: \"Fatura paga\",\r\n body: \"Pagamento de R$ 4.250,00 confirmado.\",\r\n time: \"3 h\",\r\n kind: \"billing\",\r\n },\r\n];\r\n\r\nexport const APP_SHELL_MESSAGES: HeaderMessage[] = [\r\n { id: \"m1\", name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", preview: \"Olá! Você pode revisar o ticket #1234?\", time: \"2 min\", unread: true },\r\n { id: \"m2\", name: \"Equipe Suporte\", initials: \"ES\", color: \"#0088cc\", preview: \"Bruno: pessoal, alguém disponível pra cobrir...\", time: \"12 min\", unread: true, group: true },\r\n { id: \"m3\", name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", preview: \"Boa tarde! Aquele cliente confirmou.\", time: \"1 h\" },\r\n { id: \"m4\", name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", preview: \"Reunião remarcada pra amanhã 10h.\", time: \"ontem\" },\r\n];\r\n\r\nexport const APP_SHELL_THEME_OPTIONS: HeaderThemeOption[] = [\r\n { id: \"system\", label: \"Sistema\", icon: Monitor },\r\n { id: \"light\", label: \"Claro\", icon: Sun },\r\n { id: \"dark\", label: \"Escuro\", icon: Moon },\r\n];\r\n\r\n/* ── User menu (avatar do rail) ───────────────────────────────────── */\r\n\r\nexport const APP_SHELL_USER: AppShellUser = {\r\n name: \"Sergio Vieira\",\r\n email: \"sergio.vieira@igreenenergy.com.br\",\r\n initials: \"SV\",\r\n};\r\n\r\nexport const APP_SHELL_LAYOUT_OPTIONS: AppShellLayoutOption[] = [\r\n { id: \"fluid\", label: \"Fluido\", icon: Maximize2 },\r\n { id: \"compact\", label: \"Compacto\", icon: LayoutPanelLeft },\r\n];\r\n"],"names":["SettingsIcon"],"mappings":"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"}
1
+ {"version":3,"file":"app-shell-mocks-kWIVSzLs.mjs","sources":["../../src/preview/mocks/app-shell-mocks.ts"],"sourcesContent":["import {\n Inbox,\n Contact,\n Megaphone,\n Brain,\n Settings as SettingsIcon,\n LayoutGrid,\n Target,\n Trophy,\n Tag,\n Reply,\n Star,\n GraduationCap,\n Activity,\n AlertCircle,\n Plug,\n ListOrdered,\n Network,\n Users,\n Ticket,\n Plus,\n Settings,\n UserCheck,\n AlertTriangle,\n Sparkles,\n CreditCard,\n Sun,\n Moon,\n Monitor,\n LogOut,\n Maximize2,\n LayoutPanelLeft,\n} from \"lucide-react\";\nimport type { SidebarContext } from \"../../components/ui/MenuSidebar\";\nimport type {\n HeaderCommandGroup,\n HeaderMessage,\n HeaderNotification,\n HeaderThemeOption,\n} from \"../../components/ui/Header\";\nimport type {\n AppShellUser,\n AppShellLayoutOption,\n} from \"../../components/ui/AppShell\";\n\n/**\n * Mocks compartilhados pelo AppShellDoc + pages de showcase que precisam de uma\n * \"casca de app realista\". Em produção, esses dados viriam do backend/contexto da\n * app — aqui são estáticos pra demonstração consistente.\n */\n\nexport const APP_SHELL_CONTEXTS: SidebarContext[] = [\n {\n id: \"inbox\",\n label: \"Inbox / Operação\",\n icon: Inbox,\n items: [\n { name: \"Atendimentos\", icon: Inbox, href: \"#atendimentos\", badge: \"8\", badgeKind: \"counter\" },\n { name: \"Chat Interno\", icon: ListOrdered, href: \"#chat-interno\", badge: \"2\" },\n { name: \"Agendamentos\", icon: LayoutGrid, href: \"#agendamentos\", badge: \"8\" },\n {\n name: \"Escalation\",\n icon: AlertCircle,\n subitems: [\n { name: \"Dashboard\", href: \"#esc-dash\" },\n { name: \"Departamentos\", href: \"#esc-deps\" },\n { name: \"Regras\", href: \"#esc-rules\" },\n ],\n },\n ],\n sections: [\n {\n id: \"filtros-rapidos\",\n label: \"Filtros rápidos\",\n variant: \"bookmark\",\n items: [\n { color: \"#1cb280\", name: \"Royais — In progress\" },\n { color: \"#f6b51e\", name: \"Licenciados — Waiting\" },\n { color: \"#8754ec\", name: \"IA — handover pendente\" },\n { color: \"#ef4444\", name: \"SLA crítico (> 30min)\" },\n ],\n },\n {\n id: \"mensagens-rapidas\",\n label: \"Mensagens rápidas\",\n variant: \"chat\",\n items: [\n { name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", status: \"online\" },\n { name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", status: \"online\" },\n { name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", status: \"offline\" },\n { name: \"João Pedro\", initials: \"JP\", color: \"#1cb280\", status: \"online\" },\n { name: \"Beatriz Almeida\", initials: \"BA\", color: \"#0088cc\", status: \"online\" },\n ],\n },\n ],\n },\n {\n id: \"crm\",\n label: \"CRM\",\n icon: Contact,\n items: [\n { name: \"Contatos\", icon: Contact, href: \"#contatos\", badge: \"2.1k\" },\n { name: \"Segmentos\", icon: Target, href: \"#segmentos\" },\n { name: \"Tiers\", icon: Trophy, href: \"#tiers\" },\n { name: \"Tags\", icon: Tag, href: \"#tags\" },\n { name: \"Respostas Rápidas\", icon: Reply, href: \"#respostas\" },\n ],\n sections: [\n {\n id: \"listas-salvas\",\n label: \"Listas salvas\",\n variant: \"bookmark\",\n items: [\n { color: \"#0088cc\", name: \"Top 100 ativos\" },\n { color: \"#f59e0b\", name: \"Sem cadastro completo\" },\n { color: \"#1cb280\", name: \"Convertidos último mês\" },\n ],\n },\n ],\n },\n {\n id: \"engajamento\",\n label: \"Engajamento\",\n icon: Megaphone,\n items: [\n { name: \"Campanhas\", icon: Megaphone, href: \"#campanhas\", badge: \"6\" },\n { name: \"Pesquisa Satisfação\", icon: Star, href: \"#csat\", badge: \"CSAT\", badgeKind: \"success\" },\n { name: \"Capacitações\", icon: GraduationCap, href: \"#capacitacoes\" },\n {\n name: \"Green Points\",\n icon: Trophy,\n subitems: [\n { name: \"My Points\", href: \"#gp-my\" },\n { name: \"Management\", href: \"#gp-mgmt\" },\n { name: \"Periods\", href: \"#gp-periods\" },\n { name: \"Configuration\", href: \"#gp-config\" },\n ],\n },\n ],\n },\n {\n id: \"ia\",\n label: \"IA — Agente Sol\",\n icon: Brain,\n items: [\n { name: \"Sol Traces\", icon: Activity, href: \"#sol-traces\", badge: \"94 pgs\" },\n { name: \"Central de Alertas\", icon: AlertCircle, href: \"#alertas\", badge: \"1085\", badgeKind: \"counter\" },\n {\n name: \"AI Rules\",\n icon: Brain,\n subitems: [\n { name: \"Provenance\", href: \"#ai-prov\" },\n { name: \"Embeddings Health\", href: \"#ai-emb\" },\n { name: \"Few-shots Candidates\", href: \"#ai-fs\" },\n ],\n },\n ],\n },\n {\n id: \"config\",\n label: \"Configuração\",\n icon: SettingsIcon,\n items: [\n { name: \"Conexões\", icon: Plug, href: \"#conexoes\", badge: \"2\" },\n { name: \"Filas & Chatbot\", icon: ListOrdered, href: \"#filas-cb\", badge: \"8\" },\n { name: \"Regras de Fila\", icon: Network, href: \"#regras-fila\" },\n { name: \"Channels\", icon: LayoutGrid, href: \"#channels\", badge: \"2\" },\n ],\n },\n];\n\nexport const APP_SHELL_COMMANDS: HeaderCommandGroup[] = [\n {\n heading: \"Navegação rápida\",\n items: [\n { label: \"Clientes\", icon: Users, onSelect: () => alert(\"→ Clientes\") },\n { label: \"Tickets\", icon: Ticket, onSelect: () => alert(\"→ Tickets\") },\n { label: \"Configurações\", icon: Settings, shortcut: \"⌘,\", onSelect: () => alert(\"→ Settings\") },\n ],\n },\n {\n heading: \"Ações\",\n items: [\n { label: \"Novo cliente\", icon: Plus, shortcut: \"⌘N\", onSelect: () => alert(\"Novo cliente\") },\n { label: \"Sair\", icon: LogOut, shortcut: \"⌘Q\", destructive: true, onSelect: () => alert(\"Sair\") },\n ],\n },\n];\n\nexport const APP_SHELL_NOTIFICATIONS: HeaderNotification[] = [\n {\n id: \"n1\",\n icon: UserCheck,\n color: \"#10B881\",\n title: \"Aline Castro mencionou você\",\n body: 'em \"Royais — In progress\" comentou: \"@você pode revisar?\"',\n time: \"2 min\",\n unread: true,\n kind: \"mention\",\n },\n {\n id: \"n2\",\n icon: AlertTriangle,\n color: \"#f59e0b\",\n title: \"SLA em risco\",\n body: \"Ticket #20260504-00031 sem resposta há 28 minutos\",\n time: \"15 min\",\n unread: true,\n kind: \"alert\",\n },\n {\n id: \"n3\",\n icon: Sparkles,\n color: \"#8754ec\",\n title: \"Sol Traces atualizado\",\n body: \"Nova versão com 12 melhorias na qualidade das respostas\",\n time: \"1 h\",\n unread: true,\n kind: \"system\",\n },\n {\n id: \"n4\",\n icon: CreditCard,\n color: \"#0FC589\",\n title: \"Fatura paga\",\n body: \"Pagamento de R$ 4.250,00 confirmado.\",\n time: \"3 h\",\n kind: \"billing\",\n },\n];\n\nexport const APP_SHELL_MESSAGES: HeaderMessage[] = [\n { id: \"m1\", name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", preview: \"Olá! Você pode revisar o ticket #1234?\", time: \"2 min\", unread: true },\n { id: \"m2\", name: \"Equipe Suporte\", initials: \"ES\", color: \"#0088cc\", preview: \"Bruno: pessoal, alguém disponível pra cobrir...\", time: \"12 min\", unread: true, group: true },\n { id: \"m3\", name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", preview: \"Boa tarde! Aquele cliente confirmou.\", time: \"1 h\" },\n { id: \"m4\", name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", preview: \"Reunião remarcada pra amanhã 10h.\", time: \"ontem\" },\n];\n\nexport const APP_SHELL_THEME_OPTIONS: HeaderThemeOption[] = [\n { id: \"system\", label: \"Sistema\", icon: Monitor },\n { id: \"light\", label: \"Claro\", icon: Sun },\n { id: \"dark\", label: \"Escuro\", icon: Moon },\n];\n\n/* ── User menu (avatar do rail) ───────────────────────────────────── */\n\nexport const APP_SHELL_USER: AppShellUser = {\n name: \"Sergio Vieira\",\n email: \"sergio.vieira@igreenenergy.com.br\",\n initials: \"SV\",\n};\n\nexport const APP_SHELL_LAYOUT_OPTIONS: AppShellLayoutOption[] = [\n { id: \"fluid\", label: \"Fluido\", icon: Maximize2 },\n { id: \"compact\", label: \"Compacto\", icon: LayoutPanelLeft },\n];\n"],"names":["SettingsIcon"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app-shell-mocks-oO_IV3Gw.cjs","sources":["../../src/preview/mocks/app-shell-mocks.ts"],"sourcesContent":["import {\r\n Inbox,\r\n Contact,\r\n Megaphone,\r\n Brain,\r\n Settings as SettingsIcon,\r\n LayoutGrid,\r\n Target,\r\n Trophy,\r\n Tag,\r\n Reply,\r\n Star,\r\n GraduationCap,\r\n Activity,\r\n AlertCircle,\r\n Plug,\r\n ListOrdered,\r\n Network,\r\n Users,\r\n Ticket,\r\n Plus,\r\n Settings,\r\n UserCheck,\r\n AlertTriangle,\r\n Sparkles,\r\n CreditCard,\r\n Sun,\r\n Moon,\r\n Monitor,\r\n LogOut,\r\n Maximize2,\r\n LayoutPanelLeft,\r\n} from \"lucide-react\";\r\nimport type { SidebarContext } from \"../../components/ui/MenuSidebar\";\r\nimport type {\r\n HeaderCommandGroup,\r\n HeaderMessage,\r\n HeaderNotification,\r\n HeaderThemeOption,\r\n} from \"../../components/ui/Header\";\r\nimport type {\r\n AppShellUser,\r\n AppShellLayoutOption,\r\n} from \"../../components/ui/AppShell\";\r\n\r\n/**\r\n * Mocks compartilhados pelo AppShellDoc + pages de showcase que precisam de uma\r\n * \"casca de app realista\". Em produção, esses dados viriam do backend/contexto da\r\n * app — aqui são estáticos pra demonstração consistente.\r\n */\r\n\r\nexport const APP_SHELL_CONTEXTS: SidebarContext[] = [\r\n {\r\n id: \"inbox\",\r\n label: \"Inbox / Operação\",\r\n icon: Inbox,\r\n items: [\r\n { name: \"Atendimentos\", icon: Inbox, href: \"#atendimentos\", badge: \"8\", badgeKind: \"counter\" },\r\n { name: \"Chat Interno\", icon: ListOrdered, href: \"#chat-interno\", badge: \"2\" },\r\n { name: \"Agendamentos\", icon: LayoutGrid, href: \"#agendamentos\", badge: \"8\" },\r\n {\r\n name: \"Escalation\",\r\n icon: AlertCircle,\r\n subitems: [\r\n { name: \"Dashboard\", href: \"#esc-dash\" },\r\n { name: \"Departamentos\", href: \"#esc-deps\" },\r\n { name: \"Regras\", href: \"#esc-rules\" },\r\n ],\r\n },\r\n ],\r\n sections: [\r\n {\r\n id: \"filtros-rapidos\",\r\n label: \"Filtros rápidos\",\r\n variant: \"bookmark\",\r\n items: [\r\n { color: \"#1cb280\", name: \"Royais — In progress\" },\r\n { color: \"#f6b51e\", name: \"Licenciados — Waiting\" },\r\n { color: \"#8754ec\", name: \"IA — handover pendente\" },\r\n { color: \"#ef4444\", name: \"SLA crítico (> 30min)\" },\r\n ],\r\n },\r\n {\r\n id: \"mensagens-rapidas\",\r\n label: \"Mensagens rápidas\",\r\n variant: \"chat\",\r\n items: [\r\n { name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", status: \"online\" },\r\n { name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", status: \"online\" },\r\n { name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", status: \"offline\" },\r\n { name: \"João Pedro\", initials: \"JP\", color: \"#1cb280\", status: \"online\" },\r\n { name: \"Beatriz Almeida\", initials: \"BA\", color: \"#0088cc\", status: \"online\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"crm\",\r\n label: \"CRM\",\r\n icon: Contact,\r\n items: [\r\n { name: \"Contatos\", icon: Contact, href: \"#contatos\", badge: \"2.1k\" },\r\n { name: \"Segmentos\", icon: Target, href: \"#segmentos\" },\r\n { name: \"Tiers\", icon: Trophy, href: \"#tiers\" },\r\n { name: \"Tags\", icon: Tag, href: \"#tags\" },\r\n { name: \"Respostas Rápidas\", icon: Reply, href: \"#respostas\" },\r\n ],\r\n sections: [\r\n {\r\n id: \"listas-salvas\",\r\n label: \"Listas salvas\",\r\n variant: \"bookmark\",\r\n items: [\r\n { color: \"#0088cc\", name: \"Top 100 ativos\" },\r\n { color: \"#f59e0b\", name: \"Sem cadastro completo\" },\r\n { color: \"#1cb280\", name: \"Convertidos último mês\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"engajamento\",\r\n label: \"Engajamento\",\r\n icon: Megaphone,\r\n items: [\r\n { name: \"Campanhas\", icon: Megaphone, href: \"#campanhas\", badge: \"6\" },\r\n { name: \"Pesquisa Satisfação\", icon: Star, href: \"#csat\", badge: \"CSAT\", badgeKind: \"success\" },\r\n { name: \"Capacitações\", icon: GraduationCap, href: \"#capacitacoes\" },\r\n {\r\n name: \"Green Points\",\r\n icon: Trophy,\r\n subitems: [\r\n { name: \"My Points\", href: \"#gp-my\" },\r\n { name: \"Management\", href: \"#gp-mgmt\" },\r\n { name: \"Periods\", href: \"#gp-periods\" },\r\n { name: \"Configuration\", href: \"#gp-config\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"ia\",\r\n label: \"IA — Agente Sol\",\r\n icon: Brain,\r\n items: [\r\n { name: \"Sol Traces\", icon: Activity, href: \"#sol-traces\", badge: \"94 pgs\" },\r\n { name: \"Central de Alertas\", icon: AlertCircle, href: \"#alertas\", badge: \"1085\", badgeKind: \"counter\" },\r\n {\r\n name: \"AI Rules\",\r\n icon: Brain,\r\n subitems: [\r\n { name: \"Provenance\", href: \"#ai-prov\" },\r\n { name: \"Embeddings Health\", href: \"#ai-emb\" },\r\n { name: \"Few-shots Candidates\", href: \"#ai-fs\" },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n id: \"config\",\r\n label: \"Configuração\",\r\n icon: SettingsIcon,\r\n items: [\r\n { name: \"Conexões\", icon: Plug, href: \"#conexoes\", badge: \"2\" },\r\n { name: \"Filas & Chatbot\", icon: ListOrdered, href: \"#filas-cb\", badge: \"8\" },\r\n { name: \"Regras de Fila\", icon: Network, href: \"#regras-fila\" },\r\n { name: \"Channels\", icon: LayoutGrid, href: \"#channels\", badge: \"2\" },\r\n ],\r\n },\r\n];\r\n\r\nexport const APP_SHELL_COMMANDS: HeaderCommandGroup[] = [\r\n {\r\n heading: \"Navegação rápida\",\r\n items: [\r\n { label: \"Clientes\", icon: Users, onSelect: () => alert(\"→ Clientes\") },\r\n { label: \"Tickets\", icon: Ticket, onSelect: () => alert(\"→ Tickets\") },\r\n { label: \"Configurações\", icon: Settings, shortcut: \"⌘,\", onSelect: () => alert(\"→ Settings\") },\r\n ],\r\n },\r\n {\r\n heading: \"Ações\",\r\n items: [\r\n { label: \"Novo cliente\", icon: Plus, shortcut: \"⌘N\", onSelect: () => alert(\"Novo cliente\") },\r\n { label: \"Sair\", icon: LogOut, shortcut: \"⌘Q\", destructive: true, onSelect: () => alert(\"Sair\") },\r\n ],\r\n },\r\n];\r\n\r\nexport const APP_SHELL_NOTIFICATIONS: HeaderNotification[] = [\r\n {\r\n id: \"n1\",\r\n icon: UserCheck,\r\n color: \"#10B881\",\r\n title: \"Aline Castro mencionou você\",\r\n body: 'em \"Royais — In progress\" comentou: \"@você pode revisar?\"',\r\n time: \"2 min\",\r\n unread: true,\r\n kind: \"mention\",\r\n },\r\n {\r\n id: \"n2\",\r\n icon: AlertTriangle,\r\n color: \"#f59e0b\",\r\n title: \"SLA em risco\",\r\n body: \"Ticket #20260504-00031 sem resposta há 28 minutos\",\r\n time: \"15 min\",\r\n unread: true,\r\n kind: \"alert\",\r\n },\r\n {\r\n id: \"n3\",\r\n icon: Sparkles,\r\n color: \"#8754ec\",\r\n title: \"Sol Traces atualizado\",\r\n body: \"Nova versão com 12 melhorias na qualidade das respostas\",\r\n time: \"1 h\",\r\n unread: true,\r\n kind: \"system\",\r\n },\r\n {\r\n id: \"n4\",\r\n icon: CreditCard,\r\n color: \"#0FC589\",\r\n title: \"Fatura paga\",\r\n body: \"Pagamento de R$ 4.250,00 confirmado.\",\r\n time: \"3 h\",\r\n kind: \"billing\",\r\n },\r\n];\r\n\r\nexport const APP_SHELL_MESSAGES: HeaderMessage[] = [\r\n { id: \"m1\", name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", preview: \"Olá! Você pode revisar o ticket #1234?\", time: \"2 min\", unread: true },\r\n { id: \"m2\", name: \"Equipe Suporte\", initials: \"ES\", color: \"#0088cc\", preview: \"Bruno: pessoal, alguém disponível pra cobrir...\", time: \"12 min\", unread: true, group: true },\r\n { id: \"m3\", name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", preview: \"Boa tarde! Aquele cliente confirmou.\", time: \"1 h\" },\r\n { id: \"m4\", name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", preview: \"Reunião remarcada pra amanhã 10h.\", time: \"ontem\" },\r\n];\r\n\r\nexport const APP_SHELL_THEME_OPTIONS: HeaderThemeOption[] = [\r\n { id: \"system\", label: \"Sistema\", icon: Monitor },\r\n { id: \"light\", label: \"Claro\", icon: Sun },\r\n { id: \"dark\", label: \"Escuro\", icon: Moon },\r\n];\r\n\r\n/* ── User menu (avatar do rail) ───────────────────────────────────── */\r\n\r\nexport const APP_SHELL_USER: AppShellUser = {\r\n name: \"Sergio Vieira\",\r\n email: \"sergio.vieira@igreenenergy.com.br\",\r\n initials: \"SV\",\r\n};\r\n\r\nexport const APP_SHELL_LAYOUT_OPTIONS: AppShellLayoutOption[] = [\r\n { id: \"fluid\", label: \"Fluido\", icon: Maximize2 },\r\n { id: \"compact\", label: \"Compacto\", icon: LayoutPanelLeft },\r\n];\r\n"],"names":["Inbox","ListOrdered","LayoutGrid","AlertCircle","Contact","Target","Trophy","Tag","Reply","Megaphone","Star","GraduationCap","Brain","Activity","SettingsIcon","Plug","Network","Users","Ticket","Settings","Plus","LogOut","UserCheck","AlertTriangle","Sparkles","CreditCard","Monitor","Sun","Moon","Maximize2","LayoutPanelLeft"],"mappings":";;AAmDO,MAAM,qBAAuC;AAAA,EAClD;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMA,YAAAA;AAAAA,IACN,OAAO;AAAA,MACL,EAAE,MAAM,gBAAgB,MAAMA,mBAAO,MAAM,iBAAiB,OAAO,KAAK,WAAW,UAAA;AAAA,MACnF,EAAE,MAAM,gBAAgB,MAAMC,YAAAA,aAAa,MAAM,iBAAiB,OAAO,IAAA;AAAA,MACzE,EAAE,MAAM,gBAAgB,MAAMC,YAAAA,YAAY,MAAM,iBAAiB,OAAO,IAAA;AAAA,MACxE;AAAA,QACE,MAAM;AAAA,QACN,MAAMC,YAAAA;AAAAA,QACN,UAAU;AAAA,UACR,EAAE,MAAM,aAAa,MAAM,YAAA;AAAA,UAC3B,EAAE,MAAM,iBAAiB,MAAM,YAAA;AAAA,UAC/B,EAAE,MAAM,UAAU,MAAM,aAAA;AAAA,QAAa;AAAA,MACvC;AAAA,IACF;AAAA,IAEF,UAAU;AAAA,MACR;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,OAAO;AAAA,UACL,EAAE,OAAO,WAAW,MAAM,uBAAA;AAAA,UAC1B,EAAE,OAAO,WAAW,MAAM,wBAAA;AAAA,UAC1B,EAAE,OAAO,WAAW,MAAM,yBAAA;AAAA,UAC1B,EAAE,OAAO,WAAW,MAAM,wBAAA;AAAA,QAAwB;AAAA,MACpD;AAAA,MAEF;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,OAAO;AAAA,UACL,EAAE,MAAM,gBAAgB,UAAU,MAAM,OAAO,WAAW,QAAQ,SAAA;AAAA,UAClE,EAAE,MAAM,gBAAgB,UAAU,MAAM,OAAO,WAAW,QAAQ,SAAA;AAAA,UAClE,EAAE,MAAM,cAAc,UAAU,MAAM,OAAO,WAAW,QAAQ,UAAA;AAAA,UAChE,EAAE,MAAM,cAAc,UAAU,MAAM,OAAO,WAAW,QAAQ,SAAA;AAAA,UAChE,EAAE,MAAM,mBAAmB,UAAU,MAAM,OAAO,WAAW,QAAQ,SAAA;AAAA,QAAS;AAAA,MAChF;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,YAAAA;AAAAA,IACN,OAAO;AAAA,MACL,EAAE,MAAM,YAAY,MAAMA,YAAAA,SAAS,MAAM,aAAa,OAAO,OAAA;AAAA,MAC7D,EAAE,MAAM,aAAa,MAAMC,YAAAA,QAAQ,MAAM,aAAA;AAAA,MACzC,EAAE,MAAM,SAAS,MAAMC,YAAAA,QAAQ,MAAM,SAAA;AAAA,MACrC,EAAE,MAAM,QAAQ,MAAMC,YAAAA,KAAK,MAAM,QAAA;AAAA,MACjC,EAAE,MAAM,qBAAqB,MAAMC,YAAAA,OAAO,MAAM,aAAA;AAAA,IAAa;AAAA,IAE/D,UAAU;AAAA,MACR;AAAA,QACE,IAAI;AAAA,QACJ,OAAO;AAAA,QACP,SAAS;AAAA,QACT,OAAO;AAAA,UACL,EAAE,OAAO,WAAW,MAAM,iBAAA;AAAA,UAC1B,EAAE,OAAO,WAAW,MAAM,wBAAA;AAAA,UAC1B,EAAE,OAAO,WAAW,MAAM,yBAAA;AAAA,QAAyB;AAAA,MACrD;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMC,YAAAA;AAAAA,IACN,OAAO;AAAA,MACL,EAAE,MAAM,aAAa,MAAMA,YAAAA,WAAW,MAAM,cAAc,OAAO,IAAA;AAAA,MACjE,EAAE,MAAM,uBAAuB,MAAMC,kBAAM,MAAM,SAAS,OAAO,QAAQ,WAAW,UAAA;AAAA,MACpF,EAAE,MAAM,gBAAgB,MAAMC,YAAAA,eAAe,MAAM,gBAAA;AAAA,MACnD;AAAA,QACE,MAAM;AAAA,QACN,MAAML,YAAAA;AAAAA,QACN,UAAU;AAAA,UACR,EAAE,MAAM,aAAa,MAAM,SAAA;AAAA,UAC3B,EAAE,MAAM,cAAc,MAAM,WAAA;AAAA,UAC5B,EAAE,MAAM,WAAW,MAAM,cAAA;AAAA,UACzB,EAAE,MAAM,iBAAiB,MAAM,aAAA;AAAA,QAAa;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAMM,YAAAA;AAAAA,IACN,OAAO;AAAA,MACL,EAAE,MAAM,cAAc,MAAMC,YAAAA,UAAU,MAAM,eAAe,OAAO,SAAA;AAAA,MAClE,EAAE,MAAM,sBAAsB,MAAMV,yBAAa,MAAM,YAAY,OAAO,QAAQ,WAAW,UAAA;AAAA,MAC7F;AAAA,QACE,MAAM;AAAA,QACN,MAAMS,YAAAA;AAAAA,QACN,UAAU;AAAA,UACR,EAAE,MAAM,cAAc,MAAM,WAAA;AAAA,UAC5B,EAAE,MAAM,qBAAqB,MAAM,UAAA;AAAA,UACnC,EAAE,MAAM,wBAAwB,MAAM,SAAA;AAAA,QAAS;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAAA,EAEF;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,MAAME,YAAAA;AAAAA,IACN,OAAO;AAAA,MACL,EAAE,MAAM,YAAY,MAAMC,YAAAA,MAAM,MAAM,aAAa,OAAO,IAAA;AAAA,MAC1D,EAAE,MAAM,mBAAmB,MAAMd,YAAAA,aAAa,MAAM,aAAa,OAAO,IAAA;AAAA,MACxE,EAAE,MAAM,kBAAkB,MAAMe,YAAAA,SAAS,MAAM,eAAA;AAAA,MAC/C,EAAE,MAAM,YAAY,MAAMd,YAAAA,YAAY,MAAM,aAAa,OAAO,IAAA;AAAA,IAAI;AAAA,EACtE;AAEJ;AAEO,MAAM,qBAA2C;AAAA,EACtD;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,MACL,EAAE,OAAO,YAAY,MAAMe,YAAAA,OAAO,UAAU,MAAM,MAAM,YAAY,EAAA;AAAA,MACpE,EAAE,OAAO,WAAW,MAAMC,YAAAA,QAAQ,UAAU,MAAM,MAAM,WAAW,EAAA;AAAA,MACnE,EAAE,OAAO,iBAAiB,MAAMC,YAAAA,UAAU,UAAU,MAAM,UAAU,MAAM,MAAM,YAAY,EAAA;AAAA,IAAE;AAAA,EAChG;AAAA,EAEF;AAAA,IACE,SAAS;AAAA,IACT,OAAO;AAAA,MACL,EAAE,OAAO,gBAAgB,MAAMC,kBAAM,UAAU,MAAM,UAAU,MAAM,MAAM,cAAc,EAAA;AAAA,MACzF,EAAE,OAAO,QAAQ,MAAMC,YAAAA,QAAQ,UAAU,MAAM,aAAa,MAAM,UAAU,MAAM,MAAM,MAAM,EAAA;AAAA,IAAE;AAAA,EAClG;AAEJ;AAEO,MAAM,0BAAgD;AAAA,EAC3D;AAAA,IACE,IAAI;AAAA,IACJ,MAAMC,YAAAA;AAAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,IAAI;AAAA,IACJ,MAAMC,YAAAA;AAAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,IAAI;AAAA,IACJ,MAAMC,YAAAA;AAAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,MAAM;AAAA,EAAA;AAAA,EAER;AAAA,IACE,IAAI;AAAA,IACJ,MAAMC,YAAAA;AAAAA,IACN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAEV;AAEO,MAAM,qBAAsC;AAAA,EACjD,EAAE,IAAI,MAAM,MAAM,gBAAgB,UAAU,MAAM,OAAO,WAAW,SAAS,0CAA0C,MAAM,SAAS,QAAQ,KAAA;AAAA,EAC9I,EAAE,IAAI,MAAM,MAAM,kBAAkB,UAAU,MAAM,OAAO,WAAW,SAAS,mDAAmD,MAAM,UAAU,QAAQ,MAAM,OAAO,KAAA;AAAA,EACvK,EAAE,IAAI,MAAM,MAAM,gBAAgB,UAAU,MAAM,OAAO,WAAW,SAAS,wCAAwC,MAAM,MAAA;AAAA,EAC3H,EAAE,IAAI,MAAM,MAAM,cAAc,UAAU,MAAM,OAAO,WAAW,SAAS,qCAAqC,MAAM,QAAA;AACxH;AAEO,MAAM,0BAA+C;AAAA,EAC1D,EAAE,IAAI,UAAU,OAAO,WAAW,MAAMC,YAAAA,QAAA;AAAA,EACxC,EAAE,IAAI,SAAS,OAAO,SAAS,MAAMC,YAAAA,IAAA;AAAA,EACrC,EAAE,IAAI,QAAQ,OAAO,UAAU,MAAMC,YAAAA,KAAA;AACvC;AAIO,MAAM,iBAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,OAAO;AAAA,EACP,UAAU;AACZ;AAEO,MAAM,2BAAmD;AAAA,EAC9D,EAAE,IAAI,SAAS,OAAO,UAAU,MAAMC,YAAAA,UAAA;AAAA,EACtC,EAAE,IAAI,WAAW,OAAO,YAAY,MAAMC,YAAAA,gBAAA;AAC5C;;;;;;;;"}
1
+ {"version":3,"file":"app-shell-mocks-oO_IV3Gw.cjs","sources":["../../src/preview/mocks/app-shell-mocks.ts"],"sourcesContent":["import {\n Inbox,\n Contact,\n Megaphone,\n Brain,\n Settings as SettingsIcon,\n LayoutGrid,\n Target,\n Trophy,\n Tag,\n Reply,\n Star,\n GraduationCap,\n Activity,\n AlertCircle,\n Plug,\n ListOrdered,\n Network,\n Users,\n Ticket,\n Plus,\n Settings,\n UserCheck,\n AlertTriangle,\n Sparkles,\n CreditCard,\n Sun,\n Moon,\n Monitor,\n LogOut,\n Maximize2,\n LayoutPanelLeft,\n} from \"lucide-react\";\nimport type { SidebarContext } from \"../../components/ui/MenuSidebar\";\nimport type {\n HeaderCommandGroup,\n HeaderMessage,\n HeaderNotification,\n HeaderThemeOption,\n} from \"../../components/ui/Header\";\nimport type {\n AppShellUser,\n AppShellLayoutOption,\n} from \"../../components/ui/AppShell\";\n\n/**\n * Mocks compartilhados pelo AppShellDoc + pages de showcase que precisam de uma\n * \"casca de app realista\". Em produção, esses dados viriam do backend/contexto da\n * app — aqui são estáticos pra demonstração consistente.\n */\n\nexport const APP_SHELL_CONTEXTS: SidebarContext[] = [\n {\n id: \"inbox\",\n label: \"Inbox / Operação\",\n icon: Inbox,\n items: [\n { name: \"Atendimentos\", icon: Inbox, href: \"#atendimentos\", badge: \"8\", badgeKind: \"counter\" },\n { name: \"Chat Interno\", icon: ListOrdered, href: \"#chat-interno\", badge: \"2\" },\n { name: \"Agendamentos\", icon: LayoutGrid, href: \"#agendamentos\", badge: \"8\" },\n {\n name: \"Escalation\",\n icon: AlertCircle,\n subitems: [\n { name: \"Dashboard\", href: \"#esc-dash\" },\n { name: \"Departamentos\", href: \"#esc-deps\" },\n { name: \"Regras\", href: \"#esc-rules\" },\n ],\n },\n ],\n sections: [\n {\n id: \"filtros-rapidos\",\n label: \"Filtros rápidos\",\n variant: \"bookmark\",\n items: [\n { color: \"#1cb280\", name: \"Royais — In progress\" },\n { color: \"#f6b51e\", name: \"Licenciados — Waiting\" },\n { color: \"#8754ec\", name: \"IA — handover pendente\" },\n { color: \"#ef4444\", name: \"SLA crítico (> 30min)\" },\n ],\n },\n {\n id: \"mensagens-rapidas\",\n label: \"Mensagens rápidas\",\n variant: \"chat\",\n items: [\n { name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", status: \"online\" },\n { name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", status: \"online\" },\n { name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", status: \"offline\" },\n { name: \"João Pedro\", initials: \"JP\", color: \"#1cb280\", status: \"online\" },\n { name: \"Beatriz Almeida\", initials: \"BA\", color: \"#0088cc\", status: \"online\" },\n ],\n },\n ],\n },\n {\n id: \"crm\",\n label: \"CRM\",\n icon: Contact,\n items: [\n { name: \"Contatos\", icon: Contact, href: \"#contatos\", badge: \"2.1k\" },\n { name: \"Segmentos\", icon: Target, href: \"#segmentos\" },\n { name: \"Tiers\", icon: Trophy, href: \"#tiers\" },\n { name: \"Tags\", icon: Tag, href: \"#tags\" },\n { name: \"Respostas Rápidas\", icon: Reply, href: \"#respostas\" },\n ],\n sections: [\n {\n id: \"listas-salvas\",\n label: \"Listas salvas\",\n variant: \"bookmark\",\n items: [\n { color: \"#0088cc\", name: \"Top 100 ativos\" },\n { color: \"#f59e0b\", name: \"Sem cadastro completo\" },\n { color: \"#1cb280\", name: \"Convertidos último mês\" },\n ],\n },\n ],\n },\n {\n id: \"engajamento\",\n label: \"Engajamento\",\n icon: Megaphone,\n items: [\n { name: \"Campanhas\", icon: Megaphone, href: \"#campanhas\", badge: \"6\" },\n { name: \"Pesquisa Satisfação\", icon: Star, href: \"#csat\", badge: \"CSAT\", badgeKind: \"success\" },\n { name: \"Capacitações\", icon: GraduationCap, href: \"#capacitacoes\" },\n {\n name: \"Green Points\",\n icon: Trophy,\n subitems: [\n { name: \"My Points\", href: \"#gp-my\" },\n { name: \"Management\", href: \"#gp-mgmt\" },\n { name: \"Periods\", href: \"#gp-periods\" },\n { name: \"Configuration\", href: \"#gp-config\" },\n ],\n },\n ],\n },\n {\n id: \"ia\",\n label: \"IA — Agente Sol\",\n icon: Brain,\n items: [\n { name: \"Sol Traces\", icon: Activity, href: \"#sol-traces\", badge: \"94 pgs\" },\n { name: \"Central de Alertas\", icon: AlertCircle, href: \"#alertas\", badge: \"1085\", badgeKind: \"counter\" },\n {\n name: \"AI Rules\",\n icon: Brain,\n subitems: [\n { name: \"Provenance\", href: \"#ai-prov\" },\n { name: \"Embeddings Health\", href: \"#ai-emb\" },\n { name: \"Few-shots Candidates\", href: \"#ai-fs\" },\n ],\n },\n ],\n },\n {\n id: \"config\",\n label: \"Configuração\",\n icon: SettingsIcon,\n items: [\n { name: \"Conexões\", icon: Plug, href: \"#conexoes\", badge: \"2\" },\n { name: \"Filas & Chatbot\", icon: ListOrdered, href: \"#filas-cb\", badge: \"8\" },\n { name: \"Regras de Fila\", icon: Network, href: \"#regras-fila\" },\n { name: \"Channels\", icon: LayoutGrid, href: \"#channels\", badge: \"2\" },\n ],\n },\n];\n\nexport const APP_SHELL_COMMANDS: HeaderCommandGroup[] = [\n {\n heading: \"Navegação rápida\",\n items: [\n { label: \"Clientes\", icon: Users, onSelect: () => alert(\"→ Clientes\") },\n { label: \"Tickets\", icon: Ticket, onSelect: () => alert(\"→ Tickets\") },\n { label: \"Configurações\", icon: Settings, shortcut: \"⌘,\", onSelect: () => alert(\"→ Settings\") },\n ],\n },\n {\n heading: \"Ações\",\n items: [\n { label: \"Novo cliente\", icon: Plus, shortcut: \"⌘N\", onSelect: () => alert(\"Novo cliente\") },\n { label: \"Sair\", icon: LogOut, shortcut: \"⌘Q\", destructive: true, onSelect: () => alert(\"Sair\") },\n ],\n },\n];\n\nexport const APP_SHELL_NOTIFICATIONS: HeaderNotification[] = [\n {\n id: \"n1\",\n icon: UserCheck,\n color: \"#10B881\",\n title: \"Aline Castro mencionou você\",\n body: 'em \"Royais — In progress\" comentou: \"@você pode revisar?\"',\n time: \"2 min\",\n unread: true,\n kind: \"mention\",\n },\n {\n id: \"n2\",\n icon: AlertTriangle,\n color: \"#f59e0b\",\n title: \"SLA em risco\",\n body: \"Ticket #20260504-00031 sem resposta há 28 minutos\",\n time: \"15 min\",\n unread: true,\n kind: \"alert\",\n },\n {\n id: \"n3\",\n icon: Sparkles,\n color: \"#8754ec\",\n title: \"Sol Traces atualizado\",\n body: \"Nova versão com 12 melhorias na qualidade das respostas\",\n time: \"1 h\",\n unread: true,\n kind: \"system\",\n },\n {\n id: \"n4\",\n icon: CreditCard,\n color: \"#0FC589\",\n title: \"Fatura paga\",\n body: \"Pagamento de R$ 4.250,00 confirmado.\",\n time: \"3 h\",\n kind: \"billing\",\n },\n];\n\nexport const APP_SHELL_MESSAGES: HeaderMessage[] = [\n { id: \"m1\", name: \"Aline Castro\", initials: \"AC\", color: \"#f59e0b\", preview: \"Olá! Você pode revisar o ticket #1234?\", time: \"2 min\", unread: true },\n { id: \"m2\", name: \"Equipe Suporte\", initials: \"ES\", color: \"#0088cc\", preview: \"Bruno: pessoal, alguém disponível pra cobrir...\", time: \"12 min\", unread: true, group: true },\n { id: \"m3\", name: \"Carlos Souza\", initials: \"CS\", color: \"#8754ec\", preview: \"Boa tarde! Aquele cliente confirmou.\", time: \"1 h\" },\n { id: \"m4\", name: \"Maria Lima\", initials: \"ML\", color: \"#ef4444\", preview: \"Reunião remarcada pra amanhã 10h.\", time: \"ontem\" },\n];\n\nexport const APP_SHELL_THEME_OPTIONS: HeaderThemeOption[] = [\n { id: \"system\", label: \"Sistema\", icon: Monitor },\n { id: \"light\", label: \"Claro\", icon: Sun },\n { id: \"dark\", label: \"Escuro\", icon: Moon },\n];\n\n/* ── User menu (avatar do rail) ───────────────────────────────────── */\n\nexport const APP_SHELL_USER: AppShellUser = {\n name: \"Sergio Vieira\",\n email: \"sergio.vieira@igreenenergy.com.br\",\n initials: \"SV\",\n};\n\nexport const APP_SHELL_LAYOUT_OPTIONS: AppShellLayoutOption[] = [\n { id: \"fluid\", label: \"Fluido\", icon: Maximize2 },\n { id: \"compact\", label: \"Compacto\", icon: LayoutPanelLeft },\n];\n"],"names":["Inbox","ListOrdered","LayoutGrid","AlertCircle","Contact","Target","Trophy","Tag","Reply","Megaphone","Star","GraduationCap","Brain","Activity","SettingsIcon","Plug","Network","Users","Ticket","Settings","Plus","LogOut","UserCheck","AlertTriangle","Sparkles","CreditCard","Monitor","Sun","Moon","Maximize2","LayoutPanelLeft"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-v2-mocks-BV9Wha_Z.cjs","sources":["../../src/preview/pages/ChatV2/chat-v2-mocks.ts"],"sourcesContent":["import {\r\n CheckCircle2,\r\n Clock,\r\n Crown,\r\n Inbox,\r\n Mail,\r\n MessageSquare,\r\n Send,\r\n Shield,\r\n Users,\r\n} from \"lucide-react\";\r\nimport type {\r\n ChannelId,\r\n Conversation,\r\n ConversationDetail,\r\n ConversationStatus,\r\n FilterGroupKey,\r\n FilterItem,\r\n Message,\r\n} from \"./chat-v2.types\";\r\n\r\n/* ── Lookups por canal ──────────────────────────────────────────── */\r\n\r\nexport const CHANNEL_LABEL: Record<ChannelId, string> = {\r\n whatsapp: \"WhatsApp\",\r\n telegram: \"Telegram\",\r\n instagram: \"Instagram\",\r\n webchat: \"Web Chat\",\r\n email: \"Email\",\r\n};\r\n\r\nexport const CHANNEL_HEX: Record<ChannelId, string> = {\r\n whatsapp: \"#25d366\",\r\n telegram: \"#0088cc\",\r\n instagram: \"#e1306c\",\r\n webchat: \"#0a3a2e\",\r\n email: \"#8754ec\",\r\n};\r\n\r\n/* ── Status dot (cor por status na sidebar/header) ──────────────── */\r\n\r\nexport const STATUS_DOT: Record<ConversationStatus, string> = {\r\n attending: \"var(--color-fg-success)\",\r\n waiting: \"var(--color-fg-warning)\",\r\n ai: \"var(--color-fg-info)\",\r\n};\r\n\r\n/* ── Conversations (fila) ───────────────────────────────────────── */\r\n\r\nexport const CONVERSATIONS: Conversation[] = [\r\n {\r\n id: \"#A-2453\", name: \"Maria Hernandez\", initials: \"MH\", avatarHex: \"#f59e0b\",\r\n channel: \"whatsapp\", tag: \"Royal\", tagKind: \"warning\",\r\n status: \"attending\", statusLabel: \"Em atendimento\",\r\n last: \"Quanto seria o investimento inicial?\", time: \"10:42\", unread: 0,\r\n },\r\n {\r\n id: \"#A-2455\", name: \"James Johnson\", initials: \"JJ\", avatarHex: \"#0a3a2e\",\r\n channel: \"telegram\", tag: \"Licenciado\", tagKind: \"info\",\r\n status: \"waiting\", statusLabel: \"Em espera\",\r\n last: \"Hey, how are you?\", time: \"10:30\", unread: 2,\r\n },\r\n {\r\n id: \"#A-2458\", name: \"Camila Ribeiro\", initials: \"CR\", avatarHex: \"#8754ec\",\r\n channel: \"instagram\", tag: \"Royal\", tagKind: \"warning\",\r\n status: \"attending\", statusLabel: \"Em atendimento\",\r\n last: \"Vou enviar os documentos hoje à tarde\", time: \"09:55\", unread: 1,\r\n },\r\n {\r\n id: \"#A-2461\", name: \"Roberto Souza\", initials: \"RS\", avatarHex: \"#0088cc\",\r\n channel: \"whatsapp\", tag: \"Lead\", tagKind: \"success\",\r\n status: \"ai\", statusLabel: \"IA\",\r\n last: \"Obrigado! Vou avaliar a proposta.\", time: \"Ontem\", unread: 0,\r\n },\r\n {\r\n id: \"#A-2466\", name: \"Ana Costa\", initials: \"AC\", avatarHex: \"#1cb280\",\r\n channel: \"email\", tag: \"Licenciado\", tagKind: \"info\",\r\n status: \"waiting\", statusLabel: \"Em espera\",\r\n last: \"Bom dia! Quando podemos conversar?\", time: \"Ontem\", unread: 0,\r\n },\r\n {\r\n id: \"#A-2470\", name: \"Pedro Pereira\", initials: \"PP\", avatarHex: \"#ef4444\",\r\n channel: \"webchat\", tag: \"Lead\", tagKind: \"success\",\r\n status: \"attending\", statusLabel: \"Em atendimento\",\r\n last: \"Recebi os materiais, muito bons!\", time: \"Seg\", unread: 0,\r\n },\r\n];\r\n\r\n/* ── Filtros (sidebar esquerda) ─────────────────────────────────── */\r\n\r\nexport const STATUS_WORKFLOW: FilterItem[] = [\r\n { id: \"open\", name: \"Abertos\", count: 24, hasUnread: true, icon: Inbox },\r\n { id: \"pending\", name: \"Pendentes\", count: 6, icon: Clock },\r\n { id: \"resolved\", name: \"Resolvidos\", count: 18, icon: CheckCircle2 },\r\n];\r\n\r\nexport const CHANNELS_LIST: FilterItem[] = [\r\n { id: \"whatsapp\", name: \"WhatsApp\", count: 12, hasUnread: true, color: \"#25d366\", icon: MessageSquare },\r\n { id: \"telegram\", name: \"Telegram\", count: 4, color: \"#0088cc\", icon: Send },\r\n { id: \"instagram\", name: \"Instagram\", count: 5, color: \"#e1306c\", icon: MessageSquare },\r\n { id: \"webchat\", name: \"Web Chat\", count: 2, color: \"#0a3a2e\", icon: MessageSquare },\r\n { id: \"email\", name: \"Email\", count: 1, color: \"#8754ec\", icon: Mail },\r\n];\r\n\r\nexport const CATEGORIES_LIST: FilterItem[] = [\r\n { id: \"royal\", name: \"Royals\", count: 9, color: \"#f6b51e\", icon: Crown },\r\n { id: \"licenciado\", name: \"Licenciados\", count: 11, color: \"#8754ec\", icon: Shield },\r\n { id: \"lead\", name: \"Leads\", count: 4, color: \"#70c748\", icon: Users },\r\n];\r\n\r\nexport const STATUS_INNER_LIST: FilterItem[] = [\r\n { id: \"attending\", name: \"Em atendimento\", count: 8, color: \"var(--color-fg-success)\" },\r\n { id: \"waiting\", name: \"Em espera\", count: 7, color: \"var(--color-fg-warning)\" },\r\n { id: \"ai\", name: \"IA\", count: 9, color: \"var(--color-fg-info)\" },\r\n];\r\n\r\n/* ── Ordem canônica dos 4 grupos de filtros ───────────────────── */\r\n\r\n/**\r\n * Fonte única dos grupos de filtros. Consumido por `FiltersColumn` (com\r\n * `title`) e `FiltersRail` (sem `title`, divisor entre grupos).\r\n */\r\nexport const FILTER_GROUPS: {\r\n group: FilterGroupKey;\r\n title: string;\r\n items: FilterItem[];\r\n}[] = [\r\n { group: \"status\", title: \"STATUS\", items: STATUS_WORKFLOW },\r\n { group: \"channels\", title: \"CANAIS\", items: CHANNELS_LIST },\r\n { group: \"categories\", title: \"CATEGORIAS\", items: CATEGORIES_LIST },\r\n { group: \"innerStatus\", title: \"STATUS INTERNO\", items: STATUS_INNER_LIST },\r\n];\r\n\r\n/* ── Conversation details (painel direito) ──────────────────────── */\r\n\r\nexport const CONVERSATION_DETAILS: Record<string, ConversationDetail> = {\r\n \"#A-2453\": {\r\n phone: \"+55 11 98765-4321\",\r\n email: \"maria.hernandez@example.com\",\r\n firstContact: \"12 mar 2024\",\r\n assignedTo: \"Você\",\r\n createdAt: \"Hoje, 09:30\",\r\n extraTags: [\"VIP\", \"Setor financeiro\"],\r\n history: [\r\n { id: \"#A-2401\", date: \"20 abr 2024\", subject: \"Dúvida sobre comissão\", status: \"Resolvido\" },\r\n { id: \"#A-2389\", date: \"15 abr 2024\", subject: \"Reativação de conta\", status: \"Resolvido\" },\r\n { id: \"#A-2367\", date: \"10 abr 2024\", subject: \"Materiais exclusivos\", status: \"Resolvido\" },\r\n ],\r\n },\r\n};\r\n\r\nexport const DEFAULT_DETAIL: ConversationDetail = {\r\n phone: \"—\",\r\n email: \"—\",\r\n firstContact: \"—\",\r\n assignedTo: \"—\",\r\n createdAt: \"—\",\r\n extraTags: [],\r\n history: [],\r\n};\r\n\r\n/* ── Sample messages (thread inicial da conversa ativa) ─────────── */\r\n\r\nexport const SAMPLE_MESSAGES: Message[] = [\r\n { id: 1, from: \"them\", text: \"Olá! Bom dia 👋\", time: \"10:30\" },\r\n { id: 2, from: \"them\", text: \"Vi a oferta de vocês para licenciados Royal e gostaria de mais informações.\", time: \"10:30\" },\r\n { id: 3, from: \"me\", text: \"Bom dia, Maria! Tudo bem? 😊 Posso te ajudar com toda alegria.\", time: \"10:32\", status: \"read\" },\r\n { id: 4, from: \"me\", text: \"A oferta para Royals inclui 30% de comissão recorrente, suporte prioritário e materiais exclusivos.\", time: \"10:32\", status: \"read\" },\r\n { id: 5, from: \"them\", text: \"Have good budget for the project.\", time: \"10:42\" },\r\n { id: 6, from: \"them\", text: \"Quanto seria o investimento inicial?\", time: \"10:42\" },\r\n];\r\n"],"names":["Inbox","Clock","CheckCircle2","MessageSquare","Send","Mail","Crown","Shield","Users"],"mappings":";;AAuBO,MAAM,gBAA2C;AAAA,EACtD,UAAW;AAAA,EACX,UAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAW;AAAA,EACX,OAAW;AACb;AAEO,MAAM,cAAyC;AAAA,EACpD,UAAW;AAAA,EACX,UAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAW;AAAA,EACX,OAAW;AACb;AAIO,MAAM,aAAiD;AAAA,EAC5D,WAAW;AAAA,EACX,SAAW;AAAA,EACX,IAAW;AACb;AAIO,MAAM,gBAAgC;AAAA,EAC3C;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAmB,UAAU;AAAA,IAAM,WAAW;AAAA,IACnE,SAAS;AAAA,IAAY,KAAK;AAAA,IAAS,SAAS;AAAA,IAC5C,QAAQ;AAAA,IAAa,aAAa;AAAA,IAClC,MAAM;AAAA,IAAwC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAEvE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAiB,UAAU;AAAA,IAAM,WAAW;AAAA,IACjE,SAAS;AAAA,IAAY,KAAK;AAAA,IAAc,SAAS;AAAA,IACjD,QAAQ;AAAA,IAAW,aAAa;AAAA,IAChC,MAAM;AAAA,IAAqB,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAEpD;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAkB,UAAU;AAAA,IAAM,WAAW;AAAA,IAClE,SAAS;AAAA,IAAa,KAAK;AAAA,IAAS,SAAS;AAAA,IAC7C,QAAQ;AAAA,IAAa,aAAa;AAAA,IAClC,MAAM;AAAA,IAAyC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAExE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAiB,UAAU;AAAA,IAAM,WAAW;AAAA,IACjE,SAAS;AAAA,IAAY,KAAK;AAAA,IAAQ,SAAS;AAAA,IAC3C,QAAQ;AAAA,IAAM,aAAa;AAAA,IAC3B,MAAM;AAAA,IAAqC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAEpE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAa,UAAU;AAAA,IAAM,WAAW;AAAA,IAC7D,SAAS;AAAA,IAAS,KAAK;AAAA,IAAc,SAAS;AAAA,IAC9C,QAAQ;AAAA,IAAW,aAAa;AAAA,IAChC,MAAM;AAAA,IAAsC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAErE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAiB,UAAU;AAAA,IAAM,WAAW;AAAA,IACjE,SAAS;AAAA,IAAW,KAAK;AAAA,IAAQ,SAAS;AAAA,IAC1C,QAAQ;AAAA,IAAa,aAAa;AAAA,IAClC,MAAM;AAAA,IAAoC,MAAM;AAAA,IAAO,QAAQ;AAAA,EAAA;AAEnE;AAIO,MAAM,kBAAgC;AAAA,EAC3C,EAAE,IAAI,QAAY,MAAM,WAAc,OAAO,IAAI,WAAW,MAAO,MAAMA,kBAAA;AAAA,EACzE,EAAE,IAAI,WAAY,MAAM,aAAc,OAAO,GAAsB,MAAMC,kBAAA;AAAA,EACzE,EAAE,IAAI,YAAY,MAAM,cAAc,OAAO,IAAsB,MAAMC,YAAAA,aAAA;AAC3E;AAEO,MAAM,gBAA8B;AAAA,EACzC,EAAE,IAAI,YAAa,MAAM,YAAa,OAAO,IAAI,WAAW,MAAM,OAAO,WAAW,MAAMC,YAAAA,cAAA;AAAA,EAC1F,EAAE,IAAI,YAAa,MAAM,YAAa,OAAO,GAAsB,OAAO,WAAW,MAAMC,iBAAA;AAAA,EAC3F,EAAE,IAAI,aAAa,MAAM,aAAa,OAAO,GAAsB,OAAO,WAAW,MAAMD,0BAAA;AAAA,EAC3F,EAAE,IAAI,WAAa,MAAM,YAAa,OAAO,GAAsB,OAAO,WAAW,MAAMA,0BAAA;AAAA,EAC3F,EAAE,IAAI,SAAa,MAAM,SAAa,OAAO,GAAsB,OAAO,WAAW,MAAME,YAAAA,KAAA;AAC7F;AAEO,MAAM,kBAAgC;AAAA,EAC3C,EAAE,IAAI,SAAc,MAAM,UAAe,OAAO,GAAI,OAAO,WAAW,MAAMC,kBAAA;AAAA,EAC5E,EAAE,IAAI,cAAc,MAAM,eAAe,OAAO,IAAI,OAAO,WAAW,MAAMC,mBAAA;AAAA,EAC5E,EAAE,IAAI,QAAc,MAAM,SAAe,OAAO,GAAI,OAAO,WAAW,MAAMC,YAAAA,MAAA;AAC9E;AAEO,MAAM,oBAAkC;AAAA,EAC7C,EAAE,IAAI,aAAa,MAAM,kBAAkB,OAAO,GAAG,OAAO,0BAAA;AAAA,EAC5D,EAAE,IAAI,WAAa,MAAM,aAAkB,OAAO,GAAG,OAAO,0BAAA;AAAA,EAC5D,EAAE,IAAI,MAAa,MAAM,MAAkB,OAAO,GAAG,OAAO,uBAAA;AAC9D;AAQO,MAAM,gBAIP;AAAA,EACJ,EAAE,OAAO,UAAe,OAAO,UAAkB,OAAO,gBAAA;AAAA,EACxD,EAAE,OAAO,YAAe,OAAO,UAAkB,OAAO,cAAA;AAAA,EACxD,EAAE,OAAO,cAAe,OAAO,cAAkB,OAAO,gBAAA;AAAA,EACxD,EAAE,OAAO,eAAe,OAAO,kBAAkB,OAAO,kBAAA;AAC1D;AAIO,MAAM,uBAA2D;AAAA,EACtE,WAAW;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW,CAAC,OAAO,kBAAkB;AAAA,IACrC,SAAS;AAAA,MACP,EAAE,IAAI,WAAW,MAAM,eAAe,SAAS,yBAA4B,QAAQ,YAAA;AAAA,MACnF,EAAE,IAAI,WAAW,MAAM,eAAe,SAAS,uBAA4B,QAAQ,YAAA;AAAA,MACnF,EAAE,IAAI,WAAW,MAAM,eAAe,SAAS,wBAA4B,QAAQ,YAAA;AAAA,IAAY;AAAA,EACjG;AAEJ;AAEO,MAAM,iBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW,CAAA;AAAA,EACX,SAAS,CAAA;AACX;AAIO,MAAM,kBAA6B;AAAA,EACxC,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,mBAAmB,MAAM,QAAA;AAAA,EACtD,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,+EAA+E,MAAM,QAAA;AAAA,EAClH,EAAE,IAAI,GAAG,MAAM,MAAQ,MAAM,kEAAkE,MAAM,SAAS,QAAQ,OAAA;AAAA,EACtH,EAAE,IAAI,GAAG,MAAM,MAAQ,MAAM,uGAAuG,MAAM,SAAS,QAAQ,OAAA;AAAA,EAC3J,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,qCAAqC,MAAM,QAAA;AAAA,EACxE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,wCAAwC,MAAM,QAAA;AAC7E;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"chat-v2-mocks-BV9Wha_Z.cjs","sources":["../../src/preview/pages/ChatV2/chat-v2-mocks.ts"],"sourcesContent":["import {\n CheckCircle2,\n Clock,\n Crown,\n Inbox,\n Mail,\n MessageSquare,\n Send,\n Shield,\n Users,\n} from \"lucide-react\";\nimport type {\n ChannelId,\n Conversation,\n ConversationDetail,\n ConversationStatus,\n FilterGroupKey,\n FilterItem,\n Message,\n} from \"./chat-v2.types\";\n\n/* ── Lookups por canal ──────────────────────────────────────────── */\n\nexport const CHANNEL_LABEL: Record<ChannelId, string> = {\n whatsapp: \"WhatsApp\",\n telegram: \"Telegram\",\n instagram: \"Instagram\",\n webchat: \"Web Chat\",\n email: \"Email\",\n};\n\nexport const CHANNEL_HEX: Record<ChannelId, string> = {\n whatsapp: \"#25d366\",\n telegram: \"#0088cc\",\n instagram: \"#e1306c\",\n webchat: \"#0a3a2e\",\n email: \"#8754ec\",\n};\n\n/* ── Status dot (cor por status na sidebar/header) ──────────────── */\n\nexport const STATUS_DOT: Record<ConversationStatus, string> = {\n attending: \"var(--color-fg-success)\",\n waiting: \"var(--color-fg-warning)\",\n ai: \"var(--color-fg-info)\",\n};\n\n/* ── Conversations (fila) ───────────────────────────────────────── */\n\nexport const CONVERSATIONS: Conversation[] = [\n {\n id: \"#A-2453\", name: \"Maria Hernandez\", initials: \"MH\", avatarHex: \"#f59e0b\",\n channel: \"whatsapp\", tag: \"Royal\", tagKind: \"warning\",\n status: \"attending\", statusLabel: \"Em atendimento\",\n last: \"Quanto seria o investimento inicial?\", time: \"10:42\", unread: 0,\n },\n {\n id: \"#A-2455\", name: \"James Johnson\", initials: \"JJ\", avatarHex: \"#0a3a2e\",\n channel: \"telegram\", tag: \"Licenciado\", tagKind: \"info\",\n status: \"waiting\", statusLabel: \"Em espera\",\n last: \"Hey, how are you?\", time: \"10:30\", unread: 2,\n },\n {\n id: \"#A-2458\", name: \"Camila Ribeiro\", initials: \"CR\", avatarHex: \"#8754ec\",\n channel: \"instagram\", tag: \"Royal\", tagKind: \"warning\",\n status: \"attending\", statusLabel: \"Em atendimento\",\n last: \"Vou enviar os documentos hoje à tarde\", time: \"09:55\", unread: 1,\n },\n {\n id: \"#A-2461\", name: \"Roberto Souza\", initials: \"RS\", avatarHex: \"#0088cc\",\n channel: \"whatsapp\", tag: \"Lead\", tagKind: \"success\",\n status: \"ai\", statusLabel: \"IA\",\n last: \"Obrigado! Vou avaliar a proposta.\", time: \"Ontem\", unread: 0,\n },\n {\n id: \"#A-2466\", name: \"Ana Costa\", initials: \"AC\", avatarHex: \"#1cb280\",\n channel: \"email\", tag: \"Licenciado\", tagKind: \"info\",\n status: \"waiting\", statusLabel: \"Em espera\",\n last: \"Bom dia! Quando podemos conversar?\", time: \"Ontem\", unread: 0,\n },\n {\n id: \"#A-2470\", name: \"Pedro Pereira\", initials: \"PP\", avatarHex: \"#ef4444\",\n channel: \"webchat\", tag: \"Lead\", tagKind: \"success\",\n status: \"attending\", statusLabel: \"Em atendimento\",\n last: \"Recebi os materiais, muito bons!\", time: \"Seg\", unread: 0,\n },\n];\n\n/* ── Filtros (sidebar esquerda) ─────────────────────────────────── */\n\nexport const STATUS_WORKFLOW: FilterItem[] = [\n { id: \"open\", name: \"Abertos\", count: 24, hasUnread: true, icon: Inbox },\n { id: \"pending\", name: \"Pendentes\", count: 6, icon: Clock },\n { id: \"resolved\", name: \"Resolvidos\", count: 18, icon: CheckCircle2 },\n];\n\nexport const CHANNELS_LIST: FilterItem[] = [\n { id: \"whatsapp\", name: \"WhatsApp\", count: 12, hasUnread: true, color: \"#25d366\", icon: MessageSquare },\n { id: \"telegram\", name: \"Telegram\", count: 4, color: \"#0088cc\", icon: Send },\n { id: \"instagram\", name: \"Instagram\", count: 5, color: \"#e1306c\", icon: MessageSquare },\n { id: \"webchat\", name: \"Web Chat\", count: 2, color: \"#0a3a2e\", icon: MessageSquare },\n { id: \"email\", name: \"Email\", count: 1, color: \"#8754ec\", icon: Mail },\n];\n\nexport const CATEGORIES_LIST: FilterItem[] = [\n { id: \"royal\", name: \"Royals\", count: 9, color: \"#f6b51e\", icon: Crown },\n { id: \"licenciado\", name: \"Licenciados\", count: 11, color: \"#8754ec\", icon: Shield },\n { id: \"lead\", name: \"Leads\", count: 4, color: \"#70c748\", icon: Users },\n];\n\nexport const STATUS_INNER_LIST: FilterItem[] = [\n { id: \"attending\", name: \"Em atendimento\", count: 8, color: \"var(--color-fg-success)\" },\n { id: \"waiting\", name: \"Em espera\", count: 7, color: \"var(--color-fg-warning)\" },\n { id: \"ai\", name: \"IA\", count: 9, color: \"var(--color-fg-info)\" },\n];\n\n/* ── Ordem canônica dos 4 grupos de filtros ───────────────────── */\n\n/**\n * Fonte única dos grupos de filtros. Consumido por `FiltersColumn` (com\n * `title`) e `FiltersRail` (sem `title`, divisor entre grupos).\n */\nexport const FILTER_GROUPS: {\n group: FilterGroupKey;\n title: string;\n items: FilterItem[];\n}[] = [\n { group: \"status\", title: \"STATUS\", items: STATUS_WORKFLOW },\n { group: \"channels\", title: \"CANAIS\", items: CHANNELS_LIST },\n { group: \"categories\", title: \"CATEGORIAS\", items: CATEGORIES_LIST },\n { group: \"innerStatus\", title: \"STATUS INTERNO\", items: STATUS_INNER_LIST },\n];\n\n/* ── Conversation details (painel direito) ──────────────────────── */\n\nexport const CONVERSATION_DETAILS: Record<string, ConversationDetail> = {\n \"#A-2453\": {\n phone: \"+55 11 98765-4321\",\n email: \"maria.hernandez@example.com\",\n firstContact: \"12 mar 2024\",\n assignedTo: \"Você\",\n createdAt: \"Hoje, 09:30\",\n extraTags: [\"VIP\", \"Setor financeiro\"],\n history: [\n { id: \"#A-2401\", date: \"20 abr 2024\", subject: \"Dúvida sobre comissão\", status: \"Resolvido\" },\n { id: \"#A-2389\", date: \"15 abr 2024\", subject: \"Reativação de conta\", status: \"Resolvido\" },\n { id: \"#A-2367\", date: \"10 abr 2024\", subject: \"Materiais exclusivos\", status: \"Resolvido\" },\n ],\n },\n};\n\nexport const DEFAULT_DETAIL: ConversationDetail = {\n phone: \"—\",\n email: \"—\",\n firstContact: \"—\",\n assignedTo: \"—\",\n createdAt: \"—\",\n extraTags: [],\n history: [],\n};\n\n/* ── Sample messages (thread inicial da conversa ativa) ─────────── */\n\nexport const SAMPLE_MESSAGES: Message[] = [\n { id: 1, from: \"them\", text: \"Olá! Bom dia 👋\", time: \"10:30\" },\n { id: 2, from: \"them\", text: \"Vi a oferta de vocês para licenciados Royal e gostaria de mais informações.\", time: \"10:30\" },\n { id: 3, from: \"me\", text: \"Bom dia, Maria! Tudo bem? 😊 Posso te ajudar com toda alegria.\", time: \"10:32\", status: \"read\" },\n { id: 4, from: \"me\", text: \"A oferta para Royals inclui 30% de comissão recorrente, suporte prioritário e materiais exclusivos.\", time: \"10:32\", status: \"read\" },\n { id: 5, from: \"them\", text: \"Have good budget for the project.\", time: \"10:42\" },\n { id: 6, from: \"them\", text: \"Quanto seria o investimento inicial?\", time: \"10:42\" },\n];\n"],"names":["Inbox","Clock","CheckCircle2","MessageSquare","Send","Mail","Crown","Shield","Users"],"mappings":";;AAuBO,MAAM,gBAA2C;AAAA,EACtD,UAAW;AAAA,EACX,UAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAW;AAAA,EACX,OAAW;AACb;AAEO,MAAM,cAAyC;AAAA,EACpD,UAAW;AAAA,EACX,UAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAW;AAAA,EACX,OAAW;AACb;AAIO,MAAM,aAAiD;AAAA,EAC5D,WAAW;AAAA,EACX,SAAW;AAAA,EACX,IAAW;AACb;AAIO,MAAM,gBAAgC;AAAA,EAC3C;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAmB,UAAU;AAAA,IAAM,WAAW;AAAA,IACnE,SAAS;AAAA,IAAY,KAAK;AAAA,IAAS,SAAS;AAAA,IAC5C,QAAQ;AAAA,IAAa,aAAa;AAAA,IAClC,MAAM;AAAA,IAAwC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAEvE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAiB,UAAU;AAAA,IAAM,WAAW;AAAA,IACjE,SAAS;AAAA,IAAY,KAAK;AAAA,IAAc,SAAS;AAAA,IACjD,QAAQ;AAAA,IAAW,aAAa;AAAA,IAChC,MAAM;AAAA,IAAqB,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAEpD;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAkB,UAAU;AAAA,IAAM,WAAW;AAAA,IAClE,SAAS;AAAA,IAAa,KAAK;AAAA,IAAS,SAAS;AAAA,IAC7C,QAAQ;AAAA,IAAa,aAAa;AAAA,IAClC,MAAM;AAAA,IAAyC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAExE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAiB,UAAU;AAAA,IAAM,WAAW;AAAA,IACjE,SAAS;AAAA,IAAY,KAAK;AAAA,IAAQ,SAAS;AAAA,IAC3C,QAAQ;AAAA,IAAM,aAAa;AAAA,IAC3B,MAAM;AAAA,IAAqC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAEpE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAa,UAAU;AAAA,IAAM,WAAW;AAAA,IAC7D,SAAS;AAAA,IAAS,KAAK;AAAA,IAAc,SAAS;AAAA,IAC9C,QAAQ;AAAA,IAAW,aAAa;AAAA,IAChC,MAAM;AAAA,IAAsC,MAAM;AAAA,IAAS,QAAQ;AAAA,EAAA;AAAA,EAErE;AAAA,IACE,IAAI;AAAA,IAAW,MAAM;AAAA,IAAiB,UAAU;AAAA,IAAM,WAAW;AAAA,IACjE,SAAS;AAAA,IAAW,KAAK;AAAA,IAAQ,SAAS;AAAA,IAC1C,QAAQ;AAAA,IAAa,aAAa;AAAA,IAClC,MAAM;AAAA,IAAoC,MAAM;AAAA,IAAO,QAAQ;AAAA,EAAA;AAEnE;AAIO,MAAM,kBAAgC;AAAA,EAC3C,EAAE,IAAI,QAAY,MAAM,WAAc,OAAO,IAAI,WAAW,MAAO,MAAMA,kBAAA;AAAA,EACzE,EAAE,IAAI,WAAY,MAAM,aAAc,OAAO,GAAsB,MAAMC,kBAAA;AAAA,EACzE,EAAE,IAAI,YAAY,MAAM,cAAc,OAAO,IAAsB,MAAMC,YAAAA,aAAA;AAC3E;AAEO,MAAM,gBAA8B;AAAA,EACzC,EAAE,IAAI,YAAa,MAAM,YAAa,OAAO,IAAI,WAAW,MAAM,OAAO,WAAW,MAAMC,YAAAA,cAAA;AAAA,EAC1F,EAAE,IAAI,YAAa,MAAM,YAAa,OAAO,GAAsB,OAAO,WAAW,MAAMC,iBAAA;AAAA,EAC3F,EAAE,IAAI,aAAa,MAAM,aAAa,OAAO,GAAsB,OAAO,WAAW,MAAMD,0BAAA;AAAA,EAC3F,EAAE,IAAI,WAAa,MAAM,YAAa,OAAO,GAAsB,OAAO,WAAW,MAAMA,0BAAA;AAAA,EAC3F,EAAE,IAAI,SAAa,MAAM,SAAa,OAAO,GAAsB,OAAO,WAAW,MAAME,YAAAA,KAAA;AAC7F;AAEO,MAAM,kBAAgC;AAAA,EAC3C,EAAE,IAAI,SAAc,MAAM,UAAe,OAAO,GAAI,OAAO,WAAW,MAAMC,kBAAA;AAAA,EAC5E,EAAE,IAAI,cAAc,MAAM,eAAe,OAAO,IAAI,OAAO,WAAW,MAAMC,mBAAA;AAAA,EAC5E,EAAE,IAAI,QAAc,MAAM,SAAe,OAAO,GAAI,OAAO,WAAW,MAAMC,YAAAA,MAAA;AAC9E;AAEO,MAAM,oBAAkC;AAAA,EAC7C,EAAE,IAAI,aAAa,MAAM,kBAAkB,OAAO,GAAG,OAAO,0BAAA;AAAA,EAC5D,EAAE,IAAI,WAAa,MAAM,aAAkB,OAAO,GAAG,OAAO,0BAAA;AAAA,EAC5D,EAAE,IAAI,MAAa,MAAM,MAAkB,OAAO,GAAG,OAAO,uBAAA;AAC9D;AAQO,MAAM,gBAIP;AAAA,EACJ,EAAE,OAAO,UAAe,OAAO,UAAkB,OAAO,gBAAA;AAAA,EACxD,EAAE,OAAO,YAAe,OAAO,UAAkB,OAAO,cAAA;AAAA,EACxD,EAAE,OAAO,cAAe,OAAO,cAAkB,OAAO,gBAAA;AAAA,EACxD,EAAE,OAAO,eAAe,OAAO,kBAAkB,OAAO,kBAAA;AAC1D;AAIO,MAAM,uBAA2D;AAAA,EACtE,WAAW;AAAA,IACT,OAAO;AAAA,IACP,OAAO;AAAA,IACP,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,WAAW,CAAC,OAAO,kBAAkB;AAAA,IACrC,SAAS;AAAA,MACP,EAAE,IAAI,WAAW,MAAM,eAAe,SAAS,yBAA4B,QAAQ,YAAA;AAAA,MACnF,EAAE,IAAI,WAAW,MAAM,eAAe,SAAS,uBAA4B,QAAQ,YAAA;AAAA,MACnF,EAAE,IAAI,WAAW,MAAM,eAAe,SAAS,wBAA4B,QAAQ,YAAA;AAAA,IAAY;AAAA,EACjG;AAEJ;AAEO,MAAM,iBAAqC;AAAA,EAChD,OAAO;AAAA,EACP,OAAO;AAAA,EACP,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,WAAW,CAAA;AAAA,EACX,SAAS,CAAA;AACX;AAIO,MAAM,kBAA6B;AAAA,EACxC,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,mBAAmB,MAAM,QAAA;AAAA,EACtD,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,+EAA+E,MAAM,QAAA;AAAA,EAClH,EAAE,IAAI,GAAG,MAAM,MAAQ,MAAM,kEAAkE,MAAM,SAAS,QAAQ,OAAA;AAAA,EACtH,EAAE,IAAI,GAAG,MAAM,MAAQ,MAAM,uGAAuG,MAAM,SAAS,QAAQ,OAAA;AAAA,EAC3J,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,qCAAqC,MAAM,QAAA;AAAA,EACxE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,wCAAwC,MAAM,QAAA;AAC7E;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"chat-v2-mocks-DvZRkhmz.mjs","sources":["../../src/preview/pages/ChatV2/chat-v2-mocks.ts"],"sourcesContent":["import {\r\n CheckCircle2,\r\n Clock,\r\n Crown,\r\n Inbox,\r\n Mail,\r\n MessageSquare,\r\n Send,\r\n Shield,\r\n Users,\r\n} from \"lucide-react\";\r\nimport type {\r\n ChannelId,\r\n Conversation,\r\n ConversationDetail,\r\n ConversationStatus,\r\n FilterGroupKey,\r\n FilterItem,\r\n Message,\r\n} from \"./chat-v2.types\";\r\n\r\n/* ── Lookups por canal ──────────────────────────────────────────── */\r\n\r\nexport const CHANNEL_LABEL: Record<ChannelId, string> = {\r\n whatsapp: \"WhatsApp\",\r\n telegram: \"Telegram\",\r\n instagram: \"Instagram\",\r\n webchat: \"Web Chat\",\r\n email: \"Email\",\r\n};\r\n\r\nexport const CHANNEL_HEX: Record<ChannelId, string> = {\r\n whatsapp: \"#25d366\",\r\n telegram: \"#0088cc\",\r\n instagram: \"#e1306c\",\r\n webchat: \"#0a3a2e\",\r\n email: \"#8754ec\",\r\n};\r\n\r\n/* ── Status dot (cor por status na sidebar/header) ──────────────── */\r\n\r\nexport const STATUS_DOT: Record<ConversationStatus, string> = {\r\n attending: \"var(--color-fg-success)\",\r\n waiting: \"var(--color-fg-warning)\",\r\n ai: \"var(--color-fg-info)\",\r\n};\r\n\r\n/* ── Conversations (fila) ───────────────────────────────────────── */\r\n\r\nexport const CONVERSATIONS: Conversation[] = [\r\n {\r\n id: \"#A-2453\", name: \"Maria Hernandez\", initials: \"MH\", avatarHex: \"#f59e0b\",\r\n channel: \"whatsapp\", tag: \"Royal\", tagKind: \"warning\",\r\n status: \"attending\", statusLabel: \"Em atendimento\",\r\n last: \"Quanto seria o investimento inicial?\", time: \"10:42\", unread: 0,\r\n },\r\n {\r\n id: \"#A-2455\", name: \"James Johnson\", initials: \"JJ\", avatarHex: \"#0a3a2e\",\r\n channel: \"telegram\", tag: \"Licenciado\", tagKind: \"info\",\r\n status: \"waiting\", statusLabel: \"Em espera\",\r\n last: \"Hey, how are you?\", time: \"10:30\", unread: 2,\r\n },\r\n {\r\n id: \"#A-2458\", name: \"Camila Ribeiro\", initials: \"CR\", avatarHex: \"#8754ec\",\r\n channel: \"instagram\", tag: \"Royal\", tagKind: \"warning\",\r\n status: \"attending\", statusLabel: \"Em atendimento\",\r\n last: \"Vou enviar os documentos hoje à tarde\", time: \"09:55\", unread: 1,\r\n },\r\n {\r\n id: \"#A-2461\", name: \"Roberto Souza\", initials: \"RS\", avatarHex: \"#0088cc\",\r\n channel: \"whatsapp\", tag: \"Lead\", tagKind: \"success\",\r\n status: \"ai\", statusLabel: \"IA\",\r\n last: \"Obrigado! Vou avaliar a proposta.\", time: \"Ontem\", unread: 0,\r\n },\r\n {\r\n id: \"#A-2466\", name: \"Ana Costa\", initials: \"AC\", avatarHex: \"#1cb280\",\r\n channel: \"email\", tag: \"Licenciado\", tagKind: \"info\",\r\n status: \"waiting\", statusLabel: \"Em espera\",\r\n last: \"Bom dia! Quando podemos conversar?\", time: \"Ontem\", unread: 0,\r\n },\r\n {\r\n id: \"#A-2470\", name: \"Pedro Pereira\", initials: \"PP\", avatarHex: \"#ef4444\",\r\n channel: \"webchat\", tag: \"Lead\", tagKind: \"success\",\r\n status: \"attending\", statusLabel: \"Em atendimento\",\r\n last: \"Recebi os materiais, muito bons!\", time: \"Seg\", unread: 0,\r\n },\r\n];\r\n\r\n/* ── Filtros (sidebar esquerda) ─────────────────────────────────── */\r\n\r\nexport const STATUS_WORKFLOW: FilterItem[] = [\r\n { id: \"open\", name: \"Abertos\", count: 24, hasUnread: true, icon: Inbox },\r\n { id: \"pending\", name: \"Pendentes\", count: 6, icon: Clock },\r\n { id: \"resolved\", name: \"Resolvidos\", count: 18, icon: CheckCircle2 },\r\n];\r\n\r\nexport const CHANNELS_LIST: FilterItem[] = [\r\n { id: \"whatsapp\", name: \"WhatsApp\", count: 12, hasUnread: true, color: \"#25d366\", icon: MessageSquare },\r\n { id: \"telegram\", name: \"Telegram\", count: 4, color: \"#0088cc\", icon: Send },\r\n { id: \"instagram\", name: \"Instagram\", count: 5, color: \"#e1306c\", icon: MessageSquare },\r\n { id: \"webchat\", name: \"Web Chat\", count: 2, color: \"#0a3a2e\", icon: MessageSquare },\r\n { id: \"email\", name: \"Email\", count: 1, color: \"#8754ec\", icon: Mail },\r\n];\r\n\r\nexport const CATEGORIES_LIST: FilterItem[] = [\r\n { id: \"royal\", name: \"Royals\", count: 9, color: \"#f6b51e\", icon: Crown },\r\n { id: \"licenciado\", name: \"Licenciados\", count: 11, color: \"#8754ec\", icon: Shield },\r\n { id: \"lead\", name: \"Leads\", count: 4, color: \"#70c748\", icon: Users },\r\n];\r\n\r\nexport const STATUS_INNER_LIST: FilterItem[] = [\r\n { id: \"attending\", name: \"Em atendimento\", count: 8, color: \"var(--color-fg-success)\" },\r\n { id: \"waiting\", name: \"Em espera\", count: 7, color: \"var(--color-fg-warning)\" },\r\n { id: \"ai\", name: \"IA\", count: 9, color: \"var(--color-fg-info)\" },\r\n];\r\n\r\n/* ── Ordem canônica dos 4 grupos de filtros ───────────────────── */\r\n\r\n/**\r\n * Fonte única dos grupos de filtros. Consumido por `FiltersColumn` (com\r\n * `title`) e `FiltersRail` (sem `title`, divisor entre grupos).\r\n */\r\nexport const FILTER_GROUPS: {\r\n group: FilterGroupKey;\r\n title: string;\r\n items: FilterItem[];\r\n}[] = [\r\n { group: \"status\", title: \"STATUS\", items: STATUS_WORKFLOW },\r\n { group: \"channels\", title: \"CANAIS\", items: CHANNELS_LIST },\r\n { group: \"categories\", title: \"CATEGORIAS\", items: CATEGORIES_LIST },\r\n { group: \"innerStatus\", title: \"STATUS INTERNO\", items: STATUS_INNER_LIST },\r\n];\r\n\r\n/* ── Conversation details (painel direito) ──────────────────────── */\r\n\r\nexport const CONVERSATION_DETAILS: Record<string, ConversationDetail> = {\r\n \"#A-2453\": {\r\n phone: \"+55 11 98765-4321\",\r\n email: \"maria.hernandez@example.com\",\r\n firstContact: \"12 mar 2024\",\r\n assignedTo: \"Você\",\r\n createdAt: \"Hoje, 09:30\",\r\n extraTags: [\"VIP\", \"Setor financeiro\"],\r\n history: [\r\n { id: \"#A-2401\", date: \"20 abr 2024\", subject: \"Dúvida sobre comissão\", status: \"Resolvido\" },\r\n { id: \"#A-2389\", date: \"15 abr 2024\", subject: \"Reativação de conta\", status: \"Resolvido\" },\r\n { id: \"#A-2367\", date: \"10 abr 2024\", subject: \"Materiais exclusivos\", status: \"Resolvido\" },\r\n ],\r\n },\r\n};\r\n\r\nexport const DEFAULT_DETAIL: ConversationDetail = {\r\n phone: \"—\",\r\n email: \"—\",\r\n firstContact: \"—\",\r\n assignedTo: \"—\",\r\n createdAt: \"—\",\r\n extraTags: [],\r\n history: [],\r\n};\r\n\r\n/* ── Sample messages (thread inicial da conversa ativa) ─────────── */\r\n\r\nexport const SAMPLE_MESSAGES: Message[] = [\r\n { id: 1, from: \"them\", text: \"Olá! Bom dia 👋\", time: \"10:30\" },\r\n { id: 2, from: \"them\", text: \"Vi a oferta de vocês para licenciados Royal e gostaria de mais informações.\", time: \"10:30\" },\r\n { id: 3, from: \"me\", text: \"Bom dia, Maria! Tudo bem? 😊 Posso te ajudar com toda alegria.\", time: \"10:32\", status: \"read\" },\r\n { id: 4, from: \"me\", text: \"A oferta para Royals inclui 30% de comissão recorrente, suporte prioritário e materiais exclusivos.\", time: \"10:32\", status: \"read\" },\r\n { id: 5, from: \"them\", text: \"Have good budget for the project.\", time: \"10:42\" },\r\n { id: 6, from: \"them\", text: \"Quanto seria o investimento inicial?\", time: \"10:42\" },\r\n];\r\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-v2-mocks-DvZRkhmz.mjs","sources":["../../src/preview/pages/ChatV2/chat-v2-mocks.ts"],"sourcesContent":["import {\n CheckCircle2,\n Clock,\n Crown,\n Inbox,\n Mail,\n MessageSquare,\n Send,\n Shield,\n Users,\n} from \"lucide-react\";\nimport type {\n ChannelId,\n Conversation,\n ConversationDetail,\n ConversationStatus,\n FilterGroupKey,\n FilterItem,\n Message,\n} from \"./chat-v2.types\";\n\n/* ── Lookups por canal ──────────────────────────────────────────── */\n\nexport const CHANNEL_LABEL: Record<ChannelId, string> = {\n whatsapp: \"WhatsApp\",\n telegram: \"Telegram\",\n instagram: \"Instagram\",\n webchat: \"Web Chat\",\n email: \"Email\",\n};\n\nexport const CHANNEL_HEX: Record<ChannelId, string> = {\n whatsapp: \"#25d366\",\n telegram: \"#0088cc\",\n instagram: \"#e1306c\",\n webchat: \"#0a3a2e\",\n email: \"#8754ec\",\n};\n\n/* ── Status dot (cor por status na sidebar/header) ──────────────── */\n\nexport const STATUS_DOT: Record<ConversationStatus, string> = {\n attending: \"var(--color-fg-success)\",\n waiting: \"var(--color-fg-warning)\",\n ai: \"var(--color-fg-info)\",\n};\n\n/* ── Conversations (fila) ───────────────────────────────────────── */\n\nexport const CONVERSATIONS: Conversation[] = [\n {\n id: \"#A-2453\", name: \"Maria Hernandez\", initials: \"MH\", avatarHex: \"#f59e0b\",\n channel: \"whatsapp\", tag: \"Royal\", tagKind: \"warning\",\n status: \"attending\", statusLabel: \"Em atendimento\",\n last: \"Quanto seria o investimento inicial?\", time: \"10:42\", unread: 0,\n },\n {\n id: \"#A-2455\", name: \"James Johnson\", initials: \"JJ\", avatarHex: \"#0a3a2e\",\n channel: \"telegram\", tag: \"Licenciado\", tagKind: \"info\",\n status: \"waiting\", statusLabel: \"Em espera\",\n last: \"Hey, how are you?\", time: \"10:30\", unread: 2,\n },\n {\n id: \"#A-2458\", name: \"Camila Ribeiro\", initials: \"CR\", avatarHex: \"#8754ec\",\n channel: \"instagram\", tag: \"Royal\", tagKind: \"warning\",\n status: \"attending\", statusLabel: \"Em atendimento\",\n last: \"Vou enviar os documentos hoje à tarde\", time: \"09:55\", unread: 1,\n },\n {\n id: \"#A-2461\", name: \"Roberto Souza\", initials: \"RS\", avatarHex: \"#0088cc\",\n channel: \"whatsapp\", tag: \"Lead\", tagKind: \"success\",\n status: \"ai\", statusLabel: \"IA\",\n last: \"Obrigado! Vou avaliar a proposta.\", time: \"Ontem\", unread: 0,\n },\n {\n id: \"#A-2466\", name: \"Ana Costa\", initials: \"AC\", avatarHex: \"#1cb280\",\n channel: \"email\", tag: \"Licenciado\", tagKind: \"info\",\n status: \"waiting\", statusLabel: \"Em espera\",\n last: \"Bom dia! Quando podemos conversar?\", time: \"Ontem\", unread: 0,\n },\n {\n id: \"#A-2470\", name: \"Pedro Pereira\", initials: \"PP\", avatarHex: \"#ef4444\",\n channel: \"webchat\", tag: \"Lead\", tagKind: \"success\",\n status: \"attending\", statusLabel: \"Em atendimento\",\n last: \"Recebi os materiais, muito bons!\", time: \"Seg\", unread: 0,\n },\n];\n\n/* ── Filtros (sidebar esquerda) ─────────────────────────────────── */\n\nexport const STATUS_WORKFLOW: FilterItem[] = [\n { id: \"open\", name: \"Abertos\", count: 24, hasUnread: true, icon: Inbox },\n { id: \"pending\", name: \"Pendentes\", count: 6, icon: Clock },\n { id: \"resolved\", name: \"Resolvidos\", count: 18, icon: CheckCircle2 },\n];\n\nexport const CHANNELS_LIST: FilterItem[] = [\n { id: \"whatsapp\", name: \"WhatsApp\", count: 12, hasUnread: true, color: \"#25d366\", icon: MessageSquare },\n { id: \"telegram\", name: \"Telegram\", count: 4, color: \"#0088cc\", icon: Send },\n { id: \"instagram\", name: \"Instagram\", count: 5, color: \"#e1306c\", icon: MessageSquare },\n { id: \"webchat\", name: \"Web Chat\", count: 2, color: \"#0a3a2e\", icon: MessageSquare },\n { id: \"email\", name: \"Email\", count: 1, color: \"#8754ec\", icon: Mail },\n];\n\nexport const CATEGORIES_LIST: FilterItem[] = [\n { id: \"royal\", name: \"Royals\", count: 9, color: \"#f6b51e\", icon: Crown },\n { id: \"licenciado\", name: \"Licenciados\", count: 11, color: \"#8754ec\", icon: Shield },\n { id: \"lead\", name: \"Leads\", count: 4, color: \"#70c748\", icon: Users },\n];\n\nexport const STATUS_INNER_LIST: FilterItem[] = [\n { id: \"attending\", name: \"Em atendimento\", count: 8, color: \"var(--color-fg-success)\" },\n { id: \"waiting\", name: \"Em espera\", count: 7, color: \"var(--color-fg-warning)\" },\n { id: \"ai\", name: \"IA\", count: 9, color: \"var(--color-fg-info)\" },\n];\n\n/* ── Ordem canônica dos 4 grupos de filtros ───────────────────── */\n\n/**\n * Fonte única dos grupos de filtros. Consumido por `FiltersColumn` (com\n * `title`) e `FiltersRail` (sem `title`, divisor entre grupos).\n */\nexport const FILTER_GROUPS: {\n group: FilterGroupKey;\n title: string;\n items: FilterItem[];\n}[] = [\n { group: \"status\", title: \"STATUS\", items: STATUS_WORKFLOW },\n { group: \"channels\", title: \"CANAIS\", items: CHANNELS_LIST },\n { group: \"categories\", title: \"CATEGORIAS\", items: CATEGORIES_LIST },\n { group: \"innerStatus\", title: \"STATUS INTERNO\", items: STATUS_INNER_LIST },\n];\n\n/* ── Conversation details (painel direito) ──────────────────────── */\n\nexport const CONVERSATION_DETAILS: Record<string, ConversationDetail> = {\n \"#A-2453\": {\n phone: \"+55 11 98765-4321\",\n email: \"maria.hernandez@example.com\",\n firstContact: \"12 mar 2024\",\n assignedTo: \"Você\",\n createdAt: \"Hoje, 09:30\",\n extraTags: [\"VIP\", \"Setor financeiro\"],\n history: [\n { id: \"#A-2401\", date: \"20 abr 2024\", subject: \"Dúvida sobre comissão\", status: \"Resolvido\" },\n { id: \"#A-2389\", date: \"15 abr 2024\", subject: \"Reativação de conta\", status: \"Resolvido\" },\n { id: \"#A-2367\", date: \"10 abr 2024\", subject: \"Materiais exclusivos\", status: \"Resolvido\" },\n ],\n },\n};\n\nexport const DEFAULT_DETAIL: ConversationDetail = {\n phone: \"—\",\n email: \"—\",\n firstContact: \"—\",\n assignedTo: \"—\",\n createdAt: \"—\",\n extraTags: [],\n history: [],\n};\n\n/* ── Sample messages (thread inicial da conversa ativa) ─────────── */\n\nexport const SAMPLE_MESSAGES: Message[] = [\n { id: 1, from: \"them\", text: \"Olá! Bom dia 👋\", time: \"10:30\" },\n { id: 2, from: \"them\", text: \"Vi a oferta de vocês para licenciados Royal e gostaria de mais informações.\", time: \"10:30\" },\n { id: 3, from: \"me\", text: \"Bom dia, Maria! Tudo bem? 😊 Posso te ajudar com toda alegria.\", time: \"10:32\", status: \"read\" },\n { id: 4, from: \"me\", text: \"A oferta para Royals inclui 30% de comissão recorrente, suporte prioritário e materiais exclusivos.\", time: \"10:32\", status: \"read\" },\n { id: 5, from: \"them\", text: \"Have good budget for the project.\", time: \"10:42\" },\n { id: 6, from: \"them\", text: \"Quanto seria o investimento inicial?\", time: \"10:42\" },\n];\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-header-B6XJyIMz.mjs","sources":["../../src/components/ui/PageHeader/page-header.styles.ts","../../src/components/ui/PageHeader/page-header.tsx"],"sourcesContent":["import { tv } from \"@/utils/tv\";\r\n\r\n/**\r\n * PageHeader styles — bloco de título de página colocado dentro do body\r\n * do `<AppShell>`.\r\n *\r\n * Layout desktop:\r\n * ┌──────────────────────────────────────────────────────────┐\r\n * │ [title] [badge] [action1] [action2] [CTA] │\r\n * │ description │\r\n * ├──────────────────────────────────────────────────────────┤\r\n * │ {children — ex: <Tabs />} │\r\n * └──────────────────────────────────────────────────────────┘\r\n *\r\n * Mobile:\r\n * - Text section sai (hideTextOnMobile, default true)\r\n * - Actions ocupam toda a largura; último botão vira fluid (CTA primary)\r\n */\r\nexport const pageHeaderStyles = tv({\r\n slots: {\r\n root: \"shrink-0 flex flex-col gap-gp-md\",\r\n topRow: \"flex items-center justify-between gap-gp-2xl\",\r\n textCol: \"flex flex-col gap-gp-xs min-w-0 flex-1\",\r\n titleRow: \"flex items-center gap-gp-md\",\r\n title: \"m-0 text-title-lg font-bold tracking-[-0.01em] text-fg-default\",\r\n description: [\r\n \"m-0 text-body-md text-fg-subtle leading-[1.5]\",\r\n \"whitespace-nowrap overflow-hidden text-ellipsis\",\r\n ],\r\n actionsRow: \"flex items-center gap-gp-sm shrink-0\",\r\n // mt-gp-xl: +20px somados ao gap-gp-md (12px) do root = ~32px de respiro\r\n // entre o título/descrição e o slot de conteúdo (tabs/filtros).\r\n extraRow: \"w-full mt-gp-xl\",\r\n },\r\n variants: {\r\n hideTextOnMobile: {\r\n true: { textCol: \"max-md:hidden\" },\r\n false: {},\r\n },\r\n /**\r\n * Mobile: actions ocupa o espaço (text hidden) + último filho vira fluid.\r\n * Off = mantém actions square e shrink-0 (mesmo comportamento desktop).\r\n */\r\n mobileFluid: {\r\n true: {\r\n actionsRow: [\r\n \"max-md:shrink max-md:flex-1 max-md:justify-end\",\r\n \"max-md:[&>:last-child]:flex-1\",\r\n ],\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n hideTextOnMobile: true,\r\n mobileFluid: true,\r\n },\r\n});\r\n","import { cn } from \"@/lib/utils\";\r\nimport { pageHeaderStyles } from \"./page-header.styles\";\r\nimport type { PageHeaderProps } from \"./page-header.types\";\r\n\r\n/**\r\n * PageHeader — bloco de título reutilizável colocado dentro do body do\r\n * `<AppShell>`. Cobre o caso comum:\r\n *\r\n * - Título (h1) + descrição (sub) + badge (chip ao lado)\r\n * - Slot de ações à direita (botões / dropdowns)\r\n * - Slot livre abaixo pra tabs, filtros ou qualquer conteúdo extra\r\n *\r\n * Mobile-ready por default:\r\n * - Title/description/badge somem em viewports pequenas\r\n * (Header global do AppShell já mostra title/breadcrumb)\r\n * - O último botão do `actions` vira fluid (CTA full-width)\r\n *\r\n * @example\r\n * ```tsx\r\n * <PageHeader\r\n * title=\"Clientes\"\r\n * description=\"Gerencie sua base de clientes.\"\r\n * badge={<Chip color=\"primary\" variant=\"soft\">87 registros</Chip>}\r\n * actions={\r\n * <>\r\n * <Button variant=\"outline\" size=\"icon-md\"><MoreHorizontal /></Button>\r\n * <Button variant=\"filled\" color=\"primary\">Novo cliente</Button>\r\n * </>\r\n * }\r\n * />\r\n * ```\r\n *\r\n * @example com tabs abaixo (slot children):\r\n * ```tsx\r\n * <PageHeader title=\"Configurações\" actions={<Button>Salvar</Button>}>\r\n * <Tabs ... />\r\n * </PageHeader>\r\n * ```\r\n */\r\nexport function PageHeader({\r\n title,\r\n description,\r\n badge,\r\n actions,\r\n children,\r\n hideTextOnMobile = true,\r\n fluidPrimaryOnMobile = true,\r\n className,\r\n}: PageHeaderProps) {\r\n const s = pageHeaderStyles({\r\n hideTextOnMobile,\r\n mobileFluid: fluidPrimaryOnMobile,\r\n });\r\n\r\n const hasText = !!(title || description || badge);\r\n const hasTopRow = hasText || !!actions;\r\n\r\n return (\r\n <header className={cn(s.root(), className)}>\r\n {hasTopRow && (\r\n <div className={s.topRow()}>\r\n {hasText && (\r\n <div className={s.textCol()}>\r\n {(title || badge) && (\r\n <div className={s.titleRow()}>\r\n {title && <h1 className={s.title()}>{title}</h1>}\r\n {badge}\r\n </div>\r\n )}\r\n {description && <p className={s.description()}>{description}</p>}\r\n </div>\r\n )}\r\n {actions && <div className={s.actionsRow()}>{actions}</div>}\r\n </div>\r\n )}\r\n {children && <div className={s.extraRow()}>{children}</div>}\r\n </header>\r\n );\r\n}\r\n\r\nPageHeader.displayName = \"PageHeader\";\r\n"],"names":[],"mappings":";;AAkBO,MAAM,mBAAmB,GAAG;AAAA,EACjC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,MACX;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA;AAAA;AAAA,IAGZ,UAAU;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACR,kBAAkB;AAAA,MAChB,MAAM,EAAE,SAAS,gBAAA;AAAA,MACjB,OAAO,CAAA;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMV,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,YAAY;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,OAAO,CAAA;AAAA,IAAC;AAAA,EACV;AAAA,EAEF,iBAAiB;AAAA,IACf,kBAAkB;AAAA,IAClB,aAAa;AAAA,EAAA;AAEjB,CAAC;AClBM,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB;AACF,GAAoB;AAClB,QAAM,IAAI,iBAAiB;AAAA,IACzB;AAAA,IACA,aAAa;AAAA,EAAA,CACd;AAED,QAAM,UAAU,CAAC,EAAE,SAAS,eAAe;AAC3C,QAAM,YAAY,WAAW,CAAC,CAAC;AAE/B,SACE,qBAAC,YAAO,WAAW,GAAG,EAAE,KAAA,GAAQ,SAAS,GACtC,UAAA;AAAA,IAAA,aACC,qBAAC,OAAA,EAAI,WAAW,EAAE,UACf,UAAA;AAAA,MAAA,WACC,qBAAC,OAAA,EAAI,WAAW,EAAE,WACd,UAAA;AAAA,SAAA,SAAS,UACT,qBAAC,OAAA,EAAI,WAAW,EAAE,YACf,UAAA;AAAA,UAAA,6BAAU,MAAA,EAAG,WAAW,EAAE,MAAA,GAAU,UAAA,OAAM;AAAA,UAC1C;AAAA,QAAA,GACH;AAAA,QAED,eAAe,oBAAC,KAAA,EAAE,WAAW,EAAE,YAAA,GAAgB,UAAA,YAAA,CAAY;AAAA,MAAA,GAC9D;AAAA,MAED,WAAW,oBAAC,OAAA,EAAI,WAAW,EAAE,WAAA,GAAe,UAAA,QAAA,CAAQ;AAAA,IAAA,GACvD;AAAA,IAED,YAAY,oBAAC,OAAA,EAAI,WAAW,EAAE,SAAA,GAAa,SAAA,CAAS;AAAA,EAAA,GACvD;AAEJ;AAEA,WAAW,cAAc;"}
1
+ {"version":3,"file":"page-header-B6XJyIMz.mjs","sources":["../../src/components/ui/PageHeader/page-header.styles.ts","../../src/components/ui/PageHeader/page-header.tsx"],"sourcesContent":["import { tv } from \"@/utils/tv\";\r\n\r\n/**\r\n * PageHeader styles — bloco de título de página colocado dentro do body\r\n * do `<AppShell>`.\r\n *\r\n * Layout desktop:\r\n * ┌──────────────────────────────────────────────────────────┐\r\n * │ [title] [badge] [action1] [action2] [CTA] │\r\n * │ description │\r\n * ├──────────────────────────────────────────────────────────┤\r\n * │ {children — ex: <Tabs />} │\r\n * └──────────────────────────────────────────────────────────┘\r\n *\r\n * Mobile:\r\n * - Text section sai (hideTextOnMobile, default true)\r\n * - Actions ocupam toda a largura; último botão vira fluid (CTA primary)\r\n */\r\nexport const pageHeaderStyles = tv({\r\n slots: {\r\n root: \"shrink-0 flex flex-col gap-gp-md\",\r\n topRow: \"flex items-center justify-between gap-gp-2xl\",\r\n textCol: \"flex flex-col gap-gp-xs min-w-0 flex-1\",\r\n titleRow: \"flex items-center gap-gp-md\",\r\n title: \"m-0 text-title-lg font-bold tracking-[-0.01em] text-fg-default\",\r\n description: [\r\n \"m-0 text-body-md text-fg-subtle leading-[1.5]\",\r\n \"whitespace-nowrap overflow-hidden text-ellipsis\",\r\n ],\r\n actionsRow: \"flex items-center gap-gp-sm shrink-0\",\r\n // mt-gp-xl: +20px somados ao gap-gp-md (12px) do root = ~32px de respiro\r\n // entre o título/descrição e o slot de conteúdo (tabs/filtros).\r\n extraRow: \"w-full mt-gp-xl\",\r\n },\r\n variants: {\r\n hideTextOnMobile: {\r\n true: { textCol: \"max-md:hidden\" },\r\n false: {},\r\n },\r\n /**\r\n * Mobile: actions ocupa o espaço (text hidden) + último filho vira fluid.\r\n * Off = mantém actions square e shrink-0 (mesmo comportamento desktop).\r\n */\r\n mobileFluid: {\r\n true: {\r\n actionsRow: [\r\n \"max-md:shrink max-md:flex-1 max-md:justify-end\",\r\n \"max-md:[&>:last-child]:flex-1\",\r\n ],\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n hideTextOnMobile: true,\r\n mobileFluid: true,\r\n },\r\n});\r\n","import { cn } from \"@/lib/utils\";\nimport { pageHeaderStyles } from \"./page-header.styles\";\nimport type { PageHeaderProps } from \"./page-header.types\";\n\n/**\n * PageHeader — bloco de título reutilizável colocado dentro do body do\n * `<AppShell>`. Cobre o caso comum:\n *\n * - Título (h1) + descrição (sub) + badge (chip ao lado)\n * - Slot de ações à direita (botões / dropdowns)\n * - Slot livre abaixo pra tabs, filtros ou qualquer conteúdo extra\n *\n * Mobile-ready por default:\n * - Title/description/badge somem em viewports pequenas\n * (Header global do AppShell já mostra title/breadcrumb)\n * - O último botão do `actions` vira fluid (CTA full-width)\n *\n * @example\n * ```tsx\n * <PageHeader\n * title=\"Clientes\"\n * description=\"Gerencie sua base de clientes.\"\n * badge={<Chip color=\"primary\" variant=\"soft\">87 registros</Chip>}\n * actions={\n * <>\n * <Button variant=\"outline\" size=\"icon-md\"><MoreHorizontal /></Button>\n * <Button variant=\"filled\" color=\"primary\">Novo cliente</Button>\n * </>\n * }\n * />\n * ```\n *\n * @example com tabs abaixo (slot children):\n * ```tsx\n * <PageHeader title=\"Configurações\" actions={<Button>Salvar</Button>}>\n * <Tabs ... />\n * </PageHeader>\n * ```\n */\nexport function PageHeader({\n title,\n description,\n badge,\n actions,\n children,\n hideTextOnMobile = true,\n fluidPrimaryOnMobile = true,\n className,\n}: PageHeaderProps) {\n const s = pageHeaderStyles({\n hideTextOnMobile,\n mobileFluid: fluidPrimaryOnMobile,\n });\n\n const hasText = !!(title || description || badge);\n const hasTopRow = hasText || !!actions;\n\n return (\n <header className={cn(s.root(), className)}>\n {hasTopRow && (\n <div className={s.topRow()}>\n {hasText && (\n <div className={s.textCol()}>\n {(title || badge) && (\n <div className={s.titleRow()}>\n {title && <h1 className={s.title()}>{title}</h1>}\n {badge}\n </div>\n )}\n {description && <p className={s.description()}>{description}</p>}\n </div>\n )}\n {actions && <div className={s.actionsRow()}>{actions}</div>}\n </div>\n )}\n {children && <div className={s.extraRow()}>{children}</div>}\n </header>\n );\n}\n\nPageHeader.displayName = \"PageHeader\";\n"],"names":[],"mappings":";;AAkBO,MAAM,mBAAmB,GAAG;AAAA,EACjC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,MACX;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA;AAAA;AAAA,IAGZ,UAAU;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACR,kBAAkB;AAAA,MAChB,MAAM,EAAE,SAAS,gBAAA;AAAA,MACjB,OAAO,CAAA;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMV,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,YAAY;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,OAAO,CAAA;AAAA,IAAC;AAAA,EACV;AAAA,EAEF,iBAAiB;AAAA,IACf,kBAAkB;AAAA,IAClB,aAAa;AAAA,EAAA;AAEjB,CAAC;AClBM,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB;AACF,GAAoB;AAClB,QAAM,IAAI,iBAAiB;AAAA,IACzB;AAAA,IACA,aAAa;AAAA,EAAA,CACd;AAED,QAAM,UAAU,CAAC,EAAE,SAAS,eAAe;AAC3C,QAAM,YAAY,WAAW,CAAC,CAAC;AAE/B,SACE,qBAAC,YAAO,WAAW,GAAG,EAAE,KAAA,GAAQ,SAAS,GACtC,UAAA;AAAA,IAAA,aACC,qBAAC,OAAA,EAAI,WAAW,EAAE,UACf,UAAA;AAAA,MAAA,WACC,qBAAC,OAAA,EAAI,WAAW,EAAE,WACd,UAAA;AAAA,SAAA,SAAS,UACT,qBAAC,OAAA,EAAI,WAAW,EAAE,YACf,UAAA;AAAA,UAAA,6BAAU,MAAA,EAAG,WAAW,EAAE,MAAA,GAAU,UAAA,OAAM;AAAA,UAC1C;AAAA,QAAA,GACH;AAAA,QAED,eAAe,oBAAC,KAAA,EAAE,WAAW,EAAE,YAAA,GAAgB,UAAA,YAAA,CAAY;AAAA,MAAA,GAC9D;AAAA,MAED,WAAW,oBAAC,OAAA,EAAI,WAAW,EAAE,WAAA,GAAe,UAAA,QAAA,CAAQ;AAAA,IAAA,GACvD;AAAA,IAED,YAAY,oBAAC,OAAA,EAAI,WAAW,EAAE,SAAA,GAAa,SAAA,CAAS;AAAA,EAAA,GACvD;AAEJ;AAEA,WAAW,cAAc;"}
@@ -1 +1 @@
1
- {"version":3,"file":"page-header-D0rpU0yn.cjs","sources":["../../src/components/ui/PageHeader/page-header.styles.ts","../../src/components/ui/PageHeader/page-header.tsx"],"sourcesContent":["import { tv } from \"@/utils/tv\";\r\n\r\n/**\r\n * PageHeader styles — bloco de título de página colocado dentro do body\r\n * do `<AppShell>`.\r\n *\r\n * Layout desktop:\r\n * ┌──────────────────────────────────────────────────────────┐\r\n * │ [title] [badge] [action1] [action2] [CTA] │\r\n * │ description │\r\n * ├──────────────────────────────────────────────────────────┤\r\n * │ {children — ex: <Tabs />} │\r\n * └──────────────────────────────────────────────────────────┘\r\n *\r\n * Mobile:\r\n * - Text section sai (hideTextOnMobile, default true)\r\n * - Actions ocupam toda a largura; último botão vira fluid (CTA primary)\r\n */\r\nexport const pageHeaderStyles = tv({\r\n slots: {\r\n root: \"shrink-0 flex flex-col gap-gp-md\",\r\n topRow: \"flex items-center justify-between gap-gp-2xl\",\r\n textCol: \"flex flex-col gap-gp-xs min-w-0 flex-1\",\r\n titleRow: \"flex items-center gap-gp-md\",\r\n title: \"m-0 text-title-lg font-bold tracking-[-0.01em] text-fg-default\",\r\n description: [\r\n \"m-0 text-body-md text-fg-subtle leading-[1.5]\",\r\n \"whitespace-nowrap overflow-hidden text-ellipsis\",\r\n ],\r\n actionsRow: \"flex items-center gap-gp-sm shrink-0\",\r\n // mt-gp-xl: +20px somados ao gap-gp-md (12px) do root = ~32px de respiro\r\n // entre o título/descrição e o slot de conteúdo (tabs/filtros).\r\n extraRow: \"w-full mt-gp-xl\",\r\n },\r\n variants: {\r\n hideTextOnMobile: {\r\n true: { textCol: \"max-md:hidden\" },\r\n false: {},\r\n },\r\n /**\r\n * Mobile: actions ocupa o espaço (text hidden) + último filho vira fluid.\r\n * Off = mantém actions square e shrink-0 (mesmo comportamento desktop).\r\n */\r\n mobileFluid: {\r\n true: {\r\n actionsRow: [\r\n \"max-md:shrink max-md:flex-1 max-md:justify-end\",\r\n \"max-md:[&>:last-child]:flex-1\",\r\n ],\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n hideTextOnMobile: true,\r\n mobileFluid: true,\r\n },\r\n});\r\n","import { cn } from \"@/lib/utils\";\r\nimport { pageHeaderStyles } from \"./page-header.styles\";\r\nimport type { PageHeaderProps } from \"./page-header.types\";\r\n\r\n/**\r\n * PageHeader — bloco de título reutilizável colocado dentro do body do\r\n * `<AppShell>`. Cobre o caso comum:\r\n *\r\n * - Título (h1) + descrição (sub) + badge (chip ao lado)\r\n * - Slot de ações à direita (botões / dropdowns)\r\n * - Slot livre abaixo pra tabs, filtros ou qualquer conteúdo extra\r\n *\r\n * Mobile-ready por default:\r\n * - Title/description/badge somem em viewports pequenas\r\n * (Header global do AppShell já mostra title/breadcrumb)\r\n * - O último botão do `actions` vira fluid (CTA full-width)\r\n *\r\n * @example\r\n * ```tsx\r\n * <PageHeader\r\n * title=\"Clientes\"\r\n * description=\"Gerencie sua base de clientes.\"\r\n * badge={<Chip color=\"primary\" variant=\"soft\">87 registros</Chip>}\r\n * actions={\r\n * <>\r\n * <Button variant=\"outline\" size=\"icon-md\"><MoreHorizontal /></Button>\r\n * <Button variant=\"filled\" color=\"primary\">Novo cliente</Button>\r\n * </>\r\n * }\r\n * />\r\n * ```\r\n *\r\n * @example com tabs abaixo (slot children):\r\n * ```tsx\r\n * <PageHeader title=\"Configurações\" actions={<Button>Salvar</Button>}>\r\n * <Tabs ... />\r\n * </PageHeader>\r\n * ```\r\n */\r\nexport function PageHeader({\r\n title,\r\n description,\r\n badge,\r\n actions,\r\n children,\r\n hideTextOnMobile = true,\r\n fluidPrimaryOnMobile = true,\r\n className,\r\n}: PageHeaderProps) {\r\n const s = pageHeaderStyles({\r\n hideTextOnMobile,\r\n mobileFluid: fluidPrimaryOnMobile,\r\n });\r\n\r\n const hasText = !!(title || description || badge);\r\n const hasTopRow = hasText || !!actions;\r\n\r\n return (\r\n <header className={cn(s.root(), className)}>\r\n {hasTopRow && (\r\n <div className={s.topRow()}>\r\n {hasText && (\r\n <div className={s.textCol()}>\r\n {(title || badge) && (\r\n <div className={s.titleRow()}>\r\n {title && <h1 className={s.title()}>{title}</h1>}\r\n {badge}\r\n </div>\r\n )}\r\n {description && <p className={s.description()}>{description}</p>}\r\n </div>\r\n )}\r\n {actions && <div className={s.actionsRow()}>{actions}</div>}\r\n </div>\r\n )}\r\n {children && <div className={s.extraRow()}>{children}</div>}\r\n </header>\r\n );\r\n}\r\n\r\nPageHeader.displayName = \"PageHeader\";\r\n"],"names":["tv","jsxs","cn","jsx"],"mappings":";;;AAkBO,MAAM,mBAAmBA,SAAAA,GAAG;AAAA,EACjC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,MACX;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA;AAAA;AAAA,IAGZ,UAAU;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACR,kBAAkB;AAAA,MAChB,MAAM,EAAE,SAAS,gBAAA;AAAA,MACjB,OAAO,CAAA;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMV,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,YAAY;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,OAAO,CAAA;AAAA,IAAC;AAAA,EACV;AAAA,EAEF,iBAAiB;AAAA,IACf,kBAAkB;AAAA,IAClB,aAAa;AAAA,EAAA;AAEjB,CAAC;AClBM,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB;AACF,GAAoB;AAClB,QAAM,IAAI,iBAAiB;AAAA,IACzB;AAAA,IACA,aAAa;AAAA,EAAA,CACd;AAED,QAAM,UAAU,CAAC,EAAE,SAAS,eAAe;AAC3C,QAAM,YAAY,WAAW,CAAC,CAAC;AAE/B,SACEC,2BAAAA,KAAC,YAAO,WAAWC,SAAAA,GAAG,EAAE,KAAA,GAAQ,SAAS,GACtC,UAAA;AAAA,IAAA,aACCD,2BAAAA,KAAC,OAAA,EAAI,WAAW,EAAE,UACf,UAAA;AAAA,MAAA,WACCA,2BAAAA,KAAC,OAAA,EAAI,WAAW,EAAE,WACd,UAAA;AAAA,SAAA,SAAS,UACTA,2BAAAA,KAAC,OAAA,EAAI,WAAW,EAAE,YACf,UAAA;AAAA,UAAA,wCAAU,MAAA,EAAG,WAAW,EAAE,MAAA,GAAU,UAAA,OAAM;AAAA,UAC1C;AAAA,QAAA,GACH;AAAA,QAED,eAAeE,2BAAAA,IAAC,KAAA,EAAE,WAAW,EAAE,YAAA,GAAgB,UAAA,YAAA,CAAY;AAAA,MAAA,GAC9D;AAAA,MAED,WAAWA,2BAAAA,IAAC,OAAA,EAAI,WAAW,EAAE,WAAA,GAAe,UAAA,QAAA,CAAQ;AAAA,IAAA,GACvD;AAAA,IAED,YAAYA,2BAAAA,IAAC,OAAA,EAAI,WAAW,EAAE,SAAA,GAAa,SAAA,CAAS;AAAA,EAAA,GACvD;AAEJ;AAEA,WAAW,cAAc;;;"}
1
+ {"version":3,"file":"page-header-D0rpU0yn.cjs","sources":["../../src/components/ui/PageHeader/page-header.styles.ts","../../src/components/ui/PageHeader/page-header.tsx"],"sourcesContent":["import { tv } from \"@/utils/tv\";\r\n\r\n/**\r\n * PageHeader styles — bloco de título de página colocado dentro do body\r\n * do `<AppShell>`.\r\n *\r\n * Layout desktop:\r\n * ┌──────────────────────────────────────────────────────────┐\r\n * │ [title] [badge] [action1] [action2] [CTA] │\r\n * │ description │\r\n * ├──────────────────────────────────────────────────────────┤\r\n * │ {children — ex: <Tabs />} │\r\n * └──────────────────────────────────────────────────────────┘\r\n *\r\n * Mobile:\r\n * - Text section sai (hideTextOnMobile, default true)\r\n * - Actions ocupam toda a largura; último botão vira fluid (CTA primary)\r\n */\r\nexport const pageHeaderStyles = tv({\r\n slots: {\r\n root: \"shrink-0 flex flex-col gap-gp-md\",\r\n topRow: \"flex items-center justify-between gap-gp-2xl\",\r\n textCol: \"flex flex-col gap-gp-xs min-w-0 flex-1\",\r\n titleRow: \"flex items-center gap-gp-md\",\r\n title: \"m-0 text-title-lg font-bold tracking-[-0.01em] text-fg-default\",\r\n description: [\r\n \"m-0 text-body-md text-fg-subtle leading-[1.5]\",\r\n \"whitespace-nowrap overflow-hidden text-ellipsis\",\r\n ],\r\n actionsRow: \"flex items-center gap-gp-sm shrink-0\",\r\n // mt-gp-xl: +20px somados ao gap-gp-md (12px) do root = ~32px de respiro\r\n // entre o título/descrição e o slot de conteúdo (tabs/filtros).\r\n extraRow: \"w-full mt-gp-xl\",\r\n },\r\n variants: {\r\n hideTextOnMobile: {\r\n true: { textCol: \"max-md:hidden\" },\r\n false: {},\r\n },\r\n /**\r\n * Mobile: actions ocupa o espaço (text hidden) + último filho vira fluid.\r\n * Off = mantém actions square e shrink-0 (mesmo comportamento desktop).\r\n */\r\n mobileFluid: {\r\n true: {\r\n actionsRow: [\r\n \"max-md:shrink max-md:flex-1 max-md:justify-end\",\r\n \"max-md:[&>:last-child]:flex-1\",\r\n ],\r\n },\r\n false: {},\r\n },\r\n },\r\n defaultVariants: {\r\n hideTextOnMobile: true,\r\n mobileFluid: true,\r\n },\r\n});\r\n","import { cn } from \"@/lib/utils\";\nimport { pageHeaderStyles } from \"./page-header.styles\";\nimport type { PageHeaderProps } from \"./page-header.types\";\n\n/**\n * PageHeader — bloco de título reutilizável colocado dentro do body do\n * `<AppShell>`. Cobre o caso comum:\n *\n * - Título (h1) + descrição (sub) + badge (chip ao lado)\n * - Slot de ações à direita (botões / dropdowns)\n * - Slot livre abaixo pra tabs, filtros ou qualquer conteúdo extra\n *\n * Mobile-ready por default:\n * - Title/description/badge somem em viewports pequenas\n * (Header global do AppShell já mostra title/breadcrumb)\n * - O último botão do `actions` vira fluid (CTA full-width)\n *\n * @example\n * ```tsx\n * <PageHeader\n * title=\"Clientes\"\n * description=\"Gerencie sua base de clientes.\"\n * badge={<Chip color=\"primary\" variant=\"soft\">87 registros</Chip>}\n * actions={\n * <>\n * <Button variant=\"outline\" size=\"icon-md\"><MoreHorizontal /></Button>\n * <Button variant=\"filled\" color=\"primary\">Novo cliente</Button>\n * </>\n * }\n * />\n * ```\n *\n * @example com tabs abaixo (slot children):\n * ```tsx\n * <PageHeader title=\"Configurações\" actions={<Button>Salvar</Button>}>\n * <Tabs ... />\n * </PageHeader>\n * ```\n */\nexport function PageHeader({\n title,\n description,\n badge,\n actions,\n children,\n hideTextOnMobile = true,\n fluidPrimaryOnMobile = true,\n className,\n}: PageHeaderProps) {\n const s = pageHeaderStyles({\n hideTextOnMobile,\n mobileFluid: fluidPrimaryOnMobile,\n });\n\n const hasText = !!(title || description || badge);\n const hasTopRow = hasText || !!actions;\n\n return (\n <header className={cn(s.root(), className)}>\n {hasTopRow && (\n <div className={s.topRow()}>\n {hasText && (\n <div className={s.textCol()}>\n {(title || badge) && (\n <div className={s.titleRow()}>\n {title && <h1 className={s.title()}>{title}</h1>}\n {badge}\n </div>\n )}\n {description && <p className={s.description()}>{description}</p>}\n </div>\n )}\n {actions && <div className={s.actionsRow()}>{actions}</div>}\n </div>\n )}\n {children && <div className={s.extraRow()}>{children}</div>}\n </header>\n );\n}\n\nPageHeader.displayName = \"PageHeader\";\n"],"names":["tv","jsxs","cn","jsx"],"mappings":";;;AAkBO,MAAM,mBAAmBA,SAAAA,GAAG;AAAA,EACjC,OAAO;AAAA,IACL,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,UAAU;AAAA,IACV,OAAO;AAAA,IACP,aAAa;AAAA,MACX;AAAA,MACA;AAAA,IAAA;AAAA,IAEF,YAAY;AAAA;AAAA;AAAA,IAGZ,UAAU;AAAA,EAAA;AAAA,EAEZ,UAAU;AAAA,IACR,kBAAkB;AAAA,MAChB,MAAM,EAAE,SAAS,gBAAA;AAAA,MACjB,OAAO,CAAA;AAAA,IAAC;AAAA;AAAA;AAAA;AAAA;AAAA,IAMV,aAAa;AAAA,MACX,MAAM;AAAA,QACJ,YAAY;AAAA,UACV;AAAA,UACA;AAAA,QAAA;AAAA,MACF;AAAA,MAEF,OAAO,CAAA;AAAA,IAAC;AAAA,EACV;AAAA,EAEF,iBAAiB;AAAA,IACf,kBAAkB;AAAA,IAClB,aAAa;AAAA,EAAA;AAEjB,CAAC;AClBM,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB;AACF,GAAoB;AAClB,QAAM,IAAI,iBAAiB;AAAA,IACzB;AAAA,IACA,aAAa;AAAA,EAAA,CACd;AAED,QAAM,UAAU,CAAC,EAAE,SAAS,eAAe;AAC3C,QAAM,YAAY,WAAW,CAAC,CAAC;AAE/B,SACEC,2BAAAA,KAAC,YAAO,WAAWC,SAAAA,GAAG,EAAE,KAAA,GAAQ,SAAS,GACtC,UAAA;AAAA,IAAA,aACCD,2BAAAA,KAAC,OAAA,EAAI,WAAW,EAAE,UACf,UAAA;AAAA,MAAA,WACCA,2BAAAA,KAAC,OAAA,EAAI,WAAW,EAAE,WACd,UAAA;AAAA,SAAA,SAAS,UACTA,2BAAAA,KAAC,OAAA,EAAI,WAAW,EAAE,YACf,UAAA;AAAA,UAAA,wCAAU,MAAA,EAAG,WAAW,EAAE,MAAA,GAAU,UAAA,OAAM;AAAA,UAC1C;AAAA,QAAA,GACH;AAAA,QAED,eAAeE,2BAAAA,IAAC,KAAA,EAAE,WAAW,EAAE,YAAA,GAAgB,UAAA,YAAA,CAAY;AAAA,MAAA,GAC9D;AAAA,MAED,WAAWA,2BAAAA,IAAC,OAAA,EAAI,WAAW,EAAE,WAAA,GAAe,UAAA,QAAA,CAAQ;AAAA,IAAA,GACvD;AAAA,IAED,YAAYA,2BAAAA,IAAC,OAAA,EAAI,WAAW,EAAE,SAAA,GAAa,SAAA,CAAS;AAAA,EAAA,GACvD;AAEJ;AAEA,WAAW,cAAc;;;"}
@@ -3472,9 +3472,10 @@ function TableToolbarViews({
3472
3472
  }) {
3473
3473
  const maxCustomTabs = Math.max(0, maxTabs - 1);
3474
3474
  const initialIds = useMemo$1(
3475
- // Só auto-pina views do próprio usuário (owner === myOwnerKey). As de outros
3476
- // (públicas) viram tab quando explicitamente aplicadas (via activeViewId).
3477
- () => views.filter((v) => v.owner === myOwnerKey).slice(0, maxCustomTabs).map((v) => v.id),
3475
+ // Auto-pina os presets do DS (owner === "preset" as abas fixas de defaultViews)
3476
+ // e as views do próprio usuário (owner === myOwnerKey). As públicas de OUTROS
3477
+ // usuários viram tab quando explicitamente aplicadas (via activeViewId).
3478
+ () => views.filter((v) => v.owner === myOwnerKey || v.owner === "preset").slice(0, maxCustomTabs).map((v) => v.id),
3478
3479
  // eslint-disable-next-line react-hooks/exhaustive-deps
3479
3480
  []
3480
3481
  );
@@ -3491,7 +3492,7 @@ function TableToolbarViews({
3491
3492
  for (const id of addedIds) {
3492
3493
  if (next.length >= maxCustomTabs) break;
3493
3494
  const v = views.find((vv) => vv.id === id);
3494
- if (v && v.owner !== myOwnerKey) continue;
3495
+ if (v && v.owner !== myOwnerKey && v.owner !== "preset") continue;
3495
3496
  next = [...next, id];
3496
3497
  }
3497
3498
  return next;
@@ -3505,10 +3506,10 @@ function TableToolbarViews({
3505
3506
  const customTabs = renderIds.map((id) => views.find((v) => v.id === id)).filter((v) => !!v).map((v) => ({
3506
3507
  id: v.id,
3507
3508
  name: typeof v.name === "string" ? v.name : String(v.name),
3508
- // Mostra o "X" (desfixar/fechar) nas views do usuário E na view ATIVA no
3509
- // momento assim pra fechar uma view pública de outro que foi aplicada
3510
- // (o X desfixa/deseleciona; não deleta a view de ninguém).
3511
- custom: v.owner === myOwnerKey || v.id === activeViewId
3509
+ // Mostra o "X" (desfixar/fechar) nas views do usuário E na view pública de
3510
+ // OUTRO que foi aplicada (o X desfixa/deseleciona; não deleta a view de
3511
+ // ninguém). Preset do DS é aba FIXA read-only nunca mostra X.
3512
+ custom: v.owner === myOwnerKey || v.id === activeViewId && v.owner !== "preset"
3512
3513
  }));
3513
3514
  const defaultName = customTabs.length === 0 ? soloLabel : "Default";
3514
3515
  return [{ id: DEFAULT_VIEW_ID, name: defaultName, custom: false }, ...customTabs];
@@ -22419,4 +22420,4 @@ export {
22419
22420
  DataTableLoading as y,
22420
22421
  DataTableNoResults as z
22421
22422
  };
22422
- //# sourceMappingURL=panel-CEkyoGiO.mjs.map
22423
+ //# sourceMappingURL=panel-8FiBxwcI.mjs.map