nitropage
Version:
A free and open source, extensible visual page builder based on SolidStart.
159 lines (141 loc) • 4.01 kB
CSS
.np-slot-expand [data-slot] {
gap: 0px ;
}
.np-elements-interact [data-element] {
pointer-events: auto ;
}
[data-slot][data-element-preview],
.np-slot-expand [data-slot][data-slot-accepting]:empty {
overflow: hidden;
min-width: calc(6rem / var(--zoom));
position: relative;
border-radius: calc(2px / var(--zoom));
box-shadow:
0 0 0 calc(2px / var(--zoom)) var(--np-accent-600),
0 0 0 calc(3px / var(--zoom)) var(--np-accent-300),
0 0 0 calc(4px / var(--zoom)) var(--np-accent-600);
}
[data-slot][data-element-preview]::before,
.np-slot-expand [data-slot][data-slot-accepting]:empty::before {
font-family: var(--np-font-sans);
position: absolute;
z-index: 1;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
background-color: var(--np-accent-600);
box-shadow: 0 0 10px #0003;
top: 0px;
right: 0;
text-align: center;
content: attr(data-slot-title);
pointer-events: none ;
font-size: calc(0.75rem / var(--zoom));
line-height: 1;
font-weight: 600;
cursor: default;
color: white;
border-bottom-left-radius: calc(0.375rem / var(--zoom));
padding: calc(0.125rem / var(--zoom)) calc(1px / var(--zoom))
calc(0.125rem / var(--zoom)) calc(4px / var(--zoom));
}
.np-expand,
[data-slot] {
transition-property: padding, gap;
transition-duration: 80ms;
transition-timing-function: var(--np-ease-in-out-cubic);
}
.np-expand,
[data-slot][data-expand] {
padding-top: 0;
padding-bottom: 0;
}
.np-slot-expand .np-expand,
[data-slot][data-expand][data-element-preview],
.np-slot-expand [data-slot][data-expand] {
padding-top: calc(1rem / var(--zoom));
padding-bottom: calc(1rem / var(--zoom));
}
.np-root [data-slot][data-element-id="root"]:empty {
margin: calc(1rem / var(--zoom));
}
.np-dragging {
cursor: grabbing;
}
.np-drag-card.np-create-card {
opacity: 1 ;
transition-property: none ;
visibility: visible;
}
/* Scale is not working with sortablejs: https://github.com/SortableJS/Sortable/issues/1953 */
/* If scale would work, then the real element could be shown scaled down, while being dragged */
.np-drag-card[data-element] {
min-height: calc(3rem / var(--zoom)) ;
max-height: calc(5rem / var(--zoom)) ;
overflow: hidden;
position: relative;
transition: none;
opacity: 0.2 ;
}
.np-drag-card[data-element]::before {
content: "";
position: absolute;
z-index: 1;
inset: 0;
border-radius: calc(4px / var(--zoom));
box-shadow:
inset 0 0 0 calc(2px / var(--zoom)) var(--np-accent-100),
inset 0 0 0 calc(4px / var(--zoom)) var(--np-accent-900);
}
.np-drag-card[data-element] > * {
filter: blur(3px);
transition: none;
transform: none ;
}
div.np-ghost-card {
position: relative;
z-index: 9999;
width: 100%;
padding: 0 ;
margin: 0 ;
height: 0px ;
overflow: visible ;
min-width: calc(6rem / var(--zoom));
opacity: 1 ;
visibility: visible;
}
.np-ghost-card[data-element] {
background-image: none ;
min-height: 0 ;
background-color: transparent;
border-width: 0px;
color: transparent;
}
.np-ghost-card[data-element] * {
display: none ;
}
.np-ghost-card::before {
position: absolute;
z-index: 9999;
left: 0;
width: 100%;
height: calc(1px / var(--zoom));
content: "";
animation: npPulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
background-color: var(--np-accent-600);
border-radius: calc(2px / var(--zoom));
box-shadow:
0 0 0 calc(1px / var(--zoom)) var(--np-accent-200),
0 0 0 calc(2px / var(--zoom)) var(--np-accent-600);
}
[data-slot-direction="horizontal"] > div.np-ghost-card:not(:only-child) {
align-self: stretch;
flex-grow: 0;
width: 0 ;
min-width: unset;
height: auto ;
}
[data-slot-direction="horizontal"] > .np-ghost-card:not(:only-child)::before {
height: 100%;
width: calc(1px / var(--zoom));
}