mirror of
https://github.com/hanzoai/sentinel.git
synced 2026-09-29 22:34:33 +00:00
86 lines
2.1 KiB
TypeScript
86 lines
2.1 KiB
TypeScript
import type {Theme} from '@emotion/react';
|
|
import {css} from '@emotion/react';
|
|
|
|
/**
|
|
* Inner padding for inputs. This is deprecated. If necessary, use the values
|
|
* in `theme.formPadding` instead. Be sure to specify the input size, e.g.
|
|
* `theme.formPadding.md.paddingLeft`.
|
|
*
|
|
* @deprecated
|
|
*/
|
|
export const INPUT_PADDING = 10;
|
|
|
|
type Props = {
|
|
theme: Theme;
|
|
disabled?: boolean;
|
|
monospace?: boolean;
|
|
readOnly?: boolean;
|
|
};
|
|
|
|
/**
|
|
* Styles for inputs/textareas. This is deprecated. Consider these
|
|
* alternatives:
|
|
*
|
|
* - [Strongly Recommended] Use the existing form components, such as:
|
|
* + <Input /> from 'sentry/components/input'
|
|
* + <Textarea /> from 'sentry/components/forms/controls/textarea'
|
|
* + <TextCopyInput /> from 'sentry/components/textCopyInput'
|
|
* + …
|
|
*
|
|
* - Import `inputStyles` as a named import from 'sentry/components/input'.
|
|
* This is only meant for use in core, reusable components. It should rarely
|
|
* be used elsewhere (chances are you don't want all the styles that it comes
|
|
* with).
|
|
*
|
|
* @deprecated
|
|
*/
|
|
const inputStyles = (props: Props) => css`
|
|
color: ${props.disabled ? props.theme.disabled : props.theme.formText};
|
|
display: block;
|
|
width: 100%;
|
|
background: ${props.theme.background};
|
|
border: 1px solid ${props.theme.border};
|
|
border-radius: ${props.theme.borderRadius};
|
|
box-shadow: inset ${props.theme.dropShadowMedium};
|
|
padding: ${INPUT_PADDING}px;
|
|
resize: vertical;
|
|
height: 40px;
|
|
transition:
|
|
border 0.1s,
|
|
box-shadow 0.1s;
|
|
|
|
${props.monospace ? `font-family: ${props.theme.text.familyMono}` : ''};
|
|
|
|
${
|
|
props.readOnly
|
|
? css`
|
|
cursor: default;
|
|
`
|
|
: ''
|
|
};
|
|
|
|
&::placeholder {
|
|
color: ${props.theme.formPlaceholder};
|
|
}
|
|
|
|
&[disabled] {
|
|
background: ${props.theme.backgroundSecondary};
|
|
color: ${props.theme.gray300};
|
|
border: 1px solid ${props.theme.border};
|
|
cursor: not-allowed;
|
|
|
|
&::placeholder {
|
|
color: ${props.theme.disabled};
|
|
}
|
|
}
|
|
|
|
&:focus,
|
|
&:focus-visible {
|
|
outline: none;
|
|
border-color: ${props.theme.focusBorder};
|
|
box-shadow: ${props.theme.focusBorder} 0 0 0 1px;
|
|
}
|
|
`;
|
|
|
|
export {inputStyles};
|