widget -> component