Merge pull request #30 from teaxyz/navbar

#29 init dev of navbar
This commit is contained in:
Neil 2022-11-26 08:11:20 +08:00 committed by GitHub
commit 1423d3bb15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
37 changed files with 662 additions and 489 deletions

View file

@ -36,7 +36,10 @@ then
domain=$(echo $new_config | jq '.Distribution.DomainName' | tr -d '"') domain=$(echo $new_config | jq '.Distribution.DomainName' | tr -d '"')
aws cloudfront wait distribution-deployed --id $distribution_id aws cloudfront wait distribution-deployed --id $distribution_id
else else
invalidation_id=$(aws cloudfront create-invalidation --distribution-id $distribution_id --paths /* | jq '.Invalidation.Id' | tr -d '"') echo "invalidating distribution_id: $distribution_id"
invalidation_id=$(aws cloudfront create-invalidation --distribution-id $distribution_id --paths "/*" | jq '.Invalidation.Id' | tr -d '"')
echo "invalidation_id: $invalidation_id"
aws cloudfront wait invalidation-completed --distribution-id $distribution_id --id $invalidation_id aws cloudfront wait invalidation-completed --distribution-id $distribution_id --id $invalidation_id
fi fi

View file

@ -28,9 +28,7 @@ jobs:
- 'packages/ui/src/**' - 'packages/ui/src/**'
- name: get s3 preview folder - name: get s3 preview folder
id: preview id: preview
run: | run: echo "folder=${{ github.event.number }}-merge" >> $GITHUB_OUTPUT
preview=$(echo $GITHUB_REF_NAME | sed -e 's/\//-/g')
echo "folder=$preview" >> $GITHUB_OUTPUT
no_preview: no_preview:
needs: changes needs: changes
if: needs.changes.outputs.svelte == 'false' if: needs.changes.outputs.svelte == 'false'

1
.gitignore vendored
View file

@ -1,2 +1,3 @@
node_modules node_modules
yarn-error.log yarn-error.log
.DS_Store

View file

@ -14,12 +14,12 @@
"format": "prettier --plugin-search-dir . --write ." "format": "prettier --plugin-search-dir . --write ."
}, },
"devDependencies": { "devDependencies": {
"@tea/ui": "workspace:*",
"@playwright/test": "1.25.0", "@playwright/test": "1.25.0",
"@sveltejs/adapter-auto": "next", "@sveltejs/adapter-auto": "next",
"@sveltejs/adapter-static": "1.0.0-next.48", "@sveltejs/adapter-static": "1.0.0-next.48",
"@sveltejs/kit": "next", "@sveltejs/kit": "next",
"@tauri-apps/cli": "1.2.0", "@tauri-apps/cli": "1.2.0",
"@tea/ui": "workspace:*",
"@typescript-eslint/eslint-plugin": "^5.27.0", "@typescript-eslint/eslint-plugin": "^5.27.0",
"@typescript-eslint/parser": "^5.27.0", "@typescript-eslint/parser": "^5.27.0",
"autoprefixer": "^10.4.13", "autoprefixer": "^10.4.13",

View file

@ -17,7 +17,7 @@ tauri-build = { version = "1.2.0", features = [] }
[dependencies] [dependencies]
serde_json = "1.0" serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] } serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.2.0", features = ["http-all", "shell-open"] } tauri = { version = "1.2.0", features = ["http-all", "shell-open", "window-all"] }
uuid = "1.2.1" uuid = "1.2.1"
futures = "0.3" futures = "0.3"

View file

@ -26,6 +26,38 @@
"open": true, "open": true,
"scope": [], "scope": [],
"sidecar": false "sidecar": false
},
"window": {
"all": true,
"center": true,
"close": true,
"create": true,
"hide": true,
"maximize": true,
"minimize": true,
"print": true,
"requestUserAttention": true,
"setAlwaysOnTop": true,
"setCursorGrab": true,
"setCursorIcon": true,
"setCursorPosition": true,
"setCursorVisible": true,
"setDecorations": true,
"setFocus": true,
"setFullscreen": true,
"setIcon": true,
"setIgnoreCursorEvents": true,
"setMaxSize": true,
"setMinSize": true,
"setPosition": true,
"setResizable": true,
"setSize": true,
"setSkipTaskbar": true,
"setTitle": true,
"show": true,
"startDragging": true,
"unmaximize": true,
"unminimize": true
} }
}, },
"bundle": { "bundle": {
@ -73,7 +105,8 @@
"height": 600, "height": 600,
"resizable": true, "resizable": true,
"title": "gui", "title": "gui",
"width": 800 "width": 800,
"decorations": false
} }
] ]
} }

View file

@ -1,2 +0,0 @@
export const prerender = true
export const ssr = false

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="Badges"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="BigBlackSpace"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="CLI Hero"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="EssentialWorkshops"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="FeaturedCourses"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="FeaturedPackages"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="GettingStarted"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="InstalledPackages"/>

View file

@ -1,40 +1,164 @@
<script type="ts"> <script type="ts">
import { page } from '$app/stores';
import { open } from '@tauri-apps/api/shell'; import { open } from '@tauri-apps/api/shell';
import { appWindow } from '@tauri-apps/api/window';
import { beforeUpdate } from 'svelte';
const openGithub = () => { const openGithub = () => {
open('https://github.com/teaxyz') open('https://github.com/teaxyz')
} }
let maximized = false;
const toggleMaximize = () => {
maximized = !maximized;
if (maximized) {
appWindow.maximize();
} else {
appWindow.unmaximize();
}
}
let routes = [
{
path: '/',
active: false,
label: 'DISCOVER'
},
{
path: '/documentation',
active: false,
label: 'DOCUMENTATION'
},
{
path: '/cli',
active: false,
label: 'TEA CLI INSTALL'
},
{
path: '/packages',
active: false,
label: 'PACKAGES'
}
];
beforeUpdate(async () => {
const currentPath = $page.url.pathname;
for(let i = 0; i < routes.length; i++) {
let { path } = routes[i];
routes[i].active = currentPath.includes(path);
}
if (currentPath !== '/') {
routes[0].active = false;
}
});
</script> </script>
<ul id="NavBar" class="bg-primary"> <ul id="NavBar" >
<li> <nav data-tauri-drag-region class="flex justify-between">
<a href="/">Home / Tea Icon</a> <div class="flex gap-1 p-3">
</li> <button class="titlebar-button" id="titlebar-close" on:click={appWindow.close}>
<li> <img src="/images/close.svg" alt="close" />
<input type="search" placeholder="search" /> </button>
</li> <button class="titlebar-button" id="titlebar-minimize" on:click={appWindow.minimize}>
<li> <img
<a href="/">Discover</a> src="/images/minimize.svg"
</li> alt="minimize"
<li> />
<a href="/documentation">Documentation</a> </button>
</li> <button class="titlebar-button" id="titlebar-maximize" on:click={toggleMaximize}>
<li> <img
<a href="/cli">TEA CLI INSTALL</a> src="/images/expand.svg"
</li> alt="maximize"
<li> />
<a href="/packages">PACKAGES</a> </button>
</li> </div>
<li> <a href="/">
<button on:click={openGithub}>view on github</button> <img width="40" height="40" src="/images/tea-icon.png" alt="tea" />
</li> </a>
<li> </nav>
<a href="/profile">user profile</a>
<input class="w-full bg-black h-12 p-4 border border-x-0 border-gray" type="search" placeholder="search" />
{#each routes as route}
<li class={route.active ? "nav_button active": "nav_button"}>
<a href={route.path}>{route.label}</a>
</li>
{/each}
<li class="nav_button">
<button on:click={openGithub}>VIEW ON GITHUB</button>
</li> </li>
<footer class="border border-x-0 border-gray w-full">
<a href="/profile">
<section class="flex">
<img width="40" height="40" src="/images/bored-ape.png" alt="profile"/>
<div class="p-2 text-gray">@user_name</div>
</section>
</a>
</footer>
</ul> </ul>
<style> <style>
#NavBar { @tailwind base;
@tailwind components;
@tailwind utilities;
ul {
height: 100vh; height: 100vh;
width: 100%; width: 100%;
} }
@layer components {
.nav_button {
transition: all .3s;
color: theme('colors.white');
padding: theme('spacing.4') theme('spacing.2');
}
.nav_button:hover {
color: theme('colors.black');
background-color: theme('colors.primary');
}
.nav_button.active {
color: theme('colors.black');
background-color: theme('colors.primary');
}
}
nav:hover {
transition: all .3s;
background-color: #2d2d2d;
}
.titlebar-button {
display: inline-flex;
justify-content: center;
align-items: center;
width: 16px;
height: 16px;
border-radius: 8px;
opacity: 0.9;
}
.titlebar-button img {
transition: opacity .3s;
opacity: 0;
}
.titlebar-button:hover img {
opacity: 1;
}
#titlebar-close {
background-color: orangered;
}
#titlebar-minimize {
background-color: orange;
}
#titlebar-maximize {
background-color: green;
}
footer {
position: absolute;
bottom: 20px;
}
</style> </style>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="PackageBanner"/>

View file

@ -0,0 +1,6 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="PackageReviews"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="Preflight"/>

View file

@ -0,0 +1,5 @@
<script lang="ts">
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<Placeholder label="ProfileBanner"/>

View file

@ -0,0 +1,31 @@
<script>
import "$appcss";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
</script>
<div class="bg-black border border-gray">
<section class="flex">
<h2>Filter Packages</h2>
<input type="search" class="text-white bg-black border border-gray"/>
</section>
<ul class="grid grid-cols-3 gap-8 mt-8">
<li>
<a href="/packages/pkg-a"><Placeholder label="Pkg A"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-b"><Placeholder label="Pkg B"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-c"><Placeholder label="Pkg C"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-a"><Placeholder label="Pkg D"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-b"><Placeholder label="Pkg E"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-c"><Placeholder label="Pkg F"></Placeholder></a>
</li>
</ul>
</div>

View file

@ -11,7 +11,7 @@
}); });
</script> </script>
<div> <div id="main-layout">
<nav class=""> <nav class="">
<NavBar/> <NavBar/>
</nav> </nav>
@ -22,12 +22,14 @@
</header> </header>
{/if} {/if}
<figure></figure> <figure></figure>
<slot></slot> <div>
<slot></slot>
</div>
</section> </section>
</div> </div>
<style> <style>
div { #main-layout {
width: 100vh; width: 100vh;
height: 100vh; height: 100vh;
} }
@ -44,6 +46,7 @@
} }
figure { figure {
position: absolute; position: absolute;
z-index: 0;
top: 180px; top: 180px;
left: 0px; left: 0px;
right: 0px; right: 0px;
@ -58,4 +61,12 @@
height: 50px; height: 50px;
border-bottom: #CCC 1px solid; border-bottom: #CCC 1px solid;
} }
slot {
z-index: 1;
}
div {
position: relative;
}
</style> </style>

View file

@ -0,0 +1,2 @@
export const ssr = false;
export const prerender = false;

View file

@ -2,20 +2,20 @@
<script lang="ts"> <script lang="ts">
import "$appcss"; import "$appcss";
import { backLink } from '$libs/stores'; import { backLink } from '$libs/stores';
import Placeholder from "$components/Placeholder/Placeholder.svelte";
import PageHeader from "$components/PageHeader/PageHeader.svelte"; import PageHeader from "$components/PageHeader/PageHeader.svelte";
import FeaturedPackages from "$components/FeaturedPackages/FeaturedPackages.svelte";
import GettingStarted from "$components/GettingStarted/GettingStarted.svelte";
backLink.set(''); backLink.set('');
</script> </script>
<div> <div>
<PageHeader>Discover</PageHeader> <PageHeader>Discover</PageHeader>
<header> <section>
<Placeholder label="featured packages"/> <FeaturedPackages/>
</header> </section>
<section class="mt-8"> <section class="mt-8">
<Placeholder label="Getting started with tea"/> <GettingStarted/>
</section> </section>
</div> </div>

View file

@ -1,7 +1,8 @@
<script> <script>
import "$appcss"; import "$appcss";
import PageHeader from "$components/PageHeader/PageHeader.svelte"; import PageHeader from "$components/PageHeader/PageHeader.svelte";
import Placeholder from "$components/Placeholder/Placeholder.svelte"; import CliBanner from "$components/CliBanner/CliBanner.svelte";
import BigBlackSpace from "$components/BigBlackSpace/BigBlackSpace.svelte";
import { backLink } from '$libs/stores'; import { backLink } from '$libs/stores';
backLink.set('/'); backLink.set('/');
</script> </script>
@ -10,11 +11,11 @@
<div> <div>
<PageHeader>INSTALL TEA</PageHeader> <PageHeader>INSTALL TEA</PageHeader>
<header> <section>
<Placeholder label="big tea icon version with copy curl"/> <CliBanner/>
</header> </section>
<section class="mt-8"> <section class="mt-8">
<Placeholder label="big black blank space"/> <BigBlackSpace/>
</section> </section>
</div> </div>

View file

@ -1,7 +1,8 @@
<script> <script>
import "$appcss"; import "$appcss";
import PageHeader from "$components/PageHeader/PageHeader.svelte"; import PageHeader from "$components/PageHeader/PageHeader.svelte";
import Placeholder from "$components/Placeholder/Placeholder.svelte"; import FeaturedCourses from "$components/FeaturedCourses/FeaturedCourses.svelte";
import EssentialWorkshops from "$components/EssentialWorkshops/EssentialWorkshops.svelte";
import { backLink } from '$libs/stores'; import { backLink } from '$libs/stores';
backLink.set('/'); backLink.set('/');
</script> </script>
@ -10,11 +11,11 @@
<div> <div>
<PageHeader>Documentation</PageHeader> <PageHeader>Documentation</PageHeader>
<header> <section>
<Placeholder label="featured courses"/> <FeaturedCourses/>
</header> </section>
<section class="mt-8"> <section class="mt-8">
<Placeholder label="Essential workshops"/> <EssentialWorkshops/>
</section> </section>
</div> </div>

View file

@ -1,7 +1,7 @@
<script> <script>
import "$appcss"; import "$appcss";
import PageHeader from "$components/PageHeader/PageHeader.svelte"; import PageHeader from "$components/PageHeader/PageHeader.svelte";
import Placeholder from "$components/Placeholder/Placeholder.svelte"; import SearchPackages from "$components/SearchPackages/SearchPackages.svelte";
import { backLink } from '$libs/stores'; import { backLink } from '$libs/stores';
backLink.set('/'); backLink.set('/');
</script> </script>
@ -9,27 +9,5 @@
<div> <div>
<PageHeader>Packages</PageHeader> <PageHeader>Packages</PageHeader>
<section> <SearchPackages/>
<Placeholder label="filter packages"/>
</section>
<ul class="grid grid-cols-3 gap-8 mt-8">
<li>
<a href="/packages/pkg-a"><Placeholder label="Pkg A"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-b"><Placeholder label="Pkg B"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-c"><Placeholder label="Pkg C"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-a"><Placeholder label="Pkg D"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-b"><Placeholder label="Pkg E"></Placeholder></a>
</li>
<li>
<a href="/packages/pkg-c"><Placeholder label="Pkg F"></Placeholder></a>
</li>
</ul>
</div> </div>

View file

@ -1,9 +1,9 @@
<script> <script>
import "$appcss"; import "$appcss";
import PageHeader from "$components/PageHeader/PageHeader.svelte"; import PageHeader from "$components/PageHeader/PageHeader.svelte";
import Placeholder from "$components/Placeholder/Placeholder.svelte";
import { page } from '$app/stores';
import { backLink } from '$libs/stores'; import { backLink } from '$libs/stores';
import PackageBanner from '$components/PackageBanner/PackageBanner.svelte';
import PackageReviews from '$components/PackageReviews/PackageReviews.svelte';
backLink.set('/packages'); backLink.set('/packages');
/** @type {import('./$types').PageData} */ /** @type {import('./$types').PageData} */
@ -13,9 +13,9 @@
<div> <div>
<PageHeader>{data.title}</PageHeader> <PageHeader>{data.title}</PageHeader>
<section> <section>
<Placeholder label="package cover w/ copy link" /> <PackageBanner/>
</section> </section>
<section class="mt-8"> <section class="mt-8">
<Placeholder label="reviews" /> <PackageReviews/>
</section> </section>
</div> </div>

View file

@ -2,6 +2,10 @@
import "$appcss"; import "$appcss";
import PageHeader from "$components/PageHeader/PageHeader.svelte"; import PageHeader from "$components/PageHeader/PageHeader.svelte";
import Placeholder from "$components/Placeholder/Placeholder.svelte"; import Placeholder from "$components/Placeholder/Placeholder.svelte";
import ProfileBanner from "$components/ProfileBanner/ProfileBanner.svelte";
import Preflight from "$components/Preflight/Preflight.svelte";
import Badges from "$components/Badges/Badges.svelte";
import InstalledPackages from "$components/InstalledPackages/InstalledPackages.svelte";
import { backLink } from '$libs/stores'; import { backLink } from '$libs/stores';
backLink.set('/'); backLink.set('/');
</script> </script>
@ -10,21 +14,21 @@
<div> <div>
<PageHeader>PROFILE</PageHeader> <PageHeader>PROFILE</PageHeader>
<header> <section>
<Placeholder label="github username and wallet address"/> <ProfileBanner/>
</header> </section>
<section class="mt-8 grid grid-cols-2 gap-8"> <section class="mt-8 grid grid-cols-2 gap-8">
<div> <div>
<Placeholder label="pre-flight"/> <Preflight/>
</div> </div>
<div> <div>
<Placeholder label="badges"/> <Badges/>
</div> </div>
</section> </section>
<section class="mt-8"> <section class="mt-8">
<Placeholder label="my installs"/> <InstalledPackages/>
</section> </section>
</div> </div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 764 KiB

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12L19 6.41Z"/></svg>

After

Width:  |  Height:  |  Size: 232 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M12 19H5l.007-7H7v5h5v2Zm6.992-7H17V7h-5V5h7l-.008 7Z"/></svg>

After

Width:  |  Height:  |  Size: 176 B

View file

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><path fill="currentColor" d="M20 14H4v-4h16"/></svg>

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View file

@ -2,6 +2,7 @@
const primary = '#00ffd0'; const primary = '#00ffd0';
const black = '#1a1a1a'; const black = '#1a1a1a';
const white = '#fff'; const white = '#fff';
const gray = '#949494';
module.exports = { module.exports = {
content: ['./src/**/*.{html,js,svelte,ts}'], content: ['./src/**/*.{html,js,svelte,ts}'],
@ -11,6 +12,7 @@ module.exports = {
green: primary, green: primary,
black, black,
white, white,
gray,
}, },
extend: { extend: {
fontFamily: { fontFamily: {

File diff suppressed because it is too large Load diff