@teambit/component 1.0.1127 → 1.0.1128

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.
@@ -1,5 +1,5 @@
1
- import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component@1.0.1127/dist/component.composition.js';
2
- import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component@1.0.1127/dist/component.docs.mdx';
1
+ import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component@1.0.1128/dist/component.composition.js';
2
+ import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_component@1.0.1128/dist/component.docs.mdx';
3
3
 
4
4
  export const compositions = [compositions_0];
5
5
  export const overview = [overview_0];
@@ -25,6 +25,20 @@ function _designNavigation() {
25
25
  };
26
26
  return data;
27
27
  }
28
+ function _designInputs() {
29
+ const data = require("@teambit/design.inputs.dropdown");
30
+ _designInputs = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _designInputsSelectors() {
36
+ const data = require("@teambit/design.inputs.selectors.menu-item");
37
+ _designInputsSelectors = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
28
42
  function _workspaceUi() {
29
43
  const data = require("@teambit/workspace.ui.use-workspace-mode");
30
44
  _workspaceUi = function () {
@@ -112,8 +126,11 @@ function CollapsibleMenuNav({
112
126
  className: menuItem.props.className
113
127
  };
114
128
  });
115
- return /*#__PURE__*/_react().default.createElement(_designNavigation().ResponsiveNavbar, {
116
- navClassName: (0, _classnames().default)(_menuModule().default.tab, className),
129
+ return /*#__PURE__*/_react().default.createElement(_react().default.Fragment, null, isMinimal && /*#__PURE__*/_react().default.createElement(MinimalMenuNav, {
130
+ links: links,
131
+ secondaryNavClassName: secondaryNavClassName
132
+ }), /*#__PURE__*/_react().default.createElement(_designNavigation().ResponsiveNavbar, {
133
+ navClassName: (0, _classnames().default)(_menuModule().default.tab, isMinimal && _menuModule().default.hideMinimalMobileNav, className),
117
134
  secondaryNavClassName: secondaryNavClassName,
118
135
  style: {
119
136
  width: '100%',
@@ -123,7 +140,35 @@ function CollapsibleMenuNav({
123
140
  tabs: links,
124
141
  defaultActiveIndex: activeTabIndex,
125
142
  alwaysShowActiveTab: alwaysShowActiveTab
126
- }, children);
143
+ }, children));
144
+ }
145
+ function MinimalMenuNav({
146
+ links,
147
+ secondaryNavClassName
148
+ }) {
149
+ if (links.length === 0) return null;
150
+ return /*#__PURE__*/_react().default.createElement("div", {
151
+ className: _menuModule().default.minimalMoreNav
152
+ }, /*#__PURE__*/_react().default.createElement(_designInputs().Dropdown, {
153
+ placeholderContent: /*#__PURE__*/_react().default.createElement("div", {
154
+ className: _menuModule().default.minimalMoreButton,
155
+ "aria-label": "More component sections"
156
+ }, /*#__PURE__*/_react().default.createElement("img", {
157
+ src: "https://static.bit.dev/bit-icons/more-h.svg",
158
+ alt: ""
159
+ })),
160
+ dropClass: secondaryNavClassName,
161
+ position: "bottom-end",
162
+ placeholderBorder: false,
163
+ clickToggles: true,
164
+ margin: 8
165
+ }, links.map((link, index) => /*#__PURE__*/_react().default.createElement(_designInputsSelectors().MenuItem, {
166
+ className: _menuModule().default.minimalMenuItem,
167
+ key: `minimal-dropdown-${index}`
168
+ }, /*#__PURE__*/_react().default.createElement(TopBarNavComponent, {
169
+ menuItemProps: link.tabProps?.menuItemProps,
170
+ isInMenu: true
171
+ })))));
127
172
  }
128
173
  function sortFn([, {
129
174
  order: first
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_designNavigation","_workspaceUi","_topBarNav","_menuModule","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_extends","assign","bind","TopBarNavComponent","isInMenu","menuItemProps","widgetDisplayText","displayName","undefined","createElement","TopBarNav","className","classnames","styles","topBarNav","noBorder","children","CollapsibleMenuNav","navigationSlot","widgetSlot","navPlugins","widgetPlugins","secondaryNavClassName","activeTabIndex","alwaysShowActiveTab","isMinimal","useWorkspaceMode","plugins","useMemo","_navPlugins","toArray","sort","sortFn","widget","props","hideInMinimalMode","widgets","_widgetPlugins","links","map","menuItem","index","lastPluginStyle","marginRight","firstWidgetStyle","marginLeft","component","tabProps","style","ResponsiveNavbar","navClassName","tab","width","height","priority","tabs","defaultActiveIndex","order","first","second"],"sources":["menu-nav.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport classnames from 'classnames';\nimport { ResponsiveNavbar } from '@teambit/design.navigation.responsive-navbar';\nimport type { TabProps } from '@teambit/design.navigation.responsive-navbar';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport { TopBarNav } from '../top-bar-nav';\nimport styles from './menu.module.scss';\nimport type { NavPlugin, OrderedNavigationSlot } from './nav-plugin';\n\nexport type MenuNavProps = {\n /**\n * @deprecated\n * use @property navPlugins\n */\n navigationSlot?: OrderedNavigationSlot;\n /**\n * @deprecated\n * use @property widgetPlugins\n */\n widgetSlot?: OrderedNavigationSlot;\n navPlugins?: [string, NavPlugin][];\n widgetPlugins?: [string, NavPlugin][];\n /**\n * A className to pass to the secondary nav, i.e dropdown\n */\n secondaryNavClassName?: string;\n activeTabIndex?: number;\n alwaysShowActiveTab?: boolean;\n} & React.HTMLAttributes<HTMLElement>;\n\nfunction TopBarNavComponent({ isInMenu, menuItemProps }: TabProps) {\n /**\n * to accommodate for the top level nav which should display the children\n * in the dropdown secondary menu if there is a displayName set\n */\n const widgetDisplayText = menuItemProps?.displayName && isInMenu ? menuItemProps?.displayName : undefined;\n return (\n <TopBarNav\n {...menuItemProps}\n className={classnames(menuItemProps?.className, styles.topBarNav, isInMenu && styles.noBorder)}\n >\n {widgetDisplayText || menuItemProps?.children}\n </TopBarNav>\n );\n}\n\nexport function CollapsibleMenuNav({\n navigationSlot,\n widgetSlot,\n navPlugins = [],\n widgetPlugins = [],\n className,\n secondaryNavClassName,\n activeTabIndex,\n alwaysShowActiveTab,\n children,\n}: MenuNavProps) {\n const { isMinimal } = useWorkspaceMode();\n const plugins = useMemo(() => {\n const _navPlugins = navPlugins.length > 0 ? navPlugins : navigationSlot?.toArray();\n if (!isMinimal) {\n return (_navPlugins || []).sort(sortFn);\n }\n return (_navPlugins || []).filter((widget) => !widget[1].props.hideInMinimalMode).sort(sortFn);\n }, [navigationSlot, navPlugins, isMinimal]);\n\n const widgets = useMemo(() => {\n const _widgetPlugins = widgetPlugins.length > 0 ? widgetPlugins : widgetSlot?.toArray();\n if (!isMinimal) {\n return (_widgetPlugins || []).sort(sortFn);\n }\n return (_widgetPlugins || []).filter((widget) => !widget[1].props.hideInMinimalMode).sort(sortFn);\n }, [widgetSlot, widgetPlugins, isMinimal]);\n\n const links = [...plugins, ...widgets].map(([, menuItem], index) => {\n // these styles keep plugins to the left and widgets to the right.\n const lastPluginStyle = plugins.length - 1 === index ? { marginRight: 'auto' } : {};\n\n const firstWidgetStyle = plugins.length === index ? { marginLeft: 'auto' } : {};\n\n return {\n component: TopBarNavComponent,\n tabProps: {\n menuItemProps: menuItem.props,\n },\n style: { ...firstWidgetStyle, ...lastPluginStyle },\n className: menuItem.props.className,\n };\n });\n\n return (\n <ResponsiveNavbar\n navClassName={classnames(styles.tab, className)}\n secondaryNavClassName={secondaryNavClassName}\n style={{ width: '100%', height: '100%' }}\n priority=\"none\"\n tabs={links}\n defaultActiveIndex={activeTabIndex}\n alwaysShowActiveTab={alwaysShowActiveTab}\n >\n {children}\n </ResponsiveNavbar>\n );\n}\n\nfunction sortFn([, { order: first }]: [string, NavPlugin], [, { order: second }]: [string, NavPlugin]) {\n return (first ?? 0) - (second ?? 0);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_classnames","_interopRequireDefault","_designNavigation","_designInputs","_designInputsSelectors","_workspaceUi","_topBarNav","_menuModule","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_extends","assign","bind","TopBarNavComponent","isInMenu","menuItemProps","widgetDisplayText","displayName","undefined","createElement","TopBarNav","className","classnames","styles","topBarNav","noBorder","children","CollapsibleMenuNav","navigationSlot","widgetSlot","navPlugins","widgetPlugins","secondaryNavClassName","activeTabIndex","alwaysShowActiveTab","isMinimal","useWorkspaceMode","plugins","useMemo","_navPlugins","toArray","sort","sortFn","widget","props","hideInMinimalMode","widgets","_widgetPlugins","links","map","menuItem","index","lastPluginStyle","marginRight","firstWidgetStyle","marginLeft","component","tabProps","style","Fragment","MinimalMenuNav","ResponsiveNavbar","navClassName","tab","hideMinimalMobileNav","width","height","priority","tabs","defaultActiveIndex","minimalMoreNav","Dropdown","placeholderContent","minimalMoreButton","src","alt","dropClass","position","placeholderBorder","clickToggles","margin","link","MenuItem","minimalMenuItem","key","order","first","second"],"sources":["menu-nav.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport classnames from 'classnames';\nimport { ResponsiveNavbar } from '@teambit/design.navigation.responsive-navbar';\nimport type { Tab, TabProps } from '@teambit/design.navigation.responsive-navbar';\nimport { Dropdown } from '@teambit/design.inputs.dropdown';\nimport { MenuItem } from '@teambit/design.inputs.selectors.menu-item';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport { TopBarNav } from '../top-bar-nav';\nimport styles from './menu.module.scss';\nimport type { NavPlugin, OrderedNavigationSlot } from './nav-plugin';\n\nexport type MenuNavProps = {\n /**\n * @deprecated\n * use @property navPlugins\n */\n navigationSlot?: OrderedNavigationSlot;\n /**\n * @deprecated\n * use @property widgetPlugins\n */\n widgetSlot?: OrderedNavigationSlot;\n navPlugins?: [string, NavPlugin][];\n widgetPlugins?: [string, NavPlugin][];\n /**\n * A className to pass to the secondary nav, i.e dropdown\n */\n secondaryNavClassName?: string;\n activeTabIndex?: number;\n alwaysShowActiveTab?: boolean;\n} & React.HTMLAttributes<HTMLElement>;\n\nfunction TopBarNavComponent({ isInMenu, menuItemProps }: TabProps) {\n /**\n * to accommodate for the top level nav which should display the children\n * in the dropdown secondary menu if there is a displayName set\n */\n const widgetDisplayText = menuItemProps?.displayName && isInMenu ? menuItemProps?.displayName : undefined;\n return (\n <TopBarNav\n {...menuItemProps}\n className={classnames(menuItemProps?.className, styles.topBarNav, isInMenu && styles.noBorder)}\n >\n {widgetDisplayText || menuItemProps?.children}\n </TopBarNav>\n );\n}\n\nexport function CollapsibleMenuNav({\n navigationSlot,\n widgetSlot,\n navPlugins = [],\n widgetPlugins = [],\n className,\n secondaryNavClassName,\n activeTabIndex,\n alwaysShowActiveTab,\n children,\n}: MenuNavProps) {\n const { isMinimal } = useWorkspaceMode();\n const plugins = useMemo(() => {\n const _navPlugins = navPlugins.length > 0 ? navPlugins : navigationSlot?.toArray();\n if (!isMinimal) {\n return (_navPlugins || []).sort(sortFn);\n }\n return (_navPlugins || []).filter((widget) => !widget[1].props.hideInMinimalMode).sort(sortFn);\n }, [navigationSlot, navPlugins, isMinimal]);\n\n const widgets = useMemo(() => {\n const _widgetPlugins = widgetPlugins.length > 0 ? widgetPlugins : widgetSlot?.toArray();\n if (!isMinimal) {\n return (_widgetPlugins || []).sort(sortFn);\n }\n return (_widgetPlugins || []).filter((widget) => !widget[1].props.hideInMinimalMode).sort(sortFn);\n }, [widgetSlot, widgetPlugins, isMinimal]);\n\n const links = [...plugins, ...widgets].map(([, menuItem], index) => {\n // these styles keep plugins to the left and widgets to the right.\n const lastPluginStyle = plugins.length - 1 === index ? { marginRight: 'auto' } : {};\n\n const firstWidgetStyle = plugins.length === index ? { marginLeft: 'auto' } : {};\n\n return {\n component: TopBarNavComponent,\n tabProps: {\n menuItemProps: menuItem.props,\n },\n style: { ...firstWidgetStyle, ...lastPluginStyle },\n className: menuItem.props.className,\n };\n });\n\n return (\n <>\n {isMinimal && <MinimalMenuNav links={links} secondaryNavClassName={secondaryNavClassName} />}\n <ResponsiveNavbar\n navClassName={classnames(styles.tab, isMinimal && styles.hideMinimalMobileNav, className)}\n secondaryNavClassName={secondaryNavClassName}\n style={{ width: '100%', height: '100%' }}\n priority=\"none\"\n tabs={links}\n defaultActiveIndex={activeTabIndex}\n alwaysShowActiveTab={alwaysShowActiveTab}\n >\n {children}\n </ResponsiveNavbar>\n </>\n );\n}\n\nfunction MinimalMenuNav({ links, secondaryNavClassName }: { links: Tab[]; secondaryNavClassName?: string }) {\n if (links.length === 0) return null;\n\n return (\n <div className={styles.minimalMoreNav}>\n <Dropdown\n placeholderContent={\n <div className={styles.minimalMoreButton} aria-label=\"More component sections\">\n <img src=\"https://static.bit.dev/bit-icons/more-h.svg\" alt=\"\" />\n </div>\n }\n dropClass={secondaryNavClassName}\n position=\"bottom-end\"\n placeholderBorder={false}\n clickToggles\n margin={8}\n >\n {links.map((link, index) => (\n <MenuItem className={styles.minimalMenuItem} key={`minimal-dropdown-${index}`}>\n <TopBarNavComponent menuItemProps={link.tabProps?.menuItemProps} isInMenu />\n </MenuItem>\n ))}\n </Dropdown>\n </div>\n );\n}\n\nfunction sortFn([, { order: first }]: [string, NavPlugin], [, { order: second }]: [string, NavPlugin]) {\n return (first ?? 0) - (second ?? 0);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -209,7 +209,7 @@ function ComponentMenu({
209
209
  element: /*#__PURE__*/_react().default.createElement("div", {
210
210
  className: (0, _classnames().default)(_menuModule().default.topBar, isMinimal && _menuModule().default.topBarMinimal, className)
211
211
  }, /*#__PURE__*/_react().default.createElement("div", {
212
- className: _menuModule().default.leftSide
212
+ className: (0, _classnames().default)(_menuModule().default.leftSide, isMinimal && _menuModule().default.leftSideMinimal)
213
213
  }, /*#__PURE__*/_react().default.createElement(_menuNav().CollapsibleMenuNav, {
214
214
  navigationSlot: navigationSlot,
215
215
  widgetSlot: widgetSlot
@@ -1 +1 @@
1
- {"version":3,"names":["_react","data","_interopRequireWildcard","require","_reactRouterDom","_classnames","_interopRequireDefault","_uiFoundationUiReactRouter","_lodash","semver","_componentUi","_uiFoundationUi","_componentId","_baseReactNavigation","_uiFoundationUiUseBox","_lanesHooks","_uiFoundationUiUseBox2","_workspaceUi","_useComponent","_menuNav","_useComponentFromLocation","_topBarNav","_menuModule","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_extends","assign","bind","getComponentIdStr","componentIdStr","isFunction","ComponentMenu","navigationSlot","widgetSlot","className","host","hostFromProps","menuItemSlot","consumeMethodSlot","rightSideMenuSlot","skipRightSide","RightNode","useComponent","path","useComponentFilters","authToken","pinnedWidgetSlot","isMinimal","useWorkspaceMode","idFromLocation","useIdFromLocation","componentIdStrWithScopeFromLocation","undefined","_componentIdStr","componentId","ComponentID","fromString","resolvedComponentIdStr","mainMenuItems","useMemo","groupBy","flatten","values","rightSideItems","orderBy","pinnedWidgets","toArray","sort","sortFn","map","pinnedWidget","componentFilters","query","useQuery","componentVersion","useComponentVersions","defaultLoadVersions","toString","RightSide","createElement","styles","rightSide","Fragment","VersionRelatedDropdowns","consumeMethods","item","MainDropdown","hideOnMobile","menuItems","Routes","Route","element","classnames","topBar","topBarMinimal","leftSide","CollapsibleMenuNav","PinnedWidgetComponent","key","order","props","loadingFromProps","React","useCallback","_props","skip","initialLoad","fetchOptions","logFilters","log","limit","customUseComponent","component","loading","loadingComponent","componentLogs","useComponentQuery","logs","snaps","tag","snap","version","hash","tags","tagLookup","Map","compact","reverse","id","packageName","latestVersion","latest","currentVersion","buildStatus","defaultLoadCurrentVersion","_version","isTag","valid","find","exports","updatedPropsWithDefaults","useLanes","defaultUseLanes","dropdownOptions","showVersionDetails","loadVersion","_currentVersion","location","useLocation","lanesModel","lanes","getLanesByComponentId","lane","isDefault","viewedLane","isWorkspace","isNew","localVersion","isViewingCurrentLane","search","includes","consumeMethodProps","options","disableInstall","methods","useConsumeMethods","hasMethods","UseBoxDropdown","position","useBox","dropClass","useBoxContainer","Menu","componentName","name","VersionDropdown","hasMoreVersions","useCurrentVersionLog","currentLane","versionDropdown","menuClassName","componentVersionMenuWorkspace","componentVersionMenu","getActiveTabIndex","consumePluginProps","method","x","Component","Title","first","second","menuItemProps","TopBarNav","style","height","children"],"sources":["menu.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useMemo } from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport classnames from 'classnames';\nimport { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';\nimport { compact, flatten, groupBy, isFunction, orderBy } from 'lodash';\nimport * as semver from 'semver';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport type { DropdownComponentVersion, GetActiveTabIndex } from '@teambit/component.ui.version-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport type { MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { MainDropdown } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { ComponentID } from '@teambit/component-id';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-react.navigation.link';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { useLanes as defaultUseLanes } from '@teambit/lanes.hooks.use-lanes';\nimport type { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport type { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport type { UseComponentType, Filters } from '../use-component';\nimport { useComponent as useComponentQuery } from '../use-component';\nimport { CollapsibleMenuNav } from './menu-nav';\nimport type {\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n ConsumePluginProps,\n NavPlugin,\n NavPluginProps,\n} from './nav-plugin';\nimport { useIdFromLocation } from '../use-component-from-location';\nimport { TopBarNav } from '../top-bar-nav';\n\nimport styles from './menu.module.scss';\n\nexport type RightSideMenuItem = { item: ReactNode; order: number };\nexport type RightSideMenuSlot = SlotRegistry<RightSideMenuItem[]>;\n\nexport type MenuProps = {\n className?: string;\n /**\n * skip the right side.\n */\n skipRightSide?: boolean;\n /**\n * custom render the right side\n */\n RightNode?: React.ReactNode;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side navigation menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n /**\n * pinned widgets slots - right side of the widget slot\n */\n pinnedWidgetSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n rightSideMenuSlot: RightSideMenuSlot;\n /**\n * workspace or scope\n */\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n\n componentIdStr?: string | (() => string | undefined);\n\n useComponent?: UseComponentType;\n\n useComponentFilters?: () => Filters;\n\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n\n path?: string;\n\n authToken?: string;\n};\nfunction getComponentIdStr(componentIdStr?: string | (() => string | undefined)): string | undefined {\n if (isFunction(componentIdStr)) return componentIdStr();\n return componentIdStr;\n}\n/**\n * top bar menu.\n */\nexport function ComponentMenu({\n navigationSlot,\n widgetSlot,\n className,\n host: hostFromProps,\n menuItemSlot,\n consumeMethodSlot,\n rightSideMenuSlot,\n componentIdStr,\n skipRightSide,\n RightNode,\n useComponent,\n path,\n useComponentFilters,\n authToken,\n pinnedWidgetSlot,\n}: MenuProps) {\n const { isMinimal } = useWorkspaceMode();\n const idFromLocation = useIdFromLocation();\n const componentIdStrWithScopeFromLocation = useIdFromLocation(undefined, true);\n const _componentIdStr = getComponentIdStr(componentIdStr);\n const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;\n const resolvedComponentIdStr = path || idFromLocation;\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n const rightSideItems = useMemo(() => orderBy(flatten(rightSideMenuSlot.values()), 'order'), [rightSideMenuSlot]);\n const pinnedWidgets = useMemo(\n () =>\n flatten(\n pinnedWidgetSlot\n .toArray()\n .sort(sortFn)\n .map(([, pinnedWidget]) => pinnedWidget)\n ),\n [pinnedWidgetSlot]\n );\n const componentFilters = useComponentFilters?.() || {};\n const query = useQuery();\n const componentVersion = query.get('version');\n const host = componentVersion ? 'teambit.scope/scope' : hostFromProps;\n\n const useComponentVersions = defaultLoadVersions(\n host,\n componentId?.toString() || componentIdStrWithScopeFromLocation,\n componentFilters,\n useComponent\n );\n\n const RightSide = (\n <div className={styles.rightSide}>\n {RightNode || (\n <>\n <VersionRelatedDropdowns\n host={hostFromProps}\n consumeMethods={consumeMethodSlot}\n componentId={componentId?.toString() || idFromLocation}\n useComponent={useComponentVersions}\n componentFilters={componentFilters}\n authToken={authToken}\n // loading={loading}\n />\n {rightSideItems.map(({ item }) => item)}\n {!isMinimal && <MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />}\n </>\n )}\n </div>\n );\n\n return (\n <Routes>\n <Route\n path={`${resolvedComponentIdStr}/*`}\n element={\n <div className={classnames(styles.topBar, isMinimal && styles.topBarMinimal, className)}>\n <div className={styles.leftSide}>\n <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />\n </div>\n {isMinimal &&\n pinnedWidgets.map((pinnedWidget) => (\n <PinnedWidgetComponent key={`key-${pinnedWidget.order}`} {...pinnedWidget.props} />\n ))}\n {!skipRightSide && <div className={styles.rightSide}>{RightSide}</div>}\n </div>\n }\n />\n </Routes>\n );\n}\n\nexport type VersionRelatedDropdownsProps = {\n componentId?: string;\n consumeMethods?: ConsumeMethodSlot;\n componentFilters?: Filters;\n useComponent?: UseComponentVersions;\n className?: string;\n loading?: boolean;\n host: string;\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n dropdownOptions?: {\n showVersionDetails?: boolean;\n getActiveTabIndex?: GetActiveTabIndex;\n };\n authToken?: string;\n};\nexport type UseComponentVersionsProps = {\n skip?: boolean;\n id?: string;\n initialLoad?: boolean;\n};\nexport type UseComponentVersionProps = {\n skip?: boolean;\n version?: string;\n};\nexport type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;\nexport type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;\nexport type UseComponentVersionsResult = {\n tags?: DropdownComponentVersion[];\n snaps?: DropdownComponentVersion[];\n id?: ComponentID;\n packageName?: string;\n latest?: string;\n currentVersion?: string;\n loading?: boolean;\n};\n\nexport function defaultLoadVersions(\n host: string,\n componentId?: string,\n componentFilters: Filters = {},\n useComponent?: UseComponentType,\n loadingFromProps?: boolean\n): UseComponentVersions {\n return React.useCallback(\n (_props) => {\n const { skip, initialLoad } = _props || {};\n const fetchOptions = {\n logFilters: {\n ...componentFilters,\n log: {\n ...componentFilters.log,\n limit: initialLoad ? 3 : undefined,\n },\n },\n skip: loadingFromProps || skip,\n customUseComponent: useComponent,\n };\n const {\n component,\n loading: loadingComponent,\n componentLogs = {},\n } = useComponentQuery(host, componentId, fetchOptions);\n const logs = componentLogs?.logs;\n const loading = React.useMemo(\n () => loadingComponent || loadingFromProps || componentLogs.loading,\n [loadingComponent, loadingFromProps, componentLogs.loading]\n );\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n const tagLookup = new Map<string, LegacyComponentLog>();\n (logs || [])\n .filter((log) => log.tag)\n .forEach((tag) => {\n tagLookup.set(tag?.tag as string, tag);\n });\n return compact(\n (component?.tags?.toArray() || []).reverse().map((tag) => tagLookup.get(tag.version.version))\n ).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n return {\n loading,\n id: component?.id,\n packageName: component?.packageName,\n latestVersion: component?.latest,\n currentVersion: component?.version,\n snaps,\n tags,\n buildStatus: component?.buildStatus,\n };\n },\n [componentId, loadingFromProps, componentFilters, host]\n );\n}\n\nexport const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion = (props) => {\n return (_props) => {\n const { skip, version: _version } = _props || {};\n const { snaps, tags, currentVersion, loading } = props.useComponent?.({ skip, id: props.componentId }) ?? {};\n const version = _version ?? currentVersion;\n const isTag = React.useMemo(() => semver.valid(version), [loading, version]);\n if (isTag) {\n return React.useMemo(() => tags?.find((tag) => tag.tag === version), [loading, tags?.length, version]);\n }\n return React.useMemo(() => snaps?.find((snap) => snap.version === version), [loading, snaps?.length, version]);\n };\n};\n\nexport function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps) {\n const updatedPropsWithDefaults = {\n ...props,\n useLanes: props.useLanes ?? defaultUseLanes,\n dropdownOptions: {\n ...props.dropdownOptions,\n showVersionDetails: props?.dropdownOptions?.showVersionDetails ?? true,\n },\n };\n\n const loadVersion = defaultLoadCurrentVersion(updatedPropsWithDefaults);\n\n const { useLanes, consumeMethods, className, dropdownOptions, host } = updatedPropsWithDefaults;\n const {\n loading,\n id,\n tags,\n snaps,\n latest,\n packageName,\n currentVersion: _currentVersion,\n } = props.useComponent?.({ initialLoad: true }) || {};\n const location = useLocation();\n const { lanesModel } = useLanes();\n const lanes = id ? lanesModel?.getLanesByComponentId(id as any)?.filter((lane) => !lane.id.isDefault()) || [] : [];\n const viewedLane =\n lanesModel?.viewedLane?.id && !lanesModel?.viewedLane?.id.isDefault() ? lanesModel.viewedLane : undefined;\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const isNew = tags?.length === 0 && snaps?.length === 0;\n\n const localVersion = isWorkspace && !isNew && (!viewedLane || lanesModel?.isViewingCurrentLane());\n\n const currentVersion =\n isWorkspace && !isNew && !location?.search.includes('version') ? 'workspace' : (_currentVersion ?? '');\n\n const authToken = props.authToken;\n\n const consumeMethodProps: ConsumePluginProps | undefined = React.useMemo(() => {\n return id\n ? {\n id,\n packageName: packageName ?? '',\n latest,\n options: { viewedLane, disableInstall: !packageName },\n authToken,\n }\n : undefined;\n }, [id, packageName, latest, viewedLane, authToken]);\n const methods = useConsumeMethods(consumeMethods, consumeMethodProps);\n const hasMethods = methods?.length > 0;\n\n return (\n <>\n {consumeMethods && id && hasMethods && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={classnames(styles.useBox, styles.hideOnMobile)}\n dropClass={styles.useBoxContainer}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={id.name} />}\n />\n )}\n <VersionDropdown\n lanes={lanes}\n loading={loading}\n useComponentVersions={props.useComponent}\n hasMoreVersions={!isNew}\n useCurrentVersionLog={loadVersion}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={latest}\n currentLane={viewedLane}\n className={classnames(styles.versionDropdown, className)}\n menuClassName={isWorkspace ? styles.componentVersionMenuWorkspace : styles.componentVersionMenu}\n getActiveTabIndex={dropdownOptions?.getActiveTabIndex}\n showVersionDetails={dropdownOptions?.showVersionDetails}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods?: ConsumeMethodSlot,\n consumePluginProps?: ConsumePluginProps\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods?.values())\n .map((method) => {\n if (!consumePluginProps) return undefined;\n return method?.(consumePluginProps);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, consumePluginProps]\n );\n}\n\nfunction sortFn([, { order: first }]: [string, NavPlugin], [, { order: second }]: [string, NavPlugin]) {\n return (first ?? 0) - (second ?? 0);\n}\n\nfunction PinnedWidgetComponent(menuItemProps: NavPluginProps) {\n return (\n <TopBarNav\n {...menuItemProps}\n style={{ ...menuItemProps.style, height: '100%' }}\n className={classnames(menuItemProps?.className)}\n >\n {menuItemProps?.children}\n </TopBarNav>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","data","_interopRequireWildcard","require","_reactRouterDom","_classnames","_interopRequireDefault","_uiFoundationUiReactRouter","_lodash","semver","_componentUi","_uiFoundationUi","_componentId","_baseReactNavigation","_uiFoundationUiUseBox","_lanesHooks","_uiFoundationUiUseBox2","_workspaceUi","_useComponent","_menuNav","_useComponentFromLocation","_topBarNav","_menuModule","e","__esModule","default","t","WeakMap","r","n","o","i","f","__proto__","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ownKeys","keys","getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty","getOwnPropertyDescriptors","defineProperties","_toPropertyKey","value","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","_extends","assign","bind","getComponentIdStr","componentIdStr","isFunction","ComponentMenu","navigationSlot","widgetSlot","className","host","hostFromProps","menuItemSlot","consumeMethodSlot","rightSideMenuSlot","skipRightSide","RightNode","useComponent","path","useComponentFilters","authToken","pinnedWidgetSlot","isMinimal","useWorkspaceMode","idFromLocation","useIdFromLocation","componentIdStrWithScopeFromLocation","undefined","_componentIdStr","componentId","ComponentID","fromString","resolvedComponentIdStr","mainMenuItems","useMemo","groupBy","flatten","values","rightSideItems","orderBy","pinnedWidgets","toArray","sort","sortFn","map","pinnedWidget","componentFilters","query","useQuery","componentVersion","useComponentVersions","defaultLoadVersions","toString","RightSide","createElement","styles","rightSide","Fragment","VersionRelatedDropdowns","consumeMethods","item","MainDropdown","hideOnMobile","menuItems","Routes","Route","element","classnames","topBar","topBarMinimal","leftSide","leftSideMinimal","CollapsibleMenuNav","PinnedWidgetComponent","key","order","props","loadingFromProps","React","useCallback","_props","skip","initialLoad","fetchOptions","logFilters","log","limit","customUseComponent","component","loading","loadingComponent","componentLogs","useComponentQuery","logs","snaps","tag","snap","version","hash","tags","tagLookup","Map","compact","reverse","id","packageName","latestVersion","latest","currentVersion","buildStatus","defaultLoadCurrentVersion","_version","isTag","valid","find","exports","updatedPropsWithDefaults","useLanes","defaultUseLanes","dropdownOptions","showVersionDetails","loadVersion","_currentVersion","location","useLocation","lanesModel","lanes","getLanesByComponentId","lane","isDefault","viewedLane","isWorkspace","isNew","localVersion","isViewingCurrentLane","search","includes","consumeMethodProps","options","disableInstall","methods","useConsumeMethods","hasMethods","UseBoxDropdown","position","useBox","dropClass","useBoxContainer","Menu","componentName","name","VersionDropdown","hasMoreVersions","useCurrentVersionLog","currentLane","versionDropdown","menuClassName","componentVersionMenuWorkspace","componentVersionMenu","getActiveTabIndex","consumePluginProps","method","x","Component","Title","first","second","menuItemProps","TopBarNav","style","height","children"],"sources":["menu.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport React, { useMemo } from 'react';\nimport { Routes, Route } from 'react-router-dom';\nimport classnames from 'classnames';\nimport { useQuery } from '@teambit/ui-foundation.ui.react-router.use-query';\nimport { compact, flatten, groupBy, isFunction, orderBy } from 'lodash';\nimport * as semver from 'semver';\nimport type { SlotRegistry } from '@teambit/harmony';\nimport type { DropdownComponentVersion, GetActiveTabIndex } from '@teambit/component.ui.version-dropdown';\nimport { VersionDropdown } from '@teambit/component.ui.version-dropdown';\nimport type { MenuItemSlot } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { MainDropdown } from '@teambit/ui-foundation.ui.main-dropdown';\nimport { ComponentID } from '@teambit/component-id';\nimport type { ConsumeMethod } from '@teambit/ui-foundation.ui.use-box.menu';\nimport { useLocation } from '@teambit/base-react.navigation.link';\nimport { UseBoxDropdown } from '@teambit/ui-foundation.ui.use-box.dropdown';\nimport { useLanes as defaultUseLanes } from '@teambit/lanes.hooks.use-lanes';\nimport type { LanesModel } from '@teambit/lanes.ui.models.lanes-model';\nimport { Menu as ConsumeMethodsMenu } from '@teambit/ui-foundation.ui.use-box.menu';\nimport type { LegacyComponentLog } from '@teambit/legacy-component-log';\nimport { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';\nimport type { UseComponentType, Filters } from '../use-component';\nimport { useComponent as useComponentQuery } from '../use-component';\nimport { CollapsibleMenuNav } from './menu-nav';\nimport type {\n OrderedNavigationSlot,\n ConsumeMethodSlot,\n ConsumePluginProps,\n NavPlugin,\n NavPluginProps,\n} from './nav-plugin';\nimport { useIdFromLocation } from '../use-component-from-location';\nimport { TopBarNav } from '../top-bar-nav';\n\nimport styles from './menu.module.scss';\n\nexport type RightSideMenuItem = { item: ReactNode; order: number };\nexport type RightSideMenuSlot = SlotRegistry<RightSideMenuItem[]>;\n\nexport type MenuProps = {\n className?: string;\n /**\n * skip the right side.\n */\n skipRightSide?: boolean;\n /**\n * custom render the right side\n */\n RightNode?: React.ReactNode;\n /**\n * slot for top bar menu nav items\n */\n navigationSlot: OrderedNavigationSlot;\n /**\n * right side navigation menu item slot\n */\n widgetSlot: OrderedNavigationSlot;\n /**\n * pinned widgets slots - right side of the widget slot\n */\n pinnedWidgetSlot: OrderedNavigationSlot;\n /**\n * right side menu item slot\n */\n rightSideMenuSlot: RightSideMenuSlot;\n /**\n * workspace or scope\n */\n host: string;\n /**\n * main dropdown item slot\n */\n menuItemSlot: MenuItemSlot;\n\n consumeMethodSlot: ConsumeMethodSlot;\n\n componentIdStr?: string | (() => string | undefined);\n\n useComponent?: UseComponentType;\n\n useComponentFilters?: () => Filters;\n\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n\n path?: string;\n\n authToken?: string;\n};\nfunction getComponentIdStr(componentIdStr?: string | (() => string | undefined)): string | undefined {\n if (isFunction(componentIdStr)) return componentIdStr();\n return componentIdStr;\n}\n/**\n * top bar menu.\n */\nexport function ComponentMenu({\n navigationSlot,\n widgetSlot,\n className,\n host: hostFromProps,\n menuItemSlot,\n consumeMethodSlot,\n rightSideMenuSlot,\n componentIdStr,\n skipRightSide,\n RightNode,\n useComponent,\n path,\n useComponentFilters,\n authToken,\n pinnedWidgetSlot,\n}: MenuProps) {\n const { isMinimal } = useWorkspaceMode();\n const idFromLocation = useIdFromLocation();\n const componentIdStrWithScopeFromLocation = useIdFromLocation(undefined, true);\n const _componentIdStr = getComponentIdStr(componentIdStr);\n const componentId = _componentIdStr ? ComponentID.fromString(_componentIdStr) : undefined;\n const resolvedComponentIdStr = path || idFromLocation;\n const mainMenuItems = useMemo(() => groupBy(flatten(menuItemSlot.values()), 'category'), [menuItemSlot]);\n const rightSideItems = useMemo(() => orderBy(flatten(rightSideMenuSlot.values()), 'order'), [rightSideMenuSlot]);\n const pinnedWidgets = useMemo(\n () =>\n flatten(\n pinnedWidgetSlot\n .toArray()\n .sort(sortFn)\n .map(([, pinnedWidget]) => pinnedWidget)\n ),\n [pinnedWidgetSlot]\n );\n const componentFilters = useComponentFilters?.() || {};\n const query = useQuery();\n const componentVersion = query.get('version');\n const host = componentVersion ? 'teambit.scope/scope' : hostFromProps;\n\n const useComponentVersions = defaultLoadVersions(\n host,\n componentId?.toString() || componentIdStrWithScopeFromLocation,\n componentFilters,\n useComponent\n );\n\n const RightSide = (\n <div className={styles.rightSide}>\n {RightNode || (\n <>\n <VersionRelatedDropdowns\n host={hostFromProps}\n consumeMethods={consumeMethodSlot}\n componentId={componentId?.toString() || idFromLocation}\n useComponent={useComponentVersions}\n componentFilters={componentFilters}\n authToken={authToken}\n // loading={loading}\n />\n {rightSideItems.map(({ item }) => item)}\n {!isMinimal && <MainDropdown className={styles.hideOnMobile} menuItems={mainMenuItems} />}\n </>\n )}\n </div>\n );\n\n return (\n <Routes>\n <Route\n path={`${resolvedComponentIdStr}/*`}\n element={\n <div className={classnames(styles.topBar, isMinimal && styles.topBarMinimal, className)}>\n <div className={classnames(styles.leftSide, isMinimal && styles.leftSideMinimal)}>\n <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />\n </div>\n {isMinimal &&\n pinnedWidgets.map((pinnedWidget) => (\n <PinnedWidgetComponent key={`key-${pinnedWidget.order}`} {...pinnedWidget.props} />\n ))}\n {!skipRightSide && <div className={styles.rightSide}>{RightSide}</div>}\n </div>\n }\n />\n </Routes>\n );\n}\n\nexport type VersionRelatedDropdownsProps = {\n componentId?: string;\n consumeMethods?: ConsumeMethodSlot;\n componentFilters?: Filters;\n useComponent?: UseComponentVersions;\n className?: string;\n loading?: boolean;\n host: string;\n useLanes?: () => {\n loading?: boolean;\n lanesModel?: LanesModel;\n };\n dropdownOptions?: {\n showVersionDetails?: boolean;\n getActiveTabIndex?: GetActiveTabIndex;\n };\n authToken?: string;\n};\nexport type UseComponentVersionsProps = {\n skip?: boolean;\n id?: string;\n initialLoad?: boolean;\n};\nexport type UseComponentVersionProps = {\n skip?: boolean;\n version?: string;\n};\nexport type UseComponentVersions = (props?: UseComponentVersionsProps) => UseComponentVersionsResult;\nexport type UseComponentVersion = (props?: UseComponentVersionProps) => DropdownComponentVersion | undefined;\nexport type UseComponentVersionsResult = {\n tags?: DropdownComponentVersion[];\n snaps?: DropdownComponentVersion[];\n id?: ComponentID;\n packageName?: string;\n latest?: string;\n currentVersion?: string;\n loading?: boolean;\n};\n\nexport function defaultLoadVersions(\n host: string,\n componentId?: string,\n componentFilters: Filters = {},\n useComponent?: UseComponentType,\n loadingFromProps?: boolean\n): UseComponentVersions {\n return React.useCallback(\n (_props) => {\n const { skip, initialLoad } = _props || {};\n const fetchOptions = {\n logFilters: {\n ...componentFilters,\n log: {\n ...componentFilters.log,\n limit: initialLoad ? 3 : undefined,\n },\n },\n skip: loadingFromProps || skip,\n customUseComponent: useComponent,\n };\n const {\n component,\n loading: loadingComponent,\n componentLogs = {},\n } = useComponentQuery(host, componentId, fetchOptions);\n const logs = componentLogs?.logs;\n const loading = React.useMemo(\n () => loadingComponent || loadingFromProps || componentLogs.loading,\n [loadingComponent, loadingFromProps, componentLogs.loading]\n );\n\n const snaps = useMemo(() => {\n return (logs || []).filter((log) => !log.tag).map((snap) => ({ ...snap, version: snap.hash }));\n }, [logs]);\n\n const tags = useMemo(() => {\n const tagLookup = new Map<string, LegacyComponentLog>();\n (logs || [])\n .filter((log) => log.tag)\n .forEach((tag) => {\n tagLookup.set(tag?.tag as string, tag);\n });\n return compact(\n (component?.tags?.toArray() || []).reverse().map((tag) => tagLookup.get(tag.version.version))\n ).map((tag) => ({ ...tag, version: tag.tag as string }));\n }, [logs]);\n\n return {\n loading,\n id: component?.id,\n packageName: component?.packageName,\n latestVersion: component?.latest,\n currentVersion: component?.version,\n snaps,\n tags,\n buildStatus: component?.buildStatus,\n };\n },\n [componentId, loadingFromProps, componentFilters, host]\n );\n}\n\nexport const defaultLoadCurrentVersion: (props: VersionRelatedDropdownsProps) => UseComponentVersion = (props) => {\n return (_props) => {\n const { skip, version: _version } = _props || {};\n const { snaps, tags, currentVersion, loading } = props.useComponent?.({ skip, id: props.componentId }) ?? {};\n const version = _version ?? currentVersion;\n const isTag = React.useMemo(() => semver.valid(version), [loading, version]);\n if (isTag) {\n return React.useMemo(() => tags?.find((tag) => tag.tag === version), [loading, tags?.length, version]);\n }\n return React.useMemo(() => snaps?.find((snap) => snap.version === version), [loading, snaps?.length, version]);\n };\n};\n\nexport function VersionRelatedDropdowns(props: VersionRelatedDropdownsProps) {\n const updatedPropsWithDefaults = {\n ...props,\n useLanes: props.useLanes ?? defaultUseLanes,\n dropdownOptions: {\n ...props.dropdownOptions,\n showVersionDetails: props?.dropdownOptions?.showVersionDetails ?? true,\n },\n };\n\n const loadVersion = defaultLoadCurrentVersion(updatedPropsWithDefaults);\n\n const { useLanes, consumeMethods, className, dropdownOptions, host } = updatedPropsWithDefaults;\n const {\n loading,\n id,\n tags,\n snaps,\n latest,\n packageName,\n currentVersion: _currentVersion,\n } = props.useComponent?.({ initialLoad: true }) || {};\n const location = useLocation();\n const { lanesModel } = useLanes();\n const lanes = id ? lanesModel?.getLanesByComponentId(id as any)?.filter((lane) => !lane.id.isDefault()) || [] : [];\n const viewedLane =\n lanesModel?.viewedLane?.id && !lanesModel?.viewedLane?.id.isDefault() ? lanesModel.viewedLane : undefined;\n\n const isWorkspace = host === 'teambit.workspace/workspace';\n\n const isNew = tags?.length === 0 && snaps?.length === 0;\n\n const localVersion = isWorkspace && !isNew && (!viewedLane || lanesModel?.isViewingCurrentLane());\n\n const currentVersion =\n isWorkspace && !isNew && !location?.search.includes('version') ? 'workspace' : (_currentVersion ?? '');\n\n const authToken = props.authToken;\n\n const consumeMethodProps: ConsumePluginProps | undefined = React.useMemo(() => {\n return id\n ? {\n id,\n packageName: packageName ?? '',\n latest,\n options: { viewedLane, disableInstall: !packageName },\n authToken,\n }\n : undefined;\n }, [id, packageName, latest, viewedLane, authToken]);\n const methods = useConsumeMethods(consumeMethods, consumeMethodProps);\n const hasMethods = methods?.length > 0;\n\n return (\n <>\n {consumeMethods && id && hasMethods && (\n <UseBoxDropdown\n position=\"bottom-end\"\n className={classnames(styles.useBox, styles.hideOnMobile)}\n dropClass={styles.useBoxContainer}\n Menu={<ConsumeMethodsMenu methods={methods} componentName={id.name} />}\n />\n )}\n <VersionDropdown\n lanes={lanes}\n loading={loading}\n useComponentVersions={props.useComponent}\n hasMoreVersions={!isNew}\n useCurrentVersionLog={loadVersion}\n localVersion={localVersion}\n currentVersion={currentVersion}\n latestVersion={latest}\n currentLane={viewedLane}\n className={classnames(styles.versionDropdown, className)}\n menuClassName={isWorkspace ? styles.componentVersionMenuWorkspace : styles.componentVersionMenu}\n getActiveTabIndex={dropdownOptions?.getActiveTabIndex}\n showVersionDetails={dropdownOptions?.showVersionDetails}\n />\n </>\n );\n}\n\nfunction useConsumeMethods(\n consumeMethods?: ConsumeMethodSlot,\n consumePluginProps?: ConsumePluginProps\n): ConsumeMethod[] {\n return useMemo(\n () =>\n flatten(consumeMethods?.values())\n .map((method) => {\n if (!consumePluginProps) return undefined;\n return method?.(consumePluginProps);\n })\n .filter((x) => !!x && x.Component && x.Title) as ConsumeMethod[],\n [consumeMethods, consumePluginProps]\n );\n}\n\nfunction sortFn([, { order: first }]: [string, NavPlugin], [, { order: second }]: [string, NavPlugin]) {\n return (first ?? 0) - (second ?? 0);\n}\n\nfunction PinnedWidgetComponent(menuItemProps: NavPluginProps) {\n return (\n <TopBarNav\n {...menuItemProps}\n style={{ ...menuItemProps.style, height: '100%' }}\n className={classnames(menuItemProps?.className)}\n >\n {menuItemProps?.children}\n </TopBarNav>\n );\n}\n"],"mappings":";;;;;;;;;AACA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,gBAAA;EAAA,MAAAH,IAAA,GAAAE,OAAA;EAAAC,eAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,YAAA;EAAA,MAAAJ,IAAA,GAAAK,sBAAA,CAAAH,OAAA;EAAAE,WAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAM,2BAAA;EAAA,MAAAN,IAAA,GAAAE,OAAA;EAAAI,0BAAA,YAAAA,CAAA;IAAA,OAAAN,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAO,QAAA;EAAA,MAAAP,IAAA,GAAAE,OAAA;EAAAK,OAAA,YAAAA,CAAA;IAAA,OAAAP,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAQ,OAAA;EAAA,MAAAR,IAAA,GAAAC,uBAAA,CAAAC,OAAA;EAAAM,MAAA,YAAAA,CAAA;IAAA,OAAAR,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAGA,SAAAS,aAAA;EAAA,MAAAT,IAAA,GAAAE,OAAA;EAAAO,YAAA,YAAAA,CAAA;IAAA,OAAAT,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAU,gBAAA;EAAA,MAAAV,IAAA,GAAAE,OAAA;EAAAQ,eAAA,YAAAA,CAAA;IAAA,OAAAV,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAW,aAAA;EAAA,MAAAX,IAAA,GAAAE,OAAA;EAAAS,YAAA,YAAAA,CAAA;IAAA,OAAAX,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAY,qBAAA;EAAA,MAAAZ,IAAA,GAAAE,OAAA;EAAAU,oBAAA,YAAAA,CAAA;IAAA,OAAAZ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAa,sBAAA;EAAA,MAAAb,IAAA,GAAAE,OAAA;EAAAW,qBAAA,YAAAA,CAAA;IAAA,OAAAb,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAc,YAAA;EAAA,MAAAd,IAAA,GAAAE,OAAA;EAAAY,WAAA,YAAAA,CAAA;IAAA,OAAAd,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAe,uBAAA;EAAA,MAAAf,IAAA,GAAAE,OAAA;EAAAa,sBAAA,YAAAA,CAAA;IAAA,OAAAf,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAgB,aAAA;EAAA,MAAAhB,IAAA,GAAAE,OAAA;EAAAc,YAAA,YAAAA,CAAA;IAAA,OAAAhB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAiB,cAAA;EAAA,MAAAjB,IAAA,GAAAE,OAAA;EAAAe,aAAA,YAAAA,CAAA;IAAA,OAAAjB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAkB,SAAA;EAAA,MAAAlB,IAAA,GAAAE,OAAA;EAAAgB,QAAA,YAAAA,CAAA;IAAA,OAAAlB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAQA,SAAAmB,0BAAA;EAAA,MAAAnB,IAAA,GAAAE,OAAA;EAAAiB,yBAAA,YAAAA,CAAA;IAAA,OAAAnB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAoB,WAAA;EAAA,MAAApB,IAAA,GAAAE,OAAA;EAAAkB,UAAA,YAAAA,CAAA;IAAA,OAAApB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAqB,YAAA;EAAA,MAAArB,IAAA,GAAAK,sBAAA,CAAAH,OAAA;EAAAmB,WAAA,YAAAA,CAAA;IAAA,OAAArB,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwC,SAAAK,uBAAAiB,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAArB,wBAAAqB,CAAA,EAAAG,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAzB,uBAAA,YAAAA,CAAAqB,CAAA,EAAAG,CAAA,SAAAA,CAAA,IAAAH,CAAA,IAAAA,CAAA,CAAAC,UAAA,SAAAD,CAAA,MAAAO,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAR,OAAA,EAAAF,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAS,CAAA,MAAAF,CAAA,GAAAJ,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAE,CAAA,CAAAI,GAAA,CAAAX,CAAA,UAAAO,CAAA,CAAAK,GAAA,CAAAZ,CAAA,GAAAO,CAAA,CAAAM,GAAA,CAAAb,CAAA,EAAAS,CAAA,gBAAAN,CAAA,IAAAH,CAAA,gBAAAG,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAG,CAAA,OAAAK,CAAA,IAAAD,CAAA,GAAAS,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAG,CAAA,OAAAK,CAAA,CAAAI,GAAA,IAAAJ,CAAA,CAAAK,GAAA,IAAAN,CAAA,CAAAE,CAAA,EAAAN,CAAA,EAAAK,CAAA,IAAAC,CAAA,CAAAN,CAAA,IAAAH,CAAA,CAAAG,CAAA,WAAAM,CAAA,KAAAT,CAAA,EAAAG,CAAA;AAAA,SAAAgB,QAAAnB,CAAA,EAAAK,CAAA,QAAAF,CAAA,GAAAa,MAAA,CAAAI,IAAA,CAAApB,CAAA,OAAAgB,MAAA,CAAAK,qBAAA,QAAAd,CAAA,GAAAS,MAAA,CAAAK,qBAAA,CAAArB,CAAA,GAAAK,CAAA,KAAAE,CAAA,GAAAA,CAAA,CAAAe,MAAA,WAAAjB,CAAA,WAAAW,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAK,CAAA,EAAAkB,UAAA,OAAApB,CAAA,CAAAqB,IAAA,CAAAC,KAAA,CAAAtB,CAAA,EAAAI,CAAA,YAAAJ,CAAA;AAAA,SAAAuB,cAAA1B,CAAA,aAAAK,CAAA,MAAAA,CAAA,GAAAsB,SAAA,CAAAC,MAAA,EAAAvB,CAAA,UAAAF,CAAA,WAAAwB,SAAA,CAAAtB,CAAA,IAAAsB,SAAA,CAAAtB,CAAA,QAAAA,CAAA,OAAAc,OAAA,CAAAH,MAAA,CAAAb,CAAA,OAAA0B,OAAA,WAAAxB,CAAA,IAAAyB,eAAA,CAAA9B,CAAA,EAAAK,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAAW,MAAA,CAAAe,yBAAA,GAAAf,MAAA,CAAAgB,gBAAA,CAAAhC,CAAA,EAAAgB,MAAA,CAAAe,yBAAA,CAAA5B,CAAA,KAAAgB,OAAA,CAAAH,MAAA,CAAAb,CAAA,GAAA0B,OAAA,WAAAxB,CAAA,IAAAW,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,EAAAW,MAAA,CAAAE,wBAAA,CAAAf,CAAA,EAAAE,CAAA,iBAAAL,CAAA;AAAA,SAAA8B,gBAAA9B,CAAA,EAAAK,CAAA,EAAAF,CAAA,YAAAE,CAAA,GAAA4B,cAAA,CAAA5B,CAAA,MAAAL,CAAA,GAAAgB,MAAA,CAAAC,cAAA,CAAAjB,CAAA,EAAAK,CAAA,IAAA6B,KAAA,EAAA/B,CAAA,EAAAoB,UAAA,MAAAY,YAAA,MAAAC,QAAA,UAAApC,CAAA,CAAAK,CAAA,IAAAF,CAAA,EAAAH,CAAA;AAAA,SAAAiC,eAAA9B,CAAA,QAAAK,CAAA,GAAA6B,YAAA,CAAAlC,CAAA,uCAAAK,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAA6B,aAAAlC,CAAA,EAAAE,CAAA,2BAAAF,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAH,CAAA,GAAAG,CAAA,CAAAmC,MAAA,CAAAC,WAAA,kBAAAvC,CAAA,QAAAQ,CAAA,GAAAR,CAAA,CAAAe,IAAA,CAAAZ,CAAA,EAAAE,CAAA,uCAAAG,CAAA,SAAAA,CAAA,YAAAgC,SAAA,yEAAAnC,CAAA,GAAAoC,MAAA,GAAAC,MAAA,EAAAvC,CAAA;AAAA,SAAAwC,SAAA,WAAAA,QAAA,GAAA3B,MAAA,CAAA4B,MAAA,GAAA5B,MAAA,CAAA4B,MAAA,CAAAC,IAAA,eAAAvC,CAAA,aAAAN,CAAA,MAAAA,CAAA,GAAA2B,SAAA,CAAAC,MAAA,EAAA5B,CAAA,UAAAG,CAAA,GAAAwB,SAAA,CAAA3B,CAAA,YAAAK,CAAA,IAAAF,CAAA,OAAAW,cAAA,CAAAC,IAAA,CAAAZ,CAAA,EAAAE,CAAA,MAAAC,CAAA,CAAAD,CAAA,IAAAF,CAAA,CAAAE,CAAA,aAAAC,CAAA,KAAAqC,QAAA,CAAAlB,KAAA,OAAAE,SAAA;AAyDxC,SAASmB,iBAAiBA,CAACC,cAAoD,EAAsB;EACnG,IAAI,IAAAC,oBAAU,EAACD,cAAc,CAAC,EAAE,OAAOA,cAAc,CAAC,CAAC;EACvD,OAAOA,cAAc;AACvB;AACA;AACA;AACA;AACO,SAASE,aAAaA,CAAC;EAC5BC,cAAc;EACdC,UAAU;EACVC,SAAS;EACTC,IAAI,EAAEC,aAAa;EACnBC,YAAY;EACZC,iBAAiB;EACjBC,iBAAiB;EACjBV,cAAc;EACdW,aAAa;EACbC,SAAS;EACTC,YAAY;EACZC,IAAI;EACJC,mBAAmB;EACnBC,SAAS;EACTC;AACS,CAAC,EAAE;EACZ,MAAM;IAAEC;EAAU,CAAC,GAAG,IAAAC,+BAAgB,EAAC,CAAC;EACxC,MAAMC,cAAc,GAAG,IAAAC,6CAAiB,EAAC,CAAC;EAC1C,MAAMC,mCAAmC,GAAG,IAAAD,6CAAiB,EAACE,SAAS,EAAE,IAAI,CAAC;EAC9E,MAAMC,eAAe,GAAGzB,iBAAiB,CAACC,cAAc,CAAC;EACzD,MAAMyB,WAAW,GAAGD,eAAe,GAAGE,0BAAW,CAACC,UAAU,CAACH,eAAe,CAAC,GAAGD,SAAS;EACzF,MAAMK,sBAAsB,GAAGd,IAAI,IAAIM,cAAc;EACrD,MAAMS,aAAa,GAAG,IAAAC,gBAAO,EAAC,MAAM,IAAAC,iBAAO,EAAC,IAAAC,iBAAO,EAACxB,YAAY,CAACyB,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,CAACzB,YAAY,CAAC,CAAC;EACxG,MAAM0B,cAAc,GAAG,IAAAJ,gBAAO,EAAC,MAAM,IAAAK,iBAAO,EAAC,IAAAH,iBAAO,EAACtB,iBAAiB,CAACuB,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAACvB,iBAAiB,CAAC,CAAC;EAChH,MAAM0B,aAAa,GAAG,IAAAN,gBAAO,EAC3B,MACE,IAAAE,iBAAO,EACLf,gBAAgB,CACboB,OAAO,CAAC,CAAC,CACTC,IAAI,CAACC,MAAM,CAAC,CACZC,GAAG,CAAC,CAAC,GAAGC,YAAY,CAAC,KAAKA,YAAY,CAC3C,CAAC,EACH,CAACxB,gBAAgB,CACnB,CAAC;EACD,MAAMyB,gBAAgB,GAAG3B,mBAAmB,GAAG,CAAC,IAAI,CAAC,CAAC;EACtD,MAAM4B,KAAK,GAAG,IAAAC,qCAAQ,EAAC,CAAC;EACxB,MAAMC,gBAAgB,GAAGF,KAAK,CAAC9E,GAAG,CAAC,SAAS,CAAC;EAC7C,MAAMyC,IAAI,GAAGuC,gBAAgB,GAAG,qBAAqB,GAAGtC,aAAa;EAErE,MAAMuC,oBAAoB,GAAGC,mBAAmB,CAC9CzC,IAAI,EACJmB,WAAW,EAAEuB,QAAQ,CAAC,CAAC,IAAI1B,mCAAmC,EAC9DoB,gBAAgB,EAChB7B,YACF,CAAC;EAED,MAAMoC,SAAS,gBACbvH,MAAA,GAAAyB,OAAA,CAAA+F,aAAA;IAAK7C,SAAS,EAAE8C,qBAAM,CAACC;EAAU,GAC9BxC,SAAS,iBACRlF,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAAAxH,MAAA,GAAAyB,OAAA,CAAAkG,QAAA,qBACE3H,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACI,uBAAuB;IACtBhD,IAAI,EAAEC,aAAc;IACpBgD,cAAc,EAAE9C,iBAAkB;IAClCgB,WAAW,EAAEA,WAAW,EAAEuB,QAAQ,CAAC,CAAC,IAAI5B,cAAe;IACvDP,YAAY,EAAEiC,oBAAqB;IACnCJ,gBAAgB,EAAEA,gBAAiB;IACnC1B,SAAS,EAAEA;IACX;EAAA,CACD,CAAC,EACDkB,cAAc,CAACM,GAAG,CAAC,CAAC;IAAEgB;EAAK,CAAC,KAAKA,IAAI,CAAC,EACtC,CAACtC,SAAS,iBAAIxF,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAAC7G,eAAA,GAAAoH,YAAY;IAACpD,SAAS,EAAE8C,qBAAM,CAACO,YAAa;IAACC,SAAS,EAAE9B;EAAc,CAAE,CACxF,CAED,CACN;EAED,oBACEnG,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACpH,eAAA,GAAA8H,MAAM,qBACLlI,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACpH,eAAA,GAAA+H,KAAK;IACJ/C,IAAI,EAAE,GAAGc,sBAAsB,IAAK;IACpCkC,OAAO,eACLpI,MAAA,GAAAyB,OAAA,CAAA+F,aAAA;MAAK7C,SAAS,EAAE,IAAA0D,qBAAU,EAACZ,qBAAM,CAACa,MAAM,EAAE9C,SAAS,IAAIiC,qBAAM,CAACc,aAAa,EAAE5D,SAAS;IAAE,gBACtF3E,MAAA,GAAAyB,OAAA,CAAA+F,aAAA;MAAK7C,SAAS,EAAE,IAAA0D,qBAAU,EAACZ,qBAAM,CAACe,QAAQ,EAAEhD,SAAS,IAAIiC,qBAAM,CAACgB,eAAe;IAAE,gBAC/EzI,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACrG,QAAA,GAAAuH,kBAAkB;MAACjE,cAAc,EAAEA,cAAe;MAACC,UAAU,EAAEA;IAAW,CAAE,CAC1E,CAAC,EACLc,SAAS,IACRkB,aAAa,CAACI,GAAG,CAAEC,YAAY,iBAC7B/G,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACmB,qBAAqB,EAAAzE,QAAA;MAAC0E,GAAG,EAAE,OAAO7B,YAAY,CAAC8B,KAAK;IAAG,GAAK9B,YAAY,CAAC+B,KAAK,CAAG,CACnF,CAAC,EACH,CAAC7D,aAAa,iBAAIjF,MAAA,GAAAyB,OAAA,CAAA+F,aAAA;MAAK7C,SAAS,EAAE8C,qBAAM,CAACC;IAAU,GAAEH,SAAe,CAClE;EACN,CACF,CACK,CAAC;AAEb;AAyCO,SAASF,mBAAmBA,CACjCzC,IAAY,EACZmB,WAAoB,EACpBiB,gBAAyB,GAAG,CAAC,CAAC,EAC9B7B,YAA+B,EAC/B4D,gBAA0B,EACJ;EACtB,OAAOC,gBAAK,CAACC,WAAW,CACrBC,MAAM,IAAK;IACV,MAAM;MAAEC,IAAI;MAAEC;IAAY,CAAC,GAAGF,MAAM,IAAI,CAAC,CAAC;IAC1C,MAAMG,YAAY,GAAG;MACnBC,UAAU,EAAArG,aAAA,CAAAA,aAAA,KACL+D,gBAAgB;QACnBuC,GAAG,EAAAtG,aAAA,CAAAA,aAAA,KACE+D,gBAAgB,CAACuC,GAAG;UACvBC,KAAK,EAAEJ,WAAW,GAAG,CAAC,GAAGvD;QAAS;MACnC,EACF;MACDsD,IAAI,EAAEJ,gBAAgB,IAAII,IAAI;MAC9BM,kBAAkB,EAAEtE;IACtB,CAAC;IACD,MAAM;MACJuE,SAAS;MACTC,OAAO,EAAEC,gBAAgB;MACzBC,aAAa,GAAG,CAAC;IACnB,CAAC,GAAG,IAAAC,4BAAiB,EAAClF,IAAI,EAAEmB,WAAW,EAAEsD,YAAY,CAAC;IACtD,MAAMU,IAAI,GAAGF,aAAa,EAAEE,IAAI;IAChC,MAAMJ,OAAO,GAAGX,gBAAK,CAAC5C,OAAO,CAC3B,MAAMwD,gBAAgB,IAAIb,gBAAgB,IAAIc,aAAa,CAACF,OAAO,EACnE,CAACC,gBAAgB,EAAEb,gBAAgB,EAAEc,aAAa,CAACF,OAAO,CAC5D,CAAC;IAED,MAAMK,KAAK,GAAG,IAAA5D,gBAAO,EAAC,MAAM;MAC1B,OAAO,CAAC2D,IAAI,IAAI,EAAE,EAAElH,MAAM,CAAE0G,GAAG,IAAK,CAACA,GAAG,CAACU,GAAG,CAAC,CAACnD,GAAG,CAAEoD,IAAI,IAAAjH,aAAA,CAAAA,aAAA,KAAWiH,IAAI;QAAEC,OAAO,EAAED,IAAI,CAACE;MAAI,EAAG,CAAC;IAChG,CAAC,EAAE,CAACL,IAAI,CAAC,CAAC;IAEV,MAAMM,IAAI,GAAG,IAAAjE,gBAAO,EAAC,MAAM;MACzB,MAAMkE,SAAS,GAAG,IAAIC,GAAG,CAA6B,CAAC;MACvD,CAACR,IAAI,IAAI,EAAE,EACRlH,MAAM,CAAE0G,GAAG,IAAKA,GAAG,CAACU,GAAG,CAAC,CACxB7G,OAAO,CAAE6G,GAAG,IAAK;QAChBK,SAAS,CAAClI,GAAG,CAAC6H,GAAG,EAAEA,GAAG,EAAYA,GAAG,CAAC;MACxC,CAAC,CAAC;MACJ,OAAO,IAAAO,iBAAO,EACZ,CAACd,SAAS,EAAEW,IAAI,EAAE1D,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE8D,OAAO,CAAC,CAAC,CAAC3D,GAAG,CAAEmD,GAAG,IAAKK,SAAS,CAACnI,GAAG,CAAC8H,GAAG,CAACE,OAAO,CAACA,OAAO,CAAC,CAC9F,CAAC,CAACrD,GAAG,CAAEmD,GAAG,IAAAhH,aAAA,CAAAA,aAAA,KAAWgH,GAAG;QAAEE,OAAO,EAAEF,GAAG,CAACA;MAAa,EAAG,CAAC;IAC1D,CAAC,EAAE,CAACF,IAAI,CAAC,CAAC;IAEV,OAAO;MACLJ,OAAO;MACPe,EAAE,EAAEhB,SAAS,EAAEgB,EAAE;MACjBC,WAAW,EAAEjB,SAAS,EAAEiB,WAAW;MACnCC,aAAa,EAAElB,SAAS,EAAEmB,MAAM;MAChCC,cAAc,EAAEpB,SAAS,EAAES,OAAO;MAClCH,KAAK;MACLK,IAAI;MACJU,WAAW,EAAErB,SAAS,EAAEqB;IAC1B,CAAC;EACH,CAAC,EACD,CAAChF,WAAW,EAAEgD,gBAAgB,EAAE/B,gBAAgB,EAAEpC,IAAI,CACxD,CAAC;AACH;AAEO,MAAMoG,yBAAuF,GAAIlC,KAAK,IAAK;EAChH,OAAQI,MAAM,IAAK;IACjB,MAAM;MAAEC,IAAI;MAAEgB,OAAO,EAAEc;IAAS,CAAC,GAAG/B,MAAM,IAAI,CAAC,CAAC;IAChD,MAAM;MAAEc,KAAK;MAAEK,IAAI;MAAES,cAAc;MAAEnB;IAAQ,CAAC,GAAGb,KAAK,CAAC3D,YAAY,GAAG;MAAEgE,IAAI;MAAEuB,EAAE,EAAE5B,KAAK,CAAC/C;IAAY,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5G,MAAMoE,OAAO,GAAGc,QAAQ,IAAIH,cAAc;IAC1C,MAAMI,KAAK,GAAGlC,gBAAK,CAAC5C,OAAO,CAAC,MAAM3F,MAAM,CAAD,CAAC,CAAC0K,KAAK,CAAChB,OAAO,CAAC,EAAE,CAACR,OAAO,EAAEQ,OAAO,CAAC,CAAC;IAC5E,IAAIe,KAAK,EAAE;MACT,OAAOlC,gBAAK,CAAC5C,OAAO,CAAC,MAAMiE,IAAI,EAAEe,IAAI,CAAEnB,GAAG,IAAKA,GAAG,CAACA,GAAG,KAAKE,OAAO,CAAC,EAAE,CAACR,OAAO,EAAEU,IAAI,EAAElH,MAAM,EAAEgH,OAAO,CAAC,CAAC;IACxG;IACA,OAAOnB,gBAAK,CAAC5C,OAAO,CAAC,MAAM4D,KAAK,EAAEoB,IAAI,CAAElB,IAAI,IAAKA,IAAI,CAACC,OAAO,KAAKA,OAAO,CAAC,EAAE,CAACR,OAAO,EAAEK,KAAK,EAAE7G,MAAM,EAAEgH,OAAO,CAAC,CAAC;EAChH,CAAC;AACH,CAAC;AAACkB,OAAA,CAAAL,yBAAA,GAAAA,yBAAA;AAEK,SAASpD,uBAAuBA,CAACkB,KAAmC,EAAE;EAC3E,MAAMwC,wBAAwB,GAAArI,aAAA,CAAAA,aAAA,KACzB6F,KAAK;IACRyC,QAAQ,EAAEzC,KAAK,CAACyC,QAAQ,IAAIC,sBAAe;IAC3CC,eAAe,EAAAxI,aAAA,CAAAA,aAAA,KACV6F,KAAK,CAAC2C,eAAe;MACxBC,kBAAkB,EAAE5C,KAAK,EAAE2C,eAAe,EAAEC,kBAAkB,IAAI;IAAI;EACvE,EACF;EAED,MAAMC,WAAW,GAAGX,yBAAyB,CAACM,wBAAwB,CAAC;EAEvE,MAAM;IAAEC,QAAQ;IAAE1D,cAAc;IAAElD,SAAS;IAAE8G,eAAe;IAAE7G;EAAK,CAAC,GAAG0G,wBAAwB;EAC/F,MAAM;IACJ3B,OAAO;IACPe,EAAE;IACFL,IAAI;IACJL,KAAK;IACLa,MAAM;IACNF,WAAW;IACXG,cAAc,EAAEc;EAClB,CAAC,GAAG9C,KAAK,CAAC3D,YAAY,GAAG;IAAEiE,WAAW,EAAE;EAAK,CAAC,CAAC,IAAI,CAAC,CAAC;EACrD,MAAMyC,QAAQ,GAAG,IAAAC,kCAAW,EAAC,CAAC;EAC9B,MAAM;IAAEC;EAAW,CAAC,GAAGR,QAAQ,CAAC,CAAC;EACjC,MAAMS,KAAK,GAAGtB,EAAE,GAAGqB,UAAU,EAAEE,qBAAqB,CAACvB,EAAS,CAAC,EAAE7H,MAAM,CAAEqJ,IAAI,IAAK,CAACA,IAAI,CAACxB,EAAE,CAACyB,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE;EAClH,MAAMC,UAAU,GACdL,UAAU,EAAEK,UAAU,EAAE1B,EAAE,IAAI,CAACqB,UAAU,EAAEK,UAAU,EAAE1B,EAAE,CAACyB,SAAS,CAAC,CAAC,GAAGJ,UAAU,CAACK,UAAU,GAAGvG,SAAS;EAE3G,MAAMwG,WAAW,GAAGzH,IAAI,KAAK,6BAA6B;EAE1D,MAAM0H,KAAK,GAAGjC,IAAI,EAAElH,MAAM,KAAK,CAAC,IAAI6G,KAAK,EAAE7G,MAAM,KAAK,CAAC;EAEvD,MAAMoJ,YAAY,GAAGF,WAAW,IAAI,CAACC,KAAK,KAAK,CAACF,UAAU,IAAIL,UAAU,EAAES,oBAAoB,CAAC,CAAC,CAAC;EAEjG,MAAM1B,cAAc,GAClBuB,WAAW,IAAI,CAACC,KAAK,IAAI,CAACT,QAAQ,EAAEY,MAAM,CAACC,QAAQ,CAAC,SAAS,CAAC,GAAG,WAAW,GAAId,eAAe,IAAI,EAAG;EAExG,MAAMtG,SAAS,GAAGwD,KAAK,CAACxD,SAAS;EAEjC,MAAMqH,kBAAkD,GAAG3D,gBAAK,CAAC5C,OAAO,CAAC,MAAM;IAC7E,OAAOsE,EAAE,GACL;MACEA,EAAE;MACFC,WAAW,EAAEA,WAAW,IAAI,EAAE;MAC9BE,MAAM;MACN+B,OAAO,EAAE;QAAER,UAAU;QAAES,cAAc,EAAE,CAAClC;MAAY,CAAC;MACrDrF;IACF,CAAC,GACDO,SAAS;EACf,CAAC,EAAE,CAAC6E,EAAE,EAAEC,WAAW,EAAEE,MAAM,EAAEuB,UAAU,EAAE9G,SAAS,CAAC,CAAC;EACpD,MAAMwH,OAAO,GAAGC,iBAAiB,CAAClF,cAAc,EAAE8E,kBAAkB,CAAC;EACrE,MAAMK,UAAU,GAAGF,OAAO,EAAE3J,MAAM,GAAG,CAAC;EAEtC,oBACEnD,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAAAxH,MAAA,GAAAyB,OAAA,CAAAkG,QAAA,QACGE,cAAc,IAAI6C,EAAE,IAAIsC,UAAU,iBACjChN,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAAC1G,qBAAA,GAAAmM,cAAc;IACbC,QAAQ,EAAC,YAAY;IACrBvI,SAAS,EAAE,IAAA0D,qBAAU,EAACZ,qBAAM,CAAC0F,MAAM,EAAE1F,qBAAM,CAACO,YAAY,CAAE;IAC1DoF,SAAS,EAAE3F,qBAAM,CAAC4F,eAAgB;IAClCC,IAAI,eAAEtN,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACxG,sBAAA,GAAAsM,IAAkB;MAACR,OAAO,EAAEA,OAAQ;MAACS,aAAa,EAAE7C,EAAE,CAAC8C;IAAK,CAAE;EAAE,CACxE,CACF,eACDxN,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAAC9G,YAAA,GAAA+M,eAAe;IACdzB,KAAK,EAAEA,KAAM;IACbrC,OAAO,EAAEA,OAAQ;IACjBvC,oBAAoB,EAAE0B,KAAK,CAAC3D,YAAa;IACzCuI,eAAe,EAAE,CAACpB,KAAM;IACxBqB,oBAAoB,EAAEhC,WAAY;IAClCY,YAAY,EAAEA,YAAa;IAC3BzB,cAAc,EAAEA,cAAe;IAC/BF,aAAa,EAAEC,MAAO;IACtB+C,WAAW,EAAExB,UAAW;IACxBzH,SAAS,EAAE,IAAA0D,qBAAU,EAACZ,qBAAM,CAACoG,eAAe,EAAElJ,SAAS,CAAE;IACzDmJ,aAAa,EAAEzB,WAAW,GAAG5E,qBAAM,CAACsG,6BAA6B,GAAGtG,qBAAM,CAACuG,oBAAqB;IAChGC,iBAAiB,EAAExC,eAAe,EAAEwC,iBAAkB;IACtDvC,kBAAkB,EAAED,eAAe,EAAEC;EAAmB,CACzD,CACD,CAAC;AAEP;AAEA,SAASqB,iBAAiBA,CACxBlF,cAAkC,EAClCqG,kBAAuC,EACtB;EACjB,OAAO,IAAA9H,gBAAO,EACZ,MACE,IAAAE,iBAAO,EAACuB,cAAc,EAAEtB,MAAM,CAAC,CAAC,CAAC,CAC9BO,GAAG,CAAEqH,MAAM,IAAK;IACf,IAAI,CAACD,kBAAkB,EAAE,OAAOrI,SAAS;IACzC,OAAOsI,MAAM,GAAGD,kBAAkB,CAAC;EACrC,CAAC,CAAC,CACDrL,MAAM,CAAEuL,CAAC,IAAK,CAAC,CAACA,CAAC,IAAIA,CAAC,CAACC,SAAS,IAAID,CAAC,CAACE,KAAK,CAAoB,EACpE,CAACzG,cAAc,EAAEqG,kBAAkB,CACrC,CAAC;AACH;AAEA,SAASrH,MAAMA,CAAC,GAAG;EAAEgC,KAAK,EAAE0F;AAAM,CAAC,CAAsB,EAAE,GAAG;EAAE1F,KAAK,EAAE2F;AAAO,CAAC,CAAsB,EAAE;EACrG,OAAO,CAACD,KAAK,IAAI,CAAC,KAAKC,MAAM,IAAI,CAAC,CAAC;AACrC;AAEA,SAAS7F,qBAAqBA,CAAC8F,aAA6B,EAAE;EAC5D,oBACEzO,MAAA,GAAAyB,OAAA,CAAA+F,aAAA,CAACnG,UAAA,GAAAqN,SAAS,EAAAxK,QAAA,KACJuK,aAAa;IACjBE,KAAK,EAAA1L,aAAA,CAAAA,aAAA,KAAOwL,aAAa,CAACE,KAAK;MAAEC,MAAM,EAAE;IAAM,EAAG;IAClDjK,SAAS,EAAE,IAAA0D,qBAAU,EAACoG,aAAa,EAAE9J,SAAS;EAAE,IAE/C8J,aAAa,EAAEI,QACP,CAAC;AAEhB","ignoreList":[]}
@@ -9,6 +9,27 @@
9
9
  min-width: 0;
10
10
  }
11
11
 
12
+ .topBarMinimal {
13
+ @media screen and (max-width: $br-md) {
14
+ // The breadcrumb owns the remaining mobile space, while this menu keeps the intrinsic width
15
+ // of its pinned actions and right-side controls.
16
+ flex: 0 0 auto;
17
+ width: auto;
18
+
19
+ // Pinned actions already include their own touch-target spacing, so the desktop gutter before
20
+ // version controls is unnecessary here and can be returned to the component breadcrumb.
21
+ .rightSide {
22
+ padding-left: 0;
23
+
24
+ // Keep the established nested right-side structure for non-minimal consumers, including
25
+ // custom RightNode integrations, but remove its extra layout box where mobile space is scarce.
26
+ > .rightSide {
27
+ display: contents;
28
+ }
29
+ }
30
+ }
31
+ }
32
+
12
33
  .leftSide {
13
34
  display: flex;
14
35
  align-items: center;
@@ -17,48 +38,51 @@
17
38
  min-width: 0;
18
39
  }
19
40
 
20
- // Minimal mode, mobile: one 46px row can't fit breadcrumb + nav tabs + pinned widgets +
21
- // version dropdown, and since only the nav can shrink, ResponsiveNavbar collapses every tab
22
- // (Overview / Preview) into an overflow dropdown that itself gets clipped — leaving no way to
23
- // reach the preview. `display: contents` promotes this bar's children into the workspace
24
- // top bar's wrapping flex row (see workspace.module.scss), producing two rows:
25
- // back + breadcrumb + pinned widgets + right-side actions, then the nav tabs at full width.
26
- .topBarMinimal {
41
+ .leftSideMinimal {
27
42
  @media screen and (max-width: $br-md) {
28
- display: contents;
29
-
30
- > .leftSide {
31
- order: 10;
32
- flex: 1 0 100%;
33
- box-sizing: border-box;
34
- height: 40px;
35
- overflow-x: auto;
36
- padding: 0 8px 0 4px;
37
-
38
- // ResponsiveNavbar hides any tab that doesn't fit its container and reserves extra room
39
- // for its "…" overflow button. Sizing the nav to its content makes the width check always
40
- // pass (the row scrolls instead), and the now-useless overflow button is dropped so its
41
- // reserved width can't hide the last tab.
42
- nav {
43
- min-width: max-content;
44
-
45
- > div:last-child {
46
- display: none;
47
- }
48
- }
49
- }
43
+ // The compact More menu owns its intrinsic width; pinned actions follow as siblings.
44
+ flex: 0 0 auto;
45
+ }
46
+ }
50
47
 
51
- // the pinned widgets carry an inline `height: 100%`, which in the wrapped two-row bar
52
- // resolves against the full (two-row) height and inflates the first row until the nav row
53
- // is pushed outside the bar, over the page content — pin every first-row item to the bar
54
- // height instead
55
- > :not(.leftSide) {
56
- height: 46px !important;
57
- }
48
+ .minimalMoreNav {
49
+ display: none;
58
50
 
59
- > .rightSide {
60
- margin-left: auto;
61
- }
51
+ @media screen and (max-width: $br-md) {
52
+ display: flex;
53
+ align-items: center;
54
+ height: 100%;
55
+ }
56
+ }
57
+
58
+ .minimalMoreButton {
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: center;
62
+ padding: 8px 16px;
63
+ border-radius: 8px;
64
+ cursor: pointer;
65
+
66
+ &:hover {
67
+ background-color: var(--bit-bg-heavy);
68
+ }
69
+
70
+ > img {
71
+ width: 16px;
72
+ }
73
+ }
74
+
75
+ .minimalMenuItem {
76
+ padding: 0;
77
+
78
+ > * {
79
+ width: 100%;
80
+ }
81
+ }
82
+
83
+ .hideMinimalMobileNav {
84
+ @media screen and (max-width: $br-md) {
85
+ display: none;
62
86
  }
63
87
  }
64
88
 
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/component",
3
- "version": "1.0.1127",
3
+ "version": "1.0.1128",
4
4
  "homepage": "https://bit.cloud/teambit/component/component",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.component",
8
8
  "name": "component",
9
- "version": "1.0.1127"
9
+ "version": "1.0.1128"
10
10
  },
11
11
  "dependencies": {
12
12
  "@teambit/any-fs": "0.0.5",
@@ -73,6 +73,8 @@
73
73
  "@teambit/design.ui.styles.ellipsis": "0.0.357",
74
74
  "@teambit/envs.ui.env-icon": "0.0.508",
75
75
  "@teambit/explorer.ui.command-bar": "2.0.19",
76
+ "@teambit/design.inputs.dropdown": "1.3.3",
77
+ "@teambit/design.inputs.selectors.menu-item": "1.1.0",
76
78
  "@teambit/design.navigation.responsive-navbar": "0.0.8",
77
79
  "@teambit/workspace.ui.use-workspace-mode": "0.0.3",
78
80
  "@teambit/base-ui.layout.breakpoints": "1.0.0",
@@ -80,18 +82,18 @@
80
82
  "@teambit/lanes.hooks.use-lanes": "0.0.294",
81
83
  "@teambit/lanes.ui.models.lanes-model": "0.0.233",
82
84
  "@teambit/ui-foundation.ui.use-box.dropdown": "0.0.151",
83
- "@teambit/aspect-loader": "1.0.1127",
84
- "@teambit/dependency-resolver": "1.0.1127",
85
- "@teambit/objects": "0.0.634",
86
- "@teambit/graphql": "1.0.1127",
87
- "@teambit/command-bar": "1.0.1127",
88
- "@teambit/preview": "1.0.1127",
89
- "@teambit/pubsub": "1.0.1127",
90
- "@teambit/react-router": "1.0.1127",
91
- "@teambit/ui": "1.0.1127",
92
- "@teambit/compositions": "1.0.1127",
93
- "@teambit/deprecation": "1.0.1127",
94
- "@teambit/envs": "1.0.1127"
85
+ "@teambit/aspect-loader": "1.0.1128",
86
+ "@teambit/dependency-resolver": "1.0.1128",
87
+ "@teambit/objects": "0.0.635",
88
+ "@teambit/graphql": "1.0.1128",
89
+ "@teambit/command-bar": "1.0.1128",
90
+ "@teambit/preview": "1.0.1128",
91
+ "@teambit/pubsub": "1.0.1128",
92
+ "@teambit/react-router": "1.0.1128",
93
+ "@teambit/ui": "1.0.1128",
94
+ "@teambit/compositions": "1.0.1128",
95
+ "@teambit/deprecation": "1.0.1128",
96
+ "@teambit/envs": "1.0.1128"
95
97
  },
96
98
  "devDependencies": {
97
99
  "@types/lodash": "4.14.165",
@@ -1,7 +1,9 @@
1
1
  import React, { useMemo } from 'react';
2
2
  import classnames from 'classnames';
3
3
  import { ResponsiveNavbar } from '@teambit/design.navigation.responsive-navbar';
4
- import type { TabProps } from '@teambit/design.navigation.responsive-navbar';
4
+ import type { Tab, TabProps } from '@teambit/design.navigation.responsive-navbar';
5
+ import { Dropdown } from '@teambit/design.inputs.dropdown';
6
+ import { MenuItem } from '@teambit/design.inputs.selectors.menu-item';
5
7
  import { useWorkspaceMode } from '@teambit/workspace.ui.use-workspace-mode';
6
8
  import { TopBarNav } from '../top-bar-nav';
7
9
  import styles from './menu.module.scss';
@@ -89,17 +91,47 @@ export function CollapsibleMenuNav({
89
91
  });
90
92
 
91
93
  return (
92
- <ResponsiveNavbar
93
- navClassName={classnames(styles.tab, className)}
94
- secondaryNavClassName={secondaryNavClassName}
95
- style={{ width: '100%', height: '100%' }}
96
- priority="none"
97
- tabs={links}
98
- defaultActiveIndex={activeTabIndex}
99
- alwaysShowActiveTab={alwaysShowActiveTab}
100
- >
101
- {children}
102
- </ResponsiveNavbar>
94
+ <>
95
+ {isMinimal && <MinimalMenuNav links={links} secondaryNavClassName={secondaryNavClassName} />}
96
+ <ResponsiveNavbar
97
+ navClassName={classnames(styles.tab, isMinimal && styles.hideMinimalMobileNav, className)}
98
+ secondaryNavClassName={secondaryNavClassName}
99
+ style={{ width: '100%', height: '100%' }}
100
+ priority="none"
101
+ tabs={links}
102
+ defaultActiveIndex={activeTabIndex}
103
+ alwaysShowActiveTab={alwaysShowActiveTab}
104
+ >
105
+ {children}
106
+ </ResponsiveNavbar>
107
+ </>
108
+ );
109
+ }
110
+
111
+ function MinimalMenuNav({ links, secondaryNavClassName }: { links: Tab[]; secondaryNavClassName?: string }) {
112
+ if (links.length === 0) return null;
113
+
114
+ return (
115
+ <div className={styles.minimalMoreNav}>
116
+ <Dropdown
117
+ placeholderContent={
118
+ <div className={styles.minimalMoreButton} aria-label="More component sections">
119
+ <img src="https://static.bit.dev/bit-icons/more-h.svg" alt="" />
120
+ </div>
121
+ }
122
+ dropClass={secondaryNavClassName}
123
+ position="bottom-end"
124
+ placeholderBorder={false}
125
+ clickToggles
126
+ margin={8}
127
+ >
128
+ {links.map((link, index) => (
129
+ <MenuItem className={styles.minimalMenuItem} key={`minimal-dropdown-${index}`}>
130
+ <TopBarNavComponent menuItemProps={link.tabProps?.menuItemProps} isInMenu />
131
+ </MenuItem>
132
+ ))}
133
+ </Dropdown>
134
+ </div>
103
135
  );
104
136
  }
105
137
 
@@ -9,6 +9,27 @@
9
9
  min-width: 0;
10
10
  }
11
11
 
12
+ .topBarMinimal {
13
+ @media screen and (max-width: $br-md) {
14
+ // The breadcrumb owns the remaining mobile space, while this menu keeps the intrinsic width
15
+ // of its pinned actions and right-side controls.
16
+ flex: 0 0 auto;
17
+ width: auto;
18
+
19
+ // Pinned actions already include their own touch-target spacing, so the desktop gutter before
20
+ // version controls is unnecessary here and can be returned to the component breadcrumb.
21
+ .rightSide {
22
+ padding-left: 0;
23
+
24
+ // Keep the established nested right-side structure for non-minimal consumers, including
25
+ // custom RightNode integrations, but remove its extra layout box where mobile space is scarce.
26
+ > .rightSide {
27
+ display: contents;
28
+ }
29
+ }
30
+ }
31
+ }
32
+
12
33
  .leftSide {
13
34
  display: flex;
14
35
  align-items: center;
@@ -17,48 +38,51 @@
17
38
  min-width: 0;
18
39
  }
19
40
 
20
- // Minimal mode, mobile: one 46px row can't fit breadcrumb + nav tabs + pinned widgets +
21
- // version dropdown, and since only the nav can shrink, ResponsiveNavbar collapses every tab
22
- // (Overview / Preview) into an overflow dropdown that itself gets clipped — leaving no way to
23
- // reach the preview. `display: contents` promotes this bar's children into the workspace
24
- // top bar's wrapping flex row (see workspace.module.scss), producing two rows:
25
- // back + breadcrumb + pinned widgets + right-side actions, then the nav tabs at full width.
26
- .topBarMinimal {
41
+ .leftSideMinimal {
27
42
  @media screen and (max-width: $br-md) {
28
- display: contents;
29
-
30
- > .leftSide {
31
- order: 10;
32
- flex: 1 0 100%;
33
- box-sizing: border-box;
34
- height: 40px;
35
- overflow-x: auto;
36
- padding: 0 8px 0 4px;
37
-
38
- // ResponsiveNavbar hides any tab that doesn't fit its container and reserves extra room
39
- // for its "…" overflow button. Sizing the nav to its content makes the width check always
40
- // pass (the row scrolls instead), and the now-useless overflow button is dropped so its
41
- // reserved width can't hide the last tab.
42
- nav {
43
- min-width: max-content;
44
-
45
- > div:last-child {
46
- display: none;
47
- }
48
- }
49
- }
43
+ // The compact More menu owns its intrinsic width; pinned actions follow as siblings.
44
+ flex: 0 0 auto;
45
+ }
46
+ }
50
47
 
51
- // the pinned widgets carry an inline `height: 100%`, which in the wrapped two-row bar
52
- // resolves against the full (two-row) height and inflates the first row until the nav row
53
- // is pushed outside the bar, over the page content — pin every first-row item to the bar
54
- // height instead
55
- > :not(.leftSide) {
56
- height: 46px !important;
57
- }
48
+ .minimalMoreNav {
49
+ display: none;
58
50
 
59
- > .rightSide {
60
- margin-left: auto;
61
- }
51
+ @media screen and (max-width: $br-md) {
52
+ display: flex;
53
+ align-items: center;
54
+ height: 100%;
55
+ }
56
+ }
57
+
58
+ .minimalMoreButton {
59
+ display: flex;
60
+ align-items: center;
61
+ justify-content: center;
62
+ padding: 8px 16px;
63
+ border-radius: 8px;
64
+ cursor: pointer;
65
+
66
+ &:hover {
67
+ background-color: var(--bit-bg-heavy);
68
+ }
69
+
70
+ > img {
71
+ width: 16px;
72
+ }
73
+ }
74
+
75
+ .minimalMenuItem {
76
+ padding: 0;
77
+
78
+ > * {
79
+ width: 100%;
80
+ }
81
+ }
82
+
83
+ .hideMinimalMobileNav {
84
+ @media screen and (max-width: $br-md) {
85
+ display: none;
62
86
  }
63
87
  }
64
88
 
package/ui/menu/menu.tsx CHANGED
@@ -169,7 +169,7 @@ export function ComponentMenu({
169
169
  path={`${resolvedComponentIdStr}/*`}
170
170
  element={
171
171
  <div className={classnames(styles.topBar, isMinimal && styles.topBarMinimal, className)}>
172
- <div className={styles.leftSide}>
172
+ <div className={classnames(styles.leftSide, isMinimal && styles.leftSideMinimal)}>
173
173
  <CollapsibleMenuNav navigationSlot={navigationSlot} widgetSlot={widgetSlot} />
174
174
  </div>
175
175
  {isMinimal &&