315 lines
7.2 KiB
SCSS
315 lines
7.2 KiB
SCSS
.tiptap-button {
|
|
font-size: 0.875rem;
|
|
font-weight: 500;
|
|
font-feature-settings:
|
|
"salt" on,
|
|
"cv01" on;
|
|
line-height: 1.15;
|
|
height: 2rem;
|
|
min-width: 2rem;
|
|
border: none;
|
|
padding: 0.5rem;
|
|
gap: 0.25rem;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
border-radius: var(--tt-radius-lg, 0.75rem);
|
|
transition-property: background, color, opacity;
|
|
transition-duration: var(--tt-transition-duration-default);
|
|
transition-timing-function: var(--tt-transition-easing-default);
|
|
|
|
// focus-visible
|
|
&:focus-visible {
|
|
outline: none;
|
|
}
|
|
|
|
&[data-highlighted="true"],
|
|
&[data-focus-visible="true"] {
|
|
background-color: var(--tt-button-hover-bg-color);
|
|
color: var(--tt-button-hover-text-color);
|
|
// outline: 2px solid var(--tt-button-active-icon-color);
|
|
}
|
|
|
|
&[data-weight="small"] {
|
|
width: 1.5rem;
|
|
min-width: 1.5rem;
|
|
padding-right: 0;
|
|
padding-left: 0;
|
|
}
|
|
|
|
/* button size large */
|
|
&[data-size="large"] {
|
|
font-size: 0.9375rem;
|
|
height: 2.375rem;
|
|
min-width: 2.375rem;
|
|
padding: 0.625rem;
|
|
}
|
|
|
|
/* button size small */
|
|
&[data-size="small"] {
|
|
font-size: 0.75rem;
|
|
line-height: 1.2;
|
|
height: 1.5rem;
|
|
min-width: 1.5rem;
|
|
padding: 0.3125rem;
|
|
border-radius: var(--tt-radius-md, 0.5rem);
|
|
}
|
|
|
|
/* trim / expand text of the button */
|
|
.tiptap-button-text {
|
|
padding: 0 0.125rem;
|
|
flex-grow: 1;
|
|
text-align: left;
|
|
line-height: 1.5rem;
|
|
}
|
|
|
|
&[data-text-trim="on"] {
|
|
.tiptap-button-text {
|
|
text-overflow: ellipsis;
|
|
overflow: hidden;
|
|
}
|
|
}
|
|
|
|
/* global icon settings */
|
|
.tiptap-button-icon,
|
|
.tiptap-button-icon-sub,
|
|
.tiptap-button-dropdown-arrows,
|
|
.tiptap-button-dropdown-small {
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
/* standard icon, what is used */
|
|
.tiptap-button-icon {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
}
|
|
|
|
&[data-size="large"] .tiptap-button-icon {
|
|
width: 1.125rem;
|
|
height: 1.125rem;
|
|
}
|
|
|
|
&[data-size="small"] .tiptap-button-icon {
|
|
width: 0.875rem;
|
|
height: 0.875rem;
|
|
}
|
|
|
|
/* if 2 icons are used and this icon should be more subtle */
|
|
.tiptap-button-icon-sub {
|
|
width: 1rem;
|
|
height: 1rem;
|
|
}
|
|
|
|
&[data-size="large"] .tiptap-button-icon-sub {
|
|
width: 1.125rem;
|
|
height: 1.125rem;
|
|
}
|
|
|
|
&[data-size="small"] .tiptap-button-icon-sub {
|
|
width: 0.875rem;
|
|
height: 0.875rem;
|
|
}
|
|
|
|
/* dropdown menus or arrows that are slightly smaller */
|
|
.tiptap-button-dropdown-arrows {
|
|
width: 0.75rem;
|
|
height: 0.75rem;
|
|
}
|
|
|
|
&[data-size="large"] .tiptap-button-dropdown-arrows {
|
|
width: 0.875rem;
|
|
height: 0.875rem;
|
|
}
|
|
|
|
&[data-size="small"] .tiptap-button-dropdown-arrows {
|
|
width: 0.625rem;
|
|
height: 0.625rem;
|
|
}
|
|
|
|
/* dropdown menu for icon buttons only */
|
|
.tiptap-button-dropdown-small {
|
|
width: 0.625rem;
|
|
height: 0.625rem;
|
|
}
|
|
|
|
&[data-size="large"] .tiptap-button-dropdown-small {
|
|
width: 0.75rem;
|
|
height: 0.75rem;
|
|
}
|
|
|
|
&[data-size="small"] .tiptap-button-dropdown-small {
|
|
width: 0.5rem;
|
|
height: 0.5rem;
|
|
}
|
|
|
|
/* button only has icons */
|
|
&:has(> svg):not(:has(> :not(svg))) {
|
|
gap: 0.125rem;
|
|
|
|
&[data-size="large"],
|
|
&[data-size="small"] {
|
|
gap: 0.125rem;
|
|
}
|
|
}
|
|
|
|
/* button only has 2 icons and one of them is dropdown small */
|
|
&:has(> svg:nth-of-type(2)):has(> .tiptap-button-dropdown-small):not(
|
|
:has(> svg:nth-of-type(3))
|
|
):not(:has(> .tiptap-button-text)) {
|
|
gap: 0;
|
|
padding-right: 0.25rem;
|
|
|
|
&[data-size="large"] {
|
|
padding-right: 0.375rem;
|
|
}
|
|
|
|
&[data-size="small"] {
|
|
padding-right: 0.25rem;
|
|
}
|
|
}
|
|
|
|
/* Emoji is used in a button */
|
|
.tiptap-button-emoji {
|
|
width: 1rem;
|
|
display: flex;
|
|
justify-content: center;
|
|
}
|
|
|
|
&[data-size="large"] .tiptap-button-emoji {
|
|
width: 1.125rem;
|
|
}
|
|
|
|
&[data-size="small"] .tiptap-button-emoji {
|
|
width: 0.875rem;
|
|
}
|
|
}
|
|
|
|
/* --------------------------------------------
|
|
----------- BUTTON COLOR SETTINGS -------------
|
|
-------------------------------------------- */
|
|
|
|
.tiptap-button {
|
|
background-color: var(--tt-button-default-bg-color);
|
|
color: var(--tt-button-default-text-color);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-default-icon-color);
|
|
}
|
|
|
|
.tiptap-button-icon-sub {
|
|
color: var(--tt-button-default-icon-sub-color);
|
|
}
|
|
|
|
.tiptap-button-dropdown-arrows {
|
|
color: var(--tt-button-default-dropdown-arrows-color);
|
|
}
|
|
|
|
.tiptap-button-dropdown-small {
|
|
color: var(--tt-button-default-dropdown-arrows-color);
|
|
}
|
|
|
|
/* hover state of a button */
|
|
&:hover:not([data-active-item="true"]):not([disabled]),
|
|
&[data-active-item="true"]:not([disabled]),
|
|
&[data-highlighted]:not([disabled]):not([data-highlighted="false"]) {
|
|
background-color: var(--tt-button-hover-bg-color);
|
|
color: var(--tt-button-hover-text-color);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-hover-icon-color);
|
|
}
|
|
|
|
.tiptap-button-icon-sub {
|
|
color: var(--tt-button-hover-icon-sub-color);
|
|
}
|
|
|
|
.tiptap-button-dropdown-arrows,
|
|
.tiptap-button-dropdown-small {
|
|
color: var(--tt-button-hover-dropdown-arrows-color);
|
|
}
|
|
}
|
|
|
|
/* Active state of a button */
|
|
&[data-active-state="on"]:not([disabled]),
|
|
&[data-state="open"]:not([disabled]) {
|
|
background-color: var(--tt-button-active-bg-color);
|
|
color: var(--tt-button-active-text-color);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-active-icon-color);
|
|
}
|
|
|
|
.tiptap-button-icon-sub {
|
|
color: var(--tt-button-active-icon-sub-color);
|
|
}
|
|
|
|
.tiptap-button-dropdown-arrows,
|
|
.tiptap-button-dropdown-small {
|
|
color: var(--tt-button-active-dropdown-arrows-color);
|
|
}
|
|
|
|
&:hover {
|
|
background-color: var(--tt-button-active-hover-bg-color);
|
|
}
|
|
|
|
/* Emphasized */
|
|
&[data-appearance="emphasized"] {
|
|
background-color: var(--tt-button-active-bg-color-emphasized);
|
|
color: var(--tt-button-active-text-color-emphasized);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-active-icon-color-emphasized);
|
|
}
|
|
|
|
.tiptap-button-icon-sub {
|
|
color: var(--tt-button-active-icon-sub-color-emphasized);
|
|
}
|
|
|
|
.tiptap-button-dropdown-arrows,
|
|
.tiptap-button-dropdown-small {
|
|
color: var(--tt-button-active-dropdown-arrows-color-emphasized);
|
|
}
|
|
|
|
&:hover {
|
|
background-color: var(--tt-button-active-hover-bg-color-emphasized);
|
|
}
|
|
}
|
|
|
|
/* Subdued */
|
|
&[data-appearance="subdued"] {
|
|
background-color: var(--tt-button-active-bg-color-subdued);
|
|
color: var(--tt-button-active-text-color-subdued);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-active-icon-color-subdued);
|
|
}
|
|
|
|
.tiptap-button-icon-sub {
|
|
color: var(--tt-button-active-icon-sub-color-subdued);
|
|
}
|
|
|
|
.tiptap-button-dropdown-arrows,
|
|
.tiptap-button-dropdown-small {
|
|
color: var(--tt-button-active-dropdown-arrows-color-subdued);
|
|
}
|
|
|
|
&:hover {
|
|
background-color: var(--tt-button-active-hover-bg-color-subdued);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-active-icon-color-subdued);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
&:disabled {
|
|
background-color: var(--tt-button-disabled-bg-color);
|
|
color: var(--tt-button-disabled-text-color);
|
|
|
|
.tiptap-button-icon {
|
|
color: var(--tt-button-disabled-icon-color);
|
|
}
|
|
}
|
|
}
|