Skip to content

feat(ui): blog layout, prose styles, ThemeSwitch refactor, two-column alignment - #110

Merged
danielheene merged 3 commits into
mainfrom
feat/ui-blog-layout-prose-themeswitch
Oct 9, 2026
Merged

danielheene merged 3 commits into
mainfrom
feat/ui-blog-layout-prose-themeswitch

Conversation

@danielheene

Copy link
Copy Markdown
Owner

Summary

  • Blog layout: post and listing pages use a 12-column grid with a sticky sidebar (ArticleSidebar) showing TOC and a links section; legal pages get the same two-column treatment with extracted headings
  • Prose styles: replaced @tailwindcss/typography (and removed the package) with a custom @layer components block using shadcn design tokens; extended with Lexical-specific styles — checklists (checkbox + strikethrough on checked items), nested list items, ordered-list depth cycling (decimal → lower-alpha → lower-roman → …), and sub/sup sizing
  • ThemeSwitch: ThemeToggle renamed to ThemeSwitch throughout; FooterThemeSwitcher replaced by FooterThemeSwitch; Storybook story updated
  • TwoColumnContentBlock: added verticalAlignment select field (Top / Center / End) wired into the Columns renderer via items-start/center/end; ran bun run generate to update types
  • next.config.ts: turbopackServerFastRefresh: false

Test plan

  • Blog post page renders with sidebar TOC and links section
  • Blog listing page renders with sticky header/topic nav and posts grid
  • Legal page (/privacy, /imprint) renders with sidebar TOC
  • Prose checklist: checked items show strikethrough, unchecked do not; checkboxes centered with text
  • Prose ordered lists nest correctly with cycling list-style-type
  • ThemeSwitch toggle works in header and footer
  • TwoColumnContentBlock: vertical alignment field appears in admin; Top/Center/End visually aligns columns correctly

- Blog post and listing pages: two-column grid layout with sticky sidebar,
  ArticleSidebar TOC + links sections, font-mono headings
- Legal pages: same two-column grid with extracted headings for TOC
- Prose: replace @tailwindcss/typography with custom @layer components block
  using shadcn tokens; add Lexical-specific styles (checklist, nested lists,
  ordered-list depth cycling, sub/sup)
- ThemeToggle renamed to ThemeSwitch; FooterThemeSwitcher replaced by
  FooterThemeSwitch; Storybook story updated
- TwoColumnContentBlock: add verticalAlignment select field (Top/Center/End)
  wired into Columns renderer via items-start/center/end
- next.config.ts: turbopackServerFastRefresh disabled
- Remove @tailwindcss/typography package
const isEditable = useLexicalEditable()
const { value } = useField({ path: 'verticalAlignment' })

console.log(formSchema, value)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Debug console.log(formSchema, value) left in the admin editor component. It logs on every render of the block in the Payload admin and should be removed before merge.

Suggested change
console.log(formSchema, value)
const { value } = useField({ path: 'verticalAlignment' })

import { useBlockComponentContext } from '@payloadcms/richtext-lexical/client'
import { useLexicalEditable } from '@payloadcms/richtext-lexical/lexical/react/useLexicalEditable'
import { RenderFields } from '@payloadcms/ui'
import { RenderFields, useDocumentForm, useField, useForm } from '@payloadcms/ui'

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Unused imports useDocumentForm and useForm are imported from @payloadcms/ui but never used in this component (only RenderFields and useField are referenced). Remove them to avoid lint noise.

Suggested change
import { RenderFields, useDocumentForm, useField, useForm } from '@payloadcms/ui'
import { RenderFields, useField } from '@payloadcms/ui'

<Banner variant="warning">
<div className="flex flex-col gap-3 flex-1 min-w-0">
<Banner variant="warning" vAlignIcon>
<div className="flex flex-row gap-4 space-between justif flex-1 min-w-0">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: Malformed className string: 'flex flex-row gap-4 space-between justif flex-1 min-w-0' contains two broken tokens (space-between and justif) that are not valid Tailwind utilities. The original intent was a flex row with the content spaced out. Fix to a valid class string.

Suggested change
<div className="flex flex-row gap-4 space-between justif flex-1 min-w-0">
<div className="flex flex-row items-center justify-between gap-4 flex-1 min-w-0">

{startCase(jobName)}: detected as stale job
</span>
<span className="text-xs font-mono opacity-60 leading-none">
<span className="text-md font-mono opacity-60 leading-none">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: text-md is not a default Tailwind font-size token (the utility is text-base); it compiles to no utility and the text size falls back to inherited. Use text-base or a custom token.

Suggested change
<span className="text-md font-mono opacity-60 leading-none">
<span className="text-base font-mono opacity-60 leading-none">

</span>
</div>
<div className="flex gap-2">
<div className="flex gap-4">

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WARNING: The two action buttons no longer pass size="xs" (removed in this PR) but the surrounding gap was only increased to gap-4. Combined with the default size="default" (min-h-10) the buttons are now noticeably larger than the compact layout the banner previously had. Confirm this is the intended visual change, or restore size="xs".

@kilo-code-bot

kilo-code-bot Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Code Review Summary

Status: 5 Issues Found | Recommendation: Address before merge

Overview

Severity Count
CRITICAL 0
WARNING 5
SUGGESTION 0
Issue Details (click to expand)

WARNING

File Line Issue
src/blocks/TwoColumnContentBlock/components/ColumnsBlock.tsx 23 Debug console.log(formSchema, value) left in the admin editor component
src/blocks/TwoColumnContentBlock/components/ColumnsBlock.tsx 5 Unused imports useDocumentForm and useForm from @payloadcms/ui
src/widgets/StatusBannersWidget/StatusBannerItem.tsx 53 Malformed className with broken tokens space-between and justif
src/widgets/StatusBannersWidget/StatusBannerItem.tsx 58 text-md is not a default Tailwind font-size token
src/widgets/StatusBannersWidget/StatusBannerItem.tsx 62 Buttons lost size="xs" and gap increased to gap-4 — confirm intended visual change
Files Reviewed (28 files)
  • app/(frontend)/[slug]/page.tsx
  • app/(frontend)/blog/_shared/BlogListPage.tsx
  • app/(frontend)/blog/post/[slug]/page.tsx
  • src/blocks/ResumeExperienceBlock/Renderer/Renderer.client.tsx
  • src/blocks/TwoColumnContentBlock/Renderer/Columns.tsx
  • src/blocks/TwoColumnContentBlock/components/ColumnsBlock.tsx
  • src/blocks/TwoColumnContentBlock/index.ts
  • src/components/Banner/Banner.tsx
  • src/components/ButtonGroup/ButtonGroup.tsx
  • src/components/Footer/Footer.tsx
  • src/components/Footer/FooterThemeSwitch.tsx
  • src/components/Separator/Separator.tsx
  • src/components/ThemeSwitch/ThemeSwitch.config.ts
  • src/components/ThemeSwitch/ThemeSwitch.tsx
  • src/components/ThemeSwitch/ThemeSwitchButton.tsx
  • src/components/ThemeSwitch/index.ts
  • src/styles/frontend.css
  • src/styles/payload.css
  • src/types/payload.ts
  • src/widgets/ScheduledJobsWidget/ScheduledJobsWidget.List.tsx
  • src/widgets/StatusBannersWidget/StatusBannerItem.tsx
  • next.config.ts, package.json, bun.lock, app/(payload)/admin/importMap.js

Fix these issues in Kilo Cloud


Reviewed by free · Input: 1.4M · Output: 30K · Cached: 1.1M

@danielheene
danielheene merged commit ff11d33 into main Oct 9, 2026
7 checks passed
@danielheene
danielheene deleted the feat/ui-blog-layout-prose-themeswitch branch October 9, 2026 16:20
danielheene-website-release Bot pushed a commit that referenced this pull request Oct 9, 2026
# [1.13.0](v1.12.3...v1.13.0) (2026-10-09)

### Features

* **ui:** blog layout, prose styles, ThemeSwitch refactor, two-column alignment ([#110](#110)) ([ff11d33](ff11d33))
@danielheene-website-release

Copy link
Copy Markdown

🎉 This PR is included in version 1.13.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

This branch was successfully deployed

1 active deployment
Testing — 2cb8f7ea Deployed Oct 9, 2026 by danielheene via CI / E2E Tests #84
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant