This package is based on ISO-3166 country codes, contains 245 flags. It comes with minimum styling for easier use in your project. Flags are in svg
format but you can use them with emojis as well.
npm install @munkacsimark/react-flag --save
import Flag from '@munkacsimark/react-flag'
Key | Value | Required | Default | Format |
---|---|---|---|---|
alpha2 | String | false* | - | ISO 3166-1 alpha-2 |
alpha3 | String | false* | - | ISO 3166-1 alpha-3 |
numeric | String | false* | - | ISO 3166-1 numeric |
tld | String | false* | - | Country code TLD |
size | String | false | 'sm' | 'xs', 'sm', 'lg', 'xl' |
useEmoji | Boolean | false | false | - |
disableLabel | Boolean | false | false | - |
* For identifying the country one of the following properties needs to be defined: alpha2, alpha3, numeric, tld. The order of property precedence is the same.
alpha2 and alpha3 should be upper-case letters (e.g. 'US'
), numeric codes as string (e.g '840'
) and tlds starting with a period (e.g. '.us'
).
There are predefined sizes of container width: 'xs'
=18px
, 'sm'
=24px
, 'lg'
=36px
and 'xl'
=48px
. Each is using 1.5 ratio for calculating height of container (e.g height of 'sm'
=24/1.5=16px).
You can use useEmoji
property for using only emojis in accessible way. This feature is based on a11y-react-emoji. disableLabel
property makes sense only for emojis, it disables aria-label
and sets aria-hidden
to true
.
<Flag alpha2={'US'} />
<Flag alpha2={'US'} useEmoji />
Since it uses inline styles for now, you need to define width
and height
with !important
.
.flag {
width: 100px !important;
height: 50px !important;
border: 1px solid black;
}
<Flag alpha2={'US'} className={style.flag} />
<Flag alpha2={'US'} style={{ width: '100px' }} />
You can set styles of child img tag as following:
.flag img {
object-fit: cover !important;
}
For making circle flags, use styles like below. Note that, you can align images with object-position
rule.
.flag {
width: 62px !important;
height: 62px !important;
border-radius: 50%;
}
.flag img {
object-fit: cover !important;
object-position: -10px center;
}
When you are using emojis with useEmoji
property, you can set the size simply with:
.flag {
font-size: 64px;
}