veza/apps/web/dist_verification/assets/PlaylistCard-C4g5-M9j.js
senke 04c25aa24f Phase 2 stabilisation: code mort, Modal→Dialog, feature flags, tests, router split, Rust legacy
Bloc A - Code mort:
- Suppression Studio (components, views, features)
- Suppression gamification + services mock (projectService, storageService, gamificationService)
- Mise à jour Sidebar, Navbar, locales

Bloc B - Frontend:
- Suppression modal.tsx deprecated, Modal.stories (doublon Dialog)
- Feature flags: PLAYLIST_SEARCH, PLAYLIST_RECOMMENDATIONS, ROLE_MANAGEMENT = true
- Suppression 19 tests orphelins, retrait exclusions vitest.config

Bloc C - Backend:
- Extraction routes_auth.go depuis router.go

Bloc D - Rust:
- Suppression security_legacy.rs (code mort, patterns déjà dans security/)
2026-02-14 17:23:32 +01:00

1 line
4.7 KiB
JavaScript

import{g as f,a as b,b as g,u as x,f as h,c as p,d as v,r as j,e as k,h as P,i as y,j as w,s as N,l as C,k as $,m as D,n as T,o as R}from"./playlistService-Ibr1CVA5.js";import{R as _,j as r}from"./vendor-react-yWUy5XPk.js";import{C as L,c as u,f as E}from"./index-CYK_b1Uz.js";import{L as F}from"./vendor-router-BNNHboN9.js";import{s as K,C as q,U,t as z}from"./vendor-icons-DJFb1Tiw.js";const J={create:R,get:T,update:D,delete:$,list:C,search:N,addTrack:w,removeTrack:y,reorderTracks:P,addCollaborator:k,removeCollaborator:j,updateCollaboratorPermission:v,getCollaborators:f,createShareLink:p,follow:h,unfollow:x,getFollowStatus:g,getRecommendations:b};function A({playlist:e,className:d,onClick:o,selectable:t=!1,selected:s=!1,onSelect:i}){const l=a=>{if(t&&i){a.preventDefault(),a.stopPropagation(),i(e,!s);return}o&&(a.preventDefault(),o(e))},n=a=>{if(t&&i&&(a.key==="Enter"||a.key===" ")){a.preventDefault(),a.stopPropagation(),i(e,!s);return}o&&(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),o(e))},m=a=>{a.preventDefault(),a.stopPropagation(),i&&i(e,!s)},c=r.jsx(L,{className:u("group cursor-pointer active:opacity-90 transition-all duration-[var(--sumi-duration-normal)] hover:shadow-lg","touch-manipulation focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",t&&s&&"ring-2 ring-primary border-primary/30",d),children:r.jsxs(E,{className:"p-0",children:[r.jsxs("div",{className:"relative aspect-square bg-gradient-to-br from-primary/30 to-secondary/30 overflow-hidden",children:[e.cover_url?r.jsx("img",{src:e.cover_url,alt:`Couverture de la playlist ${e.title}`,className:"w-full h-full object-cover group-hover:scale-105 transition-transform duration-[var(--sumi-duration-normal)]"}):r.jsx("div",{className:"w-full h-full flex items-center justify-center",role:"img","aria-label":`Pas de couverture pour la playlist ${e.title}`,children:r.jsx(K,{className:"w-16 h-16 text-white/50","aria-hidden":"true"})}),t&&r.jsx("div",{className:"absolute top-2 left-2 z-10",children:r.jsx("button",{type:"button",onClick:m,className:u("w-6 h-6 rounded-full border-2 flex items-center justify-center transition-all","touch-manipulation min-h-6 min-w-6","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",s?"bg-primary border-primary text-foreground":"bg-white/90 dark:bg-muted/90 border-border dark:border-border text-transparent hover:border-border/50"),"aria-label":s?`Désélectionner ${e.title}`:`Sélectionner ${e.title}`,"aria-checked":s,role:"checkbox",children:s&&r.jsx(q,{className:"w-4 h-4","aria-hidden":"true"})})}),r.jsx("div",{className:"absolute top-2 right-2",children:e.is_public?r.jsxs("div",{className:"bg-success/80 text-foreground px-2 py-1 rounded-full text-xs flex items-center gap-1","aria-label":"Playlist publique",children:[r.jsx(U,{className:"w-3 h-3","aria-hidden":"true"}),"Public"]}):r.jsxs("div",{className:"bg-muted/80 text-foreground px-2 py-1 rounded-full text-xs flex items-center gap-1","aria-label":"Playlist privée",children:[r.jsx(z,{className:"w-3 h-3","aria-hidden":"true"}),"Privé"]})})]}),r.jsxs("div",{className:"p-4 sm:p-4",children:[r.jsx("h3",{className:"font-semibold text-base sm:text-lg truncate mb-1",id:`playlist-title-${e.id}`,children:e.title}),e.description&&r.jsx("p",{className:"text-xs sm:text-sm text-muted-foreground line-clamp-2 mb-2",id:`playlist-description-${e.id}`,children:e.description}),r.jsxs("div",{className:"flex flex-col sm:flex-row items-start sm:items-center justify-between gap-1 sm:gap-0 text-xs sm:text-sm text-muted-foreground",children:[r.jsxs("span",{"aria-describedby":`playlist-title-${e.id}`,children:[e.track_count," track",e.track_count!==1?"s":""]}),e.user&&r.jsxs("span",{className:"truncate sm:ml-2","aria-label":`Créée par ${e.user.username}`,children:["par ",e.user.username]})]})]})]})});return t?r.jsx("article",{"aria-label":`Playlist: ${e.title}`,children:r.jsx("button",{type:"button",onClick:l,onKeyDown:n,"aria-label":`${s?"Désélectionner":"Sélectionner"} la playlist ${e.title}`,className:"appearance-none bg-transparent border-0 p-0 text-left w-full touch-manipulation rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:c})}):r.jsx("article",{"aria-label":`Playlist: ${e.title}`,children:r.jsx(F,{to:`/playlists/${e.id}`,onClick:l,onKeyDown:n,"aria-label":`Voir la playlist ${e.title}`,className:"touch-manipulation rounded-xl focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background",children:c})})}const M=_.memo(A);M.displayName="PlaylistCard";export{M as P,J as p};