UNPKG

protokit-ui

Version:

A comprehensive React component library with hand-drawn design system. Features 30+ beautiful, accessible components including buttons, forms, navigation, data display, and layout components. Built with TypeScript and styled with CSS for modern React appl

142 lines (121 loc) 2.96 kB
.paper-toggle-wrapper { display: inline-flex; align-items: center; gap: var(--spacing-sm); cursor: pointer; font-family: var(--font-family); font-size: var(--font-size-base); color: var(--ink-black); user-select: none; } .paper-toggle-wrapper:hover .paper-toggle:not(.paper-toggle--disabled) { transform: scale(1.02); } .paper-toggle__input { position: absolute; opacity: 0; pointer-events: none; } .paper-toggle { position: relative; transition: all var(--transition-normal); } .paper-toggle__track { width: 44px; height: 24px; border: 2px solid var(--ink-black); border-radius: 12px; background: var(--paper-white); position: relative; transition: all var(--transition-normal); display: flex; align-items: center; padding: 2px; } .paper-toggle__thumb { width: 16px; height: 16px; background: var(--ink-black); border-radius: 50%; transition: all var(--transition-normal); position: relative; } /* Checked state */ .paper-toggle--checked .paper-toggle__track { background: var(--ink-black); border-color: var(--ink-black); } .paper-toggle--checked .paper-toggle__thumb { background: var(--paper-white); transform: translateX(20px); } /* Disabled state */ .paper-toggle--disabled .paper-toggle__track { border-color: var(--pencil-gray); background: var(--paper-gray); cursor: not-allowed; opacity: 0.6; } .paper-toggle--disabled .paper-toggle__thumb { background: var(--pencil-gray); } .paper-toggle-wrapper:hover .paper-toggle--disabled { transform: none; } /* Label */ .paper-toggle__label { font-family: var(--font-family); font-size: var(--font-size-base); color: var(--ink-black); line-height: 1.4; } .paper-toggle-wrapper:hover .paper-toggle__label { color: var(--ink-gray); } /* Focus state */ .paper-toggle__input:focus + .paper-toggle .paper-toggle__track { outline: none; box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.2); } /* Hand-drawn border effect */ .paper-toggle__track::before { content: ''; position: absolute; top: -1px; left: -1px; right: -1px; bottom: -1px; border: 1px solid var(--ink-black); border-radius: 12px; opacity: 0.3; pointer-events: none; transition: opacity var(--transition-normal); } .paper-toggle:focus .paper-toggle__track::before { opacity: 0.1; } /* Animation for thumb */ .paper-toggle__thumb { animation: toggleThumb 0.2s ease-in-out; } @keyframes toggleThumb { 0% { transform: scale(0.8); } 50% { transform: scale(1.1); } 100% { transform: scale(1); } } /* Hover effects */ .paper-toggle-wrapper:hover .paper-toggle__track:not(.paper-toggle--disabled .paper-toggle__track) { border-color: var(--ink-gray); } .paper-toggle-wrapper:hover .paper-toggle__thumb:not(.paper-toggle--disabled .paper-toggle__thumb) { transform: scale(1.1); } .paper-toggle--checked .paper-toggle-wrapper:hover .paper-toggle__thumb { transform: translateX(20px) scale(1.1); }