UNPKG

rhino-editor

Version:

A custom element wrapped rich text editor

327 lines (280 loc) 8.47 kB
// src/exports/styles/editor.js import { css } from "lit"; var hostStyles = css` :host, .trix-content { /* General tokens */ --rhino-focus-ring: 0px 0px 1px 1px var(--rhino-button-active-border-color); --rhino-border-radius: 4px; --rhino-danger-border-color: red; --rhino-danger-background-color: #ffdddd; /* Editor tokens */ --rhino-text-color: #374151; --rhino-dark-text-color: white; --rhino-border-color: #cecece; --rhino-placeholder-text-color: #cecece; --rhino-dark-placeholder-text-color: gray; /* Regular buttons */ --rhino-button-text-color: #889; --rhino-button-dark-text-color: #eee; --rhino-button-border-color: #cecece; /** Disabled Buttons */ --rhino-button-disabled-text-color: #d1d5db; --rhino-button-disabled-border-color: #d1d5db; --rhino-button-disabled-background-color: #d1d5db; /** Active buttons */ --rhino-button-active-border-color: #005a9c; --rhino-button-active-background-color: rgb(226 239 255); --rhino-toolbar-text-color: hsl(219, 6%, 43%); --rhino-toolbar-icon-size: 1em; --rhino-dialog-border-color: hsl( var(--rhino-button-focus-background-color-hsl) / 50% ); /** Focus buttons */ --rhino-button-focus-background-color: hsl( var(--rhino-button-focus-background-color-hsl) ); --rhino-button-focus-background-color-hsl: 219 26% 95%; /** * Override "--rhino-fake-selection-color" to change the color of .rhino-selection when the editor is not focused. */ --rhino-fake-selection-color: rgb(220, 220, 220); display: block; color: var(--rhino-text-color); color: light-dark(var(--rhino-text-color), var(--rhino-dark-text-color)); } `; var cursorStyles = css` /** * Cursor styles that are useful for providing a more "pleasant" editor experience. */ /** * https://github.com/curvenote/editor/blob/main/packages/prosemirror-codemark/src/codemark.css */ @keyframes rhino-blink { 49% { border-color: unset; } 50% { border-color: Canvas; } 99% { border-color: Canvas; } } .rhino-editor .no-cursor { caret-color: transparent; } :where(.rhino-editor) .fake-cursor { margin: 0; padding: 0; margin-right: -1px; border-left-width: 1px; border-left-style: solid; animation: rhino-blink 1s; animation-iteration-count: infinite; position: relative; z-index: 1; } /** This is for actual "selection" which are highlighting more than 1 character. */ :where(.rhino-editor .ProseMirror):not(:focus-within) .rhino-selection { background: var(--rhino-fake-selection-color); } .ProseMirror-separator { display: none !important; } `; var toolbarButtonStyles = css` .rhino-toolbar-button { appearance: none; -webkit-appearance: none; border: 1px solid var(--rhino-border-color); border-radius: var(--rhino-border-radius); padding: 0.4em; color: var(--rhino-button-text-color); color: light-dark( var(--rhino-button-text-color), var(--rhino-button-dark-text-color) ); background: Canvas; font-size: inherit; display: inline-grid; } .rhino-toolbar-button:is([aria-disabled="true"], :disabled) { color: var(--rhino-button-disabled-text-color); border-color: var(--rhino-button-disabled-border-color); } .rhino-toolbar-button[aria-disabled="true"]:focus { border-color: var(--rhino-button-disabled-border-color); } .rhino-toolbar-button svg { min-height: var(--rhino-toolbar-icon-size); min-width: var(--rhino-toolbar-icon-size); /* max-height / max-width needs to be set for safari */ max-height: var(--rhino-toolbar-icon-size); max-width: var(--rhino-toolbar-icon-size); } .rhino-toolbar-button:is(:focus, :hover):not( [aria-disabled="true"], :disabled ) { outline: transparent; border-color: var(--rhino-button-active-border-color); } .rhino-toolbar-button:is(:focus):not([aria-disabled="true"], :disabled) { box-shadow: var(--rhino-focus-ring); } /* Only change the background color in certain scenarios */ .rhino-toolbar-button:is(:hover):not( [aria-disabled="true"], :disabled, [aria-pressed="true"], [part~="toolbar__button--active"] ) { background-color: var(--rhino-button-focus-background-color); background-color: light-dark( var(--rhino-button-focus-background-color), gray ); } .rhino-toolbar-button:is([aria-disabled="true"], :disabled):not( [part~="toolbar__button--active"] ) { color: var(--rhino-button-disabled-text-color); color: light-dark(var(--rhino-button-disabled-text-color), gray); border-color: var(--rhino-button-disabled-border-color); } .rhino-toolbar-button:is(:focus, :hover):is( [aria-disabled="true"], :disabled ):not([part~="toolbar__button--active"]) { outline: transparent; color: var(--rhino-button-disabled-text-color); color: light-dark(var(--rhino-button-disabled-text-color), gray); border-color: var(--rhino-button-disabled-border-color); box-shadow: 0 0 0 1px var(--rhino-button-disabled-border-color); box-shadow: 0 0 0 1px light-dark(var(--rhino-button-disabled-border-color), transparent); } `; var editor_default = css` ${hostStyles} [part~="toolbar"] { color: var(--rhino-toolbar-text-color); } [part~="toolbar"]::part(base) { border-color: var(--rhino-border-color); border-bottom-color: transparent; border-width: 1px; border-radius: 4px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; display: flex; align-items: center; overflow: auto; } [part~="toolbar"][part~="bubble-menu__toolbar"]::part(base) { border: 1px solid var(--rhino-border-color); border-radius: 4px; padding: 4px; background: Canvas; } [part~="toolbar"]::part(base):is(:focus-visible, :focus-within) { border-color: var(--rhino-button-active-border-color); outline: transparent; } .rhino-toolbar-button[part~="toolbar__button--active"], .rhino-toolbar-button[part~="toolbar__button--active"]:is( :hover, :focus-within ) { background-color: var(--rhino-button-active-background-color); } slot[name="toolbar"] :is( [part~="toolbar__button--link"], [part~="toolbar__button--increase-indentation"] ) { margin-inline-end: 1rem; } [part~="toolbar__button--attach-files"] { margin-inline-end: auto; } role-anchored-region { font-size: 0.8em; --background: transparent; --border-color: transparent; } role-anchored-region::part(popover) { border: none; } .link-dialog__container { display: flex; align-items: center; max-width: 600px; border: 1px solid gray; padding: 0.4em; background: Canvas; border-radius: 8px; } .link-dialog__input { border: 1px solid var(--rhino-border-color); border-radius: var(--rhino-border-radius); padding: 0.4em 0.6em; flex: 1 1 auto; } .link-dialog__input:is(:focus) { outline: transparent; border-color: var(--rhino-button-active-border-color); } .link-validate:invalid { outline: transparent; background-color: var(--rhino-danger-background-color); border-color: var(--rhino-danger-border-color); box-shadow: none; } .rhino-toolbar-button.link-dialog__button { padding: 0.4em 0.6em; border: 1px solid var(--rhino-button-border-color); border-radius: var(--rhino-border-radius); } .link-dialog__buttons { margin-inline-start: 0.5em; } .editor-wrapper { position: relative; } .trix-content { border: 1px solid var(--rhino-border-color); border-radius: 0px 0px var(--rhino-border-radius) var(--rhino-border-radius); margin: 0; padding: 0.4em 0.6em; min-height: 200px; outline: transparent; white-space: pre-wrap; } role-tooltip { position: fixed; top: 0; left: 0; font-size: 0.75em; --background: CanvasText; color: Canvas; --border-color: CanvasText; } role-tooltip::part(popover) { padding: 0.4em 0.6em; } svg, ::slotted(svg) { height: var(--rhino-toolbar-icon-size); width: var(--rhino-toolbar-icon-size); } `; export { hostStyles, cursorStyles, toolbarButtonStyles, editor_default }; //# sourceMappingURL=chunk-Y7ECDMDC.js.map