feat: add boilerplate
This commit is contained in:
BIN
src/assets/UT-Map.png
Normal file
BIN
src/assets/UT-Map.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 227 KiB |
17
src/pages/map/Map.tsx
Normal file
17
src/pages/map/Map.tsx
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import DialogProvider from '@views/components/common/DialogProvider/DialogProvider';
|
||||||
|
import ExtensionRoot from '@views/components/common/ExtensionRoot/ExtensionRoot';
|
||||||
|
import Map from '@views/components/map/Map';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the map page for the UTRP (UT Registration Plus) extension.
|
||||||
|
*/
|
||||||
|
export default function MapPage() {
|
||||||
|
return (
|
||||||
|
<ExtensionRoot>
|
||||||
|
<DialogProvider>
|
||||||
|
<Map />
|
||||||
|
</DialogProvider>
|
||||||
|
</ExtensionRoot>
|
||||||
|
);
|
||||||
|
}
|
||||||
16
src/pages/map/index.html
Normal file
16
src/pages/map/index.html
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
|
<meta name="theme-color" content="#000000" />
|
||||||
|
<title>UTRP Map</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body style="min-height: 100vh; height: 0; margin: 0">
|
||||||
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
||||||
|
<div id="root"></div>
|
||||||
|
|
||||||
|
<script src="./index.tsx" type="module"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
6
src/pages/map/index.tsx
Normal file
6
src/pages/map/index.tsx
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import React from 'react';
|
||||||
|
import { createRoot } from 'react-dom/client';
|
||||||
|
|
||||||
|
import Map from './Map';
|
||||||
|
|
||||||
|
createRoot(document.getElementById('root')!).render(<Map />);
|
||||||
60
src/views/components/map/Map.tsx
Normal file
60
src/views/components/map/Map.tsx
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
import { Button } from '@views/components/common/Button';
|
||||||
|
import Divider from '@views/components/common/Divider';
|
||||||
|
import { LargeLogo } from '@views/components/common/LogoIcon';
|
||||||
|
import Text from '@views/components/common/Text/Text';
|
||||||
|
import useChangelog from '@views/hooks/useChangelog';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
import IconoirGitFork from '~icons/iconoir/git-fork';
|
||||||
|
|
||||||
|
import CalendarFooter from '../calendar/CalendarFooter';
|
||||||
|
import { CalendarSchedules } from '../calendar/CalendarSchedules';
|
||||||
|
import ImportantLinks from '../calendar/ImportantLinks';
|
||||||
|
import TeamLinks from '../calendar/TeamLinks';
|
||||||
|
|
||||||
|
const manifest = chrome.runtime.getManifest();
|
||||||
|
const LDIconURL = new URL('/src/assets/LD-icon.png', import.meta.url).href;
|
||||||
|
const UTMapURL = new URL('/src/assets/UT-Map.png', import.meta.url).href;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the map component for the UTRP (UT Registration Plus) extension.
|
||||||
|
*/
|
||||||
|
export default function Map(): JSX.Element {
|
||||||
|
const handleChangelogOnClick = useChangelog();
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<header className='flex items-center gap-5 overflow-x-auto overflow-y-hidden border-b border-ut-offwhite px-7 py-4 md:overflow-x-hidden'>
|
||||||
|
<LargeLogo />
|
||||||
|
<Divider className='mx-2 self-center md:mx-4' size='2.5rem' orientation='vertical' />
|
||||||
|
<Text variant='h1' className='flex-1 text-ut-burntorange'>
|
||||||
|
UTRP Map
|
||||||
|
</Text>
|
||||||
|
<div className='hidden flex-row items-center justify-end gap-6 screenshot:hidden lg:flex'>
|
||||||
|
<Button variant='single' color='theme-black' onClick={handleChangelogOnClick}>
|
||||||
|
<IconoirGitFork className='h-6 w-6 text-ut-gray' />
|
||||||
|
<Text variant='small' className='text-ut-gray font-normal'>
|
||||||
|
v{manifest.version} - {process.env.NODE_ENV}
|
||||||
|
</Text>
|
||||||
|
</Button>
|
||||||
|
<img src={LDIconURL} alt='LD Icon' className='h-10 w-10 rounded-lg' />
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<div className='h-full flex flex-row'>
|
||||||
|
<div className='h-full flex flex-none flex-col justify-between pb-5 screenshot:hidden'>
|
||||||
|
<div className='mb-3 h-full w-fit flex flex-col overflow-auto pb-2 pl-4.5 pr-4 pt-5'>
|
||||||
|
<CalendarSchedules />
|
||||||
|
<Divider orientation='horizontal' size='100%' className='my-5' />
|
||||||
|
<ImportantLinks />
|
||||||
|
<Divider orientation='horizontal' size='100%' className='my-5' />
|
||||||
|
<TeamLinks />
|
||||||
|
</div>
|
||||||
|
<CalendarFooter />
|
||||||
|
</div>
|
||||||
|
<div className='flex p-12'>
|
||||||
|
<img src={UTMapURL} alt='LD Icon' />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -142,6 +142,7 @@ export default defineConfig({
|
|||||||
renameFile('src/pages/options/index.html', 'options.html'),
|
renameFile('src/pages/options/index.html', 'options.html'),
|
||||||
renameFile('src/pages/calendar/index.html', 'calendar.html'),
|
renameFile('src/pages/calendar/index.html', 'calendar.html'),
|
||||||
renameFile('src/pages/report/index.html', 'report.html'),
|
renameFile('src/pages/report/index.html', 'report.html'),
|
||||||
|
renameFile('src/pages/map/index.html', 'map.html'),
|
||||||
vitePluginRunCommandOnDemand({
|
vitePluginRunCommandOnDemand({
|
||||||
afterServerStart: 'pnpm gulp forceDisableUseDynamicUrl',
|
afterServerStart: 'pnpm gulp forceDisableUseDynamicUrl',
|
||||||
closeBundle: 'pnpm gulp forceDisableUseDynamicUrl',
|
closeBundle: 'pnpm gulp forceDisableUseDynamicUrl',
|
||||||
@@ -181,6 +182,10 @@ export default defineConfig({
|
|||||||
target: 'http://localhost:5173',
|
target: 'http://localhost:5173',
|
||||||
rewrite: path => path.replace('report', 'src/pages/report/index'),
|
rewrite: path => path.replace('report', 'src/pages/report/index'),
|
||||||
},
|
},
|
||||||
|
'/map.html': {
|
||||||
|
target: 'http://localhost:5173',
|
||||||
|
rewrite: path => path.replace('map', 'src/pages/map/index'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
build: {
|
build: {
|
||||||
@@ -194,6 +199,7 @@ export default defineConfig({
|
|||||||
calendar: 'src/pages/calendar/index.html',
|
calendar: 'src/pages/calendar/index.html',
|
||||||
options: 'src/pages/options/index.html',
|
options: 'src/pages/options/index.html',
|
||||||
report: 'src/pages/report/index.html',
|
report: 'src/pages/report/index.html',
|
||||||
|
map: 'src/pages/map/index.html',
|
||||||
},
|
},
|
||||||
output: {
|
output: {
|
||||||
chunkFileNames: `assets/[name]-[hash].js`,
|
chunkFileNames: `assets/[name]-[hash].js`,
|
||||||
|
|||||||
Reference in New Issue
Block a user