UNPKG

react-layout-timbel

Version:

모던한 React 컴포넌트 라이브러리입니다. Layout, Card, Button 컴포넌트를 포함합니다.

163 lines (137 loc) 2.96 kB
.button { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; font-weight: 500; border: none; border-radius: 6px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; transition: all 0.2s ease; position: relative; text-decoration: none; user-select: none; white-space: nowrap; } /* 크기별 스타일 */ .button--small { font-size: 0.875rem; padding: 8px 16px; min-height: 32px; } .button--medium { font-size: 1rem; padding: 12px 20px; min-height: 40px; } .button--large { font-size: 1.125rem; padding: 16px 24px; min-height: 48px; } /* 테마별 스타일 */ .button--light { color: #333; } .button--dark { color: #fff; } /* 주요/보조 버튼 스타일 */ .button--primary { background-color: #007bff; color: white; box-shadow: 0 2px 4px rgba(0, 123, 255, 0.2); } .button--primary:hover:not(:disabled) { background-color: #0056b3; box-shadow: 0 4px 8px rgba(0, 123, 255, 0.3); transform: translateY(-1px); } .button--secondary { background-color: transparent; color: #007bff; border: 2px solid #007bff; } .button--secondary:hover:not(:disabled) { background-color: #007bff; color: white; transform: translateY(-1px); } /* 다크 테마 */ .button--dark.button--primary { background-color: #4dabf7; color: #1a1a1a; box-shadow: 0 2px 4px rgba(77, 171, 247, 0.2); } .button--dark.button--primary:hover:not(:disabled) { background-color: #339af0; box-shadow: 0 4px 8px rgba(77, 171, 247, 0.3); } .button--dark.button--secondary { color: #4dabf7; border-color: #4dabf7; } .button--dark.button--secondary:hover:not(:disabled) { background-color: #4dabf7; color: #1a1a1a; } /* 비활성화 상태 */ .button--disabled { opacity: 0.6; cursor: not-allowed; transform: none !important; } .button--disabled:hover { transform: none !important; box-shadow: none !important; } /* 로딩 상태 */ .button--loading { cursor: wait; } .button--loading .button-text { opacity: 0.7; } /* 로더 스피너 */ .button-loader { display: inline-flex; align-items: center; justify-content: center; } .button-loader-spinner { width: 16px; height: 16px; animation: spin 1s linear infinite; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } /* 아이콘 스타일 */ .button--with-icon { gap: 8px; } .button-icon { display: inline-flex; align-items: center; justify-content: center; } .button-icon--left { order: -1; } .button-icon--right { order: 1; } /* 전체 너비 */ .button--full-width { width: 100%; } /* 반응형 */ @media (max-width: 768px) { .button--large { font-size: 1rem; padding: 14px 20px; min-height: 44px; } }