vendor: 4,653 bytes, lines 1-12
1import{c as Pe,j as e,r as l,d as j,a as K,m as w,i as Oe,L as Ee,D as Re,B as Te,b as C,t as P,k as q}from"./index-B0sM48fE.js";import{R as Me,c as Y,P as Le,W as Ie,C as $e,d as Ue,T as He,D as Be,a as W,O as Fe,e as Ge,f as ze,b as qe}from"./index-DLkBA9oM.js";import{u as V,b as J}from"./button-CXcf0psP.js";import{f as E,e as Q}from"./format-Ds46GObI.js";import{f as X}from"./fr-BMUfRRx4.js";import{C as O}from"./circle-check-CxxoOG2b.js";import{C as Ke}from"./clock-B4kNyysl.js";/** 2 * @license lucide-react v0.475.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const Ye=[["path",{d:"M8 2v4",key:"1cmpym"}],["path",{d:"M16 2v4",key:"4m81vk"}],["rect",{width:"18",height:"18",x:"3",y:"4",rx:"2",key:"1hopcy"}],["path",{d:"M3 10h18",key:"8toen8"}]],We=Pe("Calendar",Ye);var Ve=Symbol("radix.slottable");function Je(a){const t=({children:n})=>e.jsx(e.Fragment,{children:n});return t.displayName=`${a}.Slottable`,t.__radixId=Ve,t}var Z="AlertDialog",[Qe]=Ge(Z,[Y]),y=Y(),ee=a=>{const{__scopeAlertDialog:t,...n}=a,o=y(t);return e.jsx(Me,{...o,...n,modal:!0})};ee.displayName=Z;var Xe="AlertDialogTrigger",Ze=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,...o}=a,c=y(n);return e.jsx(ze,{...c,...o,ref:t})});Ze.displayName=Xe;var ea="AlertDialogPortal",ae=a=>{const{__scopeAlertDialog:t,...n}=a,o=y(t);return e.jsx(Le,{...o,...n})};ae.displayName=ea;var aa="AlertDialogOverlay",te=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,...o}=a,c=y(n);return e.jsx(Fe,{...c,...o,ref:t})});te.displayName=aa;var k="AlertDialogContent",[ta,sa]=Qe(k),ra=Je("AlertDialogContent"),se=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,children:o,...c}=a,g=y(n),m=l.useRef(null),f=V(t,m),D=l.useRef(null);return e.jsx(Ie,{contentName:k,titleName:re,docsSlug:"alert-dialog",children:e.jsx(ta,{scope:n,cancelRef:D,children:e.jsxs($e,{role:"alertdialog",...g,...c,ref:f,onOpenAutoFocus:Ue(c.onOpenAutoFocus,b=>{var R;b.preventDefault(),(R=D.current)==null||R.focus({preventScroll:!0})}),onPointerDownOutside:b=>b.preventDefault(),onInteractOutside:b=>b.preventDefault(),children:[e.jsx(ra,{children:o}),e.jsx(oa,{contentRef:m})]})})})});se.displayName=k;var re="AlertDialogTitle",ne=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,...o}=a,c=y(n);return e.jsx(He,{...c,...o,ref:t})});ne.displayName=re;var oe="AlertDialogDescription",ie=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,...o}=a,c=y(n);return e.jsx(Be,{...c,...o,ref:t})});ie.displayName=oe;var na="AlertDialogAction",le=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,...o}=a,c=y(n);return e.jsx(W,{...c,...o,ref:t})});le.displayName=na;var ce="AlertDialogCancel",de=l.forwardRef((a,t)=>{const{__scopeAlertDialog:n,...o}=a,{cancelRef:c}=sa(ce,n),g=y(n),m=V(t,c);return e.jsx(W,{...g,...o,ref:m})});de.displayName=ce;var oa=({contentRef:a})=>{const t=`\`${k}\` requires a description for the component to be accessible for screen reader users. 7 8You can add a description to the \`${k}\` by passing a \`${oe}\` component as a child, which also benefits sighted users by adding visible context to the dialog. 9 10Alternatively, you can use your own component as a description by assigning it an \`id\` and passing the same value to the \`aria-describedby\` prop in \`${k}\`. If the description is confusing or duplicative for sighted users, you can use the \`@radix-ui/react-visually-hidden\` primitive as a wrapper around your description component. 11 12For more information, see https://radix-ui.com/primitives/docs/components/alert-dialog`;return l.useEffect(()=>{var o;document.getElementById((o=a.current)==null?void 0:o.getAttribute("aria-describedby"))||console.warn(t)},[t,a]),null},ia=ee,la=ae,pe=te,me=se,ue=le,xe=de,fe=ne,ge=ie;const ca=ia,da=la,be=l.forwardRef(({className:a,...t},n)=>e.jsx(pe,{className:j("fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",a),...t,ref:n}));be.displayName=pe.displayName;const he=l.forwardRef(({className:a,...t},n)=>e.jsxs(da,{children:[e.jsx(be,{}),e.jsx(me,{ref:n,className:j("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rou
12nded-lg",a),...t})]}));he.displayName=me.displayName;const ye=({className:a,...t})=>e.jsx("div",{className:j("flex flex-col space-y-2 text-center sm:text-left",a),...t});ye.displayName="AlertDialogHeader";const _e=({className:a,...t})=>e.jsx("div",{className:j("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...t});_e.displayName="AlertDialogFooter";const je=l.forwardRef(({className:a,...t},n)=>e.jsx(fe,{ref:n,className:j("text-lg font-semibold",a),...t}));je.displayName=fe.displayName;const Ne=l.forwardRef(({className:a,...t},n)=>e.jsx(ge,{ref:n,className:j("text-sm text-muted-foreground",a),...t}));Ne.displayName=ge.displayName;const ve=l.forwardRef(({className:a,...t},n)=>e.jsx(ue,{ref:n,className:j(J(),a),...t}));ve.displayName=ue.displayName;const we=l.forwardRef(({className:a,...t},n)=>e.jsx(xe,{ref:n,className:j(J({variant:"outline"}),"mt-2 sm:mt-0",a),...t}));we.displayName=xe.displayName;function pa({isOpen:a,onOpenChange:t,serviceName:n,endDate:o,onConfirm:c,isLoading:g}){const{t:m,lang:f}=K(),D=f==="fr"?X:Q,b=f==="fr"?"d MMMM yyyy":"MMMM d, yyyy";return e.jsx(ca,{open:a,onOpenChange:t,children:e.jsxs(he,{children:[e.jsxs(ye,{children:[e.jsx(je,{children:m("cancel_dialog_title")}),e.jsxs(Ne,{className:"space-y-3",children:[e.jsxs("p",{children:[m("cancel_dialog_desc_prefix")," ",n,m("cancel_dialog_desc_suffix")]}),o&&e.jsxs("p",{className:"text-foreground font-medium",children:[m("cancel_dialog_access_until_prefix")," ",e.jsx("span",{className:"text-primary",children:E(new Date(o),b,{locale:D})})]})]})]}),e.jsxs(_e,{children:[e.jsx(we,{disabled:g,children:m("cancel_dialog_back")}),e.jsx(ve,{onClick:c,disabled:g,className:"bg-destructive hover:bg-destructive/90",children:m(g?"cancel_dialog_confirming":"cancel_dialog_confirm")})]})]})})}const ma="https://media.base44.com/images/public/69d3bbd071c32e8e2cd61c44/4a75bb4a7_LogoBeacons.png",ua="https://media.base44.com/images/public/69d3bbd071c32e8e2cd61c44/fb9c6ade2_image.png",xa="https://media.base44.com/images/public/69d3bbd071c32e8e2cd61c44/6bb88099f_ShopifyLogo.png",fa="https://media.base44.com/images/public/69d3bbd071c32e8e2cd61c44/23c01e3af_Sanstitre.png",ga="https://chromewebstore.google.com/search/codir";function ba(a){const t=[a("plan_feat_secure_token"),a("plan_feat_persistent")];return[{key:"beacons",name:a("plan_beacons_name"),logos:[ma],description:a("plan_desc_beacons"),prices:{biweekly:17.9,monthly:29.9},extensionUrl:"https://chromewebstore.google.com/detail/codir-bc/dhbageoimfkhbfihgpcfefacahhokgje",features:[a("plan_feat_beacons_edit"),a("plan_feat_extension_chrome"),a("plan_feat_mobile_pc"),a("plan_feat_beacons_add"),a("plan_feat_beacons_any"),...t]},{key:"paypal",name:a("plan_paypal_name"),logos:[ua],description:a("plan_desc_paypal"),prices:{biweekly:19.9,monthly:32.9},extensionUrl:"https://chromewebstore.google.com/detail/codir-pp/lpdngnnibooaddgganflbhjjoedbkfdc",features:[a("plan_feat_paypal_edit"),a("plan_feat_extension_chrome"),a("plan_feat_mobile_pc"),a("plan_feat_paypal_add"),a("plan_feat_paypal_any"),...t]},{key:"shopify",name:a("plan_shopify_name"),logos:[xa],description:a("plan_desc_shopify"),prices:{biweekly:19.9,monthly:32.9},extensionUrl:"https://chromewebstore.google.com/detail/codir-sh/opcnpobebfjhjonnhenmmbndkpgoccgp",features:[a("plan_feat_shopify_edit"),a("plan_feat_extension_chrome"),a("plan_feat_mobile_pc"),a("plan_feat_shopify_add"),a("plan_feat_shopify_any"),...t]},{key:"stripe",name:a("plan_stripe_name"),logos:[fa],description:a("plan_desc_stripe"),prices:{biweekly:19.9,monthly:32.9},extensionUrl:ga,features:[a("plan_feat_stripe_edit"),a("plan_feat_extension_chrome"),a("plan_feat_mobile_pc"),a("plan_feat_stripe_add"),a("plan_feat_stripe_any"),...t]}]}function ha(a){return[{key:"biweekly",label:a("period_biweekly_label"),unit:a("period_biweekly_label")},{key:"monthly",label:a("period_monthly_label"),unit:a("period_monthly_short"),badge:a("pricing_card_popular")}]}function Aa(){const{t:a,lang:t}=K(),n=t==="fr"?X:Q,o=ba(a),c=ha(a),[g,m]=l.useState(null),[f,D]=l.useState("monthly"),[b,R]=l.useState({}),[U,L]=l.useState(null),[T,I]=l.useState({isOpen:!1,serviceKey:null,
12serviceName:null,endDate:null}),[De,H]=l.useState(!1),[Ae,B]=l.useState(!1),F=async()=>{var r;const i=((r=(await C.functions.invoke("getStripeSubscriptions",{})).data)==null?void 0:r.subscriptions)||{};return R(i),i};l.useEffect(()=>{async function s(){var h,N,u,x,_,M;const i=await C.auth.me();m(i);const d=new URLSearchParams(window.location.search).get("session_id");if(d)try{const p=await C.functions.invoke("confirmStripeCheckout",{sessionId:d});P.success(a("sub_toast_activated"));const S=((h=p==null?void 0:p.data)==null?void 0:h.amount)||((u=(N=p==null?void 0:p.data)==null?void 0:N.subscription)==null?void 0:u.amount),A=((x=p==null?void 0:p.data)==null?void 0:x.serviceKey)||((M=(_=p==null?void 0:p.data)==null?void 0:_.subscription)==null?void 0:M.serviceKey);q("PURCHASE",{user_email:i==null?void 0:i.email,custom_data:{currency:"EUR",...S?{value:Number(S)}:{},...A?{content_ids:[A]}:{},transaction_id:d}}),window.history.replaceState({},"","/app/subscription")}catch(p){console.error("Payment confirmation error",p)}await F()}s()},[]);const ke=s=>{var d;const i=o.find(h=>h.key===s),r=(d=b[s])==null?void 0:d.endDate;I({isOpen:!0,serviceKey:s,serviceName:i==null?void 0:i.name,endDate:r})},Se=async()=>{const{serviceKey:s}=T;H(!0);try{const i=b[s];i!=null&&i.subscriptionId&&await C.functions.invoke("cancelStripeSubscription",{subscriptionId:i.subscriptionId}),await F(),I({isOpen:!1,serviceKey:null,serviceName:null,endDate:null}),P.success(a("sub_toast_cancelled"))}catch(i){console.error(i),P.error(a("sub_toast_cancel_error"))}finally{H(!1)}},Ce=async s=>{var i,r;L(s);try{const h=new URLSearchParams(window.location.search).get("ref")||localStorage.getItem("affiliate_ref")||void 0,N=await C.functions.invoke("createStripeCheckout",{serviceKey:s,billingPeriod:f,source:"subscription_page",...h?{affiliateCode:h}:{}}
12);if((i=N.data)!=null&&i.sessionUrl){const u=o.find(_=>_.key===s),x=(r=u==null?void 0:u.prices)==null?void 0:r[f];q("START_CHECKOUT",{user_email:g==null?void 0:g.email,custom_data:{currency:"EUR",...x?{value:Number(x)}:{},content_ids:[s]}}),window.location.href=N.data.sessionUrl}else P.error(a("sub_toast_session_error")),L(null)}catch(d){P.error(a("sub_toast_payment_error")),console.error(d),L(null)}};return c.find(s=>s.key===f),e.jsxs("div",{className:"max-w-4xl mx-auto",children:[e.jsxs(w.div,{initial:{opacity:0,y:-10,filter:"blur(8px) brightness(2)"},animate:{opacity:1,y:0,filter:"blur(0px) brightness(1)"},transition:{duration:.6,ease:[.22,1,.36,1]},className:"mb-10 text-center",children:[e.jsx("h1",{className:"font-space font-bold text-3xl md:text-4xl text-white tracking-tight",children:a("sub_page_title")}),e.jsx("p",{className:"text-white/80 mt-2",children:a("sub_page_subtitle")})]}),e.jsxs(w.button,{onClick:()=>B(!0),initial:{opacity:0,y:10},animate:{opacity:1,y:0},transition:{duration:.4,ease:[.22,1,.36,1]},whileHover:{scale:1.01},whileTap:{scale:.99},className:"w-full mb-6 rounded-2xl border border-primary/40 bg-gradient-to-r from-primary/15 via-primary/10 to-accent/15 backdrop-blur-xl p-5 text-left flex items-center justify-between gap-4 hover:border-primary/60 transition-colors",children:[e.jsxs("div",{className:"flex items-center gap-3 min-w-0",children:[e.jsx("div",{className:"h-10 w-10 rounded-xl bg-gradient-to-br from-primary to-accent flex items-center justify-center shrink-0 shadow-lg shadow-primary/30",children:e.jsx(Oe,{className:"h-5 w-5 text-white"})}),e.jsxs("div",{className:"min-w-0",children:[e.jsxs("div",{className:"font-space font-semibold text-foreground flex items-center gap-2 flex-wrap",children:["Créer un bundle personnalisé",e.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-white bg-gradient-to-r from-primary to-accent px-2 py-0.5 rounded-full",children:"-25%"})]}),e.jsx("p",{className:"text-sm text-muted-foreground truncate",children:"Combine 2 ou 3 extensions et économise jusqu'à 25%."})]})]}),e.jsx("span",{className:"text-sm font-semibold text-primary hidden sm:inline shrink-0",children:"Configurer â"})]}),e.jsxs(w.div,{initial:{opacity:0,y:20,scale:.97},animate:{opacity:1,y:0,scale:1},transition:{duration:.5,ease:[.22,1,.36,1]},className:"mb-10 rounded-2xl border border-primary/30 bg-card/80 backdrop-blur-xl p-6",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4 mb-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"inline-flex items-center gap-2 mb-1",children:[e.jsx("span",{className:"px-2 py-0.5 text-[10px] font-bold rounded-full bg-gradient-to-r from-primary to-accent text-white uppercase tracking-wider",children:"Gratuit"}),e.jsx("h3",{className:"font-space font-semibold text-foreground",children:"Utilise CODIR gratuitement"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Crée un compte et utilise l'extension tout de suite â version bridée, sans payer."})]}),e.jsxs("div",{className:"text-right shrink-0",children:[e.jsx("div",{className:"text-2xl font-bold text-foreground",children:"0â¬"}),e.jsx("div",{className:"text-xs text-muted-foreground",children:"pour toujours"})]})]}),e.jsxs("div",{className:"pt-3 border-t border-border/50 space-y-2",children:[e.jsxs("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[e.jsx(O,{className:"h-4 w-4 text-primary shrink-0 mt-0.5"}),e.jsx("span",{children:"Toutes les fonctions de personnalisation"})]}),e.jsxs("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[e.jsx(O,{className:"h-4 w-4 text-primary shrink-0 mt-0.5"}),e.jsxs("span",{children:["Génération plafonnée à ",e.jsx("strong",{className:"text-foreground",children:"100⬠par extension"})]})]}),e.jsxs("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[e.jsx(O,{className:"h-4 w-4 text-primary shrink-0 mt-0.5"}),e.jsx("span",{children:"Passe en illimité quand tu veux avec un plan ci-dessous"})]})]})]}),e.jsx("div",{className:"mb-12 flex justify-center",children:e.jsx("div",{className:"relative inline-flex gap-1 p-1.5 bg-secondary/50 rounded-xl border border-border/50",children:c.map(s=>{const i=f===s.key;return e.jsxs("div",{className:"relative",children:[e.jsxs("button",{onClick:()=>D(s.key),className:`relative px-6 py-2.5 rounded-lg text-sm font-semibold transition-colors duration-300 ${i?"text-slate-900":"text-muted-foreground hover:text-foreground"}`,children:[i&&e.jsx(w.div,{layoutId:"periodActivePill",className:"absolute inset-0 bg-white rounded-lg shadow-lg",transition:{type:"spring",stiffness:380,damping:32}}),e.jsx("span",{className:"relative z-10",children:s.label})]}),s.badge&&e.jsx(w.span,{initial:{scale:.8,opacity:0,y:-4}
12,animate:{scale:1,opacity:1,y:0},transition:{delay:.15,type:"spring",stiffness:300,damping:20},className:"absolute -top-2.5 -right-2 px-2 py-0.5 text-[10px] font-bold rounded-full whitespace-nowrap shadow-md border border-white/10 bg-gradient-to-r from-primary to-accent text-white",children:s.badge?`â
${s.badge}`:s.badge})]},s.key)})})}),e.jsx("h2",{className:"text-xs font-space font-bold text-white uppercase tracking-[0.25em] mb-4",children:a("sub_section")}),e.jsx("div",{className:"space-y-4",children:o.map((s,i)=>{var z;const r=b[s.key],d=r==null?void 0:r.isActive,h=r&&r.billingPeriod===f,N=d&&!(r!=null&&r.cancelAtPeriodEnd),u=d&&((r==null?void 0:r.cancelAtPeriodEnd)||(r==null?void 0:r.status)==="canceled"),x=!!(r!=null&&r.isAdminGrant),_=!!(r!=null&&r.isBundle),M=d&&s.prices[r.billingPeriod]!==void 0,p=d?r.billingPeriod:f,S=x?null:M?s.prices[r.billingPeriod]:d?null:s.prices[f],A=c.find(v=>v.key===p),G=d?((z=c.find(v=>v.key===r.billingPeriod))==null?void 0:z.label)||r.billingPeriod:null;return e.jsx(w.div,{initial:{opacity:0,y:30,scale:.95},animate:{opacity:1,y:0,scale:1},transition:{duration:.6,delay:i*.12,ease:[.22,1,.36,1]},whileHover:{scale:1.015,transition:{duration:.3}},children:e.jsx("div",{className:`w-full rounded-2xl border p-6 transition-all duration-200 backdrop-blur-xl ${N?"border-primary/50 bg-card/80":"border-border/50 bg-card/80 hover:border-border/80"}`,children:e.jsxs("div",{className:"flex items-start gap-4",children:[e.jsx("div",{className:"flex items-center gap-1.5 shrink-0",children:s.logos.map((v,$)=>e.jsx("img",{src:v,alt:"",className:"h-8 w-8 object-contain"},$))}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"flex items-start justify-between mb-3",children:[e.jsxs("div",{children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("h3",{className:"font-space font-semibold text-foreground",children:s.name}),_&&e.jsx("span",{className:"text-[10px] font-bold uppercase tracking-wider text-white bg-gradient-to-r from-primary to-accent px-2 py-0.5 rounded-full",children:"Bundle"})]}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s.description})]}),e.jsx("div",{className:"text-right",children:x?e.jsx("div",{className:"text-xs font-semibold uppercase tracking-wider text-primary",children:a("sub_admin_free")}):S!==null?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"flex items-baseline gap-2 justify-end flex-wrap",children:e.jsxs("div",{className:"text-2xl font-bold text-foreground",children:[S.toFixed(2),"â¬"]})}),e.jsxs("div",{className:"text-xs text-muted-foreground",children:["/",(A==null?void 0:A.unit)||p]})]}):e.jsxs("div",{className:"text-xs font-semibold uppercase tracking-wider text-primary",children:[a("sub_plan_label_prefix")," ",G]})})]}),s.features&&e.jsx("div",{className:"mb-4 pt-3 border-t border-border/50 space-y-2",children:s.features.map((v,$)=>e.jsxs("div",{className:"flex items-start gap-2 text-sm text-muted-foreground",children:[e.jsx(O,{className:"h-4 w-4 text-primary shrink-0 mt-0.5"}),e.jsx("span",{children:v})]},$))}),!d&&e.jsx("button",{onClick:()=>Ce(s.key),disabled:U===s.key,className:"mt-4 w-full py-2.5 bg-primary hover:bg-primary/90 disabled:opacity-50 text-primary-foreground font-medium rounded-lg transition-all flex items-center justify-center gap-2",children:U===s.key?e.jsxs(e.Fragment,{children:[e.jsx(Ee,{className:"h-4 w-4 animate-spin"}),a("sub_redirecting")]}):a("sub_start_now")}),d&&!h&&!x&&e.jsxs("div",{className:"mt-4 rounded-lg bg-primary/10 border border-primary/30 px-4 py-2.5 text-xs text-primary/90",children:[a("sub_already_prefix")," ",e.jsx("span",{className:"font-semibold",children:G}),a("sub_already_suffix")]}),d&&(r==null?void 0:r.startDate)&&e.jsxs(w.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},transition:{duration:.3},className:"mt-4 pt-4 border-t border-border/50 space-y-3",children:[e.jsxs("div",{className:`flex items-center gap-2 text-sm font-medium ${u?"text-orange-400":"text-green-500"}`,children:[e.jsx(O,{className:"h-4 w-4"}),a(x?"sub_status_admin_free":u?"sub_status_cancelled":"sub_status_active")]}),!x&&e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsxs("div",{className:"bg-secondary/50 rounded-lg px-3 py-2",children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground mb-0.5",children:[e.jsx(We,{className:"h-3 w-3"}),a("sub_start_date")]}),e.jsx("div",{className:"text-sm font-medium text-foreground",children:E(new Date(r.startDate),"dd MMM yyyy",{locale:n})}),e.jsx("div",{className:"text-xs text-muted-foreground",children:E(new Date(r.startDate),"HH:mm",{locale:n})})]}),r.endDate&&e.jsxs("div",{className:`rounded-lg px-3 py-2 ${u?"bg-orange-500/10":"bg-secondary/50"}`,children:[e.jsxs("div",{className:"flex items-center gap-1.5 text-xs text-muted-foreground mb-0.5",children:[e.jsx(Ke,{className:"h-3 w-3"}),a(u?"sub_access_ends":"sub_next_renewal")]}),e.jsx("div",{className:`text-sm font-medium ${u?"text-orange-400":"text-foreground"}`,children:E(new Date(r.endDate),"dd MMM yyyy",{locale:n})}),e.jsx("div",{className:"text-xs text-muted-foreground",children:E(new Date(r.endDate),"HH:mm",{locale:n})})]})]}),s.extensionUrl&&e.jsxs("a",{href:s.extensionUrl,target:"_blank",rel:"noopener noreferrer",className:"w-full py-2.5 bg-gradient-to-r from-primary to-accent hover:opacity-90 text-white font-semibold rounded-lg transition-all flex items-center justify-center gap-2 shadow-lg shadow-primary/20",children:[e.jsx(Re,{className:"h-4 w-4"}),a("sub_download_ext")]}),!u&&!x&&!_&&e.jsxs("button",{onClick:()=>ke(s.key),className:"w-full py-2 border border-red-500/50 hover:bg-red-500/10 text-red-500 hover:text-red-600 font-medium rounded-lg transition-all flex items-center justify-center gap-2",children:[e.jsx(qe,{className:"h-4 w-4"}),a("sub_cancel_button")]}),!u&&!x&&_&&e.jsx("div",{className:"rounded-lg bg-secondary/40 border border-border/50 px-3 py-2 text-xs text-muted-foreground text-center",children:"Extension incluse dans ton bundle. Annule le bundle depuis n'importe quelle extension du pack pour tout arrêter."})]})]})]})})},s.key)})}),e.jsx(Te,{open:Ae,onClose:()=>B(!1)}),e.jsx(pa,{isOpen:T.isOpen,onOpenChange:s=>
12!s&&I({isOpen:!1,serviceKey:null,serviceName:null,endDate:null}),serviceName:T.serviceName,endDate:T.endDate,onConfirm:Se,isLoading:De})]})}export{Aa 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.