{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "flag-avatar",
  "title": "Flag Avatar",
  "author": "Shadi Al Milhem",
  "description": "A shadcn Avatar that renders a circular, resilient flag image with a typed fallback.",
  "registryDependencies": [
    "avatar",
    "@flagcn/flag"
  ],
  "files": [
    {
      "path": "src/components/flags/flag-avatar.tsx",
      "content": "// SPDX-License-Identifier: MIT\n\nimport type * as React from \"react\"\n\nimport { Avatar, AvatarFallback, AvatarImage } from \"@/components/ui/avatar\"\nimport { cn } from \"@/lib/utils\"\n\nimport { flagNames, type FlagCode } from \"./flag-data\"\nimport { getFlagUrl } from \"./flag-utils\"\n\nexport interface FlagAvatarProps extends Omit<React.ComponentProps<typeof Avatar>, \"children\"> {\n  code: FlagCode\n  alt?: string\n}\n\nexport function FlagAvatar({ code, alt = `${flagNames[code]} flag`, className, ...props }: FlagAvatarProps) {\n  return (\n    <Avatar className={cn(\"t-avatar\", className)} {...props}>\n      <AvatarImage src={getFlagUrl(code, { format: \"webp\", ratio: \"1x1\", width: 80 })} alt={alt} />\n      <AvatarFallback>{code.toUpperCase()}</AvatarFallback>\n    </Avatar>\n  )\n}\n",
      "type": "registry:component",
      "target": "@components/flags/flag-avatar.tsx"
    },
    {
      "path": "src/components/flags/flag-data.ts",
      "content": "// SPDX-License-Identifier: MIT\n\nexport const flagNames = {\n  ad: \"Andorra\",\n  ae: \"United Arab Emirates\",\n  af: \"Afghanistan\",\n  ag: \"Antigua and Barbuda\",\n  ai: \"Anguilla\",\n  al: \"Albania\",\n  am: \"Armenia\",\n  ao: \"Angola\",\n  aq: \"Antarctica\",\n  ar: \"Argentina\",\n  as: \"American Samoa\",\n  at: \"Austria\",\n  au: \"Australia\",\n  aw: \"Aruba\",\n  ax: \"Åland Islands\",\n  az: \"Azerbaijan\",\n  ba: \"Bosnia and Herzegovina\",\n  bb: \"Barbados\",\n  bd: \"Bangladesh\",\n  be: \"Belgium\",\n  bf: \"Burkina Faso\",\n  bg: \"Bulgaria\",\n  bh: \"Bahrain\",\n  bi: \"Burundi\",\n  bj: \"Benin\",\n  bl: \"Saint Barthélemy\",\n  bm: \"Bermuda\",\n  bn: \"Brunei\",\n  bo: \"Bolivia\",\n  bq: \"Caribbean Netherlands\",\n  br: \"Brazil\",\n  bs: \"Bahamas\",\n  bt: \"Bhutan\",\n  bv: \"Bouvet Island\",\n  bw: \"Botswana\",\n  by: \"Belarus\",\n  bz: \"Belize\",\n  ca: \"Canada\",\n  cc: \"Cocos (Keeling) Islands\",\n  cd: \"DR Congo\",\n  cf: \"Central African Republic\",\n  cg: \"Republic of the Congo\",\n  ch: \"Switzerland\",\n  ci: \"Côte d'Ivoire (Ivory Coast)\",\n  ck: \"Cook Islands\",\n  cl: \"Chile\",\n  cm: \"Cameroon\",\n  cn: \"China\",\n  co: \"Colombia\",\n  cr: \"Costa Rica\",\n  cu: \"Cuba\",\n  cv: \"Cape Verde\",\n  cw: \"Curaçao\",\n  cx: \"Christmas Island\",\n  cy: \"Cyprus\",\n  cz: \"Czechia\",\n  de: \"Germany\",\n  dj: \"Djibouti\",\n  dk: \"Denmark\",\n  dm: \"Dominica\",\n  do: \"Dominican Republic\",\n  dz: \"Algeria\",\n  ec: \"Ecuador\",\n  ee: \"Estonia\",\n  eg: \"Egypt\",\n  eh: \"Western Sahara\",\n  er: \"Eritrea\",\n  es: \"Spain\",\n  et: \"Ethiopia\",\n  eu: \"European Union\",\n  fi: \"Finland\",\n  fj: \"Fiji\",\n  fk: \"Falkland Islands\",\n  fm: \"Micronesia\",\n  fo: \"Faroe Islands\",\n  fr: \"France\",\n  ga: \"Gabon\",\n  gb: \"United Kingdom\",\n  \"gb-eng\": \"England\",\n  \"gb-nir\": \"Northern Ireland\",\n  \"gb-sct\": \"Scotland\",\n  \"gb-wls\": \"Wales\",\n  gd: \"Grenada\",\n  ge: \"Georgia\",\n  gf: \"French Guiana\",\n  gg: \"Guernsey\",\n  gh: \"Ghana\",\n  gi: \"Gibraltar\",\n  gl: \"Greenland\",\n  gm: \"Gambia\",\n  gn: \"Guinea\",\n  gp: \"Guadeloupe\",\n  gq: \"Equatorial Guinea\",\n  gr: \"Greece\",\n  gs: \"South Georgia\",\n  gt: \"Guatemala\",\n  gu: \"Guam\",\n  gw: \"Guinea-Bissau\",\n  gy: \"Guyana\",\n  hk: \"Hong Kong\",\n  hm: \"Heard Island and McDonald Islands\",\n  hn: \"Honduras\",\n  hr: \"Croatia\",\n  ht: \"Haiti\",\n  hu: \"Hungary\",\n  id: \"Indonesia\",\n  ie: \"Ireland\",\n  il: \"Israel\",\n  im: \"Isle of Man\",\n  in: \"India\",\n  io: \"British Indian Ocean Territory\",\n  iq: \"Iraq\",\n  ir: \"Iran\",\n  is: \"Iceland\",\n  it: \"Italy\",\n  je: \"Jersey\",\n  jm: \"Jamaica\",\n  jo: \"Jordan\",\n  jp: \"Japan\",\n  ke: \"Kenya\",\n  kg: \"Kyrgyzstan\",\n  kh: \"Cambodia\",\n  ki: \"Kiribati\",\n  km: \"Comoros\",\n  kn: \"Saint Kitts and Nevis\",\n  kp: \"North Korea\",\n  kr: \"South Korea\",\n  kw: \"Kuwait\",\n  ky: \"Cayman Islands\",\n  kz: \"Kazakhstan\",\n  la: \"Laos\",\n  lb: \"Lebanon\",\n  lc: \"Saint Lucia\",\n  li: \"Liechtenstein\",\n  lk: \"Sri Lanka\",\n  lr: \"Liberia\",\n  ls: \"Lesotho\",\n  lt: \"Lithuania\",\n  lu: \"Luxembourg\",\n  lv: \"Latvia\",\n  ly: \"Libya\",\n  ma: \"Morocco\",\n  mc: \"Monaco\",\n  md: \"Moldova\",\n  me: \"Montenegro\",\n  mf: \"Saint Martin\",\n  mg: \"Madagascar\",\n  mh: \"Marshall Islands\",\n  mk: \"North Macedonia\",\n  ml: \"Mali\",\n  mm: \"Myanmar\",\n  mn: \"Mongolia\",\n  mo: \"Macau\",\n  mp: \"Northern Mariana Islands\",\n  mq: \"Martinique\",\n  mr: \"Mauritania\",\n  ms: \"Montserrat\",\n  mt: \"Malta\",\n  mu: \"Mauritius\",\n  mv: \"Maldives\",\n  mw: \"Malawi\",\n  mx: \"Mexico\",\n  my: \"Malaysia\",\n  mz: \"Mozambique\",\n  na: \"Namibia\",\n  nc: \"New Caledonia\",\n  ne: \"Niger\",\n  nf: \"Norfolk Island\",\n  ng: \"Nigeria\",\n  ni: \"Nicaragua\",\n  nl: \"Netherlands\",\n  no: \"Norway\",\n  np: \"Nepal\",\n  nr: \"Nauru\",\n  nu: \"Niue\",\n  nz: \"New Zealand\",\n  om: \"Oman\",\n  pa: \"Panama\",\n  pe: \"Peru\",\n  pf: \"French Polynesia\",\n  pg: \"Papua New Guinea\",\n  ph: \"Philippines\",\n  pk: \"Pakistan\",\n  pl: \"Poland\",\n  pm: \"Saint Pierre and Miquelon\",\n  pn: \"Pitcairn Islands\",\n  pr: \"Puerto Rico\",\n  ps: \"Palestine\",\n  pt: \"Portugal\",\n  pw: \"Palau\",\n  py: \"Paraguay\",\n  qa: \"Qatar\",\n  re: \"Réunion\",\n  ro: \"Romania\",\n  rs: \"Serbia\",\n  ru: \"Russia\",\n  rw: \"Rwanda\",\n  sa: \"Saudi Arabia\",\n  sb: \"Solomon Islands\",\n  sc: \"Seychelles\",\n  sd: \"Sudan\",\n  se: \"Sweden\",\n  sg: \"Singapore\",\n  sh: \"Saint Helena, Ascension and Tristan da Cunha\",\n  si: \"Slovenia\",\n  sj: \"Svalbard and Jan Mayen\",\n  sk: \"Slovakia\",\n  sl: \"Sierra Leone\",\n  sm: \"San Marino\",\n  sn: \"Senegal\",\n  so: \"Somalia\",\n  sr: \"Suriname\",\n  ss: \"South Sudan\",\n  st: \"São Tomé and Príncipe\",\n  sv: \"El Salvador\",\n  sx: \"Sint Maarten\",\n  sy: \"Syria\",\n  sz: \"Eswatini (Swaziland)\",\n  tc: \"Turks and Caicos Islands\",\n  td: \"Chad\",\n  tf: \"French Southern and Antarctic Lands\",\n  tg: \"Togo\",\n  th: \"Thailand\",\n  tj: \"Tajikistan\",\n  tk: \"Tokelau\",\n  tl: \"Timor-Leste\",\n  tm: \"Turkmenistan\",\n  tn: \"Tunisia\",\n  to: \"Tonga\",\n  tr: \"Turkey\",\n  tt: \"Trinidad and Tobago\",\n  tv: \"Tuvalu\",\n  tw: \"Taiwan\",\n  tz: \"Tanzania\",\n  ua: \"Ukraine\",\n  ug: \"Uganda\",\n  um: \"United States Minor Outlying Islands\",\n  un: \"United Nations\",\n  us: \"United States\",\n  \"us-ak\": \"Alaska\",\n  \"us-al\": \"Alabama\",\n  \"us-ar\": \"Arkansas\",\n  \"us-az\": \"Arizona\",\n  \"us-ca\": \"California\",\n  \"us-co\": \"Colorado\",\n  \"us-ct\": \"Connecticut\",\n  \"us-de\": \"Delaware\",\n  \"us-fl\": \"Florida\",\n  \"us-ga\": \"Georgia\",\n  \"us-hi\": \"Hawaii\",\n  \"us-ia\": \"Iowa\",\n  \"us-id\": \"Idaho\",\n  \"us-il\": \"Illinois\",\n  \"us-in\": \"Indiana\",\n  \"us-ks\": \"Kansas\",\n  \"us-ky\": \"Kentucky\",\n  \"us-la\": \"Louisiana\",\n  \"us-ma\": \"Massachusetts\",\n  \"us-md\": \"Maryland\",\n  \"us-me\": \"Maine\",\n  \"us-mi\": \"Michigan\",\n  \"us-mn\": \"Minnesota\",\n  \"us-mo\": \"Missouri\",\n  \"us-ms\": \"Mississippi\",\n  \"us-mt\": \"Montana\",\n  \"us-nc\": \"North Carolina\",\n  \"us-nd\": \"North Dakota\",\n  \"us-ne\": \"Nebraska\",\n  \"us-nh\": \"New Hampshire\",\n  \"us-nj\": \"New Jersey\",\n  \"us-nm\": \"New Mexico\",\n  \"us-nv\": \"Nevada\",\n  \"us-ny\": \"New York\",\n  \"us-oh\": \"Ohio\",\n  \"us-ok\": \"Oklahoma\",\n  \"us-or\": \"Oregon\",\n  \"us-pa\": \"Pennsylvania\",\n  \"us-ri\": \"Rhode Island\",\n  \"us-sc\": \"South Carolina\",\n  \"us-sd\": \"South Dakota\",\n  \"us-tn\": \"Tennessee\",\n  \"us-tx\": \"Texas\",\n  \"us-ut\": \"Utah\",\n  \"us-va\": \"Virginia\",\n  \"us-vt\": \"Vermont\",\n  \"us-wa\": \"Washington\",\n  \"us-wi\": \"Wisconsin\",\n  \"us-wv\": \"West Virginia\",\n  \"us-wy\": \"Wyoming\",\n  uy: \"Uruguay\",\n  uz: \"Uzbekistan\",\n  va: \"Vatican City (Holy See)\",\n  vc: \"Saint Vincent and the Grenadines\",\n  ve: \"Venezuela\",\n  vg: \"British Virgin Islands\",\n  vi: \"United States Virgin Islands\",\n  vn: \"Vietnam\",\n  vu: \"Vanuatu\",\n  wf: \"Wallis and Futuna\",\n  ws: \"Samoa\",\n  xk: \"Kosovo\",\n  ye: \"Yemen\",\n  yt: \"Mayotte\",\n  za: \"South Africa\",\n  zm: \"Zambia\",\n  zw: \"Zimbabwe\",\n} as const\n\nexport type FlagCode = keyof typeof flagNames\nexport type FlagKind = \"country\" | \"subdivision\" | \"organization\"\n\nexport interface FlagMeta {\n  code: FlagCode\n  name: (typeof flagNames)[FlagCode]\n  kind: FlagKind\n}\n\nexport const flags = Object.entries(flagNames).map(([code, name]) => ({\n  code: code as FlagCode,\n  name,\n  kind: code === \"eu\" || code === \"un\"\n    ? \"organization\"\n    : code.startsWith(\"us-\") || code.startsWith(\"gb-\")\n      ? \"subdivision\"\n      : \"country\",\n})) satisfies FlagMeta[]\n\nexport const flagCount = flags.length\n\nexport function isFlagCode(value: string): value is FlagCode {\n  return Object.prototype.hasOwnProperty.call(flagNames, value.toLowerCase())\n}\n",
      "type": "registry:lib",
      "target": "@components/flags/flag-data.ts"
    }
  ],
  "meta": {
    "license": "MIT"
  },
  "docs": "Pass any FlagCode and an optional accessible alt label.",
  "categories": [
    "flags",
    "avatars",
    "display"
  ],
  "type": "registry:block"
}