From b6764e7a12d513b1e8e76ff84e88619ce112e40f Mon Sep 17 00:00:00 2001 From: "PANIK\\chris" Date: Tue, 30 Dec 2025 23:35:44 +0100 Subject: [PATCH] added dark mode. --- resources/claude_dark_mode.qss | 871 +++++++++++++++++++++++++++++++++ 1 file changed, 871 insertions(+) create mode 100644 resources/claude_dark_mode.qss diff --git a/resources/claude_dark_mode.qss b/resources/claude_dark_mode.qss new file mode 100644 index 0000000..8c5423f --- /dev/null +++ b/resources/claude_dark_mode.qss @@ -0,0 +1,871 @@ +/* =================================================================== + Fluent Design Dark Mode Stylesheet for Qt6 + Windows 11 inspired dark theme + =================================================================== */ + +/* === Color Palette === + Background: #202020 + Surface: #2B2B2B + Surface Hover: #3A3A3A + Border: #3F3F3F + Text: #FFFFFF + Text Secondary: #B0B0B0 + Accent: #0078D4 + Accent Hover: #106EBE + === */ + +/* === Global Styles === */ +* { + font-family: "Segoe UI", "Noto Sans", Roboto, sans-serif; + font-size: 9pt; +} + +QWidget { + background-color: #202020; + color: #FFFFFF; + selection-background-color: #0078D4; + selection-color: #FFFFFF; +} + +/* === QMainWindow === */ +QMainWindow { + background-color: #202020; +} + +QMainWindow::separator { + background-color: #3F3F3F; + width: 1px; + height: 1px; +} + +QMainWindow::separator:hover { + background-color: #0078D4; +} + +/* === QPushButton === */ +QPushButton { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + padding: 6px 16px; + min-height: 20px; + font-weight: 500; +} + +QPushButton:hover { + background-color: #3A3A3A; + border-color: #5A5A5A; +} + +QPushButton:pressed { + background-color: #1F1F1F; + border-color: #3F3F3F; +} + +QPushButton:disabled { + background-color: #2B2B2B; + color: #5A5A5A; + border-color: #3F3F3F; +} + +QPushButton:default { + background-color: #0078D4; + border-color: #0078D4; + color: #FFFFFF; +} + +QPushButton:default:hover { + background-color: #106EBE; + border-color: #106EBE; +} + +QPushButton:default:pressed { + background-color: #005A9E; + border-color: #005A9E; +} + +/* === QLineEdit === */ +QLineEdit { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + padding: 6px 8px; + selection-background-color: #0078D4; +} + +QLineEdit:hover { + border-color: #5A5A5A; +} + +QLineEdit:focus { + background-color: #1F1F1F; + border: 2px solid #0078D4; + padding: 5px 7px; +} + +QLineEdit:disabled { + background-color: #2B2B2B; + color: #5A5A5A; + border-color: #3F3F3F; +} + +QLineEdit[readOnly="true"] { + background-color: #2B2B2B; + color: #B0B0B0; +} + +/* === QTextEdit & QPlainTextEdit === */ +QTextEdit, QPlainTextEdit { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + padding: 8px; + selection-background-color: #0078D4; +} + +QTextEdit:hover, QPlainTextEdit:hover { + border-color: #5A5A5A; +} + +QTextEdit:focus, QPlainTextEdit:focus { + border: 2px solid #0078D4; + padding: 7px; +} + +QTextEdit:disabled, QPlainTextEdit:disabled { + background-color: #2B2B2B; + color: #5A5A5A; +} + +/* === QComboBox === */ +QComboBox { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + padding: 6px 8px; + min-height: 20px; +} + +QComboBox:hover { + background-color: #3A3A3A; + border-color: #5A5A5A; +} + +QComboBox:focus { + border: 2px solid #0078D4; +} + +QComboBox:disabled { + background-color: #2B2B2B; + color: #5A5A5A; +} + +QComboBox::drop-down { + border: none; + width: 20px; +} + +QComboBox::down-arrow { + image: url(:/icons/down-arrow.png); + width: 12px; + height: 12px; +} + +QComboBox QAbstractItemView { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + selection-background-color: #0078D4; + selection-color: #FFFFFF; + outline: none; +} + +QComboBox QAbstractItemView::item { + min-height: 28px; + padding-left: 8px; +} + +QComboBox QAbstractItemView::item:hover { + background-color: #3A3A3A; +} + +/* === QSpinBox & QDoubleSpinBox === */ +QSpinBox, QDoubleSpinBox { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + padding: 6px 8px; + min-height: 20px; +} + +QSpinBox:hover, QDoubleSpinBox:hover { + border-color: #5A5A5A; +} + +QSpinBox:focus, QDoubleSpinBox:focus { + border: 2px solid #0078D4; +} + +QSpinBox:disabled, QDoubleSpinBox:disabled { + background-color: #2B2B2B; + color: #5A5A5A; +} + +QSpinBox::up-button, QDoubleSpinBox::up-button { + background-color: transparent; + border: none; + width: 16px; +} + +QSpinBox::up-button:hover, QDoubleSpinBox::up-button:hover { + background-color: #3A3A3A; +} + +QSpinBox::down-button, QDoubleSpinBox::down-button { + background-color: transparent; + border: none; + width: 16px; +} + +QSpinBox::down-button:hover, QDoubleSpinBox::down-button:hover { + background-color: #3A3A3A; +} + +/* === QCheckBox === */ +QCheckBox { + spacing: 8px; + color: #FFFFFF; +} + +QCheckBox::indicator { + width: 18px; + height: 18px; + border-radius: 4px; + border: 1px solid #5A5A5A; + background-color: #2B2B2B; +} + +QCheckBox::indicator:hover { + background-color: #3A3A3A; + border-color: #6A6A6A; +} + +QCheckBox::indicator:checked { + background-color: #0078D4; + border-color: #0078D4; + image: url(:/icons/checkmark.png); +} + +QCheckBox::indicator:checked:hover { + background-color: #106EBE; + border-color: #106EBE; +} + +QCheckBox::indicator:disabled { + background-color: #2B2B2B; + border-color: #3F3F3F; +} + +QCheckBox:disabled { + color: #5A5A5A; +} + +/* === QRadioButton === */ +QRadioButton { + spacing: 8px; + color: #FFFFFF; +} + +QRadioButton::indicator { + width: 18px; + height: 18px; + border-radius: 9px; + border: 1px solid #5A5A5A; + background-color: #2B2B2B; +} + +QRadioButton::indicator:hover { + background-color: #3A3A3A; + border-color: #6A6A6A; +} + +QRadioButton::indicator:checked { + background-color: #0078D4; + border-color: #0078D4; +} + +QRadioButton::indicator:checked:hover { + background-color: #106EBE; + border-color: #106EBE; +} + +QRadioButton::indicator:checked::after { + width: 8px; + height: 8px; + border-radius: 4px; + background-color: #FFFFFF; +} + +QRadioButton::indicator:disabled { + background-color: #2B2B2B; + border-color: #3F3F3F; +} + +QRadioButton:disabled { + color: #5A5A5A; +} + +/* === QSlider === */ +QSlider::groove:horizontal { + height: 4px; + background-color: #3F3F3F; + border-radius: 2px; +} + +QSlider::handle:horizontal { + background-color: #FFFFFF; + border: 2px solid #0078D4; + width: 16px; + height: 16px; + margin: -7px 0; + border-radius: 8px; +} + +QSlider::handle:horizontal:hover { + background-color: #FFFFFF; + border: 2px solid #106EBE; +} + +QSlider::handle:horizontal:pressed { + background-color: #E0E0E0; +} + +QSlider::sub-page:horizontal { + background-color: #0078D4; + border-radius: 2px; +} + +QSlider::groove:vertical { + width: 4px; + background-color: #3F3F3F; + border-radius: 2px; +} + +QSlider::handle:vertical { + background-color: #FFFFFF; + border: 2px solid #0078D4; + width: 16px; + height: 16px; + margin: 0 -7px; + border-radius: 8px; +} + +QSlider::sub-page:vertical { + background-color: #0078D4; + border-radius: 2px; +} + +/* === QProgressBar === */ +QProgressBar { + background-color: #3F3F3F; + border: none; + border-radius: 2px; + height: 4px; + text-align: center; + color: transparent; +} + +QProgressBar::chunk { + background-color: #0078D4; + border-radius: 2px; +} + +QProgressBar:disabled { + background-color: #3F3F3F; +} + +/* === QScrollBar === */ +QScrollBar:horizontal { + background-color: transparent; + height: 12px; + margin: 0; +} + +QScrollBar::handle:horizontal { + background-color: #5A5A5A; + min-width: 40px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::handle:horizontal:hover { + background-color: #6A6A6A; +} + +QScrollBar::handle:horizontal:pressed { + background-color: #7A7A7A; +} + +QScrollBar::add-line:horizontal, +QScrollBar::sub-line:horizontal { + width: 0px; +} + +QScrollBar::add-page:horizontal, +QScrollBar::sub-page:horizontal { + background: none; +} + +QScrollBar:vertical { + background-color: transparent; + width: 12px; + margin: 0; +} + +QScrollBar::handle:vertical { + background-color: #5A5A5A; + min-height: 40px; + border-radius: 6px; + margin: 2px; +} + +QScrollBar::handle:vertical:hover { + background-color: #6A6A6A; +} + +QScrollBar::handle:vertical:pressed { + background-color: #7A7A7A; +} + +QScrollBar::add-line:vertical, +QScrollBar::sub-line:vertical { + height: 0px; +} + +QScrollBar::add-page:vertical, +QScrollBar::sub-page:vertical { + background: none; +} + +/* === QTabWidget === */ +QTabWidget::pane { + background-color: #2B2B2B; + border: 1px solid #3F3F3F; + border-radius: 4px; + top: -1px; +} + +QTabBar::tab { + background-color: transparent; + color: #B0B0B0; + border: none; + border-bottom: 2px solid transparent; + padding: 8px 16px; + margin-right: 4px; +} + +QTabBar::tab:hover { + color: #FFFFFF; + background-color: #3A3A3A; + border-bottom: 2px solid #5A5A5A; +} + +QTabBar::tab:selected { + color: #FFFFFF; + background-color: #2B2B2B; + border-bottom: 2px solid #0078D4; +} + +QTabBar::tab:disabled { + color: #5A5A5A; +} + +/* === QGroupBox === */ +QGroupBox { + background-color: #2B2B2B; + border: 1px solid #3F3F3F; + border-radius: 6px; + margin-top: 12px; + padding-top: 12px; + font-weight: 600; +} + +QGroupBox::title { + subcontrol-origin: margin; + subcontrol-position: top left; + padding: 0 8px; + color: #FFFFFF; + background-color: #2B2B2B; +} + +/* === QLabel === */ +QLabel { + background-color: transparent; + color: #FFFFFF; +} + +QLabel:disabled { + color: #5A5A5A; +} + +/* === QToolButton === */ +QToolButton { + background-color: transparent; + color: #FFFFFF; + border: none; + border-radius: 4px; + padding: 6px; +} + +QToolButton:hover { + background-color: #3A3A3A; +} + +QToolButton:pressed { + background-color: #1F1F1F; +} + +QToolButton:checked { + background-color: #0078D4; +} + +QToolButton:disabled { + color: #5A5A5A; +} + +/* === QMenu === */ +QMenu { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + padding: 4px; +} + +QMenu::item { + background-color: transparent; + padding: 6px 24px 6px 8px; + border-radius: 4px; +} + +QMenu::item:selected { + background-color: #3A3A3A; +} + +QMenu::item:disabled { + color: #5A5A5A; +} + +QMenu::separator { + height: 1px; + background-color: #3F3F3F; + margin: 4px 0; +} + +QMenu::icon { + padding-left: 8px; +} + +/* === QMenuBar === */ +QMenuBar { + background-color: #2B2B2B; + color: #FFFFFF; + border-bottom: 1px solid #3F3F3F; +} + +QMenuBar::item { + background-color: transparent; + padding: 6px 12px; + border-radius: 4px; +} + +QMenuBar::item:selected { + background-color: #3A3A3A; +} + +QMenuBar::item:pressed { + background-color: #1F1F1F; +} + +/* === QToolBar === */ +QToolBar { + background-color: #2B2B2B; + border: none; + border-bottom: 1px solid #3F3F3F; + spacing: 4px; + padding: 4px; +} + +QToolBar::handle { + background-color: #3F3F3F; + width: 1px; + height: 1px; + margin: 4px; +} + +QToolBar::separator { + background-color: #3F3F3F; + width: 1px; + height: 1px; + margin: 4px; +} + +/* === QStatusBar === */ +QStatusBar { + background-color: #2B2B2B; + color: #B0B0B0; + border-top: 1px solid #3F3F3F; +} + +QStatusBar::item { + border: none; +} + +/* === QDockWidget === */ +QDockWidget { + background-color: #2B2B2B; + color: #FFFFFF; + titlebar-close-icon: url(:/icons/close.png); + titlebar-normal-icon: url(:/icons/float.png); +} + +QDockWidget::title { + background-color: #2B2B2B; + border: 1px solid #3F3F3F; + padding: 6px; + text-align: left; +} + +QDockWidget::close-button, +QDockWidget::float-button { + background-color: transparent; + border: none; + padding: 4px; +} + +QDockWidget::close-button:hover, +QDockWidget::float-button:hover { + background-color: #3A3A3A; + border-radius: 4px; +} + +/* === QListView & QListWidget === */ +QListView, QListWidget { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + outline: none; +} + +QListView::item, QListWidget::item { + padding: 6px; + border-radius: 4px; +} + +QListView::item:hover, QListWidget::item:hover { + background-color: #3A3A3A; +} + +QListView::item:selected, QListWidget::item:selected { + background-color: #0078D4; + color: #FFFFFF; +} + +QListView::item:disabled, QListWidget::item:disabled { + color: #5A5A5A; +} + +/* === QTreeView & QTreeWidget === */ +QTreeView, QTreeWidget { + background-color: #2B2B2B; + color: #FFFFFF; + border: 1px solid #3F3F3F; + border-radius: 4px; + outline: none; + show-decoration-selected: 1; +} + +QTreeView::item, QTreeWidget::item { + padding: 4px; + border-radius: 4px; +} + +QTreeView::item:hover, QTreeWidget::item:hover { + background-color: #3A3A3A; +} + +QTreeView::item:selected, QTreeWidget::item:selected { + background-color: #0078D4; + color: #FFFFFF; +} + +QTreeView::branch, QTreeWidget::branch { + background-color: transparent; +} + +QTreeView::branch:closed:has-children, QTreeWidget::branch:closed:has-children { + image: url(:/icons/branch-closed.png); +} + +QTreeView::branch:open:has-children, QTreeWidget::branch:open:has-children { + image: url(:/icons/branch-open.png); +} + +/* === QTableView & QTableWidget === */ +QTableView, QTableWidget { + background-color: #2B2B2B; + color: #FFFFFF; + gridline-color: #3F3F3F; + border: 1px solid #3F3F3F; + border-radius: 4px; + selection-background-color: #0078D4; +} + +QTableView::item, QTableWidget::item { + padding: 4px; +} + +QTableView::item:hover, QTableWidget::item:hover { + background-color: #3A3A3A; +} + +QTableView::item:selected, QTableWidget::item:selected { + background-color: #0078D4; + color: #FFFFFF; +} + +QHeaderView::section { + background-color: #2B2B2B; + color: #FFFFFF; + padding: 6px; + border: none; + border-right: 1px solid #3F3F3F; + border-bottom: 1px solid #3F3F3F; + font-weight: 600; +} + +QHeaderView::section:hover { + background-color: #3A3A3A; +} + +/* === QDialog === */ +QDialog { + background-color: #2B2B2B; +} + +/* === QMessageBox === */ +QMessageBox { + background-color: #2B2B2B; +} + +QMessageBox QLabel { + color: #FFFFFF; +} + +/* === QToolTip === */ +QToolTip { + background-color: #3A3A3A; + color: #FFFFFF; + border: 1px solid #5A5A5A; + border-radius: 4px; + padding: 4px 8px; +} + +/* === QCalendarWidget === */ +QCalendarWidget { + background-color: #2B2B2B; +} + +QCalendarWidget QToolButton { + color: #FFFFFF; + background-color: transparent; + border: none; + border-radius: 4px; + padding: 4px; +} + +QCalendarWidget QToolButton:hover { + background-color: #3A3A3A; +} + +QCalendarWidget QMenu { + background-color: #2B2B2B; +} + +QCalendarWidget QSpinBox { + background-color: #2B2B2B; + color: #FFFFFF; + selection-background-color: #0078D4; +} + +QCalendarWidget QAbstractItemView { + background-color: #2B2B2B; + color: #FFFFFF; + selection-background-color: #0078D4; + selection-color: #FFFFFF; +} + +/* === QSplitter === */ +QSplitter::handle { + background-color: #3F3F3F; +} + +QSplitter::handle:hover { + background-color: #0078D4; +} + +QSplitter::handle:horizontal { + width: 1px; +} + +QSplitter::handle:vertical { + height: 1px; +} + +/* === Custom Classes === */ +.accent-button { + background-color: #0078D4; + color: #FFFFFF; + border: none; +} + +.accent-button:hover { + background-color: #106EBE; +} + +.accent-button:pressed { + background-color: #005A9E; +} + +.danger-button { + background-color: #C42B1C; + color: #FFFFFF; + border: none; +} + +.danger-button:hover { + background-color: #A52314; +} + +.card { + background-color: #2B2B2B; + border: 1px solid #3F3F3F; + border-radius: 8px; + padding: 16px; +} + +.surface { + background-color: #2B2B2B; + border: 1px solid #3F3F3F; +} + +.divider { + background-color: #3F3F3F; + min-height: 1px; + max-height: 1px; +} \ No newline at end of file