UNPKG

@buun_group/brutalist-ui

Version:
233 lines (198 loc) 5.08 kB
.wrapper { position: relative; display: inline-block; width: auto; min-width: 200px; /* Default minimum width */ } .wrapper.fullWidth { display: block; width: 100%; } .textarea { display: block; width: 100%; padding: var(--brutal-space-3); font-family: var(--brutal-font-mono); font-weight: var(--brutal-font-medium); line-height: var(--brutal-leading-normal); color: var(--brutal-black); background-color: var(--brutal-white); border: var(--brutal-border-width) var(--brutal-border-style) var(--brutal-border-color); outline: none; transition: all var(--brutal-transition-base); resize: vertical; min-height: 4rem; } /* Remove resize handle for auto-resize textareas */ .textarea.autoResize { resize: none; overflow: hidden; } /* Brutalist shadow */ .textarea.withShadow { box-shadow: var(--brutal-shadow-sm); } .textarea.withShadow:hover { transform: translate(-2px, -2px); box-shadow: 6px 6px 0px var(--brutal-black); } .textarea.withShadow:focus { transform: translate(-4px, -4px); box-shadow: var(--brutal-shadow); } /* Size variants */ .textarea.sm { padding: var(--brutal-space-2); font-size: var(--brutal-text-sm); min-height: 3rem; } .textarea.md { padding: var(--brutal-space-3); font-size: var(--brutal-text-base); min-height: 4rem; } .textarea.lg { padding: var(--brutal-space-4); font-size: var(--brutal-text-lg); min-height: 5rem; } /* Variant styles */ .textarea.default { border-color: var(--brutal-black); } .textarea.default:focus { border-color: var(--brutal-black); background-color: var(--brutal-gray-100); } .textarea.error { border-color: var(--brutal-error); background-color: var(--brutal-white); } .textarea.error:focus { border-color: var(--brutal-error); background-color: #FFF0F0; box-shadow: var(--brutal-shadow-sm) var(--brutal-error); } .textarea.error.withShadow:focus { box-shadow: var(--brutal-shadow) var(--brutal-error); } .textarea.success { border-color: var(--brutal-success); background-color: var(--brutal-white); } .textarea.success:focus { border-color: var(--brutal-success); background-color: #F0FFF0; box-shadow: var(--brutal-shadow-sm) var(--brutal-success); } .textarea.success.withShadow:focus { box-shadow: var(--brutal-shadow) var(--brutal-success); } /* Disabled state */ .textarea.disabled { cursor: not-allowed; opacity: 0.6; background-color: var(--brutal-gray-100); } .textarea.disabled:hover { transform: none; box-shadow: var(--brutal-shadow-sm); } /* Read-only state */ .textarea.readOnly { cursor: default; background-color: var(--brutal-gray-100); } .textarea.readOnly:hover { transform: none; box-shadow: var(--brutal-shadow-sm); } .textarea.readOnly:focus { transform: none; box-shadow: var(--brutal-shadow-sm); background-color: var(--brutal-gray-100); } /* Over character limit */ .textarea.overLimit { border-color: var(--brutal-error); } /* Character count */ .characterCount { position: absolute; bottom: calc(-1 * var(--brutal-space-6)); right: 0; font-family: var(--brutal-font-mono); font-size: var(--brutal-text-sm); font-weight: var(--brutal-font-bold); color: var(--brutal-gray-700); background-color: var(--brutal-white); padding: var(--brutal-space-1) var(--brutal-space-2); border: var(--brutal-border-width-thin) var(--brutal-border-style) var(--brutal-black); } .characterCount.error { color: var(--brutal-error); border-color: var(--brutal-error); } .characterCount.success { color: var(--brutal-success); border-color: var(--brutal-success); } /* Scrollbar styling for textareas */ .textarea::-webkit-scrollbar { width: 12px; } .textarea::-webkit-scrollbar-track { background: var(--brutal-gray-100); border-left: var(--brutal-border-width-thin) var(--brutal-border-style) var(--brutal-black); } .textarea::-webkit-scrollbar-thumb { background: var(--brutal-black); border: none; } .textarea::-webkit-scrollbar-thumb:hover { background: var(--brutal-gray-700); } /* Firefox scrollbar */ .textarea { scrollbar-width: thin; scrollbar-color: var(--brutal-black) var(--brutal-gray-100); } /* Placeholder styling */ .textarea::placeholder { color: var(--brutal-gray-500); opacity: 1; } /* Selection styling */ .textarea::selection { background-color: var(--brutal-accent); color: var(--brutal-white); } /* Resize handle styling */ .textarea::-webkit-resizer { background-color: transparent; background-image: linear-gradient( 135deg, transparent 0%, transparent 40%, var(--brutal-black) 40%, var(--brutal-black) 60%, transparent 60%, transparent 100% ), linear-gradient( 135deg, transparent 0%, transparent 20%, var(--brutal-black) 20%, var(--brutal-black) 40%, transparent 40%, transparent 60%, var(--brutal-black) 60%, var(--brutal-black) 80%, transparent 80%, transparent 100% ); background-size: 8px 8px, 8px 8px; background-position: bottom right, bottom right; background-repeat: no-repeat; }