You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
4.4 KiB
155 lines
4.4 KiB
|
5 months ago
|
/* TextArea — multi-line text input. Skin layered over `<textarea>`. */
|
||
|
|
|
||
|
|
[data-textarea] {
|
||
|
|
--_textarea-px: var(--space-3);
|
||
|
|
--_textarea-py: var(--space-2);
|
||
|
|
--_textarea-gap: var(--space-2);
|
||
|
|
--_textarea-font-size: var(--font-size-md);
|
||
|
|
--_textarea-line-height: var(--leading-normal);
|
||
|
|
--_textarea-radius: var(--radius-md);
|
||
|
|
--_textarea-border: var(--color-neutral-border);
|
||
|
|
--_textarea-border-hover: var(--color-neutral-border-strong);
|
||
|
|
--_textarea-border-focus: var(--color-primary-border-strong);
|
||
|
|
--_textarea-bg: var(--color-surface);
|
||
|
|
--_textarea-color: var(--color-content);
|
||
|
|
--_textarea-placeholder: var(--color-content-muted);
|
||
|
|
--_textarea-count-color: var(--color-content-muted);
|
||
|
|
--_textarea-count-overflow: var(--color-threat-text);
|
||
|
|
|
||
|
|
display: inline-flex;
|
||
|
|
flex-direction: column;
|
||
|
|
gap: var(--_textarea-gap);
|
||
|
|
inline-size: 100%;
|
||
|
|
min-inline-size: 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea][data-size='xs'] {
|
||
|
|
--_textarea-px: var(--space-2);
|
||
|
|
--_textarea-py: var(--space-1);
|
||
|
|
--_textarea-font-size: var(--font-size-xs);
|
||
|
|
--_textarea-radius: var(--radius-sm);
|
||
|
|
}
|
||
|
|
[data-textarea][data-size='sm'] {
|
||
|
|
--_textarea-px: var(--space-2);
|
||
|
|
--_textarea-py: var(--space-1-5);
|
||
|
|
--_textarea-font-size: var(--font-size-sm);
|
||
|
|
}
|
||
|
|
[data-textarea][data-size='lg'] {
|
||
|
|
--_textarea-px: var(--space-4);
|
||
|
|
--_textarea-py: var(--space-3);
|
||
|
|
--_textarea-font-size: var(--font-size-lg);
|
||
|
|
--_textarea-radius: var(--radius-lg);
|
||
|
|
}
|
||
|
|
[data-textarea][data-size='xl'] {
|
||
|
|
--_textarea-px: var(--space-5);
|
||
|
|
--_textarea-py: var(--space-4);
|
||
|
|
--_textarea-font-size: var(--font-size-xl);
|
||
|
|
--_textarea-radius: var(--radius-lg);
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Color accents — applied on focus + when invalid. */
|
||
|
|
[data-textarea][data-color='secondary'] {
|
||
|
|
--_textarea-border-focus: var(--color-secondary-border-strong);
|
||
|
|
}
|
||
|
|
[data-textarea][data-color='neutral'] {
|
||
|
|
--_textarea-border-focus: var(--color-neutral-border-strong);
|
||
|
|
}
|
||
|
|
[data-textarea][data-color='affirm'] {
|
||
|
|
--_textarea-border-focus: var(--color-affirm-border-strong);
|
||
|
|
}
|
||
|
|
[data-textarea][data-color='fulfill'] {
|
||
|
|
--_textarea-border-focus: var(--color-fulfill-border-strong);
|
||
|
|
}
|
||
|
|
[data-textarea][data-color='risk'] {
|
||
|
|
--_textarea-border-focus: var(--color-risk-border-strong);
|
||
|
|
}
|
||
|
|
[data-textarea][data-color='threat'] {
|
||
|
|
--_textarea-border-focus: var(--color-threat-border-strong);
|
||
|
|
}
|
||
|
|
[data-textarea][data-color='loss'] {
|
||
|
|
--_textarea-border-focus: var(--color-loss-border-strong);
|
||
|
|
}
|
||
|
|
|
||
|
|
/* The real input. */
|
||
|
|
[data-textarea-input] {
|
||
|
|
display: block;
|
||
|
|
inline-size: 100%;
|
||
|
|
min-inline-size: 0;
|
||
|
|
padding-block: var(--_textarea-py);
|
||
|
|
padding-inline: var(--_textarea-px);
|
||
|
|
border: var(--border-width) solid var(--_textarea-border);
|
||
|
|
border-radius: var(--_textarea-radius);
|
||
|
|
background: var(--_textarea-bg);
|
||
|
|
color: var(--_textarea-color);
|
||
|
|
font-family: var(--font-family-body);
|
||
|
|
font-size: var(--_textarea-font-size);
|
||
|
|
line-height: var(--_textarea-line-height);
|
||
|
|
outline: none;
|
||
|
|
transition:
|
||
|
|
border-color var(--duration-fast) var(--ease-default),
|
||
|
|
box-shadow var(--duration-fast) var(--ease-default);
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea-input]:hover:not([data-disabled]):not([data-readonly]) {
|
||
|
|
border-color: var(--_textarea-border-hover);
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea][data-focused] [data-textarea-input] {
|
||
|
|
border-color: var(--_textarea-border-focus);
|
||
|
|
box-shadow: 0 0 0 var(--ring-width, 2px)
|
||
|
|
color-mix(in srgb, var(--_textarea-border-focus) 25%, transparent);
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea-input][data-invalid] {
|
||
|
|
border-color: var(--color-threat-border-strong);
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea][data-variant='outline'] [data-textarea-input] {
|
||
|
|
background: transparent;
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea][data-variant='ghost'] [data-textarea-input] {
|
||
|
|
background: transparent;
|
||
|
|
border-color: transparent;
|
||
|
|
}
|
||
|
|
[data-textarea][data-variant='ghost'][data-focused] [data-textarea-input] {
|
||
|
|
border-color: var(--_textarea-border-focus);
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea-input][data-disabled] {
|
||
|
|
cursor: not-allowed;
|
||
|
|
opacity: var(--opacity-disabled, 0.6);
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea-input]::placeholder {
|
||
|
|
color: var(--_textarea-placeholder);
|
||
|
|
}
|
||
|
|
|
||
|
|
/* Count chip — eidos default render: `count / max`. */
|
||
|
|
[data-textarea-count] {
|
||
|
|
display: inline-flex;
|
||
|
|
align-items: baseline;
|
||
|
|
gap: 0.25em;
|
||
|
|
align-self: flex-end;
|
||
|
|
color: var(--_textarea-count-color);
|
||
|
|
font-family: var(--font-family-mono, ui-monospace, monospace);
|
||
|
|
font-size: calc(var(--_textarea-font-size) * 0.85);
|
||
|
|
font-variant-numeric: tabular-nums;
|
||
|
|
line-height: 1;
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea-count][data-overflow] {
|
||
|
|
color: var(--_textarea-count-overflow);
|
||
|
|
font-weight: 600;
|
||
|
|
}
|
||
|
|
|
||
|
|
[data-textarea-count-sep] {
|
||
|
|
opacity: 0.5;
|
||
|
|
}
|
||
|
|
|
||
|
|
@media (prefers-reduced-motion: reduce) {
|
||
|
|
[data-textarea-input] {
|
||
|
|
transition: none;
|
||
|
|
}
|
||
|
|
}
|