PageSourceSearch

https://snich.ai/assets/TeamPage-25afd17b.js

js snich.ai collected 2026-10-05 15:07:46 UTC 26,352 bytes, 1 lines download raw bytes

1import{r as c,j as e,L as X,c as ye,a as $e}from"./vendor-react-72e4a099.js";import{f as ke,B as R,a as ne,F as ce,S as Ce,T as Se,u as De,I as Le,d as ue,b as xe,M as je}from"./Toast-43ee7788.js";import{C as fe,a as _,b as Me,E as me}from"./Display-48adcc24.js";import{u as ge,C as Ie}from"./Controls-5a18fd37.js";import{a as $,e as U}from"./api-d8a57490.js";import{p as G,a as ie,i as ve}from"./format-5039f022.js";import{PageHead as Ae}from"./CabinetLayout-c1e3a7e9.js";import{u as Ee}from"./CabinetContext-31fc5321.js";import{r as B}from"./buildLifecycle-a44b0e05.js";import{U as le}from"./user-plus-d862ebc6.js";import{L as Ne}from"./link-2-36909ef8.js";import{X as Te}from"./x-b9f3d093.js";/* empty css               *//* empty css                 */import{T as ze}from"./triangle-alert-cdc85d96.js";import{S as de}from"./search-01fb0df0.js";import{C as be}from"./crown-fdf36aa5.js";import{M as re}from"./mail-c07c6c62.js";import{R as Re}from"./refresh-cw-98362cea.js";import{T as Be}from"./trash-2-7a739e24.js";import{C as qe}from"./chevron-down-888c3b30.js";import{E as Fe}from"./ellipsis-bbf71637.js";import{U as Pe}from"./user-minus-edd1ae61.js";import{S as Oe}from"./shield-check-111738a3.js";import{C as Ue}from"./calendar-days-6829c81b.js";import{U as He}from"./user-2d8f405f.js";import"./createLucideIcon-581cd729.js";import"./eye-5711d0dd.js";import"./circle-check-63b159d4.js";import"./circle-alert-67975319.js";import"./check-083433f7.js";import"./copy-34f4069e.js";import"./video-a08888e9.js";import"./credit-card-a31de76a.js";import"./mic-098d6d5b.js";import"./layout-dashboard-52ca12db.js";import"./play-3580deb4.js";import"./log-out-e38723a8.js";import"./shared-303b156a.js";import"./radio-dc3b7f8c.js";import"./lock-73755c1f.js";import"./sparkles-e0558c3e.js";import"./file-play-96922e92.js";import"./shield-b21f8aed.js";import"./NotificationsPopover-e8b89aa4.js";import"./bell-521a1a83.js";import"./check-check-9685683e.js";import"./sliders-horizontal-41aa44a5.js";import"./users-a990a1e8.js";import"./file-text-e7c68864.js";import"./list-checks-f8235a5c.js";import"./share-2-50cd044b.js";import"./user-check-ea278564.js";import"./clock-e6794ea5.js";import"./corner-down-left-87f64a70.js";import"./arrow-up-955249b3.js";import"./arrow-down-5480e148.js";import"./plus-39793e81.js";import"./calendar-plus-0f511f3c.js";import"./JoinByLinkModal-119f67b7.js";import"./arrow-right-eda8f931.js";import"./Bits-7aa9b5d3.js";import"./index-d9998155.js";import"./roomAccess-6d61bdfc.js";import"./messenger2-list-5715e14b.js";import"./chevron-up-f536cc4c.js";import"./square-play-af60d053.js";import"./messages-square-bb2c8af1.js";import"./film-0ba9e353.js";const ae=/^[^\s@,;<>]+@[^\s@,;<>]+\.[^\s@,;<>]{2,}$/,We={member:"Участник приходит на встречи и смотрит записи. Эфиры не создаёт.",organizer:"Организатор создаёт эфиры и встречи и управляет своими событиями. Команду и оплату не видит.",admin:"Администратор управляет командой, брендом, интеграциями и всеми событиями пространства. Тариф меняет только владелец."};function pe(l){return l.split(/[\s,;]+/).map(o=>o.trim().replace(/^<|>$/g,"").toLowerCase()).filter(Boolean)}function _e({open:l,onClose:o,workspaceId:h,workspaceName:d,onInvited:N,existingEmails:j,seatsLeft:b,planName:i}){const[k,u]=c.useState([]),[w,q]=c.useState(""),[M,y]=c.useState("organizer"),[I,S]=c.useState(""),[K,J]=c.useState(!1),[V,Q]=c.useState(null),[Y,g]=c.useState(null),[Z,H]=c.useState(!1),[A]=ge(),n=c.useRef(null);c.useEffect(()=>{l&&(u([]),q(""),y("organizer"),S(""),Q(null),g(null))},[l]);const C=t=>{const r=pe(t);r.length&&(u(z=>Array.from(new Set([...z,...r]))),q(""),g(null))},p=t=>{t.key==="Enter"||t.key===","||t.key===";"||t.key===" "&&w.trim()?w.trim()?(t.preventDefault(),C(w)):t.key==="Enter"&&t.preventDefault():t.key==="Backspace"&&!w&&k.length&&u(r=>r.slice(0,-1))},E=[...k,...pe(w)],D=Array.from(new Set(E)),L=D.filter(t=>!ae.test(t)),T=D.filter(t=>j.includes(t)),W=D.filter(t=>ae.test(t)&&!j.includes(t)),ee=async()=>{var z;if(w.trim()&&C(w),!D.length){g("Впишите хотя бы один email"),(z=n.current)==null||z.focu
1s();return}if(L.length){g(`Проверьте адрес: ${L.join(", ")}`);return}if(!W.length){g(T.length===1?`${T[0]} уже в команде`:"Все эти люди уже в команде");return}J(!0),g(null);const t=T.map(v=>({email:v,ok:!1,message:"уже в команде"}));for(const v of W)try{await $.post(`/workspaces/${h}/members/invite`,{email:v,role:M,message:I.trim()||void 0}),t.push({email:v,ok:!0,message:"приглашение отправлено"})}catch(te){t.push({email:v,ok:!1,message:U(te,"не удалось отправить")})}J(!1);const r=t.filter(v=>v.ok).length;if(r===t.length){N(r,!0);return}Q(t),u(t.filter(v=>!v.ok&&v.message!=="уже в команде").map(v=>v.email)),r&&N(r,!1)},se=async()=>{H(!0);try{const t=await $.get(`/workspaces/${h}/members/invite-link`,{query:{role:M}});await A(t.inviteLink,`Ссылка скопирована — по ней войдут с ролью «${M==="admin"?"Администратор":M==="organizer"?"Организатор":"Участник"}»`)}catch(t){g(U(t,"Не удалось получить ссылку"))}finally{H(!1)}};return e.jsx(ke,{open:l,onClose:()=>K?void 0:o(),className:"sn-a-ui sn-a-invite-modal",icon:e.jsx(le,{className:"sn-i"}),title:"Пригласить в команду",subtitle:`Пространство ${d} — приглашение придёт на почту`,width:600,footer:e.jsxs(e.Fragment,{children:[e.jsx(R,{variant:"text",className:"sn-a-invite-copy",icon:e.jsx(Ne,{className:"sn-i sn-i-16"}),onClick:se,loading:Z,children:"Скопировать ссылку-приглашение"}),e.jsx("span",{className:"sn-a-grow",style:{flex:1}}),e.jsx(R,{variant:"primary",className:"sn-a-invite-send",onClick:ee,loading:K,children:W.length>1?`Отправить ${W.length} приглашения`:"Отправить приглашения"})]}),children:e.jsxs("div",{className:"sn-a-invite-form",children:[b!==null&&b<=0&&e.jsxs("div",{className:"sn-a-seats-note",role:"note",children:[e.jsx(ne,{className:"sn-i sn-i-16"}),e.jsxs("span",{children:["Все места по тарифу",i?` «${i}»`:""," заняты — новое приглашение не уйдёт."," ",e.jsx(X,{to:"/settings/billing",onClick:o,children:"Сменить тариф"})," или отзовите лишние приглашения."]})]}),e.jsx(ce,{label:"Email",htmlFor:"sn-a-invite-email",hint:"Можно вставить несколько адресов через запятую",error:Y||void 0,children:e.jsxs("div",{className:"sn-a-chips",onMouseDown:t=>{var r;t.target===t.currentTarget&&(t.preventDefault(),(r=n.current)==null||r.focus())},children:[k.map(t=>{const r=!ae.test(t)||j.includes(t);return e.jsxs("span",{className:r?"sn-a-chip is-invalid":"sn-a-chip",title:j.includes(t)?"Уже в команде":void 0,children:[e.jsx("span",{children:t}),e.jsx("button",{type:"button","aria-label":`Убрать ${t}`,onClick:()=>u(z=>z.filter(v=>v!==t)),children:e.jsx(Te,{className:"sn-i sn-i-14"})})]},t)}),e.jsx("input",{ref:n,id:"sn-a-invite-email","data-autofocus":!0,type:"text",inputMode:"email",autoComplete:"off",value:w,placeholder:k.length?"Ещё email":"[email protected]",onChange:t=>{const r=t.target.value.replace(/^[\s,;]+/,"");/[,;\s]/.test(r)&&r.includes("@")?C(r):q(r)},onKeyDown:p,onBlur:()=>w.trim()&&C(w),onPaste:t=>{const r=t.clipboardData.getData("text");/[,;\s]/.test(r.trim())&&(t.preventDefault(),C(`${w} ${r}`))}})]})}),e.jsxs("div",{className:"sn-field",children:[e.jsx("span",{className:"sn-label",id:"sn-a-invite-role",children:"Роль в пространстве"}),e.jsx(Ce,{ariaLabel:"Роль в пространстве",className:"sn-a-seg-full",value:M,onChange:t=>y(t),options:[{value:"member",label:"Участник"},{value:"organizer",label:"Организатор"},{value:"admin",label:"Администратор"}]}),e.jsxs("div",{className:"sn-a-role-info",style:{marginTop:10},children:[e.jsx(ne,{className:"sn-i sn-i-16"}),e.jsx("span",{children:We[M]})]})]}),e.jsx(ce,{label:e.jsxs(e.Fragment,{children:["Сообщение ",e.jsx("span",{style:{fontWeight:400,color:"var(--sn-ink-3)"},children:"— необязательно"})]}),htmlFor:"sn-a-invite-msg",children:e.jsx(Se,{id:"sn-a-invite-msg",rows:3,maxLength:1e3,value:I,placeholder:"Привет! Подключайтесь к SNICH — здесь готовим эфиры и встречи команды.",onChange:t=>S(t.target.value)})}),V&&e.jsx("div",{className:"sn-a-invite-results",role:"status",children:V.map(t=>e.jsxs("div",{children:[e.jsx("b",{className:t.ok?"is-ok":"is-err",children:t.ok?"✓":"×"}),e.jsxs("span",{children:[e.jsx("b",{children:t.email})," — ",t.message]})]},t.email))})]})})}const Ke=[{value:"admin",label:"Администратор",description:"Команда, бренд, интеграции и все события"},{value:"organizer",label:"Организатор",description:"Создаёт эфиры и встречи, управляет своими"},{value:"member",label:"Участник",description:"Приходит на встречи и смотрит записи"}],O={owner:"Владелец",admin:"Администратор",organizer:"Организатор",moderator:"Модератор",member:"Участник"};
1function Qe(l,o=Date.now()){if(!l)return"ещё не заходил";const h=new Date(l),d=o-h.getTime(),N=Math.floor(d/6e4);if(N<1)return"только что";if(N<60)return`${N} мин назад`;const j=new Date(o);if(h.toDateString()===j.toDateString())return`сегодня, ${ie(h)}`;const b=new Date(o-864e5);if(h.toDateString()===b.toDateString())return"вчера";const i=Math.floor(d/864e5);if(i<7)return`${i} ${G(i,"день","дня","дней")} назад`;if(i<31){const k=Math.floor(i/7);return`${k} ${G(k,"неделю","недели","недель")} назад`}return ve(h)}function Xe(l){const o=new Date(l.lastSentAt||l.createdAt),h=new Date,d=new Date(Date.now()-864e5),N=o.toDateString()===h.toDateString()?`сегодня, ${ie(o)}`:o.toDateString()===d.toDateString()?`вчера, ${ie(o)}`:ve(o);let j="";if(l.expiresAt){const b=Math.ceil((new Date(l.expiresAt).getTime()-Date.now())/864e5);j=b<=0?" · истекает сегодня":` · действует ещё ${b} ${G(b,"день","дня","дней")}`}return`Отправлено ${N}${j}`}function he({role:l,label:o,name:h,onChange:d,busy:N}){const{anchor:j,open:b,close:i,toggle:k}=xe();return e.jsxs(e.Fragment,{children:[e.jsxs("button",{type:"button",className:"sn-btn sn-btn-quiet sn-btn-sm sn-a-role-btn","aria-label":`Роль: ${o}. Изменить для ${h}`,"aria-haspopup":"menu","aria-expanded":b,disabled:N,onClick:k,children:[N?e.jsx("span",{className:"sn-spinner","aria-hidden":"true"}):null,o,e.jsx(qe,{className:"sn-i sn-i-16"})]}),e.jsx(je,{open:b,onClose:i,anchor:j,placement:"bottom-start",width:300,items:Ke.map(u=>({label:u.label,description:u.description,checked:u.value===l,onSelect:()=>{u.value!==l&&d(u.value)}}))})]})}function Ge({member:l,onRemove:o}){const{anchor:h,open:d,close:N,toggle:j}=xe(),b=l.displayName||l.email||"участник";return e.jsxs(e.Fragment,{children:[e.jsx(ue,{size:"sm",variant:"ghost",label:`Действия: ${b}`,"aria-haspopup":"menu","aria-expanded":d,onClick:j,children:e.jsx(Fe,{className:"sn-i"})}),e.jsx(je,{open:d,onClose:N,anchor:h,width:240,items:[...l.email?[{label:"Написать письмо",icon:e.jsx(re,{className:"sn-i sn-i-16"}),onSelect:()=>{window.location.href=`mailto:${l.email}`}}]:[],{label:"Убрать из команды",icon:e.jsx(Pe,{className:"sn-i sn-i-16"}),danger:!0,onSelect:o}]})]})}function Je({nextEvent:l}){const o=[{icon:e.jsx(be,{className:"sn-i sn-i-16"}),title:"Владелец",text:"Всё, включая тариф и оплату. Один на пространство."},{icon:e.jsx(Oe,{className:"sn-i sn-i-16"}),title:"Администратор",text:"Команда, бренд, интеграции и все события пространства."},{icon:e.jsx(Ue,{className:"sn-i sn-i-16"}),title:"Организатор",text:"Создаёт эфиры и встречи, управляет своими событиями."},{icon:e.jsx(He,{className:"sn-i sn-i-16"}),title:"Участник",text:"Приходит на встречи и смотрит записи. Эфиры не создаёт."}];return e.jsx("aside",{className:"sn-a-roles-wrap","aria-label":"Роли в пространстве",children:e.jsxs(fe,{className:"sn-a-roles",children:[e.jsx("h2",{children:"Кто что может"}),o.map(h=>e.jsxs("div",{className:"sn-a-role-row",children:[e.jsx("span",{className:"sn-a-role-ic","aria-hidden":"true",children:h.icon}),e.jsxs("div",{children:[e.jsx("b",{children:h.title}),e.jsx("span",{children:h.text})]})]},h.title)),e.jsxs("div",{className:"sn-a-roles-note",children:[e.jsxs("b",{children:[e.jsx(ne,{className:"sn-i sn-i-16"}),"Роли в эфире — отдельно"]}),e.jsx("span",{children:"Продюсера, модератора и спикеров назначают в каждом событии. Спикеру не нужно быть в команде."}),l?e.jsxs(X,{to:B.eventPeople(l.id),children:["Люди эфира «",l.title,"»"]}):e.jsx(X,{to:B.events(),children:"Эфиры и встречи"})]})]})})}function pt(){var oe;const{workspace:l}=Ee(),o=ye(),h=$e(),d=De(),[N]=ge(),j=o.pathname.startsWith("/team/invites")?"invites":"members",b=o.pathname.startsWith("/team/invite")&&!o.pathname.startsWith("/team/invites"),[i,k]=c.useState(null),[u,w]=c.useState(null),[q,M]=c.useState(0),[y,I]=c.useState(null),[S,K]=c.useState(null),[J,V]=c.useState(null),[Q,Y]=c.useState(null),[g,Z]=c.useState(""),[H,A]=c.useState(null),[n,C]=c.useState(null),p=l==null?void 0:l.id,E=!!(i!=null&&i.canManageMembers),D=c.useCallback(async()=>
1{if(p){Y(null);try{const[s,a]=await Promise.all([$.get(`/workspaces/${p}/team/summary`),$.get(`/workspaces/${p}/members`,{query:{limit:200}})]);if(k(s),w(a.items||[]),M(a.total||0),s.canManageMembers){const[m,x]=await Promise.all([$.get(`/workspaces/${p}/member-invitations`,{query:{status:"pending",type:"email",limit:100}}),$.get(`/workspaces/${p}/members/invite-link`,{query:{role:"member"}}).catch(()=>null)]);I(m.items||[]),K((x==null?void 0:x.inviteLink)||null)}else I([])}catch(s){Y(U(s,"Не удалось загрузить команду"))}}},[p]);c.useEffect(()=>{k(null),w(null),I(null),D()},[D]),c.useEffect(()=>{if(!p)return;let s=!1;return Promise.all(["live","scheduled"].map(a=>$.get("/rooms",{query:{workspaceId:p,status:a,limit:50}}).catch(()=>({items:[]})))).then(([a,m])=>{if(s)return;const x=Date.now(),f=(m.items||[]).filter(P=>P.scheduledAt&&new Date(P.scheduledAt).getTime()>x-36e5).sort((P,we)=>new Date(P.scheduledAt).getTime()-new Date(we.scheduledAt).getTime()),F=(a.items||[])[0]||f.find(P=>P.type==="webinar"||P.type==="presentation")||f[0]||null;V(F?{id:F.id,title:F.title}:null)}),()=>{s=!0}},[p]);const L=c.useMemo(()=>{const s=g.trim().toLowerCase();if(!u)return null;const a=[...u].sort((m,x)=>{const f=F=>F.role==="owner"?0:F.role==="admin"?1:F.role==="organizer"?2:3;return f(m)-f(x)||(m.displayName||m.email||"").localeCompare(x.displayName||x.email||"","ru")});return s?a.filter(m=>`${m.displayName||""} ${m.email||""}`.toLowerCase().includes(s)):a},[u,g]),T=c.useMemo(()=>{const s=g.trim().toLowerCase();return y?s?y.filter(a=>(a.email||"").toLowerCase().includes(s)):y:null},[y,g]),W=async(s,a)=>{var m;if(p){A(`m:${s.userId}`);try{await $.patch(`/workspaces/${p}/members/${s.userId}`,{role:a}),w(x=>(x||[]).map(f=>f.userId===s.userId?{...f,role:a,roleLabel:O[a]||a}:f)),d.success(`${s.displayName||s.email}: теперь ${((m=O[a])==null?void 0:m.toLowerCase())||a}`)}catch(x){d.error(U(x,"Не удалось сменить роль"))}finally{A(null)}}},ee=async(s,a)=>{var m;if(p){A(`i:${s.id}`);try{await $.patch(`/workspaces/${p}/member-invitations/${s.id}`,{role:a}),I(x=>(x||[]).map(f=>f.id===s.id?{...f,role:a,roleLabel:O[a]||a}:f)),d.success(`Роль в приглашении для ${s.email}: ${((m=O[a])==null?void 0:m.toLowerCase())||a}`)}catch(x){d.error(U(x,"Не удалось сменить роль"))}finally{A(null)}}},se=async s=>{if(p){A(`r:${s.id}`);try{const a=await $.post(`/workspaces/${p}/member-invitations/${s.id}/resend`,{}),m=a&&"invitation"in a&&a.invitation?a.invitation:null;I(x=>(x||[]).map(f=>f.id===s.id?{...f,...m||{},lastSentAt:(m==null?void 0:m.lastSentAt)||new Date().toISOString()}:f)),d.success(`Отправили ещё раз на ${s.email}`)}catch(a){d.error(U(a,"Не удалось отправить"))}finally{A(null)}}},t=async()=>{if(!(!p||!n))try{if(n.kind==="remove")await $.del(`/workspaces/${p}/members/${n.member.userId}`),d.success(`${n.member.displayName||n.member.email} больше не в команде`);else if(n.kind==="cancel")await $.del(`/workspaces/${p}/member-invitations/${n.invite.id}`),d.success(`Приглашение для ${n.invite.email} отозвано`);else{const s=await $.post(`/workspaces/${p}/members/invite-link/rotate`,{},{query:{role:"member"}});K(s.inviteLink),d.success("Новая ссылка готова, старая больше не работает")}C(null),await D()}catch(s){d.error(U(s,"Не получилось"))}},r=(i==null?void 0:i.totalMembers)??q,z=i?`Пространство ${i.workspaceName} · ${r} ${G(r,"человек","человека","человек")}${i.seats?` из ${i.seats}`:""}${i.plan?` по тарифу ${i.plan.name}`:""}`:`Пространство ${(l==null?void 0:l.name)||""}`,v=(y==null?void 0:y.length)??(i==null?void 0:i.pendingInvitations)??0,te=(u||[]).map(s=>(s.email||"").toLowerCase()).filter(Boolean);return e.jsxs("div",{className:"sn-a-ui sn-a-team",children:[e.jsx(Ae,{title:"Команда",subtitle:z,actions:E?e.jsx(R,{variant:"primary",size:"lg",icon:e.jsx(le,{className:"sn-i"}),to:B.teamInvite(),children:"Пригласить"}):void 0}),Q&&e.jsx(fe,{pad:!0,children:e.jsxs("div",{className:"sn-a-inline-actions",children:[e.jsx(ze,{className:"sn-i",style:{color:"var(--sn-red)"}}),e.jsx("span",{style:{flex:1},children:Q}),e.jsx(R,{variant:"quiet",size:"sm",onClick:()=>void D(),children:"Повторить"})]})}),e.jsxs("div",{className:"sn-a-team-grid",children:[e.jsxs("div",{className:"sn-a-team-main",children:[e.jsxs("div",{className:"sn-a-team-bar",children:[e.jsxs("nav",{className:"sn-a-team-tabs","aria-label":"Команда",children:[e.jsxs(X,{to:B.team(),"aria-current":j==="members"?"page":void 0,children:["Участники ",e.jsx("small",{children:r||""})]}),E&&e.jsxs(X,{to:B.teamInvites(),"aria-current":j==="invites"?"page":void 0,children:["Приглашения ",e.jsx("small",{children:v||""})]})]}),e.jsx("div",{className:"sn-a-team-search",children:e.jsx(Le,{icon:e.jsx(de,{className:"sn-i sn-i-16"}),placeholder:"Имя или email","aria-label":"Найти в команде",value:g,onChange:s=>Z(s.target.value)})})]}),j==="members"||!E?e.jsxs("div",{className:"sn-a-team-table",children:[e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:"Человек"}),e.jsx("th",{scope:"col",className:"is-role",children:"Роль в пространстве"}),e.jsx("th",{scope:"col",className:"is-seen",children:"Был в SNICH"}),e.jsx("th",{scope:"col",className:"is-actions",children:e.jsx("span",{className:"sn-sr",children:"Действия"})})]})}),e.jsxs("tbody",{children:[!L&&[0,1,2,3].map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"is-person",children:e.jsxs("div",{className:"sn-a-person",children:[e.jsx(_,{width:36,height:36,radius:18}),e.jsx(_,{width:180,height:14})]})}),e.jsx("td",{className:"is-role",children:e.jsx(_,{width:120,height:14})}),e.jsx("td",{className:"is-seen",children:e.jsx(_,{width:90,height:14})}),e.jsx("td",{className:"is-actions"})]},s)),L&&L.map(s=>{const a=s.displayName||s.email||"Без имени",m=E&&!s.isMe&&s.role!=="owner";return e.jsxs("tr",{children:[e.jsx("td",{className:"is-person",children:e.jsxs("div",{className:"sn-a-person",children:[e.jsx(Me,{name:a,src:s.avatarUrl,size:36}),e.jsxs("span",{className:"sn-a-person-text",children:[e.jsxs("b",{children:[a,s.isMe&&e.jsx("small",{children:" (вы)"})]}),e.jsx("span",{children:s.title?`${s.title} · ${s.email||""}`:s.email})]})]})}),e.jsx("td",{className:"is-role",children:m?e.jsx(he,{role:s.role,label:s.roleLabel||O[s.role]||s.role,name:a,busy:H===`m:${s.userId}
1`,onChange:x=>W(s,x)}):e.jsxs("span",{className:"sn-a-role-static",children:[s.role==="owner"&&e.jsx(be,{className:"sn-i sn-i-16"}),s.roleLabel||O[s.role]||s.role]})}),e.jsx("td",{className:"is-seen",children:s.isOnline?e.jsxs("span",{className:"sn-a-seen",children:[e.jsx("i",{"aria-hidden":"true"}),"В сети"]}):e.jsx("span",{className:"sn-a-seen",children:Qe(s.lastSeenAt)})}),e.jsx("td",{className:"is-actions",children:m&&e.jsx(Ge,{member:s,onRemove:()=>C({kind:"remove",member:s})})})]},s.userId)})]})]}),L&&L.length===0&&e.jsxs(me,{compact:!0,icon:e.jsx(de,{className:"sn-i"}),title:"Никого не нашли",children:["Проверьте имя или email",E?" — или пригласите человека в команду":"","."]}),L&&q>((u==null?void 0:u.length)||0)&&e.jsxs("p",{className:"sn-a-muted",style:{padding:"12px 16px",borderTop:"1px solid var(--sn-line)"},children:["Показаны первые ",u==null?void 0:u.length," из ",q,". Уточните поиск."]})]}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"sn-a-team-table",children:T&&T.length>0?e.jsxs("table",{children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{scope:"col",children:"Кого пригласили"}),e.jsx("th",{scope:"col",className:"is-role",children:"Роль"}),e.jsx("th",{scope:"col",className:"is-actions",children:e.jsx("span",{className:"sn-sr",children:"Действия"})})]})}),e.jsx("tbody",{children:T.map(s=>e.jsxs("tr",{children:[e.jsx("td",{className:"is-person",children:e.jsxs("div",{className:"sn-a-person",children:[e.jsx("span",{className:"sn-a-mail-ic","aria-hidden":"true",children:e.jsx(re,{className:"sn-i sn-i-16"})}),e.jsxs("span",{className:"sn-a-person-text",children:[e.jsx("b",{children:s.email}),e.jsx("span",{children:Xe(s)})]})]})}),e.jsx("td",{className:"is-role",children:e.jsx(he,{role:s.role,label:s.roleLabel||O[s.role]||s.role,name:s.email||"",busy:H===`i:${s.id}`,onChange:a=>ee(s,a)})}),e.jsx("td",{className:"is-actions",style:{width:"auto"},children:e.jsxs("div",{className:"sn-a-inv-actions",children:[e.jsx(R,{variant:"text",size:"sm",icon:e.jsx(Re,{className:"sn-i sn-i-16"}),loading:H===`r:${s.id}`,onClick:()=>se(s),children:"Отправить снова"}),e.jsx(ue,{size:"sm",variant:"ghost",className:"sn-a-danger-ibtn",label:`Отозвать приглашение для ${s.email}`,onClick:()=>C({kind:"cancel",invite:s}),children:e.jsx(Be,{className:"sn-i"})})]})})]},s.id))})]}):T?e.jsx(me,{compact:!0,icon:e.jsx(re,{className:"sn-i"}),title:g?"Таких приглашений нет":"Все приглашения приняты",action:g?void 0:e.jsx(R,{variant:"soft",size:"sm",icon:e.jsx(le,{className:"sn-i sn-i-16"}),to:B.teamInvite(),children:"Пригласить"}),children:g?"Проверьте email.":"Здесь появятся письма-приглашения, которые ещё ждут ответа."}):e.jsx("div",{style:{padding:16},children:e.jsx(_,{height:48})})}),e.jsxs("div",{className:"sn-a-link-card",children:[e.jsx("span",{className:"sn-a-link-ic","aria-hidden":"true",children:e.jsx(Ne,{className:"sn-i"})}),e.jsxs("div",{className:"sn-a-link-text",children:[e.jsx("b",{children:"Ссылка-приглашение"}),e.jsx("span",{children:"Кто перейдёт по ней, попадёт в команду с ролью «Участник»."}),S?e.jsx("code",{title:S,children:S.replace(/^https?:\/\//,"")}):e.jsx(_,{width:220,height:14})]}),e.jsxs("div",{className:"sn-a-link-actions",children:[e.jsx(R,{variant:"text",size:"sm",onClick:()=>C({kind:"rotate"}),disabled:!S,children:"Сменить"}),e.jsx(R,{variant:"quiet",size:"sm",disabled:!S,onClick:()=>S&&N(S,"Ссылка-приглашение скопирована"),children:"Скопировать"})]})]})]})]}),e.jsx(Je,{nextEvent:J})]}),p&&E&&e.jsx(_e,{open:b,onClose:()=>h(B.team()),workspaceId:p,workspaceName:(i==null?void 0:i.workspaceName)||(l==null?void 0:l.name)||"",existingEmails:te,seatsLeft:i!=null&&i.seats?i.seats-r-((y==null?void 0:y.length)||0):null,planName:(oe=i==null?void 0:i.plan)==null?void 0:oe.name,onInv
1ited:(s,a)=>{d.success(`${s===1?"Приглашение отправлено":`Отправили ${s} ${G(s,"приглашение","приглашения","приглашений")}`}`),D(),a&&h(B.teamInvites())}}),e.jsx(Ie,{open:!!n,onClose:()=>C(null),onConfirm:t,tone:(n==null?void 0:n.kind)==="rotate"?"primary":"danger",title:(n==null?void 0:n.kind)==="remove"?`Убрать ${n.member.displayName||n.member.email} из команды?`:(n==null?void 0:n.kind)==="cancel"?`Отозвать приглашение для ${n.invite.email}?`:"Сменить ссылку-приглашение?",description:(n==null?void 0:n.kind)==="remove"?"Человек потеряет доступ к эфирам, записям и настройкам пространства. Его события останутся.":(n==null?void 0:n.kind)==="cancel"?"Ссылка из письма перестанет работать.":"Старая ссылка перестанет работать. Тем, кто ещё не вступил, нужно будет прислать новую.",confirmLabel:(n==null?void 0:n.kind)==="remove"?"Убрать":(n==null?void 0:n.kind)==="cancel"?"Отозвать":"Сменить"})]})}export{pt 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.