@wise/art 2.5.0-beta.8 → 2.6.0

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.
Files changed (108) hide show
  1. package/README.md +0 -1
  2. package/dist/Illustration.css +0 -19
  3. package/dist/common.d.ts +10 -14
  4. package/dist/common.d.ts.map +1 -0
  5. package/dist/flags/Flag.d.ts +13 -12
  6. package/dist/flags/Flag.d.ts.map +1 -0
  7. package/dist/flags/index.d.ts +3 -2
  8. package/dist/flags/index.d.ts.map +1 -0
  9. package/dist/illustrations/Illustration.d.ts +21 -20
  10. package/dist/illustrations/Illustration.d.ts.map +1 -0
  11. package/dist/illustrations/index.d.ts +5 -4
  12. package/dist/illustrations/index.d.ts.map +1 -0
  13. package/dist/illustrations/metadata.d.ts +69 -68
  14. package/dist/illustrations/metadata.d.ts.map +1 -0
  15. package/dist/index.d.ts +7 -9
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +161 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +159 -0
  20. package/dist/index.mjs.map +1 -0
  21. package/package.json +55 -42
  22. package/src/common.ts +11 -0
  23. package/src/flags/Flag.stories.tsx +19 -0
  24. package/src/flags/Flag.tsx +40 -0
  25. package/src/flags/index.ts +2 -0
  26. package/src/illustrations/Illustration.css +8 -0
  27. package/src/illustrations/Illustration.stories.tsx +33 -0
  28. package/src/illustrations/Illustration.tsx +95 -0
  29. package/src/illustrations/index.ts +5 -0
  30. package/src/illustrations/metadata.ts +141 -0
  31. package/src/index.ts +7 -0
  32. package/dist/CheckMark-a7c4192e.js +0 -2
  33. package/dist/CheckMark-a7c4192e.js.map +0 -1
  34. package/dist/CheckMark-c09041e4.js +0 -2
  35. package/dist/CheckMark-c09041e4.js.map +0 -1
  36. package/dist/Confetti-535240b0.js +0 -2
  37. package/dist/Confetti-535240b0.js.map +0 -1
  38. package/dist/Confetti-a3ce33fb.js +0 -2
  39. package/dist/Confetti-a3ce33fb.js.map +0 -1
  40. package/dist/Flower-de7f810e.js +0 -2
  41. package/dist/Flower-de7f810e.js.map +0 -1
  42. package/dist/Flower-f066e1ae.js +0 -2
  43. package/dist/Flower-f066e1ae.js.map +0 -1
  44. package/dist/Globe-5c7583f2.js +0 -2
  45. package/dist/Globe-5c7583f2.js.map +0 -1
  46. package/dist/Globe-d727ac2f.js +0 -2
  47. package/dist/Globe-d727ac2f.js.map +0 -1
  48. package/dist/Graph-0e6b9c58.js +0 -2
  49. package/dist/Graph-0e6b9c58.js.map +0 -1
  50. package/dist/Graph-3280d218.js +0 -2
  51. package/dist/Graph-3280d218.js.map +0 -1
  52. package/dist/Jars-32112246.js +0 -2
  53. package/dist/Jars-32112246.js.map +0 -1
  54. package/dist/Jars-fd0866ef.js +0 -2
  55. package/dist/Jars-fd0866ef.js.map +0 -1
  56. package/dist/Lock-21c35a1e.js +0 -2
  57. package/dist/Lock-21c35a1e.js.map +0 -1
  58. package/dist/Lock-d249e9ee.js +0 -2
  59. package/dist/Lock-d249e9ee.js.map +0 -1
  60. package/dist/MagnifyingGlass-d0d5d3f6.js +0 -2
  61. package/dist/MagnifyingGlass-d0d5d3f6.js.map +0 -1
  62. package/dist/MagnifyingGlass-dd6ac241.js +0 -2
  63. package/dist/MagnifyingGlass-dd6ac241.js.map +0 -1
  64. package/dist/Marble-1a42836c.js +0 -2
  65. package/dist/Marble-1a42836c.js.map +0 -1
  66. package/dist/Marble-d00298d5.js +0 -2
  67. package/dist/Marble-d00298d5.js.map +0 -1
  68. package/dist/MarbleCard-af7cf06b.js +0 -2
  69. package/dist/MarbleCard-af7cf06b.js.map +0 -1
  70. package/dist/MarbleCard-edfe8044.js +0 -2
  71. package/dist/MarbleCard-edfe8044.js.map +0 -1
  72. package/dist/MultiCurrency-76c41e39.js +0 -2
  73. package/dist/MultiCurrency-76c41e39.js.map +0 -1
  74. package/dist/MultiCurrency-f13609fe.js +0 -2
  75. package/dist/MultiCurrency-f13609fe.js.map +0 -1
  76. package/dist/Plane-3e2e27a1.js +0 -2
  77. package/dist/Plane-3e2e27a1.js.map +0 -1
  78. package/dist/Plane-436856f6.js +0 -2
  79. package/dist/Plane-436856f6.js.map +0 -1
  80. package/dist/Scene-ddc93fb1.js +0 -2
  81. package/dist/Scene-ddc93fb1.js.map +0 -1
  82. package/dist/Scene-f6751467.js +0 -2
  83. package/dist/Scene-f6751467.js.map +0 -1
  84. package/dist/flags/Flag.stories.d.ts +0 -6
  85. package/dist/illustrations/Illustration.stories.d.ts +0 -19
  86. package/dist/illustrations3d/Illustration3d.d.ts +0 -10
  87. package/dist/illustrations3d/Illustration3d.stories.d.ts +0 -18
  88. package/dist/illustrations3d/Scene.d.ts +0 -8
  89. package/dist/illustrations3d/index.d.ts +0 -4
  90. package/dist/illustrations3d/models/CheckMark.d.ts +0 -3
  91. package/dist/illustrations3d/models/Confetti.d.ts +0 -3
  92. package/dist/illustrations3d/models/Flower.d.ts +0 -3
  93. package/dist/illustrations3d/models/Globe.d.ts +0 -3
  94. package/dist/illustrations3d/models/Graph.d.ts +0 -3
  95. package/dist/illustrations3d/models/Jars.d.ts +0 -3
  96. package/dist/illustrations3d/models/Lock.d.ts +0 -3
  97. package/dist/illustrations3d/models/MagnifyingGlass.d.ts +0 -3
  98. package/dist/illustrations3d/models/Marble.d.ts +0 -3
  99. package/dist/illustrations3d/models/MarbleCard.d.ts +0 -3
  100. package/dist/illustrations3d/models/MultiCurrency.d.ts +0 -3
  101. package/dist/illustrations3d/models/Plane.d.ts +0 -3
  102. package/dist/illustrations3d/utils.d.ts +0 -8
  103. package/dist/index-b62ef291.js +0 -2
  104. package/dist/index-b62ef291.js.map +0 -1
  105. package/dist/index-e4ef8220.js +0 -2
  106. package/dist/index-e4ef8220.js.map +0 -1
  107. package/dist/index.module.js +0 -2
  108. package/dist/index.module.js.map +0 -1
package/dist/index.mjs ADDED
@@ -0,0 +1,159 @@
1
+ import { useState, useEffect, forwardRef } from 'react';
2
+ import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
+ import { clsx } from 'clsx';
4
+
5
+ const unknownFlagName = 'wise';
6
+ const Flag = ({
7
+ code,
8
+ intrinsicSize = 64
9
+ }) => {
10
+ const [fallback, setFallback] = useState(null);
11
+ useEffect(() => {
12
+ setFallback(null);
13
+ }, [code]);
14
+ const detailed = intrinsicSize >= 150;
15
+ const name = fallback !== 'unknown' ? `${code.toLowerCase()}${fallback == null && detailed ? '-detailed' : ''}` : unknownFlagName;
16
+ return /*#__PURE__*/jsx("img", {
17
+ src: `https://wise.com/web-art/assets/flags/${name}.svg`,
18
+ alt: "",
19
+ width: intrinsicSize,
20
+ height: intrinsicSize,
21
+ onError: () => {
22
+ setFallback(prev => prev == null && detailed ? 'simple' : 'unknown');
23
+ }
24
+ });
25
+ };
26
+
27
+ var Sizes;
28
+ (function (Sizes) {
29
+ Sizes["SMALL"] = "small";
30
+ Sizes["MEDIUM"] = "medium";
31
+ Sizes["LARGE"] = "large";
32
+ })(Sizes || (Sizes = {}));
33
+
34
+ const imageSizes = {
35
+ [Sizes.SMALL]: 200,
36
+ [Sizes.MEDIUM]: 300,
37
+ [Sizes.LARGE]: 500
38
+ };
39
+ const Illustration = /*#__PURE__*/forwardRef(({
40
+ id,
41
+ name,
42
+ alt,
43
+ loading = 'eager',
44
+ className,
45
+ size = Sizes.MEDIUM,
46
+ disablePadding = false
47
+ }, ref) => {
48
+ const {
49
+ SMALL,
50
+ MEDIUM
51
+ } = Sizes;
52
+ return name ? /*#__PURE__*/jsxs("picture", {
53
+ children: [size === Sizes.LARGE || size === Sizes.MEDIUM ? /*#__PURE__*/jsxs(Fragment, {
54
+ children: [/*#__PURE__*/jsx("source", {
55
+ width: imageSizes[SMALL],
56
+ height: imageSizes[SMALL],
57
+ media: "(max-width: 575px)",
58
+ srcSet: `${defineSrc(name, SMALL, '1x')}, ${defineSrc(name, SMALL, '2x')} 2x`
59
+ }), size !== Sizes.MEDIUM ? /*#__PURE__*/jsx("source", {
60
+ width: imageSizes[MEDIUM],
61
+ height: imageSizes[MEDIUM],
62
+ media: "(max-width: 992px)",
63
+ srcSet: `${defineSrc(name, MEDIUM, '1x')}, ${defineSrc(name, MEDIUM, '2x')} 2x`
64
+ }) : null]
65
+ }) : null, /*#__PURE__*/jsx("img", {
66
+ id: id,
67
+ ref: ref,
68
+ alt: alt ?? name.replace('-', ' '),
69
+ "data-testid": `wds-${name}-illustration`,
70
+ className: clsx(`wds-illustration wds-illustration-${name}`, className, !disablePadding && 'wds-illustration-padding'),
71
+ loading: loading,
72
+ src: defineSrc(name, size, '1x'),
73
+ srcSet: `${defineSrc(name, size, '2x')} 2x`,
74
+ width: imageSizes[size],
75
+ height: imageSizes[size]
76
+ })]
77
+ }) : null;
78
+ });
79
+ function defineSrc(illustration, size, descriptor) {
80
+ return `https://wise.com/web-art/assets/illustrations/${illustration}-${size}@${descriptor}.webp`;
81
+ }
82
+
83
+ /*
84
+ *
85
+ * DON'T MODIFY THIS FILE IT'S AUTO GENERATED
86
+ * See: `scripts/generate-i10s-metadata.mjs`
87
+ *
88
+ */
89
+ var Assets;
90
+ (function (Assets) {
91
+ Assets["BELL"] = "bell";
92
+ Assets["BRIEFCASE"] = "briefcase";
93
+ Assets["BUSINESS_CARD"] = "business-card";
94
+ Assets["CALENDAR"] = "calendar";
95
+ Assets["CHECK_MARK"] = "check-mark";
96
+ Assets["CLOSED_WINDOW"] = "closed-window";
97
+ Assets["COIN_PILE_DOWN"] = "coin-pile-down";
98
+ Assets["COIN_PILE_UP"] = "coin-pile-up";
99
+ Assets["CONFETTI"] = "confetti";
100
+ Assets["CONSTRUCTION_FENCE"] = "construction-fence";
101
+ Assets["CONVERT"] = "convert";
102
+ Assets["COOKIE"] = "cookie";
103
+ Assets["DIGITAL_CARD_2"] = "digital-card-2";
104
+ Assets["DIGITAL_CARD"] = "digital-card";
105
+ Assets["DOCUMENTS"] = "documents";
106
+ Assets["DOOR"] = "door";
107
+ Assets["ECO_CARD"] = "eco-card";
108
+ Assets["ELECTRIC_PLUG"] = "electric-plug";
109
+ Assets["EMAIL_SUCCESS"] = "email-success";
110
+ Assets["EMAIL"] = "email";
111
+ Assets["EXCLAMATION_MARK"] = "exclamation-mark";
112
+ Assets["FLAG"] = "flag";
113
+ Assets["FLOWER"] = "flower";
114
+ Assets["GEAR"] = "gear";
115
+ Assets["GLOBE"] = "globe";
116
+ Assets["GRAPH"] = "graph";
117
+ Assets["HEART_2"] = "heart-2";
118
+ Assets["HEART_3"] = "heart-3";
119
+ Assets["HEART_4"] = "heart-4";
120
+ Assets["HEART_5"] = "heart-5";
121
+ Assets["HEART"] = "heart";
122
+ Assets["HOUSE"] = "house";
123
+ Assets["ID_CARD"] = "id-card";
124
+ Assets["INFINITE"] = "infinite";
125
+ Assets["INVITE_LETTER"] = "invite-letter";
126
+ Assets["JARS"] = "jars";
127
+ Assets["KEY"] = "key";
128
+ Assets["LIGHT_BULB"] = "light-bulb";
129
+ Assets["LOCK"] = "lock";
130
+ Assets["MAGNIFYING_GLASS"] = "magnifying-glass";
131
+ Assets["MAP"] = "map";
132
+ Assets["MARBLE_CARD_BUSINESS"] = "marble-card-business";
133
+ Assets["MARBLE_CARD"] = "marble-card";
134
+ Assets["MARBLE"] = "marble";
135
+ Assets["MEGAPHONE"] = "megaphone";
136
+ Assets["MULTI_CURRENCY"] = "multi-currency";
137
+ Assets["ONE_INVITE_LETTER_OPENED"] = "one-invite-letter-opened";
138
+ Assets["PALM_TREE"] = "palm-tree";
139
+ Assets["PERCENTAGE"] = "percentage";
140
+ Assets["PERSONAL_CARD"] = "personal-card";
141
+ Assets["PHONES"] = "phones";
142
+ Assets["PIE_CHART"] = "pie-chart";
143
+ Assets["PLANE_2"] = "plane-2";
144
+ Assets["PLANE"] = "plane";
145
+ Assets["PUZZLE_PIECES"] = "puzzle-pieces";
146
+ Assets["QUESTION_MARK"] = "question-mark";
147
+ Assets["RECEIVE"] = "receive";
148
+ Assets["REMINDER_LETTER"] = "reminder-letter";
149
+ Assets["SAND_TIMER"] = "sand-timer";
150
+ Assets["SHOPPING_BAG"] = "shopping-bag";
151
+ Assets["SKIP_AUTHENTICATION"] = "skip-authentication";
152
+ Assets["SPEECH_BUBBLE"] = "speech-bubble";
153
+ Assets["TOOL"] = "tool";
154
+ Assets["TWO_INVITE_LETTERS_OPENED"] = "two-invite-letters-opened";
155
+ Assets["WALLET"] = "wallet";
156
+ })(Assets || (Assets = {}));
157
+
158
+ export { Assets, Flag, Illustration, Sizes };
159
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/flags/Flag.tsx","../src/common.ts","../src/illustrations/Illustration.tsx","../src/illustrations/metadata.ts"],"sourcesContent":[null,null,null,null],"names":["unknownFlagName","Flag","code","intrinsicSize","useEffect","setFallback","name","fallback","toLowerCase","detailed","_jsx","src","height","onError","Sizes","imageSizes","SMALL","MEDIUM","Illustration","forwardRef","id","alt","loading","className","size","disablePadding","ref","_jsxs","children","LARGE","_Fragment","width","media","srcSet","defineSrc","descriptor","Assets"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wise/art",
3
- "version": "2.5.0-beta.8",
3
+ "version": "2.6.0",
4
4
  "license": "MIT",
5
5
  "description": "React library for art elements in UI",
6
6
  "homepage": "https://github.com/transferwise/web-art#readme",
@@ -8,16 +8,25 @@
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/transferwise/web-art.git"
10
10
  },
11
- "source": "src/index.ts",
12
- "main": "dist/index.js",
13
- "module": "./dist/index.module.js",
14
- "types": "dist/index.d.ts",
11
+ "author": "Wise Payments Ltd.",
12
+ "sideEffects": false,
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/index.d.ts",
16
+ "import": "./dist/index.mjs",
17
+ "require": "./dist/index.js"
18
+ },
19
+ "./dist/Illustration.css": "./dist/Illustration.css"
20
+ },
21
+ "main": "./dist/index.js",
22
+ "types": "./dist/index.d.ts",
15
23
  "files": [
16
- "dist"
24
+ "dist/",
25
+ "src/",
26
+ "!**/*.tsbuildinfo"
17
27
  ],
18
28
  "scripts": {
19
29
  "setup": "yarn && yarn build",
20
- "load-3d-i10s": "node ./scripts/load-3d-i10s.mjs",
21
30
  "load-i10s": "copyfiles -u 3 node_modules/wise-atoms/illustrations/**/*.png temp",
22
31
  "load-flags": "yarn load-country-flags && yarn load-currency-flags && yarn transform-flags && yarn convert-flags-svg-to-png",
23
32
  "load-country-flags": "copyfiles -u 3 node_modules/wise-atoms/flags/*.svg s3-bucket/flags && node ./scripts/generate-country-flags.mjs",
@@ -26,66 +35,70 @@
26
35
  "convert-flags-svg-to-png": "node ./scripts/convert-flags-svg-to-png.mjs",
27
36
  "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",
28
37
  "generate-i10s-metadata": "node ./scripts/generate-i10s-metadata.mjs && eslint 'src/illustrations/metadata.ts' --fix",
29
- "bundle": "rm -rf dist && microbundle --jsxFragment React.Fragment --jsx React.createElement --format es,cjs && cpx src/illustrations/Illustration.css dist/",
38
+ "bundle": "rm -rf dist && rollup --config --sourcemap && cpx src/illustrations/Illustration.css dist/",
30
39
  "cleanup": "rm -rf temp",
31
- "build": "yarn load-i10s && yarn load-3d-i10s && yarn convert-i10s-png-to-webp && yarn generate-i10s-metadata && yarn load-flags && yarn bundle && yarn cleanup",
32
- "start": "start-storybook -p 3001",
40
+ "build": "yarn load-i10s && yarn convert-i10s-png-to-webp && yarn generate-i10s-metadata && yarn load-flags && yarn bundle && yarn cleanup",
41
+ "start": "storybook dev -p 3001",
33
42
  "dev": "yarn start",
34
- "test": "echo 'release-to-github-with-changelog-pre-release-checks'",
43
+ "test": "release-to-github-with-changelog-pre-release-checks",
35
44
  "lint-fix": "eslint 'src/**/*.{js,ts,tsx}' 'scripts/*.{mjs,js,ts,tsx}' --fix",
36
- "build-docs": "build-storybook -o docs",
37
- "deploy-docs": "deploy-to-github-pages -d docs -m main"
45
+ "build-docs": "storybook build -o docs && touch ./docs/.nojekyll"
38
46
  },
39
47
  "dependencies": {
40
- "three": "^0.154.0",
41
- "@react-three/fiber": "^8.13.5",
42
- "@react-three/drei": "^9.78.2"
48
+ "@babel/runtime": "^7.22.15",
49
+ "clsx": "^2.0.0"
43
50
  },
44
51
  "devDependencies": {
45
- "@babel/preset-env": "^7.18.9",
46
- "@babel/preset-react": "^7.18.6",
47
- "@babel/preset-typescript": "^7.18.6",
48
- "@storybook/addon-essentials": "^6.5.13",
49
- "@storybook/react": "^6.5.13",
52
+ "@babel/core": "^7.22.15",
53
+ "@babel/plugin-transform-runtime": "^7.22.15",
54
+ "@babel/preset-env": "^7.22.15",
55
+ "@babel/preset-react": "^7.22.15",
56
+ "@babel/preset-typescript": "^7.22.15",
57
+ "@rollup/plugin-babel": "^6.0.3",
58
+ "@rollup/plugin-typescript": "^11.1.3",
59
+ "@storybook/addon-essentials": "^7.4.0",
60
+ "@storybook/react": "^7.4.0",
61
+ "@storybook/react-vite": "^7.4.0",
50
62
  "@transferwise/eslint-config": "^8.0.0",
51
- "@tsconfig/node16": "^1.0.3",
52
- "@types/glob": "^8.0.0",
53
- "@types/imagemin": "^8.0.0",
63
+ "@tsconfig/recommended": "^1.0.2",
64
+ "@types/babel__core": "^7.20.1",
65
+ "@types/glob": "^8.1.0",
66
+ "@types/imagemin": "^8.0.1",
54
67
  "@types/imagemin-webp": "^7.0.0",
55
- "@types/jest": "^28.1.6",
56
- "@types/jsdom": "^21.1.0",
57
- "@types/react": "^18.0.15",
58
- "@types/react-dom": "^18.0.6",
59
- "@types/three": "^0.154.0",
60
- "classnames": "^2.3.1",
68
+ "@types/jest": "^28.1.8",
69
+ "@types/jsdom": "^21.1.2",
70
+ "@types/react": "^18.2.21",
71
+ "@types/react-dom": "^18.2.7",
72
+ "babel-plugin-optimize-clsx": "^2.6.2",
61
73
  "copyfiles": "^2.4.1",
62
74
  "cpx": "^1.5.0",
63
- "deploy-to-github-pages": "^1.0.1",
64
- "eslint": "^8.21.0",
65
- "glob": "^8.0.3",
75
+ "eslint": "^8.48.0",
76
+ "glob": "^8.1.0",
66
77
  "imagemin": "^8.0.1",
67
78
  "imagemin-webp": "^7.0.0",
68
- "gltf-pipeline": "^4.1.0",
69
79
  "jest": "^28.1.3",
70
80
  "jest-environment-jsdom": "^28.1.3",
71
- "jsdom": "~21.1.1",
72
- "microbundle": "^0.15.1",
73
- "prettier": "^2.7.1",
81
+ "jsdom": "~21.1.2",
82
+ "prettier": "^2.8.8",
74
83
  "react": "^18.2.0",
75
84
  "react-dom": "^18.2.0",
76
85
  "release-to-github-with-changelog": "^1.2.4",
77
- "sharp": "^0.32.1",
86
+ "sharp": "^0.32.5",
87
+ "storybook": "^7.4.0",
78
88
  "ts-node": "10.9.1",
79
- "typescript": "^4.7.4",
80
- "wise-atoms": "git+ssh://git@github.com:transferwise/wise-atoms.git#c2683d557cf6f7b4f6226ea8f0e67bc797e7fb2e"
89
+ "typescript": "^4.9.5",
90
+ "vite": "^4.4.9",
91
+ "wise-atoms": "git+ssh://git@github.com:transferwise/wise-atoms.git#bb7a63aa66453af9c77e754586381ac5b996a176"
81
92
  },
82
93
  "peerDependencies": {
83
- "classnames": "^2.3",
84
94
  "react": ">=17",
85
95
  "react-dom": ">=17"
86
96
  },
87
97
  "prettier": "@transferwise/eslint-config/.prettierrc.js",
88
98
  "publishConfig": {
89
99
  "access": "public"
100
+ },
101
+ "resolutions": {
102
+ "jackspeak": "2.1.1"
90
103
  }
91
- }
104
+ }
package/src/common.ts ADDED
@@ -0,0 +1,11 @@
1
+ export enum Sizes {
2
+ SMALL = 'small',
3
+ MEDIUM = 'medium',
4
+ LARGE = 'large',
5
+ }
6
+
7
+ export type LargeSize = 'large';
8
+ export type MediumSize = 'medium';
9
+ export type SmallSize = 'small';
10
+
11
+ export type Descriptors = '1x' | '1.5x' | '2x' | '3x' | '4x';
@@ -0,0 +1,19 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+
3
+ import { Flag } from './Flag';
4
+
5
+ const meta: Meta<typeof Flag> = {
6
+ component: Flag,
7
+ title: 'Flag',
8
+ };
9
+ export default meta;
10
+
11
+ type Story = StoryObj<typeof Flag>;
12
+
13
+ export const Basic: Story = {
14
+ render: (args) => <Flag {...args} />,
15
+ args: {
16
+ code: 'GBP',
17
+ intrinsicSize: 64,
18
+ },
19
+ };
@@ -0,0 +1,40 @@
1
+ import { useEffect, useState } from 'react';
2
+
3
+ export interface FlagProps {
4
+ /**
5
+ * Two-letter country code (ISO 3166-1 alpha-2) or three-letter currency code (ISO 4217).
6
+ */
7
+ code: string;
8
+
9
+ /**
10
+ * Width and height to reserve for the underlying image, in pixels. A detailed variant is shown from 150px and above.
11
+ */
12
+ intrinsicSize?: number;
13
+ }
14
+
15
+ const unknownFlagName = 'wise';
16
+
17
+ export const Flag = ({ code, intrinsicSize = 64 }: FlagProps) => {
18
+ const [fallback, setFallback] = useState<'simple' | 'unknown' | null>(null);
19
+ useEffect(() => {
20
+ setFallback(null);
21
+ }, [code]);
22
+
23
+ const detailed = intrinsicSize >= 150;
24
+ const name =
25
+ fallback !== 'unknown'
26
+ ? `${code.toLowerCase()}${fallback == null && detailed ? '-detailed' : ''}`
27
+ : unknownFlagName;
28
+
29
+ return (
30
+ <img
31
+ src={`https://wise.com/web-art/assets/flags/${name}.svg`}
32
+ alt=""
33
+ width={intrinsicSize}
34
+ height={intrinsicSize}
35
+ onError={() => {
36
+ setFallback((prev) => (prev == null && detailed ? 'simple' : 'unknown'));
37
+ }}
38
+ />
39
+ );
40
+ };
@@ -0,0 +1,2 @@
1
+ export { Flag } from './Flag';
2
+ export type { FlagProps } from './Flag';
@@ -0,0 +1,8 @@
1
+ /* Prevent image overflow viewport or container element */
2
+ img.wds-illustration {
3
+ max-width: 100%;
4
+ }
5
+
6
+ .wds-illustration-padding {
7
+ padding: 24px;
8
+ }
@@ -0,0 +1,33 @@
1
+ /* eslint-disable react/forbid-dom-props */
2
+ import React from 'react';
3
+
4
+ import Illustration, { Props as IllustrationProps } from './Illustration';
5
+ import { Assets, IllustrationNames } from './metadata';
6
+
7
+ export default {
8
+ component: Illustration,
9
+ title: 'Illustration',
10
+ };
11
+
12
+ export const All = () => {
13
+ const assetNames = Object.values(Assets);
14
+ return (
15
+ <>
16
+ <div>Total number of illustrations: {assetNames.length}</div>
17
+ {Object.values(Assets).map((assetName) => (
18
+ <p key={assetName}>
19
+ Asset: <code>{assetName}</code>
20
+ <Illustration alt={assetName} key={assetName} name={assetName as IllustrationNames} />
21
+ </p>
22
+ ))}
23
+ </>
24
+ );
25
+ };
26
+
27
+ export const Individual = ({ name = Assets.CHECK_MARK, ...props }: IllustrationProps) => {
28
+ return (
29
+ <>
30
+ <Illustration name={name} {...props} />
31
+ </>
32
+ );
33
+ };
@@ -0,0 +1,95 @@
1
+ import { clsx } from 'clsx';
2
+ import { forwardRef } from 'react';
3
+
4
+ import {
5
+ type LargeSize,
6
+ type MediumSize,
7
+ type SmallSize,
8
+ type Descriptors,
9
+ Sizes,
10
+ } from './../common';
11
+ import type { IllustrationNames } from './metadata';
12
+
13
+ // Picking only a few props from Image element to avoid breaking change
14
+ // as in future underlying element might change
15
+ type ImgProps = Pick<React.ImgHTMLAttributes<HTMLImageElement>, 'id' | 'className'>;
16
+
17
+ export type IllustrationSizes = LargeSize | MediumSize | SmallSize;
18
+
19
+ export type Props = {
20
+ name: IllustrationNames;
21
+ alt: string;
22
+ size?: IllustrationSizes;
23
+ loading?: 'eager' | 'lazy';
24
+ disablePadding?: boolean;
25
+ } & ImgProps;
26
+
27
+ const imageSizes = {
28
+ [Sizes.SMALL]: 200,
29
+ [Sizes.MEDIUM]: 300,
30
+ [Sizes.LARGE]: 500,
31
+ };
32
+
33
+ const Illustration = forwardRef<HTMLImageElement, Props>(
34
+ (
35
+ {
36
+ id,
37
+ name,
38
+ alt,
39
+ loading = 'eager',
40
+ className,
41
+ size = Sizes.MEDIUM,
42
+ disablePadding = false,
43
+ }: Props,
44
+ ref,
45
+ ) => {
46
+ const { SMALL, MEDIUM } = Sizes;
47
+
48
+ return name ? (
49
+ <picture>
50
+ {size === Sizes.LARGE || size === Sizes.MEDIUM ? (
51
+ <>
52
+ <source
53
+ width={imageSizes[SMALL]}
54
+ height={imageSizes[SMALL]}
55
+ media="(max-width: 575px)"
56
+ srcSet={`${defineSrc(name, SMALL, '1x')}, ${defineSrc(name, SMALL, '2x')} 2x`}
57
+ />
58
+ {size !== Sizes.MEDIUM ? (
59
+ <source
60
+ width={imageSizes[MEDIUM]}
61
+ height={imageSizes[MEDIUM]}
62
+ media="(max-width: 992px)"
63
+ srcSet={`${defineSrc(name, MEDIUM, '1x')}, ${defineSrc(name, MEDIUM, '2x')} 2x`}
64
+ />
65
+ ) : null}
66
+ </>
67
+ ) : null}
68
+
69
+ <img
70
+ id={id}
71
+ ref={ref}
72
+ alt={alt ?? name.replace('-', ' ')}
73
+ data-testid={`wds-${name}-illustration`}
74
+ className={clsx(
75
+ 'wds-illustration',
76
+ `wds-illustration-${name}`,
77
+ { 'wds-illustration-padding': !disablePadding },
78
+ className,
79
+ )}
80
+ loading={loading}
81
+ src={defineSrc(name, size, '1x')}
82
+ srcSet={`${defineSrc(name, size, '2x')} 2x`}
83
+ width={imageSizes[size]}
84
+ height={imageSizes[size]}
85
+ />
86
+ </picture>
87
+ ) : null;
88
+ },
89
+ );
90
+
91
+ function defineSrc(illustration: string, size: IllustrationSizes, descriptor: Descriptors) {
92
+ return `https://wise.com/web-art/assets/illustrations/${illustration}-${size}@${descriptor}.webp`;
93
+ }
94
+
95
+ export default Illustration;
@@ -0,0 +1,5 @@
1
+ export { default } from './Illustration';
2
+ export type { Props as IllustrationProps } from './Illustration';
3
+
4
+ export { Assets } from './metadata';
5
+ export type { IllustrationNames } from './metadata';