@lokalise/harmony 1.40.1 → 1.40.3-exp-epic2x.1
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/harmony.css +110 -317
- package/dist/harmony100.cjs +8 -11
- package/dist/harmony100.cjs.map +1 -1
- package/dist/harmony100.mjs +8 -11
- package/dist/harmony100.mjs.map +1 -1
- package/dist/harmony101.cjs +47 -12
- package/dist/harmony101.cjs.map +1 -1
- package/dist/harmony101.mjs +46 -11
- package/dist/harmony101.mjs.map +1 -1
- package/dist/harmony102.cjs +6 -3
- package/dist/harmony102.cjs.map +1 -1
- package/dist/harmony102.mjs +6 -3
- package/dist/harmony102.mjs.map +1 -1
- package/dist/harmony103.cjs +99 -9
- package/dist/harmony103.cjs.map +1 -1
- package/dist/harmony103.mjs +81 -8
- package/dist/harmony103.mjs.map +1 -1
- package/dist/harmony104.cjs +14 -9
- package/dist/harmony104.cjs.map +1 -1
- package/dist/harmony104.mjs +13 -8
- package/dist/harmony104.mjs.map +1 -1
- package/dist/harmony105.cjs +20 -57
- package/dist/harmony105.cjs.map +1 -1
- package/dist/harmony105.mjs +20 -57
- package/dist/harmony105.mjs.map +1 -1
- package/dist/harmony106.cjs +9 -42
- package/dist/harmony106.cjs.map +1 -1
- package/dist/harmony106.mjs +8 -41
- package/dist/harmony106.mjs.map +1 -1
- package/dist/harmony107.cjs +14 -5
- package/dist/harmony107.cjs.map +1 -1
- package/dist/harmony107.mjs +14 -5
- package/dist/harmony107.mjs.map +1 -1
- package/dist/harmony108.cjs +17 -9
- package/dist/harmony108.cjs.map +1 -1
- package/dist/harmony108.mjs +16 -8
- package/dist/harmony108.mjs.map +1 -1
- package/dist/harmony109.cjs +21 -24
- package/dist/harmony109.cjs.map +1 -1
- package/dist/harmony109.mjs +20 -23
- package/dist/harmony109.mjs.map +1 -1
- package/dist/harmony110.cjs +10 -6
- package/dist/harmony110.cjs.map +1 -1
- package/dist/harmony110.mjs +9 -5
- package/dist/harmony110.mjs.map +1 -1
- package/dist/harmony111.cjs +22 -14
- package/dist/harmony111.cjs.map +1 -1
- package/dist/harmony111.mjs +24 -16
- package/dist/harmony111.mjs.map +1 -1
- package/dist/harmony112.cjs +14 -12
- package/dist/harmony112.cjs.map +1 -1
- package/dist/harmony112.mjs +13 -11
- package/dist/harmony112.mjs.map +1 -1
- package/dist/harmony113.cjs +35 -12
- package/dist/harmony113.cjs.map +1 -1
- package/dist/harmony113.mjs +35 -12
- package/dist/harmony113.mjs.map +1 -1
- package/dist/harmony114.cjs +14 -18
- package/dist/harmony114.cjs.map +1 -1
- package/dist/harmony114.mjs +14 -18
- package/dist/harmony114.mjs.map +1 -1
- package/dist/harmony115.cjs +19 -84
- package/dist/harmony115.cjs.map +1 -1
- package/dist/harmony115.mjs +19 -84
- package/dist/harmony115.mjs.map +1 -1
- package/dist/harmony116.cjs +34 -29
- package/dist/harmony116.cjs.map +1 -1
- package/dist/harmony116.mjs +34 -29
- package/dist/harmony116.mjs.map +1 -1
- package/dist/harmony117.cjs +21 -99
- package/dist/harmony117.cjs.map +1 -1
- package/dist/harmony117.mjs +20 -81
- package/dist/harmony117.mjs.map +1 -1
- package/dist/harmony118.cjs +21 -21
- package/dist/harmony118.cjs.map +1 -1
- package/dist/harmony118.mjs +20 -20
- package/dist/harmony118.mjs.map +1 -1
- package/dist/harmony119.cjs +6 -6
- package/dist/harmony119.cjs.map +1 -1
- package/dist/harmony119.mjs +5 -5
- package/dist/harmony119.mjs.map +1 -1
- package/dist/harmony120.cjs +15 -132
- package/dist/harmony120.cjs.map +1 -1
- package/dist/harmony120.mjs +14 -131
- package/dist/harmony120.mjs.map +1 -1
- package/dist/harmony121.cjs +87 -12
- package/dist/harmony121.cjs.map +1 -1
- package/dist/harmony121.mjs +86 -11
- package/dist/harmony121.mjs.map +1 -1
- package/dist/harmony122.cjs +30 -5
- package/dist/harmony122.cjs.map +1 -1
- package/dist/harmony122.mjs +30 -5
- package/dist/harmony122.mjs.map +1 -1
- package/dist/harmony123.cjs +6 -41
- package/dist/harmony123.cjs.map +1 -1
- package/dist/harmony123.mjs +5 -40
- package/dist/harmony123.mjs.map +1 -1
- package/dist/harmony124.cjs +6 -61
- package/dist/harmony124.cjs.map +1 -1
- package/dist/harmony124.mjs +5 -60
- package/dist/harmony124.mjs.map +1 -1
- package/dist/harmony125.cjs +96 -7
- package/dist/harmony125.cjs.map +1 -1
- package/dist/harmony125.mjs +96 -7
- package/dist/harmony125.mjs.map +1 -1
- package/dist/harmony126.cjs +14 -7
- package/dist/harmony126.cjs.map +1 -1
- package/dist/harmony126.mjs +13 -6
- package/dist/harmony126.mjs.map +1 -1
- package/dist/harmony127.cjs +14 -10
- package/dist/harmony127.cjs.map +1 -1
- package/dist/harmony127.mjs +14 -10
- package/dist/harmony127.mjs.map +1 -1
- package/dist/harmony128.cjs +37 -6
- package/dist/harmony128.cjs.map +1 -1
- package/dist/harmony128.mjs +36 -5
- package/dist/harmony128.mjs.map +1 -1
- package/dist/harmony129.cjs +29 -6
- package/dist/harmony129.cjs.map +1 -1
- package/dist/harmony129.mjs +28 -5
- package/dist/harmony129.mjs.map +1 -1
- package/dist/harmony130.cjs +10 -63
- package/dist/harmony130.cjs.map +1 -1
- package/dist/harmony130.mjs +9 -62
- package/dist/harmony130.mjs.map +1 -1
- package/dist/harmony131.cjs +6 -88
- package/dist/harmony131.cjs.map +1 -1
- package/dist/harmony131.mjs +5 -87
- package/dist/harmony131.mjs.map +1 -1
- package/dist/harmony132.cjs +6 -15
- package/dist/harmony132.cjs.map +1 -1
- package/dist/harmony132.mjs +6 -15
- package/dist/harmony132.mjs.map +1 -1
- package/dist/harmony133.cjs +25 -97
- package/dist/harmony133.cjs.map +1 -1
- package/dist/harmony133.mjs +24 -96
- package/dist/harmony133.mjs.map +1 -1
- package/dist/harmony134.cjs +7 -14
- package/dist/harmony134.cjs.map +1 -1
- package/dist/harmony134.mjs +6 -13
- package/dist/harmony134.mjs.map +1 -1
- package/dist/harmony135.cjs +13 -15
- package/dist/harmony135.cjs.map +1 -1
- package/dist/harmony135.mjs +12 -14
- package/dist/harmony135.mjs.map +1 -1
- package/dist/harmony136.cjs +7 -37
- package/dist/harmony136.cjs.map +1 -1
- package/dist/harmony136.mjs +6 -36
- package/dist/harmony136.mjs.map +1 -1
- package/dist/harmony137.cjs +10 -28
- package/dist/harmony137.cjs.map +1 -1
- package/dist/harmony137.mjs +10 -28
- package/dist/harmony137.mjs.map +1 -1
- package/dist/harmony138.cjs +13 -7
- package/dist/harmony138.cjs.map +1 -1
- package/dist/harmony138.mjs +13 -7
- package/dist/harmony138.mjs.map +1 -1
- package/dist/harmony139.cjs +15 -57
- package/dist/harmony139.cjs.map +1 -1
- package/dist/harmony139.mjs +15 -57
- package/dist/harmony139.mjs.map +1 -1
- package/dist/harmony14.cjs +1 -1
- package/dist/harmony14.mjs +1 -1
- package/dist/harmony140.cjs +15 -59
- package/dist/harmony140.cjs.map +1 -1
- package/dist/harmony140.mjs +15 -59
- package/dist/harmony140.mjs.map +1 -1
- package/dist/harmony141.cjs +12 -19
- package/dist/harmony141.cjs.map +1 -1
- package/dist/harmony141.mjs +11 -18
- package/dist/harmony141.mjs.map +1 -1
- package/dist/harmony142.cjs +15 -12
- package/dist/harmony142.cjs.map +1 -1
- package/dist/harmony142.mjs +15 -12
- package/dist/harmony142.mjs.map +1 -1
- package/dist/harmony143.cjs +19 -13
- package/dist/harmony143.cjs.map +1 -1
- package/dist/harmony143.mjs +19 -13
- package/dist/harmony143.mjs.map +1 -1
- package/dist/harmony144.cjs +10 -14
- package/dist/harmony144.cjs.map +1 -1
- package/dist/harmony144.mjs +10 -14
- package/dist/harmony144.mjs.map +1 -1
- package/dist/harmony145.cjs +5 -10
- package/dist/harmony145.cjs.map +1 -1
- package/dist/harmony145.mjs +5 -10
- package/dist/harmony145.mjs.map +1 -1
- package/dist/harmony146.cjs +11 -15
- package/dist/harmony146.cjs.map +1 -1
- package/dist/harmony146.mjs +11 -15
- package/dist/harmony146.mjs.map +1 -1
- package/dist/harmony147.cjs +28 -17
- package/dist/harmony147.cjs.map +1 -1
- package/dist/harmony147.mjs +28 -17
- package/dist/harmony147.mjs.map +1 -1
- package/dist/harmony148.cjs +12 -10
- package/dist/harmony148.cjs.map +1 -1
- package/dist/harmony148.mjs +12 -10
- package/dist/harmony148.mjs.map +1 -1
- package/dist/harmony17.cjs +1 -1
- package/dist/harmony17.mjs +1 -1
- package/dist/harmony25.cjs +1 -1
- package/dist/harmony25.mjs +1 -1
- package/dist/harmony26.cjs +1 -1
- package/dist/harmony26.mjs +1 -1
- package/dist/harmony4.cjs +15 -24
- package/dist/harmony4.cjs.map +1 -1
- package/dist/harmony4.mjs +15 -24
- package/dist/harmony4.mjs.map +1 -1
- package/dist/harmony5.cjs +1 -1
- package/dist/harmony5.mjs +1 -1
- package/dist/harmony6.cjs +3 -3
- package/dist/harmony6.mjs +3 -3
- package/dist/harmony66.cjs +1 -0
- package/dist/harmony66.cjs.map +1 -1
- package/dist/harmony66.mjs +1 -0
- package/dist/harmony66.mjs.map +1 -1
- package/dist/harmony7.cjs +1 -1
- package/dist/harmony7.mjs +1 -1
- package/dist/harmony75.cjs +1 -1
- package/dist/harmony75.mjs +1 -1
- package/dist/harmony76.cjs +51 -6
- package/dist/harmony76.cjs.map +1 -1
- package/dist/harmony76.mjs +50 -5
- package/dist/harmony76.mjs.map +1 -1
- package/dist/harmony77.cjs +38 -8
- package/dist/harmony77.cjs.map +1 -1
- package/dist/harmony77.mjs +38 -8
- package/dist/harmony77.mjs.map +1 -1
- package/dist/harmony78.cjs +9 -18
- package/dist/harmony78.cjs.map +1 -1
- package/dist/harmony78.mjs +8 -17
- package/dist/harmony78.mjs.map +1 -1
- package/dist/harmony79.cjs +6 -21
- package/dist/harmony79.cjs.map +1 -1
- package/dist/harmony79.mjs +8 -23
- package/dist/harmony79.mjs.map +1 -1
- package/dist/harmony8.cjs +5 -5
- package/dist/harmony8.mjs +5 -5
- package/dist/harmony80.cjs +28 -4
- package/dist/harmony80.cjs.map +1 -1
- package/dist/harmony80.mjs +28 -4
- package/dist/harmony80.mjs.map +1 -1
- package/dist/harmony81.cjs +3 -32
- package/dist/harmony81.cjs.map +1 -1
- package/dist/harmony81.mjs +3 -32
- package/dist/harmony81.mjs.map +1 -1
- package/dist/harmony82.cjs +30 -29
- package/dist/harmony82.cjs.map +1 -1
- package/dist/harmony82.mjs +31 -30
- package/dist/harmony82.mjs.map +1 -1
- package/dist/harmony83.cjs +43 -19
- package/dist/harmony83.cjs.map +1 -1
- package/dist/harmony83.mjs +43 -19
- package/dist/harmony83.mjs.map +1 -1
- package/dist/harmony84.cjs +27 -29
- package/dist/harmony84.cjs.map +1 -1
- package/dist/harmony84.mjs +27 -29
- package/dist/harmony84.mjs.map +1 -1
- package/dist/harmony85.cjs +64 -57
- package/dist/harmony85.cjs.map +1 -1
- package/dist/harmony85.mjs +64 -57
- package/dist/harmony85.mjs.map +1 -1
- package/dist/harmony86.cjs +15 -9
- package/dist/harmony86.cjs.map +1 -1
- package/dist/harmony86.mjs +14 -8
- package/dist/harmony86.mjs.map +1 -1
- package/dist/harmony87.cjs +3 -8
- package/dist/harmony87.cjs.map +1 -1
- package/dist/harmony87.mjs +3 -8
- package/dist/harmony87.mjs.map +1 -1
- package/dist/harmony88.cjs +10 -27
- package/dist/harmony88.cjs.map +1 -1
- package/dist/harmony88.mjs +11 -28
- package/dist/harmony88.mjs.map +1 -1
- package/dist/harmony89.cjs +13 -4
- package/dist/harmony89.cjs.map +1 -1
- package/dist/harmony89.mjs +12 -3
- package/dist/harmony89.mjs.map +1 -1
- package/dist/harmony90.cjs +9 -31
- package/dist/harmony90.cjs.map +1 -1
- package/dist/harmony90.mjs +10 -32
- package/dist/harmony90.mjs.map +1 -1
- package/dist/harmony91.cjs +22 -44
- package/dist/harmony91.cjs.map +1 -1
- package/dist/harmony91.mjs +21 -43
- package/dist/harmony91.mjs.map +1 -1
- package/dist/harmony92.cjs +160 -23
- package/dist/harmony92.cjs.map +1 -1
- package/dist/harmony92.mjs +160 -23
- package/dist/harmony92.mjs.map +1 -1
- package/dist/harmony93.cjs +41 -63
- package/dist/harmony93.cjs.map +1 -1
- package/dist/harmony93.mjs +41 -63
- package/dist/harmony93.mjs.map +1 -1
- package/dist/harmony94.cjs +25 -13
- package/dist/harmony94.cjs.map +1 -1
- package/dist/harmony94.mjs +26 -14
- package/dist/harmony94.mjs.map +1 -1
- package/dist/harmony95.cjs +3 -3
- package/dist/harmony95.cjs.map +1 -1
- package/dist/harmony95.mjs +3 -3
- package/dist/harmony95.mjs.map +1 -1
- package/dist/harmony96.cjs +16 -164
- package/dist/harmony96.cjs.map +1 -1
- package/dist/harmony96.mjs +16 -164
- package/dist/harmony96.mjs.map +1 -1
- package/dist/harmony97.cjs +73 -42
- package/dist/harmony97.cjs.map +1 -1
- package/dist/harmony97.mjs +73 -42
- package/dist/harmony97.mjs.map +1 -1
- package/dist/harmony98.cjs +12 -11
- package/dist/harmony98.cjs.map +1 -1
- package/dist/harmony98.mjs +12 -11
- package/dist/harmony98.mjs.map +1 -1
- package/dist/harmony99.cjs +31 -22
- package/dist/harmony99.cjs.map +1 -1
- package/dist/harmony99.mjs +30 -21
- package/dist/harmony99.mjs.map +1 -1
- package/dist/types/src/components/Sidebar/Sidebar.d.ts +15 -49
- package/dist/types/src/components/Sidebar/SidebarContent/SidebarContent.d.ts +7 -0
- package/dist/types/src/components/Sidebar/SidebarContext.d.ts +3 -0
- package/dist/types/src/components/Sidebar/SidebarProvider.d.ts +3 -0
- package/dist/types/src/components/Sidebar/Widgets/Avatar/Avatar.d.ts +5 -0
- package/dist/types/src/components/Sidebar/Widgets/HelpMenu/HelpMenu.d.ts +13 -0
- package/dist/types/src/components/Sidebar/Widgets/HelpMenu/HelpMenu.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/IconLink/IconLink.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/Menu/Menu.d.ts +3 -2
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/BillingMenuItem/BillingMenuItem.d.ts +13 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeam/CreateNewTeam.d.ts +17 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeam/CreateNewTeam.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder.d.ts +17 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/DarkModeToggle/DarkModeToggle.d.ts +18 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.d.ts +11 -24
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.stories.d.ts +3 -5
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.d.ts +10 -35
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem.d.ts +13 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.d.ts +1 -3
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSettingsMenuItem/TeamSettingsMenuItem.d.ts +13 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSettingsMenuItem/TeamSettingsMenuItem.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch.d.ts +5 -7
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem.d.ts +6 -9
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem.test.d.ts +1 -0
- package/dist/types/src/components/Sidebar/Widgets/Tasks/utils/content.d.ts +4 -0
- package/dist/types/src/components/Sidebar/hooks/useSidebar.d.ts +1 -0
- package/dist/types/src/components/Sidebar/hooks/useSidebarDataLoader.d.ts +5 -0
- package/dist/types/src/components/Sidebar/types.d.ts +72 -0
- package/dist/types/src/features/auth/core/types/jwtTokenPayload.d.ts +16 -10
- package/dist/types/src/features/auth/core/types/jwtTokenPayload.fixture.d.ts +15 -11
- package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedSessionPayload.d.ts +7 -5
- package/dist/types/src/features/auth/frontend/hooks/useAuthenticatedUser.d.ts +1 -1
- package/dist/types/src/features/navigation/hooks/useNavigation.d.ts +1 -1
- package/dist/types/src/features/navigation/hooks/useNavigationQueries.d.ts +3 -3
- package/dist/types/src/features/publicApi/hooks/useCreateProjectMutation.d.ts +2 -2
- package/dist/types/src/features/publicApi/hooks/useGetProjectPermissionMetaQuery.d.ts +2 -2
- package/dist/types/src/features/publicApi/hooks/useGetTeamUsersQuery.d.ts +1 -1
- package/dist/types/src/features/publicApi/hooks/useListPermissionTemplates.d.ts +1 -1
- package/dist/types/src/features/publicApi/hooks/useListProjectsQuery.d.ts +2 -2
- package/dist/types/src/features/publicApi/hooks/useListTeamUsersQuery.d.ts +1 -1
- package/dist/types/src/features/publicApi/hooks/useRetrieveProjectQuery.d.ts +1 -1
- package/dist/types/src/features/publicApi/hooks/useUpdateProjectMutation.d.ts +1 -1
- package/dist/types/src/features/publicApi/permissionTemplates.d.ts +4 -4
- package/dist/types/src/features/publicApi/projects.d.ts +28 -28
- package/dist/types/src/features/publicApi/teamUsers.d.ts +8 -8
- package/dist/types/src/features/publicApi/types/permissionTemplateTypes.d.ts +6 -6
- package/dist/types/src/features/publicApi/types/permissionTypes.d.ts +2 -2
- package/dist/types/src/features/publicApi/types/projectTypes.d.ts +27 -27
- package/dist/types/src/features/publicApi/types/teamUserTypes.d.ts +10 -10
- package/dist/types/src/utils/user/permissions.d.ts +9 -0
- package/dist/types/src/utils/user/permissions.test.d.ts +1 -0
- package/dist/types/tests/mocks/sidebar/sidebar.d.ts +19 -0
- package/dist/types/tests/utils/sidebar.d.ts +4 -0
- package/package.json +1 -1
- package/dist/harmony149.cjs +0 -9
- package/dist/harmony149.cjs.map +0 -1
- package/dist/harmony149.mjs +0 -9
- package/dist/harmony149.mjs.map +0 -1
- package/dist/harmony150.cjs +0 -15
- package/dist/harmony150.cjs.map +0 -1
- package/dist/harmony150.mjs +0 -15
- package/dist/harmony150.mjs.map +0 -1
- package/dist/harmony151.cjs +0 -35
- package/dist/harmony151.cjs.map +0 -1
- package/dist/harmony151.mjs +0 -35
- package/dist/harmony151.mjs.map +0 -1
- package/dist/harmony152.cjs +0 -17
- package/dist/harmony152.cjs.map +0 -1
- package/dist/harmony152.mjs +0 -17
- package/dist/harmony152.mjs.map +0 -1
- package/dist/harmony153.cjs +0 -49
- package/dist/harmony153.cjs.map +0 -1
- package/dist/harmony153.mjs +0 -49
- package/dist/harmony153.mjs.map +0 -1
- package/dist/harmony154.cjs +0 -15
- package/dist/harmony154.cjs.map +0 -1
- package/dist/harmony154.mjs +0 -15
- package/dist/harmony154.mjs.map +0 -1
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuContent.d.ts +0 -6
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuContext.d.ts +0 -3
- package/dist/types/src/components/Sidebar/Widgets/ProfileMenu/ProfileMenuProvider.d.ts +0 -7
- package/dist/types/src/components/Sidebar/utils/index.d.ts +0 -4
- /package/dist/types/src/components/Sidebar/Widgets/{ProfileMenu/ProfileMenu.test.d.ts → Avatar/Avatar.test.d.ts} +0 -0
- /package/dist/types/src/components/Sidebar/{UpgradeIcon → Widgets/ProfileMenu/UpgradeIcon}/UpgradeIcon.d.ts +0 -0
package/dist/harmony96.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"harmony96.cjs","sources":["../src/features/navigation/hooks/useExpertNavigation.ts"],"sourcesContent":["import type { Contributor, Project } from '@features/node'\nimport { useMemo } from 'react'\nimport { useNavigationClient } from '../providers/NavigationClientProvider'\nimport type { NavigationTabsItem } from '../types/navigation'\nimport { getProjectNavigationVisibilityMap } from '../utils/toolbarVisibility'\n\n// TODO: Validate features types\nexport const getIsFeatureEnabled = (features: Record<string, boolean>, name: string) => {\n\tconst featureState = features[name]\n\n\treturn (\n\t\tfeatureState !== null &&\n\t\tfeatureState !== undefined &&\n\t\t[true, 'on', 'true'].includes(featureState)\n\t)\n}\n\n/**\n * Hook to generate legacy navigation items using the existing structure\n * but with context API instead of Redux\n */\nexport const useExpertNavigation = (\n\tenabled: boolean,\n\tproject?: Project,\n\tcontributor?: Contributor,\n) => {\n\t// Use contributor data if provided, otherwise use defaults\n\tconst adminRights = contributor?.admin_rights || []\n\t// TODO: Implement selected app slug, small investigation is needed\n\tconst marketingSupportProjectSelectedAppSlug = 'selected-app-slug'\n\tconst navigationClient = useNavigationClient()\n\tconst expertUrl = navigationClient.getExpertUrl()\n\n\treturn useMemo(() => {\n\t\t// Get data from contexts instead of Redux, or use provided data\n\t\tif (!project || !enabled) {\n\t\t\treturn []\n\t\t}\n\t\t/* TODO: We're missing badges API. We need to get it from the backend or find alternative way to get task count\n\t\t * Fetch tasks and calculate count is not a good idea, because it can have pagination, therefore we can\n\t\t * ask for an additional prop in tasks response: task_count based on branch_id + project_id + task_status\n\t\t */\n\t\t// const taskCount = getTaskCount(project, branch, badges.tasks)\n\n\t\t// TODO: Implement feature flags functionality, most likely separate package\n\t\t// const isFeatureEnabled = (feature: string) => getIsFeatureEnabled(features, feature)\n\n\t\tconst navigationVisibility = getProjectNavigationVisibilityMap(\n\t\t\tproject,\n\t\t\tadminRights,\n\t\t\t() => true /*isFeatureEnabled*/,\n\t\t)\n\n\t\tconst appsNavigationItem: NavigationTabsItem = {\n\t\t\tkey: 'apps',\n\t\t\tlabel: 'Apps',\n\t\t\tisActive: (input: string) => input === 'apps',\n\t\t\tlink: `${expertUrl}/apps/${project.project_id}/`,\n\t\t\t...navigationVisibility.apps,\n\t\t}\n\n\t\tconst appsNavigationItemArrInMainMenu: NavigationTabsItem[] = []\n\t\tconst appsNavigationItemArrInMoreMenu: NavigationTabsItem[] = []\n\n\t\tif (project.project_type === 'content_integration') {\n\t\t\tappsNavigationItemArrInMoreMenu.push(appsNavigationItem)\n\t\t} else {\n\t\t\tappsNavigationItemArrInMainMenu.push(appsNavigationItem)\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tkey: 'edit',\n\t\t\t\tlabel: 'Editor',\n\t\t\t\tlink: `${expertUrl}/project/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'edit',\n\t\t\t\t...navigationVisibility.editor,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'files',\n\t\t\t\tlabel: 'Files',\n\t\t\t\tlink: `${expertUrl}/files/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'files',\n\t\t\t\t...navigationVisibility.files,\n\t\t\t},\n\t\t\t...(project.project_type === 'content_integration'\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'contentManagement',\n\t\t\t\t\t\t\tlabel: 'Content management',\n\t\t\t\t\t\t\tisActive: (input: string) => input === 'apps',\n\t\t\t\t\t\t\tlink: `${expertUrl}/apps/${project.project_id}/${marketingSupportProjectSelectedAppSlug}`,\n\t\t\t\t\t\t\t...navigationVisibility.contentManagement,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'upload',\n\t\t\t\t\t\t\tlabel: 'Upload',\n\t\t\t\t\t\t\tlink: `${expertUrl}/upload/${project.project_id}/`,\n\t\t\t\t\t\t\tisActive: (input: string) => input === 'upload',\n\t\t\t\t\t\t\t...navigationVisibility.upload,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'download',\n\t\t\t\t\t\t\tlabel: 'Download',\n\t\t\t\t\t\t\tlink: `${expertUrl}/download/${project.project_id}/`,\n\t\t\t\t\t\t\tisActive: (input: string) => input === 'download',\n\t\t\t\t\t\t\t...navigationVisibility.download,\n\t\t\t\t\t\t},\n\t\t\t\t\t]),\n\t\t\t{\n\t\t\t\tkey: 'tasks',\n\t\t\t\tlabel: 'Tasks',\n\t\t\t\tlink: `${expertUrl}/tasks/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'tasks',\n\t\t\t\t// TODO: Add task count\n\t\t\t\t// badge: taskCount,\n\t\t\t\t...navigationVisibility.tasks,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'workflows',\n\t\t\t\tlabel: 'Workflows',\n\t\t\t\tlink: `${expertUrl}/workflows/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'workflows',\n\t\t\t\tnovel: 'New',\n\t\t\t\tonClick: () => {\n\t\t\t\t\t// TODO: Resolve analytics globally, most likely separate package\n\t\t\t\t\t// track(AnalyticsEventName.EDITOR_WORKFLOWS_TAB_CLICKED);\n\t\t\t\t\twindow.location.assign(`${expertUrl}/workflows/${project.project_id}/`)\n\t\t\t\t},\n\t\t\t\t...navigationVisibility.workflows,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'contributors',\n\t\t\t\tlabel: 'Contributors',\n\t\t\t\tlink: `${expertUrl}/contributors/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'contributors',\n\t\t\t\t...navigationVisibility.contributors,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'screenshots',\n\t\t\t\tlabel: 'Screenshots',\n\t\t\t\tlink: `${expertUrl}/screenshots/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'screenshots',\n\t\t\t\t...navigationVisibility.screenshots,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'glossary',\n\t\t\t\tlabel: 'Glossary',\n\t\t\t\tlink: `${expertUrl}/glossary/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'glossary',\n\t\t\t\t...navigationVisibility.glossary,\n\t\t\t},\n\t\t\t...appsNavigationItemArrInMainMenu,\n\t\t\t{\n\t\t\t\tkey: 'more',\n\t\t\t\tlabel: 'More...',\n\t\t\t\tisActive: (input: string) =>\n\t\t\t\t\t['settings', 'statistics', 'duplicates', 'live edit'].includes(input),\n\t\t\t\t...navigationVisibility.more,\n\t\t\t\tdropdown: [\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/`,\n\t\t\t\t\t\t\tlabel: 'Settings',\n\t\t\t\t\t\t\t...navigationVisibility.settings,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/#branches`,\n\t\t\t\t\t\t\tlabel: 'Branches',\n\t\t\t\t\t\t\t...navigationVisibility.branches,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/#ota-bundles`,\n\t\t\t\t\t\t\tlabel: 'OTA Bundles',\n\t\t\t\t\t\t\t...navigationVisibility.otaBundles,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/#project-automations`,\n\t\t\t\t\t\t\tlabel: 'Automations',\n\t\t\t\t\t\t\t...navigationVisibility.automations,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/dupes/${project.project_id}/`,\n\t\t\t\t\t\t\tlabel: 'Duplicate finder',\n\t\t\t\t\t\t\t...navigationVisibility.duplicateFinder,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t...appsNavigationItemArrInMoreMenu,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// TODO: This could be problematic tab, because it is not a link and we can't just redirect. We need to find a workaround for that.\n\t\t\t\t\t\t\tlabel: 'Activity',\n\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t// const showActivityEvent = new CustomEvent(\"show-activity\", {\n\t\t\t\t\t\t\t\t// \tdetail: {\n\t\t\t\t\t\t\t\t// \t\tprojectId: project.id,\n\t\t\t\t\t\t\t\t// \t\tbranchId: branch.branchId,\n\t\t\t\t\t\t\t\t// \t\tbranchName: branch.branchName,\n\t\t\t\t\t\t\t\t// \t},\n\t\t\t\t\t\t\t\t// });\n\t\t\t\t\t\t\t\t// document.dispatchEvent(showActivityEvent);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...navigationVisibility.activity,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/statistics/${project.project_id}/`,\n\t\t\t\t\t\t\tlabel: 'Statistics',\n\t\t\t\t\t\t\t...navigationVisibility.statistics,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t],\n\t\t\t},\n\t\t]\n\t}, [project, adminRights, enabled, expertUrl])\n}\n\n// TODO: Helper function for getting task count from badge data\n// const _getTaskCount = (project: any, branch: any, taskBadges: any) => {\n// \tif (!taskBadges) return 0\n\n// \t// Implementation would depend on your getTaskCountFromTasks utility\n// \t// Simplified version:\n// \tconst projectTasks = taskBadges[project.id] || {}\n// \treturn projectTasks[branch.branchId || 'master'] || 0\n// }\n"],"names":["useNavigationClient","useMemo","getProjectNavigationVisibilityMap"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"harmony96.cjs","sources":["../src/components/Sidebar/Widgets/IconLink/IconLink.tsx"],"sourcesContent":["import { Link, type SvgIconProps, Tooltip } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport type { FC } from 'react'\nimport styles from './IconLink.module.css'\n\ntype IconLinkProps = {\n\t/** URL destination for the link */\n\tto: string\n\t/** Text to display in the tooltip when hovering over the icon */\n\tlabel: string\n\t/** Icon component from @lokalise/louis to display */\n\ticon: FC<SvgIconProps>\n}\n\n/**\n * A navigation link component that displays an icon with a tooltip.\n * When hovered, shows a tooltip with the label text.\n * The link is highlighted when the current URL matches its destination.\n *\n * @example\n * ```tsx\n * <IconLink to=\"/projects\" label=\"Projects\" icon={FolderOpenIcon} />\n * ```\n */\nexport const IconLink = ({ label, to, icon: Icon }: IconLinkProps) => {\n\treturn (\n\t\t<Tooltip placement=\"right\" tooltip={label}>\n\t\t\t<Link\n\t\t\t\taria-label={label}\n\t\t\t\tclassName={clsx(styles.link, {\n\t\t\t\t\t[styles.active]: typeof window !== 'undefined' && window.location.pathname.startsWith(to),\n\t\t\t\t})}\n\t\t\t\thref={to}\n\t\t\t>\n\t\t\t\t<Icon size=\"25px\" />\n\t\t\t</Link>\n\t\t</Tooltip>\n\t)\n}\n"],"names":["jsx","Tooltip","Link","clsx","styles"],"mappings":";;;;;;AAwBO,MAAM,WAAW,CAAC,EAAE,OAAO,IAAI,MAAM,WAA0B;AACrE,SACEA,2BAAA,IAAAC,MAAA,SAAA,EAAQ,WAAU,SAAQ,SAAS,OACnC,UAAAD,2BAAA;AAAA,IAACE,MAAA;AAAA,IAAA;AAAA,MACA,cAAY;AAAA,MACZ,WAAWC,KAAAA,KAAKC,gBAAA,QAAO,MAAM;AAAA,QAC5B,CAACA,gBAAO,QAAA,MAAM,GAAG,OAAO,WAAW,eAAe,OAAO,SAAS,SAAS,WAAW,EAAE;AAAA,MAAA,CACxF;AAAA,MACD,MAAM;AAAA,MAEN,UAAAJ,2BAAAA,IAAC,MAAK,EAAA,MAAK,OAAO,CAAA;AAAA,IAAA;AAAA,EAAA,GAEpB;AAEF;;"}
|
package/dist/harmony96.mjs
CHANGED
@@ -1,169 +1,21 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
2
|
+
import { Tooltip, Link } from "@lokalise/louis";
|
3
|
+
import { clsx } from "./harmony73.mjs";
|
4
|
+
import styles from "./harmony106.mjs";
|
5
|
+
const IconLink = ({ label, to, icon: Icon }) => {
|
6
|
+
return /* @__PURE__ */ jsx(Tooltip, { placement: "right", tooltip: label, children: /* @__PURE__ */ jsx(
|
7
|
+
Link,
|
8
|
+
{
|
9
|
+
"aria-label": label,
|
10
|
+
className: clsx(styles.link, {
|
11
|
+
[styles.active]: typeof window !== "undefined" && window.location.pathname.startsWith(to)
|
12
|
+
}),
|
13
|
+
href: to,
|
14
|
+
children: /* @__PURE__ */ jsx(Icon, { size: "25px" })
|
12
15
|
}
|
13
|
-
|
14
|
-
project,
|
15
|
-
adminRights,
|
16
|
-
() => true
|
17
|
-
);
|
18
|
-
const appsNavigationItem = {
|
19
|
-
key: "apps",
|
20
|
-
label: "Apps",
|
21
|
-
isActive: (input) => input === "apps",
|
22
|
-
link: `${expertUrl}/apps/${project.project_id}/`,
|
23
|
-
...navigationVisibility.apps
|
24
|
-
};
|
25
|
-
const appsNavigationItemArrInMainMenu = [];
|
26
|
-
const appsNavigationItemArrInMoreMenu = [];
|
27
|
-
if (project.project_type === "content_integration") {
|
28
|
-
appsNavigationItemArrInMoreMenu.push(appsNavigationItem);
|
29
|
-
} else {
|
30
|
-
appsNavigationItemArrInMainMenu.push(appsNavigationItem);
|
31
|
-
}
|
32
|
-
return [
|
33
|
-
{
|
34
|
-
key: "edit",
|
35
|
-
label: "Editor",
|
36
|
-
link: `${expertUrl}/project/${project.project_id}/`,
|
37
|
-
isActive: (input) => input === "edit",
|
38
|
-
...navigationVisibility.editor
|
39
|
-
},
|
40
|
-
{
|
41
|
-
key: "files",
|
42
|
-
label: "Files",
|
43
|
-
link: `${expertUrl}/files/${project.project_id}/`,
|
44
|
-
isActive: (input) => input === "files",
|
45
|
-
...navigationVisibility.files
|
46
|
-
},
|
47
|
-
...project.project_type === "content_integration" ? [
|
48
|
-
{
|
49
|
-
key: "contentManagement",
|
50
|
-
label: "Content management",
|
51
|
-
isActive: (input) => input === "apps",
|
52
|
-
link: `${expertUrl}/apps/${project.project_id}/${marketingSupportProjectSelectedAppSlug}`,
|
53
|
-
...navigationVisibility.contentManagement
|
54
|
-
}
|
55
|
-
] : [
|
56
|
-
{
|
57
|
-
key: "upload",
|
58
|
-
label: "Upload",
|
59
|
-
link: `${expertUrl}/upload/${project.project_id}/`,
|
60
|
-
isActive: (input) => input === "upload",
|
61
|
-
...navigationVisibility.upload
|
62
|
-
},
|
63
|
-
{
|
64
|
-
key: "download",
|
65
|
-
label: "Download",
|
66
|
-
link: `${expertUrl}/download/${project.project_id}/`,
|
67
|
-
isActive: (input) => input === "download",
|
68
|
-
...navigationVisibility.download
|
69
|
-
}
|
70
|
-
],
|
71
|
-
{
|
72
|
-
key: "tasks",
|
73
|
-
label: "Tasks",
|
74
|
-
link: `${expertUrl}/tasks/${project.project_id}/`,
|
75
|
-
isActive: (input) => input === "tasks",
|
76
|
-
// TODO: Add task count
|
77
|
-
// badge: taskCount,
|
78
|
-
...navigationVisibility.tasks
|
79
|
-
},
|
80
|
-
{
|
81
|
-
key: "workflows",
|
82
|
-
label: "Workflows",
|
83
|
-
link: `${expertUrl}/workflows/${project.project_id}/`,
|
84
|
-
isActive: (input) => input === "workflows",
|
85
|
-
novel: "New",
|
86
|
-
onClick: () => {
|
87
|
-
window.location.assign(`${expertUrl}/workflows/${project.project_id}/`);
|
88
|
-
},
|
89
|
-
...navigationVisibility.workflows
|
90
|
-
},
|
91
|
-
{
|
92
|
-
key: "contributors",
|
93
|
-
label: "Contributors",
|
94
|
-
link: `${expertUrl}/contributors/${project.project_id}/`,
|
95
|
-
isActive: (input) => input === "contributors",
|
96
|
-
...navigationVisibility.contributors
|
97
|
-
},
|
98
|
-
{
|
99
|
-
key: "screenshots",
|
100
|
-
label: "Screenshots",
|
101
|
-
link: `${expertUrl}/screenshots/${project.project_id}/`,
|
102
|
-
isActive: (input) => input === "screenshots",
|
103
|
-
...navigationVisibility.screenshots
|
104
|
-
},
|
105
|
-
{
|
106
|
-
key: "glossary",
|
107
|
-
label: "Glossary",
|
108
|
-
link: `${expertUrl}/glossary/${project.project_id}/`,
|
109
|
-
isActive: (input) => input === "glossary",
|
110
|
-
...navigationVisibility.glossary
|
111
|
-
},
|
112
|
-
...appsNavigationItemArrInMainMenu,
|
113
|
-
{
|
114
|
-
key: "more",
|
115
|
-
label: "More...",
|
116
|
-
isActive: (input) => ["settings", "statistics", "duplicates", "live edit"].includes(input),
|
117
|
-
...navigationVisibility.more,
|
118
|
-
dropdown: [
|
119
|
-
[
|
120
|
-
{
|
121
|
-
link: `${expertUrl}/settings/${project.project_id}/`,
|
122
|
-
label: "Settings",
|
123
|
-
...navigationVisibility.settings
|
124
|
-
},
|
125
|
-
{
|
126
|
-
link: `${expertUrl}/settings/${project.project_id}/#branches`,
|
127
|
-
label: "Branches",
|
128
|
-
...navigationVisibility.branches
|
129
|
-
},
|
130
|
-
{
|
131
|
-
link: `${expertUrl}/settings/${project.project_id}/#ota-bundles`,
|
132
|
-
label: "OTA Bundles",
|
133
|
-
...navigationVisibility.otaBundles
|
134
|
-
},
|
135
|
-
{
|
136
|
-
link: `${expertUrl}/settings/${project.project_id}/#project-automations`,
|
137
|
-
label: "Automations",
|
138
|
-
...navigationVisibility.automations
|
139
|
-
},
|
140
|
-
{
|
141
|
-
link: `${expertUrl}/dupes/${project.project_id}/`,
|
142
|
-
label: "Duplicate finder",
|
143
|
-
...navigationVisibility.duplicateFinder
|
144
|
-
}
|
145
|
-
],
|
146
|
-
[
|
147
|
-
...appsNavigationItemArrInMoreMenu,
|
148
|
-
{
|
149
|
-
// TODO: This could be problematic tab, because it is not a link and we can't just redirect. We need to find a workaround for that.
|
150
|
-
label: "Activity",
|
151
|
-
onClick: () => {
|
152
|
-
},
|
153
|
-
...navigationVisibility.activity
|
154
|
-
},
|
155
|
-
{
|
156
|
-
link: `${expertUrl}/statistics/${project.project_id}/`,
|
157
|
-
label: "Statistics",
|
158
|
-
...navigationVisibility.statistics
|
159
|
-
}
|
160
|
-
]
|
161
|
-
]
|
162
|
-
}
|
163
|
-
];
|
164
|
-
}, [project, adminRights, enabled, expertUrl]);
|
16
|
+
) });
|
165
17
|
};
|
166
18
|
export {
|
167
|
-
|
19
|
+
IconLink
|
168
20
|
};
|
169
21
|
//# sourceMappingURL=harmony96.mjs.map
|
package/dist/harmony96.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"harmony96.mjs","sources":["../src/features/navigation/hooks/useExpertNavigation.ts"],"sourcesContent":["import type { Contributor, Project } from '@features/node'\nimport { useMemo } from 'react'\nimport { useNavigationClient } from '../providers/NavigationClientProvider'\nimport type { NavigationTabsItem } from '../types/navigation'\nimport { getProjectNavigationVisibilityMap } from '../utils/toolbarVisibility'\n\n// TODO: Validate features types\nexport const getIsFeatureEnabled = (features: Record<string, boolean>, name: string) => {\n\tconst featureState = features[name]\n\n\treturn (\n\t\tfeatureState !== null &&\n\t\tfeatureState !== undefined &&\n\t\t[true, 'on', 'true'].includes(featureState)\n\t)\n}\n\n/**\n * Hook to generate legacy navigation items using the existing structure\n * but with context API instead of Redux\n */\nexport const useExpertNavigation = (\n\tenabled: boolean,\n\tproject?: Project,\n\tcontributor?: Contributor,\n) => {\n\t// Use contributor data if provided, otherwise use defaults\n\tconst adminRights = contributor?.admin_rights || []\n\t// TODO: Implement selected app slug, small investigation is needed\n\tconst marketingSupportProjectSelectedAppSlug = 'selected-app-slug'\n\tconst navigationClient = useNavigationClient()\n\tconst expertUrl = navigationClient.getExpertUrl()\n\n\treturn useMemo(() => {\n\t\t// Get data from contexts instead of Redux, or use provided data\n\t\tif (!project || !enabled) {\n\t\t\treturn []\n\t\t}\n\t\t/* TODO: We're missing badges API. We need to get it from the backend or find alternative way to get task count\n\t\t * Fetch tasks and calculate count is not a good idea, because it can have pagination, therefore we can\n\t\t * ask for an additional prop in tasks response: task_count based on branch_id + project_id + task_status\n\t\t */\n\t\t// const taskCount = getTaskCount(project, branch, badges.tasks)\n\n\t\t// TODO: Implement feature flags functionality, most likely separate package\n\t\t// const isFeatureEnabled = (feature: string) => getIsFeatureEnabled(features, feature)\n\n\t\tconst navigationVisibility = getProjectNavigationVisibilityMap(\n\t\t\tproject,\n\t\t\tadminRights,\n\t\t\t() => true /*isFeatureEnabled*/,\n\t\t)\n\n\t\tconst appsNavigationItem: NavigationTabsItem = {\n\t\t\tkey: 'apps',\n\t\t\tlabel: 'Apps',\n\t\t\tisActive: (input: string) => input === 'apps',\n\t\t\tlink: `${expertUrl}/apps/${project.project_id}/`,\n\t\t\t...navigationVisibility.apps,\n\t\t}\n\n\t\tconst appsNavigationItemArrInMainMenu: NavigationTabsItem[] = []\n\t\tconst appsNavigationItemArrInMoreMenu: NavigationTabsItem[] = []\n\n\t\tif (project.project_type === 'content_integration') {\n\t\t\tappsNavigationItemArrInMoreMenu.push(appsNavigationItem)\n\t\t} else {\n\t\t\tappsNavigationItemArrInMainMenu.push(appsNavigationItem)\n\t\t}\n\n\t\treturn [\n\t\t\t{\n\t\t\t\tkey: 'edit',\n\t\t\t\tlabel: 'Editor',\n\t\t\t\tlink: `${expertUrl}/project/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'edit',\n\t\t\t\t...navigationVisibility.editor,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'files',\n\t\t\t\tlabel: 'Files',\n\t\t\t\tlink: `${expertUrl}/files/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'files',\n\t\t\t\t...navigationVisibility.files,\n\t\t\t},\n\t\t\t...(project.project_type === 'content_integration'\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'contentManagement',\n\t\t\t\t\t\t\tlabel: 'Content management',\n\t\t\t\t\t\t\tisActive: (input: string) => input === 'apps',\n\t\t\t\t\t\t\tlink: `${expertUrl}/apps/${project.project_id}/${marketingSupportProjectSelectedAppSlug}`,\n\t\t\t\t\t\t\t...navigationVisibility.contentManagement,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'upload',\n\t\t\t\t\t\t\tlabel: 'Upload',\n\t\t\t\t\t\t\tlink: `${expertUrl}/upload/${project.project_id}/`,\n\t\t\t\t\t\t\tisActive: (input: string) => input === 'upload',\n\t\t\t\t\t\t\t...navigationVisibility.upload,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tkey: 'download',\n\t\t\t\t\t\t\tlabel: 'Download',\n\t\t\t\t\t\t\tlink: `${expertUrl}/download/${project.project_id}/`,\n\t\t\t\t\t\t\tisActive: (input: string) => input === 'download',\n\t\t\t\t\t\t\t...navigationVisibility.download,\n\t\t\t\t\t\t},\n\t\t\t\t\t]),\n\t\t\t{\n\t\t\t\tkey: 'tasks',\n\t\t\t\tlabel: 'Tasks',\n\t\t\t\tlink: `${expertUrl}/tasks/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'tasks',\n\t\t\t\t// TODO: Add task count\n\t\t\t\t// badge: taskCount,\n\t\t\t\t...navigationVisibility.tasks,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'workflows',\n\t\t\t\tlabel: 'Workflows',\n\t\t\t\tlink: `${expertUrl}/workflows/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'workflows',\n\t\t\t\tnovel: 'New',\n\t\t\t\tonClick: () => {\n\t\t\t\t\t// TODO: Resolve analytics globally, most likely separate package\n\t\t\t\t\t// track(AnalyticsEventName.EDITOR_WORKFLOWS_TAB_CLICKED);\n\t\t\t\t\twindow.location.assign(`${expertUrl}/workflows/${project.project_id}/`)\n\t\t\t\t},\n\t\t\t\t...navigationVisibility.workflows,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'contributors',\n\t\t\t\tlabel: 'Contributors',\n\t\t\t\tlink: `${expertUrl}/contributors/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'contributors',\n\t\t\t\t...navigationVisibility.contributors,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'screenshots',\n\t\t\t\tlabel: 'Screenshots',\n\t\t\t\tlink: `${expertUrl}/screenshots/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'screenshots',\n\t\t\t\t...navigationVisibility.screenshots,\n\t\t\t},\n\t\t\t{\n\t\t\t\tkey: 'glossary',\n\t\t\t\tlabel: 'Glossary',\n\t\t\t\tlink: `${expertUrl}/glossary/${project.project_id}/`,\n\t\t\t\tisActive: (input: string) => input === 'glossary',\n\t\t\t\t...navigationVisibility.glossary,\n\t\t\t},\n\t\t\t...appsNavigationItemArrInMainMenu,\n\t\t\t{\n\t\t\t\tkey: 'more',\n\t\t\t\tlabel: 'More...',\n\t\t\t\tisActive: (input: string) =>\n\t\t\t\t\t['settings', 'statistics', 'duplicates', 'live edit'].includes(input),\n\t\t\t\t...navigationVisibility.more,\n\t\t\t\tdropdown: [\n\t\t\t\t\t[\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/`,\n\t\t\t\t\t\t\tlabel: 'Settings',\n\t\t\t\t\t\t\t...navigationVisibility.settings,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/#branches`,\n\t\t\t\t\t\t\tlabel: 'Branches',\n\t\t\t\t\t\t\t...navigationVisibility.branches,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/#ota-bundles`,\n\t\t\t\t\t\t\tlabel: 'OTA Bundles',\n\t\t\t\t\t\t\t...navigationVisibility.otaBundles,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/settings/${project.project_id}/#project-automations`,\n\t\t\t\t\t\t\tlabel: 'Automations',\n\t\t\t\t\t\t\t...navigationVisibility.automations,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/dupes/${project.project_id}/`,\n\t\t\t\t\t\t\tlabel: 'Duplicate finder',\n\t\t\t\t\t\t\t...navigationVisibility.duplicateFinder,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\t[\n\t\t\t\t\t\t...appsNavigationItemArrInMoreMenu,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// TODO: This could be problematic tab, because it is not a link and we can't just redirect. We need to find a workaround for that.\n\t\t\t\t\t\t\tlabel: 'Activity',\n\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t// const showActivityEvent = new CustomEvent(\"show-activity\", {\n\t\t\t\t\t\t\t\t// \tdetail: {\n\t\t\t\t\t\t\t\t// \t\tprojectId: project.id,\n\t\t\t\t\t\t\t\t// \t\tbranchId: branch.branchId,\n\t\t\t\t\t\t\t\t// \t\tbranchName: branch.branchName,\n\t\t\t\t\t\t\t\t// \t},\n\t\t\t\t\t\t\t\t// });\n\t\t\t\t\t\t\t\t// document.dispatchEvent(showActivityEvent);\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t...navigationVisibility.activity,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlink: `${expertUrl}/statistics/${project.project_id}/`,\n\t\t\t\t\t\t\tlabel: 'Statistics',\n\t\t\t\t\t\t\t...navigationVisibility.statistics,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t],\n\t\t\t},\n\t\t]\n\t}, [project, adminRights, enabled, expertUrl])\n}\n\n// TODO: Helper function for getting task count from badge data\n// const _getTaskCount = (project: any, branch: any, taskBadges: any) => {\n// \tif (!taskBadges) return 0\n\n// \t// Implementation would depend on your getTaskCountFromTasks utility\n// \t// Simplified version:\n// \tconst projectTasks = taskBadges[project.id] || {}\n// \treturn projectTasks[branch.branchId || 'master'] || 0\n// }\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"harmony96.mjs","sources":["../src/components/Sidebar/Widgets/IconLink/IconLink.tsx"],"sourcesContent":["import { Link, type SvgIconProps, Tooltip } from '@lokalise/louis'\nimport clsx from 'clsx'\nimport type { FC } from 'react'\nimport styles from './IconLink.module.css'\n\ntype IconLinkProps = {\n\t/** URL destination for the link */\n\tto: string\n\t/** Text to display in the tooltip when hovering over the icon */\n\tlabel: string\n\t/** Icon component from @lokalise/louis to display */\n\ticon: FC<SvgIconProps>\n}\n\n/**\n * A navigation link component that displays an icon with a tooltip.\n * When hovered, shows a tooltip with the label text.\n * The link is highlighted when the current URL matches its destination.\n *\n * @example\n * ```tsx\n * <IconLink to=\"/projects\" label=\"Projects\" icon={FolderOpenIcon} />\n * ```\n */\nexport const IconLink = ({ label, to, icon: Icon }: IconLinkProps) => {\n\treturn (\n\t\t<Tooltip placement=\"right\" tooltip={label}>\n\t\t\t<Link\n\t\t\t\taria-label={label}\n\t\t\t\tclassName={clsx(styles.link, {\n\t\t\t\t\t[styles.active]: typeof window !== 'undefined' && window.location.pathname.startsWith(to),\n\t\t\t\t})}\n\t\t\t\thref={to}\n\t\t\t>\n\t\t\t\t<Icon size=\"25px\" />\n\t\t\t</Link>\n\t\t</Tooltip>\n\t)\n}\n"],"names":[],"mappings":";;;;AAwBO,MAAM,WAAW,CAAC,EAAE,OAAO,IAAI,MAAM,WAA0B;AACrE,SACE,oBAAA,SAAA,EAAQ,WAAU,SAAQ,SAAS,OACnC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,cAAY;AAAA,MACZ,WAAW,KAAK,OAAO,MAAM;AAAA,QAC5B,CAAC,OAAO,MAAM,GAAG,OAAO,WAAW,eAAe,OAAO,SAAS,SAAS,WAAW,EAAE;AAAA,MAAA,CACxF;AAAA,MACD,MAAM;AAAA,MAEN,UAAA,oBAAC,MAAK,EAAA,MAAK,OAAO,CAAA;AAAA,IAAA;AAAA,EAAA,GAEpB;AAEF;"}
|
package/dist/harmony97.cjs
CHANGED
@@ -1,47 +1,78 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const
|
4
|
-
const
|
5
|
-
const
|
6
|
-
const
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
3
|
+
const jsxRuntime = require("react/jsx-runtime");
|
4
|
+
const BillingMenuItem = require("./harmony107.cjs");
|
5
|
+
const CreateNewTeam = require("./harmony108.cjs");
|
6
|
+
const CreateNewTeamPlaceholder = require("./harmony109.cjs");
|
7
|
+
const DarkModeToggle = require("./harmony110.cjs");
|
8
|
+
const ProfileSettingsMenuItem = require("./harmony111.cjs");
|
9
|
+
const ProviderMenuItem = require("./harmony112.cjs");
|
10
|
+
const TeamMenuItem = require("./harmony113.cjs");
|
11
|
+
const TeamSettingsMenuItem = require("./harmony114.cjs");
|
12
|
+
const TeamSwitch = require("./harmony115.cjs");
|
13
|
+
const UpgradeMenuItem = require("./harmony116.cjs");
|
14
|
+
const useSidebar = require("./harmony98.cjs");
|
15
|
+
const louis = require("@lokalise/louis");
|
16
|
+
const permissions = require("./harmony99.cjs");
|
17
|
+
const clsx = require("./harmony73.cjs");
|
18
|
+
const ProfileMenu_module = require("./harmony117.cjs");
|
19
|
+
const UpgradeIcon = require("./harmony118.cjs");
|
20
|
+
const ProfileMenu = ({ config }) => {
|
21
|
+
const {
|
22
|
+
data: { currentTeam, jwt }
|
23
|
+
} = useSidebar.useSidebar();
|
24
|
+
const {
|
25
|
+
darkModeToggle,
|
26
|
+
teamSwitch,
|
27
|
+
createTeam,
|
28
|
+
createTeamPlaceholder,
|
29
|
+
upgradeMenuItem,
|
30
|
+
profileSettings
|
31
|
+
} = config;
|
32
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
33
|
+
louis.Menu,
|
34
|
+
{
|
35
|
+
menuButton: () => {
|
36
|
+
var _a;
|
37
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("button", { className: ProfileMenu_module.default.profileButton, "aria-label": "Profile menu", type: "button", children: [
|
38
|
+
((_a = currentTeam.result) == null ? void 0 : _a.logoUrl) ? /* @__PURE__ */ jsxRuntime.jsx(
|
39
|
+
"img",
|
40
|
+
{
|
41
|
+
src: currentTeam.result.logoUrl,
|
42
|
+
className: clsx.clsx(ProfileMenu_module.default.profileImage, {
|
43
|
+
[ProfileMenu_module.default.profileImageHighlight]: permissions.canUpgradePlan(jwt.result)
|
44
|
+
}),
|
45
|
+
alt: "Team Logo"
|
46
|
+
}
|
47
|
+
) : /* @__PURE__ */ jsxRuntime.jsx(
|
48
|
+
"div",
|
49
|
+
{
|
50
|
+
className: clsx.clsx(ProfileMenu_module.default.userIconWrapper, "flex-row", "align-center", "items-center", {
|
51
|
+
[ProfileMenu_module.default.profileImageHighlight]: permissions.canUpgradePlan(jwt.result)
|
52
|
+
}),
|
53
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(louis.UserIcon, { size: "25px" })
|
54
|
+
}
|
55
|
+
),
|
56
|
+
permissions.canUpgradePlan(jwt.result) && /* @__PURE__ */ jsxRuntime.jsx(UpgradeIcon.UpgradeIcon, { className: ProfileMenu_module.default.profileImageUpgradeIcon })
|
57
|
+
] });
|
58
|
+
},
|
59
|
+
children: /* @__PURE__ */ jsxRuntime.jsxs(louis.MenuList, { placement: "right-end", className: ProfileMenu_module.default.menuContainer, children: [
|
60
|
+
teamSwitch && /* @__PURE__ */ jsxRuntime.jsx(TeamSwitch.TeamSwitch, { onSwitchTeam: teamSwitch.onSwitchTeam }),
|
61
|
+
createTeam && /* @__PURE__ */ jsxRuntime.jsx(CreateNewTeam.CreateNewTeam, { onCreateTeam: createTeam.onCreateTeam }),
|
62
|
+
createTeamPlaceholder && /* @__PURE__ */ jsxRuntime.jsx(CreateNewTeamPlaceholder.CreateNewTeamPlaceholder, { onClick: createTeamPlaceholder.onClick }),
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx(TeamMenuItem.TeamMenuItem, {}),
|
64
|
+
upgradeMenuItem && /* @__PURE__ */ jsxRuntime.jsx(UpgradeMenuItem.UpgradeMenuItem, { href: upgradeMenuItem.href }),
|
65
|
+
/* @__PURE__ */ jsxRuntime.jsx(BillingMenuItem.BillingMenuItem, {}),
|
66
|
+
/* @__PURE__ */ jsxRuntime.jsx(TeamSettingsMenuItem.TeamSettingsMenuItem, {}),
|
67
|
+
/* @__PURE__ */ jsxRuntime.jsx(ProviderMenuItem.ProviderMenuItem, {}),
|
68
|
+
/* @__PURE__ */ jsxRuntime.jsx(louis.MenuDivider, {}),
|
69
|
+
profileSettings && /* @__PURE__ */ jsxRuntime.jsx(ProfileSettingsMenuItem.ProfileSettingsMenuItem, {}),
|
70
|
+
darkModeToggle && /* @__PURE__ */ jsxRuntime.jsx(DarkModeToggle.DarkModeToggle, { ...darkModeToggle }),
|
71
|
+
(profileSettings && permissions.canAccessProfileSettings(jwt.result) || darkModeToggle) && /* @__PURE__ */ jsxRuntime.jsx(louis.MenuDivider, {}),
|
72
|
+
/* @__PURE__ */ jsxRuntime.jsx(louis.MenuItem, { href: "/login?action=logout", children: "Logout" })
|
73
|
+
] })
|
18
74
|
}
|
19
|
-
|
20
|
-
const context = {
|
21
|
-
flags: {},
|
22
|
-
// TODO: getFeatureFlags(features),
|
23
|
-
pathname: window.location.pathname,
|
24
|
-
permissions: []
|
25
|
-
};
|
26
|
-
return navigationSchema.navigationItems.filter((item) => item.shouldShow ? item.shouldShow(context) : true).map((item) => {
|
27
|
-
const disabled = typeof item.disabled === "function" ? item.disabled(context) : !!item.disabled;
|
28
|
-
const badge = typeof item.badge === "function" ? item.badge(context) : item.badge;
|
29
|
-
const isActive = (input) => item.isActive ? item.isActive(input) : item.key === activeKey || input === item.key;
|
30
|
-
return {
|
31
|
-
key: item.key,
|
32
|
-
label: item.labelKey,
|
33
|
-
// You can apply translations here if needed
|
34
|
-
icon: item.icon,
|
35
|
-
visible: true,
|
36
|
-
badge,
|
37
|
-
disabled,
|
38
|
-
dropdown: item.dropdown,
|
39
|
-
isActive,
|
40
|
-
link: `${nextgenUrl}${item.path({ projectId })}`,
|
41
|
-
onClick: () => navigate(item.path({ projectId }))
|
42
|
-
};
|
43
|
-
});
|
44
|
-
}, [project, activeKey, enabled, navigate, contributor, nextgenUrl]);
|
75
|
+
);
|
45
76
|
};
|
46
|
-
exports.
|
77
|
+
exports.ProfileMenu = ProfileMenu;
|
47
78
|
//# sourceMappingURL=harmony97.cjs.map
|
package/dist/harmony97.cjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"harmony97.cjs","sources":["../src/
|
1
|
+
{"version":3,"file":"harmony97.cjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.tsx"],"sourcesContent":["import { BillingMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/BillingMenuItem/BillingMenuItem'\nimport { CreateNewTeam } from '@components/Sidebar/Widgets/ProfileMenu/CreateNewTeam/CreateNewTeam'\nimport { CreateNewTeamPlaceholder } from '@components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder'\nimport { DarkModeToggle } from '@components/Sidebar/Widgets/ProfileMenu/DarkModeToggle/DarkModeToggle'\nimport { ProfileSettingsMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem'\nimport { ProviderMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem'\nimport { TeamMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem'\nimport { TeamSettingsMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/TeamSettingsMenuItem/TeamSettingsMenuItem'\nimport { TeamSwitch } from '@components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch'\nimport { UpgradeMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem'\nimport { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport type { ProfileMenuConfig } from '@components/Sidebar/types'\nimport { Menu, MenuDivider, MenuItem, MenuList, UserIcon } from '@lokalise/louis'\nimport { canAccessProfileSettings, canUpgradePlan } from '@utils/user/permissions'\nimport clsx from 'clsx'\nimport styles from './ProfileMenu.module.css'\nimport { UpgradeIcon } from './UpgradeIcon/UpgradeIcon'\n\n/**\n * The main profile menu component, displaying team and user actions.\n * Renders optional menu items based on the provided config and user permissions.\n *\n * @example\n * ```\n * <ProfileMenu config={...} />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\ntype ProfileMenuProps = {\n\tconfig: ProfileMenuConfig\n}\n\nexport const ProfileMenu = ({ config }: ProfileMenuProps) => {\n\tconst {\n\t\tdata: { currentTeam, jwt },\n\t} = useSidebar()\n\n\tconst {\n\t\tdarkModeToggle,\n\t\tteamSwitch,\n\t\tcreateTeam,\n\t\tcreateTeamPlaceholder,\n\t\tupgradeMenuItem,\n\t\tprofileSettings,\n\t} = config\n\n\treturn (\n\t\t<Menu\n\t\t\tmenuButton={() => (\n\t\t\t\t<button className={styles.profileButton} aria-label=\"Profile menu\" type=\"button\">\n\t\t\t\t\t{currentTeam.result?.logoUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={currentTeam.result.logoUrl}\n\t\t\t\t\t\t\tclassName={clsx(styles.profileImage, {\n\t\t\t\t\t\t\t\t[styles.profileImageHighlight]: canUpgradePlan(jwt.result),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\talt=\"Team Logo\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={clsx(styles.userIconWrapper, 'flex-row', 'align-center', 'items-center', {\n\t\t\t\t\t\t\t\t[styles.profileImageHighlight]: canUpgradePlan(jwt.result),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<UserIcon size=\"25px\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{canUpgradePlan(jwt.result) && <UpgradeIcon className={styles.profileImageUpgradeIcon} />}\n\t\t\t\t</button>\n\t\t\t)}\n\t\t>\n\t\t\t<MenuList placement=\"right-end\" className={styles.menuContainer}>\n\t\t\t\t{teamSwitch && <TeamSwitch onSwitchTeam={teamSwitch.onSwitchTeam} />}\n\t\t\t\t{createTeam && <CreateNewTeam onCreateTeam={createTeam.onCreateTeam} />}\n\t\t\t\t{createTeamPlaceholder && (\n\t\t\t\t\t<CreateNewTeamPlaceholder onClick={createTeamPlaceholder.onClick} />\n\t\t\t\t)}\n\t\t\t\t<TeamMenuItem />\n\t\t\t\t{upgradeMenuItem && <UpgradeMenuItem href={upgradeMenuItem.href} />}\n\t\t\t\t<BillingMenuItem />\n\t\t\t\t<TeamSettingsMenuItem />\n\t\t\t\t<ProviderMenuItem />\n\t\t\t\t<MenuDivider />\n\n\t\t\t\t{profileSettings && <ProfileSettingsMenuItem />}\n\t\t\t\t{darkModeToggle && <DarkModeToggle {...darkModeToggle} />}\n\t\t\t\t{((profileSettings && canAccessProfileSettings(jwt.result)) || darkModeToggle) && (\n\t\t\t\t\t<MenuDivider />\n\t\t\t\t)}\n\n\t\t\t\t<MenuItem href=\"/login?action=logout\">Logout</MenuItem>\n\t\t\t</MenuList>\n\t\t</Menu>\n\t)\n}\n"],"names":["useSidebar","jsx","Menu","jsxs","styles","clsx","canUpgradePlan","UserIcon","UpgradeIcon","MenuList","TeamSwitch","CreateNewTeam","CreateNewTeamPlaceholder","TeamMenuItem","UpgradeMenuItem","BillingMenuItem","TeamSettingsMenuItem","ProviderMenuItem","MenuDivider","ProfileSettingsMenuItem","DarkModeToggle","canAccessProfileSettings","MenuItem"],"mappings":";;;;;;;;;;;;;;;;;;;AAkCO,MAAM,cAAc,CAAC,EAAE,aAA+B;AACtD,QAAA;AAAA,IACL,MAAM,EAAE,aAAa,IAAI;AAAA,MACtBA,sBAAW;AAET,QAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AAGH,SAAAC,2BAAA;AAAA,IAACC,MAAA;AAAA,IAAA;AAAA,MACA,YAAY,MACXC;;AAAAA,0CAAAA,KAAC,UAAO,EAAA,WAAWC,mBAAAA,QAAO,eAAe,cAAW,gBAAe,MAAK,UACtE,UAAA;AAAA,YAAA,iBAAY,WAAZ,mBAAoB,WACpBH,2BAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,KAAK,YAAY,OAAO;AAAA,cACxB,WAAWI,KAAAA,KAAKD,mBAAA,QAAO,cAAc;AAAA,gBACpC,CAACA,2BAAO,qBAAqB,GAAGE,YAAA,eAAe,IAAI,MAAM;AAAA,cAAA,CACzD;AAAA,cACD,KAAI;AAAA,YAAA;AAAA,UAAA,IAGLL,2BAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,WAAWI,KAAK,KAAAD,mBAAA,QAAO,iBAAiB,YAAY,gBAAgB,gBAAgB;AAAA,gBACnF,CAACA,2BAAO,qBAAqB,GAAGE,YAAA,eAAe,IAAI,MAAM;AAAA,cAAA,CACzD;AAAA,cAED,UAAAL,2BAAAA,IAACM,MAAAA,UAAS,EAAA,MAAK,OAAO,CAAA;AAAA,YAAA;AAAA,UACvB;AAAA,UAEAD,2BAAe,IAAI,MAAM,oCAAME,YAAAA,aAAY,EAAA,WAAWJ,2BAAO,wBAAyB,CAAA;AAAA,QAAA,GACxF;AAAA;AAAA,MAGD,0CAACK,MAAS,UAAA,EAAA,WAAU,aAAY,WAAWL,mBAAAA,QAAO,eAChD,UAAA;AAAA,QAAA,cAAeH,2BAAA,IAAAS,WAAA,YAAA,EAAW,cAAc,WAAW,cAAc;AAAA,QACjE,cAAcT,2BAAA,IAACU,cAAc,eAAA,EAAA,cAAc,WAAW,cAAc;AAAA,QACpE,yBACAV,2BAAA,IAACW,yBAAyB,0BAAA,EAAA,SAAS,sBAAsB,SAAS;AAAA,uCAElEC,aAAa,cAAA,EAAA;AAAA,QACb,mBAAmBZ,2BAAA,IAACa,gBAAgB,iBAAA,EAAA,MAAM,gBAAgB,MAAM;AAAA,uCAChEC,gBAAgB,iBAAA,EAAA;AAAA,uCAChBC,qBAAqB,sBAAA,EAAA;AAAA,uCACrBC,iBAAiB,kBAAA,EAAA;AAAA,uCACjBC,MAAY,aAAA,EAAA;AAAA,QAEZ,kDAAoBC,wBAAwB,yBAAA,EAAA;AAAA,QAC5C,kBAAkBlB,2BAAAA,IAACmB,eAAAA,gBAAgB,EAAA,GAAG,eAAgB,CAAA;AAAA,SACpD,mBAAmBC,YAAyB,yBAAA,IAAI,MAAM,KAAM,kDAC7DH,MAAY,aAAA,EAAA;AAAA,QAGbjB,2BAAA,IAAAqB,MAAA,UAAA,EAAS,MAAK,wBAAuB,UAAM,SAAA,CAAA;AAAA,MAAA,EAC7C,CAAA;AAAA,IAAA;AAAA,EACD;AAEF;;"}
|
package/dist/harmony97.mjs
CHANGED
@@ -1,47 +1,78 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
import {
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
2
|
+
import { BillingMenuItem } from "./harmony107.mjs";
|
3
|
+
import { CreateNewTeam } from "./harmony108.mjs";
|
4
|
+
import { CreateNewTeamPlaceholder } from "./harmony109.mjs";
|
5
|
+
import { DarkModeToggle } from "./harmony110.mjs";
|
6
|
+
import { ProfileSettingsMenuItem } from "./harmony111.mjs";
|
7
|
+
import { ProviderMenuItem } from "./harmony112.mjs";
|
8
|
+
import { TeamMenuItem } from "./harmony113.mjs";
|
9
|
+
import { TeamSettingsMenuItem } from "./harmony114.mjs";
|
10
|
+
import { TeamSwitch } from "./harmony115.mjs";
|
11
|
+
import { UpgradeMenuItem } from "./harmony116.mjs";
|
12
|
+
import { useSidebar } from "./harmony98.mjs";
|
13
|
+
import { Menu, MenuList, MenuDivider, MenuItem, UserIcon } from "@lokalise/louis";
|
14
|
+
import { canAccessProfileSettings, canUpgradePlan } from "./harmony99.mjs";
|
15
|
+
import { clsx } from "./harmony73.mjs";
|
16
|
+
import styles from "./harmony117.mjs";
|
17
|
+
import { UpgradeIcon } from "./harmony118.mjs";
|
18
|
+
const ProfileMenu = ({ config }) => {
|
19
|
+
const {
|
20
|
+
data: { currentTeam, jwt }
|
21
|
+
} = useSidebar();
|
22
|
+
const {
|
23
|
+
darkModeToggle,
|
24
|
+
teamSwitch,
|
25
|
+
createTeam,
|
26
|
+
createTeamPlaceholder,
|
27
|
+
upgradeMenuItem,
|
28
|
+
profileSettings
|
29
|
+
} = config;
|
30
|
+
return /* @__PURE__ */ jsx(
|
31
|
+
Menu,
|
32
|
+
{
|
33
|
+
menuButton: () => {
|
34
|
+
var _a;
|
35
|
+
return /* @__PURE__ */ jsxs("button", { className: styles.profileButton, "aria-label": "Profile menu", type: "button", children: [
|
36
|
+
((_a = currentTeam.result) == null ? void 0 : _a.logoUrl) ? /* @__PURE__ */ jsx(
|
37
|
+
"img",
|
38
|
+
{
|
39
|
+
src: currentTeam.result.logoUrl,
|
40
|
+
className: clsx(styles.profileImage, {
|
41
|
+
[styles.profileImageHighlight]: canUpgradePlan(jwt.result)
|
42
|
+
}),
|
43
|
+
alt: "Team Logo"
|
44
|
+
}
|
45
|
+
) : /* @__PURE__ */ jsx(
|
46
|
+
"div",
|
47
|
+
{
|
48
|
+
className: clsx(styles.userIconWrapper, "flex-row", "align-center", "items-center", {
|
49
|
+
[styles.profileImageHighlight]: canUpgradePlan(jwt.result)
|
50
|
+
}),
|
51
|
+
children: /* @__PURE__ */ jsx(UserIcon, { size: "25px" })
|
52
|
+
}
|
53
|
+
),
|
54
|
+
canUpgradePlan(jwt.result) && /* @__PURE__ */ jsx(UpgradeIcon, { className: styles.profileImageUpgradeIcon })
|
55
|
+
] });
|
56
|
+
},
|
57
|
+
children: /* @__PURE__ */ jsxs(MenuList, { placement: "right-end", className: styles.menuContainer, children: [
|
58
|
+
teamSwitch && /* @__PURE__ */ jsx(TeamSwitch, { onSwitchTeam: teamSwitch.onSwitchTeam }),
|
59
|
+
createTeam && /* @__PURE__ */ jsx(CreateNewTeam, { onCreateTeam: createTeam.onCreateTeam }),
|
60
|
+
createTeamPlaceholder && /* @__PURE__ */ jsx(CreateNewTeamPlaceholder, { onClick: createTeamPlaceholder.onClick }),
|
61
|
+
/* @__PURE__ */ jsx(TeamMenuItem, {}),
|
62
|
+
upgradeMenuItem && /* @__PURE__ */ jsx(UpgradeMenuItem, { href: upgradeMenuItem.href }),
|
63
|
+
/* @__PURE__ */ jsx(BillingMenuItem, {}),
|
64
|
+
/* @__PURE__ */ jsx(TeamSettingsMenuItem, {}),
|
65
|
+
/* @__PURE__ */ jsx(ProviderMenuItem, {}),
|
66
|
+
/* @__PURE__ */ jsx(MenuDivider, {}),
|
67
|
+
profileSettings && /* @__PURE__ */ jsx(ProfileSettingsMenuItem, {}),
|
68
|
+
darkModeToggle && /* @__PURE__ */ jsx(DarkModeToggle, { ...darkModeToggle }),
|
69
|
+
(profileSettings && canAccessProfileSettings(jwt.result) || darkModeToggle) && /* @__PURE__ */ jsx(MenuDivider, {}),
|
70
|
+
/* @__PURE__ */ jsx(MenuItem, { href: "/login?action=logout", children: "Logout" })
|
71
|
+
] })
|
16
72
|
}
|
17
|
-
|
18
|
-
const context = {
|
19
|
-
flags: {},
|
20
|
-
// TODO: getFeatureFlags(features),
|
21
|
-
pathname: window.location.pathname,
|
22
|
-
permissions: []
|
23
|
-
};
|
24
|
-
return navigationItems.filter((item) => item.shouldShow ? item.shouldShow(context) : true).map((item) => {
|
25
|
-
const disabled = typeof item.disabled === "function" ? item.disabled(context) : !!item.disabled;
|
26
|
-
const badge = typeof item.badge === "function" ? item.badge(context) : item.badge;
|
27
|
-
const isActive = (input) => item.isActive ? item.isActive(input) : item.key === activeKey || input === item.key;
|
28
|
-
return {
|
29
|
-
key: item.key,
|
30
|
-
label: item.labelKey,
|
31
|
-
// You can apply translations here if needed
|
32
|
-
icon: item.icon,
|
33
|
-
visible: true,
|
34
|
-
badge,
|
35
|
-
disabled,
|
36
|
-
dropdown: item.dropdown,
|
37
|
-
isActive,
|
38
|
-
link: `${nextgenUrl}${item.path({ projectId })}`,
|
39
|
-
onClick: () => navigate(item.path({ projectId }))
|
40
|
-
};
|
41
|
-
});
|
42
|
-
}, [project, activeKey, enabled, navigate, contributor, nextgenUrl]);
|
73
|
+
);
|
43
74
|
};
|
44
75
|
export {
|
45
|
-
|
76
|
+
ProfileMenu
|
46
77
|
};
|
47
78
|
//# sourceMappingURL=harmony97.mjs.map
|
package/dist/harmony97.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"harmony97.mjs","sources":["../src/
|
1
|
+
{"version":3,"file":"harmony97.mjs","sources":["../src/components/Sidebar/Widgets/ProfileMenu/ProfileMenu.tsx"],"sourcesContent":["import { BillingMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/BillingMenuItem/BillingMenuItem'\nimport { CreateNewTeam } from '@components/Sidebar/Widgets/ProfileMenu/CreateNewTeam/CreateNewTeam'\nimport { CreateNewTeamPlaceholder } from '@components/Sidebar/Widgets/ProfileMenu/CreateNewTeamPlaceholder/CreateNewTeamPlaceholder'\nimport { DarkModeToggle } from '@components/Sidebar/Widgets/ProfileMenu/DarkModeToggle/DarkModeToggle'\nimport { ProfileSettingsMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/ProfileSettingsMenuItem/ProfileSettingsMenuItem'\nimport { ProviderMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/ProviderMenuItem/ProviderMenuItem'\nimport { TeamMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/TeamMenuItem/TeamMenuItem'\nimport { TeamSettingsMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/TeamSettingsMenuItem/TeamSettingsMenuItem'\nimport { TeamSwitch } from '@components/Sidebar/Widgets/ProfileMenu/TeamSwitch/TeamSwitch'\nimport { UpgradeMenuItem } from '@components/Sidebar/Widgets/ProfileMenu/UpgradeMenuItem/UpgradeMenuItem'\nimport { useSidebar } from '@components/Sidebar/hooks/useSidebar'\nimport type { ProfileMenuConfig } from '@components/Sidebar/types'\nimport { Menu, MenuDivider, MenuItem, MenuList, UserIcon } from '@lokalise/louis'\nimport { canAccessProfileSettings, canUpgradePlan } from '@utils/user/permissions'\nimport clsx from 'clsx'\nimport styles from './ProfileMenu.module.css'\nimport { UpgradeIcon } from './UpgradeIcon/UpgradeIcon'\n\n/**\n * The main profile menu component, displaying team and user actions.\n * Renders optional menu items based on the provided config and user permissions.\n *\n * @example\n * ```\n * <ProfileMenu config={...} />\n * ```\n *\n * @note This component must be used within a Sidebar Context.\n */\n\ntype ProfileMenuProps = {\n\tconfig: ProfileMenuConfig\n}\n\nexport const ProfileMenu = ({ config }: ProfileMenuProps) => {\n\tconst {\n\t\tdata: { currentTeam, jwt },\n\t} = useSidebar()\n\n\tconst {\n\t\tdarkModeToggle,\n\t\tteamSwitch,\n\t\tcreateTeam,\n\t\tcreateTeamPlaceholder,\n\t\tupgradeMenuItem,\n\t\tprofileSettings,\n\t} = config\n\n\treturn (\n\t\t<Menu\n\t\t\tmenuButton={() => (\n\t\t\t\t<button className={styles.profileButton} aria-label=\"Profile menu\" type=\"button\">\n\t\t\t\t\t{currentTeam.result?.logoUrl ? (\n\t\t\t\t\t\t<img\n\t\t\t\t\t\t\tsrc={currentTeam.result.logoUrl}\n\t\t\t\t\t\t\tclassName={clsx(styles.profileImage, {\n\t\t\t\t\t\t\t\t[styles.profileImageHighlight]: canUpgradePlan(jwt.result),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\talt=\"Team Logo\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclassName={clsx(styles.userIconWrapper, 'flex-row', 'align-center', 'items-center', {\n\t\t\t\t\t\t\t\t[styles.profileImageHighlight]: canUpgradePlan(jwt.result),\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<UserIcon size=\"25px\" />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{canUpgradePlan(jwt.result) && <UpgradeIcon className={styles.profileImageUpgradeIcon} />}\n\t\t\t\t</button>\n\t\t\t)}\n\t\t>\n\t\t\t<MenuList placement=\"right-end\" className={styles.menuContainer}>\n\t\t\t\t{teamSwitch && <TeamSwitch onSwitchTeam={teamSwitch.onSwitchTeam} />}\n\t\t\t\t{createTeam && <CreateNewTeam onCreateTeam={createTeam.onCreateTeam} />}\n\t\t\t\t{createTeamPlaceholder && (\n\t\t\t\t\t<CreateNewTeamPlaceholder onClick={createTeamPlaceholder.onClick} />\n\t\t\t\t)}\n\t\t\t\t<TeamMenuItem />\n\t\t\t\t{upgradeMenuItem && <UpgradeMenuItem href={upgradeMenuItem.href} />}\n\t\t\t\t<BillingMenuItem />\n\t\t\t\t<TeamSettingsMenuItem />\n\t\t\t\t<ProviderMenuItem />\n\t\t\t\t<MenuDivider />\n\n\t\t\t\t{profileSettings && <ProfileSettingsMenuItem />}\n\t\t\t\t{darkModeToggle && <DarkModeToggle {...darkModeToggle} />}\n\t\t\t\t{((profileSettings && canAccessProfileSettings(jwt.result)) || darkModeToggle) && (\n\t\t\t\t\t<MenuDivider />\n\t\t\t\t)}\n\n\t\t\t\t<MenuItem href=\"/login?action=logout\">Logout</MenuItem>\n\t\t\t</MenuList>\n\t\t</Menu>\n\t)\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAkCO,MAAM,cAAc,CAAC,EAAE,aAA+B;AACtD,QAAA;AAAA,IACL,MAAM,EAAE,aAAa,IAAI;AAAA,MACtB,WAAW;AAET,QAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACG;AAGH,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,YAAY,MACX;;AAAA,oCAAC,UAAO,EAAA,WAAW,OAAO,eAAe,cAAW,gBAAe,MAAK,UACtE,UAAA;AAAA,YAAA,iBAAY,WAAZ,mBAAoB,WACpB;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,KAAK,YAAY,OAAO;AAAA,cACxB,WAAW,KAAK,OAAO,cAAc;AAAA,gBACpC,CAAC,OAAO,qBAAqB,GAAG,eAAe,IAAI,MAAM;AAAA,cAAA,CACzD;AAAA,cACD,KAAI;AAAA,YAAA;AAAA,UAAA,IAGL;AAAA,YAAC;AAAA,YAAA;AAAA,cACA,WAAW,KAAK,OAAO,iBAAiB,YAAY,gBAAgB,gBAAgB;AAAA,gBACnF,CAAC,OAAO,qBAAqB,GAAG,eAAe,IAAI,MAAM;AAAA,cAAA,CACzD;AAAA,cAED,UAAA,oBAAC,UAAS,EAAA,MAAK,OAAO,CAAA;AAAA,YAAA;AAAA,UACvB;AAAA,UAEA,eAAe,IAAI,MAAM,yBAAM,aAAY,EAAA,WAAW,OAAO,wBAAyB,CAAA;AAAA,QAAA,GACxF;AAAA;AAAA,MAGD,+BAAC,UAAS,EAAA,WAAU,aAAY,WAAW,OAAO,eAChD,UAAA;AAAA,QAAA,cAAe,oBAAA,YAAA,EAAW,cAAc,WAAW,cAAc;AAAA,QACjE,cAAc,oBAAC,eAAc,EAAA,cAAc,WAAW,cAAc;AAAA,QACpE,yBACA,oBAAC,0BAAyB,EAAA,SAAS,sBAAsB,SAAS;AAAA,4BAElE,cAAa,EAAA;AAAA,QACb,mBAAmB,oBAAC,iBAAgB,EAAA,MAAM,gBAAgB,MAAM;AAAA,4BAChE,iBAAgB,EAAA;AAAA,4BAChB,sBAAqB,EAAA;AAAA,4BACrB,kBAAiB,EAAA;AAAA,4BACjB,aAAY,EAAA;AAAA,QAEZ,uCAAoB,yBAAwB,EAAA;AAAA,QAC5C,kBAAkB,oBAAC,gBAAgB,EAAA,GAAG,eAAgB,CAAA;AAAA,SACpD,mBAAmB,yBAAyB,IAAI,MAAM,KAAM,uCAC7D,aAAY,EAAA;AAAA,QAGb,oBAAA,UAAA,EAAS,MAAK,wBAAuB,UAAM,SAAA,CAAA;AAAA,MAAA,EAC7C,CAAA;AAAA,IAAA;AAAA,EACD;AAEF;"}
|
package/dist/harmony98.cjs
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
-
const
|
4
|
-
const
|
5
|
-
const
|
6
|
-
const
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
3
|
+
const SidebarContext = require("./harmony95.cjs");
|
4
|
+
const React = require("react");
|
5
|
+
const useSidebar = () => {
|
6
|
+
const context = React.useContext(SidebarContext.SidebarContext);
|
7
|
+
if (!context) {
|
8
|
+
throw new Error(
|
9
|
+
"You are using useSidebar hook outside its context. Please review your code implementation"
|
10
|
+
);
|
11
|
+
}
|
12
|
+
return context;
|
13
|
+
};
|
14
|
+
exports.useSidebar = useSidebar;
|
14
15
|
//# sourceMappingURL=harmony98.cjs.map
|