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

145 lines (126 loc) 3.07 kB
.paper-icon-button { font-family: var(--font-family); background: transparent; border: 2px solid var(--ink-black); border-radius: 50%; cursor: pointer; transition: all var(--transition-normal); position: relative; display: inline-flex; align-items: center; justify-content: center; text-decoration: none; color: var(--ink-black); font-weight: normal; outline: none; user-select: none; padding: 0; } /* Icon button sizes */ .paper-icon-button--small { width: 32px; height: 32px; font-size: var(--font-size-sm); } .paper-icon-button--medium { width: 40px; height: 40px; font-size: var(--font-size-base); } .paper-icon-button--large { width: 48px; height: 48px; font-size: var(--font-size-lg); } /* Icon button variants */ .paper-icon-button--outline { background: transparent; color: var(--ink-black); } .paper-icon-button--primary { background: var(--ink-black); color: var(--paper-white); border-color: var(--ink-black); } .paper-icon-button--secondary { background: var(--paper-gray); color: var(--ink-black); border-color: var(--ink-gray); } /* Hover states */ .paper-icon-button--outline:hover:not(.paper-icon-button--disabled) { background: var(--ink-black); color: var(--paper-white); transform: scale(1.05); box-shadow: var(--shadow-pencil); } .paper-icon-button--primary:hover:not(.paper-icon-button--disabled) { background: var(--ink-gray); border-color: var(--ink-gray); transform: scale(1.05); box-shadow: var(--shadow-pencil); } .paper-icon-button--secondary:hover:not(.paper-icon-button--disabled) { background: var(--ink-gray); color: var(--paper-white); transform: scale(1.05); box-shadow: var(--shadow-pencil); } /* Active states */ .paper-icon-button:active:not(.paper-icon-button--disabled) { transform: scale(0.95); box-shadow: var(--shadow-pencil); } /* Disabled state */ .paper-icon-button--disabled { border-color: var(--pencil-gray); color: var(--pencil-gray); cursor: not-allowed; transform: none; box-shadow: none; background: transparent; } .paper-icon-button--disabled:hover { transform: none; box-shadow: none; background: transparent; color: var(--pencil-gray); } /* Icon styles */ .paper-icon-button__icon { display: inline-flex; align-items: center; justify-content: center; font-size: 1em; width: 100%; height: 100%; } /* Hand-drawn border effect */ .paper-icon-button::before { content: ''; position: absolute; top: -1px; left: -1px; right: -1px; bottom: -1px; border: 1px solid var(--ink-black); border-radius: 50%; opacity: 0.3; pointer-events: none; transition: opacity var(--transition-normal); } .paper-icon-button:hover::before { opacity: 0.1; } /* Focus state */ .paper-icon-button:focus { outline: none; box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.2); } /* Irregular shape variation */ .paper-icon-button--irregular { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; } .paper-icon-button--irregular::before { border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%; }