Trying to delete a document by getting the data attribute,returns DOM Exception – valid selector error even while using the bracket notation to query

I was hoping to delete documents in my firebase collection first by getting the data attribute i intially set in the DOM.It quite works well but there are some exception. I notice it works well because Firebase AutoId generates random alphanumeric ,but once the generated Id starts with a number, the document doesnt delete at all. Note: I am using the bracket notation with querySelector.
Here is the console error :

!
Uncaught DOMException: Failed to execute ‘querySelector’ on ‘Element’: ‘[data-id=3mvsWUUbkJsBy2c65HnB]’ is not a valid selector.

Code
enter image description here

The output should be at / : Welcome to the Home Page! /movie : Welcome to the Movie Page [closed]

Pic 1 and pic2 is my code, and it should output at root as : Welcome to Home page !
But unfortunately nothing comes as output, just blank white screen,

Pic 3 is the tutorial code which I’m following but it’s 2years old tutorial so some things are different, i even tried to replicate the exact code from the pic 3 but the result is same, blank white screen

The output should be at
/ : Welcome to the Home Page!
/movie : Welcome to the Movie Page !

[[enter image description here](https://i.stack.imgur.com/Rryg7.jpg)](https://i.stack.imgur.com/dFXTs.jpg)

enter image description here

Textarea height decreases by 2px at a time. Why?

I want a textarea to be like one in messengers. It a 1 line by default and becomes 2-4 lines when overflown with text.

Here’s a piece of code for this:

function onInputHandle() {
    textarea.style.height = textarea.scrollHeight + "px";
}

And it works fine when the amount of lines should increase. But when I delete characters and don’t need a new line anymore it works in a strange way.

Let’s say a default height is 34px. Then it becomes 55px when expanded (a new line added).

But then I delete chracters so that I don’t need that extraline anymore. And the textarea height is not immediately set to 34px. It decreases by 2px at a time – 53px, 53px and all the way down to 34px. Here’s the logs:

// adding characters

textarea.style.height: 34px
textarea.scrollHeight: 34
------------------- 
textarea.style.height: 34px 
textarea.scrollHeight: 34 

// textarea overflown - new line added
-------------------
textarea.style.height: 55px
textarea.scrollHeight: 55
-------------------

// not overflown anymore after I deleted characters
// should be 34px, but decreasing by 2px instead
------------------- 
textarea.style.height: 53px
textarea.scrollHeight: 51
-------------------
textarea.style.height: 51px
textarea.scrollHeight: 49
------------------- 
textarea.style.height: 49px
textarea.scrollHeight: 47
-------------------
textarea.style.height: 47px
textarea.scrollHeight: 45
------------------- 
textarea.style.height: 45px
textarea.scrollHeight: 43
-------------------
textarea.style.height: 43px
textarea.scrollHeight: 41
------------------- 
textarea.style.height: 41px
textarea.scrollHeight: 39
-------------------
textarea.style.height: 39px
textarea.scrollHeight: 37
------------------- 
textarea.style.height: 37px
textarea.scrollHeight: 35
------------------- 
textarea.style.height: 35px
textarea.scrollHeight: 34
 ------------------- 
textarea.style.height: 34px
textarea.scrollHeight: 34
------------------- 
textarea.style.height: 34px
textarea.scrollHeight: 34 

In copeden the behavior is even more strange https://codepen.io/stststst222/pen/eYLEXYe?editors=1111

Azure API management attach JWT token per Subscription

Our scenario is that we want to manage authentication & rate limiting via the Azure API management gateway, but in our backend, we rely on the JWT token in order to obtain certain information about the service that is trying to make requests, like its permissions (it’s a 3rd party service that will use our API).

So we would like to achieve the following:

  1. A service is making an API call to the Azure API gateway with an Azure subscription key
  2. Azure API gateway verifying the key & the rate limit policy
  3. Azure API attache/generates a JWT token with a specific payload that is specific to the subscription
  4. the request with the JWT token is forwarded to our backend API
  5. Our backend API validates the JWT token and uses its payload

Our Backed is written in Node.js with express.

Handling State for Form Switch Component in reactjs

Description

I am creating multiple switch components within a data table in React, but when I click on one, all of them are automatically clicked.

enter image description here

Code

const FormCreateRole = () => {
  // Array for table header and its data
  const tableHeader = [
    "No",
    "Menu",
    "Sub Menu",
    "Lihat",
    "Tambah",
    "Ubah",
    "Hapus",
    "Export",
  ];

  const submenu = [
    ["-"],
    ["Akun Pengguna", "Grup & Kontrol Hak Akses Akun", "Antrian Pasien", "Rawat Jalan"],
    ["Pemeriksaan Penunjang", "Rekam Medis", "Admisi Rawat Jalan"],
    ["Status dan Penempatan Kamar", "Transfer Pasien"],
  ];

  let i = 1;

  const tableDataMenu = [
    [i++, "Dashboard", submenu[0], "", null, null, null, ""],
    [i++, "Konfigurasi/Pengaturan", submenu[1], "", "", "", "", null],
    [i++, "Layanan Pasien", submenu[2], "", "", "", "", null],
    [i++, "Rawat Inap", submenu[3], "", "", "", "", null],
  ];
  // end Array data

  const [switches, setSwitches] = useState({
    lihat: false,
    tambah: false,
    ubah: false,
    hapus: false,
    export: false,
  });

  const handleSwitchChange = (event) => {
    const id = event.target.id;
    setSwitches(prevSwitches => ({...prevSwitches, [id]: event.target.checked }));
  };
  
  
  return (
    <Table className="table-responsive">
      <thead style={{ backgroundColor: "#ECEFF1" }}>
        <tr>
          {tableHeader.map((header, index) => (
            <th
              key={index}
              className="txt-blue-grey-700 base-md text-bold text-center"
              style={{ padding: "0.75rem" }}
            >
              {header}
            </th>
          ))}
        </tr>
      </thead>
      <tbody>
        {tableDataMenu.map((row, idx) => (
          <React.Fragment key={idx}>
            <tr>
              {row.slice(0, 2).map((cell, idx) => (
                <td key={idx} className="text-center">
                  {cell}
                </td>
              ))}
              <td>
                {row[2] && (
                  <div>
                    {row[2].map((sub, idx) => (
                      <div key={idx} className="mb-3">
                        {sub}
                      </div>
                    ))}
                  </div>
                )}
              </td>
              {row.slice(3).map((cell, idx) => {
                const key = `${idx}-${row[1]}`;
                return (
                  <td key={key}>
                    {row[2] &&
                      row[2].map((subIdx) => {
                        if (cell !== null) {
                          return (
                            <div
                              key={subIdx}
                              className="mb-3 text-center"
                            >
                              <Form.Check 
                                type="switch" 
                                id={key}
                                label=""
                                checked={switches[key]}
                                onChange={handleSwitchChange}
                              />
                            </div>
                          );
                        }
                        return null;
                      })}
                    {cell}
                  </td>
                );
              })}
            </tr>
          </React.Fragment>
        ))}
      </tbody>
    </Table>
  )
}

Question

How can I effectively solve this problem? So that I can click on only one switch without affecting the other switches.

Any help will be appreciated, thanks in advance.

How to extract and save the extracted files to the system/ being able to send them directly through the api in React?

I am working on a dummy POC where I am be able to capture a compressed(.zip) file thorugh the input element and I am using the JSZip for unzipping/extracting the files but I am not able to save the extracted files in the system as ‘fs.writeFile’ is not supported in react.

Is there any way through which I can accomplish this or these extracted files can directly be sent through the API as blob by temporarily storing them in the redux store?
My goal is to send these extracted files through the API to the backend system and the files can be multimedia files having size less than 200MB.

Thanks in advance.

I tried installing the like-fs but it is giving the error:

  • Can’t resolve ‘fs’ in ‘node_modulesrimraf’*

Here is the code,

Function for extracting the files

const extractZip = async (file) => {
    const zip = new JSZip();
    const extractedFiles = await zip.loadAsync(file);
    extractedFiles.forEach(async ( file) => {
      const content = await file.async("string");
      LocalFilesystem.writeFile(`./extracted/public`, content, (err) => {
        if (err) throw err;
      });
    });
  };
<div>
  <input type="file" onChange={(e) => extractZip(e.target.files[0])} />
</div>

In React Native, why does this not work? I just want to save and use these two valuse in a local storage, but one works, but the other doesn’t work

Just like the title says, I want to save two values into a local storage with AsyncStorage.
My app is quite simple.
There are two buttons that increment each of the numbers by pressing them.
They’re put in setState.
I save them into the local storage, and want to use them for when the user closes/re-visit my app.

My app preview

I successfully made it work for one value, but not for the other value, even though I beleve they’re structured in the same way like the codes below.

import React, { useEffect, useState } from "react";
import { View, Text, StyleSheet, Button } from "react-native";

import AsyncStorage from "@react-native-async-storage/async-storage";



const Home = () => {

  const [counter, setCounter] = useState(0);
  const [counter2, setCounter2] = useState(0);
 
  //For getting values that are saved into the local storage.
  const get = async () => {
    const values = await AsyncStorage.multiGet(["@count", "@count2"]);

    values.forEach((value) => {
      if (value[0] === "@count") {
        const savedcount = parseInt(value[1]);
        setCounter(savedcount);
        console.log("rendering2");
      }
      if (value[0] === "@count2") {
        const savedcount2 = parseInt(value[1]);
        setCounter2(savedcount2);
        console.log("rendering");
      }    
    });
  };

  useEffect(() => {
    get();
  }, []);


  const increment = async () => {
    setCounter((pre) => pre + 1);
  };

  const increment2 = async () => {
    setCounter2((pre) => pre + 1);
  };

  //For saving those states.
  const saving = async () => {
    await AsyncStorage.setItem("@count", counter.toString());
    await AsyncStorage.setItem("@count2", counter2.toString());
  };

  useEffect(() => {
    saving();
  }, [counter, counter2]);

  return (
    <View style={styles.container}>
      <Text style={styles.text}>{counter}</Text>
      <Text style={styles.text}>{counter2}</Text>

      <Button title="count up" onPress={increment} />
      <Button title="count up2" onPress={increment2} />
    </View>
  );
};

const styles = StyleSheet.create({
  container: {
    justifyContent: "center",
    alignItems: "center",
    flex: 1,
  },
  text: {
    fontSize: 50,
  },
});

export default Home;

In the end, counter is successfully saved and used, but counter2 isn’t, even tho they’re structured in the same way I beleve.

I need some help. It’d be nice if someone fixes my codes to make them work.
Thank you in advance.

error in my php page in the variable $conn(connection page)when i use it in anthor php file [duplicate]

I have problem in generating receipt number automatically.

I tried to write function that generate receipt automatically. I expected that the function generates the receipt automatically and save the form in the database after submit it .the actually result is the
Warning: Undefined variable $conn in C:xampphtdocsInsert Multi Dynamic Listind1.php on line 28

Fatal error: Uncaught Error: Call to a member function prepare() on null in C:xampphtdocsInsert Multi Dynamic Listind1.php:28 Stack trace: #0 C:xampphtdocsInsert Multi Dynamic Listind1.php(15): generateRandomString(Object(PDO)) #1 {main} thrown in C:xampphtdocsInsert Multi Dynamic Listind1.php on line 28

Scrollspy not working error showing cannot read classList properties of null, node list error and window.onscroll error showing in console

The problem i am facing in this post is about my navbar domtokenlist the javascript couldn’t connect
to html header navbar elements class i made i wanna make a scrollspy as you see in code but its not having any effect i design my website and i share a image for it you can see erorr giving on console about classList why its giving please help.

Navigation bar start html
<header>
    <a href="#" class="logo"><i class="fa-solid fa-shirt"></i>SlikTezes</a>
    <nav class="navbar">
        <a class="active" href="#home">home</a>
        <a href="#products">products</a>
        <a href="#about">about</a>
        <a href="#review">reviews</a>
        <a href="#order">order</a>
    </nav>
    <div class="icons">
        <i class="fas fa-bars" id="menu-bars"></i>        
        <i class="fas fa-search" id="search-icon"></i>
        <a href="#" class="fas fa-heart"></a>
        <a href="#" class="fas fa-shopping-cart"></a>
    </div>

</header>

section of all navs i have coded and design them all issue is seems in java script?

<section class="main swiper mySwiper" id="home"></section>
<section class="products" id="products"></section>
<section class="about" id="about"></section>
<section class="review" id="review"></section>
<section class="order" id="order">

 navigation scrollspy javascript
//Scroll spy Section JS
let section = document.querySelectorAll('section');
let navLinks = document.querySelectorAll('header .navbar a')
window.onscroll = ()=>{ 
    menu.classList.remove('fa-times')
    navbar.classList.remove('active')
    section.forEach(sec =>{
        let top = window.scrollY;
        let height = sec.offsetHeight;
        let offset = sec.offsetTop - 150;
        let id = sec.getAttribute('id');
    
        if(top => offset && top < offset + height){
            navLinks.forEach(links =>{
                links.classList.remove("active");
                document.querySelector('header .navbar a[href*='+id+']').classList.add("active");
            });
        };
    });
};

section.forEach(sec =>{
navLinks.forEach(links =>{
document.querySelector('header .navbar a[href*='+id+']').classList.add("active");

Check in image console giving error`

How to solve “npm ERR! Test failed. See above for more details.”?

I am using javascript to write selenium test scripts. It was working in my another system. So here is the error that is persistant.

✖ ERROR: Error: Not supported
    at Object.exports.doImport (/home/sahil/frontend-selenium-testing/node_modules/mocha/lib/nodejs/esm-utils.js:35:41)
    at formattedImport (/home/sahil/frontend-selenium-testing/node_modules/mocha/lib/nodejs/esm-utils.js:32:18)
    at exports.requireOrImport (/home/sahil/frontend-selenium-testing/node_modules/mocha/lib/nodejs/esm-utils.js:42:34)
    at exports.handleRequires (/home/sahil/frontend-selenium-testing/node_modules/mocha/lib/cli/run-helpers.js:94:34)
    at process._tickCallback (internal/process/next_tick.js:68:7)
    at Function.Module.runMain (internal/modules/cjs/loader.js:834:11)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:623:3)
npm ERR! Test failed.  See above for more details.

And here is my package.json file

{
  "name": "selenium",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "mocha --no-timeouts --reporter mochawesome --require mochawesome/register"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "chai": "^4.3.7",
    "mocha": "^10.2.0",
    "mochawesome": "^7.1.3",
    "selenium-webdriver": "^4.7.1"
  }
}

I have used this link to setup path for chrome webdriver, setup chrome webdriver in ubuntu

How to pass access token in server.js in React app

I have a react app. For all api calls i am able to attach access token in headers since i have the token in app context. there are other api calls in server.js file which does not have access token. How can i pass access token in header.

const express = require('express');
const next = require('next');
const http = require('http');
const https = require('https');
const fs = require('fs');
const { createProxyMiddleware } = require('http-proxy-middleware');

const httpPort = parseInt(process.env.PORT, 10) || 3000;
const httpsPort = 3443;
const server = express();

const dev = process.env.NODE_ENV !== 'production';
const ENVS = {
    development: 'dev',
    staging: 'uat',
    production: 'app'
};
const mockServer = !!process.env.MOCK_SERVER;
const mockPort = parseInt(process.env.MOCK_PORT, 10) || 3001;
const mockBaseUrl = process.env.MOCK_BASE_URL || 'http://localhost';

const protocol = 'https://';
const domain = 'cloud.virtana.com';
/* to use staging apis use ENVS.staging or ENVS.production to use prod apis  */
const environment = process.env.USE_ENV || ENVS.production;
const URL = protocol + environment + '.' + domain;
const GRAPH_QL = `${protocol}api.${process.env.USE_ENV}.optimize.virtana.com`

console.log('file: server.js; process.env.USE_ENV --> ', process.env.USE_ENV);

const devProxy = {
    '/sso/saml/acs': {
        target: mockServer ? mockBaseUrl + ':' + mockPort + '/api' : URL + '/authentication/sso/saml/acs',
        pathRewrite: { '^/authentication/sso/saml/acs/': '' },
        changeOrigin: dev,
        secure: true,
        logLevel: 'debug',
    },
    '/api/v1': {
        target: mockServer ? mockBaseUrl + ':' + mockPort + '/api/v1' : URL + '/constellation/api/v1',
        pathRewrite: { '^/api/v1': '' },
        secure: true,
        changeOrigin: dev,
        logLevel: 'debug',
    },
 }
 
 
 
 
 const app = next({
    dir: '.', // base directory where everything is, could move to src later
    dev: true,
});
const handle = app.getRequestHandler();

app.prepare().then(() => {
    Object.keys(devProxy).forEach(function (context) {
        server.use(createProxyMiddleware(context, devProxy[context]));
    });
    server.all('*', (req, res) => {
        return handle(req, res)
    });

    http.createServer(server).listen(httpPort, (err) => {
        if (err) {
            throw err;
        }
        console.log(`> Ready on port ${httpPort}`);
    });

    if (dev) {
        https.createServer({
            key: fs.readFileSync('cert/vcio.key'),
            cert: fs.readFileSync('cert/vcio.crt'),
        }, server).listen(httpsPort, (err) => {
            if (err) {
                throw err;
            }
            console.log(`> Ready on secure port ${httpsPort}`);
        });
    }
})
    .catch((err) => {
        console.error('An error occurred, unable to start the server -> ', err);
    });

I need to pass access token to ‘/api/v1’ and ‘/sso/saml/acs’

I am not able to access my appcontext in server.js file. So I need to somehow get access token in this server.js file and attach that in authorization header.

Can i update firestore and storage of firebase in one line Code? using React js

I am updating firestore and Storage of Firebase React.js .

        import "firebase/compat/storage"
        import firebase from "config.js"

        const [image,setImage] = useState()


        firebase.storage().ref("images/" + image.name).put(image).then(({ ref }) => {
            ref.getDownloadURL().then((url) => {
                firebase.firestore().collection("images").doc().set({ imageURL: url })
            })
        })

return(
<input type="file" name='profile' onChange={()=>setImage(event.target.files[0])} />
)

can we write this code to any other way. I mean, can I remove the repeating firebase. ?

How to resize an MUI Drawer horizontally & resize the rest of the layout?

I’ve looked at some Stack Overflow answer and kind of tried to get halfway there.
I need an MUI drawer on the left that when you open it the drawer is resizable horizontally and that when you make it bigger or smaller, that the rest of the view resizes to accommodates. Unfortunately I can’t use grid. I feel like there has to be a better.

This Stack Overflow question:

CodeSandbox: https://codesandbox.io/s/resize-mui-drawer-336c2d?file=/demo.tsx
There is a bit of a weird thing going on as well and I’m not sure how to fix it. Like when I mouse up it’ll sometimes resize it until I click somewhere random and then if I reclick in the right area it’ll kind of resize right again.

const useStyles = makeStyles((theme) => ({
  dragger: {
    width: "5px",
    backgroundColor: "#f4f7f9",
    cursor: "ew-resize",
    padding: "4px 0 0",
    position: "absolute",
    top: 0,
    right: 0,
    bottom: 0,
    zIndex: 100
  }
}));
export default function MiniDrawer() {
  const theme = useTheme();
  const classes = useStyles();

  const [open, setOpen] = React.useState(false);

  const minDrawerWidth = 50;
  const maxDrawerWidth = 1000;

  const [drawerWidth, setDrawerWidth] = React.useState(50);

  const handleMouseMove = React.useCallback((e) => {
    const newWidth = e.clientX - document.body.offsetLeft;
    if (newWidth > minDrawerWidth && newWidth < maxDrawerWidth) {
      setDrawerWidth(newWidth);
    }
  }, []);

  const handleMouseUp = () => {
    document.removeEventListener("mouseup", handleMouseUp, true);
    document.removeEventListener("mousemove", handleMouseMove, true);
  };

  const handleMouseDown = (e) => {
    document.addEventListener("mouseup", handleMouseUp, true);
    document.addEventListener("mousemove", handleMouseMove, true);
  };
  const handleDrawerOpen = () => {
    setOpen(true);
  };

  const handleDrawerClose = () => {
    setOpen(false);
  };
  const drawer = (
    <div>
      <DrawerHeader>
        <IconButton onClick={handleDrawerClose}>
          {theme.direction === "rtl" ? (
            <ChevronRightIcon />
          ) : (
            <ChevronLeftIcon />
          )}
        </IconButton>
      </DrawerHeader>
      <Divider />
      <List>
        {["Inbox", "Starred", "Send email", "Drafts"].map((text, index) => (
          <ListItem key={text} disablePadding sx={{ display: "block" }}>
            <ListItemButton
              sx={{
                minHeight: 48,
                justifyContent: open ? "initial" : "center",
                px: 2.5
              }}
            >
              <ListItemIcon
                sx={{
                  minWidth: 0,
                  mr: open ? 3 : "auto",
                  justifyContent: "center"
                }}
              >
                {index % 2 === 0 ? <InboxIcon /> : <MailIcon />}
              </ListItemIcon>
              <ListItemText primary={text} sx={{ opacity: open ? 1 : 0 }} />
            </ListItemButton>
          </ListItem>
        ))}
      </List>
      <Divider />
      <List>
        {["All mail", "Trash", "Spam"].map((text, index) => (
          <ListItem key={text} disablePadding sx={{ display: "block" }}>
            <ListItemButton
              sx={{
                minHeight: 48,
                justifyContent: open ? "initial" : "center",
                px: 2.5
              }}
            >
              <ListItemIcon
                sx={{
                  minWidth: 0,
                  mr: open ? 3 : "auto",
                  justifyContent: "center"
                }}
              >
                {index % 2 === 0 ? <InboxIcon /> : <MailIcon />}
              </ListItemIcon>
              <ListItemText primary={text} sx={{ opacity: open ? 1 : 0 }} />
            </ListItemButton>
          </ListItem>
        ))}
      </List>
    </div>
  );

  // https://stackblitz.com/edit/react-2h1g6x?file=ResponsiveDrawer.js
  // React.useEffect(() => {
  //   document.addEventListener("mousemove", (e) => handleMouseMove(e));
  //   document.addEventListener("mouseup", (e) => handleMouseUp(e));
  // }, []);

  return (
    <Box sx={{ display: "flex" }}>
      <CssBaseline />
      <AppBar position="fixed" open={open}>
        <Toolbar>
          <IconButton
            color="inherit"
            aria-label="open drawer"
            onClick={handleDrawerOpen}
            edge="start"
            sx={{
              marginRight: 5,
              ...(open && { display: "none" })
            }}
          >
            <MenuIcon />
          </IconButton>
          <Typography variant="h6" noWrap component="div">
            Mini variant drawer
          </Typography>
        </Toolbar>
      </AppBar>
      <Drawer
        variant="permanent"
        open={open}
        PaperProps={{ style: { width: drawerWidth } }}
      >
        <div
          id="dragger"
          onMouseDown={(event) => {
            handleMouseDown(event);
          }}
          className={classes.dragger}
        />
        {drawer}
      </Drawer>
      <Box component="main" sx={{ flexGrow: 1, p: 3 }}>
        <DrawerHeader />
        <Typography paragraph>
          Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
          eiusmod tempor incididunt ut labore et dolore magna aliqua. Rhoncus
          dolor purus non enim praesent elementum facilisis leo vel. Risus at
          ultrices mi tempus imperdiet. Semper risus in hendrerit gravida rutrum
          quisque non tellus. Convallis convallis tellus id interdum velit
          laoreet id donec ultrices. Odio morbi quis commodo odio aenean sed
          adipiscing. Amet nisl suscipit adipiscing bibendum est ultricies
          integer quis. Cursus euismod quis viverra nibh cras. Metus vulputate
          eu scelerisque felis imperdiet proin fermentum leo. Mauris commodo
          quis imperdiet massa tincidunt. Cras tincidunt lobortis feugiat
          vivamus at augue. At augue eget arcu dictum varius duis at consectetur
          lorem. Velit sed ullamcorper morbi tincidunt. Lorem donec massa sapien
          faucibus et molestie ac.
        </Typography>
        <Typography paragraph>
          Consequat mauris nunc congue nisi vitae suscipit. Fringilla est
          ullamcorper eget nulla facilisi etiam dignissim diam. Pulvinar
          elementum integer enim neque volutpat ac tincidunt. Ornare suspendisse
          sed nisi lacus sed viverra tellus. Purus sit amet volutpat consequat
          mauris. Elementum eu facilisis sed odio morbi. Euismod lacinia at quis
          risus sed vulputate odio. Morbi tincidunt ornare massa eget egestas
          purus viverra accumsan in. In hendrerit gravida rutrum quisque non
          tellus orci ac. Pellentesque nec nam aliquam sem et tortor. Habitant
          morbi tristique senectus et. Adipiscing elit duis tristique
          sollicitudin nibh sit. Ornare aenean euismod elementum nisi quis
          eleifend. Commodo viverra maecenas accumsan lacus vel facilisis. Nulla
          posuere sollicitudin aliquam ultrices sagittis orci a.
        </Typography>
      </Box>
    </Box>
  );
}