@ckeditor/ckeditor5-theme-lark
Version:
A bright theme for CKEditor 5.
128 lines (100 loc) • 4.63 kB
CSS
/*
* Copyright (c) 2003-2024, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
@import "@ckeditor/ckeditor5-ui/theme/mixins/_dir.css";
@import "../../../mixins/_rounded.css";
:root {
--ck-labeled-field-view-transition: .1s cubic-bezier(0, 0, 0.24, 0.95);
--ck-labeled-field-empty-unfocused-max-width: 100% - 2 * var(--ck-spacing-medium);
--ck-labeled-field-label-default-position-x: var(--ck-spacing-medium);
--ck-labeled-field-label-default-position-y: calc(0.6 * var(--ck-font-size-base));
--ck-color-labeled-field-label-background: var(--ck-color-base-background);
}
.ck.ck-labeled-field-view {
@mixin ck-rounded-corners;
& > .ck.ck-labeled-field-view__input-wrapper {
width: 100%;
& > .ck.ck-label {
top: 0px;
@mixin ck-dir ltr {
left: 0px;
transform-origin: 0 0;
/* By default, display the label scaled down above the field. */
transform: translate(var(--ck-spacing-medium), -6px) scale(.75);
}
@mixin ck-dir rtl {
right: 0px;
transform-origin: 100% 0;
transform: translate(calc(-1 * var(--ck-spacing-medium)), -6px) scale(.75);
}
pointer-events: none;
background: var(--ck-color-labeled-field-label-background);
padding: 0 calc(.5 * var(--ck-font-size-tiny));
line-height: initial;
font-weight: normal;
/* Prevent overflow when the label is longer than the input */
text-overflow: ellipsis;
overflow: hidden;
max-width: 100%;
transition:
transform var(--ck-labeled-field-view-transition),
padding var(--ck-labeled-field-view-transition),
background var(--ck-labeled-field-view-transition);
@media (prefers-reduced-motion: reduce) {
transition: none;
}
}
}
&.ck-error {
& > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
color: var(--ck-color-base-error);
}
& .ck-input:not([readonly]) + .ck.ck-label {
color: var(--ck-color-base-error);
}
}
& .ck-labeled-field-view__status {
font-size: var(--ck-font-size-small);
margin-top: var(--ck-spacing-small);
/* Let the info wrap to the next line to avoid stretching the layout horizontally.
The status could be very long. */
white-space: normal;
&.ck-labeled-field-view__status_error {
color: var(--ck-color-base-error);
}
}
/* Disabled fields and fields that have no focus should fade out. */
&.ck-disabled > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
color: var(--ck-color-input-disabled-text);
}
/* Fields that are disabled or not focused and without a placeholder should have full-sized labels. */
/* stylelint-disable-next-line no-descending-specificity */
&.ck-disabled.ck-labeled-field-view_empty:not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label,
&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder):not(.ck-error) > .ck.ck-labeled-field-view__input-wrapper > .ck.ck-label {
@mixin ck-dir ltr {
transform: translate(var(--ck-labeled-field-label-default-position-x), var(--ck-labeled-field-label-default-position-y)) scale(1);
}
@mixin ck-dir rtl {
transform: translate(calc(-1 * var(--ck-labeled-field-label-default-position-x)), var(--ck-labeled-field-label-default-position-y)) scale(1);
}
/* Compensate for the default translate position. */
max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width));
background: transparent;
padding: 0;
}
/*------ DropdownView integration ----------------------------------------------------------------------------------- */
/* Make sure dropdown' background color in any of dropdown's state does not collide with labeled field. */
& > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck.ck-button {
background: transparent;
}
/* When the dropdown is "empty", the labeled field label replaces its label. */
&.ck-labeled-field-view_empty > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown > .ck-button > .ck-button__label {
opacity: 0;
}
/* Make sure the label of the empty, unfocused input does not cover the dropdown arrow. */
&.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder) > .ck.ck-labeled-field-view__input-wrapper > .ck-dropdown + .ck-label {
max-width: calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard));
}
}