/*//////////////////////////////////////////////////////////////////////////////////////*/ /* _ _ ____ _ _ ___ ____ */ /* |_/ |__| |\ | | \ | | This file belongs to Kando, the cross-platform */ /* | \_ | | | \| |__/ |__| pie menu. Read more on github.com/kando-menu/kando */ /* */ /*//////////////////////////////////////////////////////////////////////////////////////*/ /* SPDX-FileCopyrightText: EVNTech Vache */ /* SPDX-License-Identifier: CC0-1.0 */ .menu-node { --child-distance: 90px; --grandchild-distance: 25px; --grandchild-size: 16px; --center-size: 80px; --icon-size: 40px; --connector-width: 10px; --menu-transition: transform 200ms ease, opacity 200ms ease; --connector-transition: width 200ms ease, opacity 200ms ease; transition: var(--menu-transition); /* Positioning ---------------------------------------------------------------------- */ /* Child items are positioned around the active node. */ &.child.type-submenu { transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)), calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))); } &.child:not(.type-submenu) { transform: translate(calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-x)), calc(max(var(--child-distance), 10px * var(--sibling-count)) * var(--dir-y))) !important; } /* Grandchild items are positioned around the child items. */ &.grandchild { transform: translate(calc(var(--grandchild-distance) * var(--dir-x)), calc(var(--grandchild-distance) * var(--dir-y))); } /* Theme Layers --------------------------------------------------------------------- */ /* We hide all icons by default. They will be shown further down in this file for the the child items. */ .icon-container { position: relative; top: 0px; left: 0; width: 100%; opacity: 90%; clip-path: circle(45% at 50% 50%); transition: var(--menu-transition); color: var(--accent-color); } .label-layer, .icon-layer { position: absolute; transition: var(--menu-transition); } .label-layer { transform: translate(calc(45px * var(--dir-x)), calc(45px * var(--dir-y))); opacity: 0; background-color: var(--label-background-color); color: var(--text-color); border: 1px solid var(--border-color); white-space: nowrap; height: var(--icon-size); border-radius: var(--icon-size); top: calc(-1 * var(--icon-size) / 2); padding: calc(var(--icon-size) / 5) calc(var(--icon-size) / 3); font-size: calc(var(--icon-size) / 2.7); } /* The active menu item is the center of the menu. */ &.child>.label-layer { box-shadow: 0 0 2px rgba(0, 0, 0, 0.6); opacity: 1; } &.hovered>.label-layer { color: var(--hover-color); border-color: var(--hover-color); box-shadow: 0 0 10px var(--hover-color); } &.right>.label-layer { left: calc(-1 * var(--icon-size)/2); } &.left>.label-layer { right: calc(-1 * var(--icon-size)/2); } &.top>.label-layer { bottom: calc(0.4 * var(--icon-size)); top: inherit; transform: translate(-50%, -10px); } &.bottom>.label-layer { top: calc(0.4 * var(--icon-size)); transform: translate(-50%, 10px); } .icon-layer { top: calc(-1 * var(--icon-size) / 2); left: calc(-1 * var(--icon-size) / 2); width: var(--icon-size); height: var(--icon-size); border-radius: 50%; box-shadow: 0px 0 3px rgba(0, 0, 0, 0.6); background-color: var(--circle-color); z-index: 1; } &.active>.icon-layer { top: calc(-1 * var(--center-size) / 2); left: calc(-1 * var(--center-size) / 2); width: var(--center-size); height: var(--center-size); } &.grandchild>.icon-layer { top: calc(-1 * var(--grandchild-size) / 2); left: calc(-1 * var(--grandchild-size) / 2); width: var(--grandchild-size); height: var(--grandchild-size); box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.6); opacity: 90%; background-color: var(--border-color); } /* Show the icons of the parent and child items. */ &.parent>.icon-layer>.icon-container, &.child>.icon-layer>.icon-container { opacity: 1; } /* We disable any transition for dragged submenu items. */ &.dragged.type-submenu { transition: none; } /* Connectors ----------------------------------------------------------------------- */ .connector { transition: var(--connector-transition); height: var(--connector-width); top: calc(-1 * var(--connector-width) / 2); background-color: var(--connector-color); opacity: 0; box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); } &:has(>.dragged)>.connector, &:has(>.clicked)>.connector { transition: none; } &:has(>.parent)>.connector, &:has(>.active.type-submenu)>.connector, &:has(>.dragged.type-submenu)>.connector { opacity: 1; } } /* Center Text ------------------------------------------------------------------------ */ .center-text { display: none; }