diff --git a/package.json b/package.json index 550b261a..ff8196b2 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,8 @@ "scripts": { "serve": "vue-cli-service serve --mode development", "lint": "vue-cli-service lint", - "build": "vue-cli-service build --target lib --name neko ./src/index.ts" + "build": "vue-cli-service build --target lib --name neko ./src/index.ts", + "build:page": "vue-cli-service build" }, "dependencies": { "axios": "^0.27.2", diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 00000000..6b26d5eb --- /dev/null +++ b/src/main.ts @@ -0,0 +1,8 @@ +import Vue from 'vue' +import app from './page/main.vue' + +Vue.config.productionTip = false + +new Vue({ + render: (h) => h(app), +}).$mount('#app') diff --git a/src/page/assets/styles/_reset.scss b/src/page/assets/styles/_reset.scss new file mode 100644 index 00000000..86d47b5d --- /dev/null +++ b/src/page/assets/styles/_reset.scss @@ -0,0 +1,360 @@ +html, body, div, span, applet, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +a, abbr, acronym, address, big, cite, code, +del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, +b, u, i, center, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, embed, +figure, figcaption, footer, header, hgroup, +menu, nav, output, ruby, section, summary, +time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font: inherit; + font-size: 100%; + vertical-align: baseline; +} + +/* make sure to set some focus styles for accessibility */ +:focus { + outline: 0; +} + +/* HTML5 display-role reset for older browsers */ +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block; +} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + +blockquote:before, blockquote:after, +q:before, q:after { + content: ''; + content: none; +} + +table { + border-collapse: collapse; + border-spacing: 0; +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration, +input[type=search]::-webkit-search-results-button, +input[type=search]::-webkit-search-results-decoration { + -webkit-appearance: none; + -moz-appearance: none; +} + +input[type=search] { + -webkit-appearance: none; + -moz-appearance: none; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +textarea { + overflow: auto; + vertical-align: top; + resize: vertical; +} + +/** +* Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3. +*/ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; + max-width: 100%; +} + +/** +* Prevent modern browsers from displaying `audio` without controls. +* Remove excess height in iOS 5 devices. +*/ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** +* Address styling not present in IE 7/8/9, Firefox 3, and Safari 4. +* Known issue: no IE 6 support. +*/ + +[hidden] { + display: none; +} + +/** +* 1. Correct text resizing oddly in IE 6/7 when body `font-size` is set using +* `em` units. +* 2. Prevent iOS text size adjust after orientation change, without disabling +* user zoom. +*/ + +html { + font-size: 100%; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/** +* Address `outline` inconsistency between Chrome and other browsers. +*/ + +a:focus { + outline: none; +} + +/** +* Improve readability when focused and also mouse hovered in all browsers. +*/ + +a:active, +a:hover { + outline: 0; +} + +/** +* 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3. +* 2. Improve image quality when scaled in IE 7. +*/ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/** +* Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11. +*/ + +figure { + margin: 0; +} + +/** +* Correct margin displayed oddly in IE 6/7. +*/ + +form { + margin: 0; +} + +/** +* Define consistent border, margin, and padding. +*/ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** +* 1. Correct color not being inherited in IE 6/7/8/9. +* 2. Correct text not wrapping in Firefox 3. +* 3. Correct alignment displayed oddly in IE 6/7. +*/ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/** +* 1. Correct font size not being inherited in all browsers. +* 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5, +* and Chrome. +* 3. Improve appearance and consistency in all browsers. +*/ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/** +* Address Firefox 3+ setting `line-height` on `input` using `!important` in +* the UA stylesheet. +*/ + +button, +input { + line-height: normal; +} + +/** +* Address inconsistent `text-transform` inheritance for `button` and `select`. +* All other form control elements do not inherit `text-transform` values. +* Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+. +* Correct `select` style inheritance in Firefox 4+ and Opera. +*/ + +button, +select { + text-transform: none; +} + +/** +* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` +* and `video` controls. +* 2. Correct inability to style clickable `input` types in iOS. +* 3. Improve usability and consistency of cursor style between image-type +* `input` and others. +* 4. Remove inner spacing in IE 7 without affecting normal text inputs. +* Known issue: inner spacing remains in IE 6. +*/ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ + *overflow: visible; /* 4 */ +} + +/** +* Re-set default cursor for disabled elements. +*/ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** +* 1. Address box sizing set to content-box in IE 8/9. +* 2. Remove excess padding in IE 8/9. +* 3. Remove excess padding in IE 7. +* Known issue: excess padding remains in IE 6. +*/ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/** +* 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. +* 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome +* (include `-moz` to future-proof). +*/ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** +* Remove inner padding and search cancel button in Safari 5 and Chrome +* on OS X. +*/ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** +* Remove inner padding and border in Firefox 3+. +*/ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** +* 1. Remove default vertical scrollbar in IE 6/7/8/9. +* 2. Improve readability and alignment in all browsers. +*/ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + +/** +* Remove most spacing between table cells. +*/ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +html, +button, +input, +select, +textarea { + color: #222; +} + +/* +::-moz-selection { + text-shadow: none; +} + +::selection { + text-shadow: none; +} +*/ + +img { + vertical-align: middle; +} + +fieldset { + border: 0; + margin: 0; + padding: 0; +} + +textarea { + resize: vertical; +} + +.chromeframe { + margin: 0.2em 0; + background: #ccc; + color: #000; + padding: 0.2em 0; +} diff --git a/src/page/assets/styles/_variables.scss b/src/page/assets/styles/_variables.scss new file mode 100644 index 00000000..a9a1452a --- /dev/null +++ b/src/page/assets/styles/_variables.scss @@ -0,0 +1,29 @@ +$text-family: Whitney, Helvetica Neue, Helvetica, Arial, sans-serif;; +$text-size: 14px; +$text-normal: #dcddde; +$text-muted: #72767d; +$text-link: #00b0f4; + +$interactive-normal: #b9bbbe; +$interactive-hover: #dcddde; +$interactive-muted: #4f545c; + +$background-primary: #36393f; +$background-secondary: #2f3136; +$background-tertiary: #202225; +$background-accent: #4f545c; +$background-floating: #18191c; +$background-modifier-hover: rgba(79, 84, 92, 0.16); +$background-modifier-active: rgba(79, 84, 92, 0.24); +$background-modifier-selected: rgba(79, 84, 92, 0.32); +$background-modifier-accent: hsla(0, 0%, 100%, 0.06); + +$elevation-low: 0 1px 0 rgba(4, 4, 5, 0.2), 0 1.5px 0 rgba(6, 6, 7, 0.05), 0 2px 0 rgba(4, 4, 5, 0.05); +$elevation-high: 0 8px 16px rgba(0, 0, 0, 0.24); + +$style-primary: #19bd9c; +$style-error: #d32f2f; + +$menu-height: 40px; +$controls-height: 125px; +$side-width: 400px; diff --git a/src/page/assets/styles/main.scss b/src/page/assets/styles/main.scss new file mode 100644 index 00000000..ef026514 --- /dev/null +++ b/src/page/assets/styles/main.scss @@ -0,0 +1,22 @@ +@charset "utf-8"; + +// Import variables +@import "variables"; + +// Reset CSS +@import "reset"; + +// Import Vendor +@import "vendor/font-awesome"; + +html, body { + -webkit-font-smoothing: subpixel-antialiased; + background-color: $background-tertiary; + font-family: $text-family; + font-size: $text-size; + color: $text-normal; + overflow: hidden; + width: 100vw; + height: 100vh; + min-width: 320px; +} diff --git a/src/page/assets/styles/vendor/_font-awesome.scss b/src/page/assets/styles/vendor/_font-awesome.scss new file mode 100644 index 00000000..7b4a7802 --- /dev/null +++ b/src/page/assets/styles/vendor/_font-awesome.scss @@ -0,0 +1,22 @@ +// Variables + +@use "sass:math"; + +$fa-font-path: "~@fortawesome/fontawesome-free/webfonts"; +$fa-font-size-base: 16px; +$fa-font-display: auto; +$fa-css-prefix: fa; +$fa-border-color: #eee; +$fa-inverse: #fff; +$fa-li-width: 2em; +$fa-fw-width: math.div(20em, 16); +$fa-primary-opacity: 1; +$fa-secondary-opacity: .4; + +$fa-family-default: 'Font Awesome 6 Free'; + +// Import FA source files +@import "~@fortawesome/fontawesome-free/scss/brands"; +@import "~@fortawesome/fontawesome-free/scss/solid"; +@import "~@fortawesome/fontawesome-free/scss/regular"; +@import "~@fortawesome/fontawesome-free/scss/fontawesome"; diff --git a/src/page/components/chat.vue b/src/page/components/chat.vue new file mode 100644 index 00000000..5148c401 --- /dev/null +++ b/src/page/components/chat.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/src/page/components/header.vue b/src/page/components/header.vue new file mode 100644 index 00000000..7bb6a018 --- /dev/null +++ b/src/page/components/header.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/src/page/components/media.vue b/src/page/components/media.vue new file mode 100644 index 00000000..0b1b0f2e --- /dev/null +++ b/src/page/components/media.vue @@ -0,0 +1,145 @@ + + + + + diff --git a/src/page/components/members.vue b/src/page/components/members.vue new file mode 100644 index 00000000..20b0d0f2 --- /dev/null +++ b/src/page/components/members.vue @@ -0,0 +1,569 @@ + + + + + diff --git a/src/page/main.vue b/src/page/main.vue new file mode 100644 index 00000000..41839f03 --- /dev/null +++ b/src/page/main.vue @@ -0,0 +1,597 @@ + + + + + + +