This commit is contained in:
root committed 2025-10-20 19:18:35 +00:00
1 parent 84be8e5828
commit 2c3379026b
5 files changed
+28 -130

No files matched your search

@@ -783,4 +783,4 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
Zielversion: ${Je}. Zielversion: ${Je}.
Während des Updates befindet sich StackPulse im Wartungsmodus. Während des Updates befindet sich StackPulse im Wartungsmodus.
Fortfahren?`)))try{X(""),_(!0),await C(),e({variant:"info",title:"Update gestartet",description:"Das Portainer-Update wurde gestartet."})}catch(Nt){const zt=((gt=(mt=Nt.response)==null?void 0:mt.data)==null?void 0:gt.error)||Nt.message||"Portainer-Update konnte nicht gestartet werden";X(zt),e({variant:"error",title:"Update fehlgeschlagen",description:zt})}finally{_(!1)}},[j,P,ft,C,e]);Z.useCallback(async Je=>{var zt,hr,Tr,rn;if(!Je)return;if(j||P){e({variant:"warning",title:"Aktion nicht möglich",description:"Während des Wartungsmodus sind Bereinigungen deaktiviert."});return}const mt=(zt=Je.canonical)==null?void 0:zt.Id;if(!mt)return;const gt=(Je.duplicates||[]).map(yn=>yn.Id).filter(Boolean);if(!gt.length)return;const Nt=((hr=Je.canonical)==null?void 0:hr.Name)||Je.name||`Stack ${mt}`;if(!(typeof window<"u"&&!window.confirm(`Bereinigung für "${Nt}" starten? Fortfahren?`)))try{X(""),_(!0),await C(),e({variant:"info",title:"Update gestartet",description:"Das Portainer-Update wurde gestartet."})}catch(Nt){const zt=((gt=(mt=Nt.response)==null?void 0:mt.data)==null?void 0:gt.error)||Nt.message||"Portainer-Update konnte nicht gestartet werden";X(zt),e({variant:"error",title:"Update fehlgeschlagen",description:zt})}finally{_(!1)}},[j,P,ft,C,e]);Z.useCallback(async Je=>{var zt,hr,Tr,rn;if(!Je)return;if(j||P){e({variant:"warning",title:"Aktion nicht möglich",description:"Während des Wartungsmodus sind Bereinigungen deaktiviert."});return}const mt=(zt=Je.canonical)==null?void 0:zt.Id;if(!mt)return;const gt=(Je.duplicates||[]).map(yn=>yn.Id).filter(Boolean);if(!gt.length)return;const Nt=((hr=Je.canonical)==null?void 0:hr.Name)||Je.name||`Stack ${mt}`;if(!(typeof window<"u"&&!window.confirm(`Bereinigung für "${Nt}" starten?
Es werden ${gt.length} Duplikate entfernt: ${gt.join(", ")}`))){xt(String(mt));try{const ee=(await Nr.post("/api/maintenance/duplicates/cleanup",{canonicalId:mt,duplicateIds:gt})).data??{};if(ee.success===!1)throw new Error(ee.error||"Bereinigung fehlgeschlagen");const n=Array.isArray(ee.results)?ee.results.filter(o=>o.status==="deleted").map(o=>o.id):gt;e({variant:"success",title:"Bereinigung abgeschlossen",description:`${Nt} – entfernte IDs: ${n.join(", ")}`}),await Ct({silent:!0})}catch(yn){const ee=((rn=(Tr=yn.response)==null?void 0:Tr.data)==null?void 0:rn.error)||yn.message||"Bereinigung fehlgeschlagen";e({variant:"error",title:"Bereinigung fehlgeschlagen",description:ee})}finally{xt(null)}}},[Ct,j,e,P]);const Gn=t!=null&&t.activatedAt?Ws(t.activatedAt):null,yr=t!=null&&t.updatedAt?Ws(t.updatedAt):null,gn=(r==null?void 0:r.status)??(P?"running":"idle"),_o=EV[gn]??gn,Uo=Bs[gn]??Bs.idle,bn=r!=null&&r.stage?MV[r.stage]??r.stage:"–",po=(r==null?void 0:r.logs)??[],Gr=(r==null?void 0:r.targetVersion)??"-",ho=(r==null?void 0:r.resultVersion)??"-",Rn=r!=null&&r.startedAt?Ws(r.startedAt):"-",Oo=r!=null&&r.finishedAt?Ws(r.finishedAt):"-",vn=(r==null?void 0:r.message)??(P?"Update läuft…":""),zr=P||v||l;return te.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(j||P)&&te.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:te.jsxs("div",{className:"flex flex-col gap-1",children:[te.jsxs("span",{children:["Wartungsmodus aktiv",R?` – ${R}`:P?" – Portainer-Update läuft":"","."]}),P&&te.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",bn]})]})}),te.jsxs(De.Card,{children:[te.jsx(De.CardHeader,{variant:"gradient",color:"gray",className:"mb-8 p-6",children:te.jsx(De.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:te.jsx("span",{children:"Portainer"})})}),te.jsxs(De.CardBody,{className:"flex flex-col gap-4 p-4 pt-0",children:[te.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[te.jsxs("div",{children:[te.jsx("h2",{className:"block antialiased font-sans text-lg font-semibold",children:"Portainer Status"}),te.jsx("p",{className:"block antialiased font-sans text-sm font-light leading-normal text-inherit",children:Bt?"Status wird geprüft…":Tt||(P?"Portainer wird aktuell aktualisiert.":(ft==null?void 0:ft.updateAvailable)===!0?"Es ist ein Update für Portainer verfügbar.":"Portainer ist auf dem aktuellen Stand.")}),Ur&&!Bt&&te.jsxs("p",{className:"mt-1 text-xs text-gray-500 block antialiased font-sans",children:["Stand: ",Ur.toLocaleString("de-DE",{hour:"2-digit",minute:"2-digit",second:"2-digit"})]})]}),te.jsx("div",{className:"flex items-center gap-3",children:te.jsx(De.Button,{onClick:()=>ct({silent:!1}),disabled:Bt||br,className:"w-full",children:"Status aktualisieren"})})]}),te.jsx("div",{className:"flex flex-col gap-4 mt-5 space-y-4 block antialiased font-sans text-sm font-light leading-normal text-inherit",children:!Bt&&!Tt&&ft&&te.jsxs("div",{className:"",children:[te.jsxs("div",{className:"flex items-center justify-between space-y-2",children:[te.jsx("span",{children:"Installierte Version"}),te.jsx("span",{className:"font-medium",children:ft.currentVersion??"Unbekannt"})]}),te.jsxs("div",{className:"flex items-center justify-between space-y-2",children:[te.jsx("span",{children:"Neueste Version"}),te.jsx("span",{className:"font-medium",children:ft.latestVersion??"Unbekannt"})]}),te.jsxs("div",{className:"flex items-center justify-between space-y-2",children:[te.jsx("span",{children:"Status"}),te.jsx("span",{className:`rounded-full px-3 py-0.5 text-xs font-semibold ${ft.updateAvailable===!0?Bs.error:ft.updateAvailable===!1?Bs.success:Bs.idle}`,children:ft.updateAvailable===!0?"Update verfügbar":ft.updateAvailable===!1?"Aktuell":"Unbekannt"})]}),ft.edition&&te.jsxs("div",{className:"flex items-center justify-between",children:[te.jsx("span",{className:"text-gray-400",children:"Edition"}),te.jsx("span",{className:"font-medium",children:ft.edition})]}),ft.build&&te.jsxs("div",{className:"flex items-center justify-between",children:[te.jsx("span",{className:"text-gray-400",children:"Build"}),te.jsx("span",{className:"font-medium",children:ft.build})]}),((tn=ft.errors)==null?void 0:tn.latestVersion)&&te.jsxs("div",{className:"rounded-md mt-8 border border-red-500/40 bg-red-900/40 px-3 py-2 text-xs",children:["Neueste Version konnte nicht ermittelt werden: ",ft.errors.latestVersion]}),((mn=ft.errors)==null?void 0:mn.container)&&te.jsxs("div",{className:"rounded-md mt-8 border border-red-500/40 bg-red-900/40 px-3 py-2 text-xs",children:["Container-Details konnten nicht ermittelt werden: ",ft.errors.container]})]})}),te.jsxs("div",{className:"mt-6 grid gap-6 lg:grid-cols-2 xl:grid-cols-3",children:[te.jsxs("div",{className:"rounded-md border border-gray-700/20 p-4",children:[te.jsx("div",{className:"flex item Line truncated Es werden ${gt.length} Duplikate entfernt: ${gt.join(", ")}`))){xt(String(mt));try{const ee=(await Nr.post("/api/maintenance/duplicates/cleanup",{canonicalId:mt,duplicateIds:gt})).data??{};if(ee.success===!1)throw new Error(ee.error||"Bereinigung fehlgeschlagen");const n=Array.isArray(ee.results)?ee.results.filter(o=>o.status==="deleted").map(o=>o.id):gt;e({variant:"success",title:"Bereinigung abgeschlossen",description:`${Nt} – entfernte IDs: ${n.join(", ")}`}),await Ct({silent:!0})}catch(yn){const ee=((rn=(Tr=yn.response)==null?void 0:Tr.data)==null?void 0:rn.error)||yn.message||"Bereinigung fehlgeschlagen";e({variant:"error",title:"Bereinigung fehlgeschlagen",description:ee})}finally{xt(null)}}},[Ct,j,e,P]);const Gn=t!=null&&t.activatedAt?Ws(t.activatedAt):null,yr=t!=null&&t.updatedAt?Ws(t.updatedAt):null,gn=(r==null?void 0:r.status)??(P?"running":"idle"),_o=EV[gn]??gn,Uo=Bs[gn]??Bs.idle,bn=r!=null&&r.stage?MV[r.stage]??r.stage:"–",po=(r==null?void 0:r.logs)??[],Gr=(r==null?void 0:r.targetVersion)??"-",ho=(r==null?void 0:r.resultVersion)??"-",Rn=r!=null&&r.startedAt?Ws(r.startedAt):"-",Oo=r!=null&&r.finishedAt?Ws(r.finishedAt):"-",vn=(r==null?void 0:r.message)??(P?"Update läuft…":""),zr=P||v||l;return te.jsxs("div",{className:"mt-12 mb-8 flex flex-col gap-12",children:[(j||P)&&te.jsx("div",{className:"rounded-lg border border-cyan-500/60 bg-cyan-900/30 px-4 py-3 text-sm text-bluegray-100",children:te.jsxs("div",{className:"flex flex-col gap-1",children:[te.jsxs("span",{children:["Wartungsmodus aktiv",R?` – ${R}`:P?" – Portainer-Update läuft":"","."]}),P&&te.jsxs("span",{className:"text-xs text-indigo-900",children:["Phase: ",bn]})]})}),te.jsxs(De.Card,{children:[te.jsx(De.CardHeader,{variant:"gradient",color:"gray",className:"mb-8 p-6",children:te.jsx(De.Typography,{variant:"h6",color:"white",className:"flex items-center justify-between",children:te.jsx("span",{children:"Portainer"})})}),te.jsxs(De.CardBody,{className:"flex flex-col gap-4 p-4 pt-0",children:[te.jsxs("div",{className:"flex flex-col gap-4 md:flex-row md:items-center md:justify-between",children:[te.jsxs("div",{children:[te.jsx("h2",{className:"block antialiased font-sans text-lg font-semibold",children:"Portainer Status"}),te.jsx("p",{className:"block antialiased font-sans text-sm font-light leading-normal text-inherit",children:Bt?"Status wird geprüft…":Tt||(P?"Portainer wird aktuell aktualisiert.":(ft==null?void 0:ft.updateAvailable)===!0?"Es ist ein Update für Portainer verfügbar.":"Portainer ist auf dem aktuellen Stand.")}),Ur&&!Bt&&te.jsxs("p",{className:"mt-1 text-xs text-gray-500 block antialiased font-sans",children:["Stand: ",Ur.toLocaleString("de-DE",{hour:"2-digit",minute:"2-digit",second:"2-digit"})]})]}),te.jsx("div",{className:"flex items-center gap-3",children:te.jsx(De.Button,{onClick:()=>ct({silent:!1}),disabled:Bt||br,className:"w-full",children:"Status aktualisieren"})})]}),te.jsx("div",{className:"flex flex-col gap-4 mt-5 space-y-4 block antialiased font-sans text-sm font-light leading-normal text-inherit",children:!Bt&&!Tt&&ft&&te.jsxs("div",{className:"",children:[te.jsxs("div",{className:"flex items-center justify-between space-y-2",children:[te.jsx("span",{children:"Installierte Version"}),te.jsx("span",{className:"font-medium",children:ft.currentVersion??"Unbekannt"})]}),te.jsxs("div",{className:"flex items-center justify-between space-y-2",children:[te.jsx("span",{children:"Neueste Version"}),te.jsx("span",{className:"font-medium",children:ft.latestVersion??"Unbekannt"})]}),te.jsxs("div",{className:"flex items-center justify-between space-y-2",children:[te.jsx("span",{children:"Status"}),te.jsx("span",{className:`rounded-full px-3 py-0.5 text-xs font-semibold ${ft.updateAvailable===!0?Bs.error:ft.updateAvailable===!1?Bs.success:Bs.idle}`,children:ft.updateAvailable===!0?"Update verfügbar":ft.updateAvailable===!1?"Aktuell":"Unbekannt"})]}),ft.edition&&te.jsxs("div",{className:"flex items-center justify-between",children:[te.jsx("span",{className:"text-gray-400",children:"Edition"}),te.jsx("span",{className:"font-medium",children:ft.edition})]}),ft.build&&te.jsxs("div",{className:"flex items-center justify-between",children:[te.jsx("span",{className:"text-gray-400",children:"Build"}),te.jsx("span",{className:"font-medium",children:ft.build})]}),((tn=ft.errors)==null?void 0:tn.latestVersion)&&te.jsxs("div",{className:"rounded-md mt-8 border border-red-500/40 bg-red-900/40 px-3 py-2 text-xs",children:["Neueste Version konnte nicht ermittelt werden: ",ft.errors.latestVersion]}),((mn=ft.errors)==null?void 0:mn.container)&&te.jsxs("div",{className:"rounded-md mt-8 border border-red-500/40 bg-red-900/40 px-3 py-2 text-xs",children:["Container-Details konnten nicht ermittelt werden: ",ft.errors.container]})]})}),te.jsxs("div",{className:"mt-6 grid gap-6 lg:grid-cols-2 xl:grid-cols-3",children:[te.jsxs("div",{className:"rounded-md border border-gray-700/20 p-4",children:[te.jsx("div",{className:"flex item Line truncated
+1 -1
View File
@@ -32,7 +32,7 @@
<!-- Nepcha Analytics (nepcha.com) --> <!-- Nepcha Analytics (nepcha.com) -->
<!-- Nepcha is a easy-to-use web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. --> <!-- Nepcha is a easy-to-use web analytics. No cookies and fully compliant with GDPR, CCPA and PECR. -->
<script defer data-site="YOUR_DOMAIN_HERE" src="https://api.nepcha.com/js/nepcha-analytics.js"></script> <script defer data-site="YOUR_DOMAIN_HERE" src="https://api.nepcha.com/js/nepcha-analytics.js"></script>
<script type="module" crossorigin src="/assets/index-0d7bc5f7.js"></script> <script type="module" crossorigin src="/assets/index-55cb988b.js"></script>
<link rel="stylesheet" href="/assets/index-c9347383.css"> <link rel="stylesheet" href="/assets/index-c9347383.css">
</head> </head>
<body> <body>
+2 -3
View File
@@ -668,10 +668,9 @@ export function Logs() {
className="w-full md:flex-1"> className="w-full md:flex-1">
Export SQL</Button> Export SQL</Button>
<Button <Button
color="red"
onClick={handleDeleteFiltered} onClick={handleDeleteFiltered}
disabled={actionLoading || loading || logs.length === 0} disabled={actionLoading || loading || logs.length === 0}
className="w-full md:flex-1"> className="w-full md:flex-1 bg-sunsetCoral-500 hover:bg-sunsetCoral-600">
Angezeigte löschen</Button> Angezeigte löschen</Button>
</div> </div>
@@ -1015,7 +1014,7 @@ export function Logs() {
<button <button
onClick={() => handleDeleteLog(log.id)} onClick={() => handleDeleteLog(log.id)}
disabled={actionLoading} disabled={actionLoading}
className="rounded-md border border-red-600 px-3 py-1 text-xs text-red-300 transition hover:bg-red-600/20 disabled:opacity-60"> className="rounded-md border border-sunsetCoral-600 px-3 py-1 text-xs text-sunsetCoral-800 transition hover:bg-sunsetCoral-600/20 disabled:opacity-60">
Löschen Löschen
</button> </button>
</Typography> </Typography>
+3 -4
View File
@@ -856,7 +856,7 @@ export function Maintenance() {
<Button <Button
onClick={handleSshTestConnection} onClick={handleSshTestConnection}
disabled={sshSaving || sshTesting || sshDeleting || updateRunning} disabled={sshSaving || sshTesting || sshDeleting || updateRunning}
className="w-full bg-teal-500"> className="w-full bg-arcticBlue-500 hover:bg-arcticBlue-600">
{sshTesting ? 'Test läuft…' : 'Verbindung testen'} {sshTesting ? 'Test läuft…' : 'Verbindung testen'}
</Button> </Button>
@@ -864,8 +864,7 @@ export function Maintenance() {
<Button <Button
onClick={handleSshDeleteConfig} onClick={handleSshDeleteConfig}
disabled={sshSaving || sshTesting || sshDeleting || updateRunning} disabled={sshSaving || sshTesting || sshDeleting || updateRunning}
className="w-full" className="w-full hover:bg-sunsetCoral-600 bg-sunsetCoral-500"
color="purple"
> >
{sshDeleting ? 'Löschen…' : 'SSH-Einstellungen löschen'} {sshDeleting ? 'Löschen…' : 'SSH-Einstellungen löschen'}
</Button> </Button>
@@ -900,7 +899,7 @@ export function Maintenance() {
color="purple" color="purple"
onClick={handleScriptReset} onClick={handleScriptReset}
disabled={!scriptConfig || scriptConfig.source !== "custom" || scriptSaving || updateRunning} disabled={!scriptConfig || scriptConfig.source !== "custom" || scriptSaving || updateRunning}
className="w-full"> className="w-full hover:bg-sunsetCoral-600 bg-sunsetCoral-500">
Standard wiederherstellen Standard wiederherstellen
</Button> </Button>
+21 -121
View File
@@ -10,127 +10,27 @@ module.exports = withMT({
green: colors.green, green: colors.green,
slate: colors.slate, slate: colors.slate,
orange: colors.orange, // falls du z. B. text-orange-300 brauchst orange: colors.orange, // falls du z. B. text-orange-300 brauchst
// Zusätzliche Farben auroraTeal: {50:'#f0fafb',100:'#e0f5f7',200:'#c3ecef',300:'#9de0e4',400:'#6ad3d8',500:'#38c6cc',600:'#2aa9b0',700:'#1f8d94',800:'#166e76',900:'#0c4f58'},
arcticBlue: { sunsetCoral: {50:'#fff6f5',100:'#ffece9',200:'#ffd7d3',300:'#ffb8b5',400:'#ff9189',500:'#ff6a5d',600:'#e65048',700:'#b93d38',800:'#8a2c28',900:'#5c1c1a'},
50: '#f2f9fd', lavenderSmoke: {50:'#faf8fc',100:'#f5f1f9',200:'#ece2f3',300:'#dac4e6',400:'#b88acf',500:'#9670b8',600:'#7a5894',700:'#5d4373',800:'#412f52',900:'#291e38'},
100: '#e6f3fb', mossGreen: {50:'#f5faf2',100:'#ebf5e5',200:'#d9ebca',300:'#b8d99e',400:'#8cc56f',500:'#60b240',600:'#4d8f33',700:'#3b6b27',800:'#2a491d',900:'#1c3012'},
200: '#cce6f7', deepOceanBlue: {50:'#f4faff',100:'#e9f5ff',200:'#cfe6ff',300:'#add1ff',400:'#7ab9ff',500:'#479fff',600:'#3c86e6',700:'#305eaf',800:'#23437f',900:'#162a50'},
300: '#99ceef', warmAmberGlow: {50:'#fff9f2',100:'#fff3e5',200:'#ffe6cc',300:'#ffcc99',400:'#ffad4d',500:'#ff8f00',600:'#e67600',700:'#b35a00',800:'#804000',900:'#4d2600'},
400: '#66b6e7', peachMist: {50:'#fff8f7',100:'#fff0ed',200:'#ffe1db',300:'#ffc2b7',400:'#ff9a87',500:'#ff7257',600:'#e65f4b',700:'#b34938',800:'#803622',900:'#4d230f'},
500: '#339ede', slatePurple: {50:'#f7f5fa',100:'#efe9f5',200:'#ded1ea',300:'#bdb3d5',400:'#9584b5',500:'#6d5795',600:'#5c4a7c',700:'#473861',800:'#322648',900:'#1f1530'},
600: '#1f86c3', mintTea: {50:'#f2fcfa',100:'#e5f9f6',200:'#ccefee',300:'#99dfdc',400:'#66cfc9',500:'#33bfb6',600:'#2aa395',700:'#228174',800:'#195953',900:'#103330'},
700: '#16699b', copperRust: {50:'#faf7f6',100:'#f5efee',200:'#ebe0dc',300:'#d6c1b8',400:'#b28a86',500:'#8d4d55',600:'#7a444b',700:'#5f3338',800:'#442426',900:'#2d1718'},
800: '#0f4b6f', // Neue 10
900: '#082d43', arcticBlue: {50:'#f2f9fd',100:'#e6f3fb',200:'#cce6f7',300:'#99ceef',400:'#66b6e7',500:'#339ede',600:'#1f86c3',700:'#16699b',800:'#0f4b6f',900:'#082d43'},
}, roseQuartz: {50:'#fdf7f9',100:'#faeff3',200:'#f5dfe6',300:'#ecbfd0',400:'#e08dad',500:'#d45b89',600:'#b94771',700:'#8e3556',800:'#63233b',900:'#391324'},
roseQuartz: { citrusPunch: {50:'#fffdf6',100:'#fffbe9',200:'#fff5cc',300:'#ffeb99',400:'#ffe066',500:'#ffd633',600:'#e6bd00',700:'#b39300',800:'#806900',900:'#4d3f00'},
50: '#fdf7f9', midnightPlum: {50:'#faf7fb',100:'#f4ecf6',200:'#e4cfee',300:'#cba0de',400:'#a869cc',500:'#8431b9',600:'#6d299b',700:'#521f74',800:'#38154d',900:'#1f0b28'},
100: '#faeff3', sandstone: {50:'#fbf9f7',100:'#f6f2ee',200:'#ece3da',300:'#d8c6b3',400:'#c0a27f',500:'#a87e4b',600:'#906a3e',700:'#6b4f2f',800:'#47341f',900:'#241a10'},
200: '#f5dfe6', emeraldMist: {50:'#f3faf7',100:'#e7f6ef',200:'#ccecdc',300:'#9ddabf',400:'#6ec8a3',500:'#3fb586',600:'#359771',700:'#2a765a',800:'#1f5442',900:'#13332a'},
300: '#ecbfd0', velvetRed: {50:'#fdf7f7',100:'#faeeee',200:'#f4d6d6',300:'#e7a8a8',400:'#d56666',500:'#c32424',600:'#a61e1e',700:'#801717',800:'#590f0f',900:'#330808'},
400: '#e08dad', stormGrey: {50:'#f7f8fa',100:'#eef0f3',200:'#d9dce2',300:'#b6bbc8',400:'#8b91a4',500:'#606780',600:'#4f556b',700:'#3e4456',800:'#2c313f',900:'#1b1e29'},
500: '#d45b89', neonLime: {50:'#f7ffe6',100:'#eeffc9',200:'#dbff96',300:'#c2ff52',400:'#a8ff0e',500:'#8de600',600:'#74bf00',700:'#5b9900',800:'#426f00',900:'#294600'},
600: '#b94771', skyMauve: {50:'#faf8fc',100:'#f4f0f9',200:'#e5dbf2',300:'#c9b2e6',400:'#a27dd4',500:'#7b48c2',600:'#633aa0',700:'#4b2b7c',800:'#341d58',900:'#1e1035'},
700: '#8e3556',
800: '#63233b',
900: '#391324',
},
citrusPunch: {
50: '#fffdf6',
100: '#fffbe9',
200: '#fff5cc',
300: '#ffeb99',
400: '#ffe066',
500: '#ffd633',
600: '#e6bd00',
700: '#b39300',
800: '#806900',
900: '#4d3f00',
},
midnightPlum: {
50: '#faf7fb',
100: '#f4ecf6',
200: '#e4cfee',
300: '#cba0de',
400: '#a869cc',
500: '#8431b9',
600: '#6d299b',
700: '#521f74',
800: '#38154d',
900: '#1f0b28',
},
sandstone: {
50: '#fbf9f7',
100: '#f6f2ee',
200: '#ece3da',
300: '#d8c6b3',
400: '#c0a27f',
500: '#a87e4b',
600: '#906a3e',
700: '#6b4f2f',
800: '#47341f',
900: '#241a10',
},
emeraldMist: {
50: '#f3faf7',
100: '#e7f6ef',
200: '#ccecdc',
300: '#9ddabf',
400: '#6ec8a3',
500: '#3fb586',
600: '#359771',
700: '#2a765a',
800: '#1f5442',
900: '#13332a',
},
velvetRed: {
50: '#fdf7f7',
100: '#faeeee',
200: '#f4d6d6',
300: '#e7a8a8',
400: '#d56666',
500: '#c32424',
600: '#a61e1e',
700: '#801717',
800: '#590f0f',
900: '#330808',
},
stormGrey: {
50: '#f7f8fa',
100: '#eef0f3',
200: '#d9dce2',
300: '#b6bbc8',
400: '#8b91a4',
500: '#606780',
600: '#4f556b',
700: '#3e4456',
800: '#2c313f',
900: '#1b1e29',
},
neonLime: {
50: '#f7ffe6',
100: '#eeffc9',
200: '#dbff96',
300: '#c2ff52',
400: '#a8ff0e',
500: '#8de600',
600: '#74bf00',
700: '#5b9900',
800: '#426f00',
900: '#294600',
},
skyMauve: {
50: '#faf8fc',
100: '#f4f0f9',
200: '#e5dbf2',
300: '#c9b2e6',
400: '#a27dd4',
500: '#7b48c2',
600: '#633aa0',
700: '#4b2b7c',
800: '#341d58',
900: '#1e1035',
}
}, },
}, },
}, },