diff --git a/bun.lockb b/bun.lockb index 48aeb26..42f7419 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/package.json b/package.json index 38976ff..b2c24b2 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "@vercel/analytics": "^1.3.1", "class-variance-authority": "^0.7.0", "clsx": "^2.1.1", + "dayjs": "^1.11.13", "lenis": "^1.1.6", "motion": "^11.13.1", "next": "15.0.3", diff --git a/src/app/(home)/page.tsx b/src/app/(home)/page.tsx index dd6a74d..5e8c23f 100644 --- a/src/app/(home)/page.tsx +++ b/src/app/(home)/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { BioSection, HeroSection } from '@features/home' export const metadata: Metadata = { @@ -8,13 +8,13 @@ export const metadata: Metadata = { description: 'Focused on crafting digital products, website, web app, mobile app to help business.', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Nyoman Sunima', description: 'Focused on crafting digital products, website, web app, mobile app to help business.', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Nyoman Sunima', description: 'Focused on crafting digital products, website, web app, mobile app to help business.', diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx index 1366b78..81ecc92 100644 --- a/src/app/about/page.tsx +++ b/src/app/about/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { DetailSection, SharingSection, @@ -9,19 +9,19 @@ import { AchievementSection, EndWordSection, } from '@features/about' -import { ArticleContent } from '@shared/components/common/content' +import { ArticleContent } from '@shared/components' export const metadata: Metadata = { title: 'About', description: 'The whole story about me, nyoman sunima and all of the journey', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'About', description: 'The whole story about me, nyoman sunima and all of the journey', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'About', description: 'The whole story about me, nyoman sunima and all of the journey', diff --git a/src/app/contact/page.tsx b/src/app/contact/page.tsx index a00deb5..e795223 100644 --- a/src/app/contact/page.tsx +++ b/src/app/contact/page.tsx @@ -1,18 +1,18 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { ContactList, SocialMediaList } from '@features/contact' export const metadata: Metadata = { title: 'Contact', description: 'Get in touch with me right now, start your idea', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Contact', description: 'Get in touch with me right now, start your idea', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Contact', description: 'Get in touch with me right now, start your idea', }, diff --git a/src/app/crafts/page.tsx b/src/app/crafts/page.tsx index 8282f74..08e713b 100644 --- a/src/app/crafts/page.tsx +++ b/src/app/crafts/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { CraftListSection } from '@features/crafts' export const metadata: Metadata = { @@ -8,13 +8,13 @@ export const metadata: Metadata = { description: 'See all of my projects, business, products, side husltes and something that i built', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Crafts', description: 'See all of my projects, business, products, side husltes and something that i built', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Crafts', description: 'See all of my projects, business, products, side husltes and something that i built', diff --git a/src/app/faqs/page.tsx b/src/app/faqs/page.tsx index 06d8206..717b33a 100644 --- a/src/app/faqs/page.tsx +++ b/src/app/faqs/page.tsx @@ -1,18 +1,18 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { FAQListSection, AskSection } from '@features/faqs' export const metadata: Metadata = { title: 'FAQs', description: 'Most asked questions by people around the world', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'FAQs', description: 'Most asked questions by people around the world', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'FAQs', description: 'Most asked questions by people around the world', }, diff --git a/src/app/global-error.tsx b/src/app/global-error.tsx index 3a2d691..a4ed8ed 100644 --- a/src/app/global-error.tsx +++ b/src/app/global-error.tsx @@ -1,9 +1,8 @@ 'use client' import '@shared/styles/globals.css' -import { Button } from '@shared/components/ui/button' -import { CenteredLayout } from '@shared/components//common/centered-layout' -import * as fonts from '@shared/fonts' +import { Button, CenteredLayout } from '@shared/components' +import { fonts } from '@shared/fonts' export default function GlobalError({ reset, diff --git a/src/app/journeys/page.tsx b/src/app/journeys/page.tsx index 007fa6c..5d99407 100644 --- a/src/app/journeys/page.tsx +++ b/src/app/journeys/page.tsx @@ -1,17 +1,17 @@ import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { ExperienceSection, LogListSection } from '@features/journeys' export const metadata: Metadata = { title: 'Journeys', description: 'The whole story of me, nyoman sunima and all of the journey', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Journeys', description: 'The whole story of me, nyoman sunima and all of the journey', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Journeys', description: 'The whole story of me, nyoman sunima and all of the journey', }, diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 7b316a3..0ccad14 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,16 +1,15 @@ import * as React from 'react' import type { Metadata } from 'next' import '@shared/styles/globals.css' -import config from '@shared/libs/config' +import { config } from '@shared/libs' import { Analytics as VercelAnalytics } from '@vercel/analytics/react' -import { AnimationProvider } from '@shared/providers/animation-provider' -import { ThemeProvider } from '@shared/providers/theme-provider' -import Header from '@shared/components/common/header' -import Footer from '@shared/components/common/footer' -import { Toaster } from '@shared/components/ui/toast' -import { CenteredLayout } from '@shared/components/common/centered-layout' -import { PosthogProvider } from '@shared/providers/posthog-provider' -import * as fonts from '@shared/fonts' +import { + ThemeProvider, + AnimationProvider, + PosthogProvider, +} from '@shared/providers' +import { Footer, Header, Toaster, CenteredLayout } from '@shared/components' +import { fonts } from '@shared/fonts' export const metadata: Metadata = { applicationName: 'Nyoman Sunima', diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx index ee71587..c10a11e 100644 --- a/src/app/not-found.tsx +++ b/src/app/not-found.tsx @@ -1,7 +1,7 @@ import * as React from 'react' import { Metadata } from 'next' import Link from 'next/link' -import { Button } from '@shared/components/ui/button' +import { Button } from '@shared/components' export const metadata: Metadata = { title: 'Not Found', diff --git a/src/app/privacy/page.tsx b/src/app/privacy/page.tsx index 3da9362..ad9bb36 100644 --- a/src/app/privacy/page.tsx +++ b/src/app/privacy/page.tsx @@ -1,19 +1,19 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import Link from 'next/link' -import { ArticleContent } from '@shared/components/common/content' +import { ArticleContent } from '@shared/components' export const metadata: Metadata = { title: 'Privacy Policy', description: 'Read the privacy policy for this site', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Privacy Policy', description: 'Read the privacy policy for this site', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Privacy Policy', description: 'Read the privacy policy for this site', }, diff --git a/src/app/resources/page.tsx b/src/app/resources/page.tsx index e152b2d..b5dae4a 100644 --- a/src/app/resources/page.tsx +++ b/src/app/resources/page.tsx @@ -1,18 +1,18 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { SourcesSection } from '@features/resources' export const metadata: Metadata = { title: 'Resources', description: 'Get free resources and things that help your works', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Resources', description: 'Get free resources and things that help your works', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Resources', description: 'Get free resources and things that help your works', }, diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index 673f920..774151c 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -1,4 +1,4 @@ -import config from '@shared/libs/config' +import { config } from '@shared/libs' import { MetadataRoute } from 'next' const BASE_URL = config.app.host diff --git a/src/app/stories/page.tsx b/src/app/stories/page.tsx index 402dbaa..7620e5d 100644 --- a/src/app/stories/page.tsx +++ b/src/app/stories/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { PublicationSection, RecentlySection } from '@features/stories' export const metadata: Metadata = { @@ -8,13 +8,13 @@ export const metadata: Metadata = { description: 'Everyday i write, record, and create any resources to sharing into the social media and community platforms', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Stories', description: 'Everyday i write, record, and create any resources to sharing into the social media and community platforms', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Stories', description: 'Everyday i write, record, and create any resources to sharing into the social media and community platforms', diff --git a/src/app/support/page.tsx b/src/app/support/page.tsx index 159f9c3..acdbd07 100644 --- a/src/app/support/page.tsx +++ b/src/app/support/page.tsx @@ -1,18 +1,18 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { SupportSection } from '@features/support' export const metadata: Metadata = { title: 'Support Me (Donate)', description: 'Support me by donating for projects and contents or goodies', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Support me (Donate)', description: 'Support me by donating for projects and contents or goodies', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Support me (Donate)', description: 'Support me by donating for projects and contents or goodies', }, diff --git a/src/app/template.tsx b/src/app/template.tsx index 0b390e6..97655dd 100644 --- a/src/app/template.tsx +++ b/src/app/template.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { PageTransition } from '@shared/components/animation/transition' +import { PageTransition } from '@shared/components' interface RootTemplateProps { children: React.ReactNode diff --git a/src/app/terms/page.tsx b/src/app/terms/page.tsx index 726d754..0f8ed7d 100644 --- a/src/app/terms/page.tsx +++ b/src/app/terms/page.tsx @@ -1,19 +1,19 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import Link from 'next/link' -import { ArticleContent } from '@shared/components/common/content' +import { ArticleContent } from '@shared/components' export const metadata: Metadata = { title: 'Terms of use', description: 'Read the terms of use for this site', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Terms of use', description: 'Read the terms of use for this site', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Terms of use', description: 'Read the terms of use for this site', }, diff --git a/src/app/works/[slug]/page.tsx b/src/app/works/[slug]/page.tsx index 60ad4b9..c5c726f 100644 --- a/src/app/works/[slug]/page.tsx +++ b/src/app/works/[slug]/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Metadata, ResolvingMetadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { WorkDetailContent, workService } from '@features/works' interface Params { @@ -24,13 +24,13 @@ export async function generateMetadata( title: meta.title, description: meta.description, openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: meta.title, description: meta.description, images: [meta.image, ...previousOgImages], }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: meta.title, description: meta.description, images: [meta.image, ...previousTwitterImages], diff --git a/src/app/works/page.tsx b/src/app/works/page.tsx index 0ce69c9..650d9f6 100644 --- a/src/app/works/page.tsx +++ b/src/app/works/page.tsx @@ -1,6 +1,6 @@ import * as React from 'react' import { Metadata } from 'next' -import * as defaultMetadata from '@shared/libs/shared-metadata' +import { sharedMetadata } from '@shared/libs' import { WorksListSection, ComingSoonSection } from '@features/works' export const metadata: Metadata = { @@ -8,13 +8,13 @@ export const metadata: Metadata = { description: 'See all of my works including projects, apps, products, case studies, idea and playground', openGraph: { - ...defaultMetadata.openGraph, + ...sharedMetadata.openGraph, title: 'Works', description: 'See all of my works including projects, apps, products, case studies, idea and playground', }, twitter: { - ...defaultMetadata.twitter, + ...sharedMetadata.twitter, title: 'Works', description: 'See all of my works including projects, apps, products, case studies, idea and playground', diff --git a/src/features/about/activity-section.tsx b/src/features/about/activity-section.tsx index 0c519e9..ed2e80a 100644 --- a/src/features/about/activity-section.tsx +++ b/src/features/about/activity-section.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { ContentImage } from '@shared/components/common/content' +import { ContentImage } from '@shared/components' export function ActivitySection(): React.ReactElement { return ( diff --git a/src/features/about/detail-section.tsx b/src/features/about/detail-section.tsx index f6650cf..4bc2cb6 100644 --- a/src/features/about/detail-section.tsx +++ b/src/features/about/detail-section.tsx @@ -1,9 +1,6 @@ import Link from 'next/link' import * as React from 'react' -import { - ContentImage, - GalleryListImage, -} from '@shared/components/common/content' +import { ContentImage, GalleryListImage } from '@shared/components' const images = [ 'https://images.unsplash.com/photo-1537996194471-e657df975ab4?q=80&w=2838&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D', diff --git a/src/features/about/sharing-section.tsx b/src/features/about/sharing-section.tsx index ec48c5e..343a35f 100644 --- a/src/features/about/sharing-section.tsx +++ b/src/features/about/sharing-section.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { ContentImage } from '@shared/components/common/content' +import { ContentImage } from '@shared/components' export function SharingSection(): React.ReactElement { return ( diff --git a/src/features/contact/contact-data.json b/src/features/contact/contact-data.json index 6324c88..ecff3d1 100644 --- a/src/features/contact/contact-data.json +++ b/src/features/contact/contact-data.json @@ -8,6 +8,10 @@ { "label": "Chat on WhatsApp", "href": "https://api.whatsapp.com/send?phone=6285161619109&ref=nyomansunima" + }, + { + "label": "Read my CV", + "href": "https://read.cv/nyomansunima?ref=nyomansunima" } ], "socials": [ diff --git a/src/features/contact/contact-item.tsx b/src/features/contact/contact-item.tsx index e06f22d..77ceada 100644 --- a/src/features/contact/contact-item.tsx +++ b/src/features/contact/contact-item.tsx @@ -2,8 +2,7 @@ import * as React from 'react' import Link from 'next/link' -import { Button } from '@shared/components/ui/button' -import { toast } from '@shared/components/ui/toast' +import { Button, toast } from '@shared/components' export interface ContactItemData { href: string diff --git a/src/features/contact/social-item.tsx b/src/features/contact/social-item.tsx index 85709a1..89b1e8e 100644 --- a/src/features/contact/social-item.tsx +++ b/src/features/contact/social-item.tsx @@ -1,13 +1,13 @@ import * as React from 'react' -import { Button } from '@shared/components/ui/button' import Link from 'next/link' import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, -} from '@shared/components/ui/tooltip' -import { mergeClass } from '@shared/utils/helper' + Button, +} from '@shared/components' +import { mergeClass } from '@shared/utils' export interface SocialData { label: string diff --git a/src/features/faqs/ask-section.tsx b/src/features/faqs/ask-section.tsx index c84bc4b..30c2e4a 100644 --- a/src/features/faqs/ask-section.tsx +++ b/src/features/faqs/ask-section.tsx @@ -1,6 +1,6 @@ import Link from 'next/link' import * as React from 'react' -import { Button } from '@shared/components/ui/button' +import { Button } from '@shared/components' export function AskSection(): React.ReactElement { return ( diff --git a/src/features/faqs/faq-item.tsx b/src/features/faqs/faq-item.tsx index 70c50fe..99e012e 100644 --- a/src/features/faqs/faq-item.tsx +++ b/src/features/faqs/faq-item.tsx @@ -3,7 +3,7 @@ import { AccordionContent, AccordionItem, AccordionTrigger, -} from '@shared/components/ui/accordion' +} from '@shared/components' export interface FAQData { question: string diff --git a/src/features/faqs/faq-list-section.tsx b/src/features/faqs/faq-list-section.tsx index 614c23a..74040d1 100644 --- a/src/features/faqs/faq-list-section.tsx +++ b/src/features/faqs/faq-list-section.tsx @@ -1,5 +1,5 @@ import * as React from 'react' -import { Accordion } from '@shared/components/ui/accordion' +import { Accordion } from '@shared/components' import { FAQData, FAQItem } from './faq-item' import faqsData from './faqs-data.json' diff --git a/src/features/home/bio-data.json b/src/features/home/bio-data.json index 0f60ae1..4443bf4 100644 --- a/src/features/home/bio-data.json +++ b/src/features/home/bio-data.json @@ -3,7 +3,8 @@ { "type": "link", "url": "/contact", - "label": "Hire me" + "label": "Hire me", + "isFeatured": true }, { "type": "link", @@ -15,6 +16,7 @@ "type": "link", "url": "/works", "label": " See my works", + "isFeatured": true, "className": "tablet:row-span-2" }, { @@ -30,7 +32,7 @@ }, { "type": "link", - "url": "https://ko-fi.com/nyomansunima?ref=nyomansunima", + "url": "/support", "label": "Suport me by donation" }, { @@ -55,6 +57,13 @@ "url": "/crafts", "label": "See all of my crafts", "className": "tablet:col-span-2" + }, + { + "type": "link", + "url": "/journeys", + "label": "See what's new this week", + "isFeatured": true, + "className": "tablet:col-span-3" } ] } diff --git a/src/features/home/bio-item.tsx b/src/features/home/bio-item.tsx index bb3e4b4..b514d7d 100644 --- a/src/features/home/bio-item.tsx +++ b/src/features/home/bio-item.tsx @@ -1,18 +1,20 @@ import * as React from 'react' import Link from 'next/link' -import { mergeClass } from '@shared/utils/helper' +import { mergeClass } from '@shared/utils' export interface BioItemData { type: string url: string label: string className?: string + isFeatured?: boolean } interface LinkItemProps { className?: string children?: React.ReactNode href: string + showBadge?: boolean } interface BioItemProps { @@ -23,6 +25,7 @@ function LinkItem({ href, children, className, + showBadge, }: LinkItemProps): React.ReactElement { const isUrl = href.includes('http://') || href.includes('https://') @@ -37,6 +40,10 @@ function LinkItem({ > {children} + {showBadge && ( + + )} +
{description}
++ {description} +