ui component with canvas