PageSourceSearch

https://radreport.com.br/assets/ResidencyRankingAdminPage-DnxDA5Bu.js

js radreport.com.br collected 2026-10-02 01:20:51 UTC 7,108 bytes, 1 lines download raw bytes

1import{j as e}from"./vendor-query-CmFN4-M1.js";import{r}from"./vendor-react-7PyNDetJ.js";import{aK as F,p as w,at as M,av as u,aD as h,aE as g,ab as A,aF as j,aG as v,aA as n,I as m}from"./index-BZSaBQD0.js";import{R as S,a as p}from"./radio-group-BZoBIVHH.js";import{u as O,a as q}from"./useResidencyRankingLaunch-C-sSGk_C.js";import{G as L,aR as G,a as V,E as X,L as z,C as D,a4 as I}from"./vendor-ui-DjI1iuvA.js";import"./vendor-supabase-BfoV2C50.js";function l({label:s,value:d,min:o}){const i=d>=o;return e.jsxs("div",{className:"flex items-center justify-between rounded-md border border-border/60 bg-card p-3",children:[e.jsxs("div",{className:"flex items-center gap-2 text-sm",children:[i?e.jsx(D,{className:"h-4 w-4 text-emerald-500"}):e.jsx(I,{className:"h-4 w-4 text-muted-foreground"}),e.jsx("span",{className:"text-foreground",children:s})]}),e.jsxs("div",{className:"text-sm tabular-nums",children:[e.jsx("span",{className:i?"font-bold text-emerald-600 dark:text-emerald-400":"font-semibold",children:d}),e.jsxs("span",{className:"text-muted-foreground",children:[" / ",o]})]})]})}function Q(){const{data:s,isLoading:d,refetch:o,isFetching:i}=O(),c=q(),[x,f]=r.useState("auto"),[b,N]=r.useState(30),[_,C]=r.useState(20),[y,R]=r.useState(3),[k,P]=r.useState(9);r.useEffect(()=>{s&&(f(s.config_mode),N(s.thresholds.min_programs),C(s.thresholds.min_verified_residents),R(s.thresholds.min_active_programs),P(s.thresholds.min_active_residents))},[s]);const t=x!=="auto",E=()=>{c.mutate({mode:x,min_programs:b,min_verified_residents:_,min_active_programs:y,min_active_residents:k})};return e.jsx(F,{children:e.jsxs("div",{className:"max-w-4xl mx-auto p-6 space-y-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsxs("h1",{className:"text-2xl font-bold flex items-center gap-2",children:[e.jsx(L,{className:"h-6 w-6 text-primary"}),"Ranking de Residências"]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Controle quando o ranking entre programas e residentes fica visível para os usuários e quando os prêmios mensais são distribuídos."})]}),e.jsxs(w,{variant:"outline",size:"sm",onClick:()=>o(),disabled:i,children:[e.jsx(G,{className:`h-4 w-4 mr-2 ${i?"animate-spin":""}`}),"Atualizar"]})]}),d||!s?e.jsx(M,{className:"h-64 w-full"}):e.jsxs(e.Fragment,{children:[e.jsxs(u,{children:[e.jsxs(h,{children:[e.jsxs(g,{className:"flex items-center gap-2",children:["Estado atual",s.enabled?e.jsxs(A,{className:"bg-emerald-500/15 text-emerald-700 dark:text-emerald-400 border-emerald-500/30",children:[e.jsx(V,{className:"h-3 w-3 mr-1"})," Visível"]}):e.jsxs(A,{variant:"secondary",className:"bg-muted text-muted-foreground",children:[e.jsx(X,{className:"h-3 w-3 mr-1"})," Oculto"]})]}),e.jsxs(j,{children:["Modo configurado: ",e.jsx("strong",{children:s.config_mode})," · Resolução atual: ",e.jsx("strong",{children:s.mode})]}),s.config_mode==="auto"&&!s.enabled&&e.jsx("div",{className:"mt-2 rounded-md border border-amber-500/30 bg-amber-500/10 px-3 py-2 text-xs text-amber-700 dark:text-amber-300",children:"Modo automático: o ranking está oculto porque ao menos um dos mínimos abaixo ainda não foi atingido. Os contadores em vermelho/cinza indicam o que está faltando."})]}),e.jsxs(v,{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsx(l,{label:"Programas ativos",value:s.counts.active_programs,min:s.thresholds.min_programs}),e.jsx(l,{label:"Residentes verificados",value:s.counts.verified_residents,min:s.thresholds.min_verified_residents}),e.jsx(l,{label:"Programas com XP no mês",value:s.counts.active_programs_with_xp,min:s.thresholds.min_active_programs}),e.jsx(l,{label:"Residentes com XP no mês",value:s.counts.active_verified_residents_with_xp,min:s.thresholds.min_active_residents})]})]}),e.jsxs(u,{children:[e.jsxs(h,{children:[e.jsx(g,{children:"Modo de operação"}),e.jsx(j,{children:"Escolha como o sistema decide se o ranking deve aparecer."})]}),e.jsx(v,{children:e.jsxs(S,{value:x,onValueChange:a=>f(a),className:"space-y-3",children:[e.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-border/60 p-3 cursor-pointer hover:bg-muted/40",children:[e.jsx(p,{value:"auto",id:"mode-auto",className:"mt-0.5"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:"Automático"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"O ranking aparece automaticamente quando todos os mínimos abaixo forem atingidos."})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-border/60 p-3 cursor-pointer hover:bg-muted/40",children:[e.jsx(p,{value:"active",id:"mode-active",className:"mt-0.5"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:"Forçar ativo"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"O ranking fica visível mesmo sem massa crítica. Útil para soft launch e demos."})]})]}),e.jsxs("label",{className:"flex items-start gap-3 rounded-md border border-border/60 p-3 cursor-pointer hover:bg-muted/40",children:[e.jsx(p,{value:"hidden",id:"mode-hidden",className:"mt-0.5"}),e.jsxs("div",{children:[e.jsx("div",{className:"font-semibold text-sm",children:"Forçar oculto"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"O ranking fica escondido mesmo se os mínimos forem atingidos."})]})]})]})})]}),e.jsxs(u,{children:[e.jsxs(h,{children:[e.jsx(g,{children:"Mínimos para liberação automática"}),e.jsxs(j,{children:["Aplicados apenas quando o modo está em ",e.jsx("strong",{children:"Automático"}),"."]})]}),e.jsxs(v,{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{htmlFor:"min-programs",children:"Programas ativos cadastrados"}),e.jsx(m,{id:"min-programs",type:"number",min:0,max:1e4,value:b,onChange:a=>N(Number(a.target.value)),disabled:t})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{htmlFor:"min-ver
1ified",children:"Residentes verificados"}),e.jsx(m,{id:"min-verified",type:"number",min:0,max:1e4,value:_,onChange:a=>C(Number(a.target.value)),disabled:t})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{htmlFor:"min-active-programs",children:"Programas com XP no mês"}),e.jsx(m,{id:"min-active-programs",type:"number",min:0,max:1e4,value:y,onChange:a=>R(Number(a.target.value)),disabled:t})]}),e.jsxs("div",{className:"space-y-1.5",children:[e.jsx(n,{htmlFor:"min-active-residents",children:"Residentes com XP no mês"}),e.jsx(m,{id:"min-active-residents",type:"number",min:0,max:1e4,value:k,onChange:a=>P(Number(a.target.value)),disabled:t})]}),t&&e.jsxs("div",{className:"md:col-span-2 text-xs text-muted-foreground",children:["Os mínimos não estão sendo usados no modo atual. Volte para ",e.jsx("strong",{children:"Automático"})," para reativá-los."]})]})]}),e.jsx("div",{className:"flex justify-end",children:e.jsxs(w,{onClick:E,disabled:c.isPending,children:[c.isPending&&e.jsx(z,{className:"h-4 w-4 mr-2 animate-spin"}),"Salvar configuração"]})})]})]})})}export{Q as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.