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.
Files changed (97) hide show
  1. package/dist/components/Navbar/Credits.styled.d.ts +9 -0
  2. package/dist/components/Navbar/Credits.styled.js +58 -0
  3. package/dist/components/Navbar/Credits.styled.js.map +1 -0
  4. package/dist/components/Navbar/MobileMenu.d.ts +8 -0
  5. package/dist/components/Navbar/MobileMenu.js +20 -0
  6. package/dist/components/Navbar/MobileMenu.js.map +1 -0
  7. package/dist/components/Navbar/MobileMenu.styled.d.ts +35 -0
  8. package/dist/components/Navbar/MobileMenu.styled.js +116 -0
  9. package/dist/components/Navbar/MobileMenu.styled.js.map +1 -0
  10. package/dist/components/Navbar/NavLinks.d.ts +11 -0
  11. package/dist/components/Navbar/NavLinks.js +19 -0
  12. package/dist/components/Navbar/NavLinks.js.map +1 -0
  13. package/dist/components/Navbar/NavLinks.styled.d.ts +31 -0
  14. package/dist/components/Navbar/NavLinks.styled.js +130 -0
  15. package/dist/components/Navbar/NavLinks.styled.js.map +1 -0
  16. package/dist/components/Navbar/Navbar.d.ts +2 -3
  17. package/dist/components/Navbar/Navbar.defaults.d.ts +29 -6
  18. package/dist/components/Navbar/Navbar.defaults.js +101 -231
  19. package/dist/components/Navbar/Navbar.defaults.js.map +1 -1
  20. package/dist/components/Navbar/Navbar.js +109 -34
  21. package/dist/components/Navbar/Navbar.js.map +1 -1
  22. package/dist/components/Navbar/Navbar.stories.d.ts +9 -8
  23. package/dist/components/Navbar/Navbar.stories.js +93 -60
  24. package/dist/components/Navbar/Navbar.stories.js.map +1 -1
  25. package/dist/components/Navbar/Navbar.styled.d.ts +53 -56
  26. package/dist/components/Navbar/Navbar.styled.js +168 -101
  27. package/dist/components/Navbar/Navbar.styled.js.map +1 -1
  28. package/dist/components/Navbar/Navbar.types.d.ts +72 -56
  29. package/dist/components/Navbar/Navbar.types.js +1 -10
  30. package/dist/components/Navbar/Navbar.types.js.map +1 -1
  31. package/dist/components/Navbar/NotificationBell.styled.d.ts +61 -0
  32. package/dist/components/Navbar/NotificationBell.styled.js +189 -0
  33. package/dist/components/Navbar/NotificationBell.styled.js.map +1 -0
  34. package/dist/components/Navbar/UserCardPanel.d.ts +27 -0
  35. package/dist/components/Navbar/UserCardPanel.js +106 -0
  36. package/dist/components/Navbar/UserCardPanel.js.map +1 -0
  37. package/dist/components/Navbar/UserCardPanel.styled.d.ts +133 -0
  38. package/dist/components/Navbar/UserCardPanel.styled.js +392 -0
  39. package/dist/components/Navbar/UserCardPanel.styled.js.map +1 -0
  40. package/dist/components/Navbar/formatBalance.d.ts +2 -0
  41. package/dist/components/Navbar/formatBalance.js +5 -0
  42. package/dist/components/Navbar/formatBalance.js.map +1 -0
  43. package/dist/components/Navbar/icons.d.ts +24 -0
  44. package/dist/components/Navbar/icons.js +67 -0
  45. package/dist/components/Navbar/icons.js.map +1 -0
  46. package/dist/components/Navbar/index.d.ts +3 -2
  47. package/dist/components/Navbar/index.js +2 -2
  48. package/dist/components/Navbar/index.js.map +1 -1
  49. package/package.json +2 -2
  50. package/dist/components/Navbar/MainMenu/MainMenu.d.ts +0 -2
  51. package/dist/components/Navbar/MainMenu/MainMenu.js +0 -26
  52. package/dist/components/Navbar/MainMenu/MainMenu.js.map +0 -1
  53. package/dist/components/Navbar/MainMenu/MainMenu.styled.d.ts +0 -9
  54. package/dist/components/Navbar/MainMenu/MainMenu.styled.js +0 -39
  55. package/dist/components/Navbar/MainMenu/MainMenu.styled.js.map +0 -1
  56. package/dist/components/Navbar/MainMenu/MainMenu.types.d.ts +0 -8
  57. package/dist/components/Navbar/MainMenu/MainMenu.types.js +0 -2
  58. package/dist/components/Navbar/MainMenu/MainMenu.types.js.map +0 -1
  59. package/dist/components/Navbar/MenuItem/MenuItem.d.ts +0 -3
  60. package/dist/components/Navbar/MenuItem/MenuItem.js +0 -15
  61. package/dist/components/Navbar/MenuItem/MenuItem.js.map +0 -1
  62. package/dist/components/Navbar/MenuItem/MenuItem.styled.d.ts +0 -18
  63. package/dist/components/Navbar/MenuItem/MenuItem.styled.js +0 -59
  64. package/dist/components/Navbar/MenuItem/MenuItem.styled.js.map +0 -1
  65. package/dist/components/Navbar/MenuItem/MenuItem.types.d.ts +0 -12
  66. package/dist/components/Navbar/MenuItem/MenuItem.types.js +0 -2
  67. package/dist/components/Navbar/MenuItem/MenuItem.types.js.map +0 -1
  68. package/dist/components/Navbar/SubMenu/SubMenu.d.ts +0 -2
  69. package/dist/components/Navbar/SubMenu/SubMenu.js +0 -14
  70. package/dist/components/Navbar/SubMenu/SubMenu.js.map +0 -1
  71. package/dist/components/Navbar/SubMenu/SubMenu.styled.d.ts +0 -27
  72. package/dist/components/Navbar/SubMenu/SubMenu.styled.js +0 -165
  73. package/dist/components/Navbar/SubMenu/SubMenu.styled.js.map +0 -1
  74. package/dist/components/Navbar/SubMenu/SubMenu.types.d.ts +0 -13
  75. package/dist/components/Navbar/SubMenu/SubMenu.types.js +0 -2
  76. package/dist/components/Navbar/SubMenu/SubMenu.types.js.map +0 -1
  77. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.d.ts +0 -3
  78. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.js +0 -9
  79. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.js.map +0 -1
  80. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.styled.d.ts +0 -11
  81. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.styled.js +0 -33
  82. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.styled.js.map +0 -1
  83. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.types.d.ts +0 -5
  84. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.types.js +0 -2
  85. package/dist/components/Navbar/SubMenuColumn/SubMenuColumn.types.js.map +0 -1
  86. package/dist/components/Navbar/SubMenuItem/SubMenuItem.d.ts +0 -2
  87. package/dist/components/Navbar/SubMenuItem/SubMenuItem.js +0 -15
  88. package/dist/components/Navbar/SubMenuItem/SubMenuItem.js.map +0 -1
  89. package/dist/components/Navbar/SubMenuItem/SubMenuItem.styled.d.ts +0 -32
  90. package/dist/components/Navbar/SubMenuItem/SubMenuItem.styled.js +0 -84
  91. package/dist/components/Navbar/SubMenuItem/SubMenuItem.styled.js.map +0 -1
  92. package/dist/components/Navbar/SubMenuItem/SubMenuItem.types.d.ts +0 -13
  93. package/dist/components/Navbar/SubMenuItem/SubMenuItem.types.js +0 -2
  94. package/dist/components/Navbar/SubMenuItem/SubMenuItem.types.js.map +0 -1
  95. package/dist/components/Navbar/utils.d.ts +0 -16
  96. package/dist/components/Navbar/utils.js +0 -33
  97. 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,8 @@
1
+ import type { NavbarI18n } from './Navbar.types';
2
+ interface MobileMenuProps {
3
+ open: boolean;
4
+ onClose: () => void;
5
+ i18n: NavbarI18n;
6
+ }
7
+ declare const MobileMenu: import("react").NamedExoticComponent<MobileMenuProps>;
8
+ export { MobileMenu };
@@ -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 React from 'react';
2
- import { NavbarProps } from './Navbar.types';
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 { ChainSelectori18n } from '../ChainSelector/ChainSelector.types';
2
- import { NavbarMenuI18nProps, NavbarSubmenuProps } from './Navbar.types';
3
- declare const navbarMainTitlesI18N: NavbarMenuI18nProps;
4
- declare const i18nChainSelectorDefault: ChainSelectori18n;
5
- declare const navbarSubmenu: NavbarSubmenuProps;
6
- export { navbarMainTitlesI18N, i18nChainSelectorDefault, navbarSubmenu };
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 };