@ckeditor/ckeditor5-ai
Version:
AI features for CKEditor 5.
259 lines (216 loc) • 7.44 kB
CSS
/*
* What you're currently looking at is the source code of a legally protected, proprietary software.
* CKEditor 5 Collaboration is licensed under a commercial license and protected by copyright law. Where not otherwise indicated,
* all CKEditor 5 Collaboration content is authored by CKSource engineers and consists of CKSource-owned intellectual property.
*
* Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
:root {
/* Taken from old AI Assistant */
--ck-color-ai-selection: hsl(262.5, 60%, 90%);
/* Primary button */
--ck-ai-button-primary-color: hsla(0, 0%, 100%, 1);
--ck-ai-button-primary-disabled-color: hsla(0, 0%, 100%, 1);
--ck-ai-button-primary-background-color: hsla(263, 59%, 52%, 1);
--ck-ai-button-primary-disabled-background-color: hsla(263, 59%, 52%, 0.5);
--ck-ai-button-primary-hover-background-color: hsla(263, 59%, 40%, 1);
/* Secondary button */
--ck-ai-button-secondary-color: hsla(263, 59%, 52%, 1);
--ck-ai-button-secondary-disabled-color: hsla(263, 59%, 52%, 0.5);
--ck-ai-button-secondary-background-color: hsla(0, 0%, 100%, 1);
--ck-ai-button-secondary-disabled-background-color: hsla(0, 0%, 100%, 0.5);
--ck-ai-button-secondary-border-color: hsla(262, 51%, 80%, 1);
--ck-ai-button-secondary-disabled-border-color: hsla(262, 51%, 80%, 0.5);
--ck-ai-button-secondary-hover-background-color: hsla(262, 100%, 96%, 1);
--ck-ai-button-secondary-active-background-color: hsla(262, 100%, 96%, 1);
}
.ck.ai-balloon {
--ck-ai-balloon-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
--ck-ai-balloon-disclaimer-text-color: hsla(0, 0%, 44%, 1);
.ck-dialog__content {
/* Use min() to ensure the width is not greater than the dialog max width */
width: min(580px, var(--ck-dialog-max-width));
padding: var(--ck-spacing-large);
}
.ck-ai-suggestion__header {
display: none
}
.ck.ck-ai-balloon__toolbar {
border: none;
padding: 0;
margin-top: var(--ck-spacing-medium);
margin-bottom: 0;
.ck-button_with-text {
margin-bottom: 0;
margin-top: 0;
}
}
.ck-ai-balloon__disclaimer {
margin-top: var(--ck-spacing-medium);
.ck-ai-balloon__disclaimer-content {
color: var(--ck-ai-balloon-disclaimer-text-color);
font-size: 0.75em;
line-height: 1.025em;
text-align: left;
word-break: normal;
text-wrap: auto;
}
}
.ck-ai-suggestion__body {
height: 150px;
word-break: normal;
text-wrap: auto;
overflow-y: auto;
& pre>code {
white-space: pre-wrap;
}
.ck-suggestion-marker-insertion:not([data-author-id="$aiSuggestion"]),
.ck-suggestion-marker-formatInline:not([data-author-id="$aiSuggestion"]),
.ck-suggestion-marker-deletion:not([data-author-id="$aiSuggestion"]) {
border-top: 3px solid var(--ck-ai-suggestion-inactive-color-border);
border-bottom: 3px solid var(--ck-ai-suggestion-inactive-color-border);
background: var(--ck-ai-suggestion-inactive-color-background);
&.ck-widget {
border: 3px solid var(--ck-ai-suggestion-inactive-color-border);
}
}
.ck-suggestion-marker-formatBlock:not([data-author-id="$aiSuggestion"]) {
box-shadow: -7px 0 0 0 var(--ck-color-base-background), -10px 0 0 0 var(--ck-ai-suggestion-inactive-color-background);
}
.ck-suggestion-marker-deletion:not([data-author-id="$aiSuggestion"]) {
text-decoration: line-through;
text-decoration-thickness: 3px;
text-decoration-color: var(--ck-ai-suggestion-inactive-color-border);
}
.ck-suggestion-marker-insertion.table > tbody > tr > td {
background-color: var(--ck-color-suggestion-widget-insertion-background);
}
}
.ck-ai-suggestion__changes {
height: 150px;
overflow-y: auto;
}
* {
font-family: var(--ck-ai-balloon-font-family) ;
}
.ck-ai-suggestion__changes *,
.ck-ai-suggestion__body *,
.ck-ai-suggestion__change * {
white-space: normal;
line-height: 1.4em;
}
}
.ck.ai-balloon-rotator {
.ck.ck-form__header {
justify-content: center;
position: relative;
h2.ck.ck-form__header__label {
flex-grow: 0;
}
button.ck-button {
margin-right: var(--ck-spacing-large);
margin-left: var(--ck-spacing-large);
}
.ck-button:last-child {
position: absolute;
right: var(--ck-spacing-large);
}
}
&::after {
content: "";
position: absolute;
top: 8px;
left: 8px;
width: 100%;
height: 100%;
background: var(--ck-color-dialog-background);
z-index: -1;
border-radius: var(--ck-border-radius);
box-shadow: var(--ck-drop-shadow), 0 0;
border: 1px solid var(--ck-color-base-border);
}
}
/* Buttons styles will be removed after shared code is merged. */
.ck.ck-button {
&.ck-ai-button-primary {
color: var(--ck-ai-button-primary-color);
background-color: var(--ck-ai-button-primary-background-color);
border: none;
&:hover {
background-color: var(--ck-ai-button-primary-hover-background-color);
}
&:disabled {
color: var(--ck-ai-button-primary-disabled-color);
background-color: var(--ck-ai-button-primary-disabled-background-color);
}
}
&.ck-ai-button-secondary {
color: var(--ck-ai-button-secondary-color);
background-color: var(--ck-ai-button-secondary-background-color);
border: 1px solid var(--ck-ai-button-secondary-border-color);
&:hover {
background-color: var(--ck-ai-button-secondary-hover-background-color);
}
&:active,
&.ck-on {
background-color: var(--ck-ai-button-secondary-active-background-color);
}
&:disabled {
color: var(--ck-ai-button-secondary-disabled-color);
background-color: var(--ck-ai-button-secondary-disabled-background-color);
border: 1px solid var(--ck-ai-button-secondary-disabled-border-color);
}
}
}
.ck-ai-suggestion__container .ck.ck-ai-suggestion__loader {
padding: var(--ck-spacing-large) ;
height: 150px;
.ck.ck-spinner-container.ck-ai-spinner .ck-spinner {
--ck-ai-spinner-size: 18px;
}
.ck.ck-spinner-container.ck-ai-spinner.ck-ai-spinner_small {
--ck-ai-spinner-size: 18px;
}
.ck-ai-suggestion__loader-text {
margin-left: var(--ck-spacing-medium);
}
}
.ck-ai-suggestion__container .ck.ck-ai-suggestion__error {
padding: var(--ck-spacing-large) ;
height: 150px;
.ck-ai-suggestion__error-text {
background-color: hsla(15, 100%, 97%, 1);
border: 1px solid hsla(14, 100%, 68%, 1);
color: hsla(0, 0%, 20%, 1);
padding: var(--ck-spacing-medium);
display: block;
border-radius: var(--ck-border-radius);
}
}
.ck.ck-ai-suggestion__error.ai-balloon-error .ck-ai-suggestion__error-text {
--ck-border-radius: 4px;
margin-bottom: var(--ck-spacing-medium);
background-color: hsla(15, 100%, 97%, 1);
border: 1px solid hsla(14, 100%, 68%, 1);
color: hsla(0, 0%, 20%, 1);
padding: var(--ck-spacing-medium);
display: block;
border-radius: var(--ck-border-radius);
}
/*
* Classes used by the "fake visual selection" displayed in the content
* when the AI Balloon is open.
*
* Narrow down to <span> to prevent changing background for widgets and nested editables.
*/
.ck span.ck-fake-ai-selection {
background: var(--ck-color-ai-selection);
}
.ck .ck-widget.ck-fake-ai-selection {
outline-color: var(--ck-color-ai-selection);
}
.ck.ck-balloon-panel.ck-dropdown-menu__nested-menu__panel.ck-ai-quick-actions-group-panel {
/* Override the height of the panel because the default height adds 2px scrollbar. */
max-height: 316px;
}