@silexlabs/grapesjs-data-source
Version:
Grapesjs Data Source
395 lines (390 loc) • 10.6 kB
text/typescript
/*
* Silex website builder, free/libre no-code tool for makers.
* Copyright (c) 2023 lexoyo and Silex Labs foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
export const OPTIONS_STYLES = `
form {
display: flex;
flex-direction: column;
align-items: stretch;
padding: 5px;
color: var(--ds-tertiary);
min-width: 300px;
}
form label {
text-align: left;
margin-top: 5px;
}
form .buttons {
display: flex;
justify-content: flex-end;
margin: 5px 0;
width: 100%;
}
form input {
padding: 4px;
background-color: transparent;
border-radius: 2px;
color: var(--ds-tertiary);
border: 1px solid var(--ds-tertiary);
}
form .buttons input {
margin-left: 5px;
cursor: pointer;
padding: 4px 10px;
background-color: var(--ds-button-bg);
}
form .buttons input[type="reset"] {
border-color: transparent;
}
form .buttons input:hover {
color: var(--ds-primary);
}
form input.ds-expression-input__fixed {
color: black;
}
`
export const PROPERTY_STYLES = `
:root {
--ds-primary: #8873FE;
--ds-secondary: #E5E5E5;
--ds-tertiary: #1D1D1D;
--ds-highlight: #8873FE;
--ds-lowlight: #252525;
--ds-button-color: #E5E5E5;
--ds-button-bg: #252525;
--ds-button-border: var(--ds-button-bg);
--expression-input-dirty-background-color: var(--ds-button-bg);
--expression-input-dirty-border-color: var(--ds-tertiary);
--expression-input-dirty-color: var(--ds-highlight);
--expression-input-active-color: var(--ds-tertiary);
--expression-input-active-background-color: var(--ds-secondary);
--popin-dialog-background: var(--ds-secondary);
--popin-dialog-color: var(--ds-tertiary);
--popin-dialog-header-background: transparent;
--popin-dialog-body-background: transparent;
--popin-dialog-footer-background: transparent;
--expression-input-placeholder-margin: 0 10px;
--expression-input-item-button-margin: 0;
--expression-input-item-button-padding: 2px;
--expression-input-item-button-border-radius: 50%;
--expression-input-item-button-width: 20px;
--expression-input-item-button-height: 20px;
--expression-input-item-button-background-color: transparent;
--expression-input-item-button-color: var(--ds-button-color);
--expression-input-separator-color: var(--ds-button-color);
--expression-input-separator-font-size: 0.7em;
--expression-input-separator-margin: 0;
--expression-input-separator-padding: 0 3px 0 1px;
--expression-input-item-arrow-padding: 5px 5px 0 5px;
--expression-input-values-li-icon-margin-right: 0;
/*
--popin-dialog-header-color: #333;
--popin-dialog-body-color: #666;
--popin-dialog-footer-color: #333;
--popin-dialog-header-border-bottom: none;
--popin-dialog-footer-border-top: none;
--popin-dialog-header-padding: 0;
--popin-dialog-body-padding: 5px;
--popin-dialog-footer-padding: 0;
*/
}
.ds-state-editor__options {
--ds-secondary: #252525;
--ds-tertiary: #E5E5E5;
--ds-lowlight: #333;
--ds-button-color: #E5E5E5;
--ds-button-bg: #1A1A1A;
--ds-button-border: #333;
--expression-input-dirty-background-color: var(--ds-button-bg);
--expression-input-dirty-border-color: #333;
--expression-input-dirty-color: var(--ds-highlight);
--expression-input-active-color: #1A1A1A;
--expression-input-active-background-color: var(--ds-highlight);
}
.gjs-traits-label {
font-family: inherit;
font-size: 0.65rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.05em;
padding: 8px 10px;
text-align: left;
display: flex;
justify-content: space-between;
align-items: center;
min-height: 30px;
border-bottom: 1px solid var(--ds-lowlight);
}
expression-input {
padding: 10px;
display: block;
}
expression-input::part(separator__delete) {
border-right: 1px solid var(--ds-button-border);
height: 20px;
}
expression-input::part(add-button) {
background-color: var(--ds-tertiary);
border-radius: 2px;
padding: 3px;
margin: 0;
border: 1px solid var(--ds-tertiary);
width: 24px;
height: 24px;
box-sizing: border-box;
cursor: pointer;
}
expression-input::part(delete-button) {
margin: 0;
padding: 0;
display: flex;
justify-content: center;
color: var(--ds-button);
}
expression-input::part(header) {
border: none;
}
expression-input::part(type) {
padding-bottom: 0;
padding-top: 4px;
display: none;
}
expression-input::part(name) {
font-weight: normal;
padding-bottom: 0;
padding-top: 0;
padding-left: 5px;
}
expression-input::part(property-input) {
padding: 4px;
border: medium;
flex: 1 1 auto;
background-color: transparent;
color: var(--ds-secondary);
}
expression-input::part(property-container) {
background-color: var(--ds-tertiary);
border-radius: 2px;
box-sizing: border-box;
padding: 5px;
margin: 5px 0;
border: 1px solid var(--silex-border-color-strong);
border-radius: 4px;
appearance: none;
padding: var(--gjs-input-padding);
margin: 2px;
background: var(--darkerPrimaryColor);
}
expression-input::part(scroll-container) {
overflow: auto;
box-sizing: border-box;
/* inner shadow to make it visible when content is overflowing */
box-shadow: inset 0 0 5px 0 rgba(0,0,0,.3);
}
expression-input::part(steps-container) {
display: flex;
align-items: center;
background-color: var(--ds-button-bg);
border-radius: 2px;
padding: 5px;
margin: 5px 0;
width: max-content;
min-width: 100%;
box-sizing: border-box;
}
expression-input::part(dirty-icon) {
cursor: pointer;
margin: 0 10px;
color: var(--ds-highlight);
}
expression-input::part(dirty-icon) {
color: var(--ds-highlight);
vertical-align: bottom;
display: inline-flex;
margin: 0;
margin-left: 20px;
}
expression-input::part(expression-input-item) {
border: 1px solid var(--ds-tertiary);
background-color: var(--ds-tertiary);
border-radius: 2px;
margin-right: 5px;
}
.ds-section {
&:last-child {
margin-bottom: 100px;
}
details {
margin: 2px;
padding: 2px;
background-color: transparent;
border-radius: 2px;
color: var(--ds-secondary);
text-align: left;
}
details[open] {
background-color: var(--ds-tertiary);
}
details summary {
color: var(--ds-secondary);
cursor: pointer;
padding: 10px 0;
}
details a {
color: var(--ds-link-color);
}
details .ds-states__help-link {
display: block;
}
details .ds-states__help--tooltip {
position: absolute;
left: 50%;
background: var(--ds-secondary);
color: var(--ds-tertiary);
padding: 10px;
}
.gjs-traits-label {
background-color: var(--ds-tertiary);
span {
display: flex;
align-items: center;
}
}
main {
display: flex;
flex-direction: column;
}
.ds-slot-fixed {
width: 100%;
}
select {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
width: 150px;
flex: 0;
margin: 5px;
padding: 5px;
background-color: var(--ds-button-bg);
border-radius: 2px;
color: var(--ds-secondary);
border: 1px solid var(--ds-tertiary);
cursor: pointer;
font-size: medium;
}
input.ds-expression-input__fixed {
color: var(--ds-secondary);
width: 98%;
box-sizing: border-box;
border-radius: 4px;
appearance: none;
padding: 10px var(--gjs-input-padding);
margin: 2px;
background: var(--darkerPrimaryColor);
}
.ds-expression-input__add {
max-width: 40px;
text-align: center;
font-size: large;
padding-right: 9px;
-webkit-appearance: none;
-moz-appearance: none;
text-indent: 1px;
text-overflow: '';
margin-right: 150px;
}
.ds-expression-input__add {
option {
font-size: medium;
}
optgroup option {
/* all options but the "+" */
text-align: left;
}
}
.ds-expression-input__options-button {
background-color: transparent;
border: none;
color: var(--ds-secondary);
cursor: pointer;
padding: 0;
margin: 10px;
margin-left: 0;
}
label.ds-label {
display: flex;
align-items: center;
padding: 10px;
color: var(--ds-secondary);
}
label.ds-label--disabled {
justify-content: space-between;
}
label.ds-label--disabled .ds-label__message {
opacity: .5;
}
select.ds-visibility__condition-operator {
margin: 10px;
}
}
/* States CSS Styles */
.ds-states {
display: flex;
flex-direction: column;
}
.ds-states__buttons {
display: flex;
flex-direction: row;
justify-content: flex-end;
margin: 0 5px;
}
.ds-states__button {
cursor: pointer;
border: 1px solid var(--ds-button-border);
border-radius: 2px;
padding: 5px;
background: var(--ds-button-bg);
color: var(--ds-button-color);
margin: 5px;
padding: 7px 14px;
}
.ds-states__button--disabled {
opacity: 0.5;
cursor: default;
}
.ds-states__remove-button {
margin-left: 1em;
}
.ds-states__sep {
width: 100%;
border: none;
height: 1px;
background: var(--ds-button-bg);
}
/* real data */
.ds-real-data {
code {
overflow: hidden;
text-wrap: nowrap;
display: block;
padding: 0 10px;
text-overflow: ellipsis;
margin-top: -5px;
margin-bottom: 10px;
text-align: right;
}
}
`