import{f as e,h as t,i as n,l as r,r as i,s as a,t as o}from"./useToast-CS8pZhce.js";import{a as s,d as c,m as l}from"./indexedDb-D30TbhA6.js";import{t as u}from"./building-BdUpGLM5.js";import{t as d}from"./upload-CY2IsfiN.js";import{F as f,Q as p,_ as m,b as h,ct as g,h as _,lt as v,t as y,x as b}from"./index-CT8iDYYK.js";import{t as x}from"./types-CTcNpN0z.js";var S={name:`database`,size:24,node:[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]};S.node;var C=r(S),w=t(e(),1),T=a(),E=()=>{let{currentProfileId:e,setProfileId:t,currentRoleId:r,setRoleId:a,customCapabilities:S,toggleCapability:E,resetCapabilitiesToProfile:D}=g(),{showToast:O}=o(),[k,A]=(0,w.useState)(!1),[j,M]=(0,w.useState)(!1),[N,P]=(0,w.useState)(!1),[F,I]=(0,w.useState)(null),L=(0,w.useRef)(null);return(0,w.useEffect)(()=>{typeof window<`u`&&(window.__krona_db={exportDatabaseSnapshot:s,importDatabaseSnapshot:c,resetDatabase:l})},[]),(0,T.jsxs)(`div`,{className:`space-y-4 animate-fade-in`,children:[(0,T.jsxs)(`div`,{className:`flex flex-col sm:flex-row sm:items-center justify-between gap-3 bg-krona-surface p-3.5 rounded-xl border border-krona-border shadow-krona-soft`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h2`,{className:`text-sm font-bold text-krona-primary`,children:`Krona Configuration Center & Capability Studio`}),(0,T.jsx)(y,{level:`pilot1`,size:`sm`})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление архитектурой экосистемы, переключение бизнес-профилей и тонкая настройка Capabilities`})]}),(0,T.jsxs)(n,{variant:`secondary`,size:`sm`,onClick:D,children:[(0,T.jsx)(b,{className:`w-3.5 h-3.5 mr-1`}),`Сбросить к дефолту профиля`]})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft flex flex-col sm:flex-row sm:items-center justify-between gap-4`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,T.jsx)(`div`,{className:`w-10 h-10 rounded-xl bg-krona-green/10 text-krona-green flex items-center justify-center border border-krona-green/20 shrink-0`,children:(0,T.jsx)(_,{className:`w-5 h-5`})}),(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(`h3`,{className:`text-sm font-bold text-krona-primary`,children:`Configuration Engine: Сущности и Конструкторы`}),(0,T.jsx)(i,{variant:`gold`,size:`sm`,children:`Phase C Central`})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Управление 39+ типами полей, визуальный редактор форм, карточек, фильтров и кастомных модулей.`})]})]}),(0,T.jsx)(`a`,{href:`/settings/entities`,className:`inline-flex items-center justify-center px-4 py-2 rounded-lg bg-krona-green text-white text-xs font-semibold hover:bg-krona-green/90 transition-colors shrink-0`,children:`Открыть каталог сущностей →`})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(u,{className:`w-4 h-4 text-krona-gold`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Активный бизнес-профиль`})]}),(0,T.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2.5`,children:Object.values(v).map(n=>(0,T.jsxs)(`button`,{onClick:()=>t(n.id),className:`p-3 rounded-xl border text-left flex flex-col justify-between transition-all ${n.id===e?`border-krona-gold bg-krona-gold/10 ring-2 ring-krona-gold/30`:`border-krona-border bg-krona-workspace hover:border-krona-border-strong`}`,children:[(0,T.jsxs)(`div`,{children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between mb-1`,children:[(0,T.jsx)(`span`,{className:`text-xs font-bold text-krona-primary`,children:n.name}),(0,T.jsx)(i,{variant:`neutral`,size:`sm`,children:n.category})]}),(0,T.jsx)(`div`,{className:`text-[11px] text-krona-secondary`,children:n.companyName})]}),(0,T.jsx)(`div`,{className:`text-[10px] text-krona-gold-text font-semibold pt-2`,children:n.id===e?`✓ Активный профиль`:`Выбрать →`})]},n.id))})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(_,{className:`w-4 h-4 text-krona-green`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Capability Engine (21 системная возможность платформы)`})]}),(0,T.jsx)(`span`,{className:`text-xs text-krona-secondary`,children:`Тумблеры мгновенно перестраивают меню, разделы и табы`})]}),(0,T.jsx)(`div`,{className:`grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-2.5`,children:x.map(e=>{let t=S[e.id];return(0,T.jsxs)(`div`,{onClick:()=>E(e.id),className:`p-3 rounded-lg border cursor-pointer select-none transition-all flex items-center justify-between gap-2 ${t?`border-krona-green/60 bg-krona-green/5`:`border-krona-border bg-krona-workspace opacity-60`}`,children:[(0,T.jsxs)(`div`,{className:`min-w-0`,children:[(0,T.jsx)(`div`,{className:`font-bold text-xs text-krona-primary truncate`,children:e.name}),(0,T.jsx)(`div`,{className:`text-[10px] text-krona-secondary truncate`,children:e.description})]}),(0,T.jsx)(`div`,{className:`w-10 h-5 rounded-full p-0.5 transition-colors duration-200 ease-in-out shrink-0 ${t?`bg-krona-green`:`bg-[#D8D5CB] dark:bg-[#3A3D35]`}`,children:(0,T.jsx)(`div`,{className:`w-4 h-4 rounded-full bg-white transition-transform duration-200 ease-in-out shadow-sm ${t?`translate-x-5`:`translate-x-0`}`})})]},e.id)})})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(m,{className:`w-4 h-4 text-krona-info`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Матрица прав и ролей (RBAC)`})]}),(0,T.jsx)(`div`,{className:`grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-2`,children:Object.values(p).map(e=>(0,T.jsxs)(`button`,{"data-testid":`settings-role-${e.id}`,onClick:()=>a(e.id),className:`p-2.5 rounded-lg border text-left transition-all ${e.id===r?`border-krona-green bg-krona-green/10 text-krona-green-text font-bold`:`border-krona-border bg-krona-workspace text-krona-secondary hover:text-krona-primary`}`,children:[(0,T.jsx)(`div`,{className:`text-xs font-semibold`,children:e.label}),(0,T.jsx)(`div`,{className:`text-[10px] opacity-75`,children:e.badge})]},e.id))})]}),(0,T.jsxs)(`div`,{className:`bg-krona-surface border border-krona-border rounded-xl p-4 shadow-krona-soft space-y-3`,children:[(0,T.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,T.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,T.jsx)(C,{className:`w-4 h-4 text-krona-green`}),(0,T.jsx)(`h3`,{className:`text-xs font-bold text-krona-primary uppercase tracking-wider`,children:`Управление снимками и базой данных (IndexedDB)`})]}),F&&(0,T.jsx)(`span`,{className:`text-xs font-medium text-krona-green`,children:F})]}),(0,T.jsx)(`p`,{className:`text-xs text-krona-secondary`,children:`Экспорт полного слепка данных (сделки, заказы, кастомные сущности, финансы, остатки) в JSON, сброс к дефолтному демо-состоянию и мгновенное восстановление из файла.`}),(0,T.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3 pt-1`,children:[(0,T.jsxs)(n,{variant:`primary`,size:`sm`,"data-testid":`export-snapshot-btn`,onClick:async()=>{try{M(!0);let e=await s(),t=JSON.stringify(e,null,2),n=new Blob([t],{type:`application/json`}),r=URL.createObjectURL(n),i=document.createElement(`a`);i.href=r,i.download=`krona_db_snapshot_${Date.now()}.json`,document.body.appendChild(i),i.click(),document.body.removeChild(i),URL.revokeObjectURL(r);let a=e.metadata?.totalRecords??Object.values(e.stores).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0);I(`Экспортировано ${a} записей (v${e.version})`),O(`Снимок базы данных успешно экспортирован!`,`success`)}catch(e){O(`Ошибка экспорта: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{M(!1)}},disabled:j,children:[(0,T.jsx)(f,{className:`w-3.5 h-3.5 mr-1.5`}),j?`Экспорт...`:`Экспорт снимка (JSON)`]}),(0,T.jsxs)(n,{variant:`secondary`,size:`sm`,"data-testid":`reset-database-btn`,onClick:async()=>{try{A(!0),await l(),I(`База данных сброшена к начальному состоянию`),O(`База данных успешно сброшена к начальному состоянию!`,`info`)}catch(e){O(`Ошибка сброса: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{A(!1)}},disabled:k,children:[(0,T.jsx)(h,{className:`w-3.5 h-3.5 mr-1.5`}),k?`Сброс...`:`Сбросить демо-данные`]}),(0,T.jsxs)(`div`,{children:[(0,T.jsx)(`input`,{type:`file`,ref:L,"data-testid":`import-snapshot-input`,accept:`.json`,onChange:async e=>{let t=e.target.files?.[0];if(t)try{P(!0);let e=await t.text(),n=JSON.parse(e);if(!n.version||!n.stores)throw Error(`Некорректный формат файла снимка`);await c(n);let r=n.metadata?.totalRecords??Object.values(n.stores).reduce((e,t)=>e+(Array.isArray(t)?t.length:0),0);I(`Импортировано ${r} записей`),O(`Снимок базы данных успешно импортирован!`,`success`)}catch(e){O(`Ошибка импорта: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{P(!1),L.current&&(L.current.value=``)}},className:`hidden`}),(0,T.jsxs)(n,{variant:`outline`,size:`sm`,"data-testid":`import-snapshot-btn`,onClick:()=>L.current?.click(),disabled:N,children:[(0,T.jsx)(d,{className:`w-3.5 h-3.5 mr-1.5`}),N?`Импорт...`:`Импортировать снимок`]})]})]})]})]})};export{E as SettingsModule};