ui-modules/blueprint-composer/app/components/designer/designer.less (238 lines of code) (raw):

/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ designer { // default duration @duration: 0.3s; // drop zone duration @duration-dropzone: 0.1s; @color-base: @gray-light; //#9FA5B4 @color-selected: @brand-primary; //#4A90E2; @color-dropzone-active: @brand-primary; // (was brand-success) @color-warning: @brand-warning; @color-error: @brand-danger; @color-relation: #ccc; @size-spinner: 100px; display: block; position: relative; svg { width: 100%; height: 100%; cursor: move; position: absolute; z-index: 1; #fill-has-issues { rect { fill: #fff; } path { fill-opacity: 0.5; } } @keyframes spinner { 0% { transform: rotate(0deg); stroke-dashoffset: (0.66 * @size-spinner); } 50% { transform: rotate(720deg); stroke-dashoffset: (3.14 * @size-spinner); } 100% { transform: rotate(1080deg); stroke-dashoffset: (0.66 * @size-spinner); } } .entity { fill: #fff; stroke: @color-base; stroke-width: 2px; cursor: pointer; transition: stroke @duration ease, stroke-width @duration ease, stroke-dasharray @duration ease, fill @duration ease; &.selected { stroke: @color-selected; stroke-width: 6px; stroke-alignment: inner; } &.drop-shadow { filter: drop-shadow(5px 5px 5px rgb(122, 122, 128)); } &.highlighted { stroke: lighten(@color-selected, 20%); stroke-width: 6px; stroke-alignment: inner; } &.has-warnings { fill: url(#fill-has-issues); stroke: @color-warning; stroke-dasharray: none; path { fill: @color-warning; } } &.has-errors { fill: url(#fill-has-issues); stroke: @color-error; stroke-dasharray: none; path { fill: @color-error; } } &.loading > circle { stroke-linecap: round; stroke-width: 2px; stroke-dasharray: (3.14 * @size-spinner); animation: spinner 2.5s linear infinite; transition: stroke @duration ease, stroke-width @duration ease, stroke-dasharray @duration ease, fill @duration ease; } } .node-group { .node { .node-name { fill: @color-base; font-size : 1.2em; text-anchor : middle; alignment-baseline: central; text-overflow: clip; stroke: none; } .node-location { fill: #fff; stroke: @color-base; stroke-width: 2px; } .node-cluster { transition: cx @duration ease, cy @duration ease; } .node-entity.clustered { .node-cluster-0 { cx: -10; cy: -10; transform-origin: -10px -10px; } .node-cluster-2 { cx: 10; cy: 10; transform-origin: 10px 10px; } .node-icon { x: -42; y: -42; } } } } .ghost-node-group { .ghost-node { .ghost { fill: transparent; } .buttons { opacity: 0; transition: transform @duration, opacity @duration; transform: translateY(-70px); &.active { transform: translateY(0); opacity: 1; } .connector { fill: darken(@color-base, 10%); } .button-add { cursor: pointer; fill: @brand-success; transition: fill @duration; &:hover { fill: darken(@brand-success, 10%); } } } } } .dropzone-group { opacity: 0; transition: opacity @duration-dropzone ease; .dropzone { fill: transparent; stroke: @gray-lighter; stroke-width: 3px; stroke-dasharray: 5; transition: stroke @duration-dropzone ease, stroke-dasharray @duration-dropzone ease; &.active { stroke: @color-dropzone-active; stroke-dasharray: 0; } } } &.is-dragging { .dropzone-group { opacity: 1; } .ghost-node .buttons.active { transform: translateY(-70px) !important; } } .spec-node-group { .node-memberspec-link { fill: @gray-lighter; } } line.link { stroke: @color-base; stroke-width: 2px; } line.attachment { stroke: @color-base; stroke-width: 6px; stroke-dasharray: 3 3; } .relation { fill: transparent; stroke: @color-relation; stroke-width: 4px; stroke-dasharray: 2 5; transition: stroke 0.3s ease, marker-end 0.3s ease, opacity 0.3s ease; marker-end: url(#arrowhead); opacity: 1; &.highlight { stroke: @brand-primary; marker-end: url(#arrowhead-highlight); } &.hidden { opacity: 0; } } .relation-text { fill: @color-relation; opacity: 1; &.highlight { fill: @brand-primary; } &.hidden { opacity: 0; } } .arrowhead { fill: @color-relation; } .arrowhead-highlight { fill: @brand-primary; } .annotation { padding: 2px 5px; border-radius: 4px; opacity: 0.8; overflow: scroll; display: flex; align-items: center; } .node-confirmation { padding: 10px; border-radius: 8px; //opacity: 0.8; width: inherit; align-items: center; background: lighten(@brand-primary, 50%); .node-confirmation-text { overflow: auto; // removes needless scrollbars width: 90%; } .node-confirmation-button { display: block; margin-top: 8px; } } } }