@oktis-works/admin 0.14.0 → 0.16.0

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 (80) hide show
  1. package/dist/client/_astro/{ActivityWidget.DmhtX3Xm.js → ActivityWidget.ChzmikZu.js} +1 -1
  2. package/dist/client/_astro/{AdminBar.DKoQ5M3w.js → AdminBar.BJWCyHKH.js} +1 -1
  3. package/dist/client/_astro/{ApiKeysManager.BaPrAyqm.js → ApiKeysManager.BhT6maqs.js} +1 -1
  4. package/dist/client/_astro/{AtGlanceWidget.zlWIhmzI.js → AtGlanceWidget.DxzCpOV6.js} +1 -1
  5. package/dist/client/_astro/{CommentsManager.DROGQRli.js → CommentsManager.ENdf74ep.js} +1 -1
  6. package/dist/client/_astro/ContentEditor.D0k_DlIU.js +1 -0
  7. package/dist/client/_astro/{ContentEditor.ChA5r0aE.js → ContentEditor.D5ceM2cx.js} +1 -1
  8. package/dist/client/_astro/{ContentTypeWorkspace.Dj9dP14a.js → ContentTypeWorkspace.Pt26MjgI.js} +1 -1
  9. package/dist/client/_astro/{DashboardHome.Dn6_pJuX.js → DashboardHome.CFRpf5gq.js} +1 -1
  10. package/dist/client/_astro/{DashboardLayout.astro_astro_type_script_index_0_lang.NiobGnWg.js → DashboardLayout.astro_astro_type_script_index_0_lang.K2BlxaxN.js} +1 -1
  11. package/dist/client/_astro/{FieldGroupEditor.CiFoYYb2.js → FieldGroupEditor.CJrN1zwx.js} +1 -1
  12. package/dist/client/_astro/{FieldGroupList.CdN99hvU.js → FieldGroupList.BwV0WQKr.js} +1 -1
  13. package/dist/client/_astro/{FieldRenderer.DYMREsip.js → FieldRenderer.2TxRD88c.js} +1 -1
  14. package/dist/client/_astro/{Footer.VGpnxqkW.js → Footer.GKAEli7Z.js} +1 -1
  15. package/dist/client/_astro/{GeneralSettings.mQ7FyhM-.js → GeneralSettings.CVL2OygA.js} +1 -1
  16. package/dist/client/_astro/{LogsManager.BUJ7baOa.js → LogsManager.CFLnd9ZB.js} +1 -1
  17. package/dist/client/_astro/{MediaLibrary.DMvI8KXX.js → MediaLibrary.7dkXH_rK.js} +1 -1
  18. package/dist/client/_astro/{MenuManager._4YgarRt.js → MenuManager.DR4WuUgm.js} +1 -1
  19. package/dist/client/_astro/{Modal.DbBPpkbR.js → Modal.C6l3xeBc.js} +1 -1
  20. package/dist/client/_astro/PluginManager.DGS7ULAQ.js +112 -0
  21. package/dist/client/_astro/{PostTypesManager.CifIQbeV.js → PostTypesManager.CFYtUiMC.js} +1 -1
  22. package/dist/client/_astro/{QuickDraftWidget.CsG3_wS2.js → QuickDraftWidget.6BO0a_eK.js} +1 -1
  23. package/dist/client/_astro/ReadingSettings.DPXWhZzQ.js +1 -0
  24. package/dist/client/_astro/{ResourceHubs.DedTFbiz.js → ResourceHubs.BkQbEmJj.js} +1 -1
  25. package/dist/client/_astro/{TaxonomiesManager.JqBPU1pf.js → TaxonomiesManager.C_5zrayU.js} +1 -1
  26. package/dist/client/_astro/{TaxonomyTermsManager.BLGRLt8p.js → TaxonomyTermsManager.j3RcgMUq.js} +1 -1
  27. package/dist/client/_astro/{ThemeCustomizer.DrSQPj4W.js → ThemeCustomizer.CA-V4vrP.js} +1 -1
  28. package/dist/client/_astro/ThemeManager.BRbihPtF.js +144 -0
  29. package/dist/client/_astro/{UserCreateForm.C54wZYbf.js → UserCreateForm.Zz8aGR3k.js} +1 -1
  30. package/dist/client/_astro/{UsersManager.BYTWz2I8.js → UsersManager.BrtySwDC.js} +1 -1
  31. package/dist/client/_astro/{WebhooksManager.DeJ_f1Gk.js → WebhooksManager.UOfDFaV5.js} +1 -1
  32. package/dist/client/_astro/{api.flUgn70U.js → api.B03e8F6d.js} +1 -1
  33. package/dist/client/_astro/{extensions.DtuT3Phu.js → extensions.EzvpwBZm.js} +1 -1
  34. package/dist/client/_astro/{i18n.CBexpqud.js → i18n.DeOz3HxE.js} +1 -1
  35. package/dist/client/_astro/{login.astro_astro_type_script_index_0_lang.COYjmQTY.js → login.astro_astro_type_script_index_0_lang.BUOUZuDy.js} +1 -1
  36. package/dist/client/_astro/{pt-BR.DlIhl4_A.js → pt-BR.C-EQC0-7.js} +1 -1
  37. package/dist/client/_astro/{store.CYzqtRKs.js → store.DJjOMYcw.js} +1 -1
  38. package/dist/server/chunks/{404_BxFvEXYq.mjs → 404_DSq1z3nq.mjs} +1 -1
  39. package/dist/server/chunks/{BaseLayout_BTzlA_Yr.mjs → BaseLayout_BfJCf1zO.mjs} +1 -1
  40. package/dist/server/chunks/{ContentEditor_DStZ4RZE.mjs → ContentEditor_Bm8Txfp0.mjs} +3 -3
  41. package/dist/server/chunks/{DashboardLayout_PXoRmnBH.mjs → DashboardLayout_Bgig4Bzt.mjs} +2 -2
  42. package/dist/server/chunks/{FieldRenderer_BlZgS0Im.mjs → FieldRenderer_CDx8Zaxh.mjs} +2 -2
  43. package/dist/server/chunks/{MediaLibrary_D7vu5VMd.mjs → MediaLibrary_D5Q4ofCd.mjs} +2 -2
  44. package/dist/server/chunks/{Modal_I_mBEOz2.mjs → Modal_B8BarHWg.mjs} +1 -1
  45. package/dist/server/chunks/{_id__DFFoFesR.mjs → _id__BlTMZrdv.mjs} +2 -2
  46. package/dist/server/chunks/{_slug__DBH2w1la.mjs → _slug__Dj-IRSFr.mjs} +1 -1
  47. package/dist/server/chunks/{access_D1rk89Sh.mjs → access_CNiloHkT.mjs} +3 -3
  48. package/dist/server/chunks/{api-keys_BqhmvOer.mjs → api-keys_GqT5bD0q.mjs} +3 -3
  49. package/dist/server/chunks/{comments_D_ta2fip.mjs → comments_BXNvPafa.mjs} +2 -2
  50. package/dist/server/chunks/{custom-fields_Cl8P-rrK.mjs → custom-fields_CO1IKHOz.mjs} +2 -2
  51. package/dist/server/chunks/{customize_DgtzmFmz.mjs → customize_Byc8itgW.mjs} +2 -2
  52. package/dist/server/chunks/{edit_DTk4qFj5.mjs → edit_D0rn3HA1.mjs} +2 -2
  53. package/dist/server/chunks/{general_B-fEXuQn.mjs → general_B0fNmZbu.mjs} +2 -2
  54. package/dist/server/chunks/{i18n_BmAxDr2Q.mjs → i18n_ie92fcXF.mjs} +6 -33
  55. package/dist/server/chunks/{index_DI8jAAVQ.mjs → index_7b0VyAS9.mjs} +2 -2
  56. package/dist/server/chunks/{index_BcVtYp1L.mjs → index_CV9dE_yu.mjs} +2 -2
  57. package/dist/server/chunks/{index_DXsKda1J.mjs → index_DhgdylFA.mjs} +2 -2
  58. package/dist/server/chunks/{index_BKjRvOw4.mjs → index_M4NDX1QC.mjs} +3 -3
  59. package/dist/server/chunks/{index_BXnSMGRk.mjs → index_i8ebBGvR.mjs} +2 -2
  60. package/dist/server/chunks/{login_BGPEB2l4.mjs → login_D50phFgs.mjs} +1 -1
  61. package/dist/server/chunks/{logs_XjDk7dqi.mjs → logs_BRNxhbeo.mjs} +2 -2
  62. package/dist/server/chunks/{menus_Kqym4CNK.mjs → menus_B-GjEx8-.mjs} +2 -2
  63. package/dist/server/chunks/{new_Dnp7PIHP.mjs → new_Bi2kaUnl.mjs} +2 -2
  64. package/dist/server/chunks/{new_BiikYmvu.mjs → new_CK6-d0l3.mjs} +2 -2
  65. package/dist/server/chunks/plugins_D7EHhXUJ.mjs +150 -0
  66. package/dist/server/chunks/{post-types_Dr4t-TYB.mjs → post-types_BBn7Tk48.mjs} +2 -2
  67. package/dist/server/chunks/{pt-BR_DH_fNjEo.mjs → pt-BR_CQWainBO.mjs} +5 -20
  68. package/dist/server/chunks/reading_BGq2c5HM.mjs +197 -0
  69. package/dist/server/chunks/{taxonomies_B0YzIdmD.mjs → taxonomies_D5-WJMXM.mjs} +2 -2
  70. package/dist/server/chunks/{taxonomy_CCWZ58qQ.mjs → taxonomy__yis5-wJ.mjs} +3 -3
  71. package/dist/server/chunks/{themes_C7G3LcIz.mjs → themes_Dpg-ee2S.mjs} +27 -129
  72. package/dist/server/chunks/{upload_BT3ud_vb.mjs → upload_BPY5ZFIb.mjs} +2 -2
  73. package/dist/server/chunks/{webhooks_CWW0L8EK.mjs → webhooks_DFrRhSdU.mjs} +2 -2
  74. package/dist/server/entry.mjs +66 -35
  75. package/dist/server/virtual_astro_middleware.mjs +1 -1
  76. package/package.json +1 -1
  77. package/dist/client/_astro/ContentEditor.CtCFQb14.js +0 -1
  78. package/dist/client/_astro/PluginManager.BozI4gXB.js +0 -136
  79. package/dist/client/_astro/ThemeManager.Csu39Xjr.js +0 -176
  80. package/dist/server/chunks/plugins_C6qX0SAE.mjs +0 -179
@@ -1,176 +0,0 @@
1
- import{S as e,a as t,h as n,l as r,p as i,r as a}from"./solid.Ck4Vtfe4.js";import{_ as o,a as s,f as c,i as l,l as u,m as d,o as f,p,s as m,u as h}from"./web.DD6VKaIp.js";import{n as g}from"./i18n.CBexpqud.js";import{n as _}from"./api.flUgn70U.js";var v=o(`<div class=theme-manager><div class=theme-toolbar><p class=page-hint></p><button class="btn btn-refresh"></button></div><!$><!/><!$><!/><!$><!/><style>
2
- .theme-toolbar {
3
- display: flex;
4
- align-items: flex-start;
5
- justify-content: space-between;
6
- gap: 1rem;
7
- margin-bottom: 1.25rem;
8
- }
9
- .page-hint {
10
- margin: 0;
11
- color: var(--color-muted);
12
- font-size: 0.8125rem;
13
- }
14
- .btn-refresh {
15
- flex-shrink: 0;
16
- }
17
- .themes-grid {
18
- display: grid;
19
- grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
20
- gap: 1.5rem;
21
- }
22
- .theme-card {
23
- background: var(--color-surface);
24
- border: 1px solid var(--color-border);
25
- border-radius: var(--radius-lg);
26
- padding: 1.5rem;
27
- display: flex;
28
- flex-direction: column;
29
- gap: 1rem;
30
- transition: all 0.2s;
31
- }
32
- .theme-card:hover {
33
- border-color: var(--color-primary);
34
- box-shadow: var(--shadow-md);
35
- }
36
- .theme-card.active {
37
- border-color: var(--color-primary);
38
- box-shadow: 0 0 0 1px var(--color-primary), var(--shadow-md);
39
- }
40
- .theme-preview {
41
- position: relative;
42
- }
43
- .theme-preview__img {
44
- display: block;
45
- width: 100%;
46
- border-radius: var(--radius-md);
47
- border: 1px solid var(--color-border);
48
- }
49
- .theme-badge {
50
- position: absolute;
51
- top: 0.5rem;
52
- right: 0.5rem;
53
- background: var(--color-primary);
54
- color: var(--color-primary-contrast);
55
- padding: 0.25rem 0.5rem;
56
- border-radius: var(--radius-full);
57
- font-size: 0.625rem;
58
- font-weight: 700;
59
- text-transform: uppercase;
60
- }
61
- .theme-info {
62
- display: flex;
63
- flex-direction: column;
64
- gap: 0.5rem;
65
- }
66
- .theme-info h3 {
67
- margin: 0;
68
- font-size: 1.125rem;
69
- font-weight: 600;
70
- }
71
- .theme-version {
72
- margin: 0;
73
- font-size: 0.75rem;
74
- color: var(--color-muted);
75
- }
76
- .theme-desc {
77
- margin: 0;
78
- font-size: 0.8125rem;
79
- color: var(--color-text);
80
- line-height: 1.5;
81
- }
82
- .theme-status {
83
- display: flex;
84
- align-items: center;
85
- gap: 0.5rem;
86
- }
87
- .status-badge {
88
- display: inline-flex;
89
- align-items: center;
90
- padding: 0.25rem 0.5rem;
91
- border-radius: var(--radius-full);
92
- font-size: 0.625rem;
93
- font-weight: 600;
94
- text-transform: uppercase;
95
- }
96
- .status-active {
97
- background: var(--color-success-soft);
98
- color: var(--color-success);
99
- }
100
- .status-installed {
101
- background: var(--color-primary-soft);
102
- color: var(--color-primary);
103
- }
104
- .status-inactive {
105
- background: var(--color-muted-soft);
106
- color: var(--color-muted);
107
- }
108
- .config-panel {
109
- display: flex;
110
- flex-direction: column;
111
- gap: 0.75rem;
112
- padding: 1rem;
113
- background: var(--color-muted-soft, rgba(0, 0, 0, 0.03));
114
- border-radius: var(--radius-md);
115
- }
116
- .config-field {
117
- display: flex;
118
- flex-direction: column;
119
- gap: 0.25rem;
120
- }
121
- .config-label {
122
- font-size: 0.75rem;
123
- font-weight: 600;
124
- color: var(--color-text);
125
- }
126
- .config-color {
127
- height: 2.25rem;
128
- padding: 0.15rem;
129
- }
130
- .config-actions {
131
- display: flex;
132
- align-items: center;
133
- gap: 0.75rem;
134
- }
135
- .config-saved {
136
- font-size: 0.75rem;
137
- color: var(--color-success);
138
- }
139
- .theme-actions {
140
- margin-top: 0.5rem;
141
- display: flex;
142
- flex-wrap: wrap;
143
- gap: 0.5rem;
144
- }
145
- .btn-secondary {
146
- background: transparent;
147
- color: var(--color-text);
148
- border: 1px solid var(--color-border);
149
- }
150
- .btn-danger {
151
- background: transparent;
152
- color: var(--color-error);
153
- border: 1px solid var(--color-error);
154
- }
155
- .empty-state {
156
- grid-column: 1 / -1;
157
- padding: 3rem;
158
- text-align: center;
159
- color: var(--color-muted);
160
- }
161
- .alert {
162
- padding: 0.75rem 1rem;
163
- border-radius: var(--radius-md);
164
- margin-bottom: 1rem;
165
- }
166
- .alert-error {
167
- background: var(--color-error-soft);
168
- color: var(--color-error);
169
- border: 1px solid var(--color-error);
170
- }
171
- .skeleton {
172
- padding: 2rem;
173
- text-align: center;
174
- color: var(--color-muted);
175
- }
176
- `),y=o(`<div class="alert alert-error">`),b=o(`<div class=skeleton>Loading...`),x=o(`<div class=themes-grid><!$><!/><!$><!/>`),S=o(`<img class=theme-preview__img alt loading=lazy>`,!0,!1,!1),ee=o(`<span class=config-saved>`),C=o(`<div class=config-panel><!$><!/><div class=config-actions><button class=btn></button><!$><!/>`),te=o(`<button class="btn btn-secondary">`),w=o(`<div><div class=theme-preview><!$><!/><!$><!/></div><div class=theme-info><h3></h3><p class=theme-version><!$><!/>: <!$><!/></p><p class=theme-status><span></span></p><!$><!/></div><!$><!/><div class=theme-actions><button></button><!$><!/><button class="btn btn-danger">`),T=o(`<div class="theme-badge active-badge">`),E=o(`<p class=theme-desc>`),ne=o(`<div class=config-field><label class=config-label></label><!$><!/>`),re=o(`<textarea class=input rows=3>`),ie=o(`<select class=input>`),ae=o(`<option>`),oe=o(`<input type=checkbox>`),se=o(`<input type=color class="input config-color">`),ce=o(`<input class=input>`),D=o(`<div class=empty-state>`);function O(){let{t:o}=g(),[s,O]=n([]),[k,A]=n(!0),[j,M]=n(null),[N,P]=n(null),[F,I]=n(null),[L,R]=n({}),[le,z]=n(!1),[B,V]=n(!1);e(async()=>{await H()});async function H(){M(null);try{A(!0);let e;try{e=await _.syncThemes()}catch{e=await _.getThemes()}O(e)}catch{M(o(`themes.loadError`))}finally{A(!1)}}async function U(e){let t=e.status===`ACTIVE`;M(null),P(e.id);try{let n=t?await _.deactivateTheme(e.id):await _.activateTheme(e.id);O(s().map(t=>t.id===e.id?n:t.status===`ACTIVE`&&n.status===`ACTIVE`?{...t,status:`INACTIVE`}:t))}catch{M(o(t?`themes.deactivateError`:`themes.activateError`))}finally{P(null)}}async function ue(e){if(window.confirm(o(`themes.confirmUninstall`,{name:e.name}))){M(null),P(e.id);try{await _.uninstallTheme(e.id),O(s().filter(t=>t.id!==e.id))}catch{M(o(`themes.uninstallError`))}finally{P(null)}}}function W(e){let t=e.manifest?.preview??e.manifest?.screenshots?.[0];return!t||typeof t!=`string`?null:/^(https?:)?\/\//.test(t)||t.startsWith(`/`)?t:`/themes/${encodeURIComponent(e.name)}/${t}`}function G(e){return(e.manifest?.settings??[]).filter(e=>!!e&&typeof e.name==`string`)}function K(e){return e.default===void 0?e.type===`checkbox`?!1:e.type===`number`?0:``:e.default}function de(e){return typeof e==`string`?e:e.value}function fe(e){return typeof e==`string`?e:e.label??e.value}function pe(e){if(F()===e.id){I(null);return}let t={};for(let n of G(e)){let r=e.config?.[n.name];t[n.name]=r===void 0?K(n):r}R(t),V(!1),I(e.id)}function q(e,t){R({...L(),[e]:t})}async function me(e){M(null),V(!1),z(!0);try{let t=await _.updateThemeConfig(e.id,L());O(s().map(n=>n.id===e.id?t:n)),V(!0)}catch{M(o(`themes.configError`))}finally{z(!1)}}let he=e=>{switch(e){case`ACTIVE`:return o(`themes.status.active`);case`INSTALLED`:return o(`themes.status.installed`);case`INACTIVE`:return o(`themes.status.inactive`);default:return e}},ge=e=>{switch(e){case`ACTIVE`:return`status-active`;case`INSTALLED`:return`status-installed`;case`INACTIVE`:return`status-inactive`;default:return``}};return(()=>{var e=f(v),n=e.firstChild,g=n.firstChild,_=g.nextSibling,O=n.nextSibling,[A,M]=m(O.nextSibling),P=A.nextSibling,[I,R]=m(P.nextSibling),z=I.nextSibling,[V,K]=m(z.nextSibling);return V.nextSibling,u(g,()=>o(`themes.directoryHint`)),_.$$click=H,u(_,()=>o(`themes.reload`)),u(e,(()=>{var e=h(()=>!!j());return()=>e()&&(()=>{var e=f(y);return u(e,j),e})()})(),A,M),u(e,(()=>{var e=h(()=>!!k());return()=>e()&&f(b)})(),I,R),u(e,(()=>{var e=h(()=>!k());return()=>e()&&(()=>{var e=f(x),n=e.firstChild,[g,_]=m(n.nextSibling),v=g.nextSibling,[y,b]=m(v.nextSibling);return u(e,r(a,{get each(){return s()},children:e=>{let n=G(e),s=W(e);return(()=>{var g=f(w),_=g.firstChild,v=_.firstChild,[y,b]=m(v.nextSibling),x=y.nextSibling,[D,O]=m(x.nextSibling),k=_.nextSibling,A=k.firstChild,j=A.nextSibling,M=j.firstChild,[P,I]=m(M.nextSibling),R=P.nextSibling.nextSibling,[z,V]=m(R.nextSibling),H=j.nextSibling,W=H.firstChild,G=H.nextSibling,[K,J]=m(G.nextSibling),_e=k.nextSibling,[Y,ve]=m(_e.nextSibling),X=Y.nextSibling,Z=X.firstChild,ye=Z.nextSibling,[Q,be]=m(ye.nextSibling),$=Q.nextSibling;return u(_,r(t,{when:s,get children(){var e=f(S);return e.addEventListener(`error`,e=>{e.currentTarget.style.display=`none`}),p(e,`src`,s),e}}),y,b),u(_,(()=>{var t=h(()=>e.status===`ACTIVE`);return()=>t()&&(()=>{var e=f(T);return u(e,()=>o(`themes.active`)),e})()})(),D,O),u(A,()=>e.name),u(j,()=>o(`themes.version`),P,I),u(j,()=>e.version,z,V),u(W,()=>he(e.status)),u(k,(()=>{var t=h(()=>!!e.manifest?.description);return()=>t()&&(()=>{var t=f(E);return u(t,()=>e.manifest.description),t})()})(),K,J),u(g,r(t,{get when(){return h(()=>F()===e.id)()&&n.length>0},get children(){var s=f(C),l=s.firstChild,[g,_]=m(l.nextSibling),v=g.nextSibling,y=v.firstChild,b=y.nextSibling,[x,S]=m(b.nextSibling);return u(s,r(a,{each:n,children:t=>(()=>{var n=f(ne),o=n.firstChild,s=o.nextSibling,[l,g]=m(s.nextSibling);return u(o,()=>t.label||t.name),u(n,(()=>{var n=h(()=>t.type===`textarea`);return()=>n()?(()=>{var n=f(re);return n.$$input=e=>q(t.name,e.currentTarget.value),i(()=>p(n,`id`,`cfg-${e.id}-${t.name}`)),i(()=>d(n,`value`,String(L()[t.name]??``))),c(),n})():h(()=>t.type===`select`)()?(()=>{var n=f(ie);return n.addEventListener(`change`,e=>q(t.name,e.currentTarget.value)),u(n,r(a,{get each(){return t.options??[]},children:e=>(()=>{var t=f(ae);return u(t,()=>fe(e)),i(()=>d(t,`value`,de(e))),t})()})),i(()=>p(n,`id`,`cfg-${e.id}-${t.name}`)),i(()=>d(n,`value`,String(L()[t.name]??``))),n})():h(()=>t.type===`checkbox`)()?(()=>{var n=f(oe);return n.addEventListener(`change`,e=>q(t.name,e.currentTarget.checked)),i(()=>p(n,`id`,`cfg-${e.id}-${t.name}`)),i(()=>d(n,`checked`,!!L()[t.name])),n})():h(()=>t.type===`color`)()?(()=>{var n=f(se);return n.$$input=e=>q(t.name,e.currentTarget.value),i(()=>p(n,`id`,`cfg-${e.id}-${t.name}`)),i(()=>d(n,`value`,String(L()[t.name]??`#000000`))),c(),n})():(()=>{var n=f(ce);return n.$$input=e=>q(t.name,t.type===`number`?Number(e.currentTarget.value):e.currentTarget.value),i(r=>{var i=`cfg-${e.id}-${t.name}`,a=t.type===`number`?`number`:`text`;return i!==r.e&&p(n,`id`,r.e=i),a!==r.t&&p(n,`type`,r.t=a),r},{e:void 0,t:void 0}),i(()=>d(n,`value`,String(L()[t.name]??``))),c(),n})()})(),l,g),i(()=>p(o,`for`,`cfg-${e.id}-${t.name}`)),n})()}),g,_),y.$$click=()=>me(e),u(y,()=>o(`themes.configSave`)),u(v,r(t,{get when(){return B()},get children(){var e=f(ee);return u(e,()=>o(`themes.configSaved`)),e}}),x,S),i(()=>d(y,`disabled`,le())),c(),s}}),Y,ve),Z.$$click=()=>U(e),u(Z,(()=>{var t=h(()=>e.status===`ACTIVE`);return()=>t()?o(`themes.deactivate`):o(`themes.activate`)})()),u(X,r(t,{get when(){return n.length>0},get children(){var t=f(te);return t.$$click=()=>pe(e),u(t,(()=>{var t=h(()=>F()===e.id);return()=>t()?o(`themes.configClose`):o(`themes.configTitle`)})()),i(()=>d(t,`disabled`,N()!==null)),c(),t}}),Q,be),$.$$click=()=>ue(e),u($,()=>o(`themes.uninstall`)),i(t=>{var n=`theme-card ${e.status===`ACTIVE`?`active`:``}`,r=`status-badge ${ge(e.status)}`,i=`btn ${N()===e.id?`btn-loading`:``}`,a=N()!==null,o=N()!==null;return n!==t.e&&l(g,t.e=n),r!==t.t&&l(W,t.t=r),i!==t.a&&l(Z,t.a=i),a!==t.o&&d(Z,`disabled`,t.o=a),o!==t.i&&d($,`disabled`,t.i=o),t},{e:void 0,t:void 0,a:void 0,o:void 0,i:void 0}),c(),g})()}}),g,_),u(e,(()=>{var e=h(()=>s().length===0);return()=>e()&&(()=>{var e=f(D);return u(e,()=>o(`themes.empty`)),e})()})(),y,b),e})()})(),V,K),i(()=>d(_,`disabled`,k())),c(),e})()}s([`click`,`input`]);export{O as ThemeManager};
@@ -1,179 +0,0 @@
1
- import { r as __exportAll } from "./rolldown-runtime_BMI-E3GI.mjs";
2
- import { S as createAstro, i as renderComponent, u as renderTemplate } from "./server_B5N27szj.mjs";
3
- import { t as createComponent$1 } from "./compiler_O7J1rlsi.mjs";
4
- import { n as useTranslation, r as apiClient } from "./i18n_BmAxDr2Q.mjs";
5
- import { t as $$DashboardLayout } from "./DashboardLayout_PXoRmnBH.mjs";
6
- import { t as PageHeader } from "./PageHeader_CRpzf5xU.mjs";
7
- import { createComponent, escape, ssr, ssrAttribute, ssrHydrationKey } from "solid-js/web";
8
- import { For, createSignal, onMount } from "solid-js";
9
- //#region src/components/apps/plugins/PluginManager.jsx
10
- var _tmpl$ = [
11
- "<div",
12
- " class=\"plugin-manager\"><p class=\"page-hint\">",
13
- "</p><!--$-->",
14
- "<!--/--><!--$-->",
15
- "<!--/--><!--$-->",
16
- "<!--/--><style>\n .page-hint {\n margin: 0 0 1.25rem;\n color: var(--color-muted);\n font-size: 0.8125rem;\n }\n .tenant-selector-bar {\n display: flex;\n align-items: center;\n gap: 0.75rem;\n margin-bottom: 1rem;\n padding: 0.75rem 1rem;\n background: var(--color-surface);\n border: 1px solid var(--color-border);\n border-radius: var(--radius-md);\n font-size: 0.8125rem;\n }\n .tenant-selector-bar select {\n flex: 1;\n max-width: 300px;\n padding: 0.375rem 0.75rem;\n border: 1px solid var(--color-border);\n border-radius: var(--radius-sm);\n background: var(--color-background);\n color: var(--color-text);\n }\n .badge-enabled {\n display: inline-block;\n margin-left: 0.5rem;\n padding: 0.125rem 0.375rem;\n font-size: 0.625rem;\n font-weight: 600;\n text-transform: uppercase;\n background: var(--color-success-soft);\n color: var(--color-success);\n border-radius: var(--radius-full);\n }\n .enabled-badge {\n color: var(--color-success);\n font-weight: 500;\n }\n .disabled-badge {\n color: var(--color-muted);\n font-weight: 500;\n }\n .plugins-table-container {\n overflow-x: auto;\n }\n .table {\n width: 100%;\n border-collapse: collapse;\n }\n .table th,\n .table td {\n padding: 0.75rem 1rem;\n text-align: left;\n border-bottom: 1px solid var(--color-border);\n }\n .table th {\n font-weight: 600;\n color: var(--color-text);\n background: var(--color-surface);\n }\n .plugin-row:hover {\n background: var(--color-background);\n }\n .plugin-name {\n display: flex;\n flex-direction: column;\n gap: 0.25rem;\n }\n .plugin-name strong {\n font-weight: 500;\n }\n .plugin-description {\n font-size: 0.75rem;\n color: var(--color-muted);\n }\n .status-badge {\n display: inline-flex;\n align-items: center;\n padding: 0.25rem 0.5rem;\n border-radius: var(--radius-full);\n font-size: 0.6875rem;\n font-weight: 600;\n text-transform: uppercase;\n }\n .status-active {\n background: var(--color-success-soft);\n color: var(--color-success);\n }\n .status-installed {\n background: var(--color-primary-soft);\n color: var(--color-primary);\n }\n .status-inactive {\n background: var(--color-muted-soft);\n color: var(--color-muted);\n }\n .status-quarantined {\n background: var(--color-warning-soft);\n color: var(--color-warning);\n }\n .status-missing {\n background: var(--color-error-soft);\n color: var(--color-error);\n }\n .status-load-failed {\n background: var(--color-error-soft);\n color: var(--color-error);\n }\n .btn-loading {\n opacity: 0.6;\n cursor: wait;\n }\n .empty-state {\n padding: 2rem;\n text-align: center;\n color: var(--color-muted);\n }\n .alert {\n padding: 0.75rem 1rem;\n border-radius: var(--radius-md);\n margin-bottom: 1rem;\n }\n .alert-error {\n background: var(--color-error-soft);\n color: var(--color-error);\n border: 1px solid var(--color-error);\n }\n .skeleton {\n padding: 2rem;\n text-align: center;\n color: var(--color-muted);\n }\n </style></div>"
17
- ];
18
- var _tmpl$2 = [
19
- "<div",
20
- " class=\"alert alert-error\">",
21
- "</div>"
22
- ];
23
- var _tmpl$3 = ["<div", " class=\"skeleton\">Loading...</div>"];
24
- var _tmpl$4 = [
25
- "<div",
26
- " class=\"plugins-table-container\"><table class=\"table\"><thead><tr><th>",
27
- "</th><th>",
28
- "</th><th>",
29
- "</th><th>",
30
- "</th><th>",
31
- "</th></tr></thead><tbody>",
32
- "</tbody></table><!--$-->",
33
- "<!--/--></div>"
34
- ];
35
- var _tmpl$5 = [
36
- "<div",
37
- " class=\"tenant-selector-bar\"><label><!--$-->",
38
- "<!--/-->: </label><select",
39
- "><option value>",
40
- "</option><!--$-->",
41
- "<!--/--></select><button class=\"btn btn-sm\">",
42
- "</button></div>"
43
- ];
44
- var _tmpl$6 = [
45
- "<option",
46
- "><!--$-->",
47
- "<!--/--> (<!--$-->",
48
- "<!--/-->)</option>"
49
- ];
50
- var _tmpl$7 = [
51
- "<tr",
52
- " class=\"plugin-row\"><td class=\"plugin-name\"><strong>",
53
- "</strong><!--$-->",
54
- "<!--/--><!--$-->",
55
- "<!--/--></td><td>",
56
- "</td><td><span class=\"",
57
- "\">",
58
- "</span></td><td>",
59
- "</td><td><button class=\"",
60
- "\"",
61
- ">",
62
- "</button></td></tr>"
63
- ];
64
- var _tmpl$8 = [
65
- "<span",
66
- " class=\"plugin-description\">",
67
- "</span>"
68
- ];
69
- var _tmpl$9 = [
70
- "<span",
71
- " class=\"badge-enabled\">",
72
- "</span>"
73
- ];
74
- var _tmpl$0 = [
75
- "<span",
76
- " class=\"enabled-badge\">",
77
- "</span>"
78
- ];
79
- var _tmpl$1 = [
80
- "<span",
81
- " class=\"disabled-badge\">",
82
- "</span>"
83
- ];
84
- var _tmpl$10 = [
85
- "<div",
86
- " class=\"empty-state\">",
87
- "</div>"
88
- ];
89
- function PluginManager() {
90
- const { t } = useTranslation();
91
- const [plugins, setPlugins] = createSignal([]);
92
- const [loading, setLoading] = createSignal(true);
93
- const [error, setError] = createSignal(null);
94
- const [toggling, setToggling] = createSignal(null);
95
- const [tenantId, setTenantId] = createSignal(null);
96
- const [tenants, setTenants] = createSignal([]);
97
- const [showTenantSelector, setShowTenantSelector] = createSignal(false);
98
- onMount(async () => {
99
- await loadPlugins();
100
- });
101
- async function loadPlugins() {
102
- try {
103
- setLoading(true);
104
- const data = await apiClient.getPlugins();
105
- setPlugins(data);
106
- } catch {
107
- setError(t("plugins.loadError"));
108
- } finally {
109
- setLoading(false);
110
- }
111
- }
112
- const isActive = (plugin) => plugin.enabled === true;
113
- const getStatusLabel = (status) => {
114
- switch (status) {
115
- case "ACTIVE":
116
- case "ACTIVATED": return t("plugins.status.active");
117
- case "INSTALLED": return t("plugins.status.installed");
118
- case "INACTIVE":
119
- case "DEACTIVATED": return t("plugins.status.inactive");
120
- case "QUARANTINED": return t("plugins.status.quarantined");
121
- case "MISSING": return t("plugins.status.missing");
122
- case "LOAD_FAILED": return t("plugins.status.loadFailed");
123
- default: return status;
124
- }
125
- };
126
- const getStatusClass = (status) => {
127
- switch (status) {
128
- case "ACTIVE":
129
- case "ACTIVATED": return "status-active";
130
- case "INSTALLED": return "status-installed";
131
- case "INACTIVE":
132
- case "DEACTIVATED": return "status-inactive";
133
- case "QUARANTINED": return "status-quarantined";
134
- case "MISSING": return "status-missing";
135
- case "LOAD_FAILED": return "status-load-failed";
136
- default: return "";
137
- }
138
- };
139
- return ssr(_tmpl$, ssrHydrationKey(), escape(t("plugins.directoryHint")), error() && ssr(_tmpl$2, ssrHydrationKey(), escape(error())), loading() && _tmpl$3[0] + ssrHydrationKey() + _tmpl$3[1], !loading() && !error() && escape([showTenantSelector() && ssr(_tmpl$5, ssrHydrationKey(), escape(t("plugins.selectTenant")), ssrAttribute("value", escape(tenantId() ?? "", true), false), escape(t("plugins.selectTenantPlaceholder")), escape(createComponent(For, {
140
- get each() {
141
- return tenants();
142
- },
143
- children: (t) => ssr(_tmpl$6, ssrHydrationKey() + ssrAttribute("value", escape(t.id, true), false), escape(t.name), escape(t.id))
144
- })), escape(t("plugins.hideSelector"))), ssr(_tmpl$4, ssrHydrationKey(), escape(t("plugins.columns.name")), escape(t("plugins.columns.version")), escape(t("plugins.columns.status")), escape(t("plugins.columns.enabled")), escape(t("plugins.columns.actions")), escape(createComponent(For, {
145
- get each() {
146
- return plugins();
147
- },
148
- children: (plugin) => ssr(_tmpl$7, ssrHydrationKey(), escape(plugin.name), plugin.manifest?.description && ssr(_tmpl$8, ssrHydrationKey(), escape(plugin.manifest.description)), plugin.enabled && ssr(_tmpl$9, ssrHydrationKey(), escape(t("plugins.enabledForTenant"))), escape(plugin.version), `status-badge ${escape(getStatusClass(plugin.status), true)}`, escape(getStatusLabel(plugin.status)), plugin.enabled ? ssr(_tmpl$0, ssrHydrationKey(), escape(t("plugins.enabledYes"))) : ssr(_tmpl$1, ssrHydrationKey(), escape(t("plugins.enabledNo"))), `btn btn-sm ${toggling() === plugin.id ? "btn-loading" : ""}`, ssrAttribute("disabled", toggling() !== null || !tenantId(), true) + ssrAttribute("aria-label", isActive(plugin) ? escape(t("plugins.deactivate"), true) : escape(t("plugins.activate"), true), false), isActive(plugin) ? escape(t("plugins.deactivate")) : escape(t("plugins.activate")))
149
- })), plugins().length === 0 && ssr(_tmpl$10, ssrHydrationKey(), escape(t("plugins.empty"))))]));
150
- }
151
- //#endregion
152
- //#region src/pages/plugins.astro
153
- var plugins_exports = /* @__PURE__ */ __exportAll({
154
- default: () => $$Plugins,
155
- file: () => $$file,
156
- url: () => $$url
157
- });
158
- createAstro("https://astro.build");
159
- var $$Plugins = createComponent$1(($$result, $$props, $$slots) => {
160
- const Astro = $$result.createAstro($$props, $$slots);
161
- Astro.self = $$Plugins;
162
- const { t } = Astro.locals;
163
- return renderTemplate`${renderComponent($$result, "DashboardLayout", $$DashboardLayout, { "title": t("plugins.title") }, { "default": ($$result) => renderTemplate`${renderComponent($$result, "PageHeader", PageHeader, {
164
- "title": t("plugins.title"),
165
- "description": t("plugins.description")
166
- })}${renderComponent($$result, "PluginManager", PluginManager, {
167
- "client:load": true,
168
- "client:component-hydration": "load",
169
- "client:component-path": "/home/runner/work/cms/cms/apps/admin/src/components/apps/plugins/PluginManager.jsx",
170
- "client:component-export": "PluginManager"
171
- })}` })}`;
172
- }, "/home/runner/work/cms/cms/apps/admin/src/pages/plugins.astro", void 0);
173
- var $$file = "/home/runner/work/cms/cms/apps/admin/src/pages/plugins.astro";
174
- var $$url = "/plugins";
175
- //#endregion
176
- //#region \0virtual:astro:page:src/pages/plugins@_@astro
177
- var page = () => plugins_exports;
178
- //#endregion
179
- export { page };