@nice2dev/ui-enterprise 1.0.30 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@nice2dev/icons"),n=require("react"),ie=require("@nice2dev/ui");function ve(s,a,i){const c=i.csvDelimiter||",",l=[];return i.includeHeaders!==!1&&l.push(a.filter(r=>r.include).map(r=>`"${r.label}"`).join(c)),s.forEach(r=>{const u=a.filter(o=>o.include).map(o=>{let p=r[o.field];return o.transform&&(p=o.transform(p)),p==null?"":typeof p=="string"?`"${p.replace(/"/g,'""')}"`:String(p)});l.push(u.join(c))}),l.join(`
2
2
  `)}function fe(s,a,i){const c=a.filter(r=>r.include),l=s.map(r=>{const u={};return c.forEach(o=>{let p=r[o.field];o.transform&&(p=o.transform(p)),u[o.field]=p}),u});return JSON.stringify(l,null,2)}const le={csv:{label:"CSV",icon:e.jsx(t.NtdFileText,{size:20}),description:"Comma-separated values"},xlsx:{label:"Excel",icon:e.jsx(t.NtdBarChart,{size:20}),description:"Microsoft Excel"},json:{label:"JSON",icon:e.jsx(t.NtdBrackets,{size:20}),description:"JavaScript Object Notation"},pdf:{label:"PDF",icon:e.jsx(t.NtdFile,{size:20}),description:"Portable Document Format"},xml:{label:"XML",icon:e.jsx(t.NtdClipboard,{size:20}),description:"Extensible Markup Language"}},ke=({formats:s,selected:a,onChange:i})=>e.jsx("div",{className:"nice-export-formats",children:s.map(c=>{const l=le[c];return e.jsxs("button",{type:"button",className:`nice-export-format ${a===c?"nice-export-format--selected":""}`,onClick:()=>i(c),title:l.description,children:[e.jsx("span",{className:"nice-export-format-icon",children:l.icon}),e.jsx("span",{className:"nice-export-format-label",children:l.label})]},c)})}),ye=({fields:s,onChange:a})=>{const i=r=>{const u=[...s];u[r]={...u[r],include:!u[r].include},a(u)},c=r=>{a(s.map(u=>({...u,include:r})))},l=s.filter(r=>r.include).length;return e.jsxs("div",{className:"nice-export-fields",children:[e.jsxs("div",{className:"nice-export-fields-header",children:[e.jsxs("span",{children:["Fields to export (",l,"/",s.length,")"]}),e.jsxs("div",{className:"nice-export-fields-actions",children:[e.jsx("button",{type:"button",onClick:()=>c(!0),children:"Select all"}),e.jsx("button",{type:"button",onClick:()=>c(!1),children:"Deselect all"})]})]}),e.jsx("div",{className:"nice-export-fields-list",children:s.map((r,u)=>e.jsxs("label",{className:"nice-export-field",children:[e.jsx("input",{type:"checkbox",checked:r.include,onChange:()=>i(u)}),e.jsx("span",{className:"nice-export-field-label",children:r.label}),e.jsx("span",{className:"nice-export-field-name",children:r.field})]},r.field))})]})},we=({format:s,options:a,onChange:i})=>{const c=(l,r)=>{i({...a,[l]:r})};return e.jsxs("div",{className:"nice-export-options",children:[e.jsx("h4",{children:"Export Options"}),e.jsxs("label",{className:"nice-export-option",children:[e.jsx("input",{type:"checkbox",checked:a.includeHeaders!==!1,onChange:l=>c("includeHeaders",l.target.checked)}),"Include headers"]}),s==="csv"&&e.jsxs("label",{className:"nice-export-option",children:[e.jsx("span",{children:"Delimiter:"}),e.jsxs("select",{value:a.csvDelimiter||",",onChange:l=>c("csvDelimiter",l.target.value),children:[e.jsx("option",{value:",",children:"Comma (,)"}),e.jsx("option",{value:";",children:"Semicolon (;)"}),e.jsx("option",{value:"\\t",children:"Tab"}),e.jsx("option",{value:"|",children:"Pipe (|)"})]})]}),e.jsxs("label",{className:"nice-export-option",children:[e.jsx("span",{children:"Date format:"}),e.jsxs("select",{value:a.dateFormat||"YYYY-MM-DD",onChange:l=>c("dateFormat",l.target.value),children:[e.jsx("option",{value:"YYYY-MM-DD",children:"YYYY-MM-DD"}),e.jsx("option",{value:"DD/MM/YYYY",children:"DD/MM/YYYY"}),e.jsx("option",{value:"MM/DD/YYYY",children:"MM/DD/YYYY"}),e.jsx("option",{value:"ISO",children:"ISO 8601"})]})]}),e.jsxs("label",{className:"nice-export-option",children:[e.jsx("span",{children:"Encoding:"}),e.jsxs("select",{value:a.encoding||"utf-8",onChange:l=>c("encoding",l.target.value),children:[e.jsx("option",{value:"utf-8",children:"UTF-8"}),e.jsx("option",{value:"utf-16",children:"UTF-16"}),e.jsx("option",{value:"iso-8859-1",children:"ISO-8859-1"})]})]}),(s==="xlsx"||s==="pdf")&&e.jsxs("label",{className:"nice-export-option",children:[e.jsx("span",{children:"Password protect:"}),e.jsx("input",{type:"password",value:a.password||"",onChange:l=>c("password",l.target.value||void 0),placeholder:"Leave empty for no password"})]})]})},Ce=({jobs:s,onDownload:a})=>{if(s.length===0)return e.jsx("div",{className:"nice-export-history-empty",children:"No export history"});const i=c=>c?c<1024?`${c} B`:c<1024*1024?`${(c/1024).toFixed(1)} KB`:`${(c/1024/1024).toFixed(1)} MB`:"-";return e.jsxs("div",{className:"nice-export-history",children:[e.jsx("h4",{children:"Export History"}),e.jsx("div",{className:"nice-export-history-list",children:s.map(c=>e.jsxs("div",{className:`nice-export-job nice-export-job--${c.status}`,children:[e.jsxs("div",{className:"nice-export-job-info",children:[e.jsx("span",{className:"nice-export-job-name",children:c.name}),e.jsx("span",{className:"nice-export-job-format",children:c.format.toUpperCase()}),e.jsx("span",{className:"nice-export-job-date",children:new Date(c.createdAt).toLocaleString()})]}),e.jsxs("div",{className:"nice-export-job-meta",children:[c.rowCount&&e.jsxs("span",{children:[c.rowCount," rows"]}),c.fileSize&&e.jsx("span",{children:i(c.fileSize)})]}),e.jsxs("div",{className:"nice-export-job-status",children:[c.status==="processing"&&e.jsx("div",{className:"nice-export-job-progress",children:e.jsx("div",{className:"nice-export-job-progress-bar",style:{width:`${c.progress}%`}})}),c.status==="completed"&&c.downloadUrl&&e.jsx("button",{type:"button",className:"nice-export-job-download",onClick:()=>a==null?void 0:a(c),children:"Download"}),c.status==="failed"&&e.jsx("span",{className:"nice-export-job-error",title:c.error,children:"Failed"})]})]},c.id))})]})},pe=n.forwardRef(({dataSource:s,formats:a=["csv","xlsx","json","pdf"],templates:i=[],enableScheduling:c=!1,exportHistory:l=[],onExportStart:r,onExportComplete:u,onExportError:o,onSaveTemplate:p,onDeleteTemplate:z,onSchedule:E,customExportHandler:C,title:f="Data Export",description:H,className:T="",style:G},P)=>{const[$,O]=n.useState(a[0]),[M,V]=n.useState(s.getFields()),[x,k]=n.useState({includeHeaders:!0,dateFormat:"YYYY-MM-DD",encoding:"utf-8"}),[j,U]=n.useState(!1),[m,F]=n.useState(0),[L,A]=n.useState("export"),w=n.useCallback(async()=>{const g={id:Date.now().toString(),name:`Export ${new Date().toISOString()}`,format:$,status:"processing",progress:0,createdAt:new Date};U(!0),F(0),r==null||r(g);try{const S=await s.fetchData({fields:M,filters:void 0,sorting:void 0});F(50);let D;if(C)D=await C($,S,x);else switch($){case"csv":D=ve(S,M,x);break;case"json":D=fe(S,M,x);break;default:throw new Error(`Format ${$} requires a custom export handler`)}F(100);const J=typeof D=="string"?new Blob([D],{type:"text/plain"}):D,q=URL.createObjectURL(J),N=document.createElement("a");N.href=q,N.download=`export-${Date.now()}.${$}`,document.body.appendChild(N),N.click(),document.body.removeChild(N),URL.revokeObjectURL(q);const _={...g,status:"completed",progress:100,completedAt:new Date,rowCount:S.length,fileSize:J.size};u==null||u(_)}catch(S){const D={...g,status:"failed",error:S instanceof Error?S.message:"Unknown error"};o==null||o(D,S instanceof Error?S:new Error("Export failed"))}finally{U(!1),F(0)}},[$,M,x,s,C,r,u,o]),Y=n.useCallback(g=>{const S=i.find(D=>D.id===g);S&&(O(S.format),V(S.fields),S.options&&k(S.options))},[i]);return n.useImperativeHandle(P,()=>({exportNow:async g=>{O(g),await w()},getSelectedFields:()=>M,loadTemplate:Y})),e.jsxs("div",{className:`nice-export-center ${T}`,style:G,children:[e.jsx("div",{className:"nice-export-header",children:e.jsxs("div",{className:"nice-export-title-area",children:[e.jsx("h3",{className:"nice-export-title",children:f}),H&&e.jsx("p",{className:"nice-export-description",children:H})]})}),e.jsxs("div",{className:"nice-export-tabs",children:[e.jsx("button",{type:"button",className:`nice-export-tab ${L==="export"?"nice-export-tab--active":""}`,onClick:()=>A("export"),children:"Export"}),i.length>0&&e.jsxs("button",{type:"button",className:`nice-export-tab ${L==="templates"?"nice-export-tab--active":""}`,onClick:()=>A("templates"),children:["Templates (",i.length,")"]}),l.length>0&&e.jsx("button",{type:"button",className:`nice-export-tab ${L==="history"?"nice-export-tab--active":""}`,onClick:()=>A("history"),children:"History"})]}),e.jsxs("div",{className:"nice-export-content",children:[L==="export"&&e.jsxs(e.Fragment,{children:[e.jsx(ke,{formats:a,selected:$,onChange:O}),e.jsx(ye,{fields:M,onChange:V}),e.jsx(we,{format:$,options:x,onChange:k}),e.jsxs("div",{className:"nice-export-actions",children:[e.jsx("button",{type:"button",className:"nice-export-btn nice-export-btn--primary",onClick:w,disabled:j||M.filter(g=>g.include).length===0,children:j?`Exporting... ${m}%`:"Export Now"}),p&&e.jsx("button",{type:"button",className:"nice-export-btn nice-export-btn--secondary",onClick:()=>p({id:Date.now().toString(),name:`Template ${i.length+1}`,format:$,fields:M,options:x}),children:"Save as Template"})]})]}),L==="templates"&&e.jsx("div",{className:"nice-export-templates",children:i.map(g=>e.jsxs("div",{className:"nice-export-template",children:[e.jsxs("div",{className:"nice-export-template-info",children:[e.jsx("span",{className:"nice-export-template-name",children:g.name}),e.jsxs("span",{className:"nice-export-template-format",children:[le[g.format].icon," ",le[g.format].label]}),g.description&&e.jsx("span",{className:"nice-export-template-desc",children:g.description})]}),e.jsxs("div",{className:"nice-export-template-actions",children:[e.jsx("button",{type:"button",onClick:()=>{Y(g.id),A("export")},children:"Use"}),z&&e.jsx("button",{type:"button",onClick:()=>z(g.id),children:"Delete"})]})]},g.id))}),L==="history"&&e.jsx(Ce,{jobs:l,onDownload:g=>{g.downloadUrl&&window.open(g.downloadUrl,"_blank")}})]})]})});pe.displayName="NiceDataExportCenter";const se={create:{icon:e.jsx(t.NtdPlus,{size:16}),label:"Created",color:"var(--color-success, #10b981)"},update:{icon:e.jsx(t.NtdEdit,{size:16}),label:"Updated",color:"var(--color-primary, #3b82f6)"},delete:{icon:e.jsx(t.NtdClose,{size:16}),label:"Deleted",color:"var(--color-error, #ef4444)"},view:{icon:e.jsx(t.NtdEye,{size:16}),label:"Viewed",color:"var(--text-muted, #6b7280)"},export:{icon:e.jsx(t.NtdDownload,{size:16}),label:"Exported",color:"var(--color-accent, #8b5cf6)"},import:{icon:e.jsx(t.NtdUpload,{size:16}),label:"Imported",color:"var(--color-accent, #8b5cf6)"},approve:{icon:e.jsx(t.NtdCheck,{size:16}),label:"Approved",color:"var(--color-success, #10b981)"},reject:{icon:e.jsx(t.NtdError,{size:16}),label:"Rejected",color:"var(--color-error, #ef4444)"},login:{icon:e.jsx(t.NtdLogIn,{size:16}),label:"Login",color:"var(--color-success, #10b981)"},logout:{icon:e.jsx(t.NtdLogOut,{size:16}),label:"Logout",color:"var(--text-muted, #6b7280)"},permission_change:{icon:e.jsx(t.NtdKey,{size:16}),label:"Permissions",color:"var(--color-warning, #f59e0b)"},config_change:{icon:e.jsx(t.NtdSettings,{size:16}),label:"Config",color:"var(--color-warning, #f59e0b)"},custom:{icon:e.jsx(t.NtdCircle,{size:16}),label:"Action",color:"var(--text-muted, #6b7280)"}},Se=({filter:s,onChange:a,availableFilters:i})=>{var l,r;const c=(u,o)=>{a({...s,[u]:o})};return e.jsxs("div",{className:"nice-audit-filters",children:[e.jsxs("div",{className:"nice-audit-filter-group",children:[e.jsx("label",{children:"Date Range"}),e.jsxs("div",{className:"nice-audit-date-range",children:[e.jsx("input",{type:"date",value:((l=s.startDate)==null?void 0:l.toISOString().split("T")[0])||"",onChange:u=>c("startDate",u.target.value?new Date(u.target.value):void 0)}),e.jsx("span",{children:"to"}),e.jsx("input",{type:"date",value:((r=s.endDate)==null?void 0:r.toISOString().split("T")[0])||"",onChange:u=>c("endDate",u.target.value?new Date(u.target.value):void 0)})]})]}),e.jsxs("div",{className:"nice-audit-filter-group",children:[e.jsx("label",{children:"Actions"}),e.jsx("div",{className:"nice-audit-action-chips",children:Object.keys(se).slice(0,8).map(u=>{var z;const o=se[u],p=(z=s.actions)==null?void 0:z.includes(u);return e.jsxs("button",{type:"button",className:`nice-audit-chip ${p?"nice-audit-chip--selected":""}`,style:{"--chip-color":o.color},onClick:()=>{const E=s.actions||[];c("actions",p?E.filter(C=>C!==u):[...E,u])},children:[e.jsx("span",{className:"nice-audit-chip-icon",children:o.icon}),o.label]},u)})})]}),e.jsxs("div",{className:"nice-audit-filter-group",children:[e.jsx("label",{children:"Search"}),e.jsx("input",{type:"text",className:"nice-audit-search",placeholder:"Search entries...",value:s.searchQuery||"",onChange:u=>c("searchQuery",u.target.value||void 0)})]})]})},De=({changes:s})=>{if(!s.length)return null;const a=(i,c)=>c||(i==null?"(empty)":typeof i=="object"?JSON.stringify(i,null,2):String(i));return e.jsx("div",{className:"nice-audit-diff",children:s.map((i,c)=>e.jsxs("div",{className:"nice-audit-diff-row",children:[e.jsx("span",{className:"nice-audit-diff-field",children:i.field}),e.jsxs("div",{className:"nice-audit-diff-values",children:[e.jsx("span",{className:"nice-audit-diff-old",children:a(i.oldValue,i.displayOldValue)}),e.jsx("span",{className:"nice-audit-diff-arrow",children:e.jsx(t.NtdArrowRight,{size:14})}),e.jsx("span",{className:"nice-audit-diff-new",children:a(i.newValue,i.displayNewValue)})]})]},c))})},ze=({entry:s,showDiff:a,renderActionIcon:i,renderUser:c,onClick:l})=>{const[r,u]=n.useState(!1),o=se[s.action]||se.custom;return e.jsxs("div",{className:`nice-audit-timeline-entry nice-audit-timeline-entry--${s.severity||"info"}`,onClick:l,role:l?"button":void 0,tabIndex:l?0:void 0,children:[e.jsx("div",{className:"nice-audit-timeline-marker",style:{"--marker-color":o.color},children:i?i(s.action):o.icon}),e.jsxs("div",{className:"nice-audit-timeline-content",children:[e.jsxs("div",{className:"nice-audit-timeline-header",children:[e.jsx("span",{className:"nice-audit-timeline-action",children:s.actionLabel||o.label}),e.jsxs("span",{className:"nice-audit-timeline-entity",children:[s.entityType," ",s.entityName&&`"${s.entityName}"`]}),e.jsx("span",{className:"nice-audit-timeline-time",children:new Date(s.timestamp).toLocaleString()})]}),e.jsx("div",{className:"nice-audit-timeline-user",children:c?c(s):e.jsxs(e.Fragment,{children:[s.userAvatar&&e.jsx("img",{src:s.userAvatar,alt:"",className:"nice-audit-avatar"}),e.jsx("span",{className:"nice-audit-username",children:s.userName}),s.userRole&&e.jsx("span",{className:"nice-audit-role",children:s.userRole})]})}),s.notes&&e.jsx("div",{className:"nice-audit-timeline-notes",children:s.notes}),a&&s.changes&&s.changes.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("button",{type:"button",className:"nice-audit-expand-btn",onClick:p=>{p.stopPropagation(),u(!r)},children:r?e.jsxs(e.Fragment,{children:[e.jsx(t.NtdChevronDown,{size:14})," Hide changes"]}):e.jsxs(e.Fragment,{children:[e.jsx(t.NtdChevronRight,{size:14})," Show ",s.changes.length," changes"]})}),r&&e.jsx(De,{changes:s.changes})]}),s.ipAddress&&e.jsxs("div",{className:"nice-audit-timeline-meta",children:[e.jsxs("span",{children:["IP: ",s.ipAddress]}),s.location&&e.jsxs("span",{children:["• ",s.location]})]})]})]})},Te=({entries:s,showDiff:a,onEntryClick:i})=>e.jsxs("table",{className:"nice-audit-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Timestamp"}),e.jsx("th",{children:"Action"}),e.jsx("th",{children:"User"}),e.jsx("th",{children:"Entity"}),e.jsx("th",{children:"Changes"}),e.jsx("th",{children:"IP Address"})]})}),e.jsx("tbody",{children:s.map(c=>{const l=se[c.action]||se.custom;return e.jsxs("tr",{className:`nice-audit-row nice-audit-row--${c.severity||"info"}`,onClick:()=>i==null?void 0:i(c),role:i?"button":void 0,children:[e.jsx("td",{className:"nice-audit-cell-time",children:new Date(c.timestamp).toLocaleString()}),e.jsx("td",{children:e.jsxs("span",{className:"nice-audit-action-badge",style:{"--badge-color":l.color},children:[l.icon," ",c.actionLabel||l.label]})}),e.jsxs("td",{className:"nice-audit-cell-user",children:[c.userAvatar&&e.jsx("img",{src:c.userAvatar,alt:"",className:"nice-audit-avatar-sm"}),c.userName]}),e.jsxs("td",{children:[c.entityType,c.entityName&&`: ${c.entityName}`]}),e.jsx("td",{children:c.changes&&c.changes.length>0?e.jsxs("span",{className:"nice-audit-changes-count",children:[c.changes.length," field(s)"]}):"-"}),e.jsx("td",{className:"nice-audit-cell-ip",children:c.ipAddress||"-"})]},c.id)})})]}),me=n.forwardRef(({dataSource:s,initialFilter:a={},pageSize:i=50,viewMode:c="timeline",enableExport:l=!0,showDiffs:r=!0,renderActionIcon:u,renderUser:o,onEntryClick:p,onExport:z,title:E="Audit Trail",className:C="",style:f},H)=>{const[T,G]=n.useState([]),[P,$]=n.useState(0),[O,M]=n.useState(a),[V,x]=n.useState(1),[k,j]=n.useState(!1),[U,m]=n.useState(c),[F,L]=n.useState(!1),A=n.useCallback(async()=>{j(!0);try{const g=await s.fetchEntries(O,{page:V,pageSize:i});G(g.entries),$(g.totalCount)}finally{j(!1)}},[s,O,V,i]);n.useEffect(()=>{A()},[A]);const w=n.useCallback(g=>{if(z)z(T,g);else{let S,D;if(g==="json")S=JSON.stringify(T,null,2),D="application/json";else{const _=["Timestamp","Action","User","Entity Type","Entity","IP","Changes"],K=T.map(I=>{var Z;return[new Date(I.timestamp).toISOString(),I.action,I.userName,I.entityType,I.entityName||I.entityId,I.ipAddress||"",((Z=I.changes)==null?void 0:Z.length)||0]});S=[_.join(","),...K.map(I=>I.join(","))].join(`
3
- `),D="text/csv"}const J=new Blob([S],{type:D}),q=URL.createObjectURL(J),N=document.createElement("a");N.href=q,N.download=`audit-trail-${Date.now()}.${g}`,N.click(),URL.revokeObjectURL(q)}},[T,z]);n.useImperativeHandle(H,()=>({refresh:A,setFilter:g=>{M(g),x(1)},getEntries:()=>T}));const Y=Math.ceil(P/i);return e.jsxs("div",{className:`nice-audit-trail ${C}`,style:f,children:[e.jsxs("div",{className:"nice-audit-header",children:[e.jsx("h3",{className:"nice-audit-title",children:E}),e.jsxs("div",{className:"nice-audit-header-actions",children:[e.jsx("button",{type:"button",className:`nice-audit-view-btn ${U==="timeline"?"nice-audit-view-btn--active":""}`,onClick:()=>m("timeline"),title:"Timeline view",children:e.jsx(t.NtdList,{size:16})}),e.jsx("button",{type:"button",className:`nice-audit-view-btn ${U==="table"?"nice-audit-view-btn--active":""}`,onClick:()=>m("table"),title:"Table view",children:e.jsx(t.NtdGrid,{size:16})}),e.jsxs("button",{type:"button",className:`nice-audit-filter-btn ${F?"nice-audit-filter-btn--active":""}`,onClick:()=>L(!F),children:[e.jsx(t.NtdSearch,{size:16})," Filter"]}),l&&e.jsxs("div",{className:"nice-audit-export-dropdown",children:[e.jsxs("button",{type:"button",className:"nice-audit-export-btn",children:[e.jsx(t.NtdDownload,{size:16})," Export"]}),e.jsxs("div",{className:"nice-audit-export-menu",children:[e.jsx("button",{type:"button",onClick:()=>w("csv"),children:"Export as CSV"}),e.jsx("button",{type:"button",onClick:()=>w("json"),children:"Export as JSON"})]})]})]})]}),F&&e.jsx(Se,{filter:O,onChange:M}),e.jsxs("div",{className:"nice-audit-stats",children:[e.jsxs("span",{children:["Showing ",T.length," of ",P," entries"]}),O.startDate&&O.endDate&&e.jsxs("span",{className:"nice-audit-date-indicator",children:[O.startDate.toLocaleDateString()," - ",O.endDate.toLocaleDateString()]})]}),e.jsxs("div",{className:`nice-audit-content ${k?"nice-audit-content--loading":""}`,children:[k&&e.jsx("div",{className:"nice-audit-loader",children:e.jsx("div",{className:"nice-audit-spinner"})}),U==="timeline"?e.jsx("div",{className:"nice-audit-timeline",children:T.map(g=>e.jsx(ze,{entry:g,showDiff:r,renderActionIcon:u,renderUser:o,onClick:p?()=>p(g):void 0},g.id))}):e.jsx(Te,{entries:T,showDiff:r,onEntryClick:p}),T.length===0&&!k&&e.jsx("div",{className:"nice-audit-empty",children:"No audit entries found matching the current filters."})]}),Y>1&&e.jsxs("div",{className:"nice-audit-pagination",children:[e.jsx("button",{type:"button",disabled:V===1,onClick:()=>x(V-1),children:"Previous"}),e.jsxs("span",{children:["Page ",V," of ",Y]}),e.jsx("button",{type:"button",disabled:V===Y,onClick:()=>x(V+1),children:"Next"})]})]})});me.displayName="NiceAuditTrail";const _e=[{target:".nice-contract-editor",titleKey:"tutorial.contractEditor.intro.title",title:"Contract editor",contentKey:"tutorial.contractEditor.intro.content",content:"Assemble the contract from the clause library, fill template variables, track versions and approvals, then save or export to PDF/DOCX/HTML.",placement:"auto"}],ee={general:{label:"General",color:"var(--text-muted, #6b7280)",icon:e.jsx(t.NtdFileText,{size:16})},liability:{label:"Liability",color:"var(--color-error, #ef4444)",icon:e.jsx(t.NtdWarning,{size:16})},payment:{label:"Payment",color:"var(--color-success, #10b981)",icon:e.jsx(t.NtdDollar,{size:16})},termination:{label:"Termination",color:"var(--color-warning, #f59e0b)",icon:e.jsx(t.NtdOctagon,{size:16})},confidentiality:{label:"Confidentiality",color:"var(--color-accent, #8b5cf6)",icon:e.jsx(t.NtdLock,{size:16})},compliance:{label:"Compliance",color:"var(--color-primary, #3b82f6)",icon:e.jsx(t.NtdCheck,{size:16})},custom:{label:"Custom",color:"var(--text-muted, #64748b)",icon:e.jsx(t.NtdEdit,{size:16})}},Le={draft:{label:"Draft",color:"var(--text-muted, #6b7280)"},pending_review:{label:"Pending Review",color:"var(--color-warning, #f59e0b)"},approved:{label:"Approved",color:"var(--color-success, #10b981)"},rejected:{label:"Rejected",color:"var(--color-error, #ef4444)"},signed:{label:"Signed",color:"var(--color-accent, #8b5cf6)"}},Ae=({clauses:s,onInsert:a})=>{const[i,c]=n.useState(""),[l,r]=n.useState("all"),u=s.filter(o=>{const p=i===""||o.name.toLowerCase().includes(i.toLowerCase())||o.content.toLowerCase().includes(i.toLowerCase()),z=l==="all"||o.category===l;return p&&z});return e.jsxs("div",{className:"nice-contract-library",children:[e.jsxs("div",{className:"nice-contract-library-header",children:[e.jsx("h4",{children:"Clause Library"}),e.jsx("input",{type:"text",placeholder:"Search clauses...",value:i,onChange:o=>c(o.target.value),className:"nice-contract-library-search"})]}),e.jsxs("div",{className:"nice-contract-library-categories",children:[e.jsx("button",{type:"button",className:`nice-contract-category-btn ${l==="all"?"nice-contract-category-btn--active":""}`,onClick:()=>r("all"),children:"All"}),Object.keys(ee).map(o=>e.jsxs("button",{type:"button",className:`nice-contract-category-btn ${l===o?"nice-contract-category-btn--active":""}`,onClick:()=>r(o),style:{"--cat-color":ee[o].color},children:[ee[o].icon," ",ee[o].label]},o))]}),e.jsxs("div",{className:"nice-contract-library-list",children:[u.map(o=>e.jsxs("div",{className:"nice-contract-library-item",children:[e.jsxs("div",{className:"nice-contract-library-item-header",children:[e.jsx("span",{className:"nice-contract-library-item-name",children:o.name}),e.jsx("span",{className:"nice-contract-library-item-cat",style:{"--cat-color":ee[o.category].color},children:ee[o.category].icon})]}),o.description&&e.jsx("p",{className:"nice-contract-library-item-desc",children:o.description}),e.jsxs("button",{type:"button",className:"nice-contract-library-insert",onClick:()=>a(o),children:[e.jsx(t.NtdPlus,{size:14})," Insert"]})]},o.id)),u.length===0&&e.jsx("div",{className:"nice-contract-library-empty",children:"No matching clauses"})]})]})},Ie=({variables:s,definitions:a,onChange:i})=>e.jsxs("div",{className:"nice-contract-variables",children:[e.jsx("h4",{children:"Variables"}),e.jsx("div",{className:"nice-contract-variables-list",children:a.map(c=>e.jsxs("div",{className:"nice-contract-variable",children:[e.jsxs("label",{children:[c.name,c.required&&e.jsx("span",{className:"nice-contract-required",children:"*"})]}),c.type==="select"&&c.options?e.jsxs("select",{value:s[c.name]||c.defaultValue||"",onChange:l=>i(c.name,l.target.value),children:[e.jsx("option",{value:"",children:"Select..."}),c.options.map(l=>e.jsx("option",{value:l,children:l},l))]}):c.type==="date"?e.jsx("input",{type:"date",value:s[c.name]||c.defaultValue||"",onChange:l=>i(c.name,l.target.value)}):e.jsx("input",{type:c.type==="number"||c.type==="currency"?"number":"text",value:s[c.name]||c.defaultValue||"",placeholder:c.placeholder,onChange:l=>i(c.name,l.target.value)})]},c.name))})]}),Fe=({section:s,variables:a,readOnly:i,onToggle:c,onRemoveClause:l,onMoveClause:r})=>{const u=o=>o.replace(/\{\{(\w+)\}\}/g,(p,z)=>a[z]||`[${z}]`);return e.jsxs("div",{className:`nice-contract-section ${s.collapsed?"nice-contract-section--collapsed":""}`,children:[e.jsxs("div",{className:"nice-contract-section-header",onClick:c,children:[e.jsx("span",{className:"nice-contract-section-toggle",children:s.collapsed?e.jsx(t.NtdChevronRight,{size:14}):e.jsx(t.NtdChevronDown,{size:14})}),e.jsx("h3",{children:s.title}),e.jsxs("span",{className:"nice-contract-section-count",children:[s.clauses.length," clause(s)"]})]}),!s.collapsed&&e.jsxs("div",{className:"nice-contract-section-content",children:[s.clauses.map((o,p)=>e.jsxs("div",{className:"nice-contract-clause",children:[e.jsxs("div",{className:"nice-contract-clause-header",children:[e.jsx("span",{className:"nice-contract-clause-cat",style:{"--cat-color":ee[o.category].color},children:ee[o.category].icon}),e.jsx("span",{className:"nice-contract-clause-name",children:o.name}),o.isRequired&&e.jsx("span",{className:"nice-contract-clause-required",children:"Required"}),!i&&e.jsxs("div",{className:"nice-contract-clause-actions",children:[e.jsx("button",{type:"button",onClick:()=>r(o.id,"up"),disabled:p===0,children:e.jsx(t.NtdArrowUp,{size:14})}),e.jsx("button",{type:"button",onClick:()=>r(o.id,"down"),disabled:p===s.clauses.length-1,children:e.jsx(t.NtdArrowDown,{size:14})}),e.jsx("button",{type:"button",onClick:()=>l(o.id),children:e.jsx(t.NtdClose,{size:14})})]})]}),e.jsx("div",{className:"nice-contract-clause-content",dangerouslySetInnerHTML:{__html:u(o.content)}})]},o.id)),s.clauses.length===0&&e.jsx("div",{className:"nice-contract-section-empty",children:"No clauses in this section. Drag clauses here or use the library."})]})]})},Re=({workflow:s,onAction:a})=>{const[i,c]=n.useState(null),[l,r]=n.useState("");return e.jsxs("div",{className:"nice-contract-workflow",children:[e.jsx("h4",{children:"Approval Workflow"}),e.jsx("div",{className:"nice-contract-workflow-steps",children:s.steps.map((u,o)=>e.jsxs("div",{className:`nice-contract-workflow-step nice-contract-workflow-step--${u.status}`,children:[e.jsxs("div",{className:"nice-contract-workflow-step-header",children:[e.jsx("span",{className:"nice-contract-workflow-step-num",children:o+1}),e.jsx("span",{className:"nice-contract-workflow-step-name",children:u.name}),e.jsx("span",{className:`nice-contract-workflow-step-status nice-contract-workflow-step-status--${u.status}`,children:u.status})]}),e.jsx("div",{className:"nice-contract-workflow-approvers",children:u.approvers.map(p=>e.jsxs("div",{className:"nice-contract-approver",children:[p.avatar&&e.jsx("img",{src:p.avatar,alt:"",className:"nice-contract-approver-avatar"}),e.jsx("span",{children:p.name}),e.jsx("span",{className:"nice-contract-approver-role",children:p.role})]},p.id))}),u.status==="pending"&&s.currentStep===o&&e.jsx("div",{className:"nice-contract-workflow-actions",children:i===u.id?e.jsxs(e.Fragment,{children:[e.jsx("textarea",{placeholder:"Comments (optional)",value:l,onChange:p=>r(p.target.value)}),e.jsxs("div",{className:"nice-contract-workflow-btns",children:[e.jsxs("button",{type:"button",className:"nice-contract-btn nice-contract-btn--approve",onClick:()=>{a(u.id,"approve",l),c(null),r("")},children:[e.jsx(t.NtdCheck,{size:14})," Approve"]}),e.jsxs("button",{type:"button",className:"nice-contract-btn nice-contract-btn--reject",onClick:()=>{a(u.id,"reject",l),c(null),r("")},children:[e.jsx(t.NtdError,{size:14})," Reject"]}),e.jsx("button",{type:"button",onClick:()=>c(null),children:"Cancel"})]})]}):e.jsx("button",{type:"button",className:"nice-contract-btn",onClick:()=>c(u.id),children:"Review"})})]},u.id))})]})},xe=n.forwardRef(({document:s,clauseLibrary:a=[],readOnly:i=!1,showClauseLibrary:c=!0,showVersionHistory:l=!1,showComments:r=!1,showWorkflow:u=!0,currentUser:o,onChange:p,onAddClause:z,onRemoveClause:E,onVariableChange:C,onAddComment:f,onApprovalAction:H,onRestoreVersion:T,onSave:G,onExport:P,className:$="",style:O,tutorial:M},V)=>{var Z;const[x,k]=n.useState(s),[j,U]=n.useState(c?"library":null),[m,F]=n.useState(((Z=x.sections[0])==null?void 0:Z.id)||null),A=x.sections.flatMap(b=>b.clauses.flatMap(y=>y.variables||[])).filter((b,y,R)=>R.findIndex(B=>B.name===b.name)===y),w=n.useCallback(b=>{const y={...x,...b,updatedAt:new Date};k(y),p==null||p(y)},[x,p]),Y=n.useCallback((b,y)=>{const R=x.sections.map(B=>B.id===y?{...B,clauses:[...B.clauses,{...b,id:`${b.id}-${Date.now()}`}]}:B);w({sections:R}),z==null||z(b,y)},[x,w,z]),g=n.useCallback((b,y)=>{const R=x.sections.map(B=>B.id===y?{...B,clauses:B.clauses.filter(W=>W.id!==b)}:B);w({sections:R}),E==null||E(b,y)},[x,w,E]),S=n.useCallback((b,y,R)=>{const B=x.sections.map(W=>{if(W.id!==b)return W;const d=W.clauses.findIndex(X=>X.id===y);if(d===-1)return W;const h=R==="up"?d-1:d+1;if(h<0||h>=W.clauses.length)return W;const v=[...W.clauses];return[v[d],v[h]]=[v[h],v[d]],{...W,clauses:v}});w({sections:B})},[x,w]),D=n.useCallback(b=>{const y=x.sections.map(R=>R.id===b?{...R,collapsed:!R.collapsed}:R);w({sections:y})},[x,w]),J=n.useCallback((b,y)=>{w({variables:{...x.variables,[b]:y}}),C==null||C(b,y)},[x,w,C]),q=n.useCallback(()=>{const b=[];return A.forEach(y=>{y.required&&!x.variables[y.name]&&b.push(`Missing required variable: ${y.name}`)}),x.sections.forEach(y=>{y.clauses.forEach(R=>{R.isRequired&&!R.content&&b.push(`Required clause "${R.name}" is empty`)})}),{valid:b.length===0,errors:b}},[x,A]);n.useImperativeHandle(V,()=>({getDocument:()=>x,insertClause:Y,setVariable:J,exportDocument:b=>P==null?void 0:P(b),validate:q}));const N=Le[x.status],_=e.jsxs("div",{className:"nice-contract-header",children:[e.jsxs("div",{className:"nice-contract-header-info",children:[e.jsx("h2",{className:"nice-contract-title",children:x.title}),e.jsx("span",{className:"nice-contract-status",style:{"--status-color":N.color},children:N.label})]}),e.jsxs("div",{className:"nice-contract-header-actions",children:[G&&!i&&e.jsx("button",{type:"button",className:"nice-contract-btn nice-contract-btn--primary",onClick:()=>G(x),children:"Save"}),P&&e.jsxs("div",{className:"nice-contract-export-dropdown",children:[e.jsxs("button",{type:"button",className:"nice-contract-btn",children:["Export ",e.jsx(t.NtdChevronDown,{size:14})]}),e.jsxs("div",{className:"nice-contract-export-menu",children:[e.jsx("button",{type:"button",onClick:()=>P("pdf"),children:"PDF"}),e.jsx("button",{type:"button",onClick:()=>P("docx"),children:"Word (.docx)"}),e.jsx("button",{type:"button",onClick:()=>P("html"),children:"HTML"})]})]})]})]}),K=e.jsxs("div",{className:"nice-contract-toolbar",children:[c&&e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="library"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="library"?null:"library"),children:[e.jsx(t.NtdBook,{size:16})," Library"]}),e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="variables"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="variables"?null:"variables"),children:[e.jsx(t.NtdBrackets,{size:16})," Variables"]}),u&&x.workflow&&e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="workflow"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="workflow"?null:"workflow"),children:[e.jsx(t.NtdCheck,{size:16})," Workflow"]}),l&&e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="history"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="history"?null:"history"),children:[e.jsx(t.NtdClock,{size:16})," History"]})]}),I=j?e.jsxs("div",{className:"nice-contract-panel",children:[j==="library"&&e.jsx(Ae,{clauses:a,onInsert:b=>m&&Y(b,m)}),j==="variables"&&e.jsx(Ie,{variables:x.variables,definitions:A,onChange:J}),j==="workflow"&&x.workflow&&e.jsx(Re,{workflow:x.workflow,onAction:(b,y,R)=>H==null?void 0:H(b,y,R)})]}):void 0;return e.jsx(ie.NiceAppShell,{flush:!0,className:`nice-contract-editor ${$}`,style:O,menubar:_,toolbar:K,sidebar:I,children:e.jsxs("div",{className:"nice-contract-document",children:[e.jsx("span",{style:{position:"absolute",top:6,right:6,zIndex:30},children:e.jsx(ie.NiceTutorialButton,{steps:ie.resolveTutorial(M,_e)})}),x.sections.map(b=>e.jsx(Fe,{section:b,variables:x.variables,readOnly:i,onToggle:()=>D(b.id),onRemoveClause:y=>g(y,b.id),onMoveClause:(y,R)=>S(b.id,y,R)},b.id))]})})});xe.displayName="NiceContractEditor";const Pe=[{id:"necessary",label:"Necessary",description:"Essential cookies for site functionality. Cannot be disabled.",required:!0,enabled:!0,cookies:["session_id","csrf_token","consent"]},{id:"analytics",label:"Analytics",description:"Help us understand how visitors interact with our website.",enabled:!1,cookies:["_ga","_gid","_gat"],partners:["Google Analytics","Hotjar"]},{id:"marketing",label:"Marketing",description:"Used to deliver personalized advertisements.",enabled:!1,cookies:["_fbp","_gcl_au","ads_id"],partners:["Facebook","Google Ads","LinkedIn"]},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences.",enabled:!1,cookies:["theme","language","timezone"]},{id:"social",label:"Social Media",description:"Enable social sharing and embedded content.",enabled:!1,cookies:["social_session"],partners:["Twitter","YouTube","Instagram"]}],Ee={title:"Cookie Preferences",description:"We use cookies to enhance your experience. Choose which types of cookies you allow.",acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize",savePreferences:"Save Preferences",necessary:"Necessary",analytics:"Analytics",marketing:"Marketing",preferences:"Preferences",social:"Social Media",dataRights:"Your Data Rights",exportData:"Export My Data",deleteData:"Delete My Data",pending:"Pending",processing:"Processing",completed:"Completed",close:"Close"},$e=({option:s,enabled:a,onChange:i})=>e.jsxs("div",{className:"nice-gdpr-option",children:[e.jsxs("div",{className:"nice-gdpr-option-header",children:[e.jsxs("label",{className:"nice-gdpr-option-toggle",children:[e.jsx("input",{type:"checkbox",checked:a,onChange:c=>i(c.target.checked),disabled:s.required}),e.jsx("span",{className:"nice-gdpr-toggle-slider"})]}),e.jsxs("div",{className:"nice-gdpr-option-info",children:[e.jsxs("span",{className:"nice-gdpr-option-label",children:[s.label,s.required&&e.jsx("span",{className:"nice-gdpr-required",children:"Required"})]}),e.jsx("span",{className:"nice-gdpr-option-desc",children:s.description})]})]}),s.partners&&s.partners.length>0&&e.jsxs("div",{className:"nice-gdpr-option-partners",children:[e.jsx("span",{children:"Partners: "}),s.partners.join(", ")]})]}),Oe=({requests:s,policies:a,onRequest:i,onDownload:c,labels:l})=>e.jsxs("div",{className:"nice-gdpr-rights",children:[e.jsx("h4",{children:l.dataRights}),e.jsxs("div",{className:"nice-gdpr-rights-actions",children:[e.jsxs("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--secondary",onClick:()=>i("export"),children:[e.jsx(t.NtdDownload,{size:16})," ",l.exportData]}),e.jsxs("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--danger",onClick:()=>i("delete"),children:[e.jsx(t.NtdTrash,{size:16})," ",l.deleteData]})]}),s.length>0&&e.jsxs("div",{className:"nice-gdpr-requests",children:[e.jsx("h5",{children:"Previous Requests"}),s.map(r=>e.jsxs("div",{className:`nice-gdpr-request nice-gdpr-request--${r.status}`,children:[e.jsx("span",{className:"nice-gdpr-request-type",children:r.type}),e.jsx("span",{className:"nice-gdpr-request-date",children:new Date(r.requestedAt).toLocaleDateString()}),e.jsx("span",{className:"nice-gdpr-request-status",children:r.status}),r.status==="completed"&&r.downloadUrl&&e.jsx("button",{type:"button",className:"nice-gdpr-download-btn",onClick:()=>c(r.id),children:"Download"})]},r.id))]}),a.length>0&&e.jsxs("div",{className:"nice-gdpr-policies",children:[e.jsx("h5",{children:"Data Retention"}),e.jsxs("table",{className:"nice-gdpr-policies-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Category"}),e.jsx("th",{children:"Retention"}),e.jsx("th",{children:"Legal Basis"})]})}),e.jsx("tbody",{children:a.map((r,u)=>e.jsxs("tr",{children:[e.jsx("td",{children:r.category}),e.jsxs("td",{children:[r.retentionDays," days"]}),e.jsx("td",{children:r.legalBasis})]},u))})]})]})]}),je=n.forwardRef(({appName:s,companyName:a,options:i=Pe,currentConsent:c=null,retentionPolicies:l=[],dataRequests:r=[],privacyPolicy:u=[],storageKey:o="nice_gdpr_consent",consentVersion:p="1.0",variant:z="banner",position:E="bottom",onConsentChange:C,onDataRequest:f,onDownloadExport:H,privacyPolicyUrl:T,cookiePolicyUrl:G,termsUrl:P,labels:$,className:O="",style:M},V)=>{const x={...Ee,...$},[k,j]=n.useState(!1),[U,m]=n.useState(!1),[F,L]=n.useState(!1),[A,w]=n.useState(()=>{const N={};return i.forEach(_=>{N[_.id]=(c==null?void 0:c.categories[_.id])??_.enabled}),N});n.useEffect(()=>{(!c||c.version!==p)&&j(!0)},[c,p]);const Y=n.useCallback((N,_)=>{const K=_||A;K.necessary=!0;const I={version:p,timestamp:new Date,categories:K,action:N};try{localStorage.setItem(o,JSON.stringify(I))}catch{}w(K),j(!1),m(!1),C==null||C(I)},[A,p,o,C]),g=n.useCallback(()=>{const N={};i.forEach(_=>{N[_.id]=!0}),Y("accept_all",N)},[i,Y]),S=n.useCallback(()=>{const N={};i.forEach(_=>{N[_.id]=_.required||!1}),Y("reject_all",N)},[i,Y]),D=n.useCallback(async N=>{f&&await f(N)},[f]);if(n.useImperativeHandle(V,()=>({showBanner:()=>j(!0),hideBanner:()=>j(!1),getConsent:()=>{try{const N=localStorage.getItem(o);return N?JSON.parse(N):null}catch{return null}},revokeConsent:()=>{try{localStorage.removeItem(o)}catch{}j(!0)},openPreferences:()=>{j(!0),m(!0)}})),!k&&z!=="embedded")return null;const J=e.jsxs("div",{className:"nice-gdpr-content",children:[e.jsxs("div",{className:"nice-gdpr-header",children:[e.jsx("div",{className:"nice-gdpr-icon",children:e.jsx(t.NtdCookieConsent,{size:32})}),e.jsxs("div",{className:"nice-gdpr-header-text",children:[e.jsx("h3",{children:x.title}),e.jsx("p",{children:x.description.replace("{app}",s).replace("{company}",a)})]})]}),!U&&!F&&e.jsxs("div",{className:"nice-gdpr-quick-actions",children:[e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--primary",onClick:g,children:x.acceptAll}),e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--secondary",onClick:S,children:x.rejectAll}),e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--link",onClick:()=>m(!0),children:x.customize})]}),U&&!F&&e.jsxs("div",{className:"nice-gdpr-preferences",children:[e.jsx("div",{className:"nice-gdpr-options",children:i.map(N=>e.jsx($e,{option:N,enabled:A[N.id],onChange:_=>w(K=>({...K,[N.id]:_}))},N.id))}),e.jsxs("div",{className:"nice-gdpr-pref-actions",children:[e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--primary",onClick:()=>Y("custom"),children:x.savePreferences}),e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--link",onClick:()=>L(!0),children:x.dataRights})]})]}),F&&e.jsxs(e.Fragment,{children:[e.jsx(Oe,{requests:r,policies:l,onRequest:D,onDownload:N=>H==null?void 0:H(N),labels:x}),e.jsxs("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--link",onClick:()=>L(!1),children:[e.jsx(t.NtdArrowLeft,{size:14})," Back to preferences"]})]}),e.jsxs("div",{className:"nice-gdpr-footer",children:[T&&e.jsx("a",{href:T,target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),G&&e.jsx("a",{href:G,target:"_blank",rel:"noopener noreferrer",children:"Cookie Policy"}),P&&e.jsx("a",{href:P,target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})]})]}),q=`nice-gdpr-consent nice-gdpr-consent--${z} nice-gdpr-consent--${E} ${O}`;return z==="modal"?e.jsx("div",{className:"nice-gdpr-overlay",children:e.jsx("div",{className:q,style:M,role:"dialog","aria-modal":"true",children:J})}):e.jsx("div",{className:q,style:M,children:J})});je.displayName="NiceGDPRConsent";const ge={document:e.jsx(t.NtdFileText,{size:16}),user:e.jsx(t.NtdUser,{size:16}),task:e.jsx(t.NtdCheck,{size:16}),project:e.jsx(t.NtdFolder,{size:16}),setting:e.jsx(t.NtdSettings,{size:16}),help:e.jsx(t.NtdHelp,{size:16}),action:e.jsx(t.NtdZap,{size:16}),custom:e.jsx(t.NtdCircle,{size:16})},Me=({value:s,onChange:a,onKeyDown:i,placeholder:c,isLoading:l,inputRef:r})=>e.jsxs("div",{className:"nice-search-input-container",children:[e.jsx("span",{className:"nice-search-icon",children:e.jsx(t.NtdSearch,{size:16})}),e.jsx("input",{ref:r,type:"text",className:"nice-search-input",placeholder:c,value:s,onChange:u=>a(u.target.value),onKeyDown:i,"aria-label":"Search"}),l&&e.jsx("span",{className:"nice-search-loader"}),s&&!l&&e.jsx("button",{type:"button",className:"nice-search-clear",onClick:()=>a(""),"aria-label":"Clear search",children:e.jsx(t.NtdClose,{size:16})})]}),Ue=({result:s,isSelected:a,onSelect:i,renderResult:c})=>c?e.jsx("div",{onClick:i,children:c(s,a)}):e.jsxs("div",{className:`nice-search-result ${a?"nice-search-result--selected":""}`,onClick:i,role:"option","aria-selected":a,children:[e.jsx("div",{className:"nice-search-result-icon",children:s.icon||(s.image?e.jsx("img",{src:s.image,alt:""}):ge[s.type])}),e.jsxs("div",{className:"nice-search-result-content",children:[e.jsx("span",{className:"nice-search-result-title",children:s.title}),s.subtitle&&e.jsx("span",{className:"nice-search-result-subtitle",children:s.subtitle}),s.description&&e.jsx("span",{className:"nice-search-result-desc",children:s.description})]}),e.jsxs("div",{className:"nice-search-result-meta",children:[e.jsx("span",{className:"nice-search-result-source",children:s.source}),e.jsx("span",{className:"nice-search-result-type",children:s.type})]}),s.actions&&s.actions.length>0&&e.jsx("div",{className:"nice-search-result-actions",children:s.actions.map(l=>e.jsx("button",{type:"button",className:"nice-search-action-btn",onClick:r=>{r.stopPropagation(),l.onClick()},title:l.label,children:l.icon||l.label},l.id))})]}),Ye=({categories:s,selected:a,onSelect:i})=>e.jsxs("div",{className:"nice-search-categories",children:[e.jsx("button",{type:"button",className:`nice-search-category ${a===null?"nice-search-category--active":""}`,onClick:()=>i(null),children:"All"}),s.map(c=>e.jsxs("button",{type:"button",className:`nice-search-category ${a===c.id?"nice-search-category--active":""}`,onClick:()=>i(c.id),children:[c.icon&&e.jsx("span",{className:"nice-search-category-icon",children:c.icon}),c.label,c.count!==void 0&&e.jsx("span",{className:"nice-search-category-count",children:c.count})]},c.id))]}),qe=({searches:s,onSelect:a,onClear:i,label:c,clearLabel:l})=>e.jsxs("div",{className:"nice-search-recent",children:[e.jsxs("div",{className:"nice-search-recent-header",children:[e.jsx("span",{children:c}),e.jsx("button",{type:"button",onClick:i,children:l})]}),e.jsx("div",{className:"nice-search-recent-list",children:s.map((r,u)=>e.jsxs("button",{type:"button",className:"nice-search-recent-item",onClick:()=>a(r.query),children:[e.jsx("span",{className:"nice-search-recent-icon",children:e.jsx(t.NtdClock,{size:14})}),e.jsx("span",{className:"nice-search-recent-query",children:r.query})]},u))})]}),Ve={placeholder:"Search...",recent:"Recent Searches",noResults:"No results found for",searching:"Searching...",clearRecent:"Clear",categories:"Categories",filters:"Filters"},Ne=n.forwardRef(({sources:s,placeholder:a,minQueryLength:i=2,debounceMs:c=300,showCategories:l=!0,filters:r=[],showRecent:u=!0,maxRecent:o=5,showShortcuts:p=!0,hotkey:z="k",onResultSelect:E,onSearch:C,onClose:f,renderResult:H,renderEmpty:T,defaultOpen:G=!1,open:P,variant:$="modal",labels:O,className:M="",style:V},x)=>{const k={...Ve,...O},j=n.useRef(null),U=n.useRef(),[m,F]=n.useState(G),[L,A]=n.useState(""),[w,Y]=n.useState([]),[g,S]=n.useState(!1),[D,J]=n.useState(0),[q,N]=n.useState(null),[_,K]=n.useState([]),I=P!==void 0?P:m;n.useEffect(()=>{try{const h=localStorage.getItem("nice_recent_searches");h&&K(JSON.parse(h))}catch{}},[]);const Z=n.useCallback((h,v)=>{const Q=[{query:h,timestamp:new Date,resultCount:v},..._.filter(te=>te.query!==h)].slice(0,o);K(Q);try{localStorage.setItem("nice_recent_searches",JSON.stringify(Q))}catch{}},[_,o]),b=n.useCallback(async h=>{if(h.length<i){Y([]);return}S(!0);try{const v=s.map(async Q=>{try{return(await Q.search(h)).map(re=>({...re,source:Q.name,relevanceScore:re.relevanceScore*(Q.priority||1)}))}catch{return[]}}),X=(await Promise.all(v)).flat();X.sort((Q,te)=>te.relevanceScore-Q.relevanceScore),Y(X),J(0),C==null||C(h,X),X.length>0&&Z(h,X.length)}finally{S(!1)}},[s,i,C,Z]),y=n.useCallback(h=>{A(h),U.current&&clearTimeout(U.current),U.current=setTimeout(()=>{b(h)},c)},[b,c]),R=n.useCallback(h=>{switch(h.key){case"ArrowDown":h.preventDefault(),J(v=>Math.min(v+1,w.length-1));break;case"ArrowUp":h.preventDefault(),J(v=>Math.max(v-1,0));break;case"Enter":h.preventDefault(),w[D]&&(E==null||E(w[D]),F(!1),f==null||f());break;case"Escape":h.preventDefault(),F(!1),f==null||f();break}},[w,D,E,f]);n.useEffect(()=>{const h=v=>{(v.metaKey||v.ctrlKey)&&v.key===z&&(v.preventDefault(),F(!0),setTimeout(()=>{var X;return(X=j.current)==null?void 0:X.focus()},0))};return document.addEventListener("keydown",h),()=>document.removeEventListener("keydown",h)},[z]),n.useEffect(()=>{I&&setTimeout(()=>{var h;return(h=j.current)==null?void 0:h.focus()},0)},[I]);const B=q?w.filter(h=>h.type===q):w,W=Array.from(new Set(w.map(h=>h.type))).map(h=>({id:h,label:h.charAt(0).toUpperCase()+h.slice(1),icon:ge[h],count:w.filter(v=>v.type===h).length}));if(n.useImperativeHandle(x,()=>({open:()=>F(!0),close:()=>{F(!1),f==null||f()},focus:()=>{var h;return(h=j.current)==null?void 0:h.focus()},clear:()=>{A(""),Y([])},search:async h=>{A(h),await b(h)}})),!I&&$!=="inline")return null;const d=e.jsxs("div",{className:"nice-search-content",children:[e.jsx(Me,{value:L,onChange:y,onKeyDown:R,placeholder:a||k.placeholder,isLoading:g,inputRef:j}),l&&W.length>1&&L.length>=i&&e.jsx(Ye,{categories:W,selected:q,onSelect:N}),e.jsxs("div",{className:"nice-search-results",role:"listbox",children:[g&&L.length>=i&&e.jsx("div",{className:"nice-search-loading",children:k.searching}),!g&&L.length>=i&&B.length===0&&e.jsx("div",{className:"nice-search-empty",children:T?T(L):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"nice-search-empty-icon",children:e.jsx(t.NtdSearch,{size:32})}),e.jsxs("span",{children:[k.noResults,' "',L,'"']})]})}),B.map((h,v)=>e.jsx(Ue,{result:h,isSelected:v===D,onSelect:()=>{E==null||E(h),F(!1),f==null||f()},renderResult:H},h.id))]}),u&&L.length<i&&_.length>0&&e.jsx(qe,{searches:_,onSelect:h=>{A(h),b(h)},onClear:()=>{K([]),localStorage.removeItem("nice_recent_searches")},label:k.recent,clearLabel:k.clearRecent}),p&&e.jsxs("div",{className:"nice-search-shortcuts",children:[e.jsxs("span",{children:[e.jsx("kbd",{children:"↑"}),e.jsx("kbd",{children:"↓"})," Navigate"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"↵"})," Select"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"Esc"})," Close"]})]})]});return $==="modal"?e.jsx("div",{className:"nice-search-overlay",onClick:()=>{F(!1),f==null||f()},children:e.jsx("div",{className:`nice-global-search nice-global-search--modal ${M}`,style:V,onClick:h=>h.stopPropagation(),role:"dialog","aria-modal":"true",children:d})}):e.jsx("div",{className:`nice-global-search nice-global-search--${$} ${M}`,style:V,children:d})});Ne.displayName="NiceGlobalSearch";const ce={title:"Access Log",filters:"Filters",search:"Search users, IPs...",export:"Export",refresh:"Refresh",details:"Details",stats:"Statistics",map:"Geographic Distribution",timeline:"Timeline",showMore:"Show More",noResults:"No access logs found",eventTypes:{login_success:"Login Success",login_failed:"Login Failed",logout:"Logout",password_change:"Password Change",password_reset:"Password Reset",mfa_enabled:"MFA Enabled",mfa_disabled:"MFA Disabled",mfa_challenged:"MFA Challenge",permission_change:"Permission Change",session_expired:"Session Expired",account_locked:"Account Locked",account_unlocked:"Account Unlocked",api_key_created:"API Key Created",api_key_revoked:"API Key Revoked",token_refresh:"Token Refresh",suspicious_activity:"Suspicious Activity"},riskLevels:{low:"Low",medium:"Medium",high:"High",critical:"Critical"},deviceTypes:{desktop:"Desktop",mobile:"Mobile",tablet:"Tablet",unknown:"Unknown"},columns:{timestamp:"Time",user:"User",event:"Event",ip:"IP Address",location:"Location",device:"Device",risk:"Risk",status:"Status"}},ne={login_success:e.jsx(t.NtdCheck,{size:16}),login_failed:e.jsx(t.NtdError,{size:16}),logout:e.jsx(t.NtdLogOut,{size:16}),password_change:e.jsx(t.NtdKey,{size:16}),password_reset:e.jsx(t.NtdRefresh,{size:16}),mfa_enabled:e.jsx(t.NtdShield,{size:16}),mfa_disabled:e.jsx(t.NtdWarning,{size:16}),mfa_challenged:e.jsx(t.NtdSmartphone,{size:16}),permission_change:e.jsx(t.NtdUser,{size:16}),session_expired:e.jsx(t.NtdClock,{size:16}),account_locked:e.jsx(t.NtdLock,{size:16}),account_unlocked:e.jsx(t.NtdUnlock,{size:16}),api_key_created:e.jsx(t.NtdKey,{size:16}),api_key_revoked:e.jsx(t.NtdError,{size:16}),token_refresh:e.jsx(t.NtdRefresh,{size:16}),suspicious_activity:e.jsx(t.NtdZap,{size:16})},ae={low:"var(--color-success, #22c55e)",medium:"var(--color-warning, #f59e0b)",high:"var(--color-error, #ef4444)",critical:"var(--color-accent-hover, #7c3aed)"},oe={desktop:e.jsx(t.NtdMonitor,{size:16}),mobile:e.jsx(t.NtdSmartphone,{size:16}),tablet:e.jsx(t.NtdSmartphone,{size:16}),unknown:e.jsx(t.NtdHelp,{size:16})},de=s=>(typeof s=="string"?new Date(s):s).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}),he=s=>{if(!s)return"Unknown";const a=[];return s.city&&a.push(s.city),s.country&&a.push(s.country),a.length>0?a.join(", "):"Unknown"},Be=s=>{if(!s)return"Unknown";const a=[];return s.browser&&a.push(s.browser),s.os&&a.push(s.os),a.length>0?a.join(" / "):s.type},ue=s=>s>=80?ae.critical:s>=60?ae.high:s>=40?ae.medium:ae.low,He=(s,a)=>{var i,c,l,r,u;if(a.startDate){const o=typeof a.startDate=="string"?new Date(a.startDate):a.startDate;if((typeof s.timestamp=="string"?new Date(s.timestamp):s.timestamp)<o)return!1}if(a.endDate){const o=typeof a.endDate=="string"?new Date(a.endDate):a.endDate;if((typeof s.timestamp=="string"?new Date(s.timestamp):s.timestamp)>o)return!1}if((i=a.eventTypes)!=null&&i.length&&!a.eventTypes.includes(s.eventType)||(c=a.riskLevels)!=null&&c.length&&!a.riskLevels.includes(s.riskLevel)||a.userId&&s.userId!==a.userId||a.ipAddress&&!s.ipAddress.includes(a.ipAddress)||a.country&&((l=s.location)==null?void 0:l.country)!==a.country||a.successOnly&&!s.success||a.failedOnly&&s.success)return!1;if(a.searchQuery){const o=a.searchQuery.toLowerCase();if(![s.userName,s.userEmail,s.userId,s.ipAddress,(r=s.location)==null?void 0:r.city,(u=s.location)==null?void 0:u.country].filter(Boolean).join(" ").toLowerCase().includes(o))return!1}return!0},be=n.forwardRef(function(a,i){var B,W;const{entries:c,filter:l={},stats:r,realtime:u=!1,pollingInterval:o=3e4,showMap:p=!1,showStats:z=!0,showDetails:E=!0,pageSize:C=50,labels:f,loading:H=!1,onFilterChange:T,onExport:G,onEntrySelect:P,onBlockIP:$,onRefresh:O,className:M="",...V}=a,x=n.useRef(null);n.useId();const k=n.useMemo(()=>({...ce,...f,eventTypes:{...ce.eventTypes,...f==null?void 0:f.eventTypes},riskLevels:{...ce.riskLevels,...f==null?void 0:f.riskLevels},deviceTypes:{...ce.deviceTypes,...f==null?void 0:f.deviceTypes},columns:{...ce.columns,...f==null?void 0:f.columns}}),[f]),[j,U]=n.useState(l),[m,F]=n.useState(null),[L,A]=n.useState(C),[w,Y]=n.useState(!1),[g,S]=n.useState("table"),D=n.useMemo(()=>c.filter(d=>He(d,j)),[c,j]),J=n.useMemo(()=>D.slice(0,L),[D,L]),q=n.useMemo(()=>{if(r)return r;const d=new Set(c.map(v=>v.ipAddress)),h=new Set(c.map(v=>{var X;return(X=v.location)==null?void 0:X.country}).filter(Boolean));return{totalEvents:c.length,successfulLogins:c.filter(v=>v.eventType==="login_success").length,failedLogins:c.filter(v=>v.eventType==="login_failed").length,uniqueIPs:d.size,uniqueCountries:h.size,highRiskEvents:c.filter(v=>v.riskLevel==="high"||v.riskLevel==="critical").length,suspiciousActivities:c.filter(v=>v.eventType==="suspicious_activity").length}},[c,r]),N=n.useCallback(d=>{const h={...j,...d};U(h),A(C),T==null||T(h)},[j,T,C]),_=n.useCallback(()=>{U({}),A(C),T==null||T({})},[T,C]),K=n.useCallback(d=>{F(d),P==null||P(d)},[P]),I=n.useCallback(d=>{G==null||G(d)},[G]),Z=n.useCallback(()=>{O==null||O()},[O]),b=n.useCallback(()=>{A(d=>d+C)},[C]);n.useImperativeHandle(i,()=>({getFilter:()=>j,applyFilter:N,clearFilters:_,export:I,refresh:Z,getSelectedEntry:()=>m,getElement:()=>x.current}),[j,N,_,I,Z,m]);const y=d=>{var h,v;return e.jsxs("tr",{className:`nice-accesslog-row ${(m==null?void 0:m.id)===d.id?"nice-accesslog-row--selected":""} ${d.success?"":"nice-accesslog-row--failed"}`,onClick:()=>K(d),children:[e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--timestamp",children:de(d.timestamp)}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--user",children:e.jsxs("div",{className:"nice-accesslog-user",children:[e.jsx("span",{className:"nice-accesslog-username",children:d.userName||d.userId}),d.userEmail&&e.jsx("span",{className:"nice-accesslog-email",children:d.userEmail})]})}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--event",children:e.jsxs("span",{className:`nice-accesslog-event nice-accesslog-event--${d.eventType}`,children:[e.jsx("span",{className:"nice-accesslog-event-icon",children:ne[d.eventType]}),k.eventTypes[d.eventType]]})}),e.jsxs("td",{className:"nice-accesslog-cell nice-accesslog-cell--ip",children:[e.jsx("span",{className:"nice-accesslog-ip",children:d.ipAddress}),$&&e.jsx("button",{type:"button",className:"nice-accesslog-block-btn",onClick:X=>{X.stopPropagation(),$(d.ipAddress)},title:"Block IP",children:e.jsx(t.NtdSlash,{size:14})})]}),e.jsxs("td",{className:"nice-accesslog-cell nice-accesslog-cell--location",children:[((h=d.location)==null?void 0:h.countryCode)&&e.jsx("span",{className:"nice-accesslog-flag",children:e.jsx(t.NtdFlag,{size:14})}),he(d.location)]}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--device",children:e.jsxs("span",{className:"nice-accesslog-device",children:[oe[((v=d.device)==null?void 0:v.type)||"unknown"],Be(d.device)]})}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--risk",children:e.jsxs("span",{className:`nice-accesslog-risk nice-accesslog-risk--${d.riskLevel}`,style:{"--risk-color":ue(d.riskScore)},children:[e.jsx("span",{className:"nice-accesslog-risk-score",children:d.riskScore}),e.jsx("span",{className:"nice-accesslog-risk-label",children:k.riskLevels[d.riskLevel]})]})}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--status",children:e.jsx("span",{className:`nice-accesslog-status ${d.success?"nice-accesslog-status--success":"nice-accesslog-status--failed"}`,children:d.success?e.jsx(t.NtdCheck,{size:14}):e.jsx(t.NtdError,{size:14})})})]},d.id)},R=d=>e.jsxs("div",{className:`nice-accesslog-timeline-item nice-accesslog-timeline-item--${d.riskLevel}`,onClick:()=>K(d),children:[e.jsx("div",{className:"nice-accesslog-timeline-marker",style:{background:ae[d.riskLevel]}}),e.jsxs("div",{className:"nice-accesslog-timeline-content",children:[e.jsxs("div",{className:"nice-accesslog-timeline-header",children:[e.jsxs("span",{className:"nice-accesslog-timeline-event",children:[ne[d.eventType]," ",k.eventTypes[d.eventType]]}),e.jsx("span",{className:"nice-accesslog-timeline-time",children:de(d.timestamp)})]}),e.jsxs("div",{className:"nice-accesslog-timeline-details",children:[e.jsx("span",{children:d.userName||d.userId}),e.jsx("span",{children:"•"}),e.jsx("span",{children:d.ipAddress}),e.jsx("span",{children:"•"}),e.jsx("span",{children:he(d.location)})]}),d.flags&&d.flags.length>0&&e.jsx("div",{className:"nice-accesslog-timeline-flags",children:d.flags.map((h,v)=>e.jsx("span",{className:"nice-accesslog-flag-badge",children:h},v))})]})]},d.id);return e.jsxs("div",{ref:x,className:`nice-accesslog ${M}`,...V,children:[e.jsxs("div",{className:"nice-accesslog-header",children:[e.jsxs("div",{className:"nice-accesslog-header-left",children:[e.jsx("h2",{className:"nice-accesslog-title",children:k.title}),u&&e.jsxs("span",{className:"nice-accesslog-realtime-badge",children:[e.jsx(t.NtdCircle,{size:10})," Live"]})]}),e.jsxs("div",{className:"nice-accesslog-header-actions",children:[e.jsxs("button",{type:"button",className:"nice-accesslog-btn",onClick:Z,disabled:H,children:[e.jsx(t.NtdRefresh,{size:16})," ",k.refresh]}),e.jsxs("div",{className:"nice-accesslog-export-dropdown",children:[e.jsxs("button",{type:"button",className:"nice-accesslog-btn",children:[e.jsx(t.NtdDownload,{size:16})," ",k.export]}),e.jsxs("div",{className:"nice-accesslog-export-menu",children:[e.jsx("button",{onClick:()=>I("csv"),children:"CSV"}),e.jsx("button",{onClick:()=>I("json"),children:"JSON"}),e.jsx("button",{onClick:()=>I("pdf"),children:"PDF"})]})]})]})]}),z&&e.jsxs("div",{className:"nice-accesslog-stats",children:[e.jsxs("div",{className:"nice-accesslog-stat",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.totalEvents}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Total Events"})]}),e.jsxs("div",{className:"nice-accesslog-stat nice-accesslog-stat--success",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.successfulLogins}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Successful"})]}),e.jsxs("div",{className:"nice-accesslog-stat nice-accesslog-stat--failed",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.failedLogins}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Failed"})]}),e.jsxs("div",{className:"nice-accesslog-stat",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.uniqueIPs}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Unique IPs"})]}),e.jsxs("div",{className:"nice-accesslog-stat",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.uniqueCountries}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Countries"})]}),e.jsxs("div",{className:"nice-accesslog-stat nice-accesslog-stat--warning",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.highRiskEvents}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"High Risk"})]})]}),e.jsxs("div",{className:"nice-accesslog-filters",children:[e.jsxs("div",{className:"nice-accesslog-filters-row",children:[e.jsxs("div",{className:"nice-accesslog-search",children:[e.jsx("span",{className:"nice-accesslog-search-icon",children:e.jsx(t.NtdSearch,{size:16})}),e.jsx("input",{type:"text",placeholder:k.search,value:j.searchQuery||"",onChange:d=>N({searchQuery:d.target.value})})]}),e.jsxs("div",{className:"nice-accesslog-filter-quick",children:[e.jsx("button",{type:"button",className:`nice-accesslog-filter-chip ${j.failedOnly?"nice-accesslog-filter-chip--active":""}`,onClick:()=>N({failedOnly:!j.failedOnly,successOnly:!1}),children:"Failed Only"}),e.jsx("button",{type:"button",className:`nice-accesslog-filter-chip ${(B=j.riskLevels)!=null&&B.includes("high")||(W=j.riskLevels)!=null&&W.includes("critical")?"nice-accesslog-filter-chip--active":""}`,onClick:()=>{var d;return N({riskLevels:(d=j.riskLevels)!=null&&d.includes("high")?[]:["high","critical"]})},children:"High Risk"}),e.jsx("button",{type:"button",className:"nice-accesslog-filter-toggle",onClick:()=>Y(!w),children:w?e.jsxs(e.Fragment,{children:[e.jsx(t.NtdMinus,{size:14})," Less"]}):e.jsxs(e.Fragment,{children:[e.jsx(t.NtdPlus,{size:14})," More"]})})]})]}),w&&e.jsxs("div",{className:"nice-accesslog-filters-expanded",children:[e.jsxs("div",{className:"nice-accesslog-filter-group",children:[e.jsx("label",{children:"Event Type"}),e.jsx("select",{multiple:!0,value:j.eventTypes||[],onChange:d=>{const h=Array.from(d.target.selectedOptions,v=>v.value);N({eventTypes:h.length?h:void 0})},children:Object.entries(k.eventTypes).map(([d,h])=>e.jsx("option",{value:d,children:h},d))})]}),e.jsxs("div",{className:"nice-accesslog-filter-group",children:[e.jsx("label",{children:"Date Range"}),e.jsxs("div",{className:"nice-accesslog-date-range",children:[e.jsx("input",{type:"date",value:j.startDate?new Date(j.startDate).toISOString().split("T")[0]:"",onChange:d=>N({startDate:d.target.value||void 0})}),e.jsx("span",{children:"to"}),e.jsx("input",{type:"date",value:j.endDate?new Date(j.endDate).toISOString().split("T")[0]:"",onChange:d=>N({endDate:d.target.value||void 0})})]})]}),e.jsxs("div",{className:"nice-accesslog-filter-group",children:[e.jsx("label",{children:"IP Address"}),e.jsx("input",{type:"text",placeholder:"e.g., 192.168",value:j.ipAddress||"",onChange:d=>N({ipAddress:d.target.value||void 0})})]}),e.jsx("button",{type:"button",className:"nice-accesslog-clear-filters",onClick:_,children:"Clear All Filters"})]})]}),e.jsxs("div",{className:"nice-accesslog-tabs",children:[e.jsxs("button",{type:"button",className:`nice-accesslog-tab ${g==="table"?"nice-accesslog-tab--active":""}`,onClick:()=>S("table"),children:[e.jsx(t.NtdTable,{size:16})," Table"]}),e.jsxs("button",{type:"button",className:`nice-accesslog-tab ${g==="timeline"?"nice-accesslog-tab--active":""}`,onClick:()=>S("timeline"),children:[e.jsx(t.NtdCalendar,{size:16})," ",k.timeline]}),p&&e.jsxs("button",{type:"button",className:`nice-accesslog-tab ${g==="map"?"nice-accesslog-tab--active":""}`,onClick:()=>S("map"),children:[e.jsx(t.NtdMap,{size:16})," ",k.map]}),e.jsxs("span",{className:"nice-accesslog-count",children:[D.length," entries"]})]}),e.jsx("div",{className:"nice-accesslog-content",children:H?e.jsxs("div",{className:"nice-accesslog-loading",children:[e.jsx("div",{className:"nice-accesslog-spinner"}),"Loading access logs..."]}):D.length===0?e.jsxs("div",{className:"nice-accesslog-empty",children:[e.jsx("span",{className:"nice-accesslog-empty-icon",children:e.jsx(t.NtdShield,{size:32})}),e.jsx("span",{children:k.noResults})]}):e.jsxs(e.Fragment,{children:[g==="table"&&e.jsx("div",{className:"nice-accesslog-table-wrapper",children:e.jsxs("table",{className:"nice-accesslog-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:k.columns.timestamp}),e.jsx("th",{children:k.columns.user}),e.jsx("th",{children:k.columns.event}),e.jsx("th",{children:k.columns.ip}),e.jsx("th",{children:k.columns.location}),e.jsx("th",{children:k.columns.device}),e.jsx("th",{children:k.columns.risk}),e.jsx("th",{children:k.columns.status})]})}),e.jsx("tbody",{children:J.map(y)})]})}),g==="timeline"&&e.jsx("div",{className:"nice-accesslog-timeline",children:J.map(R)}),g==="map"&&e.jsx("div",{className:"nice-accesslog-map",children:e.jsxs("div",{className:"nice-accesslog-map-placeholder",children:[e.jsx(t.NtdMap,{size:16})," Geographic visualization would render here"]})}),L<D.length&&e.jsxs("button",{type:"button",className:"nice-accesslog-show-more",onClick:b,children:[k.showMore," (",D.length-L," remaining)"]})]})}),E&&m&&e.jsxs("div",{className:"nice-accesslog-detail",children:[e.jsxs("div",{className:"nice-accesslog-detail-header",children:[e.jsx("h3",{children:k.details}),e.jsx("button",{type:"button",className:"nice-accesslog-detail-close",onClick:()=>F(null),children:e.jsx(t.NtdClose,{size:16})})]}),e.jsxs("div",{className:"nice-accesslog-detail-content",children:[e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Event ID"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:m.id})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Timestamp"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:new Date(m.timestamp).toISOString()})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"User"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[m.userName," (",m.userId,")",m.userEmail&&e.jsx("div",{children:m.userEmail})]})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Event Type"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[ne[m.eventType]," ",k.eventTypes[m.eventType]]})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"IP Address"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:m.ipAddress})]}),m.location&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Location"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[m.location.city,", ",m.location.region,","," ",m.location.country,m.location.latitude&&m.location.longitude&&e.jsxs("div",{className:"nice-accesslog-coords",children:["(",m.location.latitude,", ",m.location.longitude,")"]})]})]}),m.device&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Device"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[oe[m.device.type]," ",m.device.os," ",m.device.osVersion,e.jsxs("div",{children:[m.device.browser," ",m.device.browserVersion]}),m.device.fingerprint&&e.jsxs("div",{className:"nice-accesslog-fingerprint",children:["Fingerprint: ",m.device.fingerprint]})]})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Risk Score"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:e.jsxs("span",{style:{color:ue(m.riskScore)},children:[m.riskScore,"/100 (",k.riskLevels[m.riskLevel],")"]})})]}),m.flags&&m.flags.length>0&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Flags"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:m.flags.map((d,h)=>e.jsx("span",{className:"nice-accesslog-flag-badge",children:d},h))})]}),m.details&&Object.keys(m.details).length>0&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Additional Details"}),e.jsx("pre",{className:"nice-accesslog-detail-json",children:JSON.stringify(m.details,null,2)})]})]})]})]})});be.displayName="NiceAccessLog";exports.NiceAccessLog=be;exports.NiceAuditTrail=me;exports.NiceContractEditor=xe;exports.NiceDataExportCenter=pe;exports.NiceGDPRConsent=je;exports.NiceGlobalSearch=Ne;
3
+ `),D="text/csv"}const J=new Blob([S],{type:D}),q=URL.createObjectURL(J),N=document.createElement("a");N.href=q,N.download=`audit-trail-${Date.now()}.${g}`,N.click(),URL.revokeObjectURL(q)}},[T,z]);n.useImperativeHandle(H,()=>({refresh:A,setFilter:g=>{M(g),x(1)},getEntries:()=>T}));const Y=Math.ceil(P/i);return e.jsxs("div",{className:`nice-audit-trail ${C}`,style:f,children:[e.jsxs("div",{className:"nice-audit-header",children:[e.jsx("h3",{className:"nice-audit-title",children:E}),e.jsxs("div",{className:"nice-audit-header-actions",children:[e.jsx("button",{type:"button",className:`nice-audit-view-btn ${U==="timeline"?"nice-audit-view-btn--active":""}`,onClick:()=>m("timeline"),title:"Timeline view",children:e.jsx(t.NtdList,{size:16})}),e.jsx("button",{type:"button",className:`nice-audit-view-btn ${U==="table"?"nice-audit-view-btn--active":""}`,onClick:()=>m("table"),title:"Table view",children:e.jsx(t.NtdGrid,{size:16})}),e.jsxs("button",{type:"button",className:`nice-audit-filter-btn ${F?"nice-audit-filter-btn--active":""}`,onClick:()=>L(!F),children:[e.jsx(t.NtdSearch,{size:16})," Filter"]}),l&&e.jsxs("div",{className:"nice-audit-export-dropdown",children:[e.jsxs("button",{type:"button",className:"nice-audit-export-btn",children:[e.jsx(t.NtdDownload,{size:16})," Export"]}),e.jsxs("div",{className:"nice-audit-export-menu",children:[e.jsx("button",{type:"button",onClick:()=>w("csv"),children:"Export as CSV"}),e.jsx("button",{type:"button",onClick:()=>w("json"),children:"Export as JSON"})]})]})]})]}),F&&e.jsx(Se,{filter:O,onChange:M}),e.jsxs("div",{className:"nice-audit-stats",children:[e.jsxs("span",{children:["Showing ",T.length," of ",P," entries"]}),O.startDate&&O.endDate&&e.jsxs("span",{className:"nice-audit-date-indicator",children:[O.startDate.toLocaleDateString()," - ",O.endDate.toLocaleDateString()]})]}),e.jsxs("div",{className:`nice-audit-content ${k?"nice-audit-content--loading":""}`,children:[k&&e.jsx("div",{className:"nice-audit-loader",children:e.jsx("div",{className:"nice-audit-spinner"})}),U==="timeline"?e.jsx("div",{className:"nice-audit-timeline",children:T.map(g=>e.jsx(ze,{entry:g,showDiff:r,renderActionIcon:u,renderUser:o,onClick:p?()=>p(g):void 0},g.id))}):e.jsx(Te,{entries:T,showDiff:r,onEntryClick:p}),T.length===0&&!k&&e.jsx("div",{className:"nice-audit-empty",children:"No audit entries found matching the current filters."})]}),Y>1&&e.jsxs("div",{className:"nice-audit-pagination",children:[e.jsx("button",{type:"button",disabled:V===1,onClick:()=>x(V-1),children:"Previous"}),e.jsxs("span",{children:["Page ",V," of ",Y]}),e.jsx("button",{type:"button",disabled:V===Y,onClick:()=>x(V+1),children:"Next"})]})]})});me.displayName="NiceAuditTrail";const _e=[{target:".nice-contract-editor",titleKey:"tutorial.contractEditor.intro.title",title:"Contract editor",contentKey:"tutorial.contractEditor.intro.content",content:"Assemble the contract from the clause library, fill template variables, track versions and approvals, then save or export to PDF/DOCX/HTML.",placement:"auto"}],ee={general:{label:"General",color:"var(--text-muted, #6b7280)",icon:e.jsx(t.NtdFileText,{size:16})},liability:{label:"Liability",color:"var(--color-error, #ef4444)",icon:e.jsx(t.NtdWarning,{size:16})},payment:{label:"Payment",color:"var(--color-success, #10b981)",icon:e.jsx(t.NtdDollar,{size:16})},termination:{label:"Termination",color:"var(--color-warning, #f59e0b)",icon:e.jsx(t.NtdOctagon,{size:16})},confidentiality:{label:"Confidentiality",color:"var(--color-accent, #8b5cf6)",icon:e.jsx(t.NtdLock,{size:16})},compliance:{label:"Compliance",color:"var(--color-primary, #3b82f6)",icon:e.jsx(t.NtdCheck,{size:16})},custom:{label:"Custom",color:"var(--text-muted, #64748b)",icon:e.jsx(t.NtdEdit,{size:16})}},Le={draft:{label:"Draft",color:"var(--text-muted, #6b7280)"},pending_review:{label:"Pending Review",color:"var(--color-warning, #f59e0b)"},approved:{label:"Approved",color:"var(--color-success, #10b981)"},rejected:{label:"Rejected",color:"var(--color-error, #ef4444)"},signed:{label:"Signed",color:"var(--color-accent, #8b5cf6)"}},Ae=({clauses:s,onInsert:a})=>{const[i,c]=n.useState(""),[l,r]=n.useState("all"),u=s.filter(o=>{const p=i===""||o.name.toLowerCase().includes(i.toLowerCase())||o.content.toLowerCase().includes(i.toLowerCase()),z=l==="all"||o.category===l;return p&&z});return e.jsxs("div",{className:"nice-contract-library",children:[e.jsxs("div",{className:"nice-contract-library-header",children:[e.jsx("h4",{children:"Clause Library"}),e.jsx("input",{type:"text",placeholder:"Search clauses...",value:i,onChange:o=>c(o.target.value),className:"nice-contract-library-search"})]}),e.jsxs("div",{className:"nice-contract-library-categories",children:[e.jsx("button",{type:"button",className:`nice-contract-category-btn ${l==="all"?"nice-contract-category-btn--active":""}`,onClick:()=>r("all"),children:"All"}),Object.keys(ee).map(o=>e.jsxs("button",{type:"button",className:`nice-contract-category-btn ${l===o?"nice-contract-category-btn--active":""}`,onClick:()=>r(o),style:{"--cat-color":ee[o].color},children:[ee[o].icon," ",ee[o].label]},o))]}),e.jsxs("div",{className:"nice-contract-library-list",children:[u.map(o=>e.jsxs("div",{className:"nice-contract-library-item",children:[e.jsxs("div",{className:"nice-contract-library-item-header",children:[e.jsx("span",{className:"nice-contract-library-item-name",children:o.name}),e.jsx("span",{className:"nice-contract-library-item-cat",style:{"--cat-color":ee[o.category].color},children:ee[o.category].icon})]}),o.description&&e.jsx("p",{className:"nice-contract-library-item-desc",children:o.description}),e.jsxs("button",{type:"button",className:"nice-contract-library-insert",onClick:()=>a(o),children:[e.jsx(t.NtdPlus,{size:14})," Insert"]})]},o.id)),u.length===0&&e.jsx("div",{className:"nice-contract-library-empty",children:"No matching clauses"})]})]})},Ie=({variables:s,definitions:a,onChange:i})=>e.jsxs("div",{className:"nice-contract-variables",children:[e.jsx("h4",{children:"Variables"}),e.jsx("div",{className:"nice-contract-variables-list",children:a.map(c=>e.jsxs("div",{className:"nice-contract-variable",children:[e.jsxs("label",{children:[c.name,c.required&&e.jsx("span",{className:"nice-contract-required",children:"*"})]}),c.type==="select"&&c.options?e.jsxs("select",{value:s[c.name]||c.defaultValue||"",onChange:l=>i(c.name,l.target.value),children:[e.jsx("option",{value:"",children:"Select..."}),c.options.map(l=>e.jsx("option",{value:l,children:l},l))]}):c.type==="date"?e.jsx("input",{type:"date",value:s[c.name]||c.defaultValue||"",onChange:l=>i(c.name,l.target.value)}):e.jsx("input",{type:c.type==="number"||c.type==="currency"?"number":"text",value:s[c.name]||c.defaultValue||"",placeholder:c.placeholder,onChange:l=>i(c.name,l.target.value)})]},c.name))})]}),Fe=({section:s,variables:a,readOnly:i,onToggle:c,onRemoveClause:l,onMoveClause:r})=>{const u=o=>o.replace(/\{\{(\w+)\}\}/g,(p,z)=>a[z]||`[${z}]`);return e.jsxs("div",{className:`nice-contract-section ${s.collapsed?"nice-contract-section--collapsed":""}`,children:[e.jsxs("div",{className:"nice-contract-section-header",onClick:c,children:[e.jsx("span",{className:"nice-contract-section-toggle",children:s.collapsed?e.jsx(t.NtdChevronRight,{size:14}):e.jsx(t.NtdChevronDown,{size:14})}),e.jsx("h3",{children:s.title}),e.jsxs("span",{className:"nice-contract-section-count",children:[s.clauses.length," clause(s)"]})]}),!s.collapsed&&e.jsxs("div",{className:"nice-contract-section-content",children:[s.clauses.map((o,p)=>e.jsxs("div",{className:"nice-contract-clause",children:[e.jsxs("div",{className:"nice-contract-clause-header",children:[e.jsx("span",{className:"nice-contract-clause-cat",style:{"--cat-color":ee[o.category].color},children:ee[o.category].icon}),e.jsx("span",{className:"nice-contract-clause-name",children:o.name}),o.isRequired&&e.jsx("span",{className:"nice-contract-clause-required",children:"Required"}),!i&&e.jsxs("div",{className:"nice-contract-clause-actions",children:[e.jsx("button",{type:"button",onClick:()=>r(o.id,"up"),disabled:p===0,children:e.jsx(t.NtdArrowUp,{size:14})}),e.jsx("button",{type:"button",onClick:()=>r(o.id,"down"),disabled:p===s.clauses.length-1,children:e.jsx(t.NtdArrowDown,{size:14})}),e.jsx("button",{type:"button",onClick:()=>l(o.id),children:e.jsx(t.NtdClose,{size:14})})]})]}),e.jsx("div",{className:"nice-contract-clause-content",dangerouslySetInnerHTML:{__html:u(o.content)}})]},o.id)),s.clauses.length===0&&e.jsx("div",{className:"nice-contract-section-empty",children:"No clauses in this section. Drag clauses here or use the library."})]})]})},Re=({workflow:s,onAction:a})=>{const[i,c]=n.useState(null),[l,r]=n.useState("");return e.jsxs("div",{className:"nice-contract-workflow",children:[e.jsx("h4",{children:"Approval Workflow"}),e.jsx("div",{className:"nice-contract-workflow-steps",children:s.steps.map((u,o)=>e.jsxs("div",{className:`nice-contract-workflow-step nice-contract-workflow-step--${u.status}`,children:[e.jsxs("div",{className:"nice-contract-workflow-step-header",children:[e.jsx("span",{className:"nice-contract-workflow-step-num",children:o+1}),e.jsx("span",{className:"nice-contract-workflow-step-name",children:u.name}),e.jsx("span",{className:`nice-contract-workflow-step-status nice-contract-workflow-step-status--${u.status}`,children:u.status})]}),e.jsx("div",{className:"nice-contract-workflow-approvers",children:u.approvers.map(p=>e.jsxs("div",{className:"nice-contract-approver",children:[p.avatar&&e.jsx("img",{src:p.avatar,alt:"",className:"nice-contract-approver-avatar"}),e.jsx("span",{children:p.name}),e.jsx("span",{className:"nice-contract-approver-role",children:p.role})]},p.id))}),u.status==="pending"&&s.currentStep===o&&e.jsx("div",{className:"nice-contract-workflow-actions",children:i===u.id?e.jsxs(e.Fragment,{children:[e.jsx("textarea",{placeholder:"Comments (optional)",value:l,onChange:p=>r(p.target.value)}),e.jsxs("div",{className:"nice-contract-workflow-btns",children:[e.jsxs("button",{type:"button",className:"nice-contract-btn nice-contract-btn--approve",onClick:()=>{a(u.id,"approve",l),c(null),r("")},children:[e.jsx(t.NtdCheck,{size:14})," Approve"]}),e.jsxs("button",{type:"button",className:"nice-contract-btn nice-contract-btn--reject",onClick:()=>{a(u.id,"reject",l),c(null),r("")},children:[e.jsx(t.NtdError,{size:14})," Reject"]}),e.jsx("button",{type:"button",onClick:()=>c(null),children:"Cancel"})]})]}):e.jsx("button",{type:"button",className:"nice-contract-btn",onClick:()=>c(u.id),children:"Review"})})]},u.id))})]})},xe=n.forwardRef(({document:s,clauseLibrary:a=[],readOnly:i=!1,showClauseLibrary:c=!0,showVersionHistory:l=!1,showComments:r=!1,showWorkflow:u=!0,currentUser:o,onChange:p,onAddClause:z,onRemoveClause:E,onVariableChange:C,onAddComment:f,onApprovalAction:H,onRestoreVersion:T,onSave:G,onExport:P,className:$="",style:O,tutorial:M},V)=>{var Z;const[x,k]=n.useState(s),[j,U]=n.useState(c?"library":null),[m,F]=n.useState(((Z=x.sections[0])==null?void 0:Z.id)||null),A=x.sections.flatMap(b=>b.clauses.flatMap(y=>y.variables||[])).filter((b,y,R)=>R.findIndex(B=>B.name===b.name)===y),w=n.useCallback(b=>{const y={...x,...b,updatedAt:new Date};k(y),p==null||p(y)},[x,p]),Y=n.useCallback((b,y)=>{const R=x.sections.map(B=>B.id===y?{...B,clauses:[...B.clauses,{...b,id:`${b.id}-${Date.now()}`}]}:B);w({sections:R}),z==null||z(b,y)},[x,w,z]),g=n.useCallback((b,y)=>{const R=x.sections.map(B=>B.id===y?{...B,clauses:B.clauses.filter(W=>W.id!==b)}:B);w({sections:R}),E==null||E(b,y)},[x,w,E]),S=n.useCallback((b,y,R)=>{const B=x.sections.map(W=>{if(W.id!==b)return W;const d=W.clauses.findIndex(X=>X.id===y);if(d===-1)return W;const h=R==="up"?d-1:d+1;if(h<0||h>=W.clauses.length)return W;const v=[...W.clauses];return[v[d],v[h]]=[v[h],v[d]],{...W,clauses:v}});w({sections:B})},[x,w]),D=n.useCallback(b=>{const y=x.sections.map(R=>R.id===b?{...R,collapsed:!R.collapsed}:R);w({sections:y})},[x,w]),J=n.useCallback((b,y)=>{w({variables:{...x.variables,[b]:y}}),C==null||C(b,y)},[x,w,C]),q=n.useCallback(()=>{const b=[];return A.forEach(y=>{y.required&&!x.variables[y.name]&&b.push(`Missing required variable: ${y.name}`)}),x.sections.forEach(y=>{y.clauses.forEach(R=>{R.isRequired&&!R.content&&b.push(`Required clause "${R.name}" is empty`)})}),{valid:b.length===0,errors:b}},[x,A]);n.useImperativeHandle(V,()=>({getDocument:()=>x,insertClause:Y,setVariable:J,exportDocument:b=>P==null?void 0:P(b),validate:q}));const N=Le[x.status],_=e.jsxs("div",{className:"nice-contract-header",children:[e.jsxs("div",{className:"nice-contract-header-info",children:[e.jsx("h2",{className:"nice-contract-title",children:x.title}),e.jsx("span",{className:"nice-contract-status",style:{"--status-color":N.color},children:N.label})]}),e.jsxs("div",{className:"nice-contract-header-actions",children:[G&&!i&&e.jsx("button",{type:"button",className:"nice-contract-btn nice-contract-btn--primary",onClick:()=>G(x),children:"Save"}),P&&e.jsxs("div",{className:"nice-contract-export-dropdown",children:[e.jsxs("button",{type:"button",className:"nice-contract-btn",children:["Export ",e.jsx(t.NtdChevronDown,{size:14})]}),e.jsxs("div",{className:"nice-contract-export-menu",children:[e.jsx("button",{type:"button",onClick:()=>P("pdf"),children:"PDF"}),e.jsx("button",{type:"button",onClick:()=>P("docx"),children:"Word (.docx)"}),e.jsx("button",{type:"button",onClick:()=>P("html"),children:"HTML"})]})]})]})]}),K=e.jsxs("div",{className:"nice-contract-toolbar",children:[c&&e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="library"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="library"?null:"library"),children:[e.jsx(t.NtdBook,{size:16})," Library"]}),e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="variables"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="variables"?null:"variables"),children:[e.jsx(t.NtdBrackets,{size:16})," Variables"]}),u&&x.workflow&&e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="workflow"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="workflow"?null:"workflow"),children:[e.jsx(t.NtdCheck,{size:16})," Workflow"]}),l&&e.jsxs("button",{type:"button",className:`nice-contract-toolbar-btn ${j==="history"?"nice-contract-toolbar-btn--active":""}`,onClick:()=>U(j==="history"?null:"history"),children:[e.jsx(t.NtdClock,{size:16})," History"]})]}),I=j?e.jsxs("div",{className:"nice-contract-panel",children:[j==="library"&&e.jsx(Ae,{clauses:a,onInsert:b=>m&&Y(b,m)}),j==="variables"&&e.jsx(Ie,{variables:x.variables,definitions:A,onChange:J}),j==="workflow"&&x.workflow&&e.jsx(Re,{workflow:x.workflow,onAction:(b,y,R)=>H==null?void 0:H(b,y,R)})]}):void 0;return e.jsx(ie.NiceAppShell,{flush:!0,className:`nice-contract-editor ${$}`,style:O,menubar:_,toolbar:K,sidebar:I,children:e.jsxs("div",{className:"nice-contract-document",children:[e.jsx("span",{style:{position:"absolute",top:6,right:6,zIndex:30},children:e.jsx(ie.NiceTutorialButton,{steps:ie.resolveTutorial(M,_e)})}),x.sections.map(b=>e.jsx(Fe,{section:b,variables:x.variables,readOnly:i,onToggle:()=>D(b.id),onRemoveClause:y=>g(y,b.id),onMoveClause:(y,R)=>S(b.id,y,R)},b.id))]})})});xe.displayName="NiceContractEditor";const Pe=[{id:"necessary",label:"Necessary",description:"Essential cookies for site functionality. Cannot be disabled.",required:!0,enabled:!0,cookies:["session_id","csrf_token","consent"]},{id:"analytics",label:"Analytics",description:"Help us understand how visitors interact with our website.",enabled:!1,cookies:["_ga","_gid","_gat"],partners:["Google Analytics","Hotjar"]},{id:"marketing",label:"Marketing",description:"Used to deliver personalized advertisements.",enabled:!1,cookies:["_fbp","_gcl_au","ads_id"],partners:["Facebook","Google Ads","LinkedIn"]},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences.",enabled:!1,cookies:["theme","language","timezone"]},{id:"social",label:"Social Media",description:"Enable social sharing and embedded content.",enabled:!1,cookies:["social_session"],partners:["Twitter","YouTube","Instagram"]}],Ee={title:"Cookie Preferences",description:"We use cookies to enhance your experience. Choose which types of cookies you allow.",acceptAll:"Accept All",rejectAll:"Reject All",customize:"Customize",savePreferences:"Save Preferences",necessary:"Necessary",analytics:"Analytics",marketing:"Marketing",preferences:"Preferences",social:"Social Media",dataRights:"Your Data Rights",exportData:"Export My Data",deleteData:"Delete My Data",pending:"Pending",processing:"Processing",completed:"Completed",close:"Close"},$e=({option:s,enabled:a,onChange:i})=>e.jsxs("div",{className:"nice-gdpr-option",children:[e.jsxs("div",{className:"nice-gdpr-option-header",children:[e.jsxs("label",{className:"nice-gdpr-option-toggle",children:[e.jsx("input",{type:"checkbox",checked:a,onChange:c=>i(c.target.checked),disabled:s.required}),e.jsx("span",{className:"nice-gdpr-toggle-slider"})]}),e.jsxs("div",{className:"nice-gdpr-option-info",children:[e.jsxs("span",{className:"nice-gdpr-option-label",children:[s.label,s.required&&e.jsx("span",{className:"nice-gdpr-required",children:"Required"})]}),e.jsx("span",{className:"nice-gdpr-option-desc",children:s.description})]})]}),s.partners&&s.partners.length>0&&e.jsxs("div",{className:"nice-gdpr-option-partners",children:[e.jsx("span",{children:"Partners: "}),s.partners.join(", ")]})]}),Oe=({requests:s,policies:a,onRequest:i,onDownload:c,labels:l})=>e.jsxs("div",{className:"nice-gdpr-rights",children:[e.jsx("h4",{children:l.dataRights}),e.jsxs("div",{className:"nice-gdpr-rights-actions",children:[e.jsxs("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--secondary",onClick:()=>i("export"),children:[e.jsx(t.NtdDownload,{size:16})," ",l.exportData]}),e.jsxs("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--danger",onClick:()=>i("delete"),children:[e.jsx(t.NtdTrash,{size:16})," ",l.deleteData]})]}),s.length>0&&e.jsxs("div",{className:"nice-gdpr-requests",children:[e.jsx("h5",{children:"Previous Requests"}),s.map(r=>e.jsxs("div",{className:`nice-gdpr-request nice-gdpr-request--${r.status}`,children:[e.jsx("span",{className:"nice-gdpr-request-type",children:r.type}),e.jsx("span",{className:"nice-gdpr-request-date",children:new Date(r.requestedAt).toLocaleDateString()}),e.jsx("span",{className:"nice-gdpr-request-status",children:r.status}),r.status==="completed"&&r.downloadUrl&&e.jsx("button",{type:"button",className:"nice-gdpr-download-btn",onClick:()=>c(r.id),children:"Download"})]},r.id))]}),a.length>0&&e.jsxs("div",{className:"nice-gdpr-policies",children:[e.jsx("h5",{children:"Data Retention"}),e.jsxs("table",{className:"nice-gdpr-policies-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Category"}),e.jsx("th",{children:"Retention"}),e.jsx("th",{children:"Legal Basis"})]})}),e.jsx("tbody",{children:a.map((r,u)=>e.jsxs("tr",{children:[e.jsx("td",{children:r.category}),e.jsxs("td",{children:[r.retentionDays," days"]}),e.jsx("td",{children:r.legalBasis})]},u))})]})]})]}),je=n.forwardRef(({appName:s,companyName:a,options:i=Pe,currentConsent:c=null,retentionPolicies:l=[],dataRequests:r=[],privacyPolicy:u=[],storageKey:o="nice_gdpr_consent",consentVersion:p="1.0",variant:z="banner",position:E="bottom",onConsentChange:C,onDataRequest:f,onDownloadExport:H,privacyPolicyUrl:T,cookiePolicyUrl:G,termsUrl:P,labels:$,className:O="",style:M},V)=>{const x={...Ee,...$},[k,j]=n.useState(!1),[U,m]=n.useState(!1),[F,L]=n.useState(!1),[A,w]=n.useState(()=>{const N={};return i.forEach(_=>{N[_.id]=(c==null?void 0:c.categories[_.id])??_.enabled}),N});n.useEffect(()=>{(!c||c.version!==p)&&j(!0)},[c,p]);const Y=n.useCallback((N,_)=>{const K=_||A;K.necessary=!0;const I={version:p,timestamp:new Date,categories:K,action:N};try{localStorage.setItem(o,JSON.stringify(I))}catch{}w(K),j(!1),m(!1),C==null||C(I)},[A,p,o,C]),g=n.useCallback(()=>{const N={};i.forEach(_=>{N[_.id]=!0}),Y("accept_all",N)},[i,Y]),S=n.useCallback(()=>{const N={};i.forEach(_=>{N[_.id]=_.required||!1}),Y("reject_all",N)},[i,Y]),D=n.useCallback(async N=>{f&&await f(N)},[f]);if(n.useImperativeHandle(V,()=>({showBanner:()=>j(!0),hideBanner:()=>j(!1),getConsent:()=>{try{const N=localStorage.getItem(o);return N?JSON.parse(N):null}catch{return null}},revokeConsent:()=>{try{localStorage.removeItem(o)}catch{}j(!0)},openPreferences:()=>{j(!0),m(!0)}})),!k&&z!=="embedded")return null;const J=e.jsxs("div",{className:"nice-gdpr-content",children:[e.jsxs("div",{className:"nice-gdpr-header",children:[e.jsx("div",{className:"nice-gdpr-icon",children:e.jsx(t.NtdCookieConsent,{size:32})}),e.jsxs("div",{className:"nice-gdpr-header-text",children:[e.jsx("h3",{children:x.title}),e.jsx("p",{children:x.description.replace("{app}",s).replace("{company}",a)})]})]}),!U&&!F&&e.jsxs("div",{className:"nice-gdpr-quick-actions",children:[e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--primary",onClick:g,children:x.acceptAll}),e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--secondary",onClick:S,children:x.rejectAll}),e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--link",onClick:()=>m(!0),children:x.customize})]}),U&&!F&&e.jsxs("div",{className:"nice-gdpr-preferences",children:[e.jsx("div",{className:"nice-gdpr-options",children:i.map(N=>e.jsx($e,{option:N,enabled:A[N.id],onChange:_=>w(K=>({...K,[N.id]:_}))},N.id))}),e.jsxs("div",{className:"nice-gdpr-pref-actions",children:[e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--primary",onClick:()=>Y("custom"),children:x.savePreferences}),e.jsx("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--link",onClick:()=>L(!0),children:x.dataRights})]})]}),F&&e.jsxs(e.Fragment,{children:[e.jsx(Oe,{requests:r,policies:l,onRequest:D,onDownload:N=>H==null?void 0:H(N),labels:x}),e.jsxs("button",{type:"button",className:"nice-gdpr-btn nice-gdpr-btn--link",onClick:()=>L(!1),children:[e.jsx(t.NtdArrowLeft,{size:14})," Back to preferences"]})]}),e.jsxs("div",{className:"nice-gdpr-footer",children:[T&&e.jsx("a",{href:T,target:"_blank",rel:"noopener noreferrer",children:"Privacy Policy"}),G&&e.jsx("a",{href:G,target:"_blank",rel:"noopener noreferrer",children:"Cookie Policy"}),P&&e.jsx("a",{href:P,target:"_blank",rel:"noopener noreferrer",children:"Terms of Service"})]})]}),q=`nice-gdpr-consent nice-gdpr-consent--${z} nice-gdpr-consent--${E} ${O}`;return z==="modal"?e.jsx("div",{className:"nice-gdpr-overlay",children:e.jsx("div",{className:q,style:M,role:"dialog","aria-modal":"true",children:J})}):e.jsx("div",{className:q,style:M,children:J})});je.displayName="NiceGDPRConsent";const ge={document:e.jsx(t.NtdFileText,{size:16}),user:e.jsx(t.NtdUser,{size:16}),task:e.jsx(t.NtdCheck,{size:16}),project:e.jsx(t.NtdFolder,{size:16}),setting:e.jsx(t.NtdSettings,{size:16}),help:e.jsx(t.NtdHelp,{size:16}),action:e.jsx(t.NtdZap,{size:16}),custom:e.jsx(t.NtdCircle,{size:16})},Me=({value:s,onChange:a,onKeyDown:i,placeholder:c,isLoading:l,inputRef:r})=>e.jsxs("div",{className:"nice-search-input-container",children:[e.jsx("span",{className:"nice-search-icon",children:e.jsx(t.NtdSearch,{size:16})}),e.jsx("input",{ref:r,type:"text",className:"nice-search-input",placeholder:c,value:s,onChange:u=>a(u.target.value),onKeyDown:i,"aria-label":"Search"}),l&&e.jsx("span",{className:"nice-search-loader"}),s&&!l&&e.jsx("button",{type:"button",className:"nice-search-clear",onClick:()=>a(""),"aria-label":"Clear search",children:e.jsx(t.NtdClose,{size:16})})]}),Ue=({result:s,isSelected:a,onSelect:i,renderResult:c})=>c?e.jsx("div",{onClick:i,children:c(s,a)}):e.jsxs("div",{className:`nice-search-result ${a?"nice-search-result--selected":""}`,onClick:i,role:"option","aria-selected":a,children:[e.jsx("div",{className:"nice-search-result-icon",children:s.icon||(s.image?e.jsx("img",{src:s.image,alt:""}):ge[s.type])}),e.jsxs("div",{className:"nice-search-result-content",children:[e.jsx("span",{className:"nice-search-result-title",children:s.title}),s.subtitle&&e.jsx("span",{className:"nice-search-result-subtitle",children:s.subtitle}),s.description&&e.jsx("span",{className:"nice-search-result-desc",children:s.description})]}),e.jsxs("div",{className:"nice-search-result-meta",children:[e.jsx("span",{className:"nice-search-result-source",children:s.source}),e.jsx("span",{className:"nice-search-result-type",children:s.type})]}),s.actions&&s.actions.length>0&&e.jsx("div",{className:"nice-search-result-actions",children:s.actions.map(l=>e.jsx("button",{type:"button",className:"nice-search-action-btn",onClick:r=>{r.stopPropagation(),l.onClick()},title:l.label,children:l.icon||l.label},l.id))})]}),Ye=({categories:s,selected:a,onSelect:i})=>e.jsxs("div",{className:"nice-search-categories",children:[e.jsx("button",{type:"button",className:`nice-search-category ${a===null?"nice-search-category--active":""}`,onClick:()=>i(null),children:"All"}),s.map(c=>e.jsxs("button",{type:"button",className:`nice-search-category ${a===c.id?"nice-search-category--active":""}`,onClick:()=>i(c.id),children:[c.icon&&e.jsx("span",{className:"nice-search-category-icon",children:c.icon}),c.label,c.count!==void 0&&e.jsx("span",{className:"nice-search-category-count",children:c.count})]},c.id))]}),qe=({searches:s,onSelect:a,onClear:i,label:c,clearLabel:l})=>e.jsxs("div",{className:"nice-search-recent",children:[e.jsxs("div",{className:"nice-search-recent-header",children:[e.jsx("span",{children:c}),e.jsx("button",{type:"button",onClick:i,children:l})]}),e.jsx("div",{className:"nice-search-recent-list",children:s.map((r,u)=>e.jsxs("button",{type:"button",className:"nice-search-recent-item",onClick:()=>a(r.query),children:[e.jsx("span",{className:"nice-search-recent-icon",children:e.jsx(t.NtdClock,{size:14})}),e.jsx("span",{className:"nice-search-recent-query",children:r.query})]},u))})]}),Ve={placeholder:"Search...",recent:"Recent Searches",noResults:"No results found for",searching:"Searching...",clearRecent:"Clear",categories:"Categories",filters:"Filters"},Ne=n.forwardRef(({sources:s,placeholder:a,minQueryLength:i=2,debounceMs:c=300,showCategories:l=!0,filters:r=[],showRecent:u=!0,maxRecent:o=5,showShortcuts:p=!0,hotkey:z="k",onResultSelect:E,onSearch:C,onClose:f,renderResult:H,renderEmpty:T,defaultOpen:G=!1,open:P,variant:$="modal",labels:O,className:M="",style:V},x)=>{const k={...Ve,...O},j=n.useRef(null),U=n.useRef(void 0),[m,F]=n.useState(G),[L,A]=n.useState(""),[w,Y]=n.useState([]),[g,S]=n.useState(!1),[D,J]=n.useState(0),[q,N]=n.useState(null),[_,K]=n.useState([]),I=P!==void 0?P:m;n.useEffect(()=>{try{const h=localStorage.getItem("nice_recent_searches");h&&K(JSON.parse(h))}catch{}},[]);const Z=n.useCallback((h,v)=>{const Q=[{query:h,timestamp:new Date,resultCount:v},..._.filter(te=>te.query!==h)].slice(0,o);K(Q);try{localStorage.setItem("nice_recent_searches",JSON.stringify(Q))}catch{}},[_,o]),b=n.useCallback(async h=>{if(h.length<i){Y([]);return}S(!0);try{const v=s.map(async Q=>{try{return(await Q.search(h)).map(re=>({...re,source:Q.name,relevanceScore:re.relevanceScore*(Q.priority||1)}))}catch{return[]}}),X=(await Promise.all(v)).flat();X.sort((Q,te)=>te.relevanceScore-Q.relevanceScore),Y(X),J(0),C==null||C(h,X),X.length>0&&Z(h,X.length)}finally{S(!1)}},[s,i,C,Z]),y=n.useCallback(h=>{A(h),U.current&&clearTimeout(U.current),U.current=setTimeout(()=>{b(h)},c)},[b,c]),R=n.useCallback(h=>{switch(h.key){case"ArrowDown":h.preventDefault(),J(v=>Math.min(v+1,w.length-1));break;case"ArrowUp":h.preventDefault(),J(v=>Math.max(v-1,0));break;case"Enter":h.preventDefault(),w[D]&&(E==null||E(w[D]),F(!1),f==null||f());break;case"Escape":h.preventDefault(),F(!1),f==null||f();break}},[w,D,E,f]);n.useEffect(()=>{const h=v=>{(v.metaKey||v.ctrlKey)&&v.key===z&&(v.preventDefault(),F(!0),setTimeout(()=>{var X;return(X=j.current)==null?void 0:X.focus()},0))};return document.addEventListener("keydown",h),()=>document.removeEventListener("keydown",h)},[z]),n.useEffect(()=>{I&&setTimeout(()=>{var h;return(h=j.current)==null?void 0:h.focus()},0)},[I]);const B=q?w.filter(h=>h.type===q):w,W=Array.from(new Set(w.map(h=>h.type))).map(h=>({id:h,label:h.charAt(0).toUpperCase()+h.slice(1),icon:ge[h],count:w.filter(v=>v.type===h).length}));if(n.useImperativeHandle(x,()=>({open:()=>F(!0),close:()=>{F(!1),f==null||f()},focus:()=>{var h;return(h=j.current)==null?void 0:h.focus()},clear:()=>{A(""),Y([])},search:async h=>{A(h),await b(h)}})),!I&&$!=="inline")return null;const d=e.jsxs("div",{className:"nice-search-content",children:[e.jsx(Me,{value:L,onChange:y,onKeyDown:R,placeholder:a||k.placeholder,isLoading:g,inputRef:j}),l&&W.length>1&&L.length>=i&&e.jsx(Ye,{categories:W,selected:q,onSelect:N}),e.jsxs("div",{className:"nice-search-results",role:"listbox",children:[g&&L.length>=i&&e.jsx("div",{className:"nice-search-loading",children:k.searching}),!g&&L.length>=i&&B.length===0&&e.jsx("div",{className:"nice-search-empty",children:T?T(L):e.jsxs(e.Fragment,{children:[e.jsx("span",{className:"nice-search-empty-icon",children:e.jsx(t.NtdSearch,{size:32})}),e.jsxs("span",{children:[k.noResults,' "',L,'"']})]})}),B.map((h,v)=>e.jsx(Ue,{result:h,isSelected:v===D,onSelect:()=>{E==null||E(h),F(!1),f==null||f()},renderResult:H},h.id))]}),u&&L.length<i&&_.length>0&&e.jsx(qe,{searches:_,onSelect:h=>{A(h),b(h)},onClear:()=>{K([]),localStorage.removeItem("nice_recent_searches")},label:k.recent,clearLabel:k.clearRecent}),p&&e.jsxs("div",{className:"nice-search-shortcuts",children:[e.jsxs("span",{children:[e.jsx("kbd",{children:"↑"}),e.jsx("kbd",{children:"↓"})," Navigate"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"↵"})," Select"]}),e.jsxs("span",{children:[e.jsx("kbd",{children:"Esc"})," Close"]})]})]});return $==="modal"?e.jsx("div",{className:"nice-search-overlay",onClick:()=>{F(!1),f==null||f()},children:e.jsx("div",{className:`nice-global-search nice-global-search--modal ${M}`,style:V,onClick:h=>h.stopPropagation(),role:"dialog","aria-modal":"true",children:d})}):e.jsx("div",{className:`nice-global-search nice-global-search--${$} ${M}`,style:V,children:d})});Ne.displayName="NiceGlobalSearch";const ce={title:"Access Log",filters:"Filters",search:"Search users, IPs...",export:"Export",refresh:"Refresh",details:"Details",stats:"Statistics",map:"Geographic Distribution",timeline:"Timeline",showMore:"Show More",noResults:"No access logs found",eventTypes:{login_success:"Login Success",login_failed:"Login Failed",logout:"Logout",password_change:"Password Change",password_reset:"Password Reset",mfa_enabled:"MFA Enabled",mfa_disabled:"MFA Disabled",mfa_challenged:"MFA Challenge",permission_change:"Permission Change",session_expired:"Session Expired",account_locked:"Account Locked",account_unlocked:"Account Unlocked",api_key_created:"API Key Created",api_key_revoked:"API Key Revoked",token_refresh:"Token Refresh",suspicious_activity:"Suspicious Activity"},riskLevels:{low:"Low",medium:"Medium",high:"High",critical:"Critical"},deviceTypes:{desktop:"Desktop",mobile:"Mobile",tablet:"Tablet",unknown:"Unknown"},columns:{timestamp:"Time",user:"User",event:"Event",ip:"IP Address",location:"Location",device:"Device",risk:"Risk",status:"Status"}},ne={login_success:e.jsx(t.NtdCheck,{size:16}),login_failed:e.jsx(t.NtdError,{size:16}),logout:e.jsx(t.NtdLogOut,{size:16}),password_change:e.jsx(t.NtdKey,{size:16}),password_reset:e.jsx(t.NtdRefresh,{size:16}),mfa_enabled:e.jsx(t.NtdShield,{size:16}),mfa_disabled:e.jsx(t.NtdWarning,{size:16}),mfa_challenged:e.jsx(t.NtdSmartphone,{size:16}),permission_change:e.jsx(t.NtdUser,{size:16}),session_expired:e.jsx(t.NtdClock,{size:16}),account_locked:e.jsx(t.NtdLock,{size:16}),account_unlocked:e.jsx(t.NtdUnlock,{size:16}),api_key_created:e.jsx(t.NtdKey,{size:16}),api_key_revoked:e.jsx(t.NtdError,{size:16}),token_refresh:e.jsx(t.NtdRefresh,{size:16}),suspicious_activity:e.jsx(t.NtdZap,{size:16})},ae={low:"var(--color-success, #22c55e)",medium:"var(--color-warning, #f59e0b)",high:"var(--color-error, #ef4444)",critical:"var(--color-accent-hover, #7c3aed)"},oe={desktop:e.jsx(t.NtdMonitor,{size:16}),mobile:e.jsx(t.NtdSmartphone,{size:16}),tablet:e.jsx(t.NtdSmartphone,{size:16}),unknown:e.jsx(t.NtdHelp,{size:16})},de=s=>(typeof s=="string"?new Date(s):s).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"}),he=s=>{if(!s)return"Unknown";const a=[];return s.city&&a.push(s.city),s.country&&a.push(s.country),a.length>0?a.join(", "):"Unknown"},Be=s=>{if(!s)return"Unknown";const a=[];return s.browser&&a.push(s.browser),s.os&&a.push(s.os),a.length>0?a.join(" / "):s.type},ue=s=>s>=80?ae.critical:s>=60?ae.high:s>=40?ae.medium:ae.low,He=(s,a)=>{var i,c,l,r,u;if(a.startDate){const o=typeof a.startDate=="string"?new Date(a.startDate):a.startDate;if((typeof s.timestamp=="string"?new Date(s.timestamp):s.timestamp)<o)return!1}if(a.endDate){const o=typeof a.endDate=="string"?new Date(a.endDate):a.endDate;if((typeof s.timestamp=="string"?new Date(s.timestamp):s.timestamp)>o)return!1}if((i=a.eventTypes)!=null&&i.length&&!a.eventTypes.includes(s.eventType)||(c=a.riskLevels)!=null&&c.length&&!a.riskLevels.includes(s.riskLevel)||a.userId&&s.userId!==a.userId||a.ipAddress&&!s.ipAddress.includes(a.ipAddress)||a.country&&((l=s.location)==null?void 0:l.country)!==a.country||a.successOnly&&!s.success||a.failedOnly&&s.success)return!1;if(a.searchQuery){const o=a.searchQuery.toLowerCase();if(![s.userName,s.userEmail,s.userId,s.ipAddress,(r=s.location)==null?void 0:r.city,(u=s.location)==null?void 0:u.country].filter(Boolean).join(" ").toLowerCase().includes(o))return!1}return!0},be=n.forwardRef(function(a,i){var B,W;const{entries:c,filter:l={},stats:r,realtime:u=!1,pollingInterval:o=3e4,showMap:p=!1,showStats:z=!0,showDetails:E=!0,pageSize:C=50,labels:f,loading:H=!1,onFilterChange:T,onExport:G,onEntrySelect:P,onBlockIP:$,onRefresh:O,className:M="",...V}=a,x=n.useRef(null);n.useId();const k=n.useMemo(()=>({...ce,...f,eventTypes:{...ce.eventTypes,...f==null?void 0:f.eventTypes},riskLevels:{...ce.riskLevels,...f==null?void 0:f.riskLevels},deviceTypes:{...ce.deviceTypes,...f==null?void 0:f.deviceTypes},columns:{...ce.columns,...f==null?void 0:f.columns}}),[f]),[j,U]=n.useState(l),[m,F]=n.useState(null),[L,A]=n.useState(C),[w,Y]=n.useState(!1),[g,S]=n.useState("table"),D=n.useMemo(()=>c.filter(d=>He(d,j)),[c,j]),J=n.useMemo(()=>D.slice(0,L),[D,L]),q=n.useMemo(()=>{if(r)return r;const d=new Set(c.map(v=>v.ipAddress)),h=new Set(c.map(v=>{var X;return(X=v.location)==null?void 0:X.country}).filter(Boolean));return{totalEvents:c.length,successfulLogins:c.filter(v=>v.eventType==="login_success").length,failedLogins:c.filter(v=>v.eventType==="login_failed").length,uniqueIPs:d.size,uniqueCountries:h.size,highRiskEvents:c.filter(v=>v.riskLevel==="high"||v.riskLevel==="critical").length,suspiciousActivities:c.filter(v=>v.eventType==="suspicious_activity").length}},[c,r]),N=n.useCallback(d=>{const h={...j,...d};U(h),A(C),T==null||T(h)},[j,T,C]),_=n.useCallback(()=>{U({}),A(C),T==null||T({})},[T,C]),K=n.useCallback(d=>{F(d),P==null||P(d)},[P]),I=n.useCallback(d=>{G==null||G(d)},[G]),Z=n.useCallback(()=>{O==null||O()},[O]),b=n.useCallback(()=>{A(d=>d+C)},[C]);n.useImperativeHandle(i,()=>({getFilter:()=>j,applyFilter:N,clearFilters:_,export:I,refresh:Z,getSelectedEntry:()=>m,getElement:()=>x.current}),[j,N,_,I,Z,m]);const y=d=>{var h,v;return e.jsxs("tr",{className:`nice-accesslog-row ${(m==null?void 0:m.id)===d.id?"nice-accesslog-row--selected":""} ${d.success?"":"nice-accesslog-row--failed"}`,onClick:()=>K(d),children:[e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--timestamp",children:de(d.timestamp)}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--user",children:e.jsxs("div",{className:"nice-accesslog-user",children:[e.jsx("span",{className:"nice-accesslog-username",children:d.userName||d.userId}),d.userEmail&&e.jsx("span",{className:"nice-accesslog-email",children:d.userEmail})]})}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--event",children:e.jsxs("span",{className:`nice-accesslog-event nice-accesslog-event--${d.eventType}`,children:[e.jsx("span",{className:"nice-accesslog-event-icon",children:ne[d.eventType]}),k.eventTypes[d.eventType]]})}),e.jsxs("td",{className:"nice-accesslog-cell nice-accesslog-cell--ip",children:[e.jsx("span",{className:"nice-accesslog-ip",children:d.ipAddress}),$&&e.jsx("button",{type:"button",className:"nice-accesslog-block-btn",onClick:X=>{X.stopPropagation(),$(d.ipAddress)},title:"Block IP",children:e.jsx(t.NtdSlash,{size:14})})]}),e.jsxs("td",{className:"nice-accesslog-cell nice-accesslog-cell--location",children:[((h=d.location)==null?void 0:h.countryCode)&&e.jsx("span",{className:"nice-accesslog-flag",children:e.jsx(t.NtdFlag,{size:14})}),he(d.location)]}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--device",children:e.jsxs("span",{className:"nice-accesslog-device",children:[oe[((v=d.device)==null?void 0:v.type)||"unknown"],Be(d.device)]})}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--risk",children:e.jsxs("span",{className:`nice-accesslog-risk nice-accesslog-risk--${d.riskLevel}`,style:{"--risk-color":ue(d.riskScore)},children:[e.jsx("span",{className:"nice-accesslog-risk-score",children:d.riskScore}),e.jsx("span",{className:"nice-accesslog-risk-label",children:k.riskLevels[d.riskLevel]})]})}),e.jsx("td",{className:"nice-accesslog-cell nice-accesslog-cell--status",children:e.jsx("span",{className:`nice-accesslog-status ${d.success?"nice-accesslog-status--success":"nice-accesslog-status--failed"}`,children:d.success?e.jsx(t.NtdCheck,{size:14}):e.jsx(t.NtdError,{size:14})})})]},d.id)},R=d=>e.jsxs("div",{className:`nice-accesslog-timeline-item nice-accesslog-timeline-item--${d.riskLevel}`,onClick:()=>K(d),children:[e.jsx("div",{className:"nice-accesslog-timeline-marker",style:{background:ae[d.riskLevel]}}),e.jsxs("div",{className:"nice-accesslog-timeline-content",children:[e.jsxs("div",{className:"nice-accesslog-timeline-header",children:[e.jsxs("span",{className:"nice-accesslog-timeline-event",children:[ne[d.eventType]," ",k.eventTypes[d.eventType]]}),e.jsx("span",{className:"nice-accesslog-timeline-time",children:de(d.timestamp)})]}),e.jsxs("div",{className:"nice-accesslog-timeline-details",children:[e.jsx("span",{children:d.userName||d.userId}),e.jsx("span",{children:"•"}),e.jsx("span",{children:d.ipAddress}),e.jsx("span",{children:"•"}),e.jsx("span",{children:he(d.location)})]}),d.flags&&d.flags.length>0&&e.jsx("div",{className:"nice-accesslog-timeline-flags",children:d.flags.map((h,v)=>e.jsx("span",{className:"nice-accesslog-flag-badge",children:h},v))})]})]},d.id);return e.jsxs("div",{ref:x,className:`nice-accesslog ${M}`,...V,children:[e.jsxs("div",{className:"nice-accesslog-header",children:[e.jsxs("div",{className:"nice-accesslog-header-left",children:[e.jsx("h2",{className:"nice-accesslog-title",children:k.title}),u&&e.jsxs("span",{className:"nice-accesslog-realtime-badge",children:[e.jsx(t.NtdCircle,{size:10})," Live"]})]}),e.jsxs("div",{className:"nice-accesslog-header-actions",children:[e.jsxs("button",{type:"button",className:"nice-accesslog-btn",onClick:Z,disabled:H,children:[e.jsx(t.NtdRefresh,{size:16})," ",k.refresh]}),e.jsxs("div",{className:"nice-accesslog-export-dropdown",children:[e.jsxs("button",{type:"button",className:"nice-accesslog-btn",children:[e.jsx(t.NtdDownload,{size:16})," ",k.export]}),e.jsxs("div",{className:"nice-accesslog-export-menu",children:[e.jsx("button",{onClick:()=>I("csv"),children:"CSV"}),e.jsx("button",{onClick:()=>I("json"),children:"JSON"}),e.jsx("button",{onClick:()=>I("pdf"),children:"PDF"})]})]})]})]}),z&&e.jsxs("div",{className:"nice-accesslog-stats",children:[e.jsxs("div",{className:"nice-accesslog-stat",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.totalEvents}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Total Events"})]}),e.jsxs("div",{className:"nice-accesslog-stat nice-accesslog-stat--success",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.successfulLogins}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Successful"})]}),e.jsxs("div",{className:"nice-accesslog-stat nice-accesslog-stat--failed",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.failedLogins}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Failed"})]}),e.jsxs("div",{className:"nice-accesslog-stat",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.uniqueIPs}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Unique IPs"})]}),e.jsxs("div",{className:"nice-accesslog-stat",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.uniqueCountries}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"Countries"})]}),e.jsxs("div",{className:"nice-accesslog-stat nice-accesslog-stat--warning",children:[e.jsx("span",{className:"nice-accesslog-stat-value",children:q.highRiskEvents}),e.jsx("span",{className:"nice-accesslog-stat-label",children:"High Risk"})]})]}),e.jsxs("div",{className:"nice-accesslog-filters",children:[e.jsxs("div",{className:"nice-accesslog-filters-row",children:[e.jsxs("div",{className:"nice-accesslog-search",children:[e.jsx("span",{className:"nice-accesslog-search-icon",children:e.jsx(t.NtdSearch,{size:16})}),e.jsx("input",{type:"text",placeholder:k.search,value:j.searchQuery||"",onChange:d=>N({searchQuery:d.target.value})})]}),e.jsxs("div",{className:"nice-accesslog-filter-quick",children:[e.jsx("button",{type:"button",className:`nice-accesslog-filter-chip ${j.failedOnly?"nice-accesslog-filter-chip--active":""}`,onClick:()=>N({failedOnly:!j.failedOnly,successOnly:!1}),children:"Failed Only"}),e.jsx("button",{type:"button",className:`nice-accesslog-filter-chip ${(B=j.riskLevels)!=null&&B.includes("high")||(W=j.riskLevels)!=null&&W.includes("critical")?"nice-accesslog-filter-chip--active":""}`,onClick:()=>{var d;return N({riskLevels:(d=j.riskLevels)!=null&&d.includes("high")?[]:["high","critical"]})},children:"High Risk"}),e.jsx("button",{type:"button",className:"nice-accesslog-filter-toggle",onClick:()=>Y(!w),children:w?e.jsxs(e.Fragment,{children:[e.jsx(t.NtdMinus,{size:14})," Less"]}):e.jsxs(e.Fragment,{children:[e.jsx(t.NtdPlus,{size:14})," More"]})})]})]}),w&&e.jsxs("div",{className:"nice-accesslog-filters-expanded",children:[e.jsxs("div",{className:"nice-accesslog-filter-group",children:[e.jsx("label",{children:"Event Type"}),e.jsx("select",{multiple:!0,value:j.eventTypes||[],onChange:d=>{const h=Array.from(d.target.selectedOptions,v=>v.value);N({eventTypes:h.length?h:void 0})},children:Object.entries(k.eventTypes).map(([d,h])=>e.jsx("option",{value:d,children:h},d))})]}),e.jsxs("div",{className:"nice-accesslog-filter-group",children:[e.jsx("label",{children:"Date Range"}),e.jsxs("div",{className:"nice-accesslog-date-range",children:[e.jsx("input",{type:"date",value:j.startDate?new Date(j.startDate).toISOString().split("T")[0]:"",onChange:d=>N({startDate:d.target.value||void 0})}),e.jsx("span",{children:"to"}),e.jsx("input",{type:"date",value:j.endDate?new Date(j.endDate).toISOString().split("T")[0]:"",onChange:d=>N({endDate:d.target.value||void 0})})]})]}),e.jsxs("div",{className:"nice-accesslog-filter-group",children:[e.jsx("label",{children:"IP Address"}),e.jsx("input",{type:"text",placeholder:"e.g., 192.168",value:j.ipAddress||"",onChange:d=>N({ipAddress:d.target.value||void 0})})]}),e.jsx("button",{type:"button",className:"nice-accesslog-clear-filters",onClick:_,children:"Clear All Filters"})]})]}),e.jsxs("div",{className:"nice-accesslog-tabs",children:[e.jsxs("button",{type:"button",className:`nice-accesslog-tab ${g==="table"?"nice-accesslog-tab--active":""}`,onClick:()=>S("table"),children:[e.jsx(t.NtdTable,{size:16})," Table"]}),e.jsxs("button",{type:"button",className:`nice-accesslog-tab ${g==="timeline"?"nice-accesslog-tab--active":""}`,onClick:()=>S("timeline"),children:[e.jsx(t.NtdCalendar,{size:16})," ",k.timeline]}),p&&e.jsxs("button",{type:"button",className:`nice-accesslog-tab ${g==="map"?"nice-accesslog-tab--active":""}`,onClick:()=>S("map"),children:[e.jsx(t.NtdMap,{size:16})," ",k.map]}),e.jsxs("span",{className:"nice-accesslog-count",children:[D.length," entries"]})]}),e.jsx("div",{className:"nice-accesslog-content",children:H?e.jsxs("div",{className:"nice-accesslog-loading",children:[e.jsx("div",{className:"nice-accesslog-spinner"}),"Loading access logs..."]}):D.length===0?e.jsxs("div",{className:"nice-accesslog-empty",children:[e.jsx("span",{className:"nice-accesslog-empty-icon",children:e.jsx(t.NtdShield,{size:32})}),e.jsx("span",{children:k.noResults})]}):e.jsxs(e.Fragment,{children:[g==="table"&&e.jsx("div",{className:"nice-accesslog-table-wrapper",children:e.jsxs("table",{className:"nice-accesslog-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:k.columns.timestamp}),e.jsx("th",{children:k.columns.user}),e.jsx("th",{children:k.columns.event}),e.jsx("th",{children:k.columns.ip}),e.jsx("th",{children:k.columns.location}),e.jsx("th",{children:k.columns.device}),e.jsx("th",{children:k.columns.risk}),e.jsx("th",{children:k.columns.status})]})}),e.jsx("tbody",{children:J.map(y)})]})}),g==="timeline"&&e.jsx("div",{className:"nice-accesslog-timeline",children:J.map(R)}),g==="map"&&e.jsx("div",{className:"nice-accesslog-map",children:e.jsxs("div",{className:"nice-accesslog-map-placeholder",children:[e.jsx(t.NtdMap,{size:16})," Geographic visualization would render here"]})}),L<D.length&&e.jsxs("button",{type:"button",className:"nice-accesslog-show-more",onClick:b,children:[k.showMore," (",D.length-L," remaining)"]})]})}),E&&m&&e.jsxs("div",{className:"nice-accesslog-detail",children:[e.jsxs("div",{className:"nice-accesslog-detail-header",children:[e.jsx("h3",{children:k.details}),e.jsx("button",{type:"button",className:"nice-accesslog-detail-close",onClick:()=>F(null),children:e.jsx(t.NtdClose,{size:16})})]}),e.jsxs("div",{className:"nice-accesslog-detail-content",children:[e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Event ID"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:m.id})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Timestamp"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:new Date(m.timestamp).toISOString()})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"User"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[m.userName," (",m.userId,")",m.userEmail&&e.jsx("div",{children:m.userEmail})]})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Event Type"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[ne[m.eventType]," ",k.eventTypes[m.eventType]]})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"IP Address"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:m.ipAddress})]}),m.location&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Location"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[m.location.city,", ",m.location.region,","," ",m.location.country,m.location.latitude&&m.location.longitude&&e.jsxs("div",{className:"nice-accesslog-coords",children:["(",m.location.latitude,", ",m.location.longitude,")"]})]})]}),m.device&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Device"}),e.jsxs("span",{className:"nice-accesslog-detail-value",children:[oe[m.device.type]," ",m.device.os," ",m.device.osVersion,e.jsxs("div",{children:[m.device.browser," ",m.device.browserVersion]}),m.device.fingerprint&&e.jsxs("div",{className:"nice-accesslog-fingerprint",children:["Fingerprint: ",m.device.fingerprint]})]})]}),e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Risk Score"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:e.jsxs("span",{style:{color:ue(m.riskScore)},children:[m.riskScore,"/100 (",k.riskLevels[m.riskLevel],")"]})})]}),m.flags&&m.flags.length>0&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Flags"}),e.jsx("span",{className:"nice-accesslog-detail-value",children:m.flags.map((d,h)=>e.jsx("span",{className:"nice-accesslog-flag-badge",children:d},h))})]}),m.details&&Object.keys(m.details).length>0&&e.jsxs("div",{className:"nice-accesslog-detail-row",children:[e.jsx("span",{className:"nice-accesslog-detail-label",children:"Additional Details"}),e.jsx("pre",{className:"nice-accesslog-detail-json",children:JSON.stringify(m.details,null,2)})]})]})]})]})});be.displayName="NiceAccessLog";exports.NiceAccessLog=be;exports.NiceAuditTrail=me;exports.NiceContractEditor=xe;exports.NiceDataExportCenter=pe;exports.NiceGDPRConsent=je;exports.NiceGlobalSearch=Ne;
package/dist/index.mjs CHANGED
@@ -1864,7 +1864,7 @@ const Ve = {
1864
1864
  className: U = "",
1865
1865
  style: B
1866
1866
  }, m) => {
1867
- const k = { ...Kc, ...j }, g = ye(null), Y = ye(), [p, P] = w(K), [A, I] = w(""), [C, q] = w([]), [v, x] = w(!1), [z, G] = w(0), [V, b] = w(null), [L, W] = w([]), F = O !== void 0 ? O : p;
1867
+ const k = { ...Kc, ...j }, g = ye(null), Y = ye(void 0), [p, P] = w(K), [A, I] = w(""), [C, q] = w([]), [v, x] = w(!1), [z, G] = w(0), [V, b] = w(null), [L, W] = w([]), F = O !== void 0 ? O : p;
1868
1868
  ue(() => {
1869
1869
  try {
1870
1870
  const d = localStorage.getItem("nice_recent_searches");
@@ -0,0 +1 @@
1
+ .nice-export-center{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-lg, 12px);font-family:var(--nice-font-sans, system-ui, sans-serif)}.nice-export-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.nice-export-title-area{flex:1}.nice-export-title{margin:0 0 .25rem;font-size:1.125rem;font-weight:600;color:var(--nice-text, #111)}.nice-export-description{margin:0;font-size:.875rem;color:var(--nice-text-muted, #6b7280)}.nice-export-tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--nice-border, #e5e7eb);margin-bottom:1rem}.nice-export-tab{padding:.625rem 1rem;font-size:.875rem;font-weight:500;color:var(--nice-text-muted, #6b7280);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .15s ease}.nice-export-tab:hover{color:var(--nice-primary, #2563eb)}.nice-export-tab--active{color:var(--nice-primary, #2563eb);border-bottom-color:var(--nice-primary, #2563eb)}.nice-export-formats{display:flex;flex-wrap:wrap;gap:.5rem}.nice-export-format{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.75rem 1rem;min-width:80px;background:var(--nice-surface-subtle, #f9fafb);border:2px solid transparent;border-radius:var(--nice-radius-md, 8px);cursor:pointer;transition:all .15s ease}.nice-export-format:hover{background:var(--nice-surface-hover, #f3f4f6);border-color:var(--nice-border, #e5e7eb)}.nice-export-format--selected{background:var(--nice-primary-subtle, #eff6ff);border-color:var(--nice-primary, #2563eb)}.nice-export-format-icon{font-size:1.5rem}.nice-export-format-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em}.nice-export-fields{margin-top:1rem}.nice-export-fields-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.875rem;font-weight:500;color:var(--nice-text, #111)}.nice-export-fields-actions{display:flex;gap:.5rem}.nice-export-fields-actions button{padding:.25rem .5rem;font-size:.75rem;color:var(--nice-primary, #2563eb);background:transparent;border:none;cursor:pointer}.nice-export-fields-actions button:hover{text-decoration:underline}.nice-export-fields-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.25rem;max-height:300px;overflow-y:auto;padding:.5rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px)}.nice-export-field{display:flex;align-items:center;gap:.5rem;padding:.375rem .5rem;cursor:pointer;border-radius:var(--nice-radius-sm, 4px);transition:background .1s ease}.nice-export-field:hover{background:var(--nice-surface-hover, #f3f4f6)}.nice-export-field input[type=checkbox]{width:16px;height:16px;accent-color:var(--nice-primary, #2563eb)}.nice-export-field-label{flex:1;font-size:.875rem;color:var(--nice-text, #111)}.nice-export-field-name{font-size:.75rem;color:var(--nice-text-muted, #9ca3af);font-family:var(--nice-font-mono, monospace)}.nice-export-options{margin-top:1rem;padding:1rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px)}.nice-export-options h4{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:var(--nice-text, #111)}.nice-export-option{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.875rem;color:var(--nice-text, #111)}.nice-export-option input[type=checkbox]{width:16px;height:16px;accent-color:var(--nice-primary, #2563eb)}.nice-export-option select,.nice-export-option input[type=password]{padding:.375rem .5rem;font-size:.875rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px)}.nice-export-option>span:first-child{min-width:100px;color:var(--nice-text-muted, #6b7280)}.nice-export-actions{display:flex;gap:.75rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--nice-border, #e5e7eb)}.nice-export-btn{padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;border:none;border-radius:var(--nice-radius-md, 8px);cursor:pointer;transition:all .15s ease}.nice-export-btn:disabled{opacity:.5;cursor:not-allowed}.nice-export-btn--primary{color:var(--nice-bg, #FFF);background:var(--nice-primary, #2563eb)}.nice-export-btn--primary:hover:not(:disabled){background:var(--nice-primary-dark, #1d4ed8)}.nice-export-btn--secondary{color:var(--nice-text, #111);background:var(--nice-surface-subtle, #f3f4f6);border:1px solid var(--nice-border, #e5e7eb)}.nice-export-btn--secondary:hover:not(:disabled){background:var(--nice-surface-hover, #e5e7eb)}.nice-export-templates{display:flex;flex-direction:column;gap:.5rem}.nice-export-template{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px);transition:background .1s ease}.nice-export-template:hover{background:var(--nice-surface-hover, #f3f4f6)}.nice-export-template-info{display:flex;flex-direction:column;gap:.125rem}.nice-export-template-name{font-size:.875rem;font-weight:500;color:var(--nice-text, #111)}.nice-export-template-format{font-size:.75rem;color:var(--nice-text-muted, #6b7280)}.nice-export-template-desc{font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-export-template-actions{display:flex;gap:.5rem}.nice-export-template-actions button{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--nice-primary, #2563eb);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-export-template-actions button:hover{background:var(--nice-primary-subtle, #eff6ff)}.nice-export-history h4{margin:0 0 .75rem;font-size:.875rem;font-weight:600;color:var(--nice-text, #111)}.nice-export-history-empty{padding:2rem;text-align:center;font-size:.875rem;color:var(--nice-text-muted, #9ca3af)}.nice-export-history-list{display:flex;flex-direction:column;gap:.5rem}.nice-export-job{display:flex;align-items:center;gap:1rem;padding:.75rem 1rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px);border-left:3px solid transparent}.nice-export-job--pending{border-left-color:var(--nice-warning, #f59e0b)}.nice-export-job--processing{border-left-color:var(--nice-primary, #2563eb)}.nice-export-job--completed{border-left-color:var(--nice-success, #10b981)}.nice-export-job--failed{border-left-color:var(--nice-error, #ef4444)}.nice-export-job-info{flex:1;display:flex;flex-direction:column;gap:.125rem}.nice-export-job-name{font-size:.875rem;font-weight:500;color:var(--nice-text, #111)}.nice-export-job-format{display:inline-block;padding:.125rem .375rem;font-size:.625rem;font-weight:600;color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border-radius:var(--nice-radius-sm, 4px);margin-left:.5rem}.nice-export-job-date{font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-export-job-meta{display:flex;gap:.75rem;font-size:.75rem;color:var(--nice-text-muted, #6b7280)}.nice-export-job-status{min-width:120px;display:flex;align-items:center;justify-content:flex-end}.nice-export-job-progress{width:100px;height:6px;background:var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 3px);overflow:hidden}.nice-export-job-progress-bar{height:100%;background:var(--nice-primary, #2563eb);transition:width .3s ease}.nice-export-job-download{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--nice-bg, #FFF);background:var(--nice-success, #10b981);border:none;border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-export-job-download:hover{background:var(--nice-success-dark, #059669)}.nice-export-job-error{font-size:.75rem;font-weight:500;color:var(--nice-error, #ef4444)}[data-theme=dark] .nice-export-center,.nice-dark .nice-export-center{--nice-surface: #1f2937;--nice-surface-subtle: #374151;--nice-surface-hover: #4b5563;--nice-border: #4b5563;--nice-text: #f9fafb;--nice-text-muted: #9ca3af;--nice-primary-subtle: rgba(37, 99, 235, .15)}@media(max-width:640px){.nice-export-center{padding:1rem}.nice-export-formats{flex-direction:column}.nice-export-format{flex-direction:row;justify-content:flex-start;min-width:unset}.nice-export-fields-list{grid-template-columns:1fr}.nice-export-actions{flex-direction:column}.nice-export-btn{width:100%}}.nice-audit-trail{display:flex;flex-direction:column;gap:1rem;padding:1.5rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-lg, 12px);font-family:var(--nice-font-sans, system-ui, sans-serif)}.nice-audit-header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.nice-audit-title{margin:0;font-size:1.125rem;font-weight:600;color:var(--nice-text, #111)}.nice-audit-header-actions{display:flex;gap:.5rem}.nice-audit-view-btn,.nice-audit-filter-btn{padding:.5rem .75rem;font-size:.875rem;background:var(--nice-surface-subtle, #f3f4f6);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;transition:all .15s ease}.nice-audit-view-btn:hover,.nice-audit-filter-btn:hover{background:var(--nice-surface-hover, #e5e7eb)}.nice-audit-view-btn--active,.nice-audit-filter-btn--active{background:var(--nice-primary-subtle, #eff6ff);border-color:var(--nice-primary, #2563eb);color:var(--nice-primary, #2563eb)}.nice-audit-export-dropdown{position:relative}.nice-audit-export-btn{padding:.5rem .75rem;font-size:.875rem;color:var(--nice-bg, #FFF);background:var(--nice-primary, #2563eb);border:none;border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-audit-export-menu{display:none;position:absolute;top:100%;right:0;margin-top:.25rem;min-width:150px;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);box-shadow:0 4px 12px var(--nice-overlay-10, rgba(0, 0, 0, .1));z-index:100}.nice-audit-export-dropdown:hover .nice-audit-export-menu{display:block}.nice-audit-export-menu button{display:block;width:100%;padding:.5rem .75rem;font-size:.875rem;text-align:left;background:transparent;border:none;cursor:pointer}.nice-audit-export-menu button:hover{background:var(--nice-surface-subtle, #f3f4f6)}.nice-audit-filters{display:flex;flex-wrap:wrap;gap:1rem;padding:1rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px)}.nice-audit-filter-group{display:flex;flex-direction:column;gap:.375rem}.nice-audit-filter-group label{font-size:.75rem;font-weight:500;color:var(--nice-text-muted, #6b7280);text-transform:uppercase;letter-spacing:.025em}.nice-audit-date-range{display:flex;align-items:center;gap:.5rem}.nice-audit-date-range input[type=date],.nice-audit-search{padding:.5rem .75rem;font-size:.875rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px)}.nice-audit-search{min-width:200px}.nice-audit-action-chips{display:flex;flex-wrap:wrap;gap:.375rem}.nice-audit-chip{display:flex;align-items:center;gap:.25rem;padding:.25rem .625rem;font-size:.75rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-full, 9999px);cursor:pointer;transition:all .15s ease}.nice-audit-chip:hover{border-color:var(--chip-color)}.nice-audit-chip--selected{background:var(--chip-color);border-color:var(--chip-color);color:var(--nice-bg, #FFF)}.nice-audit-chip-icon{font-size:.875rem}.nice-audit-stats{display:flex;gap:1rem;font-size:.875rem;color:var(--nice-text-muted, #6b7280)}.nice-audit-date-indicator{padding:.125rem .5rem;background:var(--nice-surface-subtle, #f3f4f6);border-radius:var(--nice-radius-sm, 4px)}.nice-audit-content{position:relative;min-height:200px}.nice-audit-content--loading{opacity:.6;pointer-events:none}.nice-audit-loader{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--nice-overlay-light-80, rgba(255, 255, 255, .8));z-index:10}.nice-audit-spinner{width:32px;height:32px;border:3px solid var(--nice-border, #e5e7eb);border-top-color:var(--nice-primary, #2563eb);border-radius:var(--nice-radius-full, 50%);animation:nice-audit-spin .8s linear infinite}@keyframes nice-audit-spin{to{transform:rotate(360deg)}}.nice-audit-timeline{position:relative;padding-left:2rem}.nice-audit-timeline:before{content:"";position:absolute;left:.6875rem;top:0;bottom:0;width:2px;background:var(--nice-border, #e5e7eb)}.nice-audit-timeline-entry{position:relative;padding:1rem;margin-bottom:1rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px);border-left:3px solid transparent;transition:all .15s ease}.nice-audit-timeline-entry:hover{background:var(--nice-surface-hover, #f3f4f6)}.nice-audit-timeline-entry--warning{border-left-color:var(--nice-warning, #f59e0b)}.nice-audit-timeline-entry--critical{border-left-color:var(--nice-error, #ef4444);background:var(--nice-danger-tint-10, rgba(239, 68, 68, .05))}.nice-audit-timeline-marker{position:absolute;left:-2rem;top:1rem;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:var(--nice-surface, #fff);border:2px solid var(--marker-color, currentColor);border-radius:var(--nice-radius-full, 50%);font-size:.75rem;color:var(--marker-color);z-index:1}.nice-audit-timeline-header{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.5rem}.nice-audit-timeline-action{font-weight:600;color:var(--nice-text, #111)}.nice-audit-timeline-entity{color:var(--nice-text-muted, #6b7280)}.nice-audit-timeline-time{margin-left:auto;font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-audit-timeline-user{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.nice-audit-avatar{width:24px;height:24px;border-radius:var(--nice-radius-full, 50%);object-fit:cover}.nice-audit-avatar-sm{width:20px;height:20px;border-radius:var(--nice-radius-full, 50%);object-fit:cover}.nice-audit-username{font-weight:500;color:var(--nice-text, #111)}.nice-audit-role{padding:.125rem .375rem;font-size:.625rem;font-weight:500;color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border-radius:var(--nice-radius-sm, 4px)}.nice-audit-timeline-notes{margin-top:.5rem;padding:.5rem;font-size:.875rem;font-style:italic;background:var(--nice-surface, #fff);border-radius:var(--nice-radius-sm, 4px);color:var(--nice-text-muted, #6b7280)}.nice-audit-timeline-meta{display:flex;gap:.5rem;margin-top:.5rem;font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-audit-expand-btn{display:inline-flex;align-items:center;gap:.25rem;margin-top:.5rem;padding:.25rem .5rem;font-size:.75rem;color:var(--nice-primary, #2563eb);background:transparent;border:none;cursor:pointer}.nice-audit-expand-btn:hover{text-decoration:underline}.nice-audit-diff{margin-top:.5rem;padding:.75rem;background:var(--nice-surface, #fff);border-radius:var(--nice-radius-sm, 4px);font-family:var(--nice-font-mono, monospace);font-size:.75rem}.nice-audit-diff-row{display:flex;flex-direction:column;gap:.25rem;padding:.375rem 0;border-bottom:1px dashed var(--nice-border, #e5e7eb)}.nice-audit-diff-row:last-child{border-bottom:none;padding-bottom:0}.nice-audit-diff-field{font-weight:600;color:var(--nice-text, #111)}.nice-audit-diff-values{display:flex;align-items:flex-start;gap:.5rem}.nice-audit-diff-old{padding:.25rem .5rem;background:var(--nice-danger-tint-10, rgba(239, 68, 68, .1));border-radius:var(--nice-radius-sm, 4px);color:var(--nice-danger-dark, #991b1b);text-decoration:line-through}.nice-audit-diff-arrow{color:var(--nice-text-muted, #9ca3af)}.nice-audit-diff-new{padding:.25rem .5rem;background:var(--nice-success-tint-10, rgba(16, 185, 129, .1));border-radius:var(--nice-radius-sm, 4px);color:#065f46}.nice-audit-table{width:100%;border-collapse:collapse;font-size:.875rem}.nice-audit-table th{padding:.75rem;text-align:left;font-weight:600;color:var(--nice-text-muted, #6b7280);background:var(--nice-surface-subtle, #f9fafb);border-bottom:2px solid var(--nice-border, #e5e7eb)}.nice-audit-table td{padding:.75rem;border-bottom:1px solid var(--nice-border, #e5e7eb);color:var(--nice-text, #111)}.nice-audit-row{cursor:pointer;transition:background .1s ease}.nice-audit-row:hover{background:var(--nice-surface-subtle, #f9fafb)}.nice-audit-row--warning td:first-child{border-left:3px solid var(--nice-warning, #f59e0b)}.nice-audit-row--critical{background:var(--nice-danger-tint-10, rgba(239, 68, 68, .05))}.nice-audit-row--critical td:first-child{border-left:3px solid var(--nice-error, #ef4444)}.nice-audit-action-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;background:color-mix(in srgb,var(--badge-color) 15%,transparent);color:var(--badge-color);border-radius:var(--nice-radius-sm, 4px)}.nice-audit-cell-time{white-space:nowrap;font-family:var(--nice-font-mono, monospace);font-size:.75rem}.nice-audit-cell-user{display:flex;align-items:center;gap:.5rem}.nice-audit-cell-ip{font-family:var(--nice-font-mono, monospace);font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-audit-changes-count{padding:.125rem .375rem;font-size:.75rem;background:var(--nice-surface-subtle, #f3f4f6);border-radius:var(--nice-radius-sm, 4px)}.nice-audit-empty{padding:3rem;text-align:center;color:var(--nice-text-muted, #9ca3af)}.nice-audit-pagination{display:flex;justify-content:center;align-items:center;gap:1rem;padding-top:1rem;border-top:1px solid var(--nice-border, #e5e7eb)}.nice-audit-pagination button{padding:.5rem 1rem;font-size:.875rem;background:var(--nice-surface-subtle, #f3f4f6);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-audit-pagination button:disabled{opacity:.5;cursor:not-allowed}.nice-audit-pagination button:hover:not(:disabled){background:var(--nice-surface-hover, #e5e7eb)}[data-theme=dark] .nice-audit-trail,.nice-dark .nice-audit-trail{--nice-surface: #1f2937;--nice-surface-subtle: #374151;--nice-surface-hover: #4b5563;--nice-border: #4b5563;--nice-text: #f9fafb;--nice-text-muted: #9ca3af;--nice-primary-subtle: rgba(37, 99, 235, .2)}[data-theme=dark] .nice-audit-loader,.nice-dark .nice-audit-loader{background:var(--nice-overlay-80, rgba(31, 41, 55, .8))}[data-theme=dark] .nice-audit-diff-old,.nice-dark .nice-audit-diff-old{background:var(--nice-danger-tint-20, rgba(239, 68, 68, .2));color:var(--nice-danger-bg, #fca5a5)}[data-theme=dark] .nice-audit-diff-new,.nice-dark .nice-audit-diff-new{background:var(--nice-success-tint-20, rgba(16, 185, 129, .2));color:var(--nice-success-light, #6ee7b7)}@media(max-width:768px){.nice-audit-trail{padding:1rem}.nice-audit-header{flex-direction:column;align-items:flex-start}.nice-audit-filters{flex-direction:column}.nice-audit-table{display:block;overflow-x:auto}.nice-audit-timeline{padding-left:1.5rem}.nice-audit-timeline-marker{left:-1.5rem;width:20px;height:20px}.nice-audit-timeline-header{flex-direction:column;gap:.25rem}.nice-audit-timeline-time{margin-left:0}}.nice-contract-editor{min-height:600px;background:var(--nice-surface, #fff);font-family:var(--nice-font-sans, system-ui, sans-serif)}.nice-contract-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.5rem;border-bottom:1px solid var(--nice-border, #e5e7eb);background:var(--nice-surface-subtle, #f9fafb)}.nice-contract-header-info{display:flex;align-items:center;gap:1rem}.nice-contract-title{margin:0;font-size:1.25rem;font-weight:600;color:var(--nice-text, #111)}.nice-contract-status{padding:.25rem .75rem;font-size:.75rem;font-weight:600;color:var(--status-color);background:color-mix(in srgb,var(--status-color) 15%,transparent);border-radius:var(--nice-radius-full, 9999px)}.nice-contract-header-actions{display:flex;gap:.5rem}.nice-contract-btn{padding:.5rem 1rem;font-size:.875rem;font-weight:500;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer;transition:all .15s ease}.nice-contract-btn:hover{background:var(--nice-surface-hover, #f3f4f6)}.nice-contract-btn--primary{color:var(--nice-bg, #FFF);background:var(--nice-primary, #2563eb);border-color:var(--nice-primary, #2563eb)}.nice-contract-btn--primary:hover{background:var(--nice-primary-dark, #1d4ed8)}.nice-contract-btn--approve{color:var(--nice-bg, #FFF);background:var(--nice-success, #10b981);border-color:var(--nice-success, #10b981)}.nice-contract-btn--reject{color:var(--nice-bg, #FFF);background:var(--nice-error, #ef4444);border-color:var(--nice-error, #ef4444)}.nice-contract-export-dropdown{position:relative}.nice-contract-export-menu{display:none;position:absolute;top:100%;right:0;margin-top:.25rem;min-width:120px;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);box-shadow:0 4px 12px var(--nice-overlay-10, rgba(0, 0, 0, .1));z-index:100}.nice-contract-export-dropdown:hover .nice-contract-export-menu{display:block}.nice-contract-export-menu button{display:block;width:100%;padding:.5rem .75rem;font-size:.875rem;text-align:left;background:transparent;border:none;cursor:pointer}.nice-contract-export-menu button:hover{background:var(--nice-surface-subtle, #f3f4f6)}.nice-contract-toolbar{display:flex;gap:.5rem;padding:.75rem 1.5rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-contract-toolbar-btn{padding:.5rem .75rem;font-size:.875rem;background:transparent;border:1px solid transparent;border-radius:var(--nice-radius-sm, 4px);cursor:pointer;transition:all .15s ease}.nice-contract-toolbar-btn:hover{background:var(--nice-surface-subtle, #f3f4f6)}.nice-contract-toolbar-btn--active{background:var(--nice-primary-subtle, #eff6ff);border-color:var(--nice-primary, #2563eb);color:var(--nice-primary, #2563eb)}.nice-contract-panel{width:320px;height:100%;border-right:1px solid var(--nice-border, #e5e7eb);overflow-y:auto;background:var(--nice-surface-subtle, #f9fafb)}.nice-contract-document{position:relative;min-height:100%;padding:1.5rem}.nice-contract-library{padding:1rem}.nice-contract-library-header{margin-bottom:1rem}.nice-contract-library-header h4{margin:0 0 .5rem;font-size:.875rem;font-weight:600;color:var(--nice-text, #111)}.nice-contract-library-search{width:100%;padding:.5rem .75rem;font-size:.875rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px)}.nice-contract-library-categories{display:flex;flex-wrap:wrap;gap:.375rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-contract-category-btn{padding:.25rem .5rem;font-size:.75rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-contract-category-btn:hover{border-color:var(--cat-color, currentColor)}.nice-contract-category-btn--active{background:var(--cat-color, var(--nice-primary));border-color:var(--cat-color, var(--nice-primary));color:var(--nice-bg, #FFF)}.nice-contract-library-list{display:flex;flex-direction:column;gap:.5rem}.nice-contract-library-item{padding:.75rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px)}.nice-contract-library-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.375rem}.nice-contract-library-item-name{font-size:.875rem;font-weight:500;color:var(--nice-text, #111)}.nice-contract-library-item-cat{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:color-mix(in srgb,var(--cat-color) 15%,transparent);border-radius:var(--nice-radius-sm, 4px)}.nice-contract-library-item-desc{margin:0 0 .5rem;font-size:.75rem;color:var(--nice-text-muted, #6b7280);line-height:1.4}.nice-contract-library-insert{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border:none;border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-contract-library-insert:hover{background:var(--nice-primary, #2563eb);color:var(--nice-bg, #FFF)}.nice-contract-library-empty{padding:2rem;text-align:center;color:var(--nice-text-muted, #9ca3af);font-size:.875rem}.nice-contract-variables{padding:1rem}.nice-contract-variables h4{margin:0 0 1rem;font-size:.875rem;font-weight:600;color:var(--nice-text, #111)}.nice-contract-variables-list{display:flex;flex-direction:column;gap:.75rem}.nice-contract-variable{display:flex;flex-direction:column;gap:.25rem}.nice-contract-variable label{font-size:.75rem;font-weight:500;color:var(--nice-text-muted, #6b7280)}.nice-contract-required{color:var(--nice-error, #ef4444);margin-left:.25rem}.nice-contract-variable input,.nice-contract-variable select{padding:.5rem .75rem;font-size:.875rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px)}.nice-contract-section{margin-bottom:1.5rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px);overflow:hidden}.nice-contract-section-header{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--nice-surface-subtle, #f9fafb);cursor:pointer;-webkit-user-select:none;user-select:none}.nice-contract-section-header:hover{background:var(--nice-surface-hover, #f3f4f6)}.nice-contract-section-toggle{color:var(--nice-text-muted, #9ca3af);font-size:.75rem}.nice-contract-section-header h3{flex:1;margin:0;font-size:1rem;font-weight:600;color:var(--nice-text, #111)}.nice-contract-section-count{font-size:.75rem;color:var(--nice-text-muted, #6b7280)}.nice-contract-section-content{padding:1rem}.nice-contract-section--collapsed .nice-contract-section-content{display:none}.nice-contract-section-empty{padding:2rem;text-align:center;color:var(--nice-text-muted, #9ca3af);font-size:.875rem;border:2px dashed var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px)}.nice-contract-clause{padding:1rem;margin-bottom:1rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px);border-left:4px solid var(--cat-color, var(--nice-border))}.nice-contract-clause:last-child{margin-bottom:0}.nice-contract-clause-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.nice-contract-clause-cat{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:color-mix(in srgb,var(--cat-color) 15%,transparent);border-radius:var(--nice-radius-sm, 4px);font-size:.875rem}.nice-contract-clause-name{flex:1;font-size:.875rem;font-weight:600;color:var(--nice-text, #111)}.nice-contract-clause-required{padding:.125rem .5rem;font-size:.625rem;font-weight:600;color:var(--nice-error, #ef4444);background:var(--nice-danger-tint-10, rgba(239, 68, 68, .1));border-radius:var(--nice-radius-sm, 4px)}.nice-contract-clause-actions{display:flex;gap:.25rem}.nice-contract-clause-actions button{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:.875rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-contract-clause-actions button:disabled{opacity:.5;cursor:not-allowed}.nice-contract-clause-actions button:hover:not(:disabled){background:var(--nice-surface-hover, #f3f4f6)}.nice-contract-clause-content{font-size:.875rem;line-height:1.6;color:var(--nice-text, #111)}.nice-contract-clause-content [data-variable]{padding:.125rem .375rem;background:var(--nice-warning-subtle, #fef3c7);border-radius:var(--nice-radius-sm, 4px);font-weight:500}.nice-contract-workflow{padding:1rem}.nice-contract-workflow h4{margin:0 0 1rem;font-size:.875rem;font-weight:600;color:var(--nice-text, #111)}.nice-contract-workflow-steps{position:relative}.nice-contract-workflow-steps:before{content:"";position:absolute;left:1rem;top:0;bottom:0;width:2px;background:var(--nice-border, #e5e7eb)}.nice-contract-workflow-step{position:relative;padding:1rem;margin-bottom:1rem;margin-left:2rem;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px)}.nice-contract-workflow-step:before{content:"";position:absolute;left:-1.75rem;top:1.25rem;width:12px;height:12px;background:var(--nice-surface, #fff);border:2px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-full, 50%)}.nice-contract-workflow-step--approved:before{background:var(--nice-success, #10b981);border-color:var(--nice-success, #10b981)}.nice-contract-workflow-step--rejected:before{background:var(--nice-error, #ef4444);border-color:var(--nice-error, #ef4444)}.nice-contract-workflow-step-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.nice-contract-workflow-step-num{display:flex;align-items:center;justify-content:center;width:20px;height:20px;font-size:.75rem;font-weight:600;background:var(--nice-surface-subtle, #f3f4f6);border-radius:var(--nice-radius-full, 50%)}.nice-contract-workflow-step-name{flex:1;font-size:.875rem;font-weight:500;color:var(--nice-text, #111)}.nice-contract-workflow-step-status{padding:.125rem .5rem;font-size:.625rem;font-weight:600;text-transform:uppercase;border-radius:var(--nice-radius-sm, 4px)}.nice-contract-workflow-step-status--pending{color:var(--nice-warning, #f59e0b);background:var(--nice-warning-tint-10, rgba(245, 158, 11, .1))}.nice-contract-workflow-step-status--approved{color:var(--nice-success, #10b981);background:var(--nice-success-tint-10, rgba(16, 185, 129, .1))}.nice-contract-workflow-step-status--rejected{color:var(--nice-error, #ef4444);background:var(--nice-danger-tint-10, rgba(239, 68, 68, .1))}.nice-contract-workflow-approvers{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.nice-contract-approver{display:flex;align-items:center;gap:.375rem;padding:.25rem .5rem;background:var(--nice-surface-subtle, #f3f4f6);border-radius:var(--nice-radius-sm, 4px);font-size:.75rem}.nice-contract-approver-avatar{width:20px;height:20px;border-radius:var(--nice-radius-full, 50%);object-fit:cover}.nice-contract-approver-role{color:var(--nice-text-muted, #9ca3af)}.nice-contract-workflow-actions{display:flex;flex-direction:column;gap:.5rem}.nice-contract-workflow-actions textarea{width:100%;padding:.5rem;font-size:.875rem;border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);resize:vertical;min-height:60px}.nice-contract-workflow-btns{display:flex;gap:.5rem}[data-theme=dark] .nice-contract-editor,.nice-dark .nice-contract-editor{--nice-surface: #1f2937;--nice-surface-subtle: #374151;--nice-surface-hover: #4b5563;--nice-border: #4b5563;--nice-text: #f9fafb;--nice-text-muted: #9ca3af;--nice-primary-subtle: rgba(37, 99, 235, .2)}@media(max-width:768px){.nice-contract-panel{width:100%;max-height:300px;border-right:none;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-contract-header{flex-direction:column;align-items:flex-start}.nice-contract-toolbar{flex-wrap:wrap}}.nice-gdpr-consent{font-family:var(--nice-font-sans, system-ui, sans-serif);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);box-shadow:0 4px 24px var(--nice-overlay-15, rgba(0, 0, 0, .15));z-index:9999}.nice-gdpr-consent--banner{position:fixed;left:0;right:0;padding:1rem 1.5rem}.nice-gdpr-consent--banner.nice-gdpr-consent--top{top:0;border-top:none;border-radius:0 0 var(--nice-radius-lg, 12px) var(--nice-radius-lg, 12px)}.nice-gdpr-consent--banner.nice-gdpr-consent--bottom{bottom:0;border-bottom:none;border-radius:var(--nice-radius-lg, 12px) var(--nice-radius-lg, 12px) 0 0}.nice-gdpr-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--nice-overlay-50, rgba(0, 0, 0, .5));z-index:9999}.nice-gdpr-consent--modal{max-width:500px;width:90%;max-height:90vh;overflow-y:auto;padding:1.5rem;border-radius:var(--nice-radius-lg, 12px)}.nice-gdpr-consent--embedded{padding:1.5rem;border-radius:var(--nice-radius-lg, 12px)}.nice-gdpr-content{display:flex;flex-direction:column;gap:1rem}.nice-gdpr-header{display:flex;gap:1rem;align-items:flex-start}.nice-gdpr-icon{font-size:2rem;line-height:1}.nice-gdpr-header-text h3{margin:0 0 .25rem;font-size:1.125rem;font-weight:600;color:var(--nice-text, #111)}.nice-gdpr-header-text p{margin:0;font-size:.875rem;color:var(--nice-text-muted, #6b7280);line-height:1.5}.nice-gdpr-quick-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem}.nice-gdpr-btn{padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;border-radius:var(--nice-radius-md, 8px);cursor:pointer;transition:all .15s ease;border:none}.nice-gdpr-btn--primary{color:var(--nice-bg, #FFF);background:var(--nice-primary, #2563eb)}.nice-gdpr-btn--primary:hover{background:var(--nice-primary-dark, #1d4ed8)}.nice-gdpr-btn--secondary{color:var(--nice-text, #111);background:var(--nice-surface-subtle, #f3f4f6);border:1px solid var(--nice-border, #e5e7eb)}.nice-gdpr-btn--secondary:hover{background:var(--nice-surface-hover, #e5e7eb)}.nice-gdpr-btn--danger{color:var(--nice-bg, #FFF);background:var(--nice-error, #ef4444)}.nice-gdpr-btn--danger:hover{background:var(--nice-danger-dark, #dc2626)}.nice-gdpr-btn--link{color:var(--nice-primary, #2563eb);background:transparent;padding:.625rem .5rem}.nice-gdpr-btn--link:hover{text-decoration:underline}.nice-gdpr-preferences{display:flex;flex-direction:column;gap:1rem}.nice-gdpr-options{display:flex;flex-direction:column;gap:.75rem}.nice-gdpr-option{padding:.75rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-md, 8px)}.nice-gdpr-option-header{display:flex;gap:.75rem;align-items:flex-start}.nice-gdpr-option-toggle{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}.nice-gdpr-option-toggle input{opacity:0;width:0;height:0}.nice-gdpr-toggle-slider{position:absolute;cursor:pointer;top:0;right:0;bottom:0;left:0;background-color:var(--nice-border, #d1d5db);border-radius:var(--nice-radius-2xl, 24px);transition:.2s}.nice-gdpr-toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background-color:#fff;border-radius:var(--nice-radius-full, 50%);transition:.2s}.nice-gdpr-option-toggle input:checked+.nice-gdpr-toggle-slider{background-color:var(--nice-primary, #2563eb)}.nice-gdpr-option-toggle input:checked+.nice-gdpr-toggle-slider:before{transform:translate(20px)}.nice-gdpr-option-toggle input:disabled+.nice-gdpr-toggle-slider{opacity:.5;cursor:not-allowed}.nice-gdpr-option-info{flex:1;display:flex;flex-direction:column;gap:.125rem}.nice-gdpr-option-label{font-size:.875rem;font-weight:500;color:var(--nice-text, #111)}.nice-gdpr-required{display:inline-block;margin-left:.5rem;padding:.125rem .375rem;font-size:.625rem;font-weight:600;color:var(--nice-text-muted, #6b7280);background:var(--nice-surface, #fff);border-radius:var(--nice-radius-sm, 4px)}.nice-gdpr-option-desc{font-size:.75rem;color:var(--nice-text-muted, #6b7280);line-height:1.4}.nice-gdpr-option-partners{margin-top:.5rem;padding-top:.5rem;border-top:1px dashed var(--nice-border, #e5e7eb);font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-gdpr-pref-actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.5rem}.nice-gdpr-rights h4{margin:0 0 1rem;font-size:1rem;font-weight:600;color:var(--nice-text, #111)}.nice-gdpr-rights-actions{display:flex;gap:.75rem;margin-bottom:1rem}.nice-gdpr-requests{margin-bottom:1rem}.nice-gdpr-requests h5{margin:0 0 .5rem;font-size:.875rem;font-weight:500;color:var(--nice-text-muted, #6b7280)}.nice-gdpr-request{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--nice-surface-subtle, #f9fafb);border-radius:var(--nice-radius-sm, 4px);margin-bottom:.375rem;font-size:.875rem}.nice-gdpr-request-type{font-weight:500;text-transform:capitalize}.nice-gdpr-request-date{color:var(--nice-text-muted, #6b7280)}.nice-gdpr-request-status{margin-left:auto;padding:.125rem .5rem;font-size:.75rem;font-weight:500;border-radius:var(--nice-radius-sm, 4px);text-transform:uppercase}.nice-gdpr-request--pending .nice-gdpr-request-status{color:var(--nice-warning, #f59e0b);background:var(--nice-warning-tint-10, rgba(245, 158, 11, .1))}.nice-gdpr-request--processing .nice-gdpr-request-status{color:var(--nice-primary, #2563eb);background:var(--nice-primary-tint-10, rgba(37, 99, 235, .1))}.nice-gdpr-request--completed .nice-gdpr-request-status{color:var(--nice-success, #10b981);background:var(--nice-success-tint-10, rgba(16, 185, 129, .1))}.nice-gdpr-download-btn{padding:.25rem .5rem;font-size:.75rem;color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border:none;border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-gdpr-policies h5{margin:0 0 .5rem;font-size:.875rem;font-weight:500;color:var(--nice-text-muted, #6b7280)}.nice-gdpr-policies-table{width:100%;font-size:.75rem;border-collapse:collapse}.nice-gdpr-policies-table th,.nice-gdpr-policies-table td{padding:.5rem;text-align:left;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-gdpr-policies-table th{font-weight:500;color:var(--nice-text-muted, #6b7280);background:var(--nice-surface-subtle, #f9fafb)}.nice-gdpr-footer{display:flex;gap:1rem;padding-top:.75rem;border-top:1px solid var(--nice-border, #e5e7eb)}.nice-gdpr-footer a{font-size:.75rem;color:var(--nice-text-muted, #6b7280);text-decoration:none}.nice-gdpr-footer a:hover{color:var(--nice-primary, #2563eb);text-decoration:underline}[data-theme=dark] .nice-gdpr-consent,.nice-dark .nice-gdpr-consent{--nice-surface: #1f2937;--nice-surface-subtle: #374151;--nice-surface-hover: #4b5563;--nice-border: #4b5563;--nice-text: #f9fafb;--nice-text-muted: #9ca3af;--nice-primary-subtle: rgba(37, 99, 235, .2)}@media(max-width:640px){.nice-gdpr-consent--banner{padding:1rem}.nice-gdpr-header{flex-direction:column;align-items:center;text-align:center}.nice-gdpr-quick-actions{flex-direction:column}.nice-gdpr-btn{width:100%}.nice-gdpr-rights-actions{flex-direction:column}}@keyframes nice-gdpr-slide-up{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes nice-gdpr-slide-down{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.nice-gdpr-consent--banner.nice-gdpr-consent--bottom{animation:nice-gdpr-slide-up .3s ease-out}.nice-gdpr-consent--banner.nice-gdpr-consent--top{animation:nice-gdpr-slide-down .3s ease-out}.nice-gdpr-overlay{animation:nice-gdpr-fade-in .2s ease-out}@keyframes nice-gdpr-fade-in{0%{opacity:0}to{opacity:1}}.nice-gdpr-consent--modal{animation:nice-gdpr-scale-in .2s ease-out}@keyframes nice-gdpr-scale-in{0%{transform:scale(.95);opacity:0}to{transform:scale(1);opacity:1}}.nice-search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh;background:var(--nice-overlay-50, rgba(0, 0, 0, .5));-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;animation:nice-search-fade-in .15s ease-out}@keyframes nice-search-fade-in{0%{opacity:0}to{opacity:1}}.nice-global-search{font-family:var(--nice-font-sans, system-ui, sans-serif);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-lg, 12px);box-shadow:0 20px 60px var(--nice-overlay-20, rgba(0, 0, 0, .2));overflow:hidden}.nice-global-search--modal{width:100%;max-width:640px;max-height:70vh;display:flex;flex-direction:column;animation:nice-search-scale-in .15s ease-out}@keyframes nice-search-scale-in{0%{transform:scale(.95) translateY(-10px);opacity:0}to{transform:scale(1) translateY(0);opacity:1}}.nice-global-search--inline{width:100%}.nice-global-search--dropdown{position:absolute;top:100%;left:0;right:0;margin-top:.5rem;z-index:100}.nice-search-content{display:flex;flex-direction:column;height:100%}.nice-search-input-container{display:flex;align-items:center;padding:1rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-search-icon{flex-shrink:0;font-size:1.25rem;margin-right:.75rem;opacity:.5}.nice-search-input{flex:1;padding:0;font-size:1.125rem;font-weight:400;color:var(--nice-text, #111);background:transparent;border:none;outline:none}.nice-search-input::placeholder{color:var(--nice-text-muted, #9ca3af)}.nice-search-loader{width:20px;height:20px;border:2px solid var(--nice-border, #e5e7eb);border-top-color:var(--nice-primary, #2563eb);border-radius:var(--nice-radius-full, 50%);animation:nice-search-spin .6s linear infinite}@keyframes nice-search-spin{to{transform:rotate(360deg)}}.nice-search-clear{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:1rem;color:var(--nice-text-muted, #9ca3af);background:var(--nice-surface-subtle, #f3f4f6);border:none;border-radius:var(--nice-radius-full, 50%);cursor:pointer}.nice-search-clear:hover{background:var(--nice-surface-hover, #e5e7eb);color:var(--nice-text, #111)}.nice-search-categories{display:flex;gap:.375rem;padding:.75rem 1rem;border-bottom:1px solid var(--nice-border, #e5e7eb);overflow-x:auto}.nice-search-category{display:flex;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.813rem;font-weight:500;white-space:nowrap;color:var(--nice-text-muted, #6b7280);background:transparent;border:1px solid transparent;border-radius:var(--nice-radius-sm, 4px);cursor:pointer;transition:all .15s ease}.nice-search-category:hover{background:var(--nice-surface-subtle, #f3f4f6)}.nice-search-category--active{color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border-color:var(--nice-primary, #2563eb)}.nice-search-category-icon{font-size:.875rem}.nice-search-category-count{padding:0 .375rem;font-size:.688rem;font-weight:600;color:var(--nice-text-muted, #9ca3af);background:var(--nice-surface, #fff);border-radius:var(--nice-radius-full, 9999px)}.nice-search-results{flex:1;overflow-y:auto;max-height:400px}.nice-search-result{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;cursor:pointer;transition:background .1s ease}.nice-search-result:hover,.nice-search-result--selected{background:var(--nice-surface-subtle, #f3f4f6)}.nice-search-result-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;flex-shrink:0;background:var(--nice-surface-subtle, #f3f4f6);border-radius:var(--nice-radius-md, 8px);font-size:1.125rem}.nice-search-result-icon img{width:100%;height:100%;object-fit:cover;border-radius:inherit}.nice-search-result-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:.125rem}.nice-search-result-title{font-size:.875rem;font-weight:500;color:var(--nice-text, #111);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nice-search-result-subtitle{font-size:.75rem;color:var(--nice-text-muted, #6b7280);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nice-search-result-desc{font-size:.75rem;color:var(--nice-text-muted, #9ca3af);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nice-search-result-meta{display:flex;flex-direction:column;align-items:flex-end;gap:.125rem;flex-shrink:0}.nice-search-result-source{font-size:.688rem;color:var(--nice-text-muted, #9ca3af)}.nice-search-result-type{padding:.125rem .375rem;font-size:.625rem;font-weight:500;text-transform:uppercase;color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border-radius:var(--nice-radius-sm, 4px)}.nice-search-result-actions{display:flex;gap:.25rem;margin-left:.5rem;opacity:0;transition:opacity .15s ease}.nice-search-result:hover .nice-search-result-actions{opacity:1}.nice-search-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;font-size:.875rem;color:var(--nice-text-muted, #6b7280);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-search-action-btn:hover{color:var(--nice-primary, #2563eb);border-color:var(--nice-primary, #2563eb)}.nice-search-loading,.nice-search-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem;color:var(--nice-text-muted, #9ca3af);text-align:center}.nice-search-empty-icon{font-size:2rem;opacity:.5}.nice-search-recent{padding:.75rem 0}.nice-search-recent-header{display:flex;justify-content:space-between;align-items:center;padding:0 1rem .5rem;font-size:.75rem;font-weight:500;color:var(--nice-text-muted, #6b7280);text-transform:uppercase;letter-spacing:.025em}.nice-search-recent-header button{font-size:.75rem;color:var(--nice-primary, #2563eb);background:transparent;border:none;cursor:pointer}.nice-search-recent-header button:hover{text-decoration:underline}.nice-search-recent-list{display:flex;flex-direction:column}.nice-search-recent-item{display:flex;align-items:center;gap:.75rem;padding:.625rem 1rem;font-size:.875rem;color:var(--nice-text, #111);background:transparent;border:none;cursor:pointer;text-align:left;width:100%}.nice-search-recent-item:hover{background:var(--nice-surface-subtle, #f3f4f6)}.nice-search-recent-icon{font-size:1rem;opacity:.5}.nice-search-shortcuts{display:flex;gap:1.5rem;padding:.75rem 1rem;border-top:1px solid var(--nice-border, #e5e7eb);background:var(--nice-surface-subtle, #f9fafb)}.nice-search-shortcuts span{display:flex;align-items:center;gap:.375rem;font-size:.75rem;color:var(--nice-text-muted, #6b7280)}.nice-search-shortcuts kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 .375rem;font-family:inherit;font-size:.688rem;font-weight:500;color:var(--nice-text, #111);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #d1d5db);border-radius:var(--nice-radius-sm, 4px);box-shadow:0 1px 2px var(--nice-overlay-5, rgba(0, 0, 0, .05))}[data-theme=dark] .nice-global-search,.nice-dark .nice-global-search{--nice-surface: #1f2937;--nice-surface-subtle: #374151;--nice-surface-hover: #4b5563;--nice-border: #4b5563;--nice-text: #f9fafb;--nice-text-muted: #9ca3af;--nice-primary-subtle: rgba(37, 99, 235, .2)}[data-theme=dark] .nice-search-overlay,.nice-dark .nice-search-overlay{background:var(--nice-overlay-70, rgba(0, 0, 0, .7))}@media(max-width:640px){.nice-search-overlay{padding-top:0;align-items:flex-end}.nice-global-search--modal{max-width:100%;max-height:80vh;border-radius:var(--nice-radius-lg, 12px) var(--nice-radius-lg, 12px) 0 0}.nice-search-shortcuts{flex-wrap:wrap;gap:.75rem}}.nice-accesslog{display:flex;flex-direction:column;width:100%;font-family:var(--nice-font-sans, system-ui, sans-serif);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-lg, 12px);overflow:hidden}.nice-accesslog-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-accesslog-header-left{display:flex;align-items:center;gap:.75rem}.nice-accesslog-title{margin:0;font-size:1.125rem;font-weight:600;color:var(--nice-text, #111)}.nice-accesslog-realtime-badge{padding:.25rem .5rem;font-size:.688rem;font-weight:600;color:var(--nice-success, #22c55e);background:var(--nice-success-tint-10, rgba(34, 197, 94, .1));border-radius:var(--nice-radius-full, 9999px);animation:nice-accesslog-pulse 2s ease-in-out infinite}@keyframes nice-accesslog-pulse{0%,to{opacity:1}50%{opacity:.5}}.nice-accesslog-header-actions{display:flex;align-items:center;gap:.5rem}.nice-accesslog-btn{display:flex;align-items:center;gap:.375rem;padding:.5rem .75rem;font-size:.813rem;font-weight:500;color:var(--nice-text, #111);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px);cursor:pointer;transition:all .15s ease}.nice-accesslog-btn:hover:not(:disabled){background:var(--nice-surface-subtle, #f3f4f6)}.nice-accesslog-btn:disabled{opacity:.5;cursor:not-allowed}.nice-accesslog-export-dropdown{position:relative}.nice-accesslog-export-menu{display:none;position:absolute;top:100%;right:0;margin-top:.25rem;min-width:100px;background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px);box-shadow:0 4px 12px var(--nice-overlay-10, rgba(0, 0, 0, .1));z-index:10}.nice-accesslog-export-dropdown:hover .nice-accesslog-export-menu{display:block}.nice-accesslog-export-menu button{display:block;width:100%;padding:.5rem .75rem;font-size:.813rem;text-align:left;color:var(--nice-text, #111);background:transparent;border:none;cursor:pointer}.nice-accesslog-export-menu button:hover{background:var(--nice-surface-subtle, #f3f4f6)}.nice-accesslog-stats{display:flex;gap:1rem;padding:1rem 1.25rem;background:var(--nice-surface-subtle, #f9fafb);border-bottom:1px solid var(--nice-border, #e5e7eb);overflow-x:auto}.nice-accesslog-stat{display:flex;flex-direction:column;align-items:center;min-width:80px;padding:.5rem}.nice-accesslog-stat-value{font-size:1.5rem;font-weight:700;color:var(--nice-text, #111)}.nice-accesslog-stat-label{font-size:.688rem;font-weight:500;color:var(--nice-text-muted, #6b7280);text-transform:uppercase;letter-spacing:.025em}.nice-accesslog-stat--success .nice-accesslog-stat-value{color:var(--nice-success, #22c55e)}.nice-accesslog-stat--failed .nice-accesslog-stat-value{color:var(--nice-danger, #ef4444)}.nice-accesslog-stat--warning .nice-accesslog-stat-value{color:var(--nice-warning, #f59e0b)}.nice-accesslog-filters{padding:.75rem 1.25rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-accesslog-filters-row{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.nice-accesslog-search{display:flex;align-items:center;flex:1;min-width:200px;padding:.5rem .75rem;background:var(--nice-surface-subtle, #f9fafb);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-md, 8px)}.nice-accesslog-search-icon{margin-right:.5rem;opacity:.5}.nice-accesslog-search input{flex:1;font-size:.875rem;color:var(--nice-text, #111);background:transparent;border:none;outline:none}.nice-accesslog-filter-quick{display:flex;gap:.5rem}.nice-accesslog-filter-chip{padding:.375rem .75rem;font-size:.75rem;font-weight:500;color:var(--nice-text-muted, #6b7280);background:transparent;border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-full, 9999px);cursor:pointer;transition:all .15s ease}.nice-accesslog-filter-chip:hover{border-color:var(--nice-primary, #2563eb);color:var(--nice-primary, #2563eb)}.nice-accesslog-filter-chip--active{color:var(--nice-primary, #2563eb);background:var(--nice-primary-subtle, #eff6ff);border-color:var(--nice-primary, #2563eb)}.nice-accesslog-filter-toggle{padding:.375rem .75rem;font-size:.75rem;color:var(--nice-primary, #2563eb);background:transparent;border:none;cursor:pointer}.nice-accesslog-filters-expanded{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.75rem;padding-top:.75rem;border-top:1px dashed var(--nice-border, #e5e7eb)}.nice-accesslog-filter-group{display:flex;flex-direction:column;gap:.25rem}.nice-accesslog-filter-group label{font-size:.688rem;font-weight:500;color:var(--nice-text-muted, #6b7280);text-transform:uppercase;letter-spacing:.025em}.nice-accesslog-filter-group input,.nice-accesslog-filter-group select{padding:.375rem .5rem;font-size:.813rem;color:var(--nice-text, #111);background:var(--nice-surface, #fff);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px)}.nice-accesslog-date-range{display:flex;align-items:center;gap:.5rem}.nice-accesslog-clear-filters{padding:.375rem .75rem;font-size:.75rem;color:var(--nice-danger, #dc2626);background:transparent;border:1px solid var(--nice-danger, #dc2626);border-radius:var(--nice-radius-sm, 4px);cursor:pointer}.nice-accesslog-clear-filters:hover{background:#dc26260d}.nice-accesslog-tabs{display:flex;align-items:center;gap:.25rem;padding:0 1.25rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-accesslog-tab{padding:.75rem 1rem;font-size:.813rem;font-weight:500;color:var(--nice-text-muted, #6b7280);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;transition:all .15s ease}.nice-accesslog-tab:hover{color:var(--nice-text, #111)}.nice-accesslog-tab--active{color:var(--nice-primary, #2563eb);border-bottom-color:var(--nice-primary, #2563eb)}.nice-accesslog-count{margin-left:auto;font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-accesslog-content{flex:1;overflow:auto}.nice-accesslog-loading,.nice-accesslog-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:3rem;color:var(--nice-text-muted, #9ca3af)}.nice-accesslog-spinner{width:32px;height:32px;border:3px solid var(--nice-border, #e5e7eb);border-top-color:var(--nice-primary, #2563eb);border-radius:var(--nice-radius-full, 50%);animation:nice-accesslog-spin .6s linear infinite}@keyframes nice-accesslog-spin{to{transform:rotate(360deg)}}.nice-accesslog-empty-icon{font-size:2rem;opacity:.5}.nice-accesslog-table-wrapper{overflow-x:auto}.nice-accesslog-table{width:100%;border-collapse:collapse}.nice-accesslog-table th,.nice-accesslog-table td{padding:.75rem 1rem;text-align:left;white-space:nowrap}.nice-accesslog-table th{font-size:.688rem;font-weight:600;color:var(--nice-text-muted, #6b7280);text-transform:uppercase;letter-spacing:.025em;background:var(--nice-surface-subtle, #f9fafb);border-bottom:1px solid var(--nice-border, #e5e7eb);position:sticky;top:0;z-index:1}.nice-accesslog-row{cursor:pointer;transition:background .1s ease}.nice-accesslog-row:hover{background:var(--nice-surface-subtle, #f9fafb)}.nice-accesslog-row--selected{background:var(--nice-primary-subtle, #eff6ff)}.nice-accesslog-row--failed{background:#ef444408}.nice-accesslog-cell{font-size:.813rem;color:var(--nice-text, #111);border-bottom:1px solid var(--nice-border, #f3f4f6)}.nice-accesslog-cell--timestamp{color:var(--nice-text-muted, #6b7280);font-family:var(--nice-font-mono, monospace);font-size:.75rem}.nice-accesslog-user{display:flex;flex-direction:column}.nice-accesslog-username{font-weight:500}.nice-accesslog-email{font-size:.688rem;color:var(--nice-text-muted, #9ca3af)}.nice-accesslog-event{display:inline-flex;align-items:center;gap:.375rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:var(--nice-radius-sm, 4px);background:var(--nice-surface-subtle, #f3f4f6)}.nice-accesslog-event--login_success{color:var(--nice-success, #22c55e);background:var(--nice-success-tint-10, rgba(34, 197, 94, .1))}.nice-accesslog-event--login_failed{color:var(--nice-danger, #ef4444);background:var(--nice-danger-tint-10, rgba(239, 68, 68, .1))}.nice-accesslog-event--suspicious_activity{color:var(--nice-accent, #7c3aed);background:var(--nice-accent-tint-10, rgba(124, 58, 237, .1))}.nice-accesslog-event-icon{font-size:.875rem}.nice-accesslog-ip{font-family:var(--nice-font-mono, monospace);font-size:.75rem}.nice-accesslog-block-btn{margin-left:.5rem;padding:.125rem .25rem;font-size:.75rem;background:transparent;border:none;cursor:pointer;opacity:0;transition:opacity .15s ease}.nice-accesslog-row:hover .nice-accesslog-block-btn{opacity:1}.nice-accesslog-flag{margin-right:.25rem}.nice-accesslog-device{display:flex;align-items:center;gap:.375rem;font-size:.75rem}.nice-accesslog-risk{display:inline-flex;flex-direction:column;align-items:center;padding:.25rem .5rem;border-radius:var(--nice-radius-sm, 4px);background:color-mix(in srgb,var(--risk-color) 10%,transparent)}.nice-accesslog-risk-score{font-size:.875rem;font-weight:700;color:var(--risk-color)}.nice-accesslog-risk-label{font-size:.625rem;font-weight:500;color:var(--risk-color);text-transform:uppercase}.nice-accesslog-status{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:.875rem;font-weight:700;border-radius:var(--nice-radius-full, 50%)}.nice-accesslog-status--success{color:var(--nice-success, #22c55e);background:var(--nice-success-tint-10, rgba(34, 197, 94, .1))}.nice-accesslog-status--failed{color:var(--nice-danger, #ef4444);background:var(--nice-danger-tint-10, rgba(239, 68, 68, .1))}.nice-accesslog-timeline{display:flex;flex-direction:column;padding:1rem}.nice-accesslog-timeline-item{display:flex;gap:1rem;padding:1rem 0;border-bottom:1px solid var(--nice-border, #f3f4f6);cursor:pointer;transition:background .15s ease}.nice-accesslog-timeline-item:hover{background:var(--nice-surface-subtle, #f9fafb);margin:0 -1rem;padding:1rem}.nice-accesslog-timeline-marker{flex-shrink:0;width:12px;height:12px;margin-top:.25rem;border-radius:var(--nice-radius-full, 50%)}.nice-accesslog-timeline-content{flex:1;display:flex;flex-direction:column;gap:.25rem}.nice-accesslog-timeline-header{display:flex;justify-content:space-between;align-items:center}.nice-accesslog-timeline-event{font-weight:600;color:var(--nice-text, #111)}.nice-accesslog-timeline-time{font-size:.75rem;color:var(--nice-text-muted, #9ca3af)}.nice-accesslog-timeline-details{display:flex;gap:.5rem;font-size:.813rem;color:var(--nice-text-muted, #6b7280)}.nice-accesslog-timeline-flags{display:flex;gap:.25rem;margin-top:.25rem}.nice-accesslog-flag-badge{padding:.125rem .375rem;font-size:.625rem;font-weight:500;color:var(--nice-accent, #7c3aed);background:var(--nice-accent-tint-10, rgba(124, 58, 237, .1));border-radius:var(--nice-radius-full, 9999px)}.nice-accesslog-map{height:400px}.nice-accesslog-map-placeholder{display:flex;align-items:center;justify-content:center;height:100%;font-size:1rem;color:var(--nice-text-muted, #9ca3af);background:var(--nice-surface-subtle, #f9fafb)}.nice-accesslog-show-more{display:block;width:100%;padding:1rem;font-size:.875rem;font-weight:500;color:var(--nice-primary, #2563eb);background:var(--nice-surface-subtle, #f9fafb);border:none;border-top:1px solid var(--nice-border, #e5e7eb);cursor:pointer}.nice-accesslog-show-more:hover{background:var(--nice-primary-subtle, #eff6ff)}.nice-accesslog-detail{position:absolute;top:0;right:0;bottom:0;width:360px;background:var(--nice-surface, #fff);border-left:1px solid var(--nice-border, #e5e7eb);box-shadow:-4px 0 20px var(--nice-overlay-10, rgba(0, 0, 0, .1));overflow-y:auto;z-index:10}.nice-accesslog-detail-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--nice-border, #e5e7eb)}.nice-accesslog-detail-header h3{margin:0;font-size:1rem;font-weight:600}.nice-accesslog-detail-close{width:28px;height:28px;font-size:1rem;color:var(--nice-text-muted, #6b7280);background:var(--nice-surface-subtle, #f3f4f6);border:none;border-radius:var(--nice-radius-full, 50%);cursor:pointer}.nice-accesslog-detail-close:hover{background:var(--nice-surface-hover, #e5e7eb)}.nice-accesslog-detail-content{padding:1rem}.nice-accesslog-detail-row{margin-bottom:1rem}.nice-accesslog-detail-label{display:block;margin-bottom:.25rem;font-size:.688rem;font-weight:600;color:var(--nice-text-muted, #6b7280);text-transform:uppercase;letter-spacing:.025em}.nice-accesslog-detail-value{font-size:.875rem;color:var(--nice-text, #111)}.nice-accesslog-coords,.nice-accesslog-fingerprint{font-size:.75rem;color:var(--nice-text-muted, #9ca3af);font-family:var(--nice-font-mono, monospace);margin-top:.25rem}.nice-accesslog-detail-json{margin:0;padding:.75rem;font-size:.75rem;font-family:var(--nice-font-mono, monospace);color:var(--nice-text, #111);background:var(--nice-surface-subtle, #f9fafb);border:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-sm, 4px);overflow-x:auto;white-space:pre-wrap;word-break:break-all}[data-theme=dark] .nice-accesslog,.nice-dark .nice-accesslog{--nice-surface: #1f2937;--nice-surface-subtle: #374151;--nice-surface-hover: #4b5563;--nice-border: #4b5563;--nice-text: #f9fafb;--nice-text-muted: #9ca3af;--nice-primary-subtle: rgba(37, 99, 235, .2)}@media(max-width:768px){.nice-accesslog-stats{flex-wrap:wrap}.nice-accesslog-stat{flex:1;min-width:70px}.nice-accesslog-detail{width:100%;position:fixed;top:auto;bottom:0;max-height:60vh;border-left:none;border-top:1px solid var(--nice-border, #e5e7eb);border-radius:var(--nice-radius-lg, 12px) var(--nice-radius-lg, 12px) 0 0}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nice2dev/ui-enterprise",
3
- "version": "1.0.30",
3
+ "version": "1.1.5",
4
4
  "description": "Nice2Dev UI Enterprise - Compliance & enterprise-grade React components: DataExportCenter, AuditTrail, ContractEditor, GDPRConsent, GlobalSearch, InvoiceDesigner, AccessLog",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -37,15 +37,17 @@
37
37
  "react-dom": ">=17.0.0"
38
38
  },
39
39
  "devDependencies": {
40
- "@testing-library/react": "^14.1.0",
41
- "@types/react": "^18.2.0",
42
- "@types/react-dom": "^18.2.0",
43
- "react": "^18.2.0",
44
- "react-dom": "^18.2.0",
45
- "typescript": "^5.3.0",
46
- "vite": "^5.0.0",
40
+ "@nice2dev/icons": "^1.1.5",
41
+ "@nice2dev/ui": "^1.1.5",
42
+ "@testing-library/react": "^16.3.3",
43
+ "@types/react": "^19.2.18",
44
+ "@types/react-dom": "^19.2.7",
45
+ "react": "^19.2.8",
46
+ "react-dom": "^19.2.8",
47
+ "typescript": "^5.9.3",
48
+ "vite": "^6.4.1",
47
49
  "vite-plugin-dts": "^4.5.4",
48
- "vitest": "^4.1.0"
50
+ "vitest": "^4.1.11"
49
51
  },
50
52
  "keywords": [
51
53
  "enterprise",