Flagsv1.1.2Documentation Under Review
A comprehensive collection of 196+ country and territory flag icons built on the BaseIcon component, providing consistent sizing, coloring, and customization options.
Installation
Install the Flags component from the Catalyst component library:
npm install @pmi/catalyst-flag-iconsOverview
The Flags package provides a comprehensive collection of SVG flag icons for countries and territories worldwide. Each flag component is built on top of the BaseIcon component from @pmi/catalyst-icons, inheriting all sizing, coloring, and gradient capabilities while maintaining authentic flag designs.
Available Flags
The package includes 196+ flag components representing countries, territories, and international organizations including:
- Americas: USA, Canada, Mexico, Brazil, Argentina, Chile, Colombia, and more
- Europe: United Kingdom, Germany, France, Italy, Spain, Netherlands, and more
- Asia: China, Japan, India, South Korea, Thailand, Singapore, and more
- Africa: South Africa, Egypt, Nigeria, Kenya, Morocco, and more
- Oceania: Australia, New Zealand, Fiji, Papua New Guinea, and more
- International: European Union
Each flag is exported as a named component using its country/territory name in PascalCase (e.g., UnitedStates, UnitedKingdom, SaudiArabia).
Examples
Basic Usage
Display a flag with default settings (large size, original colors):
Size Variants
Flags support all BaseIcon size variants from extra small to extra large, plus a full size that adapts to parent dimensions:
Flag Gallery
Browse all available flag icons in the Catalyst Design System. Each flag is importable individually for optimal tree-shaking.
API Reference
All flag components accept the same props as BaseIcon from @pmi/catalyst-icons:
Prop
Type
Size Scale Reference
Flag sizes use CSS variable-based scaling:
xs: 16px × 16pxsm: 20px × 20pxmd: 24px × 24pxlg: 32px × 32px (default)xl: 40px × 40pxfull: 100% of parent width and height
Available Flag Components
Import flags using their country/territory name in PascalCase:
import {
// Americas
Usa,
Canada,
Mexico,
Brazil,
Argentina,
Chile,
Colombia,
// Europe
UnitedKingdom,
Germany,
France,
Italy,
Spain,
Netherlands,
// Asia
China,
Japan,
India,
SouthKorea,
Thailand,
Singapore,
// Africa
SouthAfrica,
Egypt,
Nigeria,
Kenya,
Morocco,
// Oceania
Australia,
NewZealand,
Fiji,
// International
EuropeanUnion,
// ... and 170+ more
} from '@pmi/catalyst-flag-icons';View Complete Flag List (196+ components)
Afghanistan, Albania, Algeria, Andorra, Angola, AntiguaBarbuda, Argentina, Armenia, Aruba, Australia, Austria, Azerbaijan, Bahamas, Bahrain, Bangladesh, Barbados, Belarus, Belgium, Belize, Benin, Bhutan, Bolivia, BosniaAndHerzegovina, Botswana, Brazil, Brunei, Bulgaria, BurkinaFaso, Burundi, Cameroon, Canada, CapeVerde, CentralAfricanRepublic, Chad, Chile, China, Colombia, Comoros, CostaRica, Croatia, Cuba, Curacao, Cyprus, CzechRepublic, DemocraticRepublicOfTheCongo, Denmark, Djibouti, Dominica, DominicanRepublic, EastTimor, Ecuador, Egypt, ElSalvador, EquatorialGuinea, Eritrea, Estonia, Eswatini, Ethiopia, EuropeanUnion, Fiji, Finland, France, Gabon, Gambia, Georgia, Germany, Ghana, Greece, Grenada, Guatemala, Guinea, GuineaBissau, Guyana, Haiti, Honduras, Hungary, Iceland, India, Indonesia, Iran, Iraq, Ireland, Israel, Italy, IvoryCoast, Jamaica, Japan, Jordan, Kazakhstan, Kenya, Kiribati, Kosovo, Kuwait, Kyrgyzstan, Laos, Latvia, Lebanon, Lesotho, Liberia, Libya, Liechtenstein, Lithuania, Luxembourg, Madagascar, Malawi, Malaysia, Maldives, Mali, Malta, MarshallIslands, Mauritania, Mauritius, Mexico, Micronesia, Moldova, Monaco, Mongolia, Montenegro, Morocco, Mozambique, Myanmar, Namibia, Nauru, Nepal, Netherlands, NewZealand, Nicaragua, Niger, Nigeria, NorthKorea, NorthMacedonia, Norway, Oman, Pakistan, Palau, Palestine, Panama, PapuaNewGuinea, Paraguay, Peru, Philippines, Poland, Portugal, Qatar, RepublicOfTheCongo, RepublicOfTurkiye, Romania, Russia, Rwanda, SOTomAndPrincipe, SaintLucia, SaintVincentGrenadines, Samoa, SanMarino, SaudiArabia, Senegal, Serbia, Seychelles, SierraLeone, Singapore, SintMaarten, Slovakia, Slovenia, SolomonIslands, Somalia, SouthAfrica, SouthKorea, SouthSudan, Spain, SriLanka, Sudan, Suriname, Sweden, Switzerland, Syria, Taiwan, Tajikistan, Tanzania, Thailand, Togo, Tonga, TrinidadTobago, Tunisia, Turkmenistan, Tuvalu, Uganda, Ukraine, UnitedArabEmirates, UnitedKingdom, Uruguay, Usa, Uzbekistan, Vanuatu, VaticanCity, Venezuela, Vietnam, Yemen, Zambia, Zimbabwe
Accessibility
All flag components are built with accessibility in mind:
WCAG 2.1 AA Compliance
- Hidden from Screen Readers: Flags have
aria-hidden="true"by default since they are typically decorative elements - Semantic Context: When flags convey meaningful information, wrap them with descriptive text or labels
- Color Independence: Don't rely solely on flags to convey information; provide text labels or context
- Keyboard Navigation: Flag components are not interactive by default but can be wrapped in interactive elements
Best Practices
// ✅ Good: Flag with descriptive text
<div>
<Usa className="inline-block mr-2" />
<span>United States</span>
</div>
// ✅ Good: Flag in labeled button
<button aria-label="Select United States">
<Usa />
</button>
// ❌ Avoid: Flag as sole information carrier
<button>
<Usa />
</button>Testing Considerations
Flag components include data-testid support for integration testing:
<Germany data-testid="country-flag-de" />Design Tokens
Flags use the following design tokens from the Catalyst theme:
Size Tokens
--scale-16: Extra small (xs)--scale-20: Small (sm)--scale-24: Medium (md)--scale-32: Large (lg)--scale-40: Extra large (xl)
Color Tokens (when overriding original colors)
--icon-primary: Primary brand color--icon-secondary: Secondary color--icon-info: Informational blue--icon-danger: Error/danger red--icon-warning: Warning yellow--icon-success: Success green--icon-accent: Accent color--icon-white: White/light--icon-inverted: Inverted theme color--icon-neutral-soft: Soft neutral--icon-neutral-dark: Dark neutral
Technical Details
Component Generation
Flag components are auto-generated from SVG assets. Do not modify flag component files directly. Any changes should be made in the build script at ~/process-packages-assets.cjs.
Bundle Optimization
Each flag component is exported individually, enabling tree-shaking. Import only the flags you need to minimize bundle size:
// ✅ Optimal: Tree-shakeable imports
import { Usa, Canada, Mexico } from '@pmi/catalyst-flag-icons';
// ⚠️ Avoid: Wildcard imports prevent tree-shaking
import * as Flags from '@pmi/catalyst-flag-icons';SVG Rendering
Flags use react-inlinesvg for SVG rendering, which:
- Enables runtime color and gradient manipulation
- Ensures unique IDs for multiple instances
- Supports CSS custom properties for theming
Related Components
- Icons - Base icon component system that flags extend
- Avatar - Can use flags to show user nationality
- Badge - Combine with flags for country indicators
- Select - Use in country/region selection dropdowns
See Also
App Store Badges
AppStoreBadges are easily recognizable visual elements that convey meaning and cues to the user in a compact and efficient way.
Icons
A comprehensive collection of SVG icons with customizable sizes, colors, and gradients. Icons are easily recognizable visual elements that convey meaning and cues to users in a compact and efficient way.