@infuro/cms-core 1.0.6 → 1.0.8

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/admin.cjs CHANGED
@@ -379,7 +379,7 @@ var AdminConfigContext = (0, import_react3.createContext)(defaultValue);
379
379
  var INFURO_FAVICON_BASE64 = "data:image/x-icon;base64,AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAKBEAAJ4EAAAwMAAAAQAgAGgmAADGFQAAKAAAABAAAAAgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8V////bv///7D////R////0f///7D///9u////FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///9s0qun7q9qYv/DkYv/6tfV///+/v///////////////+7///9r////AgAAAAAAAAAAAAAAAP///wL///+Q/////sqcl/+WOzH/ljsx/5c9M//AiYP/+/j4/////////////////v///5D///8CAAAAAAAAAAD///9s/////v/////Oo5//lz00/5Y7Mf+WOzH/ljsx/7Z3cP/9+/v////////////////+////bAAAAAD///8V////7v///////////v39//Tq6f/QqKP/m0U8/5Y7Mf+WOzH/z6ah/////////////////////+7///8V////bv///////////////////////////////+XOy/+ZQTf/ljsx/59MQ//69fX/////////////////////bv///7D/////////////////////////////////////wYyG/5Y7Mf+WOzH/4MTC/////////////////////7D////R//////////////////7+//79/f/+/f3//v39/+DGw/+WOzH/ljsx/82inf/////////////////////R////0f///////////////9Svq/+mWVH/pllR/6ZZUf+iUUj/ljsx/5Y7Mf/KnJf/////////////////////0f///7D////////////////KnJf/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/062p/////////////////////7D///9u////////////////0amk/6FQSP+hUEj/oVBI/6JRSP+mWVH/plpS/+7g3v////////////////////9u////Ff///+7///////////7+/v/9/Pz/9u7t/8SSjP/Dj4r/9ezr//79/f/////////////////////u////FQAAAAD///9s/////v///////////////8OPif+WOzH/ljsx/7+Jgv/////////////////////+////bAAAAAAAAAAA////Av///5D////+//////////+9hH7/ljsx/5Y7Mf+8g3z////////////////+////kP///wIAAAAAAAAAAAAAAAD///8C////bP///+7/////8OTi/7R0bP+zcmr/8OLh///////////u////bP///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8V////bv///7D////R////0f///7D///9u////FQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAACAAAABAAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////Hf///0n///95////mf///67///+u////mf///3n///9J////Hf///wIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8I////Tf///7D////p/////v////////////////////////////////////7////p////sP///03///8IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////Pfjz8r7HlpH7wY2H/86lof/iysf/9e3s///+/v//////////////////////////////////////////+////77///89////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////Cf///37////z9Ovq/6BORf+WOzH/ljsx/5Y8Mv+hUEf/v4iC/+rY1v/+/f3///////////////////////////////////////////H///99////CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wr///+d/////P/////06+r/oE5F/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/m0Q7/8WTjf/38PD///////////////////////////////////////////z///+d////CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8J////nf////3///////////Tr6v+gTkX/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/61mX//w4+L///////////////////////////////////////////3///+d////CQAAAAAAAAAAAAAAAAAAAAAAAAAA////Av///37////8////////////////9Ovq/6BORf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/6daUv/v4uD///////////////////////////////////////////z///9+////AgAAAAAAAAAAAAAAAAAAAAD///89////8//////////////////////48fD/rGRc/5pCOf+YPjT/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/6xkXf/37+////////////////////////////////////////////P///89AAAAAAAAAAAAAAAA////CP///77////////////////////////////////7+Pf/8eXj/+DGw/++hn//m0U8/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/8GLhf/9/Pz//////////////////////////////////////////77///8IAAAAAAAAAAD///9N////+/////////////////////////////////////////////////7+/v/p1tP/rGRd/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/mkI4/+XPzf//////////////////////////////////////////+////00AAAAA////Av///7D////////////////////////////////////////////////////////////////06+r/r2pi/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/tndw//38+///////////////////////////////////////////sP///wL///8d////6f/////////////////////////////////////////////////////////////////////x5eP/olJJ/5Y7Mf+WOzH/ljsx/5Y7Mf+aQjn/7dza///////////////////////////////////////////p////Hf///0n////+///////////////////////////////////////////////////////////////////////////Ur6v/ljwy/5Y7Mf+WOzH/ljsx/5Y7Mf/Oo5////////////////////////////////////////////7///9J////ef////////////////////////////////////////////////////////////////////////////////fw7/+jVEv/ljsx/5Y7Mf+WOzH/ljsx/7Nxav///////////////////////////////////////////////3n///+Z/////////////////////////////////////////////////////////////////////////////////////7yCfP+WOzH/ljsx/5Y7Mf+WOzH/pllQ//r29f//////////////////////////////////////////mf///67///////////////////////////////////////////79/f/9/Pz//fz8//38/P/9/Pz//fz8//38/P/9/Pz/yZuW/5Y7Mf+WOzH/ljsx/5Y7Mf+gT0b/9evr//////////////////////////////////////////+u////rv/////////////////////////////////////69vb/wo2I/7Z3cf+2d3H/tndx/7Z3cf+2d3H/tndx/7Z3cf+lV0//ljsx/5Y7Mf+WOzH/ljsx/6BORf/06+r//////////////////////////////////////////67///+Z//////////////////////////////////////Tr6v+gTkX/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/oE5F//Tr6v//////////////////////////////////////////mf///3n/////////////////////////////////////9Ovq/6BORf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+lVk7/+fPz//////////////////////////////////////////95////Sf////7////////////////////////////////06+r/oE5F/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/7FuZ////v7//////////////////////////////////////v///0n///8d////6f////////////////////////////////Tr6v+gTkX/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/zKCb///////////////////////////////////////////p////Hf///wL///+w////////////////////////////////+PLx/7d4cf+tZl//rWZf/61mX/+tZl//rWZf/61mX/+tZl//rmdg/7Z3cP+2d3H/tndx/7h7df/w4uH//////////////////////////////////////////7D///8CAAAAAP///03////7/////////////////////////////////Pv6//z6+f/8+vn//Pr5//z6+f/z6un/48zJ/+LKx//y5+b//fz8//38/P/9/Pz//fz8///////////////////////////////////////////7////TQAAAAAAAAAA////CP///77/////////////////////////////////////////////////////4MXC/6VXTv+WPDL/ljwy/6JRSP/aubb///7+/////////////////////////////////////////////////////77///8IAAAAAAAAAAAAAAAA////Pf////P///////////////////////////////////////////Xs6/+jU0r/ljsx/5Y7Mf+WOzH/ljsx/59MQv/w5OL////////////////////////////////////////////////z////PQAAAAAAAAAAAAAAAAAAAAD///8C////fv////z/////////////////////////////////////3sK//5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/9m5tf///////////////////////////////////////////P///37///8CAAAAAAAAAAAAAAAAAAAAAAAAAAD///8J////nf////3////////////////////////////////ZuLX/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/17Sw//////////////////////////////////////3///+d////CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8K////nf////z//////////////////////////+zc2v+aQzn/ljsx/5Y7Mf+WOzH/ljsx/5pDOf/r2tj////////////////////////////////8////nf///woAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8J////fv////P//////////////////////v39/8eYkv+YPjT/ljsx/5Y7Mf+YPjT/xpSP//79/f//////////////////////////8////37///8JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8C////Pf///77////7/////////////////fv6/+DEwf/Ekoz/wY2H/97Bvv/8+vr/////////////////////+////77///89////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CP///03///+w////6f////7////////////////////////////////////+////6f///7D///9N////CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wL///8d////Sf///3n///+Z////rv///67///+Z////ef///0n///8d////AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAAAABgAAAAAQAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E////DP///xr///80////Rv///1n///9q////gP///4D///9q////Wf///0b///80////Gv///wz///8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CP///y7///9g////lP///7v////V////6P////r////8/////P////z////8////+v///+j////V////u////5T///9g////Lv///wgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wf///81////k////8/////v////+v////////////////////////////////////////////////////////////////////r////v////z////5P///81////BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8G////Kv37+3zt3Nrd27y5/Nm6t//fxMH/59LQ//Dk4v/48vH//fv6//////////////////////////////////////////////////////////////////////z////d////fP///yr///8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xH///9g////wvz5+ffNop3+m0U8/5c+NP+cRz7/pFVN/65oYP+8gnv/0qun/+jU0v/59fT//v7+///////////////////////////////////////////////////////////+////9////8L///9f////EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////GP///4n////m/////fv4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+XPTT/m0Q6/6ZaUf/BjIX/6NXT//z5+f////////////////////////////////////////////////////////////////3////k////if///xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wH///8i////pP////f///////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+XPjT/oVFI/8yhnP/x5OP//vz8////////////////////////////////////////////////////////////////9////6T///8i////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yL///+d////8/////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5tEOv+3eHL/48rH//37+/////////////////////////////////////////////////////////////////P///+d////IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////GP///6T////z//////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+YPjT/qFxT/9y+uv/9+vr////////////////////////////////////////////////////////////////z////pP///xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8R////if////f///////////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsy/6NUS//Yt7P//Pn4////////////////////////////////////////////////////////////////9////4n///8RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wb///9g////5v////////////////////////////////v4+P/KnZj/mUI4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5c8Mv+pXlb/38PA//38/P///////////////////////////////////////////////////////////////+b///9g////BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yr////C/////f////////////////////////////////38+//dwLz/qF1V/51JP/+bRDv/mD40/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+XPTP/qWBY/+vZ2P///v7///////////////////////////////////////////////////////////3////C////KgAAAAAAAAAAAAAAAAAAAAAAAAAA////B////3z////3///////////////////////////////////////////9+/r/9/Dv/+zc2f/dwLz/x5iT/7BrY/+eS0H/lz0z/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/lzwy/7d6c//06un////////////////////////////////////////////////////////////////3////fP///wcAAAAAAAAAAAAAAAAAAAAA////Nf///93////+//////////////////////////////////////////////////////7+/v/+/v7//fz8//Hm5f/XtLH/s3Fq/5lCOP+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/51JP//Sq6b//Pn5///////////////////////////////////////////////////////////+////3f///zUAAAAAAAAAAAAAAAD///8I////k/////z////////////////////////////////////////////////////////////////////////////////9+/v/8eTj/8aVkP+dRz7/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5c8Mv+vamL/7uDf/////////////////////////////////////////////////////////////////P///5P///8IAAAAAAAAAAD///8u////z/////////////////////////////////////////////////////////////////////////////////////////////////fx8P/ImZP/nUg//5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+ZQTj/0qyo//38/P///////////////////////////////////////////////////////////////8////8uAAAAAP///wT///9g////7//////////////////////////////////////////////////////////////////////////////////////////////////////07Or/xJGL/5hAN/+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/rGRd//Tq6P///////////////////////////////////////////////////////////////+////9g////BP///wz///+U////+v////////////////////////////////////////////////////////////////////////////////////////////////////////7/8+jm/7Nya/+WPDP/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/mkQ7/9m3s////v7///////////////////////////////////////////////////////////r///+U////DP///xr///+7/////////////////////////////////////////////////////////////////////////////////////////////////////////////////v7+/+HHxP+hUEf/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljwy/7yBe//69/f///////////////////////////////////////////////////////////////+7////Gv///zT////V//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////bu7f+7gHr/mD40/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/6xkXP/u4N/////////////////////////////////////////////////////////////////V////NP///0b////o//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////38/P/XtK//nEY9/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/6BNRP/iycb////////////////////////////////////////////////////////////////o////Rv///1n////6///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////o1NL/pVhQ/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5xGPP/Yt7L//v39///////////////////////////////////////////////////////////6////Wf///2r////8///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////06un/sW1m/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5pDOf/PpKD//Pr5///////////////////////////////////////////////////////////8////av///4D////8/////////////////////////////////////////////////////////////v7//fv7//37+v/9+/r//fv6//37+v/9+/r//fv6//37+v/9+/r//fv6//37+v/06un/snBp/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5lBOP/KnJj/+/j4///////////////////////////////////////////////////////////8////gP///4D////8//////////////////////////////////////////////////////79/f/s3Nr/z6ej/8uemv/Lnpr/y56a/8uemv/Lnpr/y56a/8uemv/Lnpr/y56a/8uemv/GlI//o1VM/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5lBOP/KnJf/+/j4///////////////////////////////////////////////////////////8////gP///2r////8//////////////////////////////////////////////////////z5+f/Nop3/m0Q7/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5lBOP/KnJf/+/j4///////////////////////////////////////////////////////////8////av///1n////6//////////////////////////////////////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5lCOP/KnZj/+/j4///////////////////////////////////////////////////////////6////Wf///0b////o//////////////////////////////////////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5pDOv/Qp6P//Pr6///////////////////////////////////////////////////////////o////Rv///zT////V//////////////////////////////////////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/51IP//bvbr//v7+///////////////////////////////////////////////////////////V////NP///xr///+7//////////////////////////////////////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/6RVTf/n0c////////////////////////////////////////////////////////////////+7////Gv///wz///+U////+v////////////////////////////////////////////////v4+P/KnJf/mUE4/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/7FuZ//z6ej///////////////////////////////////////////////////////////r///+U////DP///wT///9g////7/////////////////////////////////////////////////z4+P/LnZj/mkI5/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/ljwy/5Y8Mv+WPDL/mUE3/8mblf/9+/r//////////////////////////////////////////////////////////+////9g////BAAAAAD///8u////z/////////////////////////////////////////////////38/P/iycb/v4iC/7yCfP+8gnz/vIJ8/7yCfP+8gnz/vIJ8/7yCfP+8gnz/vIJ8/7yCfP+8gnz/voR+/8qcl//Lnpr/y56a/8uemv/Lnpr/zqOf//Hl5P///v7//////////////////////////////////////////////////////////8////8uAAAAAAAAAAD///8I////k/////z////////////////////////////////////////////////9/Pz/+vf2//r39v/69/b/+vf2//r39v/69/b/+vf2//j08//07Ov/7+Df/+7f3v/z6+n/+PPy//z6+v/9+/r//fv6//37+v/9+/r//fv7///+/v///////////////////////////////////////////////////////////P///5P///8IAAAAAAAAAAAAAAAA////Nf///93////+/////////////////////////////////////////////////////////////////////////////v7/9u7t/9i3s/++hn//sW1m/7BsZf+7gnv/066q//Ln5v/+/v7////////////////////////////////////////////////////////////////////////////////+////3f///zUAAAAAAAAAAAAAAAAAAAAA////B////3z////3///////////////////////////////////////////////////////////////////////////17Ov/wo6I/55KQf+XPjT/ljsx/5Y7Mf+XPTP/nEY9/7uBe//x5eP////////////////////////////////////////////////////////////////////////////////3////fP///wcAAAAAAAAAAAAAAAAAAAAAAAAAAP///yr////C/////f////////////////////////////////////////////////////////////////37+//UsKz/nUg//5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5tEO//No57/+/j4//////////////////////////////////////////////////////////////////////3////C////KgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wb///9g////5v////////////////////////////////////////////////////////////////bv7/+5fHb/lz0z/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y8Mv+ycGj/8ujm/////////////////////////////////////////////////////////////////////+b///9g////BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8R////if////f//////////////////////////////////////////////////////////+3e3P+qYlr/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+oXVT/6tnX////////////////////////////////////////////////////////////////9////4n///8RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////GP///6T////z/////////////////////////////////////////////////////+vZ1/+oXVT/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+nWlL/6dbU///////////////////////////////////////////////////////////z////pP///xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///yL///+d////8/////////////////////////////////////////////////Hm5f+wa2T/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5Y7Mf+uaGD/8OPh//////////////////////////////////////////////////////P///+d////IgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wH///8i////pP////f///////////////////////////////////////////r19P/CjYf/mD81/5Y7Mf+WOzH/ljsx/5Y7Mf+WOzH/ljsx/5g/Nf/BjIb/+fTz////////////////////////////////////////////////9////6T///8i////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////GP///4n////m/////f////////////////////////////////7+/v/m0M7/qmFZ/5c9M/+WOzH/ljsx/5Y7Mf+WOzH/lz0z/6leV//lz8z//v7+//////////////////////////////////////3////m////if///xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///xH///9g////wv////f////+///////////////////////////8+vr/4snG/7d4cf+iUUj/mUA3/5c+NP+gTkT/tXVu/+DFw//8+fn////////////////////////////////+////9////8L///9g////EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8G////Kv///3z////d/////P///////////////////////////v38//Tr6v/kzcv/2726/9m6t//jysf/8uno//78/P////////////////////////////////z////d////fP///yr///8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wf///81////k////8/////v////+v////////////////////////////////////////////////////////////////////r////v////z////5P///81////BwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////CP///y7///9g////lP///7v////V////6P////r////8/////P////z////8////+v///+j////V////u////5T///9g////Lv///wgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8E////DP///xr///80////Rv///1n///9q////gP///4D///9q////Wf///0b///80////Gv///wz///8EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==";
380
380
 
381
381
  // src/lib/cms-version.ts
382
- var CMS_VERSION = true ? "1.0.6" : "0.0.0";
382
+ var CMS_VERSION = true ? "1.0.8" : "0.0.0";
383
383
 
384
384
  // src/components/Admin/Sidebar.tsx
385
385
  var import_jsx_runtime4 = require("react/jsx-runtime");
@@ -8226,59 +8226,288 @@ function PageBuilderPage({ pageId }) {
8226
8226
  // src/admin/pages/PluginsPage.tsx
8227
8227
  var import_react40 = require("react");
8228
8228
  var import_lucide_react32 = require("lucide-react");
8229
+ var import_sonner6 = require("sonner");
8229
8230
  var import_jsx_runtime55 = require("react/jsx-runtime");
8230
8231
  var ICON_MAP = {
8231
8232
  storage: import_lucide_react32.HardDrive,
8232
8233
  email: import_lucide_react32.Mail,
8233
- payment: import_lucide_react32.CreditCard
8234
+ payment: import_lucide_react32.CreditCard,
8235
+ llm: import_lucide_react32.MessageCircle
8234
8236
  };
8235
- function PluginIcon({ descriptor }) {
8237
+ function PluginIcon({ descriptor, size = "md" }) {
8236
8238
  const Icon2 = descriptor.icon ? ICON_MAP[descriptor.icon] ?? import_lucide_react32.Puzzle : import_lucide_react32.Puzzle;
8237
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300", children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon2, { className: "h-5 w-5" }) });
8239
+ const sizeClass = size === "sm" ? "h-8 w-8" : "h-11 w-11";
8240
+ const iconClass = size === "sm" ? "h-4 w-4" : "h-5 w-5";
8241
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: `flex shrink-0 items-center justify-center rounded-lg bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-300 ${sizeClass}`, children: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon2, { className: iconClass }) });
8242
+ }
8243
+ function PluginSettingsPanel({
8244
+ descriptor,
8245
+ onSaved
8246
+ }) {
8247
+ const settingsGroup = descriptor.settingsGroup;
8248
+ const isLlm = settingsGroup === "llm";
8249
+ const [enabled, setEnabled] = (0, import_react40.useState)(true);
8250
+ const [botName, setBotName] = (0, import_react40.useState)("");
8251
+ const [icon, setIcon] = (0, import_react40.useState)("");
8252
+ const [iconImageUrl, setIconImageUrl] = (0, import_react40.useState)("");
8253
+ const [iconBackgroundColor, setIconBackgroundColor] = (0, import_react40.useState)("#6366f1");
8254
+ const [headerColor, setHeaderColor] = (0, import_react40.useState)("#6366f1");
8255
+ const [loading, setLoading] = (0, import_react40.useState)(true);
8256
+ const [saving, setSaving] = (0, import_react40.useState)(false);
8257
+ (0, import_react40.useEffect)(() => {
8258
+ fetch(`/api/settings/${settingsGroup}`).then((r) => r.ok ? r.json() : {}).then((data) => {
8259
+ setEnabled(data.enabled !== "false");
8260
+ setBotName(data.botName ?? "");
8261
+ setIcon(data.icon ?? "");
8262
+ if (isLlm) {
8263
+ setIconImageUrl(data.iconImageUrl ?? "");
8264
+ setIconBackgroundColor(data.iconBackgroundColor ?? "#6366f1");
8265
+ setHeaderColor(data.headerColor ?? "#6366f1");
8266
+ }
8267
+ }).finally(() => setLoading(false));
8268
+ }, [settingsGroup, isLlm]);
8269
+ const buildPayload = () => {
8270
+ const payload = {
8271
+ enabled: { value: enabled ? "true" : "false", type: "public" },
8272
+ botName: { value: botName, type: "public" },
8273
+ icon: { value: icon, type: "public" }
8274
+ };
8275
+ if (isLlm) {
8276
+ payload.iconImageUrl = { value: iconImageUrl, type: "public" };
8277
+ payload.iconBackgroundColor = { value: iconBackgroundColor, type: "public" };
8278
+ payload.headerColor = { value: headerColor, type: "public" };
8279
+ }
8280
+ return payload;
8281
+ };
8282
+ const handleSave = async () => {
8283
+ setSaving(true);
8284
+ try {
8285
+ const res = await fetch(`/api/settings/${settingsGroup}`, {
8286
+ method: "PUT",
8287
+ headers: { "Content-Type": "application/json" },
8288
+ body: JSON.stringify(buildPayload())
8289
+ });
8290
+ if (!res.ok) throw new Error();
8291
+ import_sonner6.toast.success("Settings saved");
8292
+ onSaved?.();
8293
+ } catch {
8294
+ import_sonner6.toast.error("Failed to save");
8295
+ } finally {
8296
+ setSaving(false);
8297
+ }
8298
+ };
8299
+ if (loading) return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "text-sm text-gray-500 dark:text-gray-400", children: "Loading..." });
8300
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-4", children: [
8301
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
8302
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-enabled`, className: "text-sm", children: "Enabled" }),
8303
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Switch, { id: `${settingsGroup}-enabled`, checked: enabled, onCheckedChange: setEnabled })
8304
+ ] }),
8305
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-1", children: [
8306
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-botName`, className: "text-sm", children: "Name" }),
8307
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8308
+ Input,
8309
+ {
8310
+ id: `${settingsGroup}-botName`,
8311
+ value: botName,
8312
+ onChange: (e) => setBotName(e.target.value),
8313
+ placeholder: "e.g. Support Bot",
8314
+ className: "h-8 text-sm"
8315
+ }
8316
+ )
8317
+ ] }),
8318
+ isLlm ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
8319
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-1", children: [
8320
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-iconImageUrl`, className: "text-sm", children: "Icon image URL" }),
8321
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8322
+ Input,
8323
+ {
8324
+ id: `${settingsGroup}-iconImageUrl`,
8325
+ value: iconImageUrl,
8326
+ onChange: (e) => setIconImageUrl(e.target.value),
8327
+ placeholder: "https://\u2026 or /images/chat-icon.png",
8328
+ className: "h-8 text-sm"
8329
+ }
8330
+ ),
8331
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: "PNG or image URL. Leave empty to use emoji below." })
8332
+ ] }),
8333
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-1", children: [
8334
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-icon`, className: "text-sm", children: "Icon fallback (emoji)" }),
8335
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8336
+ Input,
8337
+ {
8338
+ id: `${settingsGroup}-icon`,
8339
+ value: icon,
8340
+ onChange: (e) => setIcon(e.target.value),
8341
+ placeholder: "e.g. \u{1F4AC}",
8342
+ className: "h-8 text-sm w-20"
8343
+ }
8344
+ )
8345
+ ] }),
8346
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex gap-4", children: [
8347
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-1", children: [
8348
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-iconBg`, className: "text-sm", children: "Icon background" }),
8349
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-2", children: [
8350
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8351
+ "input",
8352
+ {
8353
+ type: "color",
8354
+ id: `${settingsGroup}-iconBg`,
8355
+ value: iconBackgroundColor,
8356
+ onChange: (e) => setIconBackgroundColor(e.target.value),
8357
+ className: "h-8 w-10 cursor-pointer rounded border border-gray-300 dark:border-gray-600"
8358
+ }
8359
+ ),
8360
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8361
+ Input,
8362
+ {
8363
+ value: iconBackgroundColor,
8364
+ onChange: (e) => setIconBackgroundColor(e.target.value),
8365
+ className: "h-8 w-24 text-sm font-mono"
8366
+ }
8367
+ )
8368
+ ] })
8369
+ ] }),
8370
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-1", children: [
8371
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-headerColor`, className: "text-sm", children: "Header color" }),
8372
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-2", children: [
8373
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8374
+ "input",
8375
+ {
8376
+ type: "color",
8377
+ id: `${settingsGroup}-headerColor`,
8378
+ value: headerColor,
8379
+ onChange: (e) => setHeaderColor(e.target.value),
8380
+ className: "h-8 w-10 cursor-pointer rounded border border-gray-300 dark:border-gray-600"
8381
+ }
8382
+ ),
8383
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8384
+ Input,
8385
+ {
8386
+ value: headerColor,
8387
+ onChange: (e) => setHeaderColor(e.target.value),
8388
+ className: "h-8 w-24 text-sm font-mono"
8389
+ }
8390
+ )
8391
+ ] })
8392
+ ] })
8393
+ ] })
8394
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-1", children: [
8395
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Label3, { htmlFor: `${settingsGroup}-icon`, className: "text-sm", children: "Icon (emoji or name)" }),
8396
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8397
+ Input,
8398
+ {
8399
+ id: `${settingsGroup}-icon`,
8400
+ value: icon,
8401
+ onChange: (e) => setIcon(e.target.value),
8402
+ placeholder: "e.g. \u{1F916} or llm",
8403
+ className: "h-8 text-sm"
8404
+ }
8405
+ )
8406
+ ] }),
8407
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(Button, { size: "sm", onClick: handleSave, disabled: saving, className: "gap-1", children: [
8408
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.Save, { className: "h-3.5 w-3.5" }),
8409
+ "Save"
8410
+ ] })
8411
+ ] });
8412
+ }
8413
+ function PluginListItem({
8414
+ descriptor,
8415
+ enabled,
8416
+ selected,
8417
+ onSelect
8418
+ }) {
8419
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
8420
+ "button",
8421
+ {
8422
+ type: "button",
8423
+ onClick: onSelect,
8424
+ className: `flex w-full items-center gap-3 rounded-lg border px-3 py-2.5 text-left transition-colors ${selected ? "border-gray-300 bg-gray-50 dark:border-gray-600 dark:bg-gray-700/50" : "border-transparent hover:bg-gray-50 dark:hover:bg-gray-800/50"}`,
8425
+ children: [
8426
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(PluginIcon, { descriptor, size: "sm" }),
8427
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "min-w-0 flex-1", children: [
8428
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "font-medium text-gray-900 dark:text-white truncate", children: descriptor.label || descriptor.name }),
8429
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center gap-2 mt-0.5", children: [
8430
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
8431
+ "span",
8432
+ {
8433
+ className: `inline-flex items-center gap-1 rounded-full px-1.5 py-0.5 text-xs font-medium ${enabled ? "bg-emerald-50 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400" : "bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400"}`,
8434
+ children: [
8435
+ enabled ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.CheckCircle2, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.XCircle, { className: "h-3 w-3" }),
8436
+ enabled ? "On" : "Off"
8437
+ ]
8438
+ }
8439
+ ),
8440
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("span", { className: "text-xs text-gray-400 dark:text-gray-500", children: [
8441
+ "v",
8442
+ descriptor.version
8443
+ ] })
8444
+ ] })
8445
+ ] })
8446
+ ]
8447
+ }
8448
+ );
8238
8449
  }
8239
8450
  function PluginsPage() {
8240
8451
  const { pluginDescriptors = [] } = (0, import_react40.useContext)(AdminConfigContext);
8241
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "space-y-6", children: [
8242
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { children: [
8243
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("h1", { className: "text-xl font-semibold text-gray-900 dark:text-white", children: "Plugins" }),
8244
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "mt-0.5 text-sm text-gray-500 dark:text-gray-400", children: "Registered plugins and their status" })
8452
+ const [selectedName, setSelectedName] = (0, import_react40.useState)(null);
8453
+ const [enabledMap, setEnabledMap] = (0, import_react40.useState)({});
8454
+ (0, import_react40.useEffect)(() => {
8455
+ pluginDescriptors.forEach((p) => {
8456
+ if (!p.settingsGroup) return;
8457
+ fetch(`/api/settings/${p.settingsGroup}`).then((r) => r.ok ? r.json() : {}).then(
8458
+ (data) => setEnabledMap((prev) => ({ ...prev, [p.name]: data.enabled !== "false" }))
8459
+ ).catch(() => {
8460
+ });
8461
+ });
8462
+ }, [pluginDescriptors]);
8463
+ const selectedDescriptor = pluginDescriptors.find((p) => p.name === selectedName);
8464
+ const refreshEnabled = (name) => {
8465
+ const d = pluginDescriptors.find((p) => p.name === name);
8466
+ if (!d?.settingsGroup) return;
8467
+ fetch(`/api/settings/${d.settingsGroup}`).then((r) => r.ok ? r.json() : {}).then(
8468
+ (data) => setEnabledMap((prev) => ({ ...prev, [name]: data.enabled !== "false" }))
8469
+ ).catch(() => {
8470
+ });
8471
+ };
8472
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "min-w-0 rounded-lg bg-white shadow-md dark:bg-gray-800", children: [
8473
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "bg-gray-800 border-b border-gray-700 px-4 py-2.5 rounded-t-lg dark:bg-gray-900 dark:border-gray-700", children: [
8474
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("h1", { className: "text-base font-semibold text-white", children: "Plugins" }),
8475
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "text-xs text-gray-300 mt-0.5", children: "Registered plugins and their status" })
8245
8476
  ] }),
8246
- pluginDescriptors.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "rounded-xl border border-gray-200 bg-white p-8 text-center dark:border-gray-700 dark:bg-gray-800", children: [
8477
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "min-w-0 p-6", children: pluginDescriptors.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "py-12 text-center", children: [
8247
8478
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.Puzzle, { className: "mx-auto h-10 w-10 text-gray-400" }),
8248
8479
  /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "mt-3 text-sm text-gray-500 dark:text-gray-400", children: "No plugins registered. Add plugin descriptors to your app admin layout." })
8249
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "grid gap-4 sm:grid-cols-2 lg:grid-cols-3", children: pluginDescriptors.map((p) => {
8250
- const enabled = p.enabled !== false;
8251
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8252
- "div",
8480
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex gap-6", children: [
8481
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "w-56 shrink-0 space-y-1", children: pluginDescriptors.map((p) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8482
+ PluginListItem,
8253
8483
  {
8254
- className: "flex flex-col rounded-xl border border-gray-200 bg-white shadow-sm transition-shadow hover:shadow dark:border-gray-700 dark:bg-gray-800",
8255
- children: /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-start gap-4 p-5", children: [
8256
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(PluginIcon, { descriptor: p }),
8257
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "min-w-0 flex-1", children: [
8258
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
8259
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("h2", { className: "font-medium text-gray-900 dark:text-white", children: p.label || p.name }),
8260
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
8261
- "span",
8262
- {
8263
- className: `inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium ${enabled ? "bg-emerald-50 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400" : "bg-gray-100 text-gray-600 dark:bg-gray-700 dark:text-gray-400"}`,
8264
- children: [
8265
- enabled ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.CheckCircle2, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.XCircle, { className: "h-3.5 w-3.5" }),
8266
- enabled ? "Enabled" : "Disabled"
8267
- ]
8268
- }
8269
- )
8270
- ] }),
8271
- /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("p", { className: "mt-0.5 text-xs text-gray-500 dark:text-gray-400", children: [
8272
- "v",
8273
- p.version
8274
- ] }),
8275
- p.description && /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "mt-2 text-sm text-gray-600 dark:text-gray-300", children: p.description })
8276
- ] })
8277
- ] })
8484
+ descriptor: p,
8485
+ enabled: p.settingsGroup ? enabledMap[p.name] ?? p.enabled !== false : p.enabled !== false,
8486
+ selected: selectedName === p.name,
8487
+ onSelect: () => setSelectedName(p.name)
8278
8488
  },
8279
8489
  p.name
8280
- );
8281
- }) })
8490
+ )) }),
8491
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "min-w-0 flex-1", children: !selectedName ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [
8492
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.Puzzle, { className: "h-10 w-10 text-gray-300 dark:text-gray-600" }),
8493
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "mt-3 text-sm text-gray-500 dark:text-gray-400", children: "Select a plugin to view or edit its configuration." })
8494
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("div", { className: "rounded-lg border border-gray-200 bg-gray-50/50 p-5 dark:border-gray-700 dark:bg-gray-800/50", children: selectedDescriptor?.settingsGroup ? /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
8495
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("h2", { className: "text-sm font-medium text-gray-700 dark:text-gray-300 mb-4", children: [
8496
+ selectedDescriptor.label || selectedDescriptor.name,
8497
+ " \u2014 Configuration"
8498
+ ] }),
8499
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
8500
+ PluginSettingsPanel,
8501
+ {
8502
+ descriptor: selectedDescriptor,
8503
+ onSaved: () => refreshEnabled(selectedDescriptor.name)
8504
+ }
8505
+ )
8506
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)("div", { className: "flex flex-col items-center justify-center py-12 text-center", children: [
8507
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_lucide_react32.Puzzle, { className: "h-10 w-10 text-gray-300 dark:text-gray-600" }),
8508
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)("p", { className: "mt-3 text-sm text-gray-500 dark:text-gray-400", children: "No configuration available for this plugin." })
8509
+ ] }) }) })
8510
+ ] }) })
8282
8511
  ] });
8283
8512
  }
8284
8513
 
@@ -9101,12 +9330,12 @@ var DEFAULT_ADMIN_NAV = [
9101
9330
  // src/admin/CmsProviders.tsx
9102
9331
  var import_react44 = require("next-auth/react");
9103
9332
  var import_next_themes = require("next-themes");
9104
- var import_sonner6 = require("sonner");
9333
+ var import_sonner7 = require("sonner");
9105
9334
  var import_jsx_runtime60 = require("react/jsx-runtime");
9106
9335
  function CmsProviders({ children }) {
9107
9336
  return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react44.SessionProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_next_themes.ThemeProvider, { attribute: "class", defaultTheme: "system", enableSystem: true, children: [
9108
9337
  children,
9109
- /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_sonner6.Toaster, { position: "top-right" })
9338
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_sonner7.Toaster, { position: "top-right" })
9110
9339
  ] }) });
9111
9340
  }
9112
9341
  // Annotate the CommonJS export names for ESM import in node: