initial commit (long overdue)
This commit is contained in:
14
17th Website/.eslintrc.cjs
Normal file
14
17th Website/.eslintrc.cjs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/* eslint-env node */
|
||||||
|
require('@rushstack/eslint-patch/modern-module-resolution')
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
'extends': [
|
||||||
|
'plugin:vue/vue3-essential',
|
||||||
|
'eslint:recommended',
|
||||||
|
'@vue/eslint-config-prettier/skip-formatting'
|
||||||
|
],
|
||||||
|
parserOptions: {
|
||||||
|
ecmaVersion: 'latest'
|
||||||
|
}
|
||||||
|
}
|
||||||
28
17th Website/.gitignore
vendored
Normal file
28
17th Website/.gitignore
vendored
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
.DS_Store
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
coverage
|
||||||
|
*.local
|
||||||
|
|
||||||
|
/cypress/videos/
|
||||||
|
/cypress/screenshots/
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
8
17th Website/.prettierrc.json
Normal file
8
17th Website/.prettierrc.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://json.schemastore.org/prettierrc",
|
||||||
|
"semi": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"singleQuote": true,
|
||||||
|
"printWidth": 100,
|
||||||
|
"trailingComma": "none"
|
||||||
|
}
|
||||||
3
17th Website/.vscode/extensions.json
vendored
Normal file
3
17th Website/.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
|
||||||
|
}
|
||||||
35
17th Website/README.md
Normal file
35
17th Website/README.md
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# 17th Website
|
||||||
|
|
||||||
|
This template should help get you started developing with Vue 3 in Vite.
|
||||||
|
|
||||||
|
## Recommended IDE Setup
|
||||||
|
|
||||||
|
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
||||||
|
|
||||||
|
## Customize configuration
|
||||||
|
|
||||||
|
See [Vite Configuration Reference](https://vitejs.dev/config/).
|
||||||
|
|
||||||
|
## Project Setup
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compile and Hot-Reload for Development
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Compile and Minify for Production
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lint with [ESLint](https://eslint.org/)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm run lint
|
||||||
|
```
|
||||||
13
17th Website/index.html
Normal file
13
17th Website/index.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<link rel="icon" href="/favicon.ico">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>17th stuff n things</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="/src/main.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
16483
17th Website/package-lock.json
generated
Normal file
16483
17th Website/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
27
17th Website/package.json
Normal file
27
17th Website/package.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"name": "17th-website",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview",
|
||||||
|
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore",
|
||||||
|
"format": "prettier --write src/"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"vue": "^3.2.47",
|
||||||
|
"vue-router": "^4.2.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@iconify/vue": "^4.1.1",
|
||||||
|
"@rushstack/eslint-patch": "^1.2.0",
|
||||||
|
"@vitejs/plugin-vue": "^4.2.1",
|
||||||
|
"@vue/cli-plugin-router": "~5.0.0",
|
||||||
|
"@vue/eslint-config-prettier": "^7.1.0",
|
||||||
|
"eslint": "^8.39.0",
|
||||||
|
"eslint-plugin-vue": "^9.11.0",
|
||||||
|
"prettier": "^2.8.8",
|
||||||
|
"vite": "^4.3.4"
|
||||||
|
}
|
||||||
|
}
|
||||||
BIN
17th Website/public/favicon.ico
Normal file
BIN
17th Website/public/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.2 KiB |
24
17th Website/src/App.vue
Normal file
24
17th Website/src/App.vue
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<script setup>
|
||||||
|
import Navbar from './components/navigation/Navbar.vue'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<Navbar />
|
||||||
|
<div id="content-wrapper">
|
||||||
|
<RouterView />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: var(--background-primary);
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#content-wrapper {
|
||||||
|
display: block;
|
||||||
|
margin: 0 0 0 50px;
|
||||||
|
|
||||||
|
padding: 0px 100px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
16
17th Website/src/assets/base.css
Normal file
16
17th Website/src/assets/base.css
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
/* color palette from <https://github.com/vuejs/theme> */
|
||||||
|
:root {
|
||||||
|
--background-primary: #272731;
|
||||||
|
--background-secondary: #1C1C21;
|
||||||
|
--accent-primary: #01bde7;
|
||||||
|
--white: #EDF2F4;
|
||||||
|
|
||||||
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: var(--white);
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 60px;
|
||||||
|
margin: 20px 0 20px 0px;
|
||||||
|
}
|
||||||
1
17th Website/src/assets/logo.svg
Normal file
1
17th Website/src/assets/logo.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 261.76 226.69"><path d="M161.096.001l-30.225 52.351L100.647.001H-.005l130.877 226.688L261.749.001z" fill="#41b883"/><path d="M161.096.001l-30.225 52.351L100.647.001H52.346l78.526 136.01L209.398.001z" fill="#34495e"/></svg>
|
||||||
|
After Width: | Height: | Size: 276 B |
23
17th Website/src/assets/main.css
Normal file
23
17th Website/src/assets/main.css
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
@import './base.css';
|
||||||
|
|
||||||
|
#app {
|
||||||
|
/* max-width: 1280px; */
|
||||||
|
/* margin: 0 auto;
|
||||||
|
padding: 2rem; */
|
||||||
|
|
||||||
|
/* font-weight: normal; */
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @media (min-width: 1024px) {
|
||||||
|
body {
|
||||||
|
display: flex;
|
||||||
|
place-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
#app {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
padding: 0 2rem;
|
||||||
|
}
|
||||||
|
} */
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<h1>This is activity history</h1>
|
||||||
|
</template>
|
||||||
5
17th Website/src/components/ProfilePage/personnel.vue
Normal file
5
17th Website/src/components/ProfilePage/personnel.vue
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<h1>this is a personnel file</h1>
|
||||||
|
</template>
|
||||||
34
17th Website/src/components/ProfilePage/profileHeader.vue
Normal file
34
17th Website/src/components/ProfilePage/profileHeader.vue
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'profileHeader',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
count: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<div id="headerImages">
|
||||||
|
<img id="rankImg" src="../icons/misc/test.png" />
|
||||||
|
<img id="rangerTab" src="#"/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<h1>Dis the header</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#rankImg {
|
||||||
|
max-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#headerImages {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
3
17th Website/src/components/ProfilePage/shadowbox.vue
Normal file
3
17th Website/src/components/ProfilePage/shadowbox.vue
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
<template>
|
||||||
|
<h1>This is shadowbox</h1>
|
||||||
|
</template>
|
||||||
53
17th Website/src/components/cards/Alert.vue
Normal file
53
17th Website/src/components/cards/Alert.vue
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
<script setup>
|
||||||
|
import { Icon } from '@iconify/vue'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export const Alert = {
|
||||||
|
name: 'Alert',
|
||||||
|
props: {
|
||||||
|
icon: String,
|
||||||
|
title: String,
|
||||||
|
message: String
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="alert">
|
||||||
|
<div class="alertHead">
|
||||||
|
<p>
|
||||||
|
<Icon icon="carbon:warning" />
|
||||||
|
</p>
|
||||||
|
<h2>{{title}}</h2>
|
||||||
|
</div>
|
||||||
|
<p>{{message}}</p>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.alert {
|
||||||
|
background-color: #e0c422;
|
||||||
|
color: var(--background-secorndary);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
max-width: 800px;
|
||||||
|
margin: 20px auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alertHead {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alertHead p {
|
||||||
|
display: flex;
|
||||||
|
font-size: 35px;
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alertHead h2 {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
18
17th Website/src/components/cards/Card.vue
Normal file
18
17th Website/src/components/cards/Card.vue
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<template>
|
||||||
|
<div class="card">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.card {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: var(--white);
|
||||||
|
padding: 0 10px;
|
||||||
|
margin: 10px;
|
||||||
|
border-radius: 10px;
|
||||||
|
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
|
||||||
|
height: fit-content;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
48
17th Website/src/components/dropdown/Dropdown.vue
Normal file
48
17th Website/src/components/dropdown/Dropdown.vue
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
<script>
|
||||||
|
import { provide } from 'vue';
|
||||||
|
import { Icon } from '@iconify/vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'Dropdown',
|
||||||
|
provide() {
|
||||||
|
return {
|
||||||
|
sharedState: this.sharedState
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
sharedState: {
|
||||||
|
active: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toggle() {
|
||||||
|
this.sharedState.active = !this.sharedState.active
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div @click="toggle">
|
||||||
|
<slot name="toggler">
|
||||||
|
<button>toggle <a href="#">hello</a></button>
|
||||||
|
<Icon icon="carbon:caret-down"/>
|
||||||
|
</slot>
|
||||||
|
<slot/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
button {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
font-size: 15px;
|
||||||
|
padding: 10px;
|
||||||
|
color: var(--white);
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
19
17th Website/src/components/dropdown/DropdownContent.vue
Normal file
19
17th Website/src/components/dropdown/DropdownContent.vue
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<script>
|
||||||
|
import { inject } from 'vue';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'DropdownContent',
|
||||||
|
inject: ['sharedState'],
|
||||||
|
computed: {
|
||||||
|
active() {
|
||||||
|
return this.sharedState.active
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div v-if="active">
|
||||||
|
<slot />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
5
17th Website/src/components/dropdown/DropdownItem.vue
Normal file
5
17th Website/src/components/dropdown/DropdownItem.vue
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
test
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
BIN
17th Website/src/components/icons/misc/test.png
Normal file
BIN
17th Website/src/components/icons/misc/test.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
93
17th Website/src/components/navigation/Navbar.vue
Normal file
93
17th Website/src/components/navigation/Navbar.vue
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<script>
|
||||||
|
import navitem from './navitem.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
navitem
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeButton: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setActive(btn) {
|
||||||
|
this.activeButton = btn
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<div class="sidebar">
|
||||||
|
|
||||||
|
<!-- TODO: Connect these buttons to the scripts, figure out if I can turn this into a component or summ -->
|
||||||
|
<navitem icon="carbon:user" link="/profile" @click="setActive('#user')" :active="activeButton === '#user'" />
|
||||||
|
<hr>
|
||||||
|
<navitem icon="carbon:home" link="/" @click="setActive('#home')" :active="activeButton === '#home'" />
|
||||||
|
<navitem icon="carbon:events" link="/users" @click="setActive('#users')" :active="activeButton === '#users'"/>
|
||||||
|
<navitem icon="carbon:align-box-bottom-left" link="#" @click="setActive('#docs')" :active="activeButton === '#docs'"/>
|
||||||
|
<navitem icon="carbon:tool-kit" link="#" @click="setActive('#tools')" :active="activeButton === '#tools'"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
/*
|
||||||
|
COLOR PALLETE
|
||||||
|
BLACK #1C1C21
|
||||||
|
LIGHTER BLACK #272731
|
||||||
|
WHITE #EDF2F4
|
||||||
|
GREEN #71F79F
|
||||||
|
BLUE #46B1C9
|
||||||
|
RED #F93943
|
||||||
|
|
||||||
|
https://coolors.co/1c1c21-0de75a-46b1c9-f93943-edf2f4
|
||||||
|
https://dribbble.com/shots/4532899-dark-theme-table-view/attachments/10450101?mode=media
|
||||||
|
https://icon-sets.iconify.design/carbon/
|
||||||
|
|
||||||
|
USING THE IBM CARBON ICON SET
|
||||||
|
*/
|
||||||
|
|
||||||
|
.sidebar {
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
text-align: center;
|
||||||
|
width: 80px;
|
||||||
|
height: 100vh;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar a {
|
||||||
|
color: var(--white);
|
||||||
|
font-size: 30px;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 10px 10px;
|
||||||
|
padding: 5px;
|
||||||
|
transition: color 0.2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar a:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
/* border: 2px solid var(--accent-primary); */
|
||||||
|
/* border-radius: 10px; */
|
||||||
|
outline-color: var(--accent-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sidebar hr {
|
||||||
|
margin: 0 15%;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
66
17th Website/src/components/navigation/navitem.vue
Normal file
66
17th Website/src/components/navigation/navitem.vue
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
<!-- <script>
|
||||||
|
export const navitem = {
|
||||||
|
props: ['icon', 'link']
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script setup>
|
||||||
|
import { Icon } from '@iconify/vue'
|
||||||
|
|
||||||
|
</script> -->
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { Icon } from '@iconify/vue'
|
||||||
|
import { RouterLink } from 'vue-router';
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'navitem',
|
||||||
|
props: {
|
||||||
|
icon: String,
|
||||||
|
link: String,
|
||||||
|
active: Boolean
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
setActive() {
|
||||||
|
// Your code here
|
||||||
|
alert(`Hello ${event.target}!`)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
Icon,
|
||||||
|
RouterLink
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<RouterLink :to="link" class="button" :class="{active: active}">
|
||||||
|
<Icon :icon="icon" />
|
||||||
|
</RouterLink>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.button {
|
||||||
|
color: var(--white);
|
||||||
|
font-size: 30px;
|
||||||
|
overflow: hidden;
|
||||||
|
height: 40px;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: 10px 10px;
|
||||||
|
padding: 5px;
|
||||||
|
transition: color 0.2s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button:hover {
|
||||||
|
color: var(--accent-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.active {
|
||||||
|
border: 2px solid var(--accent-primary);
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
7
17th Website/src/main.js
Normal file
7
17th Website/src/main.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
import './assets/main.css'
|
||||||
|
|
||||||
|
import { createApp } from 'vue'
|
||||||
|
import App from './App.vue'
|
||||||
|
import router from './router'
|
||||||
|
|
||||||
|
createApp(App).use(router).mount('#app')
|
||||||
23
17th Website/src/router.js
Normal file
23
17th Website/src/router.js
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import { createRouter, createWebHistory } from 'vue-router'
|
||||||
|
import home from './views/home.vue'
|
||||||
|
|
||||||
|
export default createRouter({
|
||||||
|
history: createWebHistory(),
|
||||||
|
routes: [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
name: 'Home',
|
||||||
|
component: () => import('./views/home.vue'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/profile',
|
||||||
|
name: 'Profile',
|
||||||
|
component: () => import('./views/profile.vue'),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/users',
|
||||||
|
name: 'Users',
|
||||||
|
component: () => import('./views/users.vue'),
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})
|
||||||
5
17th Website/src/views/home.vue
Normal file
5
17th Website/src/views/home.vue
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<template>
|
||||||
|
<div>
|
||||||
|
<h1>Home screen</h1>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
0
17th Website/src/views/personnel.vue
Normal file
0
17th Website/src/views/personnel.vue
Normal file
16
17th Website/src/views/profile.vue
Normal file
16
17th Website/src/views/profile.vue
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<script>
|
||||||
|
import profileHeader from '../components/ProfilePage/profileHeader.vue'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
name: 'ProfilePage',
|
||||||
|
components: {
|
||||||
|
profileHeader
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<profileHeader></profileHeader>
|
||||||
|
test words
|
||||||
|
</template>
|
||||||
187
17th Website/src/views/users.vue
Normal file
187
17th Website/src/views/users.vue
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
<script>
|
||||||
|
import Dropdown from '../components/dropdown/Dropdown.vue'
|
||||||
|
import DropdownContent from '../components/dropdown/DropdownContent.vue'
|
||||||
|
import DropdownItem from '../components/dropdown/DropDownItem.vue'
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
parentMessage: 'Parent',
|
||||||
|
items: [{ message: 'Foo' }, { message: 'Bar' }],
|
||||||
|
dropped: false,
|
||||||
|
search: '',
|
||||||
|
filter1: 'All Groups',
|
||||||
|
filter2: 'All Roles',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
toggle: () => {
|
||||||
|
this.dropped = !this.dropped
|
||||||
|
},
|
||||||
|
resetFilters() {
|
||||||
|
this.filter1 = 'All Groups'
|
||||||
|
this.filter2 = 'All Roles'
|
||||||
|
this.search = ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
Dropdown,
|
||||||
|
DropdownContent,
|
||||||
|
DropdownItem
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<!-- Page header (but not really) -->
|
||||||
|
<div id="header">
|
||||||
|
|
||||||
|
<h1>Members</h1>
|
||||||
|
<div id="searchRow">
|
||||||
|
<input type="text" v-model="search" placeholder="Search..." />
|
||||||
|
<div id="dropdownWrapper">
|
||||||
|
<select v-model="filter1">
|
||||||
|
<option>All Groups</option>
|
||||||
|
<option>Alpha</option>
|
||||||
|
<option>Echo</option>
|
||||||
|
<option>HHC</option>
|
||||||
|
<option>Recruit</option>
|
||||||
|
</select>
|
||||||
|
<select v-model="filter2">
|
||||||
|
<option>All Roles</option>
|
||||||
|
<option>NCO</option>
|
||||||
|
<option>Admin</option>
|
||||||
|
<option>Recruiter</option>
|
||||||
|
<option>RRC</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<dropdown>
|
||||||
|
<DropdownContent>
|
||||||
|
<DropDownItem>Test1</DropDownItem>
|
||||||
|
</DropdownContent>
|
||||||
|
</dropdown>
|
||||||
|
|
||||||
|
<!-- This button needs to get finished -->
|
||||||
|
<button @click="resetFilters()">Clear Filters</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<table id="userTable">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Member</th>
|
||||||
|
<th>Unit</th>
|
||||||
|
<th>Rank</th>
|
||||||
|
<th>Join Date</th>
|
||||||
|
<th>LOA Until</th>
|
||||||
|
<th>Last Active</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody id="tableBody">
|
||||||
|
<tr v-for="(item, index) in items">
|
||||||
|
<td>{{ parentMessage }}</td>
|
||||||
|
<td>{{ index }}</td>
|
||||||
|
<td>{{ item.message }}</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@import '../assets/base.css';
|
||||||
|
|
||||||
|
button {
|
||||||
|
transition: all 0.2s ease-out;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
button:hover {
|
||||||
|
background-color: var(--accent-primary);
|
||||||
|
}
|
||||||
|
|
||||||
|
.clicked {
|
||||||
|
filter: brightness(85%)
|
||||||
|
}
|
||||||
|
|
||||||
|
#dropdownWrapper {
|
||||||
|
margin: 0 15px;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
#dropdownWrapper select {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
border: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
color: var(--white);
|
||||||
|
padding: 10px;
|
||||||
|
outline: none;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
input {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
padding: 10px;
|
||||||
|
font-size: 15px;
|
||||||
|
color: var(--white);
|
||||||
|
border-style: none;
|
||||||
|
border-radius: 5px;
|
||||||
|
width: 25vw;
|
||||||
|
/* transition: all 0.2s ease-out; THESE TRANSITIONS ARE BROKEN*/
|
||||||
|
}
|
||||||
|
|
||||||
|
/* textarea:focus, input:focus {
|
||||||
|
outline-color: var(--accent-primary);
|
||||||
|
border-color: var(--accent-primary);
|
||||||
|
} */
|
||||||
|
|
||||||
|
#searchRow {
|
||||||
|
margin: 30px 0;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
#searchRow select, button {
|
||||||
|
margin: 0 15px 0 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header h1 {
|
||||||
|
color: var(--white);
|
||||||
|
font-weight: 400;
|
||||||
|
font-size: 60px;
|
||||||
|
margin: 20px 0 20px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr {
|
||||||
|
/* background-color: white; */
|
||||||
|
border-style: none none solid none;
|
||||||
|
border-width: 2px;
|
||||||
|
border-color: var(--background-secondary);
|
||||||
|
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 100;
|
||||||
|
color: var(--white);
|
||||||
|
}
|
||||||
|
|
||||||
|
tr:hover {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table styles */
|
||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
border-collapse: collapse;
|
||||||
|
}
|
||||||
|
|
||||||
|
th,
|
||||||
|
td {
|
||||||
|
/* border: 1px solid #dddddd; */
|
||||||
|
text-align: left;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
th {
|
||||||
|
background-color: var(--background-secondary);
|
||||||
|
font-size: 18px;
|
||||||
|
cursor: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
14
17th Website/vite.config.js
Normal file
14
17th Website/vite.config.js
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import { fileURLToPath, URL } from 'node:url'
|
||||||
|
|
||||||
|
import { defineConfig } from 'vite'
|
||||||
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
|
||||||
|
// https://vitejs.dev/config/
|
||||||
|
export default defineConfig({
|
||||||
|
plugins: [vue()],
|
||||||
|
resolve: {
|
||||||
|
alias: {
|
||||||
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
Reference in New Issue
Block a user