Using the Perl-base rename utility (sometimes also caled prename):
rename -n 's/./\U$&/;s/-(.)/\U$1/g;s/\.svg$/Icon.svelte/' -- *.svg
The above command applies three Perl substitution operations on each name in the current directory matching the filename globbing pattern *.svg.
The first substitution, s/./\U$&/, replaces the very first character of the filename with the upper-case variant of itself.
The second substitution, s/-(.)/\U$1/g, replaces each occurrence of a character following a dash with the upper-case variant of that character while the dash is removed.
The last substitution, s/\.svg$/Icon.svelte/, replaces the .svg filename suffix with Icon.svelte.
The -n option to rename causes the filename transformations to be displayed but not carried out. You may later change -n to -v to verbosely rename the files.
Example given the names in the question:
$ ls academic-cap.svg ban.svg adjustments.svg beaker.svg arrow-narrow-right.svg chart-bar.svg arrow-narrow-up.svg chart-pie.svg
$ rename -n 's/./\U$&/;s/-(.)/\U$1/g;s/\.svg$/Icon.svelte/' -- *.svg rename(academic-cap.svg, AcademicCapIcon.svelte) rename(adjustments.svg, AdjustmentsIcon.svelte) rename(arrow-narrow-right.svg, ArrowNarrowRightIcon.svelte) rename(arrow-narrow-up.svg, ArrowNarrowUpIcon.svelte) rename(ban.svg, BanIcon.svelte) rename(beaker.svg, BeakerIcon.svelte) rename(chart-bar.svg, ChartBarIcon.svelte) rename(chart-pie.svg, ChartPieIcon.svelte)