Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: new theme #196

Merged
merged 59 commits into from
Dec 29, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
ada6c12
feat: update gray color
Barbapapazes Nov 13, 2023
cacd275
feat: update footer
Barbapapazes Nov 13, 2023
22ee923
feat: initial work
Barbapapazes Nov 15, 2023
8ccb181
feat: update packages and blog page
Barbapapazes Nov 20, 2023
2f0b0ca
feat: update pro style
Barbapapazes Nov 20, 2023
baee85d
feat: update home, rss and search page
Barbapapazes Nov 22, 2023
26dd2df
Merge branch 'main' into feat/new-theme
Barbapapazes Nov 22, 2023
0488f38
feat: update design-kit page
Barbapapazes Nov 22, 2023
25f2de9
Merge branch 'main' into feat/new-theme
Barbapapazes Nov 30, 2023
57f6510
feat: new theme and mobile
Barbapapazes Nov 30, 2023
7e8c310
feat: new theme
Barbapapazes Nov 30, 2023
b03a189
chore: lint
Barbapapazes Nov 30, 2023
4f55d68
[autofix.ci] apply automated fixes
autofix-ci[bot] Nov 30, 2023
50d8b2d
fix: ellipse link
Barbapapazes Nov 30, 2023
b5c3487
Update app.vue
Barbapapazes Dec 1, 2023
7ffd4ed
fix: list grid
Barbapapazes Dec 1, 2023
6646cbe
fix: hero
Barbapapazes Dec 1, 2023
2df21d7
feat: add modal for mobile filter
Barbapapazes Dec 1, 2023
53c6079
feat: light theme
Barbapapazes Dec 1, 2023
cfbe8a4
fix: home eye brow
Barbapapazes Dec 1, 2023
8b5893b
fix: icons in header and footer
Barbapapazes Dec 2, 2023
3c625b2
fix: remove unused components
Barbapapazes Dec 2, 2023
9bd33d9
fix: update eyebrow color
Barbapapazes Dec 2, 2023
b1c935a
feat: add error.vue
Barbapapazes Dec 2, 2023
764a7b0
chore: remove carbon
Barbapapazes Dec 2, 2023
481cb87
feat: rework search
Barbapapazes Dec 3, 2023
8db816f
fix: small issues with search
Barbapapazes Dec 3, 2023
7444db0
chore: lint
Barbapapazes Dec 3, 2023
c413bab
fix: search
Barbapapazes Dec 3, 2023
a7b708f
fix: search
Barbapapazes Dec 3, 2023
e9202a0
feat: rework /search
Barbapapazes Dec 3, 2023
49dd8a7
chore: add track event
Barbapapazes Dec 3, 2023
b657387
fix: update track event
Barbapapazes Dec 3, 2023
206235c
fix: search
Barbapapazes Dec 3, 2023
1d27688
fix: black color in design kit
Barbapapazes Dec 3, 2023
fe59a2c
feat: add puzzle parts to design-kit
Barbapapazes Dec 3, 2023
c51c9e1
feat: update puzzle parts
Barbapapazes Dec 3, 2023
d3e5c36
feat: update header and footer
Barbapapazes Dec 3, 2023
39a2a04
fix: update univers button
Barbapapazes Dec 3, 2023
4ed9a10
feat: add some data on home
Barbapapazes Dec 4, 2023
7cd611e
fix: numbers
Barbapapazes Dec 4, 2023
32f1e3f
fix: add missing illustrations
Barbapapazes Dec 4, 2023
2a2d62e
chore: remove log
Barbapapazes Dec 4, 2023
c0830b2
fix: improve search
Barbapapazes Dec 4, 2023
b89342f
fix: home hero mobile
Barbapapazes Dec 4, 2023
b532ca1
fix: rework full screen
Barbapapazes Dec 4, 2023
3510f81
Merge branch 'main' into feat/new-theme
Barbapapazes Dec 10, 2023
da374e3
fix: add missing boost
Barbapapazes Dec 10, 2023
6dd6853
fix: bottom home margin
Barbapapazes Dec 10, 2023
db4a1c9
fix: cards
Barbapapazes Dec 10, 2023
8454b12
fix: update navigation dialog
Barbapapazes Dec 10, 2023
a51b171
fix: rework design-kit
Barbapapazes Dec 10, 2023
8abf524
Merge branch 'main' into feat/new-theme
Barbapapazes Dec 12, 2023
9944825
Merge branch 'main' into feat/new-theme
Barbapapazes Dec 29, 2023
14a8a97
fix: update new puzzle parts
Barbapapazes Dec 29, 2023
6a5e26d
chore: update deps
Barbapapazes Dec 29, 2023
b0f1492
fix: improve header and footer
Barbapapazes Dec 29, 2023
7da9b6a
fix: overflow top bar on mobile
Barbapapazes Dec 29, 2023
ce33a96
feat: move to nuxtjs/google-fonts module
Barbapapazes Dec 29, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 17 additions & 58 deletions app.config.ts
Original file line number Diff line number Diff line change
@@ -1,100 +1,60 @@
export default defineAppConfig({
ui: {
primary: 'yellow',
gray: 'zinc',
divider: {
border: {
base: 'flex border-zinc-200 dark:border-zinc-800',
},
},
badge: {
gray: 'cool',
button: {
base: 'transition ease-in',
color: {
gray: {
solid: 'ring-1 ring-inset ring-zinc-300 dark:ring-zinc-700 text-zinc-700 dark:text-zinc-200 bg-zinc-50 dark:bg-zinc-800',
solid: 'shadow-none bg-gray-300/20 hover:bg-gray-300/40 dark:bg-gray-700/40 dark:hover:bg-gray-700/50',
},
},
},
button: {
select: {
base: 'transition ease-in',
color: {
white: {
solid: 'shadow-sm ring-1 ring-inset ring-zinc-300 dark:ring-zinc-700 text-zinc-900 dark:text-white bg-white hover:bg-zinc-50 disabled:bg-white dark:bg-zinc-900 dark:hover:bg-zinc-800/50 dark:disabled:bg-zinc-900 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400',
},
gray: {
solid: 'shadow-sm ring-1 ring-inset ring-zinc-300 dark:ring-zinc-700 text-zinc-700 dark:text-zinc-200 bg-zinc-50 hover:bg-zinc-100 disabled:bg-zinc-50 dark:bg-zinc-800 dark:hover:bg-zinc-700/50 dark:disabled:bg-zinc-800 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400',
ghost: 'text-zinc-700 dark:text-zinc-200 hover:text-zinc-900 dark:hover:text-white hover:bg-zinc-50 dark:hover:bg-zinc-800 focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400',
},
gray: { outline: 'shadow-none bg-gray-300/20 hover:bg-gray-300/40 dark:bg-gray-700/40 dark:hover:bg-gray-700/50' },
},
},
buttonGroup: {
shadow: 'shadow-none',
},
tooltip: {
background: 'bg-white dark:bg-zinc-900',
color: 'text-zinc-900 dark:text-white',
ring: 'ring-1 ring-zinc-200 dark:ring-zinc-800',
},
kbd: {
base: 'inline-flex items-center justify-center text-zinc-900 dark:text-white',
background: 'bg-zinc-100 dark:bg-zinc-800',
ring: 'ring-1 ring-zinc-300 dark:ring-zinc-700 ring-inset',
},
card: {
base: 'transition ease-in duration-150',
background: 'bg-white dark:bg-zinc-900',
divide: 'divide-y divide-zinc-200 dark:divide-zinc-800',
ring: 'ring-1 ring-zinc-200 dark:ring-zinc-700',

},
input: {
base: 'transition ease-in',
color: {
white: {
outline: 'shadow-none bg-white dark:bg-zinc-900 text-zinc-900 dark:text-white ring-1 ring-inset ring-zinc-300 dark:ring-zinc-700 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400',
},
placeholder: 'placeholder-zinc-400 dark:placeholder-zinc-500',
},
},
select: {
placeholder: 'text-zinc-900 dark:text-white',
color: {
white: {
outline: 'shadow-none bg-white dark:bg-zinc-900 text-zinc-900 dark:text-white ring-1 ring-inset ring-zinc-300 dark:ring-zinc-700 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400',
gray: {
outline: 'shadow-none bg-gray-300/20 hover:bg-gray-300/40 dark:bg-gray-700/40 dark:hover:bg-gray-700/50',
},
},
},
selectMenu: {
background: 'bg-white dark:bg-zinc-800',
ring: 'ring-1 ring-zinc-200 dark:ring-zinc-700',
option: {
base: 'cursor-pointer',
color: 'text-zinc-900 dark:text-white',
active: 'bg-zinc-100 dark:bg-zinc-900',
},
},
avatar: {
background: 'bg-zinc-100 dark:bg-zinc-800',
rounded: 'rounded-full',
text: 'font-medium leading-none text-zinc-900 dark:text-white truncate',
placeholder: 'font-medium leading-none text-zinc-500 dark:text-zinc-400 truncate',
},
popover: {
background: 'bg-white dark:bg-zinc-900',
ring: 'ring-1 ring-zinc-200 dark:ring-zinc-800',
},
},
website: {
search: {
groups: [
/**
* End / is very important since we use startsWith
* Without, page /blog will be in the wrong group
*/
{
name: 'Articles',
path: '/resources',
path: '/resources/',
},
{
name: 'Blog',
path: '/blog',
path: '/blog/',
},
{
name: 'Packages',
path: '/packages',
path: '/packages/',
},
],
},
Expand Down Expand Up @@ -181,7 +141,6 @@ export default defineAppConfig({
},
],
},
{},
],
},
socials: {
Expand Down
42 changes: 36 additions & 6 deletions app.vue
Original file line number Diff line number Diff line change
@@ -1,15 +1,38 @@
<script lang="ts" setup>
import { joinURL } from 'ufo'

const site = useSiteConfig()

useHead({
titleTemplate: title => title ? `${title} ${site.separator} ${site.name}` : `${site.name}: Unleash JavaScript\'s Potential`,
htmlAttrs: {
lang: site.defaultLocale,
dir: 'ltr',
class: 'scroll-smooth',
},
meta: [
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ name: 'theme-color', content: '#ECDC5A' },
],
link: [
{ rel: 'icon', href: '/favicon.svg' },
],
})

useSeoMeta({
ogImage: 'https://unjs.io/og/home.jpg',
ogSiteName: site.name,
ogImage: joinURL(site.url, '/og/home.jpg'),
ogImageWidth: 1440,
ogImageHeight: 810,
ogType: 'website',
twitterCard: 'summary_large_image',
twitterSite: '@unjsio',
twitterImage: 'https://unjs.io/og/home.jpg',
twitterImage: joinURL(site.url, '/og/home.jpg'),
})
</script>

<template>
<Html lang="en" dir="ltr" class="scroll-smooth">
<Html>
<Head>
<SchemaOrgOrganization
logo="/favicon.svg"
Expand All @@ -20,12 +43,19 @@ useSeoMeta({
/>
<SchemaOrgWebSite :potential-action="[defineSearchAction({ target: '/search?q={search_term_string}' })]" />
<RobotMeta />
<Link rel="icon" href="/favicon.svg" />
</Head>
<Body class="container mx-auto xl:max-w-7xl px-4 py-4 md:py-8 bg-primary font-sans">
<Body class="font-sans dark:bg-gray-900">
<NuxtLoadingIndicator color="#ECDC5A" />

<AppHeader />
<NuxtPage />

<div class="px-4 container mx-auto xl:max-w-7xl">
<NuxtPage />
</div>

<AppFooter />

<UNotifications />
</Body>
</Html>
</template>
43 changes: 11 additions & 32 deletions assets/app.css
Original file line number Diff line number Diff line change
@@ -1,47 +1,26 @@
@font-face {
font-family: "Nunito";
font-weight: 100 900;
font-display: swap;
font-style: normal;
src: url("/assets/fonts/nunito.ttf") format("truetype");
}

::-webkit-scrollbar {
width: 0.6em;
height: 0.6em;
background: transparent;
@apply bg-transparent;
}

::-webkit-scrollbar-track {
background-color: transparent
}

:is(.gray-scrollbar, pre)::-webkit-scrollbar-track {
@apply bg-zinc-100 rounded-full
@apply bg-gray-100;
}

::-webkit-scrollbar-thumb {
@apply rounded-md bg-white
}

:is(.gray-scrollbar, pre)::-webkit-scrollbar-thumb {
@apply bg-zinc-400/20
border-radius: 0.6em;
@apply bg-gray-300 hover:bg-gray-400;
}

::-webkit-scrollbar-thumb:hover {
@apply bg-zinc-100
}

:is(.gray-scrollbar, pre)::-webkit-scrollbar-thumb:hover {
@apply bg-zinc-500/20
}

::-webkit-scrollbar-thumb:active {
@apply bg-zinc-200
}
.dark {
& ::-webkit-scrollbar-track {
@apply bg-gray-800;
}

:is(.gray-scrollbar, pre)::-webkit-scrollbar-thumb:active {
@apply bg-zinc-600/20
& ::-webkit-scrollbar-thumb {
@apply bg-gray-700 hover:bg-gray-600;
}
}

:is(h1, h2, h3, h4, h5, h6) {
Expand Down
9 changes: 9 additions & 0 deletions components/Main.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<template>
<main class="min-h-[calc(100vh-4rem)] py-8 md:py-16">
<div v-if="$slots.header" class="mb-8 lg:mb-16">
<slot name="header" />
</div>

<slot />
</main>
</template>
15 changes: 15 additions & 0 deletions components/app/AppColorModeImage.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<script setup lang="ts">
defineOptions({
inheritAttrs: false,
})

defineProps<{
dark: string
light: string
}>()
</script>

<template>
<img :src="light" class="dark:hidden" v-bind="$attrs">
<img :src="dark" class="hidden dark:block" v-bind="$attrs">
</template>
73 changes: 45 additions & 28 deletions components/app/AppFooter.vue
Original file line number Diff line number Diff line change
@@ -1,40 +1,57 @@
<script lang="ts" setup>
const website = useWebsite()

const uiButton = { color: { gray: { ghost: 'hover:bg-primary/10 dark:hover:bg-primary/90' } } }
const colorMode = useColorMode()
const toggleTheme = function () {
colorMode.preference = colorMode.value === 'dark' ? 'light' : 'dark'
}

const uiButton = { color: { gray: { ghost: 'text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-gray-200 hover:bg-primary/60 dark:hover:bg-primary/40' } } }
</script>

<template>
<footer class="px-6 pt-20 pb-20 md:pb-30 flex flex-col gap-12 md:gap-20 rounded-2xl border border-zinc-100 bg-white">
<div class="flex flex-col md:flex-row gap-12 md:gap-25">
<div class="grow flex flex-col gap-6">
<NuxtLink to="/" class="block">
<AppLogo />
</NuxtLink>
<p class="max-w-lg text-sm md:text-base text-zinc-600 italic">
{{ website.footer.quote }}
</p>
<ul class="flex gap-8">
<div class="border-t border-gray-100 dark:border-gray-800">
<footer class="container mx-auto max-w-7xl px-4 md:px-6 pt-20 pb-20 md:pb-30 flex flex-col gap-12 md:gap-20">
<div class="grid md:grid-cols-2 gap-y-6 gap-x-12 md:gap-x-25">
<div class="grow flex flex-col gap-6 max-w-sm">
<NuxtLink to="/" class="block">
<AppLogo />
</NuxtLink>
<p class="max-w-lg text-sm md:text-base text-gray-500 dark:text-gray-400 italic">
{{ website.footer.quote }}
</p>
</div>
<ul class="flex gap-2">
<li v-for="social in website.socials" :key="social.name">
<UButton :rel="social.rel" :target="social.target" :to="social.url" :icon="social.icon" :aria-label="`Follow us on ${social.name}`" size="xl" variant="ghost" color="gray" :ui="{ icon: { xl: 'md:w-7 md:h-7' }, ...uiButton }" />
</li>
</ul>
</div>
<nav class="grid grid-cols-2 md:grid-cols-3 gap-4 md:gap-10 text-[1.125rem]">
<div v-for="list in website.footer.menu" :key="list.title" class="flex flex-col gap-4">
<p class="font-bold">
{{ list.title }}
</p>
<ul class="flex flex-col gap-3">
<li v-for="item in list.items" :key="item.url">
<NuxtLink :to="item.url" :rel="item.rel" :target="item.target" class="hover:underline underline-offset-8">
{{ item.title }}
</NuxtLink>
</li>
</ul>
<nav class="mt-6 md:mt-0 md:justify-self-end md:col-start-2 md:row-start-1 grid grid-cols-2 md:grid-cols-3 gap-x-2 gap-y-6 md:gap-10 text-[1.125rem]">
<div v-for="list in website.footer.menu" :key="list.title" class="flex flex-col gap-4">
<p class="font-bold text-gray-950 dark:text-gray-50">
{{ list.title }}
</p>
<ul class="flex flex-col gap-3 text-gray-500 dark:text-gray-400">
<li v-for="item in list.items" :key="item.url">
<NuxtLink :to="item.url" :rel="item.rel" :target="item.target" class="hover:underline underline-offset-8">
{{ item.title }}
</NuxtLink>
</li>
</ul>
</div>
</nav>

<div class="place-self-center md:place-self-end">
<ClientOnly>
<UTooltip :text="$colorMode.value === 'dark' ? 'Light Mode' : 'Dark Mode'">
<UButton size="xl" variant="ghost" color="gray" square :trailing-icon="$colorMode.value === 'dark' ? 'i-heroicons-sun' : 'i-heroicons-moon'" :ui="uiButton" aria-label="Toggle Theme" @click="toggleTheme">
{{ $colorMode.value === 'dark' ? 'Light' : 'Dark' }}
</UButton>
</UTooltip>
</ClientOnly>
</div>
</nav>
</div>
<AppFooterLicense class="text-sm text-zinc-400 text-center" />
</footer>
</div>
<AppFooterLicense class="text-sm dark:text-gray-400 text-center" />
</footer>
</div>
</template>
Loading