mirror of
https://github.com/different-ai/openwork
synced 2026-04-25 17:15:34 +02:00
* fix welcome workspace bootstrap flow * fix workspace modal dark theme * fix(automations): prefer server scheduler when connected * fix(automations): keep context key stable across server startup * fix(sidebar): refresh selected workspace sessions after switch * refactor(sidebar): move workspace session loading into store * refactor(sidebar): reload sessions per workspace fingerprint * refactor(sidebar): refresh workspace lists after session mutations --------- Co-authored-by: src-opn <src-opn@users.noreply.github.com> Co-authored-by: Benjamin Shafii <ben@prologe.io>
285 lines
5.7 KiB
CSS
285 lines
5.7 KiB
CSS
@import "tailwindcss";
|
|
@config "../../tailwind.config.ts";
|
|
|
|
@import "../styles/colors.css";
|
|
|
|
:root {
|
|
color-scheme: light;
|
|
--dls-surface: #ffffff;
|
|
--dls-sidebar: #f9fafb;
|
|
--dls-app-bg: #ffffff;
|
|
--dls-border: #f3f4f6;
|
|
--dls-accent: #011627;
|
|
--dls-accent-hover: #000000;
|
|
--dls-accent-rgb: 1 22 39;
|
|
--dls-text-primary: #111827;
|
|
--dls-text-secondary: #6b7280;
|
|
--dls-hover: #f3f4f6;
|
|
--dls-active: #eef2f7;
|
|
--dls-radius: 16px;
|
|
--dls-radius-lg: 24px;
|
|
--dls-shell-shadow: 0 10px 30px rgba(15, 23, 42, 0.06);
|
|
--dls-card-shadow: 0 8px 24px rgba(15, 23, 42, 0.05);
|
|
}
|
|
|
|
[data-theme="dark"] {
|
|
color-scheme: dark;
|
|
--dls-surface: #121212;
|
|
--dls-sidebar: #1a1a1a;
|
|
--dls-app-bg: #161616;
|
|
--dls-border: #262626;
|
|
--dls-accent: #3b82f6;
|
|
--dls-accent-hover: #2563eb;
|
|
--dls-accent-rgb: 59 130 246;
|
|
--dls-text-primary: #ededed;
|
|
--dls-text-secondary: #9ca3af;
|
|
--dls-hover: #1f1f1f;
|
|
--dls-active: #2d2d2d;
|
|
--dls-shell-shadow: 0 18px 48px rgba(0, 0, 0, 0.32);
|
|
--dls-card-shadow: 0 14px 36px rgba(0, 0, 0, 0.24);
|
|
}
|
|
|
|
html,
|
|
body {
|
|
height: 100%;
|
|
}
|
|
|
|
html {
|
|
font-size: var(--openwork-font-size, 16px);
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
font-family:
|
|
"IBM Plex Sans",
|
|
Geist,
|
|
"Avenir Next",
|
|
Inter,
|
|
ui-sans-serif,
|
|
system-ui,
|
|
-apple-system,
|
|
BlinkMacSystemFont,
|
|
"Segoe UI",
|
|
Roboto,
|
|
"Helvetica Neue",
|
|
Arial,
|
|
"Noto Sans",
|
|
"Apple Color Emoji",
|
|
"Segoe UI Emoji";
|
|
font-size: 0.875rem;
|
|
line-height: 1.5;
|
|
color: var(--dls-text-primary);
|
|
background-color: var(--dls-surface);
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
}
|
|
|
|
.ow-soft-shell {
|
|
border: 1px solid var(--dls-border);
|
|
background: var(--dls-surface);
|
|
border-radius: 2rem;
|
|
box-shadow: var(--dls-shell-shadow);
|
|
}
|
|
|
|
.ow-soft-card {
|
|
border: 1px solid var(--dls-border);
|
|
background: var(--dls-surface);
|
|
border-radius: 1.5rem;
|
|
box-shadow: var(--dls-card-shadow);
|
|
}
|
|
|
|
.ow-soft-card-quiet {
|
|
border: 1px solid var(--dls-border);
|
|
background: var(--dls-sidebar);
|
|
border-radius: 1.5rem;
|
|
}
|
|
|
|
.ow-button-primary {
|
|
display: inline-flex;
|
|
min-height: 48px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 9999px;
|
|
background: var(--dls-accent);
|
|
color: #ffffff;
|
|
box-shadow: 0 8px 20px -16px rgba(var(--dls-accent-rgb), 0.45);
|
|
}
|
|
|
|
.ow-button-primary:hover:not(:disabled) {
|
|
background: var(--dls-accent-hover);
|
|
}
|
|
|
|
.ow-button-secondary {
|
|
display: inline-flex;
|
|
min-height: 48px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 9999px;
|
|
border: 1px solid var(--dls-border);
|
|
background: var(--dls-surface);
|
|
color: var(--dls-text-primary);
|
|
box-shadow: var(--dls-card-shadow);
|
|
}
|
|
|
|
.ow-button-secondary:hover:not(:disabled) {
|
|
background: var(--dls-hover);
|
|
}
|
|
|
|
.ow-button-primary,
|
|
.ow-button-secondary {
|
|
padding: 0.75rem 1.25rem;
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
transition: background-color 150ms ease, color 150ms ease, transform 150ms ease, opacity 150ms ease;
|
|
}
|
|
|
|
.ow-button-primary:active:not(:disabled),
|
|
.ow-button-secondary:active:not(:disabled) {
|
|
transform: scale(0.99);
|
|
}
|
|
|
|
.ow-button-primary:disabled,
|
|
.ow-button-secondary:disabled {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.ow-status-pill {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 9999px;
|
|
padding: 0.25rem 0.625rem;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
letter-spacing: 0.18em;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.ow-status-pill-positive {
|
|
border: 1px solid rgba(16, 185, 129, 0.16);
|
|
background: #ecfdf5;
|
|
color: #047857;
|
|
}
|
|
|
|
.ow-status-pill-warning {
|
|
border: 1px solid rgba(245, 158, 11, 0.16);
|
|
background: #fffbeb;
|
|
color: #b45309;
|
|
}
|
|
|
|
.ow-status-pill-neutral {
|
|
border: 1px solid #e5e7eb;
|
|
background: #f9fafb;
|
|
color: #6b7280;
|
|
}
|
|
|
|
.ow-icon-tile {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 0.85rem;
|
|
background: #f4f6f8;
|
|
color: #011627;
|
|
}
|
|
|
|
.ow-icon-tile-muted {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: 0.85rem;
|
|
background: #f1f5f9;
|
|
color: #6b7280;
|
|
}
|
|
|
|
.ow-input {
|
|
appearance: none;
|
|
width: 100%;
|
|
border: 0;
|
|
border-radius: 0.9rem;
|
|
background: #fbfbfc;
|
|
box-shadow: inset 0 0 0 1px #eceef1;
|
|
color: var(--dls-text-primary);
|
|
}
|
|
|
|
.ow-input::placeholder {
|
|
color: #9ca3af;
|
|
}
|
|
|
|
.ow-input:focus {
|
|
outline: none;
|
|
box-shadow: inset 0 0 0 1px rgba(var(--dls-accent-rgb), 0.28), 0 0 0 3px rgba(var(--dls-accent-rgb), 0.08);
|
|
}
|
|
|
|
/* Global clickable elements pointer */
|
|
button,
|
|
[role="button"],
|
|
a,
|
|
input[type="submit"],
|
|
input[type="button"],
|
|
input[type="checkbox"],
|
|
input[type="radio"],
|
|
select {
|
|
cursor: pointer;
|
|
}
|
|
|
|
button:disabled,
|
|
[role="button"][aria-disabled="true"],
|
|
input:disabled,
|
|
select:disabled {
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
@utility animate-spin-slow {
|
|
animation: spin 3s linear infinite;
|
|
}
|
|
|
|
@keyframes soft-pulse {
|
|
0%,
|
|
100% {
|
|
transform: scale(1);
|
|
opacity: 0.4;
|
|
}
|
|
50% {
|
|
transform: scale(1.15);
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
@utility animate-soft-pulse {
|
|
animation: soft-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
|
}
|
|
|
|
/* Highlight animation for just-saved command */
|
|
@keyframes command-highlight {
|
|
0% {
|
|
box-shadow: 0 0 0 0 rgba(99, 102, 241, 0.6);
|
|
border-color: rgba(99, 102, 241, 0.8);
|
|
}
|
|
50% {
|
|
box-shadow: 0 0 0 8px rgba(99, 102, 241, 0);
|
|
border-color: rgba(99, 102, 241, 0.4);
|
|
}
|
|
100% {
|
|
box-shadow: 0 0 0 0 rgba(99, 102, 241, 0);
|
|
border-color: rgba(255, 255, 255, 0.08);
|
|
}
|
|
}
|
|
|
|
.command-just-saved {
|
|
animation: command-highlight 2s ease-out;
|
|
border-color: rgba(99, 102, 241, 0.8);
|
|
}
|
|
|
|
@keyframes progress-shimmer {
|
|
0% {
|
|
transform: translateX(-100%);
|
|
}
|
|
100% {
|
|
transform: translateX(200%);
|
|
}
|
|
}
|
|
|
|
@utility animate-progress-shimmer {
|
|
animation: progress-shimmer 2s infinite linear;
|
|
}
|