Skip to content

FlagUtils Toolkit

FlagUtils provides commonly used utility functions for validating, formatting flag codes, and handling sizes.

import { FlagUtils } from '@sankyu/react-circle-flags'

Check if a string is a valid country/subdivision code.

FlagUtils.isValidCountryCode('us') // true
FlagUtils.isValidCountryCode('US') // true (case-insensitive)
FlagUtils.isValidCountryCode('invalid') // false

Normalize a country code to uppercase display format.

FlagUtils.formatCountryCode('us') // 'US'
FlagUtils.formatCountryCode('Us') // 'US'
FlagUtils.formatCountryCode('invalid') // 'INVALID' (no validation)

Get the component name for a flag code (e.g., FlagUs).

FlagUtils.getComponentName('us') // 'FlagUs'
FlagUtils.getComponentName('gb-eng') // 'FlagGbEng'

getSizeName(pixels: number): FlagSizeName | null

Section titled “getSizeName(pixels: number): FlagSizeName | null”

Get the predefined size name from pixel value.

FlagUtils.getSizeName(16) // 'xs'
FlagUtils.getSizeName(24) // 'sm'
FlagUtils.getSizeName(32) // 'md'
FlagUtils.getSizeName(48) // 'lg'
FlagUtils.getSizeName(64) // 'xl'
FlagUtils.getSizeName(96) // 'xxl'
FlagUtils.getSizeName(128) // 'xxxl'
FlagUtils.getSizeName(100) // null

Predefined size constants.

FlagUtils.sizes.xs // 16
FlagUtils.sizes.sm // 24
FlagUtils.sizes.md // 32
FlagUtils.sizes.lg // 48
FlagUtils.sizes.xl // 64
FlagUtils.sizes.xxl // 96
FlagUtils.sizes.xxxl // 128
import { FlagUtils } from '@sankyu/react-circle-flags'
import { useState } from 'react'
export function CountrySearch() {
const [code, setCode] = useState('')
const isValid = FlagUtils.isValidCountryCode(code)
return (
<div>
<input
value={code}
onChange={e => setCode(e.target.value)}
placeholder="Enter country code (e.g., us, cn, gb)"
/>
{!isValid && code && <p className="text-red-500">Invalid country code</p>}
</div>
)
}
import { FlagUtils } from '@sankyu/react-circle-flags'
import { FlagUs } from '@sankyu/react-circle-flags'
import { useEffect, useState } from 'react'
export function ResponsiveFlag() {
const [size, setSize] = useState(FlagUtils.sizes.md)
useEffect(() => {
const updateSize = () => {
const width = window.innerWidth
if (width < 640) return setSize(FlagUtils.sizes.sm)
if (width < 1024) return setSize(FlagUtils.sizes.md)
setSize(FlagUtils.sizes.lg)
}
updateSize()
window.addEventListener('resize', updateSize)
return () => window.removeEventListener('resize', updateSize)
}, [])
return <FlagUs width={size} height={size} />
}
import { FlagUtils } from '@sankyu/react-circle-flags'
export function FlagInfo({ code }: { code: string }) {
const componentName = FlagUtils.getComponentName(code)
const isValid = FlagUtils.isValidCountryCode(code)
return (
<div>
<p>Country Code: {code.toUpperCase()}</p>
<p>Component: {componentName}</p>
<p>Status: {isValid ? 'Valid' : 'Invalid'}</p>
</div>
)
}

All FlagUtils methods are fully typed with TypeScript:

import { FlagUtils, type FlagSizeName } from '@sankyu/react-circle-flags'
// Size name is a union type
const size: FlagSizeName = FlagUtils.getSizeName(32) // 'md'
const sizeOrNull: FlagSizeName | null = FlagUtils.getSizeName(100) // null
// Size object is typed
const small: number = FlagUtils.sizes.sm // 24