koval-ui
Version:
React components collection with minimalistic design. Supports theming, layout, and input validation.
1 lines • 2.79 kB
Source Map (JSON)
{"version":3,"file":"Flag.cjs","sources":["../../../../src/lib/Flag/Flag.tsx"],"sourcesContent":["import {forwardRef, useMemo} from 'react';\nimport classNames from 'classnames';\nimport {useLocalTheme} from 'css-vars-hook';\n\nimport type {DataAttributes, LibraryProps} from '@/internal/LibraryAPI';\nimport type {CountryCodes} from '@/internal/locale';\nimport {useBrowserLocale} from '@/internal/locale';\nimport {useLinkRefs} from '@/internal/hooks/useLinkRefs.ts';\n\nimport classes from './Flag.module.css';\nimport {flagsDictionary} from './flagsDictionary.ts';\n\nexport type Props = DataAttributes &\n LibraryProps & {\n /**\n * Provide a two-letter ISO 3166 region code\n * @see https://www.iso.org/iso-3166-country-codes.html\n */\n countryCode: keyof typeof CountryCodes;\n /**\n * Set the size of the flag icon in pixels. Applied to both width and height\n */\n size?: number;\n };\n\nexport const Flag = forwardRef<HTMLDivElement, Props>(\n ({className, countryCode, size = 24, ...nativeProps}, outerRef) => {\n const {LocalRoot, ref} = useLocalTheme<HTMLDivElement>();\n const theme = useMemo(() => ({size}), [size]);\n useLinkRefs(outerRef, ref);\n const flag = flagsDictionary[countryCode];\n const userLocale = useBrowserLocale();\n const countryName = useMemo(\n () => new Intl.DisplayNames(userLocale, {type: 'region'}).of(countryCode),\n [countryCode, userLocale]\n );\n return (\n <LocalRoot\n {...nativeProps}\n theme={theme}\n className={classNames(classes.container, className)}>\n <span className={classes.flag} title={countryName}>\n {flag}\n </span>\n </LocalRoot>\n );\n }\n);\n\nFlag.displayName = 'Flag';\n"],"names":["Flag","forwardRef","className","countryCode","size","nativeProps","outerRef","LocalRoot","ref","useLocalTheme","theme","useMemo","useLinkRefs","flag","flagsDictionary","userLocale","useBrowserLocale","countryName","jsx","classNames","classes"],"mappings":"wXAyBaA,EAAOC,EAAA,WAChB,CAAC,CAAC,UAAAC,EAAW,YAAAC,EAAa,KAAAC,EAAO,GAAI,GAAGC,CAAW,EAAGC,IAAa,CAC/D,KAAM,CAAC,UAAAC,EAAW,IAAAC,CAAG,EAAIC,gBAA8B,EACjDC,EAAQC,EAAAA,QAAQ,KAAO,CAAC,KAAAP,IAAQ,CAACA,CAAI,CAAC,EAC5CQ,EAAA,YAAYN,EAAUE,CAAG,EACnB,MAAAK,EAAOC,kBAAgBX,CAAW,EAClCY,EAAaC,EAAAA,iBAAiB,EAC9BC,EAAcN,EAAA,QAChB,IAAM,IAAI,KAAK,aAAaI,EAAY,CAAC,KAAM,QAAS,CAAA,EAAE,GAAGZ,CAAW,EACxE,CAACA,EAAaY,CAAU,CAC5B,EAEI,OAAAG,EAAA,IAACX,EAAA,CACI,GAAGF,EACJ,MAAAK,EACA,UAAWS,EAAWC,UAAQ,UAAWlB,CAAS,EAClD,eAAC,OAAK,CAAA,UAAWkB,EAAAA,QAAQ,KAAM,MAAOH,EACjC,SACLJ,CAAA,CAAA,CAAA,CACJ,CAAA,CAGZ,EAEAb,EAAK,YAAc"}