mirror of
https://github.com/Eugeny/tabby-web.git
synced 2025-06-11 15:09:57 +00:00
wip
This commit is contained in:
parent
5fccca2f00
commit
533749092a
@ -1,5 +1,5 @@
|
|||||||
import { NgModule } from '@angular/core'
|
import { NgModule } from '@angular/core'
|
||||||
import { NgbDropdownModule, NgbModalModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap'
|
import { NgbDropdownModule, NgbModalModule } from '@ng-bootstrap/ng-bootstrap'
|
||||||
import { BrowserModule } from '@angular/platform-browser'
|
import { BrowserModule } from '@angular/platform-browser'
|
||||||
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'
|
||||||
import { CommonModule } from '@angular/common'
|
import { CommonModule } from '@angular/common'
|
||||||
@ -9,20 +9,15 @@ import { HttpClientModule, HttpClientXsrfModule, HTTP_INTERCEPTORS } from '@angu
|
|||||||
import { ClipboardModule } from '@angular/cdk/clipboard'
|
import { ClipboardModule } from '@angular/cdk/clipboard'
|
||||||
import { TransferHttpCacheModule } from '@nguniversal/common'
|
import { TransferHttpCacheModule } from '@nguniversal/common'
|
||||||
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'
|
||||||
import { NgxImageZoomModule } from 'ngx-image-zoom'
|
|
||||||
|
|
||||||
import { BackendXsrfInterceptor, UniversalInterceptor } from './interceptor'
|
import { BackendXsrfInterceptor, UniversalInterceptor } from './interceptor'
|
||||||
import { AppComponent } from './components/app.component'
|
import { AppComponent } from './components/app.component'
|
||||||
import { MainComponent } from './components/main.component'
|
import { MainComponent } from './components/main.component'
|
||||||
import { ConfigModalComponent } from './components/configModal.component'
|
import { ConfigModalComponent } from './components/configModal.component'
|
||||||
import { SettingsModalComponent } from './components/settingsModal.component'
|
import { SettingsModalComponent } from './components/settingsModal.component'
|
||||||
import { HomeComponent } from './components/home.component'
|
|
||||||
import { LoginComponent } from './components/login.component'
|
import { LoginComponent } from './components/login.component'
|
||||||
import { ConnectionListComponent } from './components/connectionList.component'
|
import { ConnectionListComponent } from './components/connectionList.component'
|
||||||
import { UpgradeModalComponent } from './components/upgradeModal.component'
|
import { UpgradeModalComponent } from './components/upgradeModal.component'
|
||||||
import { HomeIndexComponent } from './components/homeIndex.component'
|
|
||||||
import { DemoTerminalComponent } from './components/demoTerminal.component'
|
|
||||||
import { HomeFeaturesComponent } from './components/homeFeatures.component'
|
|
||||||
import { InstanceInfoResolver } from './api'
|
import { InstanceInfoResolver } from './api'
|
||||||
|
|
||||||
import '@fortawesome/fontawesome-svg-core/styles.css'
|
import '@fortawesome/fontawesome-svg-core/styles.css'
|
||||||
@ -30,20 +25,7 @@ import '@fortawesome/fontawesome-svg-core/styles.css'
|
|||||||
const ROUTES = [
|
const ROUTES = [
|
||||||
{
|
{
|
||||||
path: '',
|
path: '',
|
||||||
component: HomeComponent,
|
loadChildren: () => import(/* webpackChunkName: "homepage" */'./homepage').then(m => m.HomepageModule),
|
||||||
resolve: {
|
|
||||||
instanceInfo: InstanceInfoResolver,
|
|
||||||
},
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: '',
|
|
||||||
component: HomeIndexComponent,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
path: 'features',
|
|
||||||
component: HomeFeaturesComponent,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'app',
|
path: 'app',
|
||||||
@ -74,10 +56,8 @@ const ROUTES = [
|
|||||||
HttpClientXsrfModule,
|
HttpClientXsrfModule,
|
||||||
NgbDropdownModule,
|
NgbDropdownModule,
|
||||||
NgbModalModule,
|
NgbModalModule,
|
||||||
NgbNavModule,
|
|
||||||
FontAwesomeModule,
|
FontAwesomeModule,
|
||||||
ClipboardModule,
|
ClipboardModule,
|
||||||
NgxImageZoomModule,
|
|
||||||
RouterModule.forRoot(ROUTES),
|
RouterModule.forRoot(ROUTES),
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
@ -87,14 +67,11 @@ const ROUTES = [
|
|||||||
declarations: [
|
declarations: [
|
||||||
AppComponent,
|
AppComponent,
|
||||||
MainComponent,
|
MainComponent,
|
||||||
HomeComponent,
|
|
||||||
HomeIndexComponent,
|
|
||||||
LoginComponent,
|
LoginComponent,
|
||||||
ConfigModalComponent,
|
ConfigModalComponent,
|
||||||
SettingsModalComponent,
|
SettingsModalComponent,
|
||||||
ConnectionListComponent,
|
ConnectionListComponent,
|
||||||
UpgradeModalComponent,
|
UpgradeModalComponent,
|
||||||
DemoTerminalComponent,
|
|
||||||
],
|
],
|
||||||
bootstrap: [AppComponent],
|
bootstrap: [AppComponent],
|
||||||
})
|
})
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
import { Component } from '@angular/core'
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'home-features',
|
|
||||||
templateUrl: './homeFeatures.component.pug',
|
|
||||||
styleUrls: ['./homeFeatures.component.scss'],
|
|
||||||
})
|
|
||||||
export class HomeFeaturesComponent {
|
|
||||||
screenshots = {
|
|
||||||
progress: require('../assets/screenshots/progress.png'),
|
|
||||||
zmodem: require('../assets/screenshots/zmodem.png'),
|
|
||||||
colors: require('../assets/screenshots/colors.png'),
|
|
||||||
hotkeys: require('../assets/screenshots/hotkeys.png'),
|
|
||||||
ports: require('../assets/screenshots/ports.png'),
|
|
||||||
ssh2: require('../assets/screenshots/ssh2.png'),
|
|
||||||
fonts: require('../assets/screenshots/fonts.png'),
|
|
||||||
history: require('../assets/screenshots/history.png'),
|
|
||||||
paste: require('../assets/screenshots/paste.png'),
|
|
||||||
quake: require('../assets/screenshots/quake.png'),
|
|
||||||
split: require('../assets/screenshots/split.png'),
|
|
||||||
profiles: require('../assets/screenshots/profiles.png'),
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
@import "../theme/vars.scss";
|
@import "../../theme/vars.scss";
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
display: flex;
|
display: flex;
|
@ -2,8 +2,8 @@ import { Subject } from 'rxjs'
|
|||||||
import * as semverCompare from 'semver/functions/compare-loose'
|
import * as semverCompare from 'semver/functions/compare-loose'
|
||||||
import { HttpClient } from '@angular/common/http'
|
import { HttpClient } from '@angular/common/http'
|
||||||
import { Component, ElementRef, ViewChild } from '@angular/core'
|
import { Component, ElementRef, ViewChild } from '@angular/core'
|
||||||
import { Version } from '../api'
|
import { Version } from '../../api'
|
||||||
import { CommonService } from '../services/common.service'
|
import { CommonService } from '../../services/common.service'
|
||||||
|
|
||||||
class DemoConnector {
|
class DemoConnector {
|
||||||
constructor (
|
constructor (
|
@ -1,4 +1,4 @@
|
|||||||
@import "../theme/vars.scss";
|
@import "../../theme/vars.scss";
|
||||||
@import "~@fontsource/fira-code/latin.css";
|
@import "~@fontsource/fira-code/latin.css";
|
||||||
|
|
||||||
:host {
|
:host {
|
@ -1,8 +1,8 @@
|
|||||||
import { Component } from '@angular/core'
|
import { Component } from '@angular/core'
|
||||||
import { ActivatedRoute, Router } from '@angular/router'
|
import { ActivatedRoute, Router } from '@angular/router'
|
||||||
import { faCoffee, faDownload, faSignInAlt } from '@fortawesome/free-solid-svg-icons'
|
import { faCoffee, faDownload, faSignInAlt } from '@fortawesome/free-solid-svg-icons'
|
||||||
import type { Waves } from '../homepage/vanta/vanta.waves.js'
|
import { Waves } from '../vanta/vanta.waves.js'
|
||||||
import { InstanceInfo } from '../api'
|
import { InstanceInfo } from '../../api'
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@ -15,7 +15,7 @@ export class HomeComponent {
|
|||||||
releaseURL = `${this.githubURL}/releases/latest`
|
releaseURL = `${this.githubURL}/releases/latest`
|
||||||
donationURL = 'https://ko-fi.com/eugeny'
|
donationURL = 'https://ko-fi.com/eugeny'
|
||||||
|
|
||||||
_logo = require('../assets/logo.svg')
|
_logo = require('../../assets/logo.svg')
|
||||||
_downloadIcon = faDownload
|
_downloadIcon = faDownload
|
||||||
_loginIcon = faSignInAlt
|
_loginIcon = faSignInAlt
|
||||||
_donateIcon = faCoffee
|
_donateIcon = faCoffee
|
||||||
@ -46,7 +46,6 @@ export class HomeComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async ngAfterViewInit (): Promise<void> {
|
async ngAfterViewInit (): Promise<void> {
|
||||||
const { Waves } = await import(/* webpackChunkName: "gfx" */ '../homepage/vanta/vanta.waves.js')
|
|
||||||
this.background = new Waves({
|
this.background = new Waves({
|
||||||
el: 'body',
|
el: 'body',
|
||||||
mouseControls: true,
|
mouseControls: true,
|
23
frontend/src/homepage/components/homeFeatures.component.ts
Normal file
23
frontend/src/homepage/components/homeFeatures.component.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import { Component } from '@angular/core'
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'home-features',
|
||||||
|
templateUrl: './homeFeatures.component.pug',
|
||||||
|
styleUrls: ['./homeFeatures.component.scss'],
|
||||||
|
})
|
||||||
|
export class HomeFeaturesComponent {
|
||||||
|
screenshots = {
|
||||||
|
progress: require('../../assets/screenshots/progress.png'),
|
||||||
|
zmodem: require('../../assets/screenshots/zmodem.png'),
|
||||||
|
colors: require('../../assets/screenshots/colors.png'),
|
||||||
|
hotkeys: require('../../assets/screenshots/hotkeys.png'),
|
||||||
|
ports: require('../../assets/screenshots/ports.png'),
|
||||||
|
ssh2: require('../../assets/screenshots/ssh2.png'),
|
||||||
|
fonts: require('../../assets/screenshots/fonts.png'),
|
||||||
|
history: require('../../assets/screenshots/history.png'),
|
||||||
|
paste: require('../../assets/screenshots/paste.png'),
|
||||||
|
quake: require('../../assets/screenshots/quake.png'),
|
||||||
|
split: require('../../assets/screenshots/split.png'),
|
||||||
|
profiles: require('../../assets/screenshots/profiles.png'),
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
@import "../theme/vars.scss";
|
@import "../../theme/vars.scss";
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-family: $font-family-monospace;
|
font-family: $font-family-monospace;
|
@ -15,10 +15,10 @@ export class HomeIndexComponent {
|
|||||||
_githubIcon = faGithub
|
_githubIcon = faGithub
|
||||||
|
|
||||||
screenshots = {
|
screenshots = {
|
||||||
window: require('../assets/screenshots/window.png'),
|
window: require('../../assets/screenshots/window.png'),
|
||||||
tabs: require('../assets/screenshots/tabs.png'),
|
tabs: require('../../assets/screenshots/tabs.png'),
|
||||||
ssh: require('../assets/screenshots/ssh.png'),
|
ssh: require('../../assets/screenshots/ssh.png'),
|
||||||
serial: require('../assets/screenshots/serial.png'),
|
serial: require('../../assets/screenshots/serial.png'),
|
||||||
win: require('../assets/screenshots/win.png'),
|
win: require('../../assets/screenshots/win.png'),
|
||||||
}
|
}
|
||||||
}
|
}
|
55
frontend/src/homepage/index.ts
Normal file
55
frontend/src/homepage/index.ts
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
import { NgModule } from '@angular/core'
|
||||||
|
import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap'
|
||||||
|
import { CommonModule } from '@angular/common'
|
||||||
|
import { FormsModule } from '@angular/forms'
|
||||||
|
import { RouterModule } from '@angular/router'
|
||||||
|
import { HttpClientModule } from '@angular/common/http'
|
||||||
|
import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'
|
||||||
|
import { NgxImageZoomModule } from 'ngx-image-zoom'
|
||||||
|
|
||||||
|
import { HomeComponent } from './components/home.component'
|
||||||
|
import { HomeIndexComponent } from './components/homeIndex.component'
|
||||||
|
import { DemoTerminalComponent } from './components/demoTerminal.component'
|
||||||
|
import { HomeFeaturesComponent } from './components/homeFeatures.component'
|
||||||
|
import { InstanceInfoResolver } from '../api'
|
||||||
|
|
||||||
|
import '@fortawesome/fontawesome-svg-core/styles.css'
|
||||||
|
|
||||||
|
const ROUTES = [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: HomeComponent,
|
||||||
|
resolve: {
|
||||||
|
instanceInfo: InstanceInfoResolver,
|
||||||
|
},
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: '',
|
||||||
|
component: HomeIndexComponent,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: 'features',
|
||||||
|
component: HomeFeaturesComponent,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
CommonModule,
|
||||||
|
FormsModule,
|
||||||
|
HttpClientModule,
|
||||||
|
NgbNavModule,
|
||||||
|
FontAwesomeModule,
|
||||||
|
NgxImageZoomModule,
|
||||||
|
RouterModule.forChild(ROUTES),
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
HomeComponent,
|
||||||
|
HomeIndexComponent,
|
||||||
|
HomeFeaturesComponent,
|
||||||
|
DemoTerminalComponent,
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class HomepageModule { }
|
@ -24,7 +24,7 @@
|
|||||||
"es7"
|
"es7"
|
||||||
],
|
],
|
||||||
"paths": {
|
"paths": {
|
||||||
"*": ["src/*"]
|
"src/*": ["./src/*"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"include": ["src"]
|
"include": ["src"]
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
require('dotenv').config({path: '../.env'})
|
require('dotenv').config({path: '../.env'})
|
||||||
const webpack = require('webpack')
|
const webpack = require('webpack')
|
||||||
|
const path = require('path')
|
||||||
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
|
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
@ -16,6 +17,9 @@ module.exports = {
|
|||||||
'node_modules/',
|
'node_modules/',
|
||||||
],
|
],
|
||||||
extensions: ['.ts', '.js'],
|
extensions: ['.ts', '.js'],
|
||||||
|
alias: {
|
||||||
|
src: path.resolve(__dirname, 'src'),
|
||||||
|
},
|
||||||
},
|
},
|
||||||
module: {
|
module: {
|
||||||
rules: [
|
rules: [
|
||||||
|
Loading…
x
Reference in New Issue
Block a user