This commit focuses on refining UI/UX across various components and pages of the application. Changes include adjusting padding and spacing to enhance the overall readability and user interaction, amending hyperlink styling, modifying dropdown menus for optimized mobile experience, and adjusting key UI elements. Other modifications include revising imports for better maintainability, and adding enhancements to several UI components to improve their visual presentation.
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import { createCmsClient } from '@kit/cms';
|
|
import { If } from '@kit/ui/if';
|
|
import { Trans } from '@kit/ui/trans';
|
|
|
|
import { SitePageHeader } from '~/(marketing)/_components/site-page-header';
|
|
import { createI18nServerInstance } from '~/lib/i18n/i18n.server';
|
|
import { withI18n } from '~/lib/i18n/with-i18n';
|
|
|
|
import { PostPreview } from './_components/post-preview';
|
|
|
|
export const generateMetadata = async () => {
|
|
const { t } = await createI18nServerInstance();
|
|
|
|
return {
|
|
title: t('marketing:blog'),
|
|
description: t('marketing:blogSubtitle'),
|
|
};
|
|
};
|
|
|
|
async function BlogPage({ searchParams }: { searchParams: { page: string } }) {
|
|
const { t } = await createI18nServerInstance();
|
|
const cms = await createCmsClient();
|
|
|
|
const page = searchParams.page ? parseInt(searchParams.page) : 0;
|
|
const limit = 10;
|
|
const offset = page * limit;
|
|
|
|
const { items: posts } = await cms.getContentItems({
|
|
collection: 'posts',
|
|
limit,
|
|
offset,
|
|
});
|
|
|
|
return (
|
|
<>
|
|
<SitePageHeader
|
|
title={t('marketing:blog')}
|
|
subtitle={t('marketing:blogSubtitle')}
|
|
/>
|
|
|
|
<div className={'container py-12'}>
|
|
<If
|
|
condition={posts.length > 0}
|
|
fallback={<Trans i18nKey="marketing:noPosts" />}
|
|
>
|
|
<PostsGridList>
|
|
{posts.map((post, idx) => {
|
|
return <PostPreview key={idx} post={post} />;
|
|
})}
|
|
</PostsGridList>
|
|
</If>
|
|
</div>
|
|
</>
|
|
);
|
|
}
|
|
|
|
export default withI18n(BlogPage);
|
|
|
|
function PostsGridList({ children }: React.PropsWithChildren) {
|
|
return (
|
|
<div className="grid grid-cols-1 gap-y-8 md:grid-cols-2 md:gap-x-8 md:gap-y-12 lg:grid-cols-3 lg:gap-x-12">
|
|
{children}
|
|
</div>
|
|
);
|
|
}
|