@indielayer/ui
Version:
Indielayer UI Components with Tailwind CSS build for Vue 3
36 lines (25 loc) • 1.38 kB
text/typescript
import type { InputTheme } from '../Input.vue'
const theme: InputTheme = {
classes: {
wrapper: '',
input: ({ props, data }) => {
const classes = ['appearance-none block w-full placeholder-secondary-400 dark:placeholder-secondary-500 outline-transparent outline outline-2 outline-offset-[-1px] transition-all duration-150 ease-in-out border-secondary-300 dark:border-secondary-700 border shadow-sm rounded-md']
if (!data.errorInternal && !props.disabled) classes.push('hover:border-secondary-400 dark:hover:border-secondary-500')
if (props.size === 'xs') classes.push('px-2 py-1 text-xs')
else if (props.size === 'sm') classes.push('px-2 py-1.5 text-sm')
else if (props.size === 'lg') classes.push('px-4 py-3 text-lg')
else if (props.size === 'xl') classes.push('px-5 py-4 text-xl')
else classes.push('px-3 py-2')
classes.push(props.disabled
? 'bg-secondary-100 dark:bg-secondary-700 text-secondary-400 dark:text-secondary-600 cursor-not-allowed'
: 'bg-white dark:bg-secondary-800 text-secondary-700 dark:text-secondary-200')
return classes
},
icon: 'text-secondary-600 dark:text-secondary-300 absolute my-auto inset-y-0',
},
styles: ({ colors, props, css }) => {
const color = colors.getPalette(props.color)
return css.get('border', color[400])
},
}
export default theme