@edvisor/product-language 0.2.0 → 0.3.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.
- package/.eslintrc.json +14 -6
- package/package.json +2 -3
- package/project.json +18 -7
- package/src/README.md +61 -0
- package/src/helpers/index.ts +2 -1
- package/src/helpers/playground.ts +16 -0
- package/src/lib/components/badge/badge.tsx +8 -17
- package/src/lib/components/badge/stories/badge.stories.mdx +44 -0
- package/src/lib/components/badge/stories/components.tsx +49 -0
- package/src/lib/components/card/card.test.tsx +4 -5
- package/src/lib/components/card/card.tsx +2 -2
- package/src/lib/components/card/components/card-section-slot.tsx +2 -2
- package/src/lib/components/card/storybook/card.stories.mdx +1 -1
- package/src/lib/components/card/storybook/components.tsx +6 -23
- package/src/lib/components/checkbox/checkbox.tsx +34 -95
- package/src/lib/components/checkbox/helpers.tsx +100 -0
- package/src/lib/components/checkbox/stories/checkbox.stories.mdx +27 -24
- package/src/lib/components/checkbox/stories/components.tsx +63 -15
- package/src/lib/components/divider/stories/divider.stories.mdx +7 -13
- package/src/lib/components/flag/flag-size-flags.tsx +55 -0
- package/src/lib/components/flag/flag.list.tsx +788 -0
- package/src/lib/components/flag/flag.test.tsx +65 -0
- package/src/lib/components/flag/flag.tsx +97 -0
- package/src/lib/components/flag/index.tsx +1 -0
- package/src/lib/components/flag/stories/components.tsx +403 -0
- package/src/lib/components/flag/stories/flag.stories.mdx +48 -0
- package/src/lib/components/flag/stories/playGround-select.tsx +145 -0
- package/src/lib/components/icon/icon-list.tsx +135 -0
- package/src/lib/components/icon/icon.test.tsx +48 -0
- package/src/lib/components/icon/icon.tsx +181 -0
- package/src/lib/components/icon/index.tsx +1 -0
- package/src/lib/components/icon/stories/components.tsx +282 -0
- package/src/lib/components/icon/stories/icon.stories.mdx +65 -0
- package/src/lib/components/index.ts +5 -0
- package/src/lib/components/input-field/components/labeled-input.tsx +7 -14
- package/src/lib/components/input-field/components/stepper.tsx +4 -3
- package/src/lib/components/input-field/input-field.test.tsx +5 -6
- package/src/lib/components/input-field/input-field.tsx +8 -8
- package/src/lib/components/input-field/storybook/components.tsx +9 -16
- package/src/lib/components/link/storybook/link.stories.mdx +1 -0
- package/src/lib/components/molecules/avatar/avatar-size-flags.tsx +3 -3
- package/src/lib/components/molecules/avatar/avatar.tsx +2 -2
- package/src/lib/components/molecules/avatar/stories/avatar.stories.mdx +18 -21
- package/src/lib/components/molecules/button/button-flags.tsx +120 -15
- package/src/lib/components/molecules/button/button.test.tsx +9 -9
- package/src/lib/components/molecules/button/button.tsx +61 -78
- package/src/lib/components/molecules/button/stories/button.stories.mdx +43 -42
- package/src/lib/components/molecules/button/stories/components.tsx +6 -8
- package/src/lib/components/molecules/input-checkbox/input-checkbox.tsx +23 -24
- package/src/lib/components/molecules/input-checkbox/stories/components.tsx +32 -15
- package/src/lib/components/molecules/input-checkbox/stories/input-checkbox.stories.mdx +6 -8
- package/src/lib/components/organisms/multi-choice-list/multi-choice-list.tsx +7 -8
- package/src/lib/components/organisms/multi-choice-list/stories/components.tsx +3 -5
- package/src/lib/components/organisms/multi-choice-list/stories/multi-choice-list.stories.mdx +4 -4
- package/src/lib/components/spinner/spinner.test.tsx +2 -2
- package/src/lib/components/spinner/spinner.tsx +15 -28
- package/src/lib/components/spinner/stories/components.tsx +33 -2
- package/src/lib/components/spinner/stories/spinner.stories.mdx +3 -10
- package/src/lib/components/tabs/components/index.ts +1 -0
- package/src/lib/components/tabs/components/tab.tsx +62 -0
- package/src/lib/components/tabs/index.tsx +1 -0
- package/src/lib/components/tabs/storybook/components.tsx +282 -0
- package/src/lib/components/tabs/storybook/tabs.stories.mdx +97 -0
- package/src/lib/components/tabs/tabs.test.tsx +86 -0
- package/src/lib/components/tabs/tabs.tsx +101 -0
- package/src/lib/components/tag/components/close-button.tsx +85 -0
- package/src/lib/components/tag/components/index.ts +2 -0
- package/src/lib/components/tag/components/tag-label.tsx +44 -0
- package/src/lib/components/tag/index.tsx +1 -0
- package/src/lib/components/tag/stories/components.tsx +86 -0
- package/src/lib/components/tag/stories/tag.stories.mdx +42 -0
- package/src/lib/components/tag/tag.test.tsx +36 -0
- package/src/lib/components/tag/tag.tsx +33 -0
- package/src/lib/components/thumbnail/thumbnail.tsx +7 -2
- package/src/lib/components/typography/storybook/components.tsx +47 -15
- package/src/lib/components/typography/storybook/typography.stories.mdx +6 -4
- package/src/lib/components/typography/typography.test.tsx +34 -30
- package/src/lib/components/typography/typography.tsx +61 -19
- package/src/lib/foundations/color-system/base-palette/base-palette.ts +0 -1
- package/src/lib/foundations/color-system/color-guidelines/color-guidelines.ts +5 -4
- package/src/lib/foundations/color-system/components/color-sample.tsx +3 -3
- package/src/lib/foundations/typography/fonts.ts +205 -0
- package/src/lib/foundations/typography/text-aspect-flags.ts +11 -4
- package/src/lib/foundations/typography/typography.tsx +38 -33
- package/src/lib/helpers/numbers.ts +14 -0
- package/src/lib/helpers/safe-navigation.ts +10 -0
- package/src/lib/helpers/slots.test.tsx +98 -0
- package/src/lib/helpers/slots.tsx +93 -12
- package/.storybook/preview-head.html +0 -1
- package/src/lib/components/badge/badge.stories.tsx +0 -16
- package/src/lib/components/checkbox/components/components.tsx +0 -59
- package/src/lib/components/checkbox/stories/index.tsx +0 -1
- package/src/lib/components/molecules/input-checkbox/stories/index.tsx +0 -1
- package/src/lib/components/organisms/multi-choice-list/stories/index.tsx +0 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react'
|
|
2
|
+
import { Flag } from './index'
|
|
3
|
+
|
|
4
|
+
describe('Flag Tests', () => {
|
|
5
|
+
describe('Flag Tests', () => {
|
|
6
|
+
it('should render the flag', async () => {
|
|
7
|
+
render(
|
|
8
|
+
<Flag code='CA'/>
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
const flag = screen.getByRole('img')
|
|
12
|
+
|
|
13
|
+
expect(flag.closest('i')).toBeInTheDocument()
|
|
14
|
+
expect(flag).toBeInTheDocument()
|
|
15
|
+
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
it('should render the large flag', async () => {
|
|
19
|
+
render(
|
|
20
|
+
<Flag large code='CA'/>
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
const flag = screen.getByRole('img')
|
|
24
|
+
|
|
25
|
+
expect(flag).toBeInTheDocument()
|
|
26
|
+
expect(flag).toHaveStyle({width: '32px', height: '24px'})
|
|
27
|
+
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
it('should render the medium flag', async () => {
|
|
31
|
+
render(
|
|
32
|
+
<Flag medium code='CA'/>
|
|
33
|
+
)
|
|
34
|
+
|
|
35
|
+
const flag = screen.getByRole('img')
|
|
36
|
+
|
|
37
|
+
expect(flag).toBeInTheDocument()
|
|
38
|
+
expect(flag).toHaveStyle({width: '20px', height: '20px'})
|
|
39
|
+
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
it('should apply a class to the container', async () => {
|
|
43
|
+
render(
|
|
44
|
+
<Flag medium code='CA' className='foo'/>
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
const flag = screen.getByRole('img')
|
|
48
|
+
|
|
49
|
+
expect(flag.closest('i')).toHaveClass('foo')
|
|
50
|
+
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
it('should apply styles to the container', async () => {
|
|
54
|
+
render(
|
|
55
|
+
<Flag medium code='CA' style={{display: 'block'}}/>
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
const flag = screen.getByRole('img')
|
|
59
|
+
|
|
60
|
+
expect(flag.closest('i')).toHaveStyle({display: 'block'})
|
|
61
|
+
|
|
62
|
+
})
|
|
63
|
+
|
|
64
|
+
})
|
|
65
|
+
})
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { FC } from '@helpers'
|
|
2
|
+
import { HTMLAttributes } from 'react'
|
|
3
|
+
import styled, { css } from 'styled-components'
|
|
4
|
+
import { FlagProps, FlagSize, getHeigthBySize, getFlagSize, getWidthBySize } from './flag-size-flags'
|
|
5
|
+
import { CountryCodes, LargeFlags, MediumFlags, SmallFlags } from './flag.list'
|
|
6
|
+
|
|
7
|
+
const getCoordsStyles = (props :FlagProps) => {
|
|
8
|
+
switch (getFlagSize(props)) {
|
|
9
|
+
case FlagSize.large:
|
|
10
|
+
return css`
|
|
11
|
+
& .coords {
|
|
12
|
+
width: 32px;
|
|
13
|
+
height: 24px;
|
|
14
|
+
x: 0;
|
|
15
|
+
y: 0;
|
|
16
|
+
}`
|
|
17
|
+
case FlagSize.medium:
|
|
18
|
+
return css`
|
|
19
|
+
& .coords {
|
|
20
|
+
width: 20px;
|
|
21
|
+
height: 16px;
|
|
22
|
+
x: 0;
|
|
23
|
+
y: 2;
|
|
24
|
+
}`
|
|
25
|
+
case FlagSize.small:
|
|
26
|
+
return css`
|
|
27
|
+
& .coords {
|
|
28
|
+
width: 16px;
|
|
29
|
+
height: 12px;
|
|
30
|
+
x: 2;
|
|
31
|
+
y: 4;
|
|
32
|
+
}`
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const BoundingBox = styled.i<{props: FlagProps}>`
|
|
37
|
+
width: ${({ props }) => getWidthBySize(props)}px;
|
|
38
|
+
height: ${({ props }) => getHeigthBySize(props)}px;
|
|
39
|
+
flex: none;
|
|
40
|
+
order: 0;
|
|
41
|
+
flex-grow: 0;
|
|
42
|
+
position: relative;
|
|
43
|
+
`
|
|
44
|
+
|
|
45
|
+
const Svg = styled.svg.attrs<IProps>(({props}) => ({
|
|
46
|
+
viewBox: `0 0 ${getWidthBySize(props)} ${getHeigthBySize(props)}`
|
|
47
|
+
}))<{ props: FlagProps}>`
|
|
48
|
+
position: absolute;
|
|
49
|
+
width: ${({ props }) => getWidthBySize(props)}px;
|
|
50
|
+
height: ${({ props }) => getHeigthBySize(props)}px;
|
|
51
|
+
fill: none;
|
|
52
|
+
top: calc(50% - ${({ props }) => getHeigthBySize(props)}px/2);
|
|
53
|
+
left: calc(50% - ${({ props }) => getWidthBySize(props)}px/2);
|
|
54
|
+
${({ props }) => getCoordsStyles(props)}
|
|
55
|
+
`
|
|
56
|
+
|
|
57
|
+
interface IFlagProperties extends HTMLAttributes<SVGElement> {
|
|
58
|
+
code: CountryCodes;
|
|
59
|
+
}
|
|
60
|
+
interface IProps {
|
|
61
|
+
props: IFlagProperties & FlagProps
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const getFlagPathByCode = (props :IFlagProperties) => {
|
|
65
|
+
|
|
66
|
+
switch (getFlagSize(props)) {
|
|
67
|
+
case FlagSize.small:
|
|
68
|
+
return SmallFlags[props.code]
|
|
69
|
+
case FlagSize.medium:
|
|
70
|
+
return MediumFlags[props.code]
|
|
71
|
+
case FlagSize.large:
|
|
72
|
+
return LargeFlags[props.code]
|
|
73
|
+
default:
|
|
74
|
+
return SmallFlags[props.code]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export const Flag: FC<IFlagProperties & FlagProps> = (props) => {
|
|
79
|
+
return (
|
|
80
|
+
<BoundingBox
|
|
81
|
+
className={props.className}
|
|
82
|
+
style={props.style}
|
|
83
|
+
props={props}>
|
|
84
|
+
<Svg
|
|
85
|
+
props={props}>
|
|
86
|
+
{getFlagPathByCode(props)}
|
|
87
|
+
</Svg>
|
|
88
|
+
</BoundingBox>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
Svg.defaultProps = {
|
|
93
|
+
fill: 'none',
|
|
94
|
+
role: 'img',
|
|
95
|
+
xmlns: 'http://www.w3.org/2000/svg'
|
|
96
|
+
}
|
|
97
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './flag'
|
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { Borders, Padding, Surface, Text, Typography } from '@foundations'
|
|
2
|
+
import { is } from '@helpers'
|
|
3
|
+
import { Label } from 'components/typography'
|
|
4
|
+
import { Playground } from 'storybook-addon-jarle-monaco'
|
|
5
|
+
import { Flag } from '../flag'
|
|
6
|
+
import { PlayGroundSelect } from './playGround-select'
|
|
7
|
+
import { CountryCodes } from '../flag.list'
|
|
8
|
+
import styled from 'styled-components'
|
|
9
|
+
|
|
10
|
+
const Table = styled.div`
|
|
11
|
+
background: ${Surface.Default};
|
|
12
|
+
border-radius: 6px;
|
|
13
|
+
`
|
|
14
|
+
|
|
15
|
+
const Row = styled.div<{ gray?: boolean }>`
|
|
16
|
+
display: flex;
|
|
17
|
+
flex-direction: row;
|
|
18
|
+
background-color: ${(props) => (is(props.gray) ? Surface.Default.Subdued : Surface.Default)};
|
|
19
|
+
border-bottom: 1px solid ${Borders.Default.Subdued};
|
|
20
|
+
`
|
|
21
|
+
|
|
22
|
+
const Column = styled.div`
|
|
23
|
+
${Typography.Body}
|
|
24
|
+
display: flex;
|
|
25
|
+
padding: ${Padding.l};
|
|
26
|
+
flex: 1;
|
|
27
|
+
align-items: center;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
justify-content: space-between;
|
|
30
|
+
&:nth-child(1) {
|
|
31
|
+
flex: 2;
|
|
32
|
+
}
|
|
33
|
+
`
|
|
34
|
+
|
|
35
|
+
const HeaderColumn = styled(Column)`
|
|
36
|
+
color: ${Text.Subdued};
|
|
37
|
+
`
|
|
38
|
+
|
|
39
|
+
export const FlagWrapper = styled.div`
|
|
40
|
+
display: flex;
|
|
41
|
+
gap: 25px;
|
|
42
|
+
`
|
|
43
|
+
|
|
44
|
+
type ICountryList = {
|
|
45
|
+
[key in CountryCodes]: string
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const FlagListHeader = () => (
|
|
49
|
+
<Row gray>
|
|
50
|
+
<HeaderColumn><Label subdued>Country Name</Label></HeaderColumn>
|
|
51
|
+
<HeaderColumn><Label subdued>Alpha-2 Code</Label></HeaderColumn>
|
|
52
|
+
<HeaderColumn><Label subdued>Flag</Label></HeaderColumn>
|
|
53
|
+
</Row>
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
const FlagsExampleHeader = () => (
|
|
57
|
+
<Row gray>
|
|
58
|
+
<HeaderColumn><Label subdued>Large</Label></HeaderColumn>
|
|
59
|
+
<HeaderColumn><Label subdued>Medium</Label></HeaderColumn>
|
|
60
|
+
<HeaderColumn><Label subdued>Small</Label></HeaderColumn>
|
|
61
|
+
</Row>
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
export const FlagList = () => {
|
|
65
|
+
|
|
66
|
+
return (
|
|
67
|
+
<Table>
|
|
68
|
+
<FlagListHeader/>
|
|
69
|
+
{
|
|
70
|
+
(Object.keys(CountryList) as (CountryCodes)[]).map((code, index) =>
|
|
71
|
+
<Row key={index}>
|
|
72
|
+
<Column>
|
|
73
|
+
{CountryList[code]}
|
|
74
|
+
</Column>
|
|
75
|
+
<Column>
|
|
76
|
+
{code}
|
|
77
|
+
</Column>
|
|
78
|
+
<Column>
|
|
79
|
+
<FlagWrapper>
|
|
80
|
+
<Flag large code={code} />
|
|
81
|
+
<Flag medium code={code} />
|
|
82
|
+
<Flag small code={code} />
|
|
83
|
+
</FlagWrapper>
|
|
84
|
+
</Column>
|
|
85
|
+
</Row>
|
|
86
|
+
)
|
|
87
|
+
}
|
|
88
|
+
</Table>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export const FlagsExample = () => {
|
|
93
|
+
|
|
94
|
+
return (<Playground
|
|
95
|
+
code={`
|
|
96
|
+
const list = (Object.keys(CountryList) as (CountryCodes)[])
|
|
97
|
+
.map(code => ({code: code, value: CountryList[code]}));
|
|
98
|
+
|
|
99
|
+
const [selected, setSelected] = useState('CA');
|
|
100
|
+
|
|
101
|
+
<form onSubmit={(e) => e.preventDefault()}>
|
|
102
|
+
<Row style={{height: '225px'}}>
|
|
103
|
+
<Column style={{display: 'block'}}>
|
|
104
|
+
<PlayGroundSelect
|
|
105
|
+
label="Choose country"
|
|
106
|
+
values={list}
|
|
107
|
+
handleChangeEvent={(code) => setSelected(code)}
|
|
108
|
+
/>
|
|
109
|
+
</Column>
|
|
110
|
+
<Column style={{flex: 4}}>
|
|
111
|
+
<Table style={{width: '100%'}}>
|
|
112
|
+
<FlagsExampleHeader/>
|
|
113
|
+
<Row>
|
|
114
|
+
<Column>
|
|
115
|
+
<Flag large code={selected} />
|
|
116
|
+
</Column>
|
|
117
|
+
<Column>
|
|
118
|
+
<Flag medium code={selected} />
|
|
119
|
+
</Column>
|
|
120
|
+
<Column>
|
|
121
|
+
<Flag small code={selected} />
|
|
122
|
+
</Column>
|
|
123
|
+
</Row>
|
|
124
|
+
</Table>
|
|
125
|
+
</Column>
|
|
126
|
+
</Row>
|
|
127
|
+
</form>
|
|
128
|
+
`}
|
|
129
|
+
providerProps={{
|
|
130
|
+
renderAsComponent: true,
|
|
131
|
+
scope: {
|
|
132
|
+
Flag,
|
|
133
|
+
Row,
|
|
134
|
+
Table,
|
|
135
|
+
Column,
|
|
136
|
+
FlagsExampleHeader,
|
|
137
|
+
CountryList,
|
|
138
|
+
PlayGroundSelect,
|
|
139
|
+
},
|
|
140
|
+
}}
|
|
141
|
+
/>)
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
const CountryList: ICountryList = {
|
|
145
|
+
'AD': 'Andorra',
|
|
146
|
+
'AE': 'United Arab Emirates',
|
|
147
|
+
'AF': 'Afghanistan',
|
|
148
|
+
'AG': 'Antigua and Barbuda',
|
|
149
|
+
'AI': 'Anguilla',
|
|
150
|
+
'AL': 'Albania',
|
|
151
|
+
'AM': 'Armenia',
|
|
152
|
+
'AO': 'Angola',
|
|
153
|
+
'AQ': 'Antarctica',
|
|
154
|
+
'AR': 'Argentina',
|
|
155
|
+
'AS': 'American Samoa',
|
|
156
|
+
'AT': 'Austria',
|
|
157
|
+
'AU': 'Australia',
|
|
158
|
+
'AW': 'Aruba',
|
|
159
|
+
'AX': 'Aland Islands',
|
|
160
|
+
'AZ': 'Azerbaijan',
|
|
161
|
+
'BA': 'Bosnia and Herzegovina',
|
|
162
|
+
'BB': 'Barbados',
|
|
163
|
+
'BD': 'Bangladesh',
|
|
164
|
+
'BE': 'Belgium',
|
|
165
|
+
'BF': 'Burkina Faso',
|
|
166
|
+
'BG': 'Bulgaria',
|
|
167
|
+
'BH': 'Bahrain',
|
|
168
|
+
'BI': 'Burundi',
|
|
169
|
+
'BJ': 'Benin',
|
|
170
|
+
'BL': 'Saint Barthélemy',
|
|
171
|
+
'BM': 'Bermuda',
|
|
172
|
+
'BN': 'Brunei Darussalam',
|
|
173
|
+
'BO': 'Bolivia',
|
|
174
|
+
'BQ-BO': 'Bonaire',
|
|
175
|
+
'BQ-SA': 'Saba',
|
|
176
|
+
'BQ-SE': 'Sint Eustatius',
|
|
177
|
+
'BR': 'Brazil',
|
|
178
|
+
'BS': 'Bahamas',
|
|
179
|
+
'BT': 'Bhutan',
|
|
180
|
+
'BV': 'Bouvet Island',
|
|
181
|
+
'BW': 'Botswana',
|
|
182
|
+
'BY': 'Belarus',
|
|
183
|
+
'BZ': 'Belize',
|
|
184
|
+
'CA': 'Canada',
|
|
185
|
+
'CC': 'Cocos (Keeling) Islands',
|
|
186
|
+
'CD': 'Democratic Republic of the Congo',
|
|
187
|
+
'CF': 'Central African Republic',
|
|
188
|
+
'CG': 'Republic of the Congo',
|
|
189
|
+
'CH': 'Switzerland',
|
|
190
|
+
'CI': 'Côte d\'Ivoire (Ivory Coast)',
|
|
191
|
+
'CK': 'Cook Islands',
|
|
192
|
+
'CL': 'Chile',
|
|
193
|
+
'CM': 'Cameroon',
|
|
194
|
+
'CN': 'China',
|
|
195
|
+
'CO': 'Colombia',
|
|
196
|
+
'CR': 'Costa Rica',
|
|
197
|
+
'CU': 'Cuba',
|
|
198
|
+
'CV': 'Cabo Verde',
|
|
199
|
+
'CW': 'Curaçao',
|
|
200
|
+
'CX': 'Christmas Island',
|
|
201
|
+
'CY': 'Cyprus',
|
|
202
|
+
'CZ': 'Czech Republic',
|
|
203
|
+
'DE': 'Germany',
|
|
204
|
+
'DJ': 'Djibouti',
|
|
205
|
+
'DK': 'Denmark',
|
|
206
|
+
'DM': 'Dominica',
|
|
207
|
+
'DO': 'Dominican Republic',
|
|
208
|
+
'DZ': 'Algeria',
|
|
209
|
+
'EC': 'Ecuador',
|
|
210
|
+
'EE': 'Estonia',
|
|
211
|
+
'EG': 'Egypt',
|
|
212
|
+
'EH': 'Western Sahara',
|
|
213
|
+
'ER': 'Eritrea',
|
|
214
|
+
'ES': 'Spain',
|
|
215
|
+
'ET': 'Ethiopia',
|
|
216
|
+
'FI': 'Finland',
|
|
217
|
+
'FJ': 'Fiji',
|
|
218
|
+
'FK': 'Falkland Islands',
|
|
219
|
+
'FM': 'Federated States of Micronesia',
|
|
220
|
+
'FO': 'Faroe Islands',
|
|
221
|
+
'FR': 'France',
|
|
222
|
+
'GA': 'Gabon',
|
|
223
|
+
'GB': 'England',
|
|
224
|
+
'GB-NIR': 'Northern Ireland',
|
|
225
|
+
'GB-SCT': 'Scotland',
|
|
226
|
+
'GB-UKM': 'United Kingdom',
|
|
227
|
+
'GB-WLS': 'Wales',
|
|
228
|
+
'GD': 'Grenada',
|
|
229
|
+
'GE': 'Georgia',
|
|
230
|
+
'GF': 'French Guiana',
|
|
231
|
+
'GG': 'Guernsey',
|
|
232
|
+
'GH': 'Ghana',
|
|
233
|
+
'GI': 'Gibraltar',
|
|
234
|
+
'GL': 'Greenland',
|
|
235
|
+
'GM': 'Gambia',
|
|
236
|
+
'GN': 'Guinea',
|
|
237
|
+
'GP': 'Guadeloupe',
|
|
238
|
+
'GP-FR': 'Guadeloupe',
|
|
239
|
+
'GQ': 'Equatorial Guinea',
|
|
240
|
+
'GR': 'Greece',
|
|
241
|
+
'GS': ' S. Georgia and S. Sandwich Islands',
|
|
242
|
+
'GT': 'Guatemala',
|
|
243
|
+
'GU': 'Guam',
|
|
244
|
+
'GW': 'Guinea-Bissau',
|
|
245
|
+
'GY': 'Guyana',
|
|
246
|
+
'HK': 'Hong Kong',
|
|
247
|
+
'HM': 'Heard and McDonald Islands',
|
|
248
|
+
'HN': 'Honduras',
|
|
249
|
+
'HR': 'Croatia (Hrvatska)',
|
|
250
|
+
'HT': 'Haiti',
|
|
251
|
+
'HU': 'Hungary',
|
|
252
|
+
'ID': 'Indonesia',
|
|
253
|
+
'IE': 'Ireland',
|
|
254
|
+
'IL': 'Isreal',
|
|
255
|
+
'IM': 'Isle of Man',
|
|
256
|
+
'IN': 'India',
|
|
257
|
+
'IO': 'British Indian Ocean Territory',
|
|
258
|
+
'IQ': 'Iraq',
|
|
259
|
+
'IR': 'Iran',
|
|
260
|
+
'IS': 'Iceland',
|
|
261
|
+
'IT': 'Italy',
|
|
262
|
+
'JE': 'Jersey',
|
|
263
|
+
'JM': 'Jamaica',
|
|
264
|
+
'JO': 'Jordan',
|
|
265
|
+
'JP': 'Japan',
|
|
266
|
+
'KE': 'Kenya',
|
|
267
|
+
'KG': 'Kyrgyzstan',
|
|
268
|
+
'KH': 'Cambodia',
|
|
269
|
+
'KI': ' Kiribati',
|
|
270
|
+
'KM': 'Comors',
|
|
271
|
+
'KN': 'Saint Kitts and Nevis',
|
|
272
|
+
'KP': 'Korea (North)',
|
|
273
|
+
'KR': 'Korea (South)',
|
|
274
|
+
'KW': 'Kuwait',
|
|
275
|
+
'KY': 'Cayman Islands',
|
|
276
|
+
'KZ': 'Kazakhstan',
|
|
277
|
+
'LA': 'Laos',
|
|
278
|
+
'LB': 'Lebanon',
|
|
279
|
+
'LC': 'Saint Lucia',
|
|
280
|
+
'LI': 'Liechtenstein',
|
|
281
|
+
'LK': 'Sri Lanka',
|
|
282
|
+
'LR': 'Liberia',
|
|
283
|
+
'LS': 'Lesotho',
|
|
284
|
+
'LT': 'Lithuania',
|
|
285
|
+
'LU': 'Luxembourg',
|
|
286
|
+
'LV': 'Latvia',
|
|
287
|
+
'LY': 'Libya',
|
|
288
|
+
'MA': 'Morocco',
|
|
289
|
+
'MC': 'Monaco',
|
|
290
|
+
'MD': 'Moldova',
|
|
291
|
+
'ME': 'Montenegro',
|
|
292
|
+
'MF': 'Saint Martin',
|
|
293
|
+
'MG': 'Madagascar',
|
|
294
|
+
'MH': 'Marshall Islands',
|
|
295
|
+
'MK': 'North Macedonia',
|
|
296
|
+
'ML': 'Mali',
|
|
297
|
+
'MM': 'Myanmar',
|
|
298
|
+
'MN': 'Mongolia',
|
|
299
|
+
'MO': 'Macao',
|
|
300
|
+
'MP': 'Northern Mariana Islands',
|
|
301
|
+
'MQ': 'Martinique',
|
|
302
|
+
'MQ-FR': 'Martinique',
|
|
303
|
+
'MR': 'Mauritania',
|
|
304
|
+
'MS': 'Montserrat',
|
|
305
|
+
'MT': 'Malta',
|
|
306
|
+
'MU': 'Mauritius',
|
|
307
|
+
'MV': 'Maldives',
|
|
308
|
+
'MW': 'Malawi',
|
|
309
|
+
'MX': 'Mexico',
|
|
310
|
+
'MY': 'Malaysia',
|
|
311
|
+
'MZ': 'Mozambique',
|
|
312
|
+
'NA': 'Namibia',
|
|
313
|
+
'NC': 'New Caledonia',
|
|
314
|
+
'NE': 'Niger',
|
|
315
|
+
'NF': 'Norfolk Island',
|
|
316
|
+
'NG': 'Nigeria',
|
|
317
|
+
'NI': 'Nicaragua',
|
|
318
|
+
'NL': 'Netherlands',
|
|
319
|
+
'NO': 'Norway',
|
|
320
|
+
'NP': 'Nepal',
|
|
321
|
+
'NR': 'Nauru',
|
|
322
|
+
'NU': 'Niue',
|
|
323
|
+
'NZ': 'New Zealand (Aotearoa)',
|
|
324
|
+
'OM': 'Oman',
|
|
325
|
+
'PA': 'Panama',
|
|
326
|
+
'PE': 'Peru',
|
|
327
|
+
'PF': 'French Polynesia',
|
|
328
|
+
'PG': 'Papua New Guinea',
|
|
329
|
+
'PH': 'Philippines',
|
|
330
|
+
'PK': 'Pakistan',
|
|
331
|
+
'PL': 'Poland',
|
|
332
|
+
'PM': 'St. Pierre & z',
|
|
333
|
+
'PM-FR': 'Saint Pierre and Miquelon',
|
|
334
|
+
'PN': 'Pitcairn Islands',
|
|
335
|
+
'PR': 'Puerto Rico',
|
|
336
|
+
'PS': 'Palestinian Territory',
|
|
337
|
+
'PT': 'Portugal',
|
|
338
|
+
'PW': 'Palau',
|
|
339
|
+
'PY': 'Paraguay',
|
|
340
|
+
'QA': 'Qatar',
|
|
341
|
+
'RE': 'Reunion',
|
|
342
|
+
'RO': 'Romania',
|
|
343
|
+
'RS': 'Serbia',
|
|
344
|
+
'RU': 'Russian Federation',
|
|
345
|
+
'RW': 'Rwanda',
|
|
346
|
+
'SA': 'Saudi Arabia',
|
|
347
|
+
'SB': 'Solomon Islands',
|
|
348
|
+
'SC': 'Seychelles',
|
|
349
|
+
'SD': 'Sudan',
|
|
350
|
+
'SE': 'Sweden',
|
|
351
|
+
'SG': 'Singapore',
|
|
352
|
+
'SH': 'Saint Helena',
|
|
353
|
+
'SI': 'Slovenia',
|
|
354
|
+
'SJ': 'Svalbard and Jan Mayen',
|
|
355
|
+
'SK': 'Slovakia',
|
|
356
|
+
'SL': 'Sierra Leone',
|
|
357
|
+
'SM': 'San Marino',
|
|
358
|
+
'SN': 'Senegal',
|
|
359
|
+
'SO': 'Somalia',
|
|
360
|
+
'SR': 'Suriname',
|
|
361
|
+
'SS': 'South Sudan',
|
|
362
|
+
'ST': 'Sao Tome and Principe',
|
|
363
|
+
'SV': 'El Salvador',
|
|
364
|
+
'SX': 'Sint Maarten',
|
|
365
|
+
'SY': 'Syria',
|
|
366
|
+
'SZ': 'Swaziland',
|
|
367
|
+
'TC': 'Turks and Caicos Islands',
|
|
368
|
+
'TD': 'Chad',
|
|
369
|
+
'TF': 'French Southern and Antarctic Lands',
|
|
370
|
+
'TG': 'Togo',
|
|
371
|
+
'TH': 'Thailand',
|
|
372
|
+
'TJ': 'Tajikistan',
|
|
373
|
+
'TK': 'Tokelau',
|
|
374
|
+
'TL': 'Timor-Leste',
|
|
375
|
+
'TM': 'Turkmenistan',
|
|
376
|
+
'TN': 'Tunisia',
|
|
377
|
+
'TO': 'Tonga',
|
|
378
|
+
'TR': 'Turkey',
|
|
379
|
+
'TT': 'Trinidad and Tobago',
|
|
380
|
+
'TV': 'Tuvalu',
|
|
381
|
+
'TW': 'Taiwan',
|
|
382
|
+
'TZ': 'Tanzania',
|
|
383
|
+
'UA': 'Ukraine',
|
|
384
|
+
'UG': 'Uganda',
|
|
385
|
+
'UM': 'United States Minor Outlying Islands',
|
|
386
|
+
'US': 'United States',
|
|
387
|
+
'UY': 'Uruguay',
|
|
388
|
+
'UZ': 'Uzbekistan',
|
|
389
|
+
'VA': 'Vatican City State',
|
|
390
|
+
'VC': 'Saint Vincent and the Grenadines',
|
|
391
|
+
'VE': 'Venezuela',
|
|
392
|
+
'VG': 'Virgin Islands (British)',
|
|
393
|
+
'VI': 'Virgin Islands (U.S.)',
|
|
394
|
+
'VN': 'Vietnam',
|
|
395
|
+
'VU': 'Vanuatu',
|
|
396
|
+
'WF': 'Wallis and Futuna',
|
|
397
|
+
'WS': 'Samoa',
|
|
398
|
+
'YE': 'Yemen',
|
|
399
|
+
'YT-UNF': 'Mayotte',
|
|
400
|
+
'ZA': 'South Africa',
|
|
401
|
+
'ZM': 'Zambia',
|
|
402
|
+
'ZW': 'Zimbabwe',
|
|
403
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Canvas, Meta, Story, ArgsTable } from '@storybook/addon-docs';
|
|
2
|
+
import { Flag } from '../index'
|
|
3
|
+
import { FlagList, FlagWrapper, FlagsExample } from './components'
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
<Meta title="Components/Flag" component={Flag}/>
|
|
7
|
+
|
|
8
|
+
# Flag System
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
For more details, check out the guidelines on [Figma](https://www.figma.com/file/ue1CurHfZ426o2T2l8Dk64/Edvisor-Product-Language?node-id=4119%3A13858)
|
|
12
|
+
|
|
13
|
+
## How to Use
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { Flag } from '@edvisor/product-language'
|
|
17
|
+
|
|
18
|
+
<Flag large code='BR' />
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## API
|
|
22
|
+
|
|
23
|
+
### `Flag`
|
|
24
|
+
Extends `HTMLAttributes<SVGElement>`
|
|
25
|
+
|
|
26
|
+
| Prop | Type | Description |
|
|
27
|
+
| ---------- | ---------------------------- | ------------------------------------------------------- |
|
|
28
|
+
| `size` | `string` | The size of the Flag (small \| medium \| large) |
|
|
29
|
+
| `code` | `string` | String (Country Alpha-2 code) |
|
|
30
|
+
|
|
31
|
+
### Flags sizes
|
|
32
|
+
| Size | Description |
|
|
33
|
+
| ---------- | ------------------------------------------------------- |
|
|
34
|
+
| Small | 20x20 bounding box. Designed to be rendered at 16x12 |
|
|
35
|
+
| Medium | 20x20 bounding box. Designed to be rendered at 20x15 |
|
|
36
|
+
| Large | 32x24 bounding box. Designed to be rendered at 32x24 |
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## PlayGround
|
|
40
|
+
<FlagsExample/>
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Flag List
|
|
44
|
+
|
|
45
|
+
<Canvas>
|
|
46
|
+
<FlagList />
|
|
47
|
+
</Canvas>
|
|
48
|
+
|