oddsgate-ds 1.0.206 → 1.0.208
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/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/organisms/Glossary/Glossary.component.d.ts +2 -0
- package/dist/cjs/types/components/organisms/Glossary/Glossary.themes.d.ts +1 -0
- package/dist/esm/index.js +4 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/organisms/Glossary/Glossary.component.d.ts +2 -0
- package/dist/esm/types/components/organisms/Glossary/Glossary.themes.d.ts +1 -0
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
- package/src/components/molecules/CategoryIndex/CategoryIndex.component.tsx +2 -3
- package/src/components/organisms/Glossary/Glossary.component.tsx +27 -3
- package/src/components/organisms/Glossary/Glossary.stories.tsx +120 -18
- package/src/components/organisms/Glossary/Glossary.themes.ts +17 -0
|
@@ -7,6 +7,8 @@ type GlossaryProps = {
|
|
|
7
7
|
categoryData: Record<string, string[]>;
|
|
8
8
|
displayedCategories: string[];
|
|
9
9
|
placeholder?: string;
|
|
10
|
+
noResults?: boolean;
|
|
11
|
+
backToTopButton?: boolean;
|
|
10
12
|
};
|
|
11
13
|
export declare const Glossary: React.FC<GlossaryProps>;
|
|
12
14
|
export default Glossary;
|
|
@@ -5,3 +5,4 @@ export declare const StyledGlossaryCategories: import("styled-components/dist/ty
|
|
|
5
5
|
export declare const StyledNoResultsContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
6
6
|
export declare const StyledNoResultsTitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, never>> & string;
|
|
7
7
|
export declare const StyledNoResultsSubtitle: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLHeadingElement>, HTMLHeadingElement>, never>> & string;
|
|
8
|
+
export declare const StyledBackButtonContainer: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
package/dist/types.d.ts
CHANGED
|
@@ -728,6 +728,8 @@ type GlossaryProps = {
|
|
|
728
728
|
categoryData: Record<string, string[]>;
|
|
729
729
|
displayedCategories: string[];
|
|
730
730
|
placeholder?: string;
|
|
731
|
+
noResults?: boolean;
|
|
732
|
+
backToTopButton?: boolean;
|
|
731
733
|
};
|
|
732
734
|
declare const Glossary: React__default.FC<GlossaryProps>;
|
|
733
735
|
|
package/package.json
CHANGED
|
@@ -16,10 +16,9 @@ const CategoryIndex: React.FC<CategoryIndexProps> = ({
|
|
|
16
16
|
<StyledGlossaryCategoryIndex>
|
|
17
17
|
{allCategories.map(category => (
|
|
18
18
|
<StyledGlossaryCategoryIndexItem
|
|
19
|
-
onClick={() => onChange(category
|
|
19
|
+
onClick={() => onChange(category)}
|
|
20
20
|
isSelected={
|
|
21
|
-
selectedCategory === category
|
|
22
|
-
(selectedCategory === null && category === '#')
|
|
21
|
+
selectedCategory === category
|
|
23
22
|
}
|
|
24
23
|
key={`category-${category}`}
|
|
25
24
|
>
|
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
StyledBackButtonContainer,
|
|
4
|
+
StyledGlossary,
|
|
5
|
+
StyledGlossaryCategories,
|
|
6
|
+
StyledNoResultsContainer,
|
|
7
|
+
StyledNoResultsSubtitle,
|
|
8
|
+
StyledNoResultsTitle
|
|
9
|
+
} from './Glossary.themes'
|
|
3
10
|
|
|
4
11
|
import SearchBar from '@/components/molecules/SearchBar/SearchBar.component'
|
|
5
12
|
import GlossaryCategoryIndex from '@/components/molecules/CategoryIndex/CategoryIndex.component'
|
|
6
13
|
import CategoriesWrapper from '@/components/molecules/CategoriesWrapper/CategoriesWrapper.component'
|
|
14
|
+
import Button from '@/components/atoms/Button'
|
|
15
|
+
import Icon from '@/components/atoms/Icon'
|
|
7
16
|
|
|
8
17
|
type GlossaryProps = {
|
|
9
18
|
searchTerm: string
|
|
@@ -13,6 +22,8 @@ type GlossaryProps = {
|
|
|
13
22
|
categoryData: Record<string, string[]>
|
|
14
23
|
displayedCategories: string[]
|
|
15
24
|
placeholder?: string
|
|
25
|
+
noResults?: boolean
|
|
26
|
+
backToTopButton?: boolean
|
|
16
27
|
}
|
|
17
28
|
|
|
18
29
|
export const Glossary: React.FC<GlossaryProps> = ({
|
|
@@ -22,7 +33,9 @@ export const Glossary: React.FC<GlossaryProps> = ({
|
|
|
22
33
|
setSelectedCategory,
|
|
23
34
|
categoryData,
|
|
24
35
|
displayedCategories,
|
|
25
|
-
placeholder
|
|
36
|
+
placeholder,
|
|
37
|
+
noResults,
|
|
38
|
+
backToTopButton
|
|
26
39
|
}) => {
|
|
27
40
|
const categoryNames = Object.keys(categoryData)
|
|
28
41
|
|
|
@@ -41,7 +54,7 @@ export const Glossary: React.FC<GlossaryProps> = ({
|
|
|
41
54
|
setSelectedCategory(cat === selectedCategory ? null : cat)
|
|
42
55
|
}
|
|
43
56
|
/>
|
|
44
|
-
{
|
|
57
|
+
{noResults ? (
|
|
45
58
|
<StyledNoResultsContainer>
|
|
46
59
|
<StyledNoResultsTitle>No results found!</StyledNoResultsTitle>
|
|
47
60
|
<StyledNoResultsSubtitle>Try another term</StyledNoResultsSubtitle>
|
|
@@ -57,6 +70,17 @@ export const Glossary: React.FC<GlossaryProps> = ({
|
|
|
57
70
|
))}
|
|
58
71
|
</StyledGlossaryCategories>
|
|
59
72
|
)}
|
|
73
|
+
<StyledBackButtonContainer>
|
|
74
|
+
<Button
|
|
75
|
+
variant="text"
|
|
76
|
+
onClick={() => {
|
|
77
|
+
window.scrollTo({ top: 0, behavior: 'smooth' })
|
|
78
|
+
}}
|
|
79
|
+
rightIcon={<Icon icon="icon-arrowDown" className='ml-12' style={{width: '14px' }}/>}
|
|
80
|
+
>
|
|
81
|
+
{backToTopButton}
|
|
82
|
+
</Button>
|
|
83
|
+
</StyledBackButtonContainer>
|
|
60
84
|
</StyledGlossary>
|
|
61
85
|
)
|
|
62
86
|
}
|
|
@@ -11,24 +11,126 @@ interface GlossaryCategory {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
const categories: GlossaryCategory[] = [
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
14
|
+
{
|
|
15
|
+
name: 'A',
|
|
16
|
+
items: [
|
|
17
|
+
{ slug: 'afk', name: 'AFK' },
|
|
18
|
+
{ slug: 'aimbot', name: 'AIMBOT' },
|
|
19
|
+
{ slug: 'aggro', name: 'Aggro' },
|
|
20
|
+
{ slug: 'aoe', name: 'AOE' },
|
|
21
|
+
{ slug: 'avatar', name: 'Avatar' },
|
|
22
|
+
{ slug: 'accuracy', name: 'Accuracy' },
|
|
23
|
+
{ slug: 'action-bar', name: 'Action Bar' },
|
|
24
|
+
{ slug: 'add-on', name: 'Add-on' },
|
|
25
|
+
{ slug: 'arena', name: 'Arena' },
|
|
26
|
+
{ slug: 'artifact', name: 'Artifact' }
|
|
27
|
+
]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'B',
|
|
31
|
+
items: [
|
|
32
|
+
{ slug: 'buff', name: 'Buff' },
|
|
33
|
+
{ slug: 'boss', name: 'Boss' },
|
|
34
|
+
{ slug: 'build', name: 'Build' },
|
|
35
|
+
{ slug: 'ban', name: 'Ban' },
|
|
36
|
+
{ slug: 'beta', name: 'Beta' },
|
|
37
|
+
{ slug: 'blind', name: 'Blind' },
|
|
38
|
+
{ slug: 'block', name: 'Block' },
|
|
39
|
+
{ slug: 'bot', name: 'Bot' },
|
|
40
|
+
{ slug: 'bracket', name: 'Bracket' },
|
|
41
|
+
{ slug: 'burst', name: 'Burst' }
|
|
42
|
+
]
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'C',
|
|
46
|
+
items: [
|
|
47
|
+
{ slug: 'camp', name: 'Camp' },
|
|
48
|
+
{ slug: 'carry', name: 'Carry' },
|
|
49
|
+
{ slug: 'cc', name: 'Crowd Control' },
|
|
50
|
+
{ slug: 'cd', name: 'Cooldown' },
|
|
51
|
+
{ slug: 'cheese', name: 'Cheese' },
|
|
52
|
+
{ slug: 'clan', name: 'Clan' },
|
|
53
|
+
{ slug: 'combo', name: 'Combo' },
|
|
54
|
+
{ slug: 'crit', name: 'Critical Hit' },
|
|
55
|
+
{ slug: 'crafting', name: 'Crafting' },
|
|
56
|
+
{ slug: 'creep', name: 'Creep' }
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'D',
|
|
61
|
+
items: [
|
|
62
|
+
{ slug: 'debuff', name: 'Debuff' },
|
|
63
|
+
{ slug: 'dps', name: 'DPS' },
|
|
64
|
+
{ slug: 'drop', name: 'Drop' },
|
|
65
|
+
{ slug: 'duo', name: 'Duo' },
|
|
66
|
+
{ slug: 'dungeon', name: 'Dungeon' },
|
|
67
|
+
{ slug: 'draft', name: 'Draft' },
|
|
68
|
+
{ slug: 'dot', name: 'Damage Over Time' },
|
|
69
|
+
{ slug: 'disconnect', name: 'Disconnect' },
|
|
70
|
+
{ slug: 'drain', name: 'Drain' },
|
|
71
|
+
{ slug: 'drop-rate', name: 'Drop Rate' }
|
|
72
|
+
]
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'E',
|
|
76
|
+
items: [
|
|
77
|
+
{ slug: 'emote', name: 'Emote' },
|
|
78
|
+
{ slug: 'endgame', name: 'Endgame' },
|
|
79
|
+
{ slug: 'enemy', name: 'Enemy' },
|
|
80
|
+
{ slug: 'equip', name: 'Equip' },
|
|
81
|
+
{ slug: 'event', name: 'Event' },
|
|
82
|
+
{ slug: 'exploit', name: 'Exploit' },
|
|
83
|
+
{ slug: 'experience', name: 'Experience' },
|
|
84
|
+
{ slug: 'ez', name: 'EZ' },
|
|
85
|
+
{ slug: 'elite', name: 'Elite' },
|
|
86
|
+
{ slug: 'escape', name: 'Escape' }
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
name: 'F',
|
|
91
|
+
items: [
|
|
92
|
+
{ slug: 'farm', name: 'Farm' },
|
|
93
|
+
{ slug: 'feed', name: 'Feed' },
|
|
94
|
+
{ slug: 'flank', name: 'Flank' },
|
|
95
|
+
{ slug: 'frag', name: 'Frag' },
|
|
96
|
+
{ slug: 'fps', name: 'FPS' },
|
|
97
|
+
{ slug: 'friendly-fire', name: 'Friendly Fire' },
|
|
98
|
+
{ slug: 'faction', name: 'Faction' },
|
|
99
|
+
{ slug: 'fov', name: 'Field of View' },
|
|
100
|
+
{ slug: 'freeze', name: 'Freeze' },
|
|
101
|
+
{ slug: 'full-party', name: 'Full Party' }
|
|
102
|
+
]
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'G',
|
|
106
|
+
items: [
|
|
107
|
+
{ slug: 'gg', name: 'GG' },
|
|
108
|
+
{ slug: 'gank', name: 'Gank' },
|
|
109
|
+
{ slug: 'gear', name: 'Gear' },
|
|
110
|
+
{ slug: 'grind', name: 'Grind' },
|
|
111
|
+
{ slug: 'guild', name: 'Guild' },
|
|
112
|
+
{ slug: 'glitch', name: 'Glitch' },
|
|
113
|
+
{ slug: 'gold', name: 'Gold' },
|
|
114
|
+
{ slug: 'group', name: 'Group' },
|
|
115
|
+
{ slug: 'grenade', name: 'Grenade' },
|
|
116
|
+
{ slug: 'global', name: 'Global' }
|
|
117
|
+
]
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
name: 'H',
|
|
121
|
+
items: [
|
|
122
|
+
{ slug: 'heal', name: 'Heal' },
|
|
123
|
+
{ slug: 'headshot', name: 'Headshot' },
|
|
124
|
+
{ slug: 'hp', name: 'HP' },
|
|
125
|
+
{ slug: 'hud', name: 'HUD' },
|
|
126
|
+
{ slug: 'hardcore', name: 'Hardcore' },
|
|
127
|
+
{ slug: 'hero', name: 'Hero' },
|
|
128
|
+
{ slug: 'hitbox', name: 'Hitbox' },
|
|
129
|
+
{ slug: 'host', name: 'Host' },
|
|
130
|
+
{ slug: 'hotkey', name: 'Hotkey' },
|
|
131
|
+
{ slug: 'hunter', name: 'Hunter' }
|
|
132
|
+
]
|
|
133
|
+
}
|
|
32
134
|
]
|
|
33
135
|
|
|
34
136
|
// Helper to build categoryData from categories and items
|
|
@@ -21,6 +21,7 @@ export const StyledNoResultsContainer = styled.div`
|
|
|
21
21
|
align-items: center;
|
|
22
22
|
justify-content: center;
|
|
23
23
|
margin-top: 6rem;
|
|
24
|
+
margin-bottom: 6rem;
|
|
24
25
|
`
|
|
25
26
|
export const StyledNoResultsTitle = styled.h1`
|
|
26
27
|
color: ${colors.primary50};
|
|
@@ -39,3 +40,19 @@ export const StyledNoResultsSubtitle = styled.h4`
|
|
|
39
40
|
font-size: 1.5rem;
|
|
40
41
|
}
|
|
41
42
|
`
|
|
43
|
+
export const StyledBackButtonContainer = styled.div`
|
|
44
|
+
width: 100%;
|
|
45
|
+
display: flex;
|
|
46
|
+
justify-content: flex-end;
|
|
47
|
+
margin-top: 4rem;
|
|
48
|
+
|
|
49
|
+
& > button {
|
|
50
|
+
text-transform: none;
|
|
51
|
+
font-size: 1.5rem;
|
|
52
|
+
height: 34px;
|
|
53
|
+
display: flex;
|
|
54
|
+
align-items: center;
|
|
55
|
+
justify-content: center;
|
|
56
|
+
font-weight: 700;
|
|
57
|
+
}
|
|
58
|
+
`;
|