UNPKG

@plone/components

Version:

ReactJS components for Plone

170 lines (148 loc) 4.37 kB
@layer plone-components.quanta { .q.react-aria-TextField, .q.react-aria-TextAreaField { position: relative; .react-aria-Label { color: var(--quanta-sapphire); pointer-events: none; touch-action: none; transition: margin-top 0.15s ease-in-out, margin-left 0.15s ease-in-out, transform 0.15s ease-in-out; user-select: none; } .react-aria-Label:has(+ .react-aria-Input, + .react-aria-TextArea) { position: absolute; top: 10px; left: 12px; } .react-aria-Label:has( + .react-aria-Input[data-focused], + .react-aria-TextArea[data-focused] ), .react-aria-Label:has( + .react-aria-Input:not(:placeholder-shown), + .react-aria-TextArea:not(:placeholder-shown) ) { margin-top: -30px; margin-left: -12px; transform: scale(0.8571428571, 0.8571428571); transform-origin: 0 0; } .react-aria-Label:has( + .react-aria-Input:not(:placeholder-shown):not(:hover):not( :active ):not(:focus), + .react-aria-TextArea:not(:placeholder-shown):not(:hover):not( :active ):not(:focus) ) { color: var(--basic-500); } .react-aria-Label:has( + .react-aria-Input[required], + .react-aria-TextArea[required] )::after { /* https://yoksel.github.io/url-encoder/ */ content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24'%3E%3Cpath fill='hsl(7, 90%25, 59%25)' d='M12 18a6 6 0 100-12 6 6 0 000 12z'/%3E%3C/svg%3E"); } .react-aria-Label:has( + .react-aria-Input[required]:not(:placeholder-shown):not(:hover):not( :active ):not(:focus), + .react-aria-TextArea[required]:not(:placeholder-shown):not( :hover ):not(:active):not(:focus) )::after { filter: grayscale(1); } .react-aria-Label:has( + .react-aria-Input[data-invalid], + .react-aria-TextArea[data-invalid] ) { color: var(--quanta-candy) !important; &::after { filter: none !important; } } .react-aria-Label:has( + .react-aria-Input[data-disabled], + .react-aria-TextArea[data-disabled] ) { color: var(--basic-400) !important; } .react-aria-Label:has( + .react-aria-Input[readonly], + .react-aria-TextArea[readonly] ) { color: var(--basic-500); } } .q.react-aria-TextField, .q.react-aria-TextAreaField { .react-aria-Input, .react-aria-TextArea { width: 100%; padding: 12px; border: 0; border-radius: 6px; background-color: var(--basic-200); box-shadow: 0 0 0 rgba(2, 19, 34, 0); caret-color: var(--quanta-cobalt); color: var(--text-color); cursor: text; text-overflow: ellipsis; transition: background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; &[data-hovered] { background-color: var(--basic-300); } &[data-focused] { background-color: var(--basic-50); box-shadow: inset 0 0 0 2px var(--quanta-cobalt); outline: 0; } &[data-invalid] { background-color: var(--quanta-ballet); outline: 0; &[data-focused] { background-color: var(--basic-50); box-shadow: inset 0 0 0 2px var(--quanta-rose); } } &[data-disabled] { background-color: var(--basic-50); box-shadow: inset 0 0 0 1px var(--basic-300); color: var(--basic-300); pointer-events: none; & + .react-aria-Text { color: var(--basic-300); } } &[readonly] { border: 1px dashed var(--basic-400); background-color: var(--basic-50); box-shadow: none; } &::placeholder { color: var(--basic-400); opacity: 0; transition: opacity $time-tiny ease-in-out; } &:active::placeholder, &:focus::placeholder { opacity: 1; } } .react-aria-Text { padding-top: 3px; color: var(--basic-500); font-size: 0.9rem; font-weight: 500; letter-spacing: 0.012em; line-height: 1.714285714285; } } }