decentraland-ui2 2.5.3 → 3.0.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/dist/components/Navbar/Credits.styled.d.ts +9 -0
- package/dist/components/Navbar/Credits.styled.js +58 -0
- package/dist/components/Navbar/Credits.styled.js.map +1 -0
- package/dist/components/Navbar/MobileMenu.d.ts +8 -0
- package/dist/components/Navbar/MobileMenu.js +20 -0
- package/dist/components/Navbar/MobileMenu.js.map +1 -0
- package/dist/components/Navbar/MobileMenu.styled.d.ts +35 -0
- package/dist/components/Navbar/MobileMenu.styled.js +116 -0
- package/dist/components/Navbar/MobileMenu.styled.js.map +1 -0
- package/dist/components/Navbar/NavLinks.d.ts +11 -0
- package/dist/components/Navbar/NavLinks.js +19 -0
- package/dist/components/Navbar/NavLinks.js.map +1 -0
- package/dist/components/Navbar/NavLinks.styled.d.ts +31 -0
- package/dist/components/Navbar/NavLinks.styled.js +130 -0
- package/dist/components/Navbar/NavLinks.styled.js.map +1 -0
- package/dist/components/Navbar/Navbar.d.ts +2 -3
- package/dist/components/Navbar/Navbar.defaults.d.ts +29 -6
- package/dist/components/Navbar/Navbar.defaults.js +101 -231
- package/dist/components/Navbar/Navbar.defaults.js.map +1 -1
- package/dist/components/Navbar/Navbar.js +109 -34
- package/dist/components/Navbar/Navbar.js.map +1 -1
- package/dist/components/Navbar/Navbar.stories.d.ts +9 -8
- package/dist/components/Navbar/Navbar.stories.js +93 -60
- package/dist/components/Navbar/Navbar.stories.js.map +1 -1
- package/dist/components/Navbar/Navbar.styled.d.ts +53 -56
- package/dist/components/Navbar/Navbar.styled.js +168 -101
- package/dist/components/Navbar/Navbar.styled.js.map +1 -1
- package/dist/components/Navbar/Navbar.types.d.ts +72 -56
- package/dist/components/Navbar/Navbar.types.js +1 -10
- package/dist/components/Navbar/Navbar.types.js.map +1 -1
- package/dist/components/Navbar/NotificationBell.styled.d.ts +61 -0
- package/dist/components/Navbar/NotificationBell.styled.js +189 -0
- package/dist/components/Navbar/NotificationBell.styled.js.map +1 -0
- package/dist/components/Navbar/UserCardPanel.d.ts +27 -0
- package/dist/components/Navbar/UserCardPanel.js +106 -0
- package/dist/components/Navbar/UserCardPanel.js.map +1 -0
- package/dist/components/Navbar/UserCardPanel.styled.d.ts +133 -0
- package/dist/components/Navbar/UserCardPanel.styled.js +392 -0
- package/dist/components/Navbar/UserCardPanel.styled.js.map +1 -0
- package/dist/components/Navbar/formatBalance.d.ts +2 -0
- package/dist/components/Navbar/formatBalance.js +5 -0
- package/dist/components/Navbar/formatBalance.js.map +1 -0
- package/dist/components/Navbar/icons.d.ts +24 -0
- package/dist/components/Navbar/icons.js +67 -0
- package/dist/components/Navbar/icons.js.map +1 -0
- package/dist/components/Navbar/index.d.ts +3 -2
- package/dist/components/Navbar/index.js +2 -2
- package/dist/components/Navbar/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/components/Navbar/MainMenu/MainMenu.d.ts +0 -2
- package/dist/components/Navbar/MainMenu/MainMenu.js +0 -26
- package/dist/components/Navbar/MainMenu/MainMenu.js.map +0 -1
- package/dist/components/Navbar/MainMenu/MainMenu.styled.d.ts +0 -9
- package/dist/components/Navbar/MainMenu/MainMenu.styled.js +0 -39
- package/dist/components/Navbar/MainMenu/MainMenu.styled.js.map +0 -1
- package/dist/components/Navbar/MainMenu/MainMenu.types.d.ts +0 -8
- package/dist/components/Navbar/MainMenu/MainMenu.types.js +0 -2
- package/dist/components/Navbar/MainMenu/MainMenu.types.js.map +0 -1
- package/dist/components/Navbar/MenuItem/MenuItem.d.ts +0 -3
- package/dist/components/Navbar/MenuItem/MenuItem.js +0 -15
- package/dist/components/Navbar/MenuItem/MenuItem.js.map +0 -1
- package/dist/components/Navbar/MenuItem/MenuItem.styled.d.ts +0 -18
- package/dist/components/Navbar/MenuItem/MenuItem.styled.js +0 -59
- package/dist/components/Navbar/MenuItem/MenuItem.styled.js.map +0 -1
- package/dist/components/Navbar/MenuItem/MenuItem.types.d.ts +0 -12
- package/dist/components/Navbar/MenuItem/MenuItem.types.js +0 -2
- package/dist/components/Navbar/MenuItem/MenuItem.types.js.map +0 -1
- package/dist/components/Navbar/SubMenu/SubMenu.d.ts +0 -2
- package/dist/components/Navbar/SubMenu/SubMenu.js +0 -14
- package/dist/components/Navbar/SubMenu/SubMenu.js.map +0 -1
- package/dist/components/Navbar/SubMenu/SubMenu.styled.d.ts +0 -27
- package/dist/components/Navbar/SubMenu/SubMenu.styled.js +0 -165
- package/dist/components/Navbar/SubMenu/SubMenu.styled.js.map +0 -1
- package/dist/components/Navbar/SubMenu/SubMenu.types.d.ts +0 -13
- package/dist/components/Navbar/SubMenu/SubMenu.types.js +0 -2
- package/dist/components/Navbar/SubMenu/SubMenu.types.js.map +0 -1
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.d.ts +0 -3
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.js +0 -9
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.js.map +0 -1
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.styled.d.ts +0 -11
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.styled.js +0 -33
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.styled.js.map +0 -1
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.types.d.ts +0 -5
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.types.js +0 -2
- package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.types.js.map +0 -1
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.d.ts +0 -2
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.js +0 -15
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.js.map +0 -1
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.styled.d.ts +0 -32
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.styled.js +0 -84
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.styled.js.map +0 -1
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.types.d.ts +0 -13
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.types.js +0 -2
- package/dist/components/Navbar/SubMenuItem/SubMenuItem.types.js.map +0 -1
- package/dist/components/Navbar/utils.d.ts +0 -16
- package/dist/components/Navbar/utils.js +0 -33
- package/dist/components/Navbar/utils.js.map +0 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const CreditsBalanceButton: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
5
|
+
declare const CreditsTooltip: import("@emotion/styled").StyledComponent<{
|
|
6
|
+
theme?: import("@emotion/react").Theme;
|
|
7
|
+
as?: React.ElementType;
|
|
8
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
9
|
+
export { CreditsBalanceButton, CreditsTooltip };
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import * as colors from '../../theme/colors';
|
|
3
|
+
const CreditsBalanceButton = styled('button')({
|
|
4
|
+
all: 'unset',
|
|
5
|
+
position: 'relative',
|
|
6
|
+
display: 'flex',
|
|
7
|
+
alignItems: 'center',
|
|
8
|
+
gap: 4,
|
|
9
|
+
cursor: 'pointer',
|
|
10
|
+
color: '#A0ABFF',
|
|
11
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
12
|
+
fontWeight: 600,
|
|
13
|
+
fontSize: 16,
|
|
14
|
+
letterSpacing: -0.8,
|
|
15
|
+
flexShrink: 0,
|
|
16
|
+
transition: 'opacity 0.15s ease',
|
|
17
|
+
'&:hover': {
|
|
18
|
+
opacity: 0.8
|
|
19
|
+
},
|
|
20
|
+
'&:hover .credits-tooltip': {
|
|
21
|
+
opacity: 1,
|
|
22
|
+
pointerEvents: 'auto'
|
|
23
|
+
},
|
|
24
|
+
'&:focus-visible': {
|
|
25
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
26
|
+
outlineOffset: 2,
|
|
27
|
+
borderRadius: 4
|
|
28
|
+
},
|
|
29
|
+
'& svg': {
|
|
30
|
+
width: 20,
|
|
31
|
+
height: 20,
|
|
32
|
+
flexShrink: 0
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const CreditsTooltip = styled('div')({
|
|
36
|
+
position: 'absolute',
|
|
37
|
+
top: 'calc(100% + 4px)',
|
|
38
|
+
left: '50%',
|
|
39
|
+
transform: 'translateX(-50%)',
|
|
40
|
+
background: '#43404A',
|
|
41
|
+
padding: 8,
|
|
42
|
+
borderRadius: 8,
|
|
43
|
+
boxShadow: '0 2px 8px rgba(0,0,0,0.3)',
|
|
44
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
45
|
+
fontWeight: 400,
|
|
46
|
+
fontSize: 12,
|
|
47
|
+
lineHeight: 1.4,
|
|
48
|
+
color: '#ECEBED',
|
|
49
|
+
whiteSpace: 'normal',
|
|
50
|
+
textAlign: 'center',
|
|
51
|
+
minWidth: 140,
|
|
52
|
+
opacity: 0,
|
|
53
|
+
pointerEvents: 'none',
|
|
54
|
+
transition: 'opacity 0.15s ease',
|
|
55
|
+
zIndex: 10
|
|
56
|
+
});
|
|
57
|
+
export { CreditsBalanceButton, CreditsTooltip };
|
|
58
|
+
//# sourceMappingURL=Credits.styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Credits.styled.js","sourceRoot":"","sources":["../../../src/components/Navbar/Credits.styled.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAA;AAE5C,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC5C,GAAG,EAAE,OAAO;IACZ,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,qCAAqC;IACjD,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,EAAE;IACZ,aAAa,EAAE,CAAC,GAAG;IACnB,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,oBAAoB;IAChC,SAAS,EAAE;QACT,OAAO,EAAE,GAAG;KACb;IACD,0BAA0B,EAAE;QAC1B,OAAO,EAAE,CAAC;QACV,aAAa,EAAE,MAAM;KACtB;IACD,iBAAiB,EAAE;QACjB,OAAO,EAAE,aAAa,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;QAC3C,aAAa,EAAE,CAAC;QAChB,YAAY,EAAE,CAAC;KAChB;IACD,OAAO,EAAE;QACP,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,CAAC;KACd;CACF,CAAC,CAAA;AAEF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,kBAAkB;IACvB,IAAI,EAAE,KAAK;IACX,SAAS,EAAE,kBAAkB;IAC7B,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,2BAA2B;IACtC,UAAU,EAAE,qCAAqC;IACjD,UAAU,EAAE,GAAG;IACf,QAAQ,EAAE,EAAE;IACZ,UAAU,EAAE,GAAG;IACf,KAAK,EAAE,SAAS;IAChB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,QAAQ;IACnB,QAAQ,EAAE,GAAG;IACb,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,MAAM;IACrB,UAAU,EAAE,oBAAoB;IAChC,MAAM,EAAE,EAAE;CACX,CAAC,CAAA;AAEF,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useCallback, useState } from 'react';
|
|
3
|
+
import { ChevronDownIcon, ChevronUpIcon, ExternalLinkIcon } from './icons';
|
|
4
|
+
import { DROPDOWN_SECTIONS, getMenuConfig } from './Navbar.defaults';
|
|
5
|
+
import { MobileMenuAccordionHeader, MobileMenuItem, MobileMenuLink, MobileMenuOverlay, MobileMenuPanel, MobileMenuSubItem, MobileMenuSubItems } from './MobileMenu.styled';
|
|
6
|
+
const MobileMenu = memo(function MobileMenu({ open, onClose, i18n }) {
|
|
7
|
+
const menuConfig = getMenuConfig();
|
|
8
|
+
const [mobileAccordion, setMobileAccordion] = useState(null);
|
|
9
|
+
const toggleMobileAccordion = useCallback((section) => {
|
|
10
|
+
setMobileAccordion(prev => (prev === section ? null : section));
|
|
11
|
+
}, []);
|
|
12
|
+
return (_jsxs(_Fragment, { children: [_jsx(MobileMenuOverlay, { open: open, onClick: onClose }), _jsxs(MobileMenuPanel, { open: open, role: "navigation", "aria-label": "Mobile navigation", children: [_jsx(MobileMenuItem, { children: _jsx(MobileMenuLink, { href: menuConfig.whatsOn.url, children: i18n[menuConfig.whatsOn.label] }) }), DROPDOWN_SECTIONS.map(section => {
|
|
13
|
+
const config = menuConfig[section];
|
|
14
|
+
const isExpanded = mobileAccordion === section;
|
|
15
|
+
return (_jsxs(MobileMenuItem, { children: [_jsxs(MobileMenuAccordionHeader, { onClick: () => toggleMobileAccordion(section), "aria-expanded": isExpanded, children: [i18n[config.label], isExpanded ? _jsx(ChevronUpIcon, {}) : _jsx(ChevronDownIcon, {})] }), _jsx(MobileMenuSubItems, { open: isExpanded, children: config.items?.map(item => (_jsxs(MobileMenuSubItem, { href: item.url, target: item.isExternal ? '_blank' : undefined, rel: item.isExternal ? 'noopener noreferrer' : undefined, children: [i18n[item.label], item.isExternal && _jsx(ExternalLinkIcon, {})] }, item.label))) })] }, section));
|
|
16
|
+
})] })] }));
|
|
17
|
+
});
|
|
18
|
+
MobileMenu.displayName = 'MobileMenu';
|
|
19
|
+
export { MobileMenu };
|
|
20
|
+
//# sourceMappingURL=MobileMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileMenu.js","sourceRoot":"","sources":["../../../src/components/Navbar/MobileMenu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC1E,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEpE,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,qBAAqB,CAAA;AAS5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAmB;IAClF,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAA;IAEpF,MAAM,qBAAqB,GAAG,WAAW,CAAC,CAAC,OAAwB,EAAE,EAAE;QACrE,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,CACL,8BACE,KAAC,iBAAiB,IAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,GAAI,EACnD,MAAC,eAAe,IAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,YAAY,gBAAY,mBAAmB,aAC3E,KAAC,cAAc,cACb,KAAC,cAAc,IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,YAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAAkB,GAChF,EAEhB,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;wBAC/B,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;wBAClC,MAAM,UAAU,GAAG,eAAe,KAAK,OAAO,CAAA;wBAE9C,OAAO,CACL,MAAC,cAAc,eACb,MAAC,yBAAyB,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,OAAO,CAAC,mBAAiB,UAAU,aAChG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAClB,UAAU,CAAC,CAAC,CAAC,KAAC,aAAa,KAAG,CAAC,CAAC,CAAC,KAAC,eAAe,KAAG,IAC3B,EAE5B,KAAC,kBAAkB,IAAC,IAAI,EAAE,UAAU,YACjC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACzB,MAAC,iBAAiB,IAEhB,IAAI,EAAE,IAAI,CAAC,GAAG,EACd,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC9C,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,aAEvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAChB,IAAI,CAAC,UAAU,IAAI,KAAC,gBAAgB,KAAG,KANnC,IAAI,CAAC,KAAK,CAOG,CACrB,CAAC,GACiB,KAlBF,OAAO,CAmBX,CAClB,CAAA;oBACH,CAAC,CAAC,IACc,IACjB,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,UAAU,CAAC,WAAW,GAAG,YAAY,CAAA;AAErC,OAAO,EAAE,UAAU,EAAE,CAAA"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
declare const MobileMenuOverlay: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
} & {
|
|
5
|
+
open: boolean;
|
|
6
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
7
|
+
declare const MobileMenuPanel: import("@emotion/styled").StyledComponent<{
|
|
8
|
+
theme?: import("@emotion/react").Theme;
|
|
9
|
+
as?: React.ElementType;
|
|
10
|
+
} & {
|
|
11
|
+
open: boolean;
|
|
12
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
13
|
+
declare const MobileMenuItem: import("@emotion/styled").StyledComponent<{
|
|
14
|
+
theme?: import("@emotion/react").Theme;
|
|
15
|
+
as?: React.ElementType;
|
|
16
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
17
|
+
declare const MobileMenuLink: import("@emotion/styled").StyledComponent<{
|
|
18
|
+
theme?: import("@emotion/react").Theme;
|
|
19
|
+
as?: React.ElementType;
|
|
20
|
+
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
21
|
+
declare const MobileMenuAccordionHeader: import("@emotion/styled").StyledComponent<{
|
|
22
|
+
theme?: import("@emotion/react").Theme;
|
|
23
|
+
as?: React.ElementType;
|
|
24
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
25
|
+
declare const MobileMenuSubItems: import("@emotion/styled").StyledComponent<{
|
|
26
|
+
theme?: import("@emotion/react").Theme;
|
|
27
|
+
as?: React.ElementType;
|
|
28
|
+
} & {
|
|
29
|
+
open: boolean;
|
|
30
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
31
|
+
declare const MobileMenuSubItem: import("@emotion/styled").StyledComponent<{
|
|
32
|
+
theme?: import("@emotion/react").Theme;
|
|
33
|
+
as?: React.ElementType;
|
|
34
|
+
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
35
|
+
export { MobileMenuAccordionHeader, MobileMenuItem, MobileMenuLink, MobileMenuOverlay, MobileMenuPanel, MobileMenuSubItem, MobileMenuSubItems };
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import * as colors from '../../theme/colors';
|
|
3
|
+
import { DESKTOP_BREAKPOINT, GLASS_BG, GLASS_BLUR, GLASS_SHADOW } from './Navbar.styled';
|
|
4
|
+
const MobileMenuOverlay = styled('div')(({ open }) => ({
|
|
5
|
+
position: 'fixed',
|
|
6
|
+
top: 64,
|
|
7
|
+
left: 0,
|
|
8
|
+
right: 0,
|
|
9
|
+
bottom: 0,
|
|
10
|
+
zIndex: 1099,
|
|
11
|
+
pointerEvents: open ? 'auto' : 'none',
|
|
12
|
+
backgroundColor: open ? 'rgba(0, 0, 0, 0.3)' : 'transparent',
|
|
13
|
+
transition: 'background-color 0.25s ease',
|
|
14
|
+
[DESKTOP_BREAKPOINT]: {
|
|
15
|
+
display: 'none'
|
|
16
|
+
}
|
|
17
|
+
}));
|
|
18
|
+
const MobileMenuPanel = styled('div')(({ open }) => ({
|
|
19
|
+
position: 'fixed',
|
|
20
|
+
top: 64,
|
|
21
|
+
left: 0,
|
|
22
|
+
right: 0,
|
|
23
|
+
zIndex: 1100,
|
|
24
|
+
maxHeight: open ? 'calc(100vh - 64px)' : 0,
|
|
25
|
+
overflowY: 'auto',
|
|
26
|
+
background: GLASS_BG,
|
|
27
|
+
backdropFilter: GLASS_BLUR,
|
|
28
|
+
WebkitBackdropFilter: GLASS_BLUR,
|
|
29
|
+
boxShadow: open ? GLASS_SHADOW : 'none',
|
|
30
|
+
padding: open ? 12 : '0 12px',
|
|
31
|
+
transition: 'max-height 0.3s ease, padding 0.3s ease, box-shadow 0.3s ease',
|
|
32
|
+
[DESKTOP_BREAKPOINT]: {
|
|
33
|
+
display: 'none'
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
const MobileMenuItem = styled('div')({
|
|
37
|
+
borderBottom: '0.5px solid rgba(255, 255, 255, 0.1)'
|
|
38
|
+
});
|
|
39
|
+
const MobileMenuLink = styled('a')({
|
|
40
|
+
display: 'flex',
|
|
41
|
+
alignItems: 'center',
|
|
42
|
+
padding: '24px 16px',
|
|
43
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
44
|
+
fontWeight: 600,
|
|
45
|
+
fontSize: 16,
|
|
46
|
+
lineHeight: 1.75,
|
|
47
|
+
color: colors.neutral.white,
|
|
48
|
+
textDecoration: 'none',
|
|
49
|
+
'&:hover': {
|
|
50
|
+
color: colors.neutral.gray5
|
|
51
|
+
},
|
|
52
|
+
'&:focus-visible': {
|
|
53
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
54
|
+
outlineOffset: -2
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
const MobileMenuAccordionHeader = styled('button')({
|
|
58
|
+
all: 'unset',
|
|
59
|
+
display: 'flex',
|
|
60
|
+
alignItems: 'center',
|
|
61
|
+
justifyContent: 'space-between',
|
|
62
|
+
width: '100%',
|
|
63
|
+
padding: '24px 16px',
|
|
64
|
+
boxSizing: 'border-box',
|
|
65
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
66
|
+
fontWeight: 600,
|
|
67
|
+
fontSize: 16,
|
|
68
|
+
lineHeight: 1.75,
|
|
69
|
+
color: colors.neutral.white,
|
|
70
|
+
cursor: 'pointer',
|
|
71
|
+
'&:hover': {
|
|
72
|
+
color: colors.neutral.gray5
|
|
73
|
+
},
|
|
74
|
+
'&:focus-visible': {
|
|
75
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
76
|
+
outlineOffset: -2
|
|
77
|
+
},
|
|
78
|
+
'& svg': {
|
|
79
|
+
width: 20,
|
|
80
|
+
height: 20,
|
|
81
|
+
flexShrink: 0,
|
|
82
|
+
transition: 'transform 0.2s ease'
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
const MobileMenuSubItems = styled('div')(({ open }) => ({
|
|
86
|
+
maxHeight: open ? 500 : 0,
|
|
87
|
+
overflow: 'hidden',
|
|
88
|
+
transition: 'max-height 0.25s ease'
|
|
89
|
+
}));
|
|
90
|
+
const MobileMenuSubItem = styled('a')({
|
|
91
|
+
display: 'flex',
|
|
92
|
+
alignItems: 'center',
|
|
93
|
+
justifyContent: 'space-between',
|
|
94
|
+
gap: 8,
|
|
95
|
+
padding: '12px 16px',
|
|
96
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
97
|
+
fontWeight: 400,
|
|
98
|
+
fontSize: 16,
|
|
99
|
+
color: colors.neutral.gray4,
|
|
100
|
+
textDecoration: 'none',
|
|
101
|
+
'&:hover': {
|
|
102
|
+
color: colors.neutral.white
|
|
103
|
+
},
|
|
104
|
+
'&:focus-visible': {
|
|
105
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
106
|
+
outlineOffset: -2
|
|
107
|
+
},
|
|
108
|
+
'& svg': {
|
|
109
|
+
width: 16,
|
|
110
|
+
height: 16,
|
|
111
|
+
flexShrink: 0,
|
|
112
|
+
opacity: 0.6
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
export { MobileMenuAccordionHeader, MobileMenuItem, MobileMenuLink, MobileMenuOverlay, MobileMenuPanel, MobileMenuSubItem, MobileMenuSubItems };
|
|
116
|
+
//# sourceMappingURL=MobileMenu.styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileMenu.styled.js","sourceRoot":"","sources":["../../../src/components/Navbar/MobileMenu.styled.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { NavbarI18n } from './Navbar.types';
|
|
2
|
+
import type { DropdownSection } from './Navbar.defaults';
|
|
3
|
+
interface NavLinksProps {
|
|
4
|
+
desktopDropdown: DropdownSection | null;
|
|
5
|
+
onOpenDropdown: (section: DropdownSection) => void;
|
|
6
|
+
onScheduleCloseDropdown: () => void;
|
|
7
|
+
activePage?: 'whatsOn' | 'shop' | 'create' | 'learn';
|
|
8
|
+
i18n: NavbarI18n;
|
|
9
|
+
}
|
|
10
|
+
declare const NavLinks: import("react").NamedExoticComponent<NavLinksProps>;
|
|
11
|
+
export { NavLinks };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo } from 'react';
|
|
3
|
+
import { ChevronDownIcon, ExternalLinkIcon } from './icons';
|
|
4
|
+
import { DROPDOWN_SECTIONS, getMenuConfig } from './Navbar.defaults';
|
|
5
|
+
import { DesktopDropdown, DesktopDropdownItem, DesktopDropdownWrapper, DesktopTabLink, DesktopTabList, DesktopTabWithDropdown } from './NavLinks.styled';
|
|
6
|
+
const NavLinks = memo(function NavLinks({ desktopDropdown, onOpenDropdown, onScheduleCloseDropdown, activePage, i18n }) {
|
|
7
|
+
const menuConfig = getMenuConfig();
|
|
8
|
+
return (_jsxs(DesktopTabList, { children: [_jsx(DesktopTabLink, { href: menuConfig.whatsOn.url, className: activePage === 'whatsOn' ? 'active' : undefined, children: i18n[menuConfig.whatsOn.label] }), DROPDOWN_SECTIONS.map(section => (_jsxs(DesktopDropdownWrapper, { onMouseEnter: () => onOpenDropdown(section), onMouseLeave: onScheduleCloseDropdown, children: [_jsxs(DesktopTabWithDropdown, { className: activePage === section ? 'active' : undefined, "aria-expanded": desktopDropdown === section, "aria-haspopup": "true", onClick: () => {
|
|
9
|
+
const firstItem = menuConfig[section].items?.[0];
|
|
10
|
+
if (firstItem)
|
|
11
|
+
window.open(firstItem.url, '_self');
|
|
12
|
+
}, children: [i18n[menuConfig[section].label], _jsx(ChevronDownIcon, { style: {
|
|
13
|
+
transform: desktopDropdown === section ? 'rotate(180deg)' : 'rotate(0deg)',
|
|
14
|
+
transition: 'transform 0.25s ease'
|
|
15
|
+
} })] }), desktopDropdown === section && (_jsx(DesktopDropdown, { children: menuConfig[section].items?.map(item => (_jsxs(DesktopDropdownItem, { href: item.url, target: item.isExternal ? '_blank' : undefined, rel: item.isExternal ? 'noopener noreferrer' : undefined, children: [i18n[item.label], item.isExternal && _jsx(ExternalLinkIcon, {})] }, item.label))) }))] }, section)))] }));
|
|
16
|
+
});
|
|
17
|
+
NavLinks.displayName = 'NavLinks';
|
|
18
|
+
export { NavLinks };
|
|
19
|
+
//# sourceMappingURL=NavLinks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLinks.js","sourceRoot":"","sources":["../../../src/components/Navbar/NavLinks.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAC5B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC3D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEpE,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,sBAAsB,EACvB,MAAM,mBAAmB,CAAA;AAW1B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,QAAQ,CAAC,EAAE,eAAe,EAAE,cAAc,EAAE,uBAAuB,EAAE,UAAU,EAAE,IAAI,EAAiB;IACnI,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,CACL,MAAC,cAAc,eACb,KAAC,cAAc,IAAC,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,YACrG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,GAChB,EAEhB,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAChC,MAAC,sBAAsB,IAAe,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,uBAAuB,aACtH,MAAC,sBAAsB,IACrB,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,mBACzC,eAAe,KAAK,OAAO,mBAC5B,MAAM,EACpB,OAAO,EAAE,GAAG,EAAE;4BACZ,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;4BAChD,IAAI,SAAS;gCAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;wBACpD,CAAC,aAEA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAChC,KAAC,eAAe,IACd,KAAK,EAAE;oCACL,SAAS,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc;oCAC1E,UAAU,EAAE,sBAAsB;iCACnC,GACD,IACqB,EAExB,eAAe,KAAK,OAAO,IAAI,CAC9B,KAAC,eAAe,cACb,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACtC,MAAC,mBAAmB,IAElB,IAAI,EAAE,IAAI,CAAC,GAAG,EACd,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAC9C,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,SAAS,aAEvD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAChB,IAAI,CAAC,UAAU,IAAI,KAAC,gBAAgB,KAAG,KANnC,IAAI,CAAC,KAAK,CAOK,CACvB,CAAC,GACc,CACnB,KAjC0B,OAAO,CAkCX,CAC1B,CAAC,IACa,CAClB,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,WAAW,GAAG,UAAU,CAAA;AAEjC,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
declare const DesktopTabList: import("@emotion/styled").StyledComponent<{
|
|
2
|
+
theme?: import("@emotion/react").Theme;
|
|
3
|
+
as?: React.ElementType;
|
|
4
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
5
|
+
declare const DesktopTab: import("@emotion/styled").StyledComponent<{
|
|
6
|
+
theme?: import("@emotion/react").Theme;
|
|
7
|
+
as?: React.ElementType;
|
|
8
|
+
}, import("react").DetailedHTMLProps<import("react").ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, {}>;
|
|
9
|
+
declare const DesktopTabLink: import("@emotion/styled").StyledComponent<{
|
|
10
|
+
theme?: import("@emotion/react").Theme;
|
|
11
|
+
as?: React.ElementType;
|
|
12
|
+
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
13
|
+
declare const DesktopTabWithDropdown: import("@emotion/styled").StyledComponent<{
|
|
14
|
+
theme?: import("@emotion/react").Theme;
|
|
15
|
+
as?: React.ElementType;
|
|
16
|
+
} & import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
17
|
+
theme?: import("@emotion/react").Theme;
|
|
18
|
+
}, {}, {}>;
|
|
19
|
+
declare const DesktopDropdownWrapper: import("@emotion/styled").StyledComponent<{
|
|
20
|
+
theme?: import("@emotion/react").Theme;
|
|
21
|
+
as?: React.ElementType;
|
|
22
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
23
|
+
declare const DesktopDropdown: import("@emotion/styled").StyledComponent<{
|
|
24
|
+
theme?: import("@emotion/react").Theme;
|
|
25
|
+
as?: React.ElementType;
|
|
26
|
+
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
27
|
+
declare const DesktopDropdownItem: import("@emotion/styled").StyledComponent<{
|
|
28
|
+
theme?: import("@emotion/react").Theme;
|
|
29
|
+
as?: React.ElementType;
|
|
30
|
+
}, import("react").DetailedHTMLProps<import("react").AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, {}>;
|
|
31
|
+
export { DesktopDropdown, DesktopDropdownItem, DesktopDropdownWrapper, DesktopTab, DesktopTabLink, DesktopTabList, DesktopTabWithDropdown };
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import styled from '@emotion/styled';
|
|
2
|
+
import * as colors from '../../theme/colors';
|
|
3
|
+
import { DESKTOP_BREAKPOINT, GLASS_BG, GLASS_BLUR, GLASS_BORDER, GLASS_SHADOW, slideDown } from './Navbar.styled';
|
|
4
|
+
const DesktopTabList = styled('div')({
|
|
5
|
+
display: 'none',
|
|
6
|
+
[DESKTOP_BREAKPOINT]: {
|
|
7
|
+
display: 'flex',
|
|
8
|
+
alignItems: 'center',
|
|
9
|
+
gap: 24
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
const DesktopTab = styled('button')({
|
|
13
|
+
all: 'unset',
|
|
14
|
+
display: 'flex',
|
|
15
|
+
alignItems: 'center',
|
|
16
|
+
gap: 4,
|
|
17
|
+
padding: '8px 24px',
|
|
18
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
19
|
+
fontWeight: 400,
|
|
20
|
+
fontSize: 16,
|
|
21
|
+
color: colors.neutral.gray5,
|
|
22
|
+
cursor: 'pointer',
|
|
23
|
+
borderRadius: 8,
|
|
24
|
+
whiteSpace: 'nowrap',
|
|
25
|
+
transition: 'background-color 0.15s ease, color 0.15s ease',
|
|
26
|
+
'&:hover': {
|
|
27
|
+
color: colors.neutral.white,
|
|
28
|
+
backgroundColor: 'rgba(255, 255, 255, 0.08)',
|
|
29
|
+
textShadow: '0 0 0.5px currentColor, 0 0 0.5px currentColor'
|
|
30
|
+
},
|
|
31
|
+
'&.active': {
|
|
32
|
+
color: colors.neutral.white,
|
|
33
|
+
textShadow: '0 0 0.5px currentColor, 0 0 0.5px currentColor'
|
|
34
|
+
},
|
|
35
|
+
'&:focus-visible': {
|
|
36
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
37
|
+
outlineOffset: 2
|
|
38
|
+
},
|
|
39
|
+
'& svg': {
|
|
40
|
+
width: 20,
|
|
41
|
+
height: 20,
|
|
42
|
+
transition: 'transform 0.2s ease',
|
|
43
|
+
flexShrink: 0
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
const DesktopTabLink = styled('a')({
|
|
47
|
+
all: 'unset',
|
|
48
|
+
display: 'flex',
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
gap: 4,
|
|
51
|
+
padding: '8px 24px',
|
|
52
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
53
|
+
fontWeight: 400,
|
|
54
|
+
fontSize: 16,
|
|
55
|
+
color: colors.neutral.gray5,
|
|
56
|
+
cursor: 'pointer',
|
|
57
|
+
borderRadius: 8,
|
|
58
|
+
whiteSpace: 'nowrap',
|
|
59
|
+
transition: 'background-color 0.15s ease, color 0.15s ease',
|
|
60
|
+
'&:hover': {
|
|
61
|
+
color: colors.neutral.white,
|
|
62
|
+
backgroundColor: 'rgba(255, 255, 255, 0.08)',
|
|
63
|
+
textShadow: '0 0 0.5px currentColor, 0 0 0.5px currentColor'
|
|
64
|
+
},
|
|
65
|
+
'&.active': {
|
|
66
|
+
color: colors.neutral.white,
|
|
67
|
+
textShadow: '0 0 0.5px currentColor, 0 0 0.5px currentColor'
|
|
68
|
+
},
|
|
69
|
+
'&:focus-visible': {
|
|
70
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
71
|
+
outlineOffset: 2
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
const DesktopTabWithDropdown = styled(DesktopTab)({
|
|
75
|
+
paddingRight: 16
|
|
76
|
+
});
|
|
77
|
+
const DesktopDropdownWrapper = styled('div')({
|
|
78
|
+
position: 'relative',
|
|
79
|
+
// Extra padding at the bottom creates a hover "safe zone" between
|
|
80
|
+
// the tab and the dropdown so the mouse doesn't leave the wrapper.
|
|
81
|
+
paddingBottom: 8,
|
|
82
|
+
marginBottom: -8,
|
|
83
|
+
cursor: 'pointer'
|
|
84
|
+
});
|
|
85
|
+
const DesktopDropdown = styled('div')({
|
|
86
|
+
position: 'absolute',
|
|
87
|
+
top: '100%',
|
|
88
|
+
left: 0,
|
|
89
|
+
marginTop: 2,
|
|
90
|
+
minWidth: 220,
|
|
91
|
+
background: GLASS_BG,
|
|
92
|
+
backdropFilter: GLASS_BLUR,
|
|
93
|
+
WebkitBackdropFilter: GLASS_BLUR,
|
|
94
|
+
border: GLASS_BORDER,
|
|
95
|
+
borderRadius: 12,
|
|
96
|
+
boxShadow: GLASS_SHADOW,
|
|
97
|
+
padding: 12,
|
|
98
|
+
animation: `${slideDown} 0.15s ease forwards`
|
|
99
|
+
});
|
|
100
|
+
const DesktopDropdownItem = styled('a')({
|
|
101
|
+
display: 'flex',
|
|
102
|
+
alignItems: 'center',
|
|
103
|
+
justifyContent: 'space-between',
|
|
104
|
+
gap: 8,
|
|
105
|
+
padding: '8px 16px',
|
|
106
|
+
fontFamily: 'Inter, Helvetica, Arial, sans-serif',
|
|
107
|
+
fontWeight: 400,
|
|
108
|
+
fontSize: 16,
|
|
109
|
+
color: colors.neutral.gray4,
|
|
110
|
+
textDecoration: 'none',
|
|
111
|
+
borderRadius: 12,
|
|
112
|
+
whiteSpace: 'nowrap',
|
|
113
|
+
transition: 'background-color 0.15s ease, color 0.15s ease',
|
|
114
|
+
'&:hover': {
|
|
115
|
+
backgroundColor: 'rgba(255, 255, 255, 0.06)',
|
|
116
|
+
color: colors.neutral.white
|
|
117
|
+
},
|
|
118
|
+
'&:focus-visible': {
|
|
119
|
+
outline: `2px solid ${colors.base.primary}`,
|
|
120
|
+
outlineOffset: -2
|
|
121
|
+
},
|
|
122
|
+
'& svg': {
|
|
123
|
+
width: 16,
|
|
124
|
+
height: 16,
|
|
125
|
+
flexShrink: 0,
|
|
126
|
+
opacity: 0.6
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
export { DesktopDropdown, DesktopDropdownItem, DesktopDropdownWrapper, DesktopTab, DesktopTabLink, DesktopTabList, DesktopTabWithDropdown };
|
|
130
|
+
//# sourceMappingURL=NavLinks.styled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NavLinks.styled.js","sourceRoot":"","sources":["../../../src/components/Navbar/NavLinks.styled.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
declare const Navbar: React.MemoExoticComponent<(props: NavbarProps) => import("react/jsx-runtime").JSX.Element>;
|
|
1
|
+
import type { NavbarProps } from './Navbar.types';
|
|
2
|
+
declare const Navbar: import("react").NamedExoticComponent<NavbarProps>;
|
|
4
3
|
export { Navbar };
|
|
@@ -1,6 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import type { NavbarI18n } from './Navbar.types';
|
|
2
|
+
declare const DEFAULT_I18N: NavbarI18n;
|
|
3
|
+
type MenuItem = {
|
|
4
|
+
label: keyof NavbarI18n;
|
|
5
|
+
url: string;
|
|
6
|
+
isExternal?: boolean;
|
|
7
|
+
};
|
|
8
|
+
type MenuSection = {
|
|
9
|
+
label: keyof NavbarI18n;
|
|
10
|
+
url?: string;
|
|
11
|
+
items?: MenuItem[];
|
|
12
|
+
};
|
|
13
|
+
type MenuConfig = {
|
|
14
|
+
whatsOn: MenuSection;
|
|
15
|
+
shop: MenuSection;
|
|
16
|
+
create: MenuSection;
|
|
17
|
+
learn: MenuSection;
|
|
18
|
+
};
|
|
19
|
+
type UserMenuItem = {
|
|
20
|
+
label: keyof NavbarI18n;
|
|
21
|
+
url: string;
|
|
22
|
+
icon: 'account' | 'wearable' | 'settings' | 'shopping';
|
|
23
|
+
};
|
|
24
|
+
declare function getMenuConfig(): MenuConfig;
|
|
25
|
+
declare function getUserMenuItems(): UserMenuItem[];
|
|
26
|
+
declare const DROPDOWN_SECTIONS: readonly ["shop", "create", "learn"];
|
|
27
|
+
type DropdownSection = (typeof DROPDOWN_SECTIONS)[number];
|
|
28
|
+
export { DEFAULT_I18N, DROPDOWN_SECTIONS, getMenuConfig, getUserMenuItems };
|
|
29
|
+
export type { DropdownSection, MenuConfig, MenuItem, MenuSection, UserMenuItem };
|