Files
OpenBB/desktop/src/styles.css
Danglewood 6460b23709 [Feature] Configure Tauri Updater for ODP Desktop Latest Release Tag (#7240)
* configure the updater and some fix some macos tahoe css errors

* enclosure for title_bar_style on Window build

* those should have been added to the commit

* test update to 0.6.0

* allow unused mut

* update version in tauri.conf

* fix versioned release draft

* fix windows beforeBundle script

* force app restart on update

* fix release build

* fix latest tag files

* latest tag title

* try testing for windows ARM

* improve build workflow cleanup for cache

* actually use the windows-11-arm runner

* copy and bundle openssl items directly from runner

* we actually need those files as placeholders for linters and unit tests

* no need to rebuild assets when converting draft to published

* fix verbosity

* fix windows openssl dir

* converting draft release to published should not run the build workflows

* converting draft release to published should not run the build workflows

* separate release draft build from publish

* release dekstop dispatch

* release dekstop dispatch

* fix dylibs

* undo fix_dylib change and attempt to handle restart on update

* move restart exit code up

* bump version to test updater restarting

* windows updater signature

* positional argument..?

* arg is --password

* try this for mac updater

* add message to updater to inform users to start the app manually after update

* add toast message for first API run

* get windows to open the window after updating..?

* cargo clippy

* update package locks for vite

* fix css thing

* version bump for another test

* bump for v 1

---------

Co-authored-by: deeleeramone <>
2025-10-22 15:56:03 +00:00

581 lines
14 KiB
CSS
Vendored

@import "@openbb/ui-pro/dist/style.css";
@tailwind base;
@tailwind components;
@tailwind utilities;
* {
scrollbar-width: auto;
}
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-track {
background: #eaeaea;
border-radius: 6px;
}
.dark ::-webkit-scrollbar-track {
background: #46464f;
border-radius: 6px;
}
::-webkit-scrollbar-thumb {
background: #a2a2a2;
border-radius: 6px;
height: 2rem;
}
.dark ::-webkit-scrollbar-thumb {
background: #6d6e74;
}
::-webkit-scrollbar-thumb:hover {
background-color: #7f7e7e;
}
.dark ::-webkit-scrollbar-thumb:hover {
background-color: #8d8e94;
}
:root {
--bg-primary: #ffffff;
--bg-secondary: #f7f7f9;
--bg-tertiary: #efeff2;
--bg-accent: rgb(0, 136, 204, 0.3);
--bg-toast: rgba(212, 229, 252, 1);
--text-primary: #151518;
--text-primary-inverse: #ffffff;
--text-secondary: #2c2c32;
--text-tertiary: #6f6d80;
--text-muted: rgba(21, 21, 24, 0.35);
--ghost-icon: rgba(0, 0, 0, 1);
--ghost-icon-hover: rgba(0, 0, 0, 0.75);
--text-accent: #007acc;
--border-color: rgba(215, 215, 222, 1);
--border-outline: #c6c6cc;
--accent-color: #f0f0f3;
--border-accent: #c6c6cc;
--border-modal: rgba(70, 70, 79, 0);
--button-primary-bg: rgba(0, 136, 204, 1);
--button-primary-text: #ffffff;
--button-primary-border: rgba(0, 0, 0, 0.75);
--button-secondary-border: rgba(215, 215, 222, 1);
--button-secondary-bg: #f3f3f6;
--button-neutral-bg: #e3e5e9;
--button-neutral-bg-hover: rgb(187, 194, 238, 0.25);
--tooltip-border: rgba(0, 0, 0, 0.2);
--tooltip-background: rgba(255, 255, 255, 0.97);
--info-icon: rgba(138, 138, 144, 1);
--tab-border-active: #007acc;
--tag-bg: rgba(90, 89, 97, 0.3);
--info-icon: rgba(138, 138, 144, 1);
}
.dark {
--bg-primary: #212124;
--bg-secondary: rgba(21, 21, 24, 1);
--bg-tertiary: rgba(31, 30, 35, 1);
--bg-quartary: rgba(36, 36, 42, 1);
--bg-accent: rgb(0, 136, 204, 0.3);
--text-primary: #ffffff;
--text-primary-inverse: #151518;
--text-secondary: #EBEBED;
--text-tertiary: #9793b0;
--text-muted: rgba(138, 138, 144, 1);
--ghost-icon: rgba(255, 255, 255, 1);
--ghost-icon-hover: rgba(255, 255, 255, 0.75);
--text-accent: rgb(51, 187, 255);
--border-color: rgba(70, 70, 79, 1);
--border-outline: rgba(70, 70, 79, 0.5);
--border-accent: rgba(70, 70, 79, 0.799);
--border-modal: rgba(70, 70, 79, 0);
--accent-color: #46464F;
--button-primary-bg: #e2e2e2;
--button-primary-text: rgb(21, 21, 21, 1);
--button-primary-border: rgba(22, 22, 22, 0.799);
--button-secondary-border: rgba(70, 70, 79, 0.5);
--button-secondary-bg: rgba(54, 54, 63, 1);
--button-secondary-hover: rgba(42, 42, 48, 1);
--button-neutral-bg: rgb(0, 136, 204, 1);
--button-neutral-bg-hover: rgb(36, 68, 100, 1);
--tooltip-border: rgba(255, 255, 255, 0.2);
--tooltip-background: rgba(42, 42, 49, 1);
--tab-border-active: rgb(51, 187, 255);
--tag-bg: rgba(90, 89, 97, 0.3);
--dropdown-bg: rgba(36, 36, 42, 1);
--info-icon: rgba(138, 138, 144, 1);
--bg-toast: rgba(212, 229, 252, 1);
}
.info-icon {
background-color: none;
color: var(--info-icon);
border: 1.2px solid var(--info-icon);
}
.bg-theme-tag {
background-color: var(--tag-bg);
}
.bg-theme-toast {
background-color: var(--bg-toast);
}
.button-toast,
.button-toast:focus,
.button-toast:focus-visible,
.dark .button-toast,
.dark .button-toast:focus,
.dark .button-toast:focus-visible {
background-color: rgb(0, 136, 204, 1);
color: #ffffff;
padding: 8px;
border-radius: 0.375rem;
}
.button-toast:hover,
.dark .button-toast:hover {
background-color: rgb(0, 136, 204, 0.85);
color: #ffffff;
}
.toast-container, .dark .toast-container {
background-color: var(--bg-toast);
border-radius: 0.5rem;
color: var(--text-primary-inverse);
padding-top: 10px;
padding-bottom: 20px;
padding-left: 20px;
padding-right: 0;
font-weight: medium;
box-shadow: 0 10px 12px rgba(0, 0, 0, 0.3);
}
.toast-info-icon {
color: var(--button-neutral-bg);
width: 25px;
height: 25px;
font-weight: bold;
}
/* UTILITY CLASSES */
.text-theme-accent {
color: var(--text-accent);
}
.tab-border-active {
border-bottom: 2px solid var(--tab-border-active);
}
.tab-border-active:focus, .tab-border-active:focus-visible {
outline: none !important;
box-shadow: none !important;
}
.bg-theme-accent {
background-color: var(--bg-accent);
}
.bg-theme-quartary {
background-color: var(--bg-quartary);
}
.bg-theme-neutral {
background-color: var(--button-neutral-bg);
}
.dark .button-bg-accent, .button-bg-accent {
background-color: var(--text-accent);
color: var(--text-primary);
border: 1px solid var(--border-color);
}
.button-outline {
@apply border border-theme-outline rounded-sm;
transition: background-color 0.15s ease;
}
.button-outline:hover,
.button-outline:focus,
.button-outline:focus-visible,
.button-outline:active {
background-color: var(--button-secondary-hover);
outline: none !important;
box-shadow: none !important;
}
.dark .button-outline:hover,
.dark .button-outline:focus,
.dark .button-outline:focus-visible,
.dark .button-outline:active,
.button-outline:focus,
.button-outline:focus-visible {
background-color: var(--button-secondary-hover);
outline: none !important;
box-shadow: none !important;
}
/* Theme utility classes */
.bg-theme-primary { background-color: var(--bg-primary); }
.bg-theme-secondary { background-color: var(--bg-secondary); }
.bg-theme-tertiary { background-color: var(--bg-tertiary); }
.text-theme-primary { color: var(--text-primary); }
.text-theme-secondary { color: var(--text-secondary); }
.text-theme-tertiary { color: var(--text-tertiary); }
.text-theme-muted { color: var(--text-muted); }
.text-theme-accent { color: var(--text-accent); }
.border-theme { border-color: var(--border-color); }
.border-theme-outline { border-color: var(--border-outline); }
.border-theme-accent { border-color: var(--border-accent); }
.border-theme-modal { border-color: var(--border-modal); }
.border-theme-radio { border-color: var(--text-accent); }
/* Tooltip */
.tooltip-theme, .dark .tooltip-theme{
@apply shadow-lg;
background-color: var(--tooltip-background);
color: var(--text-primary);
padding: 0.25rem 0.5rem;
border-radius: 0.125rem;
border: 0.25px solid var(--tooltip-border);
line-height: 1.25; /* 20px */
margin-top: 0.5rem;
margin-left: 1rem;
margin-right: 1.5rem;
margin-bottom: 0.5rem;
z-index: 1000;
}
/* Base button styles */
.button-base {
padding: 0.5rem 1rem;
border-radius: 0.375rem;
font-weight: 500;
transition: all 0.2s ease;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* Stop button */
.button-stop {
background-color: #ff0000c6;
color: var(--text-primary);
border: 1px solid transparent;
outline: none;
}
.dark .button-stop {
background-color: #ff0000c6;
color: var(--text-primary);
border: 1px solid transparent;
outline: none;
}
.dark .button-stop:hover, .dark .button-stop:focus, .dark .button-stop:focus-visible {
background-color: #ff0000a1;
box-shadow: none !important
}
body:not(.dark) .button-stop:hover,
body:not(.dark) .button-stop:focus,
body:not(.dark) .button-stop:focus-visible {
background-color: #ff0000 !important;
box-shadow: none !important;
outline: none;
}
/* Primary button - theme */
.button-primary,
.dark .button-primary {
color: var(--button-primary-text);
background-color: var(--button-primary-bg);
box-shadow: none !important;
}
.button-primary:disabled, .dark .button-primary:disabled {
cursor: not-allowed;
opacity: 0.5;
outline: none;
}
/* Secondary button */
.button-secondary, .dark .button-secondary {
border: none;
background-color: var(--button-secondary-bg);
color: var(--text-secondary);
box-shadow: none !important;
}
.button-secondary:hover,
.button-secondary:focus,
.button-secondary:focus-visible,
.dark .button-secondary:hover,
.dark .button-secondary:focus,
.dark .button-secondary:focus-visible {
outline: none !important;
box-shadow: none !important;
background-color: var(--button-secondary-hover);
}
.button-secondary:disabled {
border-color: var(--text-muted);
color: var(--text-muted);
cursor: not-allowed;
opacity: 0.7;
}
/* Neutral button */
.button-neutral, .dark .button-neutral {
background-color: var(--button-neutral-bg);
color: var(--text-primary);
outline: none !important;
box-shadow: none !important;
}
.button-neutral:hover,
.button-neutral:focus,
.button-neutral:focus-visible,
.dark .button-neutral:hover,
.dark .button-neutral:focus,
.dark .button-neutral:focus-visible {
background-color: var(--button-neutral-bg-hover);
outline: none !important;
box-shadow: none !important;
}
/* Danger button style */
.button-danger {
background-color: #ef4444;
color: var(--text-primary);
border: 1px solid transparent;
}
.button-danger:hover {
background-color: #dc2626;
outline: none;
}
.button-danger:active, .button-danger:focus, .button-danger:focus-visible {
background-color: #b91c1c;
outline: none;
box-shadow: none !important;
}
.button-danger:disabled {
background-color: #fca5a5;
cursor: not-allowed;
opacity: 0.7;
}
/* Ghost button style */
.button-ghost, .dark .button-ghost {
background-color: transparent;
color: var(--ghost-icon);
border: none !important;
box-shadow: none !important;
}
.button-ghost:focus, .button-ghost:focus-visible {
color: var(--ghost-icon-hover);
border: none !important;
box-shadow: none !important;
}
.button-ghost:hover, .dark .button-ghost:hover, .text-hover{
color: var(--ghost-icon-hover);
border: none !important;
box-shadow: none !important;
}
/* Small size buttons */
.button-sm {
padding: 0.25rem 0.5rem;
font-size: 0.875rem;
}
/* Alert styles */
.alert-success {
@apply mt-4 p-4 rounded-md;
background-color: rgba(209, 250, 229, 1);
border: 1px solid #10b981;
color: #065f46;
}
.dark .alert-success {
background-color: rgba(6, 95, 70, 0.3);
border-color: #059669;
color: #6ee7b7;
}
/* ============================================
FORM ELEMENTS
============================================ */
input[type="text"], input[type="password"], .dark input[type="text"], .dark input[type="password"], .dark textarea {
@apply border border-theme rounded-md;
background-color: var(--bg-theme-primary);
color: var(--text-primary);
padding: 0.5rem;
font-size: 0.875rem; /* 14px */
line-height: 0.25; /* 20px */
outline: var(--border-color);
}
/* Focus state for text form entry */
input[type="text"]:focus, input[type="password"]:focus, textarea:focus {
border-color: var(--accent-color);
outline: none;
}
/* Disabled state for text form entry */
input[type="text"]:disabled, textarea:disabled {
background-color: var(--bg-tertiary);
color: var(--text-muted);
cursor: not-allowed;
}
input[type="number"] + div button:focus,
input[type="number"] + div button:focus-visible {
outline: none !important;
box-shadow: none !important;
}
/* Directory input styles */
.directory-input {
@apply border border-theme rounded-md;
background-color: var(--bg-theme-primary);
color: var(--text-primary);
padding: 0.5rem;
font-size: 0.875rem; /* 14px */
line-height: 0.25; /* 20px */
outline: var(--border-color);
}
/* Focus state for input fields */
.directory-input:focus {
border-color: var(--border-accent); /* Highlight border on focus */
outline: none; /* Remove default outline */
}
/* Disabled state for input fields */
.directory-input:disabled {
background-color: var(--bg-tertiary, #e5e7eb); /* Muted background for disabled state */
color: var(--text-muted, #9ca3af); /* Muted text color */
cursor: not-allowed; /* Show not-allowed cursor */
}
.checkbox, .checkbox-theme {
appearance: none;
width: 1rem;
height: 1rem;
border: 1px solid var(--border-accent);
border-radius: 0.15rem;
background-color: transparent; /* transparent when not checked */
position: relative;
cursor: pointer;
transition: background 0.15s;
}
.checkbox:checked, .checkbox-theme:checked {
background-color: var(--button-neutral-bg);
border-color: var(--button-neutral-bg)
}
.checkbox-theme:focus, .checkbox:focus {
outline: none;
border: 1px solid var(--text-primary);
}
.checkbox:checked::after,
.checkbox-theme:checked::after {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 0.35rem;
height: 0.65rem;
border-right: 2px solid var(--text-primary);
border-bottom: 2px solid var(--text-primary);
transform: translate(-50%, -60%) rotate(45deg);
}
.checkbox.indeterminate, .checkbox-theme.indeterminate {
background-color: var(--button-neutral-bg);
border-color: var(--button-neutral-bg);
}
.checkbox.indeterminate::after,
.checkbox-theme.indeterminate::after {
content: '';
position: absolute;
left: 50%;
top: 50%;
width: 0.5rem;
height: 2px;
background-color: var(--text-primary);
transform: translate(-50%, -50%);
border: none;
}
/* ============================================
START/STOP BUTTON
============================================ */
.button-startstop {
@apply flex items-center justify-center px-2 py-1 rounded text-theme-primary button-secondary;
}
.button-startstop.running {
background-color: #ff4444;
}
.button-startstop.stopped, .dark .button-startstop.stopped {
background-color: var(--button-secondary-bg);
}
.button-startstop.stopped:hover, .dark .button-startstop.stopped:hover {
background-color: #1dc523;
outline: none;
}
.dark .button-startstop.running {
@apply bg-red-600 hover:bg-red-700 text-theme-primary;
}
.dark .button-startstop.processing {
@apply opacity-50 cursor-not-allowed;
}
.button-startstop:focus.focus-visible {
outline: none !important;
box-shadow: none !important;
}
/* Hide spinner buttons on number inputs */
input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
-webkit-appearance: none;
margin: 0;
}
input[type=number] {
-moz-appearance: textfield;
}
.ext-actions {
opacity: 0;
transition: opacity 0ms;
pointer-events: none;
}
.ext-row:hover .ext-actions {
opacity: 1;
pointer-events: auto;
}