@wise/art 2.24.5 → 2.24.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{CheckMark-BWxD_U2N.esm.js → CheckMark-BtQ62PMc.esm.js} +2 -2
- package/dist/{CheckMark-BWxD_U2N.esm.js.map → CheckMark-BtQ62PMc.esm.js.map} +1 -1
- package/dist/{CheckMark-DEtrn3QF.js → CheckMark-cJyvL7T_.js} +2 -2
- package/dist/{CheckMark-DEtrn3QF.js.map → CheckMark-cJyvL7T_.js.map} +1 -1
- package/dist/{Confetti-CGVcmPIg.js → Confetti-C40zBSVo.js} +2 -2
- package/dist/{Confetti-CGVcmPIg.js.map → Confetti-C40zBSVo.js.map} +1 -1
- package/dist/{Confetti-DevgoBC6.esm.js → Confetti-toiSCAzv.esm.js} +2 -2
- package/dist/{Confetti-DevgoBC6.esm.js.map → Confetti-toiSCAzv.esm.js.map} +1 -1
- package/dist/{Flower-BGGbP6Y4.js → Flower-3lV6PO6i.js} +2 -2
- package/dist/{Flower-BGGbP6Y4.js.map → Flower-3lV6PO6i.js.map} +1 -1
- package/dist/{Flower-D29e7aiu.esm.js → Flower-DSs4bhC_.esm.js} +2 -2
- package/dist/{Flower-D29e7aiu.esm.js.map → Flower-DSs4bhC_.esm.js.map} +1 -1
- package/dist/{Globe-v5OR70rp.js → Globe-BamoY0MH.js} +2 -2
- package/dist/{Globe-v5OR70rp.js.map → Globe-BamoY0MH.js.map} +1 -1
- package/dist/{Globe-CNdxa-uI.esm.js → Globe-Cv2CH4Ls.esm.js} +2 -2
- package/dist/{Globe-CNdxa-uI.esm.js.map → Globe-Cv2CH4Ls.esm.js.map} +1 -1
- package/dist/{Graph-D19ehnWf.esm.js → Graph-BAkJZsOh.esm.js} +2 -2
- package/dist/{Graph-D19ehnWf.esm.js.map → Graph-BAkJZsOh.esm.js.map} +1 -1
- package/dist/{Graph-B-2HkWT8.js → Graph-CfDPRUXG.js} +2 -2
- package/dist/{Graph-B-2HkWT8.js.map → Graph-CfDPRUXG.js.map} +1 -1
- package/dist/{Interest-hAw0VQDf.esm.js → Interest-BfKUEAGg.esm.js} +2 -2
- package/dist/{Interest-hAw0VQDf.esm.js.map → Interest-BfKUEAGg.esm.js.map} +1 -1
- package/dist/{Interest-CmJDt_oj.js → Interest-DaRnXsAT.js} +2 -2
- package/dist/{Interest-CmJDt_oj.js.map → Interest-DaRnXsAT.js.map} +1 -1
- package/dist/{Jars-BP54y8Bu.js → Jars-Cf7IwTSO.js} +2 -2
- package/dist/{Jars-BP54y8Bu.js.map → Jars-Cf7IwTSO.js.map} +1 -1
- package/dist/{Jars-CUS_raKO.esm.js → Jars-DabN9mhk.esm.js} +2 -2
- package/dist/{Jars-CUS_raKO.esm.js.map → Jars-DabN9mhk.esm.js.map} +1 -1
- package/dist/{Lock-DRfK_E_B.esm.js → Lock--uH5fhTv.esm.js} +2 -2
- package/dist/{Lock-DRfK_E_B.esm.js.map → Lock--uH5fhTv.esm.js.map} +1 -1
- package/dist/{Lock-BsMDOVEh.js → Lock-DJ9PshsO.js} +2 -2
- package/dist/{Lock-BsMDOVEh.js.map → Lock-DJ9PshsO.js.map} +1 -1
- package/dist/{MagnifyingGlass-u5AnVWRM.js → MagnifyingGlass-BknYcSY6.js} +2 -2
- package/dist/{MagnifyingGlass-u5AnVWRM.js.map → MagnifyingGlass-BknYcSY6.js.map} +1 -1
- package/dist/{MagnifyingGlass-by48kd6C.esm.js → MagnifyingGlass-D9sR6O8H.esm.js} +2 -2
- package/dist/{MagnifyingGlass-by48kd6C.esm.js.map → MagnifyingGlass-D9sR6O8H.esm.js.map} +1 -1
- package/dist/{Marble-NO9ncub1.esm.js → Marble-B5fY-cxX.esm.js} +2 -2
- package/dist/{Marble-NO9ncub1.esm.js.map → Marble-B5fY-cxX.esm.js.map} +1 -1
- package/dist/{Marble-Bm8Ckehu.js → Marble-izXyHYEg.js} +2 -2
- package/dist/{Marble-Bm8Ckehu.js.map → Marble-izXyHYEg.js.map} +1 -1
- package/dist/{MarbleCard-D-433Ibe.esm.js → MarbleCard-Ce25_axJ.esm.js} +2 -2
- package/dist/{MarbleCard-D-433Ibe.esm.js.map → MarbleCard-Ce25_axJ.esm.js.map} +1 -1
- package/dist/{MarbleCard-DbnN8Bu7.js → MarbleCard-W3jCbP-I.js} +2 -2
- package/dist/{MarbleCard-DbnN8Bu7.js.map → MarbleCard-W3jCbP-I.js.map} +1 -1
- package/dist/{MultiCurrency-DYgrzMXU.esm.js → MultiCurrency-BAow9cCQ.esm.js} +2 -2
- package/dist/{MultiCurrency-DYgrzMXU.esm.js.map → MultiCurrency-BAow9cCQ.esm.js.map} +1 -1
- package/dist/{MultiCurrency-MzKkPd3P.js → MultiCurrency-xvG1foRM.js} +2 -2
- package/dist/{MultiCurrency-MzKkPd3P.js.map → MultiCurrency-xvG1foRM.js.map} +1 -1
- package/dist/{Plane-CK-P4uUK.js → Plane-BXQPImui.js} +2 -2
- package/dist/{Plane-CK-P4uUK.js.map → Plane-BXQPImui.js.map} +1 -1
- package/dist/{Plane-B78JJLZv.esm.js → Plane-bUZ-3ZDf.esm.js} +2 -2
- package/dist/{Plane-B78JJLZv.esm.js.map → Plane-bUZ-3ZDf.esm.js.map} +1 -1
- package/dist/{Scene-vvWcBzpK.js → Scene-D9b70d7t.js} +2 -2
- package/dist/{Scene-vvWcBzpK.js.map → Scene-D9b70d7t.js.map} +1 -1
- package/dist/{Scene-B9kCpG54.esm.js → Scene-K-_5SWQB.esm.js} +2 -2
- package/dist/{Scene-B9kCpG54.esm.js.map → Scene-K-_5SWQB.esm.js.map} +1 -1
- package/dist/flags/Flag.d.ts +1 -1
- package/dist/flags/Flag.d.ts.map +1 -1
- package/dist/flags/Flag.spec.d.ts +2 -0
- package/dist/flags/Flag.spec.d.ts.map +1 -0
- package/dist/flags/metadata.d.ts +2 -0
- package/dist/flags/metadata.d.ts.map +1 -0
- package/dist/{index-BMneuETC.js → index-0zgfxQZX.js} +29 -20
- package/dist/index-0zgfxQZX.js.map +1 -0
- package/dist/{index-CNsYMQ0g.esm.js → index-DragVnFs.esm.js} +29 -20
- package/dist/index-DragVnFs.esm.js.map +1 -0
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +4 -4
- package/src/flags/Flag.spec.tsx +31 -0
- package/src/flags/Flag.stories.tsx +89 -5
- package/src/flags/Flag.tsx +22 -11
- package/src/flags/metadata.ts +9 -0
- package/dist/index-BMneuETC.js.map +0 -1
- package/dist/index-CNsYMQ0g.esm.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-0zgfxQZX.js","sources":["../src/flags/metadata.ts","../src/flags/Flag.tsx","../src/illustrations/Illustration.tsx","../src/illustrations/metadata.ts","../src/illustrations3d/utils.ts","../src/illustrations3d/Illustration3D.tsx"],"sourcesContent":["/*\n *\n * DON'T MODIFY THIS FILE IT'S AUTO GENERATED\n * See: `scripts/generate-flags-metadata.mjs`\n *\n */\n\n\n export const DETAILED_FLAG_CODES = ['zm', 'va', 'uy', 'us', 'ug', 'tw', 'tv', 'tm', 'sv', 'sm', 'si', 'sg', 'py', 'pt', 'ph', 'pe', 'pa', 'om', 'nz', 'np', 'ni', 'mz', 'my', 'mx', 'mt', 'mh', 'md', 'ls', 'lk', 'li', 'ki', 'ke', 'je', 'in', 'im', 'hr', 'hn', 'hm', 'hk', 'gt', 'gi', 'gg', 'fj', 'eur', 'es', 'eg', 'do', 'cn', 'by', 'br', 'bn', 'bf', 'ba', 'az', 'au', 'ar', 'an', 'am', 'al', 'ad'];","import { clsx } from \"clsx\";\nimport { useEffect, useState } from \"react\";\n\nimport { DETAILED_FLAG_CODES } from \"./metadata\";\n\nexport interface FlagProps {\n /**\n * Two-letter country code (ISO 3166-1 alpha-2) or three-letter currency code (ISO 4217).\n */\n code: string;\n\n /**\n * Width and height to reserve for the underlying image, in pixels. A detailed variant is shown from 150px and above.\n */\n intrinsicSize?: number;\n className?: string;\n loading?: \"lazy\" | \"eager\";\n}\n\nconst unknownFlagName = \"wise\";\n\nexport const Flag = ({\n code,\n intrinsicSize = 64,\n className = undefined,\n loading = \"lazy\",\n}: FlagProps) => {\n const [fallback, setFallback] = useState<\"simple\" | \"unknown\" | null>(null);\n useEffect(() => {\n setFallback(null);\n }, [code]);\n\n const detailed = intrinsicSize >= 150;\n // Only get detailed svg if we know it exists, to avoid the performance hit of failing requests\n const name =\n fallback !== \"unknown\"\n ? `${code.toLowerCase()}${\n fallback == null &&\n detailed &&\n DETAILED_FLAG_CODES.includes(code.toLowerCase())\n ? \"-detailed\"\n : \"\"\n }`\n : unknownFlagName;\n\n return (\n <img\n className={clsx(\"wds-flag\", `wds-flag-${name}`, className)}\n src={\n process.env.NODE_ENV === \"web-art-dev\"\n ? `${name}.svg`\n : `https://wise.com/web-art/assets/flags/${name}.svg`\n }\n loading={loading}\n alt=\"\"\n width={intrinsicSize}\n height={intrinsicSize}\n onError={() => {\n setFallback((prev) =>\n prev == null && detailed ? \"simple\" : \"unknown\",\n );\n }}\n />\n );\n};\n","import { clsx } from 'clsx';\nimport { forwardRef } from 'react';\n\nimport {\n type LargeSize,\n type MediumSize,\n type SmallSize,\n type Descriptors,\n Sizes,\n} from './../common';\nimport type { IllustrationNames } from './metadata';\n\n// Picking only a few props from Image element to avoid breaking change\n// as in future underlying element might change\ntype ImgProps = Pick<React.ImgHTMLAttributes<HTMLImageElement>, 'id' | 'className'>;\n\nexport type IllustrationSizes = LargeSize | MediumSize | SmallSize;\n\nexport type Props = {\n name: IllustrationNames;\n alt?: string;\n size?: IllustrationSizes;\n loading?: 'eager' | 'lazy';\n disablePadding?: boolean;\n} & ImgProps;\n\nconst imageSizes = {\n [Sizes.SMALL]: 200,\n [Sizes.MEDIUM]: 300,\n [Sizes.LARGE]: 500,\n};\n\nconst Illustration = forwardRef<HTMLImageElement, Props>(\n (\n {\n id,\n name,\n alt = '',\n loading = 'eager',\n className,\n size = Sizes.MEDIUM,\n disablePadding = false,\n }: Props,\n ref,\n ) => {\n const { SMALL, MEDIUM } = Sizes;\n\n return name ? (\n <picture>\n {size === Sizes.LARGE || size === Sizes.MEDIUM ? (\n <>\n <source\n width={imageSizes[SMALL]}\n height={imageSizes[SMALL]}\n media=\"(max-width: 575px)\"\n srcSet={`${defineSrc(name, SMALL, '1x')}, ${defineSrc(name, SMALL, '2x')} 2x`}\n />\n {size !== Sizes.MEDIUM ? (\n <source\n width={imageSizes[MEDIUM]}\n height={imageSizes[MEDIUM]}\n media=\"(max-width: 992px)\"\n srcSet={`${defineSrc(name, MEDIUM, '1x')}, ${defineSrc(name, MEDIUM, '2x')} 2x`}\n />\n ) : null}\n </>\n ) : null}\n\n <img\n id={id}\n ref={ref}\n alt={alt}\n data-testid={`wds-${name}-illustration`}\n className={clsx(\n 'wds-illustration',\n `wds-illustration-${name}`,\n { 'wds-illustration-padding': !disablePadding },\n className,\n )}\n loading={loading}\n src={defineSrc(name, size, '1x')}\n srcSet={`${defineSrc(name, size, '2x')} 2x`}\n width={imageSizes[size]}\n height={imageSizes[size]}\n />\n </picture>\n ) : null;\n },\n);\n\nfunction defineSrc(illustration: string, size: IllustrationSizes, descriptor: Descriptors) {\n return `https://wise.com/web-art/assets/illustrations/${illustration}-${size}@${descriptor}.webp`;\n}\n\nexport default Illustration;\n","/*\n *\n * DON'T MODIFY THIS FILE IT'S AUTO GENERATED\n * See: `scripts/generate-i10s-metadata.mjs`\n *\n */\n \n \n export enum Assets {\n WALLET = 'wallet',TWO_INVITE_LETTERS_OPENED = 'two-invite-letters-opened',TOOL = 'tool',TARGET_PLATFORM = 'target-platform',STOPWATCH_PLATFORM = 'stopwatch-platform',SPEECH_BUBBLE = 'speech-bubble',SKIP_AUTHENTICATION = 'skip-authentication',SHOPPING_BAG = 'shopping-bag',SATELLITE_PLATFORM = 'satellite-platform',SAND_TIMER = 'sand-timer',REMINDER_LETTER = 'reminder-letter',RECEIVE = 'receive',QUESTION_MARK = 'question-mark',PUZZLE_PIECES = 'puzzle-pieces',PLANE_2 = 'plane-2',PLANE = 'plane',PIE_CHART = 'pie-chart',PHONES = 'phones',PERSONAL_CARD = 'personal-card',PERCENTAGE = 'percentage',PALM_TREE = 'palm-tree',ONE_INVITE_LETTER_OPENED = 'one-invite-letter-opened',MULTI_CURRENCY = 'multi-currency',MEGAPHONE = 'megaphone',MARBLE_CARD_FLAG_ONLY = 'marble-card-flag-only',MARBLE_CARD_BUSINESS_FLAG_ONLY = 'marble-card-business-flag-only',MARBLE_CARD_BUSINESS = 'marble-card-business',MARBLE_CARD = 'marble-card',MARBLE = 'marble',MAP = 'map',MAGNIFYING_GLASS = 'magnifying-glass',LOCK_PLATFORM = 'lock-platform',LOCK = 'lock',LIGHT_BULB = 'light-bulb',KEY = 'key',JARS = 'jars',INVITE_LETTER = 'invite-letter',INTEREST = 'interest',INFINITE = 'infinite',ID_CARD = 'id-card',HOUSE = 'house',HEART_5 = 'heart-5',HEART_4 = 'heart-4',HEART_3 = 'heart-3',HEART_2 = 'heart-2',HEART = 'heart',GRAPH = 'graph',GLOBE = 'globe',GEAR = 'gear',FLOWER = 'flower',FLAG = 'flag',EXCLAMATION_MARK = 'exclamation-mark',EMAIL_SUCCESS = 'email-success',EMAIL = 'email',ELECTRIC_PLUG = 'electric-plug',ECO_CARD = 'eco-card',DOOR = 'door',DOCUMENTS = 'documents',DIGITAL_CARD_2 = 'digital-card-2',DIGITAL_CARD = 'digital-card',COOKIE = 'cookie',CONVERT = 'convert',CONSTRUCTION_FENCE = 'construction-fence',CONFETTI = 'confetti',COIN_PILE_UP = 'coin-pile-up',COIN_PILE_DOWN = 'coin-pile-down',CLOSED_WINDOW = 'closed-window',CHECK_MARK = 'check-mark',CALENDAR = 'calendar',BUSINESS_CARD = 'business-card',BRIEFCASE = 'briefcase',BELL = 'bell',BACKPACK = 'backpack'\n }\n \n export type IllustrationNames = 'wallet' | 'two-invite-letters-opened' | 'tool' | 'target-platform' | 'stopwatch-platform' | 'speech-bubble' | 'skip-authentication' | 'shopping-bag' | 'satellite-platform' | 'sand-timer' | 'reminder-letter' | 'receive' | 'question-mark' | 'puzzle-pieces' | 'plane-2' | 'plane' | 'pie-chart' | 'phones' | 'personal-card' | 'percentage' | 'palm-tree' | 'one-invite-letter-opened' | 'multi-currency' | 'megaphone' | 'marble-card-flag-only' | 'marble-card-business-flag-only' | 'marble-card-business' | 'marble-card' | 'marble' | 'map' | 'magnifying-glass' | 'lock-platform' | 'lock' | 'light-bulb' | 'key' | 'jars' | 'invite-letter' | 'interest' | 'infinite' | 'id-card' | 'house' | 'heart-5' | 'heart-4' | 'heart-3' | 'heart-2' | 'heart' | 'graph' | 'globe' | 'gear' | 'flower' | 'flag' | 'exclamation-mark' | 'email-success' | 'email' | 'electric-plug' | 'eco-card' | 'door' | 'documents' | 'digital-card-2' | 'digital-card' | 'cookie' | 'convert' | 'construction-fence' | 'confetti' | 'coin-pile-up' | 'coin-pile-down' | 'closed-window' | 'check-mark' | 'calendar' | 'business-card' | 'briefcase' | 'bell' | 'backpack'","import { useState, useEffect } from 'react';\n\nimport type { IllustrationNames } from '../illustrations/metadata';\n\nexport function useBattery() {\n const [batteryData, setBatteryData] = useState<{ level: number }>({ level: 1.0 });\n\n useEffect(() => {\n const getBatteryData = async () => {\n // @ts-expect-error .getBattery exists in Navigator interface\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const battery = await navigator.getBattery();\n\n setBatteryData({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n level: battery?.level,\n });\n };\n // Check if the browser supports the Battery API\n if (\n 'getBattery' in navigator &&\n navigator.getBattery !== undefined &&\n typeof navigator.getBattery === 'function'\n ) {\n void getBatteryData();\n }\n }, []);\n\n return batteryData;\n}\n\nexport function isBatteryLow(batteryLevel: number): boolean {\n return batteryLevel < 0.2;\n}\n\nexport function isConnectionSlow(): boolean {\n // @ts-expect-error .connection prop exists in Navigator interface\n const { connection } = window.navigator;\n if (connection === undefined) {\n return false;\n }\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ['slow-2g', '2g'].includes(connection?.effectiveType as string) ||\n // @ts-expect-error Property 'connection' does exist on type 'Navigator'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n navigator?.connection?.saveData === true\n );\n}\n\nexport function defineSrc(asset: string): string {\n return `https://wise.com/web-art/assets/illustrations3d/${asset}`;\n}\n\nconst illustration3DNames = [\n 'lock',\n 'globe',\n 'confetti',\n 'check-mark',\n 'flower',\n 'graph',\n 'jars',\n 'magnifying-glass',\n 'marble',\n 'marble-card',\n 'multi-currency',\n 'plane',\n 'interest',\n];\n\nexport function isIllustrationSupport3D(asset: IllustrationNames): boolean {\n return illustration3DNames.includes(asset);\n}\n","/* eslint-disable fp/no-mutation */\nimport { clsx } from 'clsx';\nimport { lazy, Suspense, useEffect, useState, LazyExoticComponent } from 'react';\n\nimport { LargeSize, MediumSize, SmallSize, Sizes } from '../common';\nimport Illustration, { Assets } from '../illustrations';\n\nimport { useBattery, isConnectionSlow, isBatteryLow } from './utils';\n\nexport type Illustration3DNames =\n | 'lock'\n | 'globe'\n | 'confetti'\n | 'check-mark'\n | 'flower'\n | 'graph'\n | 'jars'\n | 'magnifying-glass'\n | 'marble'\n | 'marble-card'\n | 'multi-currency'\n | 'plane'\n | 'interest';\n\nexport type Props = {\n name: Illustration3DNames;\n size?: SmallSize | MediumSize | LargeSize;\n className?: string;\n};\n\nenum RenderMode {\n INIT,\n FALLBACK,\n ASSET_3D,\n}\n\nconst Illustration3D = ({ name, size = Sizes.MEDIUM, className }: Props) => {\n const [renderMode, setRenderMode] = useState<RenderMode>(RenderMode.INIT);\n const [inintrinsicSize, setInintrinsicSize] = useState<Props['size']>(size);\n const batteryData = useBattery();\n\n useEffect(() => {\n setRenderMode(\n isConnectionSlow() || isBatteryLow(batteryData.level)\n ? RenderMode.FALLBACK\n : RenderMode.ASSET_3D,\n );\n const isMobile: boolean =\n (typeof window !== undefined && window?.matchMedia('(max-width: 575px)')?.matches) ?? false;\n if (isMobile) {\n setInintrinsicSize(Sizes.SMALL);\n }\n }, [batteryData]);\n\n return (\n <div\n className={clsx(\n 'wds-illustration-3d',\n `wds-illustration-3d-${name}`,\n `wds-illustration-3d-${inintrinsicSize as string}`,\n className,\n )}\n aria-hidden\n >\n {renderMode === RenderMode.INIT ? null : renderMode === RenderMode.ASSET_3D ? (\n <Suspense fallback={null}>{getModel({ name, size: inintrinsicSize })}</Suspense>\n ) : (\n <Illustration name={name} size={size} alt=\"\" />\n )}\n </div>\n );\n};\n\nfunction getModel({ name, size }: Props) {\n // @ts-expect-error unknown generic\n let Model: LazyExoticComponent = <></>;\n const Scene = lazy(async () => import('./Scene'));\n switch (name) {\n case Assets.LOCK: {\n Model = lazy(async () => import('./models/Lock'));\n break;\n }\n case Assets.GLOBE: {\n Model = lazy(async () => import('./models/Globe'));\n break;\n }\n case Assets.CONFETTI: {\n Model = lazy(async () => import('./models/Confetti'));\n break;\n }\n case Assets.CHECK_MARK: {\n Model = lazy(async () => import('./models/CheckMark'));\n break;\n }\n case Assets.FLOWER: {\n Model = lazy(async () => import('./models/Flower'));\n break;\n }\n case Assets.PLANE: {\n Model = lazy(async () => import('./models/Plane'));\n break;\n }\n case Assets.GRAPH: {\n Model = lazy(async () => import('./models/Graph'));\n break;\n }\n case Assets.MARBLE: {\n Model = lazy(async () => import('./models/Marble'));\n break;\n }\n case Assets.MARBLE_CARD: {\n Model = lazy(async () => import('./models/MarbleCard'));\n break;\n }\n case Assets.MAGNIFYING_GLASS: {\n Model = lazy(async () => import('./models/MagnifyingGlass'));\n break;\n }\n case Assets.JARS: {\n Model = lazy(async () => import('./models/Jars'));\n break;\n }\n case Assets.MULTI_CURRENCY: {\n Model = lazy(async () => import('./models/MultiCurrency'));\n break;\n }\n case Assets.INTEREST: {\n Model = lazy(async () => import('./models/Interest'));\n break;\n }\n }\n return (\n <Scene assetName={name} size={size}>\n <Model />\n </Scene>\n );\n}\n\nexport default Illustration3D;\n"],"names":["DETAILED_FLAG_CODES","unknownFlagName","Flag","code","intrinsicSize","className","undefined","loading","fallback","setFallback","useState","useEffect","detailed","name","toLowerCase","includes","_jsx","clsx","src","process","env","NODE_ENV","alt","width","height","onError","prev","imageSizes","Sizes","SMALL","MEDIUM","LARGE","Illustration","forwardRef","id","size","disablePadding","ref","_jsxs","children","_Fragment","media","srcSet","defineSrc","illustration","descriptor","Assets","useBattery","batteryData","setBatteryData","level","getBatteryData","battery","navigator","getBattery","isBatteryLow","batteryLevel","isConnectionSlow","connection","window","effectiveType","saveData","asset","illustration3DNames","isIllustrationSupport3D","RenderMode","Illustration3D","renderMode","setRenderMode","INIT","inintrinsicSize","setInintrinsicSize","FALLBACK","ASSET_3D","isMobile","matchMedia","matches","Suspense","getModel","Model","Scene","lazy","LOCK","GLOBE","CONFETTI","CHECK_MARK","FLOWER","PLANE","GRAPH","MARBLE","MARBLE_CARD","MAGNIFYING_GLASS","JARS","MULTI_CURRENCY","INTEREST","assetName"],"mappings":"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"}
|
|
@@ -3,28 +3,37 @@ import { useState, useEffect, forwardRef, Suspense, lazy } from 'react';
|
|
|
3
3
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { S as Sizes } from './common-DBpCdW70.esm.js';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
/*
|
|
7
|
+
*
|
|
8
|
+
* DON'T MODIFY THIS FILE IT'S AUTO GENERATED
|
|
9
|
+
* See: `scripts/generate-flags-metadata.mjs`
|
|
10
|
+
*
|
|
11
|
+
*/
|
|
12
|
+
const DETAILED_FLAG_CODES = ['zm', 'va', 'uy', 'us', 'ug', 'tw', 'tv', 'tm', 'sv', 'sm', 'si', 'sg', 'py', 'pt', 'ph', 'pe', 'pa', 'om', 'nz', 'np', 'ni', 'mz', 'my', 'mx', 'mt', 'mh', 'md', 'ls', 'lk', 'li', 'ki', 'ke', 'je', 'in', 'im', 'hr', 'hn', 'hm', 'hk', 'gt', 'gi', 'gg', 'fj', 'eur', 'es', 'eg', 'do', 'cn', 'by', 'br', 'bn', 'bf', 'ba', 'az', 'au', 'ar', 'an', 'am', 'al', 'ad'];
|
|
13
|
+
|
|
14
|
+
const unknownFlagName = "wise";
|
|
7
15
|
const Flag = ({
|
|
8
16
|
code,
|
|
9
17
|
intrinsicSize = 64,
|
|
10
18
|
className = undefined,
|
|
11
|
-
loading =
|
|
19
|
+
loading = "lazy"
|
|
12
20
|
}) => {
|
|
13
21
|
const [fallback, setFallback] = useState(null);
|
|
14
22
|
useEffect(() => {
|
|
15
23
|
setFallback(null);
|
|
16
24
|
}, [code]);
|
|
17
25
|
const detailed = intrinsicSize >= 150;
|
|
18
|
-
|
|
26
|
+
// Only get detailed svg if we know it exists, to avoid the performance hit of failing requests
|
|
27
|
+
const name = fallback !== "unknown" ? `${code.toLowerCase()}${fallback == null && detailed && DETAILED_FLAG_CODES.includes(code.toLowerCase()) ? "-detailed" : ""}` : unknownFlagName;
|
|
19
28
|
return /*#__PURE__*/jsx("img", {
|
|
20
29
|
className: clsx(`wds-flag wds-flag-${name}`, className),
|
|
21
|
-
src: process.env.NODE_ENV ===
|
|
30
|
+
src: process.env.NODE_ENV === "web-art-dev" ? `${name}.svg` : `https://wise.com/web-art/assets/flags/${name}.svg`,
|
|
22
31
|
loading: loading,
|
|
23
32
|
alt: "",
|
|
24
33
|
width: intrinsicSize,
|
|
25
34
|
height: intrinsicSize,
|
|
26
35
|
onError: () => {
|
|
27
|
-
setFallback(prev => prev == null && detailed ?
|
|
36
|
+
setFallback(prev => prev == null && detailed ? "simple" : "unknown");
|
|
28
37
|
}
|
|
29
38
|
});
|
|
30
39
|
};
|
|
@@ -253,71 +262,71 @@ function getModel({
|
|
|
253
262
|
}) {
|
|
254
263
|
// @ts-expect-error unknown generic
|
|
255
264
|
let Model = /*#__PURE__*/jsx(Fragment, {});
|
|
256
|
-
const Scene = /*#__PURE__*/lazy(async () => import('./Scene-
|
|
265
|
+
const Scene = /*#__PURE__*/lazy(async () => import('./Scene-K-_5SWQB.esm.js'));
|
|
257
266
|
switch (name) {
|
|
258
267
|
case Assets.LOCK:
|
|
259
268
|
{
|
|
260
|
-
Model = /*#__PURE__*/lazy(async () => import('./Lock
|
|
269
|
+
Model = /*#__PURE__*/lazy(async () => import('./Lock--uH5fhTv.esm.js'));
|
|
261
270
|
break;
|
|
262
271
|
}
|
|
263
272
|
case Assets.GLOBE:
|
|
264
273
|
{
|
|
265
|
-
Model = /*#__PURE__*/lazy(async () => import('./Globe-
|
|
274
|
+
Model = /*#__PURE__*/lazy(async () => import('./Globe-Cv2CH4Ls.esm.js'));
|
|
266
275
|
break;
|
|
267
276
|
}
|
|
268
277
|
case Assets.CONFETTI:
|
|
269
278
|
{
|
|
270
|
-
Model = /*#__PURE__*/lazy(async () => import('./Confetti-
|
|
279
|
+
Model = /*#__PURE__*/lazy(async () => import('./Confetti-toiSCAzv.esm.js'));
|
|
271
280
|
break;
|
|
272
281
|
}
|
|
273
282
|
case Assets.CHECK_MARK:
|
|
274
283
|
{
|
|
275
|
-
Model = /*#__PURE__*/lazy(async () => import('./CheckMark-
|
|
284
|
+
Model = /*#__PURE__*/lazy(async () => import('./CheckMark-BtQ62PMc.esm.js'));
|
|
276
285
|
break;
|
|
277
286
|
}
|
|
278
287
|
case Assets.FLOWER:
|
|
279
288
|
{
|
|
280
|
-
Model = /*#__PURE__*/lazy(async () => import('./Flower-
|
|
289
|
+
Model = /*#__PURE__*/lazy(async () => import('./Flower-DSs4bhC_.esm.js'));
|
|
281
290
|
break;
|
|
282
291
|
}
|
|
283
292
|
case Assets.PLANE:
|
|
284
293
|
{
|
|
285
|
-
Model = /*#__PURE__*/lazy(async () => import('./Plane-
|
|
294
|
+
Model = /*#__PURE__*/lazy(async () => import('./Plane-bUZ-3ZDf.esm.js'));
|
|
286
295
|
break;
|
|
287
296
|
}
|
|
288
297
|
case Assets.GRAPH:
|
|
289
298
|
{
|
|
290
|
-
Model = /*#__PURE__*/lazy(async () => import('./Graph-
|
|
299
|
+
Model = /*#__PURE__*/lazy(async () => import('./Graph-BAkJZsOh.esm.js'));
|
|
291
300
|
break;
|
|
292
301
|
}
|
|
293
302
|
case Assets.MARBLE:
|
|
294
303
|
{
|
|
295
|
-
Model = /*#__PURE__*/lazy(async () => import('./Marble-
|
|
304
|
+
Model = /*#__PURE__*/lazy(async () => import('./Marble-B5fY-cxX.esm.js'));
|
|
296
305
|
break;
|
|
297
306
|
}
|
|
298
307
|
case Assets.MARBLE_CARD:
|
|
299
308
|
{
|
|
300
|
-
Model = /*#__PURE__*/lazy(async () => import('./MarbleCard-
|
|
309
|
+
Model = /*#__PURE__*/lazy(async () => import('./MarbleCard-Ce25_axJ.esm.js'));
|
|
301
310
|
break;
|
|
302
311
|
}
|
|
303
312
|
case Assets.MAGNIFYING_GLASS:
|
|
304
313
|
{
|
|
305
|
-
Model = /*#__PURE__*/lazy(async () => import('./MagnifyingGlass-
|
|
314
|
+
Model = /*#__PURE__*/lazy(async () => import('./MagnifyingGlass-D9sR6O8H.esm.js'));
|
|
306
315
|
break;
|
|
307
316
|
}
|
|
308
317
|
case Assets.JARS:
|
|
309
318
|
{
|
|
310
|
-
Model = /*#__PURE__*/lazy(async () => import('./Jars-
|
|
319
|
+
Model = /*#__PURE__*/lazy(async () => import('./Jars-DabN9mhk.esm.js'));
|
|
311
320
|
break;
|
|
312
321
|
}
|
|
313
322
|
case Assets.MULTI_CURRENCY:
|
|
314
323
|
{
|
|
315
|
-
Model = /*#__PURE__*/lazy(async () => import('./MultiCurrency-
|
|
324
|
+
Model = /*#__PURE__*/lazy(async () => import('./MultiCurrency-BAow9cCQ.esm.js'));
|
|
316
325
|
break;
|
|
317
326
|
}
|
|
318
327
|
case Assets.INTEREST:
|
|
319
328
|
{
|
|
320
|
-
Model = /*#__PURE__*/lazy(async () => import('./Interest-
|
|
329
|
+
Model = /*#__PURE__*/lazy(async () => import('./Interest-BfKUEAGg.esm.js'));
|
|
321
330
|
break;
|
|
322
331
|
}
|
|
323
332
|
}
|
|
@@ -329,4 +338,4 @@ function getModel({
|
|
|
329
338
|
}
|
|
330
339
|
|
|
331
340
|
export { Assets as A, Flag as F, Illustration as I, Illustration3D as a, defineSrc as d, isIllustrationSupport3D as i };
|
|
332
|
-
//# sourceMappingURL=index-
|
|
341
|
+
//# sourceMappingURL=index-DragVnFs.esm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-DragVnFs.esm.js","sources":["../src/flags/metadata.ts","../src/flags/Flag.tsx","../src/illustrations/Illustration.tsx","../src/illustrations/metadata.ts","../src/illustrations3d/utils.ts","../src/illustrations3d/Illustration3D.tsx"],"sourcesContent":["/*\n *\n * DON'T MODIFY THIS FILE IT'S AUTO GENERATED\n * See: `scripts/generate-flags-metadata.mjs`\n *\n */\n\n\n export const DETAILED_FLAG_CODES = ['zm', 'va', 'uy', 'us', 'ug', 'tw', 'tv', 'tm', 'sv', 'sm', 'si', 'sg', 'py', 'pt', 'ph', 'pe', 'pa', 'om', 'nz', 'np', 'ni', 'mz', 'my', 'mx', 'mt', 'mh', 'md', 'ls', 'lk', 'li', 'ki', 'ke', 'je', 'in', 'im', 'hr', 'hn', 'hm', 'hk', 'gt', 'gi', 'gg', 'fj', 'eur', 'es', 'eg', 'do', 'cn', 'by', 'br', 'bn', 'bf', 'ba', 'az', 'au', 'ar', 'an', 'am', 'al', 'ad'];","import { clsx } from \"clsx\";\nimport { useEffect, useState } from \"react\";\n\nimport { DETAILED_FLAG_CODES } from \"./metadata\";\n\nexport interface FlagProps {\n /**\n * Two-letter country code (ISO 3166-1 alpha-2) or three-letter currency code (ISO 4217).\n */\n code: string;\n\n /**\n * Width and height to reserve for the underlying image, in pixels. A detailed variant is shown from 150px and above.\n */\n intrinsicSize?: number;\n className?: string;\n loading?: \"lazy\" | \"eager\";\n}\n\nconst unknownFlagName = \"wise\";\n\nexport const Flag = ({\n code,\n intrinsicSize = 64,\n className = undefined,\n loading = \"lazy\",\n}: FlagProps) => {\n const [fallback, setFallback] = useState<\"simple\" | \"unknown\" | null>(null);\n useEffect(() => {\n setFallback(null);\n }, [code]);\n\n const detailed = intrinsicSize >= 150;\n // Only get detailed svg if we know it exists, to avoid the performance hit of failing requests\n const name =\n fallback !== \"unknown\"\n ? `${code.toLowerCase()}${\n fallback == null &&\n detailed &&\n DETAILED_FLAG_CODES.includes(code.toLowerCase())\n ? \"-detailed\"\n : \"\"\n }`\n : unknownFlagName;\n\n return (\n <img\n className={clsx(\"wds-flag\", `wds-flag-${name}`, className)}\n src={\n process.env.NODE_ENV === \"web-art-dev\"\n ? `${name}.svg`\n : `https://wise.com/web-art/assets/flags/${name}.svg`\n }\n loading={loading}\n alt=\"\"\n width={intrinsicSize}\n height={intrinsicSize}\n onError={() => {\n setFallback((prev) =>\n prev == null && detailed ? \"simple\" : \"unknown\",\n );\n }}\n />\n );\n};\n","import { clsx } from 'clsx';\nimport { forwardRef } from 'react';\n\nimport {\n type LargeSize,\n type MediumSize,\n type SmallSize,\n type Descriptors,\n Sizes,\n} from './../common';\nimport type { IllustrationNames } from './metadata';\n\n// Picking only a few props from Image element to avoid breaking change\n// as in future underlying element might change\ntype ImgProps = Pick<React.ImgHTMLAttributes<HTMLImageElement>, 'id' | 'className'>;\n\nexport type IllustrationSizes = LargeSize | MediumSize | SmallSize;\n\nexport type Props = {\n name: IllustrationNames;\n alt?: string;\n size?: IllustrationSizes;\n loading?: 'eager' | 'lazy';\n disablePadding?: boolean;\n} & ImgProps;\n\nconst imageSizes = {\n [Sizes.SMALL]: 200,\n [Sizes.MEDIUM]: 300,\n [Sizes.LARGE]: 500,\n};\n\nconst Illustration = forwardRef<HTMLImageElement, Props>(\n (\n {\n id,\n name,\n alt = '',\n loading = 'eager',\n className,\n size = Sizes.MEDIUM,\n disablePadding = false,\n }: Props,\n ref,\n ) => {\n const { SMALL, MEDIUM } = Sizes;\n\n return name ? (\n <picture>\n {size === Sizes.LARGE || size === Sizes.MEDIUM ? (\n <>\n <source\n width={imageSizes[SMALL]}\n height={imageSizes[SMALL]}\n media=\"(max-width: 575px)\"\n srcSet={`${defineSrc(name, SMALL, '1x')}, ${defineSrc(name, SMALL, '2x')} 2x`}\n />\n {size !== Sizes.MEDIUM ? (\n <source\n width={imageSizes[MEDIUM]}\n height={imageSizes[MEDIUM]}\n media=\"(max-width: 992px)\"\n srcSet={`${defineSrc(name, MEDIUM, '1x')}, ${defineSrc(name, MEDIUM, '2x')} 2x`}\n />\n ) : null}\n </>\n ) : null}\n\n <img\n id={id}\n ref={ref}\n alt={alt}\n data-testid={`wds-${name}-illustration`}\n className={clsx(\n 'wds-illustration',\n `wds-illustration-${name}`,\n { 'wds-illustration-padding': !disablePadding },\n className,\n )}\n loading={loading}\n src={defineSrc(name, size, '1x')}\n srcSet={`${defineSrc(name, size, '2x')} 2x`}\n width={imageSizes[size]}\n height={imageSizes[size]}\n />\n </picture>\n ) : null;\n },\n);\n\nfunction defineSrc(illustration: string, size: IllustrationSizes, descriptor: Descriptors) {\n return `https://wise.com/web-art/assets/illustrations/${illustration}-${size}@${descriptor}.webp`;\n}\n\nexport default Illustration;\n","/*\n *\n * DON'T MODIFY THIS FILE IT'S AUTO GENERATED\n * See: `scripts/generate-i10s-metadata.mjs`\n *\n */\n \n \n export enum Assets {\n WALLET = 'wallet',TWO_INVITE_LETTERS_OPENED = 'two-invite-letters-opened',TOOL = 'tool',TARGET_PLATFORM = 'target-platform',STOPWATCH_PLATFORM = 'stopwatch-platform',SPEECH_BUBBLE = 'speech-bubble',SKIP_AUTHENTICATION = 'skip-authentication',SHOPPING_BAG = 'shopping-bag',SATELLITE_PLATFORM = 'satellite-platform',SAND_TIMER = 'sand-timer',REMINDER_LETTER = 'reminder-letter',RECEIVE = 'receive',QUESTION_MARK = 'question-mark',PUZZLE_PIECES = 'puzzle-pieces',PLANE_2 = 'plane-2',PLANE = 'plane',PIE_CHART = 'pie-chart',PHONES = 'phones',PERSONAL_CARD = 'personal-card',PERCENTAGE = 'percentage',PALM_TREE = 'palm-tree',ONE_INVITE_LETTER_OPENED = 'one-invite-letter-opened',MULTI_CURRENCY = 'multi-currency',MEGAPHONE = 'megaphone',MARBLE_CARD_FLAG_ONLY = 'marble-card-flag-only',MARBLE_CARD_BUSINESS_FLAG_ONLY = 'marble-card-business-flag-only',MARBLE_CARD_BUSINESS = 'marble-card-business',MARBLE_CARD = 'marble-card',MARBLE = 'marble',MAP = 'map',MAGNIFYING_GLASS = 'magnifying-glass',LOCK_PLATFORM = 'lock-platform',LOCK = 'lock',LIGHT_BULB = 'light-bulb',KEY = 'key',JARS = 'jars',INVITE_LETTER = 'invite-letter',INTEREST = 'interest',INFINITE = 'infinite',ID_CARD = 'id-card',HOUSE = 'house',HEART_5 = 'heart-5',HEART_4 = 'heart-4',HEART_3 = 'heart-3',HEART_2 = 'heart-2',HEART = 'heart',GRAPH = 'graph',GLOBE = 'globe',GEAR = 'gear',FLOWER = 'flower',FLAG = 'flag',EXCLAMATION_MARK = 'exclamation-mark',EMAIL_SUCCESS = 'email-success',EMAIL = 'email',ELECTRIC_PLUG = 'electric-plug',ECO_CARD = 'eco-card',DOOR = 'door',DOCUMENTS = 'documents',DIGITAL_CARD_2 = 'digital-card-2',DIGITAL_CARD = 'digital-card',COOKIE = 'cookie',CONVERT = 'convert',CONSTRUCTION_FENCE = 'construction-fence',CONFETTI = 'confetti',COIN_PILE_UP = 'coin-pile-up',COIN_PILE_DOWN = 'coin-pile-down',CLOSED_WINDOW = 'closed-window',CHECK_MARK = 'check-mark',CALENDAR = 'calendar',BUSINESS_CARD = 'business-card',BRIEFCASE = 'briefcase',BELL = 'bell',BACKPACK = 'backpack'\n }\n \n export type IllustrationNames = 'wallet' | 'two-invite-letters-opened' | 'tool' | 'target-platform' | 'stopwatch-platform' | 'speech-bubble' | 'skip-authentication' | 'shopping-bag' | 'satellite-platform' | 'sand-timer' | 'reminder-letter' | 'receive' | 'question-mark' | 'puzzle-pieces' | 'plane-2' | 'plane' | 'pie-chart' | 'phones' | 'personal-card' | 'percentage' | 'palm-tree' | 'one-invite-letter-opened' | 'multi-currency' | 'megaphone' | 'marble-card-flag-only' | 'marble-card-business-flag-only' | 'marble-card-business' | 'marble-card' | 'marble' | 'map' | 'magnifying-glass' | 'lock-platform' | 'lock' | 'light-bulb' | 'key' | 'jars' | 'invite-letter' | 'interest' | 'infinite' | 'id-card' | 'house' | 'heart-5' | 'heart-4' | 'heart-3' | 'heart-2' | 'heart' | 'graph' | 'globe' | 'gear' | 'flower' | 'flag' | 'exclamation-mark' | 'email-success' | 'email' | 'electric-plug' | 'eco-card' | 'door' | 'documents' | 'digital-card-2' | 'digital-card' | 'cookie' | 'convert' | 'construction-fence' | 'confetti' | 'coin-pile-up' | 'coin-pile-down' | 'closed-window' | 'check-mark' | 'calendar' | 'business-card' | 'briefcase' | 'bell' | 'backpack'","import { useState, useEffect } from 'react';\n\nimport type { IllustrationNames } from '../illustrations/metadata';\n\nexport function useBattery() {\n const [batteryData, setBatteryData] = useState<{ level: number }>({ level: 1.0 });\n\n useEffect(() => {\n const getBatteryData = async () => {\n // @ts-expect-error .getBattery exists in Navigator interface\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n const battery = await navigator.getBattery();\n\n setBatteryData({\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n level: battery?.level,\n });\n };\n // Check if the browser supports the Battery API\n if (\n 'getBattery' in navigator &&\n navigator.getBattery !== undefined &&\n typeof navigator.getBattery === 'function'\n ) {\n void getBatteryData();\n }\n }, []);\n\n return batteryData;\n}\n\nexport function isBatteryLow(batteryLevel: number): boolean {\n return batteryLevel < 0.2;\n}\n\nexport function isConnectionSlow(): boolean {\n // @ts-expect-error .connection prop exists in Navigator interface\n const { connection } = window.navigator;\n if (connection === undefined) {\n return false;\n }\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n ['slow-2g', '2g'].includes(connection?.effectiveType as string) ||\n // @ts-expect-error Property 'connection' does exist on type 'Navigator'\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n navigator?.connection?.saveData === true\n );\n}\n\nexport function defineSrc(asset: string): string {\n return `https://wise.com/web-art/assets/illustrations3d/${asset}`;\n}\n\nconst illustration3DNames = [\n 'lock',\n 'globe',\n 'confetti',\n 'check-mark',\n 'flower',\n 'graph',\n 'jars',\n 'magnifying-glass',\n 'marble',\n 'marble-card',\n 'multi-currency',\n 'plane',\n 'interest',\n];\n\nexport function isIllustrationSupport3D(asset: IllustrationNames): boolean {\n return illustration3DNames.includes(asset);\n}\n","/* eslint-disable fp/no-mutation */\nimport { clsx } from 'clsx';\nimport { lazy, Suspense, useEffect, useState, LazyExoticComponent } from 'react';\n\nimport { LargeSize, MediumSize, SmallSize, Sizes } from '../common';\nimport Illustration, { Assets } from '../illustrations';\n\nimport { useBattery, isConnectionSlow, isBatteryLow } from './utils';\n\nexport type Illustration3DNames =\n | 'lock'\n | 'globe'\n | 'confetti'\n | 'check-mark'\n | 'flower'\n | 'graph'\n | 'jars'\n | 'magnifying-glass'\n | 'marble'\n | 'marble-card'\n | 'multi-currency'\n | 'plane'\n | 'interest';\n\nexport type Props = {\n name: Illustration3DNames;\n size?: SmallSize | MediumSize | LargeSize;\n className?: string;\n};\n\nenum RenderMode {\n INIT,\n FALLBACK,\n ASSET_3D,\n}\n\nconst Illustration3D = ({ name, size = Sizes.MEDIUM, className }: Props) => {\n const [renderMode, setRenderMode] = useState<RenderMode>(RenderMode.INIT);\n const [inintrinsicSize, setInintrinsicSize] = useState<Props['size']>(size);\n const batteryData = useBattery();\n\n useEffect(() => {\n setRenderMode(\n isConnectionSlow() || isBatteryLow(batteryData.level)\n ? RenderMode.FALLBACK\n : RenderMode.ASSET_3D,\n );\n const isMobile: boolean =\n (typeof window !== undefined && window?.matchMedia('(max-width: 575px)')?.matches) ?? false;\n if (isMobile) {\n setInintrinsicSize(Sizes.SMALL);\n }\n }, [batteryData]);\n\n return (\n <div\n className={clsx(\n 'wds-illustration-3d',\n `wds-illustration-3d-${name}`,\n `wds-illustration-3d-${inintrinsicSize as string}`,\n className,\n )}\n aria-hidden\n >\n {renderMode === RenderMode.INIT ? null : renderMode === RenderMode.ASSET_3D ? (\n <Suspense fallback={null}>{getModel({ name, size: inintrinsicSize })}</Suspense>\n ) : (\n <Illustration name={name} size={size} alt=\"\" />\n )}\n </div>\n );\n};\n\nfunction getModel({ name, size }: Props) {\n // @ts-expect-error unknown generic\n let Model: LazyExoticComponent = <></>;\n const Scene = lazy(async () => import('./Scene'));\n switch (name) {\n case Assets.LOCK: {\n Model = lazy(async () => import('./models/Lock'));\n break;\n }\n case Assets.GLOBE: {\n Model = lazy(async () => import('./models/Globe'));\n break;\n }\n case Assets.CONFETTI: {\n Model = lazy(async () => import('./models/Confetti'));\n break;\n }\n case Assets.CHECK_MARK: {\n Model = lazy(async () => import('./models/CheckMark'));\n break;\n }\n case Assets.FLOWER: {\n Model = lazy(async () => import('./models/Flower'));\n break;\n }\n case Assets.PLANE: {\n Model = lazy(async () => import('./models/Plane'));\n break;\n }\n case Assets.GRAPH: {\n Model = lazy(async () => import('./models/Graph'));\n break;\n }\n case Assets.MARBLE: {\n Model = lazy(async () => import('./models/Marble'));\n break;\n }\n case Assets.MARBLE_CARD: {\n Model = lazy(async () => import('./models/MarbleCard'));\n break;\n }\n case Assets.MAGNIFYING_GLASS: {\n Model = lazy(async () => import('./models/MagnifyingGlass'));\n break;\n }\n case Assets.JARS: {\n Model = lazy(async () => import('./models/Jars'));\n break;\n }\n case Assets.MULTI_CURRENCY: {\n Model = lazy(async () => import('./models/MultiCurrency'));\n break;\n }\n case Assets.INTEREST: {\n Model = lazy(async () => import('./models/Interest'));\n break;\n }\n }\n return (\n <Scene assetName={name} size={size}>\n <Model />\n </Scene>\n );\n}\n\nexport default Illustration3D;\n"],"names":["DETAILED_FLAG_CODES","unknownFlagName","Flag","code","intrinsicSize","className","undefined","loading","fallback","setFallback","useState","useEffect","detailed","name","toLowerCase","includes","_jsx","clsx","src","process","env","NODE_ENV","alt","width","height","onError","prev","imageSizes","Sizes","SMALL","MEDIUM","LARGE","Illustration","forwardRef","id","size","disablePadding","ref","_jsxs","children","_Fragment","media","srcSet","defineSrc","illustration","descriptor","Assets","useBattery","batteryData","setBatteryData","level","getBatteryData","battery","navigator","getBattery","isBatteryLow","batteryLevel","isConnectionSlow","connection","window","effectiveType","saveData","asset","illustration3DNames","isIllustrationSupport3D","RenderMode","Illustration3D","renderMode","setRenderMode","INIT","inintrinsicSize","setInintrinsicSize","FALLBACK","ASSET_3D","isMobile","matchMedia","matches","Suspense","getModel","Model","Scene","lazy","LOCK","GLOBE","CONFETTI","CHECK_MARK","FLOWER","PLANE","GRAPH","MARBLE","MARBLE_CARD","MAGNIFYING_GLASS","JARS","MULTI_CURRENCY","INTEREST","assetName"],"mappings":"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"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as Assets, F as Flag, I as Illustration, a as Illustration3D, i as isIllustrationSupport3D } from './index-
|
|
1
|
+
export { A as Assets, F as Flag, I as Illustration, a as Illustration3D, i as isIllustrationSupport3D } from './index-DragVnFs.esm.js';
|
|
2
2
|
export { S as Sizes } from './common-DBpCdW70.esm.js';
|
|
3
3
|
import 'clsx';
|
|
4
4
|
import 'react';
|
package/dist/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wise/art",
|
|
3
|
-
"version": "2.24.
|
|
3
|
+
"version": "2.24.6",
|
|
4
4
|
"packageManager": "pnpm@10.14.0+sha512.ad27a79641b49c3e481a16a805baa71817a04bbe06a38d17e60e2eaee83f6a146c6a688125f5792e48dd5ba30e7da52a5cda4c3992b9ccf333f9ce223af84748",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "React library for art elements in UI",
|
|
@@ -33,9 +33,10 @@
|
|
|
33
33
|
"convert-flags-svg-to-png": "node ./scripts/convert-flags-svg-to-png.mjs",
|
|
34
34
|
"convert-i10s-png-to-webp": "rm -rf s3-bucket/illustrations/ && copyfiles --f node_modules/wise-atoms/illustrations/**/*.png s3-bucket/illustrations && node ./scripts/convert-png-to-webp.mjs",
|
|
35
35
|
"generate-i10s-metadata": "node ./scripts/generate-i10s-metadata.mjs && eslint 'src/illustrations/metadata.ts' --fix",
|
|
36
|
+
"generate-flags-metadata": "node ./scripts/generate-flags-metadata.mjs && eslint 'src/flags/metadata.ts' --fix",
|
|
36
37
|
"bundle": "rm -rf dist && rollup --config --sourcemap && pnpm build-styles",
|
|
37
38
|
"cleanup": "rm -rf temp",
|
|
38
|
-
"build": "NODE_ENV=web-art-prod pnpm load-i10s && pnpm load-3d-i10s && pnpm convert-i10s-png-to-webp && pnpm generate-i10s-metadata && pnpm load-flags && pnpm bundle && pnpm cleanup",
|
|
39
|
+
"build": "NODE_ENV=web-art-prod pnpm load-i10s && pnpm load-3d-i10s && pnpm convert-i10s-png-to-webp && pnpm generate-i10s-metadata && pnpm load-flags && pnpm generate-flags-metadata && pnpm bundle && pnpm cleanup",
|
|
39
40
|
"start": "storybook dev -p 3001",
|
|
40
41
|
"dev": "NODE_ENV=web-art-dev pnpm start",
|
|
41
42
|
"test": "jest && release-to-github-with-changelog-pre-release-checks",
|
|
@@ -99,7 +100,7 @@
|
|
|
99
100
|
"storybook": "^9.1.2",
|
|
100
101
|
"typescript": "^5.9.2",
|
|
101
102
|
"vite": "^7.1.2",
|
|
102
|
-
"wise-atoms": "git+https://github.com/transferwise/wise-atoms.git#
|
|
103
|
+
"wise-atoms": "git+https://github.com/transferwise/wise-atoms.git#84fc36d9f1b1a57a1bc98e547d2e226bb2ed2e55",
|
|
103
104
|
"@storybook/addon-docs": "^9.1.2"
|
|
104
105
|
},
|
|
105
106
|
"peerDependencies": {
|
|
@@ -107,7 +108,6 @@
|
|
|
107
108
|
"react": ">=18",
|
|
108
109
|
"react-dom": ">=18"
|
|
109
110
|
},
|
|
110
|
-
"prettier": "@transferwise/eslint-config/.prettierrc.js",
|
|
111
111
|
"publishConfig": {
|
|
112
112
|
"access": "public"
|
|
113
113
|
},
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import "@testing-library/jest-dom";
|
|
2
|
+
|
|
3
|
+
import { render, renderHook, screen, waitFor } from "@testing-library/react";
|
|
4
|
+
|
|
5
|
+
import { Flag } from "./Flag";
|
|
6
|
+
|
|
7
|
+
describe("Flag", () => {
|
|
8
|
+
it("use default image when < 150px", () => {
|
|
9
|
+
const { container } = render(<Flag code="es" />);
|
|
10
|
+
|
|
11
|
+
// eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
|
|
12
|
+
const flag = container.querySelector("img");
|
|
13
|
+
expect(flag?.src.includes("detailed")).toBe(false);
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
it("use detailed image when available and >= 150px", () => {
|
|
17
|
+
const { container } = render(<Flag code="es" intrinsicSize={150} />);
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
|
|
20
|
+
const flag = container.querySelector("img");
|
|
21
|
+
expect(flag?.src.includes("detailed")).toBe(true);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it("don't use try to use detailed image if not available", () => {
|
|
25
|
+
const { container } = render(<Flag code="fr" />);
|
|
26
|
+
|
|
27
|
+
// eslint-disable-next-line testing-library/no-container, testing-library/no-node-access
|
|
28
|
+
const flag = container.querySelector("img");
|
|
29
|
+
expect(flag?.src.includes("detailed")).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
});
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import type { Meta, StoryObj } from
|
|
1
|
+
import type { Meta, StoryObj } from "@storybook/react-vite";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import flagRawMetaData from "../../node_modules/wise-atoms/flags/.metadata.json";
|
|
4
|
+
import { Flag } from "./Flag";
|
|
4
5
|
|
|
5
6
|
const meta: Meta<typeof Flag> = {
|
|
6
7
|
component: Flag,
|
|
7
|
-
title:
|
|
8
|
+
title: "Flag",
|
|
8
9
|
};
|
|
9
10
|
export default meta;
|
|
10
11
|
|
|
@@ -12,9 +13,92 @@ type Story = StoryObj<typeof Flag>;
|
|
|
12
13
|
|
|
13
14
|
export const Basic: Story = {
|
|
14
15
|
render: (args) => <Flag {...args} />,
|
|
15
|
-
tags: [
|
|
16
|
+
tags: ["autodocs"],
|
|
16
17
|
args: {
|
|
17
|
-
code:
|
|
18
|
+
code: "GBP",
|
|
18
19
|
intrinsicSize: 64,
|
|
19
20
|
},
|
|
20
21
|
};
|
|
22
|
+
|
|
23
|
+
export const AllFlagsAndSizes = () => {
|
|
24
|
+
const regions = Object.entries(flagRawMetaData);
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
<>
|
|
28
|
+
<span className="np-text-body-large-bold">
|
|
29
|
+
Total number of flags: {regions.flatMap(([_, flags]) => flags).length}
|
|
30
|
+
</span>
|
|
31
|
+
<div
|
|
32
|
+
style={{
|
|
33
|
+
display: "grid",
|
|
34
|
+
gap: "var(--padding-large)",
|
|
35
|
+
marginTop: "var(--padding-medium)",
|
|
36
|
+
}}
|
|
37
|
+
>
|
|
38
|
+
{regions.map(([region, flags]) => (
|
|
39
|
+
<div key={region}>
|
|
40
|
+
<span className="np-text-title-section">{region}</span>
|
|
41
|
+
<div
|
|
42
|
+
style={{
|
|
43
|
+
display: "grid",
|
|
44
|
+
gridTemplateColumns: "repeat(auto-fill, minmax(450px, 1fr))",
|
|
45
|
+
gap: "var(--padding-small)",
|
|
46
|
+
}}
|
|
47
|
+
>
|
|
48
|
+
{flags.map((flag) => {
|
|
49
|
+
const countryCode = flag.country[0]?.toUpperCase();
|
|
50
|
+
const currencyCode = flag.currency[0]?.toUpperCase();
|
|
51
|
+
const flagCode = countryCode ?? currencyCode;
|
|
52
|
+
|
|
53
|
+
// Covers cases where there's just a currency code and no country (e.g. Euro)
|
|
54
|
+
const flagName = countryCode
|
|
55
|
+
? flag.country.at(-1)
|
|
56
|
+
: flag.currency?.at(-1);
|
|
57
|
+
|
|
58
|
+
return (
|
|
59
|
+
<div
|
|
60
|
+
key={flagName}
|
|
61
|
+
style={{
|
|
62
|
+
display: "grid",
|
|
63
|
+
gridTemplateColumns: "minmax(auto, 1fr) auto 1fr",
|
|
64
|
+
gap: "var(--padding-small)",
|
|
65
|
+
alignItems: "center",
|
|
66
|
+
}}
|
|
67
|
+
>
|
|
68
|
+
<div
|
|
69
|
+
style={{
|
|
70
|
+
display: "flex",
|
|
71
|
+
flexWrap: "wrap",
|
|
72
|
+
flexDirection: "column",
|
|
73
|
+
alignItems: "flex-start",
|
|
74
|
+
gap: "var(--padding-small)",
|
|
75
|
+
}}
|
|
76
|
+
>
|
|
77
|
+
{flagName}
|
|
78
|
+
<span>
|
|
79
|
+
{countryCode && (
|
|
80
|
+
<>
|
|
81
|
+
Country: <code>{countryCode}</code>
|
|
82
|
+
</>
|
|
83
|
+
)}
|
|
84
|
+
{currencyCode && countryCode && <br />}
|
|
85
|
+
{currencyCode && (
|
|
86
|
+
<>
|
|
87
|
+
Currency: <code>{currencyCode}</code>
|
|
88
|
+
</>
|
|
89
|
+
)}
|
|
90
|
+
</span>
|
|
91
|
+
{currencyCode && <span />}
|
|
92
|
+
</div>
|
|
93
|
+
<Flag code={flagCode} />
|
|
94
|
+
<Flag code={flagCode} intrinsicSize={150} />
|
|
95
|
+
</div>
|
|
96
|
+
);
|
|
97
|
+
})}
|
|
98
|
+
</div>
|
|
99
|
+
</div>
|
|
100
|
+
))}
|
|
101
|
+
</div>
|
|
102
|
+
</>
|
|
103
|
+
);
|
|
104
|
+
};
|
package/src/flags/Flag.tsx
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import { clsx } from
|
|
2
|
-
import { useEffect, useState } from
|
|
1
|
+
import { clsx } from "clsx";
|
|
2
|
+
import { useEffect, useState } from "react";
|
|
3
|
+
|
|
4
|
+
import { DETAILED_FLAG_CODES } from "./metadata";
|
|
3
5
|
|
|
4
6
|
export interface FlagProps {
|
|
5
7
|
/**
|
|
@@ -12,33 +14,40 @@ export interface FlagProps {
|
|
|
12
14
|
*/
|
|
13
15
|
intrinsicSize?: number;
|
|
14
16
|
className?: string;
|
|
15
|
-
loading?:
|
|
17
|
+
loading?: "lazy" | "eager";
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
const unknownFlagName =
|
|
20
|
+
const unknownFlagName = "wise";
|
|
19
21
|
|
|
20
22
|
export const Flag = ({
|
|
21
23
|
code,
|
|
22
24
|
intrinsicSize = 64,
|
|
23
25
|
className = undefined,
|
|
24
|
-
loading =
|
|
26
|
+
loading = "lazy",
|
|
25
27
|
}: FlagProps) => {
|
|
26
|
-
const [fallback, setFallback] = useState<
|
|
28
|
+
const [fallback, setFallback] = useState<"simple" | "unknown" | null>(null);
|
|
27
29
|
useEffect(() => {
|
|
28
30
|
setFallback(null);
|
|
29
31
|
}, [code]);
|
|
30
32
|
|
|
31
33
|
const detailed = intrinsicSize >= 150;
|
|
34
|
+
// Only get detailed svg if we know it exists, to avoid the performance hit of failing requests
|
|
32
35
|
const name =
|
|
33
|
-
fallback !==
|
|
34
|
-
? `${code.toLowerCase()}${
|
|
36
|
+
fallback !== "unknown"
|
|
37
|
+
? `${code.toLowerCase()}${
|
|
38
|
+
fallback == null &&
|
|
39
|
+
detailed &&
|
|
40
|
+
DETAILED_FLAG_CODES.includes(code.toLowerCase())
|
|
41
|
+
? "-detailed"
|
|
42
|
+
: ""
|
|
43
|
+
}`
|
|
35
44
|
: unknownFlagName;
|
|
36
45
|
|
|
37
46
|
return (
|
|
38
47
|
<img
|
|
39
|
-
className={clsx(
|
|
48
|
+
className={clsx("wds-flag", `wds-flag-${name}`, className)}
|
|
40
49
|
src={
|
|
41
|
-
process.env.NODE_ENV ===
|
|
50
|
+
process.env.NODE_ENV === "web-art-dev"
|
|
42
51
|
? `${name}.svg`
|
|
43
52
|
: `https://wise.com/web-art/assets/flags/${name}.svg`
|
|
44
53
|
}
|
|
@@ -47,7 +56,9 @@ export const Flag = ({
|
|
|
47
56
|
width={intrinsicSize}
|
|
48
57
|
height={intrinsicSize}
|
|
49
58
|
onError={() => {
|
|
50
|
-
setFallback((prev) =>
|
|
59
|
+
setFallback((prev) =>
|
|
60
|
+
prev == null && detailed ? "simple" : "unknown",
|
|
61
|
+
);
|
|
51
62
|
}}
|
|
52
63
|
/>
|
|
53
64
|
);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*
|
|
2
|
+
*
|
|
3
|
+
* DON'T MODIFY THIS FILE IT'S AUTO GENERATED
|
|
4
|
+
* See: `scripts/generate-flags-metadata.mjs`
|
|
5
|
+
*
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export const DETAILED_FLAG_CODES = ['zm', 'va', 'uy', 'us', 'ug', 'tw', 'tv', 'tm', 'sv', 'sm', 'si', 'sg', 'py', 'pt', 'ph', 'pe', 'pa', 'om', 'nz', 'np', 'ni', 'mz', 'my', 'mx', 'mt', 'mh', 'md', 'ls', 'lk', 'li', 'ki', 'ke', 'je', 'in', 'im', 'hr', 'hn', 'hm', 'hk', 'gt', 'gi', 'gg', 'fj', 'eur', 'es', 'eg', 'do', 'cn', 'by', 'br', 'bn', 'bf', 'ba', 'az', 'au', 'ar', 'an', 'am', 'al', 'ad'];
|