JSFiddle - React, Tailwind, and code Playground

CSS

body {
        margin: 0px;
        overflow: hidden;
      }

JavaScript

renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);

renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;

scene = new THREE.Scene();

var camera = new THREE.PerspectiveCamera(40, window.innerWidth / window.innerHeight, 1, 10000);
camera.position.set(100,100,0);
camera.lookAt({x:0,y:0,z:0});
scene.add(camera);

var plane = new THREE.Mesh(new THREE.PlaneGeometry(200,200), new THREE.MeshLambertMaterial({color: 0x22FF11}));
plane.receiveShadow = true;
scene.add(plane);

var cube = new THREE.Mesh(new THREE.CubeGeometry(20,20,20), new THREE.MeshLambertMaterial({color: 0xFF0000}));
cube.position.y = 10;
cube.castShadow = true;
cube.receiveShadow = true;
scene.add(cube);

var cube2 = new THREE.Mesh(new THREE.CubeGeometry(12,100,12), new THREE.MeshLambertMaterial({color: 0xFF00FF}));
cube2.position.set(0,50,-50);
cube2.castShadow = true;
scene.add(cube2);

var light = new THREE.DirectionalLight(0xffffff, 1);
light.position.set(0, 800, -500);
light.castShadow = true;
scene.add(light);


light.shadowCameraLeft = -120;
light.shadowCameraRight = 120;
light.shadowCameraTop = 120;
light.shadowCameraBottom = -120;
light.shadowBias = 0.001;
        

scene.add( new THREE.AmbientLight( 0x232323 ) );

renderer.render(scene, camera);