Base input widget implementation