Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 6 additions & 8 deletions 14 components/ui/avatar/org-avatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,13 @@ export function OrgAvatar({
{...rest}
>
{profileImageWithParams && (
<img
src={profileImageWithParams}
className={classNames(styles.avatarImg, imgClassName)}
/>
<img src={profileImageWithParams} className={classNames(styles.avatarImg, imgClassName)} />
Comment on lines 39 to +40
)}
{!profileImage && (
<span className={styles.defaultAvatar}>
<i className="bitcon-organization" style={{ fontSize: `${fontSize}px`, lineHeight: `${size}px` }} />
</span>
Comment on lines 39 to +45
)}
{!profileImage &&
<span className={styles.defaultAvatar}>
<i className="bitcon-organization" style={{ fontSize: `${fontSize}px`, lineHeight: `${size}px` }} />
</span>}
{children}
</div>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,13 @@ export function CodeCompareView({
fileIconSlot,
widgets,
}: CodeCompareViewProps) {
const monacoRef = useRef<{
editor?: any;
monaco?: Monaco;
}>();
const monacoRef = useRef<
| {
editor?: any;
monaco?: Monaco;
}
| undefined
>(undefined);
const {
baseId,
compareId,
Expand Down
2 changes: 1 addition & 1 deletion 2 components/ui/code-view/code-view.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ function joinPaths(base: string, relative: string) {
return newPath.startsWith('/') ? newPath : `/${newPath}`;
}

function useInViewport(ref: React.RefObject<HTMLElement>) {
function useInViewport(ref: React.RefObject<HTMLElement | null>) {
const [isInViewport, setIsInViewport] = React.useState(false);

React.useEffect(() => {
Expand Down
2 changes: 1 addition & 1 deletion 2 components/ui/time-ago/time-ago.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export function TimeAgo({ date, tooltip, className, ...rest }: TimeAgoProps) {
return timeAgo(date);
}, [date, refreshIdx]);

const wrapWithTooltip = (element: JSX.Element) => {
const wrapWithTooltip = (element: React.JSX.Element) => {
if (tooltip === undefined) return element;

return (
Expand Down
4 changes: 2 additions & 2 deletions 4 e2e/harmony/dependency-resolver.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@ describe('dependency-resolver extension', function () {
barFooOutput = helper.command.showComponentParsed('bar/foo');
});
it('should have the updated dependencies for bar/foo from the env', function () {
expect(barFooOutput.peerPackageDependencies).to.have.property('react', '^16.8.0 || ^17.0.0');
expect(barFooOutput.devPackageDependencies).to.have.property('@types/react', '^17.0.8');
expect(barFooOutput.peerPackageDependencies).to.have.property('react', '^17.0.0 || ^18.0.0 || ^19.0.0');
expect(barFooOutput.devPackageDependencies).to.have.property('@types/react', '^19.0.0');
});
});
describe('policies added by custom env', function () {
Expand Down
8 changes: 4 additions & 4 deletions 8 e2e/harmony/root-components.e2e.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1457,7 +1457,7 @@ module.exports.default = {
'react/package.json',
])
).version
).to.match(/^17\./);
).to.match(/^19\./);
expect(
fs.readJsonSync(
resolveFrom(path.join(scopeAspectsCapsulesRootDir, `${helper.scopes.remote}_main-aspect@0.0.2`), [
Expand All @@ -1466,7 +1466,7 @@ module.exports.default = {
'react/package.json',
])
).version
).to.match(/^17\./);
).to.match(/^19\./);
});
});
describe('using pnpm', () => {
Expand All @@ -1492,7 +1492,7 @@ module.exports.default = {
'react/package.json',
])
).version
).to.match(/^17\./);
).to.match(/^19\./);
expect(
fs.readJsonSync(
resolveFrom(path.join(scopeAspectsCapsulesRootDir, `${helper.scopes.remote}_main-aspect@0.0.2`), [
Expand All @@ -1501,7 +1501,7 @@ module.exports.default = {
'react/package.json',
])
).version
).to.match(/^17\./);
).to.match(/^19\./);
});
});
after(() => {
Expand Down
4 changes: 2 additions & 2 deletions 4 scopes/cloud/cloud/cloud.ui.runtime.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ export class CloudUI {
label: 'Bit Community Slack',
link: 'https://join.slack.com/t/bit-dev-community/shared_invite/zt-29pmawrp1-ehfEzYbQyuAC3CNA_jYPvA',
},
],
] as any,
}}
/>
);
Expand Down Expand Up @@ -160,7 +160,7 @@ export class CloudUI {
icon: currentName === 'dark' ? 'checkmark' : '',
onClick: () => setIfDifferent(dark),
},
],
] as any,
}}
/>
);
Expand Down
6 changes: 3 additions & 3 deletions 6 scopes/cloud/ui/user-bar/user-bar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,9 @@ export function UserBar({ sections = [], items = [] }: UserBarProps) {
link: href,
component: Component ? <Component key={index} user={currentUser} /> : undefined,
};
}),
}) as any,
};
});
}) as unknown as MenuItemType[];
Comment on lines +69 to +71

const logoutItem: MenuItemType = {
label: 'logout',
Expand All @@ -87,7 +87,7 @@ export function UserBar({ sections = [], items = [] }: UserBarProps) {
});
},
},
],
] as any,
};

const userDetails: MenuItemType = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function ComponentNodeContainer(props: NodeProps) {

export function DependenciesCompare() {
const nodeTypes: NodeTypes = React.useMemo(() => ({ ComponentNode: ComponentNodeContainer }), []);
const graphRef = useRef<ReactFlowInstance>();
const graphRef = useRef<ReactFlowInstance | undefined>(undefined);
const componentCompare = useComponentCompare();

const baseId = componentCompare?.base?.model.id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ export function DependenciesGraph({
...rest
}: DependenciesGraphProps) {
const nodeTypes: NodeTypes = React.useMemo(() => ({ ComponentNode: ComponentNodeContainer }), []);
const graphRef = useRef<ReactFlowInstance>();
const graphRef = useRef<ReactFlowInstance | undefined>(undefined);
const elements = calcElements(graph, { rootNode });
const [nodes, setNodes] = useNodesState(elements.nodes);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export type OverlayStyle = {
const GAP = 4;

export function useOverlay(
anchorRef: React.RefObject<HTMLElement>,
anchorRef: React.RefObject<HTMLElement | null>,
open: boolean,
gap: number = GAP,
extraStyle?: React.CSSProperties
Expand Down
26 changes: 23 additions & 3 deletions 26 scopes/docs/docs/docs-store.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,29 @@
import React from 'react';
import ReactDOM from 'react-dom';

// let docs = [];
type Root = { render: (element: React.ReactElement) => void };
let root: Root | undefined;

function createCompatRoot(container: HTMLElement): Root {
try {
// React 18+: react-dom/client exists and exports createRoot
// eslint-disable-next-line import/no-extraneous-dependencies
return require('react-dom/client').createRoot(container);
} catch {
// React 17 fallback: react-dom/client does not exist
// eslint-disable-next-line import/no-extraneous-dependencies
const ReactDOM = require('react-dom');
return {
render: (element) => {
ReactDOM.render(element, container);
},
};
}
Comment on lines +3 to +20
}

export function addDocs(docs: any[]) {
const Doc = docs[0];
ReactDOM.render(<Doc />, document.getElementById('root'));
if (!root) {
root = createCompatRoot(document.getElementById('root')!);
}
root.render(<Doc />);
}
2 changes: 1 addition & 1 deletion 2 scopes/docs/docs/docs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ export type Example = {
title?: string;
description?: ReactElement;
scope?: { [key: string]: any };
jsx?: JSX.Element;
jsx?: React.JSX.Element;
code: string;
};

Expand Down
8 changes: 4 additions & 4 deletions 8 scopes/harmony/aspect/aspect.env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -188,15 +188,15 @@ export class AspectEnv implements DependenciesEnv, PackageEnv, PreviewEnv {
'react-dom': '-',
'@types/mocha': '-',
'@types/node': '12.20.4',
'@types/react': '^17.0.8',
'@types/react-dom': '^17.0.5',
'@types/react': '^19.0.0',
'@types/react-dom': '^19.0.0',
'@types/jest': '^26.0.0',
'@types/testing-library__jest-dom': '5.9.5',
},
peerDependencies: {
// TODO: check if we really need react for aspects (maybe for ink support)
react: '^16.8.0 || ^17.0.0',
'react-dom': '^16.8.0 || ^17.0.0',
react: '^17.0.0 || ^18.0.0 || ^19.0.0',
'react-dom': '^17.0.0 || ^18.0.0 || ^19.0.0',
},
};
}
Expand Down
4 changes: 2 additions & 2 deletions 4 scopes/harmony/node/node.env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,14 @@ export class NodeEnv implements DependenciesEnv, PackageEnv {
{
name: 'react',
/* the version to be installed and used by the env */
version: '^17.0.0',
version: '^19.0.0',
/* the range of versions this env's components are compatible with */
supportedRange: '^17.0.0 || ^18.0.0 || ^19.0.0',
},
{
name: 'react-dom',
/* the version to be installed and used by the env */
version: '^17.0.0',
version: '^19.0.0',
/* the range of versions this env's components are compatible with */
supportedRange: '^17.0.0 || ^18.0.0 || ^19.0.0',
},
Expand Down
8 changes: 4 additions & 4 deletions 8 scopes/react/react/react.env.ts
Original file line number Diff line number Diff line change
Expand Up @@ -515,16 +515,16 @@ export class ReactEnv
'react-dom': '-',
'@types/mocha': '-',
'@types/node': '12.20.4',
'@types/react': '^17.0.8',
'@types/react-dom': '^17.0.5',
'@types/react': '^19.0.0',
'@types/react-dom': '^19.0.0',
'@types/jest': '^26.0.0',
// This is added as dev dep since our jest file transformer uses babel plugins that require this to be installed
'@babel/runtime': '7.20.0',
'@types/testing-library__jest-dom': '5.9.5',
},
peerDependencies: {
react: '^16.8.0 || ^17.0.0',
'react-dom': '^16.8.0 || ^17.0.0',
react: '^17.0.0 || ^18.0.0 || ^19.0.0',
'react-dom': '^17.0.0 || ^18.0.0 || ^19.0.0',
},
};
}
Expand Down
1 change: 0 additions & 1 deletion 1 scopes/react/react/webpack/webpack.config.base.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,6 @@ export default function (isEnvProduction = false): Configuration {
alias: {
'react/jsx-dev-runtime': require.resolve('react/jsx-dev-runtime'),
'react/jsx-runtime': require.resolve('react/jsx-runtime'),
'react-dom/server': require.resolve('react-dom/server'),
// Allows for better profiling with ReactDevTools
...(isEnvProductionProfile && {
'react-dom$': 'react-dom/profiling',
Expand Down
29 changes: 24 additions & 5 deletions 29 scopes/react/ui/compositions-app/compositions.app-root.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
import React from 'react';
import ReactDOM from 'react-dom';
import type { RenderingContext } from '@teambit/preview';

import { CompositionsApp } from './compositions-app';

type Root = { render: (element: React.ReactElement) => void };
let root: Root | undefined;

function createCompatRoot(container: HTMLElement): Root {
try {
// React 18+: react-dom/client exists and exports createRoot
// eslint-disable-next-line import/no-extraneous-dependencies
return require('react-dom/client').createRoot(container);
} catch {
// React 17 fallback: react-dom/client does not exist
// eslint-disable-next-line import/no-extraneous-dependencies
const ReactDOM = require('react-dom');
return {
render: (element) => {
ReactDOM.render(element, container);
},
};
Comment on lines +6 to +22
}
}

/**
* mounts compositions into the DOM in the component preview.
*/
export default (Composition: React.ComponentType, previewContext: RenderingContext) => {
ReactDOM.render(
<CompositionsApp Composition={Composition} previewContext={previewContext} />,
document.getElementById('root')
);
if (!root) {
root = createCompatRoot(document.getElementById('root')!);
}
root.render(<CompositionsApp Composition={Composition} previewContext={previewContext} />);
};
4 changes: 2 additions & 2 deletions 4 scopes/react/ui/docs-app/docs-theme.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
// import 'reset-css'; // do not include resets, we want compositions with native behavior
import React from 'react';
import React, { type ReactNode } from 'react';
import classNames from 'classnames';
// import { ThemeContext } from '@teambit/documenter.theme.theme-context';
import { ThemeSwitcher } from '@teambit/design.themes.theme-toggler';
import { IconFont } from '@teambit/design.theme.icons-font';
import styles from './docs-app.module.scss';

export type DocsAppProps = {
children: React.ReactChild;
children: ReactNode;
};

export function DocsTheme({ children }: DocsAppProps) {
Expand Down
29 changes: 24 additions & 5 deletions 29 scopes/react/ui/docs-app/docs.app-root.tsx
Original file line number Diff line number Diff line change
@@ -1,14 +1,33 @@
import type { DocsRootProps } from '@teambit/docs';
import React from 'react';
import ReactDOM from 'react-dom';

import { DocsApp } from './docs-app';

type Root = { render: (element: React.ReactElement) => void };
let root: Root | undefined;

function createCompatRoot(container: HTMLElement): Root {
try {
// React 18+: react-dom/client exists and exports createRoot
// eslint-disable-next-line import/no-extraneous-dependencies
return require('react-dom/client').createRoot(container);
} catch {
// React 17 fallback: react-dom/client does not exist
// eslint-disable-next-line import/no-extraneous-dependencies
const ReactDOM = require('react-dom');
return {
render: (element) => {
ReactDOM.render(element, container);
},
};
}
Comment on lines +6 to +23
}

function DocsRoot({ componentId, docs, compositions, context }: DocsRootProps) {
ReactDOM.render(
<DocsApp componentId={componentId} docs={docs} compositions={compositions} context={context} />,
document.getElementById('root')
);
if (!root) {
root = createCompatRoot(document.getElementById('root')!);
}
root.render(<DocsApp componentId={componentId} docs={docs} compositions={compositions} context={context} />);
}

// For backward compatibility - can be removed end of 2022
Expand Down
2 changes: 1 addition & 1 deletion 2 scopes/scope/scope/ui/scope.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import type { ScopeUI, ScopeBadgeSlot, ScopeContextType, CornerSlot, OverviewLin
export type ScopeProps = {
routeSlot: RouteSlot;
menuSlot: RouteSlot;
sidebar: JSX.Element;
sidebar: React.JSX.Element;
scopeUi: ScopeUI;
badgeSlot: ScopeBadgeSlot;
overviewLineSlot: OverviewLineSlot;
Expand Down
2 changes: 1 addition & 1 deletion 2 scopes/semantics/schema/mock/button-v2/button.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export type ButtonProps = {
} & React.ButtonHTMLAttributes<HTMLButtonElement>;

export function Button(props: ButtonProps) {
const ref = useRef();
const ref = useRef(null);

const allProps = {
Comment on lines 30 to 33
...props,
Expand Down
Loading
Morty Proxy This is a proxified and sanitized view of the page, visit original site.