Votre navigateur ne supporte pas JavaScript et vous n'avez pas accès à toutes les fonctionnalités du site.
Veuillez vérifier que JavaScript est bien activé sur votre navigateur.

Tests

import React, { useMemo, useState } from "react"; import { motion } from "framer-motion"; import { ArrowRight, CalendarDays, ChevronDown, Clock3, HandHeart, Mail, MapPin, Menu, Search, ShieldCheck, Trophy, Users, X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; const NAV=[["Accueil","accueil"],["Le club","club"],["Équipes","equipes"],["Planning","planning"],["Actualités","actualites"],["Le club en chiffres","chiffres"],["Partenaires","partenaires"],["Contact","contact"]]; const TEAMS=["U4","U5","U7","U9M1","U9M2","U9M3","U9F1","U11M1","U11M2","U11M3","U11F1","U11F2","U13 HPB","U13M2","U13M3","U13F1","U13F2","U15 HPB","U15M2","U15M3","U15F1","U15F2","U18 HPB","U18M2","U18M3","U18F1","U18F2","Seniors féminines","Seniors masculins"]; const SLOTS=[ {team:"U7",gym:"Gymnase Joël Paon",day:"Samedi",time:"10 h 00 – 11 h 00"}, {team:"U9F1",gym:"Gymnase Joël Paon",day:"Mercredi",time:"17 h 00 – 18 h 15"}, {team:"U11M2",gym:"Gymnase du Breil",day:"Jeudi",time:"18 h 30 – 19 h 30"}, {team:"U15 HPB",gym:"Gymnase du Breil",day:"Jeudi",time:"19 h 30 – 21 h 00"} ]; const NEWS=[ {tag:"SAISON 2026–2027",date:"1ER MAI 2026",title:"En route vers la saison 2026–2027 !",text:"Le club présente sa réorganisation, ses capacités d’accueil et les principes de préparation de la nouvelle saison.",icon:Trophy}, {tag:"PLANNING",date:"SAISON 2026–2027",title:"Planning 2026–2027",text:"Retrouvez l’organisation des rencontres et les informations pratiques publiées par le club.",icon:CalendarDays}, {tag:"DÉCOUVRIR LE NBB",date:"PRÉSENTATION DU CLUB",title:"Découvrez le NBB",text:"Découvrez le projet sportif, les équipes et la vie associative du NANTES BREIL BASKET.",icon:Users} ]; const STATS=[["450","licenciés"],["25","équipes"],["12","commissions"],["1","projet collectif"]]; function Logo(){return
NBB
} function Title({eyebrow,title,text,light=false}){return
● {eyebrow}

{title}

{text&&

{text}

}
} export default function NBBWebsite(){ const [menu,setMenu]=useState(false),[team,setTeam]=useState("Toutes"),[gym,setGym]=useState("Tous"),[day,setDay]=useState("Tous"),[query,setQuery]=useState(""); const scroll=id=>{document.getElementById(id)?.scrollIntoView({behavior:"smooth"});setMenu(false)}; const unique=k=>[...new Set(SLOTS.map(s=>s[k]))]; const filtered=useMemo(()=>SLOTS.filter(s=>(team==="Toutes"||s.team===team)&&(gym==="Tous"||s.gym===gym)&&(day==="Tous"||s.day===day)&&Object.values(s).join(" ").toLowerCase().includes(query.toLowerCase())),[team,gym,day,query]); return
NANTES BREIL BASKET ● Saison 2026–2027
{menu&&}
BIENVENUE AU NBB

LE BASKET
POUR TOUS.

Près de 450 licenciés et 25 équipes, du micro-basket aux seniors, au cœur du quartier des Hauts-Pavés à Nantes. Un club formateur qui place le collectif, la progression et le plaisir du jeu au centre de son projet sportif.

NBB
<div className="mt-12 grid gap-6 md:grid-cols-3">{[[Trophy,"Un projet sportif","Construire dès les U9 une identité de jeu collective et dynamique, puis accompagner la progression vers les catégories seniors."],[ShieldCheck,"Le basket pour tous","Garantir un accès au basket pour tous dans les meilleures conditions d’accueil possibles."],[HandHeart,"Une énergie bénévole","Faire vivre l’association grâce aux commissions, aux parents référents et aux nombreux bénévoles du club."]].map(([I,t,d])=><Card key={t} className="rounded-[2rem] shadow-none"><CardContent className="p-8"><div className="grid h-14 w-14 place-items-center rounded-2xl bg-orange-100 text-orange-600"><I/></div><h3 className="mt-6 text-xl font-black">{t}</h3><p className="mt-3 leading-7 text-zinc-600">{d}</p></CardContent></Card>)}</div></div></section> <section id="equipes" className="bg-zinc-950 py-24"><div className="mx-auto max-w-7xl px-4 md:px-8"><Title light eyebrow="NOS ÉQUIPES" title="Du micro-basket aux seniors" text="Les catégories annoncées par le club pour la saison 2026–2027."/><div className="mt-10 grid gap-3 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6">{TEAMS.map(t=><button key={t} onClick={()=>{setTeam(t);scroll("planning")}} className="rounded-2xl border border-white/10 bg-white/5 p-5 text-left font-black text-white transition hover:-translate-y-1 hover:border-orange-500 hover:text-orange-400">{t}<ChevronDown className="mt-3 h-4 w-4"/></button>)}</div></div></section> <section id="planning" className="bg-zinc-100 py-24"><div className="mx-auto max-w-7xl px-4 md:px-8"><Title eyebrow="PLANNING" title="Trouvez votre entraînement" text="Utilisez les filtres Équipe, Gymnase et Jour. Les créneaux affichés dans cette maquette doivent être synchronisés avec le planning officiel avant publication."/><div className="mt-10 grid gap-4 rounded-[2rem] bg-white p-6 md:grid-cols-4"><label className="relative"><Search className="absolute left-4 top-1/2 h-4 w-4 -translate-y-1/2 text-zinc-400"/><input value={query} onChange={e=>setQuery(e.target.value)} placeholder="Rechercher" className="w-full rounded-2xl border p-3 pl-11"/></label>{[[team,setTeam,["Toutes",...unique("team")]],[gym,setGym,["Tous",...unique("gym")]],[day,setDay,["Tous",...unique("day")]]].map(([v,set,items],i)=><select key={i} value={v} onChange={e=>set(e.target.value)} className="rounded-2xl border bg-white p-3 font-semibold">{items.map(x=><option key={x}>{x}</option>)}</select>)}</div><div className="mt-6 grid gap-4 md:grid-cols-2 lg:grid-cols-3">{filtered.map(s=><div key={s.team+s.day} className="rounded-[1.75rem] bg-zinc-950 p-6 text-white"><div className="text-xs font-black tracking-widest text-orange-500">ENTRAÎNEMENT</div><div className="mt-2 text-2xl font-black">{s.team}</div><div className="mt-5 space-y-3"><div className="flex gap-3 rounded-2xl bg-white/10 p-4"><Clock3 className="text-orange-500"/>{s.day} · {s.time}</div><div className="flex gap-3 rounded-2xl bg-white/10 p-4"><MapPin className="text-orange-500"/>{s.gym}</div></div></div>)}</div></div></section> <section id="actualites" className="py-24"><div className="mx-auto max-w-7xl px-4 md:px-8"><Title eyebrow="ACTUALITÉS OFFICIELLES" title="Les informations du NBB" text="Une sélection de contenus publiés sur le site officiel du club."/><div className="mt-12 grid gap-6 lg:grid-cols-3">{NEWS.map(n=>{const I=n.icon;return <Card key={n.title} className="overflow-hidden rounded-[2rem] shadow-none"><div className="grid h-44 place-items-center bg-gradient-to-br from-orange-500 to-orange-300"><I className="h-20 w-20 text-white/50"/></div><CardContent className="p-7"><div className="text-xs font-black text-orange-600">{n.tag} · {n.date}</div><h3 className="mt-3 text-2xl font-black">{n.title}</h3><p className="mt-3 leading-7 text-zinc-600">{n.text}</p></CardContent></Card>})}</div></div></section> <section id="chiffres" className="bg-orange-500 py-20"><div className="mx-auto max-w-7xl px-4 md:px-8"><Title eyebrow="LE CLUB EN CHIFFRES" title="Une dynamique collective"/><div className="mt-10 grid gap-4 sm:grid-cols-2 lg:grid-cols-4">{STATS.map(([n,l])=><div key={l} className="rounded-[2rem] bg-white/90 p-7"><div className="text-5xl font-black">{n}</div><div className="mt-2 font-black uppercase tracking-wider text-zinc-600">{l}</div></div>)}</div></div></section> <section id="partenaires" className="bg-zinc-950 py-24"><div className="mx-auto max-w-7xl px-4 md:px-8"><Title light eyebrow="PARTENAIRES & MÉCÉNAT" title="Contribuez au développement du club" text="Entreprises et partenaires peuvent accompagner les projets du NANTES BREIL BASKET par un partenariat ou un mécénat afin d’améliorer la qualité de la pratique proposée aux adhérents."/><Button onClick={()=>scroll("contact")} className="mt-8 h-14 rounded-full bg-orange-500 px-7 font-black hover:bg-orange-600">Contacter l’équipe partenariats <ArrowRight className="ml-2"/></Button></div></section> <section id="contact" className="py-24"><div className="mx-auto grid max-w-7xl gap-10 px-4 md:px-8 lg:grid-cols-2"><div><Title eyebrow="CONTACT" title="Échangeons avec vous" text="Une question sur les inscriptions, une équipe, le bénévolat ou un partenariat ?"/><div className="mt-8 space-y-4"><div className="flex gap-3"><Mail className="text-orange-500"/>contact@nbb44.fr</div><div className="flex gap-3"><MapPin className="text-orange-500"/>Gymnase Joël Paon, 42 bis rue des Hauts-Pavés, 44000 Nantes</div></div></div><form className="grid gap-4 rounded-[2rem] bg-zinc-100 p-7"><input required placeholder="Nom et prénom" className="rounded-2xl border bg-white p-4"/><input required type="email" placeholder="Adresse e-mail" className="rounded-2xl border bg-white p-4"/><textarea required rows="5" placeholder="Votre message" className="rounded-2xl border bg-white p-4"/><Button className="w-fit rounded-full bg-orange-500 px-6 font-black hover:bg-orange-600">Envoyer le message</Button></form></div></section> </main> <footer className="bg-zinc-950 px-4 py-12 text-white"><div className="mx-auto flex max-w-7xl flex-col gap-8 md:flex-row md:items-center md:justify-between"><div className="flex items-center gap-3"><Logo/><div className="font-black">NANTES BREIL BASKET<br/><span className="text-sm font-normal text-zinc-400">Le basket pour tous, la force du collectif.</span></div></div><div className="text-sm text-zinc-400">© 2026 NANTES BREIL BASKET · nantes-breil-basket.fr</div></div></footer> </div> } </div> <div class="panel panel-bloc panel-primary social-share"> <div class="panel-heading"> <h4 class="h-font">Partager cette page</h4> </div> <div class="panel-body pb0"> <!-- WHATSAPP --> <a class="btn btn-whatsapp" href="https://api.whatsapp.com/send?text=https://nantes-breil-basket.fr/matchs" target="_blank" > <i class="fa fa-brands fa-whatsapp m0"></i> </a> <!-- FACEBOOK --> <a class="btn btn-facebook" href="https://www.facebook.com/sharer/sharer.php?u=https://nantes-breil-basket.fr/matchs&fbrefresh=kalisport" target="_blank" > <i class="fa fa-brands fa-facebook-f m0"></i> </a> <!-- LINKEDIN --> <a class="btn btn-linkedin" href="https://www.linkedin.com/sharing/share-offsite/?url=https://nantes-breil-basket.fr/matchs" target="_blank" > <i class="fa fa-brands fa-linkedin m0"></i> </a> <!-- TWITTER --> <a class="btn btn-twitter" href="https://x.com/intent/post/?url=https://nantes-breil-basket.fr/matchs" target="_blank" > <i class="fa fa-brands fa-x-twitter m0"></i> </a> </div> </div> </div> <!-- END CONTENT --> <div class="clearfix"></div> </div> <!-- END PAGE --> </div> <!-- END CONTAINER --> <div id="hook-post-contenu"></div> <div id="footer"> <div id="menu-footer"> <div class="container"> <ul> <li> <a class="h-font" href="https://nantes-breil-basket.fr/protection-des-donnees" > Protection des données </a> </li> <li> <a class="h-font" href="https://nantes-breil-basket.fr/mentions-legales" > Mentions Légales </a> </li> <li> <a class="h-font" href="#tarteaucitron" > Gestion des cookies </a> </li> <li> <a class="h-font" href="https://nantes-breil-basket.fr/matchs" > Tests </a> </li> </ul> </div> </div> </div> <div id="footer-signature" class="text-center"> <div class="container text-center"> © 2026 Nantes Breil Basket - Tous droits réservés - Propulsé par <a href="https://www.kalisport.com/logiciel/basket-ball" target="_blank">Kalisport, outil numérique pour club de basketball</a> </div> </div> <div id="hook-footer"> <div id="footer-partenaires" class="partenaires-band text-center"> <div class="container"> <div class="encart-slider owl-encarts" data-hook="footer"> <div class="item" data-id="7" data-hook="footer"> <a href="https://nantes-breil-basket.fr/partenaires/fiche/7/mooders-enregistrement-sonore-et-edition-musicale-nantes?e=footer"> <img src="/assets/img/default-ll.png" data-src="/public/5071/upload/images/partenaires/mooders-enregistrement-sonore-et-edition-musicale-5920z-nantes-vignette_1.png" alt="MOODERS" class="img-responsive kll" /> </a> </div> <div class="item" data-id="3" data-hook="footer"> <a href="https://nantes-breil-basket.fr/partenaires/fiche/3/atelier-photo-emmatitia-photographe-nantes?e=footer"> <img src="/assets/img/default-ll.png" data-src="/public/5071/upload/images/partenaires/atelier-photo-emmaticia-photographe-nantes-vignette.png" alt="EMMATITIA" class="img-responsive kll" /> </a> </div> <div class="item" data-id="1" data-hook="footer"> <a href="https://nantes-breil-basket.fr/partenaires/fiche/1/ar-paysage-services-d-amenagement-paysager-le-temple-de-bretagne?e=footer"> <img src="/assets/img/default-ll.png" data-src="/public/5071/upload/images/partenaires/ar-paysage-nantes-logo.jpg" alt="AR'PAYSAGE" class="img-responsive kll" /> </a> </div> <div class="item" data-id="11" data-hook="footer"> <a href="https://nantes-breil-basket.fr/partenaires/fiche/11/prh-travaux-de-menuiserie-bois-et-pvc-port-saint-pere?e=footer"> <img src="/assets/img/default-ll.png" data-src="/public/5071/upload/images/partenaires/prh-travaux-de-menuiserie-bois-et-pvc-port-saint-pere-vignette.png" alt="Perspectives Renov' Habitat" class="img-responsive kll" /> </a> </div> </div> </div> </div> </div></div><!-- /#website-container --><div id="js-container" class="hidden"><script type="text/javascript" src="//cdn-x204.kalisport.com/js/ajax-upload/custom.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/justifiedGallery/jquery.justifiedGallery.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/bxslider/jquery.bxslider.min.js?20261105+2023" ></script><script type="text/javascript" src="//nantes-breil-basket.fr/js/kalisport.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/tom-select/tom-select.complete.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/js/tomselect.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/js/input-stepper.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/datepicker/js/bootstrap-datepicker.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/datepicker/js/locales/bootstrap-datepicker.fr.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/bootstrap-sweetalert/dist/sweetalert.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/js/sweetalert.kalisport.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/jquery.lazy/jquery.lazy.min.js?20261105+2023" ></script><script type="text/javascript" src="//cdn-x204.kalisport.com/lib/jquery.lazy/jquery.lazy.plugins.min.js?20261105+2023" ></script><script type="text/javascript">$('.dropdown-toggle').dropdown();$('.js-gallery').justifiedGallery({ 'rowHeight': 152, 'captions': false, 'cssAnimation': true, 'fixedHeight': true }); var pauseValue = parseInt(KAL_BLOCS_ENCARTPUB_SPEED) + parseInt(KAL_BLOCS_ENCARTPUB_ANIMATION_SPEED); $('.bxencarts').bxSlider({ mode: 'fade', captions: false, auto: true, pause: pauseValue, autoControls: false, slideMargin: 0, pager: false, controls: false, autoHover: true, adaptiveHeight: true, onSlideAfter: function(currentSlide, totalSlides, currentSlideHtmlObject){ ctrlShowEncarts = []; var id = $(currentSlide).attr('data-id'); var hook = $(currentSlide).attr('data-hook'); if(id != '' && hook != '' && isInView(this)){ if (typeof showEncarts[ hook ] === 'undefined'){ showEncarts[ hook ] = []; } ctrlShowEncarts[ id ] = true; if ( typeof showEncarts[ hook ][ id ] === 'undefined' ){ // Appel AJAX $.ajax({ url: KAL_RACINE_PATH + 'controller/partenaires/ajax.php?id=' + id + '&hook=' + hook }).done(function() { //console.log('Vue ++'); }); } } showEncarts[ hook ] = ctrlShowEncarts; } }); $('.pagevisuel-slider').bxSlider({ mode: 'fade', captions: false, slideMargin: 0, pager: true, pagerCustom: '#pagevisuel-slider-pager', controls: true, adaptiveHeight: true, captions: true }); $(document).ready(function () { // TOOLTIP - BOOTSTRAP $('body').tooltip({ selector: '[data-toggle=tooltip]', container: 'body' }); }); $(function() { $('.datepicker').datepicker({ format: 'dd/mm/yyyy', todayBtn: true, language: 'fr', autoclose: true, todayHighlight: true, }); $('.datepicker-birth').datepicker({ format: 'dd/mm/yyyy', todayBtn: true, language: 'fr', autoclose: true, todayHighlight: true, endDate: '05/Nov/2026' }); }); $(function() { $('.kll').Lazy({ effect: 'fadeIn', effectTime: 60, threshold: 500, delay: 0, afterLoad: function(element) { var el = element instanceof jQuery ? element : $(element); var owlItem = el.closest('.owl-item'); if (!owlItem.length) { return; } // Check parent carousel var owlCarousel = owlItem.closest('.owl-carousel'); if (!owlCarousel.length) { return; } setTimeout(function() { var api = owlCarousel.data('owl.carousel') || owlCarousel.data('owlCarousel') || owlCarousel.data('OwlCarousel'); if (api) { api.invalidate('height'); api.invalidate('width'); api.refresh(); } else { owlCarousel.trigger('invalidate.owl.carousel').trigger('refresh.owl.carousel'); } // On vide la hauteur du premier slide owlCarousel.find('.owl-stage-outer').css('height', ''); }, 100); } }); }); $(document).ready(function () { $('form').submit(function () { // Input $(this).find('input[type=submit]').addClass('disabled'); // Button $(this).find('button[type=submit]').addClass('disabled'); $(this).find('button[type=submit] .fa').addClass('fa-spinner fa-spin'); // $(this).find('button[type=submit].btn-export').removeClass('disabled'); $(this).find('button[type=submit].btn-export .fa').removeClass('fa-spinner fa-spin'); }); }); $(document).ready(function () { $('form.secureForm #answerKa175p0rtFirstName').val(''); $('form.secureForm .btn-submit').attr('type', 'submit'); }); function strstr(haystack, needle, bool) { var pos = 0; haystack += ""; pos = haystack.indexOf(needle); if (pos == -1) { return false; } else { if (bool) { return haystack.substr(0, pos); } else { return haystack.slice(pos); } } } tarteaucitron.user.matomoId = 5143; tarteaucitron.user.matomoHost = '//piwik.alkante.com/'; (tarteaucitron.job = tarteaucitron.job || []).push('matomo'); </script></div></body></html>