1import{j as e,r as d}from"./reactflow-D4V9tSA3.js";import{c as h,aL as f,w as j,y as b,z as v,I as g,H as y,B as o,$ as N,U as P,Q as p,cd as w,i as A,c2 as x,m as S}from"./index-GVOk_ySq.js";import{P as C}from"./PortalShell-Cltf_Zw-.js";import{P as l,a as z}from"./PortalSection-D2uLpQsR.js";import{P as c}from"./PortalKpi-CDjN5kSF.js";import{P as m}from"./PortalAlert-Nrkjq3vL.js";import{P as L}from"./PortalEmptyState-DEy5Z79a.js";import{F as B}from"./filter-Cm4U7Tre.js";import{D as F}from"./download-BjDwQOku.js";import{C as E}from"./chart-column-VoFk3ZHr.js";import{A as U}from"./activity-n6qr_10d.js";import{F as I}from"./file-text-3LCPm6Ms.js";import{S as T}from"./shopping-cart-BWToHCik.js";import{P as D}from"./percent-BSQeneN7.js";import"./trending-down-CpRVB1_z.js";function O({label:a,value:r,share:s,sub:t,className:n}){return e.jsxs("div",{className:h("space-y-1.5",n),children:[e.jsxs("div",{className:"flex items-center justify-between text-sm",children:[e.jsx("span",{className:"font-medium text-foreground truncate",children:a}),e.jsx("span",{className:"tabular-nums text-foreground font-semibold",children:r})]}),e.jsx("div",{className:"h-2 bg-muted rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full bg-gradient-to-r from-primary to-primary/70 rounded-full",style:{width:`${Math.max(0,Math.min(100,s))}%`}})}),t&&e.jsx("div",{className:"text-[11px] text-muted-foreground",children:t})]})}function u({label:a,value:r,rate:s,loss:t,last:n}){return e.jsxs("div",{children:[e.jsxs("div",{className:"bg-gradient-to-br from-primary/10 to-primary/0 border border-primary/20 rounded-2xl p-4",children:[e.jsxs("div",{className:"flex items-baseline justify-between",children:[e.jsx("span",{className:"text-sm font-semibold text-foreground",children:a}),e.jsx("span",{className:"text-2xl font-bold text-foreground tabular-nums",children:r})]}),typeof s=="number"&&e.jsxs("div",{className:"mt-1 text-[11px] text-muted-foreground",children:["Taux de passage :"," ",e.jsxs("span",{className:"font-semibold text-foreground",children:[s,"%"]}),typeof t=="number"&&t>
10&&e.jsxs("span",{className:"ml-2 text-rose-600 dark:text-rose-400",children:["â",t," perdus"]})]})]}),!n&&e.jsx("div",{className:"flex justify-center py-2 text-muted-foreground/40",children:e.jsx(f,{className:"w-5 h-5"})})]})}const R=[{label:"La Centrale",value:124,share:100},{label:"Leboncoin",value:88,share:71},{label:"AutoScout24",value:52,share:42},{label:"Site direct",value:31,share:25}];function ee(){const{user:a,loading:r}=j(),s=b(),[t,n]=d.useState(null);return d.useEffect(()=>{!r&&!a&&s("/auth")},[a,r,s]),d.useEffect(()=>{a&&(async()=>{const{data:i}=await v.rpc("is_admin");n(!!i),i||s("/")})()},[a,s]),r||t===null?e.jsx("div",{className:"min-h-screen flex items-center justify-center",children:e.jsx(g,{className:"h-8 w-8 animate-spin"})}):e.jsxs("div",{className:"min-h-screen flex flex-col bg-background",children:[e.jsx(y,{}),e.jsxs("main",{className:"flex-1",children:[e.jsx(C,{accent:"blue",badge:"Admin",breadcrumbs:[{label:"Administration",to:"/admin"},{label:"Portal UI"}],title:"Portal UI â design system",description:"Bibliothèque vivante des primitives partagées entre tous les portails Weespots. Sert de référence pour les nouvelles pages et de canvas de validation.",actions:e.jsxs(e.Fragment,{children:[e.jsxs(o,{variant:"outline",size:"sm",children:[e.jsx(B,{className:"w-4 h-4 mr-1.5"})," Filtrer"]}),e.jsxs(o,{size:"sm",children:[e.jsx(F,{className:"w-4 h-4 mr-1.5"})," Exporter"]})]})}),e.jsxs("div",{className:"px-4 md:px-8 py-6 md:py-8 max-w-[1600px] mx-auto space-y-8",children:[e.jsx("section",{className:"space-y-3",children:e.jsx(l,{icon:E,eyebrow:"Composant",title:"PortalSection",description:"Bandeau dégradé sombre teinté par le --primary du module courant. Slot pour eyebrow, icône, chip et action.",chip:"30 jours",action:e.jsxs(o,{size:"sm",variant:"secondary",children:[e.jsx(N,{className:"w-3.5 h-3.5 mr-1.5"})," Actualiser"]})})}),e.jsxs("section",{className:"space-y-3",children:[e.jsx(l,{size:"sm",icon:U,title:"PortalKpi",description:"Tuile KPI avec halo coloré et delta vs précédent."}),e.jsxs("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-3",children:[e.jsx(c,{icon:P,label:"Leads",value:148,delta:12.4,accent:"primary"}),e.jsx(c,{icon:I,label:"Offres",value:42,delta:-3.1,accent:"emerald"}),e.jsx(c,{icon:T,label:"BDC",value:18,delta:8,accent:"amber"}),e.jsx(c,{icon:p,label:"Non traités",value:4,accent:"rose"})]})]}),e.jsxs("section",{className:"space-y-3",children:[e.jsx(l,{size:"sm",icon:p,title:"PortalAlert",description:"Lignes d'alerte typées (critique / attention / info)."}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(m,{level:"high",title:"Leads non traités",detail
1:"12 leads sans prise en charge depuis 48h."}),e.jsx(m,{level:"med",title:"Offres sans relance > 48h",detail:"6 offres en attente d'action."}),e.jsx(m,{level:"low",title:"Activité saine",detail:"Aucune alerte critique sur la période."})]})]}),e.jsxs("section",{className:"space-y-3",children:[e.jsx(l,{size:"sm",icon:w,title:"PortalBar",description:"Barre horizontale label / valeur / part. Utile pour les répartitions sources, vendeurs, segments."}),e.jsx("div",{className:"bg-card border border-border rounded-2xl p-4 md:p-5 space-y-4",children:R.map(i=>e.jsx(O,{label:i.label,value:i.value,share:i.share},i.label))})]}),e.jsxs("section",{className:"space-y-3",children:[e.jsx(l,{size:"sm",icon:A,title:"PortalFunnelStep",description:"Ãtapes verticales d'un funnel avec taux de passage et nombre de perdus."}),e.jsxs("div",{className:"bg-card border border-border rounded-2xl p-4 md:p-5 max-w-md",children:[e.jsx(u,{label:"Leads",value:148}),e.jsx(u,{label:"Offres",value:42,rate:28,loss:106}),e.jsx(u,{label:"BDC",value:18,rate:43,loss:24,last:!0})]})]}),e.jsx(z,{icon:D,eyebrow:"Composant",title:"PortalCollapsibleSection",subtitle:"Bandeau + zone de contenu rétractable.",chip:"optionnel",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:"Le contenu disparaît au clic sur le chevron. Idéal pour les sections secondaires d'un dashboard."})}),e.jsxs("section",{className:"space-y-3",children:[e.jsx(l,{size:"sm",icon:x,title:"PortalEmptyState",description:"Ãtat vide standardisé avec icône, message et CTA."}),e.jsx(L,{icon:x,title:"Aucun contenu pour le moment",description:"Lancez votre première action pour voir apparaître les indicateurs ici.",action:e.jsx(o,{size:"sm",children:"Commencer"})})]})]})]}),e.jsx(S,{})]})}export{ee 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.