diff --git a/CHANGELOG.md b/CHANGELOG.md index 2e03fca..da2c6e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,8 +55,33 @@ migrates `[Unreleased]` into that file and empties this one — see diagonal stripes and the subtitle retypes like the titles. Still under `prefers-reduced-motion`. +- **A journey page, `/experience`** + ([#78](https://github.com/kbrdn1/kbrdn.dev/issues/78)). Laid out like an + editorial spread (after isrod.eu): an intro, a strip of every role and + degree, then one spread each, the story on the left and the stack and + missions on the right, with "show more". Then the open source work, every + item linked to its pull request or issue: the projects I maintain (gwm, + vellum, LazyCurl, herdr-plugin-gwm, claude-crosstalk, kbrdn-docs), the + contributions (winget, aqua-registry and awesome-ratatui merged, nixpkgs in + review) and the bugs reported upstream. On the home page, the Parcours + accordions give way to a one-line-per-role teaser linking to it. + +- **An apps page, `/apps`** + ([#79](https://github.com/kbrdn1/kbrdn.dev/issues/79)). gwm (available), + vellum (in development) and LazyCurl (archived), each with its features and + licence, links to its site, repository and releases, and for gwm the install + commands of its README. The latest release is read from GitHub instead of + written down. + ### Changed +- **The navigation leads to pages** + ([#80](https://github.com/kbrdn1/kbrdn.dev/issues/80)). Journey, Apps and + Blog, on every page and on mobile, instead of the home page's anchors; one + list shared by the header, the blog header and the footer, with the current + page marked. On wide screens (1700px and up), the home page gets a table of + contents in the margin, like an article's, following the section being read. + - **A new logo** ([#74](https://github.com/kbrdn1/kbrdn.dev/issues/74)). A K drawn from a rising bar and two orange pieces, redrawn as SVG on a 45° grid, replaces the diff --git a/app/assets/css/components.css b/app/assets/css/components.css index c7721ab..0fab0f4 100644 --- a/app/assets/css/components.css +++ b/app/assets/css/components.css @@ -61,19 +61,6 @@ background-color: var(--color-primary-500); } -/* Accordion +/- icon animation */ -.accordion-icon-bar { - transition: transform 300ms ease !important; -} - -.accordion-icon-bar.is-collapsed { - transform: rotate(90deg); -} - -.accordion-icon-bar.is-expanded { - transform: rotate(0deg); -} - /* Disabled button with subtle diagonal striped background */ .btn-disabled-striped { background-image: repeating-linear-gradient( diff --git a/app/assets/css/transitions.css b/app/assets/css/transitions.css index 24ddeed..5103263 100644 --- a/app/assets/css/transitions.css +++ b/app/assets/css/transitions.css @@ -2,25 +2,6 @@ Animations & Transitions ═══════════════════════════════════════════════════ */ -/* Accordion animation */ -.accordion-wrapper { - display: grid; - grid-template-rows: 0fr; - opacity: 0; - transition: - grid-template-rows 400ms cubic-bezier(0.4, 0, 0.2, 1), - opacity 300ms ease !important; -} - -.accordion-wrapper.is-open { - grid-template-rows: 1fr; - opacity: 1; -} - -.accordion-wrapper > .accordion-inner { - overflow: hidden; -} - /* Nav entrance animation */ @keyframes nav-fade-in { from { diff --git a/app/components/experience/Spread.vue b/app/components/experience/Spread.vue new file mode 100644 index 0000000..5e28b93 --- /dev/null +++ b/app/components/experience/Spread.vue @@ -0,0 +1,99 @@ + + + diff --git a/app/components/home/Experiences.vue b/app/components/home/Experiences.vue deleted file mode 100644 index 34fd9da..0000000 --- a/app/components/home/Experiences.vue +++ /dev/null @@ -1,227 +0,0 @@ - - - diff --git a/app/components/home/Parcours.vue b/app/components/home/Parcours.vue new file mode 100644 index 0000000..e7927ba --- /dev/null +++ b/app/components/home/Parcours.vue @@ -0,0 +1,55 @@ + + + diff --git a/app/components/home/Studies.vue b/app/components/home/Studies.vue deleted file mode 100644 index 933b3f7..0000000 --- a/app/components/home/Studies.vue +++ /dev/null @@ -1,268 +0,0 @@ - - - diff --git a/app/components/home/Toc.vue b/app/components/home/Toc.vue new file mode 100644 index 0000000..fe02a4f --- /dev/null +++ b/app/components/home/Toc.vue @@ -0,0 +1,80 @@ + + + diff --git a/app/components/layout/BlogHeader.vue b/app/components/layout/BlogHeader.vue index eed6eab..5ba50d6 100644 --- a/app/components/layout/BlogHeader.vue +++ b/app/components/layout/BlogHeader.vue @@ -2,7 +2,6 @@ import { useI18n } from '#imports' const { t } = useI18n() -const route = useRoute() const showBrandMenu = ref(false) @@ -30,17 +29,8 @@ onUnmounted(() => { document.removeEventListener('keydown', handleKeydown) }) -const navLinks = computed(() => [{ to: '/blog', label: t('blogNav.articles') }]) - -const isActive = (to: string) => { - if (to === '/blog') { - return ( - route.path === '/blog' || - (route.path.startsWith('/blog/') && !route.path.startsWith('/blog/tags')) - ) - } - return route.path.startsWith(to) -} +// The site's pages, shared with the portfolio header and the footer +const { links: navLinks, isActive } = useSiteNav() const isMobileMenuOpen = ref(false) @@ -107,7 +97,7 @@ const isMobileMenuOpen = ref(false) -