При создании своих версий input file, input radio, select и прочих нативных элементов, нужно учитывать многие детали, без реализации и настройки которых компонент будет просто красивой свистелкой без полноценного функционала.
Вот небольшой пример кастомного </input type="file">
:
Тут конечно есть ещё над чем поработать, но основа уже есть.