UNPKG

soft-components

Version:

Simple soft flexible set of web components

154 lines 8.91 kB
sc-toggle { /** @prop --sc-toggle-bg-color: Default background color in the toggle slide area - default: var(--sc-bg-color, #eee) */ --sc-toggle-bg-color: var(--sc-bg-color, #eee); /** @prop --sc-toggle-button-size: Size of the toggle button. Note, if elements has `size="sm"` attribute, the size will be half of this value. - default: 40px */ --sc-toggle-button-size: 40px; --sc-toggle-button-size: 2.5rem; /** @prop --sc-toggle-active-bg-color: Background color of the toggle when active/checked - default: var(--sc-active-color, #c586c0) */ --sc-toggle-active-bg-color: var(--sc-active-color, #c586c0); /** @prop --sc-toggle-button-color: Toggle button color - default: #fff */ --sc-toggle-button-color: #fff; /** @prop --sc-toggle-active-btn-color: Toggle button color when active/checked - default: #fff */ --sc-toggle-active-btn-color: #fff; } sc-toggle * { box-sizing: border-box; } sc-toggle .toggle { box-sizing: border-box; display: inline-block; padding: 2px; padding: 0.125rem; box-shadow: calc(var(--sc-highlight-dist-x) * 0.3) calc(var(--sc-highlight-dist-y) * 0.3) calc(30px * 0.3) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0.3) calc(var(--sc-shadow-dist-y) * 0.3) calc(30px * 0.3) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: calc(var(--sc-highlight-dist-x) * 0.3) calc(var(--sc-highlight-dist-y) * 0.3) calc(1.875rem * 0.3) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0.3) calc(var(--sc-shadow-dist-y) * 0.3) calc(1.875rem * 0.3) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); border-radius: calc(var(--sc-toggle-button-size) / 2 - 4px); border-radius: calc(var(--sc-toggle-button-size) / 2 - 0.25rem); vertical-align: middle; } sc-toggle .toggle--slider { cursor: pointer; display: block; width: calc(var(--sc-toggle-button-size) * 2); height: var(--sc-toggle-button-size); background: var(--sc-toggle-bg-color); position: relative; border-radius: calc(var(--sc-toggle-button-size) / 2 - 4px); border-radius: calc(var(--sc-toggle-button-size) / 2 - 0.25rem); transition: all var(--sc-animation-duration, 0.3s) var(--sc-animation-timing-function, ease); box-shadow: inset calc(var(--sc-highlight-dist-x) * 0.2) calc(var(--sc-highlight-dist-y) * 0.2) calc(30px * 0.2) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), inset calc(var(--sc-shadow-dist-x) * 0.2) calc(var(--sc-shadow-dist-y) * 0.2) calc(30px * 0.2) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: inset calc(var(--sc-highlight-dist-x) * 0.2) calc(var(--sc-highlight-dist-y) * 0.2) calc(1.875rem * 0.2) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), inset calc(var(--sc-shadow-dist-x) * 0.2) calc(var(--sc-shadow-dist-y) * 0.2) calc(1.875rem * 0.2) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); } sc-toggle .toggle--slider:hover { box-shadow: inset calc(var(--sc-highlight-dist-x) * 0.8) calc(var(--sc-highlight-dist-y) * 0.8) calc(30px * 0.8) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), inset calc(var(--sc-shadow-dist-x) * 0.8) calc(var(--sc-shadow-dist-y) * 0.8) calc(30px * 0.8) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: inset calc(var(--sc-highlight-dist-x) * 0.8) calc(var(--sc-highlight-dist-y) * 0.8) calc(1.875rem * 0.8) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), inset calc(var(--sc-shadow-dist-x) * 0.8) calc(var(--sc-shadow-dist-y) * 0.8) calc(1.875rem * 0.8) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); } sc-toggle .toggle--slider .toggle--dots { display: block; position: relative; width: 100%; height: 100%; } sc-toggle .toggle--slider .toggle--dots span { position: absolute; display: block; width: calc(var(--sc-toggle-button-size) / 8); height: calc(var(--sc-toggle-button-size) / 8); border-radius: 50%; box-shadow: calc(var(--sc-highlight-dist-x) * 0.2) calc(var(--sc-highlight-dist-y) * 0.2) calc(30px * 0.2) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0.2) calc(var(--sc-shadow-dist-y) * 0.2) calc(30px * 0.2) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: calc(var(--sc-highlight-dist-x) * 0.2) calc(var(--sc-highlight-dist-y) * 0.2) calc(1.875rem * 0.2) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0.2) calc(var(--sc-shadow-dist-y) * 0.2) calc(1.875rem * 0.2) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); } sc-toggle .toggle--slider .toggle--dots span:nth-child(1) { top: 30%; left: 30%; } sc-toggle .toggle--slider .toggle--dots span:nth-child(2) { top: 30%; right: 30%; } sc-toggle .toggle--slider .toggle--dots span:nth-child(3) { bottom: 30%; left: 30%; } sc-toggle .toggle--slider .toggle--dots span:nth-child(4) { bottom: 30%; right: 30%; } sc-toggle .toggle--slider .toggle--btn { box-shadow: calc(var(--sc-highlight-dist-x) * 1) calc(var(--sc-highlight-dist-y) * 1) calc(30px * 1) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 1) calc(var(--sc-shadow-dist-y) * 1) calc(30px * 1) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: calc(var(--sc-highlight-dist-x) * 1) calc(var(--sc-highlight-dist-y) * 1) calc(1.875rem * 1) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 1) calc(var(--sc-shadow-dist-y) * 1) calc(1.875rem * 1) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); position: absolute; top: 0; bottom: 0; left: 0; width: var(--sc-toggle-button-size); border-radius: calc(var(--sc-toggle-button-size) / 2 - 4px); border-radius: calc(var(--sc-toggle-button-size) / 2 - 0.25rem); background-color: var(--sc-toggle-button-color); transition: left 0.3s ease; } sc-toggle input[type=checkbox] { position: absolute; width: var(--sc-toggle-button-size); opacity: 0; } sc-toggle input[type=checkbox]:focus + .toggle--slider { box-shadow: inset calc(var(--sc-highlight-dist-x) * 0.8) calc(var(--sc-highlight-dist-y) * 0.8) calc(30px * 0.8) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), inset calc(var(--sc-shadow-dist-x) * 0.8) calc(var(--sc-shadow-dist-y) * 0.8) calc(30px * 0.8) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: inset calc(var(--sc-highlight-dist-x) * 0.8) calc(var(--sc-highlight-dist-y) * 0.8) calc(1.875rem * 0.8) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), inset calc(var(--sc-shadow-dist-x) * 0.8) calc(var(--sc-shadow-dist-y) * 0.8) calc(1.875rem * 0.8) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); } sc-toggle input[type=checkbox]:checked + .toggle--slider { background: var(--sc-toggle-active-bg-color); } sc-toggle input[type=checkbox]:checked + .toggle--slider .toggle--btn { left: var(--sc-toggle-button-size); background: var(--sc-toggle-active-btn-color); } sc-toggle .toggle--label { margin-left: 10px; margin-left: 0.625rem; } sc-toggle.sm .toggle { box-shadow: calc(var(--sc-highlight-dist-x) * 0) calc(var(--sc-highlight-dist-y) * 0) calc(30px * 0) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0) calc(var(--sc-shadow-dist-y) * 0) calc(30px * 0) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: calc(var(--sc-highlight-dist-x) * 0) calc(var(--sc-highlight-dist-y) * 0) calc(1.875rem * 0) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0) calc(var(--sc-shadow-dist-y) * 0) calc(1.875rem * 0) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); padding: 0; } sc-toggle.sm .toggle .toggle--slider { width: calc(var(--sc-toggle-button-size)); height: calc(var(--sc-toggle-button-size) / 2); } sc-toggle.sm .toggle .toggle--slider .toggle--btn { box-shadow: calc(var(--sc-highlight-dist-x) * 0.2) calc(var(--sc-highlight-dist-y) * 0.2) calc(30px * 0.2) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0.2) calc(var(--sc-shadow-dist-y) * 0.2) calc(30px * 0.2) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); box-shadow: calc(var(--sc-highlight-dist-x) * 0.2) calc(var(--sc-highlight-dist-y) * 0.2) calc(1.875rem * 0.2) 0 var(--sc-highlight-color, rgba(255, 255, 255, 0.2)), calc(var(--sc-shadow-dist-x) * 0.2) calc(var(--sc-shadow-dist-y) * 0.2) calc(1.875rem * 0.2) 0 var(--sc-shadow-color, rgba(0, 0, 0, 0.2)); margin: 2px; margin: 0.125rem; width: calc((var(--sc-toggle-button-size) / 2) - 4px); width: calc((var(--sc-toggle-button-size) / 2) - 0.25rem); height: calc((var(--sc-toggle-button-size) / 2) - 4px); height: calc((var(--sc-toggle-button-size) / 2) - 0.25rem); border-radius: 50%; } sc-toggle.sm .toggle .toggle--slider .toggle--btn .toggle--dots { display: none; } sc-toggle.sm .toggle input[type=checkbox]:checked + .toggle--slider .toggle--btn { left: calc(var(--sc-toggle-button-size) / 2); }