@nice2dev/admin 1.0.8 → 1.0.10
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 +1 -1
- package/dist/index.mjs +822 -726
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("react"),G=a.forwardRef(function(p,_){const{widgets:u,columns:b=4,title:g="Dashboard",headerActions:v,onWidgetClick:x,className:f,style:y}=p;return e.jsxs("div",{ref:_,className:`nice-admin-dashboard ${f??""}`,style:y,children:[e.jsxs("div",{className:"nice-admin-dashboard__header",children:[e.jsx("h2",{children:g}),v&&e.jsx("div",{className:"nice-admin-dashboard__actions",children:v})]}),e.jsx("div",{className:"nice-admin-dashboard__grid",style:{display:"grid",gridTemplateColumns:`repeat(${b}, 1fr)`,gap:16},children:u.map(r=>e.jsxs("div",{className:`nice-admin-dashboard__widget nice-admin-dashboard__widget--${r.type}`,style:{gridColumn:r.colSpan?`span ${r.colSpan}`:void 0,gridRow:r.rowSpan?`span ${r.rowSpan}`:void 0},onClick:()=>x==null?void 0:x(r),role:x?"button":void 0,tabIndex:x?0:void 0,children:[e.jsxs("div",{className:"nice-admin-dashboard__widget-header",children:[r.icon&&e.jsx("span",{className:"nice-admin-dashboard__widget-icon",children:r.icon}),e.jsx("span",{className:"nice-admin-dashboard__widget-title",children:r.title})]}),r.type==="stat"&&e.jsxs("div",{className:"nice-admin-dashboard__stat",children:[e.jsx("span",{className:"nice-admin-dashboard__stat-value",children:r.value}),r.change&&e.jsx("span",{className:`nice-admin-dashboard__stat-change ${r.changePositive?"nice-admin-dashboard__stat-change--positive":"nice-admin-dashboard__stat-change--negative"}`,children:r.change})]}),r.type==="custom"&&r.render&&e.jsx("div",{className:"nice-admin-dashboard__custom",children:r.render()}),(r.type==="chart"||r.type==="table"||r.type==="list")&&r.render&&e.jsx("div",{className:"nice-admin-dashboard__content",children:r.render()})]},r.id))})]})}),O={active:"#22c55e",inactive:"#9ca3af",suspended:"#ef4444",pending:"#eab308"},q=a.forwardRef(function(p,_){const{users:u,availableRoles:b=[],onCreate:g,onEdit:v,onDelete:x,onToggleStatus:f,onChangeRoles:y,searchable:r=!0,title:k="User Management",className:S,style:j}=p,[N,C]=a.useState(""),[i,s]=a.useState(""),c=a.useMemo(()=>{let n=u;if(i&&(n=n.filter(m=>m.status===i)),N.trim()){const m=N.toLowerCase();n=n.filter(R=>R.name.toLowerCase().includes(m)||R.email.toLowerCase().includes(m)||R.roles.some(F=>F.toLowerCase().includes(m)))}return n},[u,i,N]),h=a.useCallback(n=>{if(!f)return;const m=n.status==="active"?"suspended":"active";f(n.id,m)},[f]);return e.jsxs("div",{ref:_,className:`nice-admin-users ${S??""}`,style:j,children:[e.jsxs("div",{className:"nice-admin-users__header",children:[e.jsx("h3",{children:k}),e.jsxs("span",{className:"nice-admin-users__count",children:[u.length," users"]}),g&&e.jsx("button",{className:"nice-admin-users__create-btn",onClick:g,children:"+ Add User"})]}),e.jsxs("div",{className:"nice-admin-users__toolbar",children:[r&&e.jsx("input",{type:"text",value:N,onChange:n=>C(n.target.value),placeholder:"Search users…",className:"nice-admin-users__search"}),e.jsxs("select",{value:i,onChange:n=>s(n.target.value),className:"nice-admin-users__status-filter",children:[e.jsx("option",{value:"",children:"All statuses"}),e.jsx("option",{value:"active",children:"Active"}),e.jsx("option",{value:"inactive",children:"Inactive"}),e.jsx("option",{value:"suspended",children:"Suspended"}),e.jsx("option",{value:"pending",children:"Pending"})]})]}),c.length===0?e.jsx("p",{className:"nice-admin-users__empty",children:"No users found."}):e.jsxs("table",{className:"nice-admin-users__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"User"}),e.jsx("th",{children:"Email"}),e.jsx("th",{children:"Roles"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Created"}),e.jsx("th",{children:"Last Login"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:c.map(n=>e.jsxs("tr",{children:[e.jsxs("td",{className:"nice-admin-users__user-cell",children:[n.avatarUrl&&e.jsx("img",{src:n.avatarUrl,alt:"",className:"nice-admin-users__avatar"}),e.jsx("span",{children:n.name})]}),e.jsx("td",{children:n.email}),e.jsx("td",{children:y?e.jsx("select",{multiple:!0,value:n.roles,onChange:m=>{const R=Array.from(m.target.selectedOptions,F=>F.value);y(n.id,R)},className:"nice-admin-users__roles-select",children:b.map(m=>e.jsx("option",{value:m,children:m},m))}):n.roles.join(", ")}),e.jsx("td",{children:e.jsx("span",{className:"nice-admin-users__status-badge",style:{backgroundColor:O[n.status]},onClick:()=>h(n),role:f?"button":void 0,children:n.status})}),e.jsx("td",{children:n.createdAt}),e.jsx("td",{children:n.lastLoginAt??"—"}),e.jsxs("td",{className:"nice-admin-users__actions",children:[v&&e.jsx("button",{onClick:()=>v(n),children:"Edit"}),x&&e.jsx("button",{onClick:()=>x(n.id),children:"Delete"})]})]},n.id))})]})]})}),P=a.forwardRef(function(p,_){var o;const{roles:u,actions:b,resources:g,onPermissionChange:v,onCreate:x,onDelete:f,onRename:y,title:r="Role Management",className:k,style:S}=p,[j,N]=a.useState(((o=u[0])==null?void 0:o.id)??null),[C,i]=a.useState(!1),[s,c]=a.useState(""),[h,n]=a.useState(""),m=u.find(l=>l.id===j),R=a.useCallback(()=>{!s.trim()||!x||(x(s.trim(),h.trim()),c(""),n(""),i(!1))},[s,h,x]),F=(l,d,t)=>{var w;return((w=l.permissions[d])==null?void 0:w.includes(t))??!1};return e.jsxs("div",{ref:_,className:`nice-admin-roles ${k??""}`,style:S,children:[e.jsxs("div",{className:"nice-admin-roles__header",children:[e.jsx("h3",{children:r}),x&&e.jsx("button",{onClick:()=>i(!C),children:"+ New Role"})]}),C&&e.jsxs("div",{className:"nice-admin-roles__create-form",children:[e.jsx("input",{type:"text",value:s,onChange:l=>c(l.target.value),placeholder:"Role name"}),e.jsx("input",{type:"text",value:h,onChange:l=>n(l.target.value),placeholder:"Description"}),e.jsx("button",{onClick:R,disabled:!s.trim(),children:"Create"}),e.jsx("button",{onClick:()=>i(!1),children:"Cancel"})]}),e.jsx("div",{className:"nice-admin-roles__tabs",children:u.map(l=>e.jsxs("button",{className:`nice-admin-roles__tab ${l.id===j?"nice-admin-roles__tab--active":""}`,onClick:()=>N(l.id),style:l.color?{borderColor:l.color}:void 0,children:[l.name,l.userCount!=null&&e.jsxs("span",{className:"nice-admin-roles__tab-count",children:["(",l.userCount,")"]}),l.isSystem&&e.jsx("span",{className:"nice-admin-roles__tab-system",children:"🔒"})]},l.id))}),m&&e.jsxs("div",{className:"nice-admin-roles__matrix-wrap",children:[m.description&&e.jsx("p",{className:"nice-admin-roles__description",children:m.description}),e.jsxs("table",{className:"nice-admin-roles__matrix",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Resource"}),b.map(l=>e.jsx("th",{title:l.description,children:l.label},l.id))]})}),e.jsx("tbody",{children:g.map(l=>e.jsxs("tr",{children:[e.jsx("td",{children:l.label}),b.map(d=>{const t=F(m,l.id,d.id);return e.jsx("td",{children:e.jsx("input",{type:"checkbox",checked:t,onChange:()=>v==null?void 0:v(m.id,l.id,d.id,!t),disabled:m.isSystem})},d.id)})]},l.id))})]}),!m.isSystem&&e.jsxs("div",{className:"nice-admin-roles__role-actions",children:[y&&e.jsx("button",{onClick:()=>{const l=prompt("New role name:",m.name);l&&y(m.id,l)},children:"Rename"}),f&&e.jsx("button",{onClick:()=>f(m.id),children:"Delete Role"})]})]})]})}),H={info:{color:"#3b82f6",label:"INFO"},warning:{color:"#eab308",label:"WARN"},error:{color:"#ef4444",label:"ERROR"},critical:{color:"#dc2626",label:"CRIT"}},Y=a.forwardRef(function(p,_){const{entries:u,onEntryClick:b,onLoadMore:g,hasMore:v=!1,searchable:x=!0,showSeverityFilter:f=!0,title:y="Audit Log",className:r,style:k}=p,[S,j]=a.useState(""),[N,C]=a.useState(""),i=a.useMemo(()=>{let s=u;if(N&&(s=s.filter(c=>c.severity===N)),S.trim()){const c=S.toLowerCase();s=s.filter(h=>{var n;return h.actorName.toLowerCase().includes(c)||h.action.toLowerCase().includes(c)||h.resource.toLowerCase().includes(c)||((n=h.details)==null?void 0:n.toLowerCase().includes(c))})}return s},[u,N,S]);return e.jsxs("div",{ref:_,className:`nice-admin-audit-log ${r??""}`,style:k,children:[e.jsxs("div",{className:"nice-admin-audit-log__header",children:[e.jsx("h3",{children:y}),e.jsxs("span",{className:"nice-admin-audit-log__count",children:[u.length," entries"]})]}),e.jsxs("div",{className:"nice-admin-audit-log__toolbar",children:[x&&e.jsx("input",{type:"text",value:S,onChange:s=>j(s.target.value),placeholder:"Search audit log…",className:"nice-admin-audit-log__search"}),f&&e.jsxs("select",{value:N,onChange:s=>C(s.target.value),className:"nice-admin-audit-log__severity-filter",children:[e.jsx("option",{value:"",children:"All severities"}),e.jsx("option",{value:"info",children:"Info"}),e.jsx("option",{value:"warning",children:"Warning"}),e.jsx("option",{value:"error",children:"Error"}),e.jsx("option",{value:"critical",children:"Critical"})]})]}),i.length===0?e.jsx("p",{className:"nice-admin-audit-log__empty",children:"No audit log entries found."}):e.jsxs("table",{className:"nice-admin-audit-log__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Timestamp"}),e.jsx("th",{children:"Severity"}),e.jsx("th",{children:"Actor"}),e.jsx("th",{children:"Action"}),e.jsx("th",{children:"Resource"}),e.jsx("th",{children:"IP"}),e.jsx("th",{children:"Details"})]})}),e.jsx("tbody",{children:i.map(s=>{const c=H[s.severity];return e.jsxs("tr",{className:"nice-admin-audit-log__row",onClick:()=>b==null?void 0:b(s),role:b?"button":void 0,tabIndex:b?0:void 0,children:[e.jsx("td",{children:s.timestamp}),e.jsx("td",{children:e.jsx("span",{className:"nice-admin-audit-log__severity",style:{color:c.color},children:c.label})}),e.jsx("td",{children:s.actorName}),e.jsx("td",{children:s.action}),e.jsxs("td",{children:[s.resource,s.resourceId?` #${s.resourceId}`:""]}),e.jsx("td",{children:s.ipAddress??"—"}),e.jsx("td",{className:"nice-admin-audit-log__details",children:s.details??"—"})]},s.id)})})]}),v&&g&&e.jsx("button",{className:"nice-admin-audit-log__load-more",onClick:g,children:"Load more"})]})}),V=a.forwardRef(function(p,_){const{settings:u,onSave:b,onChange:g,onReset:v,saving:x=!1,title:f="Settings",className:y,style:r}=p,[k,S]=a.useState(()=>{const s={};for(const c of u)s[c.key]=c.value;return s}),j=a.useCallback((s,c)=>{S(h=>({...h,[s]:c})),g==null||g(s,c)},[g]),N=a.useCallback(()=>{b==null||b(k)},[b,k]),C=new Map;for(const s of u){const c=s.section??"General";C.has(c)||C.set(c,[]),C.get(c).push(s)}const i=s=>{var h;const c=k[s.key];switch(s.type){case"boolean":return e.jsxs("label",{className:"nice-admin-settings__toggle",children:[e.jsx("input",{type:"checkbox",checked:!!c,onChange:n=>j(s.key,n.target.checked)}),s.label]});case"select":return e.jsx("select",{value:String(c??""),onChange:n=>j(s.key,n.target.value),className:"nice-admin-settings__select",children:(h=s.options)==null?void 0:h.map(n=>e.jsx("option",{value:n.value,children:n.label},n.value))});case"textarea":return e.jsx("textarea",{value:String(c??""),onChange:n=>j(s.key,n.target.value),placeholder:s.placeholder,className:"nice-admin-settings__textarea",rows:4});case"number":return e.jsx("input",{type:"number",value:c!=null?Number(c):"",onChange:n=>j(s.key,parseFloat(n.target.value)||0),placeholder:s.placeholder,className:"nice-admin-settings__input"});case"color":return e.jsx("input",{type:"color",value:String(c??"#000000"),onChange:n=>j(s.key,n.target.value),className:"nice-admin-settings__color"});case"password":return e.jsx("input",{type:"password",value:String(c??""),onChange:n=>j(s.key,n.target.value),placeholder:s.placeholder,className:"nice-admin-settings__input",autoComplete:"new-password"});default:return e.jsx("input",{type:"text",value:String(c??""),onChange:n=>j(s.key,n.target.value),placeholder:s.placeholder,className:"nice-admin-settings__input"})}};return e.jsxs("div",{ref:_,className:`nice-admin-settings ${y??""}`,style:r,children:[e.jsx("div",{className:"nice-admin-settings__header",children:e.jsx("h3",{children:f})}),Array.from(C.entries()).map(([s,c])=>e.jsxs("fieldset",{className:"nice-admin-settings__section",children:[e.jsx("legend",{children:s}),c.map(h=>e.jsxs("div",{className:"nice-admin-settings__field",children:[h.type!=="boolean"&&e.jsxs("label",{className:"nice-admin-settings__label",children:[h.label,h.required&&e.jsx("span",{className:"nice-admin-settings__required",children:"*"})]}),h.description&&e.jsx("p",{className:"nice-admin-settings__description",children:h.description}),i(h)]},h.key))]},s)),e.jsxs("div",{className:"nice-admin-settings__actions",children:[e.jsx("button",{className:"nice-admin-settings__save-btn",onClick:N,disabled:x,children:x?"Saving…":"Save Settings"}),v&&e.jsx("button",{className:"nice-admin-settings__reset-btn",onClick:v,children:"Reset to Defaults"})]})]})}),K=a.forwardRef(function(p,_){const{notifications:u,availableChannels:b=["email","push","sms","in-app","webhook"],onToggle:g,onEdit:v,onTest:x,onCreate:f,onDelete:y,title:r="Notification Management",className:k,style:S}=p,[j,N]=a.useState(""),C=a.useMemo(()=>{if(!j.trim())return u;const i=j.toLowerCase();return u.filter(s=>{var c;return s.name.toLowerCase().includes(i)||s.event.toLowerCase().includes(i)||((c=s.description)==null?void 0:c.toLowerCase().includes(i))})},[u,j]);return e.jsxs("div",{ref:_,className:`nice-admin-notifications ${k??""}`,style:S,children:[e.jsxs("div",{className:"nice-admin-notifications__header",children:[e.jsx("h3",{children:r}),f&&e.jsx("button",{onClick:f,children:"+ New Notification"})]}),e.jsx("input",{type:"text",value:j,onChange:i=>N(i.target.value),placeholder:"Search notifications…",className:"nice-admin-notifications__search"}),C.length===0?e.jsx("p",{className:"nice-admin-notifications__empty",children:"No notifications found."}):e.jsxs("table",{className:"nice-admin-notifications__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Enabled"}),e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Event"}),e.jsx("th",{children:"Channels"}),e.jsx("th",{children:"Last Sent"}),e.jsx("th",{children:"Sent"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:C.map(i=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("input",{type:"checkbox",checked:i.enabled,onChange:()=>g==null?void 0:g(i.id,!i.enabled)})}),e.jsxs("td",{children:[e.jsx("strong",{children:i.name}),i.description&&e.jsx("br",{}),i.description&&e.jsx("small",{children:i.description})]}),e.jsx("td",{children:e.jsx("code",{children:i.event})}),e.jsx("td",{children:i.channels.join(", ")}),e.jsx("td",{children:i.lastSentAt??"—"}),e.jsx("td",{children:i.sentCount??0}),e.jsxs("td",{className:"nice-admin-notifications__actions",children:[v&&e.jsx("button",{onClick:()=>v(i),children:"Edit"}),x&&e.jsx("button",{onClick:()=>x(i.id),children:"Test"}),y&&e.jsx("button",{onClick:()=>y(i.id),children:"Delete"})]})]},i.id))})]})]})}),B=a.forwardRef(function(p,_){const{flags:u,environmentNames:b=["development","staging","production"],onToggle:g,onPercentageChange:v,onCreate:x,onDelete:f,onEdit:y,title:r="Feature Flags",className:k,style:S}=p,[j,N]=a.useState(""),[C,i]=a.useState(!1),[s,c]=a.useState(""),[h,n]=a.useState(""),[m,R]=a.useState(""),F=a.useMemo(()=>{if(!j.trim())return u;const d=j.toLowerCase();return u.filter(t=>{var w,L;return t.key.toLowerCase().includes(d)||t.name.toLowerCase().includes(d)||((w=t.description)==null?void 0:w.toLowerCase().includes(d))||((L=t.tags)==null?void 0:L.some(E=>E.toLowerCase().includes(d)))})},[u,j]),o=a.useCallback(()=>{!s.trim()||!h.trim()||!x||(x(s.trim(),h.trim(),m.trim()),c(""),n(""),R(""),i(!1))},[s,h,m,x]),l=(d,t)=>d.environments.find(w=>w.name===t);return e.jsxs("div",{ref:_,className:`nice-feature-flags ${k??""}`,style:S,children:[e.jsxs("div",{className:"nice-feature-flags__header",children:[e.jsx("h3",{children:r}),e.jsxs("span",{className:"nice-feature-flags__count",children:[u.length," flags"]}),x&&e.jsx("button",{onClick:()=>i(!C),children:"+ New Flag"})]}),C&&e.jsxs("div",{className:"nice-feature-flags__create-form",children:[e.jsx("input",{type:"text",value:s,onChange:d=>c(d.target.value),placeholder:"flag_key"}),e.jsx("input",{type:"text",value:h,onChange:d=>n(d.target.value),placeholder:"Display name"}),e.jsx("input",{type:"text",value:m,onChange:d=>R(d.target.value),placeholder:"Description"}),e.jsx("button",{onClick:o,disabled:!s.trim()||!h.trim(),children:"Create"}),e.jsx("button",{onClick:()=>i(!1),children:"Cancel"})]}),e.jsx("input",{type:"text",value:j,onChange:d=>N(d.target.value),placeholder:"Search flags…",className:"nice-feature-flags__search"}),F.length===0?e.jsx("p",{className:"nice-feature-flags__empty",children:"No feature flags found."}):e.jsxs("table",{className:"nice-feature-flags__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Flag"}),b.map(d=>e.jsx("th",{children:d},d)),e.jsx("th",{children:"Tags"}),e.jsx("th",{children:"Updated"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:F.map(d=>{var t;return e.jsxs("tr",{children:[e.jsx("td",{children:e.jsxs("div",{className:"nice-feature-flags__flag-info",children:[e.jsx("strong",{children:d.name}),e.jsx("code",{className:"nice-feature-flags__key",children:d.key}),d.description&&e.jsx("small",{children:d.description})]})}),b.map(w=>{const L=l(d,w);return e.jsxs("td",{className:"nice-feature-flags__env-cell",children:[e.jsx("input",{type:"checkbox",checked:(L==null?void 0:L.enabled)??!1,onChange:()=>g==null?void 0:g(d.id,w,!((L==null?void 0:L.enabled)??!1))}),(L==null?void 0:L.percentage)!=null&&e.jsx("input",{type:"number",min:0,max:100,value:L.percentage,onChange:E=>v==null?void 0:v(d.id,w,parseInt(E.target.value,10)||0),className:"nice-feature-flags__percentage",title:"Rollout %"})]},w)}),e.jsx("td",{children:((t=d.tags)==null?void 0:t.join(", "))||"—"}),e.jsx("td",{children:d.updatedAt??d.createdAt}),e.jsxs("td",{className:"nice-feature-flags__actions",children:[y&&e.jsx("button",{onClick:()=>y(d),children:"Edit"}),f&&e.jsx("button",{onClick:()=>f(d.id),children:"Delete"})]})]},d.id)})})]})]})}),J=a.forwardRef(function(p,_){var F;const{entities:u,formats:b=["json","csv","xlsx"],jobs:g=[],onImport:v,onExport:x,onDownload:f,title:y="Import / Export",className:r,style:k}=p,[S,j]=a.useState("export"),[N,C]=a.useState(((F=u[0])==null?void 0:F.id)??""),[i,s]=a.useState(b[0]??"json"),[c,h]=a.useState(null),n=a.useCallback(()=>{!v||!c||!N||(v(N,i,c),h(null))},[v,N,i,c]),m=a.useCallback(()=>{!x||!N||x(N,i)},[x,N,i]),R=o=>{var l;h(((l=o.target.files)==null?void 0:l[0])??null)};return e.jsxs("div",{ref:_,className:`nice-import-export ${r??""}`,style:k,children:[e.jsx("div",{className:"nice-import-export__header",children:e.jsx("h3",{children:y})}),e.jsxs("div",{className:"nice-import-export__tabs",children:[e.jsx("button",{className:`nice-import-export__tab ${S==="import"?"nice-import-export__tab--active":""}`,onClick:()=>j("import"),children:"Import"}),e.jsx("button",{className:`nice-import-export__tab ${S==="export"?"nice-import-export__tab--active":""}`,onClick:()=>j("export"),children:"Export"})]}),e.jsxs("div",{className:"nice-import-export__form",children:[e.jsxs("label",{children:["Entity",e.jsx("select",{value:N,onChange:o=>C(o.target.value),children:u.map(o=>e.jsx("option",{value:o.id,children:o.label},o.id))})]}),e.jsxs("label",{children:["Format",e.jsx("select",{value:i,onChange:o=>s(o.target.value),children:b.map(o=>e.jsx("option",{value:o,children:o.toUpperCase()},o))})]}),S==="import"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["File",e.jsx("input",{type:"file",onChange:R,accept:`.${i}`})]}),e.jsx("button",{className:"nice-import-export__action-btn",onClick:n,disabled:!c,children:"Start Import"})]}),S==="export"&&e.jsx("button",{className:"nice-import-export__action-btn",onClick:m,children:"Start Export"})]}),g.length>0&&e.jsxs("div",{className:"nice-import-export__jobs",children:[e.jsx("h4",{children:"Recent Jobs"}),e.jsxs("table",{className:"nice-import-export__jobs-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Format"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Progress"}),e.jsx("th",{children:"Errors"}),e.jsx("th",{children:"Created"}),e.jsx("th",{})]})}),e.jsx("tbody",{children:g.map(o=>e.jsxs("tr",{children:[e.jsx("td",{children:o.type}),e.jsx("td",{children:o.format.toUpperCase()}),e.jsx("td",{children:e.jsx("span",{className:`nice-import-export__status nice-import-export__status--${o.status}`,children:o.status})}),e.jsx("td",{children:o.processedRows!=null&&o.totalRows?`${o.processedRows} / ${o.totalRows}`:"—"}),e.jsx("td",{children:o.errorCount??0}),e.jsx("td",{children:o.createdAt}),e.jsx("td",{children:o.type==="export"&&o.status==="completed"&&f&&e.jsx("button",{onClick:()=>f(o.id),children:"Download"})})]},o.id))})]})]})]})}),I=a.createContext({flags:{}});function W({config:A,children:p}){return e.jsx(I.Provider,{value:A,children:p})}function $(A){const p=a.useContext(I);return a.useMemo(()=>{const _=p.flags[A];return _===void 0?{enabled:!1}:typeof _=="boolean"?{enabled:_}:{enabled:_>0,percentage:_}},[p.flags,A])}function M({flag:A,fallback:p=null,children:_}){const{enabled:u}=$(A);return e.jsx(e.Fragment,{children:u?_:p})}const T={low:"#2196f3",medium:"#ff9800",high:"#f44336",critical:"#9c27b0"},D={field:"Hidden Field",endpoint:"Decoy Endpoint",file:"Canary File",credential:"Fake Credential",cookie:"Tracking Cookie"},z=a.forwardRef(function({tokens:p,events:_,onCreate:u,onToggle:b,onDelete:g,onDismissEvent:v,title:x="Honey Tokens",className:f,style:y},r){const[k,S]=a.useState(""),[j,N]=a.useState(!1),[C,i]=a.useState(""),[s,c]=a.useState("field"),[h,n]=a.useState("medium"),[m,R]=a.useState(""),F=a.useMemo(()=>p.filter(t=>t.name.toLowerCase().includes(k.toLowerCase())||t.location.toLowerCase().includes(k.toLowerCase())),[p,k]),o=a.useMemo(()=>[..._].sort((t,w)=>new Date(w.timestamp).getTime()-new Date(t.timestamp).getTime()),[_]),l=a.useMemo(()=>{const t=p.filter(E=>E.active).length,w=p.reduce((E,U)=>E+U.tripCount,0),L=_.filter(E=>E.severity==="critical").length;return{activeCount:t,totalCount:p.length,totalTrips:w,criticalEvents:L}},[p,_]),d=()=>{C.trim()&&m.trim()&&u&&(u(C.trim(),s,h,m.trim()),i(""),R(""),N(!1))};return e.jsxs("div",{ref:r,className:`nice-honey-token-dashboard${f?` ${f}`:""}`,style:y,children:[e.jsxs("div",{className:"nice-honey-token-dashboard__header",children:[e.jsx("h2",{children:x}),e.jsxs("div",{className:"nice-honey-token-dashboard__stats",children:[e.jsxs("span",{className:"nice-honey-token-dashboard__stat",children:["Active: ",l.activeCount,"/",l.totalCount]}),e.jsxs("span",{className:"nice-honey-token-dashboard__stat",children:["Trips: ",l.totalTrips]}),l.criticalEvents>0&&e.jsxs("span",{className:"nice-honey-token-dashboard__stat nice-honey-token-dashboard__stat--critical",children:["Critical: ",l.criticalEvents]})]})]}),e.jsxs("div",{className:"nice-honey-token-dashboard__toolbar",children:[e.jsx("input",{type:"text",className:"nice-honey-token-dashboard__search",placeholder:"Search tokens...",value:k,onChange:t=>S(t.target.value)}),u&&e.jsx("button",{className:"nice-honey-token-dashboard__btn",onClick:()=>N(!j),children:j?"Cancel":"+ New Token"})]}),j&&e.jsxs("div",{className:"nice-honey-token-dashboard__create",children:[e.jsx("input",{type:"text",placeholder:"Token name",value:C,onChange:t=>i(t.target.value)}),e.jsx("select",{value:s,onChange:t=>c(t.target.value),children:Object.entries(D).map(([t,w])=>e.jsx("option",{value:t,children:w},t))}),e.jsxs("select",{value:h,onChange:t=>n(t.target.value),children:[e.jsx("option",{value:"low",children:"Low"}),e.jsx("option",{value:"medium",children:"Medium"}),e.jsx("option",{value:"high",children:"High"}),e.jsx("option",{value:"critical",children:"Critical"})]}),e.jsx("input",{type:"text",placeholder:"Location (e.g. /api/admin/secret)",value:m,onChange:t=>R(t.target.value)}),e.jsx("button",{onClick:d,children:"Create"})]}),e.jsxs("div",{className:"nice-honey-token-dashboard__tokens",children:[e.jsxs("h3",{children:["Tokens (",F.length,")"]}),e.jsxs("table",{className:"nice-honey-token-dashboard__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Severity"}),e.jsx("th",{children:"Location"}),e.jsx("th",{children:"Trips"}),e.jsx("th",{children:"Last Tripped"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:F.map(t=>e.jsxs("tr",{className:t.tripCount>0?"nice-honey-token-dashboard__row--tripped":"",children:[e.jsx("td",{children:t.name}),e.jsx("td",{children:D[t.type]}),e.jsx("td",{children:e.jsx("span",{className:"nice-honey-token-dashboard__severity",style:{color:T[t.severity]},children:t.severity})}),e.jsx("td",{children:e.jsx("code",{children:t.location})}),e.jsx("td",{children:t.tripCount}),e.jsx("td",{children:t.lastTripped??"—"}),e.jsx("td",{children:e.jsx("span",{className:`nice-honey-token-dashboard__status--${t.active?"active":"inactive"}`,children:t.active?"Active":"Inactive"})}),e.jsxs("td",{children:[b&&e.jsx("button",{onClick:()=>b(t.id,!t.active),children:t.active?"Disable":"Enable"}),g&&e.jsx("button",{onClick:()=>g(t.id),children:"Delete"})]})]},t.id))})]})]}),o.length>0&&e.jsxs("div",{className:"nice-honey-token-dashboard__events",children:[e.jsxs("h3",{children:["Recent Events (",o.length,")"]}),e.jsx("div",{className:"nice-honey-token-dashboard__event-list",children:o.map(t=>e.jsxs("div",{className:`nice-honey-token-dashboard__event nice-honey-token-dashboard__event--${t.severity}`,children:[e.jsxs("div",{className:"nice-honey-token-dashboard__event-header",children:[e.jsx("strong",{children:t.tokenName}),e.jsx("span",{className:"nice-honey-token-dashboard__severity",style:{color:T[t.severity]},children:t.severity}),e.jsx("time",{children:t.timestamp})]}),e.jsxs("div",{className:"nice-honey-token-dashboard__event-details",children:[e.jsxs("span",{children:["IP: ",t.sourceIp]}),t.userId&&e.jsxs("span",{children:["User: ",t.userId]}),t.details&&e.jsx("span",{children:t.details})]}),v&&e.jsx("button",{className:"nice-honey-token-dashboard__dismiss",onClick:()=>v(t.id),children:"Dismiss"})]},t.id))})]})]})});exports.FeatureGate=M;exports.NiceAdminAuditLog=Y;exports.NiceAdminDashboard=G;exports.NiceAdminNotifications=K;exports.NiceAdminRoles=P;exports.NiceAdminSettings=V;exports.NiceAdminUsers=q;exports.NiceFeatureFlags=B;exports.NiceFeatureGate=M;exports.NiceFeatureGateProvider=W;exports.NiceHoneyTokenDashboard=z;exports.NiceImportExport=J;exports.useFeatureGate=$;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("react"),G=a.forwardRef(function(p,_){const{widgets:m,columns:b=4,title:g="Dashboard",headerActions:v,onWidgetClick:x,className:f,style:S}=p;return e.jsxs("div",{ref:_,className:`nice-admin-dashboard ${f??""}`,style:S,children:[e.jsxs("div",{className:"nice-admin-dashboard__header",children:[e.jsx("h2",{children:g}),v&&e.jsx("div",{className:"nice-admin-dashboard__actions",children:v})]}),e.jsx("div",{className:"nice-admin-dashboard__grid",style:{display:"grid",gridTemplateColumns:`repeat(${b}, 1fr)`,gap:16},children:m.map(l=>e.jsxs("div",{className:`nice-admin-dashboard__widget nice-admin-dashboard__widget--${l.type}`,style:{gridColumn:l.colSpan?`span ${l.colSpan}`:void 0,gridRow:l.rowSpan?`span ${l.rowSpan}`:void 0},onClick:()=>x==null?void 0:x(l),onKeyDown:x?y=>{(y.key==="Enter"||y.key===" ")&&x(l)}:void 0,role:x?"button":void 0,tabIndex:x?0:void 0,children:[e.jsxs("div",{className:"nice-admin-dashboard__widget-header",children:[l.icon&&e.jsx("span",{className:"nice-admin-dashboard__widget-icon",children:l.icon}),e.jsx("span",{className:"nice-admin-dashboard__widget-title",children:l.title})]}),l.type==="stat"&&e.jsxs("div",{className:"nice-admin-dashboard__stat",children:[e.jsx("span",{className:"nice-admin-dashboard__stat-value",children:l.value}),l.change&&e.jsx("span",{className:`nice-admin-dashboard__stat-change ${l.changePositive?"nice-admin-dashboard__stat-change--positive":"nice-admin-dashboard__stat-change--negative"}`,children:l.change})]}),l.type==="custom"&&l.render&&e.jsx("div",{className:"nice-admin-dashboard__custom",children:l.render()}),(l.type==="chart"||l.type==="table"||l.type==="list")&&l.render&&e.jsx("div",{className:"nice-admin-dashboard__content",children:l.render()})]},l.id))})]})}),O={active:"#22c55e",inactive:"#9ca3af",suspended:"#ef4444",pending:"#eab308"},q=a.forwardRef(function(p,_){const{users:m,availableRoles:b=[],onCreate:g,onEdit:v,onDelete:x,onToggleStatus:f,onChangeRoles:S,searchable:l=!0,title:y="User Management",className:k,style:j}=p,[N,C]=a.useState(""),[i,s]=a.useState(""),c=a.useMemo(()=>{let n=m;if(i&&(n=n.filter(o=>o.status===i)),N.trim()){const o=N.toLowerCase();n=n.filter(R=>R.name.toLowerCase().includes(o)||R.email.toLowerCase().includes(o)||R.roles.some(E=>E.toLowerCase().includes(o)))}return n},[m,i,N]),u=a.useCallback(n=>{if(!f)return;const o=n.status==="active"?"suspended":"active";f(n.id,o)},[f]);return e.jsxs("div",{ref:_,className:`nice-admin-users ${k??""}`,style:j,children:[e.jsxs("div",{className:"nice-admin-users__header",children:[e.jsx("h3",{children:y}),e.jsxs("span",{className:"nice-admin-users__count",children:[m.length," users"]}),g&&e.jsx("button",{className:"nice-admin-users__create-btn",onClick:g,children:"+ Add User"})]}),e.jsxs("div",{className:"nice-admin-users__toolbar",children:[l&&e.jsx("input",{type:"text",value:N,onChange:n=>C(n.target.value),placeholder:"Search users…",className:"nice-admin-users__search"}),e.jsxs("select",{value:i,onChange:n=>s(n.target.value),className:"nice-admin-users__status-filter",children:[e.jsx("option",{value:"",children:"All statuses"}),e.jsx("option",{value:"active",children:"Active"}),e.jsx("option",{value:"inactive",children:"Inactive"}),e.jsx("option",{value:"suspended",children:"Suspended"}),e.jsx("option",{value:"pending",children:"Pending"})]})]}),c.length===0?e.jsx("p",{className:"nice-admin-users__empty",children:"No users found."}):e.jsxs("table",{className:"nice-admin-users__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"User"}),e.jsx("th",{children:"Email"}),e.jsx("th",{children:"Roles"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Created"}),e.jsx("th",{children:"Last Login"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:c.map(n=>e.jsxs("tr",{children:[e.jsxs("td",{className:"nice-admin-users__user-cell",children:[n.avatarUrl&&e.jsx("img",{src:n.avatarUrl,alt:"",className:"nice-admin-users__avatar"}),e.jsx("span",{children:n.name})]}),e.jsx("td",{children:n.email}),e.jsx("td",{children:S?e.jsx("select",{multiple:!0,value:n.roles,onChange:o=>{const R=Array.from(o.target.selectedOptions,E=>E.value);S(n.id,R)},className:"nice-admin-users__roles-select",children:b.map(o=>e.jsx("option",{value:o,children:o},o))}):n.roles.join(", ")}),e.jsx("td",{children:e.jsx("span",{className:"nice-admin-users__status-badge",style:{backgroundColor:O[n.status]},onClick:()=>u(n),onKeyDown:f?o=>{(o.key==="Enter"||o.key===" ")&&u(n)}:void 0,role:f?"button":void 0,tabIndex:f?0:void 0,children:n.status})}),e.jsx("td",{children:n.createdAt}),e.jsx("td",{children:n.lastLoginAt??"—"}),e.jsxs("td",{className:"nice-admin-users__actions",children:[v&&e.jsx("button",{onClick:()=>v(n),children:"Edit"}),x&&e.jsx("button",{onClick:()=>x(n.id),children:"Delete"})]})]},n.id))})]})]})}),P=a.forwardRef(function(p,_){var h;const{roles:m,actions:b,resources:g,onPermissionChange:v,onCreate:x,onDelete:f,onRename:S,title:l="Role Management",className:y,style:k}=p,[j,N]=a.useState(((h=m[0])==null?void 0:h.id)??null),[C,i]=a.useState(!1),[s,c]=a.useState(""),[u,n]=a.useState(""),o=m.find(r=>r.id===j),R=a.useCallback(()=>{!s.trim()||!x||(x(s.trim(),u.trim()),c(""),n(""),i(!1))},[s,u,x]),E=(r,d,t)=>{var w;return((w=r.permissions[d])==null?void 0:w.includes(t))??!1};return e.jsxs("div",{ref:_,className:`nice-admin-roles ${y??""}`,style:k,children:[e.jsxs("div",{className:"nice-admin-roles__header",children:[e.jsx("h3",{children:l}),x&&e.jsx("button",{onClick:()=>i(!C),children:"+ New Role"})]}),C&&e.jsxs("div",{className:"nice-admin-roles__create-form",children:[e.jsx("input",{type:"text",value:s,onChange:r=>c(r.target.value),placeholder:"Role name"}),e.jsx("input",{type:"text",value:u,onChange:r=>n(r.target.value),placeholder:"Description"}),e.jsx("button",{onClick:R,disabled:!s.trim(),children:"Create"}),e.jsx("button",{onClick:()=>i(!1),children:"Cancel"})]}),e.jsx("div",{className:"nice-admin-roles__tabs",children:m.map(r=>e.jsxs("button",{className:`nice-admin-roles__tab ${r.id===j?"nice-admin-roles__tab--active":""}`,onClick:()=>N(r.id),style:r.color?{borderColor:r.color}:void 0,children:[r.name,r.userCount!=null&&e.jsxs("span",{className:"nice-admin-roles__tab-count",children:["(",r.userCount,")"]}),r.isSystem&&e.jsx("span",{className:"nice-admin-roles__tab-system",children:"🔒"})]},r.id))}),o&&e.jsxs("div",{className:"nice-admin-roles__matrix-wrap",children:[o.description&&e.jsx("p",{className:"nice-admin-roles__description",children:o.description}),e.jsxs("table",{className:"nice-admin-roles__matrix",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Resource"}),b.map(r=>e.jsx("th",{title:r.description,children:r.label},r.id))]})}),e.jsx("tbody",{children:g.map(r=>e.jsxs("tr",{children:[e.jsx("td",{children:r.label}),b.map(d=>{const t=E(o,r.id,d.id);return e.jsx("td",{children:e.jsx("input",{type:"checkbox",checked:t,onChange:()=>v==null?void 0:v(o.id,r.id,d.id,!t),disabled:o.isSystem})},d.id)})]},r.id))})]}),!o.isSystem&&e.jsxs("div",{className:"nice-admin-roles__role-actions",children:[S&&e.jsx("button",{onClick:()=>{const r=prompt("New role name:",o.name);r&&S(o.id,r)},children:"Rename"}),f&&e.jsx("button",{onClick:()=>f(o.id),children:"Delete Role"})]})]})]})}),H={info:{color:"#3b82f6",label:"INFO"},warning:{color:"#eab308",label:"WARN"},error:{color:"#ef4444",label:"ERROR"},critical:{color:"#dc2626",label:"CRIT"}},K=a.forwardRef(function(p,_){const{entries:m,onEntryClick:b,onLoadMore:g,hasMore:v=!1,searchable:x=!0,showSeverityFilter:f=!0,title:S="Audit Log",className:l,style:y}=p,[k,j]=a.useState(""),[N,C]=a.useState(""),i=a.useMemo(()=>{let s=m;if(N&&(s=s.filter(c=>c.severity===N)),k.trim()){const c=k.toLowerCase();s=s.filter(u=>{var n;return u.actorName.toLowerCase().includes(c)||u.action.toLowerCase().includes(c)||u.resource.toLowerCase().includes(c)||((n=u.details)==null?void 0:n.toLowerCase().includes(c))})}return s},[m,N,k]);return e.jsxs("div",{ref:_,className:`nice-admin-audit-log ${l??""}`,style:y,children:[e.jsxs("div",{className:"nice-admin-audit-log__header",children:[e.jsx("h3",{children:S}),e.jsxs("span",{className:"nice-admin-audit-log__count",children:[m.length," entries"]})]}),e.jsxs("div",{className:"nice-admin-audit-log__toolbar",children:[x&&e.jsx("input",{type:"text",value:k,onChange:s=>j(s.target.value),placeholder:"Search audit log…",className:"nice-admin-audit-log__search"}),f&&e.jsxs("select",{value:N,onChange:s=>C(s.target.value),className:"nice-admin-audit-log__severity-filter",children:[e.jsx("option",{value:"",children:"All severities"}),e.jsx("option",{value:"info",children:"Info"}),e.jsx("option",{value:"warning",children:"Warning"}),e.jsx("option",{value:"error",children:"Error"}),e.jsx("option",{value:"critical",children:"Critical"})]})]}),i.length===0?e.jsx("p",{className:"nice-admin-audit-log__empty",children:"No audit log entries found."}):e.jsxs("table",{className:"nice-admin-audit-log__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Timestamp"}),e.jsx("th",{children:"Severity"}),e.jsx("th",{children:"Actor"}),e.jsx("th",{children:"Action"}),e.jsx("th",{children:"Resource"}),e.jsx("th",{children:"IP"}),e.jsx("th",{children:"Details"})]})}),e.jsx("tbody",{children:i.map(s=>{const c=H[s.severity];return e.jsxs("tr",{className:"nice-admin-audit-log__row",onClick:()=>b==null?void 0:b(s),role:b?"button":void 0,tabIndex:b?0:void 0,children:[e.jsx("td",{children:s.timestamp}),e.jsx("td",{children:e.jsx("span",{className:"nice-admin-audit-log__severity",style:{color:c.color},children:c.label})}),e.jsx("td",{children:s.actorName}),e.jsx("td",{children:s.action}),e.jsxs("td",{children:[s.resource,s.resourceId?` #${s.resourceId}`:""]}),e.jsx("td",{children:s.ipAddress??"—"}),e.jsx("td",{className:"nice-admin-audit-log__details",children:s.details??"—"})]},s.id)})})]}),v&&g&&e.jsx("button",{className:"nice-admin-audit-log__load-more",onClick:g,children:"Load more"})]})}),Y=a.forwardRef(function(p,_){const{settings:m,onSave:b,onChange:g,onReset:v,saving:x=!1,title:f="Settings",className:S,style:l}=p,[y,k]=a.useState(()=>{const s={};for(const c of m)s[c.key]=c.value;return s}),j=a.useCallback((s,c)=>{k(u=>({...u,[s]:c})),g==null||g(s,c)},[g]),N=a.useCallback(()=>{b==null||b(y)},[b,y]),C=new Map;for(const s of m){const c=s.section??"General";C.has(c)||C.set(c,[]),C.get(c).push(s)}const i=s=>{var u;const c=y[s.key];switch(s.type){case"boolean":return e.jsxs("label",{className:"nice-admin-settings__toggle",children:[e.jsx("input",{type:"checkbox",checked:!!c,onChange:n=>j(s.key,n.target.checked)}),s.label]});case"select":return e.jsx("select",{value:String(c??""),onChange:n=>j(s.key,n.target.value),className:"nice-admin-settings__select",children:(u=s.options)==null?void 0:u.map(n=>e.jsx("option",{value:n.value,children:n.label},n.value))});case"textarea":return e.jsx("textarea",{value:String(c??""),onChange:n=>j(s.key,n.target.value),placeholder:s.placeholder,className:"nice-admin-settings__textarea",rows:4});case"number":return e.jsx("input",{type:"number",value:c!=null?Number(c):"",onChange:n=>j(s.key,parseFloat(n.target.value)||0),placeholder:s.placeholder,className:"nice-admin-settings__input"});case"color":return e.jsx("input",{type:"color",value:String(c??"#000000"),onChange:n=>j(s.key,n.target.value),className:"nice-admin-settings__color"});case"password":return e.jsx("input",{type:"password",value:String(c??""),onChange:n=>j(s.key,n.target.value),placeholder:s.placeholder,className:"nice-admin-settings__input",autoComplete:"new-password"});default:return e.jsx("input",{type:"text",value:String(c??""),onChange:n=>j(s.key,n.target.value),placeholder:s.placeholder,className:"nice-admin-settings__input"})}};return e.jsxs("div",{ref:_,className:`nice-admin-settings ${S??""}`,style:l,children:[e.jsx("div",{className:"nice-admin-settings__header",children:e.jsx("h3",{children:f})}),Array.from(C.entries()).map(([s,c])=>e.jsxs("fieldset",{className:"nice-admin-settings__section",children:[e.jsx("legend",{children:s}),c.map(u=>e.jsxs("div",{className:"nice-admin-settings__field",children:[u.type!=="boolean"&&e.jsxs("label",{className:"nice-admin-settings__label",children:[u.label,u.required&&e.jsx("span",{className:"nice-admin-settings__required",children:"*"})]}),u.description&&e.jsx("p",{className:"nice-admin-settings__description",children:u.description}),i(u)]},u.key))]},s)),e.jsxs("div",{className:"nice-admin-settings__actions",children:[e.jsx("button",{className:"nice-admin-settings__save-btn",onClick:N,disabled:x,children:x?"Saving…":"Save Settings"}),v&&e.jsx("button",{className:"nice-admin-settings__reset-btn",onClick:v,children:"Reset to Defaults"})]})]})}),V=a.forwardRef(function(p,_){const{notifications:m,availableChannels:b=["email","push","sms","in-app","webhook"],onToggle:g,onEdit:v,onTest:x,onCreate:f,onDelete:S,title:l="Notification Management",className:y,style:k}=p,[j,N]=a.useState(""),C=a.useMemo(()=>{if(!j.trim())return m;const i=j.toLowerCase();return m.filter(s=>{var c;return s.name.toLowerCase().includes(i)||s.event.toLowerCase().includes(i)||((c=s.description)==null?void 0:c.toLowerCase().includes(i))})},[m,j]);return e.jsxs("div",{ref:_,className:`nice-admin-notifications ${y??""}`,style:k,children:[e.jsxs("div",{className:"nice-admin-notifications__header",children:[e.jsx("h3",{children:l}),f&&e.jsx("button",{onClick:f,children:"+ New Notification"})]}),e.jsx("input",{type:"text",value:j,onChange:i=>N(i.target.value),placeholder:"Search notifications…",className:"nice-admin-notifications__search"}),C.length===0?e.jsx("p",{className:"nice-admin-notifications__empty",children:"No notifications found."}):e.jsxs("table",{className:"nice-admin-notifications__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Enabled"}),e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Event"}),e.jsx("th",{children:"Channels"}),e.jsx("th",{children:"Last Sent"}),e.jsx("th",{children:"Sent"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:C.map(i=>e.jsxs("tr",{children:[e.jsx("td",{children:e.jsx("input",{type:"checkbox",checked:i.enabled,onChange:()=>g==null?void 0:g(i.id,!i.enabled)})}),e.jsxs("td",{children:[e.jsx("strong",{children:i.name}),i.description&&e.jsx("br",{}),i.description&&e.jsx("small",{children:i.description})]}),e.jsx("td",{children:e.jsx("code",{children:i.event})}),e.jsx("td",{children:i.channels.join(", ")}),e.jsx("td",{children:i.lastSentAt??"—"}),e.jsx("td",{children:i.sentCount??0}),e.jsxs("td",{className:"nice-admin-notifications__actions",children:[v&&e.jsx("button",{onClick:()=>v(i),children:"Edit"}),x&&e.jsx("button",{onClick:()=>x(i.id),children:"Test"}),S&&e.jsx("button",{onClick:()=>S(i.id),children:"Delete"})]})]},i.id))})]})]})}),B=a.forwardRef(function(p,_){const{flags:m,environmentNames:b=["development","staging","production"],onToggle:g,onPercentageChange:v,onCreate:x,onDelete:f,onEdit:S,title:l="Feature Flags",className:y,style:k}=p,[j,N]=a.useState(""),[C,i]=a.useState(!1),[s,c]=a.useState(""),[u,n]=a.useState(""),[o,R]=a.useState(""),E=a.useMemo(()=>{if(!j.trim())return m;const d=j.toLowerCase();return m.filter(t=>{var w,L;return t.key.toLowerCase().includes(d)||t.name.toLowerCase().includes(d)||((w=t.description)==null?void 0:w.toLowerCase().includes(d))||((L=t.tags)==null?void 0:L.some(F=>F.toLowerCase().includes(d)))})},[m,j]),h=a.useCallback(()=>{!s.trim()||!u.trim()||!x||(x(s.trim(),u.trim(),o.trim()),c(""),n(""),R(""),i(!1))},[s,u,o,x]),r=(d,t)=>d.environments.find(w=>w.name===t);return e.jsxs("div",{ref:_,className:`nice-feature-flags ${y??""}`,style:k,children:[e.jsxs("div",{className:"nice-feature-flags__header",children:[e.jsx("h3",{children:l}),e.jsxs("span",{className:"nice-feature-flags__count",children:[m.length," flags"]}),x&&e.jsx("button",{onClick:()=>i(!C),children:"+ New Flag"})]}),C&&e.jsxs("div",{className:"nice-feature-flags__create-form",children:[e.jsx("input",{type:"text",value:s,onChange:d=>c(d.target.value),placeholder:"flag_key"}),e.jsx("input",{type:"text",value:u,onChange:d=>n(d.target.value),placeholder:"Display name"}),e.jsx("input",{type:"text",value:o,onChange:d=>R(d.target.value),placeholder:"Description"}),e.jsx("button",{onClick:h,disabled:!s.trim()||!u.trim(),children:"Create"}),e.jsx("button",{onClick:()=>i(!1),children:"Cancel"})]}),e.jsx("input",{type:"text",value:j,onChange:d=>N(d.target.value),placeholder:"Search flags…",className:"nice-feature-flags__search"}),E.length===0?e.jsx("p",{className:"nice-feature-flags__empty",children:"No feature flags found."}):e.jsxs("table",{className:"nice-feature-flags__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Flag"}),b.map(d=>e.jsx("th",{children:d},d)),e.jsx("th",{children:"Tags"}),e.jsx("th",{children:"Updated"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:E.map(d=>{var t;return e.jsxs("tr",{children:[e.jsx("td",{children:e.jsxs("div",{className:"nice-feature-flags__flag-info",children:[e.jsx("strong",{children:d.name}),e.jsx("code",{className:"nice-feature-flags__key",children:d.key}),d.description&&e.jsx("small",{children:d.description})]})}),b.map(w=>{const L=r(d,w);return e.jsxs("td",{className:"nice-feature-flags__env-cell",children:[e.jsx("input",{type:"checkbox",checked:(L==null?void 0:L.enabled)??!1,onChange:()=>g==null?void 0:g(d.id,w,!((L==null?void 0:L.enabled)??!1))}),(L==null?void 0:L.percentage)!=null&&e.jsx("input",{type:"number",min:0,max:100,value:L.percentage,onChange:F=>v==null?void 0:v(d.id,w,parseInt(F.target.value,10)||0),className:"nice-feature-flags__percentage",title:"Rollout %"})]},w)}),e.jsx("td",{children:((t=d.tags)==null?void 0:t.join(", "))||"—"}),e.jsx("td",{children:d.updatedAt??d.createdAt}),e.jsxs("td",{className:"nice-feature-flags__actions",children:[S&&e.jsx("button",{onClick:()=>S(d),children:"Edit"}),f&&e.jsx("button",{onClick:()=>f(d.id),children:"Delete"})]})]},d.id)})})]})]})}),J=a.forwardRef(function(p,_){var E;const{entities:m,formats:b=["json","csv","xlsx"],jobs:g=[],onImport:v,onExport:x,onDownload:f,title:S="Import / Export",className:l,style:y}=p,[k,j]=a.useState("export"),[N,C]=a.useState(((E=m[0])==null?void 0:E.id)??""),[i,s]=a.useState(b[0]??"json"),[c,u]=a.useState(null),n=a.useCallback(()=>{!v||!c||!N||(v(N,i,c),u(null))},[v,N,i,c]),o=a.useCallback(()=>{!x||!N||x(N,i)},[x,N,i]),R=h=>{var r;u(((r=h.target.files)==null?void 0:r[0])??null)};return e.jsxs("div",{ref:_,className:`nice-import-export ${l??""}`,style:y,children:[e.jsx("div",{className:"nice-import-export__header",children:e.jsx("h3",{children:S})}),e.jsxs("div",{className:"nice-import-export__tabs",children:[e.jsx("button",{className:`nice-import-export__tab ${k==="import"?"nice-import-export__tab--active":""}`,onClick:()=>j("import"),children:"Import"}),e.jsx("button",{className:`nice-import-export__tab ${k==="export"?"nice-import-export__tab--active":""}`,onClick:()=>j("export"),children:"Export"})]}),e.jsxs("div",{className:"nice-import-export__form",children:[e.jsxs("label",{children:["Entity",e.jsx("select",{value:N,onChange:h=>C(h.target.value),children:m.map(h=>e.jsx("option",{value:h.id,children:h.label},h.id))})]}),e.jsxs("label",{children:["Format",e.jsx("select",{value:i,onChange:h=>s(h.target.value),children:b.map(h=>e.jsx("option",{value:h,children:h.toUpperCase()},h))})]}),k==="import"&&e.jsxs(e.Fragment,{children:[e.jsxs("label",{children:["File",e.jsx("input",{type:"file",onChange:R,accept:`.${i}`})]}),e.jsx("button",{className:"nice-import-export__action-btn",onClick:n,disabled:!c,children:"Start Import"})]}),k==="export"&&e.jsx("button",{className:"nice-import-export__action-btn",onClick:o,children:"Start Export"})]}),g.length>0&&e.jsxs("div",{className:"nice-import-export__jobs",children:[e.jsx("h4",{children:"Recent Jobs"}),e.jsxs("table",{className:"nice-import-export__jobs-table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Format"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Progress"}),e.jsx("th",{children:"Errors"}),e.jsx("th",{children:"Created"}),e.jsx("th",{})]})}),e.jsx("tbody",{children:g.map(h=>e.jsxs("tr",{children:[e.jsx("td",{children:h.type}),e.jsx("td",{children:h.format.toUpperCase()}),e.jsx("td",{children:e.jsx("span",{className:`nice-import-export__status nice-import-export__status--${h.status}`,children:h.status})}),e.jsx("td",{children:h.processedRows!=null&&h.totalRows?`${h.processedRows} / ${h.totalRows}`:"—"}),e.jsx("td",{children:h.errorCount??0}),e.jsx("td",{children:h.createdAt}),e.jsx("td",{children:h.type==="export"&&h.status==="completed"&&f&&e.jsx("button",{onClick:()=>f(h.id),children:"Download"})})]},h.id))})]})]})]})}),I=a.createContext({flags:{}});function W({config:A,children:p}){return e.jsx(I.Provider,{value:A,children:p})}function $(A){const p=a.useContext(I);return a.useMemo(()=>{const _=p.flags[A];return _===void 0?{enabled:!1}:typeof _=="boolean"?{enabled:_}:{enabled:_>0,percentage:_}},[p.flags,A])}function M({flag:A,fallback:p=null,children:_}){const{enabled:m}=$(A);return e.jsx(e.Fragment,{children:m?_:p})}const T={low:"#2196f3",medium:"#ff9800",high:"#f44336",critical:"#9c27b0"},D={field:"Hidden Field",endpoint:"Decoy Endpoint",file:"Canary File",credential:"Fake Credential",cookie:"Tracking Cookie"},z=a.forwardRef(function({tokens:p,events:_,onCreate:m,onToggle:b,onDelete:g,onDismissEvent:v,title:x="Honey Tokens",className:f,style:S},l){const[y,k]=a.useState(""),[j,N]=a.useState(!1),[C,i]=a.useState(""),[s,c]=a.useState("field"),[u,n]=a.useState("medium"),[o,R]=a.useState(""),E=a.useMemo(()=>p.filter(t=>t.name.toLowerCase().includes(y.toLowerCase())||t.location.toLowerCase().includes(y.toLowerCase())),[p,y]),h=a.useMemo(()=>[..._].sort((t,w)=>new Date(w.timestamp).getTime()-new Date(t.timestamp).getTime()),[_]),r=a.useMemo(()=>{const t=p.filter(F=>F.active).length,w=p.reduce((F,U)=>F+U.tripCount,0),L=_.filter(F=>F.severity==="critical").length;return{activeCount:t,totalCount:p.length,totalTrips:w,criticalEvents:L}},[p,_]),d=()=>{C.trim()&&o.trim()&&m&&(m(C.trim(),s,u,o.trim()),i(""),R(""),N(!1))};return e.jsxs("div",{ref:l,className:`nice-honey-token-dashboard${f?` ${f}`:""}`,style:S,children:[e.jsxs("div",{className:"nice-honey-token-dashboard__header",children:[e.jsx("h2",{children:x}),e.jsxs("div",{className:"nice-honey-token-dashboard__stats",children:[e.jsxs("span",{className:"nice-honey-token-dashboard__stat",children:["Active: ",r.activeCount,"/",r.totalCount]}),e.jsxs("span",{className:"nice-honey-token-dashboard__stat",children:["Trips: ",r.totalTrips]}),r.criticalEvents>0&&e.jsxs("span",{className:"nice-honey-token-dashboard__stat nice-honey-token-dashboard__stat--critical",children:["Critical: ",r.criticalEvents]})]})]}),e.jsxs("div",{className:"nice-honey-token-dashboard__toolbar",children:[e.jsx("input",{type:"text",className:"nice-honey-token-dashboard__search",placeholder:"Search tokens...",value:y,onChange:t=>k(t.target.value)}),m&&e.jsx("button",{className:"nice-honey-token-dashboard__btn",onClick:()=>N(!j),children:j?"Cancel":"+ New Token"})]}),j&&e.jsxs("div",{className:"nice-honey-token-dashboard__create",children:[e.jsx("input",{type:"text",placeholder:"Token name",value:C,onChange:t=>i(t.target.value)}),e.jsx("select",{value:s,onChange:t=>c(t.target.value),children:Object.entries(D).map(([t,w])=>e.jsx("option",{value:t,children:w},t))}),e.jsxs("select",{value:u,onChange:t=>n(t.target.value),children:[e.jsx("option",{value:"low",children:"Low"}),e.jsx("option",{value:"medium",children:"Medium"}),e.jsx("option",{value:"high",children:"High"}),e.jsx("option",{value:"critical",children:"Critical"})]}),e.jsx("input",{type:"text",placeholder:"Location (e.g. /api/admin/secret)",value:o,onChange:t=>R(t.target.value)}),e.jsx("button",{onClick:d,children:"Create"})]}),e.jsxs("div",{className:"nice-honey-token-dashboard__tokens",children:[e.jsxs("h3",{children:["Tokens (",E.length,")"]}),e.jsxs("table",{className:"nice-honey-token-dashboard__table",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Name"}),e.jsx("th",{children:"Type"}),e.jsx("th",{children:"Severity"}),e.jsx("th",{children:"Location"}),e.jsx("th",{children:"Trips"}),e.jsx("th",{children:"Last Tripped"}),e.jsx("th",{children:"Status"}),e.jsx("th",{children:"Actions"})]})}),e.jsx("tbody",{children:E.map(t=>e.jsxs("tr",{className:t.tripCount>0?"nice-honey-token-dashboard__row--tripped":"",children:[e.jsx("td",{children:t.name}),e.jsx("td",{children:D[t.type]}),e.jsx("td",{children:e.jsx("span",{className:"nice-honey-token-dashboard__severity",style:{color:T[t.severity]},children:t.severity})}),e.jsx("td",{children:e.jsx("code",{children:t.location})}),e.jsx("td",{children:t.tripCount}),e.jsx("td",{children:t.lastTripped??"—"}),e.jsx("td",{children:e.jsx("span",{className:`nice-honey-token-dashboard__status--${t.active?"active":"inactive"}`,children:t.active?"Active":"Inactive"})}),e.jsxs("td",{children:[b&&e.jsx("button",{onClick:()=>b(t.id,!t.active),children:t.active?"Disable":"Enable"}),g&&e.jsx("button",{onClick:()=>g(t.id),children:"Delete"})]})]},t.id))})]})]}),h.length>0&&e.jsxs("div",{className:"nice-honey-token-dashboard__events",children:[e.jsxs("h3",{children:["Recent Events (",h.length,")"]}),e.jsx("div",{className:"nice-honey-token-dashboard__event-list",children:h.map(t=>e.jsxs("div",{className:`nice-honey-token-dashboard__event nice-honey-token-dashboard__event--${t.severity}`,children:[e.jsxs("div",{className:"nice-honey-token-dashboard__event-header",children:[e.jsx("strong",{children:t.tokenName}),e.jsx("span",{className:"nice-honey-token-dashboard__severity",style:{color:T[t.severity]},children:t.severity}),e.jsx("time",{children:t.timestamp})]}),e.jsxs("div",{className:"nice-honey-token-dashboard__event-details",children:[e.jsxs("span",{children:["IP: ",t.sourceIp]}),t.userId&&e.jsxs("span",{children:["User: ",t.userId]}),t.details&&e.jsx("span",{children:t.details})]}),v&&e.jsx("button",{className:"nice-honey-token-dashboard__dismiss",onClick:()=>v(t.id),children:"Dismiss"})]},t.id))})]})]})});exports.FeatureGate=M;exports.NiceAdminAuditLog=K;exports.NiceAdminDashboard=G;exports.NiceAdminNotifications=V;exports.NiceAdminRoles=P;exports.NiceAdminSettings=Y;exports.NiceAdminUsers=q;exports.NiceFeatureFlags=B;exports.NiceFeatureGate=M;exports.NiceFeatureGateProvider=W;exports.NiceHoneyTokenDashboard=z;exports.NiceImportExport=J;exports.useFeatureGate=$;
|