emoji-picker-react 4.6.14 → 4.6.15

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 (28) hide show
  1. package/dist/components/header/Search/BtnClearSearch.d.ts +2 -0
  2. package/dist/components/header/Search/IcnSearch.d.ts +2 -0
  3. package/dist/components/header/SkinTonePicker/BtnSkinToneVariation.d.ts +11 -0
  4. package/dist/components/navigation/CategoryButton.d.ts +11 -0
  5. package/dist/emoji-picker-react.cjs.development.js +285 -189
  6. package/dist/emoji-picker-react.cjs.development.js.map +1 -1
  7. package/dist/emoji-picker-react.cjs.production.min.js +1 -1
  8. package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
  9. package/dist/emoji-picker-react.esm.js +285 -189
  10. package/dist/emoji-picker-react.esm.js.map +1 -1
  11. package/package.json +1 -1
  12. package/src/components/body/EmojiVariationPicker.tsx +6 -7
  13. package/src/components/emoji/ClickableEmojiButton.tsx +5 -1
  14. package/src/components/footer/Preview.tsx +4 -6
  15. package/src/components/header/Header.tsx +1 -1
  16. package/src/components/header/Search/BtnClearSearch.tsx +91 -0
  17. package/src/components/header/{CssSearch.tsx → Search/CssSearch.tsx} +2 -2
  18. package/src/components/header/Search/IcnSearch.tsx +39 -0
  19. package/src/components/header/{Search.tsx → Search/Search.tsx} +14 -49
  20. package/src/components/header/SkinTonePicker/BtnSkinToneVariation.tsx +80 -0
  21. package/src/components/header/{SkinTonePicker.tsx → SkinTonePicker/SkinTonePicker.tsx} +25 -67
  22. package/src/components/navigation/CategoryButton.tsx +141 -0
  23. package/src/components/navigation/CategoryNavigation.tsx +10 -129
  24. /package/dist/components/header/{CssSearch.d.ts → Search/CssSearch.d.ts} +0 -0
  25. /package/dist/components/header/{Search.d.ts → Search/Search.d.ts} +0 -0
  26. /package/dist/components/header/{SkinTonePicker.d.ts → SkinTonePicker/SkinTonePicker.d.ts} +0 -0
  27. /package/src/components/header/{svg → Search/svg}/magnifier.svg +0 -0
  28. /package/src/components/header/{svg → Search/svg}/times.svg +0 -0
@@ -0,0 +1,141 @@
1
+ import { cx } from 'flairup';
2
+ import * as React from 'react';
3
+
4
+ import { ClassNames } from '../../DomUtils/classNames';
5
+ import {
6
+ commonInteractionStyles,
7
+ stylesheet
8
+ } from '../../Stylesheet/stylesheet';
9
+ import {
10
+ CategoryConfig,
11
+ categoryNameFromCategoryConfig
12
+ } from '../../config/categoryConfig';
13
+ import { Button } from '../atoms/Button';
14
+
15
+ import SVGNavigation from './svg/CategoryNav.svg';
16
+
17
+ type Props = {
18
+ isActiveCategory: boolean;
19
+ category: string;
20
+ allowNavigation: boolean;
21
+ onClick: () => void;
22
+ categoryConfig: CategoryConfig;
23
+ };
24
+
25
+ export function CategoryButton({
26
+ isActiveCategory,
27
+ category,
28
+ allowNavigation,
29
+ categoryConfig,
30
+ onClick
31
+ }: Props) {
32
+ return (
33
+ <Button
34
+ tabIndex={allowNavigation ? 0 : -1}
35
+ className={cx(
36
+ styles.catBtn,
37
+ commonInteractionStyles.categoryBtn,
38
+ `epr-icn-${category}`,
39
+ {
40
+ [ClassNames.active]: isActiveCategory
41
+ }
42
+ )}
43
+ onClick={onClick}
44
+ aria-label={categoryNameFromCategoryConfig(categoryConfig)}
45
+ aria-selected={isActiveCategory}
46
+ role="tab"
47
+ aria-controls="epr-category-nav-id"
48
+ />
49
+ );
50
+ }
51
+
52
+ const DarkActivePositionY = {
53
+ backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 3)'
54
+ };
55
+ const DarkPositionY = {
56
+ backgroundPositionY: 'calc(var(--epr-category-navigation-button-size) * 2)'
57
+ };
58
+
59
+ const DarkInactivePosition = {
60
+ ':not(.epr-search-active)': {
61
+ catBtn: {
62
+ ':hover': DarkActivePositionY,
63
+ '&.epr-active': DarkActivePositionY
64
+ }
65
+ }
66
+ };
67
+
68
+ const styles = stylesheet.create({
69
+ catBtn: {
70
+ '.': 'epr-cat-btn',
71
+ display: 'inline-block',
72
+ transition: 'opacity 0.2s ease-in-out',
73
+ position: 'relative',
74
+ height: 'var(--epr-category-navigation-button-size)',
75
+ width: 'var(--epr-category-navigation-button-size)',
76
+ backgroundSize: 'calc(var(--epr-category-navigation-button-size) * 10)',
77
+ outline: 'none',
78
+ backgroundPosition: '0 0',
79
+ backgroundImage: `url(${SVGNavigation})`,
80
+ ':focus:before': {
81
+ content: '',
82
+ position: 'absolute',
83
+ top: '-2px',
84
+ left: '-2px',
85
+ right: '-2px',
86
+ bottom: '-2px',
87
+ border: '2px solid var(--epr-category-icon-active-color)',
88
+ borderRadius: '50%'
89
+ },
90
+ // @ts-ignore
91
+ '&.epr-icn-suggested': {
92
+ backgroundPositionX:
93
+ 'calc(var(--epr-category-navigation-button-size) * -8)'
94
+ },
95
+ '&.epr-icn-custom': {
96
+ backgroundPositionX:
97
+ 'calc(var(--epr-category-navigation-button-size) * -9)'
98
+ },
99
+ '&.epr-icn-activities': {
100
+ backgroundPositionX:
101
+ 'calc(var(--epr-category-navigation-button-size) * -4)'
102
+ },
103
+ '&.epr-icn-animals_nature': {
104
+ backgroundPositionX:
105
+ 'calc(var(--epr-category-navigation-button-size) * -1)'
106
+ },
107
+ '&.epr-icn-flags': {
108
+ backgroundPositionX:
109
+ 'calc(var(--epr-category-navigation-button-size) * -7)'
110
+ },
111
+ '&.epr-icn-food_drink': {
112
+ backgroundPositionX:
113
+ 'calc(var(--epr-category-navigation-button-size) * -2)'
114
+ },
115
+ '&.epr-icn-objects': {
116
+ backgroundPositionX:
117
+ 'calc(var(--epr-category-navigation-button-size) * -5)'
118
+ },
119
+ '&.epr-icn-smileys_people': {
120
+ backgroundPositionX: '0px'
121
+ },
122
+ '&.epr-icn-symbols': {
123
+ backgroundPositionX:
124
+ 'calc(var(--epr-category-navigation-button-size) * -6)'
125
+ },
126
+ '&.epr-icn-travel_places': {
127
+ backgroundPositionX:
128
+ 'calc(var(--epr-category-navigation-button-size) * -3)'
129
+ }
130
+ },
131
+ '.epr-dark-theme': {
132
+ catBtn: DarkPositionY,
133
+ ...DarkInactivePosition
134
+ },
135
+ '.epr-auto-theme': {
136
+ catBtn: {
137
+ '@media (prefers-color-scheme: dark)': DarkPositionY
138
+ },
139
+ ...DarkInactivePosition
140
+ }
141
+ });
@@ -2,25 +2,17 @@ import { cx } from 'flairup';
2
2
  import * as React from 'react';
3
3
  import { useState } from 'react';
4
4
 
5
- import { ClassNames } from '../../DomUtils/classNames';
6
- import {
7
- commonInteractionStyles,
8
- stylesheet
9
- } from '../../Stylesheet/stylesheet';
10
- import {
11
- categoryFromCategoryConfig,
12
- categoryNameFromCategoryConfig
13
- } from '../../config/categoryConfig';
5
+ import { stylesheet } from '../../Stylesheet/stylesheet';
6
+ import { categoryFromCategoryConfig } from '../../config/categoryConfig';
14
7
  import { useCategoriesConfig } from '../../config/useConfig';
15
8
  import { useActiveCategoryScrollDetection } from '../../hooks/useActiveCategoryScrollDetection';
16
9
  import useIsSearchMode from '../../hooks/useIsSearchMode';
17
10
  import { useScrollCategoryIntoView } from '../../hooks/useScrollCategoryIntoView';
18
11
  import { useShouldHideCustomEmojis } from '../../hooks/useShouldHideCustomEmojis';
19
12
  import { isCustomCategory } from '../../typeRefinements/typeRefinements';
20
- import { Button } from '../atoms/Button';
21
13
  import { useCategoryNavigationRef } from '../context/ElementRefContext';
22
14
 
23
- import SVGNavigation from './svg/CategoryNav.svg';
15
+ import { CategoryButton } from './CategoryButton';
24
16
 
25
17
  export function CategoryNavigation() {
26
18
  const [activeCategory, setActiveCategory] = useState<string | null>(null);
@@ -48,26 +40,19 @@ export function CategoryNavigation() {
48
40
  return null;
49
41
  }
50
42
 
43
+ const allowNavigation = !isSearchMode && !isActiveCategory;
44
+
51
45
  return (
52
- <Button
53
- tabIndex={isSearchMode || isActiveCategory ? -1 : 0}
54
- className={cx(
55
- styles.catBtn,
56
- commonInteractionStyles.categoryBtn,
57
- `epr-icn-${category}`,
58
- {
59
- [ClassNames.active]: isActiveCategory
60
- }
61
- )}
46
+ <CategoryButton
62
47
  key={category}
48
+ category={category}
49
+ isActiveCategory={isActiveCategory}
50
+ allowNavigation={allowNavigation}
51
+ categoryConfig={categoryConfig}
63
52
  onClick={() => {
64
53
  setActiveCategory(category);
65
54
  scrollCategoryIntoView(category);
66
55
  }}
67
- aria-label={categoryNameFromCategoryConfig(categoryConfig)}
68
- aria-selected={isActiveCategory}
69
- role="tab"
70
- aria-controls="epr-category-nav-id"
71
56
  />
72
57
  );
73
58
  })}
@@ -96,109 +81,5 @@ const styles = stylesheet.create({
96
81
  cursor: 'default',
97
82
  pointerEvents: 'none'
98
83
  }
99
- },
100
- catBtn: {
101
- '.': 'epr-cat-btn',
102
- display: 'inline-block',
103
- transition: 'opacity 0.2s ease-in-out',
104
- position: 'relative',
105
- height: 'var(--epr-category-navigation-button-size)',
106
- width: 'var(--epr-category-navigation-button-size)',
107
- backgroundSize: 'calc(var(--epr-category-navigation-button-size) * 10)',
108
- outline: 'none',
109
- backgroundPosition: '0 0',
110
- backgroundImage: `url(${SVGNavigation})`,
111
- ':focus:before': {
112
- content: '',
113
- position: 'absolute',
114
- top: '-2px',
115
- left: '-2px',
116
- right: '-2px',
117
- bottom: '-2px',
118
- border: '2px solid var(--epr-category-icon-active-color)',
119
- borderRadius: '50%'
120
- },
121
- // @ts-ignore
122
- '&.epr-icn-suggested': {
123
- backgroundPositionX:
124
- 'calc(var(--epr-category-navigation-button-size) * -8)'
125
- },
126
- '&.epr-icn-custom': {
127
- backgroundPositionX:
128
- 'calc(var(--epr-category-navigation-button-size) * -9)'
129
- },
130
- '&.epr-icn-activities': {
131
- backgroundPositionX:
132
- 'calc(var(--epr-category-navigation-button-size) * -4)'
133
- },
134
- '&.epr-icn-animals_nature': {
135
- backgroundPositionX:
136
- 'calc(var(--epr-category-navigation-button-size) * -1)'
137
- },
138
- '&.epr-icn-flags': {
139
- backgroundPositionX:
140
- 'calc(var(--epr-category-navigation-button-size) * -7)'
141
- },
142
- '&.epr-icn-food_drink': {
143
- backgroundPositionX:
144
- 'calc(var(--epr-category-navigation-button-size) * -2)'
145
- },
146
- '&.epr-icn-objects': {
147
- backgroundPositionX:
148
- 'calc(var(--epr-category-navigation-button-size) * -5)'
149
- },
150
- '&.epr-icn-smileys_people': {
151
- backgroundPositionX: '0px'
152
- },
153
- '&.epr-icn-symbols': {
154
- backgroundPositionX:
155
- 'calc(var(--epr-category-navigation-button-size) * -6)'
156
- },
157
- '&.epr-icn-travel_places': {
158
- backgroundPositionX:
159
- 'calc(var(--epr-category-navigation-button-size) * -3)'
160
- }
161
- },
162
- '.epr-dark-theme': {
163
- catBtn: {
164
- backgroundPositionY:
165
- 'calc(var(--epr-category-navigation-button-size) * 2)'
166
- },
167
- ':not(.epr-search-active)': {
168
- // @ts-expect-error - need to fix this
169
- catBtn: {
170
- ':hover': {
171
- backgroundPositionY:
172
- 'calc(var(--epr-category-navigation-button-size) * 3)'
173
- },
174
- '&.epr-active': {
175
- backgroundPositionY:
176
- 'calc(var(--epr-category-navigation-button-size) * 3)'
177
- }
178
- }
179
- }
180
- },
181
- '.epr-auto-theme': {
182
- catBtn: {
183
- '@media (prefers-color-scheme: dark)': {
184
- backgroundPositionY:
185
- 'calc(var(--epr-category-navigation-button-size) * 2)'
186
- }
187
- },
188
- ':not(.epr-search-active)': {
189
- catBtn: {
190
- '@media (prefers-color-scheme: dark)': {
191
- ':hover': {
192
- backgroundPositionY:
193
- 'calc(var(--epr-category-navigation-button-size) * 3)'
194
- },
195
- // @ts-ignore
196
- '&.epr-active': {
197
- backgroundPositionY:
198
- 'calc(var(--epr-category-navigation-button-size) * 3)'
199
- }
200
- }
201
- }
202
- }
203
84
  }
204
85
  });