jodit-ui-themes
Version:
CSS themes for the Jodit editor, its file browser and the Jodit PRO finder: Office 2010, Windows 10/11, macOS, Material 3, Dracula, Nord, Catppuccin and more
302 lines (258 loc) • 7.62 kB
text/less
/*!
* jodit-ui-themes: Office 2010 theme for Jodit
* https://github.com/TimurSeyidov/jodit-ui-themes
* Released under the MIT license, see LICENSE in the project root.
*/
// Office 2010 theme, editor part: blue ribbon gradients, golden hover,
// orange pressed state, Windows 7 dialogs, menus and form fields.
// Usage: load the stylesheet after the Jodit styles and set
// `theme: 'office2010'`. Jodit names its custom properties `--jd-*` in the
// built CSS, so the theme overrides them by those names.
//
// The theme class lands on the editor container and popups
// (`jodit_theme_office2010`), on dialogs (`jodit-dialog_theme_office2010`)
// and on the Jodit PRO finder window (`jodit-file-browser-pro_theme_office2010`).
:is(
.jodit_theme_office2010,
.jodit-dialog_theme_office2010,
.jodit-file-browser-pro_theme_office2010
) {
--office-frame: #8ba0bc;
--office-line: #a7bad7;
--office-line-light: rgb(255 255 255 / 70%);
--office-ribbon: linear-gradient(#e7eff9, #d6e3f3 45%, #c9daf0);
--office-bar: linear-gradient(#e4ecf7, #c7d8ee);
--office-title: #15428b;
--office-text: #1e395b;
--office-hover: linear-gradient(#fffcea, #fff1bd 45%, #ffe38d 50%, #fff4c7);
--office-hover-border: #dbce99;
--office-pressed: linear-gradient(#fcd9a2, #fbc77a 45%, #f9ad49 50%, #fcd38c);
--office-pressed-hover: linear-gradient(#fbcf8f, #fab866 45%, #f79a2e 50%, #fbc274);
--office-pressed-border: #c2913d;
--office-input-border: #abc1de;
--office-input-focus: #e3c26b;
--jd-color-border: var(--office-line);
--jd-color-panel: #dbe6f4;
--jd-color-text: #000;
--jd-color-text-icons: var(--office-text);
--jd-color-icon: var(--office-text);
--jd-color-label: var(--office-title);
--jd-color-background-selection: #c3d9f5;
--jd-color-button-background-hover: #ffe8a6;
--jd-border-radius-default: 3px;
--jd-font-default: 'Segoe UI', tahoma, arial, sans-serif;
--jd-font-size-default: 13px;
// Ribbon: a single gradient instead of the default ruled rows
.jodit-toolbar__box:not(:empty) {
border-bottom-color: var(--office-frame);
background: var(--office-ribbon);
.jodit-toolbar-editor-collection::after {
display: none;
}
}
.jodit-toolbar-collection,
.jodit-toolbar-editor-collection {
&_mode_horizontal {
background-image: none;
}
}
// Engraved separators between ribbon groups
.jodit-ui-separator,
.jodit-ui-group_separated_true:not(
:last-child,
.jodit-ui-group_before-spacer_true
)::after {
border-right-color: var(--office-line);
box-shadow: 1px 0 0 var(--office-line-light);
}
.jodit-ui-break {
border-top-color: var(--office-line);
box-shadow: 0 1px 0 var(--office-line-light);
}
// Buttons: transparent at rest, golden on hover, orange when pressed
.jodit-toolbar-button,
.jodit-toolbar-select,
.jodit-ui-button {
color: var(--office-text);
svg,
.jodit-icon {
fill: var(--office-text);
}
&__text {
color: var(--office-text);
}
}
.jodit-toolbar-button:hover:not([disabled]),
.jodit-toolbar-select:hover:not([disabled]) {
border-color: var(--office-hover-border);
}
.jodit-toolbar-button:has(> [aria-pressed='true']:not([disabled])) {
border-color: var(--office-pressed-border);
}
.jodit-toolbar-button__button,
.jodit-toolbar-button__trigger,
.jodit-toolbar-select__button,
.jodit-toolbar-select__trigger,
.jodit-ui-button:not([class*='_variant_']),
.jodit-ui-button_variant_initial {
&:hover:not([disabled]),
&:focus-visible:not([disabled]) {
background: var(--office-hover);
}
&:active:not([disabled]),
&[aria-pressed='true']:not([disabled]) {
background: var(--office-pressed);
}
&[aria-pressed='true']:hover:not([disabled]) {
background: var(--office-pressed-hover);
}
}
.jodit-toolbar-button_with-trigger_true:hover:not([disabled]) {
.jodit-toolbar-button__trigger {
border-left: 1px solid var(--office-hover-border);
opacity: 1;
}
}
// Tabs (image and link popups): the active tab paints its label white in
// Jodit; keep the label transparent over the theme button background
.jodit-tabs .jodit-tabs__buttons .jodit-ui-button {
&:active:not([disabled]),
&[aria-pressed='true']:not([disabled]) {
.jodit-ui-button__text {
background: transparent;
}
}
}
// Dialog buttons: classic raised Windows 7 push buttons
.jodit-dialog__footer .jodit-ui-button,
.jodit-ui-button_variant_default,
.jodit-ui-button_variant_secondary,
.jodit-ui-button_variant_primary {
border: 1px solid #707070;
border-radius: 3px;
background: linear-gradient(#f2f2f2, #ebebeb 45%, #dddddd 50%, #cfcfcf);
color: #000;
svg {
fill: #000;
stroke: #000;
}
&:focus-visible:not([disabled]) {
background: linear-gradient(#f2f2f2, #ebebeb 45%, #dddddd 50%, #cfcfcf);
}
&:hover:not([disabled]) {
border-color: #3c7fb1;
background: linear-gradient(#eaf6fd, #d9f0fc 45%, #bee6fd 50%, #a7d9f5);
color: #000;
}
&:active:not([disabled]),
&[aria-pressed='true']:not([disabled]) {
border-color: #2c628b;
background: linear-gradient(#e5f4fc, #c4e5f6 45%, #98d1ef 50%, #68b3db);
color: #000;
}
}
.jodit-ui-button_variant_primary,
.jodit-dialog__footer .jodit-ui-button:focus:not([disabled]) {
box-shadow: inset 0 0 0 1px #48d8fb;
outline: 0;
}
// Editing surface
&.jodit-container {
border-color: var(--office-frame);
background-color: #fff;
}
&.jodit-container:not(.jodit_inline) .jodit-workplace {
border-color: #fff;
}
.jodit-wysiwyg,
.jodit-wysiwyg_iframe {
background-color: #fff;
}
// Status bar
.jodit-status-bar {
height: 22px;
background: var(--office-bar);
color: var(--office-title);
text-transform: none;
&:not(:empty) {
border-top-color: var(--office-frame);
}
&,
.jodit-status-bar__item,
.jodit-status-bar__item > span,
.jodit-status-bar__item a,
a.jodit-status-bar-link {
&,
&:hover,
&:visited {
color: var(--office-title);
}
}
.jodit-status-bar__item a:hover {
background: var(--office-hover);
}
}
// Popups and menus: white panel with a light frame and a soft drop shadow
.jodit-popup,
&.jodit-popup,
&.jodit-context-menu {
border: 1px solid #868686;
border-radius: 0;
box-shadow: 2px 2px 3px rgb(0 0 0 / 30%);
}
.jodit-popup__content,
&.jodit-popup .jodit-popup__content,
&.jodit-context-menu,
&.jodit-context-menu [class*='__content'] {
background: #fafafa;
}
.jodit-toolbar-collection_mode_vertical,
.jodit-toolbar-editor-collection_mode_vertical {
.jodit-toolbar-button__button:hover:not([disabled]) {
background: var(--office-hover);
}
}
// Form fields
.jodit-input,
.jodit-select,
.jodit-ui-input__wrapper,
.jodit-form input[type='text'],
.jodit-form input[type='url'],
.jodit-form textarea {
border-color: var(--office-input-border);
border-radius: 0;
background-color: #fff;
&:hover {
border-color: var(--office-input-focus);
}
&:focus {
border-color: var(--office-input-focus);
box-shadow: none;
outline: 0;
}
}
// Dialog window: blue title bar with a framed panel
&.jodit-dialog {
.jodit-dialog__panel {
border: 1px solid var(--office-frame);
border-radius: 4px;
background-color: #fff;
box-shadow: 0 4px 16px rgb(0 0 0 / 35%);
}
.jodit-dialog__header {
min-height: 34px;
border-bottom-color: var(--office-frame);
border-radius: 3px 3px 0 0;
background: var(--office-bar);
}
.jodit-dialog__header-title {
color: var(--office-title);
font-size: 14px;
font-weight: normal;
}
.jodit-dialog__footer {
border-top: 1px solid var(--office-line);
background: #f0f4fa;
}
}
}