UNPKG

@scidian/osui

Version:

Lightweight JavaScript UI library.

345 lines (299 loc) 9.93 kB
/********** Menu Show (Show menu that was previously hidden) **********/ .osui-menu.osui-menu-show { pointer-events: auto; opacity: 1.0; transform: translate(0, 0) scale(1.0, 1.0); } .osui-menu.osui-menu-show.osui-menu-under { left: 50%; top: 100%; transform: translate(-50%, 0) scale(1.0, 1.0); } /********** Menu **********/ /* Normal Menu Styling */ .osui-menu { position: absolute; display: block; align-items: center; justify-content: center; color: rgba(var(--text), 1.0); background-color: rgba(var(--background-light), 1); box-shadow: inset 0px 1px 2px 0px rgba(var(--midlight), 1.0), -2px 2px 2px 0px rgba(var(--shadow), 0.5), 2px 0px 2px 0px rgba(var(--shadow), 0.5); /* border: 1px solid rgba(var(--shadow), 1.0); */ border: 2px solid rgba(var(--icon), 1.0); border-radius: var(--radius-large); /* outline: 1px solid rgba(var(--background-light), calc(var(--panel-transparency) * 0.5)); */ outline: none; min-width: 1.0em; z-index: 1000; /* Menu */ opacity: 0; padding: var(--pad-x-small); margin: 0; pointer-events: none; transform: translate(0, 0) scale(1.0, 0.0); /* To enable menu transitions use menu timing variable */ transition: all 0s; /* var(--menu-timing) */ } .osui-border-icon { border: 2px solid rgba(var(--complement), 1.0); } .osui-menu-under { transition: opacity 0.2s ease-in-out; } .osui-menu:not(.osui-menu-show).osui-slide-down { transform: translate(0, -50%) scale(1.0, 0.0); } .osui-menu:not(.osui-menu-show).osui-slide-up { transform: translate(0, 50%) scale(1.0, 0.0); } /* Dropdown Menu Styling */ .osui-select-menu, .osui-popup-menu { box-shadow: none; color: rgba(var(--highlight), 1); background: rgba(var(--darklight), 1); border: 1px solid rgb(var(--icon)); border-radius: 0px; outline: 2px solid rgb(var(--darklight)); z-index: 1000; /* Select Menu */ } /* Menu Item */ .osui-menu-item { position: relative; display: block; color: rgba(var(--text), 1); cursor: pointer; border: 1px solid transparent; border-radius: calc(var(--radius-small) * 0.75); margin: var(--pad-x-small); white-space: nowrap; } /* Hover Item */ .osui-menu:not(.osui-invisible-menu) .osui-menu-item:not(.osui-disabled):hover { color: rgba(var(--highlight), 1); background-color: rgba(var(--icon-light), 0.1); border: 1px solid rgba(var(--icon-light), 0.3); border-radius: calc(var(--radius-small) * 0.75); } /* Image */ .osui-menu-icon { --menu-icon-size: 1.45em; position: relative; flex: 0 0 auto; height: var(--menu-icon-size); width: var(--menu-icon-size); filter: var(--drop-shadow); overflow: hidden; } /* Text */ .osui-menu-text { user-select: none; margin-left: 7px; overflow: hidden; text-overflow: ellipsis; } /* Shortcut Key */ .osui-menu-shortcut { /* System Font Info: https://stackoverflow.com/questions/32660748/how-to-use-apples-new-san-francisco-font-on-a-webpage https://furbo.org/2018/03/28/system-fonts-in-css/ https://css-tricks.com/snippets/css/system-font-stack/ */ display: flex; filter: contrast(75%) grayscale(100%); font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; opacity: 0.5; padding-left: 2.0em; } .osui-menu-shortcut-character { /* background-color: blueviolet; */ /* border: solid 1px; */ text-align: center; margin: auto; } /* Separator */ .osui-menu-separator { pointer-events: none; border-top: 1px solid rgba(var(--midlight), 0.5); border-radius: 1px; height: 1px; margin: var(--pad-medium) var(--pad-large); } /* Little Arrow */ .osui-menu:not(.osui-invisible-menu) .osui-sub-menu-item::after { content: ''; position: absolute; right: 0.50em; top: 50%; transform: translateY(-50%); border: var(--arrow-size) solid transparent; border-left-color: rgba(var(--text), 1.0); } .osui-menu:not(.osui-invisible-menu) .osui-sub-menu-item:hover::after { border-left-color: rgba(var(--highlight), 1.0); } /* Sub Menu */ .osui-menu-item .osui-menu { top: 0px; left: 101%; } /* Sub Menu Mouse Triangle */ .osui-menu-mouse-triangle { position: absolute; } /***** Invisible Hover Menu *****/ .osui-invisible-menu, .osui-invisible-menu-item { color: transparent; background-color: transparent; box-shadow: none; border: none; left: 0; top: 0; width: 100%; height: 100%; padding: 0; } .osui-invisible-menu-item { margin: 0; } /************ Toolbar Button **********/ .osui-toolbar-button { display: flex; cursor: pointer; background-color: transparent; border: none; border-radius: var(--radius-large); outline: none; /* for macos */ position: relative; height: var(--button-size); width: var(--button-size); min-height: var(--button-size); min-width: var(--button-size); margin-left: var(--pad-x-small); margin-right: var(--pad-x-small); opacity: 1.0; overflow: hidden; } /* Background */ .osui-button-background { pointer-events: none; position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: 0; background-color: rgb(var(--darkness)); background-image: linear-gradient(to bottom, rgba(var(--icon-light), 0.6), rgba(var(--icon), 0.6)); border-radius: var(--radius-large); border: none; outline: none; /* for macos */ box-shadow: /* pop-out-shadow */ inset var(--minus) var(--pixel) var(--pixel) rgba(var(--white), 0.25), inset var(--pixel) var(--minus) var(--pixel) rgba(var(--black), 0.25); z-index: -1; } /* Hover */ .osui-toolbar-button:not(.osui-selected):enabled:hover .osui-button-background { filter: brightness(125%); box-shadow: /* pop-out-shadow */ inset var(--pixel) 0 var(--pixel) 0 rgba(var(--black), 0.25), inset var(--minus) 0 var(--pixel) 0 rgba(var(--black), 0.25), inset var(--minus) var(--pixel) var(--pixel) var(--pixel) rgba(var(--white), 0.15), inset var(--pixel) var(--minus) var(--pixel) var(--pixel) rgba(var(--black), 0.15); } /* Active / Selected */ .osui-toolbar-button:not(.osui-selected):enabled:active, .osui-toolbar-button.osui-selected:enabled { box-shadow: inset var(--minus) var(--pixel) var(--pad-small) rgba(0, 0, 0, 0.5); /* sunk-in-shadow */ } .osui-toolbar-button:not(.osui-selected):enabled:active .osui-button-background, .osui-toolbar-button.osui-selected:enabled .osui-button-background { filter: brightness(50%) grayscale(20%); } /* Hover Active */ .osui-hover-active:hover, .osui-hover-active:active { box-shadow: inset var(--minus) var(--pixel) var(--pad-small) rgba(0, 0, 0, 0.5) !important; /* sunk-in-shadow */ } .osui-hover-active:hover .osui-button-background, .osui-hover-active:active .osui-button-background { filter: brightness(50%) grayscale(20%) !important; } /* Gray Background */ .osui-gray-button:enabled .osui-button-background { filter: grayscale(90%); } .osui-gray-button:not(.osui-selected):enabled:hover .osui-button-background { filter: brightness(125%) grayscale(90%); } .osui-gray-button:not(.osui-selected):enabled:active .osui-button-background, .osui-gray-button.osui-selected:enabled .osui-button-background { filter: brightness(50%) grayscale(90%); } /* Complement Background */ .osui-complement-button:enabled .osui-button-background { background-color: rgb(var(--darkness)); background-image: linear-gradient(to bottom, rgba(var(--complement), 0.9), rgba(var(--complement), 0.65)); } /* Disabled Button */ .osui-toolbar-button:disabled { background-color: rgba(var(--button-dark), var(--panel-transparency)); background-image: linear-gradient(to right, rgba(var(--complement), 0.05), rgba(var(--complement), 0.05)); box-shadow: none; } .osui-toolbar-button:disabled { filter: none; } .osui-toolbar-button:disabled > * { filter: contrast(75%) grayscale(100%) brightness(50%); } /* Left / Middle / Right */ .osui-button-left, .osui-button-left .osui-button-background { border-top-right-radius: 0; border-bottom-right-radius: 0; margin-right: 0; } .osui-button-middle, .osui-button-middle .osui-button-background { border-radius: 0; margin-right: 0; margin-left: 0; } .osui-button-right, .osui-button-right .osui-button-background { border-top-left-radius: 0; border-bottom-left-radius: 0; margin-left: 0; } .osui-button-left .osui-button-background { box-shadow: /* pop-out-shadow */ inset 0 var(--pixel) rgba(var(--white), 0.25), inset var(--pixel) var(--minus) var(--pixel) rgba(var(--black), 0.25); } .osui-button-middle .osui-button-background { box-shadow: /* pop-out-shadow */ inset 0 var(--pixel) rgba(var(--white), 0.25), inset 0 var(--minus) rgba(var(--black), 0.25); } .osui-button-right .osui-button-background { box-shadow: /* pop-out-shadow */ inset var(--minus) var(--pixel) var(--pixel) rgba(var(--white), 0.25), inset 0 var(--minus) rgba(var(--black), 0.25); } /********** Toolbar Separator / Toolbar Spacer **********/ .osui-toolbar-separator { border-left: solid var(--border-micro) rgba(var(--shadow), 0.50); border-right: solid var(--border-micro) rgba(var(--shadow), 0.15); border-top: 0; border-bottom: 0; width: var(--pad-micro); height: calc(var(--button-size) - 1.25ch); margin-left: var(--pad-medium); margin-right: var(--pad-medium); margin-top: var(--pad-small); } .osui-toolbar-spacer { pointer-events: none; border: none; margin: none; width: 1em; height: var(--button-size); }