Browse Source

Admin web page created

Luis Ortiz 1 year ago
parent
commit
dec40819f4
20 changed files with 17527 additions and 191 deletions
  1. 23
    0
      .gitignore
  2. 70
    0
      README.md
  3. 17046
    0
      package-lock.json
  4. 39
    0
      package.json
  5. BIN
      public/favicon.ico
  6. 43
    0
      public/index.html
  7. BIN
      public/logo192.png
  8. BIN
      public/logo512.png
  9. 25
    0
      public/manifest.json
  10. 3
    0
      public/robots.txt
  11. 0
    191
      sorting.py
  12. 65
    0
      src/App.css
  13. 56
    0
      src/App.js
  14. 48
    0
      src/Datos.css
  15. 22
    0
      src/Datos.js
  16. 48
    0
      src/Noticias.css
  17. 22
    0
      src/Noticias.js
  18. 17
    0
      src/index.js
  19. 0
    0
      src/login.css
  20. 0
    0
      src/login.js

+ 23
- 0
.gitignore View File

@@ -0,0 +1,23 @@
1
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2
+
3
+# dependencies
4
+/node_modules
5
+/.pnp
6
+.pnp.js
7
+
8
+# testing
9
+/coverage
10
+
11
+# production
12
+/build
13
+
14
+# misc
15
+.DS_Store
16
+.env.local
17
+.env.development.local
18
+.env.test.local
19
+.env.production.local
20
+
21
+npm-debug.log*
22
+yarn-debug.log*
23
+yarn-error.log*

+ 70
- 0
README.md View File

@@ -0,0 +1,70 @@
1
+# Getting Started with Create React App
2
+
3
+This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
4
+
5
+## Available Scripts
6
+
7
+In the project directory, you can run:
8
+
9
+### `npm start`
10
+
11
+Runs the app in the development mode.\
12
+Open [http://localhost:3000](http://localhost:3000) to view it in your browser.
13
+
14
+The page will reload when you make changes.\
15
+You may also see any lint errors in the console.
16
+
17
+### `npm test`
18
+
19
+Launches the test runner in the interactive watch mode.\
20
+See the section about [running tests](https://facebook.github.io/create-react-app/docs/running-tests) for more information.
21
+
22
+### `npm run build`
23
+
24
+Builds the app for production to the `build` folder.\
25
+It correctly bundles React in production mode and optimizes the build for the best performance.
26
+
27
+The build is minified and the filenames include the hashes.\
28
+Your app is ready to be deployed!
29
+
30
+See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.
31
+
32
+### `npm run eject`
33
+
34
+**Note: this is a one-way operation. Once you `eject`, you can't go back!**
35
+
36
+If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.
37
+
38
+Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.
39
+
40
+You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.
41
+
42
+## Learn More
43
+
44
+You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).
45
+
46
+To learn React, check out the [React documentation](https://reactjs.org/).
47
+
48
+### Code Splitting
49
+
50
+This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)
51
+
52
+### Analyzing the Bundle Size
53
+
54
+This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)
55
+
56
+### Making a Progressive Web App
57
+
58
+This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)
59
+
60
+### Advanced Configuration
61
+
62
+This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)
63
+
64
+### Deployment
65
+
66
+This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)
67
+
68
+### `npm run build` fails to minify
69
+
70
+This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)

+ 17046
- 0
package-lock.json
File diff suppressed because it is too large
View File


+ 39
- 0
package.json View File

@@ -0,0 +1,39 @@
1
+{
2
+  "name": "website-example",
3
+  "version": "0.1.0",
4
+  "private": true,
5
+  "dependencies": {
6
+    "@testing-library/jest-dom": "^5.16.5",
7
+    "@testing-library/react": "^13.4.0",
8
+    "@testing-library/user-event": "^13.5.0",
9
+    "react": "^18.2.0",
10
+    "react-dom": "^18.2.0",
11
+    "react-router-dom": "^6.4.3",
12
+    "react-scripts": "5.0.1",
13
+    "web-vitals": "^2.1.4"
14
+  },
15
+  "scripts": {
16
+    "start": "react-scripts start",
17
+    "build": "react-scripts build",
18
+    "test": "react-scripts test",
19
+    "eject": "react-scripts eject"
20
+  },
21
+  "eslintConfig": {
22
+    "extends": [
23
+      "react-app",
24
+      "react-app/jest"
25
+    ]
26
+  },
27
+  "browserslist": {
28
+    "production": [
29
+      ">0.2%",
30
+      "not dead",
31
+      "not op_mini all"
32
+    ],
33
+    "development": [
34
+      "last 1 chrome version",
35
+      "last 1 firefox version",
36
+      "last 1 safari version"
37
+    ]
38
+  }
39
+}

BIN
public/favicon.ico View File


+ 43
- 0
public/index.html View File

@@ -0,0 +1,43 @@
1
+<!DOCTYPE html>
2
+<html lang="en">
3
+  <head>
4
+    <meta charset="utf-8" />
5
+    <link rel="icon" href="%PUBLIC_URL%/favicon.ico" />
6
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
7
+    <meta name="theme-color" content="#000000" />
8
+    <meta
9
+      name="description"
10
+      content="Web site created using create-react-app"
11
+    />
12
+    <link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
13
+    <!--
14
+      manifest.json provides metadata used when your web app is installed on a
15
+      user's mobile device or desktop. See https://developers.google.com/web/fundamentals/web-app-manifest/
16
+    -->
17
+    <link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
18
+    <!--
19
+      Notice the use of %PUBLIC_URL% in the tags above.
20
+      It will be replaced with the URL of the `public` folder during the build.
21
+      Only files inside the `public` folder can be referenced from the HTML.
22
+
23
+      Unlike "/favicon.ico" or "favicon.ico", "%PUBLIC_URL%/favicon.ico" will
24
+      work correctly both with client-side routing and a non-root public URL.
25
+      Learn how to configure a non-root public URL by running `npm run build`.
26
+    -->
27
+    <title>React App</title>
28
+  </head>
29
+  <body>
30
+    <noscript>You need to enable JavaScript to run this app.</noscript>
31
+    <div id="root"></div>
32
+    <!--
33
+      This HTML file is a template.
34
+      If you open it directly in the browser, you will see an empty page.
35
+
36
+      You can add webfonts, meta tags, or analytics to this file.
37
+      The build step will place the bundled scripts into the <body> tag.
38
+
39
+      To begin the development, run `npm start` or `yarn start`.
40
+      To create a production bundle, use `npm run build` or `yarn build`.
41
+    -->
42
+  </body>
43
+</html>

BIN
public/logo192.png View File


BIN
public/logo512.png View File


+ 25
- 0
public/manifest.json View File

@@ -0,0 +1,25 @@
1
+{
2
+  "short_name": "React App",
3
+  "name": "Create React App Sample",
4
+  "icons": [
5
+    {
6
+      "src": "favicon.ico",
7
+      "sizes": "64x64 32x32 24x24 16x16",
8
+      "type": "image/x-icon"
9
+    },
10
+    {
11
+      "src": "logo192.png",
12
+      "type": "image/png",
13
+      "sizes": "192x192"
14
+    },
15
+    {
16
+      "src": "logo512.png",
17
+      "type": "image/png",
18
+      "sizes": "512x512"
19
+    }
20
+  ],
21
+  "start_url": ".",
22
+  "display": "standalone",
23
+  "theme_color": "#000000",
24
+  "background_color": "#ffffff"
25
+}

+ 3
- 0
public/robots.txt View File

@@ -0,0 +1,3 @@
1
+# https://www.robotstxt.org/robotstxt.html
2
+User-agent: *
3
+Disallow:

+ 0
- 191
sorting.py View File

@@ -1,191 +0,0 @@
1
-"""
2
-Carlos J Corrada Bravo
3
-Este programa calcula el promedio de tiempo de ejecucion de cuatro algoritmos de ordenamiento
4
-La variable maxValor define el valor maximo de los elementos de la lista
5
-La variable largoLista define el largo de las listas a ordenar
6
-La variable veces define las veces que se va a hacer el ordenamiento
7
-Al final se imprimen los promedios de cada algortimo
8
-"""
9
-
10
-from heapq import merge
11
-
12
-from lib2to3.pgen2.token import LESS
13
-
14
-from random import randint
15
-import time
16
-
17
-
18
-def mergeSort(lista):
19
-	#definan el algoritmo de ordenamiento mergesort
20
-	# Carla Ramos Bezares
21
-	# Para realizar este codigo lei las explicaciones e implementaciones que ofrecen
22
-	# GeeksforGeeks y Progamiz
23
-
24
-	# check if the array has more than one element
25
-    if len(lista) > 1:
26
-        # divide the array in two halves
27
-        middle = len(lista)//2
28
-        leftHalf = lista[:middle]
29
-        rightHalf = lista[middle:]
30
-
31
-        mergeSort(leftHalf)
32
-        mergeSort(rightHalf)
33
-        # declare pointers
34
-
35
-        i = j = k = 0
36
-
37
-		# using our "smaller" arrays, place elements in the correct position of our array
38
-
39
-        while i < len(leftHalf) and j < len(rightHalf):
40
-            if leftHalf[i] < rightHalf[j]:
41
-                lista[k] = leftHalf[i]
42
-                i = i + 1
43
-
44
-            else:
45
-                lista[k] = rightHalf[j]
46
-                j = j + 1
47
-
48
-            k = k + 1
49
-
50
-        # continue updating array grabbing any elements that were left
51
-        while i < len(leftHalf):
52
-            lista[k] = leftHalf[i]
53
-            i = i + 1
54
-            k = k + 1
55
-
56
-        while j < len(rightHalf):
57
-            lista[k] = rightHalf[j]
58
-            j = j + 1
59
-            k = k + 1
60
-
61
-    return lista
62
-
63
-def heapSort(lista):
64
-	#definan el algoritmo de ordenamiento heapsort
65
-    #Andrea V. Nieves
66
-
67
-
68
-    #function def
69
-    def heapify(lista, n, i):
70
-       biggest = i
71
-       left = 2*i + 1
72
-       right = 2*i + 2
73
-
74
-
75
-       if left < n and lista[left] > lista[i]:
76
-           biggest = left
77
-       else:
78
-            biggest = i
79
-
80
-       if right< n and lista[right] > lista[biggest]:
81
-           biggest = right
82
-
83
-       if biggest != i:
84
-           lista[i], lista[biggest] = lista[biggest], lista[i]
85
-           heapify(lista,n,biggest)
86
-
87
-
88
-
89
-
90
-       #actual call
91
-    n = len(lista)
92
-
93
-    for i in range(n // 2 - 1, -1, -1):
94
-        heapify(lista, n, i)
95
-
96
-    for i in range(n - 1, 0, -1):
97
-        lista[i], lista[0] = lista[0], lista[i]
98
-        heapify(lista, i, 0)
99
-
100
-
101
-    return lista
102
-
103
-def quickSort(lista):
104
-	#definan el algoritmo de ordenamiento quicksort
105
-    #Juan F. Hernandez
106
-    # Para este codigo se utilizo referencia de stackoverflow
107
-
108
-    #define arreglos a utilizar
109
-
110
-	lowerArray = []
111
-	equalArray = []
112
-	maxArray = []
113
-
114
-    #organiza los elementos utilizando el pivote para ponerlos en orden
115
-
116
-	if len(lista) > 1:
117
-		pivot = lista[0]
118
-		for x in lista:
119
-			if x < pivot:
120
-				lowerArray.append(x)
121
-			elif x == pivot:
122
-				equalArray.append(x)
123
-			elif x > pivot:
124
-				maxArray.append(x)
125
-
126
-        #concatena arreglos en orden
127
-
128
-		return quickSort(lowerArray)+equalArray+quickSort(maxArray)
129
-
130
-	else:
131
-		return lista
132
-
133
-def shellSort(lista):
134
-	#definan el algoritmo de ordenamiento shellsort
135
-	#Luis E. Ortiz Cotto
136
-	#Este codigo tiene su base de GeeksforGeeks https://www.geeksforgeeks.org/python-program-for-shellsort/
137
-	distance = len(lista) / 2 #Coge la distancia que va a haber entre los valores dentro de la lista para ordenar
138
-
139
-	while distance > 0:
140
-		for i in range(distance, len(lista)): #Empieza a ordenar haciendo un insertion sort para la distancia
141
-			tmp = lista[i] #Guarda temporeramente el valor que esta en la posicion i que se va a cambiar
142
-			j = i #Tiene el valor que va al momento
143
-
144
-			#Empieza a ordernar los elementos hasta que llegue a la localizacion donde esta el valor temporero
145
-			while j >= distance and lista[j - distance] > tmp:
146
-				lista[j] = lista[j - distance]
147
-				j -= distance
148
-
149
-			#Pone el valor temporero en su posicion correcta
150
-			lista[j] = tmp
151
-		distance /= 2 #Coge otra distancia mas entre los valores para ordenarlos otra vez
152
-
153
-	return lista
154
-
155
-maxValor=1000 	#define el valor maximo de los elementos de la lista
156
-largoLista=1000 #define el largo de las listas a ordenar
157
-veces=100 		#define las veces que se va a hacer el ordenamiento
158
-
159
-acumulaMerge=0 	#variable para acumular el tiempo de ejecucion del mergesort
160
-acumulaHeap=0 	#variable para acumular el tiempo de ejecucion del heapsort
161
-acumulaQuick=0 	#variable para acumular el tiempo de ejecucion del quicksort
162
-acumulaShell=0 	#variable para acumular el tiempo de ejecucion del shellsort
163
-
164
-for i in range(veces):
165
-	mergelista = [randint(0,maxValor) for r in range(largoLista)] #creamos una lista con valores al azar
166
-	heaplista=list(mergelista)
167
-	quicklista=list(mergelista)
168
-	searchlista=list(mergelista)
169
-
170
-	t1 = time.clock() 				#seteamos el tiempo al empezar
171
-	mergeSort(mergelista) 				#ejecutamos el algoritmo mergeSort
172
-	acumulaMerge+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
173
-
174
-	t1 = time.clock()				#seteamos el tiempo al empezar
175
-	heapSort(heaplista)					#ejecutamos el algoritmo heapSort
176
-	acumulaHeap+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
177
-
178
-	t1 = time.clock()				#seteamos el tiempo al empezar
179
-	quickSort(quicklista)				#ejecutamos el algoritmo quickSort
180
-	acumulaQuick+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
181
-
182
-	t1 = time.clock()				#seteamos el tiempo al empezar
183
-	shellSort(searchlista)				#ejecutamos el algoritmo shellSort
184
-	acumulaShell+=time.clock()-t1 	#acumulamos el tiempo de ejecucion
185
-
186
-#imprimos los resultados
187
-print "Promedio de tiempo de ejecucion de "+ str(veces) +" listas de largo " + str(largoLista)
188
-print "MergeSort " + str(acumulaMerge/veces) + " segundos"
189
-print "HeapSort " + str(acumulaHeap/veces) + " segundos"
190
-print "QuickSort " + str(acumulaQuick/veces) + " segundos"
191
-print "ShellSort " + str(acumulaShell/veces) + " segundos"

+ 65
- 0
src/App.css View File

@@ -0,0 +1,65 @@
1
+.App {
2
+  text-align: center;
3
+  background-color: lightcyan;
4
+  padding: 10%;
5
+}
6
+
7
+.App_button1 {
8
+  width: 10%;
9
+  border: none;
10
+  background-color: lightgreen;
11
+  padding: 14px 28px;
12
+  font-size: 16px;
13
+  cursor: pointer;
14
+  text-align: center;
15
+  display: inline-block;
16
+  border-radius: 12px;
17
+}
18
+
19
+.App_button::after {
20
+  display: table;
21
+  clear: both;
22
+}
23
+
24
+.App_button {
25
+  display: flex;
26
+}
27
+
28
+.left {
29
+  background-color: lightcyan;
30
+  float: left;
31
+  width: 50%;
32
+  flex: 50%;
33
+  padding: 6%;
34
+}
35
+
36
+.App_button2 {
37
+  width: 50%;
38
+  border: none;
39
+  background-color: lightblue;
40
+  padding: 14px 28px;
41
+  font-size: 16px;
42
+  cursor: pointer;
43
+  text-align: center;
44
+  display: inline-block;
45
+  border-radius: 12px;
46
+}
47
+
48
+.right {
49
+  background-color: lightcyan;
50
+  float: left;
51
+  width: 50%;
52
+  padding: 6%;
53
+}
54
+
55
+.App_button3 {
56
+  width: 50%;
57
+  border: none;
58
+  background-color: lightcoral;
59
+  padding: 14px 28px;
60
+  font-size: 16px;
61
+  cursor: pointer;
62
+  text-align: center;
63
+  display: inline-block;
64
+  border-radius: 12px;
65
+}

+ 56
- 0
src/App.js View File

@@ -0,0 +1,56 @@
1
+import './App.css';
2
+import {Routes, Route, useNavigate} from 'react-router-dom';
3
+import Noticias from './Noticias';
4
+import Datos from './Datos';
5
+
6
+function App() {
7
+  const navigate = useNavigate();
8
+
9
+  const navigateToNoticias = () => {
10
+    // navigate to /Datos.js
11
+    navigate('./Noticias.js', {replace: true});
12
+  };
13
+
14
+  const navigateToDatos = () => {
15
+    // navigate to /Datos.js
16
+    navigate('./Datos.js', {replace: true});
17
+  };
18
+
19
+  return (
20
+    <>
21
+      <div className="App">
22
+        <button type="button" class="App_button1"> login </button>
23
+
24
+        <h1>Bienvenido a la pagina admin</h1>
25
+
26
+        <div className="App_button">
27
+          <div className="left">
28
+            <h1>Noticias:</h1>
29
+
30
+            <h3>Puedes darle add, editar y borrar noticias</h3>
31
+            
32
+            <button type="button" onClick={navigateToNoticias} class="App_button2"> Click Me </button>
33
+
34
+            <Routes>
35
+              <Route path="/Noticias.js" element={<Noticias />} />
36
+            </Routes>
37
+          </div>
38
+          
39
+          <div className="right">
40
+            <h1>Datos:</h1>
41
+
42
+            <h3>Puedes darle add, editar y borrar datos</h3>
43
+
44
+            <button type="button" onClick={navigateToDatos} class="App_button3"> Click Me </button>
45
+
46
+            <Routes>
47
+              <Route path="/Datos.js" element={<Datos />} />
48
+            </Routes>
49
+          </div>
50
+        </div>
51
+      </div>
52
+    </>
53
+  );
54
+}
55
+
56
+export default App;

+ 48
- 0
src/Datos.css View File

@@ -0,0 +1,48 @@
1
+.Datos {
2
+  text-align: center;
3
+}
4
+
5
+.Datos_button::after {
6
+  display: table;
7
+  clear: both;
8
+}
9
+  
10
+.Datos_button {
11
+  display: flex;
12
+}
13
+
14
+.Datos_button1 {
15
+  width: 50%;
16
+  border: none;
17
+  background-color: lightcoral;
18
+  padding: 14px 28px;
19
+  font-size: 16px;
20
+  cursor: pointer;
21
+  text-align: center;
22
+  display: inline-block;
23
+  border-radius: 12px;
24
+}
25
+
26
+.Datos_button2 {
27
+  width: 50%;
28
+  border: none;
29
+  background-color: lightcoral;
30
+  padding: 14px 28px;
31
+  font-size: 16px;
32
+  cursor: pointer;
33
+  text-align: center;
34
+  display: inline-block;
35
+  border-radius: 12px;
36
+}
37
+
38
+.Datos_button3 {
39
+  width: 50%;
40
+  border: none;
41
+  background-color: lightcoral;
42
+  padding: 14px 28px;
43
+  font-size: 16px;
44
+  cursor: pointer;
45
+  text-align: center;
46
+  display: inline-block;
47
+  border-radius: 12px;
48
+}

+ 22
- 0
src/Datos.js View File

@@ -0,0 +1,22 @@
1
+import './Datos.css';
2
+
3
+function Datos() {
4
+    return (
5
+        <>
6
+          <div className="Datos">
7
+    
8
+            <h1>Datos</h1>
9
+    
10
+            <div className="Datos_button">
11
+              <button type="button" class="Datos_button1"> Add </button>
12
+    
13
+              <button type="button" class="Datos_button2"> Modifie </button>
14
+    
15
+              <button type="button" class="Datos_button3"> Delete </button>
16
+            </div>
17
+          </div>
18
+        </>
19
+      );
20
+}
21
+
22
+export default Datos;

+ 48
- 0
src/Noticias.css View File

@@ -0,0 +1,48 @@
1
+.Noticias {
2
+    text-align: center;
3
+}
4
+
5
+.Noticias_button::after {
6
+  display: table;
7
+  clear: both;
8
+}
9
+  
10
+.Noticias_button {
11
+  display: flex;
12
+}
13
+
14
+.Noticias_button1 {
15
+  width: 50%;
16
+  border: none;
17
+  background-color: lightblue;
18
+  padding: 14px 28px;
19
+  font-size: 16px;
20
+  cursor: pointer;
21
+  text-align: center;
22
+  display: inline-block;
23
+  border-radius: 12px;
24
+}
25
+
26
+.Noticias_button2 {
27
+  width: 50%;
28
+  border: none;
29
+  background-color: lightblue;
30
+  padding: 14px 28px;
31
+  font-size: 16px;
32
+  cursor: pointer;
33
+  text-align: center;
34
+  display: inline-block;
35
+  border-radius: 12px;
36
+}
37
+
38
+.Noticias_button3 {
39
+  width: 50%;
40
+  border: none;
41
+  background-color: lightblue;
42
+  padding: 14px 28px;
43
+  font-size: 16px;
44
+  cursor: pointer;
45
+  text-align: center;
46
+  display: inline-block;
47
+  border-radius: 12px;
48
+}

+ 22
- 0
src/Noticias.js View File

@@ -0,0 +1,22 @@
1
+import './Noticias.css';
2
+
3
+function Noticias() {
4
+  return (
5
+    <>
6
+      <div className="Noticias">
7
+
8
+        <h1>Noticias</h1>
9
+
10
+        <div className="Noticias_button">
11
+          <button type="button" class="Noticias_button1"> Add </button>
12
+
13
+          <button type="button" class="Noticias_button2"> Modifie </button>
14
+
15
+          <button type="button" class="Noticias_button3"> Delete </button>
16
+        </div>
17
+      </div>
18
+    </>
19
+  );
20
+}
21
+
22
+export default Noticias;

+ 17
- 0
src/index.js View File

@@ -0,0 +1,17 @@
1
+import React from 'react';
2
+//import ReactDOM from 'react-dom/client';
3
+import App from './App';
4
+import {createRoot} from 'react-dom/client';
5
+import {BrowserRouter as Router} from 'react-router-dom';
6
+
7
+//const root = ReactDOM.createRoot(document.getElementById('root'));
8
+//root.render(<App />);
9
+
10
+const rootElement = document.getElementById('root');
11
+const root = createRoot(rootElement);
12
+
13
+root.render(
14
+  <Router>
15
+    <App />
16
+  </Router>
17
+);

+ 0
- 0
src/login.css View File


+ 0
- 0
src/login.js View File