mirror of
https://github.com/Dokploy/dokploy
synced 2025-06-26 18:27:59 +00:00
* feat(WIP): compose implementation * feat: add volumes, networks, services name hash generate * feat: add compose config test unique * feat: add tests for each unique config * feat: implement lodash for docker compose parsing * feat: add tests for generating compose file * refactor: implement logs docker compose * refactor: composeFile set not empty * feat: implement providers for compose deployments * feat: add Files volumes to compose * feat: add stop compose button * refactor: change strategie of building compose * feat: create .env file in composepath * refactor: simplify git and github function * chore: update deps * refactor: update migrations and add badge to recognize compose type * chore: update lock yaml * refactor: use code editor * feat: add monitoring for app types * refactor: reset stats on change appName * refactor: add option to clean monitoring folder * feat: show current command that will run * feat: add prefix * fix: add missing types * refactor: add docker provider and expose by default as false * refactor: customize error page * refactor: unified deployments to be a single one * feat: add vitest to ci/cd * revert: back to initial version * refactor: add maxconcurrency vitest * refactor: add pool forks to vitest * feat: add pocketbase template * fix: update path resolution compose * removed * feat: add template pocketbase * feat: add pocketbase template * feat: add support button * feat: add plausible template * feat: add calcom template * feat: add version to each template * feat: add code editor to enviroment variables and swarm settings json * refactor: add loader when download the image * fix: use base64 to generate keys plausible * feat: add recognized domain names by enviroment compose * refactor: show alert to redeploy in each card advanced tab * refactor: add validation to prevent create compose if not have permissions * chore: add templates section to contributing * chore: add example contributing
163 lines
2.8 KiB
CSS
163 lines
2.8 KiB
CSS
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
@layer base {
|
|
:root {
|
|
--background: 0 0% 100%;
|
|
--foreground: 240 10% 3.9%;
|
|
|
|
--card: 0 0% 100%;
|
|
--card-foreground: 240 10% 3.9%;
|
|
|
|
--popover: 0 0% 100%;
|
|
--popover-foreground: 240 10% 3.9%;
|
|
|
|
--primary: 240 5.9% 10%;
|
|
--primary-foreground: 0 0% 98%;
|
|
|
|
--secondary: 240 4.8% 95.9%;
|
|
--secondary-foreground: 240 5.9% 10%;
|
|
|
|
--muted: 240 4.8% 95.9%;
|
|
--muted-foreground: 240 3.8% 46.1%;
|
|
|
|
--accent: 240 4.8% 95.9%;
|
|
--accent-foreground: 240 5.9% 10%;
|
|
|
|
--destructive: 0 84.2% 60.2%;
|
|
--destructive-foreground: 0 0% 98%;
|
|
|
|
--border: 240 5.9% 90%;
|
|
--input: 240 5.9% 90%;
|
|
--ring: 240 10% 3.9%;
|
|
|
|
--radius: 0.5rem;
|
|
--overlay: rgba(0, 0, 0, 0.2);
|
|
}
|
|
|
|
.dark {
|
|
--background: 0 0% 0%;
|
|
--foreground: 0 0% 98%;
|
|
|
|
--card: 240 4% 10%;
|
|
--card-foreground: 0 0% 98%;
|
|
|
|
--popover: 240 10% 3.9%;
|
|
--popover-foreground: 0 0% 98%;
|
|
|
|
--primary: 0 0% 98%;
|
|
--primary-foreground: 240 5.9% 10%;
|
|
|
|
--secondary: 240 3.7% 15.9%;
|
|
--secondary-foreground: 0 0% 98%;
|
|
|
|
--muted: 240 4% 10%;
|
|
--muted-foreground: 240 5% 64.9%;
|
|
|
|
--accent: 240 3.7% 15.9%;
|
|
--accent-foreground: 0 0% 98%;
|
|
|
|
--destructive: 0 62.8% 30.6%;
|
|
--destructive-foreground: 0 0% 98%;
|
|
|
|
--border: 240 3.7% 15.9%;
|
|
--input: 240 4% 10%;
|
|
--ring: 240 4.9% 83.9%;
|
|
|
|
--overlay: rgba(0, 0, 0, 0.5);
|
|
}
|
|
}
|
|
|
|
@layer base {
|
|
* {
|
|
@apply border-border;
|
|
}
|
|
body {
|
|
@apply bg-background text-foreground;
|
|
}
|
|
}
|
|
|
|
.xterm-viewport {
|
|
border-radius: 0.75rem /* 12px */ !important;
|
|
}
|
|
|
|
.xterm .xterm-viewport {
|
|
overflow-y: auto !important;
|
|
}
|
|
|
|
.xterm .xterm-screen {
|
|
overflow: hidden;
|
|
}
|
|
|
|
@layer utilities {
|
|
/* Chrome, Safari and Opera */
|
|
.no-scrollbar::-webkit-scrollbar {
|
|
display: none;
|
|
}
|
|
|
|
.no-scrollbar {
|
|
-ms-overflow-style: none; /* IE and Edge */
|
|
scrollbar-width: none; /* Firefox */
|
|
}
|
|
}
|
|
|
|
#terminal span {
|
|
font-family: "Inter", sans-serif;
|
|
font-weight: 500;
|
|
letter-spacing: 0px !important;
|
|
}
|
|
|
|
/* Codemirror */
|
|
.cm-editor {
|
|
@apply w-full h-full rounded-md overflow-hidden border border-solid border-border outline-none;
|
|
}
|
|
|
|
.cm-editor .cm-scroller {
|
|
font-family: inherit;
|
|
line-height: inherit;
|
|
}
|
|
|
|
.cm-editor.cm-focused {
|
|
@apply outline-none;
|
|
}
|
|
|
|
/* fix: placeholder bg */
|
|
.cm-editor .cm-activeLine:has(.cm-placeholder) {
|
|
background-color: transparent;
|
|
}
|
|
|
|
|
|
.compose-file-editor .cm-editor {
|
|
@apply min-h-[25rem];
|
|
|
|
}
|
|
|
|
|
|
@keyframes heartbeat {
|
|
0% {
|
|
transform: scale(1);
|
|
opacity: 0.7;
|
|
}
|
|
25% {
|
|
transform: scale(1.1);
|
|
opacity: 1;
|
|
}
|
|
50% {
|
|
transform: scale(1);
|
|
opacity: 0.7;
|
|
}
|
|
75% {
|
|
transform: scale(1.1);
|
|
opacity: 1;
|
|
}
|
|
100% {
|
|
transform: scale(1);
|
|
opacity: 0.7;
|
|
}
|
|
}
|
|
|
|
.animate-heartbeat {
|
|
animation: heartbeat 2.5s infinite;
|
|
}
|