adminizer 4.5.0-build.185 → 4.5.0-build.187

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.
Files changed (135) hide show
  1. package/assets/DiffViewer-LNI2p-UR.js +1 -0
  2. package/assets/add-DJKiGndL.js +1 -0
  3. package/assets/add-form-BWKE2eyN.js +1 -0
  4. package/assets/add-group-CtE4F3ps.js +1 -0
  5. package/assets/add-group-form-DnX_gvwI.js +1 -0
  6. package/assets/add-user-DTKXGl59.js +1 -0
  7. package/assets/add-user-form-DWtbi94E.js +1 -0
  8. package/assets/{app-B6WLK2xU.css → app-BBFtNAB8.css} +1 -1
  9. package/assets/app-layout-DWLeMQzn.js +1 -0
  10. package/assets/{app-shell-BIJ0x-fl.js → app-shell-Csu5DYbu.js} +1 -1
  11. package/assets/app-sidebar-B8GhiO5O.js +1 -0
  12. package/assets/app-sidebar-header-CpOKBzR8.js +1 -0
  13. package/assets/app.js +10 -10
  14. package/assets/breadcrumbs-DubvjwQ1.js +1 -0
  15. package/assets/{catalog-DpFXEbVg.js → catalog-DLLmAGIB.js} +2 -2
  16. package/assets/{dashboard-yeISElwB.js → dashboard-DfeV1yZB.js} +1 -1
  17. package/assets/date-picker-BMuULw0_.js +1 -0
  18. package/assets/del-modal-B6rGXzda.js +1 -0
  19. package/assets/{field-renderer-7O0-WSbr.js → field-renderer-BdZEj8Gx.js} +120 -120
  20. package/assets/form-C9zYkFrY.js +1 -0
  21. package/assets/form-Cf6vMB_U.js +1 -0
  22. package/assets/{geo-json-B0iBJmyh.js → geo-json-B8a6BmuD.js} +1 -1
  23. package/assets/history-DuJHP-Ym.js +1 -0
  24. package/assets/home-C0gUoUog.js +2 -0
  25. package/assets/icon-DWzxQFqX.js +1 -0
  26. package/assets/init-user-CSKuvzzu.js +1 -0
  27. package/assets/input-error-CfNybm8g.js +1 -0
  28. package/assets/list-BJf9XNuD.js +1 -0
  29. package/assets/{list-table-zPFwKjgx.js → list-table-CeYNrY78.js} +3 -3
  30. package/assets/login-B0oA0qi9.js +1 -0
  31. package/assets/manifest.json +124 -84
  32. package/assets/material-icon-DVdfE9hW.js +1 -0
  33. package/assets/media-manager-Bwo074w9.js +14 -0
  34. package/assets/{module-BMwIYc1l.js → module-TnH7MV0n.js} +1 -1
  35. package/assets/nav-footer-DL2WhOYS.js +1 -0
  36. package/assets/nav-main-CrzWQ7b2.js +1 -0
  37. package/assets/nav-user-CJJld5cC.js +1 -0
  38. package/assets/notification-DfWwB8Bw.js +27 -0
  39. package/assets/{pagination-render-Cq6BJxYb.js → pagination-render-CdkSnJ_L.js} +1 -1
  40. package/assets/register-Q9iDyC2Z.js +1 -0
  41. package/assets/tabs-CGNIkDi3.js +1 -0
  42. package/assets/{theme-switcher-D4WLCKTZ.js → theme-switcher-BSceVLz4.js} +1 -1
  43. package/assets/{toast-editor-CvVqS1Bt.js → toast-editor-sPvKkKTW.js} +45 -45
  44. package/assets/{user-info-BUQWZMBs.js → user-info-Bv0VwM79.js} +1 -1
  45. package/assets/user-menu-content-qecg_7oc.js +1 -0
  46. package/assets/welcome-C4oIeUdV.js +1 -0
  47. package/controllers/edit.js +1 -1
  48. package/controllers/history-actions/HistoryController.d.ts +8 -0
  49. package/controllers/history-actions/HistoryController.js +134 -0
  50. package/controllers/list.js +1 -1
  51. package/controllers/login.js +5 -1
  52. package/controllers/notifications/NotificationController.js +13 -13
  53. package/helpers/accessRightsHelper.d.ts +1 -1
  54. package/helpers/inertiaAddHelper.d.ts +13 -1
  55. package/helpers/inertiaAddHelper.js +14 -1
  56. package/helpers/inertiaGroupHelper.d.ts +2 -2
  57. package/helpers/inertiaUserHelper.d.ts +2 -2
  58. package/helpers/menuHelper.d.ts +1 -1
  59. package/index.d.ts +1 -0
  60. package/index.js +1 -0
  61. package/interfaces/adminpanelConfig.d.ts +11 -2
  62. package/interfaces/global.d.ts +1 -1
  63. package/lib/Adminizer.d.ts +2 -1
  64. package/lib/Adminizer.js +4 -10
  65. package/lib/DataAccessor.d.ts +1 -1
  66. package/lib/datatable/NodeTable.js +1 -1
  67. package/lib/history-actions/AbstractHistoryAdapter.d.ts +161 -0
  68. package/lib/history-actions/AbstractHistoryAdapter.js +363 -0
  69. package/lib/history-actions/DefaultHistoryAdapter.d.ts +17 -0
  70. package/lib/history-actions/DefaultHistoryAdapter.js +99 -0
  71. package/lib/history-actions/HistoryHandler.d.ts +6 -0
  72. package/lib/history-actions/HistoryHandler.js +19 -0
  73. package/lib/media-manager/AbstractMediaManager.d.ts +3 -1
  74. package/lib/media-manager/AbstractMediaManager.js +4 -0
  75. package/lib/media-manager/DefaultMediaManager.d.ts +2 -1
  76. package/lib/media-manager/DefaultMediaManager.js +17 -4
  77. package/lib/media-manager/Items.d.ts +1 -0
  78. package/lib/media-manager/Items.js +5 -0
  79. package/lib/media-manager/Thumb.js +32 -11
  80. package/lib/model/AbstractModel.d.ts +1 -0
  81. package/lib/model/AbstractModel.js +24 -20
  82. package/lib/model/ModelHandler.d.ts +4 -0
  83. package/lib/model/ModelHandler.js +12 -0
  84. package/lib/model/adapter/waterline.js +7 -0
  85. package/lib/widgets/widgetHandler.d.ts +1 -1
  86. package/migrations/umzugExports.d.ts +1 -1
  87. package/models/HistoryActionsAP.d.ts +56 -0
  88. package/models/HistoryActionsAP.js +42 -0
  89. package/models/MediaManagerAP.js +2 -2
  90. package/models/MediaManagerAssociationsAP.d.ts +1 -1
  91. package/models/MediaManagerAssociationsAP.js +3 -3
  92. package/models/MediaManagerMetaAP.js +2 -2
  93. package/models/NotificationAP.js +2 -2
  94. package/models/UserAP.d.ts +1 -1
  95. package/package.json +1 -1
  96. package/system/Router.js +10 -0
  97. package/system/bindHistory.d.ts +2 -0
  98. package/system/bindHistory.js +9 -0
  99. package/system/bindInertia.js +5 -0
  100. package/system/bindNotifications.js +2 -3
  101. package/system/bindReqFunctions.js +0 -1
  102. package/translations/en.json +13 -1
  103. package/translations/ru.json +13 -1
  104. package/ui/components/VanillaJSONEditor.js +7 -0
  105. package/ui/components/handsontable.js +6 -2
  106. package/assets/add-Dl5_8K1u.js +0 -1
  107. package/assets/add-form-BbVGOzkb.js +0 -1
  108. package/assets/add-group-CbIhEPXo.js +0 -1
  109. package/assets/add-group-form-Dq3ZNRzK.js +0 -1
  110. package/assets/add-user-D3IMUWJh.js +0 -1
  111. package/assets/add-user-form-DsOZcIFM.js +0 -1
  112. package/assets/app-layout-CukT3q7B.js +0 -1
  113. package/assets/app-sidebar-ByHgzn6c.js +0 -1
  114. package/assets/app-sidebar-header-_5xOVeGD.js +0 -1
  115. package/assets/breadcrumbs-A7JBq3No.js +0 -1
  116. package/assets/date-picker-wPSnFjQL.js +0 -1
  117. package/assets/del-modal-BoC1vT2X.js +0 -1
  118. package/assets/form-CS3URT-T.js +0 -1
  119. package/assets/form-Z7qRBJgC.js +0 -1
  120. package/assets/home-Qu85a6i3.js +0 -2
  121. package/assets/icon-ZgvQ-H8L.js +0 -1
  122. package/assets/init-user-BFtq2rc0.js +0 -1
  123. package/assets/input-error-CdFGR9TU.js +0 -1
  124. package/assets/list-Dgksbxks.js +0 -1
  125. package/assets/login-kuTUxAni.js +0 -1
  126. package/assets/material-icon-BUWt3B4y.js +0 -1
  127. package/assets/media-manager-CHSBkVco.js +0 -14
  128. package/assets/nav-footer-Cla40UA5.js +0 -1
  129. package/assets/nav-main-B-Yx0CD_.js +0 -1
  130. package/assets/nav-user-DVbGsmCa.js +0 -1
  131. package/assets/notification-CEizrE5i.js +0 -27
  132. package/assets/register-Ch_NMv6R.js +0 -1
  133. package/assets/tabs-VEstORJQ.js +0 -1
  134. package/assets/user-menu-content-DvV4Rfdo.js +0 -1
  135. package/assets/welcome-t73Qej7a.js +0 -1
@@ -0,0 +1 @@
1
+ import{u as E,j as e,ag as I,am as L,an as v,ao as P,B as w,ap as z,S as C,c as M,d as R,e as T,f as D,aq as O,L as k}from"./app.js";import B from"./app-shell-Csu5DYbu.js";import{AppSidebar as K}from"./app-sidebar-B8GhiO5O.js";import{A as V,a as N,N as _,b as F}from"./app-sidebar-header-CpOKBzR8.js";import{r as l}from"./monaco-ICtx6xoc.js";const H=l.memo(({children:o,breadcrumbs:a=[],className:i})=>{const n=E();return e.jsxs(B,{variant:"sidebar",children:[e.jsx(I,{title:n.props.title}),e.jsx(K,{}),e.jsxs(L,{className:i,children:[e.jsx(V,{breadcrumbs:a}),e.jsx("div",{className:"relative flex-1 overflow-hidden",children:e.jsx("div",{className:"h-full",children:o})})]})]})});function q({width:o="min(25vw, 420px)"}){const{isEnabled:a,isOpen:i,closeChat:n,models:s,activeModel:r,setActiveModel:d,messages:c,loading:m,sending:x,error:j,sendMessage:y}=N(),[f,h]=l.useState(""),g=l.useRef(null);l.useEffect(()=>{i||h("")},[i]),l.useEffect(()=>{g.current&&g.current.scrollIntoView({behavior:"smooth"})},[c]);const u=s.length>0,A=async t=>{t.preventDefault();const p=f.trim();p&&(await y(p),h(""))},S=t=>{if((t.ctrlKey||t.metaKey)&&t.key==="Enter"){t.preventDefault();const p=f.trim();p&&!x&&(y(p),h(""))}};return a?e.jsxs("aside",{id:"ai-assistant-panel","aria-label":"AI assistant chat","aria-hidden":!i,className:v("bg-card text-card-foreground fixed bottom-0 right-0 top-0 z-[60] flex h-full flex-col border-l shadow-xl transition-all duration-300 ease-in-out","md:w-auto w-full",i?"translate-x-0 opacity-100":"translate-x-full opacity-0 pointer-events-none"),style:{width:"var(--ai-assistant-panel-actual-width, "+o+")"},children:[e.jsxs("div",{className:"flex items-center justify-between border-b px-4 py-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(P,{className:"size-5 text-primary"}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-semibold leading-tight",children:"AI assistant"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"Chat with your selected model."})]})]}),e.jsx(w,{variant:"ghost",size:"icon",onClick:n,"aria-label":"Close AI assistant",children:e.jsx(z,{className:"size-4"})})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-4 overflow-hidden px-4 py-4",children:[!u&&!m&&e.jsx("div",{className:"flex flex-1 items-center justify-center rounded-md border border-dashed p-6 text-sm text-muted-foreground",children:"No AI models are available for your account."}),u&&e.jsxs(e.Fragment,{children:[e.jsxs(C,{value:r,onValueChange:d,children:[e.jsx(M,{className:"w-full",children:e.jsx(R,{placeholder:"Select a model"})}),e.jsx(T,{className:"z-[70]",children:s.map(t=>e.jsx(D,{value:t.id,children:e.jsxs("div",{className:"flex flex-col text-left",children:[e.jsx("span",{className:"font-medium",children:t.name}),t.description&&e.jsx("span",{className:"text-xs text-muted-foreground",children:t.description})]})},t.id))})]}),e.jsxs("div",{className:"flex flex-1 flex-col gap-3 overflow-hidden rounded-md border bg-background p-4",children:[e.jsxs("div",{className:"flex-1 space-y-3 overflow-y-auto pr-2","data-ai-assistant-messages":!0,children:[m&&e.jsx("div",{className:"flex justify-center py-6 text-sm text-muted-foreground",children:"Loading conversation..."}),!m&&c.length===0&&e.jsx("div",{className:"flex h-full items-center justify-center text-sm text-muted-foreground",children:"Start a conversation to see responses here."}),c.map(t=>e.jsxs("div",{className:v("flex flex-col gap-1 rounded-md border p-3 text-sm shadow-xs",t.role==="assistant"?"border-primary/30 bg-primary/5":"border-border bg-background"),children:[e.jsx("span",{className:"font-semibold",children:t.role==="assistant"?"Assistant":"You"}),e.jsx("p",{className:"whitespace-pre-wrap leading-relaxed",children:t.content}),e.jsx("span",{className:"text-xs text-muted-foreground",children:new Date(t.timestamp).toLocaleTimeString()})]},t.id)),e.jsx("div",{ref:g})]}),e.jsxs("form",{className:"space-y-2",onSubmit:A,children:[e.jsx(O,{placeholder:u?"Type your question... (Ctrl+Enter to send)":"No models available",value:f,onChange:t=>h(t.target.value),onKeyDown:S,disabled:!u||x,rows:3}),e.jsxs("div",{className:"flex items-center justify-between gap-3",children:[j&&e.jsx("span",{className:"text-xs text-destructive",children:j}),e.jsx(w,{type:"submit",disabled:!u||x||!f.trim(),children:x?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx(k,{className:"size-4 animate-spin"}),"Sending…"]}):"Send"})]})]})]})]})]})]}):null}const $="min(25vw, 420px)",b="margin-right 300ms ease-in-out";function G({children:o,panelWidth:a=$}){const{isEnabled:i,isOpen:n}=N();return l.useEffect(()=>{const s=document.getElementById("app");if(!s)return;const r=s.style.transition,d=r==null?void 0:r.includes("margin-right");return d||(s.style.transition=r?`${r}, ${b}`:b),s.classList.add("ai-assistant-host"),s.style.setProperty("--ai-assistant-panel-width",a),()=>{s.classList.remove("ai-assistant-host"),s.style.removeProperty("--ai-assistant-panel-width"),s.style.removeProperty("--ai-assistant-panel-actual-width"),s.style.removeProperty("margin-right"),delete s.dataset.aiAssistantOpen,d||(s.style.transition=r)}},[a]),l.useEffect(()=>{const s=document.getElementById("app");if(!s)return;const r=window.innerWidth<768,d=r?"100vw":a;s.style.setProperty("--ai-assistant-panel-actual-width",d),i&&n?(s.style.marginRight=r?"0":a,s.dataset.aiAssistantOpen="true"):(s.style.removeProperty("margin-right"),s.dataset.aiAssistantOpen="false");const c=()=>{const m=window.innerWidth<768,x=m?"100vw":a;s.style.setProperty("--ai-assistant-panel-actual-width",x),i&&n&&(s.style.marginRight=m?"0":a)};return window.addEventListener("resize",c),()=>window.removeEventListener("resize",c)},[i,n,a]),e.jsxs(e.Fragment,{children:[o,e.jsx(q,{width:a})]})}const Z=l.memo(({children:o,className:a,breadcrumbs:i,...n})=>e.jsx(_,{children:e.jsxs(F,{children:[e.jsx(H,{breadcrumbs:i,className:a,...n,children:o}),e.jsx(G,{})]})}));export{Z as A};
@@ -1 +1 @@
1
- import{j as a,aK as d}from"./app.js";import{r as o}from"./monaco-ICtx6xoc.js";import"./jsoneditor-D95dIAP2.js";import"./vendor-wzZzN_Jv.js";import"./handsontable-PVakPtJV.js";const c=o.memo(({children:e,variant:s="header"})=>{const[t,n]=o.useState(()=>typeof window<"u"?localStorage.getItem("sidebar")!=="false":!0),i=r=>{n(r),typeof window<"u"&&localStorage.setItem("sidebar",String(r))};return s==="header"?a.jsx("div",{className:"flex min-h-screen w-full flex-col",children:e}):a.jsx(d,{defaultOpen:t,open:t,onOpenChange:i,children:e})});export{c as default};
1
+ import{j as a,aU as d}from"./app.js";import{r as o}from"./monaco-ICtx6xoc.js";import"./jsoneditor-D95dIAP2.js";import"./vendor-wzZzN_Jv.js";import"./handsontable-PVakPtJV.js";const c=o.memo(({children:e,variant:s="header"})=>{const[t,n]=o.useState(()=>typeof window<"u"?localStorage.getItem("sidebar")!=="false":!0),i=r=>{n(r),typeof window<"u"&&localStorage.setItem("sidebar",String(r))};return s==="header"?a.jsx("div",{className:"flex min-h-screen w-full flex-col",children:e}):a.jsx(d,{defaultOpen:t,open:t,onOpenChange:i,children:e})});export{c as default};
@@ -0,0 +1 @@
1
+ import{u,j as s,a$ as N,b0 as g,b1 as i,b2 as c,b3 as f,b4 as v,b5 as k,b6 as d,B as C,b7 as M,b8 as w,b9 as _,ba as y,bb as B,bc as x,ah as n,bd as T,be as p,bf as t,C as o,bg as h,bh as j,bi as b,bj as m,bk as $,bl as R}from"./app.js";import{NavMain as z}from"./nav-main-CrzWQ7b2.js";import l from"./material-icon-DVdfE9hW.js";import"./jsoneditor-D95dIAP2.js";import"./vendor-wzZzN_Jv.js";import"./monaco-ICtx6xoc.js";import"./handsontable-PVakPtJV.js";function P(){const r=u();return s.jsxs(N,{collapsible:"icon",variant:"inset",children:[s.jsx(g,{children:s.jsx(i,{children:s.jsxs(c,{children:[s.jsx(f,{className:"p-0 shadow-none border-none bg-transparent hidden md:block",children:s.jsxs(v,{children:[s.jsx(k,{asChild:!0,className:"text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground rounded-md",children:s.jsx(d,{asChild:!0,children:s.jsx(C,{variant:"ghost",asChild:!0,className:`w-full ${r.props.section?"":"pointer-events-none"}`,children:s.jsxs("div",{children:[s.jsx(l,{name:"rocket_launch",className:"!text-[18px]"}),s.jsx("span",{className:"group-data-[state=collapsed]:hidden",children:r.props.brand}),r.props.section&&s.jsx(M,{className:"ml-auto group-data-[state=collapsed]:hidden"})]})})})}),r.props.section&&s.jsx(w,{side:"right",className:"z-[1003]",children:r.props.section.map(e=>s.jsx("div",{children:e.subItems?s.jsxs(_,{children:[s.jsxs(y,{className:"flex gap-2 items-center cursor-pointer",children:[s.jsx(l,{name:e.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:e.title})]}),s.jsx(B,{children:e.subItems.map(a=>s.jsx(x,{children:a.type==="blank"?s.jsxs("a",{href:a.link,target:"_blank",className:"flex gap-2 items-center",children:[a.icon&&s.jsx(l,{name:a.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:a.title})]},a.id):s.jsxs(n,{href:a.link,className:"flex gap-2 items-center",children:[a.icon&&s.jsx(l,{name:a.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:a.title})]},a.id)},a.id))})]}):s.jsx(x,{children:e.type==="blank"?s.jsxs("a",{href:e.link,target:"_blank",className:"flex gap-2 items-center",children:[e.icon&&s.jsx(l,{name:e.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:e.title})]}):s.jsxs(n,{href:e.link,className:"flex gap-2 items-center",children:[e.icon&&s.jsx(l,{name:e.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:e.title})]})})},e.id))})]})}),s.jsx(T,{className:"px-2 py-0 block md:hidden",children:s.jsx(i,{children:s.jsx(p,{asChild:!0,className:"group/collapsible",children:s.jsxs(c,{children:[s.jsx(t,{asChild:!0,children:s.jsxs(d,{children:[s.jsx(l,{name:"rocket_launch",className:"!text-[18px]"}),s.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:r.props.brand}),r.props.section&&s.jsx(o,{className:"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible:rotate-90"})]})}),r.props.section&&s.jsx(h,{children:s.jsx(j,{children:r.props.section&&r.props.section.map(e=>e.subItems?s.jsx(i,{children:s.jsx(p,{asChild:!0,className:"group/collapsible-sub",children:s.jsxs(c,{children:[s.jsx(t,{asChild:!0,children:s.jsxs(d,{children:[s.jsx(l,{name:e.icon,className:"!text-[18px]"}),s.jsx("span",{className:"overflow-hidden text-ellipsis whitespace-nowrap",children:e.title}),s.jsx(o,{className:"ml-auto transition-transform duration-200 group-data-[state=open]/collapsible-sub:rotate-90"})]})}),s.jsx(h,{children:s.jsx(j,{children:e.subItems.map(a=>s.jsx(b,{children:s.jsx(m,{asChild:!0,children:a.type==="blank"?s.jsxs("a",{href:a.link,target:"_blank",className:"flex gap-2 items-center",children:[a.icon&&s.jsx(l,{name:a.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:a.title})]}):s.jsxs(n,{href:a.link,className:"flex gap-2 items-center",children:[a.icon&&s.jsx(l,{name:a.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:a.title})]})})},a.id))})})]})})},e.id):s.jsx(b,{children:s.jsx(m,{asChild:!0,children:e.type==="blank"?s.jsxs("a",{href:e.link,target:"_blank",className:"flex gap-2 items-center",children:[e.icon&&s.jsx(l,{name:e.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:e.title})]}):s.jsxs(n,{href:e.link,className:"flex gap-2 items-center",children:[e.icon&&s.jsx(l,{name:e.icon,className:"!text-[18px]"}),s.jsx("span",{className:"hover:underline",children:e.title})]})})},e.id))})})]})})})})]},r.props.brand)})}),s.jsx($,{children:s.jsx(z,{items:r.props.menu})}),s.jsx(R,{children:s.jsx("div",{className:"text-center opacity-70",children:r.props.showVersion&&"v.4.5.0"})})]})}export{P as AppSidebar};
@@ -0,0 +1 @@
1
+ import{u as z,j as e,h as y,aV as V,q as Y,B as $,aW as G,v as W,w as X,aX as Z,M as L,N as R,E as K,O as B,r as Q,aY as ee,ah as F,L as D,an as te,ao as se,aZ as ae,a_ as re}from"./app.js";import{Breadcrumbs as oe}from"./breadcrumbs-DubvjwQ1.js";import{NavUser as ne}from"./nav-user-CJJld5cC.js";import{ThemeSwitcher as ie}from"./theme-switcher-BSceVLz4.js";import{r as a}from"./monaco-ICtx6xoc.js";import ce from"./material-icon-DVdfE9hW.js";const H=a.createContext(void 0),ve=({children:l})=>{const[w,o]=a.useState([]),[m,u]=a.useState([]),[p,f]=a.useState([]),[E,c]=a.useState(!1),[n,h]=a.useState(null),[j,C]=a.useState(""),v=z(),[g,S]=a.useState({}),M=[...m,...p],x=async()=>{try{const t=await y.get(`${window.routePrefix}/notifications/api`,{params:{unreadOnly:!0,limit:4}});o(t.data)}catch(t){console.error("Error fetching bell notifications:",t)}},i=async()=>{try{const t=await y.post(`${window.routePrefix}/notifications`);S(t.data)}catch(t){console.log(t)}},A=async()=>{await x()},b=async()=>{try{const t=await y.get(`${window.routePrefix}/notifications/api/get-classes`);t.data&&(h(t.data.activeServices),C(t.data.initTab))}catch(t){console.error("Error fetching tabs:",t)}},k=async(t,s)=>{try{if(!t){await P(s);return}const r=await y.post(`${window.routePrefix}/notifications/api/search`,{s:t,notificationClass:s});f(r.data)}catch(r){console.error("Error searching notifications:",r)}},P=async t=>{c(!0);try{const s=`${window.routePrefix}/notifications/api/${t}`,r=await y.get(s,{params:{limit:20,skip:0,unreadOnly:!1}});return u([]),f(r.data),r.data}catch(s){return console.error("Error fetching all notifications:",s),[]}finally{c(!1)}},I=async(t,s)=>{try{const r=`${window.routePrefix}/notifications/api/${t}`,d=await y.get(r,{params:{limit:20,skip:s,unreadOnly:!1}});return f(N=>[...N,...d.data]),d.data}catch(r){return console.error("Error paginating notifications:",r),[]}};a.useEffect(()=>{if(!v.props.notifications)return;i(),x();const t=new EventSource(`${window.routePrefix}/notifications/api/stream`);return t.addEventListener("connected",s=>{const r=JSON.parse(s.data);console.log("Connected event:",r),b()}),t.addEventListener("notification",s=>{const r=JSON.parse(s.data);u(d=>[r,...d]),o(d=>[r,...d].slice(0,4))}),t.onerror=()=>{console.error("SSE connection error")},()=>t.close()},[]);const T=async(t,s)=>{try{await y.put(`${window.routePrefix}/notifications/api/${t}/${s}/read`,{}),u(r=>r.map(d=>d.id===s?{...d,read:!0}:d)),f(r=>r.map(d=>d.id===s?{...d,read:!0}:d)),o([])}catch(r){console.error("Error marking as read:",r)}},_=async()=>{try{await y.put(`${window.routePrefix}/notifications/api/read-all`),u(t=>t.map(s=>({...s,read:!0}))),f(t=>t.map(s=>({...s,read:!0}))),await x()}catch(t){console.error("Error marking all as read:",t)}},O=w.filter(t=>!t.read).length;return e.jsx(H.Provider,{value:{bellNotifications:w,allNotifications:M,unreadCount:O,getTabs:b,tabs:n,initTab:j,search:k,markAsRead:T,markAllAsRead:_,getLocale:i,messages:g,fetchAllNotifications:P,paginateNotifications:I,loading:E,refreshBellNotifications:A},children:l})},U=()=>{const l=a.useContext(H);if(l===void 0)throw new Error("useNotifications must be used within a NotificationProvider");return l};function le(){const{bellNotifications:l,markAsRead:w,unreadCount:o,refreshBellNotifications:m,messages:u}=U(),[p,f]=a.useState(!1),E=async(n,h)=>{f(!0);try{await w(n,h),await m()}catch(j){console.error("Error marking as read:",j)}finally{f(!1)}},c=n=>{const h=new Date,j=new Date(n),C=h.getTime()-j.getTime(),v=Math.floor(C/1e3),g=new Intl.RelativeTimeFormat("en",{numeric:"auto"});if(v<60)return g.format(-v,"second");const S=Math.floor(v/60);if(S<60)return g.format(-S,"minute");const M=Math.floor(S/60);if(M<24)return g.format(-M,"hour");const x=Math.floor(M/24);if(x<30)return g.format(-x,"day");const i=Math.floor(x/30);if(i<12)return g.format(-i,"month");const A=Math.floor(i/12);return g.format(-A,"year")};return e.jsxs(V,{children:[e.jsx(Y,{asChild:!0,className:"cursor-pointer data-[state=open]:bg-sidebar-accent",children:e.jsxs($,{variant:"ghost",className:"relative",children:[e.jsx(G,{}),o>0&&e.jsx("div",{className:"absolute top-1.5 right-1.5 size-1.5 rounded-full bg-destructive"})]})}),e.jsxs(W,{className:"z-[1002] p-2",align:"end",onCloseAutoFocus:n=>n.preventDefault(),children:[e.jsx(X,{className:`${p?"opacity-50 pointer-events-none":""}`,children:l.length===0?e.jsx("div",{className:"p-4 text-center text-muted-foreground",children:"No notifications"}):l.map(n=>e.jsxs("div",{children:[e.jsx(Z,{asChild:!0,className:"cursor-pointer",onSelect:h=>{h.preventDefault(),Q.visit(`${window.routePrefix}/notifications?type=${n.notificationClass}`)},children:e.jsxs("div",{className:"grid grid-cols-[32px_250px] grid-rows-[auto_1fr] items-start gap-x-4 gap-y-2",children:[n.icon?e.jsx(ce,{name:n.icon.icon,style:{color:n.icon.iconColor},className:"!text-[32px]"}):e.jsx("div",{}),e.jsxs("div",{className:"flex flex-col",children:[e.jsx("span",{className:"font-medium",children:n.title}),e.jsx("span",{className:"truncate",children:n.message})]}),e.jsxs("div",{className:"col-start-2 flex justify-between flex-nowrap items-center",children:[e.jsx("div",{className:"flex flex-nowrap gap-2 items-center",children:e.jsx("div",{children:c(n.createdAt)})}),e.jsxs(L,{children:[e.jsx(R,{asChild:!0,children:e.jsx($,{variant:"ghost",size:"icon",className:"size-4",onClick:h=>{h.stopPropagation(),E(n.notificationClass,n.id)},children:e.jsx(K,{className:"text-primary"})})}),e.jsx(B,{side:"left",className:"z-[1003]",children:e.jsx("p",{children:u["Make read"]})})]})]})]})}),e.jsx(ee,{})]},n.id))}),e.jsx($,{variant:"secondary",asChild:!0,children:e.jsxs(F,{href:`${window.routePrefix}/notifications`,className:`w-full ${p?"opacity-50 pointer-events-none":""}`,children:[u["View All"],p&&e.jsx(D,{className:"h-4 w-4 animate-spin"})]})})]})]})}const de=()=>{if(!(typeof window>"u"))return window.__adminizerAiAssistantState__??void 0},ue=l=>{typeof window>"u"||(window.__adminizerAiAssistantState__=l)},q=a.createContext(void 0),Ne=({children:l})=>{const o=z().props.aiAssistant,m=a.useMemo(()=>de(),[]),[u,p]=a.useState(()=>(m==null?void 0:m.isOpen)??!1),[f,E]=a.useState([]),[c,n]=a.useState(()=>(m==null?void 0:m.activeModel)??(o==null?void 0:o.defaultModel)??void 0),[h,j]=a.useState([]),[C,v]=a.useState(!1),[g,S]=a.useState(!1),[M,x]=a.useState(null),i=(o==null?void 0:o.enabled)??!1,A=a.useCallback(async()=>{if(i)try{v(!0);const{data:s}=await y.get(`${window.routePrefix}/api/ai-assistant/models`);E(s),n(r=>{var N;return r||(o!=null&&o.defaultModel&&s.some(J=>J.id===o.defaultModel)?o.defaultModel:(N=s[0])==null?void 0:N.id)})}catch(s){console.error("Failed to load AI assistant models",s),x("Unable to load AI assistant models")}finally{v(!1)}},[o==null?void 0:o.defaultModel,i]),b=a.useCallback(async s=>{if(!(!i||!s))try{v(!0);const{data:r}=await y.get(`${window.routePrefix}/api/ai-assistant/history/${s}`);j(r.history??[])}catch(r){console.error("Failed to load AI assistant history",r),x("Unable to load AI assistant history")}finally{v(!1)}},[i]);a.useEffect(()=>{if(!i){j([]);return}A()},[A,i]),a.useEffect(()=>{!i||!c||b(c)},[c,b,i]);const k=a.useCallback(s=>{n(s)},[]),P=a.useCallback(()=>p(!0),[]),I=a.useCallback(()=>p(!1),[]),T=a.useCallback(()=>p(s=>!s),[]),_=a.useCallback(async s=>{if(!i||!c)return;const r=s.trim();if(!r)return;const d={id:`tmp-${Date.now()}`,role:"user",content:r,timestamp:new Date().toISOString(),modelId:c};j(N=>[...N,d]),S(!0),x(null);try{const{data:N}=await y.post(`${window.routePrefix}/api/ai-assistant/query`,{modelId:c,message:r});j(N.history??[])}catch(N){console.error("Failed to send AI assistant message",N),x("Unable to reach AI assistant"),await b(c)}finally{S(!1)}},[c,b,i]),O=a.useCallback(async()=>{c&&await b(c)},[c,b]);a.useEffect(()=>{i||p(!1)},[i]),a.useEffect(()=>{ue({isOpen:u,activeModel:c})},[c,u]);const t=a.useMemo(()=>({isEnabled:i,isOpen:u,openChat:P,closeChat:I,toggleChat:T,models:f,activeModel:c,setActiveModel:k,messages:h,loading:C,sending:g,error:M,sendMessage:_,refreshHistory:O}),[c,I,M,i,u,C,h,f,P,O,_,g,k,T]);return e.jsx(q.Provider,{value:t,children:l})},fe=()=>{const l=a.useContext(q);if(!l)throw new Error("useAiAssistant must be used within an AiAssistantProvider");return l};function me(){const{isEnabled:l,isOpen:w,toggleChat:o,models:m,sending:u,loading:p}=fe();if(!l)return null;const f=m.length>0;return e.jsx(e.Fragment,{children:e.jsxs(L,{children:[e.jsx(R,{asChild:!0,children:e.jsx($,{variant:"ghost",className:te("relative",{"text-primary":w}),onClick:o,"aria-expanded":w,"aria-haspopup":"true","aria-controls":"ai-assistant-panel",disabled:!f&&p,children:u?e.jsx(D,{className:"size-4 animate-spin"}):e.jsx(se,{className:"size-4"})})}),e.jsx(B,{side:"bottom",className:"z-[1002]",children:e.jsx("span",{children:"AI assistant"})})]})})}function pe({breadcrumbs:l=[]}){const{tabs:w}=U(),o=z();return e.jsx("header",{className:"border-sidebar-border/50 flex h-16 shrink-0 items-center gap-2 border-b px-6 transition-[width,height] ease-linear group-has-data-[collapsible=icon]/sidebar-wrapper:h-12 md:px-4",children:e.jsxs("div",{className:"flex justify-between w-full",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ae,{className:"-ml-1"}),e.jsx(oe,{breadcrumbs:l})]}),e.jsxs("div",{className:"flex gap-4 items-center",children:[e.jsx(me,{}),o.props.history&&e.jsx(F,{href:`${window.routePrefix}/history/view-all`,children:e.jsx($,{variant:"ghost",size:"icon",className:"shrink-0",children:e.jsx(re,{})})}),e.jsx(ie,{}),o.props.notifications&&(w===null?e.jsx("div",{className:"w-[40px] flex-none flex justify-center",children:e.jsx(D,{className:"size-4 animate-spin"})}):w.length?e.jsx(le,{}):null),e.jsx(ne,{})]})]})})}const be=Object.freeze(Object.defineProperty({__proto__:null,AppSidebarHeader:pe},Symbol.toStringTag,{value:"Module"}));export{pe as A,ve as N,fe as a,Ne as b,be as c,U as u};