mirror of
https://github.com/glitch-soc/mastodon.git
synced 2025-12-14 08:19:05 +00:00
[Glitch] Add Wrapstodon timeline announcement component
Port 9aec6936e5 to glitch-soc
Signed-off-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
@@ -0,0 +1,38 @@
|
|||||||
|
import type { Meta, StoryObj } from '@storybook/react-vite';
|
||||||
|
import { fn } from 'storybook/test';
|
||||||
|
|
||||||
|
import { AnnualReportAnnouncement } from '.';
|
||||||
|
|
||||||
|
const meta = {
|
||||||
|
title: 'Components/AnnualReportAnnouncement',
|
||||||
|
component: AnnualReportAnnouncement,
|
||||||
|
args: {
|
||||||
|
hasData: false,
|
||||||
|
isLoading: false,
|
||||||
|
year: '2025',
|
||||||
|
onRequestBuild: fn(),
|
||||||
|
onOpen: fn(),
|
||||||
|
},
|
||||||
|
} satisfies Meta<typeof AnnualReportAnnouncement>;
|
||||||
|
|
||||||
|
export default meta;
|
||||||
|
|
||||||
|
type Story = StoryObj<typeof meta>;
|
||||||
|
|
||||||
|
export const Default: Story = {
|
||||||
|
render: (args) => <AnnualReportAnnouncement {...args} />,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const Loading: Story = {
|
||||||
|
args: {
|
||||||
|
isLoading: true,
|
||||||
|
},
|
||||||
|
render: Default.render,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const WithData: Story = {
|
||||||
|
args: {
|
||||||
|
hasData: true,
|
||||||
|
},
|
||||||
|
render: Default.render,
|
||||||
|
};
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import { FormattedMessage } from 'react-intl';
|
||||||
|
|
||||||
|
import { Button } from '@/flavours/glitch/components/button';
|
||||||
|
|
||||||
|
import styles from './styles.module.scss';
|
||||||
|
|
||||||
|
export const AnnualReportAnnouncement: React.FC<{
|
||||||
|
year: string;
|
||||||
|
hasData: boolean;
|
||||||
|
isLoading: boolean;
|
||||||
|
onRequestBuild: () => void;
|
||||||
|
onOpen: () => void;
|
||||||
|
}> = ({ year, hasData, isLoading, onRequestBuild, onOpen }) => {
|
||||||
|
return (
|
||||||
|
<div className={styles.wrapper}>
|
||||||
|
<h2>
|
||||||
|
<FormattedMessage
|
||||||
|
id='annual_report.announcement.title'
|
||||||
|
defaultMessage='Wrapstodon {year} has arrived'
|
||||||
|
values={{ year }}
|
||||||
|
/>
|
||||||
|
</h2>
|
||||||
|
<p>
|
||||||
|
<FormattedMessage
|
||||||
|
id='annual_report.announcement.description'
|
||||||
|
defaultMessage='Discover more about your engagement on Mastodon over the past year.'
|
||||||
|
/>
|
||||||
|
</p>
|
||||||
|
{hasData ? (
|
||||||
|
<Button onClick={onOpen}>
|
||||||
|
<FormattedMessage
|
||||||
|
id='annual_report.announcement.action_view'
|
||||||
|
defaultMessage='View my Wrapstodon'
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
|
) : (
|
||||||
|
<Button loading={isLoading} onClick={onRequestBuild}>
|
||||||
|
<FormattedMessage
|
||||||
|
id='annual_report.announcement.action_build'
|
||||||
|
defaultMessage='Build my Wrapstodon'
|
||||||
|
/>
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
.wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
padding: 40px 60px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 15px;
|
||||||
|
line-height: 1.5;
|
||||||
|
color: var(--color-text-on-media);
|
||||||
|
background: var(--color-bg-media-base);
|
||||||
|
background:
|
||||||
|
radial-gradient(at 40% 87%, #240c9a99 0, transparent 50%),
|
||||||
|
radial-gradient(at 19% 10%, #6b0c9a99 0, transparent 50%),
|
||||||
|
radial-gradient(at 90% 27%, #9a0c8299 0, transparent 50%),
|
||||||
|
radial-gradient(at 16% 95%, #1e948299 0, transparent 50%)
|
||||||
|
var(--color-bg-media-base);
|
||||||
|
border-bottom: 1px solid var(--color-border-primary);
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 20px;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 1.2;
|
||||||
|
margin-bottom: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user